Skip to content

Add Ubuntu 26.04 (Resolute Raccoon) support#2796

Draft
tomjn wants to merge 5 commits into
developfrom
add/ubuntu-26
Draft

Add Ubuntu 26.04 (Resolute Raccoon) support#2796
tomjn wants to merge 5 commits into
developfrom
add/ubuntu-26

Conversation

@tomjn

@tomjn tomjn commented Jun 7, 2026

Copy link
Copy Markdown
Member

What

Moves newly created VVV VMs to Ubuntu 26.04 LTS (Resolute Raccoon) while keeping existing 24.04 (noble) VMs provisioning unchanged.

Box selection (Vagrantfile)

  • VirtualBox, VMware, Parallels → bento/ubuntu-26.04 (Parallels arm64 pin → 202606.01.0, verified to ship an arm64 build)
  • Docker → pentatonicfunk/vagrant-ubuntu-base-images:26.04
  • Hyper-V stays on 24.04 — no bento Hyper-V build and no gusztavvargadr 2604 box exists yet; comment updated. A reprovisioned Hyper-V VM stays on the fully-supported noble path.

Provisioner (additive — nothing removed)

  • New sources-ubuntu-resolute.list for vvv, php, nginx, git, mariadb.
  • Upstream resolute suites were probed: nginx publishes one (used); ondrej PHP, git-lfs, MariaDB 10.11 do not yet (404), so those use the noble suite with a TODO until they do. noble-built .debs run on 26.04.
  • All existing noble/jammy/focal/bionic source files are untouched, so reprovisioning an existing VM keeps working.

CI / workflows

  • eol.yml now tracks 26.04.
  • Added a non-blocking on-docker-26 provisioning job (continue-on-error: true, :26.04 image) alongside the existing 24.04 job, as the real-run signal for resolute. May be red while the 26.04 Docker image is unverified (Ubuntu 26 support #2795).

Why "replace box, add provisioner support"

Reprovisioning does not re-image in place — only destroy + recreate pulls the new box. So the provisioner must run on both noble and resolute; only the box strings move.

MongoDB

MongoDB lives in the separate vvv-utilities repo and has its own PR: Varying-Vagrant-Vagrants/vvv-utilities#118 (adds resolute to the codename map).

Testing

  • ruby -c Vagrantfile → Syntax OK; both workflow YAMLs valid.
  • No older-codename source files modified or deleted; ge "24.04" provisioner guard intact.
  • Full resolute run pending via the new CI job.

Related: #2795

- Point VirtualBox, VMware and Parallels at bento/ubuntu-26.04
  (arm64 box pin bumped to 202606.01.0)
- Update the Docker provider image to
  pentatonicfunk/vagrant-ubuntu-base-images:26.04
- Hyper-V stays on Ubuntu 24.04 as no 26.04 Hyper-V box exists yet
- Add resolute apt source lists for vvv, php, nginx, git and mariadb;
  php, git and mariadb use the noble suite until those upstreams
  publish a resolute suite
- Track 26.04 in the EOL check workflow
- Add a non-blocking on-docker-26 provisioning CI job
@update-docs

update-docs Bot commented Jun 7, 2026

Copy link
Copy Markdown

Thanks for opening this pull request! Make sure CHANGELOG.md gets updated with this change, additionally any docs that need updated can be found at https://github.com/Varying-Vagrant-Vagrants/varyingvagrantvagrants.org

GitHub
The VVV docs and website. Contribute to Varying-Vagrant-Vagrants/varyingvagrantvagrants.org development by creating an account on GitHub.

tomjn added 4 commits June 8, 2026 00:24
apt-key was removed in Ubuntu 26.04, so provisioning aborted with
'apt-key: command not found' (exit 127). Guard the remaining apt-key
callsites with command -v so they are skipped on 26.04+ and behave
unchanged on older releases:

- vvv_register_keys: guard the VVV mirror key add and drop the
  vvv_apt_keys_has gate (apt-key add is idempotent), so VVV core no
  longer depends on that helper
- vvv_apt_keys_has: report not-present when apt-key is absent
- vvv_apt_update: skip apt-key update when apt-key is absent
ntp and ntpdate were removed from Ubuntu 26.04 (apt reports 'no
installation candidate'), which failed the main package install and
halted provisioning. Install chrony (the modern NTP daemon, in main,
confirmed present in resolute) on 26.04+ while keeping ntp/ntpdate on
older releases, and restart the chrony service to match.
Standardise on chrony across every supported release instead of
branching by version:

- Install chrony unconditionally; it is available on all supported
  Ubuntu releases and is the modern default NTP daemon
- Purge ntp/ntpdate in a before_packages step when present, so a
  reprovisioned older VM does not end up running two NTP daemons
  contending for UDP/123
- Restart chrony (rename vvv_ntp_restart -> vvv_chrony_restart)
@tomjn tomjn marked this pull request as draft June 8, 2026 09:55
@tomjn

tomjn commented Jun 8, 2026

Copy link
Copy Markdown
Member Author

Status: blocked on ondrej PHP resolute support — do not merge yet

Converted to draft. The 26.04 provisioning groundwork is in place and CI has been driven down to a single remaining blocker.

Working on 26.04 (verified via the on-docker-26 CI job)

  • Box switched to bento/ubuntu-26.04; apt key registration and apt-get update succeed on resolute.
  • Fixed apt-key: command not found (removed in 26.04) by guarding the remaining apt-key callsites.
  • Replaced ntp/ntpdate (removed in 26.04) with chrony across all releases, purging the old packages on reprovision.

Remaining blocker: PHP

The ondrej PPA has no resolute suite yet, so the php source falls back to the noble suite. Those noble builds (deb.sury.org ubuntu24.04) are ABI-incompatible with 26.04 — e.g. php8.2-soap depends on a libxml2 that resolute doesn't provide — which fails the whole apt transaction.

Tracked upstream: https://codeberg.org/oerdnj/deb.sury.org/issues/91 — resolute support is in progress and is moving to a unified packages.sury.org repo (new keyring + source list), not the legacy launchpad PPA.

To unblock (follow-up once upstream ships resolute)

  1. Repoint provision/core/php/sources-ubuntu-resolute.list at the unified packages.sury.org resolute repo (and update the keyring accordingly).
  2. Confirm the on-docker-26 job goes green, then mark this PR ready and merge.

The on-docker-26 job stays continue-on-error so it doesn't block the required 24.04 job in the meantime.

Codeberg.org
...working on it... (sometimes next week)

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