import ctypes
import os
import pvxslibs.path
from epicscorelibs import ioc
from setuptools_dso.runtime import find_dso
pvxsIoc = ctypes.CDLL(find_dso("pvxslibs.lib.pvxsIoc"), ctypes.RTLD_GLOBAL)
os.environ.setdefault("PVXS_QSRV_ENABLE", "YES")
orig_dbld = ioc.dbLoadDatabase
def dbLoadDatabase(dbd, dbdpath, substitutions):
if dbd == b"qsrv.dbd":
orig_dbld(b"pvxsIoc.dbd", pvxslibs.path.dbd_path.encode(), None)
elif dbd == b"PVAServerRegister.dbd":
pass
else:
orig_dbld(dbd, dbdpath, substitutions)
ioc.dbLoadDatabase = dbLoadDatabase
if __name__ == "__main__":
ioc.main()
But obviously this is a hack.
Maybe the best way to support this is to pass in a list of tuples of (dbd, dbdpath) to epicscorelibs.ioc.main, defaulting to the existing qsrv.dbd and PVAServerRegister.dbd, and then call it with a different set in pvxslibs.ioc?
Shall I make a PR for this? Or is there a better way?
I have monkeypatched this like so:
But obviously this is a hack.
Maybe the best way to support this is to pass in a list of tuples of
(dbd, dbdpath)
toepicscorelibs.ioc.main
, defaulting to the existingqsrv.dbd
andPVAServerRegister.dbd
, and then call it with a different set inpvxslibs.ioc
?Shall I make a PR for this? Or is there a better way?