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 |