Bug #155993 - Update environment.bz2 after postinst in case
authorZac Medico <zmedico@gentoo.org>
Thu, 7 Feb 2008 23:30:49 +0000 (23:30 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 7 Feb 2008 23:30:49 +0000 (23:30 -0000)
installation phases need to pass some variables to
uninstallation phases.

svn path=/main/trunk/; revision=9281

bin/ebuild.sh
bin/isolated-functions.sh
pym/portage/__init__.py
pym/portage/dbapi/vartree.py

index 6752df9ae93dfd10a569ca0061e255e904c1505b..61f6e18fe44a2a7e5753bbcee89b920cb4ff1ffa 100755 (executable)
@@ -1781,6 +1781,16 @@ if [ -n "${EBUILD_SH_ARGS}" ] ; then
                        ebuild_phase_with_hooks pkg_${EBUILD_SH_ARGS}
                        set +x
                fi
+               if [[ $EBUILD_PHASE == postinst ]] && [[ -n $PORTAGE_UPDATE_ENV ]]; then
+                       # Update environment.bz2 in case installation phases
+                       # need to pass some variables to uninstallation phases.
+                       (
+                               unset S _E_DOCDESTTREE_ _E_EXEDESTTREE_
+                               save_ebuild_env | filter_readonly_variables \
+                                       --filter-sandbox --allow-extra-vars | \
+                                       bzip2 -c -f9 > "$PORTAGE_UPDATE_ENV"
+                       )
+               fi
                ;;
        unpack|compile|test|clean|install)
                if [ "${SANDBOX_DISABLED="0"}" == "0" ]; then
index 5750ce8ddd691b7b227db40d6b5b49e5db1c02b7..ee73e7bcda3783786b29718366746d4760074149 100755 (executable)
@@ -470,7 +470,8 @@ save_ebuild_env() {
                        PORTAGE_COLORMAP PORTAGE_CONFIGROOT PORTAGE_DEBUG \
                        PORTAGE_DEPCACHEDIR PORTAGE_GID PORTAGE_INST_GID \
                        PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID \
-                       PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_WORKDIR_MODE PORTDIR \
+                       PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_UPDATE_ENV \
+                       PORTAGE_WORKDIR_MODE PORTDIR \
                        PORTDIR_OVERLAY ${!PORTAGE_SANDBOX_*} PREROOTPATH \
                        PROFILE_PATHS PWORKDIR QA_INTERCEPTORS \
                        RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL \
index 0dc6f1c40cf6ed73ac6780f8b94bdc8f42a95272..741c99078b9f5adcd022386774177176b1efb623 100644 (file)
@@ -886,7 +886,7 @@ class config(object):
                "PORTAGE_IUSE",
                "PORTAGE_LOG_FILE", "PORTAGE_MASTER_PID",
                "PORTAGE_PYM_PATH", "PORTAGE_REPO_NAME", "PORTAGE_RESTRICT",
-               "PORTAGE_TMPDIR", "PORTAGE_WORKDIR_MODE",
+               "PORTAGE_TMPDIR", "PORTAGE_UPDATE_ENV", "PORTAGE_WORKDIR_MODE",
                "PORTDIR", "PORTDIR_OVERLAY", "PREROOTPATH", "PROFILE_PATHS",
                "ROOT", "ROOTPATH", "STARTDIR", "T", "TMP", "TMPDIR",
                "USE_EXPAND", "USE_ORDER", "WORKDIR",
index 3b11823b635a39069646279575c844ca04723081..002a9f373a977591ca76b262011509bfa81bf8ae 100644 (file)
@@ -2152,8 +2152,12 @@ class dblink(object):
                self.vartree.dbapi.libmap.update()
 
                #do postinst script
+               self.settings["PORTAGE_UPDATE_ENV"] = \
+                       os.path.join(self.dbpkgdir, "environment.bz2")
+               self.settings.backup_changes("PORTAGE_UPDATE_ENV")
                a = doebuild(myebuild, "postinst", destroot, self.settings, use_cache=0,
                        tree=self.treetype, mydbapi=mydbapi, vartree=self.vartree)
+               self.settings.pop("PORTAGE_UPDATE_ENV", None)
 
                # XXX: Decide how to handle failures here.
                if a != os.EX_OK: