Skip to content

installer: broken on Linux — the 3.14 floor refuses Pythons the wheels it installs support #557

Description

@eaitbrahim

scripts/install.sh claims macOS and Linux. On Linux it currently cannot get past step 2/7.

Evidence

The only install-smoke run since the floor moved — run 32714791913, on the chore-python-314-floor PR, 2026-08-24:

smoke (ubuntu-latest)   ==> step 1/7: checking the platform
smoke (ubuntu-latest)   ==> step 2/7: finding Python >= 3.14
smoke (ubuntu-latest)   installer: FAIL: no Python >= 3.14 found on PATH -- keel requires 3.14 or later.

smoke (macos-latest) found /opt/homebrew/bin/python3 (3.14.6) and installed cleanly, then was cancelled by fail-fast.

So the Linux leg has been red since 2d3934f raised the floor, and the green run everyone remembers (32575568030) was the 3.11-floor script.

Why it matters beyond CI

ubuntu-latest is a reasonable proxy for a mainstream Linux box. Python 3.14 is new enough that most distributions do not package it yet. The script's own header advertises "installs keel on macOS or Linux", and README.md publishes the one-liner without qualification — so a Linux reader is invited to run a command that will stop at step 2/7.

The candidate loop also narrowed to python3 python3.14, so a user who has 3.14 installed as, say, python3.14.4 or under pyenv without shimming python3 will also be turned away.

Options

  1. Say so where the one-liner is published — README and docs/desktop-install.md — that Linux needs 3.14 installed first.
  2. Have the script name the remedy in its failure message (deadsnakes, pyenv, uv's own uv python install 3.14) rather than just "install a newer Python".
  3. Reconsider whether the installer needs the repo's floor at all. It installs v0.11.2 wheels, which declare requires-python = ">=3.11". The script is refusing Pythons the wheels it installs would run on.

Option 3 looks like the real bug: the floor that matters to an installer is the floor of the artifact being installed, not the floor of the development tree.

Verified against

Live raw.githubusercontent.com/CodeGateSoftware/keel/main/scripts/install.sh, git show v0.11.2:pyproject.toml (>=3.11), git show origin/main:pyproject.toml (>=3.14), and the run log above.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingciCI/workflows (Docs, CI & tooling)fixBug fix (groups under Fixes)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions