On 29 January, 2015 - Thiago Macieira wrote:

> On Wednesday 28 January 2015 11:04:21 Linus Torvalds wrote:
> > The proper way to get the git version is to just do
> > 
> >      # get raw SHA1
> >      git rev-parse HEAD
> > 
> >      # get "description" of it
> >      git describe --tags --abbrev=12
> > 
> > but actually accessing the .git/HEAD file directly is very wrong. But
> > I have no idea how to do git commands in the *.pri file, and handling
> > failure gracefully (in case it's not a git repository etc).
> 
> You're right, but this implies always running the rule. That implies Make 
> must 
> find that a given file is not up to date, otherwise it won't run the rule. In 
> turn, it means the not-up-to--date status cascades down to the binary and 
> Make 
> will recompile and relink, even if nothing changed.
> 
> I don't know of a way to ask Make to always run some commands and inspect 
> file 
> contents before deciding what is up to date and what isn't. The closest I can 
> think of is to touch or not touch another file, but in a parallel build Make 
> may have already inspected that file and decided it was up-to-date.
> 
> Do you know of any tricks I'm missing?

I've successfully managed to fool make into doing the right thing by
conditionally declaring a target as .PHONY, but i guess that trick could
be used on a dependency.


.PHONY: $(shell for f in $(DATA) $(GEN) ; do \
        if [ -e $$f ] && [ $$(( $$(date +%s) - $$(date -r $$f +%s))) -gt 
$$(($(MAX_AGE)*60)) ] ; then \
                        echo $$f ; \
                fi \
        done)


Such a trick might be plausible to use to conditionally declaring that
dependency or not.


//Anton


-- 
Anton Lundin    +46702-161604
_______________________________________________
subsurface mailing list
subsurface@subsurface-divelog.org
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to