On Fri, Jan 25, 2019 at 7:55 PM Tim Hockin <[email protected]> wrote:
>
> Fair point, of course.
>
> I care because Kubernetes and it's family of projects have Makefiles to
> encapsulate trickier aspects of building, including code generation.
> Compiling kubernetes takes a LONG time. It would be nice to avoid
> re-triggering secondary actions when the primary artifacts have not changed.
>
> Could I checksum? Sure, but then I am writing a custom builder, so I might
> as well use Bazel (which has other issues).
>
> It's not a huge deal, today, but I really wanted to understand it. It just
> seemed broken.
While understanding that the approach is second best, Makefiles are
fully able to handle files that have the same contents but updated
timestamps. You separate the file you create and the file you use.
Then you write a Makefile target like
progtouse: stmp-progtouse; @true # Yes, the "; @true" is important.
stmp-progtouse: dependencies to build progtobuild
# commands to build progtobuild
$(SHELL) mvifdiff.sh progtobuild progtouse
echo >$@
The shell script mvifdiff.sh is simply
if cmp -s "$1" "$2" ; then
rm -f -- "$1"
else
mv -f -- "$1" "$2"
fi
Then everything else depends on, and uses, progtouse.
Remember to remove stmp-progtouse in your clean targets.
Ian
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.