Bug 1750224

Summary: cjdns depends on Python 2
Product: [Fedora] Fedora Reporter: Lumír Balhar <lbalhar>
Component: cjdnsAssignee: Stuart D Gathman <stuart>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: stuart
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: cjdns-20.4-1.fc31 cjdns-20.4-1.fc29 cjdns-20.4-1.fc30 cjdns-20.4-2.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-11-05 04:41:20 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1698500    

Description Lumír Balhar 2019-09-09 05:53:08 UTC
Python 2.7 will reach end-of-life in January 2020, over 9 years after it was released. This falls within the Fedora 31 lifetime.
Packages that depend on Python 2 are being switched to Python 3 or removed from Fedora: https://fedoraproject.org/wiki/Changes/F31_Mass_Python_2_Package_Removal#Information_on_Remaining_Packages
Python 2 will be retired in Fedora 32: https://fedoraproject.org/wiki/Changes/RetirePython2

To help planning, we'd like to know the plans for cjdns's future. Specifically:


- What is the reason for the Python2 dependency? (Is it software written in Python, or does it just provide Python bindings, or use Python in the build system or test runner?) 

- What are the upstream/community plans/timelines regarding Python 3?

- What is the guidance for porting to Python 3? (Assuming that there is someone who generally knows how to port to Python 3, but doesn't know anything about the particular package, what are the next steps to take?)


This bug is filed semi-automatically, and might not have all the context specific to cjdns.
If you need anything from us, or something is unclear, please mention it here.

Thank you.

Comment 1 Stuart D Gathman 2019-09-09 14:48:35 UTC
Cjdns uses python during build.  It also offers a python binding for the cjdroute API.  Both uses should be able to be patched to work with python3.

Comment 2 Stuart D Gathman 2019-09-09 14:49:35 UTC
The python API binding is optional, and can be dropped if there is any porting problem.  So I will start with porting the python build tool.

Comment 3 Stuart D Gathman 2019-09-10 23:01:04 UTC
Python is used for build only to build libuv.  I already have a SPEC option to use system libuv.  Cjdns compiles with, and mostly works with the system libuv - but fails at shutdown due to some resources not being released.  Maybe there is a libuv flag for  "hey, we're shutting down now.  Can you be lax about resource allocation?"  Building with system libuv would eliminate a bundled library and one of the python2 uses in one go.

Comment 4 Lumír Balhar 2019-09-18 12:10:45 UTC
Could you please cooperate this with maintainers of libuv?

Comment 5 Stuart D Gathman 2019-09-18 14:31:16 UTC
Cjdns upstream is updating the bundled libuv to 1.30.1.  That should get the shutdown ironed out - hopefully in time for f32.

Comment 6 Fedora Update System 2019-09-19 19:21:21 UTC
FEDORA-2019-fd95bc2c51 has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2019-fd95bc2c51

Comment 7 Fedora Update System 2019-09-19 19:21:26 UTC
FEDORA-2019-c7cc482828 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2019-c7cc482828

Comment 8 Fedora Update System 2019-09-20 01:57:11 UTC
cjdns-20.4-1.fc30 has been pushed to the Fedora 30 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-271a4018a9

Comment 9 Fedora Update System 2019-09-20 02:57:11 UTC
cjdns-20.4-1.fc31 has been pushed to the Fedora 31 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-fd95bc2c51

Comment 10 Fedora Update System 2019-09-20 03:02:14 UTC
cjdns-20.4-1.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-c7cc482828

Comment 11 Fedora Update System 2019-09-28 00:02:36 UTC
cjdns-20.4-1.fc31 has been pushed to the Fedora 31 stable repository. If problems still persist, please make note of it in this bug report.

Comment 12 Fedora Update System 2019-09-28 01:56:36 UTC
cjdns-20.4-1.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.

Comment 13 Fedora Update System 2019-09-28 03:39:17 UTC
cjdns-20.4-1.fc30 has been pushed to the Fedora 30 stable repository. If problems still persist, please make note of it in this bug report.

Comment 14 Lumír Balhar 2019-09-30 06:04:17 UTC
The main goal of this bug was to remove the dependency on Python 2. In comment#3 you said that Python 2 is here only for building libuv but it seems that cjdns package also provides python2-cjdns subpackage with some tools written in Python 2 and cjdns-graph also depends on Python 2 and on python2-cjdns.

I've tried to find some information from upstrem whether they will support Python 3 but I've found nothing. Do you know about planned support for Python 3?

Comment 15 Stuart D Gathman 2019-09-30 14:02:33 UTC
I am planning to port the relatively small aux libraries to python3.  If I fail to do so in time, they can be removed.  I think changing python2-cjdns to python3-cjdns should be fairly simple.  cjdns-graph has a lot of python dependencies that may or may not have been ported to py3 - but it is also the least important subpackage for Fedora (it produces reports and visualizations of the mesh connections for debugging and admiration).

Comment 16 Stuart D Gathman 2019-10-01 03:17:41 UTC
Is it acceptable to release a build for beta and rawhide after removing all python2 - even if not everything works yet with python3?

Comment 17 Lumír Balhar 2019-10-01 05:19:05 UTC
It is acceptable but I'd keep it in rawhide only. You can remove Python 2 scripts from this package in rawhide now and put them back when they will be compatible with Python 3. In this way, we can identify any issues sooner than later which might make us aware of the importance of those scripts even nothing directly depends on those subpackages.

Comment 18 Stuart D Gathman 2019-10-08 00:11:56 UTC
Rawhide has been switched to python3 scripts and python API for cjdns-20.2-2.f32.  It *should* also support a python2 version of the API, with python3 scripts.  That doesn't seem compatible for anyone Requiring python2-cjdns to get the scripts.  It doesn't seem worth it to do the "alternatives thing".   Any suggestions on both version coexisting better in f31 are welcome.

Comment 19 Lumír Balhar 2019-10-11 07:42:17 UTC
I am not sure I understand your question. In rawhide, there should be only Python 3 library and scripts. It is possible to have both Python 2 and Python 3 versions in Fedora 31 in separated subpackages and it's up to you whether you want to do it or not. You can also take the upgrade from F31 to F32 as an upgrade from Python 2 to Python 3 and provide the packages in this way.

I think that this bug can be closed.

Comment 20 Fedora Update System 2019-10-19 21:36:55 UTC
FEDORA-EPEL-2019-99ed3f99fc has been submitted as an update to Fedora EPEL 8. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-99ed3f99fc

Comment 21 Fedora Update System 2019-10-21 00:50:31 UTC
cjdns-20.4-2.el8 has been pushed to the Fedora EPEL 8 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-99ed3f99fc

Comment 22 Fedora Update System 2019-11-05 04:41:20 UTC
cjdns-20.4-2.el8 has been pushed to the Fedora EPEL 8 stable repository. If problems still persist, please make note of it in this bug report.