redo packageredo-1.2.tar.bz2 (source bundle) redo_1.2_amd64.deb (Debian binary package) redo-1.2.txz (FreeBSD binary package)
Daniel J. Bernstein's redo idea is a system for building target files from source files.
I originally wrote improved versions of Alan Grosskurth's 2007 implementation in shell scripts.
This package is a complete reimplementation from the ground up, in a compiled programming language rather than an interpreted one, that I then wrote.
It comprises:
redo — the main utility for rebuilding redo-ifchange — a secondary utility for rebuilding targets if existing sources changeredo-ifcreate — a secondary utility for rebuilding targets if non-existent sources manifestcubehash —
a utility program that generates hashes of file contents using the same parameterization of
Bernstein CubeHash
as is used by the redo tools to check for changes to source and target files
You can obtain it in two ways.
It is available in source form. This is distributed as a slashpackage-style package. That's a whole subject in itself; and the things that you need to know here are:
It is known to build, run, and work on FreeBSD 10 and Debian Linux version 7.
It should similarly build, run, and work on any modern BSD and on any modern Linux flavour.
(It makes use of various …at() system calls from POSIX.1:2008, for safety.)
The command to build it is package/compile.
The command to clean the build is package/clean.
The command to clean the build and the packages and release files is package/distclean.
It doesn't rely upon any other build system to build itself, merely POSIX-conformant and Bourne Again shell scripts and the g++ or clang++ compilers.
In particular, it doesn't require make to build.
System 5 style {bin,man} subdirectories are considered an "external" form.
Run package/export /usr/local as the superuser to export the commands and manual pages from slashpackage form to such subdirectories under /usr/local.
Pre-built binary packages are available, that install the toolset under /usr/local.
The binary package for x86/64 Debian Linux version 7 (or compatible) was built with package/debian/prepare and dpkg-buildpackage -b.
The binary package for FreeBSD version 10 (or compatible) was built with package/bsd/prepare and bsd/rules clean build binary.