Page MenuHomeFreeBSD

Mark ports recursively depending on Python 2.7 for expiration on June 23.
ClosedPublic

Authored by rene on Feb 14 2021, 5:11 PM.

Details

Summary

Mark ports recursively depending on Python 2.7 for expiration on June 23.

For ports optionally dependending on Python 2.7, just mark those options
as expired.

Test Plan

Based on P475, which passes `make index'.

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
rene requested review of this revision.Feb 14 2021, 5:12 PM

Note that this review excludes ports that depend on Python 2.7 and have already expired (on 2020-12-31) according to https://www.freshports.org/ports-expired.php

I have no objection regarding gxmms2 (the only port I maintain in this review, if I'm correct)

This revision is now accepted and ready to land.Feb 14 2021, 6:01 PM

math/py-pynleq2's dependency on flang is removed, please remove it from this list.

Exclude math/py-pynleq2 which is now py27-free

This revision now requires review to proceed.Feb 14 2021, 7:50 PM
In D28665#641552, @yuri wrote:

math/py-pynleq2's dependency on flang is removed, please remove it from this list.

Ah, that commit is newer than what I based this diff on. Will do :)

Some ports here depend on lang/ldc which needs llvm70 (requiring python 2.7). However, there are newer versions (v1.24.0) of lang/ldc available. This newer version supports LLVM 6.0 - 11.0. @acm: are you planning on updating lang/ldc?

Some ports here depend on lang/ldc which needs llvm70 (requiring python 2.7). However, there are newer versions (v1.24.0) of lang/ldc available. This newer version supports LLVM 6.0 - 11.0. @acm: are you planning on updating lang/ldc?

That would save quite some ports indeed. There is also https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=249620 to modernize devel/libclc which would save lang/clover.

mandree added a subscriber: mandree.

We need to install a maintained platform to execute Python 2.7 code on, for instance, Tauthon - this is for mail/mailman (mailman 2.1) which is maintained but in feature freeze. mailman3 is a rewrite-from scratch that works differently and has no migration path.

This revision now requires changes to proceed.Feb 14 2021, 10:00 PM

When the dependency will be removed?
I maintain www/yarn-node* and the slave ports yarn-node1[02] depends on the related version of node, but I don't see them deprecated. Is there another patch I'm missing?

When the dependency will be removed?
I maintain www/yarn-node* and the slave ports yarn-node1[02] depends on the related version of node, but I don't see them deprecated. Is there another patch I'm missing?

www/node10 and www/node12 already expired, see https://www.freshports.org/ports-expired.php?sort=expiration_date

www/npm-node10/Makefile
6–8 ↗(On Diff #83885)

It is not needed since the corresponding knobs are already added to www/npm.

www/npm-node12/Makefile
6–8 ↗(On Diff #83885)

It is not needed since the corresponding knobs are already added to www/npm.

www/npm/Makefile
55 ↗(On Diff #83885)

Please remove the extra blank line.

When the dependency will be removed?
I maintain www/yarn-node* and the slave ports yarn-node1[02] depends on the related version of node, but I don't see them deprecated. Is there another patch I'm missing?

They are deprecated through USES=python.

Mk/Uses/python.mk:

477 .if ${PYTHON_MAJOR_VER} == 2
478 DEPRECATED?=    Uses Python 2.7 which is EOLed upstream
479 EXPIRATION_DATE?=       2020-12-31
480 .endif
  • Mark ports recursively depending on Python 2.7 for expiration on June 23.
  • Fix issues addressed by sunpoet in D28665
rene marked an inline comment as done.Feb 16 2021, 7:32 PM

Some ports here depend on lang/ldc which needs llvm70 (requiring python 2.7). However, there are newer versions (v1.24.0) of lang/ldc available. This newer version supports LLVM 6.0 - 11.0. @acm: are you planning on updating lang/ldc?

That would save quite some ports indeed. There is also https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=249620 to modernize devel/libclc which would save lang/clover.

I just updated audio/faust in r565456. You can remove it and depending ports from the list.

In D28665#642836, @yuri wrote:

I just updated audio/faust in r565456. You can remove it and depending ports from the list.

Yes, on it. Note that this diff is made from a local branch from the git export at https://cgit-beta.freebsd.org/ports/ so it is always a bit behind Subversion.

  • Mark ports recursively depending on Python 2.7 for expiration on June 23.
  • Fix issues addressed by sunpoet in D28665
  • Mark more ports using (py-)qt5-webengine as deprecated, list from https://invent.kde.org/-/snippets/1520
  • Restore some default options using py27, otherwise we'd cheat on the end user.
  • Update deprecations for audio/faust

Rene,

I've updated audio/faustlive and audio/csound - they can be now removed from the list.

pizzamig added inline comments.
www/yarn-node10/Makefile
6–7 ↗(On Diff #84045)

Referring to sunpoet@ comment on npm-*, it is not needed since the corresponding knobs are already added to www/yarn.

www/yarn-node12/Makefile
6–7 ↗(On Diff #84045)

Referring to sunpoet@ comment on npm-*, it is not needed since the corresponding knobs are already added to www/yarn.

www/yarn/Makefile
70 ↗(On Diff #84045)

There is on extra line to be removed

This revision now requires changes to proceed.Feb 18 2021, 9:08 AM

P475 updated against r566185 and fixed the mistake there of removing definitions in Mk/ too early. INDEX builds again, now indeed taking a lot of webengine consumers with it.

Python 2.7 (and Tauthon) removal preview, tentatively for June 23. Lots of KDE gone...

  • Mark ports recursively depending on Python 2.7 for expiration on June 23.
  • Fix issues addressed by sunpoet in D28665
  • Mark more ports using (py-)qt5-webengine as deprecated, list from https://invent.kde.org/-/snippets/1520
  • Restore some default options using py27, otherwise we'd cheat on the end user.
  • update results, all new ports are deprecated because of www/qt5-webegine one way or another
  • Sync some options with my no-py27 branch
In D28665#645338, @rene wrote:

Python 2.7 (and Tauthon) removal preview, tentatively for June 23. Lots of KDE gone...

Please clarify "and Tauthon". We need this, or something else, for mail/mailman (v2.1) as discussed previously ad nauseam.

rene marked 3 inline comments as done.Feb 22 2021, 6:56 PM
  • Mark ports recursively depending on Python 2.7 for expiration on June 23.
  • Fix issues addressed by sunpoet in D28665
  • Mark more ports using (py-)qt5-webengine as deprecated, list from https://invent.kde.org/-/snippets/1520
  • Restore some default options using py27, otherwise we'd cheat on the end user.
  • update results, all new ports are deprecated because of www/qt5-webegine one way or another
  • Sync some options with my no-py27 branch
madpilot requested changes to this revision.Mar 9 2021, 9:05 PM

I have a problem with the deprecation of calibre. It has an hard dependency on webengine. I don't know how to save it at present.

I see we would need a major upgrade to get python 3 support.

While I agree on removing python 2, is it reasonable to remove so many working ports due to a single build time dependency? WOuld it be reasonable to somehow keep python 2 only for build deps?

This revision now requires changes to proceed.Mar 9 2021, 9:05 PM

@madpilot @rene Someone loop python@ in and get them to properly hook up tauthon 2.8 into the framework (I am not knowledgeable so I require support, else I would have done it weeks ago) so we can see which of the ports will work on tauthon, for instance, mailman is also a candidate -- and which handful of requisites may need a Tauthon flavor. This would offer a perspective for those ports where we won't get (compatible) Python 3.x based versions from the upstream, or where upstream made a mess of the Python 3.x enabled versions.

@mandree Thanks for the suggestion.

I did not know about thauton. Despite maintaining and also having contributed a little to calibre I'm no python fan or expert. I'll have to look that up.

I have a few things down my pipe, but I could try to take a look.

I have a problem with the deprecation of calibre. It has an hard dependency on webengine. I don't know how to save it at present.

I see we would need a major upgrade to get python 3 support.

While I agree on removing python 2, is it reasonable to remove so many working ports due to a single build time dependency? WOuld it be reasonable to somehow keep python 2 only for build deps?

There is an idea to keep python2 for chromium-like ports as a build dependency. There is also work underway to remove the python dependency from llvm7, saving all DLC-based ports and a few others.

I have just completed a poudriere build of llvm70 without Python-2.7.

The only component that relied on Python-2.7 was LLDB, and I do not think that this is a hard requirement for this port.
By setting the LLDB option to OFF by default (or removing it altogether) a LLVM-7.0.1 package can be built and used to build all those ports (including ldc) that depend on that LLVM version at least for a bootstrap compile.

Therefore I suggest to disable LLDB in devel/llvm70 and to remove all version selectors from the python dependencies in the port's Makefile, instead of deleting this port.
And remove DEPRECATED from all ports that no longer indirectly depend on Python-2.7, after test-building them in poudriere.
At least the following other ports are marked as deprecated because of llvm70: flang flang-clang ldc ponyc libpgmath silq ...

In D28665#656940, @se wrote:

I have just completed a poudriere build of llvm70 without Python-2.7.

The only component that relied on Python-2.7 was LLDB, and I do not think that this is a hard requirement for this port.
By setting the LLDB option to OFF by default (or removing it altogether) a LLVM-7.0.1 package can be built and used to build all those ports (including ldc) that depend on that LLVM version at least for a bootstrap compile.

I don't think there are any consumers of this LLDB, so we can just remove the option?

Therefore I suggest to disable LLDB in devel/llvm70 and to remove all version selectors from the python dependencies in the port's Makefile, instead of deleting this port.

Yes :)

And remove DEPRECATED from all ports that no longer indirectly depend on Python-2.7, after test-building them in poudriere.
At least the following other ports are marked as deprecated because of llvm70: flang flang-clang ldc ponyc libpgmath silq ...

And all LDC consumers, I'll update the patch.

I don't think there are any consumers of this LLDB, so we can just remove the option?

Yes just remove it. LLDB has had periods of more- and less-active FreeBSD development over the years, but only the versions in contemporary FreeBSD are of much interest - perhaps LLDB 10 and later.

I have created D29342 for the patch that removes LLDB from devel/llvm70 and thus the dependency of that port on Python-2.7.
If that patch gets committed, llvm70 and the ports only deprecated due to their dependency on that particular LLVM version can be retained.

The following ports are currently marked as deprecated due to their dependency on llvm70:
devel/flang
devel/flang-clang
lang/ldc
lang/ponyc
lang/silq
math/libpgmath

I have not checked whether they indirectly depend on any other port (besides llvm70) that is deprecated.

After commit 568810 the following ports do no longer (directly or indirectly) depend on Python-2.7:

devel/flang
devel/flang-clang
devel/llvm70
lang/ldc
lang/ponyc
lang/silq
math/libpgmath

These ports have been successfully built in poudriere and verified to no longer depend on Python-2.7.

  • Mark ports recursively depending on Python 2.7 for expiration on June 23.
  • Fix issues addressed by sunpoet in D28665
  • Mark more ports using (py-)qt5-webengine as deprecated, list from https://invent.kde.org/-/snippets/1520
  • Restore some default options using py27, otherwise we'd cheat on the end user.
  • update results, all new ports are deprecated because of www/qt5-webegine one way or another
  • Sync some options with my no-py27 branch
  • Undeprecate ports (indirectly) depending on devel/llvm70
ehaupt requested changes to this revision.Mar 20 2021, 3:02 PM

After r568810 audio/cheesecutter no longer depends on lang/python27.

This revision now requires changes to proceed.Mar 20 2021, 3:02 PM

I'm spending a good chunk of the weekend on trying to get webengine up to speed. I'm still at the "maybe we can get this to build with Python3" stage of hopefulness, not yet at the "let's take the C++ code that is generated by their stupid build system and tar that up as an extra dist-file".

Why isn't chromium on this list? It depends on Python2.7 the same way webengine does.

After r568810 audio/cheesecutter no longer depends on lang/python27.

It is already un-deprecated in the last update of today.

I'm spending a good chunk of the weekend on trying to get webengine up to speed. I'm still at the "maybe we can get this to build with Python3" stage of hopefulness, not yet at the "let's take the C++ code that is generated by their stupid build system and tar that up as an extra dist-file".

Why isn't chromium on this list? It depends on Python2.7 the same way webengine does.

This review only adds ports that were not already expired, chromium is on the Expired Ports list at Freshports: https://www.freshports.org/ports-expired.php?sort=expiration_date
So those should be removed together with the ones in this revision (possibly in different groups, i.e. xmms2 + reverse deps in one commit, godot2 + reverse deps in another commit, etc depending on the state of the world)

It is already un-deprecated in the last update of today.

Bad browser cache.

This revision now requires review to proceed.Mar 20 2021, 4:31 PM

I have updated the devel/rbtools port to version 2.0 in commit 568885, but have not been able to test whether devel/hgreviewboard can now be used without dependency on Python-2.7,

But I do assume that devel/hgreviewboard can now be taken off this list.

If it does not correctly work with this rbtools version, hgreviewboard will have to be upgraded (the latest stable version is 3.0.20, available from https://downloads.reviewboard.org/releases/ReviewBoard/3.0/).
But that is then a separate issue from the Python-2.7 dependency covered in this revision.

  • Undeprecate devel/hgreviewboard, devel/rbtools is py3 now
This revision was not accepted when it landed; it landed in state Needs Review.Mar 24 2021, 1:35 PM
This revision was automatically updated to reflect the committed changes.