tons of updates, should have checked in sooner
[buildscripts] / kitty
diff --git a/kitty b/kitty
new file mode 100755 (executable)
index 0000000..ab611e6
--- /dev/null
+++ b/kitty
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+source /a/bin/errhandle/err
+
+if [[ -s ~/.bashrc ]]; then . ~/.bashrc; fi
+
+rebuild=false
+case $1 in
+  -r) rebuild=true ;;
+esac
+
+# https://sw.kovidgoyal.net/kitty/build/
+deps=(
+  libdbus-1-dev
+  libxcursor-dev
+  libxrandr-dev
+  libxi-dev
+  libxinerama-dev
+  libgl1-mesa-dev
+  libxkbcommon-x11-dev
+  libfontconfig-dev
+  libx11-xcb-dev
+  liblcms2-dev
+  libpython3-dev
+  librsync-dev
+)
+
+pi ${deps[@]}
+
+cd /a/opt/kitty
+rev=$(cat $last_build 2>/dev/null) ||:
+head=$(git rev-parse HEAD)
+if ! $recompile && ! $bootstrap && [[ $rev == "$head" ]]; then
+  :
+fi
+
+
+# built it on one machine, the others it dies with the error illegal
+# instruction. building is pretty quick, so just detect if our version
+# works, and if not, rebuild and install.
+# I had an idea to test the failure like so:
+# timeout 5 kitty /bin/true, but that doesn't work over ssh
+if ! $rebuild && ! /bin/true; then
+  rebuild=true
+fi
+
+if $rebuild; then
+  s mkdir -p /usr/local/src/kitty
+  s mount -o bind /a/opt/kitty /usr/local/src/kitty
+
+  s install -o zu -g zu -d /usr/local/src/kitty
+  s chown -hR zu.zu /usr/local/src/kitty
+  cd /usr/local/src/kitty
+  m sudo -u zu firejail --read-write=/usr/local/src/kitty --profile=makekitty make clean
+  m sudo -u zu firejail --read-write=/usr/local/src/kitty --profile=makekitty make
+  cd /
+  s umount /usr/local/src/kitty
+  s chown -hR iank.iank /a/opt/kitty
+fi
+
+cd /a/opt/kitty
+s rsync -ar --chown root:root --delete  __main__.py kitty logo kittens /usr/local/src/kitty
+s rsync -ar --chown root:root ./terminfo/x/xterm-kitty /usr/share/terminfo/x/xterm-kitty
+s ln -sf -T /usr/local/src/kitty/kitty/launcher/kitty /usr/local/bin/kitty