30 "Get input tarball, unpack and set up env if an evgenJobOpts arg was provided."
33 super(EvgenExecutor, self).
preExecute(input, output)
35 def expand_if_archive(filename):
36 "Function to expand a file if it is a zip archive or tarball"
37 if ".tar" in filename:
39 tf = tarfile.open(filename)
42 elif filename.endswith(
".zip"):
44 zf = zipfile.ZipFile(filename)
48 def get_immediate_subdirectories(a_dir):
49 return [name
for name
in os.listdir(a_dir)
50 if os.path.isdir(os.path.join(a_dir, name))]
52 def mk_jo_proxy(targetbasepath, pkgname, proxypath, addtosearch=True):
53 "Make a JO proxy dir such that the MCxxJobOptions/dddd dirs contents are found via include(MCxxJobOptions/yyyy)"
55 if os.path.exists(proxypath):
56 shutil.rmtree(proxypath)
58 os.environ[
'LOCAL_INSTALL_DIR'] = (os.environ[
'JOBOPTSEARCHPATH']).
split(
":")[0]
59 comdir = os.path.join(targetbasepath,
"common")
60 subdirlist = get_immediate_subdirectories(comdir)
61 subdirlist1 = [
'common/%s' % item
for item
in subdirlist]
62 dirlist = [
'common',
'share',
'gencontrol',
'susycontrol']
63 for d
in (dirlist+subdirlist1):
65 if (d !=
'common/.svn'):
66 dpath = os.path.join(proxypath, d)
70 os.symlink(os.path.join(targetbasepath, d), os.path.join(dpath, pkgname))
72 os.environ[
"JOBOPTSEARCHPATH"] = dpath+
":"+os.environ[
"JOBOPTSEARCHPATH"]
73 os.environ[
"DATAPATH"] =os.path.join(targetbasepath, d)+
":"+os.environ[
"DATAPATH"]
75 os.environ[
"JOBOPTSEARCHPATH"] = os.environ[
'LOCAL_INSTALL_DIR']+
":"+os.environ[
"JOBOPTSEARCHPATH"]
79 if "evgenJobOpts" in self._trf.argdict:
80 tarball = self._trf.argdict[
"evgenJobOpts"].value
83 if tarball.startswith(
"http"):
85 tarball = os.basename(tarball)
87 url =
"http://cern.ch/atlas-computing/links/kitsDirectory/EvgenJobOpts/" + tarball
89 if not os.path.exists(tarball):
90 from EvgenJobTransforms.download
import downloadUsingProxy
91 status, output = downloadUsingProxy(url)
93 raise EnvironmentError(
'Error downloading tarball %s. Downloader reports: %s' % (tarball, output))
94 msg.info(
'Evgen tarball download success: %s', output)
96 expand_if_archive(tarball)
97 mk_jo_proxy(os.getcwd(),
"MC14JobOptions",
"_joproxy14")
98 mk_jo_proxy(os.getcwd(),
"MC15JobOptions",
"_joproxy15")
107 if os.path.exists(
"/cvmfs/atlas.cern.ch"):
109 mk_jo_proxy(
"/cvmfs/atlas.cern.ch/repo/sw/Generators/MC14JobOptions/latest/",
"MC14JobOptions",
"_joproxy14")
110 mk_jo_proxy(
"/cvmfs/atlas.cern.ch/repo/sw/Generators/MC15JobOptions/latest/",
"MC15JobOptions",
"_joproxy15")
111 msg.info(
"No evgenJobOpts tarball specified, using JOBOPTSEARCHPATH = '%s'", os.environ[
"JOBOPTSEARCHPATH"])
112 elif os.path.exists(
"/afs/cern.ch/atlas/groups/Generators"):
113 mk_jo_proxy(
"/afs/cern.ch/atlas/groups/Generators/MC14JobOptions/latest/",
"MC14JobOptions",
"_joproxy14")
114 mk_jo_proxy(
"/afs/cern.ch/atlas/groups/Generators/MC15JobOptions/latest/",
"MC15JobOptions",
"_joproxy15")
115 msg.info(
"No evgenJobOpts tarball specified, no cvmfs, using JOBOPTSEARCHPATH = '%s'", os.environ[
"JOBOPTSEARCHPATH"])
118 if "inputGeneratorFile" in self._trf.argdict:
119 expand_if_archive(self._trf.argdict[
"inputGeneratorFile"].value)
120 if "inputGenConfFile" in self._trf.argdict:
121 expand_if_archive(self._trf.argdict[
"inputGenConfFile"].value)