Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
<== Date ==> <== Thread ==>

Subject: Re: Problem with parallel make with seq 2.2.4 on Linux
From: Ben Franksen <benjamin.franksen@helmholtz-berlin.de>
To: Andrew Johnson <anj@aps.anl.gov>, <tech-talk@aps.anl.gov>
Date: Sat, 14 Jan 2017 16:52:53 +0100
Am 13.01.2017 um 18:32 schrieb Andrew Johnson:
> On 01/13/2017 10:21 AM, Mark Rivers wrote:
>> I am seeing frequent errors when building seq 2.2.4 on Linux with
>> parallel make.  This is with base 3.15.5 on a 20-core machine.
>>  
>> Sometimes it works:
>>  
>> corvette:~/support/seq-2-2-4>make -sj clean.linux-x86
>> corvette:~/support/seq-2-2-4>make -sj install.linux-x86
>> 2 parsing conflicts.
>>  
>> But often it fails:
>>  
>> corvette:~/support/seq-2-2-4>make -sj clean.linux-x86
>> corvette:~/support/seq-2-2-4>make -sj install.linux-x86
>> ../var_types.c:17:17: fatal error: snl.h: No such file or directory
>> #include "snl.h"
>>                  ^
>> compilation terminated.
>> 2 parsing conflicts.
>>  
>> Running make a second time seems to always allow the build to complete.
> 
> There's a dependency rule missing from the src/Makefile, but the rule
> gets created in the var_types.d file which is included in subsequent
> built attempts. Ben does have some rules in that Makefile and he's
> trying to support the different dependency rules in 3.14 vs 3.15, but I
> suspect GNUmake on a 20-core box is more cunning than the current rules are.
> 
> In Ben's defence it isn't easy to write Makefile rules where a single
> command generates more than one file, as seems to be the case with lemon.

Indeed. However, multiple targets are not the problem here!

The problem is that snl.h is generated *and* that the dependency (.d)
files generated by make use gcc for this.

It seems that 'gcc -MM -MF' is not able to cope with not yet existing
include files.

On our many-core build machine, I see these messages, too, but it has
gcc-4.7.2 which at least seems to be able to continue with the build.
When I go to src/snc/O.linux-x86_64 and rm -f snl.h *.d, then run make,
all the .d files are generated correctly in spite of the error messages.
When I do the same on my machine at home with gcc-5.4.0 none of the .d
files that should contain snl.h are generated. Or perhaps this is the
different make version (3.81 vs. 4.1)?

Anyway, I can suppress the error message with make-3.81/gcc-4.7.2 by
adding explicit dependencies of the relevant .d files:

lexer.o: snl.h
type_check.o: snl.h
var_types.o: snl.h

The other combination (make-4.1/gcc-5.4.0) is not able to complete
successfully when run directly after rm -f snl.h *.d, even with these
extra dependencies listed. A regular parallel build succeeds, but that
may be due to me not having enough cores.

I dimly remember that the EPICS build system offers an alternative to
using gcc to generate the .d files. Perhaps I should use that here? Any
other recommendations?

Cheers
Ben

Attachment: signature.asc
Description: OpenPGP digital signature


Replies:
Re: Problem with parallel make with seq 2.2.4 on Linux Ben Franksen
Re: Problem with parallel make with seq 2.2.4 on Linux Ben Franksen
References:
Problem with parallel make with seq 2.2.4 on Linux Mark Rivers
Re: Problem with parallel make with seq 2.2.4 on Linux Andrew Johnson

Navigate by Date:
Prev: StreamDevice 2.7.7 won't build with Visual Studio 2010 Mark Rivers
Next: Re: Problem with parallel make with seq 2.2.4 on Linux Ben Franksen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
Navigate by Thread:
Prev: Re: Problem with parallel make with seq 2.2.4 on Linux Andrew Johnson
Next: Re: Problem with parallel make with seq 2.2.4 on Linux Ben Franksen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
ANJ, 14 Feb 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·