1 |
On Sun, 9 Apr 2017 22:04:13 -0400 |
2 |
"William L. Thomson Jr." <wlt-ml@××××××.com> wrote: |
3 |
|
4 |
> This has never been the case with Java. |
5 |
|
6 |
Its not a problem with C binaries either, because you have a discrete |
7 |
compile time, and language level interop between compiled binary forms. |
8 |
|
9 |
Meanwhile, you cannot build two parts of a given python dependency chain with |
10 |
different pythons, nor different perls. |
11 |
|
12 |
> If package A requires version X, but B Y, then B builds with Y as its |
13 |
> pulled in as a dep. while A proceeds to build with X. |
14 |
> |
15 |
> Where this is different for Python, Ruby, and also Perl. They all |
16 |
> install files into a directory based on version. You may have multiple |
17 |
> copies in each, vs one. Perl does not have targets, nor does Java. |
18 |
|
19 |
Right, but this is impossible with Ruby, Python, and Perl. |
20 |
|
21 |
Perl *could* have targets, and some people think could do with it, but it |
22 |
and java are very much in different boats. |
23 |
|
24 |
Perl is in the same boat as Python and Ruby where in "new version of thing" |
25 |
means "everything must be compiled with the new target" |
26 |
|
27 |
Perl simply has a *moving* target instead of multiple concurrent targets. |
28 |
|
29 |
Essentially, with Perl we've done the effect of "Add X, Remove Y" for all things. |
30 |
|
31 |
We additionally have a much better precedent than python at syntax-interop between |
32 |
versions, so its more justifiable to only have the single target ( because you practically |
33 |
never need an older perl "just for compat reasons", though at the rate this garbage[1] is |
34 |
going, that could change one day ) |
35 |
|
36 |
|
37 |
If anything, Perl is only avoiding the Python problem you hate with significant amounts |
38 |
of heroism, and its only a matter of time before upstream force our hands in ways that |
39 |
make that heroism non-viable, and we have to dig deep and work out how the hell |
40 |
to maintain concurrent targets. |
41 |
|
42 |
|
43 |
> The present system is a PITA for users. Fiddling with adding/removing |
44 |
> targets for Python/Ruby. In addition to selecting which for the system. |
45 |
> All these same problems exist for Java, with the exception of |
46 |
> installation locations as mentioned. |
47 |
|
48 |
I honestly think you're looking at the wrong problem domain to fix this problem, |
49 |
in ways that will introduce yet more regressions and broken trees. |
50 |
|
51 |
We should have what I've been saying we should have for a while now: |
52 |
|
53 |
* Soft Options. |
54 |
|
55 |
We only have 2 types of option at present from the users perspective, "on" |
56 |
options, and "off" options. |
57 |
|
58 |
Portage doesn't even distinguish between who is setting them, user profile |
59 |
and the gentoo profiles simply flatten into a single logical profile, |
60 |
and then portage then demands that changes be made to this set, failing to discriminate |
61 |
at all between "ok, this was the profile specified default and it needs to be non-default for this problem" |
62 |
and "user doesn't actually want this, how can we avoid that" |
63 |
|
64 |
And portage then compounds this by dictating that any option changes that ebuilds need |
65 |
must be enshrined by the user as things the /user/ wants, when in truth, they're not things |
66 |
the user wants, they're things the ebuilds want, and the user begrudingly accepts. |
67 |
|
68 |
Hence why an option of "on, but only if portage really needs it" is missing, but needed. |
69 |
|
70 |
I would gladly set soft-targets of every python version under the sun, and then allow |
71 |
portage to turn them on *as necessary*, and this would be much preferable to having to either |
72 |
|
73 |
a) turn them on globally and pull in stuff and waste time compiling stuff that's not even getting used. |
74 |
|
75 |
b) Maintain a painful and carefully catered list of things to prevent aforementioned problems. |
76 |
|
77 |
In short, users need a way to discriminate "things I care about" from "things I don't care about" |
78 |
|
79 |
Currently, its just a big cluster of those things in one place, and the complexity is inescapably |
80 |
thrust into the users hands on a daily basis. |
81 |
|
82 |
|
83 |
1: https://bugs.gentoo.org/showdependencytree.cgi?id=613764&hide_resolved=0 |