1 |
The wording in use here I don't think is yet ready for primetime; the intent |
2 |
is to clarify that if the RESTRICT is contradicting PMS runtime, then ebuilds |
3 |
cannot rely upon it (since that scenario essentially means it forces all other |
4 |
PMs to match that behaviour, regardless of PMS). |
5 |
|
6 |
If the RESTRICT is turning off a feature of a PM that doesn't contradict PMS |
7 |
runtime, this should be acceptable for the ebuild to rely upon- basically it |
8 |
doesn't force other PMs to go match that feature, it shifts the pain point to |
9 |
the PM that has the feature working to try and maximize compatibility, and |
10 |
coopt ebuild devs to add the restrict; this effectively is how new |
11 |
features/RESTRICTS come about. |
12 |
|
13 |
The purpose of this is that ultimately, I intend RESTRICT=fakeroot and |
14 |
RESTRICT=unshare to be added; that said my fakeroot implementation is busted |
15 |
and needs updating, and re-validating that it's sane/viable before it's |
16 |
encoded into the spec. For RESTRICT=unshare, nobody has implemented this |
17 |
feature yet; not expecting any major issues (it's a simple change), but |
18 |
the lack of any real world field testing, again, makes me hesitant to |
19 |
immediately add it into the spec. |
20 |
|
21 |
Thus the intent of changing the RESTRICT wording to match the actual real world |
22 |
requirements; in the process allowing for those features, and others like it, |
23 |
to be developed/tested/expanded upon, and ultimately folded into PMS once |
24 |
proven sane. |
25 |
--- |
26 |
dependencies.tex | 19 ++++++++++++++++++- |
27 |
1 file changed, 18 insertions(+), 1 deletion(-) |
28 |
|
29 |
diff --git a/dependencies.tex b/dependencies.tex |
30 |
index 47c0261..bc36df7 100644 |
31 |
--- a/dependencies.tex |
32 |
+++ b/dependencies.tex |
33 |
@@ -370,7 +370,24 @@ The following tokens are permitted inside \t{RESTRICT}: |
34 |
\item[sandbox] The \t{sandbox} tool must not be used when building the package. |
35 |
\end{description} |
36 |
|
37 |
-Package managers may recognise other tokens, but ebuilds may not rely upon them being supported. |
38 |
+Package managers may recognise other tokens, but ebuilds may not rely upon them being supported |
39 |
+if the restrict's notion effectively removes something from the standard ebuild environment or runtime. |
40 |
+Using sandbox as an example, since it's considered a standard part of our runtime environment, if |
41 |
+RESTRICT=sandbox wasn't already whitelisted, it would not be acceptable for ebuilds to rely |
42 |
+on RESTRICT=sandbox; it would effectively be removing/negating something from the standard |
43 |
+runtime, rather than suppressing a PM specific extension. Doing so would lead to the ebuild |
44 |
+breaking compatibility across PMs, and locking into just the managers that support that RESTRICT. |
45 |
+ |
46 |
+In the cases where the PM supports an extension to the runtime beyond the PM standard, it is the |
47 |
+ebuild authors choice as to whether or not use the equivalent RESTRICT token for that PM. An example |
48 |
+would be fakeroot; if a package manager adds support for that (functionality not required by the |
49 |
+standard PMS runtime), a RESTRICT=fakeroot could be added and relied upon by that ebuild; the PM via |
50 |
+adding that new functionality is responsible for getting ebuild devs to adopt the equivalent RESTRICT, |
51 |
+and for ensuring they're not introducing arbitrary breakage via that feature. |
52 |
+ |
53 |
+Essentially, the addition of a non-whitelisted RESTRICT value must be to suppress a PM |
54 |
+specific extension; if the PM doesn't support that RESTRICT (thus doesn't support that feature), the |
55 |
+ebuild must work. If the RESTRICT value cannot meet that requirement, it cannot be relied upon. |
56 |
|
57 |
\subsection{Properties} |
58 |
\label{sec:properties} |
59 |
-- |
60 |
1.7.12 |