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. |