← Back to all sparks
R

rmake

INFRA · APIS
Velocity0.0

Makefile Generator for R Analytical Projects

A Makefile generator for R projects keeps adding rule types instead of a build engine.

build-automationmakereproducibilityproject-workflowr-package
Current state
rmake generates GNU Make files for R analytical projects, so the dependency graph of an analysis is expressed in R and executed by make. The recent releases have widened the rule vocabulary with subdirectory and knitr rules, added stream redirection to make(), and started checking that GNU Make is actually present rather than assuming it.
Where it's heading
The package is committed to delegating execution rather than reimplementing it, and the work reflects that: more rule constructors, better handling of the messy parts of shelling out, and dependency reduction. Adding hasGnuMake() and tests for its presence is the sort of change that follows real reports from users whose systems did not have it. Long command lines and filenames with spaces both got fixed, which is the usual tax on generating shell text.
Prediction
Expect further rule constructors for common R document and compilation targets, and continued hardening of the generated Make syntax against unusual paths and long commands.

Recent moves

  1. 7mo ago

    GNU Make presence now checked; long command lines fixed

    Two practical fixes for a package whose output only works if the host has the right tools: rules with very long command lines no longer misbehave, and hasGnuMake() plus tests make the GNU Make dependency explicit rather than assumed.

    View source ↗
  2. 9mo ago

    make() gains stdout, stderr and stdin arguments

    Stream redirection arrives on make(), which is what turns the generated build from something you watch into something you can capture and log. The pryr dependency is dropped in the same release.

    View source ↗
  3. 9mo ago

    Subdirectory, knitr and dependency rule constructors added

    The release that widened the rule vocabulary most: subdirRule() for compiling subdirectories, knitrRule() for Rnw files, and depRule() for plain dependencies, plus a makefile() depends argument letting the generator itself depend on other files. Filename handling for paths with spaces is fixed alongside.

    View source ↗