1 |
On Mon, 09 Dec 2013 10:52:15 +0400 |
2 |
Sergey Popov <pinkbyte@g.o> wrote: |
3 |
|
4 |
> In short - please do NOT do this. |
5 |
|
6 |
Why not? What about other solutions? What do you think? |
7 |
|
8 |
There have come up several solutions, the one suggested in the first |
9 |
mail is no longer of interest due to SLOT="0" no longer being special; |
10 |
now ideas tend to focus towards disallowing slot-less dependencies, or |
11 |
otherwise implement under the form of a repoman warning. |
12 |
|
13 |
> More complicated answer - you break |
14 |
> the whole idea of slots. When user types 'emerge cat/foo' it means |
15 |
> now - "i want cat/foo, whatever versions it will be(depending on mask, |
16 |
> keywords, etc, etc)". Your proposal changes this behaviour |
17 |
> drastically, and reasons for such changes are not worth it. |
18 |
|
19 |
A package ATOM used in another place warrants another discussion; when |
20 |
an user types it, what does the user mean? We could opt to not change |
21 |
the behavior for users if their usage is different. |
22 |
|
23 |
Note that the syntax (and thus usage) is different by design: |
24 |
|
25 |
$ emerge -1pv '|| ( sys-apps/openrc sys-apps/systemd )' |
26 |
!!! '|| ( sys-apps/openrc sys-apps/systemd )' is not a valid |
27 |
package atom. |
28 |
!!! Please check ebuild(5) for full details. |
29 |
|
30 |
The reasons for changing dependency syntax are worth it: |
31 |
|
32 |
For the dependency syntax, having :* as a default breaks things or |
33 |
causes a lot of work. If explicit slots (or :0) were the default, it |
34 |
works and you spare out dealing with lots of reverse dependencies when |
35 |
you introduce a new slot. |
36 |
|
37 |
When you depend on libfoo; I think you mean to depend on the libfoo |
38 |
that is currently in the Portage tree (eg. libfoo:0 or so), whereas |
39 |
libfoo:* would break as soon as the libfoo maintainer starts a new slot. |
40 |
|
41 |
With libfoo:*, this then results in the following procedure: |
42 |
|
43 |
1. Add libfoo:2 to the Portage tree and package.mask. |
44 |
2. Inform everyone to update the dependency accordingly, wait for it. |
45 |
3. Unmask libfoo:2. (Somewhere in the future) |
46 |
|
47 |
Whereas with an implicit or explicit libfoo:${SLOT}, this results in: |
48 |
|
49 |
1. Add libfoo:2 to the Portage tree. (Right now, without mask) |
50 |
2. Maintainers support libfoo:2 over time as they bump packages. |
51 |
|
52 |
As the former is frustrating, it can have library maintainers create a |
53 |
new package instead of a new SLOT or not add the new version at all; |
54 |
whereas the latter would allow the library maintainer to just add it, |
55 |
especially as it is the task of individual maintainers to test their |
56 |
package against new libraries as they come along. |
57 |
|
58 |
Thus, that's why I'd like to see slot-less dependencies go and make it |
59 |
policy or at least a repoman QA warning that people specify them. |
60 |
|
61 |
Specifying it without a slot is moving the work of dependency testing |
62 |
on the library maintainer instead of the package maintainer, causing the |
63 |
library maintainer to either test tons of packages or file tons of bug. |
64 |
|
65 |
Why have the library maintainer do extra work when a package maintainer |
66 |
can just test it instead during a version bump? (As required anyway) |
67 |
|
68 |
What do you think? Why do you think we should still keep a default :*? |
69 |
|
70 |
-- |
71 |
With kind regards, |
72 |
|
73 |
Tom Wijsman (TomWij) |
74 |
Gentoo Developer |
75 |
|
76 |
E-mail address : TomWij@g.o |
77 |
GPG Public Key : 6D34E57D |
78 |
GPG Fingerprint : C165 AF18 AB4C 400B C3D2 ABF0 95B2 1FCD 6D34 E57D |