151 from optparse
import OptionParser
152 parser = OptionParser(
153 prog=os.path.basename(sys.argv[0]),
154 usage=
"%prog [options] <PackageName> [<Module1> ...]")
161 "output file for confDb data [default = '../genConf/<PackageName>_user_confDb.py']." 168 help=
"root directory of the python modules [default = '../python'].")
173 help=
"print some debugging information")
177 help=
"print more debugging information")
178 parser.set_defaults(root=os.path.join(
"..",
"python"))
180 opts, args = parser.parse_args()
183 log_level = logging.DEBUG
185 log_level = logging.VERBOSE
187 log_level = logging.INFO
if os.environ.get(
188 'VERBOSE')
else logging.WARNING
190 format=
"%(levelname)s: %(message)s",
195 parser.error(
"PackageName is required")
197 package_name = args.pop(0)
199 usingConvention =
False 202 args = [package_name +
".Configuration"]
203 usingConvention =
True 205 genConfDir = os.path.join(
"..", os.environ.get(
"CMTCONFIG",
""),
"genConf")
206 if not os.path.exists(genConfDir):
207 genConfDir = os.path.join(
"..",
"genConf")
210 outputfile = os.path.join(genConfDir, package_name +
'_user.confdb')
212 outputfile = opts.output
217 import Gaudi.Configurables
218 Gaudi.Configurables.ignoreMissingConfigurables =
True 227 sys.path.insert(0, genConfDir)
228 sys.path.insert(0, os.path.join(
"..",
"python"))
229 localConfDb = os.path.join(genConfDir, package_name,
230 package_name +
'.confdb')
231 if os.path.exists(localConfDb):
232 cfgDb._loadModule(localConfDb)
234 package_module = __import__(package_name)
235 package_module.__path__.insert(
236 0, os.path.join(genConfDir, package_name))
246 mod, root=opts.root, mayNotExist=usingConvention)
250 "Cannot import module %r:\n%s", mod,
251 traceback.format_exc().rstrip())
258 configurable=m, package=
'None', module=
'None', lib=
'None')
259 elif not usingConvention:
261 "Specified module %r does not contain ConfigurableUser specializations",
265 logging.info(
"ConfigurableUser found:\n%s", pformat(cus))
267 output =
"""## -*- ascii -*- 268 # db file automatically generated by %s on: %s 269 """ % (parser.prog, time.asctime())
273 output +=
"%s %s %s\n" % (mod,
'None', cu)
276 output +=
"## %s\n" % package_name
277 elif usingConvention:
278 logging.info(
"No ConfigurableUser found")
279 output = (
"# db file automatically generated by %s on: %s\n" 280 "# No ConfigurableUser specialization in %s\n") % (
281 parser.prog, time.asctime(), package_name)
283 logging.error(
"No ConfigurableUser specialization found")
287 output_dir = os.path.dirname(outputfile)
289 logging.info(
"Creating directory %r", output_dir)
290 os.makedirs(output_dir, 0o755)
291 except OSError
as err:
293 if err.errno == errno.EEXIST:
300 logging.verbose(
"Writing confDb data to %r", outputfile)
301 open(outputfile,
"w").write(output)
def getConfigurableUsers(modulename, root, mayNotExist=False)