0 errors | 0 warnings | 0 notes
(local R CMD check --as-cran occasionally surfaces a single
transient NOTE "unable to verify current time" caused by host
clock skew on the build VM; the package itself is unaffected.)
- local Ubuntu 24.04, R 4.5.x:
R CMD check --as-cranclean. - GitHub Actions (R-CMD-check workflow), all green on the
submission HEAD:
- macOS-latest (release)
- windows-latest (release)
- ubuntu-latest (release, devel, oldrel-1)
devtools::check_win_devel(): submitted in parallel with this CRAN submission; the win-builder result will follow by email and will be forwarded to CRAN if it surfaces anything new.
First major release. Version bumped from the 0.2.x development line
to 1.0.0 to signal API maturity after the stabilisation cycle
described below. Headline bullets (full details in NEWS.md):
- The vendored copy of
{renv}(~30,000 lines underinst/vendor/) is removed. Lockfile parsing now uses{jsonlite}(already in Imports). The exporteddockerfiler::renvsymbol is removed; it was a public-API surface only because the vendor pattern required it. dock_from_renv()defaults to a non-root container user ("rstudio") with a defensiveuseraddstep, an auto-derivedRENV_PATHS_CACHE, achownof the cache, and aUSERdirective emitted right before therenv::restore()cache-mount RUN. Passuser = NULLto opt out and keep the previous root behaviour.dock_from_renv()defaultFROMflips from"rocker/r-base"(amd64-only) to"rocker/r-ver"(multi-arch), with the lockfile's R version appended at codegen time. Apple Silicon and ARM Linux hosts (Ampere, AWS Graviton) now build natively.dock_from_renv()defaultreposflips from"https://cran.rstudio.com/"to"https://p3m.dev/cran/latest"(Posit Public Package Manager) with automatic rewrite to the__linux__/$VERSION_CODENAME/shape so the build pulls pre-compiled Linux binaries.
dock_from_desc()anddock_from_renv()gain agithub_patparameter ("none"/"build_arg"/"secret") for private dependency repositories, with an opt-in BuildKit secret-mount mode that does not persist the PAT in image metadata.dock_from_desc()gains astrict_installparameter (defaultTRUE) which prefixes every install RUN withoptions(warn = 2);so any R warning during install (missing CRAN package, partial download, archived package, 404) becomes a hard error and aborts the docker build.dock_from_renv()gains arenv_paths_cacheparameter (auto-derived fromuserby default) controlling theRENV_PATHS_CACHEbuild-arg / ENV / cache-mount target.dock$ARG()and the internaladd_arg()helper gain adefaultparameter to emitARG <name>=<default>instead ofARG <name>.
dock_from_desc()anddock_from_renv()validate every user-supplied parameter that flows into a Dockerfile shell context (FROM,AS,reposvalues and names,extra_sysreqs,renv_version,renv_paths_cache,lockfilebasename,use_pak,strict_install,r_versionread from the lockfile,user). Inputs that contain shell metacharacters, newlines, or do not match the documented format raise an explicit error at function entry rather than silently producing a malformed Dockerfile or one that could execute attacker-controlled commands atdocker buildtime.- A code-injection path in
dock_from_renv()was found by an internal audit and fixed before this submission: therenvversion resolved from the lockfile was interpolated into the generatedR -e 'remotes::install_version("renv", version = "<x>")'line without the validation that was already applied to a user-suppliedrenv_version=. A craftedrenv.lockcould break out of the inner R string and run arbitrary code as root atdocker buildtime. The validator is now applied to the resolved value whatever its source. (The bug predates this release; no published{dockerfiler}version carried the 1.0.0 changeset, so there is nothing to coordinate with CRAN beyond noting it here.)
r()no longer silently rewrites user code (gsub("[ ][2,]", ...)typo) and now wraps the deparsed expression withshQuote(., type = "sh")so apostrophes inside string literals no longer break the emittedR -e '...'command.dock_from_desc(build_from_source = FALSE)no longer carries a dead-codeif (missing(out))branch.
Three packages depend on {dockerfiler} ({golem},
{AbSolution}, {shiny2docker}). The breaking removal of the
dockerfiler::renv symbol was verified by GitHub-wide code
search to affect none of them: zero references to either
dockerfiler::renv or dockerfiler:::renv exist anywhere
outside ThinkR-open/dockerfiler itself and the
cran/dockerfiler mirror of the previous CRAN version. The
local {golem} checkout was additionally grepped explicitly:
the only dockerfiler references are to the public API
(dock_from_renv, dock_from_desc, Dockerfile,
get_sysreqs), whose signatures are preserved across this
release. The other 1.0.0 changes (default flip of FROM to
rocker/r-ver, of repos to p3m.dev/cran/latest, and of
user to "rstudio") are behavioural-default changes and do
not break downstream call sites.
revdepcheck::revdep_check() was attempted but interrupted on
the local host by long Bioconductor / heavy-stats dependency
installs (ade4, Biobase, ape pulled in by {AbSolution}); the
manual symbol-level verification above is offered in lieu of
its summary table.
- Test coverage stands at 99.65% (
covr::package_coverage()). The handful of uncovered lines are defensivestop()guards that are unreachable in normal package use; chiefly the{pkgbuild}-not- installed guard indock_from_desc()({pkgbuild}is inImports). - No URLs in the package metadata or vignettes 404 (verified
with
urlchecker::url_check()prior to submission).