#1522: Improve determining make dependencies --------------------------+------------------------------------------------- Reporter: eschnett | Owner: Type: enhancement | Status: new Priority: major | Milestone: Component: Cactus | Version: development version Resolution: | Keywords: --------------------------+-------------------------------------------------
Comment (by rhaas):
I just ran into a situation requiring -cleandeps which would require tricks if cleandeps is no longer available.
For testing GRHydro before pushing commits I either change the thornlist to switch from {{{EinsteinEvolve/GRHydro}}} to {{{Zelmani/GRHydro}}} or change a symbolic link in {{{EinsteinEvolve}}} to point to {{{Zelmani/GRHydro}}} (basically, what I '''really''' do is a little bit different but it is the same operation). However changing the ThornList messes up the dependency tracking since the .d files in build still point to the old location. In this particular case the old location did no longer exist (different git branch that contained the thorn while the current one does not). Right now I do a make sim-cleandeps followed by a find EinsteinEvolve/GRHydro | xargs touch (which one can certainly argue is ''ugly''). If missing .d files cause a full recompile then this would recompile all of the ET which takes a while. Right now this only recompiles the changed thorn.
The issue could be solved if the build system kept track of the arrangement where a thorn was found and would mark all object files as invalid if a thorn moved.
I think this would actually be helped by the proposed patch in that it would work more gracefully with the vanishing source files.
This is admittedly a non-standard workflow but it is something I end up doing each time I have new batch of changes for GRhydro (so about once a week if I actually stay on top of it).