* [PATCH v6 0/2] gnu: Add Arduino tools
@ 2016-08-30 19:01 Danny Milosavljevic
2016-08-30 19:01 ` [PATCH v6 1/2] gnu: Add arduino-libraries Danny Milosavljevic
2016-08-30 19:01 ` [PATCH v6 2/2] gnu: Add arduino-makefile Danny Milosavljevic
0 siblings, 2 replies; 10+ messages in thread
From: Danny Milosavljevic @ 2016-08-30 19:01 UTC (permalink / raw)
To: guix-devel
Danny Milosavljevic (2):
gnu: Add arduino-libraries.
gnu: Add arduino-makefile.
gnu/local.mk | 2 +
gnu/packages/arduino.scm | 172 +++++++++++++++++++++
...aries-hardware-remove-__cxa_guard_acquire.patch | 13 ++
3 files changed, 187 insertions(+)
create mode 100644 gnu/packages/arduino.scm
create mode 100644 gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v6 1/2] gnu: Add arduino-libraries.
2016-08-30 19:01 [PATCH v6 0/2] gnu: Add Arduino tools Danny Milosavljevic
@ 2016-08-30 19:01 ` Danny Milosavljevic
2016-08-31 20:08 ` Ricardo Wurmus
2016-08-30 19:01 ` [PATCH v6 2/2] gnu: Add arduino-makefile Danny Milosavljevic
1 sibling, 1 reply; 10+ messages in thread
From: Danny Milosavljevic @ 2016-08-30 19:01 UTC (permalink / raw)
To: guix-devel
* gnu/packages/arduino.scm (arduino-installer, arduino-libraries): New variables.
* gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch: New file.
* gnu/local.mk (dist_patch_DATA, GNU_SYSTEM_MODULES): Add them.
---
gnu/local.mk | 2 +
gnu/packages/arduino.scm | 91 ++++++++++++++++++++++
...aries-hardware-remove-__cxa_guard_acquire.patch | 13 ++++
3 files changed, 106 insertions(+)
create mode 100644 gnu/packages/arduino.scm
create mode 100644 gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index d75ab54..66ef07b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -40,6 +40,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/anthy.scm \
%D%/packages/apl.scm \
%D%/packages/apr.scm \
+ %D%/packages/arduino.scm \
%D%/packages/aspell.scm \
%D%/packages/assembly.scm \
%D%/packages/attr.scm \
@@ -439,6 +440,7 @@ dist_patch_DATA = \
%D%/packages/patches/antiword-CVE-2014-8123.patch \
%D%/packages/patches/apr-skip-getservbyname-test.patch \
%D%/packages/patches/arb-ldconfig.patch \
+ %D%/packages/patches/arduino-hardware-patch-out-__cxa_guard_acquire.patch \
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc.patch \
%D%/packages/patches/ath9k-htc-firmware-objcopy.patch \
diff --git a/gnu/packages/arduino.scm b/gnu/packages/arduino.scm
new file mode 100644
index 0000000..5309587
--- /dev/null
+++ b/gnu/packages/arduino.scm
@@ -0,0 +1,91 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages arduino)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix utils)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
+ #:use-module (guix build-system ant)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages avr)
+ #:use-module (gnu packages flashing-tools)
+ #:use-module (gnu packages java)
+ #:use-module (gnu packages python))
+
+(define (arduino-installer filenames)
+ `(lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (out-share (string-append out "/share/arduino")))
+ (mkdir-p out-share)
+ (for-each
+ (lambda (filename)
+ (let* ((out-share-part (string-append out-share "/" filename)))
+ (copy-recursively filename out-share-part)))
+ (list ,@filenames)))))
+
+(define-public arduino-libraries
+ (package
+ (name "arduino-libraries")
+ (version "1.6.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/arduino/Arduino/"
+ "archive/" version ".tar.gz"))
+ (sha256
+ (base32
+ "15gbg64i2ac6d0mlnbla567sn26494cvqwf5q53xzf4b5v2rb0jc"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete bundled jar archives.
+ (for-each delete-file (find-files "." "\\.jar$"))
+ ;; Delete non-Free Software
+ (delete-file-recursively "libraries/WiFi/extras/wifiHD")
+ (delete-file-recursively "libraries/WiFi/extras/wifi_dnld")
+ #t))
+ (patches (search-patches
+ "arduino-libraries-hardware-remove-__cxa_guard_acquire.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no tests exist
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install ,(arduino-installer '("libraries" "hardware"))))))
+ (home-page "https://www.arduino.cc/")
+ (synopsis "Arduino Libraries and Hardware Spec Files")
+ (description "arduino-libraries contains libraries and Arduino
+hardware spec files (boards.txt).")
+ ;; gpl covers the main body ("app", "core").
+ ;; lgpl2.1+ covers the remainder mostly.
+ ;; Exceptions are:
+ ;; libraries/Ethernet/src/Dns*: asl2.0
+ ;; libraries/Ethernet/src/EthernetUdp*: expat
+ ;; libraries/Ethernet/src/utility/w5100*: lgpl2.1
+ ;; libraries/SD: gpl3+
+ ;; libraries/TFT: bsd-3
+ ;; libraries/WiFi: bsd-3
+ (license (list license:lgpl2.1+
+ license:asl2.0
+ license:expat
+ license:bsd-3))))
diff --git a/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch b/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch
new file mode 100644
index 0000000..75d12cf
--- /dev/null
+++ b/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch
@@ -0,0 +1,13 @@
+--- ./hardware/arduino/avr/cores/arduino/PluggableUSB.cpp.orig 2016-08-16 04:40:10.449580005 +0200
++++ ./hardware/arduino/avr/cores/arduino/PluggableUSB.cpp 2016-08-16 04:40:17.661634498 +0200
+@@ -97,9 +97,9 @@
+ // restart USB layer???
+ }
+
++static PluggableUSB_ obj;
+ PluggableUSB_& PluggableUSB()
+ {
+- static PluggableUSB_ obj;
+ return obj;
+ }
+
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v6 2/2] gnu: Add arduino-makefile.
2016-08-30 19:01 [PATCH v6 0/2] gnu: Add Arduino tools Danny Milosavljevic
2016-08-30 19:01 ` [PATCH v6 1/2] gnu: Add arduino-libraries Danny Milosavljevic
@ 2016-08-30 19:01 ` Danny Milosavljevic
2016-08-31 20:02 ` Ricardo Wurmus
1 sibling, 1 reply; 10+ messages in thread
From: Danny Milosavljevic @ 2016-08-30 19:01 UTC (permalink / raw)
To: guix-devel
* gnu/packages/arduino.scm (arduino-makefile): New variable.
---
gnu/packages/arduino.scm | 81 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/gnu/packages/arduino.scm b/gnu/packages/arduino.scm
index 5309587..08ed1cf 100644
--- a/gnu/packages/arduino.scm
+++ b/gnu/packages/arduino.scm
@@ -89,3 +89,84 @@ hardware spec files (boards.txt).")
license:asl2.0
license:expat
license:bsd-3))))
+
+(define-public arduino-makefile
+ (package
+ (name "arduino-makefile")
+ (version "1.5.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/sudar/Arduino-Makefile/"
+ "archive/" version ".tar.gz"))
+ (sha256
+ (base32
+ "1gqmcg2jg62b915akbkivnqf8sx76gv719vx7azm47szd0w1i94i"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ; no tests exist
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((avr-gcc (assoc-ref inputs "avr-gcc-5"))
+ (avr-binutils (assoc-ref inputs "avr-binutils")))
+ (substitute* "bin/ard-reset-arduino"
+ (("#!/usr/bin/env python") "#!/usr/bin/python3"))
+ (substitute* "Arduino.mk"
+ (("# => ARDUINO_DIR.*")
+ (string-append "ARDUINO_DIR = "
+ (assoc-ref %build-inputs "arduino-libraries")
+ "/share/arduino\n"))
+ ; ; defaults to "hardware/tools/avr"
+ (("# => AVR_TOOLS_DIR.*")
+ (string-append "AVR_TOOLS_DIR = /\n"
+ "AVR_TOOLS_PATH = /\n"
+ "AVRDUDE = " (assoc-ref %build-inputs "avrdude") "\n"))
+ (("CC_NAME[ ]*=.*")
+ (string-append "CC_NAME = " avr-gcc "/bin/avr-gcc\n"))
+ (("CXX_NAME[ ]*=.*")
+ (string-append "CXX_NAME = " avr-gcc "/bin/avr-g++\n"))
+ (("OBJCOPY_NAME[ ]*=.*")
+ (string-append "OBJCOPY_NAME = " avr-binutils "/bin/avr-objcopy\n"))
+ (("OBJDUMP_NAME[ ]*=.*")
+ (string-append "OBJDUMP_NAME = " avr-binutils "/bin/avr-objdump\n"))
+ (("AR_NAME[ ]*=.*")
+ (string-append "AR_NAME = " avr-binutils "/bin/avr-ar\n"))
+ (("SIZE_NAME[ ]*=.*")
+ (string-append "SIZE_NAME = " avr-binutils "/bin/avr-size\n"))
+ (("NM_NAME[ ]*=.*")
+ (string-append "NM_NAME = " avr-binutils "/bin/avr-nm\n"))
+ ; What about ld ?
+ (("# => ARDMK_DIR.*")
+ (string-append "ARDMK_DIR = "
+ (assoc-ref %outputs "out")
+ "/share/arduino\n"))))))
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (out-mk (string-append out "/share/arduino"))
+ (out-doc (string-append out "/share/doc"))
+ (out-bin (string-append out "/bin"))
+ (out-man (string-append out "/share/man/man1")))
+ (for-each (lambda (name)
+ (install-file name out-mk))
+ '("Arduino.mk" "arduino-mk-vars.md" "chipKIT.mk" "Common.mk"))
+ (mkdir-p out-doc)
+ (copy-recursively "examples" out-doc)
+ (install-file "bin/ard-reset-arduino" out-bin)
+ (install-file "ard-reset-arduino.1" out-man)))))))
+ (inputs
+ `(("python" ,python)
+ ("python-pyserial" ,python-pyserial)
+ ("arduino-libraries" ,arduino-libraries)
+ ("avrdude" ,avrdude)
+ ("avr-gcc-5" ,avr-gcc-5)
+ ("avr-binutils" ,avr-binutils)))
+ (synopsis "Arduino Makefile Include file")
+ (description "@code{arduino-makefile} allows you to build Arduino sketches using a very tiny Makefile.")
+ (home-page "https://github.com/sudar/Arduino-Makefile")
+ ;(supported-systems '("avr"))
+ (license license:lgpl2.1)))
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v6 2/2] gnu: Add arduino-makefile.
2016-08-30 19:01 ` [PATCH v6 2/2] gnu: Add arduino-makefile Danny Milosavljevic
@ 2016-08-31 20:02 ` Ricardo Wurmus
2016-08-31 20:34 ` Danny Milosavljevic
0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2016-08-31 20:02 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: guix-devel
Hi Danny,
Thank you for your contributions! I haven’t followed the discussion on
the previous versions, so I hope my comments below are not annoying.
> +(define-public arduino-makefile
> + (package
> + (name "arduino-makefile")
> + (version "1.5.1")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/sudar/Arduino-Makefile/"
> + "archive/" version ".tar.gz"))
> + (sha256
> + (base32
> + "1gqmcg2jg62b915akbkivnqf8sx76gv719vx7azm47szd0w1i94i"))
> + (file-name (string-append name "-" version ".tar.gz"))))
> + (build-system python-build-system)
> + (arguments
> + `(#:tests? #f ; no tests exist
> + #:phases
> + (modify-phases %standard-phases
> + (delete 'configure)
> + (add-after 'unpack 'patch-paths
> + (lambda* (#:key inputs outputs #:allow-other-keys)
> + (let ((avr-gcc (assoc-ref inputs "avr-gcc-5"))
> + (avr-binutils (assoc-ref inputs "avr-binutils")))
> + (substitute* "bin/ard-reset-arduino"
> + (("#!/usr/bin/env python") "#!/usr/bin/python3"))
This looks unnecessary. When “python-wrapper” is among the inputs the
shebang would be replaced automatically.
> + (substitute* "Arduino.mk"
> + (("# => ARDUINO_DIR.*")
> + (string-append "ARDUINO_DIR = "
> + (assoc-ref %build-inputs "arduino-libraries")
Could you use “inputs” instead of “%build-inputs” here?
> + "/share/arduino\n"))
> + ; ; defaults to "hardware/tools/avr"
; ; –> ;;
> + (("# => AVR_TOOLS_DIR.*")
> + (string-append "AVR_TOOLS_DIR = /\n"
> + "AVR_TOOLS_PATH = /\n"
> + "AVRDUDE = " (assoc-ref %build-inputs "avrdude") "\n"))
> + (("CC_NAME[ ]*=.*")
> + (string-append "CC_NAME = " avr-gcc "/bin/avr-gcc\n"))
> + (("CXX_NAME[ ]*=.*")
> + (string-append "CXX_NAME = " avr-gcc "/bin/avr-g++\n"))
> + (("OBJCOPY_NAME[ ]*=.*")
> + (string-append "OBJCOPY_NAME = " avr-binutils "/bin/avr-objcopy\n"))
> + (("OBJDUMP_NAME[ ]*=.*")
> + (string-append "OBJDUMP_NAME = " avr-binutils "/bin/avr-objdump\n"))
> + (("AR_NAME[ ]*=.*")
> + (string-append "AR_NAME = " avr-binutils "/bin/avr-ar\n"))
> + (("SIZE_NAME[ ]*=.*")
> + (string-append "SIZE_NAME = " avr-binutils "/bin/avr-size\n"))
> + (("NM_NAME[ ]*=.*")
> + (string-append "NM_NAME = " avr-binutils "/bin/avr-nm\n"))
> + ; What about ld ?
What about it? :)
> + (("# => ARDMK_DIR.*")
> + (string-append "ARDMK_DIR = "
> + (assoc-ref %outputs "out")
> + "/share/arduino\n"))))))
The indentation of this whole block looks a bit off. Don’t worry about
it, though. We can fix this before pushing the patch.
> + (delete 'build)
> + (replace 'install
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (out-mk (string-append out "/share/arduino"))
> + (out-doc (string-append out "/share/doc"))
> + (out-bin (string-append out "/bin"))
> + (out-man (string-append out "/share/man/man1")))
> + (for-each (lambda (name)
> + (install-file name out-mk))
> + '("Arduino.mk" "arduino-mk-vars.md" "chipKIT.mk" "Common.mk"))
> + (mkdir-p out-doc)
> + (copy-recursively "examples" out-doc)
> + (install-file "bin/ard-reset-arduino" out-bin)
> + (install-file "ard-reset-arduino.1" out-man)))))))
The phase should end with #t because “install-file” has no useful return value.
> + (inputs
> + `(("python" ,python)
> + ("python-pyserial" ,python-pyserial)
> + ("arduino-libraries" ,arduino-libraries)
> + ("avrdude" ,avrdude)
> + ("avr-gcc-5" ,avr-gcc-5)
> + ("avr-binutils" ,avr-binutils)))
I’m a little confused about this. Why is avrdude among the inputs? Why
python-pyserial? Nothing is built here. You just copy the files.
If “bin/ard-reset-arduino” or any other script uses pyserial you will
probably have to wrap the executables such that they set the PYTHONPATH
to include the output of python-pyserial. Otherwise they won’t be able
to find anything.
> + (synopsis "Arduino Makefile Include file")
Please use lower case.
> + (description "@code{arduino-makefile} allows you to build Arduino sketches using a very tiny Makefile.")
Please break this line. Is this really just a Makefile? What else is
there?
> + (home-page "https://github.com/sudar/Arduino-Makefile")
> + ;(supported-systems '("avr"))
This should be removed.
> + (license license:lgpl2.1)))
Only version 2.1, or does it have the “or later” clause?
~~ Ricardo
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 1/2] gnu: Add arduino-libraries.
2016-08-30 19:01 ` [PATCH v6 1/2] gnu: Add arduino-libraries Danny Milosavljevic
@ 2016-08-31 20:08 ` Ricardo Wurmus
2016-08-31 20:40 ` Danny Milosavljevic
0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2016-08-31 20:08 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: guix-devel
Danny Milosavljevic <dannym@scratchpost.org> writes:
> * gnu/packages/arduino.scm (arduino-installer, arduino-libraries): New variables.
I think we’d just write “New file.” without mentioning the new variables.
> * gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch: New file.
> * gnu/local.mk (dist_patch_DATA, GNU_SYSTEM_MODULES): Add them.
> ---
[…]
> +(define-module (gnu packages arduino)
> + #:use-module ((guix licenses) #:prefix license:)
> + #:use-module (guix utils)
> + #:use-module (guix download)
> + #:use-module (guix packages)
> + #:use-module (guix build-system gnu)
> + #:use-module (guix build-system python)
> + #:use-module (guix build-system ant)
> + #:use-module (gnu packages)
> + #:use-module (gnu packages avr)
> + #:use-module (gnu packages flashing-tools)
> + #:use-module (gnu packages java)
> + #:use-module (gnu packages python))
> +
> +(define (arduino-installer filenames)
> + `(lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (out-share (string-append out "/share/arduino")))
> + (mkdir-p out-share)
> + (for-each
> + (lambda (filename)
> + (let* ((out-share-part (string-append out-share "/" filename)))
> + (copy-recursively filename out-share-part)))
> + (list ,@filenames)))))
As this is only used by “arduino-libraries” and probably no other
package I’d move this into the definition of “arduino-libraries”.
> +(define-public arduino-libraries
> + (package
> + (name "arduino-libraries")
> + (version "1.6.10")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/arduino/Arduino/"
> + "archive/" version ".tar.gz"))
> + (sha256
> + (base32
> + "15gbg64i2ac6d0mlnbla567sn26494cvqwf5q53xzf4b5v2rb0jc"))
> + (file-name (string-append name "-" version ".tar.gz"))
> + (modules '((guix build utils)))
> + (snippet
> + '(begin
> + ;; Delete bundled jar archives.
> + (for-each delete-file (find-files "." "\\.jar$"))
> + ;; Delete non-Free Software
> + (delete-file-recursively "libraries/WiFi/extras/wifiHD")
> + (delete-file-recursively "libraries/WiFi/extras/wifi_dnld")
> + #t))
> + (patches (search-patches
> + "arduino-libraries-hardware-remove-__cxa_guard_acquire.patch"))))
> + (build-system gnu-build-system)
> + (arguments
> + `(#:tests? #f ; no tests exist
> + #:phases
> + (modify-phases %standard-phases
> + (delete 'configure)
> + (delete 'build)
> + (replace 'install ,(arduino-installer '("libraries" "hardware"))))))
> + (home-page "https://www.arduino.cc/")
> + (synopsis "Arduino Libraries and Hardware Spec Files")
Please use lower case.
> + (description "arduino-libraries contains libraries and Arduino
> +hardware spec files (boards.txt).")
s/arduino-libraries/This package/
Could you expand the description a little? Maybe one more sentence.
> + ;; gpl covers the main body ("app", "core").
> + ;; lgpl2.1+ covers the remainder mostly.
> + ;; Exceptions are:
> + ;; libraries/Ethernet/src/Dns*: asl2.0
> + ;; libraries/Ethernet/src/EthernetUdp*: expat
> + ;; libraries/Ethernet/src/utility/w5100*: lgpl2.1
Only 2.1? Or is a later version okay?
> + ;; libraries/SD: gpl3+
> + ;; libraries/TFT: bsd-3
> + ;; libraries/WiFi: bsd-3
Nitpick: the license names should be capitalised.
> + (license (list license:lgpl2.1+
> + license:asl2.0
> + license:expat
> + license:bsd-3))))
The list should also include “gpl3+”.
> diff --git a/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch b/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch
Please add a comment at the very top of this patch to explain what its
purpose is.
Thanks!
~~ Ricardo
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 2/2] gnu: Add arduino-makefile.
2016-08-31 20:02 ` Ricardo Wurmus
@ 2016-08-31 20:34 ` Danny Milosavljevic
2016-09-01 14:57 ` Ricardo Wurmus
0 siblings, 1 reply; 10+ messages in thread
From: Danny Milosavljevic @ 2016-08-31 20:34 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel
Hi Ricardo,
On Wed, 31 Aug 2016 22:02:55 +0200
Ricardo Wurmus <rekado@elephly.net> wrote:
> > + (let ((avr-gcc (assoc-ref inputs "avr-gcc-5"))
> > + (avr-binutils (assoc-ref inputs "avr-binutils")))
> > + (substitute* "bin/ard-reset-arduino"
> > + (("#!/usr/bin/env python") "#!/usr/bin/python3"))
>
> This looks unnecessary. When “python-wrapper” is among the inputs the
> shebang would be replaced automatically.
It's impossible for anyone to reliably detect the major Python version that
the script expects.
Therefore, this clarifies that we need Python3 for it.
The shebang will then be automatically updated correctly.
> > + (substitute* "Arduino.mk"
> > + (("# => ARDUINO_DIR.*")
> > + (string-append "ARDUINO_DIR = "
> > + (assoc-ref %build-inputs "arduino-libraries")
>
> Could you use “inputs” instead of “%build-inputs” here?
Yes. What's the difference?
> > + ; What about ld ?
>
> What about it? :)
I don't know. Seems to work without it but it just irks me.
There's no variable for ld's name in the makefile.
> I’m a little confused about this. Why is avrdude among the inputs? Why
> python-pyserial? Nothing is built here. You just copy the files.
It's supposed to be something like an arduino-toolchain. You just install it
and it will pull the compiler, flasher etc and use it for your projects
automagically as long as they "include Arduino.mk".
> If “bin/ard-reset-arduino” or any other script uses pyserial you will
> probably have to wrap the executables such that they set the PYTHONPATH
> to include the output of python-pyserial. Otherwise they won’t be able
> to find anything.
Probably.
> Please break this line. Is this really just a Makefile? What else is
> there?
Yeah, huge makefile. Allows you to build and flash the stuff.
> > + ;(supported-systems '("avr"))
>
> This should be removed.
As I said I'm not a fan of obfuscating what system this is for.
It is *good* for maintenance to have little hints of what to expect.
If it worked usefully, I'd even make the (supported-system '("avr")) active!
> > + (license license:lgpl2.1)))
>
> Only version 2.1, or does it have the “or later” clause?
lgpl2.1+
Thanks,
Danny
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 1/2] gnu: Add arduino-libraries.
2016-08-31 20:08 ` Ricardo Wurmus
@ 2016-08-31 20:40 ` Danny Milosavljevic
0 siblings, 0 replies; 10+ messages in thread
From: Danny Milosavljevic @ 2016-08-31 20:40 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel
> As this is only used by “arduino-libraries” and probably no other
> package I’d move this into the definition of “arduino-libraries”.
I suppressed arduino-core in this patch series. It will be used by others.
> Could you expand the description a little? Maybe one more sentence.
What should I write?
Would "There are libraries for Ethernet, GSM, LCD, SD drives, servos, stepper motors, TFT displays and WiFi. " be OK?
> > + ;; libraries/Ethernet/src/utility/w5100*: lgpl2.1
>
> Only 2.1? Or is a later version okay?
Only 2.1.
> > diff --git a/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch b/gnu/packages/patches/arduino-libraries-hardware-remove-__cxa_guard_acquire.patch
>
> Please add a comment at the very top of this patch to explain what its
> purpose is.
"Removes function-static variable. Our avr-gcc chokes on it otherwise." ?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 2/2] gnu: Add arduino-makefile.
2016-08-31 20:34 ` Danny Milosavljevic
@ 2016-09-01 14:57 ` Ricardo Wurmus
2016-09-01 18:44 ` Danny Milosavljevic
0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2016-09-01 14:57 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: guix-devel
Danny Milosavljevic <dannym@scratchpost.org> writes:
> Hi Ricardo,
>
> On Wed, 31 Aug 2016 22:02:55 +0200
> Ricardo Wurmus <rekado@elephly.net> wrote:
>> > + (let ((avr-gcc (assoc-ref inputs "avr-gcc-5"))
>> > + (avr-binutils (assoc-ref inputs "avr-binutils")))
>> > + (substitute* "bin/ard-reset-arduino"
>> > + (("#!/usr/bin/env python") "#!/usr/bin/python3"))
>>
>> This looks unnecessary. When “python-wrapper” is among the inputs the
>> shebang would be replaced automatically.
>
> It's impossible for anyone to reliably detect the major Python version that
> the script expects.
>
> Therefore, this clarifies that we need Python3 for it.
> The shebang will then be automatically updated correctly.
I don’t understand this. When the “python-wrapper” package is an input
it will be the only package providing a “python” executable, so the
shebang patcher will replace “#!/usr/bin/env python” with
“#!/gnu/store/…-python-3…/bin/python”. There’s nothing ambiguous about
this.
>> > + (substitute* "Arduino.mk"
>> > + (("# => ARDUINO_DIR.*")
>> > + (string-append "ARDUINO_DIR = "
>> > + (assoc-ref %build-inputs "arduino-libraries")
>>
>> Could you use “inputs” instead of “%build-inputs” here?
>
> Yes. What's the difference?
We prefer to use a properly bound “inputs” over the magical
“%build-inputs”. “%build-inputs” can be used in the specification of
#:make-flags where “inputs” cannot be bound.
>> > + ; What about ld ?
>>
>> What about it? :)
>
> I don't know. Seems to work without it but it just irks me.
> There's no variable for ld's name in the makefile.
>
>> I’m a little confused about this. Why is avrdude among the inputs? Why
>> python-pyserial? Nothing is built here. You just copy the files.
>
> It's supposed to be something like an arduino-toolchain. You just install it
> and it will pull the compiler, flasher etc and use it for your projects
> automagically as long as they "include Arduino.mk".
Then shouldn’t the inputs be propagated? As the build artifacts of this
package retain no reference to these regular inputs it’s almost the same
as not specifying them in the first place.
>> > + ;(supported-systems '("avr"))
>>
>> This should be removed.
>
> As I said I'm not a fan of obfuscating what system this is for.
> It is *good* for maintenance to have little hints of what to expect.
>
> If it worked usefully, I'd even make the (supported-system '("avr")) active!
This is not what “supported-systems” is used for. This field is used to
tell the build machines in the build farm not to bother building
packages that are not supported on the current architecture.
The software provided by this package does not “run” on AVRs. (It
doesn’t run at all.) It is used on any host system to build software
for AVRs. That’s very different from what the “supported-systems” field
describes.
~~ Ricardo
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 2/2] gnu: Add arduino-makefile.
2016-09-01 14:57 ` Ricardo Wurmus
@ 2016-09-01 18:44 ` Danny Milosavljevic
2016-09-01 18:52 ` Danny Milosavljevic
0 siblings, 1 reply; 10+ messages in thread
From: Danny Milosavljevic @ 2016-09-01 18:44 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel
Hi Ricardo,
On Thu, 01 Sep 2016 16:57:32 +0200
Ricardo Wurmus <rekado@elephly.net> wrote:
>> > + (substitute* "bin/ard-reset-arduino"
>> > + (("#!/usr/bin/env python") "#!/usr/bin/python3"))
>>
> >> This looks unnecessary. When “python-wrapper” is among the inputs the
> >> shebang would be replaced automatically.
... with Python 3's name. So okay, I'll remove this part. (I still don't get what Guix does (not do) with major versions - but fine)
ard-reset-arduino source code should have specified which Python version it expects in the shebang to begin with, I was just bugfixing it...
> “#!/gnu/store/…-python-3…/bin/python”. There’s nothing ambiguous about
^ yeah, I've checked out python-wrapper now and as long as it does that now and in the future, okay :)
> We prefer to use a properly bound “inputs” over the magical
> “%build-inputs”. “%build-inputs” can be used in the specification of
> #:make-flags where “inputs” cannot be bound.
Ok.
> Then shouldn’t the inputs be propagated? As the build artifacts of this
> package retain no reference to these regular inputs it’s almost the same
> as not specifying them in the first place.
I don't know about this. I thought propagated meant that if I installed arduino-makefile into the profile it would also install avrdude into the profile. That is not what I wanted. The Makefile refers to the /gnu/store/....avrdude... - that's it. But we can also propagate - I'm just not sure whether that's needed and useful.
> This is not what “supported-systems” is used for. This field is used to
> tell the build machines in the build farm not to bother building
> packages that are not supported on the current architecture.
Ah okay. I'll remove it then.
Cheers,
Danny
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v6 2/2] gnu: Add arduino-makefile.
2016-09-01 18:44 ` Danny Milosavljevic
@ 2016-09-01 18:52 ` Danny Milosavljevic
0 siblings, 0 replies; 10+ messages in thread
From: Danny Milosavljevic @ 2016-09-01 18:52 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel
On Thu, 1 Sep 2016 20:44:20 +0200
Danny Milosavljevic <dannym@scratchpost.org> wrote:
> I don't know about this. I thought propagated meant that if I installed arduino-makefile into the profile it would also install avrdude into the profile. That is not what I wanted. The Makefile refers to the /gnu/store/....avrdude... - that's it. But we can also propagate - I'm just not sure whether that's needed and useful.
On second thought, gcc-toolchain propagates ld etc too. So if you want, we can propagate avr-gcc-5, avr-binutils, arduino-libraries and avrdude.
Propagating Python would probably be technically necessary but actually not desireable because Arduino has very little to do with Python.
So I'm fine with it either way.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-09-01 18:53 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-30 19:01 [PATCH v6 0/2] gnu: Add Arduino tools Danny Milosavljevic
2016-08-30 19:01 ` [PATCH v6 1/2] gnu: Add arduino-libraries Danny Milosavljevic
2016-08-31 20:08 ` Ricardo Wurmus
2016-08-31 20:40 ` Danny Milosavljevic
2016-08-30 19:01 ` [PATCH v6 2/2] gnu: Add arduino-makefile Danny Milosavljevic
2016-08-31 20:02 ` Ricardo Wurmus
2016-08-31 20:34 ` Danny Milosavljevic
2016-09-01 14:57 ` Ricardo Wurmus
2016-09-01 18:44 ` Danny Milosavljevic
2016-09-01 18:52 ` Danny Milosavljevic
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).