github stencila/stencila 0.7
Stencila 0.7

latest releases: v1.1.0, v1.0.5, v1.0.4...
pre-release9 years ago

In this release we have simplified the build system. Previously, each of Stencila library's main modules had a separate Makefile which was called recursively from the root Makefile. We found this approach hard to maintain and it did not lend itself to ensuring module inter-dependencies were properly accounted for and tested.

Following the advice of Recursive Make Considered Harmful, and inspired by Git's >2500 line Makefile ("hey if they do it, it can't be too bad"), we have collapsed all the build rules into the single, top level Makefile. The Makefile has shortcuts for some common tasks e.g.

make r-package py-package

The other big change is that builds are now done in separate build directories for each operating system (e.g. linux), machine architecture (e.g.x86_64) and Stencila version (e.g. 0.7). This ensures the source directories are not polluted with build artefacts and that packages for different operating systems and architectures can more easily be built on the same physical machine using tools like Vagrant.

In our refactoring, we considered other build systems like CMake and Scons, and even started implementing Waf scripts. But in the end, despite its shortcomings, the simplicity, familiarity and ubiquity of make, made it the best choice... for the time being.

Don't miss a new stencila release

NewReleases is sending notifications on new releases.