diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index d78491c..0475b1b 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -3,7 +3,6 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ - VERSION="$Rev$"[6:-2] + "-svn" # =========================================================================== @@ -110,7 +109,6 @@ except ImportError, e: sys.stderr.write(" "+str(e)+"\n\n") raise - try: import portage._selinux as selinux except OSError, e: @@ -2338,6 +2336,7 @@ class config(object): for k in pkg_configdict: if k != 'USE': env_configdict.pop(k, None) + del k lazy_vars = self._lazy_vars(built_use, self) env_configdict.addLazySingleton('ACCEPT_LICENSE', @@ -2391,32 +2390,36 @@ class config(object): lazy_use_expand = self._lazy_use_expand(use, self.usemask, iuse_implicit, use_expand_split, self._use_expand_dict) - use_expand_iuses = {} - for x in iuse_implicit: - x_split = x.split('_') - if len(x_split) == 1: - continue - for i in xrange(len(x_split) - 1): - k = '_'.join(x_split[:i+1]) - if k in use_expand_split: - v = use_expand_iuses.get(k) - if v is None: - v = set() - use_expand_iuses[k] = v - v.add(x) - break # If it's not in IUSE, variable content is allowed # to pass through if it is defined somewhere. This # allows packages that support LINGUAS but don't # declare it in IUSE to use the variable outside of the # USE_EXPAND context. - for k, use_expand_iuse in use_expand_iuses.iteritems(): - if k + '_*' in use: - use.update( x for x in use_expand_iuse if x not in usemask ) - k = k.upper() - self.configdict['env'].addLazySingleton(k, - lazy_use_expand.__getitem__, k) + + iuse_implicit = sorted( x for x in iuse_implicit if x.find('_') != -1 ) + use_expand_iuse = set() + k = None + k_len = None + for x in iuse_implicit: + if not k or x[:k_len] != k: + if k: + if k + '_*' in use: + use.update( use_expand_iuse.difference(usemask) ) + k = k.upper() + self.configdict['env'].addLazySingleton(k, + lazy_use_expand.__getitem__, k) + k = None + k_len = None + use_expand_iuse = set() + l = [y for y in use_expand_split if x[:len(y)] == y] + if l: + k = l[0] + k_len = len(k) + else: + continue + use_expand_iuse.add(x) + del k, k_len, x, use_expand_iuse # Filtered for the ebuild environment. Store this in a separate # attribute since we still want to be able to see global USE @@ -2860,7 +2863,6 @@ class config(object): # an incremental! myincrementals.remove("USE") - mydbs = self.configlist[:-1] mydbs.append(self.backupenv) @@ -6362,7 +6364,6 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, # so do not check them again. checkme = [] - if not emerge_skip_distfiles and \ need_distfiles and not fetch( fetchme, mysettings, listonly=listonly, fetchonly=fetchonly): @@ -7223,7 +7224,6 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): assert(False) # This point should not be reachable - def dep_expand(mydep, mydb=None, use_cache=1, settings=None): if not len(mydep): return mydep @@ -7702,7 +7702,6 @@ def getmaskingstatus(mycpv, settings=None, portdb=None): return rValue - auxdbkeys=[ 'DEPEND', 'RDEPEND', 'SLOT', 'SRC_URI', 'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION', @@ -8400,7 +8399,6 @@ def init_legacy_globals(): root = settings["ROOT"] - # ======================================================================== # COMPATIBILITY # These attributes should not be used