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
# dependency, so we disable it.
self.define("DD4HEP_LOAD_ASSIMP", False),
"-DCMAKE_CXX_STANDARD={0}".format(cxxstd),
"-DBUILD_TESTING={0}".format(self.run_tests),
"-DBOOST_ROOT={0}".format(spec["boost"].prefix),
"-DBoost_NO_BOOST_CMAKE=ON",
self.define("CMAKE_CXX_STANDARD", cxxstd),
self.define("BUILD_TESTING", self.run_tests),
self.define("BOOST_ROOT", spec["boost"].prefix),
self.define("Boost_NO_BOOST_CMAKE", True),
]
subpackages = []
if spec.satisfies("+ddg4"):
subpackages += ["DDG4"]
if spec.satisfies("+ddcond"):
subpackages += ["DDCond"]
if spec.satisfies("+ddcad"):
subpackages += ["DDCAD"]
if spec.satisfies("+ddrec"):
subpackages += ["DDRec"]
if spec.satisfies("+dddetectors"):
subpackages += ["DDDetectors"]
if spec.satisfies("+ddalign"):
subpackages += ["DDAlign"]
if spec.satisfies("+dddigi"):
subpackages += ["DDDigi"]
if spec.satisfies("+ddeve"):
subpackages += ["DDEve"]
if spec.satisfies("+utilityapps"):
subpackages += ["UtilityApps"]
subpackages = " ".join(subpackages)
args += [self.define("DD4HEP_BUILD_PACKAGES", subpackages)]
packages = [
"DDG4",
"DDCond",
"DDCAD",
"DDRec",
"DDDetectors",
"DDAlign",
"DDDigi",
"DDEve",
"UtilityApps",
]
enabled_packages = [p for p in packages if self.spec.variants[package.lower()].value]
args.append(self.define("DD4HEP_BUILD_PACKAGES", " ".join(enabled_packages)))
return args
def setup_run_environment(self, env):

View File

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

View File

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

View File

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