Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-04 Thread Michael Orlitzky
On 2020-09-04 09:22, Rich Freeman wrote:
> 
> Current Gentoo policy:
> 
> ...if the changes are likely to cause problems for end users." 

If you're willing to ignore the user reports of problems, and ignore the
mailing list threads telling you that it will cause problems, and avoid
running any tests, then it becomes possible to construct a fortress of
flawed reasoning to defend the claim that "this won't cause problems for
end users."



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-04 Thread Rich Freeman
On Fri, Sep 4, 2020 at 9:06 AM Michael Orlitzky  wrote:
>
> It's easy to say "well this is not an issue because it can be solved by
> ..."
>
> If it's easy, get it added to the PMS and I'll agree with you.
>

Current Gentoo policy:

"Maintainers must not assume that dynamic dependencies will be applied
by the package manager. When changing runtime dependencies the
maintainer should revision the ebuild if the changes are likely to
cause problems for end users." [1]

Certainly having a discussion about whether this could change down the
road is reasonable, but keep in mind this would require package
managers to actually be changed, which requires code.

Out of the box portage has issues with dynamic deps[2] so it isn't a
solved problem on any package manager, let alone all of them.

In the interim, devs MUST revbump in these situations.  The Council
left some room for discretion, and as a result I end up having portage
rebuild everything on changed deps because frankly I don't trust
people to get it right, since if people can't see for themselves the
reason for a rule it seems to be a reason to ignore it.

The rule is also documented in the devmanual[3].

1 - https://projects.gentoo.org/council/meeting-logs/20151011-summary.txt
2 - 
https://wiki.gentoo.org/wiki/Project:Portage/Changed_Deps#Ebuild_Revision_Bumps
3 - https://devmanual.gentoo.org/general-concepts/ebuild-revisions/index.html

-- 
Rich



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-04 Thread Alexis Ballier
On Fri, 4 Sep 2020 09:06:46 -0400
Michael Orlitzky  wrote:

> On 2020-09-04 08:54, Alexis Ballier wrote:
> > 
> > py37 will (*) still be installed as it cannot be depcleaned because
> > of 1. emerge won't fail since deps are satisfied.
> > 
> > 
> > (*) or rather should, but I think the only case that matters is a
> > valid system state where noone forced uninstall of a needed package
> > or manually rm'ed some random files
> > 
> 
> There's no need to speculate; use pkgcore for a month and come back
> and tell me how much comfort these hypotheticals were.

there's no speculation in assuming a consistent set of installed
packages (consistent as specified in... PMS ;) ); there is, however,
speculation in the hypothetical error messages when the installed set
of packages is inconsistent


> >> or..
> >>
> >>   3b. Some reverse dependency of foo-1.2.3 gets python-3.8 support.
> >>   4b. A user tries to install that revdep, but the PM sees that
> >>   the latest version of foo is already installed, and it (the
> >>   installed version) doesn't support python-3.8. Mysterious
> >>   error messages and manual intervention ensue.
> > 
> > 
> > precisely the case I wrote above: unsatisfied dep -> pull ebuild.
> > non-issue too.
> 
> It's easy to say "well this is not an issue because it can be solved
> by ..."

are you kidding ? are you seriously suggesting adding to PMS that PM
needs to pull ebuilds to install packages ? good luck with that ;)



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-04 Thread Michael Orlitzky
On 2020-09-04 08:54, Alexis Ballier wrote:
> 
> py37 will (*) still be installed as it cannot be depcleaned because of
> 1. emerge won't fail since deps are satisfied.
> 
> 
> (*) or rather should, but I think the only case that matters is a valid
> system state where noone forced uninstall of a needed package or
> manually rm'ed some random files
> 

There's no need to speculate; use pkgcore for a month and come back and
tell me how much comfort these hypotheticals were.


>> or..
>>
>>   3b. Some reverse dependency of foo-1.2.3 gets python-3.8 support.
>>   4b. A user tries to install that revdep, but the PM sees that
>>   the latest version of foo is already installed, and it (the
>>   installed version) doesn't support python-3.8. Mysterious
>>   error messages and manual intervention ensue.
> 
> 
> precisely the case I wrote above: unsatisfied dep -> pull ebuild.
> non-issue too.

It's easy to say "well this is not an issue because it can be solved by
..."

If it's easy, get it added to the PMS and I'll agree with you.



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-04 Thread Alexis Ballier
On Thu, 3 Sep 2020 14:17:06 -0400
Michael Orlitzky  wrote:

> On 2020-09-03 12:38, Alexis Ballier wrote:
> > 
> > if some upgrade wants a package with unmatched deps (e.g. not
> > installed at all or py38 usedep not satisfied), $PM will surely try
> > to satisfy it by installing an ebuild. I don't think PMS specifies
> > this, nor should it.
> > 
> 
> It's not an upgrade per se. The situation is roughly this:
> 
>   1. User installs foo-1.2.3.ebuild, which supports python-3.7.
>   2. Developer ninja-edits the ebuild to support python-3.8.
>   3a. (crickets)
>   4a. Developer removes python-3.7 support from foo-1.2.3.ebuild.
>   5a. The next time something pulls foo-1.2.3 into the depgraph,
>   the PM will see that the installed version of foo-1.2.3 depends
> on python-3.7, but that there is no python-3.7 in the tree or that
>   it's masked. Now emerge always fails.


py37 will (*) still be installed as it cannot be depcleaned because of
1. emerge won't fail since deps are satisfied.


(*) or rather should, but I think the only case that matters is a valid
system state where noone forced uninstall of a needed package or
manually rm'ed some random files

> 
> or..
> 
>   3b. Some reverse dependency of foo-1.2.3 gets python-3.8 support.
>   4b. A user tries to install that revdep, but the PM sees that
>   the latest version of foo is already installed, and it (the
>   installed version) doesn't support python-3.8. Mysterious
>   error messages and manual intervention ensue.


precisely the case I wrote above: unsatisfied dep -> pull ebuild.
non-issue too.


> What's happening is that the PM is using the metadata from the
> installed version of the package, rather than the ninja-edited
> metadata in the repo (how would it know which ebuilds were edited
> meaningfully?). That's completely legal according to the PMS, and
> also the smart thing to do: sourcing a few thousand lines of bash
> *just in case* there was an important change in some ebuild is a huge
> waste of users' time.

you seem to be confusing dynamic deps and unsatisfied deps here. A
package installed with py38 disabled (e.g. after a revbump) or no py38
support at all (e.g. without revbump) will not satisfy a [py38] usedep
in any case so will work just the same


> Developers have an easy way to signal that there was an important
> change: to bump the "r" number at the end of the ebuild. This forces
> any upgrade involving e.g. foo-1.2.3 to pull in foo-1.2.3-r1, and the
> fact that an upgrade is available is evident from `ls`, rather than
> from sourcing a mountain of bash. One developer makes a change, and
> it saves thousands of users each a lot of time. That's what we're all
> here for.

fixing non-issues does not seem so important to me :/

[...]



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-03 Thread Michael Orlitzky
On 2020-09-03 12:38, Alexis Ballier wrote:
> 
> if some upgrade wants a package with unmatched deps (e.g. not installed
> at all or py38 usedep not satisfied), $PM will surely try to satisfy
> it by installing an ebuild. I don't think PMS specifies this, nor should
> it.
> 

It's not an upgrade per se. The situation is roughly this:

  1. User installs foo-1.2.3.ebuild, which supports python-3.7.
  2. Developer ninja-edits the ebuild to support python-3.8.
  3a. (crickets)
  4a. Developer removes python-3.7 support from foo-1.2.3.ebuild.
  5a. The next time something pulls foo-1.2.3 into the depgraph,
  the PM will see that the installed version of foo-1.2.3 depends on
  python-3.7, but that there is no python-3.7 in the tree or that
  it's masked. Now emerge always fails.

or..

  3b. Some reverse dependency of foo-1.2.3 gets python-3.8 support.
  4b. A user tries to install that revdep, but the PM sees that
  the latest version of foo is already installed, and it (the
  installed version) doesn't support python-3.8. Mysterious
  error messages and manual intervention ensue.

What's happening is that the PM is using the metadata from the installed
version of the package, rather than the ninja-edited metadata in the
repo (how would it know which ebuilds were edited meaningfully?). That's
completely legal according to the PMS, and also the smart thing to do:
sourcing a few thousand lines of bash *just in case* there was an
important change in some ebuild is a huge waste of users' time.

Developers have an easy way to signal that there was an important
change: to bump the "r" number at the end of the ebuild. This forces any
upgrade involving e.g. foo-1.2.3 to pull in foo-1.2.3-r1, and the fact
that an upgrade is available is evident from `ls`, rather than from
sourcing a mountain of bash. One developer makes a change, and it saves
thousands of users each a lot of time. That's what we're all here for.

A package manager that uses the installed metadata is acting within its
rights (both pkgcore and portage without dynamic deps do it), so we
shouldn't be doing anything to break them in ::gentoo. Requiring
--changed-use is both insisting that users' waste time finding out
something that the developer could have told them, and also precluding
the use of a package manager that doesn't implement the (unspecified)
--changed-use flag in the same way portage does.

tl;dr the name of an ebuild is the only sensible (and PMS-compliant) way
to determine if something important changed inside it. The PMS says that
a new revision will be noticed by the PM, and it doesn't specify any
heuristics like --changed-use that ask the PM to (slowly) guess at it.
So, we should use revisions for these things.



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-03 Thread Alexis Ballier
On Wed, 2 Sep 2020 15:00:27 -0400
Michael Orlitzky  wrote:

> On 2020-09-02 14:08, Andreas Sturmlechner wrote:
> > On Wednesday, 2 September 2020 19:42:33 CEST Michael Orlitzky wrote:
> >> New USE flags generally change dependencies (as is the case here),
> >> so a new revision ensures that people are forced to install the
> >> ebuild that supports python-3.8. Otherwise, you will eventually
> >> find a lot of people stuck unable to upgrade because they have an
> >> ebuild installed that only supports <=python-3.7, and were never
> >> prompted to install the copy that supports python-3.8.
> > 
> > Python target changes must be done with -U, also documented by the 
> > accompanying repository news item, not really a problem.
> > 
> 
> If you want to write the GLEP that obsoletes the PMS, I might even
> support it at this point. But until then, requiring --changed-use to
> have a functional system is not allowed. Any PMS-compliant package
> manager must be able to use ::gentoo, including one that does not
> implement portage-only heuristics.
> 

?

if some upgrade wants a package with unmatched deps (e.g. not installed
at all or py38 usedep not satisfied), $PM will surely try to satisfy
it by installing an ebuild. I don't think PMS specifies this, nor should
it.



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-02 Thread Michael Orlitzky
On 2020-09-02 14:08, Andreas Sturmlechner wrote:
> On Wednesday, 2 September 2020 19:42:33 CEST Michael Orlitzky wrote:
>> New USE flags generally change dependencies (as is the case here), so a
>> new revision ensures that people are forced to install the ebuild that
>> supports python-3.8. Otherwise, you will eventually find a lot of people
>> stuck unable to upgrade because they have an ebuild installed that only
>> supports <=python-3.7, and were never prompted to install the copy that
>> supports python-3.8.
> 
> Python target changes must be done with -U, also documented by the 
> accompanying repository news item, not really a problem.
> 

If you want to write the GLEP that obsoletes the PMS, I might even
support it at this point. But until then, requiring --changed-use to
have a functional system is not allowed. Any PMS-compliant package
manager must be able to use ::gentoo, including one that does not
implement portage-only heuristics.



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-02 Thread Andreas Sturmlechner
On Wednesday, 2 September 2020 19:42:33 CEST Michael Orlitzky wrote:
> New USE flags generally change dependencies (as is the case here), so a
> new revision ensures that people are forced to install the ebuild that
> supports python-3.8. Otherwise, you will eventually find a lot of people
> stuck unable to upgrade because they have an ebuild installed that only
> supports <=python-3.7, and were never prompted to install the copy that
> supports python-3.8.

Python target changes must be done with -U, also documented by the 
accompanying repository news item, not really a problem.

signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-02 Thread Michael Orlitzky
On 2020-09-02 13:23, Sam James wrote:
> 
> Please request stabilisation of your Python 3.8+ changes at the 30 days 
> point, or earlier if it’s a trivial revbump
> (as new Python targets are equivalent to new USE flags, there is no real need 
> for a revbump unless doing other tidying
> whilst there).
> 

New USE flags generally change dependencies (as is the case here), so a
new revision ensures that people are forced to install the ebuild that
supports python-3.8. Otherwise, you will eventually find a lot of people
stuck unable to upgrade because they have an ebuild installed that only
supports <=python-3.7, and were never prompted to install the copy that
supports python-3.8.



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-02 Thread Sam James

> On 1 Sep 2020, at 12:02, Michał Górny  wrote:
> 
> Hello,
> 
> [snip]

> Python 3.8 is planned to become the default on 2020-12-01.
> 

Note that this means we need to keep in mind stabilisation of Python 3.8+ 
supporting-packages going forward.

Please request stabilisation of your Python 3.8+ changes at the 30 days point, 
or earlier if it’s a trivial revbump
(as new Python targets are equivalent to new USE flags, there is no real need 
for a revbump unless doing other tidying
whilst there).

Stabling Python 3.8 packages also makes things a bit easier for people who do 
testing of their packages on a stable system -
mostly thinking of proxy-maintainers or casual user contributions here.

I’m sure you’ve all already seen my annoying bugs to keep track of needed 
stabilisations; it will however be worth
it to ensure a smooth transition when the default changes.

The danger of insufficient stabled changes is users having to understand 
possibly complex Portage conflicts and add
large numbers of package.use exceptions on a temporary basis which is 
unnecessary confusion.

Again a reminder to add Python 3.9 whenever you can too.

> Thank you all for your hard work!
> --
> Best regards,
> Michał Górny
> 

Thanks,
Sam



signature.asc
Description: Message signed with OpenPGP


Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-02 Thread Michał Górny
On Tue, 2020-09-01 at 08:06 -0400, Rich Freeman wrote:
> On Tue, Sep 1, 2020 at 7:02 AM Michał Górny  wrote:
> > QA reports provide a list [2] and a graph [3] of packages needing
> > porting.
> 
> These lists would be far more useful if they actually listed the
> maintainer(s) of each package.  Then devs could just grep to discover
> if any of their packages need fixing.
> 
> Otherwise I fear that you're just going to run into the same issue as
> last time - most devs will just wait until you take the time to do
> this and file bugs.
> 

...and done.  Now you can grep by your name.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-01 Thread Alexey Sokolov
вт, 1 сент. 2020 г. в 13:06, Rich Freeman :
>
> On Tue, Sep 1, 2020 at 7:02 AM Michał Górny  wrote:
> >
> > QA reports provide a list [2] and a graph [3] of packages needing
> > porting.
>
> These lists would be far more useful if they actually listed the
> maintainer(s) of each package.  Then devs could just grep to discover
> if any of their packages need fixing.
>
> Otherwise I fear that you're just going to run into the same issue as
> last time - most devs will just wait until you take the time to do
> this and file bugs.
>

I would also like a warning shown in p.g.o if the package is in one of
these qa lists



Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-01 Thread Michał Górny
On Tue, 2020-09-01 at 08:06 -0400, Rich Freeman wrote:
> On Tue, Sep 1, 2020 at 7:02 AM Michał Górny  wrote:
> > QA reports provide a list [2] and a graph [3] of packages needing
> > porting.
> 
> These lists would be far more useful if they actually listed the
> maintainer(s) of each package.  Then devs could just grep to discover
> if any of their packages need fixing.
> 
> Otherwise I fear that you're just going to run into the same issue as
> last time - most devs will just wait until you take the time to do
> this and file bugs.

Hmm, I suppose this won't be hard to add.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Please port your packages to Python 3.8

2020-09-01 Thread Rich Freeman
On Tue, Sep 1, 2020 at 7:02 AM Michał Górny  wrote:
>
> QA reports provide a list [2] and a graph [3] of packages needing
> porting.

These lists would be far more useful if they actually listed the
maintainer(s) of each package.  Then devs could just grep to discover
if any of their packages need fixing.

Otherwise I fear that you're just going to run into the same issue as
last time - most devs will just wait until you take the time to do
this and file bugs.

-- 
Rich