Gentoo Archives: gentoo-dev

From: Martin Vaeth <vaeth@××××××××××××××××××××××××.de>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: [RFC] Policy for migrating library consumers to subslots
Date: Fri, 27 Sep 2013 19:49:19
Message-Id: slrnl4bo8o.loe.vaeth@lounge.imp.fu-berlin.de
In Reply to: Re: [gentoo-dev] Re: [RFC] Policy for migrating library consumers to subslots by Kent Fredric
1 Sorry if this is duplicate: I repost since I cannot see it after
2 a few hours.
3
4 Kent Fredric <kentfredric@×××××.com> wrote:
5 >
6 > On 27 September 2013 08:02, Martin Vaeth
7 ><vaeth@××××××××××××××××××××××××.de>wrote:
8 >
9 >> For those which are provided by perl itself, you could have
10 >> a corresponding useflag of dev-lang/perl and make a use dependency:
11 >> If the main perl tarball does not provide the package, the perl ebuild
12 >> can pull in the corresponding package as a dependency.
13 >
14 > That would be horrible. You'd have a massive list of USE flags, and you'd
15 > want *all* of them by default, and they'd have to pull the deps as
16 > PDEPENDS, because its impossible to have them as DEPENDS.
17
18 Why is this horrible? Perhaps there is a misunderstanding.
19 You would need only those useflags which are possibly not provided
20 by the corresponding perl version: The package dependent on a feature
21 could just use e.g. DEPEND=dev-lang/perl[perl_module_Term_ANSIColor(+)]
22 And concerning the number of use-flags, it might be worth thinking
23 about a USE_EXPAND="perl_module".
24
25 > so maybe rebuild the entirety of Perl, just to install one thing that
26 > can be installed seperately from Perl.
27
28 If the common flags are enabled by default, this would only involve
29 users who have a serious reason (e.g. space issues) to disable some
30 modules. Yes, these users would have to rebuild unnecessarily if
31 they change their mind later on. I would compare disabling these
32 modules with something like setting USE=minimal for other packages;
33 users should know what they are doing if they use this.
34
35 > Also, instead of having the logical thing when Module::Build does get fully
36 > removed from perl, that we can simply remap the virtual to always pull from
37 > perl-core/Module-Build, we'd have to re-write every package in tree that
38 > used Module-Build.
39
40 My idea is to keep this in the perl ebuilds "forever":
41 According to the perlversions which are still in the tree, it will take
42 dozens of years until all perl versions providing Module-Build have vanished
43 from the tree, and only afterwards it makes sense to think about
44 such a change.
45
46 > This is a problem with Module::Build, Test-Simple
47 > and ExtUtils::MakeMaker, because people regularly depend on specific
48 > versions of those things
49
50 My suggestion was explicitly about modules for which ebuilds do
51 not require an explicit version. For those few(!) modules for which
52 particular versions are needed, perhaps the virtual might be kept.
53 Alternatively, for such cases it might make sense to depend
54 directly on the package, since the probability to save duplicate
55 installation in such a case is rather low, anyway.
56
57 > Worse than that I'm afraid, things that are virtualled are virtualled
58 > because upstream can and will depend on a specific version of that thing
59
60 As mentioned above, this involves only a relatively small number of
61 virtuals. Here is how I got the list:
62
63 eix --print-all-depends | sed 's/"//g' \
64 grep -o '[^ ]*virtual/perl-[^ ]*-[0-9][^ ]*' |sort -u
65
66 And I guess that in this list of (for the main tree, but even with
67 eix -Z ... the list is hardly longer) 62 packages
68 actually many fall into the class where the minimal version is
69 provided by current stable perl version anyway so that actually the
70 minimal version dependency is redundant.
71
72 > And more, there is the growing list of modules that may be presently
73 > installed with perl, but are slated to stop being shipped with perl
74 > [...] and inlining a big list of
75 > conditional dependencies in each and every module that uses such a package.
76
77 I was not suggesting inlining the list into the dependency but
78 only inlining the USE-flag into the (single) perl ebuild.
79 Currently if I have a package which needs e.g. Term-ANSI-Color,
80 but not in a particular version, if I do not want to install an
81 unnecessary duplicate version, I must inline a dependency like
82 || ( >=dev-lang/perl-5.14 virtual/perl-Term-ANSIColor )
83 and possibly change this if perl-5.20 does no longer contain
84 perl-Term-ANSIColor.

Replies