Gentoo Archives: gentoo-pms

From: Brian Harring <ferringb@×××××.com>
To: gentoo-pms@l.g.o
Cc: Brian Harring <ferringb@×××××.com>
Subject: [gentoo-pms] [PATCH] RFC: try to rework and expand RESTRICT rules to be more accurate.
Date: Thu, 13 Sep 2012 18:45:17
Message-Id: 1347561905-29720-1-git-send-email-ferringb@gmail.com
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