121def loadConfigurableDb():
122 """Helper function to load all ConfigurableDb files (modules) holding
123 informations about Configurables
124 """
125 import os
126 import sys
127 from itertools import chain
128 from os.path import join as path_join
129
130 from GaudiPluginService.cpluginsvc import GAUDI_DEFAULT_PLUGIN_PATH
131
132 log.debug("loading confDb files...")
133 nFiles = 0
134 pathvars = (
135 ["GAUDI_PLUGIN_PATH", "DYLD_LIBRARY_PATH"]
136 if sys.platform == "darwin"
137 else ["GAUDI_PLUGIN_PATH", "LD_LIBRARY_PATH"]
138 )
139 ignored_files = set(os.environ.get("CONFIGURABLE_DB_IGNORE", "").split(","))
140 for path in chain(
141 [GAUDI_DEFAULT_PLUGIN_PATH],
142 *[os.getenv(pv, "").split(os.pathsep) for pv in pathvars],
143 ):
144 if not path or not os.path.isdir(path):
145 continue
146 log.debug("walking in [%s]...", path)
147 confDbFiles = [
148 f
149 for f in [
150 path_join(path, f) for f in os.listdir(path) if f.endswith(".confdb")
151 ]
152 if os.path.isfile(f) and f not in ignored_files
153 ]
154
155 mergedConfDbFiles = [f for f in confDbFiles if f.endswith("_merged.confdb")]
156 if mergedConfDbFiles:
157
158 confDbFiles = mergedConfDbFiles
159
160 for confDb in confDbFiles:
161 log.debug("\t-loading [%s]...", confDb)
162 try:
163 cfgDb._loadModule(confDb)
164 except Exception as err:
165 log.warning("Could not load file [%s] !", confDb)
166 log.warning("Reason: %s", err)
167 nFiles += 1
168 log.debug("loading confDb files... [DONE]")
169 nPkgs = len(set([k["package"] for k in cfgDb.values()]))
170 log.debug("loaded %i confDb packages", nPkgs)
171 return nFiles
172
173