tons of updates, should have checked in sooner
[buildscripts] / kitty
1 #!/bin/bash
2
3 source /a/bin/errhandle/err
4
5 if [[ -s ~/.bashrc ]]; then . ~/.bashrc; fi
6
7 rebuild=false
8 case $1 in
9 -r) rebuild=true ;;
10 esac
11
12 # https://sw.kovidgoyal.net/kitty/build/
13 deps=(
14 libdbus-1-dev
15 libxcursor-dev
16 libxrandr-dev
17 libxi-dev
18 libxinerama-dev
19 libgl1-mesa-dev
20 libxkbcommon-x11-dev
21 libfontconfig-dev
22 libx11-xcb-dev
23 liblcms2-dev
24 libpython3-dev
25 librsync-dev
26 )
27
28 pi ${deps[@]}
29
30 cd /a/opt/kitty
31 rev=$(cat $last_build 2>/dev/null) ||:
32 head=$(git rev-parse HEAD)
33 if ! $recompile && ! $bootstrap && [[ $rev == "$head" ]]; then
34 :
35 fi
36
37
38 # built it on one machine, the others it dies with the error illegal
39 # instruction. building is pretty quick, so just detect if our version
40 # works, and if not, rebuild and install.
41 # I had an idea to test the failure like so:
42 # timeout 5 kitty /bin/true, but that doesn't work over ssh
43 if ! $rebuild && ! /bin/true; then
44 rebuild=true
45 fi
46
47 if $rebuild; then
48 s mkdir -p /usr/local/src/kitty
49 s mount -o bind /a/opt/kitty /usr/local/src/kitty
50
51 s install -o zu -g zu -d /usr/local/src/kitty
52 s chown -hR zu.zu /usr/local/src/kitty
53 cd /usr/local/src/kitty
54 m sudo -u zu firejail --read-write=/usr/local/src/kitty --profile=makekitty make clean
55 m sudo -u zu firejail --read-write=/usr/local/src/kitty --profile=makekitty make
56 cd /
57 s umount /usr/local/src/kitty
58 s chown -hR iank.iank /a/opt/kitty
59 fi
60
61 cd /a/opt/kitty
62 s rsync -ar --chown root:root --delete __main__.py kitty logo kittens /usr/local/src/kitty
63 s rsync -ar --chown root:root ./terminfo/x/xterm-kitty /usr/share/terminfo/x/xterm-kitty
64 s ln -sf -T /usr/local/src/kitty/kitty/launcher/kitty /usr/local/bin/kitty