EPICS Controls 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  <20162017  2018  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  <20162017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Building SEQ 2.2.3, Windows, EPICS Base 3-15-2
From: Benjamin Franksen <[email protected]>
To: Kevin Peterson <[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>
Cc: [email protected]
Date: Wed, 7 Sep 2016 17:18:46 +0200
Hi

just back from holidays. Perhaps it helps to replace

$(COMMON_DIR)/snl.bnf: snl.lem
	$(LEMON) o=. -g $< > $@

with

$(COMMON_DIR)/snl.bnf: snl.lem
	$(LEMON) o=. -g $< > $(@F).tmp
	$(MV) $(@F).tmp $@

which would also make parallel builds more reliable?

Cheers
Ben

On 18.08.2016 18:13, Kevin Peterson wrote:
> I doesn't appear that this build error is due to a bug in make.  I'm
> using the following to build seq-2-2-3:
> 
>   Windows 7 (64-bit)
>   Visual Studio 2010 Professional & Visual Studio 2015 Community Edition
>   Make 4.1 (from the EPICS web site)
>   Strawberry perl 5.20.3001
> 
> I see the build error when using base-3.15.4, but NOT when using
> base-3.14.12.5.  Issuing "make" a second time does allow the build to
> run to completion.
> 
> I'm hoping someone with knowledge of the changes to build rules between
> base 3.14 and 3.15 can suggest a fix.
> 
> Kevin
> 
> On 10/4/15 9:27 AM, [email protected] wrote:
>> Hi,
>>
>> I have now run a build through on windows 10 (x64) using make 4.1 (from EPICS web site), base 3.15.2, seq 2.2.3, strawberry perl 5.22.0 (x64) and visual studio 2015. The sequencer files all compile OK and "make -s runtests" is successful, but I did encountered an error during the build process itself when it failed to generate "snl.bnf" - however after typing "make" a second time everything then runs to completion (the generated "snl.bnf" file is then blank though, but I believe this file is only used to generate documentation)
>>
>> The build error is:
>>
>> link -nologo  -debug -incremental:no -fixed:no /MACHINE:X64              -out:snc.exe       lexer.obj snl.obj main.obj node.obj var_types.obj analysis.obj gen_code.obj gen_ss_code.obj gen_tables.obj sym_table.obj builtin.obj type_check.obj     c:/dev/epics-base/lib/windows-x64-debug/Com.lib
>> "Installing created executable ../../../bin/windows-x64-debug/snc.exe"
>> ../Makefile:59: PATH_FILTER is deprecated; used for ../../../bin/windows-x64-debug/lemon.exe
>> ../../../bin/windows-x64-debug/lemon.exe o=. -g ../snl.lem > ../O.Common/snl.bnf
>> '..' is not recognized as an internal or external command,
>> operable program or batch file.
>> ../Makefile:59: recipe for target '../O.Common/snl.bnf' failed
>> make[3]: *** [../O.Common/snl.bnf] Error 1
>> make[3]: Leaving directory 'C:/dev/seq-2.2.3/src/snc/O.windows-x64-debug'
>> c:/dev/epics-base/configure/RULES_ARCHS:61: recipe for target 'install.windows-x64-debug' failed
>> make[2]: *** [install.windows-x64-debug] Error 2
>> make[2]: Leaving directory 'C:/dev/seq-2.2.3/src/snc'
>> c:/dev/epics-base/configure/RULES_DIRS:88: recipe for target 'snc.install' failed
>> make[1]: *** [snc.install] Error 2
>> make[1]: Leaving directory 'C:/dev/seq-2.2.3/src'
>> c:/dev/epics-base/configure/RULES_DIRS:88: recipe for target 'src.install' failed
>> make: *** [src.install] Error 2
>> make: Leaving directory 'C:/dev/seq-2.2.3'
>>
>> resulting in an empty snl.bnf    I can create a correct snl.bnf by manually running
>>
>>     ..\..\..\bin\windows-x64-debug\lemon.exe o=. -g ..\snl.lem > ..\O.Common\snl.bnf
>>
>> from my O.windows-x64-debug directory. If I happen to type instead
>>
>>     ../../../bin/windows-x64-debug/lemon.exe
>>
>> I get a " '..' is not recognized " error similar to above, which is a clue to what is happening. The problem seems to be caused by redirecting the output of the lemon command. The relevant Makefile line is:
>>
>> $(COMMON_DIR)/snl.bnf: snl.lem
>> 	$(LEMON) o=. -g $< > $@
>>
>> if i remove the "> $@" and just create a blank snl.bnf
>>
>> $(COMMON_DIR)/snl.bnf: snl.lem
>> 	$(LEMON) o=. -g $<
>> 	@echo > $(COMMON_DIR)/snl.bnf
>>
>> then the build runs fine. If I use the windows native path instead of $(LEMON) in the original line with output redirection, it is fine too. So it seems that redirecting the output of the lemon command stops correct pathname translation on $(LEMON) prior to passing the command to windows, which I guess is a "make" bug?
>>
>> Regards,
>>
>> Freddie
>>
>>


-- 
"Make it so they have to reboot after every typo." ― Scott Adams

Attachment: signature.asc
Description: OpenPGP digital signature


Replies:
Re: Building SEQ 2.2.3, Windows, EPICS Base 3-15-2 Kevin Peterson
References:
Re: Building SEQ 2.2.3, Windows, EPICS Base 3-15-2 Kevin Peterson

Navigate by Date:
Prev: Re: asyn4-30 problem Hinxx
Next: RE: Autosave ignores PVs starting with some characters Mooney, Tim M.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Building SEQ 2.2.3, Windows, EPICS Base 3-15-2 Kevin Peterson
Next: Re: Building SEQ 2.2.3, Windows, EPICS Base 3-15-2 Kevin Peterson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 07 Sep 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·