1#!/bin/bash 2 3: ${MAKESELF:=/usr/share/loki-setup/makeself} 4: ${SETUPIMAGE:=/usr/share/loki-setup/image} 5 6: ${VERSION:=0.0_`date +%Y%m%d%H%M`} 7: ${RELEASE:=0} 8 9set -e 10set -x 11 12shopt -s nullglob 13 14rm -rf image 15mkdir image 16 17### loki-setup files 18cp -a $SETUPIMAGE/{setup.data,setup.sh} image/ 19 20### splash 21rm -f image/setup.data/splash.xpm 22[ -e splash.xpm ] && cp splash.xpm image/setup.data/splash.xpm 23rm -f image/quake3.png 24cp ../quake3.png image/quake3.png 25 26### binaries 27topdir="../.." 28 29echo "changequote(\`[', \`]')dnl" > defines.m4 30echo "define(VERSION,$VERSION)dnl" >> defines.m4 31 32copystartscript() 33{ 34 local arch="$1" 35 mkdir -p image/bin/Linux/$arch 36 if [ "$arch" = x86_64 ]; then 37 ln -s x86_64 image/bin/Linux/amd64 38 elif [ "$arch" = ppc ]; then 39 ln -s ppc image/bin/Linux/ppc64 40 fi 41 install -m 755 ioquake3.sh image/bin/Linux/$arch/ioquake3 42 install -m 755 ioq3demo.sh image/bin/Linux/$arch/ioq3demo 43} 44 45archs=() 46for arch in $topdir/build/release-*; do 47 arch=${arch##*-} 48 case "$arch" in 49 i386) echo "define(HAVE_I386,yes)dnl" >> defines.m4 50 copystartscript x86 51 ;; 52 x86_64) echo "define(HAVE_X86_64,yes)dnl" >> defines.m4 53 copystartscript $arch 54 ;; 55 ppc) echo "define(HAVE_PPC,yes)dnl" >> defines.m4 56 copystartscript $arch 57 ;; 58 ppc64) echo "define(HAVE_PPC64,yes)dnl" >> defines.m4 59 copystartscript $arch 60 ;; 61 *) 62 echo "architecture $arch unsupported" 63 continue; 64 ;; 65 esac 66 archs[${#archs[@]}]=$arch 67done 68 69for arch in "${archs[@]}"; do 70 dst=image/tmp 71 mkdir $dst 72 mkdir $dst/baseq3 $dst/demoq3 $dst/missionpack 73 install -m 755 $topdir/build/release-linux-$arch/ioquake3.$arch $dst/ioquake3.$arch 74 install -m 755 $topdir/build/release-linux-$arch/ioq3ded.$arch $dst/ioq3ded.$arch 75 install -m 644 $topdir/build/release-linux-$arch/baseq3/*.so $dst/baseq3 76 install -m 644 $topdir/build/release-linux-$arch/missionpack/*.so $dst/missionpack 77 for i in cgame qagame ui; do 78 ln -s ../baseq3/$i$arch.so $dst/demoq3 79 done 80 81 tar --owner=root --group=root -C $dst -cf ./image/ioquake3.$arch.tar . 82 rm -rf ./image/tmp 83done 84 85# patch pk3 files 86if [ -e ./idpatchpk3s.tar -a -e ./idtapatchpk3s.tar ]; then 87 install -m 644 ./idpatchpk3s.tar image/idpatchpk3s.tar 88 install -m 644 ./idtapatchpk3s.tar image/idtapatchpk3s.tar 89 install -m 644 ./id_patch_pk3s_Q3A_EULA.txt image/id_patch_pk3s_Q3A_EULA.txt 90 echo "define(HAVE_PATCHPK3,yes)dnl" >> defines.m4 91elif [ -e quake3-latest-pk3s.zip ]; then 92 unzip quake3-latest-pk3s.zip 93 chmod 644 quake3-latest-pk3s/*/*.pk3 94 tar -C quake3-latest-pk3s/baseq3 -cf image/idpatchpk3s.tar . 95 tar -C quake3-latest-pk3s/missionpack -cf image/idtapatchpk3s.tar . 96 rm -r quake3-latest-pk3s 97 install -m 644 id_patch_pk3s_Q3A_EULA.txt image/id_patch_pk3s_Q3A_EULA.txt 98 echo "define(HAVE_PATCHPK3,yes)dnl" >> defines.m4 99fi 100 101### uninstall script 102install -m 755 ./preuninstall.sh image/preuninstall.sh 103 104# desktop file handling 105install -m 755 ./install-desktop-files.sh image/install-desktop-files.sh 106install -m 755 /usr/bin/xdg-desktop-menu image/xdg-desktop-menu 107install -m 644 ioquake3.desktop image/ioquake3.desktop.in 108 109### README, COPYING and EULA 110install -m 644 $topdir/voip-readme.txt image/voip-readme.txt 111install -m 644 $topdir/README image/README 112install -m 644 $topdir/COPYING.txt image/COPYING 113 114# create setup.xml 115m4 defines.m4 setup.xml.in > image/setup.data/setup.xml 116 117### makeself installer 118ARCH= 119if [ "${#archs[@]}" -eq 1 ]; then 120 ARCH=.$arch 121fi 122$MAKESELF/makeself.sh image ioquake3-$VERSION-$RELEASE$ARCH.run "ioquake3 $VERSION-$RELEASE" ./setup.sh 123