summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-06-27 22:07:16 +0000
committerMichał Górny <mgorny@gentoo.org>2017-06-27 22:07:16 +0000
commit41b1f7b37afe6c40c80bf660beaca8f3c0305cab (patch)
treee8685d5446295d58cf2835e3d8014bf2aaefa70f
parent/* QA checks to verify REQUIRED_USE solutions */ initial logic for check (diff)
downloadglep-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.mw15
1 files changed, 15 insertions, 0 deletions
diff --git a/GLEP:73.mw b/GLEP:73.mw
index 6647978..0bb3d45 100644
--- a/GLEP:73.mw
+++ b/GLEP:73.mw
@@ -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.