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