
* geant4/geant4-data: add builtin_clhep variant and v10.0.4. * geant4: revert addition of builtin_clhep variant. * geant4: fix vecgeom variant only being available for v10.3 and above.
165 lines
4.6 KiB
Python
165 lines
4.6 KiB
Python
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
import glob
|
|
import os
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class Geant4Data(BundlePackage):
|
|
"""A bundle package to hold Geant4 data packages"""
|
|
|
|
homepage = "http://geant4.cern.ch"
|
|
|
|
maintainers("drbenmorgan")
|
|
|
|
tags = ["hep"]
|
|
|
|
version("11.1.0")
|
|
version("11.0.0")
|
|
version("10.7.4")
|
|
version("10.7.3")
|
|
version("10.7.2")
|
|
version("10.7.1")
|
|
version("10.7.0")
|
|
version("10.6.3")
|
|
version("10.6.2")
|
|
version("10.6.1")
|
|
version("10.6.0")
|
|
version("10.5.1")
|
|
version("10.4.3")
|
|
version("10.4.0")
|
|
version("10.3.3")
|
|
version("10.0.4")
|
|
|
|
# Add install phase so we can create the data "view"
|
|
phases = ["install"]
|
|
|
|
# For clarity, declare deps on a Major-Minor version basis as
|
|
# they generally don't change on the patch level
|
|
# Can move to declaring on a dataset basis if needed
|
|
_datasets = {
|
|
"11.1.0:11.1": [
|
|
"g4ndl@4.7",
|
|
"g4emlow@8.2",
|
|
"g4photonevaporation@5.7",
|
|
"g4radioactivedecay@5.6",
|
|
"g4particlexs@4.0",
|
|
"g4pii@1.3",
|
|
"g4realsurface@2.2",
|
|
"g4saiddata@2.0",
|
|
"g4abla@3.1",
|
|
"g4incl@1.0",
|
|
"g4ensdfstate@2.3",
|
|
],
|
|
"11.0.0:11.0": [
|
|
"g4ndl@4.6",
|
|
"g4emlow@8.0",
|
|
"g4photonevaporation@5.7",
|
|
"g4radioactivedecay@5.6",
|
|
"g4particlexs@4.0",
|
|
"g4pii@1.3",
|
|
"g4realsurface@2.2",
|
|
"g4saiddata@2.0",
|
|
"g4abla@3.1",
|
|
"g4incl@1.0",
|
|
"g4ensdfstate@2.3",
|
|
],
|
|
"10.7.0:10.7": [
|
|
"g4ndl@4.6",
|
|
"g4emlow@7.13",
|
|
"g4photonevaporation@5.7",
|
|
"g4radioactivedecay@5.6",
|
|
"g4pii@1.3",
|
|
"g4realsurface@2.2",
|
|
"g4saiddata@2.0",
|
|
"g4abla@3.1",
|
|
"g4incl@1.0",
|
|
"g4ensdfstate@2.3",
|
|
],
|
|
"10.7.1:10.7": ["g4particlexs@3.1.1"],
|
|
"10.7.0": ["g4particlexs@3.1"],
|
|
"10.6.0:10.6": [
|
|
"g4ndl@4.6",
|
|
"g4emlow@7.9.1",
|
|
"g4photonevaporation@5.5",
|
|
"g4radioactivedecay@5.4",
|
|
"g4particlexs@2.1",
|
|
"g4pii@1.3",
|
|
"g4realsurface@2.1.1",
|
|
"g4saiddata@2.0",
|
|
"g4abla@3.1",
|
|
"g4incl@1.0",
|
|
"g4ensdfstate@2.2",
|
|
],
|
|
"10.5.0:10.5": [
|
|
"g4ndl@4.5",
|
|
"g4emlow@7.7",
|
|
"g4photonevaporation@5.3",
|
|
"g4radioactivedecay@5.3",
|
|
"g4particlexs@1.1",
|
|
"g4pii@1.3",
|
|
"g4realsurface@2.1.1",
|
|
"g4saiddata@2.0",
|
|
"g4abla@3.1",
|
|
"g4incl@1.0",
|
|
"g4ensdfstate@2.2",
|
|
],
|
|
"10.4.0:10.4": [
|
|
"g4ndl@4.5",
|
|
"g4emlow@7.3",
|
|
"g4photonevaporation@5.2",
|
|
"g4radioactivedecay@5.2",
|
|
"g4neutronxs@1.4",
|
|
"g4pii@1.3",
|
|
"g4saiddata@1.1",
|
|
"g4abla@3.1",
|
|
"g4ensdfstate@2.2",
|
|
],
|
|
"10.4.2:10.4": ["g4realsurface@2.1.1"],
|
|
"10.4.0:10.4.1": ["g4realsurface@2.1"],
|
|
"10.3.0:10.3": [
|
|
"g4ndl@4.5",
|
|
"g4emlow@6.50",
|
|
"g4neutronxs@1.4",
|
|
"g4pii@1.3",
|
|
"g4realsurface@1.0",
|
|
"g4saiddata@1.1",
|
|
"g4abla@3.0",
|
|
"g4ensdfstate@2.1",
|
|
],
|
|
"10.3.1:10.3": ["g4photonevaporation@4.3.2", "g4radioactivedecay@5.1.1"],
|
|
"10.3.0": ["g4photonevaporation@4.3", "g4radioactivedecay@5.1"],
|
|
"10.0.4": [
|
|
"g4ndl@4.4",
|
|
"g4emlow@6.35",
|
|
"g4photonevaporation@3.0",
|
|
"g4radioactivedecay@4.0",
|
|
"g4neutronxs@1.4",
|
|
"g4pii@1.3",
|
|
"g4realsurface@1.0",
|
|
"g4saiddata@1.1",
|
|
"g4abla@3.0",
|
|
"g4ensdfstate@1.0",
|
|
],
|
|
}
|
|
|
|
for _vers, _dsets in _datasets.items():
|
|
_vers = "@" + _vers
|
|
for _d in _dsets:
|
|
depends_on(_d, type=("build", "run"), when=_vers)
|
|
|
|
@property
|
|
def datadir(self):
|
|
spec = self.spec
|
|
return join_path(spec.prefix.share, "{0}-{1}".format(self.name, self.version.dotted))
|
|
|
|
def install(self, spec, prefix):
|
|
with working_dir(self.datadir, create=True):
|
|
for s in spec.dependencies():
|
|
for d in glob.glob("{0}/data/*".format(s.prefix.share)):
|
|
os.symlink(d, os.path.basename(d))
|