Gentoo Archives: gentoo-dev

From: Kent Fredric <kentnl@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Reverse use of Python/Ruby versions
Date: Mon, 10 Apr 2017 04:36:26
Message-Id: 20170410163548.7d0e5348@katipo2.lan
In Reply to: Re: [gentoo-dev] Reverse use of Python/Ruby versions by "William L. Thomson Jr."
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

Replies

Subject Author
Re: [gentoo-dev] Reverse use of Python/Ruby versions "William L. Thomson Jr." <wlt-ml@××××××.com>