#!/bin/sh # Turn on debug output if required if [ "z$TT_DEBUG" = "ztrue" ] then set -x fi usage() { echo "Usage: `basename $0` [args] where args are as follows:" echo " * --bootstrap" echo " Indicates that we are bootstrapping (initial install)" echo " * --bootstrap-user=" echo " Sets the used to compile bootstrap code." echo " Default: ttPM-boot" echo " Hint: When building from CD based distros, set this to root." echo " * --lfs-mount=" echo " During bootstrap, sets the location where LFS is mounted" echo " * --prefix=" echo " Sets installation prefix." echo " In bootstrap mode, sets the bootstrap prefix." echo " Default: /usr (normal mode). /ttPM-bootstrap in bootstrap mode." echo " Binaries are installed in PREFIX/bin." echo " Superuser binaries are installed in PREFIX/sbin." echo " Internal executables are installed in PREFIX/lib/ttPM" echo " Configuration files are installed in PREFIX/etc/ttPM" echo " (Can be overridden by --etc-dir argument)" echo " * --etc-dir=" echo " Sets configuration directory." echo " Default: PREFIX/etc/ttPM. /etc/ttPM if PREFIX=/usr." echo " * --home-dir=" echo " Sets parent for home directory for packages." echo " Default: /home/ttPM." echo " * --var-dir=" echo " Sets var directory for pkgs." echo " Default: /var/lib/ttPM." echo " * --pkg-user=" echo " Sets user & group name for package user." echo " Default: pkg." echo " * --min-id=" echo " Sets the Minimum UID/GID for package users." echo " Default: 1000." echo " * --max-id=" echo " Sets the Maximum UID/GID for package users." echo " Default: 9999." echo " * --sys-bit=" echo " Specifies whether the system is 32 or 64 bit" echo " Default: 32" echo " * --uniq-id=" echo " Sets the id to be used for the current lfs installation." echo " Useful for someone supporting multiple installations." echo " Default: None, this has to be specified" } # Default values used PREFIX="/usr" PREFIX_BIN="/usr/bin" PREFIX_ETC="/etc/ttPM" PREFIX_LIB="/usr/lib/ttPM" PREFIX_SBIN="/usr/sbin" TT_BOOTSTRAP_MODE="no" TT_BOOTSTRAP_PREFIX="/ttPM-bootstrap" TT_BOOTSTRAP_USER="ttPM-boot" TT_LFS_MOUNT="/lfs" TT_ETC_DIR="/etc/ttPM" TT_HOME_DIR="/home/ttPM" TT_LIB_DIR="/usr/lib/ttPM" TT_MIN_ID="1000" TT_MAX_ID="9999" TT_PKG_USER="pkg" TT_SYS_BIT="32" TT_VAR_DIR="/var/lib/ttPM" TT_UNIQ_ID="" # Vars useful to find what arguments are passed by the user TT_PREFIX_SET="no" TT_PREFIX_ETC_SET="no" # Parse arguments and change vars if neccessary for ARG do VAL=`expr "x$ARG" : 'x[^=]*=\(.*\)'` case $ARG in --bootstrap) TT_BOOTSTRAP_MODE="yes" ;; --bootstrap-user=*) TT_BOOTSTRAP_USER="$VAL" ;; --lfs-mount=*) TT_LFS_MOUNT="$VAL" ;; --prefix=*) PREFIX=$VAL TT_PREFIX_SET="yes" if [ "x$PREFIX" != "x/usr" ] then PREFIX_BIN="$PREFIX/bin" PREFIX_LIB="$PREFIX/lib/ttPM" PREFIX_SBIN="$PREFIX/sbin" fi ;; --etc-dir=*) TT_ETC_DIR=$VAL TT_PREFIX_ETC_SET="yes" ;; --home-dir=*) TT_HOME_DIR=$VAL ;; --var-dir=*) TT_VAR_DIR=$VAL ;; --pkg-user=*) TT_PKG_USER=$VAL ;; --min-id=*) TT_MIN_ID=$VAL ;; --max-id=*) TT_MAX_ID=$VAL ;; --sys-bit=*) TT_SYS_BIT=$VAL if [ "$TT_SYS_BIT" != "32" ] && [ "$TT_SYS_BIT" != "64" ] then echo "Valid values for --sys-bit are 32 and 64" echo "Using default of 32" TT_SYS_BIT="32" fi ;; --uniq-id=*) TT_UNIQ_ID=$VAL ;; --help) usage exit 0 ;; esac done if [ "x$TT_BOOTSTRAP_MODE" = "xyes" ] then if [ "x$TT_PREFIX_SET" = "xyes" ] then TT_BOOTSTRAP_PREFIX=$PREFIX else PREFIX=$TT_BOOTSTRAP_PREFIX TT_PREFIX_SET="yes" PREFIX_BIN="$PREFIX/bin" PREFIX_LIB="$PREFIX/lib/ttPM" PREFIX_SBIN="$PREFIX/sbin" fi fi if [ "x$TT_PREFIX_ETC_SET" = "xno" ] && [ "x$PREFIX" != "x/usr" ] then PREFIX_ETC="$PREFIX/etc/ttPM" fi # Check if TT_UNIQ_ID is set if [ "z$TT_UNIQ_ID" = "z" ] then echo "Error: Unique ID for installation is not specified" echo "Use the following command to obtain help" echo " ./`basename $0` --help" exit 1 fi # Sed the variables set above into all .in files to create the final versions. for F in `find etc/ scripts/ src/ -type f -name "*.in"` bootstrap0.in install-ttPM.in do FF=`basename $F .in` DD=`dirname $F` sed \ -e "s:@PREFIX_BIN@:$PREFIX_BIN:g" \ -e "s:@PREFIX_ETC@:$PREFIX_ETC:g" \ -e "s:@PREFIX_LIB@:$PREFIX_LIB:g"\ -e "s:@PREFIX_SBIN@:$PREFIX_SBIN:g" \ -e "s:@TT_BOOTSTRAP_MODE@:$TT_BOOTSTRAP_MODE:g" \ -e "s:@TT_BOOTSTRAP_PREFIX@:$TT_BOOTSTRAP_PREFIX:g" \ -e "s:@TT_BOOTSTRAP_USER@:$TT_BOOTSTRAP_USER:g" \ -e "s:@TT_LFS_MOUNT@:$TT_LFS_MOUNT:g" \ -e "s:@TT_ETC_DIR@:$TT_ETC_DIR:g" \ -e "s:@TT_HOME_DIR@:$TT_HOME_DIR:g" \ -e "s:@TT_LIB_DIR@:$TT_LIB_DIR:g" \ -e "s:@TT_MAX_ID@:$TT_MAX_ID:g" \ -e "s:@TT_MIN_ID@:$TT_MIN_ID:g" \ -e "s:@TT_PKG_USER@:$TT_PKG_USER:g" \ -e "s:@TT_SYS_BIT@:$TT_SYS_BIT:g" \ -e "s:@TT_VAR_DIR@:$TT_VAR_DIR:g" \ -e "s:@TT_UNIQ_ID@:$TT_UNIQ_ID:g" \ $F > $DD/$FF || exit 1 done # For a regular build, compile Depend.java if gcj is available if [ "$TT_BOOTSTRAP_MODE" = "no" ] then GCJ=`which gcj 2>/dev/null` if [ "x$GCJ" = "x" ] then echo "gcj not found on the system..." echo "gcc should be compiled with java language support..." exit 1 else $GCJ $CFLAGS --main=Depend -DTT_VAR_DIR="$TT_VAR_DIR" -DTT_ETC_DIR="$TT_ETC_DIR" -o src/getPkgLinkOrder src/Depend.java || exit 1 fi fi chmod +x bootstrap0 || exit 1 chmod +x install-ttPM || exit 1 # Output variables for the user echo "The following variables are used by ttPM scripts:" echo " * PREFIX_BIN=$PREFIX_BIN" echo " * PREFIX_ETC=$PREFIX_ETC" echo " * PREFIX_LIB=$PREFIX_LIB" echo " * PREFIX_SBIN=$PREFIX_SBIN" echo " * TT_BOOTSTRAP_MODE=$TT_BOOTSTRAP_MODE" echo " * TT_BOOTSTRAP_PREFIX=$TT_BOOTSTRAP_PREFIX" echo " * TT_BOOTSTRAP_USER=$TT_BOOTSTRAP_USER" echo " * TT_LFS_MOUNT=$TT_LFS_MOUNT" echo " * TT_ETC_DIR=$TT_ETC_DIR" echo " * TT_HOME_DIR=$TT_HOME_DIR" echo " * TT_LIB_DIR=$TT_LIB_DIR" echo " * TT_MAX_ID=$TT_MAX_ID" echo " * TT_MIN_ID=$TT_MIN_ID" echo " * TT_PKG_USER=$TT_PKG_USER" echo " * TT_SYS_BIT=$TT_SYS_BIT" echo " * TT_VAR_DIR=$TT_VAR_DIR" echo " * T_UNIQ_ID=$TT_UNIQ_ID" echo "If any of these values are not correct, rerun this script"