diff options
author | Michał Górny <mgorny@gentoo.org> | 2017-06-27 22:07:16 +0000 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2017-06-27 22:07:16 +0000 |
commit | 41b1f7b37afe6c40c80bf660beaca8f3c0305cab (patch) | |
tree | e8685d5446295d58cf2835e3d8014bf2aaefa70f | |
parent | /* QA checks to verify REQUIRED_USE solutions */ initial logic for check (diff) | |
download | glep-41b1f7b37afe6c40c80bf660beaca8f3c0305cab.tar.gz glep-41b1f7b37afe6c40c80bf660beaca8f3c0305cab.tar.bz2 glep-41b1f7b37afe6c40c80bf660beaca8f3c0305cab.zip |
/* QA checks to verify REQUIRED_USE solutions */ two trivial checks
-rw-r--r-- | GLEP:73.mw | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -206,6 +206,21 @@ All checks but the second are an exact mapping of the requirements. The second c The first two checks can be performed on every flat constraint separately. The third check is symmetric and needs to be performed on all unique pairs of flat constraints. The fourth check needs to be performed for all combinations of constraints and the constrains preceding them. For practical reasons, the same pairs can be used for the third and fourth check. +====Verifying that constraints do not alter immutable flags==== +This check is performed separately for every flat constraint in the list. + +A flat constraint is determined to alter immutable flags if both of the following conditions occur: +* the '''condition''' for the constraint can be true, +** that is, ''none'' of the sub-conditions references an immutable flag whose immutable state causes the expression to unconditionally evaluate to false, +* the '''enforcement''' for the constraint references an immutable flag whose immutable state is the negation of the enforcement. + +====Verifying that constraints are not self-conflicting==== +This check is performed separately for every flat constraint in the list. + +A flat constraint is determined to be self-conflicting if the following condition occurs: +* for any sub-condition ''C'' in '''condition''': +** there is at least one sub-condition in '''condition''' that is the negation of ''C''. + ==Rationale== ===Restrictions for allowed REQUIRED_USE syntax=== The specification imposes a number of arbitrary restrictions to REQUIRED_USE syntax, in particular by restricting the possible nesting and disallowing other complex constructs. The main goal is to simplify the algorithms used and make the results more obvious. This is at cost of prohibiting constructs that are rarely used, and usually could be replaced by simpler and more readable constructs. |