acts: add v36.0.0, v36.1.0 and fixes (#45874)

* acts: add v36.0.0, v36.1.0 and fixes

This commit makes several changes to the Acts repository, namely:

1. It adds versions 36.0.0 and 36.1.0.
2. It adds the traccc plugin and related dependencies.
3. It updates the version requirements of some dependencies.
4. It adds the Geant4 module of GeoModel.
5. It updates the C++ standard requirement.
6. It adds a new variant determining the scalar type to use.

This commit supercedes #45851. Thanks @jmcarcell for the version
updates; I have added you as co-author.

Co-authored-by: Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com>

* Updates

* alphabetic cmake args

---------

Co-authored-by: Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com>
This commit is contained in:
Stephen Nicholas Swatman 2024-08-23 15:09:29 +02:00 committed by GitHub
parent b8cbbb8e2e
commit f96e8757b8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,7 +4,6 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
from spack.variant import _ConditionalVariantValues
class Acts(CMakePackage, CudaPackage):
@ -33,7 +32,7 @@ class Acts(CMakePackage, CudaPackage):
homepage = "https://acts.web.cern.ch/ACTS/"
git = "https://github.com/acts-project/acts.git"
list_url = "https://github.com/acts-project/acts/releases/"
maintainers("wdconinc")
maintainers("wdconinc", "stephenswat")
tags = ["hep"]
@ -42,6 +41,8 @@ class Acts(CMakePackage, CudaPackage):
# Supported Acts versions
version("main", branch="main")
version("master", branch="main", deprecated=True) # For compatibility
version("36.1.0", commit="3f19d1a0eec1d11937d66d0ef603f0b25b9b4e96", submodules=True)
version("36.0.0", commit="6eca77c45b136861272694edbb61bb77200948a5", submodules=True)
version("35.2.0", commit="b3b09f46d064c43050dd3d21cdf51d7a412134fc", submodules=True)
version("35.1.0", commit="9dfb47b8edeb8b9c75115462079bcb003dd3f031", submodules=True)
version("35.0.0", commit="352b423ec31934f825deb9897780246d60ffc44e", submodules=True)
@ -186,14 +187,18 @@ class Acts(CMakePackage, CudaPackage):
variant(
"benchmarks", default=False, description="Build the performance benchmarks", when="@0.16:"
)
_cxxstd_values = (conditional("14", when="@:0.8.1"), "17", conditional("20", when="@24:"))
variant(
"cxxstd",
default="17",
values=_cxxstd_values,
multi=False,
description="Use the specified C++ standard when building.",
_cxxstd_values = (
conditional("14", when="@:0.8.1"),
conditional("17", when="@:35"),
conditional("20", when="@24:"),
)
_cxxstd_common = {
"values": _cxxstd_values,
"multi": False,
"description": "Use the specified C++ standard when building.",
}
variant("cxxstd", default="17", when="@:35", **_cxxstd_common)
variant("cxxstd", default="20", when="@36:", **_cxxstd_common)
variant(
"examples",
default=False,
@ -219,6 +224,15 @@ class Acts(CMakePackage, CudaPackage):
default="MAX",
description="Log level above which examples should auto-crash",
)
_scalar_values = ["float", "double"]
variant(
"scalar",
default="double",
values=_scalar_values,
multi=False,
sticky=True,
description="Scalar type to use throughout Acts.",
)
# Variants that enable / disable Acts plugins
variant("alignment", default=False, description="Build the alignment package", when="@13:")
@ -271,6 +285,7 @@ class Acts(CMakePackage, CudaPackage):
"tgeo", default=False, description="Build the TGeo plugin", when="@:34 +identification"
)
variant("tgeo", default=False, description="Build the TGeo plugin", when="@35:")
variant("traccc", default=False, description="Build the Traccc plugin", when="@35.1:")
# Variants that only affect Acts examples for now
variant(
@ -329,21 +344,28 @@ class Acts(CMakePackage, CudaPackage):
depends_on("actsvg@0.4.35:", when="@28:")
depends_on("actsvg@0.4.39:", when="@32:")
depends_on("actsvg@0.4.40:", when="@32.1:")
depends_on("acts-algebra-plugins @0.24:", when="+traccc")
depends_on("autodiff @0.6:", when="@17: +autodiff")
depends_on("autodiff @0.5.11:0.5.99", when="@1.2:16 +autodiff")
depends_on("boost @1.62:1.69 +program_options +test", when="@:0.10.3")
depends_on("boost @1.71: +filesystem +program_options +test", when="@0.10.4:")
depends_on("cmake @3.14:", type="build")
depends_on("covfie @0.10:", when="+traccc")
depends_on("cuda @12:", when="+traccc")
depends_on("dd4hep @1.11: +dddetectors +ddrec", when="+dd4hep")
depends_on("dd4hep @1.21: +dddetectors +ddrec", when="@20: +dd4hep")
depends_on("dd4hep +ddg4", when="+dd4hep +geant4 +examples")
depends_on("detray @0.72.1:", when="+traccc")
depends_on("edm4hep @0.4.1:", when="+edm4hep")
depends_on("edm4hep @0.7:", when="@25: +edm4hep")
depends_on("eigen @3.3.7:", when="@15.1:")
depends_on("eigen @3.3.7:3.3.99", when="@:15.0")
depends_on("eigen @3.4:", when="@36.1:")
depends_on("geant4", when="+fatras_geant4")
depends_on("geant4", when="+geant4")
depends_on("geomodel +geomodelg4", when="+geomodel")
depends_on("geomodel @4.6.0:", when="+geomodel")
depends_on("geomodel @6.3.0:", when="+geomodel @36.1:")
depends_on("git-lfs", when="@12.0.0:")
depends_on("gperftools", when="+profilecpu")
depends_on("gperftools", when="+profilemem")
@ -364,6 +386,7 @@ class Acts(CMakePackage, CudaPackage):
depends_on("py-onnxruntime@:1.12", when="+onnx @:23.2")
depends_on("py-onnxruntime@1.12:", when="+onnx @23.3:")
depends_on("py-pybind11 @2.6.2:", when="+python @18:")
depends_on("py-pybind11 @2.13.1:", when="+python @36:")
depends_on("py-pytest", when="+python +unit_tests")
with when("+tgeo"):
@ -375,24 +398,22 @@ class Acts(CMakePackage, CudaPackage):
# ACTS imposes requirements on the C++ standard values used by ROOT
for _cxxstd in _cxxstd_values:
if isinstance(_cxxstd, _ConditionalVariantValues):
for _v in _cxxstd:
depends_on(
f"geant4 cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} +geant4"
)
depends_on(
f"geant4 cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} +fatras_geant4"
)
depends_on(f"root cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} +tgeo")
else:
for _v in _cxxstd:
depends_on(f"geant4 cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} +geant4")
depends_on(
f"geant4 cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} +fatras_geant4"
)
depends_on(f"root cxxstd={_cxxstd}", when=f"cxxstd={_cxxstd} +tgeo")
depends_on(f"root cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} +tgeo")
# When the traccc plugin is enabled, detray should match the Acts scalars
with when("+traccc"):
for _scalar in _scalar_values:
depends_on(f"detray scalar={_scalar}", when=f"scalar={_scalar}")
# ACTS has been using C++17 for a while, which precludes use of old GCC
conflicts("%gcc@:7", when="@0.23:")
# When using C++20, disable gcc 9 and lower.
conflicts("%gcc@:9", when="cxxstd=20")
def cmake_args(self):
spec = self.spec
@ -458,10 +479,12 @@ def plugin_cmake_variant(plugin_name, spack_variant):
plugin_cmake_variant("PODIO", "podio"),
example_cmake_variant("PYTHIA8", "pythia8"),
example_cmake_variant("PYTHON_BINDINGS", "python"),
self.define_from_variant("ACTS_CUSTOM_SCALARTYPE", "scalar"),
plugin_cmake_variant("ACTSVG", "svg"),
plugin_cmake_variant("SYCL", "sycl"),
plugin_cmake_variant("TGEO", "tgeo"),
example_cmake_variant("TBB", "tbb", "USE"),
plugin_cmake_variant("TRACCC", "traccc"),
cmake_variant(unit_tests_label, "unit_tests"),
]