EPICS Home

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  <20172018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Problem with parallel make with seq 2.2.4 on Linux
From: Mark Rivers <[email protected]>
To: "'Ben Franksen'" <[email protected]>, "[email protected]" <[email protected]>
Date: Sat, 14 Jan 2017 22:12:38 +0000
Hi Ben,

> This might be something not specific to the sequencer; at least I am not
> aware of doing anything special for the clean or uninstall targets.

I only get that error with the sequencer, not with any other modules.  It looks like the error is in the documentation directory.

Indeed I get that error by simply running non-parallel make in the documentation directory:

J:\epics\support\seq\documentation>make clean
rm -rf O.Common
process_begin: CreateProcess(NULL, rm -rf O.Common, ...) failed.
make (e=2): The system cannot find the file specified.
Makefile:45: recipe for target 'clean' failed
make: [clean] Error 2 (ignored)

So it looks like there is no O.Common directory there, and that produces an error?

There is indeed no O.Common directory, but make on Linux just silently ignores that.

corvette:~/support/seq/documentation>make clean
rm -rf O.Common

Thanks,
Mark


-----Original Message-----
From: Ben Franksen [mailto:[email protected]] 
Sent: Saturday, January 14, 2017 1:25 PM
To: Mark Rivers; [email protected]
Subject: Re: Problem with parallel make with seq 2.2.4 on Linux

Am 14.01.2017 um 19:57 schrieb Mark Rivers:
> Hi Ben,
> 
> Thanks for the quick reply.
> 
> I added HDEPENDS_METHOD=MKMF here in src/snc/Makefile:
> 
> ***********************
> # avoid deprecation warnings with base 3.15 and later
> ifeq ($(BASE_3_14),YES)
> LEMON = $(call PATH_FILTER,$(INSTALL_HOST_BIN)/lemon$(HOSTEXE))
> else
> LEMON = $(abspath $(INSTALL_HOST_BIN)/lemon$(HOSTEXE))
> endif
> 
> HDEPENDS_METHOD=MKMF
> 
> include $(TOP)/configure/RULES
> ***********************
> 
> That worked to fix the parallel make problems on Linux. Without that
line it was failing about 50% of the time, with it I saw no failures in
over 15 attempts.

Good! I think this is it, then.

> There is a minor problem on Windows, which is independent of the HDEPENDS line:
> 
> J:\epics\support\seq>make -sj8 clean uninstall
> process_begin: CreateProcess(NULL, rm -rf O.Common, ...) failed.
> make (e=2): The system cannot find the file specified.
> 
> The above error seems to be benign, but it would be nice to eliminate it.

This might be something not specific to the sequencer; at least I am not
aware of doing anything special for the clean or uninstall targets.

Can you send the full output with -j8 but without -s? If you have make
version >= 4 then you could add the command line flag -Orecurse, which
gives maximally correlated grouping of output for parallel builds,
making it easier to see where exactly the problem appears.

Cheers
Ben

> 
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Ben Franksen
> Sent: Saturday, January 14, 2017 10:35 AM
> To: [email protected]
> Subject: Re: Problem with parallel make with seq 2.2.4 on Linux
> 
> Am 14.01.2017 um 16:52 schrieb Ben Franksen:
>> 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.
> 
> Please ignore the last sentence, I made a mistake. Adding the explicit
> dependencies really does work on my machine, too. But I still think this
> is not the right way to fix the problem. Manually added dependencies are
> brittle in the face of evolving code, which is why we auto-generate them
> in the first place.
> 
> A better fix (I think) is to set
> 
>   HDEPENDS_METHOD=MKMF
> 
> in src/snc/Makefile (in the CONFIG section). This lets the EPICS build
> system use mkmf.pl to generate the dependencies even on platforms where
> the C compiler supports the appropriate flags to generate dependencies.
> (Note that for 3.14 I had already copied the corresponding rule from
> base-3.15 which is why the problem manifests only with 3.15).
> 
> (I noticed that after I do 'rm snl.h *.d' this still does not
> re-generate the .d files for the three files that include snl.h. It is
> hard for me to judge whether this may cause problems in the future.)
> 
> Anyway, if this works for you (Mark), then I will make a new release
> with this fix (and with a fix for the other build problem you reported).
> 
> Cheers
> Ben
> 



Replies:
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
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
RE: 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 Ben Franksen

Navigate by Date:
Prev: Re: Problem with parallel make with seq 2.2.4 on Linux Ben Franksen
Next: Re: ASYN VXI-11 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  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Problem with parallel make with seq 2.2.4 on Linux Ben Franksen
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  <20172018  2019  2020  2021  2022  2023  2024