aboutsummaryrefslogtreecommitdiff
path: root/scripts/bundle_linux.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/bundle_linux.sh')
-rwxr-xr-xscripts/bundle_linux.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/bundle_linux.sh b/scripts/bundle_linux.sh
new file mode 100755
index 000000000..baefafbaa
--- /dev/null
+++ b/scripts/bundle_linux.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# Create and change to the directory we'll do all the work in
+work_dir=$(dirname $0)/../build/appimage
+mkdir -p $work_dir
+cd $work_dir
+
+# First we'll build a filesystem that contains zenserver
+mkdir fs
+
+# Copy the main binary
+zs_bin=../linux/x86_64/release/zenserver
+mkdir fs/bin
+cp $zs_bin fs/bin/
+
+# Include the linked C++ library .so - this is required because some LTS distros
+# do not include GCC-11 at the time of writing and Zen's uses this for C++20.
+mkdir fs/usr
+cp $(ldd $zs_bin |sed -nr 's/^.+\s+=>\s+(.+)\s+\(0x0000.+$/\1/p'|grep 'c++') fs/usr/
+
+# Download AppImage's bootstrap binary and create .desktop configuratino for it
+unlink AppRun-x86_64 2>/dev/null
+wget "https://github.com/AppImage/AppImageKit/releases/download/13/AppRun-x86_64"
+mv AppRun-x86_64 fs/AppRun
+chmod a+x fs/AppRun
+echo Exec=zenserver>fs/zenserver.desktop
+
+# Create the filesystem and concatenate with AppImage's runtime.
+mksquashfs fs zenserver.fs -root-owned -noappend
+
+unlink runtime-x86_64 2>/dev/null
+wget "https://github.com/AppImage/AppImageKit/releases/download/13/runtime-x86_64"
+
+unlink zenserver 2>/dev/null
+cat runtime-x86_64 >> zenserver
+cat zenserver.fs >> zenserver
+chmod a+x zenserver \ No newline at end of file