aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmisc/setup/doit151
-rw-r--r--misc/setup/preuninstall.sh1
-rw-r--r--misc/setup/setup.xml104
-rw-r--r--misc/setup/setup.xml.in111
4 files changed, 190 insertions, 177 deletions
diff --git a/misc/setup/doit b/misc/setup/doit
index b0480db..834cff9 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"
-
-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
-
-tar --owner=root --group=root -C ./image/tmp -cf ./image/ioquake3.i386.tar .
-rm -rf ./image/tmp
-
-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
-
-tar --owner=root --group=root -C ./image/tmp -cf ./image/ioquake3.x86_64.tar .
-rm -rf image/tmp
-
-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
+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
+ 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
+ ;;
+ *)
+ 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
-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 ff23010..49e8056 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 1450145..0000000
--- a/misc/setup/setup.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<install product="ioquake3"
- desc="ioquake3"
- version="@VERSION@"
- update_url="http://www.ioquake3.org/updates.txt"
- promptbinaries="yes"
- reinstall="yes"
- nopromptoverwrite="yes"
- preuninstall="preuninstall.sh">
- <readme>
- README
- </readme>
- <eula>
- id_patch_pk3s_Q3A_EULA.txt
- </eula>
-
- <component name="Quake3 Arena gamedata" version="@VERSION@" default="yes">
- <option size="457M">
- <help>
- If you don't select this, you must make sure to copy pak0.pk3 to the baseq3 directory manually.
- </help>
- Copy Quake3 Arena CD data
- <files cdromid="CD 1" path="baseq3" size="457M">
- Quake3/baseq3/pak0.pk3
- </files>
- </option>
- <option required="true" install="true" show="false">
- This needs to be fixed properly.
- <files path="baseq3">
- idpatchpk3s.tar
- </files>
- <files path="">
- COPYING
- </files>
- </option>
- </component>
-
- <component name="Quake3 Team Arena gamedata" version="@VERSION@">
- <option>
- Install Team Arena components
- <files path="missionpack">
- idtapatchpk3s.tar
- </files>
- <option size="457M">
- <help>
- If you don't select this, you must make sure to copy the TA pak0.pk3 to the missionpack directory manually.
- </help>
- Copy Quake3 Team Arena CD data
- <files cdromid="CD 2" path="missionpack" size="457M">
- Setup/missionpack/pak0.pk3
- </files>
- </option>
- </option>
- </component>
- <component arch="x86_64" name="x86_64" version="@VERSION@">
- <option install="true">
- x86_64 binaries
- <binary libc="any" symlink="ioquake3" icon="quake3.png"
- menu="." name="ioquake3">
- ioquake3
- </binary>
- <files>
- ioquake3.x86_64.tar
- quake3.png
- </files>
- </option>
- </component>
-
- <component if="|(x86,x86_64)" name="i386" version="@VERSION@">
- <option install="true">
- x86 (32 bit) binaries
- <binary libc="any" symlink="ioquake3" icon="quake3.png"
- menu="." name="ioquake3">
- ioquake3
- </binary>
- <files>
- ioquake3.i386.tar
- quake3.png
- </files>
- </option>
- </component>
-
- <component arch="ppc" name="ppc" version="@VERSION@">
- <option install="true">
- ppc 32 bit binaries
- <binary libc="any" symlink="ioquake3" icon="quake3.png"
- menu="." name="ioquake3">
- ioquake3
- </binary>
- <files>
- ioquake3.ppc.tar
- quake3.png
- </files>
- </option>
- </component>
-
- <cdrom id="CD 1" name="Quake 3 Arena installation CD">
- Setup/BaseEF/pak0.pk3
- </cdrom>
- <cdrom id="CD 2" name="Quake 3 Team Arena installation CD">
- Setup/missionpack/pak0.pk3
- </cdrom>
-
-</install>
diff --git a/misc/setup/setup.xml.in b/misc/setup/setup.xml.in
new file mode 100644
index 0000000..65dd1b9
--- /dev/null
+++ b/misc/setup/setup.xml.in
@@ -0,0 +1,111 @@
+<?xml version="1.0" standalone="yes"?>
+<install product="ioquake3"
+ desc="ioquake3"
+ version="VERSION"
+ update_url="http://www.ioquake3.org/updates.txt"
+ promptbinaries="yes"
+ reinstall="yes"
+ nopromptoverwrite="yes"
+ preuninstall="preuninstall.sh">
+ <readme>
+ README
+ </readme>
+
+ <component name="Default" version="VERSION" default="yes">
+ifelse(HAVE_X86_64,yes,dnl
+ <option install="true" arch="x86_64">
+ ioq3 x86_64 binaries
+ <binary libc="any" symlink="ioquake3" icon="quake3.png" name="ioquake3">ioquake3</binary>
+ <files>
+ ioquake3.x86_64.tar
+ </files>
+ <help>you need the binaries to play the game</help>
+ </option>
+)dnl
+ifelse(HAVE_I386,yes,dnl
+ <option install="true" if="|(x86,x86_64)">
+ ioq3 x86 (32 bit) binaries
+ <binary libc="any" symlink="ioquake3" icon="quake3.png" name="ioquake3">ioquake3</binary>
+ <files>
+ ioquake3.i386.tar
+ </files>
+ <help>you need the binaries to play the game</help>
+ </option>
+)dnl
+ifelse(HAVE_PPC,yes,dnl
+ <option install="true">
+ <binary libc="any" symlink="ioquake3" icon="quake3.png" name="ioquake3">ioquake3</binary>
+ ioq3 ppc binaries
+ <files>
+ ioquake3.ppc.tar
+ </files>
+ <help>you need the binaries to play the game</help>
+ </option>
+)dnl
+ <option install="true" show="false">
+ shared data
+ <files>
+ quake3.png
+ COPYING
+ </files>
+ </option>
+ </component>
+ifelse(HAVE_PATCHPK3,yes,dnl
+
+ <component name="Quake III Arena" version="VERSION">
+ <eula>
+ id_patch_pk3s_Q3A_EULA.txt
+ </eula>
+
+ <option install="true">
+ Quake III Arena Point Release 1.32 data files
+ <files path="baseq3">
+ idpatchpk3s.tar
+ </files>
+ </option>
+
+ <option>
+ <help>
+ If you don't select this you need to copy pak0.pk3 to the baseq3 directory manually.
+ </help>
+ Quake III Arena CDROM data
+ <files cdromid="CD 1" path="baseq3"
+ md5sum="1197ca3df1e65f3c380f8abc10ca43bf"
+ size="458M" mode="0664">
+ Quake3/baseq3/pak0.pk3
+ </files>
+ </option>
+ </component>
+
+ <component name="Quake III Team Arena" version="VERSION">
+ <eula>
+ id_patch_pk3s_Q3A_EULA.txt
+ </eula>
+
+ <option install="true">
+ Quake III Team Arena Point Release 1.32 data files
+ <files path="missionpack">
+ idtapatchpk3s.tar
+ </files>
+ </option>
+ <option>
+ <help>
+ If you don't select this you need to copy the TA pak0.pk3 to the missionpack directory manually.
+ </help>
+ Quake III Team Arena CDROM data
+ <files cdromid="CD 2" path="missionpack" size="336M"
+ md5sum="e8ba9e3bf06210930bc0e7fdbcdd01c2" mode="0644">
+ Setup/missionpack/pak0.pk3
+ </files>
+ </option>
+ </component>
+
+ <cdrom id="CD 1" name="Quake 3 Arena installation CD">
+ Quake3/baseq3/pak0.pk3
+ </cdrom>
+ <cdrom id="CD 2" name="Quake 3 Team Arena installation CD">
+ Setup/missionpack/pak0.pk3
+ </cdrom>
+)dnl
+
+</install>