When filtering the backupenv in create_trees(), be more
authorZac Medico <zmedico@gentoo.org>
Fri, 23 Nov 2007 00:08:00 +0000 (00:08 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 23 Nov 2007 00:08:00 +0000 (00:08 -0000)
selective and ensure that special variables that come from
the config constructor are preserved.

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

pym/portage/__init__.py

index 0146d84315c7aece019a74b11d7fed1b4f9b5999..e3f2dd2c62cced78a7036e7b1816972656d0f145 100644 (file)
@@ -5770,7 +5770,21 @@ def create_trees(config_root=None, target_root=None, trees=None):
                # with ROOT != "/", so we wipe out the "backupenv" for the
                # config that is associated with ROOT == "/" and regenerate
                # it's incrementals.
-               settings.configdict["backupenv"].clear()
+
+               # Preserve backupenv values that are initialized in the config
+               # constructor. Also, preserve XARGS since it is set by the
+               # portage.data module.
+               backupenv_whitelist = set(["FEATURES", "PORTAGE_BIN_PATH",
+                       "PORTAGE_CONFIGROOT", "PORTAGE_DEPCACHEDIR",
+                       "PORTAGE_GID", "PORTAGE_INST_GID", "PORTAGE_INST_UID",
+                       "PORTAGE_PYM_PATH", "PORTDIR_OVERLAY", "ROOT", "USE_ORDER",
+                       "XARGS"])
+               backupenv = settings.configdict["backupenv"]
+               for k, v in os.environ.iteritems():
+                       if k in backupenv_whitelist:
+                               continue
+                       if v == backupenv.get(k):
+                               del backupenv[k]
                settings.regenerate()
                settings.lock()
                settings.validate()