summaryrefslogtreecommitdiff
path: root/build/unix_installer
diff options
context:
space:
mode:
Diffstat (limited to 'build/unix_installer')
-rw-r--r--build/unix_installer/README3
-rw-r--r--build/unix_installer/USAGE14
-rwxr-xr-xbuild/unix_installer/buildinstaller.sh107
-rwxr-xr-xbuild/unix_installer/copy_mac_frameworks.pl128
-rw-r--r--build/unix_installer/install.sh.in277
-rw-r--r--build/unix_installer/installer.config139
-rw-r--r--build/unix_installer/template40
7 files changed, 708 insertions, 0 deletions
diff --git a/build/unix_installer/README b/build/unix_installer/README
new file mode 100644
index 0000000..23122d3
--- /dev/null
+++ b/build/unix_installer/README
@@ -0,0 +1,3 @@
+This directory contains files pertaining to generating self-extracting
+installer files for unix-like platforms.
+
diff --git a/build/unix_installer/USAGE b/build/unix_installer/USAGE
new file mode 100644
index 0000000..c73ca8c
--- /dev/null
+++ b/build/unix_installer/USAGE
@@ -0,0 +1,14 @@
+Making a release binary:
+
+- Build the game in release mode.
+
+- Change build/unix_installer/template to suit your needs.
+
+- From the 'sc2' dir of the svn tree, run the following command, changing
+ the arguments if necessary.
+ The first one is the name of the final executable, the second
+ the template to use.
+
+ build/unix_installer/buildinstaller.sh uqm-0.2-linux-dynamic.sh \
+ "build/unix_installer/template"
+
diff --git a/build/unix_installer/buildinstaller.sh b/build/unix_installer/buildinstaller.sh
new file mode 100755
index 0000000..1a14aac
--- /dev/null
+++ b/build/unix_installer/buildinstaller.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+# Script for creating self-extracting installer files for unix-like systems.
+# By Serge van den Boom, 2003-02-20
+
+TEMPDIR="/tmp/buildinstaller_$$"
+
+if [ $# -ne 2 ]; then
+ cat >&2 << EOF
+Usage: buildinstaller.sh <installername> <template>
+where 'installername' is the name you want to give the final installer
+and 'template' is the template file describing the installer.
+EOF
+ exit 1
+fi
+DESTFILE="$1"
+TEMPLATE="$2"
+
+if [ ! -d src -o ! -d build ]; then
+cat >&2 << EOF
+Error: The current directory should be the top of the cvs tree.
+ Please try again from that dir
+EOF
+ exit 1
+fi
+
+if [ ! -f uqm ]; then
+ cat >&2 << EOF
+Error: There should be an 'uqm' binary in the top of the cvs tree.
+ please recompile and try again.
+EOF
+ exit 1
+fi
+
+mkdir "$TEMPDIR" 2> /dev/null
+
+if [ "$?" -ne 0 ]; then
+ echo "Could not create temporary dir." >&2
+ exit 1
+fi
+
+. "$TEMPLATE"
+
+while read FILE DEST; do
+ DESTDIR="${TEMPDIR}/attach/${DEST%/*}"
+ if [ ! -d "$DESTDIR" ]; then
+ mkdir -p -- "$DESTDIR" || exit 1
+ fi
+ cp -- "$FILE" "${TEMPDIR}/attach/$DEST" || exit 1
+done << EOF
+$UQM_ATTACH_FILES
+EOF
+
+chmod -R go+rX "${TEMPDIR}/attach"
+
+echo "Making tar.gz file for everything except from the content."
+echo "Using maximum compression; this may take a moment."
+tar -c -C "${TEMPDIR}/attach/" -f - . | gzip -9 > "${TEMPDIR}/attach.tar.gz"
+
+{
+ cat << EOF
+UQM_VERSION="$UQM_VERSION"
+UQM_PACKAGES="$UQM_PACKAGES"
+EOF
+ for PACKAGE in $UQM_PACKAGES; do
+ eval PACKAGE_NAME="\$UQM_PACKAGE_${PACKAGE}_NAME"
+ eval PACKAGE_TITLE="\$UQM_PACKAGE_${PACKAGE}_TITLE"
+ eval PACKAGE_LOCATION="\$UQM_PACKAGE_${PACKAGE}_LOCATION"
+ eval PACKAGE_OPTIONAL="\$UQM_PACKAGE_${PACKAGE}_OPTIONAL"
+ eval PACKAGE_DEFAULT="\$UQM_PACKAGE_${PACKAGE}_DEFAULT"
+ cat << EOF
+UQM_PACKAGE_${PACKAGE}_NAME="$PACKAGE_NAME"
+UQM_PACKAGE_${PACKAGE}_TITLE="$PACKAGE_TITLE"
+UQM_PACKAGE_${PACKAGE}_LOCATION="$PACKAGE_LOCATION"
+UQM_PACKAGE_${PACKAGE}_OPTIONAL="$PACKAGE_OPTIONAL"
+UQM_PACKAGE_${PACKAGE}_DEFAULT="$PACKAGE_DEFAULT"
+EOF
+ done
+} > "${TEMPDIR}/packages"
+
+# A slow way, but a reliable way.
+ATTACHLEN=`wc -c < "${TEMPDIR}/attach.tar.gz"`
+
+LICENSE_TEXT="$(cat $UQM_LICENSE_FILE)"
+
+# Now we've got all the parts, we can make the final .sh file.
+echo "Making final executable."
+{
+ for SCRIPT in ${TEMPDIR}/packages $UQM_SCRIPT_FILES; do
+ echo "# --- Start ${SCRIPT##*/} ---"
+ # Very ugly, but I can't get sed to replace a pattern by the contents
+ # of a file.
+ FILEDATA="$(cat $SCRIPT)"
+ sed -e "s/@ATTACHLEN@/$ATTACHLEN/" \
+ -e "s/@CONTENT_FILES@/$CONTENT_FILES/" << EOF
+${FILEDATA/@LICENCE@/$LICENSE_TEXT}
+EOF
+ echo "# --- End ${SCRIPT##*/} ---"
+ done
+ cat "${TEMPDIR}/attach.tar.gz"
+} > "$DESTFILE"
+
+chmod 755 "$DESTFILE"
+
+rm -r -- "$TEMPDIR"
+
+echo "Done."
+
diff --git a/build/unix_installer/copy_mac_frameworks.pl b/build/unix_installer/copy_mac_frameworks.pl
new file mode 100755
index 0000000..8ced8f0
--- /dev/null
+++ b/build/unix_installer/copy_mac_frameworks.pl
@@ -0,0 +1,128 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use File::Basename;
+use Cwd 'abs_path';
+
+my @frameworks = ( 'Ogg', 'Vorbis', 'libpng', 'SDL2' );
+my $target = 'The Ur-Quan Masters';
+
+create_app_bundle_skeleton($target);
+copy_with_version("src/res/darwin/Info.plist", "$target.app/Contents/Info.plist");
+copy_file("src/res/darwin/PkgInfo", "$target.app/Contents");
+copy_file("src/res/darwin/The Ur-Quan Masters.icns", "$target.app/Contents/Resources");
+copy_file("content/version", "$target.app/Contents/Resources/content");
+opendir my $packagedir, "dist-packages/" or die "Could not open dist-packages directory";
+while (readdir $packagedir) {
+ if (/\.uqm$/) {
+ copy_file("dist-packages/$_", "$target.app/Contents/Resources/content/packages");
+ }
+}
+copy_file("uqm", "$target.app/Contents/MacOS/$target");
+copy_frameworks($target, @frameworks);
+relink_frameworks($target, @frameworks);
+
+
+sub create_app_bundle_skeleton {
+ my $target = shift;
+ mkdir("$target.app", 0755);
+ mkdir("$target.app/Contents", 0755);
+ mkdir("$target.app/Contents/Frameworks", 0755);
+ mkdir("$target.app/Contents/MacOS", 0755);
+ mkdir("$target.app/Contents/Resources", 0755);
+ mkdir("$target.app/Contents/Resources/content", 0755);
+ mkdir("$target.app/Contents/Resources/content/addons", 0755);
+ mkdir("$target.app/Contents/Resources/content/packages", 0755);
+}
+
+
+sub copy_frameworks {
+ my $target = shift;
+ foreach my $fw (@_) {
+ my $src = "/Library/Frameworks/$fw.framework";
+ my $dest = "$target.app/Contents/Frameworks/$fw.framework";
+ system("ditto \"$src\" \"$dest\"");
+ }
+}
+
+sub resolve_symlinks {
+ my $file = shift;
+ my $origFile = $file;
+ my $startWd = `pwd`;
+ chomp($startWd);
+
+ while (-l $file) {
+ my $nextPath = readlink($file);
+ my $origDir = dirname($file);
+ chdir($origDir);
+ $file = abs_path($nextPath);
+ }
+ chdir($startWd);
+ return $file;
+}
+
+sub relink_frameworks {
+ my $target = shift;
+ my @frameworks = @_;
+ my $execfile = "$target.app/Contents/MacOS/$target";
+
+ foreach my $fw (@frameworks) {
+ my $src = resolve_symlinks("$target.app/Contents/Frameworks/$fw.framework/$fw");
+ my $oldfwid = `otool -L '$src' | head -n 2 | tail -n 1`;
+ $oldfwid =~ s/^\s+//;
+ $oldfwid =~ s/\s.*$//g;
+ my $newfwid = $oldfwid;
+ $newfwid =~ s/^.*\/$fw.framework/\@executable_path\/..\/Frameworks\/$fw.framework/;
+
+ system("install_name_tool -id $newfwid \"$src\"");
+ foreach my $fw2 (@frameworks) {
+ next if $fw eq $fw2;
+ my $src2 = resolve_symlinks("$target.app/Contents/Frameworks/$fw2.framework/$fw2");
+ system("install_name_tool -change $oldfwid $newfwid \"$src2\"");
+ }
+ system("install_name_tool -change $oldfwid $newfwid \"$execfile\"");
+ }
+}
+
+
+sub get_uqm_version {
+ open(my $versionheader, "<", "src/uqmversion.h") or die "Could not find version file";
+ my $major_version = 0;
+ my $minor_version = 0;
+ my $patch_version = 0;
+ while (<$versionheader>) {
+ if (/^\s*#define\s+UQM_MAJOR_VERSION\s+(\d+)/) {
+ $major_version = $1;
+ }
+ if (/^\s*#define\s+UQM_MINOR_VERSION\s+(\d+)/) {
+ $minor_version = $1;
+ }
+ if (/^\s*#define\s+UQM_PATCH_VERSION\s+(\d+)/) {
+ $patch_version = $1;
+ }
+ }
+ close($versionheader) or warn "Could not close version file";
+ return "${major_version}.${minor_version}.${patch_version}";
+}
+
+
+sub copy_file {
+ my $src = shift;
+ my $dest = shift;
+ system("cp \"$src\" \"$dest\"");
+}
+
+sub copy_with_version {
+ my ($src, $dest) = @_;
+ my $uqmversion = get_uqm_version();
+ open (SRCFILE, "<", $src) or die "Could not open source file '$src'";
+ open (DESTFILE, ">", $dest) or die "Could not open destination file '$dest'";
+ while (<SRCFILE>) {
+ s/\@\@VERSION\@\@/$uqmversion/g;
+ print DESTFILE;
+ }
+ close(DESTFILE) or warn "Could not close destination file";
+ close(SRCFILE) or warn "Could not close source file";
+}
diff --git a/build/unix_installer/install.sh.in b/build/unix_installer/install.sh.in
new file mode 100644
index 0000000..d89ba03
--- /dev/null
+++ b/build/unix_installer/install.sh.in
@@ -0,0 +1,277 @@
+#!/bin/sh
+# Installation program for binaries.
+# By Serge van den Boom, 2002-11-26
+
+quithandler() {
+ echo
+ echo "Bye."
+ trap INT
+ kill -INT $$
+}
+
+trap quithandler INT
+
+umask 022
+
+cat << EOF
+-== The Ur-Quan Masters installation ==-
+
+Hi, I'm your friendly neighbourhood installation program.
+I will make you very happy, but first, we've got some business to take
+care of.
+
+EOF
+
+PAGER="${PAGER:-more}"
+type "$PAGER" > /dev/null 2>&1
+if [ "$?" -ne 0 ]; then
+ cat << EOF
+I can't find a good pager. I need one. Sorry. Here's your prompt back.
+EOF
+ exit 1
+fi
+
+type unzip > /dev/null 2>&1
+if [ "$?" -ne 0 ]; then
+ cat << EOF
+I need 'unzip' for unzipping things. You don't seem to have it.
+That means no unzipping for me. And no The Ur-Quan Masters for you.
+And that's really not acceptable, is it? So I hope you'll install it
+soon. That way we'll both be happy.
+EOF
+ exit 1
+fi
+
+echo "I need to show you something. I don't want to, but I have to."
+echo "Press enter when you're ready."
+read TEMP
+
+$PAGER << "EOF"
+@LICENCE@
+EOF
+echo "That's hard reading, isn't it? But it's pretty important stuff. "
+echo -n "Now, the big question is, do you agree to it? "
+while :; do
+ read TEMP
+ case "$TEMP" in
+ [yY][eE][sS]|[aA][gG][rR][eE][eE])
+ echo "Good. Now we can be friends."
+ break
+ ;;
+ [nN][oO])
+ cat << EOF
+No? You're sure you didn't mean 'yes'? You do realise I can't let you pass
+now? Oh well, come back if you change your mind. I'm not going anywhere.
+I AM not going anywere, right?
+EOF
+ exit 0
+ ;;
+ *)
+ echo -n "Hmm... Please type 'Yes' or 'No': "
+ ;;
+ esac
+done
+echo
+
+cat << EOF
+Now I need somewhere to put all those Ur-Quan Masters files.
+My invisible friend tells me $INPUT_install_prefix_DEFAULT is a good place.
+I would put an executable there in a bin/ dir and a lot of junk together
+in a subdir under share/ and a little bit in a subdir under lib/
+But you're the boss, so where shall I put them?"
+EOF
+while :; do
+ show_install_prefix_menu
+ echo
+
+ PREFIX="$INPUT_install_prefix_VALUE"
+ if [ "$PREFIX" = "/dev/null" ]; then
+ echo "Ok, done. That was quick, wasn't it? Well, have fun."
+ echo
+ exit 0
+ fi
+
+ if [ ! -d "$PREFIX" ]; then
+cat << EOF
+There's no such directory. If you want me to stuff it all in /dev/null,
+just say so. No need to toy with me.
+Then again, I could create that directory for you.
+EOF
+ echo -n "Would you like that? "
+
+ read TEMP2
+ echo
+ case "$TEMP2" in
+ y|Y|yes|Yes|YES)
+ mkdir -p "$PREFIX" 2> /dev/null
+ if [ "$?" -gt 0 ]; then
+ cat << EOF
+I cannot do it, captain! I don't have enough power!
+Erm... I mean 'permission denied'. Sorry about that.
+I guess we'll need to find another place.
+EOF
+ echo "So what shall it be?"
+ else
+ cat << EOF
+Ok, I've created that dir for you, even though it isn't in my job
+description. Now let's get on with the copying.
+EOF
+ break;
+ fi
+ ;;
+ n|N|no|No|NO)
+ echo "Great! That saves me some work."
+ echo "Then where DO you want me to put my files?"
+ echo "I promise I'll handle them with care."
+ ;;
+ *)
+ echo "I'll take that as a 'no'."
+ echo -n "So, where should I put my files?"
+ ;;
+ esac
+ continue
+ fi
+
+ if [ ! -w "$PREFIX" ]; then
+cat << EOF
+Ooh, a very fine place indeed. Unfortunately it's not your fine place.
+You can't write there, and for some strange cosmological coincidence,
+neither can I. I think we need another place."
+EOF
+ echo "So, what shall it be?"
+ continue
+ fi
+ break
+done
+cat << EOF
+$PREFIX it is. I can work with that.
+
+EOF
+
+if [ -d "${PREFIX}/share/uqm/content" ]; then
+ if [ -f "${PREFIX}/share/uqm/content/version" ]; then
+ read UQM_OLDVERSION < "${PREFIX}/share/uqm/content/version"
+ else
+ UQM_OLDVERSION=0.1
+ fi
+ if [ `expr "$UQM_VERSION" ">" "$UQM_OLDVERSION"` = "1" ]; then
+ # NB: 'expr' echoes '1' for true, while sh uses '0'
+ echo "Hey! I see you've got an old version there."
+ echo "You'll be happy to know this one is even better."
+ echo "(yes, this is a hardcoded string in the installer)"
+ echo
+ UQM_INSTALL=UPGRADE
+ elif [ `expr "$UQM_VERSION" "<" "$UQM_OLDVERSION"` = "1" ]; then
+ UQM_INSTALL=DOWNGRADE
+ else
+ UQM_INSTALL=REINSTALL
+ fi
+else
+ UQM_INSTALL=NEW
+fi
+
+check_content_path() {
+ local OPTIONAL TITLE HAVE FAIL
+
+ echo "Looking for packages to install..."
+ FAIL="0"
+ for PACKAGE in $UQM_PACKAGES; do
+ eval OPTIONAL="\$UQM_PACKAGE_${PACKAGE}_OPTIONAL"
+ eval TITLE="\$UQM_PACKAGE_${PACKAGE}_TITLE"
+ package_available "$PACKAGE"
+ HAVE="$?"
+ echo -n "- Package for '$TITLE'"
+ if [ "$OPTIONAL" = TRUE ]; then
+ echo -n " (optional)"
+ else
+ echo -n " (required)"
+ fi
+
+ if [ "$HAVE" -eq 0 ]; then
+ echo " found."
+ continue
+ fi
+ echo " not found."
+
+ if [ "$OPTIONAL" = FALSE ]; then
+ FAIL=1
+ fi
+ done
+ return "$FAIL"
+}
+
+CONTENT_PATH="$INPUT_content_path_DEFAULT"
+check_content_path
+if [ "$?" -ne 0 ]; then
+ cat << EOF
+I haven't found the files I need in the $CONTENT_PATH dir.
+I really can't work without them.
+If you don't have them, please press CTRL-C and quickly get it, before I get
+swapped out.
+EOF
+ echo "Otherwise, please tell me where you've hidden them."
+ while :; do
+ show_content_path_menu
+ CONTENT_PATH="$INPUT_content_path_VALUE"
+ check_content_path && break
+ echo "That's not it. Guess again."
+ done
+ echo "Yay! Found them."
+ echo
+fi
+
+set_components_menu
+show_components_menu
+
+cat << EOF
+Ok, I'm ready now to start filling your hard drive.
+It might take some time though, so don't hold your breath.
+On second thought, DO hold your breath, I like the colour blue.
+Orange too, for that matter, but I don't think you can manage that.
+EOF
+echo -n "Ready? Just say the word. Any word will do: "
+read TEMP
+echo "A word as good as any."
+echo
+
+echo "Making directories..."
+mkdir -p -- "$PREFIX"/share/uqm/content 2> /dev/null
+mkdir -p -- "$PREFIX"/bin 2> /dev/null
+
+echo "Unpacking packages..."
+for PACKAGE in `selected_packages`; do
+ echo "- $COMPFILE"
+ COMPFILE="$(package_filename $PACKAGE)"
+ eval LOCATION="\$UQM_PACKAGE_${PACKAGE}_LOCATION"
+ unzip -od "${PREFIX}${LOCATION}" "$COMPFILE"
+
+ # Next line is a workaround, as the content zips have files
+ # with the wrong permissions in them. Should be fixed for the
+ # next release.
+ chmod go+rX "${PREFIX}${LOCATION}"
+done
+
+
+echo "Unpacking other stuff..."
+tail -c @ATTACHLEN@ < "$0" | gzip -dc | tar -xf - -C "$PREFIX"
+
+echo "Creating wrapper script..."
+cat << EOF > "$PREFIX"bin/uqm
+#!/bin/sh
+# Wrapper script for starting The Ur-Quan Masters
+"${PREFIX}lib/uqm/uqm" "--contentdir=${PREFIX}share/uqm/content" "\$@"
+EOF
+chmod 755 "$PREFIX"bin/uqm
+
+cat << EOF
+
+All done. Now you can play The Ur-Quan masters.
+I told you I was going to make you very happy.
+And if you're looking for documentation, you can find some in
+${PREFIX}share/uqm/doc/. If you aren't looking for documentation, too.
+But feel free to delete them. You know where to find them.
+EOF
+
+exit 0
+
+
diff --git a/build/unix_installer/installer.config b/build/unix_installer/installer.config
new file mode 100644
index 0000000..aeb9a03
--- /dev/null
+++ b/build/unix_installer/installer.config
@@ -0,0 +1,139 @@
+MENU_main_ITEMS="components install_prefix"
+MENU_main_TITLE="The Ur-Quan Masters installation"
+MENU_main_ITEM_components_TYPE=MENU
+MENU_main_ITEM_install_prefix_TYPE=INPUT
+
+MENU_components_TITLE="Optional components"
+MENU_components_TEXT=\
+" Here you can select which components you'd like to have installed. If you
+ can spare the space, you are adviced to select all, for the maximum game
+ experience.
+"
+
+package_filename() {
+ local FILENAME PACKNAME
+
+ eval PACKNAME="\${UQM_PACKAGE_$1_NAME}"
+ # Check complete package first for reinstall or downgrade.
+ # If they're not found, we'll settle for an upgrade package,
+ # maybe it will work, maybe it won't.
+ case "$UQM_INSTALL" in
+ NEW|REINSTALL|DOWNGRADE)
+ FILENAME="${CONTENT_PATH}uqm-${UQM_VERSION}-$PACKNAME.zip"
+ if [ -f "$FILENAME" ]; then
+ # Found complete package.
+ echo "$FILENAME"
+ return 0
+ fi
+ ;;
+ esac
+
+ # A full package is needed for a new install
+ if [ "$UQM_INSTALL" = NEW ]; then
+ return 1
+ fi
+
+ # Check for upgrade package.
+ FILENAME="${CONTENT_PATH}uqm-${UQM_OLDVERSION}_to_${UQM_VERSION}-$PACKNAME.zip"
+ if [ -f "$FILENAME" ]; then
+ # Found upgrade package.
+ echo "$FILENAME"
+ return 0
+ fi
+
+ # Check complete package again, as you can upgrade with a complete
+ # package.
+ if [ "$UQM_INSTALL" = UPGRADE ]; then
+ FILENAME="${CONTENT_PATH}uqm-${UQM_VERSION}-$PACKNAME.zip"
+ if [ -f "$FILENAME" ]; then
+ # Found complete package.
+ echo "$FILENAME"
+ return 0
+ fi
+ fi
+ return 1
+}
+
+package_available() {
+ package_filename "$@" > /dev/null
+ return $?
+}
+
+set_components_menu() {
+ local TITLE OPTIONAL DEFAULT
+
+ MENU_install_components_TITLE="Optional components selection"
+ MENU_install_components_ITEMS="$UQM_PACKAGES"
+ for PACKAGE in $UQM_PACKAGES; do
+ eval TITLE="\"\${UQM_PACKAGE_${PACKAGE}_TITLE}\""
+ eval OPTIONAL="\${UQM_PACKAGE_${PACKAGE}_OPTIONAL}"
+ eval DEFAULT="\${UQM_PACKAGE_${PACKAGE}_DEFAULT}"
+ eval MENU_install_components_ITEM_${PACKAGE}_TYPE=CHECK
+
+ eval CHECK_${PACKAGE}_TITLE=\"\$TITLE\"
+ if [ "$DEFAULT" = "TRUE" ]; then
+ eval CHECK_${PACKAGE}_DEFAULT=CHECKED
+ else
+ eval CHECK_${PACKAGE}_DEFAULT=UNCHECKED
+ fi
+ if package_available "$PACKAGE"; then
+ if [ "$OPTIONAL" = "FALSE" ]; then
+ eval CHECK_${PACKAGE}_VALUE=CHECKED
+ eval CHECK_${PACKAGE}_FIXED=TRUE
+ fi
+ else
+ if [ "$OPTIONAL" = "TRUE" ]; then
+ eval CHECK_${PACKAGE}_VALUE=UNCHECKED
+ eval CHECK_${PACKAGE}_FIXED=TRUE
+ else
+ echo "Can't find '$PACKAGE' package"
+ return 1
+ fi
+ fi
+ done
+ return 0
+}
+
+show_components_menu() {
+ do_menu MENU install_components ""
+}
+
+INPUT_install_prefix_TITLE="Installation prefix"
+#INPUT_install_prefix_TEXT=\
+#" This is the top directory where the game data will be installed.
+# In the directory you specify directories like 'bin', 'lib' and 'share'
+# will be used.
+#"
+if [ "$(id -u)" -eq 0 ]; then
+ INPUT_install_prefix_DEFAULT="/usr/local/games/"
+else
+ INPUT_install_prefix_DEFAULT="$HOME/uqm/"
+fi
+INPUT_install_prefix_VALIDATOR=validate_path
+
+show_install_prefix_menu() {
+ do_menu INPUT install_prefix ""
+ INPUT_install_prefix_VALUE="${INPUT_install_prefix_VALUE%/}/"
+}
+
+INPUT_content_path_TITLE="Location of content packages"
+INPUT_content_path_DEFAULT="${PWD%/}/"
+INPUT_content_path_VALIDATOR=validate_path
+show_content_path_menu() {
+ do_menu INPUT content_path ""
+ INPUT_content_path_VALUE="${INPUT_content_path_VALUE%/}/"
+}
+
+selected_packages() {
+ local RESULT PACKAGE VALUE
+ RESULT=""
+ for PACKAGE in $UQM_PACKAGES; do
+ eval VALUE="\$CHECK_${PACKAGE}_VALUE"
+ if [ "$VALUE" = CHECKED ]; then
+ RESULT="${RESULT:+$RESULT }$PACKAGE"
+ fi
+ done
+ echo "$RESULT"
+}
+
+
diff --git a/build/unix_installer/template b/build/unix_installer/template
new file mode 100644
index 0000000..5261257
--- /dev/null
+++ b/build/unix_installer/template
@@ -0,0 +1,40 @@
+# Template file for building the UQM installer for unix Systems.
+# By Serge van den Boom, 2003-02-23
+
+UQM_VERSION="0.7"
+UQM_LICENSE_FILE="COPYING"
+
+UQM_PACKAGES="content voice 3domusic"
+UQM_PACKAGE_content_NAME="content"
+UQM_PACKAGE_content_TITLE="General game data"
+UQM_PACKAGE_content_LOCATION="share/uqm/content/packages/"
+UQM_PACKAGE_content_OPTIONAL="FALSE"
+UQM_PACKAGE_content_DEFAULT="TRUE"
+UQM_PACKAGE_voice_NAME="voice"
+UQM_PACKAGE_voice_TITLE="Spoken alien communication"
+UQM_PACKAGE_voice_LOCATION="share/uqm/content/addons/"
+UQM_PACKAGE_voice_OPTIONAL="TRUE"
+UQM_PACKAGE_voice_DEFAULT="TRUE"
+UQM_PACKAGE_3domusic_NAME="3domusic"
+UQM_PACKAGE_3domusic_TITLE="Music from the 3DO version"
+UQM_PACKAGE_3domusic_LOCATION="share/uqm/content/addons/"
+UQM_PACKAGE_3domusic_OPTIONAL="TRUE"
+UQM_PACKAGE_3domusic_DEFAULT="TRUE"
+
+UQM_SCRIPT_FILES="
+ ${UQM_TOP}build/unix/ansi
+ ${UQM_TOP}build/unix/menu_functions
+ ${UQM_TOP}build/unix_installer/installer.config
+ ${UQM_TOP}build/unix_installer/install.sh.in
+"
+
+# File destination
+UQM_ATTACH_FILES=\
+"${UQM_TOP}AUTHORS share/uqm/doc/
+${UQM_TOP}COPYING share/uqm/doc/
+${UQM_TOP}ChangeLog share/uqm/doc/
+${UQM_TOP}WhatsNew share/uqm/doc/
+${UQM_TOP}README share/uqm/doc/
+${UQM_TOP}doc/users/manual.txt share/uqm/doc/
+${UQM_TOP}uqm lib/uqm/"
+