Developer helper script providing cc function. If one starts R session in data.table project root directory .dev/cc.R file should be automatically sourced (due to local .Rprofile file) making cc() (and dd()) function available straightaway.
cc(test=FALSE, clean=FALSE, debug=FALSE, omp=!debug, cc_dir, path=Sys.getenv("PROJ_PATH"), CC="gcc")Use cc() to re-compile all C sources and attach all data.table R functions (including non-exported ones).
One might want to re-compile and run main test script "tests.Rraw" automatically, then cc(test=TRUE) should be used. As of now running main tests with cc(T) requires to uninstall package to avoid S4 classes namespace issues (see #3808).
When working on a bigger feature, one may want to put new unit tests into dedicated test file, then cc("feature.Rraw") can be used to run only chosen test script.
Usage of cc() from R:
# re-compile and attach
cc()
# change some files, re-compile and re-attach
cc()
# compile, reload and run main test script
cc(T)
# clean, compile, reload
cc(F, T)
# clean, compile using specific compiler version, reload
cc(F, T, CC="gcc-8")Usage of dd() from R -d gdb:
run
dd()
# Ctrl-C
# break file.c:line
# c
# test and step between R and CFor more details see Debugging compiled code.
We provide make aliases to R commands commonly used during package development, see simplified examples below.
make build && make check
# R CMD build .
# R CMD check data.table_*.tar.gzIf changes were made to vignettes one should call R CMD explicitly as make's build or check are actually ignoring vignettes. See Makefile for exact commands.
make build && make install && make test
# R CMD build .
# R CMD INSTALL data.table_*.tar.gz
# R -e 'require(data.table); test.data.table()'To speed up testing of changes one can use cc() function instead of make commands.
Procedure of multiple different checks that has to be performed as a CRAN release process.
Script used to check breaking changes in data.table on reverse dependencies from CRAN and BioC.
If a developer is using Windows OS we suggests to install MinGW-w64 (or similar software) in order to operate in Linux-like environment. This will allow one to use cc() R function, make commands, and many others Linux built-in productive utilities. Note that recent versions of Windows OS might be shipped with Linux embedded.