Gentoo Archives: gentoo-dev

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: RFC: c++14 global USE flag
Date: Mon, 04 May 2015 04:36:43
Message-Id: pan$7dfeb$b583b83$50e7fefe$fc14b52@cox.net
In Reply to: Re: [gentoo-dev] Re: RFC: c++14 global USE flag by Georg Rudoy <0xd34df00d@gmail.com>
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