unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH v4] gnu: Add teensy-loader-cli.
@ 2016-06-02 10:35 Hartmut Goebel
  2016-06-02 10:35 ` [PATCH] " Hartmut Goebel
  2016-06-04 21:30 ` [PATCH v4] " Ludovic Courtès
  0 siblings, 2 replies; 6+ messages in thread
From: Hartmut Goebel @ 2016-06-02 10:35 UTC (permalink / raw)
  To: guix-devel

* 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

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;
-- 
2.7.4

Update v4:
* use a "snippet" to remove binary files and fix version
Update v3:
* Use long commit hash
* remove binary files
Update: v2:
* Include patch file

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH] gnu: Add teensy-loader-cli.
  2016-06-02 10:35 [PATCH v4] gnu: Add teensy-loader-cli Hartmut Goebel
@ 2016-06-02 10:35 ` Hartmut Goebel
  2016-06-04 21:30 ` [PATCH v4] " Ludovic Courtès
  1 sibling, 0 replies; 6+ messages in thread
From: Hartmut Goebel @ 2016-06-02 10:35 UTC (permalink / raw)
  To: guix-devel

* 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

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;
-- 
2.7.4

Update v4:
* use a "snippet" to remove binary files and fix version
Update v3:
* Use long commit hash
* remove binary files
Update: v2:
* Include patch file

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] gnu: Add teensy-loader-cli.
  2016-06-02 10:35 [PATCH v4] gnu: Add teensy-loader-cli Hartmut Goebel
  2016-06-02 10:35 ` [PATCH] " Hartmut Goebel
@ 2016-06-04 21:30 ` Ludovic Courtès
  1 sibling, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2016-06-04 21:30 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: guix-devel

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’.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] gnu: Add teensy-loader-cli.
@ 2016-06-12 18:03 Hartmut Goebel
  2016-06-13 20:41 ` Leo Famulari
  0 siblings, 1 reply; 6+ messages in thread
From: Hartmut Goebel @ 2016-06-12 18:03 UTC (permalink / raw)
  To: guix-devel

Hi,

I just wanted to remind about this small patch

From:     Hartmut Goebel
Subject:     [PATCH v4] gnu: Add teensy-loader-cli.
Date:     Thu, 2 Jun 2016 12:35:07 +0200

https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00062.html

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] gnu: Add teensy-loader-cli.
  2016-06-12 18:03 Hartmut Goebel
@ 2016-06-13 20:41 ` Leo Famulari
  2016-06-14 10:32   ` Hartmut Goebel
  0 siblings, 1 reply; 6+ messages in thread
From: Leo Famulari @ 2016-06-13 20:41 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: guix-devel

On Sun, Jun 12, 2016 at 08:03:17PM +0200, Hartmut Goebel wrote:
> Hi,
> 
> I just wanted to remind about this small patch
> 
> From:     Hartmut Goebel
> Subject:     [PATCH v4] gnu: Add teensy-loader-cli.
> Date:     Thu, 2 Jun 2016 12:35:07 +0200
> 
> https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00062.html

What do you think about the changes suggested here?

http://lists.gnu.org/archive/html/guix-devel/2016-06/msg00131.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] gnu: Add teensy-loader-cli.
  2016-06-13 20:41 ` Leo Famulari
@ 2016-06-14 10:32   ` Hartmut Goebel
  0 siblings, 0 replies; 6+ messages in thread
From: Hartmut Goebel @ 2016-06-14 10:32 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

Am 13.06.2016 um 22:41 schrieb Leo Famulari:
> What do you think about the changes suggested here?
> http://lists.gnu.org/archive/html/guix-devel/2016-06/msg00131.html 

Oh, I missed this. Thanks for pointing me to it.

The quasiquote is what I was looking for, thanks. I'll send an updated
patch later today.



-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-06-14 10:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-02 10:35 [PATCH v4] gnu: Add teensy-loader-cli Hartmut Goebel
2016-06-02 10:35 ` [PATCH] " Hartmut Goebel
2016-06-04 21:30 ` [PATCH v4] " Ludovic Courtès
  -- strict thread matches above, loose matches on Subject: below --
2016-06-12 18:03 Hartmut Goebel
2016-06-13 20:41 ` Leo Famulari
2016-06-14 10:32   ` Hartmut Goebel

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).