Improve package recipes for some HEP packages (#48185)

* Improve variant robustness for dd4hep and edm4hep

Now variants won't be "false" if there's a typo.

* Use libs instead of manual prefix paths

* Improve cmake for another  hep package

* Fix variant use and style

* Use directories for ODD
This commit is contained in:
Seth R. Johnson 2024-12-19 07:29:08 -05:00 committed by GitHub
parent d8fa6eb559
commit 5640861aeb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 28 additions and 37 deletions

View File

@ -174,32 +174,25 @@ def cmake_args(self):
# However, with spack it is preferrable to have a proper external # However, with spack it is preferrable to have a proper external
# dependency, so we disable it. # dependency, so we disable it.
self.define("DD4HEP_LOAD_ASSIMP", False), self.define("DD4HEP_LOAD_ASSIMP", False),
"-DCMAKE_CXX_STANDARD={0}".format(cxxstd), self.define("CMAKE_CXX_STANDARD", cxxstd),
"-DBUILD_TESTING={0}".format(self.run_tests), self.define("BUILD_TESTING", self.run_tests),
"-DBOOST_ROOT={0}".format(spec["boost"].prefix), self.define("BOOST_ROOT", spec["boost"].prefix),
"-DBoost_NO_BOOST_CMAKE=ON", self.define("Boost_NO_BOOST_CMAKE", True),
] ]
subpackages = []
if spec.satisfies("+ddg4"): packages = [
subpackages += ["DDG4"] "DDG4",
if spec.satisfies("+ddcond"): "DDCond",
subpackages += ["DDCond"] "DDCAD",
if spec.satisfies("+ddcad"): "DDRec",
subpackages += ["DDCAD"] "DDDetectors",
if spec.satisfies("+ddrec"): "DDAlign",
subpackages += ["DDRec"] "DDDigi",
if spec.satisfies("+dddetectors"): "DDEve",
subpackages += ["DDDetectors"] "UtilityApps",
if spec.satisfies("+ddalign"): ]
subpackages += ["DDAlign"] enabled_packages = [p for p in packages if self.spec.variants[package.lower()].value]
if spec.satisfies("+dddigi"): args.append(self.define("DD4HEP_BUILD_PACKAGES", " ".join(enabled_packages)))
subpackages += ["DDDigi"]
if spec.satisfies("+ddeve"):
subpackages += ["DDEve"]
if spec.satisfies("+utilityapps"):
subpackages += ["UtilityApps"]
subpackages = " ".join(subpackages)
args += [self.define("DD4HEP_BUILD_PACKAGES", subpackages)]
return args return args
def setup_run_environment(self, env): def setup_run_environment(self, env):

View File

@ -92,12 +92,11 @@ class Edm4hep(CMakePackage):
extends("python", when="@0.10.6:") extends("python", when="@0.10.6:")
def cmake_args(self): def cmake_args(self):
args = [] args = [
# C++ Standard self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"),
args.append(self.define("CMAKE_CXX_STANDARD", self.spec.variants["cxxstd"].value)) self.define("BUILD_TESTING", self.run_tests),
args.append(self.define("BUILD_TESTING", self.run_tests)) self.define_from_variant("EDM4HEP_WITH_JSON", "json"),
if self.spec.satisfies("@0.99.2: +json"): ]
args.append(self.define_from_variant("EDM4HEP_WITH_JSON", "json"))
return args return args
def setup_run_environment(self, env): def setup_run_environment(self, env):

View File

@ -167,8 +167,8 @@ def setup_run_environment(self, env):
# environment as in Gaudi.xenv # environment as in Gaudi.xenv
env.prepend_path("PATH", self.prefix.scripts) env.prepend_path("PATH", self.prefix.scripts)
env.prepend_path("PYTHONPATH", self.prefix.python) env.prepend_path("PYTHONPATH", self.prefix.python)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) for d in self.libs.directories:
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64) env.prepend_path("LD_LIBRARY_PATH", d)
def url_for_version(self, version): def url_for_version(self, version):
major = str(version[0]) major = str(version[0])

View File

@ -31,11 +31,10 @@ class Opendatadetector(CMakePackage):
depends_on("boost") depends_on("boost")
def cmake_args(self): def cmake_args(self):
args = [] args = [self.define("CMAKE_CXX_STANDARD", self.spec["root"].variants["cxxstd"].value)]
args.append("-DCMAKE_CXX_STANDARD=%s" % self.spec["root"].variants["cxxstd"].value)
return args return args
def setup_run_environment(self, env): def setup_run_environment(self, env):
env.set("OPENDATADETECTOR_DATA", join_path(self.prefix.share, "OpenDataDetector")) env.set("OPENDATADETECTOR_DATA", join_path(self.prefix.share, "OpenDataDetector"))
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) for d in self.libs.directories:
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64) env.prepend_path("LD_LIBRARY_PATH", d)