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>
2018
2019
2020
2021
2022
2023
2024
- 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>
2018
2019
2020
2021
2022
2023
2024
|