Gentoo Archives: gentoo-dev

From: Nick Vinson <nvinson234@×××××.com>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] [RFC] Global USE=gui
Date: Fri, 03 Jun 2016 21:33:26
Message-Id: CAAAmzuoGv30evyOqFGOjKRXo1SoiMx9DBNgvU9BUr_fAE0nS8g@mail.gmail.com
In Reply to: Re: [gentoo-dev] [RFC] Global USE=gui by Alan McKinnon
1 On Jun 3, 2016 1:15 PM, "Alan McKinnon" <alan.mckinnon@×××××.com> wrote:
2 >
3 > On 03/06/2016 21:34, waltdnes@××××××××.org wrote:
4 >>
5 >> On Fri, Jun 03, 2016 at 10:35:45AM -0400, Ian Stakenvicius wrote
6 >>
7 >>> USE=gui is about building the graphical user interface that an
8 >>> application offers, when it is optional. That's it. What
9 >>> dependencies that means and so on have nothing to do with the flag.
10 >>
11 >>
12 >> That reasoning may have been valid many years ago when qt was the only
13 >> toolkit around. All GUI-optional apps back then either used qt or wrote
14 >> their own primitives directly to X. Fast-forward to 2016. You now have
15 >> X/Wayland/Mir/qt4/qt5/gtk2/gtk3/fltk/whatever. If a package can have a
16 >> GUI from more than one of the above, you *NEED* to select implementation
17 >> type *SOMEWHERE* (make.conf/package.use/profile). Deal with it.
18 >>
19 >>> You get that use flags are not supposed to represent dependencies
20 >>> right, but features of the package??
21 >>
22 >>
23 >> Gentoo currently assumes that users are reasonably competent, and that
24 >> if they've selected specific graphics libs to be linked to a package,
25 >> that they've done it for a reason; i.e. to enable a GUI.
26 >
27 >
28 > Walter,
29 >
30 > I think you're missing where the devs want to take this and what USE is
31 all about. It's about *features*, not about dependencies.
32 >
33 > USE="gtk" is a dependency.
34
35 No. It is a feature. However, it is a feature named after the
36 dependencies needed to enable it. If a package has a hard dependency on
37 libgtk, a USE flag would not be added, but a soft dependency on libgtk
38 means that libgtk support is a feature or part of a feature (the feature
39 being you get to choose which toolkit is used).
40
41 If it was a dependency, then packages such as XFCE and evince would have to
42 use flags. However they don't.
43
44 So enough with the these are dependency use flags and those are feature use
45 flags. It's not true and it's a poor attempt to try and force this idea
46 through. If this is idea is a good one, such tactics aren't needed. If
47 it's not, the tactics aren't warranted.
48
49 > USE="gui" is a feature.
50 > You only need enable a specific graphics lib flag when there is ambiguity
51 about what "gui" means for a package.
52 >
53 >
54 >>
55 >>> Think about a wayland system -- there's lots of packages that
56 >>> IUSE="X" to build their gui implementation. If someone wanting
57 >>> wayland set USE="-X" then they don't get the gui app even if it'll
58 >>> work in wayland just fine.
59 >>
60 >>
61 >> If someone wants to run a wayland system, why wouldn't they set
62 >> USE="-X -mir wayland" in make.conf in the first place?!?!?
63 >>
64 >> Here's my problem with USE="gui"... I've set up various packages which
65 >> have the gui/no-gui option. If USE="-gui" overrides USE="X gtk3 qt4
66 fltk",
67 >> then I would have to set USE="gui" *IN ADDITION TO* telling packages
68 >> which GUI toolkit to use. Since I may want some packages GUI, and some
69 >> non-GUI, that would be one more USE flag to set in package.use and/or
70 >> make.conf.
71 >>
72 >> The reason for the pushback is that this "feature" would be rammed
73 >> down peoples' throats, Poettering-style. I propose a compromise
74 >> solution that both sides should be happy with. It would require 2 USE
75 >> flags, namely "forcegui" and "forcenogui".
76 >>
77 >> If "forcegui" is set, all optional-GUI apps will be built with GUIs,
78 >> regardless of USE="-X -Mir -Wayland -gtk2 -gtk3 -qt4 -qt5".
79 >>
80 >> If "forcenogui" is set, no optional-GUI apps will be built with GUIs,
81 >> regardless of USE="X Mir Wayland gtk2 gtk3 qt4 qt5".
82 >>
83 >> If USE="-forcegui -forcenogui" is set, things will be as they are
84 >> today. GUIs will be built, or not, depending on what toolkit flags are
85 >> set or not set. Gentoo is about choice.
86 >>
87 >
88 > That's a silly idea not least because it's non-deterministic. A force USE
89 flag is really just USE="gtk" or USE="qt" on a larger scale as there's now
90 *more* toolkits to randomly pick one from.
91 >
92 > Most apps support one toolkit, often either gtk2/3 or qt4/5. It's a
93 minority that support both and we have special means to handle those. For
94 that small set of apps that do support several toolkits, what exactly are
95 you going to force? If you can have one of gtk 2 or 3 but not both, which
96 one is it? Well you'd need a USE="gtk2" or USE="gtk3" to find out what the
97 user wants.
98 >
99 > This proposal makes things simpler and reduces flags and their usage.
100 > "gui" means build the gui the thing supports.
101 > "X" stops meaning "gui" or maybe "XLibs" or perhaps "usually RDP but also
102 supports magic X11" and starts to mean "X11 Window System" as opposed to
103 Wayland or Mir.
104 > The other toolkit flags start to mean specific versions of toolkits and
105 only need be used when things get ambiguous and portage wants you you tell
106 it what you want.
107 >
108 > In short, flags will get simpler (as cruft will be removed) and flags
109 gain clearer distinct names. Think of it as a code refactor after years of
110 accumulating rubbish due to no clear plan.
111 >
112 > Alan
113 >
114 >
115 >

Replies

Subject Author
Re: [gentoo-dev] [RFC] Global USE=gui Alan McKinnon <alan.mckinnon@×××××.com>
Re: [gentoo-dev] [RFC] Global USE=gui "Michał Górny" <mgorny@g.o>