From fa2294d78202ff11f46b1b8981cc90d4f267875c Mon Sep 17 00:00:00 2001 From: Sylvester Joosten <sjoosten@anl.gov> Date: Thu, 15 Apr 2021 13:06:19 +0000 Subject: [PATCH] Move dd4hep override out of the way --- spack/packages/dd4hep-deleteme/old.py | 100 -------------- spack/packages/dd4hep-deleteme/package.py | 124 ------------------ .../dd4hep-deleteme/tbb-workarounds.patch | 41 ------ spack/packages/dd4hep-deleteme/tbb2.patch | 14 -- 4 files changed, 279 deletions(-) delete mode 100644 spack/packages/dd4hep-deleteme/old.py delete mode 100644 spack/packages/dd4hep-deleteme/package.py delete mode 100644 spack/packages/dd4hep-deleteme/tbb-workarounds.patch delete mode 100644 spack/packages/dd4hep-deleteme/tbb2.patch diff --git a/spack/packages/dd4hep-deleteme/old.py b/spack/packages/dd4hep-deleteme/old.py deleted file mode 100644 index 9608c8be4..000000000 --- a/spack/packages/dd4hep-deleteme/old.py +++ /dev/null @@ -1,100 +0,0 @@ -# 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 Dd4hep(CMakePackage): - """DD4hep is a software framework for providing a complete solution for - full detector description (geometry, materials, visualization, readout, - alignment, calibration, etc.) for the full experiment life cycle - (detector concept development, detector optimization, construction, - operation). It offers a consistent description through a single source - of detector information for simulation, reconstruction, analysis, etc. - It distributed under the LGPLv3 License.""" - - homepage = "https://dd4hep.web.cern.ch/dd4hep/" - url = "https://github.com/AIDASoft/DD4hep/archive/v01-16-01.tar.gz" - git = "https://github.com/AIDASoft/DD4hep.git" - - maintainers = ['vvolkl', 'drbenmorgan'] - - version('master', branch='master') - version('1.16.1', sha256='c8b1312aa88283986f89cc008d317b3476027fd146fdb586f9f1fbbb47763f1a') - version('1.16', sha256='ea9755cd255cf1b058e0e3cd743101ca9ca5ff79f4c60be89f9ba72b1ae5ec69') - version('1.15', sha256='992a24bd4b3dfaffecec9d1c09e8cde2c7f89d38756879a47b23208242f4e352') - version('1.14.1', sha256='5b5742f1e23c2b36d3174cca95f810ce909c0eb66f3d6d7acb0ba657819e6717') - version('1.14.0', sha256='b603aa3c0db8dda392253aa71fa4a0f0c3c9715d47df0b895d45c1e8849f4895') - version('1.13.1', sha256='83fa70cd74ce93b2f52f098388dff58d179f05ace5b50aea3f408bb8abf7cb73') - version('1.13.0', sha256='0b1f9d902ebe21a9178c1e41204c066b29f68c8836fd1d03a9ce979811ddb295') - version('1.12.1', sha256='85e8c775ec03c499ce10911e228342e757c81ce9ef2a9195cb253b85175a2e93') - version('1.12.0', sha256='133a1fb8ce0466d2482f3ebb03e60b3bebb9b2d3e33d14ba15c8fbb91706b398') - version('1.11.2', sha256='96a53dd26cb8df11c6dae54669fbc9cc3c90dd47c67e07b24be9a1341c95abc4') - version('1.11.1', sha256='d7902dd7f6744bbda92f6e303ad5a3410eec4a0d2195cdc86f6c1167e72893f0') - version('1.11.0', sha256='25643296f15f9d11ad4ad550b7c3b92e8974fc56f1ee8e4455501010789ae7b6') - version('1.10.0', sha256='1d6b5d1c368dc8bcedd9c61b7c7e1a44bad427f8bd34932516aff47c88a31d95') - - - # Workarounds for various TBB issues in DD4hep v1.11 - # See https://github.com/AIDASoft/DD4hep/pull/613 . - patch('tbb-workarounds.patch', when='@1.11.0') - patch('tbb2.patch', when='@1.12.1') - - variant('xercesc', default=False, description="Enable 'Detector Builders' based on XercesC") - variant('geant4', default=False, description="Enable the simulation part based on Geant4") - variant('assimp', default=False, description="Enable CAD interface based on Assimp") - variant('hepmc3', default=False, description="Enable build with hepmc3") - variant('lcio', default=False, description="Enable build with lcio") - variant('debug', default=False, description="Enable debug build") - - depends_on('cmake @3.12:', type='build') - depends_on('boost @1.49:') - depends_on('root @6.08: +gdml +math +opengl +python +x') - extends('python') - depends_on('xerces-c', when='+xercesc') - depends_on('geant4@10.2.2:', when='+geant4') - depends_on('assimp', when='+assimp') - depends_on('hepmc3', when="+hepmc3") - depends_on('lcio', when="+lcio") - - def cmake_args(self): - spec = self.spec - cxxstd = spec['root'].variants['cxxstd'].value - # root can be built with cxxstd=11, but dd4hep requires 14 - if cxxstd == "11": - cxxstd = "14" - args = [ - "-DCMAKE_CXX_STANDARD={0}".format(cxxstd), - "-DDD4HEP_USE_XERCESC={0}".format(spec.satisfies('+xercesc')), - "-DDD4HEP_USE_GEANT4={0}".format(spec.satisfies('+geant4')), - "-DDD4HEP_USE_LCIO={0}".format(spec.satisfies('+lcio')), - "-DDD4HEP_LOAD_ASSIMP={0}".format(spec.satisfies('+assimp')), - "-DDD4HEP_USE_HEPMC3={0}".format(spec.satisfies('+hepmc3')), - "-DDD4HEP_BUILD_DEBUG={0}".format(spec.satisfies('+debug')), - "-DBUILD_TESTING={0}".format(self.run_tests), - "-DBOOST_ROOT={0}".format(spec['boost'].prefix), - "-DBoost_NO_BOOST_CMAKE=ON", - "-DPYTHON_EXECUTABLE={0}".format(spec['python'].command.path), - ] - return args - - def setup_run_environment(self, env): - # used p.ex. in ddsim to find DDDetectors dir - env.set("DD4hepINSTALL", self.prefix) - env.set("DD4hep_DIR", self.prefix) - env.set("DD4hep_ROOT", self.prefix) - - def url_for_version(self, version): - # dd4hep releases are dashes and padded with a leading zero - # the patch version is omitted when 0 - # so for example v01-12-01, v01-12 ... - major = (str(version[0]).zfill(2)) - minor = (str(version[1]).zfill(2)) - patch = (str(version[2]).zfill(2)) - if version[2] == 0: - url = "https://github.com/AIDASoft/DD4hep/archive/v%s-%s.tar.gz" % (major, minor) - else: - url = "https://github.com/AIDASoft/DD4hep/archive/v%s-%s-%s.tar.gz" % (major, minor, patch) - return url diff --git a/spack/packages/dd4hep-deleteme/package.py b/spack/packages/dd4hep-deleteme/package.py deleted file mode 100644 index 0047bb377..000000000 --- a/spack/packages/dd4hep-deleteme/package.py +++ /dev/null @@ -1,124 +0,0 @@ -# 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 * - - -class Dd4hep(CMakePackage): - """DD4hep is a software framework for providing a complete solution for - full detector description (geometry, materials, visualization, readout, - alignment, calibration, etc.) for the full experiment life cycle - (detector concept development, detector optimization, construction, - operation). It offers a consistent description through a single source - of detector information for simulation, reconstruction, analysis, etc. - It distributed under the LGPLv3 License.""" - - homepage = "https://dd4hep.web.cern.ch/dd4hep/" - url = "https://github.com/AIDASoft/DD4hep/archive/v01-12-01.tar.gz" - git = "https://github.com/AIDASoft/DD4hep.git" - - maintainers = ['vvolkl', 'drbenmorgan'] - - tags = ['hep'] - - version('master', branch='master') - version('1.16.1', sha256='c8b1312aa88283986f89cc008d317b3476027fd146fdb586f9f1fbbb47763f1a') - version('1.16', sha256='ea9755cd255cf1b058e0e3cd743101ca9ca5ff79f4c60be89f9ba72b1ae5ec69') - version('1.15', sha256='992a24bd4b3dfaffecec9d1c09e8cde2c7f89d38756879a47b23208242f4e352') - version('1.14.1', sha256='5b5742f1e23c2b36d3174cca95f810ce909c0eb66f3d6d7acb0ba657819e6717') - version('1.14', sha256='b603aa3c0db8dda392253aa71fa4a0f0c3c9715d47df0b895d45c1e8849f4895') - version('1.13.1', sha256='83fa70cd74ce93b2f52f098388dff58d179f05ace5b50aea3f408bb8abf7cb73') - version('1.13', sha256='0b1f9d902ebe21a9178c1e41204c066b29f68c8836fd1d03a9ce979811ddb295') - version('1.12.1', sha256='85e8c775ec03c499ce10911e228342e757c81ce9ef2a9195cb253b85175a2e93') - version('1.12', sha256='133a1fb8ce0466d2482f3ebb03e60b3bebb9b2d3e33d14ba15c8fbb91706b398') - version('1.11.2', sha256='96a53dd26cb8df11c6dae54669fbc9cc3c90dd47c67e07b24be9a1341c95abc4') - version('1.11.1', sha256='d7902dd7f6744bbda92f6e303ad5a3410eec4a0d2195cdc86f6c1167e72893f0') - version('1.11', sha256='25643296f15f9d11ad4ad550b7c3b92e8974fc56f1ee8e4455501010789ae7b6') - version('1.10', sha256='1d6b5d1c368dc8bcedd9c61b7c7e1a44bad427f8bd34932516aff47c88a31d95') - - generator = 'Ninja' - - # Workarounds for various TBB issues in DD4hep v1.11 - # See https://github.com/AIDASoft/DD4hep/pull/613 . - patch('tbb-workarounds.patch', when='@1.11') - patch('tbb2.patch', when='@1.12.1') - - variant('xercesc', default=False, description="Enable 'Detector Builders' based on XercesC") - variant('geant4', default=False, description="Enable the simulation part based on Geant4") - variant('assimp', default=False, description="Enable CAD interface based on Assimp") - variant('hepmc3', default=False, description="Enable build with hepmc3") - variant('lcio', default=False, description="Enable build with lcio") - variant('edm4hep', default=True, description="Enable build with edm4hep") - variant('geant4units', default=False, description="Use geant4 units throughout") - variant('debug', default=False, - description="Enable debug build flag - adds extra info in" - " some places in addtion to the debug build type") - - depends_on('cmake @3.12:', type='build') - depends_on('ninja', type='build') - depends_on('boost @1.49:') - depends_on('root @6.08: +gdml +math +opengl +python +x') - extends('python') - depends_on('xerces-c', when='+xercesc') - depends_on('geant4@10.2.2:', when='+geant4') - depends_on('assimp@5.0.2:', when='+assimp') - depends_on('hepmc3', when="+hepmc3") - depends_on('lcio', when="+lcio") - depends_on('edm4hep', when="+edm4hep") - - def cmake_args(self): - spec = self.spec - cxxstd = spec['root'].variants['cxxstd'].value - # root can be built with cxxstd=11, but dd4hep requires 14 - if cxxstd == "11": - cxxstd = "14" - args = [ - self.define_from_variant('DD4HEP_USE_EDM4HEP', 'edm4hep'), - self.define_from_variant('DD4HEP_USE_XERCESC', 'xercesc'), - self.define_from_variant('DD4HEP_USE_GEANT4', 'geant4'), - self.define_from_variant('DD4HEP_USE_LCIO', 'lcio'), - self.define_from_variant('DD4HEP_USE_HEPMC3', 'hepmc3'), - self.define_from_variant('DD4HEP_USE_GEANT4_UNITS', 'geant4units'), - self.define_from_variant('DD4HEP_BUILD_DEBUG', 'debug'), - # Downloads assimp from github and builds it on the fly. - # 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", - "-DPYTHON_EXECUTABLE={0}".format(spec['python'].command.path), - ] - return args - - def setup_run_environment(self, env): - # used p.ex. in ddsim to find DDDetectors dir - env.set("DD4hepINSTALL", self.prefix) - env.set("DD4HEP", self.prefix.examples) - env.set("DD4hep_DIR", self.prefix) - env.set("DD4hep_ROOT", self.prefix) - - def url_for_version(self, version): - # dd4hep releases are dashes and padded with a leading zero - # the patch version is omitted when 0 - # so for example v01-12-01, v01-12 ... - base_url = self.url.rsplit('/', 1)[0] - if len(version) == 1: - major = version[0] - minor, patch = 0, 0 - elif len(version) == 2: - major, minor = version - patch = 0 - else: - major, minor, patch = version - # By now the data is normalized enough to handle it easily depending - # on the value of the patch version - if patch == 0: - version_str = 'v%02d-%02d.tar.gz' % (major, minor) - else: - version_str = 'v%02d-%02d-%02d.tar.gz' % (major, minor, patch) - - return base_url + '/' + version_str diff --git a/spack/packages/dd4hep-deleteme/tbb-workarounds.patch b/spack/packages/dd4hep-deleteme/tbb-workarounds.patch deleted file mode 100644 index 659232977..000000000 --- a/spack/packages/dd4hep-deleteme/tbb-workarounds.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/DDDigi/CMakeLists.txt b/DDDigi/CMakeLists.txt -index e6fb1096..88eb5c92 100644 ---- a/DDDigi/CMakeLists.txt -+++ b/DDDigi/CMakeLists.txt -@@ -34,12 +34,10 @@ target_include_directories(DDDigi - - FIND_PACKAGE(TBB QUIET) - if(TBB_FOUND) -- dd4hep_print( "|++> TBB_INCLUDE_DIR --> ${TBB_INCLUDE_DIR}") -- dd4hep_print( "|++> TBB_LIBRARY --> ${TBB_LIBRARY}") -+ dd4hep_print( "|++> TBB_IMPORTED_TARGETS --> ${TBB_IMPORTED_TARGETS}") - dd4hep_print( "|++> TBB found. DDDigi will run multi threaded.") - target_compile_definitions(DDDigi PUBLIC DD4HEP_USE_TBB) -- target_link_libraries(DDDigi ${TBB_LIBRARY}) -- target_include_directories(DDDigi ${TBB_INCLUDE_DIRS}) -+ target_link_libraries(DDDigi PUBLIC ${TBB_IMPORTED_TARGETS}) - else() - dd4hep_print( "|++> TBB not found. DDDigi will only work single threaded.") - endif() -diff --git a/DDDigi/src/DigiKernel.cpp b/DDDigi/src/DigiKernel.cpp -index d62c6694..f2c2e86c 100644 ---- a/DDDigi/src/DigiKernel.cpp -+++ b/DDDigi/src/DigiKernel.cpp -@@ -91,7 +91,7 @@ public: - DigiEventAction* action = 0; - Wrapper(DigiContext& c, DigiEventAction* a) - : context(c), action(a) {} -- Wrapper(Wrapper&& copy) = delete; -+ Wrapper(Wrapper&& copy) = default; - Wrapper(const Wrapper& copy) = default; - Wrapper& operator=(Wrapper&& copy) = delete; - Wrapper& operator=(const Wrapper& copy) = delete; -@@ -111,7 +111,7 @@ class DigiKernel::Processor { - DigiKernel& kernel; - public: - Processor(DigiKernel& k) : kernel(k) {} -- Processor(Processor&& l) = delete; -+ Processor(Processor&& l) = default; - Processor(const Processor& l) = default; - void operator()() const { - int todo = 1; diff --git a/spack/packages/dd4hep-deleteme/tbb2.patch b/spack/packages/dd4hep-deleteme/tbb2.patch deleted file mode 100644 index 932458001..000000000 --- a/spack/packages/dd4hep-deleteme/tbb2.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/DDDigi/src/DigiKernel.cpp b/DDDigi/src/DigiKernel.cpp -index f2c2e86c..f168ef9b 100644 ---- a/DDDigi/src/DigiKernel.cpp -+++ b/DDDigi/src/DigiKernel.cpp -@@ -273,7 +273,7 @@ void DigiKernel::submit(const DigiAction::Actors<DigiEventAction>& actions, Digi - if ( parallel ) { - tbb::task_group que; - for ( auto* i : actions ) -- que.run(Wrapper(context, *i)); -+ que.run(Wrapper(context, i)); - que.wait(); - goto print_stamp; - } - -- GitLab