Page MenuHomeHEPForge

No OneTemporary

diff --git a/herwig-bootstrap b/herwig-bootstrap
--- a/herwig-bootstrap
+++ b/herwig-bootstrap
@@ -1,779 +1,793 @@
#!/usr/bin/env python
import subprocess
import sys, os, errno, platform, shutil
import urllib2, ssl
import tarfile
from optparse import OptionParser, OptionValueError
from time import sleep
default_cc = os.getenv('CC','gcc')
default_cxx = os.getenv('CXX','g++')
default_fc = os.getenv('FC','gfortran')
parser = OptionParser(usage='Usage: %prog [options] DIR')
# function to set up the standard flags for a program
def setUpFlags(program,version,build=True) :
parser.add_option("--with-"+program ,
action='store_true' ,
dest=program,
default=build,
help="Install "+program)
parser.add_option("--without-"+program,
action='store_false',
dest=program,
default=build,
help="Don't install "+program)
parser.add_option("--"+program+"-location",
type='string',
default="",
dest=program+"_loc",
help="Location of "+program+" if not installed")
if version:
parser.add_option("--"+program+"-version",
type='string',
default=version,
dest=program+"_ver",
help="Version of "+program+" to be installed")
# compiler building
parser.add_option("--with-gcc",
action='store_true' ,
dest="gcc",
default=False,
help="Install the gcc compilers")
parser.add_option("--gcc-version",
type='string',
default="4.9.3",
dest="gcc_ver",
help="Version of gcc to be installed")
# gengetopt if needed
setUpFlags("gengetopt","2.22.6",False)
# flags for boost
setUpFlags("boost","1.58.0")
parser.add_option("--boost-minimal",
action='store_true',
dest="boost_minimal",
default=True,
help='Only install the minimal set of boost libraries needed by Herwig')
parser.add_option("--boost-all",
action='store_false',
dest="boost_minimal",
default=True,
help='Install all the boost libaries, including those not required by Herwig')
# flags for gsl
setUpFlags("gsl","1.15")
# flags for fastjet
setUpFlags("fastjet","3.1.3")
# flags for hepmc
setUpFlags("hepmc","2.06.09")
# flags for lhapdf
setUpFlags("lhapdf","6.1.5")
parser.add_option("--add-pdf",
action='append',
dest="pdfs",
default=["MMHT2014lo68cl","MMHT2014nlo68cl"],
help='Add a PDF to those to be downloaded by default')
# flags for yoda
setUpFlags("yoda","1.5.5")
parser.add_option("--yoda-hg",
action='store_true',
dest="yoda_hg",
default=False,
help='Get yoda from mercurial')
parser.add_option("--yoda-tar",
action='store_false',
dest="yoda_hg",
default=False,
help='Get yoda from tar ball')
parser.add_option("--yoda-repo",
type='string',
default="https://yoda.hepforge.org/hg/yoda",
dest='yoda_repo',
help='The location of the mercurial repository for Yoda')
# flags for rivet
setUpFlags("rivet","2.4.0")
parser.add_option("--rivet-hg",
action='store_true',
dest="rivet_hg",
default=False,
help='Get rivet from mercurial')
parser.add_option("--rivet-tar",
action='store_false',
dest="rivet_hg",
default=False,
help='Get rivet from tar ball')
parser.add_option("--rivet-repo",
type='string',
default="https://rivet.hepforge.org/hg/rivet",
dest='rivet_repo',
help='The location of the mercurial repository for Rivet')
# flags for thepeg
setUpFlags("thepeg","2.0.0")
parser.add_option("--thepeg-hg",
action='store_true',
dest="thepeg_hg",
default=False,
help='Get thepeg from mercurial')
parser.add_option("--thepeg-tar",
action='store_false',
dest="thepeg_hg",
default=False,
help='Get thepeg from tar ball')
parser.add_option("--thepeg-repo",
type='string',
default="https://thepeg.hepforge.org/hg/ThePEG",
dest='thepeg_repo',
help='The location of the mercurial repository for ThePEG')
# madgraph
setUpFlags("madgraph","2.3.0.beta")
parser.add_option("--madgraph-bzr",
action='store_true',
dest="madgraph_bzr",
default=False,
help='Get madgraph from mercurial')
parser.add_option("--madgraph-tar",
action='store_false',
dest="madgraph_bzr",
default=False,
help='Get madgraph from tar ball')
parser.add_option("--madgraph-repo",
type='string',
default="lp:~matchboxteam/mg5amcnlo/matchbox_output",
dest='madgraph_repo',
help='The location of the mercurial repository for Madgraph')
# flags for njet
setUpFlags("njet","2.0.0")
# flags for vbfnlo
setUpFlags("vbfnlo","3.0.0beta1")
# flags for GoSam
setUpFlags("gosam","")
# flags for OpenLoops
setUpFlags("openloops","public")
parser.add_option("--openloops-repo",
type='string',
default="http://openloops.hepforge.org/svn/OpenLoops/branches",
dest='openloops_repo',
help='The location of the mercurial repository for OpenLoops')
parser.add_option("--openloops-processes",
type='string',
default="ppll",
dest='openloops_processes',
help='The processes for OpenLoops')
# flags for herwig
setUpFlags("herwig","7.0.0")
parser.add_option("--herwig-hg",
action='store_true',
dest="herwig_hg",
default=False,
help='Get herwig from mercurial')
parser.add_option("--herwig-tar",
action='store_false',
dest="herwig_hg",
default=False,
help='Get herwig from tar ball')
parser.add_option("--herwig-repo",
type='string',
default="https://herwig.hepforge.org/hg/herwig",
dest='herwig_repo',
help='The location of the mercurial repository for Herwig')
# flags for HJets++
setUpFlags("hjets","")
# src directory
parser.add_option("--src-dir",
type='string',
default="",
dest='src_dir',
help='Location of the source directory if not install_loc/src')
# no of cores
try:
from multiprocessing import cpu_count
ncore = max(cpu_count()-1, 1)
del cpu_count
except:
ncore=1
parser.add_option("-j","--ncore",
type='int',
default=ncore,
dest="ncore",
help="Number of cores to use with make -j to speed up compilation")
del ncore
# get the options and locations
opts, install_dir = parser.parse_args()
if len(install_dir) != 1:
sys.stderr.write('Must specify a build location\n')
exit(1)
install_dir = install_dir[0]
if not opts.gcc:
print """
*********************************************************
* Using CC=%s CXX=%s FC=%s.
* Set these environment variables to change compilers.
*********************************************************
""" % (default_cc,default_cxx,default_fc)
else:
print """
***************************************************************
* Using self-installed CC, CXX and FC. To use other compilers,
* unset --with-gcc and set the environment variables.
***************************************************************
"""
sleep(1)
# from http://stackoverflow.com/a/377028
def which(program):
import os
def is_exe(fpath):
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
fpath, fname = os.path.split(program)
if fpath:
if is_exe(program):
return program
else:
for path in os.environ["PATH"].split(os.pathsep):
path = path.strip('"')
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return exe_file
return None
# set the base directory
current_dir=os.getcwd()
base_dir=os.path.join(current_dir,install_dir)
if not os.path.isdir(base_dir):
os.mkdir(base_dir)
opt_dir = os.path.join(base_dir,'opt')
if not os.path.isdir(opt_dir):
os.mkdir(opt_dir)
if not opts.src_dir:
src_dir = os.path.join(base_dir,'src')
else:
src_dir = os.path.join(current_dir,opts.src_dir)
if not os.path.isdir(src_dir):
os.mkdir(src_dir)
os.chdir(src_dir)
# set the environment variables
bin_dir = os.path.join(base_dir,'bin')
try:
os.environ['PATH'] = os.pathsep.join([bin_dir,os.environ['PATH']])
except KeyError:
os.environ['PATH'] = bin_dir
if platform.system() != 'Darwin':
lib_dirs = os.pathsep.join([os.path.join(base_dir,'lib'),
os.path.join(base_dir,'lib64')])
try:
os.environ['LD_LIBRARY_PATH'] = os.pathsep.join([lib_dirs,
os.environ['LD_LIBRARY_PATH']])
except KeyError:
os.environ['LD_LIBRARY_PATH'] = lib_dirs
# storage of prefix info for individual packages
class Prefixes(dict):
# return None instead of raising KeyError for unknown package name
def __missing__(self, key):
return None
prefix = Prefixes()
def check_call(arglist):
print ' '.join(arglist)
subprocess.check_call(arglist)
# checkout
def checkout( location, base, version, repo, branch, repo_type='hg', revision=None) :
os.chdir(location)
if repo_type == 'hg':
directory=base
if version:
directory += "-"+version
if not os.path.isdir(directory):
check_call(["hg","clone",repo,directory])
else:
check_call(["hg","pull","-R",directory,repo])
os.chdir(os.path.join(location,directory))
if revision:
check_call(["hg","up","-r",revision])
else:
check_call(["hg","up",branch])
check_call(["autoreconf","-vi"])
elif repo_type == "bzr":
check_call(["bzr","co",repo,base])
elif repo_type == "svn":
if revision:
check_call(["svn","checkout",repo+"/"+branch,base,"-r",revision])
else:
check_call(["svn","checkout",repo+"/"+branch,base])
os.chdir(os.path.join(location,base))
else:
sys.stderr.write('Only supports checkout from hg,svn or bzr\n')
exit(1)
def download_only(url_base,tar_name,distinct=False) :
if os.access(tar_name, os.R_OK):
print 'Found existing %s' % tar_name
return
if distinct:
program_url = url_base
else:
program_url = '%s/%s' % (url_base,tar_name)
print "Download %s as %s" % (program_url,tar_name)
req_headers = {
'User-Agent' : 'herwig-bootstrap',
'Accept' : '*/*'
}
request = urllib2.Request(program_url, headers=req_headers)
try:
try:
context = ssl._create_unverified_context()
response = urllib2.urlopen(request, context=context)
except AttributeError:
response = urllib2.urlopen(request)
except urllib2.HTTPError as e:
sys.stderr.write('Remote server returned error code %s: %s\n' % (e.code, e.reason))
exit(1)
except urllib2.URLError as e:
sys.stderr.write('Could not reach server: %s\n' % e.reason)
exit(1)
with open(tar_name,'w') as f:
f.write(response.read())
def download(url_base,tar_name,args=[],distinct=False) :
download_only(url_base,tar_name,distinct)
tar = tarfile.open(tar_name,'r')
lastfile = tar.getnames()[-1]
if os.access(lastfile, os.R_OK):
print 'Extracted %s exists already' % lastfile.split('/')[0]
else:
print "Extract %s" % tar_name
tar.extractall()
tar.close()
def compile(config_flags=[]) :
if os.access('Makefile',os.R_OK):
print 'Makefile exists, skipping configure'
else:
flags = ["./configure","--prefix="+base_dir]
flags += config_flags
check_call(flags)
check_call(["make","-s","-j%s" % opts.ncore])
# TODO ?? skip here if some file already exists in /lib or /bin ??
check_call(["make","-s","install"])
os.chdir(src_dir)
def downloadAndCompile(url_base,base_name,suffix,config_flags) :
download(url_base,base_name+suffix)
os.chdir(os.path.join(src_dir,base_name))
compile(config_flags)
def deletelibtool() :
os.chdir(base_dir)
for directory in ["lib","lib64","lib32"] :
full_path = os.path.join(base_dir,directory)
if os.path.isdir(full_path) :
check_call(["find",full_path,"-name","*.la","-delete"])
GCC_SUFFIX = '-hwbst-%s' % opts.gcc_ver
def buildgcc() :
# build gmp with --enable-fat to allow portability
# --enable-fat currently broken on Mac, see
# https://gmplib.org/repo/gmp/raw-rev/1fab0adc5ff7
gmp_fatoption = ['--enable-fat']
if platform.system() == 'Darwin':
gmp_fatoption = []
if marker_is_missing('gmp'):
downloadAndCompile('https://gmplib.org/download/gmp',"gmp-6.0.0",".tar.bz2",gmp_fatoption)
prefix['gmp']=base_dir
mark_as_done('gmp')
# build mpfr
if marker_is_missing('mpfr'):
downloadAndCompile('http://www.mpfr.org/mpfr-current',"mpfr-3.1.3",".tar.bz2",["--with-gmp="+base_dir])
prefix['mpfr']=base_dir
mark_as_done('mpfr')
# build mpc
if marker_is_missing('mpc'):
downloadAndCompile("http://www.multiprecision.org/mpc/download","mpc-1.0.3",".tar.gz",["--with-gmp="+base_dir,"--with-mpfr="+base_dir])
prefix['mpc']=base_dir
mark_as_done('mpc')
# gcc
download('ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-'+opts.gcc_ver,
"gcc-"+opts.gcc_ver+".tar.bz2")
obj_path=os.path.join(src_dir,"gcc-build")
if not os.access(obj_path, os.R_OK):
os.mkdir(obj_path)
os.chdir(obj_path)
else:
os.chdir(obj_path)
# don't use check_call here, the command may not always complete OK
subprocess.call(["make","distclean"])
try:
gcc_version = map(int,opts.gcc_ver.split(".")[:2])
except:
sys.stderr.write('Unknown gcc version format. Expecting "N.N.N".\n')
exit(1)
flags=["../gcc-"+opts.gcc_ver+"/configure",
"--prefix="+base_dir,
"--program-suffix="+GCC_SUFFIX,
"--disable-multilib"]
if gcc_version[0] == 3:
flags.append("--enable-languages=c,c++,f77")
elif gcc_version[0] >= 4:
if gcc_version[0] == 4 and gcc_version[1]==0:
flags.append("--enable-languages=c,c++,f95")
else:
flags.append("--enable-languages=c,c++,fortran")
flags.append("--with-gmp="+base_dir)
flags.append("--with-mpfr="+base_dir)
if gcc_version[0] > 4 or (gcc_version[0] == 4 and gcc_version[1]>=4 ):
flags.append("--with-mpc="+base_dir)
if gcc_version[0] == 4 and gcc_version[1] == 9 and platform.system() == 'Darwin':
flags.append('--with-build-config=bootstrap-debug')
check_call(flags)
check_call(["make","-s","-j"+str(opts.ncore)])
check_call(["make","-s","install"])
deletelibtool()
os.chdir(src_dir)
def mark_as_done(name):
path = os.path.join(src_dir,'herwig_bootstrap_%s_done' % name)
with open(path, 'w') as f:
f.write('%s\n' % prefix[name])
def build_needed(name):
cmdline_flag_set = getattr(opts,name,False) # default to false if not found
if not cmdline_flag_set:
prefix[name] = getattr(opts, '%s_loc' % name, '')
return False
return marker_is_missing(name)
def marker_is_missing(name):
path = os.path.join(src_dir,'herwig_bootstrap_%s_done' % name)
try:
with open(path) as f:
prefixpath = f.readline().rstrip()
except EnvironmentError:
return True
else:
print 'Marker file for %s exists in src/, skipping build,' % name
print ' using prefix=%s.' % prefixpath
prefix[name] = prefixpath
return False
# download and compile gcc
if build_needed('gcc'):
buildgcc()
mark_as_done('gcc')
if opts.gcc:
default_cc = os.path.join(base_dir,'bin','gcc%s' % GCC_SUFFIX)
default_cxx = os.path.join(base_dir,'bin','g++%s' % GCC_SUFFIX)
default_fc = os.path.join(base_dir,'bin','gfortran%s' % GCC_SUFFIX)
os.environ['CC'] = default_cc
os.environ['CXX'] = default_cxx
os.environ['FC'] = default_fc
if build_needed('gengetopt'):
tmp_ncore=opts.ncore
opts.ncore=1
downloadAndCompile("ftp://ftp.gnu.org/gnu/gengetopt/",
"gengetopt-"+opts.gengetopt_ver,".tar.gz",[])
opts.ncore=tmp_ncore
mark_as_done('gengetopt')
# install boost if required
if build_needed('boost'):
boost_ver2=opts.boost_ver.replace(".","_")
boost_base = "boost_"+ boost_ver2
download("http://sourceforge.net/projects/boost/files/boost/"+ opts.boost_ver,
boost_base+".tar.bz2")
os.chdir(os.path.join(src_dir,boost_base))
if opts.boost_minimal:
check_call(["./bootstrap.sh","--prefix="+base_dir,'threading=multi',"--with-libraries=filesystem,system,test"])
else :
check_call(["./bootstrap.sh","--prefix="+base_dir,'threading=multi'])
check_call(["./b2","--layout=tagged","install","-j"+str(opts.ncore)])
os.chdir(src_dir)
# on OS X, write helper script
if platform.system() == 'Darwin':
helpername='./boost-osx-path-fix'
with open(helpername,'w') as f:
f.write(
"""\
#!/bin/bash
for i in %s/lib*/libboost*.dylib
do
install_name_tool -id $i $i || true
if [ $(basename $i) == 'libboost_filesystem-mt.dylib' ]; then
install_name_tool -change libboost_system-mt.dylib $(dirname $i)/libboost_system-mt.dylib $i || true
fi
done
""" % base_dir)
os.chmod(helpername,0755)
check_call([helpername])
prefix['boost']=base_dir
mark_as_done('boost')
# install gsl if required
if build_needed('gsl'):
downloadAndCompile("http://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gsl",
"gsl-"+opts.gsl_ver,".tar.gz",
[])
prefix['gsl']=base_dir
mark_as_done('gsl')
# install fastjet if required
if build_needed('fastjet'):
downloadAndCompile("http://fastjet.fr/repo",
"fastjet-"+opts.fastjet_ver,".tar.gz",
["--enable-allplugins"])
prefix['fastjet']=base_dir
mark_as_done('fastjet')
# install hepmc if needed
if build_needed('hepmc'):
downloadAndCompile("http://lcgapp.cern.ch/project/simu/HepMC/download",
"HepMC-"+opts.hepmc_ver,".tar.gz",
["--with-momentum=GEV","--with-length=MM"])
prefix['hepmc']=base_dir
mark_as_done('hepmc')
# install lhapdf if needed
if build_needed('lhapdf'):
args=[]
if prefix['boost']:
args.append("--with-boost="+prefix['boost'])
downloadAndCompile("http://www.hepforge.org/archive/lhapdf",
"LHAPDF-"+opts.lhapdf_ver,".tar.gz",
args)
for pdf in opts.pdfs :
lhapdftool = os.path.join(base_dir,'bin','lhapdf')
check_call([lhapdftool,"install",pdf])
# ./configure --prefix=$root_dir -enable-pdfsets=all
prefix['lhapdf']=base_dir
mark_as_done('lhapdf')
# install yoda if needed
if build_needed('yoda'):
# from tar ball
if not opts.yoda_hg:
download("http://www.hepforge.org/archive/yoda",
"YODA-"+opts.yoda_ver+".tar.bz2")
os.chdir(os.path.join(src_dir,"YODA-"+opts.yoda_ver))
else :
if opts.yoda_ver :
if len(opts.yoda_ver)==5:
branch="yoda-"+opts.yoda_ver
else :
branch=opts.yoda_ver
else :
branch=""
checkout(src_dir,"YODA",opts.yoda_ver,opts.yoda_repo,branch)
args=[]
if prefix['boost']:
args.append("--with-boost="+prefix['boost'])
compile(args)
prefix['yoda']=base_dir
mark_as_done('yoda')
# install rivet if needed
if build_needed('rivet'):
# from tar ball
if not opts.rivet_hg:
download("http://www.hepforge.org/archive/rivet",
"Rivet-"+opts.rivet_ver+".tar.bz2")
os.chdir(os.path.join(src_dir,"Rivet-"+opts.rivet_ver))
else:
if len(opts.rivet_ver)==5:
branch="rivet-"+opts.rivet_ver
else:
branch=opts.rivet_ver
checkout(src_dir,"Rivet",opts.rivet_ver,opts.rivet_repo,branch)
args = ["--enable-unvalidated"]
for tool in ['boost','gsl','yoda','hepmc','fastjet']:
if prefix[tool]:
args.append( "--with-%s=%s" % (tool,prefix[tool]) )
compile(args)
prefix['rivet']=base_dir
mark_as_done('rivet')
# install thepeg if needed
if build_needed('thepeg'):
# from tar ball
if not opts.thepeg_hg:
download("http://www.hepforge.org/archive/thepeg","ThePEG-"+opts.thepeg_ver+".tar.bz2")
os.chdir(os.path.join(src_dir,"ThePEG-"+opts.thepeg_ver))
else:
if len(opts.thepeg_ver)==5:
branch="release-"+opts.thepeg_ver[:3].replace(".","-")
else:
branch=opts.thepeg_ver
checkout(src_dir,"ThePEG",opts.thepeg_ver,opts.thepeg_repo,branch)
args=[]
for tool in ['boost','gsl','rivet','hepmc','fastjet','lhapdf']:
if prefix[tool]:
args.append( "--with-%s=%s" % (tool,prefix[tool]) )
compile(args)
prefix['thepeg']=base_dir
mark_as_done('thepeg')
# install madgraph
if build_needed('madgraph'):
# from tar ball
if not opts.madgraph_bzr:
mg_name = "MG5_aMC_v"+opts.madgraph_ver.replace(".","_")
download("https://launchpad.net/mg5amcnlo/2.0/2.2.0/+download","MG5_aMC_v"+opts.madgraph_ver+".tar.gz")
prefix['madgraph']=os.path.join(opt_dir, mg_name)
print os.path.join(src_dir, mg_name), os.path.join(opt_dir, mg_name)
shutil.move(os.path.join(src_dir, mg_name), os.path.join(opt_dir, mg_name))
del mg_name
else :
checkout(opt_dir,"madgraph",opts.madgraph_ver,opts.madgraph_repo,"",'bzr')
prefix['madgraph']=os.path.join(opt_dir,"madgraph")
mark_as_done('madgraph')
# install the NLO codes if needed
# install njet if required
if build_needed('njet'):
downloadAndCompile("https://bitbucket.org/njet/njet/downloads",
"njet-"+opts.njet_ver,".tar.gz",
["--disable-autoflags",
"FC="+default_fc,
"F77="+default_fc])
prefix['njet']=base_dir
mark_as_done('njet')
OPENLOOPS_CONFIG = """\
[OpenLoops]
fortran_compiler = {fc}
# fortran_tool = 'gfortran'
compile_extra = 0
"""
# install openloops if needed
if build_needed('openloops'):
checkout(opt_dir,"OpenLoops",opts.openloops_ver,opts.openloops_repo,opts.openloops_ver,'svn',
revision='1400')
with open('openloops.cfg','w') as f:
f.write(OPENLOOPS_CONFIG.format(fc=default_fc))
check_call(["./openloops",
"libinstall",
opts.openloops_processes,
"num_jobs=%s" % opts.ncore
])
os.chdir(src_dir)
prefix['openloops']=opt_dir+"/OpenLoops"
mark_as_done('openloops')
# install gosam if needed
if build_needed('gosam'):
- gosam_dir=os.path.join(src_dir,"GoSam")
- try:
- os.mkdir(gosam_dir)
- except OSError as e:
- # ignore if directory exists already
- if e.errno != errno.EEXIST: raise
- os.chdir(gosam_dir)
- download_only("http://gosam.hepforge.org","gosam_installer.py")
- os.chmod("./gosam_installer.py",0755)
- check_call(["./gosam_installer.py",
- "-b",
- "-v",
- "--prefix="+base_dir,
- "--fc="+default_fc,
- "--cc="+default_cc,
- "--cxx="+default_cxx])
+ # build qgraf
+ if marker_is_missing('qgraf'):
+ download('https://www.hepforge.org/archive/herwig/mirror',"qgraf-3.1.4.tgz")
+ os.chdir(os.path.join(src_dir,'qgraf-3.1.4'))
+ check_call([default_fc,'qgraf-3.1.4.f','-o','qgraf','-O2'])
+ os.rename('qgraf',os.path.join(bin_dir,'qgraf'))
+ prefix['qgraf']=base_dir
+ os.chdir(src_dir)
+ mark_as_done('qgraf')
+ # build form
+ if marker_is_missing('form'):
+ downloadAndCompile('https://gosam.hepforge.org/gosam-installer',"form-4.1",".tar.gz",[])
+ prefix['form']=base_dir
+ mark_as_done('form')
+ # build gosam-contrib
+ if marker_is_missing('gosam-contrib'):
+ download('https://www.hepforge.org/archive/gosam/gosam-contrib-2.0-20150803.tar.gz',
+ "gosam-contrib-2.0.tar.gz", distinct=True)
+ os.chdir(os.path.join(src_dir,'gosam-contrib-2.0'))
+ compile([])
+ prefix['gosam-contrib']=base_dir
+ mark_as_done('gosam-contrib')
+
+ download('https://www.hepforge.org/archive/gosam/','gosam-2.0.2-865.tar.gz')
+ os.chdir(os.path.join(src_dir,'gosam-2.0.2'))
+
+ check_call(["./setup.py",
+ "install",
+ "--prefix="+base_dir,
+ "-f"])
os.chdir(src_dir)
prefix['gosam']=base_dir
mark_as_done('gosam')
# install vbfnlo if required
if build_needed('vbfnlo'):
download("http://www.itp.kit.edu/~vbfnloweb/archive","vbfnlo-"+opts.vbfnlo_ver+".tgz")
os.chdir(os.path.join(src_dir,"VBFNLO-"+opts.vbfnlo_ver))
check_call(["./configure","--prefix="+base_dir])
check_call(["make","-s","-j%s"%opts.ncore])
check_call(["make","-s","install"])
os.chdir(src_dir)
prefix['vbfnlo']=base_dir
mark_as_done('vbfnlo')
# need to install Herwig if we want HJets++
if opts.hjets:
opts.herwig = True
# install herwig if needed
if build_needed('herwig'):
# from tar ball
if not opts.herwig_hg:
download("http://www.hepforge.org/archive/herwig","Herwig-"+opts.herwig_ver+".tar.bz2")
os.chdir(os.path.join(src_dir,"Herwig-"+opts.herwig_ver))
else:
if len(opts.herwig_ver)==5:
branch = "herwig-"+opts.herwig_ver[:3].replace(".","-")
else:
branch = opts.herwig_ver
checkout(src_dir,"Herwig",opts.herwig_ver,opts.herwig_repo,branch)
args=[]
for tool in ['thepeg','boost','gsl','fastjet',
'madgraph','njet','openloops','gosam','vbfnlo']:
if prefix[tool]:
args.append( "--with-%s=%s" % (tool,prefix[tool]) )
compile(args)
prefix['herwig']=base_dir
mark_as_done('herwig')
if build_needed('hjets'):
os.chdir(os.path.join(src_dir, "Herwig-"+opts.herwig_ver, 'Contrib', 'HJets++'))
if not os.access('configure', os.X_OK):
check_call(["autoreconf","-vi"])
compile([])
prefix['hjets']=base_dir
mark_as_done('hjets')
# back to the original directory
os.chdir(current_dir)

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 5:29 PM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805392
Default Alt Text
(28 KB)

Event Timeline