Gentoo Archives: gentoo-dev

From: Alexis Ballier <aballier@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Please port your packages to Python 3.8
Date: Fri, 04 Sep 2020 12:54:24
Message-Id: 20200904145413.0331c104@pepito
In Reply to: Re: [gentoo-dev] Please port your packages to Python 3.8 by Michael Orlitzky
1 On Thu, 3 Sep 2020 14:17:06 -0400
2 Michael Orlitzky <mjo@g.o> wrote:
3
4 > On 2020-09-03 12:38, Alexis Ballier wrote:
5 > >
6 > > if some upgrade wants a package with unmatched deps (e.g. not
7 > > installed at all or py38 usedep not satisfied), $PM will surely try
8 > > to satisfy it by installing an ebuild. I don't think PMS specifies
9 > > this, nor should it.
10 > >
11 >
12 > It's not an upgrade per se. The situation is roughly this:
13 >
14 > 1. User installs foo-1.2.3.ebuild, which supports python-3.7.
15 > 2. Developer ninja-edits the ebuild to support python-3.8.
16 > 3a. (crickets)
17 > 4a. Developer removes python-3.7 support from foo-1.2.3.ebuild.
18 > 5a. The next time something pulls foo-1.2.3 into the depgraph,
19 > the PM will see that the installed version of foo-1.2.3 depends
20 > on python-3.7, but that there is no python-3.7 in the tree or that
21 > it's masked. Now emerge always fails.
22
23
24 py37 will (*) still be installed as it cannot be depcleaned because of
25 1. emerge won't fail since deps are satisfied.
26
27
28 (*) or rather should, but I think the only case that matters is a valid
29 system state where noone forced uninstall of a needed package or
30 manually rm'ed some random files
31
32 >
33 > or..
34 >
35 > 3b. Some reverse dependency of foo-1.2.3 gets python-3.8 support.
36 > 4b. A user tries to install that revdep, but the PM sees that
37 > the latest version of foo is already installed, and it (the
38 > installed version) doesn't support python-3.8. Mysterious
39 > error messages and manual intervention ensue.
40
41
42 precisely the case I wrote above: unsatisfied dep -> pull ebuild.
43 non-issue too.
44
45
46 > What's happening is that the PM is using the metadata from the
47 > installed version of the package, rather than the ninja-edited
48 > metadata in the repo (how would it know which ebuilds were edited
49 > meaningfully?). That's completely legal according to the PMS, and
50 > also the smart thing to do: sourcing a few thousand lines of bash
51 > *just in case* there was an important change in some ebuild is a huge
52 > waste of users' time.
53
54 you seem to be confusing dynamic deps and unsatisfied deps here. A
55 package installed with py38 disabled (e.g. after a revbump) or no py38
56 support at all (e.g. without revbump) will not satisfy a [py38] usedep
57 in any case so will work just the same
58
59
60 > Developers have an easy way to signal that there was an important
61 > change: to bump the "r" number at the end of the ebuild. This forces
62 > any upgrade involving e.g. foo-1.2.3 to pull in foo-1.2.3-r1, and the
63 > fact that an upgrade is available is evident from `ls`, rather than
64 > from sourcing a mountain of bash. One developer makes a change, and
65 > it saves thousands of users each a lot of time. That's what we're all
66 > here for.
67
68 fixing non-issues does not seem so important to me :/
69
70 [...]

Replies

Subject Author
Re: [gentoo-dev] Please port your packages to Python 3.8 Michael Orlitzky <mjo@g.o>