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  <20192020  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  <20192020 
<== Date ==> <== Thread ==>

Subject: Re: Inter-module dependency between stream and calc
From: Ralph Lange via Tech-talk <tech-talk@aps.anl.gov>
To: EPICS Tech Talk <tech-talk@aps.anl.gov>
Date: Mon, 18 Mar 2019 17:28:11 +0100
I guess the only sane way to do that is to split up whatever scalc related is in stream.dbd into a separate stream-scalc.dbd file.

Then a "simple" IOC would

myioc_DBD += stream.dbd
myioc_LIBS += stream

and the "full" IOC would

myioc_DBD += calc.dbd
myioc_DBD += stream.dbd
myioc_DBD += stream-calc.dbd  
myioc_LIBS += calc
myioc_LIBS += stream  

Cheers,
~Ralph



On Mon, 18 Mar 2019 at 17:15, Konrad, Martin via Tech-talk <tech-talk@aps.anl.gov> wrote:
Hi,
I'm wondering how to handle dependencies between support modules the
right way (TM). Let's say I have the following chain of dependencies:

myIOC -> stream -> calc

Background: StreamDevice includes support for the sCalcRecord. Since I'm
building stream and calc as shared libraries that are shipped as
pre-canned Debian packages I want to build them with all their features
enabled.

The problem: myIOC does not make use of sCalcRecords so I only add the
following lines to its Makefile:

myioc_DBD += stream.dbd
myioc_LIBS += stream

The IOC builds fine but a careful look reveals that dbdExpand.pl prints
the following message:

"Device using undefined record type 'scalcout', place-holder created"

When I try to run the IOC it fails to load the DBD file:

dbLoadDatabase("../../dbd/myioc.dbd",0,0)
Declaration of recordtype(scalcout) preceeded full definition.
Error at or before "}" in file "../../dbd/myioc.dbd" line 5335

The relevant lines are:

5334 recordtype(scalcout) {
5335 }
5336 device(scalcout, INST_IO, devscalcoutStream, "stream")

I understand that the scalcout record not being defined anywhere is a
problem. So I use the following lines in the IOC's Makefile and
everything works as intended:

myioc_DBD += calc.dbd
myioc_DBD += stream.dbd
myioc_LIBS += calc
myioc_LIBS += stream

However, I'm wondering if there is a way I can build stream without
forcing IOC engineers to include a DBD file they aren't using. In other
words: Is there a way to include the relevant calc stuff into stream.dbd
without causing problems on IOCs that are using calc directly?

Any help is appreciated,

Martin

P.S.: I'm using StreamDevice 2.8.8, calc 3.7.1 and Base 3.15.6.

--
Martin Konrad
High Performance Controls Team Leader
Facility for Rare Isotope Beams
Michigan State University
640 South Shaw Lane
East Lansing, MI 48824-1321, USA
Tel. 517-908-7253
Email: konrad@frib.msu.edu

References:
Inter-module dependency between stream and calc Konrad, Martin via Tech-talk

Navigate by Date:
Prev: Inter-module dependency between stream and calc Konrad, Martin via Tech-talk
Next: RE: drvAsynIPPort Not receiving broadcast UDP [SEC=UNCLASSIFIED] Mark Rivers 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  <20192020 
Navigate by Thread:
Prev: Inter-module dependency between stream and calc Konrad, Martin via Tech-talk
Next: Re: Inter-module dependency between stream and calc Zimoch Dirk (PSI) 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  <20192020 
ANJ, 19 Mar 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·