mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-07 20:53:22 +00:00
Merge pull request #56936 from witchof0x20/upgrade_teensyduino
teensyduino: 1.40 -> 1.45
This commit is contained in:
commit
3aa7d41944
@ -2,8 +2,8 @@
|
|||||||
, libusb, libusb1, unzip, zlib, ncurses, readline
|
, libusb, libusb1, unzip, zlib, ncurses, readline
|
||||||
, withGui ? false, gtk2 ? null, withTeensyduino ? false
|
, withGui ? false, gtk2 ? null, withTeensyduino ? false
|
||||||
/* Packages needed for Teensyduino */
|
/* Packages needed for Teensyduino */
|
||||||
, upx, fontconfig, xorg, gcc, xdotool, xvfb_run
|
, upx, fontconfig, xorg, gcc
|
||||||
, atk, glib, pango, gdk_pixbuf, libpng12, expat, freetype
|
, atk, glib, pango, gdk_pixbuf, libpng12, expat, freetype,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert withGui -> gtk2 != null;
|
assert withGui -> gtk2 != null;
|
||||||
@ -68,19 +68,32 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "0ww72qfk7fyvprz15lc80i1axfdacb5fij4h5j5pakrg76mng2c3";
|
sha256 = "0ww72qfk7fyvprz15lc80i1axfdacb5fij4h5j5pakrg76mng2c3";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
teensyduino_version = "145";
|
||||||
teensyduino_src = fetchurl {
|
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 =
|
sha256 =
|
||||||
lib.optionalString ("${teensy_architecture}" == "linux64")
|
lib.optionalString ("${teensy_architecture}" == "linux64")
|
||||||
"0127a1ak31252dbmr5niqa5mkvbm8dnz1cfcnmydzx9qn9rk00ir"
|
"0n8812znwdyvy7d1321p4r6j5pixg1sr31z5pfr7i0ikw0jxfrxb"
|
||||||
+ lib.optionalString ("${teensy_architecture}" == "linux32")
|
+ lib.optionalString ("${teensy_architecture}" == "linux32")
|
||||||
"01mxj5xsr7gka652c9rp4szy5mkcka8mljk044v4agk3sxvx3v3i"
|
"1p74rb8g4v6kd09a0af1yra8xjzy3iyv5w5b6h6ljfhb022v3l57"
|
||||||
+ lib.optionalString ("${teensy_architecture}" == "linuxarm")
|
+ 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
|
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;
|
downloadSrcList = builtins.attrValues externalDownloads;
|
||||||
downloadDstList = builtins.attrNames externalDownloads;
|
downloadDstList = builtins.attrNames externalDownloads;
|
||||||
|
|
||||||
@ -116,8 +129,8 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/share/arduino
|
mkdir -p $out/share/arduino
|
||||||
cp -r ./build/linux/work/* "$out/share/arduino/" #*/
|
cp -r ./build/linux/work/* "$out/share/arduino/"
|
||||||
echo ${version} > $out/share/arduino/lib/version.txt
|
echo -n ${version} > $out/share/arduino/lib/version.txt
|
||||||
|
|
||||||
${stdenv.lib.optionalString withGui ''
|
${stdenv.lib.optionalString withGui ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
@ -135,6 +148,18 @@ stdenv.mkDerivation rec {
|
|||||||
''}
|
''}
|
||||||
|
|
||||||
${stdenv.lib.optionalString withTeensyduino ''
|
${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
|
# Extract and patch the Teensyduino installer
|
||||||
cp ${teensyduino_src} ./TeensyduinoInstall.${teensy_architecture}
|
cp ${teensyduino_src} ./TeensyduinoInstall.${teensy_architecture}
|
||||||
chmod +w ./TeensyduinoInstall.${teensy_architecture}
|
chmod +w ./TeensyduinoInstall.${teensy_architecture}
|
||||||
@ -143,39 +168,12 @@ stdenv.mkDerivation rec {
|
|||||||
--set-rpath "${teensy_libpath}" \
|
--set-rpath "${teensy_libpath}" \
|
||||||
./TeensyduinoInstall.${teensy_architecture}
|
./TeensyduinoInstall.${teensy_architecture}
|
||||||
chmod +x ./TeensyduinoInstall.${teensy_architecture}
|
chmod +x ./TeensyduinoInstall.${teensy_architecture}
|
||||||
|
./TeensyduinoInstall.${teensy_architecture} --dir=$out/share/arduino
|
||||||
# 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
|
|
||||||
|
|
||||||
# Check for successful installation
|
# Check for successful installation
|
||||||
[ -d $out/share/arduino/hardware/teensy ] || exit 1
|
[ -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
|
||||||
''}
|
''}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user