public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective
@ 2016-05-20 22:26 Michał Górny
  2016-05-20 22:26 ` [gentoo-portage-dev] [PATCH 2/2] ebuild.config: Fix filtering all USE_EXPAND variables in EAPI 5+ Michał Górny
  0 siblings, 1 reply; 7+ messages in thread
From: Michał Górny @ 2016-05-20 22:26 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Rename the iuse_implicit variable used in USE_EXPAND handling to
iuse_effective, since that is what is actually passed there. Correct
naming makes figuring out what the function does much easier.
---
 pym/portage/package/ebuild/config.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 45b7d08..5f19996 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -1278,13 +1278,13 @@ class config(object):
 		"""
 
 		def __init__(self, settings, unfiltered_use,
-			use, usemask, iuse_implicit,
+			use, usemask, iuse_effective,
 			use_expand_split, use_expand_dict):
 			self._settings = settings
 			self._unfiltered_use = unfiltered_use
 			self._use = use
 			self._usemask = usemask
-			self._iuse_implicit = iuse_implicit
+			self._iuse_effective = iuse_effective
 			self._use_expand_split = use_expand_split
 			self._use_expand_dict = use_expand_dict
 
@@ -1302,7 +1302,7 @@ class config(object):
 			if has_wildcard:
 				var_split = [ x for x in var_split if x != "*" ]
 			has_iuse = set()
-			for x in self._iuse_implicit:
+			for x in self._iuse_effective:
 				if x[:prefix_len] == prefix:
 					has_iuse.add(x[prefix_len:])
 			if has_wildcard:
-- 
2.8.2



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-portage-dev] [PATCH 2/2] ebuild.config: Fix filtering all USE_EXPAND variables in EAPI 5+
  2016-05-20 22:26 [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective Michał Górny
@ 2016-05-20 22:26 ` Michał Górny
  2016-05-21  6:48   ` Michał Górny
  0 siblings, 1 reply; 7+ messages in thread
From: Michał Górny @ 2016-05-20 22:26 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Ensure that all USE_EXPAND variables are properly filtered and exported
in EAPI 5 and newer, as required by the PMS. This includes exporting
an empty value if no matching flag is provided in IUSE.

Bug: https://bugs.gentoo.org/show_bug.cgi?id=582140
---
 pym/portage/eapi.py                  |  6 +++++-
 pym/portage/package/ebuild/config.py | 11 ++++++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py
index 1709026..c4fb374 100644
--- a/pym/portage/eapi.py
+++ b/pym/portage/eapi.py
@@ -50,6 +50,9 @@ def eapi_exports_EBUILD_PHASE_FUNC(eapi):
 def eapi_exports_REPOSITORY(eapi):
 	return eapi in ("4-python", "5-progress")
 
+def eapi_exports_USE_EXPAND_variables(eapi):
+	return eapi not in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi")
+
 def eapi_has_pkg_pretend(eapi):
 	return eapi not in ("0", "1", "2", "3")
 
@@ -101,7 +104,7 @@ def eapi_has_targetroot(eapi):
 
 _eapi_attrs = collections.namedtuple('_eapi_attrs',
 	'dots_in_PN dots_in_use_flags exports_EBUILD_PHASE_FUNC '
-	'feature_flag_test feature_flag_targetroot '
+	'exports_USE_EXPAND_variables feature_flag_test feature_flag_targetroot '
 	'hdepend iuse_defaults iuse_effective posixish_locale '
 	'repo_deps required_use required_use_at_most_one_of slot_operator slot_deps '
 	'src_uri_arrows strong_blocks use_deps use_dep_defaults')
@@ -128,6 +131,7 @@ def _get_eapi_attrs(eapi):
 		dots_in_PN = (eapi is None or eapi_allows_dots_in_PN(eapi)),
 		dots_in_use_flags = (eapi is None or eapi_allows_dots_in_use_flags(eapi)),
 		exports_EBUILD_PHASE_FUNC = (eapi is None or eapi_exports_EBUILD_PHASE_FUNC(eapi)),
+		exports_USE_EXPAND_variables = (eapi is None or eapi_exports_USE_EXPAND_variables(eapi)),
 		feature_flag_test = True,
 		feature_flag_targetroot = (eapi is not None and eapi_has_targetroot(eapi)),
 		hdepend = (eapi is not None and eapi_has_hdepend(eapi)),
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 5f19996..ee1fadb 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -1279,7 +1279,7 @@ class config(object):
 
 		def __init__(self, settings, unfiltered_use,
 			use, usemask, iuse_effective,
-			use_expand_split, use_expand_dict):
+			use_expand_split, use_expand_dict, eapi_exports_USE_EXPAND_variables):
 			self._settings = settings
 			self._unfiltered_use = unfiltered_use
 			self._use = use
@@ -1287,6 +1287,7 @@ class config(object):
 			self._iuse_effective = iuse_effective
 			self._use_expand_split = use_expand_split
 			self._use_expand_dict = use_expand_dict
+			self._eapi_exports_USE_EXPAND_variables = eapi_exports_USE_EXPAND_variables
 
 		def __getitem__(self, key):
 			prefix = key.lower() + '_'
@@ -1330,7 +1331,7 @@ class config(object):
 					filtered_var_split.append(x)
 			var_split = filtered_var_split
 
-			if var_split:
+			if var_split or self._eapi_exports_USE_EXPAND_variables:
 				value = ' '.join(var_split)
 			else:
 				# Don't export empty USE_EXPAND vars unless the user config
@@ -1725,9 +1726,13 @@ class config(object):
 			x in self.get('USE_EXPAND', '').split())
 		lazy_use_expand = self._lazy_use_expand(
 			self, unfiltered_use, use, self.usemask,
-			portage_iuse, use_expand_split, self._use_expand_dict)
+			portage_iuse, use_expand_split, self._use_expand_dict,
+			eapi_attrs.exports_USE_EXPAND_variables)
 
 		use_expand_iuses = {}
+		if eapi_attrs.exports_USE_EXPAND_variables:
+			for k in use_expand_split:
+				use_expand_iuses[k] = set()
 		for x in portage_iuse:
 			x_split = x.split('_')
 			if len(x_split) == 1:
-- 
2.8.2



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 2/2] ebuild.config: Fix filtering all USE_EXPAND variables in EAPI 5+
  2016-05-20 22:26 ` [gentoo-portage-dev] [PATCH 2/2] ebuild.config: Fix filtering all USE_EXPAND variables in EAPI 5+ Michał Górny
@ 2016-05-21  6:48   ` Michał Górny
  0 siblings, 0 replies; 7+ messages in thread
From: Michał Górny @ 2016-05-21  6:48 UTC (permalink / raw
  To: gentoo-portage-dev

[-- Attachment #1: Type: text/plain, Size: 4252 bytes --]

On Sat, 21 May 2016 00:26:40 +0200
Michał Górny <mgorny@gentoo.org> wrote:

> Ensure that all USE_EXPAND variables are properly filtered and exported
> in EAPI 5 and newer, as required by the PMS. This includes exporting
> an empty value if no matching flag is provided in IUSE.
> 
> Bug: https://bugs.gentoo.org/show_bug.cgi?id=582140
> ---
>  pym/portage/eapi.py                  |  6 +++++-
>  pym/portage/package/ebuild/config.py | 11 ++++++++---
>  2 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py
> index 1709026..c4fb374 100644
> --- a/pym/portage/eapi.py
> +++ b/pym/portage/eapi.py
> @@ -50,6 +50,9 @@ def eapi_exports_EBUILD_PHASE_FUNC(eapi):
>  def eapi_exports_REPOSITORY(eapi):
>  	return eapi in ("4-python", "5-progress")
>  
> +def eapi_exports_USE_EXPAND_variables(eapi):
> +	return eapi not in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi")
> +
>  def eapi_has_pkg_pretend(eapi):
>  	return eapi not in ("0", "1", "2", "3")
>  
> @@ -101,7 +104,7 @@ def eapi_has_targetroot(eapi):
>  
>  _eapi_attrs = collections.namedtuple('_eapi_attrs',
>  	'dots_in_PN dots_in_use_flags exports_EBUILD_PHASE_FUNC '
> -	'feature_flag_test feature_flag_targetroot '
> +	'exports_USE_EXPAND_variables feature_flag_test feature_flag_targetroot '
>  	'hdepend iuse_defaults iuse_effective posixish_locale '
>  	'repo_deps required_use required_use_at_most_one_of slot_operator slot_deps '
>  	'src_uri_arrows strong_blocks use_deps use_dep_defaults')
> @@ -128,6 +131,7 @@ def _get_eapi_attrs(eapi):
>  		dots_in_PN = (eapi is None or eapi_allows_dots_in_PN(eapi)),
>  		dots_in_use_flags = (eapi is None or eapi_allows_dots_in_use_flags(eapi)),
>  		exports_EBUILD_PHASE_FUNC = (eapi is None or eapi_exports_EBUILD_PHASE_FUNC(eapi)),
> +		exports_USE_EXPAND_variables = (eapi is None or eapi_exports_USE_EXPAND_variables(eapi)),
>  		feature_flag_test = True,
>  		feature_flag_targetroot = (eapi is not None and eapi_has_targetroot(eapi)),
>  		hdepend = (eapi is not None and eapi_has_hdepend(eapi)),
> diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
> index 5f19996..ee1fadb 100644
> --- a/pym/portage/package/ebuild/config.py
> +++ b/pym/portage/package/ebuild/config.py
> @@ -1279,7 +1279,7 @@ class config(object):
>  
>  		def __init__(self, settings, unfiltered_use,
>  			use, usemask, iuse_effective,
> -			use_expand_split, use_expand_dict):
> +			use_expand_split, use_expand_dict, eapi_exports_USE_EXPAND_variables):
>  			self._settings = settings
>  			self._unfiltered_use = unfiltered_use
>  			self._use = use
> @@ -1287,6 +1287,7 @@ class config(object):
>  			self._iuse_effective = iuse_effective
>  			self._use_expand_split = use_expand_split
>  			self._use_expand_dict = use_expand_dict
> +			self._eapi_exports_USE_EXPAND_variables = eapi_exports_USE_EXPAND_variables
>  
>  		def __getitem__(self, key):
>  			prefix = key.lower() + '_'
> @@ -1330,7 +1331,7 @@ class config(object):
>  					filtered_var_split.append(x)
>  			var_split = filtered_var_split
>  
> -			if var_split:
> +			if var_split or self._eapi_exports_USE_EXPAND_variables:
>  				value = ' '.join(var_split)
>  			else:
>  				# Don't export empty USE_EXPAND vars unless the user config
> @@ -1725,9 +1726,13 @@ class config(object):
>  			x in self.get('USE_EXPAND', '').split())
>  		lazy_use_expand = self._lazy_use_expand(
>  			self, unfiltered_use, use, self.usemask,
> -			portage_iuse, use_expand_split, self._use_expand_dict)
> +			portage_iuse, use_expand_split, self._use_expand_dict,
> +			eapi_attrs.exports_USE_EXPAND_variables)
>  
>  		use_expand_iuses = {}
> +		if eapi_attrs.exports_USE_EXPAND_variables:
> +			for k in use_expand_split:
> +				use_expand_iuses[k] = set()
>  		for x in portage_iuse:
>  			x_split = x.split('_')
>  			if len(x_split) == 1:

After some thinking, I'll prepare another patch that applies the change
to all EAPIs. The behavior for earlier EAPIs is implementation-defined
by PMS and having it inconsistent will only confuse users.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 949 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective
@ 2018-02-04 13:40 Michał Górny
  2018-02-05 22:46 ` Michael Lienhardt
  0 siblings, 1 reply; 7+ messages in thread
From: Michał Górny @ 2018-02-04 13:40 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Michał Górny

Rename the iuse_implicit variable used in USE_EXPAND handling to
iuse_effective, since that is what is actually passed there. Correct
naming makes figuring out what the function does much easier.
---
 pym/portage/package/ebuild/config.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index 5624e86d3..35cf4f614 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -1307,13 +1307,13 @@ class config(object):
 		"""
 
 		def __init__(self, settings, unfiltered_use,
-			use, usemask, iuse_implicit,
+			use, usemask, iuse_effective,
 			use_expand_split, use_expand_dict):
 			self._settings = settings
 			self._unfiltered_use = unfiltered_use
 			self._use = use
 			self._usemask = usemask
-			self._iuse_implicit = iuse_implicit
+			self._iuse_effective = iuse_effective
 			self._use_expand_split = use_expand_split
 			self._use_expand_dict = use_expand_dict
 
@@ -1331,7 +1331,7 @@ class config(object):
 			if has_wildcard:
 				var_split = [ x for x in var_split if x != "*" ]
 			has_iuse = set()
-			for x in self._iuse_implicit:
+			for x in self._iuse_effective:
 				if x[:prefix_len] == prefix:
 					has_iuse.add(x[prefix_len:])
 			if has_wildcard:
-- 
2.16.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective
  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-05 22:46 ` Michael Lienhardt
  2018-02-05 23:05   ` Zac Medico
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Lienhardt @ 2018-02-05 22:46 UTC (permalink / raw
  To: gentoo-portage-dev

Is the IUSE_IMPLICIT variable in the make.defaults also changed into IUSE_EFFECTIVE?

I'm sorry if this question was already discussed/answered somewhere else.

Michael

Il 04/02/2018 14:40, Michał Górny ha scritto:
> Rename the iuse_implicit variable used in USE_EXPAND handling to
> iuse_effective, since that is what is actually passed there. Correct
> naming makes figuring out what the function does much easier.
> ---
>   pym/portage/package/ebuild/config.py | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
> index 5624e86d3..35cf4f614 100644
> --- a/pym/portage/package/ebuild/config.py
> +++ b/pym/portage/package/ebuild/config.py
> @@ -1307,13 +1307,13 @@ class config(object):
>   		"""
>   
>   		def __init__(self, settings, unfiltered_use,
> -			use, usemask, iuse_implicit,
> +			use, usemask, iuse_effective,
>   			use_expand_split, use_expand_dict):
>   			self._settings = settings
>   			self._unfiltered_use = unfiltered_use
>   			self._use = use
>   			self._usemask = usemask
> -			self._iuse_implicit = iuse_implicit
> +			self._iuse_effective = iuse_effective
>   			self._use_expand_split = use_expand_split
>   			self._use_expand_dict = use_expand_dict
>   
> @@ -1331,7 +1331,7 @@ class config(object):
>   			if has_wildcard:
>   				var_split = [ x for x in var_split if x != "*" ]
>   			has_iuse = set()
> -			for x in self._iuse_implicit:
> +			for x in self._iuse_effective:
>   				if x[:prefix_len] == prefix:
>   					has_iuse.add(x[prefix_len:])
>   			if has_wildcard:
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective
  2018-02-05 22:46 ` Michael Lienhardt
@ 2018-02-05 23:05   ` Zac Medico
  2018-02-06  8:36     ` Michael Lienhardt
  0 siblings, 1 reply; 7+ messages in thread
From: Zac Medico @ 2018-02-05 23:05 UTC (permalink / raw
  To: gentoo-portage-dev, Michael Lienhardt


[-- Attachment #1.1: Type: text/plain, Size: 460 bytes --]

On 02/05/2018 02:46 PM, Michael Lienhardt wrote:
> Is the IUSE_IMPLICIT variable in the make.defaults also changed into
> IUSE_EFFECTIVE?
> 
> I'm sorry if this question was already discussed/answered somewhere else.

The IUSE_EFFECTIVE variable is generated from IUSE_IMPLICIT and some
other variables. It's documented in the "USE and IUSE handling" section
here:

https://dev.gentoo.org/~ulm/pms/head/pms.html#x1-11900011.1.1
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective
  2018-02-05 23:05   ` Zac Medico
@ 2018-02-06  8:36     ` Michael Lienhardt
  0 siblings, 0 replies; 7+ messages in thread
From: Michael Lienhardt @ 2018-02-06  8:36 UTC (permalink / raw
  To: Zac Medico, gentoo-portage-dev

Many thanks.

I should definitively read this document, that is far more precise that anything I have found on the wiki or on devmanual.

Il 06/02/2018 00:05, Zac Medico ha scritto:
> On 02/05/2018 02:46 PM, Michael Lienhardt wrote:
>> Is the IUSE_IMPLICIT variable in the make.defaults also changed into
>> IUSE_EFFECTIVE?
>>
>> I'm sorry if this question was already discussed/answered somewhere else.
> 
> The IUSE_EFFECTIVE variable is generated from IUSE_IMPLICIT and some
> other variables. It's documented in the "USE and IUSE handling" section
> here:
> 
> https://dev.gentoo.org/~ulm/pms/head/pms.html#x1-11900011.1.1
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-02-06  8:36 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-20 22:26 [gentoo-portage-dev] [PATCH 1/2] portage.package.ebuild.config: Rename iuse_implicit -> iuse_effective Michał Górny
2016-05-20 22:26 ` [gentoo-portage-dev] [PATCH 2/2] ebuild.config: Fix filtering all USE_EXPAND variables in EAPI 5+ Michał Górny
2016-05-21  6:48   ` Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
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-05 22:46 ` Michael Lienhardt
2018-02-05 23:05   ` Zac Medico
2018-02-06  8:36     ` Michael Lienhardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox