diff options
Diffstat (limited to 'pkgs/development/arduino/arduino-core/default.nix')
-rw-r--r-- | pkgs/development/arduino/arduino-core/default.nix | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/pkgs/development/arduino/arduino-core/default.nix b/pkgs/development/arduino/arduino-core/default.nix index 1c537edd0b4..529be6e2a56 100644 --- a/pkgs/development/arduino/arduino-core/default.nix +++ b/pkgs/development/arduino/arduino-core/default.nix @@ -11,7 +11,8 @@ , ncurses , readline , withGui ? false -, gtk2 ? null +, gtk3 ? null +, wrapGAppsHook , withTeensyduino ? false /* Packages needed for Teensyduino */ , upx @@ -22,6 +23,7 @@ , glib , pango , gdk-pixbuf +, gtk2 , libpng12 , expat , freetype @@ -29,7 +31,7 @@ , udev }: -assert withGui -> gtk2 != null; +assert withGui -> gtk3 != null && wrapGAppsHook != null; assert withTeensyduino -> withGui; let externalDownloads = import ./downloads.nix { @@ -46,7 +48,7 @@ let ; # abiVersion 6 is default, but we need 5 for `avrdude_bin` executable ncurses5 = ncurses.override { abiVersion = "5"; }; - teensy_libpath = stdenv.lib.makeLibraryPath [ + teensy_libpath = lib.makeLibraryPath [ atk cairo expat @@ -75,52 +77,55 @@ let else throw "${stdenv.hostPlatform.system} is not supported in teensy"; flavor = (if withTeensyduino then "teensyduino" else "arduino") - + stdenv.lib.optionalString (!withGui) "-core"; + + lib.optionalString (!withGui) "-core"; in stdenv.mkDerivation rec { - version = "1.8.12"; + version = "1.8.13"; name = "${flavor}-${version}"; src = fetchFromGitHub { owner = "arduino"; repo = "Arduino"; rev = version; - sha256 = "0lxkyvsh55biz2q20ba4qabraind5cpxznl41zfq027vl22j6kd2"; + sha256 = "0qg3qyj1b7wbaw2rsfly7nf3115h26nskl4ggrn6plhx272ni84p"; }; - teensyduino_version = "151"; + teensyduino_version = "153"; teensyduino_src = fetchurl { url = "https://www.pjrc.com/teensy/td_${teensyduino_version}/TeensyduinoInstall.${teensy_architecture}"; sha256 = { - linux64 = "0q8mw9bm2vb5vwa98gwcs6ad164i98hc1qqh2qw029yhwm599pn0"; - linux32 = "1rq6sx0048ab200jy0cz5vznwxi99avidngj42rjnh7kcfas5c4m"; - linuxarm = "19j55bq36040rpdpfxcqimda76rkbx137q15bs8nvxj13wrbl4ip"; - linuxaarch64 = "09k78dycn1vcpcx37c1dak8bgjv8gs34l89n9r9s0c3rqmv3pg4x"; + linux64 = "02qgsj4h4zrjxkcclx7clsqbqd699kg0dq1xxa9hbj3vfnddjv1f"; + linux32 = "14xaff8xj176ih8ifdvxsly5xgjjm82dqbn7lqq81a43i0svjjyn"; + linuxarm = "0xpg9axa6dqyhccm9cpvsv2al7rgwy4gv2l8b2kffvn974dl5759"; + linuxaarch64 = "1lyn4zy4l5mml3c19fw6i2pk1ypnq6mgjmxmzk9d54wpf6n3j5dk"; }.${teensy_architecture} or (throw "No arduino binaries for ${teensy_architecture}"); }; # Used because teensyduino requires jars be a specific size arduino_dist_src = fetchurl { - url = "http://downloads.arduino.cc/arduino-${version}-${teensy_architecture}.tar.xz"; + url = "https://downloads.arduino.cc/arduino-${version}-${teensy_architecture}.tar.xz"; sha256 = { - linux64 = "128f34kkxz7ab6ir5mqyr8d1mgxig8f9jygwxy44pdnq2rk6gmh9"; - linux32 = "11n85lwsn1w4ysfacyw08v85s3f3zvl8j8ac7rld19yxgjslvisi"; - linuxarm = "1k8yjivaydm6y16mplrjyblgx7l0wjzm3mjxh5saxrjq7drswmxx"; - linuxaarch64 = "04v2nhyjhahml6nmz23bfb63c0an4a7zxgcgxqqq442i8vd304wa"; + linux64 = "1bdlk51dqiyg5pw23hs8rfv8nrjqy0jqfl89h1466ahahpnd080v"; + linux32 = "0mgsw9wpwv1pgs2jslzflh7zf4ggqjgcd55hmdzrj0dvgkyw4cr2"; + linuxarm = "08n4lpak3i7yfyi0085j4nq14gb2n7zx85wl9drp8gaavxnfbp5f"; + linuxaarch64 = "0m4nhykzknm2hdpz1fhr2hbpncry53kvzs9y5lgj7rx3sy6ygbh7"; }.${teensy_architecture} or (throw "No arduino binaries for ${teensy_architecture}"); }; + # the glib setup hook will populate GSETTINGS_SCHEMAS_PATH, + # wrapGAppHooks (among other things) adds it to XDG_DATA_DIRS + # so 'save as...' works: + nativeBuildInputs = [ glib wrapGAppsHook unzip ]; buildInputs = [ jdk ant libusb-compat-0_1 libusb1 - unzip zlib ncurses5 readline - ] ++ stdenv.lib.optionals withTeensyduino [ upx ]; + ] ++ lib.optionals withTeensyduino [ upx ]; downloadSrcList = builtins.attrValues externalDownloads; downloadDstList = builtins.attrNames externalDownloads; @@ -149,7 +154,7 @@ stdenv.mkDerivation rec { # This will be patched into `arduino` wrapper script # Java loads gtk dynamically, so we need to provide it using LD_LIBRARY_PATH - dynamicLibraryPath = lib.makeLibraryPath [ gtk2 ]; + dynamicLibraryPath = lib.makeLibraryPath [ gtk3 ]; javaPath = lib.makeBinPath [ jdk ]; # Everything else will be patched into rpath @@ -160,7 +165,7 @@ stdenv.mkDerivation rec { cp -r ./build/linux/work/* "$out/share/arduino/" echo -n ${version} > $out/share/arduino/lib/version.txt - ${stdenv.lib.optionalString withGui '' + ${lib.optionalString withGui '' mkdir -p $out/bin substituteInPlace $out/share/arduino/arduino \ --replace "JAVA=java" "JAVA=$javaPath/java" \ @@ -175,7 +180,7 @@ stdenv.mkDerivation rec { --replace '<ICON_NAME>' "$out/share/arduino/icons/128x128/apps/arduino.png" ''} - ${stdenv.lib.optionalString withTeensyduino '' + ${lib.optionalString withTeensyduino '' # Back up the original jars mv $out/share/arduino/lib/arduino-core.jar $out/share/arduino/lib/arduino-core.jar.bak mv $out/share/arduino/lib/pde.jar $out/share/arduino/lib/pde.jar.bak @@ -230,16 +235,16 @@ stdenv.mkDerivation rec { mkdir $out/lib/ ln -s ${lib.makeLibraryPath [ ncurses5 ]}/libtinfo.so.5 $out/lib/libtinfo.so.5 - ${stdenv.lib.optionalString withTeensyduino '' + ${lib.optionalString withTeensyduino '' # Patch the Teensy loader binary patchelf --debug \ --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ --set-rpath "${teensy_libpath}" \ - $out/share/arduino/hardware/tools/teensy + $out/share/arduino/hardware/tools/teensy{,_ports,_reboot,_restart,_serialmon} ''} ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Open-source electronics prototyping platform"; homepage = "http://arduino.cc/"; license = if withTeensyduino then licenses.unfreeRedistributable else licenses.gpl2; |