On Mon, Jan 28, 2019 at 11:44 AM Tim Hockin <thoc...@google.com> wrote:
>
> Of course you are right, as usual.  I just felt like that was a lot of
> hoop-jumping.  People already chide me for my affinity for baroque
> Makefiles...

If you can assume that you are using GNU make, the Makefile language
is Turing complete (although some limits are applied to rule expansion
so you can't write an infinite loop).

Ian


> On Sat, Jan 26, 2019 at 11:01 AM Ian Lance Taylor <i...@golang.org> wrote:
> >
> > On Fri, Jan 25, 2019 at 7:55 PM Tim Hockin <thoc...@google.com> 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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to