#! /bin/bash
# $Id$
-# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# Copyright (C) 2003,2004,2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
test -e "$UTIL_VSERVER_VARS" || {
- echo "Can not find util-vserver installation; aborting..."
+ echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
exit 1
}
. "$UTIL_VSERVER_VARS"
. "$_LIB_FUNCTIONS"
+. "$_LIB_VSERVER_SETUP_FUNCTIONS"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS"
### Some local functions
function showHelp()
{
echo \
-$"Usage: $(basename $0) -m <method> -n <name> [--] <method-args>*
+$"Usage: $(basename $0) -m <method> -n <name> --force <cfg-options>*
+ --rootdir <dir> --pkgbase <dir> [--] <method-args>*
+
+Options:
+ --force ... remove/rename already existing vservers with the same
+ name
+ --keep ... do not delete generated files and directories when
+ build of vserver failed.
+ -m <method> ... use method <method>; see below for possible values
+ --rootdir <dir>
+ ... [default: $__DEFAULT_VSERVERDIR]
+ --pkgbase <dir>
+ ... [default: $__DEFAULT_VSERVERPKGDIR]
+
+cfg-options are: $SETUP_HELPMSG
Possible methods are:
legacy ... the \"old\" copy-all-from-host method, which requires the
- old legacy vserver-legacy script
+ old legacy vserver-legacy script; with this method the
+ cfg-options will be ignored
copy ... the copy-all-from-host method which uses the recent
configuration scheme
- apt -d <distribution>
+ apt-rpm ... -- -d <distribution>
... installs the base-packages of the given distribution with
help of 'vapt-get'
+ yum ... -- -d <distribution>
+ ... installs the base-packages of the given distribution with
+ help of 'vyum'
+ rpm ... -- [-d <distribution>] --empty|([--force] [--nodeps] <manifest>)+
+ ... installs lists of rpm-packages
+ skeleton ... -- [<cmd> <args>*]
+ ... installs a minimal skeleton filesystem, creates the
+ configuration file and calls an optional command then
+ debootstrap ... -- -d <distribution> [-m <mirror>] [-- <debootstrap-options>*]
+ bootstraps the vserver with Debian's 'debootstrap' package
Please report bugs to $PACKAGE_BUGREPORT"
exit 0
$"vserver-build $PACKAGE_VERSION -- initializes a vserver
This program is part of $PACKAGE_STRING
-Copyright (C) 2003 Enrico Scholz
+Copyright (C) 2003,2004,2005 Enrico Scholz
This program is free software; you may redistribute it under the terms of
the GNU General Public License. This program has absolutely no warranty."
exit 0
### main starts here
-set +e
+set -e
-tmp=$(getopt -o +m:n: --long help,version -n "$0" -- "$@") || exit 1
+declare -a default_opts=()
+test -n "$NO_DEFAULT_OPTS" || getFileArray default_opts "$__CONFDIR/.defaults/apps/build/options" || :
+
+tmp=$(getopt -o +m:n: --long keep,force,debug,help,version,rootdir:,pkgbase:,$SETUP_OPTIONS -n "$(basename $0)" -- \
+ "${default_opts[@]}" "$@") || exit 1
eval set -- "$tmp"
+VSERVER_NAME=
+OPTION_FORCE=
+OPTION_DEBUG=0
+OPTION_KEEP=
+
while true; do
case "$1" in
- --help) showHelp $0 ;;
- --version) showVersion ;;
- -m) method=$2; shift 2;;
- -n) name=$2; shift 2;;
- --) shift; break;;
- *) echo $"vserver-build: internal error."; exit 1;;
+ (--help) showHelp $0 ;;
+ (--version) showVersion ;;
+ (--force) OPTION_FORCE=1;;
+ (--keep) OPTION_KEEP=1;;
+ (--debug) let ++OPTION_DEBUG; set -x;;
+ (--rootdir) ROOTDIR=$2; shift;;
+ (--pkgbase) PKGCFGBASE=$2; shift;;
+ (-m) method=$2; shift;;
+ (-n) VSERVER_NAME=$2; shift;;
+ (--) shift; break;;
+ (*)
+ { setup_setOption2 "$1" "$2" && shift; } || \
+ panic $"vserver-build: internal error."
+ ;;
esac
+ shift
done
+test -n "$VSERVER_NAME" ||
+ panic $"Name of vserver not specified"
+setup_setDefaults "$VSERVER_NAME"
-echo "Sorry, just a prototype currently..."
-exit 1
+case x"$method" in
+ (xlegacy) exec $_VSERVER_LEGACY "$VSERVER_NAME" build "$@" ;;
+ (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm)
+ . $__PKGLIBDIR/vserver-build.$method
+ ;;
+ (x) panic $"No build-method specified";;
+ (*) panic $"Unknown build-method '$method'";;
+esac