From 543a722320f16a4d1250f8f739fa540f7dd4fef9 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 10 Nov 2025 18:57:07 -0800 Subject: [PATCH] CI: Use Homebrew to install gfortran 15 on Ubuntu --- .github/workflows/build.yml | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 42d39b3..9fa003c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,15 +13,11 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-13, macos-14, macos-15, macos-15-intel, ubuntu-24.04] + os: [ macos-13, macos-14, macos-15, macos-15-intel, ubuntu-24.04 ] compiler: [ gfortran ] version: [ 12, 13, 14, 15 ] extra_flags: [ -g ] - exclude: - - os: ubuntu-24.04 - version: 15 # no package available (yet?) - include: - os: ubuntu-22.04 compiler: gfortran @@ -140,7 +136,24 @@ jobs: set -x sudo apt update # sudo apt list -a 'gfortran-*' - sudo apt install -y build-essential gfortran-${COMPILER_VERSION} + sudo apt install -y build-essential + if [[ ${COMPILER_VERSION} < 15 ]] ; then \ + sudo apt install -y gfortran-${COMPILER_VERSION} ; \ + else \ + curl -L https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o install-homebrew.sh ; \ + chmod +x install-homebrew.sh ; \ + env CI=1 ./install-homebrew.sh ; \ + HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" ; \ + ${HOMEBREW_PREFIX}/bin/brew install -v gcc@${COMPILER_VERSION} binutils ; \ + ls -al ${HOMEBREW_PREFIX}/bin ; \ + echo "PATH=${HOMEBREW_PREFIX}/bin:${PATH}" >> "$GITHUB_ENV" ; \ + : Homebrew GCC@15 needs binutils 2.44+ ; \ + HOMEBREW_BINUTILS=$(ls -d ${HOMEBREW_PREFIX}/Cellar/binutils/2.*/bin ) ; \ + ls -al ${HOMEBREW_BINUTILS} ; \ + echo "FFLAGS=$FFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ + echo "CFLAGS=$CFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ + echo "CXXFLAGS=$CXXFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ + fi - name: Install Ubuntu Container Dependencies if: ${{ contains(matrix.os, 'ubuntu') && matrix.container != '' && !contains(matrix.container, 'phhargrove') }}