* [gentoo-portage-dev] [PATCH v2 2/2] portage.package.ebuild.config: Always export filtered USE_EXPAND vars
@ 2016-05-21 7:15 99% ` Michał Górny
0 siblings, 0 replies; 1+ results
From: Michał Górny @ 2016-05-21 7:15 UTC (permalink / raw
To: gentoo-portage-dev; +Cc: Michał Górny
Ensure that all USE_EXPAND variables are always exported with filtered
USE flags inside, even if none of those flags are declared in IUSE.
This is the behavior required for EAPI 5+ by the PMS.
Since the behavior for earlier EAPIs is left undefined and having
different behavior would be confusing to users, apply it in earlier
EAPIs as well.
---
bin/ebuild.sh | 6 ----
pym/portage/package/ebuild/config.py | 55 ++----------------------------------
2 files changed, 3 insertions(+), 58 deletions(-)
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index 5b3146d..edf885f 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -690,12 +690,6 @@ if ! has "$EBUILD_PHASE" clean cleanrm ; then
fi
fi
-# unset USE_EXPAND variables that contain only the special "*" token
-for x in ${USE_EXPAND} ; do
- [ "${!x}" == "*" ] && unset ${x}
-done
-unset x
-
if has nostrip ${FEATURES} ${RESTRICT} || has strip ${RESTRICT}
then
export DEBUGBUILD=1
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 5f19996..d92f5f6 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -1330,47 +1330,7 @@ class config(object):
filtered_var_split.append(x)
var_split = filtered_var_split
- if var_split:
- value = ' '.join(var_split)
- else:
- # Don't export empty USE_EXPAND vars unless the user config
- # exports them as empty. This is required for vars such as
- # LINGUAS, where unset and empty have different meanings.
- # The special '*' token is understood by ebuild.sh, which
- # will unset the variable so that things like LINGUAS work
- # properly (see bug #459350).
- if has_wildcard:
- value = '*'
- else:
- if has_iuse:
- already_set = False
- # Skip the first 'env' configdict, in order to
- # avoid infinite recursion here, since that dict's
- # __getitem__ calls the current __getitem__.
- for d in self._settings.lookuplist[1:]:
- if key in d:
- already_set = True
- break
-
- if not already_set:
- for x in self._unfiltered_use:
- if x[:prefix_len] == prefix:
- already_set = True
- break
-
- if already_set:
- value = ''
- else:
- value = '*'
- else:
- # It's not in IUSE, so just allow the variable content
- # 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.
- value = None
-
- return value
+ return ' '.join(var_split)
def setcpv(self, mycpv, use_cache=None, mydb=None):
"""
@@ -1727,7 +1687,7 @@ class config(object):
self, unfiltered_use, use, self.usemask,
portage_iuse, use_expand_split, self._use_expand_dict)
- use_expand_iuses = {}
+ use_expand_iuses = dict((k, set()) for k in use_expand_split)
for x in portage_iuse:
x_split = x.split('_')
if len(x_split) == 1:
@@ -1735,18 +1695,9 @@ class config(object):
for i in range(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)
+ v = use_expand_iuses[k].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.items():
if k + '_*' in use:
use.update( x for x in use_expand_iuse if x not in usemask )
--
2.8.2
^ permalink raw reply related [relevance 99%]
Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2016-05-21 7:15 [gentoo-portage-dev] [PATCH v2 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective Michał Górny
2016-05-21 7:15 99% ` [gentoo-portage-dev] [PATCH v2 2/2] portage.package.ebuild.config: Always export filtered USE_EXPAND vars Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox