summaryrefslogtreecommitdiffstats
path: root/pym/portage/package/ebuild/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/package/ebuild/config.py')
-rw-r--r--pym/portage/package/ebuild/config.py26
1 files changed, 15 insertions, 11 deletions
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index a978e33d1..122a7f6ed 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -344,7 +344,6 @@ class config(object):
self.modifiedkeys = []
self.uvlist = []
self._accept_chost_re = None
- self._license_manager = LicenseManager()
self._accept_properties = None
self._features_overrides = []
@@ -429,7 +428,14 @@ class config(object):
self.features._features = copy.deepcopy(clone.features._features)
self._features_overrides = copy.deepcopy(clone._features_overrides)
- self._license_manager = copy.deepcopy(clone._license_manager)
+ #Strictly speaking _license_manager is not immutable. Users need to ensure that
+ #extract_global_changes() is called right after __init__ (if at all).
+ #It also has the mutable member _undef_lic_groups. It is used to track
+ #undifiend license groups, to not display an error message for the same
+ #group again and again. Because of this, it's useful to share it between
+ #all LicenseManager instances.
+ self._license_manager = clone._license_manager
+
self._accept_properties = copy.deepcopy(clone._accept_properties)
self._ppropertiesdict = copy.deepcopy(clone._ppropertiesdict)
self._penvdict = copy.deepcopy(clone._penvdict)
@@ -849,6 +855,13 @@ class config(object):
self._use_manager.extract_global_USE_changes( \
self.configdict["conf"].get("USE", ""))
+ #Read license_groups and optionally license_groups and package.license from user config
+ self._license_manager = LicenseManager(locations, abs_user_config, user_config=local_config)
+ #Extract '*/*' entries from package.license
+ self.configdict["conf"]["ACCEPT_LICENSE"] = \
+ self._license_manager.extract_global_changes( \
+ self.configdict["conf"].get("ACCEPT_LICENSE", ""))
+
if local_config:
locations.append(abs_user_config)
@@ -877,12 +890,6 @@ class config(object):
v = accept_keywords_defaults
self.pkeywordsdict.setdefault(k.cp, {})[k] = v
- #package.license
- self._license_manager.read_config_files(abs_user_config)
- self.configdict["conf"]["ACCEPT_LICENSE"] = \
- self._license_manager.extract_global_changes(\
- self.configdict["conf"].get("ACCEPT_LICENSE", ""))
-
#package.properties
propdict = grabdict_package(os.path.join(
abs_user_config, "package.properties"), recursive=1, allow_wildcard=True)
@@ -1013,9 +1020,6 @@ class config(object):
else:
self.pprovideddict[mycatpkg]=[x]
- # parse licensegroups
- self._license_manager.parse_license_groups(locations)
-
# reasonable defaults; this is important as without USE_ORDER,
# USE will always be "" (nothing set)!
if "USE_ORDER" not in self: