Add the clone build method.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Sun, 21 Jan 2007 20:05:19 +0000 (20:05 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Sun, 21 Jan 2007 20:05:19 +0000 (20:05 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2468 94cd875c-1c1d-0410-91d2-eb244daf1a30

contrib/manifest.dat.pathsubst
scripts/util-vserver-vars.pathsubst
scripts/vserver-build
scripts/vserver-build.clone [new file with mode: 0644]

index bb4fa69..efb97d7 100644 (file)
@@ -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
index 956c93c..7b4b450 100644 (file)
@@ -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"
index 62b69f5..32f7567 100755 (executable)
@@ -74,6 +74,8 @@ Possible methods are:
                      the -f option implies -n and -d are relative to the <fai_vserver>
     rsync       ... -- [-d <distribution>] --source <source> [-o <rsync option>]*
                 ...  installs a guest by rsyncing from <source> to the guest root
+    clone       ... -- [-d <distribution>] --source <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 (file)
index 0000000..0c728a9
--- /dev/null
@@ -0,0 +1,66 @@
+# $Id$ --*- sh -*--
+
+# Copyright (C) 2003 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
+# 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