diff --git a/var/spack/repos/builtin/packages/madgraph5amc/gcc14.patch b/var/spack/repos/builtin/packages/madgraph5amc/gcc14.patch new file mode 100644 index 00000000000000..d7cf655bbd1282 --- /dev/null +++ b/var/spack/repos/builtin/packages/madgraph5amc/gcc14.patch @@ -0,0 +1,38 @@ +From b470cfe805e747204a86eedada1d90aae1ebceec Mon Sep 17 00:00:00 2001 +From: Joseph C Wang +Date: Sat, 24 Aug 2024 00:36:46 +0800 +Subject: [PATCH] add compile flags for gcc14 compilation + +This disables pointer mismatch warnings which are now errors in +gcc14. +--- + vendor/StdHEP/mcfio/src/GNUmakefile | 2 +- + vendor/StdHEP/src/stdhep/GNUmakefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/vendor/StdHEP/mcfio/src/GNUmakefile b/vendor/StdHEP/mcfio/src/GNUmakefile +index 591007abe3..14862ba79e 100644 +--- a/vendor/StdHEP/mcfio/src/GNUmakefile ++++ b/vendor/StdHEP/mcfio/src/GNUmakefile +@@ -13,7 +13,7 @@ BINDIR = ../../bin + include ../arch_mcfio + + FFLAGS += -std=legacy +-CFLAGS += -Wno-implicit-function-declaration ++CFLAGS += -Wno-implicit-function-declaration -Wno-incompatible-pointer-types + + FINC = -I. + CINC = -I. -I/usr/include/tirpc +diff --git a/vendor/StdHEP/src/stdhep/GNUmakefile b/vendor/StdHEP/src/stdhep/GNUmakefile +index b1d7591ef0..d0421788c9 100644 +--- a/vendor/StdHEP/src/stdhep/GNUmakefile ++++ b/vendor/StdHEP/src/stdhep/GNUmakefile +@@ -8,7 +8,7 @@ STDHEP_DIR = ../.. + #this has been added by MZ + FFLAGS+= -fd-lines-as-code -fPIE + FFLAGS += -std=legacy +-CFLAGS += -Wno-implicit-function-declaration ++CFLAGS += -Wno-implicit-function-declaration -Wno-incompatible-pointer-types + + SLIB = $(STDHEP_DIR)/lib + SBIN = $(STDHEP_DIR)/bin diff --git a/var/spack/repos/builtin/packages/madgraph5amc/package.py b/var/spack/repos/builtin/packages/madgraph5amc/package.py index eb08e306bdc244..76fb5cb1aecd2b 100644 --- a/var/spack/repos/builtin/packages/madgraph5amc/package.py +++ b/var/spack/repos/builtin/packages/madgraph5amc/package.py @@ -17,16 +17,42 @@ class Madgraph5amc(MakefilePackage): event manipulation and analysis.""" homepage = "https://launchpad.net/mg5amcnlo" - url = "https://launchpad.net/mg5amcnlo/2.0/2.7.x/+download/MG5_aMC_v2.7.3.tar.gz" + url = "https://launchpad.net/mg5amcnlo/lts/2.9.x/+download/MG5_aMC_v2.9.20.tar.gz" tags = ["hep"] - version( - "2.8.1", - sha256="acda34414beba201e529b8c03f87f4893fb3f99ed2956a131d60a387e76c5b8c", - url="https://launchpad.net/mg5amcnlo/2.0/2.8.x/+download/MG5_aMC_v2.8.1.tar.gz", - ) - version("2.7.3.py3", sha256="400c26f9b15b07baaad9bd62091ceea785c2d3a59618fdc27cad213816bc7225") + # Launchpad can sometimes be slow to respond + timeout = {"timeout": 60} + + with default_args(fetch_options=timeout): + version("3.5.5", sha256="3b4262024cefb8a06082faa9a7ba43484b27a3f2b940a06fbe49c640c5b7ebd7") + version( + "2.9.20", + sha256="09a70e2e8b52e504bcaaa6527d3cec9641b043f5f853f2d11fa3c9970b7efae9", + url="https://launchpad.net/mg5amcnlo/lts/2.9.x/+download/MG5_aMC_v2.9.20.tar.gz", + ) + with default_args(deprecated=True): + version( + "2.9.19", + sha256="ec95d40ec8845e57682400ef24a3b769a4d0542e3a849b7c5e10105d0a0f8e61", + url="https://launchpad.net/mg5amcnlo/lts/2.9.x/+download/MG5_aMC_v2.9.19.tar.gz", + ) + version( + "2.9.17", + sha256="6781c515ccc2005a953c35dcf9238632b761a937f1832bdfaa5514510b8c5a17", + url="https://launchpad.net/mg5amcnlo/lts/2.9.x/+download/MG5_aMC_v2.9.17.tar.gz", + ) + # Older versions have been removed, only the latest LTS versions are available: + version( + "2.8.3.2", + sha256="4077eee75f9255fe627755fe0ac5da5d72f5d5c4f70b6e06e4e564e9c512b215", + url="https://launchpad.net/mg5amcnlo/lts/2.8.x/+download/MG5_aMC_v2.8.3.2.tar.gz", + ) + version( + "2.7.3.py3", + sha256="400c26f9b15b07baaad9bd62091ceea785c2d3a59618fdc27cad213816bc7225", + url="https://launchpad.net/mg5amcnlo/lts/2.7.x/+download/MG5_aMC_v2.7.3.py3.tar.gz", + ) variant( "atlas", @@ -35,6 +61,7 @@ class Madgraph5amc(MakefilePackage): ) variant("ninja", default=False, description="Use external installation" + " of Ninja") variant("collier", default=False, description="Use external installation" + " of Collier") + variant("pythia8", default=False, description="Use external installation of Pythia8") conflicts("%gcc@10:", when="@2.7.3") @@ -46,15 +73,21 @@ class Madgraph5amc(MakefilePackage): depends_on("py-six", when="@2.7.3.py3,2.8.0:", type=("build", "run")) depends_on("python@3.7:", when="@2.7.3.py3", type=("build", "run")) - depends_on("python@2.7.0:2.8.0,3.7:", when="@2.8.0:", type=("build", "run")) depends_on("libtirpc") + depends_on("pythia8", when="+pythia8") - patch("array-bounds.patch") - patch("madgraph5amc.patch", level=0) - patch("madgraph5amc-2.7.3.atlas.patch", level=0, when="@2.7.3.py2+atlas") + patch("gcc14.patch", when="@:3.5.5%gcc@14:") + patch("array-bounds.patch", when="@:2.8.1") + patch("madgraph5amc.patch", level=0, when="@:2.9") patch("madgraph5amc-2.7.3.atlas.patch", level=0, when="@2.7.3.py3+atlas") patch("madgraph5amc-2.8.0.atlas.patch", level=0, when="@2.8.0+atlas") patch("madgraph5amc-2.8.0.atlas.patch", level=0, when="@2.8.1+atlas") + # Fix running from CVMFS on AFS, for example on lxplus at CERN + patch( + "https://patch-diff.githubusercontent.com/raw/mg5amcnlo/mg5amcnlo/pull/96.diff?full_index=1", + sha256="ac6644f1d0ef51d9bdb27a1519261f1cf27d075d39faa278fbc2849acbc5575d", + when="@3:3.5", + ) def edit(self, spec, prefix): def set_parameter(name, value): @@ -85,12 +118,6 @@ def build(self, spec, prefix): with working_dir(join_path("vendor", "CutTools")): make(parallel=False) - with working_dir(join_path("vendor", "StdHEP")): - for m in ["mcfio/arch_mcfio", "src/stdhep_arch"]: - arch = FileFilter(m) - arch.filter("CC.*=.*", "CC = {0}".format(spack_cc)) - make(parallel=False) - if "+atlas" in spec: if os.path.exists(join_path("bin", "compile.py")): compile_py = Executable(join_path("bin", "compile.py")) @@ -120,3 +147,20 @@ def installfile(filename): join_path("Template", "LO", "Source", ".make_opts"), join_path(prefix, "Template", "LO", "Source", "make_opts"), ) + + # TODO: Fix for reproducibility, see https://github.com/spack/spack/pull/41128#issuecomment-2305777485 + if "+pythia8" in spec: + with open("install-pythia8-interface", "w") as f: + f.write( + f"""set pythia8_path {spec['pythia8'].prefix} + install mg5amc_py8_interface + """ + ) + mg5 = Executable(join_path(prefix, "bin", "mg5_aMC")) + mg5("install-pythia8-interface") + + def url_for_version(self, version): + major = str(version).split(".")[0] + minor = str(version).split(".")[1] + url = f"https://launchpad.net/mg5amcnlo/{major}.0/{major}.{minor}.x/+download/MG5_aMC_v{version}.tar.gz" + return url