summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-06-27 21:45:43 +0000
committerMichał Górny <mgorny@gentoo.org>2017-06-27 21:45:43 +0000
commitc41e80e3e5da9aebbbe5766062c7a130d5151bd6 (patch)
tree518d7dd8b39669f3726c8016622fc7d3bfaa209a
parent/* QA checks/verification */ explain the transform (diff)
downloadglep-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.mw11
1 files changed, 11 insertions, 0 deletions
diff --git a/GLEP:73.mw b/GLEP:73.mw
index aa104bb..6647978 100644
--- a/GLEP:73.mw
+++ b/GLEP:73.mw
@@ -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.