How does this compare …¶
There are many tools that can be used for doing your day-to-day work. Renku is not a silver bullet or a magic wand for making your results reproducible.
… to Makefile
¶
If you are using Makefile
to generate your outputs you are on a
good path. However you might be missing versioning of your past executions.
Renku internally builds rules similar to those defined in a Makefile
and
makes sure that all files are saved before running a tool.
Running the following renku run
commands
$ renku run echo test > foo
$ renku run wc -c < foo > foo.wc
is equivalent to this simple Makefile
.
foo:
@echo test > foo
foo.wc: foo
@wc -c < foo > foo.wc
Renku also makes sure that if any of the inputs are modified only the necessary “rules” are invoked. In addition, make does not run the rule if all dependencies are older then the targets.
$ renku run echo second > foo
$ renku status
On branch master
Outdated outputs:
(use "renku log [<file>...]" to see the full lineage)
(use "renku update [<file>...]" to generate the file from its latest inputs)
foo.wc: foo#deadbeef
$ renku update foo.wc
$ renku status
On branch master
All files were generated from the latest inputs.
Note
As a bonus the Makefile
can be generated by running
renku log --format Makefile foo.wc
command.