From: Thierry Parmentelat Date: Thu, 11 Mar 2010 17:23:47 +0000 (+0000) Subject: when systemslices rpm gets updated, make sure the change makes it to the .vref image X-Git-Tag: VserverReference-5.0-2~2 X-Git-Url: http://git.onelab.eu/?p=vserver-reference.git;a=commitdiff_plain;h=e15c3540a3f63352d0dc5ea44820891024527ade when systemslices rpm gets updated, make sure the change makes it to the .vref image --- diff --git a/build.sh b/build.sh index a5ccb40..aa04382 100755 --- a/build.sh +++ b/build.sh @@ -12,7 +12,8 @@ # Marc E. Fiuczynski # Copyright (C) 2004-2007 The Trustees of Princeton University # -# $Id: build.sh,v 1.20 2007/09/06 20:41:23 faiyaza Exp $ +# $Id$ +# $URL$ # PATH=/sbin:/bin:/usr/sbin:/usr/bin @@ -127,6 +128,10 @@ systemvserver_count=$(ls ../build/config.${pldistro}/vserver-*.pkgs 2> /dev/null rm -rf ${vdir} rm -f ${vdir}.changes mv ${vdir}-tmp ${vdir} + + # cleanup yum remainings + rm -rf ${vdir}/build ${vdir}/longbuildroot + echo "--------DONE BUILDING system vserver ${NAME}: $(date)" done @@ -138,4 +143,7 @@ postfile=$(pl_locateDistroFile ../build/ ${pldistro} vserver.post) # fix sudoers config [ -f ${vref}/etc/sudoers ] && echo -e "\nDefaults\tlogfile=/var/log/sudo\n" >> ${vref}/etc/sudoers +# cleanup yum remainings +rm -rf ${vref}/build ${vref}/longbuildroot + exit 0 diff --git a/cron.d/vserver-reference b/cron.d/vserver-reference index 9bf8643..0917331 100644 --- a/cron.d/vserver-reference +++ b/cron.d/vserver-reference @@ -5,7 +5,7 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: pl_mom.cron,v 1.1 2006/04/28 19:12:09 mlhuang Exp $ +# $Id$ # @M@ @H@ * * * root /etc/init.d/vserver-reference start >/dev/null 2>&1 diff --git a/initscripts/vserver-reference b/initscripts/vserver-reference index ab1c42f..0785caa 100755 --- a/initscripts/vserver-reference +++ b/initscripts/vserver-reference @@ -15,11 +15,13 @@ case "$1" in start|restart|reload) ;; + force) + FORCE=true;; stop|status) exit 0 ;; *) - echo $"Usage: $0 {start|stop|restart|status}" + echo $"Usage: $0 {start|stop|restart|reload|status|force}" exit 1 ;; esac @@ -88,9 +90,15 @@ for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*/*.cloned ; do # e.g. VREFNAME=planetflow-f8-i386 VREFNAME=$(echo $SLICEFAMILY | sed -e "s,^[^-]*-,$NAME-,") + VREFPATH="$__DEFAULT_VSERVERDIR/.vref/$VREFNAME" + + # do not redo existing vref's unless force is mentioned + [ -z "$FORCE" -a -d "$VREFPATH" ] && continue + [ -z "$FORCE" ] && message=Building + [ -n "$FORCE" ] && message=Force-building + # Copy base reference image - if [ ! -d "$__DEFAULT_VSERVERDIR/.vref/$VREFNAME" ] ; then - echo -n $"Building VServer reference image for $NAME in $VREFNAME: " >&3 2>&4 + echo -n $"$message VServer reference image for $NAME in $VREFNAME: " >&3 2>&4 # Build in temporary directory mkdir -p "$__DEFAULT_VSERVERDIR/.vtmp" @@ -98,9 +106,9 @@ for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*/*.cloned ; do mkdir -p "$__DEFAULT_VSERVERDIR/.vref" # build the systemvserver from the one it was originally cloned from - REF="$__DEFAULT_VSERVERDIR/.vref/$SLICEFAMILY" - if [ -d "$REF" ] ; then - "$_VCLONE" "$REF"/ "$TMP"/ + FAMILYREF="$__DEFAULT_VSERVERDIR/.vref/$SLICEFAMILY" + if [ -d "$FAMILYREF" ] ; then + "$_VCLONE" "$FAMILYREF"/ "$TMP"/ RETVAL=$? else RETVAL=1 @@ -117,14 +125,15 @@ for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*/*.cloned ; do # Move it to its permanent location when complete if [ $RETVAL -eq 0 ] ; then - mv "$TMP" "$__DEFAULT_VSERVERDIR/.vref/$VREFNAME" + # if in force mode, cleanup + [ -d "$VREFPATH" ] && rm -rf "$VREFPATH" + mv "$TMP" "$VREFPATH" success >&3 2>&4 else rm -rf "$TMP" failure >&3 2>&4 fi echo >&3 2>&4 - fi done echo -n $"Updating VServer reference images: " >&3 2>&4 diff --git a/vserver-reference.spec b/vserver-reference.spec index a701fe8..22b79da 100644 --- a/vserver-reference.spec +++ b/vserver-reference.spec @@ -108,7 +108,7 @@ sed -i -e "s/@M@/$M/" -e "s/@H@/$H/" %{_sysconfdir}/cron.d/vserver-reference %post systemslices-%{slicefamily} # need to do this for systemslices, for when a new image shows up # we've already the service installed and enabled, as systemslices requires the plain package -[ "$PL_BOOTCD" = "1" ] || service vserver-reference start +[ "$PL_BOOTCD" = "1" ] || service vserver-reference force %changelog * Fri Jan 29 2010 Thierry Parmentelat - VserverReference-5.0-1