From: Zac Medico <zmedico@gentoo.org>
To: gentoo-portage-dev@lists.gentoo.org, "Michał Górny" <mgorny@gentoo.org>
Subject: Re: [gentoo-portage-dev] [PATCH 2/2] portage.package.ebuild.config: Always export filtered USE_EXPAND vars
Date: Sun, 4 Feb 2018 18:48:33 -0800 [thread overview]
Message-ID: <de77b3ab-537d-a23f-109a-639dbc8723fb@gentoo.org> (raw)
In-Reply-To: <20180204134046.26868-2-mgorny@gentoo.org>
[-- Attachment #1.1: Type: text/plain, Size: 3770 bytes --]
On 02/04/2018 05:40 AM, Michał Górny wrote:
> 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 94a44d534..a914384d6 100755
> --- a/bin/ebuild.sh
> +++ b/bin/ebuild.sh
> @@ -704,12 +704,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 35cf4f614..739896923 100644
> --- a/pym/portage/package/ebuild/config.py
> +++ b/pym/portage/package/ebuild/config.py
> @@ -1359,47 +1359,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_recursion_gate(f):
> """
> @@ -1775,7 +1735,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:
> @@ -1783,18 +1743,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)
This assignment to v is unnecessary, but otherwise both patches look good.
--
Thanks,
Zac
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]
next prev parent reply other threads:[~2018-02-05 2:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-04 13:40 [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective Michał Górny
2018-02-04 13:40 ` [gentoo-portage-dev] [PATCH 2/2] portage.package.ebuild.config: Always export filtered USE_EXPAND vars Michał Górny
2018-02-05 2:48 ` Zac Medico [this message]
2018-02-05 22:46 ` [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective Michael Lienhardt
2018-02-05 23:05 ` Zac Medico
2018-02-06 8:36 ` Michael Lienhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=de77b3ab-537d-a23f-109a-639dbc8723fb@gentoo.org \
--to=zmedico@gentoo.org \
--cc=gentoo-portage-dev@lists.gentoo.org \
--cc=mgorny@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox