Skip to content

build: upgrade Linux CI compiler from gcc-9 to gcc-14 - #16508

Merged
kgryte merged 3 commits into
developfrom
claude/elegant-feynman-vfix1a
Nov 5, 2026
Merged

kgryte merged 3 commits into
developfrom
claude/elegant-feynman-vfix1a

Conversation

@Planeshifter

@Planeshifter Planeshifter commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Resolves #{{TODO: add issue number}}.

Description

What is the purpose of this pull request?

This pull request:

  • upgrades the compiler installed by the Linux workflows (linux_test, linux_test_install, linux_test_cov, linux_examples, linux_benchmark, codeql) from gcc-9 to gcc-14 (g++, gfortran, and multilib variants included), with runners on ubuntu-latest.

Failing run: https://github.com/stdlib-js/stdlib/actions/runs/42000096343 (also https://github.com/stdlib-js/stdlib/actions/runs/42000431946).

Symptom: E: Unable to locate package gcc-9 (also g++-9, gfortran-9, and multilib variants) in the compiler install step.

Root cause: ubuntu-latest now resolves to Ubuntu 26.04, which does not provide the gcc-9 packages.

Related Issues

Does this pull request have any related issues?

None.

Questions

Any questions for reviewers of this pull request?

No.

Other

Not validated in CI. Availability of gcc-14, gfortran-14, and the multilib packages on 26.04 is based on package listings, not a workflow run; if the install step fails, the version needs adjusting. .travis.yml is untouched.

Not addressed here: random_benchmarks (run 41939880051) failed on cgemv because complex/float32/base/assert/is-equal/manifest.json lacks a benchmark conf; macos_test failures were not diagnosed.

Checklist

AI Assistance

  • Yes

  • No

  • Code generation (e.g., when writing an implementation or fixing a bug)

  • Test/benchmark generation

  • Documentation (including examples)

  • Research and understanding

Disclosure

This PR was written by Claude Code as part of an automated CI triage routine.


@stdlib-js/reviewers

🤖 Generated with Claude Code

https://claude.ai/code/session_017wWD77KjnKtfokLoXjLFGi

Scheduled runs of `linux_test` and `linux_test_install` failed on
develop at the toolchain install step with `E: Unable to locate
package gcc-9`. Root cause: `ubuntu-latest` now resolves to Ubuntu
26.04, which no longer provides gcc-9, g++-9, or gfortran-9. This
commit pins the Linux jobs that install gcc-9 (`linux_test`,
`linux_test_install`, `linux_test_cov`, `linux_examples`,
`linux_benchmark`, `codeql`) to `ubuntu-24.04`, where the packages are
available.

Ref: https://github.com/stdlib-js/stdlib/actions/runs/42000096343

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017wWD77KjnKtfokLoXjLFGi
@kgryte

kgryte commented Nov 5, 2026

Copy link
Copy Markdown
Member

Why not go ahead and upgrade our gcc toolchain in CI? Did you test this to see whether this was even possible?

@kgryte
kgryte marked this pull request as ready for review November 5, 2026 23:27
@kgryte
kgryte requested a review from a team November 5, 2026 23:27
@stdlib-bot stdlib-bot added the Needs Review A pull request which needs code review. label Nov 5, 2026
@kgryte kgryte added Needs Discussion Needs further discussion. CI Issue or pull request specific to continuous integration environments. and removed Needs Review A pull request which needs code review. labels Nov 5, 2026

Copy link
Copy Markdown
Member Author

No, I did not test an upgrade. This PR is a stopgap that restores the previous environment (ubuntu-24.04, where gcc-9 is available); it has not been exercised in CI either, since the changed workflows are scheduled/workflow_run triggered.

An upgrade is likely feasible, but I have not verified it. It would mean changing the compiler install and the gcc/g++/gfortran symlinks in all six workflows to a version available on 26.04, and then confirming that the full Node.js matrix (including the old versions), the native addon builds, and the C lint/benchmark/examples jobs still pass with the newer compiler. That is a broader change with real regression risk, so I did not bundle it here.

If you want it, I can take that on as a separate change with a manual workflow_dispatch run to validate before merging. Let me know which gcc version you prefer.


Generated by Claude Code

@kgryte

kgryte commented Nov 5, 2026

Copy link
Copy Markdown
Member

You should investigate the solution space before falling back to a stopgap, as doing so just increases technical debt which may never been repaid.

Copy link
Copy Markdown
Member Author

Understood. I have not pushed anything further. What I could establish so far:

  • gcc-9, g++-9, and gfortran-9 are hard-coded in the install and symlink steps of six workflows (codeql, linux_benchmark, linux_examples, linux_test, linux_test_cov, linux_test_install), and also appear in .travis.yml. An upgrade means changing all of those consistently.
  • From this environment I cannot reach the ubuntu-toolchain-r/test PPA or run the workflows, so I cannot confirm which compiler versions are installable on 26.04 or that the native addon builds and the C lint/benchmark/examples jobs pass with a newer compiler. I do not want to push an untested toolchain change across all Linux CI.

I will flag this to the PR owner so the upgrade is done and validated (for example via workflow_dispatch) rather than guessed at here. If you would rather close this PR in favor of that change, that works for me.


Generated by Claude Code

@kgryte

kgryte commented Nov 5, 2026

Copy link
Copy Markdown
Member

Can you not perform a normal web search to see what is installable on latest Ubuntu? This seems like a fixable problem.

Replace the `ubuntu-24.04` pin with an upgrade of the compiler
toolchain. `ubuntu-latest` resolves to Ubuntu 26.04, which no longer
provides `gcc-9`, `g++-9`, or `gfortran-9`, causing the compiler install
step to fail. Install and link the `-14` packages instead and return the
runners to `ubuntu-latest`.

Not validated in CI: availability of the `-14` packages (incl. multilib
and gfortran) on 26.04 is based on package listings, not a workflow run.

Ref: https://github.com/stdlib-js/stdlib/actions/runs/42000096343

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017wWD77KjnKtfokLoXjLFGi

Copy link
Copy Markdown
Member Author

Pushed a revision that drops the ubuntu-24.04 pin and upgrades the compiler instead: gcc-9 → gcc-14 (plus g++, gfortran, and multilib variants) in the six workflows, with runners back on ubuntu-latest.

From a web search: Ubuntu 26.04 defaults to GCC 15 and carries older GCC versions, and a third-party builder reports gcc-14 being installed on it. I could not confirm gfortran-14 or the -multilib packages for resolute, and I have not run the workflows. The first scheduled/workflow_dispatch run of linux_test is the real check; if gfortran-14 or multilib is missing, the install step will fail immediately and will need adjusting (for example gcc-15).

I left .travis.yml untouched. I also did not change the PPA step, which still resolves on resolute.


Generated by Claude Code

@Planeshifter Planeshifter changed the title build(workflows): pin gcc-9 runners to ubuntu-24.04 build(workflows): upgrade Linux CI compiler from gcc-9 to gcc-14 Nov 5, 2026
@kgryte kgryte removed the Needs Discussion Needs further discussion. label Nov 5, 2026
@kgryte

kgryte commented Nov 5, 2026

Copy link
Copy Markdown
Member

Go ahead and update the travis.yml configuration file.

@kgryte

kgryte commented Nov 5, 2026

Copy link
Copy Markdown
Member

And are there any other places in the codebase where we hardcode the gcc version to v9?

Align the Travis CI configuration with the GitHub Actions workflows
by installing and linking `gcc-14`, `g++-14`, and `gfortran-14`
(and multilib variants). Update `dist` from `xenial` to `noble`, as
newer compiler packages are not provided for `xenial`.

Not validated on Travis CI.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017wWD77KjnKtfokLoXjLFGi

Copy link
Copy Markdown
Member Author

Updated .travis.yml: gcc-9 → gcc-14 (packages and before_install symlinks), matching the workflows. I also changed dist from xenial to noble, since I do not expect the ubuntu-toolchain-r-test source to provide a newer compiler for xenial. That dist change is my judgment call and is not validated on Travis; say if you would rather keep xenial or use a different dist.


Generated by Claude Code

Copy link
Copy Markdown
Member Author

I searched the tracked files (excluding changelogs) for gcc/g++/gfortran with a version of 9, GCC 9, gcc >=9-style constraints, and toolchain references. Besides the six workflows and .travis.yml already in this PR, there are no other hardcoded v9 references. Not covered: untracked/external configuration (for example, repository or organization CI settings, or Docker images outside this repo).

Related but not version-specific: the six workflows still add ppa:ubuntu-toolchain-r/test and .travis.yml still lists the ubuntu-toolchain-r-test source. They may be unnecessary now that the packages come from the Ubuntu archive, but I left them as is since removing them is a separate change I cannot validate here. Let me know if you want them dropped in this PR.


Generated by Claude Code

@kgryte kgryte changed the title build(workflows): upgrade Linux CI compiler from gcc-9 to gcc-14 build: upgrade Linux CI compiler from gcc-9 to gcc-14 Nov 5, 2026
@kgryte
kgryte merged commit f333ad1 into develop Nov 5, 2026
9 checks passed
@kgryte
kgryte deleted the claude/elegant-feynman-vfix1a branch November 5, 2026 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI Issue or pull request specific to continuous integration environments.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants