Workaround rpm-fake brokenness by setting up a persistent context.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 22 Aug 2008 21:41:47 +0000 (21:41 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 22 Aug 2008 21:41:47 +0000 (21:41 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2765 94cd875c-1c1d-0410-91d2-eb244daf1a30

scripts/vserver-build.functions
scripts/vserver-build.yum

index f3536d7..1df67e5 100644 (file)
@@ -240,11 +240,25 @@ function base._initVariables
     findFile BUILD_INITPOST "$__CONFDIR/.distributions/$DISTRIBUTION/initpost"  "$__DISTRIBDIR/$DISTRIBUTION/initpost" ""
 }
 
+declare -a __BASE_CLEANUP
+function base.pushCleanup
+{
+    __BASE_CLEANUP=( "${__BASE_CLEANUP[@]}" "$*" )
+}
+
+function base.popCleanup
+{
+    unset __BASE_CLEANUP[$((${#__BASE_CLEANUP[@]} - 1))]
+}
+
 function base.__cleanup
 {
-    test -z "$OPTION_KEEP"    || return 0
-    test -z "$__BASE_SUCCESS" || return 0
+    for cmd in "${__BASE_CLEANUP[@]}"; do
+       $cmd
+    done
     
+    test -z "$__BASE_SUCCESS" || return 0
+    test -z "$OPTION_KEEP"    || return 0
     rm -rf "${__BASE_GENERATED_FILES[@]}"
 }
 
index 4409927..4ae697b 100644 (file)
@@ -53,6 +53,21 @@ setup_writeOption "$VSERVER_NAME"
 setup_writeInitialFstab
 
 test -z "$BUILD_INITPRE"  || "$BUILD_INITPRE" "$SETUP_CONFDIR"  "$UTIL_VSERVER_VARS"
+
+if $_VSERVER_INFO - FEATURE persistent; then
+    $_VSPACE --new --mount --fs -- \
+       $_VCONTEXT --create ${SETUP_CONTEXT:+--xid "$SETUP_CONTEXT"} --silent -- \
+       $_VUNAME --set --xid self -t context="rpm-fake $SETUP_CONFDIR" -- \
+       $_VSPACE --set --mount --fs -- \
+       $_SAVE_CTXINFO "$SETUP_CONFDIR" \
+       $_VATTRIBUTE --set --xid self --secure --flag persistent -- \
+       $_VCONTEXT --xid self --migrate-self --endsetup -- \
+       /bin/true
+    RPM_FAKE_CTX=`cat $SETUP_CONFDIR/run`
+    export RPM_FAKE_CTX
+    base.pushCleanup $_VATTRIBUTE --xid "$RPM_FAKE_CTX" --flag '!persistent'
+fi
+
 rpm.initDB           "$SETUP_CONFDIR"
 rpm.importGPGPubKeys "$SETUP_CONFDIR" \
     "$__CONFDIR/.distributions/$DISTRIBUTION/pubkeys" \
@@ -60,6 +75,12 @@ rpm.importGPGPubKeys "$SETUP_CONFDIR" \
     "$__DISTRIBDIR/$DISTRIBUTION/pubkeys"
 yum.installBasePackages "$SETUP_CONFDIR" "$PKGINSTALLDIR"
 $_VYUM "$SETUP_CONFDIR" -- clean all
+
+if $_VSERVER_INFO - FEATURE persistent; then
+    base.popCleanup
+    $_VATTRIBUTE --xid "$RPM_FAKE_CTX" --flag '!persistent'
+fi
+
 test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
 
 base.setSuccess