config: fix make.defaults inherit of make.globals v2.2.0_alpha78
authorZac Medico <zmedico@gentoo.org>
Sat, 26 Nov 2011 02:56:54 +0000 (18:56 -0800)
committerZac Medico <zmedico@gentoo.org>
Sat, 26 Nov 2011 02:57:18 +0000 (18:57 -0800)
Since commit e544ee13527a0568de2b556510280ed96fc1b3ff, make.defaults
inheritance of variables from make.globals has been broke, since that
commit excluded make.globals from expand_map. This broke settings like
PORTAGE_ELOG_CLASSES="${PORTAGE_ELOG_CLASSES} qa" from the developer
profile, as reported in bug #391323, comment #4.

pym/portage/package/ebuild/config.py

index 835cd2385b1f64211c5d04aafa1a410f67c46b52..2995740bca12566db1a33cfe67e5823141d899ea 100644 (file)
@@ -297,7 +297,29 @@ class config(object):
                        eroot = locations_manager.eroot
                        self.global_config_path = locations_manager.global_config_path
 
-                       make_globals = getconfig(os.path.join(self.global_config_path, 'make.globals'))
+                       # The expand_map is used for variable substitution
+                       # in getconfig() calls, and the getconfig() calls
+                       # update expand_map with the value of each variable
+                       # assignment that occurs. Variable substitution occurs
+                       # in the following order, which corresponds to the
+                       # order of appearance in self.lookuplist:
+                       #
+                       #   * env.d
+                       #   * make.globals
+                       #   * make.defaults
+                       #   * make.conf
+                       #
+                       # Notably absent is "env", since we want to avoid any
+                       # interaction with the calling environment that might
+                       # lead to unexpected results.
+                       expand_map = {}
+                       self._expand_map = expand_map
+
+                       env_d = getconfig(os.path.join(eroot, "etc", "profile.env"),
+                               expand=expand_map)
+
+                       make_globals = getconfig(os.path.join(
+                               self.global_config_path, 'make.globals'), expand=expand_map)
                        if make_globals is None:
                                make_globals = {}
 
@@ -345,30 +367,9 @@ class config(object):
                        self.configlist.append({})
                        self.configdict["pkginternal"] = self.configlist[-1]
 
-                       # The expand_map is used for variable substitution
-                       # in getconfig() calls, and the getconfig() calls
-                       # update expand_map with the value of each variable
-                       # assignment that occurs. Variable substitution occurs
-                       # in the following order, which corresponds to the
-                       # order of appearance in self.lookuplist:
-                       #
-                       #   * env.d
-                       #   * make.globals
-                       #   * make.defaults
-                       #   * make.conf
-                       #
-                       # Notably absent is "env", since we want to avoid any
-                       # interaction with the calling environment that might
-                       # lead to unexpected results.
-                       expand_map = {}
-                       self._expand_map = expand_map
-
-                       env_d = getconfig(os.path.join(eroot, "etc", "profile.env"),
-                               expand=expand_map)
                        # env_d will be None if profile.env doesn't exist.
                        if env_d:
                                self.configdict["env.d"].update(env_d)
-                               expand_map.update(env_d)
 
                        # backupenv is used for calculating incremental variables.
                        if env is None: