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 |
[...] |