HI John,
I took a second look at my epics/base/configure/RULES.Db file and I see that I changed it (tsk!) to add more to DBFLAGS just like is done to DBDFLAGS. The difference is here:
http://www.slac.stanford.edu/cgi-wrap/cvsweb/epics/base/configure/RULES.Db.diff?r1=1.1.1.4&r2=1.2&cvsroot=Spear3
So your RULES.Db is not broken but you have to do things differently without this change. I apologize for not catching this.
Stephanie
________________________________
From: John Dobbins [mailto:[email protected]]
Sent: Tue 4/15/2008 1:38 PM
To: Allison, Stephanie
Cc: EPICS Tech-Talk
Subject: Re: multiple levels of substitution in msi
Stephanie,
I haven't changed any build RULES. I looked at several working IOCs that use
substitution and they never seem to call MSI with the /db directories from
device support, so I definitely do not get the DBFLAGS you describe.
e.g.
make[3]: Entering directory
`/a/erp101/nfs/erl/erp/epics/R3.14.9/ioc/l0_phase1a/l0_phase1aApp/Db/O.linux-x86'
Inflating database from ../eos900.substitutions ../eos900.template
msi -I. -I.. -I../O.Common -S../eos900.substitutions ../eos900.template > msi.tmp
mv msi.tmp ../O.Common/eos900.db
Inflating database from ../MAGNET.substitutions ../MAGNET.template
msi -I. -I.. -I../O.Common -S../MAGNET.substitutions ../MAGNET.template > msi.tmp
mv msi.tmp ../O.Common/MAGNET.db
Inflating database from ../MAGPOL.substitutions ../MAGPOL.template
msi -I. -I.. -I../O.Common -S../MAGPOL.substitutions ../MAGPOL.template > msi.tmp
mv msi.tmp ../O.Common/MAGPOL.db
Inflating database from ../MAGPS.substitutions ../MAGPS.template
msi -I. -I.. -I../O.Common -S../MAGPS.substitutions ../MAGPS.template > msi.tmp
There aren't any templates in these device support /db directories so it has
never been as issue.
Any ideas how could my build rules could get broken?
John
Allison, Stephanie wrote:
> Hi John,
>
> Your rule for inflating the database isn't properly using DBFLAGS so it doesn't have the directories with "db" in the include list. Is it possible you are using a rule that is different from the one in base/configure/RULES.Db?
>
> Here is an example from my build (I have several modules included in my RELEASE which is why the long list of potential areas to find database files):
>
> Inflating database from ../evrEventAll.substitutions
> /nfs/slac/g/lcls/build/epics/extensions/extensions-R3-14-8-2/bin/linux-x86/msi
> -I. -I.. -I ../../../../db -I /nfs/slac/g/lcls/build/epics/modules/generalTime/generalTime-R1-2-1/db
> -I /nfs/slac/g/lcls/build/epics/modules/sSubRecord/sSubRecord-R1-0-1/db
> -I /nfs/slac/g/lcls/build/epics/modules/miscUtils/miscUtils-R1-0-1/db
> -I /nfs/slac/g/lcls/build/epics/base/base-R3-14-8-2-lcls2/db
> -I../O.Common -S../evrEventAll.substitutions > msi.tmp
> mv msi.tmp ../O.Common/evrEventAll.db
>
> If you are using your own rule, you may need to add the "db" in front of the file name. For example:
>
> file db/firstAll.db
> {
> pattern { DEVICE }
> { device1 }
> { device2 }
> ...
> {device30}
> }
>
> Stephanie
>
>> -----Original Message-----
>> From: John Dobbins [mailto:[email protected]]
>> Sent: Tuesday, April 15, 2008 12:21 PM
>> To: Allison, Stephanie
>> Cc: EPICS Tech-Talk
>> Subject: Re: multiple levels of substitution in msi
>>
>> Stephanie,
>>
>> Using your suggestion (from January) I tried unsuccessfully
>> to get MSI to do
>> multiple levels of substitution. I am using 3.14.9 but I
>> assume that is not the
>> issue.
>>
>> Setup:
>>
>> #1 xxx
>> #2 Makefile
>> #3 configure/
>> #4 iocBoot/
>> #5 xxxApp/
>> #6 Makefile
>> #7 Db/
>> #8 first/
>> #9 Makefile
>> #10 firstAll.substitutions
>> #11 firstAll.template
>> #12 second/
>> #13 Makefile
>> #14 second.substitutions
>> #15 src/
>>
>>
>> Fails with:
>>
>> Inflating database from ../second.substitutions
>> msi -I. -I.. -I../O.Common -S../second.substitutions > msi.tmp
>> Could not open firstAll.db
>>
>>
>> firstAll.db exists but not in any of the places MSI is
>> looking. How do I get
>> MSI to find it?
>>
>> Details:
>>
>> #6 Makefile is:
>>
>> TOP=../..
>> include $(TOP)/configure/CONFIG
>>
>> DIRS += first
>> DIRS += second
>>
>> include $(TOP)/configure/RULES_DIRS
>>
>>
>> #9 Makefile is:
>>
>> TOP=../../..
>> include $(TOP)/configure/CONFIG
>>
>> DB = firstAll.db
>>
>> include $(TOP)/configure/RULES
>>
>> #13 Makefile is:
>>
>> TOP=../../..
>> include $(TOP)/configure/CONFIG
>>
>> DB = second.db
>>
>> include $(TOP)/configure/RULES
>>
>>
>> Thanks,
>>
>> John Dobbins
>> Cornell University
>> Lab for Elementary Particle Physics
>>
>>
>>
>>
>>
>>
>>
>>
>> Allison, Stephanie wrote:
>>> Hi John,
>>>
>>>> Is there a way to get MSI to deal with multiple levels of
>>>> substitution?
>>> I divide my Db directory into sub-directories and build
>> them in the proper order. For example:
>>> xxxApp/Db/first contains Makefile, first.db, and
>> firstAll.substitions:
>>> Makefile has:
>>> DB += firstAll.db
>>> firstAll.substitutions which looks something like this:
>>> file first.db
>>> {
>>> pattern { DEV , CARD , NAME , ID
>> ,P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,VME}
>>> { $(DEVICE) , 0 , NAME1 , 1 , 0, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 0 , 0 , 0 , 0 , 1 }
>>> { $(DEVICE) , 0 , NAME2 , 2 , 1, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 0 , 0 , 0 , 0 , 1 }
>>> ...
>>> { $(DEVICE) , 0 , NAME15 , 12 , 0, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 0 , 0 , 0 , 1 , 1 }
>>> }
>>>
>>>
>>> xxxApp/Db/second contains Makefile, second.substitutions:
>>> Makefile has:
>>> DB += second.db
>>> second.substitutions looks something like this:
>>> file firstAll.db
>>> {
>>> pattern { DEVICE }
>>> { device1 }
>>> { device2 }
>>> ...
>>> {device30}
>>> }
>>>
>>> and xxxApp/Db/Makefile looks like:
>>> TOP = ../..
>>> include $(TOP)/configure/CONFIG
>>> # first must be first since second will need for the
>> .db file created by first
>>> DIRS += first
>>> DIRS += second
>>> include $(TOP)/configure/RULES_DIRS
>>>
>>> The RULES.Db files that come with epics 3.14.8.2 will do
>> the MSI properly - I don't think we had to change RULES.Db for this.
>>> If you don't like sub-directories, just create more *Db
>> directories under xxxApp:
>>> xxxApp/CommonDb1
>>> xxxApp/CommonDb2
>>> xxxApp/Db (which depends on CommonDb1 and CommonDb2
>> being built first)
>>> xxxApp/Makefile must enforce proper build order
>>>
>>> Note there is a bug in the RULES somewhere that requires
>> the "{" that comes after the "file xxxx.db" to be on the next
>> line if xxxx.db comes from another module listed in your RELEASE file.
>>> Doesn't work:
>>> file xxxx.db {
>>> Works:
>>> file xxxx.db
>>> {
>>>
>>> Hope this helps more than confuses...
>>>
>>> Stephanie Allison
- References:
- multiple levels of substitution in msi John Dobbins
- RE: multiple levels of substitution in msi Allison, Stephanie
- Re: multiple levels of substitution in msi John Dobbins
- RE: multiple levels of substitution in msi Allison, Stephanie
- Re: multiple levels of substitution in msi John Dobbins
- Navigate by Date:
- Prev:
Re: multiple levels of substitution in msi John Dobbins
- Next:
Re: edm font file Emmanuel Mayssat
- 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: multiple levels of substitution in msi John Dobbins
- Next:
Re: multiple levels of substitution in msi John Dobbins
- 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
|