public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
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 --]

  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