From ca982158bf33cef9398f86723d862da0603466da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sun, 1 Feb 2015 22:52:01 +0100 Subject: [PATCH] arduino: new package This commit adds the graphical Arduino IDE, built from the arduino-core expression. Also: - Add libusb to RPATH for avrdude. Without this, avrdude is broken. Possible TODO: replace bundled avrdude with the one from nixpkgs. - Use "cp -r ./build/linux/work/*", so example sketeches, the HTML reference documentation and the 'arduino' shell script that starts the IDE gets included. - Make meta.description slightly more generic, to cover both GUI/core variants. --- .../arduino/arduino-core/default.nix | 25 +++++++++++++------ pkgs/top-level/all-packages.nix | 3 +++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pkgs/development/arduino/arduino-core/default.nix b/pkgs/development/arduino/arduino-core/default.nix index a5b8980e32cf..7addf79a39c6 100644 --- a/pkgs/development/arduino/arduino-core/default.nix +++ b/pkgs/development/arduino/arduino-core/default.nix @@ -1,9 +1,13 @@ -{ stdenv, fetchFromGitHub, jdk, jre, ant, coreutils, gnugrep, file }: +{ stdenv, fetchFromGitHub, jdk, jre, ant, coreutils, gnugrep, file, libusb +, withGui ? false, gtk2 ? null +}: + +assert withGui -> gtk2 != null; stdenv.mkDerivation rec { version = "1.0.6"; - name = "arduino-core"; + name = "arduino${stdenv.lib.optionalString (withGui == false) "-core"}"; src = fetchFromGitHub { owner = "arduino"; @@ -22,12 +26,16 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/share/arduino - cp -r ./build/linux/work/hardware/ $out/share/arduino - cp -r ./build/linux/work/libraries/ $out/share/arduino - cp -r ./build/linux/work/tools/ $out/share/arduino - cp -r ./build/linux/work/lib/ $out/share/arduino + cp -r ./build/linux/work/* "$out/share/arduino/" echo ${version} > $out/share/arduino/lib/version.txt + ${stdenv.lib.optionalString withGui '' + mkdir -p "$out/bin" + sed -i -e "s|^java|${jdk}/bin/java|" "$out/share/arduino/arduino" + sed -i -e "s|^LD_LIBRARY_PATH=|LD_LIBRARY_PATH=${gtk2}/lib:|" "$out/share/arduino/arduino" + ln -sr "$out/share/arduino/arduino" "$out/bin/arduino" + ''} + # Fixup "/lib64/ld-linux-x86-64.so.2" like references in ELF executables. echo "running patchelf on prebuilt binaries:" find "$out" | while read filepath; do @@ -41,10 +49,13 @@ stdenv.mkDerivation rec { test $? -eq 0 || { echo "patchelf failed to process $filepath"; exit 1; } fi done + + patchelf --set-rpath ${stdenv.lib.makeSearchPath "lib" [ stdenv.glibc libusb ]} \ + "$out/share/arduino/hardware/tools/avrdude" ''; meta = { - description = "Libraries for the open-source electronics prototyping platform"; + description = "Open-source electronics prototyping platform"; homepage = http://arduino.cc/; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.antono stdenv.lib.maintainers.robberer ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3b4d74aec156..734a5c873b2a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -499,9 +499,12 @@ let arcanist = callPackage ../development/tools/misc/arcanist {}; + arduino = arduino-core.override { withGui = true; }; + arduino-core = callPackage ../development/arduino/arduino-core { jdk = jdk; jre = jdk; + withGui = false; }; apitrace = callPackage ../applications/graphics/apitrace {};