Gentoo Archives: gentoo-project

From: Tom Wijsman <TomWij@g.o>
To: gentoo-project@l.g.o
Subject: [gentoo-project] Introducing an optional files directory in the Portage tree with an embedded install condition and individual maintainers. (was Re: [gentoo-project] Proposal for add-on file utility (run after emerge update))
Date: Sun, 16 Jun 2013 10:24:35
Message-Id: 20130616122154.47c8a591@TOMWIJ-GENTOO
In Reply to: [gentoo-project] Proposal for add-on file utility (run after emerge update) by Walter Dnes
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

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies