diff options
author | Michał Górny <mgorny@gentoo.org> | 2017-06-27 21:45:43 +0000 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2017-06-27 21:45:43 +0000 |
commit | c41e80e3e5da9aebbbe5766062c7a130d5151bd6 (patch) | |
tree | 518d7dd8b39669f3726c8016622fc7d3bfaa209a | |
parent | /* QA checks/verification */ explain the transform (diff) | |
download | glep-c41e80e3e5da9aebbbe5766062c7a130d5151bd6.tar.gz glep-c41e80e3e5da9aebbbe5766062c7a130d5151bd6.tar.bz2 glep-c41e80e3e5da9aebbbe5766062c7a130d5151bd6.zip |
/* QA checks to verify REQUIRED_USE solutions */ initial logic for check
-rw-r--r-- | GLEP:73.mw | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -195,6 +195,17 @@ It should be noted that for the purpose of distinguishing separate branches, all apply the logic for an any-of (||) group apply the logic for an at-most-one of (??) group +====QA check logic==== +The logic for the reference algorithm is split into four split functions: +# verifying that the constraints do not alter immutable flags, +# verifying that the conditions for the constraints are not self-conflicting, +# verifying that no two constraints will attempt to force opposite values for a single flag, +# verifying that no constraint will meaningfully enable any of the constraints preceding it. + +All checks but the second are an exact mapping of the requirements. The second check additionally catches meaningless constraints, and enforces a precondition for sanity of the checks following it. + +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. + ==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. |