diff mbox

[v4] gnu: Add teensy-loader-cli.

Message ID 1464863708-18392-1-git-send-email-h.goebel@crazy-compilers.com
State New
Headers show

Commit Message

Hartmut Goebel June 2, 2016, 10:35 a.m. UTC
* gnu/packages/flashing-tools.scm (teensy-loader-cli): New variable.
---
 gnu/packages/flashing-tools.scm                    | 56 ++++++++++++++++++++++
 gnu/packages/patches/teensy-loader-cli-usage.patch | 28 +++++++++++
 2 files changed, 84 insertions(+)
 create mode 100644 gnu/packages/patches/teensy-loader-cli-usage.patch

Comments

Ludovic Courtès June 4, 2016, 9:30 p.m. UTC | #1
Hi!

Hartmut Goebel <h.goebel@crazy-compilers.com> skribis:

> * gnu/packages/flashing-tools.scm (teensy-loader-cli): New variable.

I’m sorry for the extra round trip…  Last one, I promise!  :-)

> +  (let* ((commit "f289b7a2e5627464044249f0e5742830e052e360")
> +         ;; Mind changing the version in the usage-message below when changing
> +         (version (string-append "2.1-1." (string-take commit 7))))

This ‘version’ variable is really unneeded, because:

  (package
    (name "foo")
    (version "bar")
    …)

in fact expands to:

  (let ((name "foo") (version "bar") …)
    (make-struct <package> name version …))

This is done precisely so we can refer to field values.

So please remove the ‘version’ variable.  :-)

> +  (package

Add two columns to the indentation.

> +           ;; remove example flash files
> +           (for-each delete-file (find-files "." "\\.hex$"))
> +           ;; Remove teensy rebooter flash binaries
> +           (for-each delete-file (find-files "rebootor" "\\.(elf|hex)$"))

This is equivalent to:

  (find-files "." "\\.(elf|hex)")

because ‘find-files’ is recursive.

Also, please write sentences that start with a capital letter and finish
with a period.

> +           ;; fix the version
> +           (substitute* "teensy_loader_cli.c"
> +             (("Teensy Loader, Command Line, Version 2.0\\\\n")
> +              ;; TODO: find a way to pass the version from above
> +              (string-append "Teensy Loader, Command Line, Version 2.1-1\\n")))

Refer to ‘version’ here instead of hard-coding it:

  (snippet
    `(begin   ; <- note the backquote here, aka. “quasiquote”
       …
       (substitute* …
         (string-append "foo" ,version "\n"))))

> +    (synopsis "Command line firmware uploader for teensy development boards")

s/teensy/Teensy/

> diff --git a/gnu/packages/patches/teensy-loader-cli-usage.patch b/gnu/packages/patches/teensy-loader-cli-usage.patch
> new file mode 100644
> index 0000000..097c61e

Please add an explanation and the upstream status to the beginning of
the patch.

Could you send one last version of the patch please?

Thank you, and apologies to taking so long and being so picky!  ;-)

Ludo’.
diff mbox

Patch

diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 37a1072..2a05ce2 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -160,3 +160,59 @@  With dfu-util you are able to download firmware to your device or upload
 firmware from it.")
     (home-page "http://dfu-util.sourceforge.net/")
     (license gpl2+)))
+
+(define-public teensy-loader-cli
+  ;; The repo does not tag versions nor does it use releases, but a commit
+  ;; message says "Importing 2.1", while the sourcce still says "2.0". So pin
+  ;; to a fixed commit.
+  (let* ((commit "f289b7a2e5627464044249f0e5742830e052e360")
+         ;; Mind changing the version in the usage-message below when changing
+         (version (string-append "2.1-1." (string-take commit 7))))
+  (package
+    (name "teensy-loader-cli")
+    (version version)
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/PaulStoffregen/"
+                           "teensy_loader_cli/archive/" commit ".tar.gz"))
+       (sha256 (base32 "17wqc2q4fa473cy7f5m2yiyb9nq0qw7xal2kzrxzaikgm9rabsw8"))
+       (file-name (string-append "teensy-loader-cli-" version ".tar.gz" ))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; remove example flash files
+           (for-each delete-file (find-files "." "\\.hex$"))
+           ;; Remove teensy rebooter flash binaries
+           (for-each delete-file (find-files "rebootor" "\\.(elf|hex)$"))
+           ;; fix the version
+           (substitute* "teensy_loader_cli.c"
+             (("Teensy Loader, Command Line, Version 2.0\\\\n")
+              ;; TODO: find a way to pass the version from above
+              (string-append "Teensy Loader, Command Line, Version 2.1-1\\n")))
+           #t))
+       (patches (search-patches "teensy-loader-cli-usage.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ;; Makefile has no test target
+       #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (rename-file "teensy_loader_cli" "teensy-loader-cli")
+               (install-file "teensy-loader-cli" bin)))))))
+    (inputs
+     `(("libusb-compat" ,libusb-compat)))
+    (synopsis "Command line firmware uploader for teensy development boards")
+    (description "The Teensy Loader program communicates with your
+Teensy board when the HalfKay bootloader is running, so you can
+download new programs and run them.
+
+You'll need to add the udev-rules to make the teensy update available
+for non-root users.")
+    (home-page "https://www.pjrc.com/teensy/loader_cli.html")
+    (license gpl3))))
diff --git a/gnu/packages/patches/teensy-loader-cli-usage.patch b/gnu/packages/patches/teensy-loader-cli-usage.patch
new file mode 100644
index 0000000..097c61e
--- /dev/null
+++ b/gnu/packages/patches/teensy-loader-cli-usage.patch
@@ -0,0 +1,28 @@ 
+--- b/teensy_loader_cli.c.orig	2016-04-07 02:05:41.000000000 +0200
++++ a/teensy_loader_cli.c	2016-05-29 14:32:44.861930222 +0200
+@@ -37,14 +37,15 @@
+ {
+ 	if(err != NULL) fprintf(stderr, "%s\n\n", err);
+ 	fprintf(stderr,
+-		"Usage: teensy_loader_cli --mcu=<MCU> [-w] [-h] [-n] [-b] [-v] <file.hex>\n"
++		"Usage: teensy-loader-cli --mcu=<MCU> [-h] [-w] [-n] [-b] [-v] <file.hex>\n"
++		"\t-h : Print this help message\n"
+ 		"\t-w : Wait for device to appear\n"
+ 		"\t-r : Use hard reboot if device not online\n"
+ 		"\t-s : Use soft reboot if device not online (Teensy3.x only)\n"
+ 		"\t-n : No reboot after programming\n"
+ 		"\t-b : Boot only, do not program\n"
+ 		"\t-v : Verbose output\n"
+-		"\nUse `teensy_loader_cli --list-mcus` to list supported MCUs.\n"
++		"\nUse `teensy-loader-cli --list-mcus` to list supported MCUs.\n"
+ 		"\nFor more information, please visit:\n"
+ 		"http://www.pjrc.com/teensy/loader_cli.html\n");
+ 	exit(1);
+@@ -1081,6 +1082,7 @@
+ 	int i;
+ 	for(i=1; arg[i]; i++) {
+ 		switch(arg[i]) {
++			case 'h': usage(NULL); break;
+ 			case 'w': wait_for_device_to_appear = 1; break;
+ 			case 'r': hard_reboot_device = 1; break;
+ 			case 's': soft_reboot_device = 1; break;