EPICS Home

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  <20172018  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  2016  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: dbVerify removed from EPICS 3.16
From: Michael Davidsaver <[email protected]>
To: [email protected], [email protected], [email protected]
Date: Wed, 20 Sep 2017 12:09:54 -0500
On 09/20/2017 01:43 AM, [email protected] wrote:
> Hmm.  An external linting problem doesn't fit my application very well.

True.  I've used this as a step between build (msi expansion) and load.

> How do you validate field assignments in your application, Michael?  I need to be able to do something like the following:

So far only link fields (where I usually typo).  Field types are known,
so this could be done for other fields.  However, it wouldn't give quite
the same assurance as it would be different code (pypdb doesn't depend
on Base).  So I'm not sure if this would be good enough for you.

>>>> a = records.ao('TEST')
>>>> a.DRVL = 'wrong'
> AssertionError: Can't write "test" to field DRVL: not a number
>>>> a.DRVL = 123
>>>> a.SCAN = 'wrong'
> AssertionError: Can't write "wrong" to field SCAN: Not a valid menu choice
>>>> a.SCAN = '.1 second'
>>>>
> 
> 
> From: Michael Davidsaver [mailto:[email protected]]
>> If you're interested in static validation of db/dbd files, you might
>> have a look at my 'dbdlint' script.  This can either validate individual
>> files for basic syntax (--partial), or a full database w/ recordtype
>> defs (--full).
>>
>> This includes a handy (to me) feature to detect unintentional "external"
>> links (aka typos).
>>
>>> $ cat test.db
>>> #: external("other.VAL")
>>>
>>> record(longin, "target") {
>>>     field(INP, "other")
>>> }
>>>
>>> record(longin, "ok") {
>>>     field(INP, "targt") # oops
>>> }
>>> $ ./dbdlint -F -Wall /path/to/base/dbd/softIoc.dbd test.db
>>> WARNING test.db:8 ext-link - DB/CA Link to outside PV 'targt.VAL'
>>
>>
>>
>> https://github.com/epicsdeb/pypdb/blob/master/documentation/dbdlint.rst
>> https://github.com/epicsdeb/pypdb/blob/master/dbdlint.1.txt
>> https://github.com/epicsdeb/pypdb
>>
>>
>> On 09/19/2017 01:00 PM, Andrew Johnson wrote:
>>> Hi Michael,
>>>
>>> On 09/19/2017 04:34 AM, [email protected] wrote:
>>>
>>>> I have just discovered that the dbVerify function has been removed from
>>>> EPICS 3.16.  I use the functionality provided by this function to
>>>> validate databases as they are statically constructed (in iocbuilder
>>>> and epicsdbbuilder).  At present DLS is still using EPICS 3.14, so I am
>>>> only learning about this from external reports.
> 
> 


References:
dbVerify removed from EPICS 3.16 michael.abbott
Re: dbVerify removed from EPICS 3.16 Andrew Johnson
Re: dbVerify removed from EPICS 3.16 Michael Davidsaver
RE: dbVerify removed from EPICS 3.16 michael.abbott

Navigate by Date:
Prev: Re: Ideas / Suggestions for the future of VME-CPU Operating Systems Michael Davidsaver
Next: Re: PointGrey Firmware Mark Engbretson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: dbVerify removed from EPICS 3.16 michael.abbott
Next: RE: dbVerify removed from EPICS 3.16 michael.abbott
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024