1 |
Georg Rudoy posted on Sun, 03 May 2015 17:13:49 +0300 as excerpted: |
2 |
|
3 |
> 2015-05-03 13:51 GMT+03:00 Duncan <1i5t5.duncan@×××.net>: |
4 |
> |
5 |
>> What about a somewhat more generic flag such as newcode? |
6 |
|
7 |
> Nice idea, thanks! There are a couple of corner cases though. |
8 |
> |
9 |
>> newcode would even be generic enough to be used for say qt6 when the |
10 |
>> time comes, if it turns out to be stuck in the qt overlay for quite |
11 |
>> some time, as was qt5, for the longest time, |
12 |
> |
13 |
> |
14 |
> What if a package would support (optional) builds with C++17-related |
15 |
> features and (optional) builds with say Qt6, and these could be toggled |
16 |
> independently? Does that imply having something like newcode_cpp17 and |
17 |
> newcode_qt4 on per-package basis? |
18 |
|
19 |
Hmm... indeed. That case would lend itself to a USE_EXPAND, with newcode |
20 |
the name of the use-expand var, and individual values for this var of |
21 |
qt6, cpp17, etc. |
22 |
|
23 |
I hadn't thought of that until you mentioned it, but it's the logical |
24 |
extension. |
25 |
|
26 |
>> and the good bit is, generic meaning, |
27 |
>> that USE=newcode requires a dep that's still generally problematic or |
28 |
>> might be considered excessive to get, for optional functionality that |
29 |
>> may or may not be considered worth it, should be pretty obvious. |
30 |
>> |
31 |
>> |
32 |
> Does that imply that merely pulling clang for builds is not a |
33 |
> newcode-concern then, and, back to the original topic, in case of |
34 |
> leechcraft C++14 can be enabled unconditionally, again with |
35 |
> unconditional pulling of clang? |
36 |
> |
37 |
> That's probably a way to go, but feels like not Gentoo-way enough (just |
38 |
> removing an option). |
39 |
|
40 |
I think that depends on the package and package maintainer, as much as |
41 |
anything. The real question for the maintainer, then, becomes one of "If |
42 |
it comes down to it, would I rather that a potential user reject the |
43 |
package entirely due to this dependency they consider unacceptable, in |
44 |
ordered to save the hassle of maintaining the optional dependency code, |
45 |
or would I rather give them the choice and have to maintain that |
46 |
additional optional dependency code?" |
47 |
|
48 |
Leachcraft is a very nice little niche, but it's a niche, that already |
49 |
both isn't particularly likely to be discovered, and if discovered, may |
50 |
well not be of interest. Making the clang dep optional sounds like it'll |
51 |
be significantly more work, the cost on the one side, while the cost on |
52 |
the other is potentially limiting the already niche interest leachcraft |
53 |
to an even smaller niche, and giving up on those people who were thinking |
54 |
about installing it just to try out, but see that extra dep and decide |
55 |
it's not worth their hassle. |
56 |
|
57 |
And of course it works the other way too. There may be people who |
58 |
already know and use leachcraft, but can barely justify it already, who |
59 |
might decide that additional dependency is simply one dependency too far. |
60 |
|
61 |
I found here, and I expect many experienced gentooers who have also used |
62 |
binary distros will agree, for packages you use all the time, the build- |
63 |
cost difference between a binary distro and a from-source distro like |
64 |
gentoo is trivial, the use of the package far outweighs it anyway. But |
65 |
what about that package you only use once in awhile? I guess CD/DVD |
66 |
burning software might be a good example for many. Maybe they use it |
67 |
once or twice a year, maybe every two years. Yeah, it's useful, once in |
68 |
awhile, and on a binary distro, no problem, just install it. But on a |
69 |
from source distro like gentoo, once you find yourself repeatedly |
70 |
upgrading it between uses, so you're not even using the package once |
71 |
before it's upgraded again, at some point you ask yourself why you even |
72 |
keep it installed. If you decide you want to burn a DVD, you can merge |
73 |
it then, do the burn, and unmerge, without it ever hitting the world |
74 |
file, and with your next depclean removing it if you forget. |
75 |
|
76 |
And once you get to that point, additional exclusive deps start adding up |
77 |
pretty quickly, and before you know it you're looking for an alternative |
78 |
that doesn't pull in all those extra deps, so it's just the quick build/ |
79 |
merge/burn/unmerge that fits the once every couple years use-case. |
80 |
|
81 |
So again, maintainer viewpoint, for something already niche, is it worth |
82 |
the extra work to avoid it being even /more/ niche due to the uncommon |
83 |
mandatory dep, or is it a question of of it's niche already, and is |
84 |
hardly worth the work already, so just do what's simplest and the people |
85 |
that want it will be willing to jump thru the hoops and those that can't |
86 |
be bothered, aren't worth the extra work to worry about? |
87 |
|
88 |
That's a question only the maintainer can answer, particularly for niche |
89 |
packages that chances are would end up without a maintainer and |
90 |
eventually tree-cleaned, if the current maintainer quits. |
91 |
|
92 |
(For more mainstream packages or package-groups, say kde, with an |
93 |
extremely active overlay and a whole crew of folks both devs and advanced |
94 |
user volunteers helping out, it's a bit of a different story. Tho the |
95 |
general principle still applies, because in practice it's the only way |
96 |
that works. Refer to the kde4 semantic-desktop experience for example -- |
97 |
semantic-desktop was removed as an option and made required in the |
98 |
overlay and ~arch, because none of the maintainers were sufficiently |
99 |
interested in doing the extra work to support the option. Fortunately |
100 |
one of the kde devs decided they wanted that feature option, I believe |
101 |
before it was removed from stable, so it survived at least thru kde4 (I'm |
102 |
actually not sure what semantic-desktop status is on kde5/frameworks, as |
103 |
kwin5 doesn't seem to like my radeon kernel/mesa native graphics and goes |
104 |
into a crash/respawn loop every time I try it, so I'm still on kde4, for |
105 |
now). But as a pre-release and even kde-live-9999 package user, I was |
106 |
having to maintain the semantic-desktop opt-out version patches for my |
107 |
own overlay, for a time, and as it hit ~arch and almost hit stable, I and |
108 |
other users came very close to creating a user-maintained kde-semantic- |
109 |
free overlay, using the the user-maintained kde-sunset overlay as our |
110 |
precedent.) |
111 |
|
112 |
>> Making that meaning even more obvious would be the fact that the flag |
113 |
>> would likely be packageuse-masked for many users for much of the the |
114 |
>> time. That could for instance allow packages using it in-tree, before |
115 |
>> the dep it pulls in is itself in-tree, while still making it possible |
116 |
>> to unmask, for users who either already have the required overlay |
117 |
>> active, or who don't have it active ATM, but are willing to activate it |
118 |
>> to get the features it toggles. |
119 |
>> |
120 |
>> |
121 |
> Depending on the answer to the previous question, if all the deps are |
122 |
> in-tree, then there is no need in masking the useflag. It could be |
123 |
> unmasked on the per-package basis again, I guess? Then there is a |
124 |
> question of the default (globally unmasked and per-package masks vs |
125 |
> globally masked and per-package unmasks), but that's a relatively minor |
126 |
> one. |
127 |
|
128 |
Well, technically, in-tree and stable. But I was abbreviating that to in- |
129 |
tree, so you can too, as long as the technical detail is understood. |
130 |
|
131 |
And yes, that's specifically what per-package use-masks are all about, to |
132 |
allow packages to stabilize before all their optional deps are |
133 |
stabilized, by per-package use-masking the flags that pull in those deps. |
134 |
(Note that I'm deliberately blurring the detail here, too, as I read the |
135 |
discussion about per-package masks, how to unmask them when needed, etc, |
136 |
when it occurred, but I've never had to actually unmask from that here, |
137 |
and I'm user-side so haven't had to worry about the dev side either, and |
138 |
thus haven't had to actually crystallize the detail in practice here, and |
139 |
thus read but haven't retained it. But I know about it and can look up |
140 |
the details if I need them, which is enough...) |
141 |
|
142 |
-- |
143 |
Duncan - List replies preferred. No HTML msgs. |
144 |
"Every nonfree program has a lord, a master -- |
145 |
and if you use the program, he is your master." Richard Stallman |