diff --git a/spack/packages/geant4/CLHEP-10.03.03.patch b/spack/packages/geant4/CLHEP-10.03.03.patch deleted file mode 100644 index b865f3bde24c1eead5cf2237289dfe7f886faaee..0000000000000000000000000000000000000000 --- a/spack/packages/geant4/CLHEP-10.03.03.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/cmake/Modules/FindCLHEP.cmake b/cmake/Modules/FindCLHEP.cmake -index 8b59f1c0a..f616d678e 100644 ---- a/cmake/Modules/FindCLHEP.cmake -+++ b/cmake/Modules/FindCLHEP.cmake -@@ -180,7 +180,10 @@ if(UNIX) - execute_process(COMMAND ${CLHEP_CONFIG_EXECUTABLE} --prefix - OUTPUT_VARIABLE _clhep_config_prefix - OUTPUT_STRIP_TRAILING_WHITESPACE) -- -+ if (_clhep_config_prefix) -+ # Remove wrapping double quotes. -+ string(REGEX REPLACE "\"(.*)\"" "\\1" _clhep_config_prefix "${_clhep_config_prefix}") -+ endif() - list(APPEND _clhep_root_hints ${_clhep_config_prefix}) - endif() - elseif(WIN32 AND NOT UNIX) -diff --git a/cmake/Templates/Geant4Config.cmake.in b/cmake/Templates/Geant4Config.cmake.in -index d6fe408b3..f355be2af 100644 ---- a/cmake/Templates/Geant4Config.cmake.in -+++ b/cmake/Templates/Geant4Config.cmake.in -@@ -268,13 +268,7 @@ set(Geant4_builtin_clhep_FOUND @GEANT4_USE_BUILTIN_CLHEP@) - if(NOT Geant4_builtin_clhep_FOUND) - set(Geant4_system_clhep_ISGRANULAR @GEANT4_USE_SYSTEM_CLHEP_GRANULAR@) - -- set(CLHEP_ROOT_DIR "@CLHEP_ROOT_DIR@") -- set(__GEANT4_OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) -- set(CMAKE_MODULE_PATH "${_geant4_thisdir}/Modules" ${CMAKE_MODULE_PATH}) - find_package(CLHEP @CLHEP_VERSION@ REQUIRED @__g4_clhep_components@) -- set(CMAKE_MODULE_PATH ${__GEANT4_OLD_CMAKE_MODULE_PATH}) -- unset(CLHEP_ROOT_DIR) -- unset(__GEANT4_OLD_CMAKE_MODULE_PATH) - #CLHEP doesn't use target properties fully yet, so always include_directories - include_directories(${CLHEP_INCLUDE_DIRS}) - endif() diff --git a/spack/packages/geant4/cxx17.patch b/spack/packages/geant4/cxx17.patch deleted file mode 100644 index 3845e9e20bb6534467f6713285817b11310ee30d..0000000000000000000000000000000000000000 --- a/spack/packages/geant4/cxx17.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -Naur geant4.10.03.p03/cmake/Modules/Geant4LibraryBuildOptions.cmake geant4.10.03.p03/cmake/Modules/Geant4LibraryBuildOptions.cmake ---- geant4.10.03.p03/cmake/Modules/Geant4LibraryBuildOptions.cmake 2017-10-20 06:30:46.000000000 -0500 -+++ geant4.10.03.p03/cmake/Modules/Geant4LibraryBuildOptions.cmake 2018-04-16 16:48:02.194321171 -0500 -@@ -76,7 +76,7 @@ - # Mark as advanced because most users will not need it - enum_option(GEANT4_BUILD_CXXSTD - DOC "C++ Standard to compile against" -- VALUES 11 14 c++11 c++14 -+ VALUES 11 14 17 c++11 c++14 c++17 - CASE_INSENSITIVE - ) - -@@ -106,6 +106,9 @@ - - # Add Definition to flags for temporary back compatibility - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DG4USE_STD11") -+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 late CMake 2.8 where compile features diff --git a/spack/packages/geant4/cxx17_geant4_10_0.patch b/spack/packages/geant4/cxx17_geant4_10_0.patch deleted file mode 100644 index 228985ebc446c30acf7975f3280e7f4be9431d27..0000000000000000000000000000000000000000 --- a/spack/packages/geant4/cxx17_geant4_10_0.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -Naur geant4/cmake/Modules/G4BuildSettings.cmake geant4/cmake/Modules/G4BuildSettings.cmake ---- geant4/cmake/Modules/G4BuildSettings.cmake 2017-10-20 06:30:46.000000000 -0500 -+++ geant4/cmake/Modules/G4BuildSettings.cmake 2018-04-16 16:48:02.194321171 -0500 -@@ -76,7 +76,7 @@ - # Mark as advanced because most users will not need it - enum_option(GEANT4_BUILD_CXXSTD - DOC "C++ Standard to compile against" -- VALUES 11 14 c++11 c++14 -+ VALUES 11 14 17 c++11 c++14 c++17 - CASE_INSENSITIVE - ) - -@@ -106,6 +106,9 @@ - - # Add Definition to flags for temporary back compatibility - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DG4USE_STD11") -+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 late CMake 2.8 where compile features diff --git a/spack/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch b/spack/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch deleted file mode 100644 index a4938876794fab4c60ab35102fb25da84159192f..0000000000000000000000000000000000000000 --- a/spack/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch +++ /dev/null @@ -1,18 +0,0 @@ -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/spack/packages/geant4/package.py b/spack/packages/geant4/package.py index beabb6b8e0644e81c6a80e186a9d8614a620313d..5e1ae42f56fcd97849b22bb8a81b645d9c7017ee 100644 --- a/spack/packages/geant4/package.py +++ b/spack/packages/geant4/package.py @@ -1,181 +1,7 @@ -# Copyright 2013-2021 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 * +from spack.pkg.builtin.geant4 import Geant4 as BuiltinGeant4 -class Geant4(CMakePackage): - """Geant4 is a toolkit for the simulation of the passage of particles - through matter. Its areas of application include high energy, nuclear - and accelerator physics, as well as studies in medical and space - science.""" - - homepage = "http://geant4.cern.ch/" - url = "https://gitlab.cern.ch/geant4/geant4/-/archive/v10.7.1/geant4-v10.7.1.tar.gz" - - tags = ['hep'] - - maintainers = ['drbenmorgan'] - - version('10.7.2', sha256='593fc85883a361487b17548ba00553501f66a811b0a79039276bb75ad59528cf') - version('10.7.1', sha256='2aa7cb4b231081e0a35d84c707be8f35e4edc4e97aad2b233943515476955293') - version('10.7.0', sha256='c991a139210c7f194720c900b149405090058c00beb5a0d2fac5c40c42a262d4') - version('10.6.3', sha256='bf96d6d38e6a0deabb6fb6232eb00e46153134da645715d636b9b7b4490193d3') - version('10.6.2', sha256='e381e04c02aeade1ed8cdd9fdbe7dcf5d6f0f9b3837a417976b839318a005dbd') - version('10.6.1', sha256='4fd64149ae26952672a81ce5579d3806fda4bd251d486897093ac57633a42b7e') - 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') - - _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('qt', default=False, description='Enable Qt support') - variant('python', default=False, description='Enable Python bindings') - - depends_on('cmake@3.5:', type='build') - depends_on('cmake@3.8:', type='build', when='@10.6.0:') - - depends_on('geant4-data@10.7.2', when='@10.7.2') - depends_on('geant4-data@10.7.1', when='@10.7.1') - depends_on('geant4-data@10.7.0', when='@10.7.0') - depends_on('geant4-data@10.6.3', when='@10.6.3') - depends_on('geant4-data@10.6.2', when='@10.6.2') - depends_on('geant4-data@10.6.1', when='@10.6.1') - 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") - - # Python, with boost requirement dealt with in cxxstd section - depends_on('python@3:', when='+python') - extends('python', when='+python') - conflicts('+python', when='@:10.6.1', - msg='Geant4 <= 10.6.1 cannot be built with Python bindings') - - for std in _cxxstd_values: - # CLHEP version requirements to be reviewed - depends_on('clhep@2.4.4.0: cxxstd=' + std, - when='@10.7.0: cxxstd=' + std) - - depends_on('clhep@2.3.3.0: cxxstd=' + std, - when='@10.3.3:10.6.99 cxxstd=' + std) - - # Spack only supports Xerces-c 3 and above, so no version req - depends_on('xerces-c netaccessor=curl cxxstd=' + std, when='cxxstd=' + std) - - # Vecgeom specific versions for each Geant4 version - depends_on('vecgeom@1.1.8 cxxstd=' + std, - when='@10.7.0: +vecgeom cxxstd=' + std) - 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) - - # Boost.python, conflict handled earlier - depends_on('boost@1.70: +python cxxstd=' + std, - when='+python cxxstd=' + std) - - # Visualization driver dependencies - depends_on("gl", when='+opengl') - depends_on("glu", 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@5: +opengl", 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.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') - +class Geant4(BuiltinGeant4): ## Add to the hardcoded GEANT4 Birk's constants patch('birks.patch', when='@10.7.0:') - - def cmake_args(self): - spec = self.spec - - # Core options - options = [ - self.define_from_variant('GEANT4_BUILD_CXXSTD', 'cxxstd'), - '-DGEANT4_USE_SYSTEM_CLHEP=ON', - '-DGEANT4_USE_SYSTEM_EXPAT=ON', - '-DGEANT4_USE_SYSTEM_ZLIB=ON', - '-DGEANT4_USE_G3TOG4=ON', - '-DGEANT4_USE_GDML=ON', - '-DXERCESC_ROOT_DIR={0}'.format(spec['xerces-c'].prefix) - ] - - # Don't install the package cache file as Spack will set - # up CMAKE_PREFIX_PATH etc for the dependencies - if spec.version > Version('10.5.99'): - options.append('-DGEANT4_INSTALL_PACKAGE_CACHE=OFF') - - # Multithreading - options.append(self.define_from_variant('GEANT4_BUILD_MULTITHREADED', - 'threads')) - if '+threads' in spec: - # Locked at global-dynamic to allow use cases that load the - # geant4 libs at application runtime - 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') - if "+motif" in spec and "+opengl" in spec: - options.append('-DGEANT4_USE_XM=ON') - if "+x11" in spec: - options.append('-DGEANT4_USE_RAYTRACER_X11=ON') - - if '+qt' in spec: - options.append('-DGEANT4_USE_QT=ON') - options.append( - '-DQT_QMAKE_EXECUTABLE=%s' % - spec['qt'].prefix.bin.qmake) - - # Python - if spec.version > Version('10.6.1'): - options.append(self.define_from_variant('GEANT4_USE_PYTHON', - 'python')) - - return options