ioef/misc/setup/doit
Ludwig Nussel 62363cdf93 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.
2007-11-13 16:37:41 +00:00

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