1 |
On Fri, 26 Oct 2012 19:55:30 -0400 |
2 |
Mike Gilbert <floppym@g.o> wrote: |
3 |
|
4 |
> On Fri, Oct 26, 2012 at 5:41 PM, Michał Górny <mgorny@g.o> wrote: |
5 |
> > On Thu, 25 Oct 2012 17:00:22 -0400 |
6 |
> > Mike Gilbert <floppym@g.o> wrote: |
7 |
> > |
8 |
> >> On Tue, Oct 23, 2012 at 5:58 PM, Michał Górny <mgorny@g.o> wrote: |
9 |
> >> > Hello, |
10 |
> >> > |
11 |
> >> > After starting to deploy python-r1 on packages supporting multiple |
12 |
> >> > Python implementations, I believe it is time to start thinking about |
13 |
> >> > those packages which don't support that. Firstly, I would like to gain |
14 |
> >> > a general feedback/ideas on the possible solutions, without getting too |
15 |
> >> > deep into the technical details of it. |
16 |
> >> > |
17 |
> >> > As far as I can think, we have the following possibilities: |
18 |
> >> > |
19 |
> >> > |
20 |
> >> > 1) Assume that installing stuff for a single Python implementation is |
21 |
> >> > deprecated and let the packages rot with the old eclass. |
22 |
> >> > |
23 |
> >> > It is probably the simplest solution (i.e. not doing anything to |
24 |
> >> > address the issue) but truth be told, I doubt this will actually work. |
25 |
> >> > People will just keep using the old eclass which doesn't really do much |
26 |
> >> > good for those packages... |
27 |
> >> > |
28 |
> >> > And even if some people will actually start supporting multiple |
29 |
> >> > implementations... that may be even worse. Just look at dev-libs/boost |
30 |
> >> > to see what I mean. |
31 |
> >> > |
32 |
> >> > |
33 |
> >> > 2) Use a xor-type REQUIRED_USE for those packages. |
34 |
> >> > |
35 |
> >> > Put the whole set of PYTHON_TARGETS but add a REQUIRED_USE='^^ ( ... )' |
36 |
> >> > for them, effectively requesting only a single implementation being |
37 |
> >> > enabled. |
38 |
> >> > |
39 |
> >> > I believe that this is quite a good solution, at least from |
40 |
> >> > the dependency point of view. We clearly express which Python |
41 |
> >> > implementations are supported by a particular package and which one was |
42 |
> >> > enabled. We can express cross-package dependencies cleanly. |
43 |
> >> > |
44 |
> >> > The problem lies in user-friendliness. Although with the current |
45 |
> >> > default (python2_7 only) it wouldn't cause any trouble, whenever user |
46 |
> >> > enables more than a single implementation, every single-implementation |
47 |
> >> > package will require package.use adjustment. This will become an even |
48 |
> >> > more widespread issue when we decide to re-enable Python 3. |
49 |
> >> > |
50 |
> >> > To be honest, I don't see any good way around that. |
51 |
> >> > |
52 |
> >> > |
53 |
> >> > 3) Use implicit implementation selection (like python.eclass). |
54 |
> >> > |
55 |
> >> > Well, as some say, this is a very good solution since it's well tested. |
56 |
> >> > Its limitations and brokenness are obvious. Just I doubt it is really |
57 |
> >> > worth the effort to write something that bad. |
58 |
> >> > |
59 |
> >> > The main problem here is that the chosen Python implementation is |
60 |
> >> > implicit. Binary packages don't express it. Cross-package dependencies |
61 |
> >> > don't express it. User changes the implementation, stuff breaks |
62 |
> >> > silently and you end up with some kind of python-updater (why a tool |
63 |
> >> > to fix breakage is called 'updater'?!). |
64 |
> >> > |
65 |
> >> > |
66 |
> >> > Do you have any more ideas? Opinions? |
67 |
> >> > |
68 |
> >> |
69 |
> >> Like you, I really can't come up with an ideal solution here. |
70 |
> >> |
71 |
> >> We really have 2 classes of packages here: |
72 |
> > |
73 |
> > Thanks for pointing that out. |
74 |
> > |
75 |
> >> 1. Packages that don't care what version of python you use, but |
76 |
> >> install files outside of site-packages. |
77 |
> > |
78 |
> > That sounds a bit like a custom case to me. Not sure if python-r1 |
79 |
> > should support those out-of-the-box or just provide a few utility |
80 |
> > functions (python-utils-r1?) to help installing them. |
81 |
> > |
82 |
> >> 2. Packages that build code (like libraries) against a specific |
83 |
> >> version of python/libpython. |
84 |
> >> |
85 |
> >> The implicit implementation selection works fine for #1, but not so well for #2. |
86 |
> > |
87 |
> > Indeed. The #2 will be probably handled through REQUIRED_USE, if noone |
88 |
> > comes up with a better idea. |
89 |
> > |
90 |
> |
91 |
> Yeah, I probably need to remove python3_2 from arch/*/make.defaults |
92 |
> before we move forward with that plan. I'm sure that will make a few |
93 |
> people feel better anyway. |
94 |
|
95 |
Hmm, so we still have that somewhere? I thought folks forced us to |
96 |
remove it completely. Probably p-d-ng wasn't spread enough for them to |
97 |
notice ;). |
98 |
|
99 |
-- |
100 |
Best regards, |
101 |
Michał Górny |