libreccm-legacy/tools-legacy/scripts/doinstall.sh

343 lines
7.0 KiB
Bash
Executable File

#!/bin/sh
#
# CCM Build Scripts Installation script
#
# Idea from WindowMaker installation script by Alfredo K. Kojimo
#
# Copyright (C) 1999-2002 Daniel Berrange
#
# With modifications by Andrew Hunter
CONFIG_OPT=""
# -----------------------------------------------------------
# First off we need a whole lot of clever functions
# Hmm, maybe we could use terminfo to get this information...
if [ "$1" = "-mono" -o $TERM != "xterm" -a $TERM != "ansi" \
-a $TERM != "xterm-color" ]; then
ES_DEF=""
ES_BLK_FG=""
ES_RED_FG=""
ES_GRN_FG=""
ES_YEL_FG=""
ES_BLU_FG=""
ES_PUR_FG=""
ES_CYA_FG=""
ES_GRY_FG=""
ES_BLK_BG=""
ES_RED_BG=""
ES_GRN_BG=""
ES_YEL_BG=""
ES_BLU_BG=""
ES_PUR_BG=""
ES_CYA_BG=""
ES_GRY_BG=""
ES_BOLD=""
ES_USCORE=""
ES_BLINK=""
ES_INVERT=""
ES_HIDDEN=""
else
ES_DEF="\033[0m"
ES_BLK_FG="\033[30m"
ES_RED_FG="\033[31m"
ES_GRN_FG="\033[32m"
ES_YEL_FG="\033[33m"
ES_BLU_FG="\033[34m"
ES_PUR_FG="\033[35m"
ES_CYA_FG="\033[36m"
ES_GRY_FG="\033[37m"
ES_BLK_BG="\033[40m"
ES_RED_BG="\033[41m"
ES_GRN_BG="\033[42m"
ES_YEL_BG="\033[43m"
ES_BLU_BG="\033[44m"
ES_PUR_BG="\033[45m"
ES_CYA_BG="\033[46m"
ES_GRY_BG="\033[47m"
ES_BOLD="\033[1m"
ES_USCORE="\033[4m"
ES_BLINK="\033[5m"
ES_INVERT="\033[7m"
ES_HIDDEN="\033[8m"
fi
plain()
{
echo "$1"
}
pretty()
{
echo -e "$ES_BOLD$ES_YEL_FG$ES_BLACK_BG$1$ES_DEF"
}
alert()
{
echo -e "$ES_RED_FG$ES_BLACK_BG$1$ES_DEF"
}
death()
{
alert
bar
alert "Installation process failed. Please inform the CCM development"
alert "team of the problem encountered."
wide_bar
exit
}
abort()
{
alert
bar
alert "Installation process aborted by user. Thankyou, please come again."
wide_bar
exit
}
prompt()
{
echo -n -e "$ES_BOLD$ES_GRN_FG$ES_BLACK_BG> $ES_GRY_FG"
read flibble
if [ "x$flibble" = "x" ]; then
flibble="$1"
fi
echo -n -e "$ES_DEF"
}
bar()
{
echo -e "$ES_BOLD--------------------------------------------------------------------$ES_DEF"
}
wide_bar()
{
echo -e "$ES_BOLD====================================================================$ES_DEF"
}
command()
{
echo -e "$ES_BOLD$1$ES_DEF"
echo -n -e "$ES_GRY_FG$ES_BLACK_BG"
$1 || death
echo -n -e "$ES_DEF"
}
# -------------------------------------------------------------------------
# We had better watch out for bad shit
trap abort 2 3
# -------------------------------------------------------------------------
# Work out which directory we were run in (as configure is there too)
DIRNAME=`dirname $0`
# -------------------------------------------------------------------------
# There's always one
if [ ! -e $DIRNAME/configure ]; then
wide_bar
alert "This script is part of the CCM Build Scripts package, "
alert "and should be executed from the directory in which the package"
alert "was extracted."
wide_bar
exit
fi
# --------------------------------------------------------------------------
# On your marks, get set, GO!
wide_bar
pretty " CCM Build Scripts Installation Script"
wide_bar
plain "This script will configure, compile and install the CCM Build scripts"
plain "package."
plain "Pressing <Enter> for any question will select the default."
# -------------------------------------------------------------------------
# Better check who is doing this install
WHOAMI=`whoami`
if [ "$WHOAMI" != "root" ]; then
bar
alert "You are NOT root. Be sure to specify an installation path"
alert "where you have write permissions."
DEF_PREFIX="$HOME/usr"
else
DEF_PREFIX="/usr/local"
fi
# -------------------------------------------------------------
# Get hold of the installation directory
flibble=""
bar
while [ "x$flibble" = "x" ]; do
plain "Did you read the INSTALL file?"
plain "Y/y/N/n [n]"
prompt "n"
if [ "$flibble" = "y" -o "$flibble" = "Y" ]; then
plain "I know you're lying but you can continue anyway"
plain "Of course, if this were the WindowMaker install"
plain "script you wouldn't get of so lightly..."
else
if [ "x$flibble" != "x" ]; then
plain "Just as I expected, no one ever bothers to read"
plain "the INSTALL, hence this interactive Install script"
fi
fi
done
#--------------------------------------------------------------
# It's probably a good idea to compile in an object directory
if [ "x$DIRNAME" = "x" -o "$DIRNAME" = "." ]; then
flibble=""
# bar
# alert "You are running this script in the source directory: to keep"
# alert "things tidy, it is recommended that you create a seperate object"
# alert "directory to actually do this build."
# bar
# plain "Do you want me to create a build directory?"
# plain "Y/y/N/n [y]"
# prompt "n"
if [ "$flibble" = "y" -o "$flibble" = "Y" ]; then
buildok="no"
while [ "$buildok" = "no" ]; do
plain "What do you want to call this build directory?"
plain "[obj]"
prompt "obj"
builddir="$flibble"
if [ -e "$builddir" ]; then
if [ -d "$builddir" ]; then
bar
alert "That directory already exists"
bar
plain "Use it anyway?"
plain "Y/y/N/n [y]"
prompt "y"
if [ $flibble = "y" -o $flibble = "Y" ]; then
buildok="yep"
fi
else
bar
alert "That object already exists, and is not a directory"
bar
fi
else
bar
alert "Creating $builddir..."
mkdir $builddir
buildok="yep"
fi
done
if [ -e $builddir/.install_link ]; then
if [ -L $builddir/.install_link ]; then
rm $builddir/.install_link
else
bar
alert "That directory is unsuitable for installation"
wide_bar
exit
fi
fi
# Weee, let's do a hack
# Note that this assumes $DIRNAME == pwd... (See condition above for why
# this should be so...)
ln -s `pwd` $builddir/.install_link
cd $builddir
DIRNAME=".install_link"
fi
fi
bar
alert "Compiling into `pwd`"
alert "Sources in $DIRNAME"
# -------------------------------------------------------------
# Get hold of the installation directory
bar
plain "Where do you want to install the CCM scripts?"
plain "The default location is $DEF_PREFIX [bin include lib ....]"
prompt "$DEF_PREFIX"
CONFIG_OPT="$CONFIG_OPT --prefix=$flibble"
# -------------------------------------------------------------
# Get user specific configure options
bar
plain "Please enter any special options to configure that may be required."
plain "Press <Enter> for none"
prompt " "
CONFIG_OPT="$CONFIG_OPT $flibble"
# ------------------------------------------------------------
# Run configure script, make and install
bar
plain "Configuring package..."
command "$DIRNAME/configure $CONFIG_OPT"
bar
plain "Compiling package..."
command "make"
bar
plain "Installing package..."
command "make install"
# ------------------------------------------------------------
# Say goodbye
wide_bar
pretty "The CCM Build Scripts have been successfully installed."
pretty "Have a nice day "
pretty " - The CCM development team."
wide_bar
exit
# End of file