141 from optparse
import OptionParser
142 parser = OptionParser(
143 prog=os.path.basename(sys.argv[0]),
144 usage=
"%prog [options] <PackageName> [<Module1> ...]")
151 "output file for confDb data [default = '../genConf/<PackageName>_user_confDb.py']." 158 help=
"root directory of the python modules [default = '../python'].")
163 help=
"print some debugging information")
167 help=
"print more debugging information")
168 parser.set_defaults(root=os.path.join(
"..",
"python"))
170 opts, args = parser.parse_args()
173 log_level = logging.DEBUG
175 log_level = logging.VERBOSE
177 log_level = logging.INFO
if os.environ.get(
178 'VERBOSE')
else logging.WARNING
180 format=
"%(levelname)s: %(message)s",
185 parser.error(
"PackageName is required")
187 package_name = args.pop(0)
189 usingConvention =
False 192 args = [package_name +
".Configuration"]
193 usingConvention =
True 195 genConfDir = os.path.join(
"..", os.environ.get(
"CMTCONFIG",
""),
"genConf")
196 if not os.path.exists(genConfDir):
197 genConfDir = os.path.join(
"..",
"genConf")
200 outputfile = os.path.join(genConfDir, package_name +
'_user.confdb')
202 outputfile = opts.output
207 import Gaudi.Configurables
208 Gaudi.Configurables.ignoreMissingConfigurables =
True 217 sys.path.insert(0, genConfDir)
218 sys.path.insert(0, os.path.join(
"..",
"python"))
219 localConfDb = os.path.join(genConfDir, package_name,
220 package_name +
'.confdb')
221 if os.path.exists(localConfDb):
222 cfgDb._loadModule(localConfDb)
224 package_module = __import__(package_name)
225 package_module.__path__.insert(
226 0, os.path.join(genConfDir, package_name))
236 mod, root=opts.root, mayNotExist=usingConvention)
240 "Cannot import module %r:\n%s", mod,
241 traceback.format_exc().rstrip())
248 configurable=m, package=
'None', module=
'None', lib=
'None')
249 elif not usingConvention:
251 "Specified module %r does not contain ConfigurableUser specializations",
255 logging.info(
"ConfigurableUser found:\n%s", pformat(cus))
257 output =
"""## -*- ascii -*- 258 # db file automatically generated by %s on: %s 259 """ % (parser.prog, time.asctime())
263 output +=
"%s %s %s\n" % (mod,
'None', cu)
266 output +=
"## %s\n" % package_name
267 elif usingConvention:
268 logging.info(
"No ConfigurableUser found")
269 output = (
"# db file automatically generated by %s on: %s\n" 270 "# No ConfigurableUser specialization in %s\n") % (
271 parser.prog, time.asctime(), package_name)
273 logging.error(
"No ConfigurableUser specialization found")
277 output_dir = os.path.dirname(outputfile)
279 logging.info(
"Creating directory %r", output_dir)
280 os.makedirs(output_dir, 0o755)
281 except OSError
as err:
283 if err.errno == errno.EEXIST:
290 logging.verbose(
"Writing confDb data to %r", outputfile)
291 open(outputfile,
"w").write(output)
def getConfigurableUsers(modulename, root, mayNotExist=False)