Experimental Physics and Industrial Control System
Hi Simon,
thanks for the detailed explanation. It works unfortunately only partially. The Perl script now gets called and the template file is generated and installed.
Great! But...
Now it complains that there is no rule for db.template.d to be created. So the dependency never gets created. As it bails out from O.linux.x86_64 I guess that there is a part missing in the rule:
> db.template$(DEP):
> @echo $(COMMON_DIR)/db.db: ../Makefile > $@
After some trial and error I found a solution that works:
db.template$(DEP):
@echo $(COMMON_DIR)/db.template: $(COMMONDEP_TARGET)/Makefile > $@
For my approach only the first solution is relevant. I need a template file that contains variables that can be replaced during IOC startup.
Cheers,
Jörn
Am Dienstag, 6. Februar 2024, 14:48:28 CET schrieb Simon Rose:
> Hi Jörn -
>
> There are two solutions you could try, depending on preference. You could instead define your rule to generate the .template file as
>
> $(COMMON_DIR)/db.template:
> perl script.pl
>
> db.template$(DEP):
> @echo $(COMMON_DIR)/db.db: ../Makefile > $@
>
> This would generate the .template file as needed, within the O.Common directory, which would then be installed in as db/db.template. Note that you do need the second target as well, as EPICS base expects a file that describes the dependencies of generated files.
>
> If, on the other hand, you want to simply create a .db file in the end, you could also do:
>
> DB += db.db
>
> db.template:
> perl script.pl
>
> In this case, the regular EPICS build rules to convert a .template file to a .db file will take place, and you will get a .db file only installed.
>
> In the end, it depends on whether or not you case about having specifically a .template file or a .db file installed.
>
> Cheers,
>
> Simon
>
> On 2024-02-06, 14:25, "Tech-talk on behalf of Jörn Dreyer via Tech-talk" <tech-talk-bounces at aps.anl.gov <mailto:tech-talk-bounces at aps.anl.gov> on behalf of tech-talk at aps.anl.gov <mailto:tech-talk at aps.anl.gov>> wrote:
>
>
> Hi,
>
>
> I'm working on a device which has around 20.000 channels which have mostly very similar names. Therefor I created a perl script that auto generates some template files to be used by the IOC. How can I define a rule in the Db/Makefile that calls this script?
>
>
> A simple
>
>
> DB += db.template
>
>
> db.template:
> perl script.pl
>
>
> does not work. It complains that there is no rule to create ../O.Common/db.template.
>
>
> Regards,
>
>
> Jörn
>
- References:
- Build system issue Jörn Dreyer via Tech-talk
- Re: Build system issue Simon Rose via Tech-talk
- Navigate by Date:
- Prev:
Re: EPICS on FPGA Hill, Jeff via Tech-talk
- Next:
Re: EPICS on FPGA Kazuro FURUKAWA via Tech-talk
- 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: Build system issue Simon Rose via Tech-talk
- Next:
Seeking EPICS Database (.db) File Parser/Generator Aqeel Alshafei - STFC UKRI via Tech-talk
- 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>