4 ms·
This essentially turns "make" inside out. The makefile lists the dependencies and then has minimal glue to run the build command based on the dependencies. In
by wnoise 16y ago
This essentially turns "make" inside out. The makefile lists the dependencies and then has minimal glue to run the build command based on the dependencies. Instead, redo has the build commands invoke helper-tools to specify the dependencies.
Overall, I quite like it. One downside of the current design that I see as being somewhat hard to fix is that it doesn't handle build commands with multiple outputs. There are klugey workarounds, but they require either lying to redo about the true dependencies (which always fills me with dread), or making parallel build unreliable.
- palish 16y agoThose downsides sound massively important to fix.
- wnoise 16y agoI've been agitating on the mailing list. True cases of this seem to be fairly rare, and I have come up with a slightly more effective (but ridiculous) workaround: have the multiple target command create an archive of its output, and then each actual target depends on the archive and extracts itself from the archive.
- microtherion 16y agoThere is yacc, as a fairly common standard case, and I find that quite a few of my homegrown tools for little languages fall into this category (e.g. translating a table into a header file, a source file, and a ruby script).