4a55a2ca80
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1096 8092fc87-c524-0410-9efc-e669fe64eaf9
278 lines
6.7 KiB
Bash
278 lines
6.7 KiB
Bash
#!/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
|
|
|
|
|