X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Fvserver-build;h=c2e30e38775aba47059ceee7b6e822587ce4a7f1;hb=041aeae35801a5ecd1a9c0ce56e2fdcfd54aac9a;hp=efd8d9f4248d8577d68f12969506252404ac9317;hpb=2afee371c49eebac530575881f04cef73077aa0e;p=util-vserver.git diff --git a/util-vserver/scripts/vserver-build b/util-vserver/scripts/vserver-build index efd8d9f..c2e30e3 100755 --- a/util-vserver/scripts/vserver-build +++ b/util-vserver/scripts/vserver-build @@ -16,29 +16,48 @@ # 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; 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 -n [--] * +$"Usage: $(basename $0) -m -n --force * + --rootdir --pkgcfgbase [--] * + +Options: + --force ... remove/rename already existing vservers with the same name + -m ... use method ; see below for possible values + --rootdir + ... [default: $DEFAULT_VSERVERDIR] + --pkgcfgbase + ... [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 + apt-rpm ... -- -d ... installs the base-packages of the given distribution with help of 'vapt-get' + skeleton ... -- [ *] + ... installs a minimal skeleton filesystem, creates the + configuration file and calls an optional command then + debootstrap ... -- -d [-m ] + bootstraps the vserver with Debian's 'debootstrap' package Please report bugs to $PACKAGE_BUGREPORT" exit 0 @@ -58,23 +77,53 @@ the GNU General Public License. This program has absolutely no warranty." ### main starts here -set +e +set -e + +declare -a default_opts=() +test "$NO_DEFAULT_OPTS" || getFileArray default_opts "$CONFDIR/.defaults/apps/build/options" -tmp=$(getopt -o +m:n: --long help,version -n "$0" -- "$@") || exit 1 +tmp=$(getopt -o +m:n: --long force,debug,help,version,rootdir:,pkgbase:,$SETUP_OPTIONS -n "$(basename $0)" -- \ + "${default_opts[@]}" "$@") || exit 1 eval set -- "$tmp" +VSERVER_NAME= +OPTION_FORCE= + while true; do case "$1" in --help) showHelp $0 ;; --version) showVersion ;; - -m) method=$2; shift 2;; - -n) name=$2; shift 2;; + --force) OPTION_FORCE=1;; + --debug) set -x;; + --rootdir) ROOTDIR=$2; shift;; + --pkgbase) PKGCFGBASE=$2; shift;; + -m) method=$2; shift;; + -n) VSERVER_NAME=$2; shift;; --) shift; break;; - *) echo $"vserver-build: internal error."; exit 1;; + *) + { setup_setOption2 "$1" "$2" && shift; } || \ + { echo $"vserver-build: internal error."; exit 1; } >&2 + ;; esac + shift done +test "$VSERVER_NAME" || { + echo $"Name of vserver not specified" + exit 1 +} >&2 +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) + . $PKGLIBDIR/vserver-build.$method + ;; + x) echo $"No build-method specified" >&2 + exit 1 + ;; + *) echo $"Unknown build-method '$method'" >&2 + exit 1 + ;; +esac