aboutsummaryrefslogtreecommitdiff
path: root/pkgs/development/arduino
diff options
context:
space:
mode:
authorJade <jade@bytes.moe>2019-03-06 01:40:09 -0600
committerJade <jade@bytes.moe>2019-03-06 01:40:09 -0600
commit430100bf3045ce2252a7a4268580e655ba7a64de (patch)
treed3ee467c3338a62e5dd5cf34c7855e06443742c0 /pkgs/development/arduino
parent68be6bbc31351a4cf5b6431d746dc390ed29c16c (diff)
teensyduino: 1.40 -> 1.45
Bumps teensyduino version, simplifies building, and fixes a build error
Diffstat (limited to 'pkgs/development/arduino')
-rw-r--r--pkgs/development/arduino/arduino-core/default.nix78
1 files changed, 38 insertions, 40 deletions
diff --git a/pkgs/development/arduino/arduino-core/default.nix b/pkgs/development/arduino/arduino-core/default.nix
index 269df6a07cd0..2df5d16dbac6 100644
--- a/pkgs/development/arduino/arduino-core/default.nix
+++ b/pkgs/development/arduino/arduino-core/default.nix
@@ -2,8 +2,8 @@
, libusb, libusb1, unzip, zlib, ncurses, readline
, withGui ? false, gtk2 ? null, withTeensyduino ? false
/* Packages needed for Teensyduino */
-, upx, fontconfig, xorg, gcc, xdotool, xvfb_run
-, atk, glib, pango, gdk_pixbuf, libpng12, expat, freetype
+, upx, fontconfig, xorg, gcc
+, atk, glib, pango, gdk_pixbuf, libpng12, expat, freetype,
}:
assert withGui -> gtk2 != null;
@@ -68,19 +68,32 @@ stdenv.mkDerivation rec {
sha256 = "0ww72qfk7fyvprz15lc80i1axfdacb5fij4h5j5pakrg76mng2c3";
};
+ teensyduino_version = "145";
teensyduino_src = fetchurl {
- url = "https://www.pjrc.com/teensy/td_140/TeensyduinoInstall.${teensy_architecture}";
+ url = "https://www.pjrc.com/teensy/td_${teensyduino_version}/TeensyduinoInstall.${teensy_architecture}";
sha256 =
lib.optionalString ("${teensy_architecture}" == "linux64")
- "0127a1ak31252dbmr5niqa5mkvbm8dnz1cfcnmydzx9qn9rk00ir"
+ "0n8812znwdyvy7d1321p4r6j5pixg1sr31z5pfr7i0ikw0jxfrxb"
+ lib.optionalString ("${teensy_architecture}" == "linux32")
- "01mxj5xsr7gka652c9rp4szy5mkcka8mljk044v4agk3sxvx3v3i"
+ "1p74rb8g4v6kd09a0af1yra8xjzy3iyv5w5b6h6ljfhb022v3l57"
+ lib.optionalString ("${teensy_architecture}" == "linuxarm")
- "1dff3alhvk9x8qzy3n85qrg6rfmy6l9pj6fmrlzpli63lzykvv4i";
+ "0jd9dvr8zx9hlyn6j979d66qdvzgv3dmx5x9yviqvrn1f3w4hfbf";
+ };
+ # Used because teensyduino requires jars be a specific size
+ arduino_dist_src = fetchurl {
+ url = "http://downloads.arduino.cc/arduino-${version}-${teensy_architecture}.tar.xz";
+ sha256 =
+ lib.optionalString ("${teensy_architecture}" == "linux64")
+ "1f8s3by5lc6fazyaa9zc9kz3ar8zj8jabab1fy5jzh49fbd8bydx"
+ + lib.optionalString ("${teensy_architecture}" == "linux32")
+ "1r9ral9aq5vp02dwgagifk5h403l7knxdyi1w23rqpcbbpa423lw"
+ + lib.optionalString ("${teensy_architecture}" == "linuxarm")
+ "0sz18wns00kysmb2zv7a67dy9wpxiawq3ykfr07wjyg8h1fy3p6h";
};
+
buildInputs = [ jdk ant libusb libusb1 unzip zlib ncurses5 readline
- ] ++ stdenv.lib.optionals withTeensyduino [ upx xvfb_run xdotool ];
+ ] ++ stdenv.lib.optionals withTeensyduino [ upx ];
downloadSrcList = builtins.attrValues externalDownloads;
downloadDstList = builtins.attrNames externalDownloads;
@@ -116,8 +129,8 @@ stdenv.mkDerivation rec {
installPhase = ''
mkdir -p $out/share/arduino
- cp -r ./build/linux/work/* "$out/share/arduino/" #*/
- echo ${version} > $out/share/arduino/lib/version.txt
+ cp -r ./build/linux/work/* "$out/share/arduino/"
+ echo -n ${version} > $out/share/arduino/lib/version.txt
${stdenv.lib.optionalString withGui ''
mkdir -p $out/bin
@@ -135,6 +148,18 @@ stdenv.mkDerivation rec {
''}
${stdenv.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
+ # Extract jars from the arduino distributable package
+ mkdir arduino_dist
+ cd arduino_dist
+ tar xfJ ${arduino_dist_src} arduino-${version}/lib/arduino-core.jar arduino-${version}/lib/pde.jar
+ cd ..
+ # Replace the built jars with the official arduino jars
+ mv arduino_dist/arduino-${version}/lib/{arduino-core,pde}.jar $out/share/arduino/lib/
+ # Delete the directory now that the jars are copied out
+ rm -r arduino_dist
# Extract and patch the Teensyduino installer
cp ${teensyduino_src} ./TeensyduinoInstall.${teensy_architecture}
chmod +w ./TeensyduinoInstall.${teensy_architecture}
@@ -143,39 +168,12 @@ stdenv.mkDerivation rec {
--set-rpath "${teensy_libpath}" \
./TeensyduinoInstall.${teensy_architecture}
chmod +x ./TeensyduinoInstall.${teensy_architecture}
-
- # Run the GUI-only installer in a virtual X server
- # Script thanks to AUR package. See:
- # <https://aur.archlinux.org/packages/teensyduino/>
- echo "Running Teensyduino installer..."
- # Trick the GUI into using HOME as the install directory.
- export HOME=$out/share/arduino
- # Run the installer in a virtual X server in memory.
- xvfb-run -n 99 ./TeensyduinoInstall.${teensy_architecture} &
- sleep 4
- echo "Waiting for Teensyduino to install (about 1 minute)..."
- # Control the installer GUI with xdotool.
- DISPLAY=:99 xdotool search --class "teensyduino" \
- windowfocus \
- key space sleep 1 \
- key Tab sleep 0.4 \
- key Tab sleep 0.4 \
- key Tab sleep 0.4 \
- key Tab sleep 0.4 \
- key space sleep 1 \
- key Tab sleep 0.4 \
- key Tab sleep 0.4 \
- key Tab sleep 0.4 \
- key Tab sleep 0.4 \
- key space sleep 1 \
- key Tab sleep 0.4 \
- key space sleep 35 \
- key space sleep 2 &
- # Wait for xdotool to terminate and swallow the inevitable XIO error
- wait $! || true
-
+ ./TeensyduinoInstall.${teensy_architecture} --dir=$out/share/arduino
# Check for successful installation
[ -d $out/share/arduino/hardware/teensy ] || exit 1
+ # After the install, copy the built jars back
+ mv $out/share/arduino/lib/arduino-core.jar.bak $out/share/arduino/lib/arduino-core.jar
+ mv $out/share/arduino/lib/pde.jar.bak $out/share/arduino/lib/pde.jar
''}
'';