From 64e374135d24a1624561c814ad3e650ffbd5ee74 Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Fri, 22 Aug 2008 21:41:47 +0000 Subject: [PATCH] Workaround rpm-fake brokenness by setting up a persistent context. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2765 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- scripts/vserver-build.functions | 18 ++++++++++++++++-- scripts/vserver-build.yum | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/scripts/vserver-build.functions b/scripts/vserver-build.functions index f3536d7..1df67e5 100644 --- a/scripts/vserver-build.functions +++ b/scripts/vserver-build.functions @@ -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[@]}" } diff --git a/scripts/vserver-build.yum b/scripts/vserver-build.yum index 4409927..4ae697b 100644 --- a/scripts/vserver-build.yum +++ b/scripts/vserver-build.yum @@ -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 -- 1.8.1.5