Skip to content

CI: build and test with vendor compilers, and reorganise the workflows - #1363

Open
ACSimon33 wants to merge 27 commits into
masterfrom
ci_different_compiler
Open

CI: build and test with vendor compilers, and reorganise the workflows#1363
ACSimon33 wants to merge 27 commits into
masterfrom
ci_different_compiler

Conversation

@ACSimon33

@ACSimon33 ACSimon33 commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Adds CI coverage for the Fortran compilers the existing pipelines never
exercised — the NAG Fortran Compiler, LLVM Flang, Intel oneAPI and the Arm
Toolchain for Linux — and reorganises the existing workflows so each one has a
single, clear purpose.

New: Compilers workflow (compilers.yml)

Builds and tests LAPACK with one job per toolchain and library type, 26 jobs in
total (13 toolchains × static/shared, all Release):

Platform Fortran / C
ubuntu-26.04, ubuntu-26.04-arm, windows-2025 gfortran + gcc
macos-26 gfortran-14 + gcc-14
ubuntu-26.04, ubuntu-26.04-arm flang + clang (LLVM 21)
ubuntu-26.04, ubuntu-26.04-arm, macos-26 nagfor + gcc / AppleClang
ubuntu-24.04 ifx + icx (oneAPI 2026.1)
ubuntu-24.04-arm armflang + armclang (ATfL 22.1)
windows-2025-vs2026 flang + cl, ifx + icx

Licensing

The NAG compiler is license-managed, and its Kusari key is tied to the platform it was issued for, so each configuration reads a secret of its own:

  • NAG_KUSARI_KEY_LINUX_X86_64
  • NAG_KUSARI_KEY_LINUX_ARM64
  • NAG_KUSARI_KEY_MACOS_ARM64

I added license keys that are valid until the end of the year. I'll update them once they expire. Pipelines will be skipped when the keys are no longer valid or accessible (e.g., in PR pipelines).

Reorganised existing workflows

  • cmake.ymlspecial.yml ("Special Build Configurations"), now holding
    only the configurations that are genuinely special, 14 jobs: the OpenMP
    build, extended-API-only, CBLAS/LAPACKE without a Fortran compiler, the
    valgrind memory check and gcov coverage. The plain GNU builds it used to run
    are covered by the Compilers workflow.
  • makefile.yml — the two near-identical per-platform jobs collapsed into
    one matrix job, now covering four platforms instead of two.
  • All workflows — runner images pinned instead of -latest, the
    ninja-build install steps dropped (Ninja 1.13.2 is on every image),
    all actions updated and pinned by commit SHA, and every job given an
    explicit name.

Windows pipelines

Since we now also cover the native Windows pipelines in the new workflow, we could get rid of the AppVeyor builds. The AppVeyor builds use older compiler but otherwise they are not really useful anymore. They are also quite slow....

Memcheck job

During the refactoring, I noticed that the Valgrind job actually doesn't run through the LAPACK test suite. Because it lacks --trace-children=yes, only the CMake process (runtest.cmake) is instrumented by Valgrind but not the actual test binary. I'll fix this in a follow-up PR because Valgrind raises some real issues, which I'll resolve there as well.

Closes #1258

Copilot AI lite review requested due to automatic review settings August 22, 2026 03:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

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.

Add more Fortran compiler testing in CI

2 participants