From 4acd18c430992b7fbc536946067f1bc47bf2022b Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Fri, 24 Nov 2006 15:20:09 +0000 Subject: [PATCH] Add an rsync build method. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2398 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- configure.ac | 1 + contrib/manifest.dat.pathsubst | 1 + scripts/Makefile-files | 1 + scripts/util-vserver-vars.pathsubst | 1 + scripts/vserver-build | 4 ++- scripts/vserver-build.rsync | 67 +++++++++++++++++++++++++++++++++++++ 6 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 scripts/vserver-build.rsync diff --git a/configure.ac b/configure.ac index 7f4994f..fc45832 100644 --- a/configure.ac +++ b/configure.ac @@ -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, [:]) diff --git a/contrib/manifest.dat.pathsubst b/contrib/manifest.dat.pathsubst index 0fbdc08..ac0dd6a 100644 --- a/contrib/manifest.dat.pathsubst +++ b/contrib/manifest.dat.pathsubst @@ -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 diff --git a/scripts/Makefile-files b/scripts/Makefile-files index a4ddccb..fda81ee 100644 --- a/scripts/Makefile-files +++ b/scripts/Makefile-files @@ -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 \ diff --git a/scripts/util-vserver-vars.pathsubst b/scripts/util-vserver-vars.pathsubst index 4548503..28c4054 100644 --- a/scripts/util-vserver-vars.pathsubst +++ b/scripts/util-vserver-vars.pathsubst @@ -131,6 +131,7 @@ _RESTORE="@RESTORE@" _RM="@RM@" _RMDIR="@RMDIR@" _RMMOD="@RMMOD@" +_RSYNC="@RSYNC@" _SED="@SED@" _SH="@SH@" _TAC="@TAC@" diff --git a/scripts/vserver-build b/scripts/vserver-build index f2180fd..62b69f5 100755 --- a/scripts/vserver-build +++ b/scripts/vserver-build @@ -72,6 +72,8 @@ Possible methods are: -n specifies the 'NFS' root explicitly -d specifies the location of the FAI profile 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 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 index 0000000..6fff5dd --- /dev/null +++ b/scripts/vserver-build.rsync @@ -0,0 +1,67 @@ +# $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.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 -- 1.8.1.5