Skip to content

Vagrant: upgrade the VMs to Ubuntu 26.04 - #1380

Merged
gusthoff merged 4 commits into
AdaCore:mainfrom
gusthoff:dev/topic/infrastructure/vagrant/ubuntu-26.04-upgrade/2026-09-11
Sep 12, 2026
Merged

Vagrant: upgrade the VMs to Ubuntu 26.04#1380
gusthoff merged 4 commits into
AdaCore:mainfrom
gusthoff:dev/topic/infrastructure/vagrant/ubuntu-26.04-upgrade/2026-09-11

Conversation

@gusthoff

Copy link
Copy Markdown
Collaborator

Vagrant: upgrade the VMs to Ubuntu 26.04

Why

The VMs were on bento/ubuntu-24.04. This moves them to the current
LTS, and brings CI along so the two stay in step.

What changed

  • Both VMs move to bento/ubuntu-26.04 202606.01.0, and the pinned
    package lists are recaptured for the new release: the kernel moves
    from the 6.8 series to 7.0, texlive from 2023 to 2025, and the system
    Python to 3.14.
  • CI moves to ubuntu-26.04 with Python 3.14, matching the VMs.
    actions/setup-python fetches the version it is given regardless of
    the runner image, so the interpreter pin had to move separately.
  • Both VMs now install the same Node.js release. The epub VM was pulling
    Node 22 while the web VM and CI used 24; its pinned list is recaptured
    to match, since NodeSource publishes one repository per major release
    and the 24.x repository does not carry the build the old list named.

Testing & validation

  • A full site build on the epub VM succeeded, producing the HTML, all
    PDFs and all EPUBs.
  • Both VMs were then destroyed and re-provisioned with pinning enabled:
    the lists installed from scratch, and recapturing afterwards
    reproduced them byte for byte.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

gusthoff and others added 4 commits September 12, 2026 03:14
Both VMs move from `bento/ubuntu-24.04` 202510.26.0 to
`bento/ubuntu-26.04` 202606.01.0, the current LTS box.

The pinned package lists still describe 24.04 at this point and cannot
describe the new release: its archive carries none of those versions, so
the pinned install would abort before a new list could be captured. The
first provision on the new box therefore needs `VM_APT_PIN=0`, after
which the lists are recaptured.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both lists now record the package set of a VM provisioned on the new
base box, replacing the 24.04 versions that its archive does not carry.
The kernel moves from the 6.8 series to 7.0, texlive from 2023 to 2025,
and the system Python to 3.14.

Captured from VMs whose output was checked first. A full site build
succeeded.

Both VMs were then destroyed and re-provisioned with pinning enabled:
the lists installed from scratch without a missing version, and
recapturing afterwards reproduced them byte for byte.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CI is meant to mirror the VMs, which now run Ubuntu 26.04 and its system
Python 3.14. Running the workflows on 24.04 with Python 3.12 leaves a
divergence that can hide a dependency problem until someone meets it
locally.

Seven workflows move to `ubuntu-26.04`, and the five that pin an
interpreter move to 3.14. The two axes are independent:
`actions/setup-python` fetches the version it is given regardless of the
runner image, so the interpreter would not have followed the runner on
its own. `codeql-analysis.yml` is unchanged; it uses `ubuntu-latest`.
The `ubuntu-26.04` image is currently published as a preview.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The epub VM pulled Node.js 22 from NodeSource while the web VM pulled 24
and every CI workflow requests 24.x. Both VMs run the same JavaScript
toolchain -- `pnpm install --frozen-lockfile` on provisioning, and
webpack during a site build -- so there is no reason for them to differ,
and the difference makes an epub-only build failure harder to reason
about.

Point the epub provisioner at `setup_24.x` and recapture its pinned
list, which now records the same `nodejs=24.21.0-1nodesource1` as the
web VM. Both halves are required together: NodeSource publishes one
repository per major release, so the 24.x repository does not carry the
22.23.2 build the old list named, and provisioning with pinning enabled
would have failed to find it.

Recapturing changed that one line and nothing else.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gusthoff
gusthoff merged commit 3248e87 into AdaCore:main Sep 12, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant