1 |
On Sun, 16 Jun 2013 05:33:22 -0400 |
2 |
"Walter Dnes" <waltdnes@××××××××.org> wrote: |
3 |
|
4 |
> I think the best way to avoid maintainer conflicts is to take this |
5 |
> out of the hands of maintainers, |
6 |
|
7 |
+1 I was planning to write a GLEP for a concept where optional files |
8 |
would be maintained separately from packages, this could then be |
9 |
covered in later revisions of the PMS so that in a reasonable time from |
10 |
now we can properly support this and end to the rage and rage quits. |
11 |
|
12 |
But you were before me, so I might as well elaborate with thoughts so |
13 |
we can all end up improving the idea about how this ends up being. |
14 |
|
15 |
Basically, what I have in mind is something along the lines of: |
16 |
|
17 |
Package directories get an additional directory, let's call it |
18 |
"optional", where you can put optional files in to be installed. |
19 |
|
20 |
eg. ${PORTDIR}/sys-apps/dbus/files/optional/ |
21 |
or ${PORTDIR}/sys-apps/dbus/optional/ |
22 |
|
23 |
Files in this directory have a special header, it should contain a |
24 |
condition based on which to install (eg. package to be present) and |
25 |
optionally a parsable list of maintainers maintaining the package. |
26 |
|
27 |
(The word "file" below refers to files in the above directory, |
28 |
unless noted otherwise; just saying to avoid confusion) |
29 |
|
30 |
Since there is a condition based on which these files are to be |
31 |
installed, there is no need to specify such thing in the ebuild; |
32 |
this effectively separates the maintenance from the pkg maintainer. |
33 |
|
34 |
Since the files have their individual maintainers, different |
35 |
maintainers can maintain the file without having to maintain the |
36 |
pkg itself in question; effectively allowing you to have a |
37 |
maintainer than does _not_ want to maintain systemd whatsoever work |
38 |
on his ebuild without ever seeing systemd, whereas the developer |
39 |
that wants to contribute an optional systemd file can without a |
40 |
problem introduce it without bothering the maintainer. |
41 |
|
42 |
If a file does not contain a list of maintainers, it inherits the |
43 |
list of maintainers from the package; this allows the package |
44 |
maintainer itself to easily create a file without having to |
45 |
duplicate his own metadata all over the place. |
46 |
|
47 |
A file not containing a maintainer isn't a leeway for others to add |
48 |
themselves, files that are unmaintained should have |
49 |
maintainer-needed@g.o to prevent us from hurting the users, if bugs |
50 |
reveal a file is broken beyond repair it should be removed. |
51 |
|
52 |
So, there's one thing left; what about bugs filed? |
53 |
|
54 |
Easy, it could be made more clear in the build log which optional |
55 |
files were installed as well as list the list of maintainers for |
56 |
each optional file; that way, if the maintainers have the least |
57 |
thought that it is a problem caused by an optional file, they can |
58 |
easily assign it to those individuals maintaining that file. |
59 |
|
60 |
As a side benefit, optional files are separated from patches. |
61 |
|
62 |
What does everyone think about such approach? |
63 |
|
64 |
> and put it in the hands of users. |
65 |
|
66 |
-1 Not because I don't want users to be able to do this, but more |
67 |
because I can't see a reasonable way for them to do this; for something |
68 |
as widespread as this, there should at least be supervision. We can't |
69 |
have a random user commit a random service unit for security reasons; |
70 |
there has to be some kind of review, I don't see how though. |
71 |
|
72 |
Based on that, I think the best place is the Portage tree; these files |
73 |
are as small as patches, so infra and the community as a whole doesn't |
74 |
really see a problem in placing it there. |
75 |
|
76 |
> At one time there was a package of all possible systemd units that |
77 |
> could be installed as one ebuild. [...SNIP...] I suggest a more |
78 |
> targetted approach... |
79 |
|
80 |
Agreed, if you don't tie them with packages, you get nasty clumps. |
81 |
|
82 |
> * a script (or compiled program) |
83 |
|
84 |
We can have the package managers do this instead, I think there is no |
85 |
need for yet another separate script / utility to be ran; the logic |
86 |
behind installing optional files that I have in mind doesn't introduce |
87 |
too much complexity as far as I know. |
88 |
|
89 |
> * that reads the output of "eix-installed -a" |
90 |
|
91 |
We can't force such dependency; even better, we don't need such |
92 |
dependency since the package manager is able to do this. |
93 |
|
94 |
> * compares against a config file in /etc |
95 |
|
96 |
Maybe, maybe not; I wonder if it is sufficient to just check if the |
97 |
package in question is installed. Others could use INSTALL_MASK. |
98 |
|
99 |
I mean, the percentage of people wanting to run an init script but not |
100 |
its init scripts / unit files is extremely low I think; if anyone |
101 |
knows of valid cases, feel free to elaborate upon them. |
102 |
|
103 |
> * adds or deletes files based on the contents of the config file |
104 |
|
105 |
I don't think deleting files is acceptable towards the maintainer; I |
106 |
don't really see a need for this either, does anyone have an example? |
107 |
|
108 |
> I was originally thinking of systemd units, but this could be |
109 |
> applied to initscripts or man files or info files or html docs or |
110 |
> whatever. |
111 |
|
112 |
Indeed, we should cover all optional files: |
113 |
|
114 |
- OpenRC conf.d configuration files and init.d init scripts |
115 |
- systemd service unit files, targets and similar files |
116 |
- PAM files, desktop files, logrotate files, cron files, bash completion |
117 |
- ... |
118 |
|
119 |
> In addition to pulling in standard stuff, it could pull in |
120 |
> custom units or docs from "personal overlay" sources. It would |
121 |
> usually be run once, right after an update. |
122 |
|
123 |
When you let the PM do this, this is almost automatically covered. |
124 |
|
125 |
> IANACP (I Am Not A C Programmer), so I would probably do this in |
126 |
> bash if I did it strictly for personal use. |
127 |
|
128 |
I think I've repeated it enough above, this is more trivial in the PM. |
129 |
|
130 |
> But I'm beginning to wonder if it might be a useful approach resolve |
131 |
> some conflicts between various groups of users/developers. |
132 |
|
133 |
Definitely, by designing an approach that uses a separate directory in a |
134 |
package, you assign maintainers to individual files like eclasses do. |
135 |
|
136 |
> end-users could easily customize their systems' *REGARDLESS OF HOW |
137 |
> DEVELOPERS SET UP EBUILDS*. |
138 |
|
139 |
Indeed, given the defined structure, users can hack things together. |
140 |
|
141 |
> This might require a "systemd units herd" to supply a tarball with |
142 |
> systemd units that would be selectively installed. And possibly a |
143 |
> "documentation herd", etc. |
144 |
|
145 |
Without going to a specific example, some existing herds cover this. |
146 |
|
147 |
-- |
148 |
With kind regards, |
149 |
|
150 |
Tom Wijsman (TomWij) |
151 |
Gentoo Developer |
152 |
|
153 |
E-mail address : TomWij@g.o |
154 |
GPG Public Key : 6D34E57D |
155 |
GPG Fingerprint : C165 AF18 AB4C 400B C3D2 ABF0 95B2 1FCD 6D34 E57D |