[NOT WORKING] CI: Add gfortran 15 on Linux #634
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: [push, pull_request] | |
| jobs: | |
| Build: | |
| name: ${{ matrix.compiler }}-${{ matrix.version }} (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ macos-14, macos-15, macos-15-intel, macos-26, ubuntu-24.04 ] | |
| compiler: [ gfortran ] | |
| version: [ 14 ] | |
| extra_flags: [ -g ] | |
| oc_version: [ 2.10.3 ] | |
| include: | |
| - os: ubuntu-24.04 | |
| compiler: gfortran | |
| version: 13 | |
| extra_flags: -g -ffree-line-length-0 | |
| oc_version: 2.10.3 | |
| - os: ubuntu-24.04 | |
| compiler: gfortran | |
| version: 15 | |
| extra_flags: -g | |
| oc_version: 2.10.3 | |
| env: | |
| COMPILER_VERSION: ${{ matrix.version }} | |
| OC_VERSION: ${{ matrix.oc_version }} | |
| FC: ${{ matrix.compiler }} | |
| FFLAGS: ${{ matrix.extra_flags }} | |
| FPM_FLAGS: --profile release --verbose | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install fpm | |
| uses: fortran-lang/setup-fpm@main | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| fpm-version: latest | |
| - name: Get Time | |
| id: time | |
| uses: nanzm/get-time-action@master | |
| with: | |
| format: 'YYYY-MM' | |
| - name: Install macOS Dependencies | |
| if: ${{ contains(matrix.os, 'macos') && matrix.compiler == 'gfortran' && matrix.version == 14 }} | |
| run: | | |
| set -x | |
| brew update | |
| # fpm binary distribution for macOS requires gfortran shared libraries from gcc@12 | |
| brew install -v gcc@12 | |
| brew install -v opencoarrays gcc@14 open-mpi | |
| #brew --prefix | |
| #ls -alR $(brew --prefix)/bin | |
| echo "FC=gfortran-${COMPILER_VERSION}" >> "$GITHUB_ENV" | |
| - name: Install Ubuntu Native Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container == '' && matrix.compiler == 'gfortran' }} | |
| run: | | |
| set -x | |
| sudo apt update | |
| sudo apt install -y build-essential pkg-config make | |
| if [[ ${COMPILER_VERSION} < 15 ]] ; then \ | |
| sudo apt install -y gfortran-${COMPILER_VERSION} g++-${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" ; \ | |
| echo "LD_LIBRARY_PATH=${HOMEBREW_PREFIX}/lib64:${HOMEBREW_PREFIX}/lib:${LD_LIBRARY_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:+"$FFLAGS" }-B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ | |
| echo "CFLAGS=${CFLAGS:+"$CFLAGS" }-B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ | |
| echo "CXXFLAGS=${CXXFLAGS:+"$CXXFLAGS" }-B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ | |
| echo "LDFLAGS=${LDFLAGS:+"$LDFLAGS" }-B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" ; \ | |
| for tool in $(cd ${HOMEBREW_BINUTILS} ; ls ) ; do \ | |
| sudo ln -sf ${HOMEBREW_BINUTILS}/$tool /usr/bin/$tool ; \ | |
| done | |
| fi | |
| - name: OpenCoarrays/MPICH Cache | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container == '' }} | |
| id: cache-opencoarrays | |
| uses: actions/cache@v4 | |
| with: | |
| path: OpenCoarrays-${{ matrix.oc_version }} | |
| key: OpenCoarrays-${{ matrix.oc_version }}-${{ matrix.compiler }}-${{ matrix.version }}-${{ matrix.os }}-${{ steps.time.outputs.time }} | |
| - name: OpenCoarrays/MPICH Build | |
| if: ${{ steps.cache-opencoarrays.outputs.cache-hit != 'true' && contains(matrix.os, 'ubuntu') && matrix.container == '' }} | |
| run: | | |
| set -x | |
| rm -Rf OpenCoarrays-${OC_VERSION} | |
| #OC_URL=https://github.com/sourceryinstitute/OpenCoarrays/releases/download/${OC_VERSION}/OpenCoarrays-${OC_VERSION}.tar.gz | |
| OC_URL=https://github.com/sourceryinstitute/OpenCoarrays/archive/refs/tags/${OC_VERSION}.tar.gz | |
| wget -P . ${OC_URL} | |
| tar -xf ${OC_VERSION}.tar.gz | |
| cd OpenCoarrays-${OC_VERSION} | |
| TERM=xterm ./install.sh --yes-to-all \ | |
| --with-fortran gfortran-${COMPILER_VERSION} \ | |
| --with-cxx g++-${COMPILER_VERSION} \ | |
| --with-c gcc-${COMPILER_VERSION} | |
| - name: Setup Ubuntu Compilers | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container == '' && matrix.compiler == 'gfortran' }} | |
| run: | | |
| set -x | |
| PREFIX="$PWD/OpenCoarrays-${OC_VERSION}/prerequisites/installations" | |
| OC_PATH="$PREFIX/opencoarrays/${OC_VERSION}" | |
| MPI_PATH=$(ls -d $PREFIX/mpich/*) | |
| #ls -alR ${PREFIX} | |
| cat ${OC_PATH}/setup.sh | |
| echo "PATH=${OC_PATH}/bin:${MPI_PATH}/bin:$PATH" >> "$GITHUB_ENV" | |
| echo "FC=gfortran-${COMPILER_VERSION}" >> "$GITHUB_ENV" | |
| echo "FPM_FFLAGS=${FFLAGS}" >> "$GITHUB_ENV" | |
| echo "FPM_CFLAGS=${CFLAGS}" >> "$GITHUB_ENV" | |
| echo "FPM_CXXFLAGS=${CXXFLAGS}" >> "$GITHUB_ENV" | |
| echo "FPM_LDFLAGS=${LDFLAGS}" >> "$GITHUB_ENV" | |
| - name: Version info | |
| run: | | |
| echo == TOOL VERSIONS == | |
| echo Platform version info: | |
| uname -a | |
| if test -r /etc/os-release ; then grep -e NAME -e VERSION /etc/os-release ; fi | |
| if test -x /usr/bin/sw_vers ; then /usr/bin/sw_vers ; fi | |
| echo | |
| echo PATH="$PATH" | |
| for tool in ${FC} caf mpicc mpif90 fpm ; do | |
| ( echo ; set -x ; w=$(which $tool) ; \ | |
| if test -n "$w" ; then \ | |
| ls -al $w ; ls -alhL $w ; $tool --version || echo ERROR=$? ; \ | |
| fi ) | |
| done | |
| - name: Build, run, and test | |
| run: | | |
| #source OpenCoarrays-${OC_VERSION}/prerequisites/installations/opencoarrays/${OC_VERSION}/setup.sh | |
| fpm test --compiler caf --runner "cafrun -n 2" ${FPM_FLAGS} |