Experimental Physics and Industrial Control System
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
>
> Allison,
>
> 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
>
- Replies:
- Re: multiple levels of substitution in msi John Dobbins
- Re: multiple levels of substitution in msi John Dobbins
- 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
- Navigate by Date:
- 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
2025
- 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
2025