Hacker News new | past | comments | ask | show | jobs | submit login

From this article I learned that build systems don't have the fundamental choice: mtime or checksum. Instead a better solution is mtime plus a bunch of other things. The article explains the faults of mtime and checksum clearly.

This insight makes me want to try redo.

One thing I dislike about redo is that it probably does not work well on Windows. Has anybody ever tried?

Redo also makes me wonder: Is a build directory just a habit from using Make or is it a flaw of redo to not support that well? With "build directory" i mean the concept where the build process generates files in an extra directory which can simply be deleted and nothing does pollute the source directory.




> One thing I dislike about redo is that it probably does not work well on Windows. Has anybody ever tried?

Yes, although only for a toy project. I'm sure it'd work fine with Cygwin or WSL, it might work with MSYS, but I've definitely had it working with busybox-w32[1].

> Is a build directory just a habit from using Make or is it a flaw of redo to not support that well?

You can use redo in a Make-like fashion by putting a single `default.do` in the root of your project that decides what to do by examining the filename it's been asked to build. That does give up some of the benefits of redo, however (since a single file builds everything, when you edit that file redo wants to rebuild everything).

Having a separate build directory that can be easily wiped is a good idea, but I'm a lot less worried about it (or things like 'make clean') now that I have 'git clean -dxf'.

[1]: https://frippery.org/busybox/


Daniel J. Bernstein, who originally designed redo, also came up with the slashpackage idea. In that system, the build directory starts out as a writable copy of the (potentially read-only) source directory, complete with all of the .do files in the case of systems built with redo.

* http://jdebp.eu./FGA/slashpackage.html


If you are going to run some sort of autoconfiguration tool, then having it generate the build directory (by copying or symlinking the .do files over) is a trivial extra step.


I think all of the authors observations are valid, but in real life I've never encountered any of them. I don't have builds triggered automatically from I notify or the like, and I'm not so fast with my fingers that it takes me less than a second between saving a file and kicking off a make in another terminal window.

And anytime I do an initial check out from any version control, "make clean" is always the first step.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: