redo
packageDownload source bundles:
Configure your machine to use the package repository, or download pre-built binaries:
redo_1.4_amd64.deb
(Debian) redo-1.4.txz
(FreeBSD/PC-BSD) redo-1.4.tgz
(OpenBSD) devel/redo
in FreshPorts
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, PC-BSD 10, Debian Linux version 8, Arch Linux, and OpenBSD version 5.9.
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.)
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.
To just build the package from source:
package/compile
This gives you:
command/
, which you can just add to your PATH
environment variable or symbolically link to;
manual/
;
The build process updates files in these directories atomically. It doesn't create part-written executables or other files at their final names. So you can run things straight out of these directories whilst rebuilding.
To clean the build run
package/clean
or just rm -r build/
To clean the build, packaging, and built files run
package/distclean
or just rm -r build/ command/ manual/
To build the binary packages on FreeBSD, PC-BSD, or OpenBSD run
package/bsd/prepare && bsd/rules clean build binary
On FreeBSD and PC-BSD this requires pkg version 1.2 or later in order to avoid segmentation faults and other bugs. So ensure that pkg is up to that version in your ports tree.
To build the binary packages on Debian Linux run
package/debian/prepare && dpkg-buildpackage -b -uc
Putting things into places outwith the self-contained directory is "exporting". To export to /usr/local
run (as the superuser)
package/export /usr/local
Pre-built binary packages are available, that install the toolset under /usr/local
.