4 ms·
What if the objections in the article were solved directly? > Writing a Large, Correct Makefile is Really Hard > No Sandboxing Would it be possible to track d
by moring 8y ago
What if the objections in the article were solved directly?
> Writing a Large, Correct Makefile is Really Hard
> No Sandboxing
Would it be possible to track dependencies on a file level, simply declaring everything that gets read as a dependency? In the end, it is very likely that the generated artifact is different if any of the files touched to build it changes.
So, why not track open() syscalls made by make and its sub-processes? This obviously has some requirements towards the kernel to allow such tracking. It would also report helper files used by the toolchain and maybe even the code (executables and .so files) used by the toolchain, but one may argue that they are actually dependencies -- the artifact must be regenerated if the toolchain gets updated.
> Caches are Not Portable
It should be considered first if rebuilding on each node is really that bad. Next, caches are non-portable by nature if they use different formats, or if dependencies that were used to build the artifacts are actually different on the various nodes. So this sets limits on cache sharing in principle -- but this has nothing to do with make.
> No Language Abstractions are Provided
Not going to argue against that.
> Timestamps, Not Hashes
Is there anything fundamental to make that requires the use of timestamps? Otherwise this sounds more like "nobody has bothered yet to change make to use hashes".