diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 00000000..f88b11e4 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,122 @@ +# Action script of tests conducted for all platforms. The complete suite +# of tests is described in .github/workflows/R-CMD-check-with-db.yaml + +on: + push: + pull_request: + branches: + - master + - develop + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + # - {os: windows-latest, r: '3.6'} + # - {os: macOS-latest, r: '3.6', args: '--install-args=\"--configure-args=--with-proj-lib=/usr/local/lib/\"", "--ignore-vignettes', build_args: "--no-build-vignettes"} + - {os: macOS-latest, r: 'devel', args: '--install-args=\"--configure-args=--with-proj-lib=/usr/local/lib/\"", "--ignore-vignettes', build_args: "--no-build-vignettes"} + # - {os: ubuntu-16.04, r: '3.5', cran: "https://demo.rstudiopm.com/all/__linux__/xenial/latest"} + # - {os: ubuntu-16.04, r: '3.6', cran: "https://demo.rstudiopm.com/all/__linux__/xenial/latest"} + - {os: ubuntu-latest, r: 'release'} + + env: + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + CRAN: ${{ matrix.config.cran }} + + steps: + - uses: actions/checkout@v1 + + - uses: r-lib/actions/setup-r@master + with: + r-version: ${{ matrix.config.r }} + + - uses: r-lib/actions/setup-pandoc@master + + - name: Brew and macOS config + if: runner.os == 'macOS' + run: | + brew install pkg-config + brew install udunits + brew install gdal + cat <> .Renviron + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ + PROJ_LIB=/usr/local/opt/proj/share/proj/ + # for installing XML package from source + XML_CONFIG=/usr/local/opt/libxml2/bin/xml2-config + EOT + cat <> .Rprofile + r <- getOption("repos") + r["CRAN"] <- "https://cran.rstudio.com" + r["rccp_drat"] <- "https://RcppCore.github.io/drat" + config_args <- c("sf" = "--with-proj-lib=/usr/local/lib/", "rgdal" = "--with-proj-lib=/usr/local/lib/ --with-proj-include=/usr/local/include/") + options(configure.args = config_args, + install.packages.compile.from.source = "yes", + repos = r) + EOT + + - name: Query dependencies + run: | + install.packages('remotes') + saveRDS(remotes::dev_package_deps(dependencies = TRUE), "depends.Rds", version = 2) + shell: Rscript {0} + + - name: Cache R packages + if: runner.os != 'Windows' + uses: actions/cache@v1 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-r-${{ matrix.config.r }}-${{ hashFiles('depends.Rds') }} + restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}- + + - name: Install system dependencies + if: runner.os == 'Linux' + env: + RHUB_PLATFORM: linux-x86_64-ubuntu-gcc + run: | + Rscript -e "remotes::install_github('r-hub/sysreqs')" + sysreqs=$(Rscript -e "cat(sysreqs::sysreq_commands('DESCRIPTION'))") + sudo -s eval "$sysreqs" + + # install spatial dependencies + sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable + sudo apt update + sudo apt install \ + libudunits2-dev \ + libgdal-dev \ + libgeos-dev \ + libproj-dev + + - name: Install dependencies + run: | + library(remotes) + deps <- readRDS("depends.Rds") + deps[["installed"]] <- vapply(deps[["package"]], remotes:::local_sha, character(1)) + update(deps) + remotes::install_cran("rcmdcheck") + shell: Rscript {0} + + - name: Install rgdal with configure + if: runner.os == 'macOS' + run: | + install.packages("rgdal", type = "source", configure.args = "--with-proj-lib=/usr/local/lib/ --with-proj-include=/usr/local/include/") + shell: Rscript {0} + + - name: Check + run: rcmdcheck::rcmdcheck(args = c("--no-manual", "${{ matrix.config.args }}"), error_on = "warning", check_dir = "check", build_args = "${{ matrix.config.build_args }}") + shell: Rscript {0} + + - name: Upload check results + if: failure() + uses: actions/upload-artifact@master + with: + name: ${{ runner.os }}-r${{ matrix.config.r }}-results + path: check