diff options
author | 2017-06-23 09:40:07 +0000 | |
---|---|---|
committer | 2017-06-23 09:40:07 +0000 | |
commit | e9ad396fe21e249d1168df25c7f330b3db23a18b (patch) | |
tree | 77cf4b6daff0345884926a288b5c8f2918da6f7f | |
parent | /* Rationale */ qa checks -> context (diff) | |
download | glep-e9ad396fe21e249d1168df25c7f330b3db23a18b.tar.gz glep-e9ad396fe21e249d1168df25c7f330b3db23a18b.tar.bz2 glep-e9ad396fe21e249d1168df25c7f330b3db23a18b.zip |
/* QA checks/verification */ validation rules
-rw-r--r-- | GLEP:73.mw | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -247,6 +247,16 @@ To account for that and avoid the case where REQUIRED_USE solving would fail on Due to the EAPI 5 [https://projects.gentoo.org/pms/6/pms.html#x1-600005.2.11 stable masking], the immutable flags have to separately be calculated for ~arch and stable keywords. The stable variant does not need to be considered unless the package is actually stable or being stabilized, to avoid unnecessarily cluttering up {{Path|package.use.stable.mask}} and/or {{Path|package.use.stable.force}} for packages that are going to stay in ~arch. +====The requirements for REQUIRED_USE==== +The rules imposed for verification aim to cover most of the common cases of unsolvable constraints. In particular: + +''no valid combination of USE flags can result in the constraint requesting the same flag to be simultaneously both enabled and disabled'' +: If the effective REQUIRED_USE constraint (after collapsing all the groups) contains both ''foo'' and ''!foo'', the verification will never consider the constraint met (since logically ''x ∧ ¬x'' is always false). +''no valid combination of USE flags (that is, not prohibited by immutable flags) can attempt to alter immutable flags'' +: This is implied by the immutability of masked/forced flags. An attempt to toggle those flags while solving should be considered a fatal error since {{Path|use.mask}}/{{Path|use.force}}/… always takes precedence over regular configuration and package-level toggles. Therefore, if such flags are enforced by an USE-conditional group, their condition should also be masked or forced appropriately. +''no constraint in REQUIRED_USE may alter flags in such a way that any of the constraints preceding it would start to apply'' +: This is required for reliable single-pass solving. While the solving may work correctly with multiple iterations, the constraints can be reliably (and usually easily) fixed via reordering. More importantly, this also catches the constraints that can not be solved due to circular toggling between the constraints. + ==Backwards Compatibility== ===Compliance with the PMS=== This GLEP does not break the PMS compliance in any way. The syntax used by the constraints is a subset of the [https://projects.gentoo.org/pms/6/pms.html#x1-780008.2 REQUIRED_USE syntax allowed by the PMS]. The semantic extends the one defined in the PMS in non-conflicting way. |