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

Subject: Re: Calling an iocsh "sub-script"
From: Ben Franksen <[email protected]>
To: [email protected]
Date: Thu, 14 Oct 2010 02:19:40 +0200
On Mittwoch, 13. Oktober 2010, J. Lewis Muir wrote:
> On 10/13/10 10:08 AM, Josh Stein wrote:
> > I would like to point out one warning with these embedded scripts -
> > there is a very real possibility of breaking some higher level
> > tools which rely on 'crawling' the startup command files for
> > information. This very issue has just cropped up here at APS when
> > the st.cmd structure of a number of our production IOCs was cleaned
> > up during a recent 3.14 upgrade.
> >
> > In essence, some of our crawlers were unable to parse relevant tags
> > since they failed to show up in the st.cmd file itself as those
> > tags were moved to one or more of the 'sub-scripts'.
> >
> > For now, the crawlers at APS are being re-written to follow the
> > indirection. This is yet another example of how fragile the system
> > structure can grow over time; the hooks into various parts actually
> > increase the risk of things breaking as time progresses.
>
> I don't think there should be anything wrong w/ using features
> supported in the EPICS IOC shell.  The problem is the crawlers.  The
> crawlers were fragile; they made assumptions about the st.cmd file. 
> To solve a problem relatively quickly, sometimes this is OK, but then
> in a case like this, one has to go back and fix it.  It could still
> be the right decision.  Maybe one just needs some test cases to
> ensure the crawler works for the cases needed or some checking script
> to ensure the crawler is still working.
>
> A robust crawler would actually be able to parse the IOC shell input,
> constructing an abstract syntax tree or converting the input into
> some other useful form, dealing w/ variable substitutions, etc., so
> the task of the crawler could be implemented correctly.  This is
> obviously much more work.

Reverse engineering is always an approximation and especially in this 
case. Note that the startup file can call functions written in C. Do 
you want to reverse engineer the C code, too? If not, than there is 
absolutely no guarantee possible; making assumptions is the *only* 
practical way to get anything that works in most cases. When it breaks 
you fix it by adding another special case. Of course, over time this 
process of improving the crawlers, refining your assumptions, etc will 
turn them into a monster with a million special cases that nobody wants 
to maintain.

This way lies madness.

Cheers
Ben
-- 
"Never confuse what is natural with what is habitual."
                                   -- attributed to Mahatma Gandhi

Replies:
Re: Calling an iocsh "sub-script" J. Lewis Muir
References:
Calling an iocsh "sub-script" Angus Gratton
Re: Calling an iocsh "sub-script" Josh Stein
Re: Calling an iocsh "sub-script" J. Lewis Muir

Navigate by Date:
Prev: RE: problem with tpmac-3-7 (loading IOC munch file results in undefined symbol error) Jay Steele
Next: Re: Calling an iocsh "sub-script" Stephen Lewis
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Calling an iocsh "sub-script" J. Lewis Muir
Next: Re: Calling an iocsh "sub-script" J. Lewis Muir
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 14 Oct 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·