> Aside from the fact that DJB barely specified redo to the point where you could make accusations claiming it did or did not do something, I think there are implementations of redo which are capable of fitting the requirements you specify.
You're not wrong, and I think DJB did get there. However, there's a difference between the Unix way of designing a system out of disparate pieces working together (something DJB is good at and tends to do) and designing a cohesive whole system.
Obviously, redo is the former. My build system will be the latter, and I am doing it that way (despite being a fan of the Unix way in general) in an attempt to 1) hopefully make a build system that the masses actually like, 2) make it easier to make it work on Windows from the start, and 3) a cohesive whole build system is a much better platform for implementing hermetic builds.
(There are a bunch of smaller reasons, such as separating file targets and non-file targets, but all of those reasons are details.)
So yes, you are absolutely correct that redo can do everything I mentioned, and I guess that's an L for me. I should have mentioned other features as well.
> 1. Redo doesn't give you the tools to have dynamic dependencies for example, but it also doesn't concern itself with those and doesn't prevent you from having them. I have a small project which has dynamic dependencies (not system dependencies but just configuration options) and handles them gracefully with redo (without ever needing a make clean).
That's not quite what I envision when I say "dynamic dependencies" (my build system will also have configuration, but the config changing will not use dynamic dependencies), but yes.
However, at least in the TFA redo, dynamic dependencies (or simulating them) can be awkward. [1]
> 2. Flexible file stamps are something which you can implement on some redo implementation using a combination of redo-always and redo-stamp.
Correct. And I should have mentioned that. But again, DJB did that in an indirect way, making the system "finicky" (in my opinion).
> 3. The targets and build scripts being turing complete is something which redo doesn't specify but that is the intentional use of redo.
Yeah, no argument there.
> That being said, I think there is a place for something even more BASIC than redo which can be used more directly to implement what you've described while also being flexible enough to build redo on top of. It has given me things to think about.
Well, I don't think going even more basic is good here. Hermetic builds are just too good to pass up, and that requires some complexity.
[1]: https://redo.readthedocs.io/en/latest/FAQImpl/#can-a-do-file...