diff options
author | Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com> | 2024-08-21 15:41:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-21 08:41:18 -0500 |
commit | d3cdb2a3447d148066355535fef4e81f6e8450db (patch) | |
tree | 3357c4b8ee3f0d4cc57028b8e8be682c59ca8eef /var | |
parent | 34df21b62ccf023e672ca6cb9f8fcda4586df627 (diff) | |
download | spack-d3cdb2a3447d148066355535fef4e81f6e8450db.tar.gz spack-d3cdb2a3447d148066355535fef4e81f6e8450db.tar.bz2 spack-d3cdb2a3447d148066355535fef4e81f6e8450db.tar.xz spack-d3cdb2a3447d148066355535fef4e81f6e8450db.zip |
sherpa: add v3.0.0, remove deprecated @:2.2.10 (#45101)
* Remove deprecated versions
* Add sherpa 3.0.0 and CMake builds
* Address comments in #45101
* Add builder classes for cmake and autotools
---------
Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/sherpa/package.py | 183 |
1 files changed, 58 insertions, 125 deletions
diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py index f132fb0678..f8d0ffa793 100644 --- a/var/spack/repos/builtin/packages/sherpa/package.py +++ b/var/spack/repos/builtin/packages/sherpa/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Sherpa(AutotoolsPackage): +class Sherpa(CMakePackage, AutotoolsPackage): """Sherpa is a Monte Carlo event generator for the Simulation of High-Energy Reactions of PArticles in lepton-lepton, lepton-photon, photon-photon, lepton-hadron and hadron-hadron collisions.""" @@ -22,100 +22,15 @@ class Sherpa(AutotoolsPackage): license("GPL-3.0-only") + version("3.0.0", sha256="e460d8798b323c4ef663293a2c918b1463e9641b35703a54d70d25c852c67d36") version("2.2.15", sha256="0300fd719bf6a089b7dc5441f720e669ac1cb030045d87034a4733bee98e7bbc") version("2.2.14", sha256="f17d88d7f3bc4234a9db3872e8a3c1f3ef99e1e2dc881ada5ddf848715dc82da") version("2.2.13", sha256="ed1fd1372923c191ca44897802d950702b810382260e7464d36ac3234c5c8a64") version("2.2.12", sha256="4ba78098e45aaac0bc303d1b5abdc15809f30b407abf9457d99b55e63384c83d") version("2.2.11", sha256="5e12761988b41429f1d104f84fdf352775d233cde7a165eb64e14dcc20c3e1bd") - version( - "2.2.10", - sha256="ae23bc8fdcc9f8c26becc41692822233b62203cd72a7e0dab2ca19316aa0aad7", - deprecated=True, - ) - version( - "2.2.9", - sha256="ebc836d42269a0c4049d3fc439a983d19d12595d9a06db2d18765bd1e301923e", - deprecated=True, - ) - version( - "2.2.8", - sha256="ff198cbae5de445e6fe383151021ef24b1628dffc0da6bf3737753f6672a0091", - deprecated=True, - ) - version( - "2.0.0", - sha256="0e873b27bb1be46ca5ed451d1b8514ca84c10221057b11be5952180076e6f848", - deprecated=True, - ) - version( - "1.3.1", - sha256="31881207838d341358db64e3fdadfeee1ea2f6d1cb42f370014f622f579159ae", - deprecated=True, - ) - version( - "1.3.0", - sha256="08b13c65b66f2edde6996d2a06762a12a0682ffb64bca43654df47321e5039a0", - deprecated=True, - ) - version( - "1.2.3", - sha256="029727337a430d6675a1a12dce3ced0411041e79ddaf4ce3b9466035cf6c8804", - deprecated=True, - ) - version( - "1.2.2", - sha256="6e7b5ea80b99f1378519009e494030d6cf4c4491f91218d749eabb8ffaad9ac1", - deprecated=True, - ) - version( - "1.2.1", - sha256="838462f4a1e8768135363aa6b8532fd8f5e5789a269b858f8e3728ab37f6a1d1", - deprecated=True, - ) - version( - "1.2.0", - sha256="509508fd0ad72aaf55ab484da8b6bc0b31688c955adcda62a3e8f94689cebf99", - deprecated=True, - ) - version( - "1.1.3", - sha256="6335e5eb1fc304e9618496d3ddb198b3591e57b27db6e876af8fd649a8b98c93", - deprecated=True, - ) - version( - "1.1.2", - sha256="e1689cad6700dc013af0afb0d33729ac2b5e9841d2f325c85b10d773e7f8a80e", - deprecated=True, - ) - version( - "1.1.1", - sha256="b80e1d75934be79b73400d2c95d96e88651626ea29ddcb9d8fde9c1812039e29", - deprecated=True, - ) - version( - "1.1.0", - sha256="8052d137d668353dc710f8691b921e772820d39e20361f0d616ee2da1ac798f2", - deprecated=True, - ) - version( - "1.0.9", - sha256="fe28db91ea8264364395c7e5efeeae3e5c01ea1343e0db7fe13924c6f17fb963", - deprecated=True, - ) - version( - "1.0.8", - sha256="6e346bafd13b5b05ad566a73759da6d5e64d65c5036780cc4911d93277e891fa", - deprecated=True, - ) - version( - "1.0.7", - sha256="d1eeefd96c6822ea8eb926447ca91ec4a1c714e4746323e92b1e17764e51ff0b", - deprecated=True, - ) - version( - "1.0.6", - sha256="358d417ec3afde24618c222bc9b742bc5102d435622b3cd6f2e3f72d03656255", - deprecated=True, + + build_system( + conditional("cmake", when="@3:"), conditional("autotools", when="@:2"), default="cmake" ) depends_on("c", type="build") # generated @@ -134,11 +49,11 @@ class Sherpa(AutotoolsPackage): variant("analysis", default=True, description="Enable analysis components") variant("mpi", default=False, description="Enable MPI") variant("python", default=False, description="Enable Python API") - variant("hepmc2", default=True, description="Enable HepMC (version 2.x) support") + variant("hepmc2", default=True, when="@:2", description="Enable HepMC (version 2.x) support") variant("hepmc3", default=True, description="Enable HepMC (version 3.x) support") variant("hepmc3root", default=False, description="Enable HepMC (version 3.1+) ROOT support") variant("rivet", default=False, description="Enable Rivet support") - variant("fastjet", default=True, description="Enable FASTJET") + variant("fastjet", default=True, when="@:2", description="Enable FASTJET") variant("openloops", default=False, description="Enable OpenLoops") variant("recola", default=False, description="Enable Recola") variant("lhole", default=False, description="Enable Les Houches One-Loop Generator interface") @@ -148,7 +63,7 @@ class Sherpa(AutotoolsPackage): variant("pythia", default=True, description="Enable fragmentation/decay interface to Pythia") variant("blackhat", default=False, description="Enable BLACKHAT support") variant("ufo", default=False, description="Enable UFO support") - variant("hztool", default=False, description="Enable HZTOOL support") + variant("hztool", default=False, when="@:2", description="Enable HZTOOL support") variant( "libs", default="shared,static", @@ -164,11 +79,10 @@ class Sherpa(AutotoolsPackage): # Note that the delphes integration seems utterly broken: https://sherpa.hepforge.org/trac/ticket/305 # autotools dependencies are needed at runtime to compile processes - # at least as long as sherpa is an autotools package - depends_on("autoconf") - depends_on("automake") - depends_on("libtool") - depends_on("m4") + depends_on("autoconf", when="@:2") + depends_on("automake", when="@:2") + depends_on("libtool", when="@:2") + depends_on("m4", when="@:2") depends_on("texinfo", type="build") depends_on("sqlite") @@ -188,10 +102,12 @@ class Sherpa(AutotoolsPackage): depends_on("root", when="+root") depends_on("lhapdf", when="+lhapdf") depends_on("gzip", when="+gzip") - depends_on("pythia6", when="+pythia") + depends_on("pythia6", when="+pythia @:2") + depends_on("pythia8", when="+pythia @3:") depends_on("blackhat", when="+blackhat") depends_on("hztool", when="+hztool") # depends_on('cernlib', when='+cernlib') + depends_on("libzip", when="@3:") filter_compiler_wrappers("share/SHERPA-MC/makelibs") @@ -213,6 +129,42 @@ class Sherpa(AutotoolsPackage): string=True, ) + def flag_handler(self, name, flags): + flags = list(flags) + if name == "cxxflags": + flags.append("-std=c++" + self.spec.variants["cxxstd"].value) + + if "+cms" in self.spec: + flags.extend(["-fuse-cxa-atexit", "-O2"]) + if self.spec.target.family == "x86_64": + flags.append("-m64") + + return (None, None, flags) + + +class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): + def cmake_args(self): + args = [ + self.define_from_variant("SHERPA_ENABLE_ANALYSIS", "analysis"), + self.define_from_variant("SHERPA_ENABLE_BLACKHAT", "blackhat"), + self.define_from_variant("SHERPA_ENABLE_GZIP", "gzip"), + self.define_from_variant("SHERPA_ENABLE_HEPMC3", "hepmc3"), + self.define_from_variant("SHERPA_ENABLE_HEPMC3_ROOT", "hepmc3root"), + self.define_from_variant("SHERPA_ENABLE_LHAPDF", "lhapdf"), + self.define_from_variant("SHERPA_ENABLE_LHOLE", "lhole"), + self.define_from_variant("SHERPA_ENABLE_MPI", "mpi"), + self.define_from_variant("SHERPA_ENABLE_OPENLOOPS", "openloops"), + self.define_from_variant("SHERPA_ENABLE_PYTHIA8", "pythia"), + self.define_from_variant("SHERPA_ENABLE_PYTHON", "python"), + self.define_from_variant("SHERPA_ENABLE_RECOLA", "recola"), + self.define_from_variant("SHERPA_ENABLE_RIVET", "rivet"), + self.define_from_variant("SHERPA_ENABLE_ROOT", "root"), + self.define_from_variant("SHERPA_ENABLE_UFO", "ufo"), + ] + return args + + +class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): args = [] args.append("--enable-binreloc") @@ -227,18 +179,13 @@ class Sherpa(AutotoolsPackage): args.extend(self.enable_or_disable("pythia")) hepmc_root = lambda x: self.spec["hepmc"].prefix args.extend(self.enable_or_disable("hepmc2", activation_value=hepmc_root)) - if self.spec.satisfies("@3:"): - args.extend(self.enable_or_disable("hepmc3", activation_value="prefix")) - args.extend(self.enable_or_disable("rivet", activation_value="prefix")) - args.extend(self.enable_or_disable("lhapdf", activation_value="prefix")) - else: - # See https://gitlab.com/sherpa-team/sherpa/-/issues/348 - if self.spec.satisfies("+hepmc3"): - args.append("--enable-hepmc3=" + self.spec["hepmc3"].prefix) - if self.spec.satisfies("+rivet"): - args.append("--enable-rivet=" + self.spec["rivet"].prefix) - if self.spec.satisfies("+lhapdf"): - args.append("--enable-lhapdf=" + self.spec["lhapdf"].prefix) + # See https://gitlab.com/sherpa-team/sherpa/-/issues/348 + if self.spec.satisfies("+hepmc3"): + args.append("--enable-hepmc3=" + self.spec["hepmc3"].prefix) + if self.spec.satisfies("+rivet"): + args.append("--enable-rivet=" + self.spec["rivet"].prefix) + if self.spec.satisfies("+lhapdf"): + args.append("--enable-lhapdf=" + self.spec["lhapdf"].prefix) args.extend(self.enable_or_disable("fastjet", activation_value="prefix")) args.extend(self.enable_or_disable("openloops", activation_value="prefix")) @@ -258,20 +205,6 @@ class Sherpa(AutotoolsPackage): return args - def flag_handler(self, name, flags): - flags = list(flags) - if name == "cxxflags": - flags.append("-std=c++" + self.spec.variants["cxxstd"].value) - - if "+cms" in self.spec: - flags.extend(["-fuse-cxa-atexit", "-O2"]) - if self.spec.target.family == "x86_64": - flags.append("-m64") - - return (None, None, flags) - - # This may not be needed when this package is changed to be a CMake package - # since it's specific to makelibs def install(self, spec, prefix): # Make sure the path to the provided libtool is used instead of the system one filter_file( |