summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/__init__.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 8a81cea90..7e1d200f5 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -1706,6 +1706,7 @@ class config:
cp = dep_getkey(mycpv)
cpv_slot = self.mycpv
pkginternaluse = ""
+ iuse = ""
if mydb:
slot, iuse = mydb.aux_get(self.mycpv, ["SLOT", "IUSE"])
cpv_slot = "%s:%s" % (self.mycpv, slot)
@@ -1766,6 +1767,9 @@ class config:
has_changed = True
self.configdict["pkg"]["PKGUSE"] = self.puse[:] # For saving to PUSE file
self.configdict["pkg"]["USE"] = self.puse[:] # this gets appended to USE
+ if iuse != self.configdict["pkg"].get("IUSE",""):
+ self.configdict["pkg"]["IUSE"] = iuse
+ has_changed = True
# CATEGORY is essential for doebuild calls
self.configdict["pkg"]["CATEGORY"] = mycpv.split("/")[0]
if has_changed:
@@ -2029,8 +2033,6 @@ class config:
usesplit = [ x for x in myflags if \
x not in self.usemask]
- usesplit.sort()
-
# Use the calculated USE flags to regenerate the USE_EXPAND flags so
# that they are consistent.
for var in use_expand:
@@ -2048,6 +2050,18 @@ class config:
# exports them as empty. This is required for vars such as
# LINGUAS, where unset and empty have different meanings.
self[var] = " ".join(var_split)
+ else:
+ # if unset, we enable everything in IUSE that's not masked
+ iuse = self.configdict["pkg"].get("IUSE")
+ if iuse:
+ var_split = []
+ for x in iuse.split():
+ x = x.lstrip("+-")
+ if x.startswith(prefix) and x not in self.usemask:
+ var_split.append(x[prefix_len:])
+ usesplit.append(x)
+ if var_split:
+ self[var] = " ".join(var_split)
# Pre-Pend ARCH variable to USE settings so '-*' in env doesn't kill arch.
if self.configdict["defaults"].has_key("ARCH"):
@@ -2055,6 +2069,7 @@ class config:
if self.configdict["defaults"]["ARCH"] not in usesplit:
usesplit.insert(0,self.configdict["defaults"]["ARCH"])
+ usesplit.sort()
self.configlist[-1]["USE"]= " ".join(usesplit)
self.already_in_regenerate = 0