diff --git a/.ci/README.md b/.ci/README.md index a03c39252..d58a178a1 100644 --- a/.ci/README.md +++ b/.ci/README.md @@ -1,6 +1,6 @@ # data.table continuous integration and deployment -On each Pull Request opened in GitHub we run GitHub Actions test jobs to provide prompt feedback about the status of PR. Our main CI pipeline runs on GitLab CI nightly. GitLab repository automatically mirrors our GitHub repository and runs pipeline on `master` branch every night. It tests more environments and different configurations. It publish variety of artifacts. +On each Pull Request opened in GitHub we run GitHub Actions test jobs to provide prompt feedback about the status of PR. Our main CI pipeline runs on GitLab CI nightly. GitLab repository automatically mirrors our GitHub repository and runs pipeline on `master` branch every night. It tests more environments and different configurations. It publish variety of artifacts such as our [homepage](https://rdatatable.gitlab.io/data.table/) and [CRAN-like website for dev version](https://rdatatable.gitlab.io/data.table/web/packages/data.table/index.html) including windows binaries for the dev version. ## Environments @@ -44,3 +44,22 @@ Base R implemented helper script, [originally proposed to base R](https://svn.r- ### [`publish.R`](./publish.R) Base R implemented helper script to orchestrate generation of most artifacts and to arrange them nicely. It is being used only in [_integration_ stage in GitLab CI pipeline](./../.gitlab-ci.yml). + +## GitLab Open Source Program + +We are currently part of the GitLab for [Open Source Program](https://about.gitlab.com/solutions/open-source/). This gives us 50,000 compute minutes per month for our GitLab CI. Our license needs to renewed yearly and is currently managed by @ben-schwen. + +## Updating CI pipeline + +Basic CI checks are also run on every push to the GitLab repository. This can **and should** be used for PRs changing the CI pipeline before merging them to master. + +```shell +# fetch changes from remote (GitHub) and push them to GitLab +git fetch git@github.com:Rdatatable/data.table.git new_branch:new_branch +git push +# after updating at GitHub, pull changes from remote and push to GitLab +git pull git@github.com:Rdatatable/data.table.git new_branch +git push +``` + +Make sure to include a link to the pipeline results in your PR. diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8e1137510..7719e3c16 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -140,15 +140,14 @@ test-lin-rel-cran: <<: *test-lin image: registry.gitlab.com/jangorecki/dockerfiles/r-base variables: - _R_CHECK_COMPILATION_FLAGS_KNOWN_: "-Wvla" _R_CHECK_CRAN_INCOMING_: "TRUE" ## stricter --as-cran checks should run in dev pipelines continuously (not sure what they are though) _R_CHECK_CRAN_INCOMING_REMOTE_: "FALSE" ## Other than no URL checking (takes many minutes) or 'Days since last update 0' NOTEs needed, #3284 _R_CHECK_CRAN_INCOMING_TARBALL_THRESHOLD_: "7500000" ## bytes - _R_CHECK_PKG_SIZES_THRESHOLD_: "7" ## MB 'checking installed package size' NOTE + _R_CHECK_PKG_SIZES_THRESHOLD_: "10" ## MB 'checking installed package size' NOTE increased due to po script: - *install-deps - - echo 'CFLAGS=-g -O2 -fopenmp -Wall -Wvla -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2' > ~/.R/Makevars - - echo 'CXXFLAGS=-g -O2 -fopenmp -Wall -Wvla -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2' >> ~/.R/Makevars + - echo 'CFLAGS=-g -O2 -fopenmp -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2' > ~/.R/Makevars + - echo 'CXXFLAGS=-g -O2 -fopenmp -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2' >> ~/.R/Makevars - R CMD check --as-cran $(ls -1t data.table_*.tar.gz | head -n 1) - >- Rscript -e 'l=tail(readLines("data.table.Rcheck/00check.log"), 1L); if (!identical(l, "Status: OK")) stop("Last line of ", shQuote("00check.log"), " is not ", shQuote("Status: OK"), " but ", shQuote(l)) else q("no")' @@ -195,7 +194,7 @@ test-lin-dev-clang-cran: - R CMD check --as-cran $(ls -1t data.table_*.tar.gz | head -n 1) - (! grep "warning:" data.table.Rcheck/00install.out) - >- - Rscript -e 'l=tail(readLines("data.table.Rcheck/00check.log"), 1L); notes<-"Status: 3 NOTEs"; if (!identical(l, notes)) stop("Last line of ", shQuote("00check.log"), " is not ", shQuote(notes), " (size of tarball, installed package size, non-API calls) but ", shQuote(l)) else q("no")' + Rscript -e 'l=tail(readLines("data.table.Rcheck/00check.log"), 1L); notes<-"Status: 2 NOTEs"; if (!identical(l, notes)) stop("Last line of ", shQuote("00check.log"), " is not ", shQuote(notes), " (size of tarball, non-API calls) but ", shQuote(l)) else q("no")' # stated dependency on R test-lin-ancient-cran: diff --git a/src/freadR.h b/src/freadR.h index 97e6d5d25..5b23eb6d4 100644 --- a/src/freadR.h +++ b/src/freadR.h @@ -21,7 +21,7 @@ // Where no halt is happening, we can just use raw Rprintf() or warning() void __halt(bool warn, const char *format, ...); // see freadR.c #define STOP(...) __halt(0, __VA_ARGS__) -static char internal_error_buff[1001]; // match internalErrSize +static char internal_error_buff[1001] __attribute__((unused)); // match internalErrSize #define INTERNAL_STOP(...) do {snprintf(internal_error_buff, 1000, __VA_ARGS__); __halt(0, "%s %s: %s. %s", _("Internal error in"), __func__, internal_error_buff, _("Please report to the data.table issues tracker"));} while (0) #define DTPRINT Rprintf #define DTWARN(...) warningsAreErrors ? __halt(1, __VA_ARGS__) : warning(__VA_ARGS__) diff --git a/src/fwrite.h b/src/fwrite.h index da0280f0d..53f8208b2 100644 --- a/src/fwrite.h +++ b/src/fwrite.h @@ -9,7 +9,7 @@ #include "po.h" #define STOP error #define DTPRINT Rprintf - static char internal_error_buff[256]; + static char internal_error_buff[256] __attribute__((unused)); #define INTERNAL_STOP(...) do {snprintf(internal_error_buff, 255, __VA_ARGS__); error("%s %s: %s. %s", _("Internal error in"), __func__, internal_error_buff, _("Please report to the data.table issues tracker"));} while (0) #endif