130 from optparse
import OptionParser
131 parser = OptionParser(prog = os.path.basename(sys.argv[0]),
132 usage =
"%prog [options] <PackageName> [<Module1> ...]")
133 parser.add_option(
"-o",
"--output", action=
"store", type=
"string",
134 help=
"output file for confDb data [default = '../genConf/<PackageName>_user_confDb.py'].")
135 parser.add_option(
"-r",
"--root", action=
"store", type=
"string",
136 help=
"root directory of the python modules [default = '../python'].")
137 parser.add_option(
"-v",
"--verbose", action=
"store_true",
138 help=
"print some debugging information")
139 parser.add_option(
"--debug", action=
"store_true",
140 help=
"print more debugging information")
141 parser.set_defaults(root = os.path.join(
"..",
"python"))
143 opts, args = parser.parse_args()
146 log_level = logging.DEBUG
148 log_level = logging.VERBOSE
150 log_level = logging.INFO
if os.environ.get(
'VERBOSE')
else logging.WARNING
151 logging.basicConfig(format =
"%(levelname)s: %(message)s",
156 parser.error(
"PackageName is required")
158 package_name = args.pop(0)
160 usingConvention =
False 163 args = [package_name +
".Configuration"]
164 usingConvention =
True 166 genConfDir = os.path.join(
"..", os.environ.get(
"CMTCONFIG",
""),
"genConf")
167 if not os.path.exists(genConfDir):
168 genConfDir = os.path.join(
"..",
"genConf")
171 outputfile = os.path.join(genConfDir, package_name +
'_user.confdb')
173 outputfile = opts.output
178 import Gaudi.Configurables
179 Gaudi.Configurables.ignoreMissingConfigurables =
True 188 sys.path.insert(0, genConfDir)
189 sys.path.insert(0, os.path.join(
"..",
"python"))
190 localConfDb = os.path.join(genConfDir, package_name, package_name +
'.confdb')
191 if os.path.exists(localConfDb):
192 cfgDb._loadModule(localConfDb)
194 package_module = __import__(package_name)
195 package_module.__path__.insert(0, os.path.join(genConfDir, package_name))
207 logging.error(
"Cannot import module %r:\n%s", mod,
208 traceback.format_exc().rstrip())
214 cfgDb.add(configurable = m,
218 elif not usingConvention:
219 logging.warning(
"Specified module %r does not contain ConfigurableUser specializations", mod)
222 logging.info(
"ConfigurableUser found:\n%s", pformat(cus))
224 output =
"""## -*- ascii -*- 225 # db file automatically generated by %s on: %s 226 """ % (parser.prog, time.asctime())
230 output +=
"%s %s %s\n" % (mod,
'None', cu)
233 output +=
"## %s\n" % package_name
234 elif usingConvention:
235 logging.info(
"No ConfigurableUser found")
236 output = (
"# db file automatically generated by %s on: %s\n" 237 "# No ConfigurableUser specialization in %s\n") % (parser.prog, time.asctime(), package_name)
239 logging.error(
"No ConfigurableUser specialization found")
243 output_dir = os.path.dirname(outputfile)
245 logging.info(
"Creating directory %r", output_dir)
246 os.makedirs(output_dir, 0755)
249 if err.errno == errno.EEXIST:
256 logging.verbose(
"Writing confDb data to %r", outputfile)
257 open(outputfile,
"w").
write(output)
def getConfigurableUsers(modulename, root, mayNotExist=False)