1 |
On 14/11/14 15:01, Rich Freeman wrote: |
2 |
> On Thu, Nov 13, 2014 at 9:38 PM, Michael Palimaka <kensington@g.o> wrote: |
3 |
>> On 14/11/14 11:06, Rich Freeman wrote: |
4 |
>>> |
5 |
>>> Well, the idea would be to maintain the virtual INSTEAD of @system, or |
6 |
>>> have @system just pull in the virtual and make some arch-specific |
7 |
>>> additions. |
8 |
>> |
9 |
>> Will that work? Some profiles remove packages from the base @system and |
10 |
>> replace it with their own implementations (eg. BSD). |
11 |
> |
12 |
> Maybe. The thing is that a package either depends on something or it |
13 |
> doesn't. If it really does depend on something, then the fact that it |
14 |
> isn't available on BSD/etc isn't going to magically make the package |
15 |
> work. We just loosely define system dependencies in a way that makes |
16 |
> them work 98% of the time, basically accepting that things are going |
17 |
> to break and we get away with it because few of our users actually run |
18 |
> on BSD/etc. |
19 |
> |
20 |
> If it is just a matter of preference then a profile could install an |
21 |
> alternative package that is in a virtual. However, this won't work if |
22 |
> everybody still uses some convenience virtual that pulls in bash/etc |
23 |
> and the BSD folks don't want to install bash unnecessarily. |
24 |
> |
25 |
> The only perfect solution is explicit dependencies across the board. |
26 |
> If we want to be lazy and not have to list 50 deps for hello world, |
27 |
> then the package manager isn't going to know whether hello world |
28 |
> actually works on every arch/profile/etc. |
29 |
> |
30 |
> Maybe the better solution is some kind of automation around (R)DEPEND. |
31 |
> In any case, I agree that it is a bit beyond the original scope of |
32 |
> this. |
33 |
> |
34 |
>> Maybe some dependencies (within reason) should always be listed, for |
35 |
>> example when there's linkage eg. to libbzip2 or liblzma. That would make |
36 |
>> it easy to find consumers eg. if an alternate implementation appeared, |
37 |
>> and already appears to be a common practice. |
38 |
> |
39 |
> The problem is that if it isn't 100% then it isn't all that great a |
40 |
> solution. It also isn't really necessary unless you want to remove a |
41 |
> package from the system set. If an alternative implementation |
42 |
> appears, then you create a virtual, place that virtual in the system |
43 |
> set, and all the packages in the tree remain happy to use whatever |
44 |
> implementation the user has installed without the risk of it getting |
45 |
> depcleaned. |
46 |
> |
47 |
> In the past when we've considered removing a package from @system |
48 |
> there is usually a thread on -dev, and if there is a general sense |
49 |
> that we want to move forward then the announcement goes out for |
50 |
> everybody to check their packages and add an explicit dependency if |
51 |
> needed (often with tinderbox runs and the like). Then after a delay |
52 |
> the package is removed from @system and maintainers get to deal with |
53 |
> anything they missed. |
54 |
> |
55 |
> I don't have a problem with devs listing dependencies anytime they're |
56 |
> real and they feel it makes sense to do so. I wouldn't make a push to |
57 |
> have them go out of their way to do it for any particular package |
58 |
> unless we are actively looking to remove it from @system, or there is |
59 |
> some other driver. Slot operator deps would be the one case where I |
60 |
> would try to push on maintainers to list deps. |
61 |
> |
62 |
> And I do apologize for piling on a bit - trying to get rid of @system |
63 |
> has been one of my soap box issues for a while. It really seems like |
64 |
> an ugly, if practical, solution. |
65 |
|
66 |
I think the proposed text in my previous reply is an improvement on the |
67 |
current text. It certainly doesn't attempt to solve the problem of |
68 |
implicit dependencies 100%, but I don't think that's a good reason to |
69 |
avoid improvement. |
70 |
|
71 |
The new text doesn't change the status quo at all. It just attempts to |
72 |
clarify that: |
73 |
|
74 |
* It's up to the developer if they wish to include a system dependency |
75 |
or not (ie. it's not frowned upon, which was the issue raised in the |
76 |
original bug) |
77 |
|
78 |
* It's recommended (but not required) to depend upon a system dependency |
79 |
if it's linked against (this is already common practice and there seems |
80 |
to be support for requiring it, but I don't want to get too |
81 |
controversial :-) |