Hello,
We are currently experiencing an issue at Sirius when instantiating some template files that use the substitute function.
We have noticed that several files use the substitute function, which is processed by msi during the build process to generate database (.db) files. However, these template files are also being used directly by the IOC.
Initially, I thought that Diamond was generating the databases during the build process. However, after looking at the Makefile, I noticed that the template files are not installed in a way that would allow them to be processed by msi beforehand.
I also noticed that ibek-support, which is used by epics-container, is using the same template files that contain the substitute function:
https://github.com/epics-containers/ibek-support/blob/53201753b0d6f3b7358deb8fecbcc2c04bc5d426/pmac/pmac.ibek.support.yaml#L980
In this case, I believe this is causing errors during IOC startup, since the dbLoadTemplate function does not process the substitute function. The substitution needs to be performed beforehand by msi during the build process.
Therefore, would it be more appropriate to:
- remove the use of
substitute from these template files; or
- modify the
Makefile so that the .db files are generated during the build process using msi, and then installed so that they can be loaded directly by the IOC?
Is there a specific reason for keeping substitute in the templates, or would it be possible to adopt one of these approaches?
Hello,
We are currently experiencing an issue at Sirius when instantiating some template files that use the
substitutefunction.We have noticed that several files use the
substitutefunction, which is processed bymsiduring the build process to generate database (.db) files. However, these template files are also being used directly by the IOC.Initially, I thought that Diamond was generating the databases during the build process. However, after looking at the
Makefile, I noticed that the template files are not installed in a way that would allow them to be processed bymsibeforehand.I also noticed that
ibek-support, which is used byepics-container, is using the same template files that contain thesubstitutefunction:https://github.com/epics-containers/ibek-support/blob/53201753b0d6f3b7358deb8fecbcc2c04bc5d426/pmac/pmac.ibek.support.yaml#L980
In this case, I believe this is causing errors during IOC startup, since the
dbLoadTemplatefunction does not process thesubstitutefunction. The substitution needs to be performed beforehand bymsiduring the build process.Therefore, would it be more appropriate to:
substitutefrom these template files; orMakefileso that the.dbfiles are generated during the build process usingmsi, and then installed so that they can be loaded directly by the IOC?Is there a specific reason for keeping
substitutein the templates, or would it be possible to adopt one of these approaches?