aboutsummaryrefslogtreecommitdiff
path: root/misc/setup/doit
diff options
context:
space:
mode:
Diffstat (limited to 'misc/setup/doit')
-rwxr-xr-xmisc/setup/doit122
1 files changed, 122 insertions, 0 deletions
diff --git a/misc/setup/doit b/misc/setup/doit
new file mode 100755
index 0000000..033d88c
--- /dev/null
+++ b/misc/setup/doit
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+: ${MAKESELF:=/usr/share/loki-setup/makeself}
+: ${SETUPIMAGE:=/usr/share/loki-setup/image}
+
+: ${VERSION:=0.0_`date +%Y%m%d%H%M`}
+: ${RELEASE:=0}
+
+set -e
+set -x
+
+shopt -s nullglob
+
+rm -rf image
+mkdir image
+
+### loki-setup files
+cp -a $SETUPIMAGE/{setup.data,setup.sh} image/
+
+### splash
+rm -f image/setup.data/splash.xpm
+[ -e splash.xpm ] && cp splash.xpm image/setup.data/splash.xpm
+rm -f image/quake3.png
+cp ../quake3.png image/quake3.png
+
+### binaries
+topdir="../.."
+
+echo "changequote(\`[', \`]')dnl" > defines.m4
+echo "define(VERSION,$VERSION)dnl" >> defines.m4
+
+copystartscript()
+{
+ local arch="$1"
+ mkdir -p image/bin/Linux/$arch
+ if [ "$arch" = x86_64 ]; then
+ ln -s x86_64 image/bin/Linux/amd64
+ elif [ "$arch" = ppc ]; then
+ ln -s ppc image/bin/Linux/ppc64
+ fi
+ install -m 755 ioquake3.sh image/bin/Linux/$arch/ioquake3
+ install -m 755 ioq3demo.sh image/bin/Linux/$arch/ioq3demo
+}
+
+archs=()
+for arch in $topdir/build/release-*; do
+ arch=${arch##*-}
+ case "$arch" in
+ i386) echo "define(HAVE_I386,yes)dnl" >> defines.m4
+ copystartscript x86
+ ;;
+ x86_64) echo "define(HAVE_X86_64,yes)dnl" >> defines.m4
+ copystartscript $arch
+ ;;
+ ppc) echo "define(HAVE_PPC,yes)dnl" >> defines.m4
+ copystartscript $arch
+ ;;
+ ppc64) echo "define(HAVE_PPC64,yes)dnl" >> defines.m4
+ copystartscript $arch
+ ;;
+ *)
+ echo "architecture $arch unsupported"
+ continue;
+ ;;
+ esac
+ archs[${#archs[@]}]=$arch
+done
+
+for arch in "${archs[@]}"; do
+ dst=image/tmp
+ mkdir $dst
+ mkdir $dst/baseq3 $dst/demoq3 $dst/missionpack
+ install -m 755 $topdir/build/release-linux-$arch/ioquake3.$arch $dst/ioquake3.$arch
+ install -m 755 $topdir/build/release-linux-$arch/ioq3ded.$arch $dst/ioq3ded.$arch
+ install -m 644 $topdir/build/release-linux-$arch/baseq3/*.so $dst/baseq3
+ install -m 644 $topdir/build/release-linux-$arch/missionpack/*.so $dst/missionpack
+ for i in cgame qagame ui; do
+ ln -s ../baseq3/$i$arch.so $dst/demoq3
+ done
+
+ tar --owner=root --group=root -C $dst -cf ./image/ioquake3.$arch.tar .
+ rm -rf ./image/tmp
+done
+
+# patch pk3 files
+if [ -e ./idpatchpk3s.tar -a -e ./idtapatchpk3s.tar ]; then
+ install -m 644 ./idpatchpk3s.tar image/idpatchpk3s.tar
+ install -m 644 ./idtapatchpk3s.tar image/idtapatchpk3s.tar
+ install -m 644 ./id_patch_pk3s_Q3A_EULA.txt image/id_patch_pk3s_Q3A_EULA.txt
+ echo "define(HAVE_PATCHPK3,yes)dnl" >> defines.m4
+elif [ -e quake3-latest-pk3s.zip ]; then
+ unzip quake3-latest-pk3s.zip
+ chmod 644 quake3-latest-pk3s/*/*.pk3
+ tar -C quake3-latest-pk3s/baseq3 -cf image/idpatchpk3s.tar .
+ tar -C quake3-latest-pk3s/missionpack -cf image/idtapatchpk3s.tar .
+ rm -r quake3-latest-pk3s
+ install -m 644 id_patch_pk3s_Q3A_EULA.txt image/id_patch_pk3s_Q3A_EULA.txt
+ echo "define(HAVE_PATCHPK3,yes)dnl" >> defines.m4
+fi
+
+### uninstall script
+install -m 755 ./preuninstall.sh image/preuninstall.sh
+
+# desktop file handling
+install -m 755 ./install-desktop-files.sh image/install-desktop-files.sh
+install -m 755 /usr/bin/xdg-desktop-menu image/xdg-desktop-menu
+install -m 644 ioquake3.desktop image/ioquake3.desktop.in
+
+### README, COPYING and EULA
+install -m 644 $topdir/voip-readme.txt image/voip-readme.txt
+install -m 644 $topdir/README image/README
+install -m 644 $topdir/COPYING.txt image/COPYING
+
+# create setup.xml
+m4 defines.m4 setup.xml.in > image/setup.data/setup.xml
+
+### makeself installer
+ARCH=
+if [ "${#archs[@]}" -eq 1 ]; then
+ ARCH=.$arch
+fi
+$MAKESELF/makeself.sh image ioquake3-$VERSION-$RELEASE$ARCH.run "ioquake3 $VERSION-$RELEASE" ./setup.sh