From 62363cdf933bd5adaf36dee89f5c9ca09a48b2fd Mon Sep 17 00:00:00 2001 From: Ludwig Nussel Date: Tue, 13 Nov 2007 16:37:41 +0000 Subject: [PATCH] rework script to create loki installer the script now automatically picks up the architectures present in the build directory. Also builds installer without data files if no data files are present. Wrt loki metadata the installer now installs ioq3 as default component instead of the data files. After all baseq3 is just a mod (almost) like any other. --- misc/setup/doit | 141 +++++++++++++++++++------------------ misc/setup/preuninstall.sh | 1 - misc/setup/setup.xml | 104 --------------------------- misc/setup/setup.xml.in | 111 +++++++++++++++++++++++++++++ 4 files changed, 185 insertions(+), 172 deletions(-) delete mode 100644 misc/setup/setup.xml create mode 100644 misc/setup/setup.xml.in diff --git a/misc/setup/doit b/misc/setup/doit index b0480db1..834cff90 100755 --- a/misc/setup/doit +++ b/misc/setup/doit @@ -1,7 +1,7 @@ #!/bin/bash -: ${MAKESELF:=/usr/share/loki_setup/makeself} -: ${SETUPIMAGE:=/usr/share/loki_setup/image} +: ${MAKESELF:=/usr/share/loki-setup/makeself} +: ${SETUPIMAGE:=/usr/share/loki-setup/image} : ${VERSION:=0.0_`date +%Y%m%d%H%M`} : ${RELEASE:=0} @@ -9,7 +9,7 @@ set -e set -x -arch=`uname -m` +shopt -s nullglob rm -rf image mkdir image @@ -24,82 +24,89 @@ rm -f image/quake3.png cp ../quake3.png image/quake3.png ### binaries -src="../../../../../build" +topdir="../.." -mkdir image/tmp -pushd image/tmp -mkdir baseq3 demoq3 missionpack -# 32 bit binaries -install -m 755 $src/release-linux-i386/ioquake3.i386 ioquake3.i386 -install -m 755 $src/release-linux-i386/ioq3ded.i386 ioq3ded.i386 -install -m 644 $src/release-linux-i386/baseq3/*.so baseq3 -install -m 644 $src/release-linux-i386/missionpack/*.so missionpack -pushd demoq3 -ln -s ../baseq3/*.so . -popd -popd +echo "changequote(\`[', \`]')dnl" > defines.m4 +echo "define(VERSION,$VERSION)dnl" >> defines.m4 -tar --owner=root --group=root -C ./image/tmp -cf ./image/ioquake3.i386.tar . -rm -rf ./image/tmp +copystartscript() +{ + local arch="$1" + mkdir -p image/bin/Linux/$arch + if [ "$arch" = x86_64 ]; then + ln -s x86_64 image/bin/Linux/amd64 + fi + install -m 755 ioquake3.sh image/bin/Linux/$arch/ioquake3 + install -m 755 ioq3demo.sh image/bin/Linux/$arch/ioq3demo +} -mkdir image/tmp -pushd image/tmp -mkdir baseq3 demoq3 missionpack -# 64 bit binaries -install -m 755 $src/release-linux-x86_64/ioquake3.x86_64 ioquake3.x86_64 -install -m 755 $src/release-linux-x86_64/ioq3ded.x86_64 ioq3ded.x86_64 -install -m 644 $src/release-linux-x86_64/baseq3/*.so baseq3 -install -m 644 $src/release-linux-x86_64/missionpack/*.so missionpack -pushd demoq3 -ln -s ../baseq3/*.so . -popd -popd +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 + ;; + *) + echo "architecture $arch unsupported" + continue; + ;; + esac + archs[${#archs[@]}]=$arch +done -tar --owner=root --group=root -C ./image/tmp -cf ./image/ioquake3.x86_64.tar . -rm -rf image/tmp +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 -mkdir image/tmp -pushd image/tmp -mkdir baseq3 demoq3 missionpack -# ppc binaries -install -m 755 $src/release-linux-ppc/ioquake3.ppc ioquake3.ppc -install -m 755 $src/release-linux-ppc/ioq3ded.ppc ioq3ded.ppc -install -m 644 $src/release-linux-ppc/baseq3/*.so baseq3 -install -m 644 $src/release-linux-ppc/missionpack/*.so missionpack -pushd demoq3 -ln -s ../baseq3/*.so . -popd -popd - -tar --owner=root --group=root -C ./image/tmp -cf ./image/ioquake3.ppc.tar . -rm -rf image/tmp + tar --owner=root --group=root -C $dst -cf ./image/ioquake3.$arch.tar . + rm -rf ./image/tmp +done # patch pk3 files -install -m 644 ./idpatchpk3s.tar image/idpatchpk3s.tar -install -m 644 ./idtapatchpk3s.tar image/idtapatchpk3s.tar - -### setup.xml -sed 's/@VERSION@/'$VERSION'/g' < setup.xml > image/setup.data/setup.xml +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 -### start script -mkdir -p image/bin/Linux/x86 -mkdir -p image/bin/Linux/x86_64 -mkdir -p image/bin/Linux/ppc - -install -m 755 ioquake3.sh image/bin/Linux/x86/ioquake3 -install -m 755 ioq3demo.sh image/bin/Linux/x86/ioq3demo -install -m 755 ioquake3.sh image/bin/Linux/x86_64/ioquake3 -install -m 755 ioq3demo.sh image/bin/Linux/x86_64/ioq3demo -install -m 755 ioquake3.sh image/bin/Linux/ppc/ioquake3 -install -m 755 ioq3demo.sh image/bin/Linux/ppc/ioq3demo ### README, COPYING and EULA -install -m 644 ../../../README image/README -install -m 644 ../../../COPYING.txt image/COPYING -install -m 644 ./id_patch_pk3s_Q3A_EULA.txt image/id_patch_pk3s_Q3A_EULA.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 -$MAKESELF/makeself.sh image ioquake3-$VERSION-$RELEASE.run "ioquake3 $VERSION-$RELEASE" ./setup.sh +ARCH= +if [ "${#archs[@]}" -eq 1 ]; then + ARCH=.$arch +fi +$MAKESELF/makeself.sh image ioquake3-$VERSION-$RELEASE$ARCH.run "ioquake3 $VERSION-$RELEASE" ./setup.sh diff --git a/misc/setup/preuninstall.sh b/misc/setup/preuninstall.sh index ff23010b..49e80564 100644 --- a/misc/setup/preuninstall.sh +++ b/misc/setup/preuninstall.sh @@ -1,3 +1,2 @@ #!/bin/sh -rm -f COPYING rmdir --ignore-fail-on-non-empty demoq3 missionpack >& /dev/null diff --git a/misc/setup/setup.xml b/misc/setup/setup.xml deleted file mode 100644 index 1450145e..00000000 --- a/misc/setup/setup.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - README - - - id_patch_pk3s_Q3A_EULA.txt - - - - - - - - - - - - - - - - - - - - - - - - - Setup/BaseEF/pak0.pk3 - - - Setup/missionpack/pak0.pk3 - - - diff --git a/misc/setup/setup.xml.in b/misc/setup/setup.xml.in new file mode 100644 index 00000000..65dd1b9d --- /dev/null +++ b/misc/setup/setup.xml.in @@ -0,0 +1,111 @@ + + + + README + + + +ifelse(HAVE_X86_64,yes,dnl + +)dnl +ifelse(HAVE_I386,yes,dnl + +)dnl +ifelse(HAVE_PPC,yes,dnl + +)dnl + + +ifelse(HAVE_PATCHPK3,yes,dnl + + + + id_patch_pk3s_Q3A_EULA.txt + + + + + + + + + + id_patch_pk3s_Q3A_EULA.txt + + + + + + + + Quake3/baseq3/pak0.pk3 + + + Setup/missionpack/pak0.pk3 + +)dnl + +