From 60de59efc0a31126279a0b936f3f23932ae569fe Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Sun, 21 Jan 2007 20:05:19 +0000 Subject: [PATCH] Add the clone build method. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2468 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- contrib/manifest.dat.pathsubst | 1 + scripts/util-vserver-vars.pathsubst | 1 + scripts/vserver-build | 4 ++- scripts/vserver-build.clone | 66 +++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 scripts/vserver-build.clone diff --git a/contrib/manifest.dat.pathsubst b/contrib/manifest.dat.pathsubst index bb4fa69..efb97d7 100644 --- a/contrib/manifest.dat.pathsubst +++ b/contrib/manifest.dat.pathsubst @@ -79,6 +79,7 @@ sysv @PKGLIBDIR@/vsysvwrapper @ENSC_HAVE_C99_COMPILER_TRUE@build @PKGLIBDIR@/vcopy @ENSC_HAVE_C99_COMPILER_TRUE@build @PKGLIBDIR@/vunify @ENSC_HAVE_C99_COMPILER_TRUE@build @PKGLIBDIR@/vhashify +@ENSC_HAVE_C99_COMPILER_TRUE@build @PKGLIBDIR@/vclone base @PKGLIBDIR@/vservers.grabinfo.sh build @PKGLIBDIR@/distributions devel @LIBDIR@/pkgconfig/util-vserver.pc diff --git a/scripts/util-vserver-vars.pathsubst b/scripts/util-vserver-vars.pathsubst index 956c93c..7b4b450 100644 --- a/scripts/util-vserver-vars.pathsubst +++ b/scripts/util-vserver-vars.pathsubst @@ -72,6 +72,7 @@ _START_VSERVERS="$__PKGLIBDIR/start-vservers" _VAPT_GET="$__SBINDIR/vapt-get" _VAPT_GET_WORKER="$__PKGLIBDIR/vapt-get-worker" _VATTRIBUTE="$__SBINDIR/vattribute" +_VCLONE="$__PKGLIBDIR/vclone" _VCONTEXT="$__SBINDIR/vcontext" _VDEVMAP="$__SBINDIR/vdevmap" _VDLIMIT="$__SBINDIR/vdlimit" diff --git a/scripts/vserver-build b/scripts/vserver-build index 62b69f5..32f7567 100755 --- a/scripts/vserver-build +++ b/scripts/vserver-build @@ -74,6 +74,8 @@ Possible methods are: the -f option implies -n and -d are relative to the rsync ... -- [-d ] --source [-o ]* ... installs a guest by rsyncing from to the guest root + clone ... -- [-d ] --source + ... clones a guest by linking unified files and copying the rest Please report bugs to $PACKAGE_BUGREPORT" exit 0 @@ -134,7 +136,7 @@ setup_setDefaults "$VSERVER_NAME" case x"$method" in (xlegacy) exec $_VSERVER_LEGACY "$VSERVER_NAME" build "$@" ;; - (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm|xtemplate|xfai|xrsync) + (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm|xtemplate|xfai|xrsync|xclone) . $__PKGLIBDIR/vserver-build.$method ;; (x) panic $"No build-method specified";; diff --git a/scripts/vserver-build.clone b/scripts/vserver-build.clone new file mode 100644 index 0000000..0c728a9 --- /dev/null +++ b/scripts/vserver-build.clone @@ -0,0 +1,66 @@ +# $Id$ --*- sh -*-- + +# Copyright (C) 2003 Enrico Scholz +# +# 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 +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +tmp=$(getopt -o '+d:s:o:' --long debug,pkgmgmt,source: -n "$0" -- "$@") || exit 1 +eval set -- "$tmp" + +. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT" + +DISTRIBUTION=: +use_pkgmgmt= +SOURCE= +declare -a OPTS=() +while true; do + case "$1" in + -d) DISTRIBUTION=$2; shift;; + --debug) set -x;; + --pkgmgmt) use_pkgmgmt=1;; + -s|--source) SOURCE=$2; shift;; + -o) OPTS=( "${OPTS[@]}" "$2" ); shift;; + --) shift; break ;; + *) echo "vserver-build.clone: internal error: unrecognized option '$1'" >&2 + exit 1 + ;; + esac + shift +done + +if test -z "$SOURCE"; then + panic $"vserver-build.clone: --source argument required" +fi + +test -z "${OPTS[*]}" && OPTS=( -Hazx --numeric-ids ) + +getDistribution '' 1 + +base.init +test -z "$use_pkgmgmt" || pkgmgmt.initVariables + +base.initFilesystem "$OPTION_FORCE" +test -z "$use_pkgmgmt" || pkgmgmt.initFilesystem "$OPTION_FORCE" + + +setup_writeOption "$VSERVER_NAME" +setup_writeInitialFstab + +test -z "$BUILD_INITPRE" || "$BUILD_INITPRE" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" + +$_VCLONE --source "$SOURCE"/ --dest "$VDIR"/ + +test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" + +base.setSuccess -- 1.8.1.5