Dave,

what if you do

touch ompi/include/mpi.h.in && sleep 1 && touch config/opal_config_pthreads.m4 
&& ./autogen.pl && module unload cisco/autotools/ac269-am1133-lt242 && 
./configure --prefix=$PWD/_prefix && make


autogen.pl nor configure does not touch ompi/include/mpi.h.in, and as a
consequence,
config/opal_config_pthreads.m4 is newer than ompi/include/mpi.h when
make is invoked.

then from ompi/include/Makefile:

$(srcdir)/mpi.h.in:  $(am__configure_deps)
        ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
        rm -f stamp-h2
        touch $@

this means $(AUTOHEADER) is invoked, and then ompi/include/mpi.h.in is
touched.
1) in this scenario, $(AUTOHEADER) is invoked for nothing, but make has
no way to know it ...
2) make will touch ompi/include/mpi.h.in so the next make invokation
will not call $(AUTOHEADER)


makes sense ?


could this be seen as an autotools flaw ?
(e.g. autogen.pl invokes autotools that should have touched
ompi/include/mpi.h.in in order to avoid
the issue discussed here)
and/or could/should this be handled in autogen.pl ?
(e.g. manually touch ompi/include/mpi.h.in and some other files)

Cheers,

Gilles
On 2015/01/06 8:25, Dave Goodell (dgoodell) wrote:
> I just attempted to reproduce this issue and was unable to.  I did this on a 
> RHEL6 box with master hash ce2008a:
>
> ----✂----
> $ touch config/opal_config_pthreads.m4 && ./autogen.pl && module unload 
> cisco/autotools/ac269-am1133-lt242 && ./configure --prefix=$PWD/_prefix && 
> make
> ----✂----
>
> Which did exactly what I expected and only ran configure once, the time that 
> I explicitly requested it to be run.  I even ran it again to make sure that 
> the timestamp on opal_config_ptrheads.m4 was the only source state difference 
> between the two runs.  So I don't know what is causing your problem, but it's 
> not the rule you pointed out in the generated makefile.  Perhaps you are 
> building on NFS and this is causing you some timestamp headaches?
>
> -Dave
>
> On Dec 22, 2014, at 8:13 PM, Gilles Gouaillardet 
> <gilles.gouaillar...@gmail.com> wrote:
>
>> Hi Dave,
>>
>> yes, i did experience this exact behaviour.
>>
>> "by accident" meant i ran autogen.pl with the required autotools versions.
>> then, i ran configure and make with the RHEL6 stock autotools (that are too 
>> old for OMPI)
>> configure worked just fine, but make crashed because of outdated autotools
>>
>> if i ran make with the latest autotools, i would probably have not noticed 
>> the issue.
>>
>> note the issue occurs only when make is invoked for the first time.
>> if make success, autoheader does touch mpif.h.in, so the next make do not 
>> require autotools.
>>
>> if i read between the lines, it seems autoheader is not (correctly) invoked 
>> by autogen.pl
>>
>> please let me know if you cannot reproduce this issue.
>> (and once again, this is a very minor annoyance, and since tarballs are
>> generated with make dist, tarballs are very likely unaffected, so bottom 
>> line,
>> only developers that update m4 files can be affected)
>>
>>
>> Cheers,
>>
>> Gilles
>>
>> On Tue, Dec 23, 2014 at 2:26 AM, Dave Goodell (dgoodell) 
>> <dgood...@cisco.com> wrote:
>> On Dec 22, 2014, at 2:42 AM, Gilles Gouaillardet 
>> <gilles.gouaillar...@iferc.org> wrote:
>>
>>> Jeff and all,
>>>
>>> i just found "by accident" that make can require autotools.
>>>
>>> for example:
>>>
>>> from (generated) ompi/include/Makefile :
>>> $(srcdir)/mpi.h.in:  $(am__configure_deps)
>>>        ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
>>>        rm -f stamp-h2
>>>        touch $@
>>>
>>> and $(am__configure_deps) is a bunch (all?) of .m4 files.
>>>
>>> from a pragmatic point of view, it means that if update a m4 file, run
>>> autogen.pl and configure,
>>> then, the first invokation of make will run $(AUTOHEADER)
>> Gilles,
>>
>> Have you actually experienced this exact behavior?  The sequence you mention 
>> above shouldn't cause autoheader to be invoked by make.  Running autogen.pl 
>> will invoke autoheader after the m4 files were touched, so the mpi.h.in file 
>> will be newer than its m4 dependencies, which should mean that this make 
>> rule won't be executed.
>>
>> -Dave
>>
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post: 
>> http://www.open-mpi.org/community/lists/devel/2014/12/16713.php
>>
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post: 
>> http://www.open-mpi.org/community/lists/devel/2014/12/16717.php
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post: 
> http://www.open-mpi.org/community/lists/devel/2015/01/16734.php

Reply via email to