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  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026 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  2025  <2026
<== Date ==> <== Thread ==>

Subject: Re: Create record name manifest during build
From: "Johnson, Andrew N. via Tech-talk" <tech-talk at aps.anl.gov>
To: David Bracey <dbracey at fnal.gov>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 23 Jul 2026 20:52:48 +0000
Hi Dave,

The only place that defines your full list of variable values and which .db​ files they apply to is your st.cmd​ file, plus any other .cmd​ or .iocsh​ files that it runs. EPICS only comes with one parser which can extract that information out of the st.cmd file — the IOC shell, as it boots the IOC. As Mark Rivers rightly pointed out, the IOC can output its complete list of record names to a file by redirecting the dbl​ command output, and that's the approach we use here for populating our CA name-servers.

If boot time is too late for your system design though another such parser does exist. It isn't normally used at build time, but might be modified to do that. Search for references to IRMIS in the tech-talk archives, IRMIS has its own crawler for parsing st.cmd files and database template files. It was designed to populate a relational database with the complete set of record names and field values for all IOCs in the control system, and it also parses other control system files that name PVs such as MEDM displays, alarm handler configurations and SNL programs, i.e. some of the other places you need to change if you rename or delete records from an IOC's database.

We still use IRMIS here at APS for exactly that and have updated it to support EPICS 7, but I don't know if any other labs are still using it. Some of the online documentation may no longer be available, but this link provides the Agenda and slides from an IRMIS Collaboration meeting held in 2005 which should give you some ideas of its capabilities. We should be able to provide you a copy of our crawler code on request.

- Andrew

-- 
Complexity comes for free, Simplicity you have to work for.

On 7/23/26, 3:27 PM, "Tech-talk" <tech-talk-bounces at aps.anl.gov> wrote:

Very slick, you guys!  So simple...

But I think we can’t wait until we launch the IOC - we may need to do it at build time.

From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Pierrick Hanlet via Tech-talk <tech-talk at aps.anl.gov>
Date: Thursday, July 23, 2026 at 3:23 PM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Re: Create record name manifest during build

Or, in our case "pvxsl".  Both work.

On 7/23/26 15:18, Mark Rivers via Tech-talk wrote:
Hi David,

An alternative 1 line solution is add this line to the end of the IOC startup script:

dbl > myIOC_record_list.txt

Mark


From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of David Bracey via Tech-talk <tech-talk at aps.anl.gov>
Sent: Thursday, July 23, 2026 3:12 PM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Create record name manifest during build
 
Some of our IOC projects would like to use macro substitutions at their dbLoadRecords invocations in st.cmd:

    dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/MyRecords.db, “P=XYZ”)

This means that the *.db files created by the build will have incompletely substituted record names after the build completes.

We have tooling that scrapes record names from the build-product *.db files, but the above would cause it to not see the final record names.

I would like to have the build create a manifest file that contains the fully substituted record names, basically by using grep, awk, etc. to parse the source db filename/path and the substitution tokens, and then call the perl script that does the substitutions, producing some file that is just a list of the fully substituted record names.

However, I don’t know how to make an EPICS Makefile do such an arbitrary thing.  

May I please get some guidance as to a smart way to do this?

Dave Bracey
Fermi National Accelerator Laboratory


-- Pierrick Hanlet Fermi National Accelerator Accelerator Front End Controls +1-630-840-5555 -- lab +1-312-687-4980 -- mobile "Whether you think you can or think you can't, you're right" -- Henry Ford


Replies:
Re: Create record name manifest during build Michael Davidsaver via Tech-talk
References:
Create record name manifest during build David Bracey via Tech-talk
Re: Create record name manifest during build Mark Rivers via Tech-talk
Re: Create record name manifest during build Pierrick Hanlet via Tech-talk
Re: Create record name manifest during build David Bracey via Tech-talk

Navigate by Date:
Prev: Re: Create record name manifest during build David Bracey via Tech-talk
Next: Re: Create record name manifest during build Michael Davidsaver 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  2025  <2026
Navigate by Thread:
Prev: Re: Create record name manifest during build David Bracey via Tech-talk
Next: Re: Create record name manifest during build Michael Davidsaver 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  2025  <2026
ANJ, 23 Jul 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·