Gentoo Archives: gentoo-python

From: "Michał Górny" <mgorny@g.o>
To: Mike Gilbert <floppym@g.o>
Cc: gentoo-python@l.g.o, python@g.o
Subject: Re: [gentoo-python] Re: Handling packages not supporting multiple Python implementations
Date: Sat, 27 Oct 2012 07:29:46
Message-Id: 20121027093019.50a3aa00@pomiocik.lan
In Reply to: Re: [gentoo-python] Re: Handling packages not supporting multiple Python implementations by Mike Gilbert
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

Attachments

File name MIME type
signature.asc application/pgp-signature