3 ms·
> But where Make uses timestamps, Make hashes inputs I think you mean "Bazel" hashes inputs. Anyway, you don't mention Tup... have you used it? It might not
by gavinpc 10y ago
> But where Make uses timestamps, Make hashes inputs
I think you mean "Bazel" hashes inputs.
Anyway, you don't mention Tup... have you used it? It might not be Google-scale, but it can build Mozilla central and a Linux distro. I use it at work and for personal projects. All I can say about it is that there's no going back. Maybe Bazel is that way, too. I'll check it out.
Tup also does output-based short-circuiting, which I assume is based on hashes. In other words you can say
: some_input |> ^o^ process %f %o |> some_output
and because of the ^o^ flag, rules that take `some_output` as an input will not be invoked if its content didn't change from last time. Without that, it's still not using timestamps, but keeps a (sqlite) database of whether or not changes to a file originated from Tup itself.
I will say this: it's an adjustment, if you're used to mutating files during a build. (I'm looking at you, pdflatex.) But it's sooo worth it.