Add an rsync build method.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 24 Nov 2006 15:20:09 +0000 (15:20 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 24 Nov 2006 15:20:09 +0000 (15:20 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2398 94cd875c-1c1d-0410-91d2-eb244daf1a30

configure.ac
contrib/manifest.dat.pathsubst
scripts/Makefile-files
scripts/util-vserver-vars.pathsubst
scripts/vserver-build
scripts/vserver-build.rsync [new file with mode: 0644]

index 7f4994f..fc45832 100644 (file)
@@ -61,6 +61,7 @@ ENSC_PATHPROG(GZIP,      gzip,    [gzip])
 ENSC_PATHPROG(BZIP2,     bzip2,   [bzip2])
 ENSC_PATHPROG(CPIO,      cpio,    [cpio])
 ENSC_PATHPROG(RESTORE,   restore, [restore])
+ENSC_PATHPROG(RSYNC,     rsync,   [rsync])
 
 ENSC_PATHPROG(DOXYGEN,   doxygen,  [:])
 ENSC_PATHPROG(XSLTP,     xsltp,    [:])
index 0fbdc08..ac0dd6a 100644 (file)
@@ -9,6 +9,7 @@ build  @PKGLIBDIR@/vserver-build.fai
 build  @PKGLIBDIR@/vserver-build.yum
 build  @PKGLIBDIR@/vserver-build.rpm
 build  @PKGLIBDIR@/vserver-build.template
+build  @PKGLIBDIR@/vserver-build.rsync
 build  @PKGLIBDIR@/vserver-build.functions
 build  @PKGLIBDIR@/vserver-build.functions.apt
 build  @PKGLIBDIR@/vserver-build.functions.rpm
index a4ddccb..fda81ee 100644 (file)
@@ -46,6 +46,7 @@ scripts_pkglib_src_DTA =      scripts/functions \
                                scripts/vserver-build.rpm \
                                scripts/vserver-build.yum \
                                scripts/vserver-build.template \
+                               scripts/vserver-build.rsync \
                                scripts/vserver-build.functions \
                                scripts/vserver-build.functions.apt \
                                scripts/vserver-build.functions.rpm \
index 4548503..28c4054 100644 (file)
@@ -131,6 +131,7 @@ _RESTORE="@RESTORE@"
 _RM="@RM@"
 _RMDIR="@RMDIR@"
 _RMMOD="@RMMOD@"
+_RSYNC="@RSYNC@"
 _SED="@SED@"
 _SH="@SH@"
 _TAC="@TAC@"
index f2180fd..62b69f5 100755 (executable)
@@ -72,6 +72,8 @@ Possible methods are:
                      -n <nfsroot> specifies the 'NFS' root explicitly
                      -d <fai_dir> specifies the location of the FAI profile
                      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
 
 Please report bugs to $PACKAGE_BUGREPORT"
     exit 0
@@ -132,7 +134,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)
+    (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm|xtemplate|xfai|xrsync)
                . $__PKGLIBDIR/vserver-build.$method
                ;;
     (x)                panic $"No build-method specified";;
diff --git a/scripts/vserver-build.rsync b/scripts/vserver-build.rsync
new file mode 100644 (file)
index 0000000..6fff5dd
--- /dev/null
@@ -0,0 +1,67 @@
+# $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.rsync: internal error: unrecognized option '$1'" >&2
+                       exit 1
+                       ;;
+    esac
+    shift
+done
+
+if test -z "$SOURCE"; then
+    panic $"vserver-build.rsync: --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"
+
+$_RSYNC "${OPTS[@]}" "$SOURCE"/ "$VDIR"/
+test -z "$1" || "$@"
+
+test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
+
+base.setSuccess