Repository navigation
Feature/fedora44 python314 upgrade - #106
Conversation
|
Closing for now, seems to be breaking changes with how concurrency is handled in Python 3.14 https://docs.python.org/3/whatsnew/3.14.html#concurrent-futures |
|
@bhoy-troy if the rest of these changes are safe even on f42/py3.13, perhaps we could handle those first without the f44/py3.14 change? |
8e865ca to
e737de1
Compare
|
@yselkowitz , I have set content-resolver to use |
Please make a new ticket for that against this repo. |
yselkowitz
left a comment
There was a problem hiding this comment.
The changes look good, and I successfully tested this on my flatpak CR repo. If you could please just fix the commit message of the string formatting (currently commit d7d005c) so that the first line (commit title) is of standard length, and squash the typo fix (currently commit fbc60b2) into that. There should be no net change to the code, just cleaner commits.
Fedora 44 has Python 3.14 as default
Python 3.14+ uses 'forkserver' as default multiprocessing start method, which requires pickling. DNF objects contain unpicklable SWIG C objects. Set to 'fork' method before any other imports to avoid pickling issues. https://docs.python.org/3/whatsnew/3.14.html#concurrent-futures
Node.js 20 actions are deprecated, and will be removed in Sept 2026. To use Node.js 24 now, we set the env var FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true. https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners
e737de1 to
020d36f
Compare
Upgrade to Fedora 44 and Python 3.14 with Code Modernization
Summary
Ugrades Content Resolver to Fedora 44 and Python 3.14, while modernizing the codebase with f-string formatting and improved Docker build efficiency. Addresses the issues identified in #105.
Changes
1. Infrastructure Upgrades
Container Images:
fedora:42→fedora:44fedora:41→fedora:44─Docker Improvements:
.dockerignoreto reduce build context (excludes cache, output, IDE files)2. Python Code Modernization
Python 3.14 changed the default multiprocessing start method from
forktoforkserverfor improved safety. However,forkserverrequires all objects to be picklable. DNF repository objects contain SWIG-wrapped C objects (SwigPyObject) that cannot be pickled,causing this error:
Solution:
Added explicit multiprocessing.set_start_method('fork'). This forces Python 3.14 to use the traditional fork method (same as Python ≤3.13), avoiding the need to pickle DNF objects, will need to be fixed for future versions.
fork(instead of defaultforkserver)3. GitHub Actions Node.js 24 Support
Problem:
GitHub Actions announced deprecation of Node.js 20:
Solution:
Set FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable to opt into Node.js 24 early. This:
Reference: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/