Skip to content

feat: ubuntu-22.04 runner coverage (phase 2 slice D)#50

Closed
phramz wants to merge 6 commits into
mainfrom
phase2-ubuntu-22.04
Closed

feat: ubuntu-22.04 runner coverage (phase 2 slice D)#50
phramz wants to merge 6 commits into
mainfrom
phase2-ubuntu-22.04

Conversation

@phramz

@phramz phramz commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Final Phase-2 slice. Moves the builder runner from `ubuntu-24.04` (noble) to `ubuntu-22.04` (jammy) so compiled bundles run on both OS releases via glibc forward-compat. Forces a full rebuild of all 182 bundles by folding `BUILDER_OS` into `ComputeSpecHash`.

What lands

  • `builders/common/builder-os.env` pins `BUILDER_OS=ubuntu-22.04`.
  • `internal/planner.ComputeSpecHash` gains `builderOS` parameter; every spec_hash now depends on it.
  • `build-php-core.yml` + `build-extension.yml` dispatch to `ubuntu-22.04` / `ubuntu-22.04-arm`.
  • `runtime_deps.linux` rewritten to jammy-native package names (drop `-t64` suffixes).
  • `compat-harness.yml` gains `runner_os` fixture dimension + 5 `bare-jammy-` fixtures (x86_64 only).
  • README: supported runners + imagick-on-noble known gap.

Known gap — imagick on noble

imagick compiles against `libMagickWand-6.Q16.so.6` (jammy's SOVERSION). Noble ships SOVERSION 7 via `libmagickwand-6.q16-7t64` — no transitional back-port. Users on `ubuntu-24.04` runners who request `extensions: imagick` hit a clear apt-install failure. Tracked in a follow-up issue (to be filed post-merge).

Test plan

  • CI: planner emits all 182 cells (every spec_hash changed from `BUILDER_OS` addition).
  • CI: 182 jammy rebuilds succeed; wall-clock dominated by 10 × grpc ≈ 45–60 min.
  • CI: lockfile auto-commits 182 refreshed digests.
  • CI: 70 harness fixtures (65 noble + 5 jammy) pass with no new allowlist beyond existing bands.
  • CI: `make check` passes.

Spec: `docs/superpowers/specs/2026-04-22-phase2-ubuntu-22.04-design.md`

phramz added 6 commits April 22, 2026 11:53
Add a builderOS parameter to ComputeSpecHash so that changing the pinned
runner OS (builders/common/builder-os.env) invalidates every spec_hash in
bundles.lock and forces a full bundle rebuild on the new OS. Add
ReadBuilderOS helper (same missing-file contract as HashFile) and propagate
builderOS through cmd/planner and cmd/lockfile-update callers.
@phramz

phramz commented Apr 22, 2026

Copy link
Copy Markdown
Contributor Author

Closing without merge. Slice D's approach (a') — build on jammy, rely on glibc forward-compat to run on noble — doesn't hold because PHP core --enable-intl links against a specific libicu SOVERSION, and Ubuntu noble ships libicu74 only (no libicu70 back-port). Jammy-built PHP binaries can't load on noble. Same class of problem as the imagick SOVERSION gap flagged in the spec. Rolling back; the real cross-OS story will be designed separately — see follow-up issue.

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