Skip to content

build: bootstrap pip>=26.0 with ISO datetime cutoff to fix Python 3.9 CI#489

Merged
gibiw merged 1 commit into
mainfrom
build/pip-bootstrap-python39
May 14, 2026
Merged

build: bootstrap pip>=26.0 with ISO datetime cutoff to fix Python 3.9 CI#489
gibiw merged 1 commit into
mainfrom
build/pip-bootstrap-python39

Conversation

@gibiw
Copy link
Copy Markdown
Contributor

@gibiw gibiw commented May 14, 2026

Summary

After #485 introduced supply-chain protection via PIP_UPLOADED_PRIOR_TO: "P3D", every job that actually runs pip install on Python 3.9 fails:

ERROR: Could not find a version that satisfies the requirement pip>=26.1
(... 26.0.1)
ERROR: No matching distribution found for pip>=26.1

Root cause:

  • The relative-duration form (P3D) is only accepted by pip>=26.1.
  • pip 26.1 itself requires Python>=3.10, so it's never resolvable on 3.9 (max available: pip 26.0.1).
  • This affects the test matrix on 3.9 and the build-n-publish job, which is pinned to 3.9.
  • On main the breakage is hidden because the test job's paths-filter gate skips the install step on commits that don't touch the affected reporter directory; in any reporter PR (e.g. #488) it fires.

Change

  • Drop the workflow-level PIP_UPLOADED_PRIOR_TO env.
  • Add a Compute supply-chain cutoff step in each job that computes a fresh ISO 8601 datetime (3 days ago) and writes it to $GITHUB_ENV. ISO datetime is the original form pip 26.0 accepts and is supported on all Python versions in the matrix.
  • Lower the bootstrap pin from pip>=26.1 to pip>=26.0.
  • Keep the env -u PIP_UPLOADED_PRIOR_TO bootstrap dance so a stale seeded pip in fresh venvs doesn't choke on the env var as an unknown CLI flag.
  • Update the surrounding comments.

Test plan

  • YAML parses cleanly.
  • CI green across the whole matrix once this PR runs, including Python 3.9 on every reporter directory.

The "P3D" relative-duration form of PIP_UPLOADED_PRIOR_TO requires
pip>=26.1, but pip 26.1 itself requires Python>=3.10. As a result every
job running against Python 3.9 — including the test matrix and the
build-n-publish step pinned to 3.9 — failed with "No matching
distribution found for pip>=26.1" the moment the supply-chain guard was
introduced. The failure only surfaced in PRs that touched a reporter
directory, because the test job's paths-filter gate skipped the install
step on unrelated pushes.

Compute the cutoff as an ISO 8601 datetime in each job and lower the
required pip to >=26.0, which is available on Python 3.9 through 3.13
and accepts the ISO form. The env-unset bootstrap is kept to guard
against older seeded pips in fresh venvs that would reject the
PIP_UPLOADED_PRIOR_TO env var as an unknown flag.
@gibiw gibiw merged commit 1740148 into main May 14, 2026
37 checks passed
@gibiw gibiw deleted the build/pip-bootstrap-python39 branch May 14, 2026 07:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant