On Mon, 09 Dec 2013 10:52:15 +0400
Sergey Popov <pinkb...@gentoo.org> wrote:

> In short - please do NOT do this.

Why not? What about other solutions? What do you think?

There have come up several solutions, the one suggested in the first
mail is no longer of interest due to SLOT="0" no longer being special;
now ideas tend to focus towards disallowing slot-less dependencies, or
otherwise implement under the form of a repoman warning.

> More complicated answer - you break
> the whole idea of slots. When user types 'emerge cat/foo' it means
> now - "i want cat/foo, whatever versions it will be(depending on mask,
> keywords, etc, etc)". Your proposal changes this behaviour
> drastically, and reasons for such changes are not worth it.

A package ATOM used in another place warrants another discussion; when
an user types it, what does the user mean? We could opt to not change
the behavior for users if their usage is different.

Note that the syntax (and thus usage) is different by design:

     $ emerge -1pv '|| ( sys-apps/openrc sys-apps/systemd )'
    !!! '|| ( sys-apps/openrc sys-apps/systemd )' is not a valid
        package atom.
    !!! Please check ebuild(5) for full details.

The reasons for changing dependency syntax are worth it:

For the dependency syntax, having :* as a default breaks things or
causes a lot of work. If explicit slots (or :0) were the default, it
works and you spare out dealing with lots of reverse dependencies when
you introduce a new slot.

When you depend on libfoo; I think you mean to depend on the libfoo
that is currently in the Portage tree (eg. libfoo:0 or so), whereas
libfoo:* would break as soon as the libfoo maintainer starts a new slot.

With libfoo:*, this then results in the following procedure:

1. Add libfoo:2 to the Portage tree and package.mask.
2. Inform everyone to update the dependency accordingly, wait for it.
3. Unmask libfoo:2. (Somewhere in the future)

Whereas with an implicit or explicit libfoo:${SLOT}, this results in:

1. Add libfoo:2 to the Portage tree. (Right now, without mask)
2. Maintainers support libfoo:2 over time as they bump packages.

As the former is frustrating, it can have library maintainers create a
new package instead of a new SLOT or not add the new version at all;
whereas the latter would allow the library maintainer to just add it,
especially as it is the task of individual maintainers to test their
package against new libraries as they come along.

Thus, that's why I'd like to see slot-less dependencies go and make it
policy or at least a repoman QA warning that people specify them.

Specifying it without a slot is moving the work of dependency testing
on the library maintainer instead of the package maintainer, causing the
library maintainer to either test tons of packages or file tons of bug.

Why have the library maintainer do extra work when a package maintainer
can just test it instead during a version bump? (As required anyway)

What do you think? Why do you think we should still keep a default :*?

-- 
With kind regards,

Tom Wijsman (TomWij)
Gentoo Developer

E-mail address  : tom...@gentoo.org
GPG Public Key  : 6D34E57D
GPG Fingerprint : C165 AF18 AB4C 400B C3D2  ABF0 95B2 1FCD 6D34 E57D

Attachment: signature.asc
Description: PGP signature

Reply via email to