diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b40243..c72c9e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ macos-14, macos-15, macos-15-intel, macos-26, macos-26-intel, ubuntu-24.04, ubuntu-26.04-arm ] + os: [ macos-15, macos-15-intel, macos-26, macos-26-intel, ubuntu-24.04, ubuntu-26.04-arm ] compiler: [ gfortran ] version: [ 13, 14, 15, 16 ] extra_flags: [ -g ] @@ -98,6 +98,14 @@ jobs: # --- LFortran coverage --- + # https://github.com/fortran-lang/homebrew-fortran + - os: macos-15 + compiler: lfortran + version: brew + - os: macos-26 + compiler: lfortran + version: brew + # https://github.com/lfortran/lfortran/pkgs/container/lfortran - os: ubuntu-22.04 compiler: lfortran @@ -114,6 +122,16 @@ jobs: version: 0.66.0 container: ghcr.io/lfortran/lfortran:v0.66.0 + - os: ubuntu-22.04 + compiler: lfortran + version: 0.67.0 + container: ghcr.io/lfortran/lfortran:v0.67.0 + + - os: ubuntu-22.04 + compiler: lfortran + version: 0.68.0 + container: ghcr.io/lfortran/lfortran:v0.68.0 + - os: ubuntu-22.04 compiler: lfortran version: latest @@ -128,7 +146,7 @@ jobs: FFLAGS: ${{ matrix.extra_flags }} FPM_FLAGS: --profile release --verbose --flag -DASSERTIONS CURL_OPTIONS: --retry 10 --retry-all-errors --fail -L - BREW_WARNING_FILTER: 's/^[[:punct:]]*warning[[:punct:]]*(You are using macOS)/warn: \1/i' + BREW_WARNING_FILTER: 's/^[[:punct:]]+warning[[:punct:]]+/warning: /i' steps: @@ -169,7 +187,8 @@ jobs: chmod +x install-homebrew.sh env CI=1 ./install-homebrew.sh HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" - retry ${HOMEBREW_PREFIX}/bin/brew install -v gcc@${COMPILER_VERSION} binutils + retry ${HOMEBREW_PREFIX}/bin/brew install -v gcc@${COMPILER_VERSION} binutils \ + 2>&1 | perl -pe "$BREW_WARNING_FILTER" ; test ${PIPESTATUS[0]} = 0 ls -al ${HOMEBREW_PREFIX}/bin echo "PATH=${HOMEBREW_PREFIX}/bin:${PATH}" >> "$GITHUB_ENV" : Homebrew GCC@15 needs binutils 2.44+ @@ -196,7 +215,8 @@ jobs: if: ${{ contains(matrix.os, 'macos') }} run: | # silence Homebrew tap trust warnings: - (set +e ; brew untap -f aws/tap hashicorp/tap 2>&1 | perl -pe 's/#*.warning./warn: /' ; brew trust azure/bicep ) + (set +e ; brew untap -f aws/tap hashicorp/tap ; brew trust azure/bicep ) \ + 2>&1 | perl -pe "$BREW_WARNING_FILTER" # set some Homebrew knobs to accelerate installation # but only when we are not simulating the user environment brew-via-install workflow if [[ -z "${{ matrix.brew_via_install }}" ]] ; then @@ -209,7 +229,8 @@ jobs: - name: Install macOS Dependencies if: contains(matrix.os, 'macos') run: | - retry brew update + retry brew update \ + 2>&1 | perl -pe "$BREW_WARNING_FILTER" ; test ${PIPESTATUS[0]} = 0 # fpm binary distribution for macOS requires gfortran shared libraries from gcc@12 retry brew install gcc@12 \ 2>&1 | perl -pe "$BREW_WARNING_FILTER" ; test ${PIPESTATUS[0]} = 0 @@ -217,6 +238,10 @@ jobs: retry brew install gcc@${COMPILER_VERSION} \ 2>&1 | perl -pe "$BREW_WARNING_FILTER" ; test ${PIPESTATUS[0]} = 0 fi + if [[ ${{ matrix.compiler }} == 'lfortran' ]] ; then + retry brew install fortran-lang/fortran/lfortran \ + 2>&1 | perl -pe "$BREW_WARNING_FILTER" ; test ${PIPESTATUS[0]} = 0 + fi - name: Install LLVM flang on macOS if: contains(matrix.os, 'macos') && matrix.compiler == 'flang' @@ -294,8 +319,8 @@ jobs: test ${PIPESTATUS[0]} = 0 && grep -q -i /berkeleylab/julienne output fpm run ${FPM_FLAGS} --flag "$FFLAGS" -- nasa --url --name 2>&1 | tee output test ${PIPESTATUS[0]} = 0 && grep -q -i /nasa/ output - fpm run ${FPM_FLAGS} --flag "$FFLAGS" -- BerkeleyLab -u -c 2>&1 | tee output - test ${PIPESTATUS[0]} = 0 && grep -q -i /BerkeleyLab/ output + fpm run ${FPM_FLAGS} --flag "$FFLAGS" -- FORTRAN -n -c 2>&1 | tee output + test ${PIPESTATUS[0]} = 0 && grep -q -i /dav05/ output - name: Install and Test plugin run: | @@ -307,6 +332,6 @@ jobs: test ${PIPESTATUS[0]} = 0 && grep -q -i /berkeleylab/julienne output fpm find nasa --url --name 2>&1 | tee output test ${PIPESTATUS[0]} = 0 && grep -q -i /nasa/ output - fpm find BerkeleyLab -u -c 2>&1 | tee output - test ${PIPESTATUS[0]} = 0 && grep -q -i /BerkeleyLab/ output + fpm find FORTRAN -n -c 2>&1 | tee output + test ${PIPESTATUS[0]} = 0 && grep -q -i /dav05/ output diff --git a/README.md b/README.md index 05fa524..abc5adf 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ If `fpm` is not in your `PATH` but `fpm-find` is, replace `fpm find` with fpm find numerical # search all package data for "numerical" fpm find julienne --name # search package names for "julienne" fpm find nasa --url --name # search package names and URLs for "nasa" -fpm find BerkeleyLab -u -c # case-sensitive search for "BerkeleyLab" in package URLs +fpm find FORTRAN -n -c # case-sensitive search for "FORTRAN" in package names ``` Before accessing the index installed in `$HOME/.local/share/fpm-find/package_index.yml`, `fpm-find` tries to update the index by downloading it from fortran-lang.