macos CI: let openmp curl fail graciously (#7666) #7746
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
| # For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. | |
| # https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| workflow_dispatch: | |
| name: R-CMD-check | |
| concurrency: | |
| group: ${{ github.event.pull_request.number || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| R-CMD-check: | |
| runs-on: ${{ matrix.config.os }} | |
| name: ${{ matrix.config.os }} (${{ matrix.config.r }}) | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| config: | |
| # Rdatatable has full-strength GLCI which runs after merge. So we just need a few | |
| # jobs (mainly test-coverage) to run on every commit in PRs so as to not slow down dev. | |
| # GHA does run these jobs concurrently but even so reducing the load seems like a good idea. | |
| - {os: windows-latest, r: 'devel'} | |
| - {os: macos-15-intel, r: 'release'} | |
| - {os: macos-15, r: 'release'} | |
| # TODO(remotes>2.5.0): Use 24.04[noble?] | |
| - {os: ubuntu-22.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest"} | |
| # - {os: ubuntu-22.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest", http-user-agent: "R/4.1.0 (ubuntu-22.04) R (4.1.0 x86_64-pc-linux-gnu x86_64 linux-gnu) on GitHub Actions" } | |
| # GLCI covers R-devel; no need to delay contributors in dev due to changes in R-devel in recent days | |
| env: | |
| R_REMOTES_NO_ERRORS_FROM_WARNINGS: true | |
| RSPM: ${{ matrix.config.rspm }} | |
| GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
| _R_CHECK_RD_CHECKRD_MINLEVEL_: -Inf | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: r-lib/actions/setup-r@v2 | |
| with: | |
| r-version: ${{ matrix.config.r }} | |
| - name: Query dependencies | |
| run: | | |
| install.packages('remotes') | |
| saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) | |
| writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") | |
| shell: Rscript {0} | |
| - name: Restore R package cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ${{ env.R_LIBS_USER }} | |
| key: ${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} | |
| restore-keys: ${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.github/R-version') }}-1- | |
| - name: Install system dependencies | |
| if: runner.os == 'Linux' | |
| run: | | |
| while read -r cmd | |
| do | |
| eval sudo $cmd | |
| done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "22.04"))') | |
| - name: Install R Package Build Dependencies on MacOS, from https://github.com/stan-dev/cmdstanr/pull/1072/files | |
| if: runner.os == 'macOS' | |
| uses: r-hub/actions/setup-r-sysreqs@v1 | |
| with: | |
| type: 'minimal' | |
| - name: Install and configure OpenMP runtime | |
| if: runner.os == 'macOS' | |
| run: | | |
| if clang --version | grep 'clang version 17'; then | |
| openmp_tarball=openmp-19.1.5-darwin20-Release.tar.gz | |
| if curl --fail --location --retry 3 --retry-all-errors --connect-timeout 20 --max-time 180 \ | |
| -O "https://mac.r-project.org/openmp/${openmp_tarball}"; then | |
| sudo tar fvxz "${openmp_tarball}" -C / | |
| rm -f "${openmp_tarball}" | |
| else | |
| echo "Warning: failed to fetch OpenMP runtime from https://mac.r-project.org/openmp/; continuing without it" | |
| fi | |
| fi # otherwise R-bundled runtime is fine | |
| - name: Install dependencies | |
| run: | | |
| remotes::install_deps(dependencies = TRUE) | |
| remotes::install_cran("rcmdcheck") | |
| shell: Rscript {0} | |
| - name: Check | |
| env: | |
| _R_CHECK_CRAN_INCOMING_REMOTE_: false | |
| run: | | |
| options(crayon.enabled = TRUE) | |
| rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check") | |
| shell: Rscript {0} | |
| - name: Upload check results | |
| if: failure() | |
| uses: actions/upload-artifact@main | |
| with: | |
| name: ${{ runner.os }}-r${{ matrix.config.r }}-results | |
| path: check |