1 |
On 14/11/14 11:06, Rich Freeman wrote: |
2 |
> On Thu, Nov 13, 2014 at 10:07 AM, Michael Palimaka |
3 |
> <kensington@g.o> wrote: |
4 |
>> |
5 |
>> Ditching implicit dependencies is an interesting idea but not practical. |
6 |
>> Nobody wants to the laundry list, and there's little benefit in |
7 |
>> maintaining a virtual/system clone of @system. |
8 |
>> |
9 |
> |
10 |
> Well, the idea would be to maintain the virtual INSTEAD of @system, or |
11 |
> have @system just pull in the virtual and make some arch-specific |
12 |
> additions. |
13 |
|
14 |
Will that work? Some profiles remove packages from the base @system and |
15 |
replace it with their own implementations (eg. BSD). |
16 |
|
17 |
> |
18 |
> As far as benefits go, they include: |
19 |
> 1. No need to have multiple ways of grouping packages. |
20 |
> 2. You can more than one virtual, so that you could just pull in the |
21 |
> super-lazy equivalent to @system, or maybe you just pull in POSIX+bash |
22 |
> and C++ or something like that. |
23 |
> 3. You can split up that virtual so that convenience packages like |
24 |
> ssh aren't in the same virtual as widespread dependencies like |
25 |
> bash/zlib/glibc/gcc/etc. There is no reason that you can't build |
26 |
> openssh in parallel, but right now you can't because we lump it in |
27 |
> with glibc. |
28 |
> 4. You can choose when to use the virtual at all, versus explicitly |
29 |
> naming all dependencies. |
30 |
> |
31 |
> For 99% of packages it would be the same. We could even have that |
32 |
> dependency added automatically if something isn't done in the ebuild |
33 |
> to disable it, which would make ebuilds work the same as they do now. |
34 |
> However, for the packages that are actually in @system we could list |
35 |
> explicit dependencies and then portage would actually be able to |
36 |
> handle some things automatically. Also, by using virtuals that are |
37 |
> the same across all archs, we have a bit more consistency. |
38 |
|
39 |
Definitely interesting ideas, but I think it's beyond the scope of |
40 |
what's trying to be addressed here. Solving bug #393445 would also go a |
41 |
long way to sorting out core-system vs. want-to-have packages. |
42 |
|
43 |
> Policy-wise, though, the status quo isn't that bad. You never have to |
44 |
> list dependencies that are in @system, full stop. You can list a |
45 |
> dependency that is in @system anytime you want to, full stop. |
46 |
> |
47 |
> That is, it is never right or wrong to list an unversioned dependency |
48 |
> that is in @system. Sometimes doing one or the other is advantageous |
49 |
> (such as when you have a versioned dependency, or a virtual is in |
50 |
> @system but you need a specific implementation, or you want to use a |
51 |
> slot-op dep). I'm fine with examples, but they shouldn't be firm |
52 |
> rules, just helpful guidelines. |
53 |
|
54 |
Maybe some dependencies (within reason) should always be listed, for |
55 |
example when there's linkage eg. to libbzip2 or liblzma. That would make |
56 |
it easy to find consumers eg. if an alternate implementation appeared, |
57 |
and already appears to be a common practice. |
58 |
|
59 |
Perhaps instead of creating a whitelist, we could just update the text a |
60 |
bit: |
61 |
|
62 |
All packages have an implicit compile-time and runtime dependency upon |
63 |
the entire system target. For toolchain packages part of the system |
64 |
target (such as gcc, libc, binutils and so on) it is not necessary, nor |
65 |
advisable, to specify dependencies, except where specific versions or |
66 |
packages (for example, glibc over uclibc) are required. |
67 |
|
68 |
For other non-toolchain packages part of the system target (such as |
69 |
bzip2 or wget) it is optional to specify a dependency. Consideration |
70 |
should be given to packages that don't appear in system targets in other |
71 |
profiles or might be removed in the future. Where package links to |
72 |
package in the system target (such as libbz2) it is recommended to |
73 |
specify a dependency. |