Add python3.14 package (side-by-side with python3)#16856
Open
ihvo wants to merge 5 commits intomicrosoft:3.0-devfrom
Open
Add python3.14 package (side-by-side with python3)#16856ihvo wants to merge 5 commits intomicrosoft:3.0-devfrom
ihvo wants to merge 5 commits intomicrosoft:3.0-devfrom
Conversation
Ship Python 3.14.4 as a new SxS package under SPECS/python3.14/. The default python3 (3.12) package is not modified; python3.14 installs strictly under versioned paths (/usr/bin/python3.14, /usr/lib/python3.14/, libpython3.14.so.1.0) and removes unversioned symlinks/pkgconfig/man pages in %install so it cannot collide with python3. Follows the SPECS/nodejs24 precedent for side-by-side major-version packages. CVE patches triaged against the python3 (3.12) set: cgi3.patch dropped (cgi removed in 3.13, PEP 594); all CVE-2025-* patches dropped (fixed upstream in 3.14.4, GA 2026-04-07); CVE-2026-0672, CVE-2026-0865, CVE-2026-1299 and CVE-2026-4519 carried since their fixes post-date 3.14.4. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7e78f17 to
c8675c3
Compare
Switch the %changelog %changelog boilerplate from "Original version for Azure Linux" (which spec_source_attributions classifies as the "Microsoft" origin) to "Initial Azure Linux import from the source project (license: same as \"License\" tag)." so it matches the "Source project" regex and aligns with the licenses.json / LICENSES-MAP.md entry added for python3.14. Reported by the "Spec License Map Check" CI job on PR microsoft#16856. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author
|
Updated — a few follow-up commits cleaned the PR up:
Blocking source-server upload request — only one file left: |
Verified against python/cpython that every CVE patch on the 3.12 fork has a 3.14-branch backport PR that merged before 3.14.4's release on 2026-04-07: CVE-2026-0672 → PR python/cpython#144089 (merged 2026-01-23) CVE-2026-0865 → PRs python/cpython#143972 + #144761 (merged 2026-01-17 / 02-21) CVE-2026-1299 → PR python/cpython#144182 (merged 2026-01-25) CVE-2026-4519 → PRs python/cpython#146214 + #148042 (merged 2026-03-23 / 04-03) The CVE-2025-* patches are even older and were already in 3.14.0 (GA 2025-10). Carrying patches we don't need adds hunk-maintenance cost, rebase risk, and auditor confusion with no upside. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The pathfix.py Source1 is committed directly under SPECS/python3/ — the srpmpacker resolves sources from the local spec dir before reaching to azurelinuxsrcstorage. Missing the local copy was the reason the "Source Signature Check (SPECS)" CI was 404'ing on pathfix.py; the file is byte-identical to SPECS/python3/pathfix.py, so the existing signatures.json sha is already correct. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nothing in Azure Linux's build pipeline invokes a versioned pathfixN.N.py —
the file is a vestige from the era when CPython shipped pathfix.py in its
own source tarball. Carrying it for 3.14 adds a build-time source fetch and
a devel-subpackage file with no downstream consumer.
Removes Source1, the %install cp from %{SOURCE1}, the %files devel entry,
the local pathfix.py payload and its signatures.json hash.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge Checklist
python3.14is a new user-facing package, not a toolchain componentPython-3.14.4.tar.xz(see Follow-ups)Releasetag incremented — N/A%checksection present (python3.14 -m test --exclude test_socket)Python-3.14.4.tar.xzneeds to be uploaded to the source server by an Azure Linux maintainer./cgmanifest.jsonin alphabetical positionpython3.14added toSource projectgroup in bothlicenses.jsonandLICENSES-MAP.md*.signatures.jsonfiles — SHA-256 forPython-3.14.4.tar.xzverified against python.org release pagesudo make go-tidy-allandsudo make go-test-coveragepass — no Go changesSummary
Ship Python 3.14.4 as a new side-by-side package under
SPECS/python3.14/, following theSPECS/nodejs24/precedent for parallel major-version packages. The defaultpython3(3.12) package is not modified; it continues to receive upstream-backed security patches until Python 3.12 EOL (2028-10). Consumers opt in to 3.14 explicitly viaRequires: python3.14or/usr/bin/python3.14.Change Log
New
SPECS/python3.14/python3.14.spec— Version 3.14.4, Release 1.Strictly versioned filesystem layout.
%installremoves the unversioned/usr/bin/python3,python3-config,pydoc3,idle3,libpython3.so,python3.pc,python3-embed.pcandman1/python3.1*so the package has zero file-level collision withpython3(3.12) — noConflicts:line needed (unlikenodejs24, which has to conflict withnodejson/usr/bin/node).Only versioned
Provides:(python(abi) = 3.14,python314,python3.14-docs). NoProvides: python,python-sqlite,/bin/python,/bin/python3— those remain owned by the defaultpython3package.Drops the lib2to3-based
toolssubpackage (lib2to3//usr/bin/2to3removed in Python 3.13, PEP 594).No CVE patches carried. Every patch on the current
SPECS/python3/(3.12) fork has a 3.14-branch backport that merged inpython/cpythonbefore 3.14.4's release on 2026-04-07:All
CVE-2025-*patches on the 3.12 fork are older still and were already in 3.14.0 (GA 2025-10).cgi3.patchis dropped because thecgimodule was removed in 3.13 (PEP 594).cgmanifest.json: addspython3.14 / 3.14.4entry (alphabetically sorted;python3-*sorts beforepython3.14in ASCII).LICENSES-AND-NOTICES/SPECS/data/licenses.jsonandLICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md: addspython3.14under theSource projectgroup (License: PSF, same as upstream CPython;%changelogboilerplate uses the "Initial Azure Linux import from the source project" phrasing that thespec_source_attributionsclassifier expects).Does this affect the toolchain?
NO. Toolchain still ships
python3-3.12.9-10— unchanged.python3.14is a new user-facing package.Associated issues
None. Per CONTRIBUTING.md, a GitHub issue is only required when graduating a package from
SPECS-EXTENDEDtoSPECS; this is a brand-new addition directly toSPECS/, following thenodejs24precedent.Links to CVEs
N/A for this PR — no CVE patches carried. See Change Log for the upstream verification table.
Follow-ups
Python-3.14.4.tar.xz(sha256d923c51303e38e249136fc1bdf3568d56ecb03214efdef48516176d3d7faaef8) and the existingpathfix.py(sha2567a2ff222346d3c95b08814e3372975823e099c17dddaa73a459a3d840e6e9c1b, identical to theSPECS/python3/one) need to be inazurelinuxsrcstorage. Requesting an Azure Linux maintainer's help per CONTRIBUTING.md..pipelines/containerSourceData/python3.14/for themcr.microsoft.com/azurelinux/base/python:3.14golden container. Tag-policy decision for that PR: the floating:3tag stays frozen at 3.12 until Python 3.12 EOL (2028-10). Opens once PR#1 merges andpython3.14RPMs are available inpackages.microsoft.com/azurelinux/3.0/prod/base/.Test Methodology
Local build not yet run (awaiting source-server upload of
Python-3.14.4.tar.xz). Will update with pipeline build ID / local artifact path once CI kicks in or the source is available.toolkit/scripts/license_map.pyverified to pass locally after the license-attribution changelog fix.Directory-naming note: went with
python3.14(dot-separated, mirrors/usr/bin/python3.14and Fedora/RHEL SxS convention) rather thanpython314(nodejs24 style). Happy to rename if the team prefers — mechanical find-replace.