gunnar: server install-kolab.sh,1.1,1.2

cvs at kolab.org cvs at kolab.org
Fri Jul 27 08:23:24 CEST 2007


Author: gunnar

Update of /kolabrepository/server
In directory doto:/tmp/cvs-serv16505

Modified Files:
	install-kolab.sh 
Log Message:
Added some more options to the Kolab installer script.

Index: install-kolab.sh
===================================================================
RCS file: /kolabrepository/server/install-kolab.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- install-kolab.sh	17 Jul 2007 16:30:53 -0000	1.1
+++ install-kolab.sh	27 Jul 2007 06:23:22 -0000	1.2
@@ -1,50 +1,255 @@
 #!/bin/sh
 
 KOLAB_VERSION="2.2-beta1"
-PREFIX="/kolab"
+KID="19414"
+
 TAG="kolab"
+USER=""
+PREFIX=""
+
+INSTALL=""
+
+#Flags
+FLAG_BASE=""
+FLAG_ENV=""
+FLAG_CLEAN=""
 
 usage() {
 	echo "Usage:"
-	echo "  $0 directory/openpkg-*-*.src.sh"
-	echo "  $0 directory/openpkg-*-*.ix86-debian4.0.sh"
-	echo "  $0 directory"
+	echo "  $0 -i directory/openpkg-*-*.src.sh"
+	echo "  $0 -i directory/openpkg-*-*.ix86-debian4.0.sh"
+	echo "  $0 -i directory"
+	echo 
+	echo "  -h         (display this help)"
+	echo 
+	echo "Advanced options:"
+	echo
+	echo "  -t TAG     (alternate binary tag;          default is kolab)"
+	echo "  -I UID     (alternate base uid;            default is 19414)"
+	echo
+	echo "  -c         (clean the environment specified with \$PREFIX; DANGEROUS!)"
+	echo 
+	echo "  -p PREFIX  (alternate installation prefix; default is /\$TAG)"
+	echo "  -u USER    (alternate user name;           default is \$TAG)"
+	echo 
+	echo "  -V VERSION (alternate version;             default is 2.2-beta1)"
+	echo 
+	echo "  -D         (generate a binary distribution based on ./ and /\$PREFIX)"
+	echo "  -S         (generate a source distribution based on ./ and /\$PREFIX)"
+	echo 
+	echo "  -B         (abort after generating the basic openpkg binary)"
+	echo "  -E         (abort after generating the openpkg environment)"
 	exit 1
 }
 
-[ $# -ne 1 ] && usage
+while getopts hcBDSEi:V:p:I:u:t: ARGS; do
+   case $ARGS in
+      h) # Display help
+         usage
+         ;;
+      i) # What should be installed?
+         INSTALL="$OPTARG"
+         ;;
+      V) # User specified a specific Kolab version
+         KOLAB_VERSION="$OPTARG"
+         ;;
+      p) # User specified an alternative prefix
+         PREFIX="$OPTARG"
+         ;;
+      I) # User specified an alternative base Kolab UID
+         KID="$OPTARG"
+         ;;
+      u) # User specified an alternative user name
+         USER="$OPTARG"
+         ;;
+      t) # User specified an alternative tag
+         TAG="$OPTARG"
+         ;;
+      B) # User only wants the basic openpkg package in binary form
+         FLAG_BASE="Yes"
+         ;;
+      E) # User only wants the basic openpkg environment
+         FLAG_ENV="Yes"
+         ;;
+      c) # User wants to erase the openpkg environment
+         FLAG_CLEAN="Yes"
+         ;;
+      D) # User wants to collect a set of binary packages into a distribution
+         FLAG_BDIST="Yes"
+         ;;
+      S) # User wants to collect a set of source packages into a distribution
+         FLAG_SDIST="Yes"
+         ;;
+      *) # Unknown Option
+         
+         ;;
+   esac
+done
 
-if echo "$1" | grep '\.src\.sh$' >/dev/null; then
+if [ -z "$USER" ]; then
+	USER=$TAG
+fi
+
+if [ -z "$PREFIX" ]; then
+	PREFIX="/$TAG"
+fi
+
+R_KID=$(($KID + 1))
+N_KID=$(($R_KID + 1))
+
+if [ -n "$FLAG_CLEAN" -o -n "$FLAG_BDIST" -o -n "$FLAG_SDIST" ]; then
+	if [ -x "$PREFIX/bin/openpkg" ]; then
+		if [ -n "$FLAG_CLEAN" ]; then
+			echo
+			echo "This will completely wipe your installation in $PREFIX!"
+			echo "Are you certain you want to do that (YES/NO)?"
+			read ANSWER
+			if [ "$ANSWER" == "YES" ]; then
+				$PREFIX/bin/openpkg rpm -e `$PREFIX/bin/openpkg rpm -qa` || exit $?
+				echo "Erased OpenPKG environment $PREFIX"
+				exit 0
+			else
+				echo "Not cleaning."
+				exit 0
+			fi
+		elif [ -n "$FLAG_SDIST" ]; then
+			SDIST_DIR=$PREFIX/RPM/SDIST
+			INSTALLER=`find . -name openpkg-*.src.sh -print`
+			if [ -z "$INSTALLER" ]; then
+				echo "No source based installer found. Unable to create a source distribution!"
+				exit 1
+			fi
+			mkdir -p $SDIST_DIR
+			cp $0 $SDIST_DIR
+			if [ -n "$INSTALLER" ]; then
+				cp $INSTALLER $SDIST_DIR
+			fi
+			if [ -n "*.src.rpm" ]; then
+				cp *.src.rpm $SDIST_DIR
+			fi
+			if [ -n "$PREFIX/RPM/PKG/*.src.rpm" ]; then
+				cp $PREFIX/RPM/PKG/*.src.rpm $SDIST_DIR
+			fi
+			chown -R $USER:$USER $SDIST_DIR
+			cd $SDIST_DIR && $PREFIX/bin/openpkg index -r . -o 00INDEX.rdf -i .
+			exit 0
+		elif [ -n "$FLAG_BDIST" ]; then
+			PLATTAG=`"$PREFIX/lib/openpkg/shtool" platform --type=binary`-$TAG
+			BDIST_DIR=$PREFIX/RPM/BDIST
+			BINARY=`find . -name openpkg-*$PLATTAG.sh -print`
+			if [ -z "$BINARY" ]; then
+				echo "No binary installer package found. Unable to create a binary distribution!"
+				exit 1
+			fi
+			mkdir -p $BDIST_DIR
+			cp $0 $BDIST_DIR
+			if [ -n "$BINARY" ]; then
+				cp $BINARY $BDIST_DIR
+			fi
+			if [ -n "*$PLATTAG.rpm" ]; then
+				cp *$PLATTAG.rpm $BDIST_DIR
+			fi
+			if [ -n "$PREFIX/RPM/PKG/*$PLATTAG.rpm" ]; then
+				cp $PREFIX/RPM/PKG/*$PLATTAG.rpm $BDIST_DIR
+			fi
+			chown -R $USER:$USER $BDIST_DIR
+			cd $BDIST_DIR && $PREFIX/bin/openpkg index -r . -o 00INDEX.rdf -i -p $PLATTAG .
+			exit 0
+		else
+			echo "\"$PREFIX\" seems to be no OpenPKG environment."
+			exit 1
+		fi
+	fi
+fi
+
+echo
+echo "Kolab installation tag (TAG):       $TAG"
+echo "Kolab installation prefix (PREFIX): $PREFIX"
+echo "Kolab version (KOLAB_VERSION):      $KOLAB_VERSION"
+echo "Kolab user name (USER):             $USER"
+echo "Kolab user base UID (KID):          $KID"
+echo "Kolab restricted UID (KID):         $R_KID"
+echo "Kolab non-priviledged UID (KID):    $N_KID"
+echo
+
+if [ -z "$INSTALL" ]; then
+	# Hm, user wants us to figure out what we should do
+	echo "Received no instructions. Trying to determine required action..."
+	if [ -d "$PREFIX/etc/openpkg" ]; then
+                # Assume an upgrade based on the current directory
+		INSTALL=`pwd`
+		echo "Found an OpenPKG envrionment. Assuming upgrade..."
+	else
+		INSTALLER=`find . -name openpkg-*.src.sh -print`
+		BINARY=`find . -name openpkg-*.sh \! -name openpkg-*.src.sh -print`
+		if [ -z "$INSTALLER" ]; then
+			# No install script? Determine if there is a binary script
+			if [ -z "$BINARY" ]; then
+				echo "Sorry there is no OpenPKG installation script in the current directory!"
+				usage
+				exit 0
+			else
+				# Looks like we only have a binary. Hope that it matches the plattform and install it
+				INSTALL="$BINARY"
+				echo "Found a binary OpenPKG package. This will be installed now."
+			fi
+		else
+			# We have a source package. Check for a matching binary
+			PLATTAG=`sh "$INSTALLER" -t | tar xf - -O shtool | sh -s platform --type=binary`-$TAG
+			BIN=`basename "$INSTALLER" .src.sh`.$PLATTAG.sh
+			if [ "$BINARY" == "$BIN" ]; then
+				# There is a binary with the correct tag. Install it
+				INSTALL=$BIN
+				echo "Found a binary OpenPKG package with a correct tag. This will be installed now."
+			else
+				# Install from source
+				INSTALL=$INSTALLER
+				echo "Found a source based OpenPKG installer. Trying to install Kolab from source."
+			fi
+		fi
+	fi
+fi
+
+if echo "$INSTALL" | grep '\.src\.sh$' >/dev/null; then
 	# install from source
-	SRC="$1"
-	PLATTAG=`sh "$1" -t | tar xf - -O shtool | sh -s platform --type=binary`-$TAG
-	BIN=`basename "$1" .src.sh`.$PLATTAG.sh
+	SRC="$INSTALL"
+	PLATTAG=`sh "$INSTALL" -t | tar xf - -O shtool | sh -s platform --type=binary`-$TAG
+	BIN=`basename "$INSTALL" .src.sh`.$PLATTAG.sh
 	DIR=`dirname "$SRC"`
-elif echo "$1" | grep 'openpkg-.*\.sh$' >/dev/null; then
+elif echo "$INSTALL" | grep 'openpkg-.*\.sh$' >/dev/null; then
 	# install from binary
 	SRC=""
-	BIN="$1"
+	BIN="$INSTALL"
 	DIR=`dirname "$BIN"`
 elif [ -d "$PREFIX/etc/openpkg" ]; then
 	# upgrade
 	SRC=""
 	BIN=""
-	DIR="$1"
+	DIR="$INSTALL"
 fi
 
 DIR=`cd $DIR; pwd`
 
 if [ -n "$SRC" ]; then
+	echo "Creating binary openpkg package from $SRC!"
 	sh "$SRC" \
 	--prefix="$PREFIX" \
-	--tag="$TAG" --user="kolab" --group="kolab" \
-	--muid="19414" --ruid="19415" --nuid="19416" \
-	--mgid="19414" --rgid="19415" --ngid="19416" \
+	--tag="$TAG" --user="$USER" --group="$USER" \
+	--muid="$KID" --ruid="$R_KID" --nuid="$N_KID" \
+	--mgid="$KID" --rgid="$R_KID" --ngid="$N_KID" \
 	|| exit $?
+	if [ -n "$FLAG_BASE" ]; then
+		echo "Created basic openpkg binary for you platform!"
+		exit 0
+	fi
 fi
 
 if [ -n "$BIN" ]; then
 	sh "$BIN" || exit $?
+	if [ -n "$FLAG_ENV" ]; then
+		echo "Created basic openpkg environment!"
+		exit 0
+	fi
 fi
 
 if [ -n "$DIR" ]; then





More information about the commits mailing list