mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 15:21:35 +00:00
62363cdf93
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.
112 lines
3 KiB
Bash
Executable file
112 lines
3 KiB
Bash
Executable file
#!/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
|
|
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
|
|
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
|
|
|
|
|
|
### README, COPYING and EULA
|
|
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
|