Gentoo Archives: gentoo-dev

From: Tom Wijsman <TomWij@g.o>
To: pinkbyte@g.o
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Dependencies default to accept any slot value acceptable (:*), can we default to :0 instead?
Date: Mon, 09 Dec 2013 10:57:15
Message-Id: 20131209115527.4ef48b36@TOMWIJ-GENTOO
In Reply to: Re: [gentoo-dev] Dependencies default to accept any slot value acceptable (:*), can we default to :0 instead? by Sergey Popov
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

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies