2fa8372163dc956f72d02b84404833b3b1e9e484
[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 last_build=/a/opt/kitty-build-info/last-build
31 cd /a/opt/kitty
32 rev=$(cat $last_build 2>/dev/null) ||:
33 head=$(sudo -u zu git rev-parse HEAD)
34 if ! $recompile && ! $bootstrap && [[ $rev == "$head" ]]; then
35 :
36 fi
37
38
39 # built it on one machine, the others it dies with the error illegal
40 # instruction. building is pretty quick, so just detect if our version
41 # works, and if not, rebuild and install.
42 # I had an idea to test the failure like so:
43 # timeout 5 kitty /bin/true, but that doesn't work over ssh
44 if ! $rebuild && ! /bin/true; then
45 rebuild=true
46 fi
47
48 err-cleanup() {
49 if mountpoint -q /usr/local/src/kitty; then
50 s umount /usr/local/src/kitty
51 fi
52 }
53
54 if $rebuild; then
55 s mkdir -p /usr/local/src/kitty
56 s mount -o bind /a/opt/kitty /usr/local/src/kitty
57
58 s install -o zu -g zu -d /usr/local/src/kitty
59 s chown -hR zu.zu /usr/local/src/kitty
60 cd /usr/local/src/kitty
61 # default plus go
62 p=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin
63 gp=/usr/local/src/kitty/go
64 m sudo -u zu bash -c 'PATH=$PATH:/usr/local/go/bin; export GOPATH=/usr/local/src/kitty/go; go mod download -x'
65 m sudo -u zu firejail --read-write=/usr/local/src/kitty --profile=makekitty env PATH=$p make clean
66 m sudo -u zu firejail --read-write=/usr/local/src/kitty --profile=makekitty env PATH=$p GOPATH=$gp make
67 cd /
68 s umount /usr/local/src/kitty
69 s chown -hR iank.iank /a/opt/kitty
70 fi
71
72 cd /a/opt/kitty
73 s rsync -ar --chown root:root --delete __main__.py kitty logo kittens /usr/local/src/kitty
74 s rsync -ar --chown root:root ./terminfo/x/xterm-kitty /usr/share/terminfo/x/xterm-kitty
75 s ln -sf -T /usr/local/src/kitty/kitty/launcher/kitty /usr/local/bin/kitty
76
77 echo $head >$last_build