
* Herwig3: make njet, vbfnlo dependencies optional... also drop openloops dependency when building on PowerPC * Update package.py
95 lines
3.4 KiB
Python
95 lines
3.4 KiB
Python
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class Herwig3(AutotoolsPackage):
|
|
"""Herwig is a multi-purpose particle physics event generator."""
|
|
|
|
homepage = "https://herwig.hepforge.org"
|
|
url = "https://herwig.hepforge.org/downloads/Herwig-7.2.1.tar.bz2"
|
|
|
|
tags = ["hep"]
|
|
|
|
version("7.2.3", sha256="5599899379b01b09e331a2426d78d39b7f6ec126db2543e9d340aefe6aa50f84")
|
|
version("7.2.2", sha256="53e06b386df5bc20fe268b6c8ba50f1e62b6744e577d383ec836ea3fc672c383")
|
|
version("7.2.1", sha256="d4fff32f21c5c08a4b2e563c476b079859c2c8e3b78d853a8a60da96d5eea686")
|
|
|
|
depends_on("autoconf", type="build")
|
|
depends_on("automake", type="build")
|
|
depends_on("libtool", type="build")
|
|
depends_on("m4", type="build")
|
|
depends_on("lhapdf")
|
|
depends_on("lhapdfsets", type="build")
|
|
depends_on("thepeg@2.2.1", when="@7.2.1")
|
|
depends_on("thepeg@2.2.2", when="@7.2.2")
|
|
depends_on("thepeg@2.2.3", when="@7.2.3")
|
|
depends_on("evtgen")
|
|
|
|
depends_on("boost +math+test")
|
|
depends_on("python", type=("build", "run"))
|
|
depends_on("gsl")
|
|
depends_on("fastjet")
|
|
depends_on("vbfnlo@3:", when="+vbfnlo")
|
|
depends_on("madgraph5amc")
|
|
depends_on("njet", when="+njet")
|
|
depends_on("py-gosam")
|
|
depends_on("njet")
|
|
depends_on("gosam-contrib")
|
|
|
|
# OpenLoops fail to build on PPC64: error: detected recursion whilst expanding macro "vector"
|
|
depends_on("openloops", when="target=aarch64:")
|
|
depends_on("openloops", when="target=x86_64:")
|
|
|
|
force_autoreconf = True
|
|
|
|
variant("vbfnlo", default=True, description="Use VBFNLO")
|
|
variant("njet", default=True, description="Use NJet")
|
|
|
|
def autoreconf(self, spec, prefix):
|
|
autoreconf("--install", "--verbose", "--force")
|
|
|
|
def configure_args(self):
|
|
args = [
|
|
"--with-gsl=" + self.spec["gsl"].prefix,
|
|
"--with-thepeg=" + self.spec["thepeg"].prefix,
|
|
"--with-thepeg-headers=" + self.spec["thepeg"].prefix.include,
|
|
"--with-fastjet=" + self.spec["fastjet"].prefix,
|
|
"--with-boost=" + self.spec["boost"].prefix,
|
|
"--with-madgraph=" + self.spec["madgraph5amc"].prefix,
|
|
"--with-openloops=" + self.spec["openloops"].prefix,
|
|
"--with-gosam-contrib=" + self.spec["gosam-contrib"].prefix,
|
|
"--with-evtgen=" + self.spec["evtgen"].prefix,
|
|
"--with-gosam=" + self.spec["py-gosam"].prefix,
|
|
]
|
|
|
|
if self.spec.satisfies("+njet"):
|
|
args.append("--with-njet=" + self.spec["njet"].prefix)
|
|
|
|
if self.spec.satisfies("+vbfnlo"):
|
|
args.append("--with-vbfnlo=" + self.spec["vbfnlo"].prefix)
|
|
|
|
return args
|
|
|
|
def flag_handler(self, name, flags):
|
|
if name == "fflags":
|
|
flags.append("-std=legacy")
|
|
return (flags, None, None)
|
|
return (flags, None, None)
|
|
|
|
def setup_build_environment(self, env):
|
|
thepeg_home = self.spec["thepeg"].prefix
|
|
env.prepend_path("LD_LIBRARY_PATH", thepeg_home.lib.ThePEG)
|
|
env.set("HERWIGINCLUDE", "-I" + self.prefix.include)
|
|
env.set("BOOSTINCLUDE", "-I" + self.spec["boost"].prefix.include)
|
|
env.set("HERWIGINSTALL", self.prefix)
|
|
|
|
def build(self, spec, prefix):
|
|
make()
|
|
|
|
def install(self, spec, prefix):
|
|
make("install")
|