diff mbox

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

Message ID 1465938855-15618-2-git-send-email-h.goebel@crazy-compilers.com
State New
Headers show

Commit Message

Hartmut Goebel June 14, 2016, 9:14 p.m. UTC
* gnu/packages/flashing-tools.scm (teensy-loader-cli): New variable.
* gnu/packages/patches/teensy-loader-cli-Add-support-for-h-help.patch,
  gnu/packages/patches/teensy-loader-cli-Change-program-name-in-usage.patch
  New files.
---
 gnu/packages/flashing-tools.scm                    | 53 ++++++++++++++++++++++
 .../teensy-loader-cli-Add-support-for-h-help.patch | 34 ++++++++++++++
 ...y-loader-cli-Change-program-name-in-usage.patch | 33 ++++++++++++++
 3 files changed, 120 insertions(+)
 create mode 100644 gnu/packages/patches/teensy-loader-cli-Add-support-for-h-help.patch
 create mode 100644 gnu/packages/patches/teensy-loader-cli-Change-program-name-in-usage.patch

Comments

Hartmut Goebel June 14, 2016, 9:16 p.m. UTC | #1
Sorry, this patch was accidentaly resend.
Ludovic Courtès June 15, 2016, 1:31 p.m. UTC | #2
Hello,

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

> * gnu/packages/flashing-tools.scm (teensy-loader-cli): New variable.
> * gnu/packages/patches/teensy-loader-cli-Add-support-for-h-help.patch,
>   gnu/packages/patches/teensy-loader-cli-Change-program-name-in-usage.patch
>   New files.

I’ve finally applied it and took the liberty to make a few changes (I
didn’t want to bother you another time!).

> +       (patches (search-patches
> +                 "teensy-loader-cli-Add-support-for-h-help.patch"
> +                 "teensy-loader-cli-Change-program-name-in-usage.patch"))))

I removed the second patch and corresponding renaming (I hadn’t noticed
it before), on the grounds that it’s not our job to rename things; in
general, we should stick to what upstream has chosen.

I’ve also added the remaining patch to gnu/local.mk.

> +++ b/gnu/packages/patches/teensy-loader-cli-Add-support-for-h-help.patch
> @@ -0,0 +1,34 @@
> +Add support for `-h` (help).
> +This option was already in the usage message, but not implemented.
> +
> +Upstream pull-request pending.

I added the URL of the pull request instead.

Note that, normally, we would not incorporate such patches, because it’s
really upstream’s business, not ours.

Thank you!

Ludo’.
Hartmut Goebel June 15, 2016, 1:34 p.m. UTC | #3
Am 15.06.2016 um 15:31 schrieb Ludovic Courtès:
> I’ve finally applied it and took the liberty to make a few changes (I
> didn’t want to bother you another time!).

Thanks :-)
diff mbox

Patch

diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 37a1072..65f68a6 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -160,3 +160,56 @@  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"))
+    (package
+      (name "teensy-loader-cli")
+      (version (string-append "2.1-1." (string-take commit 7)))
+      (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 and teensy rebooter flash binaries.
+             (for-each delete-file (find-files "." "\\.(elf|hex)$"))
+             ;; Fix the version
+             (substitute* "teensy_loader_cli.c"
+               (("Teensy Loader, Command Line, Version 2.0\\\\n")
+                (string-append "Teensy Loader, Command Line, " ,version "\\n")))
+             #t))
+       (patches (search-patches
+                 "teensy-loader-cli-Add-support-for-h-help.patch"
+                 "teensy-loader-cli-Change-program-name-in-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-Add-support-for-h-help.patch b/gnu/packages/patches/teensy-loader-cli-Add-support-for-h-help.patch
new file mode 100644
index 0000000..a5e0128
--- /dev/null
+++ b/gnu/packages/patches/teensy-loader-cli-Add-support-for-h-help.patch
@@ -0,0 +1,34 @@ 
+Add support for `-h` (help).
+This option was already in the usage message, but not implemented.
+
+Upstream pull-request pending.
+
+---
+ teensy_loader_cli.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/teensy_loader_cli.c b/teensy_loader_cli.c
+index d4a6cc5..0a06209 100644
+--- a/teensy_loader_cli.c
++++ b/teensy_loader_cli.c
+@@ -37,7 +37,8 @@ void usage(const char *err)
+ {
+ 	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"
+@@ -1081,6 +1082,7 @@ void parse_flag(char *arg)
+ 	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;
+-- 
+2.7.4
+
diff --git a/gnu/packages/patches/teensy-loader-cli-Change-program-name-in-usage.patch b/gnu/packages/patches/teensy-loader-cli-Change-program-name-in-usage.patch
new file mode 100644
index 0000000..8773237
--- /dev/null
+++ b/gnu/packages/patches/teensy-loader-cli-Change-program-name-in-usage.patch
@@ -0,0 +1,33 @@ 
+Change program name in usage: use dashes instead of underscore.
+
+Not pushed upstream since the official name is using underscores.
+
+---
+ teensy_loader_cli.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/teensy_loader_cli.c b/teensy_loader_cli.c
+index 0a06209..049954e 100644
+--- a/teensy_loader_cli.c
++++ b/teensy_loader_cli.c
+@@ -37,7 +37,7 @@ void usage(const char *err)
+ {
+ 	if(err != NULL) fprintf(stderr, "%s\n\n", err);
+ 	fprintf(stderr,
+-		"Usage: teensy_loader_cli --mcu=<MCU> [-h] [-w] [-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"
+@@ -45,7 +45,7 @@ void usage(const char *err)
+ 		"\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);
+-- 
+2.7.4
+