-----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