157 from optparse
import OptionParser
158 parser = OptionParser(
159 prog=os.path.basename(sys.argv[0]),
160 usage=
"%prog [options] <PackageName> [<Module1> ...]")
167 "output file for confDb data [default = '../genConfDir/<PackageName>_user_confDb.py']."
174 help=
"root directory of the python modules [default = '../python'].")
179 help=
"print some debugging information")
183 help=
"print more debugging information")
188 "build directory where to look for .confdb files (search all subdirectories)"
190 parser.set_defaults(root=os.path.join(
"..",
"python"))
192 opts, args = parser.parse_args()
195 log_level = logging.DEBUG
197 log_level = logging.VERBOSE
199 log_level = logging.INFO
if os.environ.get(
200 'VERBOSE')
else logging.WARNING
202 format=
"%(levelname)s: %(message)s",
207 parser.error(
"PackageName is required")
209 package_name = args.pop(0)
211 usingConvention =
False
214 args = [package_name +
".Configuration"]
215 usingConvention =
True
217 genConfDir = os.path.join(
"..", os.environ.get(
"CMTCONFIG",
""),
219 if not os.path.exists(genConfDir):
220 genConfDir = os.path.join(
"..",
"genConfDir")
223 outputfile = os.path.join(genConfDir, package_name +
'_user.confdb')
225 outputfile = opts.output
230 import Gaudi.Configurables
231 Gaudi.Configurables.ignoreMissingConfigurables =
True
240 sys.path.insert(0, genConfDir)
241 sys.path.insert(0, os.path.join(
"..",
"python"))
242 localConfDb = os.path.join(genConfDir, package_name,
243 package_name +
'.confdb')
244 if os.path.exists(localConfDb):
245 cfgDb._loadModule(localConfDb)
247 package_module = __import__(package_name)
248 package_module.__path__.insert(
249 0, os.path.join(genConfDir, package_name))
259 mod, root=opts.root, mayNotExist=usingConvention)
263 "Cannot import module %r:\n%s", mod,
264 traceback.format_exc().rstrip())
271 configurable=m, package=
'None', module=
'None', lib=
'None')
272 elif not usingConvention:
274 "Specified module %r does not contain ConfigurableUser specializations",
278 logging.info(
"ConfigurableUser found:\n%s", pformat(cus))
280 output =
"""## -*- ascii -*-
281 # db file automatically generated by %s on: %s
282 """ % (parser.prog, time.asctime())
286 output +=
"%s %s %s\n" % (mod,
'None', cu)
289 output +=
"## %s\n" % package_name
290 elif usingConvention:
291 logging.info(
"No ConfigurableUser found")
292 output = (
"# db file automatically generated by %s on: %s\n"
293 "# No ConfigurableUser specialization in %s\n") % (
294 parser.prog, time.asctime(), package_name)
296 logging.error(
"No ConfigurableUser specialization found")
300 output_dir = os.path.dirname(outputfile)
302 logging.info(
"Creating directory %r", output_dir)
303 os.makedirs(output_dir, 0o755)
304 except OSError
as err:
306 if err.errno == errno.EEXIST:
313 logging.verbose(
"Writing confDb data to %r", outputfile)
314 open(outputfile,
"w").write(output)