summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Morgan <drbenmorgan@users.noreply.github.com>2020-03-31 09:54:31 +0100
committerGitHub <noreply@github.com>2020-03-31 09:54:31 +0100
commit77e13849026b9b177c27fcaefd134dd32e4329e4 (patch)
tree532e77fa13be15d1a577520ae522303c48a5c290
parent628516c7611126f2a1b1f72d57e4cfd95535cf30 (diff)
downloadspack-77e13849026b9b177c27fcaefd134dd32e4329e4.tar.gz
spack-77e13849026b9b177c27fcaefd134dd32e4329e4.tar.bz2
spack-77e13849026b9b177c27fcaefd134dd32e4329e4.tar.xz
spack-77e13849026b9b177c27fcaefd134dd32e4329e4.zip
geant4: new version 10.6 plus simplifications (#15447)
* geant4: new version 10.6 plus simplifications Add new 10.6.0 release, migrating download of source to use Geant4's public release repo on CERN GitLab. Change versioning scheme to use clearer and standard semantic scheme. Update geant4-data and g4XXX data packages with new versions. Migrate geant4-data as a BundlePackage of the g4XXX packages, installing links to each under a single directory under share for geant4-data. Ensure each g4XXX package exports the environment variable pointing to its location expected by Geant4. Remove "data" variant from Geant4 package and always use geant4-data. Simplify cxxstd variant transport to dependencies. * g4<DATA>: Use self to resolve correct prefix * geant4, data: Fix flake8 errors * g4photonevaporation: flake8 fix * geant4: vecgeom version depends_on Geant4 major.minor versions have specific dependencies on vecgeom versions. Add missing vecgeom version for geant4 10.5, and match version requirements for vecgeom in geant4 depends_on. * geant4: c++17 patch specific for 10.4.3 * geant4: simplify geant4-data setup * geant4: Use new define_from_variant function * geant4: fix flake8 errors
-rw-r--r--var/spack/repos/builtin/packages/g4abla/package.py13
-rw-r--r--var/spack/repos/builtin/packages/g4emlow/package.py17
-rw-r--r--var/spack/repos/builtin/packages/g4ensdfstate/package.py7
-rw-r--r--var/spack/repos/builtin/packages/g4incl/package.py34
-rw-r--r--var/spack/repos/builtin/packages/g4ndl/package.py6
-rw-r--r--var/spack/repos/builtin/packages/g4neutronxs/package.py7
-rw-r--r--var/spack/repos/builtin/packages/g4particlexs/package.py35
-rw-r--r--var/spack/repos/builtin/packages/g4photonevaporation/package.py11
-rw-r--r--var/spack/repos/builtin/packages/g4pii/package.py6
-rw-r--r--var/spack/repos/builtin/packages/g4radioactivedecay/package.py14
-rw-r--r--var/spack/repos/builtin/packages/g4realsurface/package.py10
-rw-r--r--var/spack/repos/builtin/packages/g4saiddata/package.py7
-rw-r--r--var/spack/repos/builtin/packages/g4tendl/package.py8
-rw-r--r--var/spack/repos/builtin/packages/geant4-data/package.py153
-rw-r--r--var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch18
-rw-r--r--var/spack/repos/builtin/packages/geant4/package.py176
-rw-r--r--var/spack/repos/builtin/packages/vecgeom/package.py1
17 files changed, 329 insertions, 194 deletions
diff --git a/var/spack/repos/builtin/packages/g4abla/package.py b/var/spack/repos/builtin/packages/g4abla/package.py
index b14f88d4d9..bed114d825 100644
--- a/var/spack/repos/builtin/packages/g4abla/package.py
+++ b/var/spack/repos/builtin/packages/g4abla/package.py
@@ -11,12 +11,12 @@ class G4abla(Package):
"""Geant4 data for nuclear shell effects in INCL/ABLA hadronic mode"""
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.3.0.tar.gz"
+
maintainers = ['drbenmorgan']
- version(
- '3.0', sha256='99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014')
- version(
- '3.1', sha256='7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed')
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('3.1', sha256='7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed')
+ version('3.0', sha256='99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -24,6 +24,11 @@ class G4abla(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4ABLA{0}'
+ .format(self.version))
+ env.set('G4ABLADATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4emlow/package.py b/var/spack/repos/builtin/packages/g4emlow/package.py
index df6af19e26..713b9da631 100644
--- a/var/spack/repos/builtin/packages/g4emlow/package.py
+++ b/var/spack/repos/builtin/packages/g4emlow/package.py
@@ -11,12 +11,14 @@ class G4emlow(Package):
"""Geant4 data files for low energy electromagnetic processes."""
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.6.50.tar.gz"
+
maintainers = ['drbenmorgan']
- version(
- '6.50', sha256='c97be73fece5fb4f73c43e11c146b43f651c6991edd0edf8619c9452f8ab1236')
- version(
- '7.3', sha256='583aa7f34f67b09db7d566f904c54b21e95a9ac05b60e2bfb794efb569dba14e')
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('7.9', sha256='4abf9aa6cda91e4612676ce4d2d8a73b91184533aa66f9aad19a53a8c4dc3aff')
+ version('7.7', sha256='16dec6adda6477a97424d749688d73e9bd7d0b84d0137a67cf341f1960984663')
+ version('7.3', sha256='583aa7f34f67b09db7d566f904c54b21e95a9ac05b60e2bfb794efb569dba14e')
+ version('6.50', sha256='c97be73fece5fb4f73c43e11c146b43f651c6991edd0edf8619c9452f8ab1236')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -24,6 +26,11 @@ class G4emlow(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4EMLOW{0}'
+ .format(self.version))
+ env.set('G4LEDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
- return ("http://geant4.web.cern.ch/support/source/G4EMLOW.%s.tar.gz" % version)
+ return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4ensdfstate/package.py b/var/spack/repos/builtin/packages/g4ensdfstate/package.py
index 06b50b3754..36bc897f4b 100644
--- a/var/spack/repos/builtin/packages/g4ensdfstate/package.py
+++ b/var/spack/repos/builtin/packages/g4ensdfstate/package.py
@@ -14,8 +14,9 @@ class G4ensdfstate(Package):
maintainers = ['drbenmorgan']
- version('2.1', sha256='933e7f99b1c70f24694d12d517dfca36d82f4e95b084c15d86756ace2a2790d9')
+ # Only versions relevant to Geant4 releases built by spack are added
version('2.2', sha256='dd7e27ef62070734a4a709601f5b3bada6641b111eb7069344e4f99a01d6e0a6')
+ version('2.1', sha256='933e7f99b1c70f24694d12d517dfca36d82f4e95b084c15d86756ace2a2790d9')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -24,7 +25,9 @@ class G4ensdfstate(Package):
install_tree(self.stage.source_path, install_path)
def setup_dependent_run_environment(self, env, dependent_spec):
- env.set('G4ENSDFSTATEDATA', self.prefix.share.data)
+ install_path = join_path(self.prefix.share, 'data', 'G4ENSDFSTATE{0}'
+ .format(self.version))
+ env.set('G4ENSDFSTATEDATA', install_path)
def url_for_version(self, version):
"""Handle version string."""
diff --git a/var/spack/repos/builtin/packages/g4incl/package.py b/var/spack/repos/builtin/packages/g4incl/package.py
new file mode 100644
index 0000000000..e21010f411
--- /dev/null
+++ b/var/spack/repos/builtin/packages/g4incl/package.py
@@ -0,0 +1,34 @@
+# Copyright 2013-2020 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)
+
+
+from spack import *
+
+
+class G4incl(Package):
+ """Geant4 data for evaluated particle cross-sections on natural
+ composition of elements"""
+ homepage = "http://geant4.web.cern.ch"
+ url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.1.0.tar.gz"
+
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('1.0', sha256='716161821ae9f3d0565fbf3c2cf34f4e02e3e519eb419a82236eef22c2c4367d')
+
+ def install(self, spec, prefix):
+ mkdirp(join_path(prefix.share, 'data'))
+ install_path = join_path(prefix.share, 'data', "G4INCL{0}"
+ .format(self.version))
+ install_tree(self.stage.source_path, install_path)
+
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4INCL{0}'
+ .format(self.version))
+ env.set('G4INCLDATA', install_path)
+
+ def url_for_version(self, version):
+ """Handle version string."""
+ return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.%s.tar.gz" % version) \ No newline at end of file
diff --git a/var/spack/repos/builtin/packages/g4ndl/package.py b/var/spack/repos/builtin/packages/g4ndl/package.py
index 7ab6c9f26d..3eaad0f101 100644
--- a/var/spack/repos/builtin/packages/g4ndl/package.py
+++ b/var/spack/repos/builtin/packages/g4ndl/package.py
@@ -14,6 +14,7 @@ class G4ndl(Package):
maintainers = ['drbenmorgan']
+ version('4.6', sha256='9d287cf2ae0fb887a2adce801ee74fb9be21b0d166dab49bcbee9408a5145408')
version('4.5', sha256='cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e')
def install(self, spec, prefix):
@@ -22,6 +23,11 @@ class G4ndl(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4NDL{0}'
+ .format(self.version))
+ env.set('G4NEUTRONHPDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4neutronxs/package.py b/var/spack/repos/builtin/packages/g4neutronxs/package.py
index df3de0696c..41acc423a6 100644
--- a/var/spack/repos/builtin/packages/g4neutronxs/package.py
+++ b/var/spack/repos/builtin/packages/g4neutronxs/package.py
@@ -15,6 +15,8 @@ class G4neutronxs(Package):
maintainers = ['drbenmorgan']
+ # Only versions relevant to Geant4 releases built by spack are added
+ # Dataset not used after Geant4 10.4.x
version('1.4', sha256='57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd')
def install(self, spec, prefix):
@@ -23,6 +25,11 @@ class G4neutronxs(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4NEUTRONXS{0}'
+ .format(self.version))
+ env.set('G4NEUTRONXSDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NEUTRONXS.%s.tar.gz" % version
diff --git a/var/spack/repos/builtin/packages/g4particlexs/package.py b/var/spack/repos/builtin/packages/g4particlexs/package.py
new file mode 100644
index 0000000000..e573025b64
--- /dev/null
+++ b/var/spack/repos/builtin/packages/g4particlexs/package.py
@@ -0,0 +1,35 @@
+# Copyright 2013-2020 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)
+
+
+from spack import *
+
+
+class G4particlexs(Package):
+ """Geant4 data for evaluated particle cross-sections on
+ natural composition of elements"""
+ homepage = "http://geant4.web.cern.ch"
+ url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.2.1.tar.gz"
+
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('2.1', sha256='094d103372bbf8780d63a11632397e72d1191dc5027f9adabaf6a43025520b41')
+ version('1.1', sha256='100a11c9ed961152acfadcc9b583a9f649dda4e48ab314fcd4f333412ade9d62')
+
+ def install(self, spec, prefix):
+ mkdirp(join_path(prefix.share, 'data'))
+ install_path = join_path(prefix.share, 'data', "G4PARTICLEXS{0}"
+ .format(self.version))
+ install_tree(self.stage.source_path, install_path)
+
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4PARTICLEXS{0}'
+ .format(self.version))
+ env.set('G4PARTICLEXSDATA', install_path)
+
+ def url_for_version(self, version):
+ """Handle version string."""
+ return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.%s.tar.gz" % version) \ No newline at end of file
diff --git a/var/spack/repos/builtin/packages/g4photonevaporation/package.py b/var/spack/repos/builtin/packages/g4photonevaporation/package.py
index 4e5c62b999..93d7f82de4 100644
--- a/var/spack/repos/builtin/packages/g4photonevaporation/package.py
+++ b/var/spack/repos/builtin/packages/g4photonevaporation/package.py
@@ -14,8 +14,11 @@ class G4photonevaporation(Package):
maintainers = ['drbenmorgan']
- version('4.3.2', sha256='d4641a6fe1c645ab2a7ecee09c34e5ea584fb10d63d2838248bfc487d34207c7')
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('5.5', sha256='5995dda126c18bd7f68861efde87b4af438c329ecbe849572031ceed8f5e76d7')
+ version('5.3', sha256='d47ababc8cbe548065ef644e9bd88266869e75e2f9e577ebc36bc55bf7a92ec8')
version('5.2', sha256='83607f8d36827b2a7fca19c9c336caffbebf61a359d0ef7cee44a8bcf3fc2d1f')
+ version('4.3.2', sha256='d4641a6fe1c645ab2a7ecee09c34e5ea584fb10d63d2838248bfc487d34207c7')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -24,6 +27,12 @@ class G4photonevaporation(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data',
+ 'PhotonEvaporation{0}'
+ .format(self.version))
+ env.set('G4LEVELGAMMADATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4pii/package.py b/var/spack/repos/builtin/packages/g4pii/package.py
index 2e238a6418..ea91b5b9c9 100644
--- a/var/spack/repos/builtin/packages/g4pii/package.py
+++ b/var/spack/repos/builtin/packages/g4pii/package.py
@@ -14,6 +14,7 @@ class G4pii(Package):
maintainers = ['drbenmorgan']
+ # Only versions relevant to Geant4 releases built by spack are added
version('1.3', sha256='6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926')
def install(self, spec, prefix):
@@ -22,6 +23,11 @@ class G4pii(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4PII{0}'
+ .format(self.version))
+ env.set('G4PIIDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py
index c281ff63cd..6f34e89cea 100644
--- a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py
+++ b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py
@@ -14,15 +14,25 @@ class G4radioactivedecay(Package):
maintainers = ['drbenmorgan']
- version('5.1.1', sha256='f7a9a0cc998f0d946359f2cb18d30dff1eabb7f3c578891111fc3641833870ae')
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('5.4', sha256='240779da7d13f5bf0db250f472298c3804513e8aca6cae301db97f5ccdcc4a61')
+ version('5.3', sha256='5c8992ac57ae56e66b064d3f5cdfe7c2fee76567520ad34a625bfb187119f8c1')
version('5.2', sha256='99c038d89d70281316be15c3c98a66c5d0ca01ef575127b6a094063003e2af5d')
+ version('5.1.1', sha256='f7a9a0cc998f0d946359f2cb18d30dff1eabb7f3c578891111fc3641833870ae')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
- install_path = join_path(prefix.share, 'data', 'RadioactiveDecay{0}'
+ install_path = join_path(prefix.share, 'data',
+ 'RadioactiveDecay{0}'
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data',
+ 'RadioactiveDecay{0}'
+ .format(self.version))
+ env.set('G4RADIOACTIVEDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4realsurface/package.py b/var/spack/repos/builtin/packages/g4realsurface/package.py
index b741b61ef8..dee32da8b9 100644
--- a/var/spack/repos/builtin/packages/g4realsurface/package.py
+++ b/var/spack/repos/builtin/packages/g4realsurface/package.py
@@ -14,9 +14,10 @@ class G4realsurface(Package):
maintainers = ['drbenmorgan']
- version('1.0', sha256='3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1')
- version('2.1', sha256='2a287adbda1c0292571edeae2082a65b7f7bd6cf2bf088432d1d6f889426dcf3')
+ # Only versions relevant to Geant4 releases built by spack are added
version('2.1.1', sha256='90481ff97a7c3fa792b7a2a21c9ed80a40e6be386e581a39950c844b2dd06f50')
+ version('2.1', sha256='2a287adbda1c0292571edeae2082a65b7f7bd6cf2bf088432d1d6f889426dcf3')
+ version('1.0', sha256='3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -24,6 +25,11 @@ class G4realsurface(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'RealSurface{0}'
+ .format(self.version))
+ env.set('G4REALSURFACEDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return "http://geant4-data.web.cern.ch/geant4-data/datasets/{0}RealSurface.{1}.tar.gz".format(
diff --git a/var/spack/repos/builtin/packages/g4saiddata/package.py b/var/spack/repos/builtin/packages/g4saiddata/package.py
index 7b03177f73..0091d09744 100644
--- a/var/spack/repos/builtin/packages/g4saiddata/package.py
+++ b/var/spack/repos/builtin/packages/g4saiddata/package.py
@@ -14,6 +14,8 @@ class G4saiddata(Package):
maintainers = ['drbenmorgan']
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('2.0', sha256='1d26a8e79baa71e44d5759b9f55a67e8b7ede31751316a9e9037d80090c72e91')
version('1.1', sha256='a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f')
def install(self, spec, prefix):
@@ -22,6 +24,11 @@ class G4saiddata(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4SAIDDATA{0}'
+ .format(self.version))
+ env.set('G4SAIDXSDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.%s.tar.gz" % version
diff --git a/var/spack/repos/builtin/packages/g4tendl/package.py b/var/spack/repos/builtin/packages/g4tendl/package.py
index 2a3ecbc074..aac083f539 100644
--- a/var/spack/repos/builtin/packages/g4tendl/package.py
+++ b/var/spack/repos/builtin/packages/g4tendl/package.py
@@ -14,8 +14,9 @@ class G4tendl(Package):
maintainers = ['drbenmorgan']
- version('1.3', sha256='52ad77515033a5d6f995c699809b464725a0e62099b5e55bf07c8bdd02cd3bce')
+ # Only versions relevant to Geant4 releases built by spack are added
version('1.3.2', sha256='3b2987c6e3bee74197e3bd39e25e1cc756bb866c26d21a70f647959fc7afb849')
+ version('1.3', sha256='52ad77515033a5d6f995c699809b464725a0e62099b5e55bf07c8bdd02cd3bce')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -23,6 +24,11 @@ class G4tendl(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4TENDL{0}'
+ .format(self.version))
+ env.set('G4PARTICLEHPDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/geant4-data/package.py b/var/spack/repos/builtin/packages/geant4-data/package.py
index f5c4e72fac..4157fb76c6 100644
--- a/var/spack/repos/builtin/packages/geant4-data/package.py
+++ b/var/spack/repos/builtin/packages/geant4-data/package.py
@@ -8,90 +8,89 @@ import os
import glob
-class Geant4Data(Package):
- """An umbrella package to hold Geant4 data packages"""
+class Geant4Data(BundlePackage):
+ """A bundle package to hold Geant4 data packages"""
homepage = "http://geant4.cern.ch"
- url = "http://geant4-data.web.cern.ch/geant4-data/ReleaseNotes/ReleaseNotes4.10.3.html"
maintainers = ['drbenmorgan']
- version('10.03.p03', sha256='3e0d4d4e6854c8667d930fd5beaec09b7e6ec41f4847935e5d6a2720d0094b30', expand=False)
- version('10.04', sha256='f67fb899b99348a1a7e471a05f249f972e7e303c78238fc5f693b99968642255', expand=False)
-
- # geant4@10.03.p03
- depends_on("g4abla@3.0", when='@10.03.p03 ')
- depends_on("g4emlow@6.50", when='@10.03.p03 ')
- depends_on("g4ndl@4.5", when='@10.03.p03 ')
- depends_on("g4neutronxs@1.4", when='@10.03.p03 ')
- depends_on("g4saiddata@1.1", when='@10.03.p03 ')
- depends_on("g4ensdfstate@2.1", when='@10.03.p03 ')
- depends_on("g4photonevaporation@4.3.2", when='@10.03.p03 ')
- depends_on("g4pii@1.3", when='@10.03.p03 ')
- depends_on("g4radioactivedecay@5.1.1", when='@10.03.p03 ')
- depends_on("g4realsurface@1.0", when='@10.03.p03 ')
- depends_on("g4tendl@1.3", when='@10.03.p03 ')
- # geant4@10.04
- depends_on("g4abla@3.1", when='@10.04 ')
- depends_on("g4emlow@7.3", when='@10.04 ')
- depends_on("g4ndl@4.5", when='@10.04 ')
- depends_on("g4neutronxs@1.4", when='@10.04 ')
- depends_on("g4saiddata@1.1", when='@10.04 ')
- depends_on("g4ensdfstate@2.2", when='@10.04 ')
- depends_on("g4photonevaporation@5.2", when='@10.04 ')
- depends_on("g4pii@1.3", when='@10.04 ')
- depends_on("g4radioactivedecay@5.2", when='@10.04 ')
- depends_on("g4realsurface@2.1", when='@10.04 ')
- depends_on("g4tendl@1.3.2", when='@10.04 ')
+ version('10.6.0')
+ version('10.5.1')
+ version('10.4.3')
+ version('10.4.0')
+ version('10.3.3')
+
+ # 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
+ # geant4@10.6.X
+ depends_on("g4ndl@4.6", when='@10.6.0')
+ depends_on("g4emlow@7.9", when='@10.6.0')
+ depends_on("g4photonevaporation@5.5", when='@10.6.0')
+ depends_on("g4radioactivedecay@5.4", when='@10.6.0')
+ depends_on("g4particlexs@2.1", when='@10.6.0')
+ depends_on("g4pii@1.3", when='@10.6.0')
+ depends_on("g4realsurface@2.1.1", when='@10.6.0')
+ depends_on("g4saiddata@2.0", when='@10.6.0')
+ depends_on("g4abla@3.1", when='@10.6.0')
+ depends_on("g4incl@1.0", when='@10.6.0')
+ depends_on("g4ensdfstate@2.2", when='@10.6.0')
+
+ # geant4@10.5.X
+ depends_on("g4ndl@4.5", when='@10.5.0:10.5.9999')
+ depends_on("g4emlow@7.7", when='@10.5.0:10.5.9999')
+ depends_on("g4photonevaporation@5.3", when='@10.5.0:10.5.9999')
+ depends_on("g4radioactivedecay@5.3", when='@10.5.0:10.5.9999')
+ depends_on("g4particlexs@1.1", when='@10.5.0:10.5.9999')
+ depends_on("g4pii@1.3", when='@10.5.0:10.5.9999')
+ depends_on("g4realsurface@2.1.1", when='@10.5.0:10.5.9999')
+ depends_on("g4saiddata@2.0", when='@10.5.0:10.5.9999')
+ depends_on("g4abla@3.1", when='@10.5.0:10.5.9999')
+ depends_on("g4incl@1.0", when='@10.5.0:10.5.9999')
+ depends_on("g4ensdfstate@2.2", when='@10.5.0:10.5.9999')
+
+ # geant4@10.4.X
+ depends_on("g4ndl@4.5", when='@10.4.0:10.4.9999')
+ depends_on("g4emlow@7.3", when='@10.4.0:10.4.9999')
+ depends_on("g4photonevaporation@5.2", when='@10.4.0:10.4.9999')
+ depends_on("g4radioactivedecay@5.2", when='@10.4.0:10.4.9999')
+ depends_on("g4neutronxs@1.4", when='@10.4.0:10.4.9999')
+ depends_on("g4pii@1.3", when='@10.4.0:10.4.9999')
+
+ depends_on("g4realsurface@2.1.1", when='@10.4.2:10.4.9999')
+ depends_on("g4realsurface@2.1", when='@10.4.0:10.4.1')
+
+ depends_on("g4saiddata@1.1", when='@10.4.0:10.4.9999')
+ depends_on("g4abla@3.1", when='@10.4.0:10.4.9999')
+ depends_on("g4ensdfstate@2.2", when='@10.4.0:10.4.9999')
+
+ # geant4@10.3.X
+ depends_on("g4ndl@4.5", when='@10.3.0:10.3.9999')
+ depends_on("g4emlow@6.50", when='@10.3.0:10.3.9999')
+
+ depends_on("g4photonevaporation@4.3.2", when='@10.3.1:10.3.9999')
+ depends_on("g4photonevaporation@4.3", when='@10.3.0')
+
+ depends_on("g4radioactivedecay@5.1.1", when='@10.3.1:10.3.9999')
+ depends_on("g4radioactivedecay@5.1", when='@10.3.0')
+
+ depends_on("g4neutronxs@1.4", when='@10.3.0:10.3.9999')
+ depends_on("g4pii@1.3", when='@10.3.0:10.3.9999')
+ depends_on("g4realsurface@1.0", when='@10.3.0:10.3.9999')
+ depends_on("g4saiddata@1.1", when='@10.3.0:10.3.9999')
+ depends_on("g4abla@3.0", when='@10.3.0:10.3.9999')
+ depends_on("g4ensdfstate@2.1", when='@10.3.0:10.3.9999')
def install(self, spec, prefix):
spec = self.spec
- version = self.version
- major = version[0]
- minor = version[1]
- if len(version) > 2:
- patch = version[-1]
- else:
- patch = 0
- data = 'Geant4-%s.%s.%s/data' % (major, minor, patch)
+ data = '{0}-{1}'.format(self.name, self.version.dotted)
datadir = join_path(spec.prefix.share, data)
+
with working_dir(datadir, create=True):
- for d in glob.glob('%s/share/data/*' %
- spec['g4abla'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4emlow'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4ndl'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4saiddata'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4neutronxs'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4ensdfstate'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4photonevaporation'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4pii'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4radioactivedecay'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4realsurface'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4tendl'].prefix):
- os.symlink(d, os.path.basename(d))
-
- def url_for_version(self, version):
- """Handle version string."""
- url = 'http://geant4-data.web.cern.ch/geant4-data/ReleaseNotes/'
- url = url + 'ReleaseNotes4.{0}.{1}.html'.format(version[0], version[1])
- return url
+ for s in spec.dependencies():
+ for d in glob.glob('{0}/data/*'.format(s.prefix.share)):
+ os.symlink(d, os.path.basename(d))
diff --git a/var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch b/var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch
new file mode 100644
index 0000000000..a493887679
--- /dev/null
+++ b/var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch
@@ -0,0 +1,18 @@
+diff --git a/cmake/Modules/G4BuildSettings.cmake b/cmake/Modules/G4BuildSettings.cmake
+index f68cb0a44..6bf4b6948 100644
+--- a/cmake/Modules/G4BuildSettings.cmake
++++ b/cmake/Modules/G4BuildSettings.cmake
+@@ -205,6 +205,13 @@ endif()
+ # Add Definition to flags for temporary back compatibility
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DG4USE_STD11")
+
++# Spack patch to support use of C++ features deprecated/removed in C++17
++# Only checked on AppleClang for now
++if(GEANT4_BUILD_CXXSTD GREATER 14)
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES=1")
++endif()
++#----
++
+ # Hold any appropriate compile flag(s) in variable for later export to
+ # config files. Needed to support clients using late CMake 2.8 where compile features
+ # are not available.
diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py
index f3bcb121f6..4bf35792aa 100644
--- a/var/spack/repos/builtin/packages/geant4/package.py
+++ b/var/spack/repos/builtin/packages/geant4/package.py
@@ -4,8 +4,6 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
-import os
-import glob
class Geant4(CMakePackage):
@@ -15,84 +13,113 @@ class Geant4(CMakePackage):
science."""
homepage = "http://geant4.cern.ch/"
- url = "http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz"
+ url = "https://gitlab.cern.ch/geant4/geant4/-/archive/v10.6.0/geant4-v10.6.0.tar.gz"
maintainers = ['drbenmorgan']
- version('10.05.p01', sha256='f4a292220500fad17e0167ce3153e96e3410ecbe96284e572dc707f63523bdff')
- version('10.04', sha256='f6d883132f110eb036c69da2b21df51f13c585dc7b99d4211ddd32f4ccee1670')
- version('10.03.p03', sha256='a164f49c038859ab675eec474d08c9d02be8c4be9c0c2d3aa8e69adf89e1e138')
+ version('10.6.0', sha256='eebe6a170546064ff81ab3b00f513ccd1d4122a026514982368d503ac55a4ee4')
+ version('10.5.1', sha256='2397eb859dc4de095ff66059d8bda9f060fdc42e10469dd7890946293eeb0e39')
+ version('10.4.3', sha256='67f3bb6405a2c77e573936c2b933f5a4a33915aa379626a2eb3012009b91e1da')
+ version('10.4.0', sha256='e919b9b0a88476e00c0b18ab65d40e6a714b55ee4778f66bac32a5396c22aa74')
+ version('10.3.3', sha256='bcd36a453da44de9368d1d61b0144031a58e4b43a6d2d875e19085f2700a89d8')
- variant('qt', default=False, description='Enable Qt support')
+ _cxxstd_values = ('11', '14', '17')
+ variant('cxxstd',
+ default=_cxxstd_values[0],
+ values=_cxxstd_values,
+ multi=False,
+ description='Use the specified C++ standard when building.')
+
+ variant('threads', default=True, description='Build with multithreading')
variant('vecgeom', default=False, description='Enable vecgeom support')
variant('opengl', default=False, description='Optional OpenGL support')
variant('x11', default=False, description='Optional X11 support')
variant('motif', default=False, description='Optional motif support')
- variant('threads', default=True, description='Build with multithreading')
- variant('data', default=True, description='Install geant4 data')
-
- variant('cxxstd',
- default='11',
- values=('11', '14', '17'),
- multi=False,
- description='Use the specified C++ standard when building.')
+ variant('qt', default=False, description='Enable Qt support')
depends_on('cmake@3.5:', type='build')
+ depends_on('cmake@3.8:', type='build', when='@10.6.0:')
- # C++11 support
- depends_on("xerces-c cxxstd=11", when="cxxstd=11")
- depends_on("clhep@2.3.3.0: cxxstd=11", when="@10.03.p03: cxxstd=11")
- depends_on("vecgeom cxxstd=11", when="+vecgeom cxxstd=11")
-
- # C++14 support
- depends_on("xerces-c cxxstd=14", when="cxxstd=14")
- depends_on("clhep@2.3.3.0: cxxstd=14", when="@10.03.p03: cxxstd=14")
- depends_on("vecgeom cxxstd=14", when="+vecgeom cxxstd=14")
-
- # C++17 support
- depends_on("xerces-c cxxstd=17", when="cxxstd=17")
- depends_on("clhep@2.3.3.0: cxxstd=17", when="@10.03.p03: cxxstd=17")
- patch('cxx17.patch', when='@:10.03.p99 cxxstd=17')
- patch('cxx17_geant4_10_0.patch', level=1, when='@10.04.00: cxxstd=17')
- depends_on("vecgeom cxxstd=17", when="+vecgeom cxxstd=17")
+ depends_on('geant4-data@10.6.0', when='@10.6.0')
+ depends_on('geant4-data@10.5.1', when='@10.5.1')
+ depends_on('geant4-data@10.4.3', when='@10.4.3')
+ depends_on('geant4-data@10.4.0', when='@10.4.0')
+ depends_on('geant4-data@10.3.3', when='@10.3.3')
depends_on("expat")
depends_on("zlib")
+
+ for std in _cxxstd_values:
+ # CLHEP version requirements to be reviewed
+ depends_on('clhep@2.3.3.0: cxxstd=' + std,
+ when='@10.3.3: cxxstd=' + std)
+
+ # Spack only supports Xerces-c 3 and above, so no version req
+ depends_on('xerces-c cxxstd=' + std, when='cxxstd=' + std)
+
+ # Vecgeom specific versions for each Geant4 version
+ depends_on('vecgeom@1.1.5 cxxstd=' + std,
+ when='@10.6.0:10.6.99 +vecgeom cxxstd=' + std)
+ depends_on('vecgeom@1.1.0 cxxstd=' + std,
+ when='@10.5.0:10.5.99 +vecgeom cxxstd=' + std)
+ depends_on('vecgeom@0.5.2 cxxstd=' + std,
+ when='@10.4.0:10.4.99 +vecgeom cxxstd=' + std)
+ depends_on('vecgeom@0.3rc cxxstd=' + std,
+ when='@10.3.0:10.3.99 +vecgeom cxxstd=' + std)
+
+ # Visualization driver ependencies
depends_on("gl", when='+opengl')
depends_on("glx", when='+opengl+x11')
depends_on("libx11", when='+x11')
depends_on("libxmu", when='+x11')
depends_on("motif", when='+motif')
- depends_on("qt@4.8:", when="+qt")
-
- # if G4 data not installed with geant4
- # depend on G4 data packages
- # this allows external data installations
- # to avoid duplication
-
- depends_on('geant4-data@10.03.p03', when='@10.03.p03 ~data')
- depends_on('geant4-data@10.04', when='@10.04 ~data')
- depends_on('geant4-data@10.05.p01', when='@10.05.p01 ~data')
+ depends_on("qt@5:", when="+qt")
# As released, 10.03.03 has issues with respect to using external
# CLHEP.
- patch('CLHEP-10.03.03.patch', level=1, when='@10.03.p03')
+ patch('CLHEP-10.03.03.patch', level=1, when='@10.3.3')
+ # These patches can be applied independent of the cxxstd value?
+ patch('cxx17.patch', when='@:10.3.99 cxxstd=17')
+ patch('cxx17_geant4_10_0.patch', level=1, when='@10.4.0 cxxstd=17')
+ patch('geant4-10.4.3-cxx17-removed-features.patch',
+ level=1, when='@10.4.3 cxxstd=17')
def cmake_args(self):
spec = self.spec
+ # Core options
options = [
- '-DGEANT4_USE_GDML=ON',
+ '-DGEANT4_BUILD_CXXSTD=c++{0}'.format(
+ self.spec.variants['cxxstd'].value),
'-DGEANT4_USE_SYSTEM_CLHEP=ON',
- '-DGEANT4_USE_SYSTEM_CLHEP_GRANULAR=ON',
- '-DGEANT4_USE_G3TOG4=ON',
- '-DGEANT4_INSTALL_DATA=ON',
- '-DGEANT4_BUILD_TLS_MODEL=global-dynamic',
'-DGEANT4_USE_SYSTEM_EXPAT=ON',
'-DGEANT4_USE_SYSTEM_ZLIB=ON',
- '-DXERCESC_ROOT_DIR:STRING=%s' %
- spec['xerces-c'].prefix, ]
+ '-DGEANT4_USE_G3TOG4=ON',
+ '-DGEANT4_USE_GDML=ON',
+ '-DXERCESC_ROOT_DIR={0}'.format(spec['xerces-c'].prefix)
+ ]
+ # Multithreading
+ options.append(self.define_from_variant('GEANT4_BUILD_MULTITHREADED',
+ 'threads'))
+ if '+threads' in spec:
+ # This should be a variant
+ options.append('-DGEANT4_BUILD_TLS_MODEL=global-dynamic')
+
+ # install the data with geant4
+ datadir = spec['geant4-data'].prefix.share
+ dataver = '{0}-{1}'.format(spec['geant4-data'].name,
+ spec['geant4-data'].version.dotted)
+ datapath = join_path(datadir, dataver)
+ options.append('-DGEANT4_INSTALL_DATADIR={0}'.format(datapath))
+
+ # Vecgeom
+ if '+vecgeom' in spec:
+ options.append('-DGEANT4_USE_USOLIDS=ON')
+ options.append('-DUSolids_DIR=%s' % spec[
+ 'vecgeom'].prefix.lib.CMake.USolids)
+
+ # Visualization options
if 'platform=darwin' not in spec:
if "+x11" in spec and "+opengl" in spec:
options.append('-DGEANT4_USE_OPENGL_X11=ON')
@@ -101,61 +128,10 @@ class Geant4(CMakePackage):
if "+x11" in spec:
options.append('-DGEANT4_USE_RAYTRACER_X11=ON')
- options.append('-DGEANT4_BUILD_CXXSTD=c++{0}'.format(
- self.spec.variants['cxxstd'].value))
-
if '+qt' in spec:
options.append('-DGEANT4_USE_QT=ON')
options.append(
'-DQT_QMAKE_EXECUTABLE=%s' %
spec['qt'].prefix.bin.qmake)
- if '+vecgeom' in spec:
- options.append('-DGEANT4_USE_USOLIDS=ON')
- options.append('-DUSolids_DIR=%s' % spec[
- 'vecgeom'].prefix.lib.CMake.USolids)
-
- on_or_off = lambda opt: 'ON' if '+' + opt in spec else 'OFF'
- options.append('-DGEANT4_BUILD_MULTITHREADED=' + on_or_off('threads'))
-
- # install the data with geant4
- options.append('-DGEANT4_INSTALL_DATA=' + on_or_off('data'))
-
return options
-
- def url_for_version(self, version):
- """Handle Geant4's unusual version string."""
- return ("http://geant4.cern.ch/support/source/geant4.%s.tar.gz" % version)
-
- @run_before('cmake')
- def make_data_links(self):
- if '+data' in self.spec:
- return
- spec = self.spec
- version = self.version
- major = version[0]
- minor = version[1]
- if len(version) > 2:
- patch = version[-1]
- else:
- patch = 0
- datadir = 'Geant4-%s.%s.%s/data' % (major, minor, patch)
- with working_dir(join_path(spec.prefix.share, datadir),
- create=True):
- dirs = glob.glob('%s/%s/*' %
- (spec['geant4-data'].prefix.share, datadir))
- for d in dirs:
- target = os.readlink(d)
- os.symlink(target, os.path.basename(target))
-
- def setup_dependent_build_environment(self, env, dependent_spec):
- version = self.version
- major = version[0]
- minor = version[1]
- if len(version) > 2:
- patch = version[-1]
- else:
- patch = 0
- datadir = 'Geant4-%s.%s.%s' % (major, minor, patch)
- env.append_path('CMAKE_MODULE_PATH', join_path(
- self.prefix.lib64, datadir, 'Modules'))
diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py
index 2e28586ef6..20352f7712 100644
--- a/var/spack/repos/builtin/packages/vecgeom/package.py
+++ b/var/spack/repos/builtin/packages/vecgeom/package.py
@@ -21,6 +21,7 @@ class Vecgeom(CMakePackage, CudaPackage):
version('1.1.6', sha256='c4806a6b67d01b40074b8cc6865d78574a6a1c573be51696f2ecdf98b9cb954a')
version('1.1.5', sha256='da674f3bbc75c30f56c1a2d251fa8930c899f27fa64b03a36569924030d87b95')
version('1.1.3', sha256='ada09e8b6b2fa6c058290302b2cb5a6c2e644192aab1623c31d18c6a2f4c01c8')
+ version('1.1.0', sha256='e9d1ef83ff591fe4f9ef744a4d3155a3dc7e90ddb6735b24f3afe4c2dc3f7064')
version('1.0.1', sha256='1eae7ac9014c608e8d8db5568058b8c0fea1a1dc7a8f54157a3a1c997b6fd9eb')
version('0.5.2', tag='v00.05.02',
commit='a7e0828c915ff936a79e672d1dd84b087a323b51')