Gentoo Archives: gentoo-dev

From: Kent Fredric <kentfredric@×××××.com>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Re: [RFC] Policy for migrating library consumers to subslots
Date: Mon, 30 Sep 2013 21:40:43
Message-Id: CAATnKFB9XEA8Zyv5Tz0iidsJqnqCHarXJ1ux4QwU+GiGVPbQ4Q@mail.gmail.com
In Reply to: [gentoo-dev] Re: [RFC] Policy for migrating library consumers to subslots by Martin Vaeth
1 On 1 October 2013 04:52, Martin Vaeth <vaeth@××××××××××××××××××××××××.de>wrote:
2
3 >
4 > For instance, if you have your home-brewn version of program X,
5 > you can just install the version under its own package name Y and
6 > make it satisfy all dependencies of X.
7 > (Currently you have to mess around with package.provided which has
8 > many drawbacks like e.g. problems with USE-dependencies and,
9 > moreover, you cannot publish Y in an overlay without requiring
10 > that the user of that overlay modifies his package.provided manually.)
11
12
13 Here, this is even more annoying, because as long as this inverse
14 dependency is regulated by the eclass, even ebuilds in alternative trees
15 are out of luck from being seen as candidates for an multi-way provided
16 dependency, at least, you'd have to modify the eclass "somehow"
17
18 This is something a native PROVIDES= implementation is not limited by.
19
20 Though I reapeat, I do not want PROVIDES="perl-core/Foo-Bar", because thats
21 going to have us the same problem, as it declares provides only on the
22 granularity of *packages* not the granulatiry of files/modules.
23
24 I'd be championing something more like ( but not nessecarily exactly like )
25
26 PROVIDES="cpan-module://Module::Build/4.5"
27
28 Borrowing terms from the metadata.xml information, and the use of a
29 per-token-type protocol prefix allows for multiple unambiguous namespaces
30 that are not bound to the cat/package layout.
31
32 And here, the semantics after "://" could be implemented differently if
33 nessecary.
34
35 Consuming code would just say
36
37 DEPEND="cpan-module://Module::Build" or
38 DEPEND=">=cpan-module://Module::Build/4.0"
39
40 Though I don't know. The real problem is that as convenient as a PROVIDES=
41 interface may be, doing it performantly could be a nightmare, and portage
42 would probably need some sort of PROVIDES cache to even support such a
43 feature efficiently. ( Which is basically what my solution offers, just
44 with a developer-side-cache-generation instead of user-side-caching )
45
46 --
47 Kent