fix: use fork context for chroot in python 3.14
Metadata
Current evaluation
Merged PR canonical/craft-parts#1672 (commit 12da4851): chroot() now explicitly uses the multiprocessing 'fork' start context, restoring parent chroot state on Python 3.14. Closes #1642.
Resolution: closed resolved
Reason: The PR was merged into main as commit 12da4851, approved by 2 reviewers with all CI jobs green, and explicitly declares "Fixes #1642". Issue #1642 ('Craft Parts does not support Python 3.14') is recorded as closed by this change.
Evaluated by: mr-cal-bot
No scores available.
Issue body
Python 3.14 changed the Linux default from `fork` to `forkserver`,
so the child process no longer inherits the parent’s state such as
monkeypatched chdir or chroot. Explicitly request the `fork` start
method inside `chroot()` to keep the same behavior across all
supported Python versions.
Fixes #1642
- [x] Have you followed the guidelines for contributing?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [ ] Have you successfully run `make lint && make test`?
- [ ] Have you added an entry to the changelog (`docs/reference/changelog.rst`)?
---
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged PR canonical/craft-parts#1672 (commit 12da4851): chroot() now explicitly uses the multiprocessing 'fork' start context, restoring parent chroot state on Python 3.14. Closes #1642. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged in canonical/craft-parts#1672 (commit 12da4851), preserving parent chroot state on Python 3.14 by explicitly using the fork start method; fixes #1642. | |
| qwen/qwen3.6-35b-a3b | — | — | Merged fix for Python 3.14 compatibility by explicitly using the fork start method in chroot(). This preserves parent state inheritance lost due to Python's new forkserver default. Resolves #1642 after passing all CI checks and receiving two approvals. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
5
Complexity:
15
Confidence:
95
|
needs review | Explicitly requests fork start method in chroot() to maintain compatibility with Python 3.14's new forkserver default. Approved by two reviewers, CI passing, pending two slow tests, 2 unresolved comments. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
0
Complexity:
10
Confidence:
95
|
needs review | Addresses Python 3.14 forkserver default breaking chroot state inheritance by explicitly requesting fork context. Currently approved by one reviewer with passing CI checks and several pending jobs. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
5
Complexity:
15
Confidence:
90
|
needs review | Fixes Python 3.14 forkserver default breaking chroot by explicitly using fork context. Currently awaiting maintainer review with CI tests pending. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
5
Complexity:
20
Confidence:
90
|
needs review | Addresses Python 3.14 multiprocessing default change by explicitly using fork context in chroot() to preserve state. Currently awaiting maintainer review and CI completion. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
5
Complexity:
15
Confidence:
90
|
needs review | Updates chroot() to explicitly use the fork start method, addressing Python 3.14's default shift to forkserver which broke state inheritance. Currently pending maintainer review and CI completion. |
Update history
| Date | Change |
|---|---|
| updated | |
| updated | |
| updated | |
| updated | |
| updated | |
| created |
Related work
-
Duplicate Of:
craft-parts#1642
(confidence 90%)
#1642 is the tracking issue that #1672 closes; its 3.14 chroot failures were resolved by the fork-context change.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1642 Craft Parts does not support Python 3.14 | craft-parts | closed | Python 3.14 chroot failures were fixed by explicitly using the multiprocessing fork context in #1672 (commit 12da4851). |