Gentoo Archives: gentoo-dev

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: example conversion of gentoo-x86 current deps to unified dependencies
Date: Mon, 01 Oct 2012 00:25:29
Message-Id: pan.2012.10.01.00.23.53@cox.net
In Reply to: Re: [gentoo-dev] Re: example conversion of gentoo-x86 current deps to unified dependencies by Brian Harring
1 Brian Harring posted on Sun, 30 Sep 2012 15:15:18 -0700 as excerpted:
2
3 > The point I'm trying to make here is that each dep phase should be
4 > authorative; in doing so, you start getting a lot of potential subsets
5 > (DEPEND is a subset of TDEPEND, TDEPEND isn't completely, but mostly a
6 > subset of RDEPEND as RDEPEND is a likely a superset of DEPEND; PDEPEND
7 > is a superset of RDEPEND).
8 >
9 > So... you could do COMMON_DEPEND, COMMON_TDEPEND, COMMON_RDEPEND in the
10 > ebuild. Or you could just use a syntax form that allows you to directly
11 > inline that up front, rather than having to muck around w/ intermediate
12 > vars.
13
14 Thanks /very/ much! You said you weren't sure you were being clear, but
15 this is the first time I've /really/ understood what must surely be the
16 root, at any reasonable level at all.
17
18 Let me see if I've got it right:
19
20 Yes, in some ways all we're dealing with here is "optics", but the
21 _problem_ is that with the proposed proliferation in detailed depend-
22 types, what is now a simple CDEPEND and thus conceptually easy to handle,
23 breaks into 10/20/50/whatever-large-number different shards, and what's
24 conceptually easy to handle /now/ becomes many many times more difficult
25 to handle, both conceptually for package maintainers and practically for
26 iterative resolution in the PMs, due to the interplay of all the
27 resulting *CDEPENDs.
28
29 The proposed solution to that explosion in conceptual complexity not only
30 changes the "optics", but by making most of those detail-depend-types
31 absolute/authoritative, allows both package managers (the programs,
32 machine) and package maintainers (the humans) to consider each depend-
33 type separately, thus decreasing both conceptual complexity to a once
34 again manageable level for package maintainers (humans), and practical
35 complexity for package managers (machine), increasing efficiency,
36 reducing resolution time and probably eventually memory/installed-db/
37 cache size as well.
38
39
40 Of course now I better understand Ciaran's argument for labels as well,
41 since it would extend the absolute/authoritative principle even further,
42 into the actual deps specification method in ebuilds/eclasses, thereby
43 reducing conceptual context load even further via more explicitly
44 absolute deps at the local level.
45
46 But like you, in practice I don't see that going anywhere in gentoo, in
47 the near/short-intermediate future, primarily due to political realities,
48 but practically, also due to the conceptual leap it'd require from devs
49 (as Ciaran himself points out in response to your statistical analysis of
50 exherbo's repo, former gentoo devs simply don't tend to take advantage of
51 this aspect of labels in exherbo either; the conceptual leap is in
52 practice simply too much). Thus, while academically, his label approach
53 is arguably better in terms of efficiency of absolutes, in practice,
54 there's little or no difference between how it's used, and how your
55 filtering approach will be used. Further, given the conceptual distance
56 between labels and gentoo's current approach, with filters falling in
57 between and political reality, the pragmatic filters approach at least
58 has /some/ chance of passing the dev-debate stage and being approved,
59 implemented and actually available for use in something like a reasonable
60 timeframe (say EAPI-6, in a year's time, a bit more for actual in-tree
61 use, given the historic EAPI-a-year processing). But exherbo style
62 labels support altho academically better, given political reality, in all
63 likelihood would take at least 2-3 years to pass and be usable in-tree.
64 And even then, its practical use as demonstrated in exherbo wouldn't take
65 advantage of the differences for another couple years after that, at
66 least.
67
68 Given that, having use of the useful pragmatic approach in a year's time
69 or so seems best, as opposed to an arguably (as you've pointed out, no
70 practical demonstration of it in exherbo yet, at least that you've been
71 able to find) more academically ideal approach in three, without any real
72 benefit over the pragmatic for five or more.
73
74 >> Besides, this isn't actually a -problem- as there's nothing which
75 >> really requires one to use such helpers; ebuild writers just, well,
76 >> can. :)
77 >
78 > Getting to this point; yes, people could hack around it manually. Pretty
79 > sure that hasn't been in doubt.
80
81 That's clearer now. Yes, people could continue to hack around it via
82 CDEPENDS, etc. But the number of common vars (or alternative
83 RDEPEND="$DEPEND ..." assignments) and the resulting conceptual load on
84 the human maintainer is set to increase exponentially as the number of
85 depend-types increases linearly. At some point it's just no longer
86 practically maintainable, and the whole process breaks down.
87
88 What the single dependencies variable aims to do in both the filtering
89 and labels forms is prevent that ultimate conceptual overload and
90 resulting process breakdown by allowing direct compound assignments, thus
91 eliminating the intermediate assignments and their exponential
92 proliferation.
93
94 Thanks again, Brian. Much clearer now, indeed, at least for me, and
95 presumably for others who previously had the same problem I was having.
96
97 =:^)
98
99 --
100 Duncan - List replies preferred. No HTML msgs.
101 "Every nonfree program has a lord, a master --
102 and if you use the program, he is your master." Richard Stallman