diff --git a/VERSION b/VERSION
index 24ba9a38de68d00674ec97b283a967699716b9f4..c8e38b614057b7e417c63fde44726a4143de9da0 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.7.0
+2.9.0
diff --git a/containers/builder/Dockerfile b/containers/builder/Dockerfile
index 3adcd9f1595aa9261e24b4ec9a2532a7d0a64654..5c1f58d3373cfa687410502273cb910c6c6d1baf 100644
--- a/containers/builder/Dockerfile
+++ b/containers/builder/Dockerfile
@@ -1,6 +1,6 @@
 # Builder with Argonne EIC software
 #
-FROM eicweb.phy.anl.gov:4567/containers/image_recipes/debian_spack:snapshot-20210111
+FROM eicweb.phy.anl.gov:4567/containers/image_recipes/debian_spack:snapshot-20210408
 
 LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \
       name="eic_builder" \
@@ -11,7 +11,7 @@ LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \
 
 ENV DOCKERFILE_BASE=debian            \
     DOCKERFILE_DISTRO=debian          \
-    DOCKERFILE_DISTRO_VERSION=20210111-testing \
+    DOCKERFILE_DISTRO_VERSION=20210408-testing \
     SPACK_ROOT=/opt/spack             \
     DEBIAN_FRONTEND=noninteractive    \
     CURRENTLY_BUILDING_DOCKER_IMAGE=1 \
diff --git a/containers/builder/spack.yaml b/containers/builder/spack.yaml
index d40f4248c45f1ae9415f53de1999f6cf83ce022c..b64f8f22a0a386cfb23e9f0b9bfecdcc8b851089 100644
--- a/containers/builder/spack.yaml
+++ b/containers/builder/spack.yaml
@@ -1,19 +1,19 @@
 spack:
   specs:
     - madx@5.06.1
-    - cmake@3.18.1
+    - cmake@3.20.0
     - fmt@7.1.2 cxxstd=17
-    - spdlog@1.5.0
+    - spdlog@1.8.1
     - nlohmann-json@3.9.1
     - heppdt@3.04.01
-    - clhep@2.4.1.3 cxxstd=17
-    - eigen@3.3.8
+    - clhep@2.4.4.0 cxxstd=17
+    - eigen@3.3.9
     - python@3.7.8
     - py-pip
     - py-numpy
     - py-pyyaml
-    - xrootd@4.12.3 cxxstd=17 +python
-    - root@6.22.06 cxxstd=17 
+    - xrootd@5.1.0 cxxstd=17 +python
+    - root@6.22.08 cxxstd=17 
           +fftw +fortran +gdml +http +mlp +pythia8 
           +root7 +tmva +vc +xrootd +ssl ^mesa+opengl 
           -llvm -osmesa
@@ -22,8 +22,8 @@ spack:
     - stow@2.3.1
     - cairo+fc+ft+X+pdf+gobject
     - podio@0.13
-    - geant4@10.6.2 cxxstd=17 +opengl +vecgeom +x11 +qt ^qt +opengl
-    - dd4hep@1.14.1 +geant4 +assimp +hepmc3 +ipo
+    - geant4@10.7.1 cxxstd=17 +opengl +vecgeom +x11 +qt ^qt +opengl
+    - dd4hep@1.16.1 +geant4 +assimp +hepmc3 +ipo
     - acts@5.00.0 +dd4hep +digitization +identification +json +tgeo +ipo
     - gaudi@34.0
     - dawn@3_91a
diff --git a/containers/release/Dockerfile.in b/containers/release/Dockerfile.in
index 1a36fee9dfb192ac6d20011c27fdd5619fdc8353..8b259c63dc249d783d64bc6eb47cc482b9d26298 100644
--- a/containers/release/Dockerfile.in
+++ b/containers/release/Dockerfile.in
@@ -12,7 +12,7 @@ RUN find -L /usr/local/* -type f -exec readlink -f '{}' \; | \
     grep 'x-executable\|x-archive\|x-sharedlib' | \
     awk -F: '{print $1}' | xargs strip -s
 
-FROM eicweb.phy.anl.gov:4567/containers/image_recipes/debian_minimal:testing-20210111
+FROM eicweb.phy.anl.gov:4567/containers/image_recipes/debian_minimal:testing-20210408
 LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \
       name="eic" \
       group="eic" \
@@ -23,7 +23,7 @@ LABEL maintainer="Sylvester Joosten <sjoosten@anl.gov>" \
 ## @ENV@ will be automatically expanded to auto-load the 
 ## runtime environment
 ENV DOCKERFILE_DISTRO=debian          \
-    DOCKERFILE_DISTRO_VERSION=20210111-testing   \
+    DOCKERFILE_DISTRO_VERSION=20210408-testing   \
     DEBIAN_FRONTEND=noninteractive    \
 @ENV@
 
diff --git a/spack/README.md b/spack/README.md
index 917b7c198971887ce470c28d6518cb921caaeaad..5ddb0d389e45671245811ab25c004773492b942d 100644
--- a/spack/README.md
+++ b/spack/README.md
@@ -16,11 +16,10 @@ Then use spack as you normally would.
     - `dawn`: A tool to visualize detector geometries.
     - `dawncut`: A tool to edit detector visualizations.
   * Package overrides
-    * `acts`: Added version 3.00.0 which is still missing in the main repo.
-    * `dd4hep`: Disabled use of the Ninja backend for cmake as it was running into dependency issues building assymp
+    * `dd4hep`: REMOVED Disabled use of the Ninja backend for cmake as it was running into dependency issues building assymp
     * `fmt`: Modified compiler flags to build shared library version.
-    * `geant4`: Added explicit glu dependency for OpenGL
-    * `graphviz`: Set upper version limit to stop applying implicit.patch to the newest version
+    * `madx`: Add madx package
+    * `mesa`: fix issue in meson step
     * `qt`: Added gcc10.patch to fix issues compiling QT with gcc10
     * `root`: Re-enabled http module as this builds fine on modern Linux systems and we use this heavily.
 
diff --git a/spack/packages/acts/README.md b/spack/packages/acts/README.md
deleted file mode 100644
index 5d8500e622718cd278d5f869f5102d3f20216cb0..0000000000000000000000000000000000000000
--- a/spack/packages/acts/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Same as develop version at 2021-1-17, except that I added acts version 4.1
diff --git a/spack/packages/acts/package.py b/spack/packages/acts/package.py
deleted file mode 100644
index 59abfb5b2af2daca5010b44fb6a679d2443e1444..0000000000000000000000000000000000000000
--- a/spack/packages/acts/package.py
+++ /dev/null
@@ -1,217 +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 Acts(CMakePackage, CudaPackage):
-    """
-    A Common Tracking Software (Acts)
-
-    This project contains an experiment-independent set of track reconstruction
-    tools. The main philosophy is to provide high-level track reconstruction
-    modules that can be used for any tracking detector. The description of the
-    tracking detector's geometry is optimized for efficient navigation and
-    quick extrapolation of tracks. Converters for several common geometry
-    description languages exist. Having a highly performant, yet largely
-    customizable implementation of track reconstruction algorithms was a
-    primary objective for the design of this toolset. Additionally, the
-    applicability to real-life HEP experiments plays major role in the
-    development process. Apart from algorithmic code, this project also
-    provides an event data model for the description of track parameters and
-    measurements.
-
-    Key features of this project include: tracking geometry description which
-    can be constructed from TGeo, DD4Hep, or GDML input, simple and efficient
-    event data model, performant and highly flexible algorithms for track
-    propagation and fitting, basic seed finding algorithms.
-    """
-
-    homepage = "http://acts.web.cern.ch/ACTS/"
-    git      = "https://github.com/acts-project/acts.git"
-    maintainers = ['HadrienG2']
-
-    tags = ['hep']
-
-    # Supported Acts versions
-    version('master', branch='master')
-    version('5.00.0', commit='df77b91a7d37b8db6ed028a4d737014b5ad86bb7')
-    version('4.01.0', commit='c383bf434ef69939b47e840e0eac0ba632e6af9f')
-    version('4.00.0', commit='ed64b4b88d366b63adc4a8d1afe5bc97aa5751eb')
-    version('3.00.0', commit='e20260fccb469f4253519d3f0ddb3191b7046db3')
-    version('2.00.0', commit='8708eae2b2ccdf57ab7b451cfbba413daa1fc43c')
-    version('1.02.1', commit='f6ebeb9a28297ba8c54fd08b700057dd4ff2a311')
-    version('1.02.0', commit='e69b95acc9a264e63aded7d1714632066e090542')
-    version('1.01.0', commit='836fddd02c3eff33825833ff97d6abda5b5c20a0')
-    version('1.00.0', commit='ec9ce0bcdc837f568d42a12ddf3fc9c80db62f5d')
-    version('0.32.0', commit='a4cedab7e727e1327f2835db29d147cc86b21054')
-    version('0.31.0', commit='cfbd901555579a2f32f4efe2b76a7048442b42c3')
-    version('0.30.0', commit='a71ef0a9c742731611645214079884585a92b15e')
-    version('0.29.0', commit='33aa3e701728112e8908223c4a7fd521907c8ea4')
-    version('0.28.0', commit='55626b7401eeb93fc562e79bcf385f0ad0ac48bf')
-    version('0.27.1', commit='8ba3010a532137bc0ab6cf83a38b483cef646a01')
-    version('0.27.0', commit='f7b1a1c27d5a95d08bb67236ad0e117fcd1c679f')
-    version('0.26.0', commit='cf542b108b31fcc349fc18fb0466f889e4e42aa6')
-    version('0.25.2', commit='76bf1f3e4be51d4d27126b473a2caa8d8a72b320')
-    version('0.25.1', commit='6e8a1ea6d2c7385a78e3e190efb2a8a0c1fa957f')
-    version('0.25.0', commit='0aca171951a214299e8ff573682b1c5ecec63d42')
-    version('0.24.0', commit='ef4699c8500bfea59a5fe88bed67fde2f00f0adf')
-    version('0.23.0', commit='dc443dd7e663bc4d7fb3c1e3f1f75aaf57ffd4e4')
-    version('0.22.1', commit='ca1b8b1645db6b552f44c48d2ff34c8c29618f3a')
-    version('0.22.0', commit='2c8228f5843685fc0ae69a8b95dd8fc001139efb')
-    version('0.21.0', commit='10b719e68ddaca15b28ac25b3daddce8c0d3368d')
-    version('0.20.0', commit='1d37a849a9c318e8ca4fa541ef8433c1f004637b')
-    version('0.19.0', commit='408335636486c421c6222a64372250ef12544df6')
-    version('0.18.0', commit='d58a68cf75b52a5e0f563bc237f09250aa9da80c')
-    version('0.17.0', commit='0789f654ff484b013fd27e5023cf342785ea8d97')
-    version('0.16.0', commit='b3d965fe0b8ae335909d79114ef261c6b996773a')
-    version('0.15.0', commit='267c28f69c561e64369661a6235b03b5a610d6da')
-    version('0.14.0', commit='38d678fcb205b77d60326eae913fbb1b054acea1')
-    version('0.13.0', commit='b33f7270ddbbb33050b7ec60b4fa255dc2bfdc88')
-    version('0.12.1', commit='a8b3d36e7c6cb86487637589e0eff7bbe626054a')
-    version('0.12.0', commit='f9cda77299606d78c889fb1db2576c1971a271c4')
-    version('0.11.1', commit='c21196cd6c3ecc6da0f14d0a9ef227a274be584b')
-    version('0.11.0', commit='22bcea1f19adb0021ca61b843b95cfd2462dd31d')
-    version('0.10.5', commit='b6f7234ca8f18ee11e57709d019c14bf41cf9b19')
-    version('0.10.4', commit='42cbc359c209f5cf386e620b5a497192c024655e')
-    version('0.10.3', commit='a3bb86b79a65b3d2ceb962b60411fd0df4cf274c')
-    version('0.10.2', commit='64cbf28c862d8b0f95232b00c0e8c38949d5015d')
-    version('0.10.1', commit='0692dcf7824efbc504fb16f7aa00a50df395adbc')
-    version('0.10.0', commit='30ef843cb00427f9959b7de4d1b9843413a13f02')
-    version('0.09.5', commit='12b11fe8b0d428ccb8e92dda7dc809198f828672')
-    version('0.09.4', commit='e5dd9fbe179201e70347d1a3b9fa1899c226798f')
-    version('0.09.3', commit='a8f31303ee8720ed2946bfe2d59e81d0f70e307e')
-    version('0.09.2', commit='4e1f7fa73ffe07457080d787e206bf6466fe1680')
-    version('0.09.1', commit='69c451035516cb683b8f7bc0bab1a25893e9113d')
-    version('0.09.0', commit='004888b0a412f5bbaeef2ffaaeaf2aa182511494')
-    version('0.08.2', commit='c5d7568714e69e7344582b93b8d24e45d6b81bf9')
-    version('0.08.1', commit='289bdcc320f0b3ff1d792e29e462ec2d3ea15df6')
-    version('0.08.0', commit='99eedb38f305e3a1cd99d9b4473241b7cd641fa9')
-
-    # Variants that affect the core Acts library
-    variant('benchmarks', default=False, description='Build the performance benchmarks')
-    variant('examples', default=False, description='Build the examples')
-    variant('integration_tests', default=False, description='Build the integration tests')
-    variant('unit_tests', default=False, description='Build the unit tests')
-
-    # Variants that enable / disable Acts plugins
-    variant('autodiff', default=False, description='Build the auto-differentiation plugin')
-    variant('dd4hep', default=False, description='Build the DD4hep plugin')
-    variant('digitization', default=False, description='Build the geometric digitization plugin')
-    variant('fatras', default=False, description='Build the FAst TRAcking Simulation package')
-    variant('identification', default=False, description='Build the Identification plugin')
-    variant('json', default=False, description='Build the Json plugin')
-    variant('legacy', default=False, description='Build the Legacy package')
-    # FIXME: Cannot build ONNX plugin as Spack doesn't have an ONNX runtime
-    # FIXME: Cannot build SyCL plugin yet as Spack doesn't have SyCL support
-    variant('tgeo', default=False, description='Build the TGeo plugin')
-
-    # Variants that only affect Acts examples for now
-    variant('geant4', default=False, description='Build the Geant4-based examples')
-    variant('hepmc3', default=False, description='Build the HepMC3-based examples')
-    variant('pythia8', default=False, description='Build the Pythia8-based examples')
-
-    # Build dependencies
-    # FIXME: Use spack's autodiff package once there is one
-    depends_on('boost @1.62:1.69.99 +program_options +test', when='@:0.10.3')
-    depends_on('boost @1.69: +filesystem +program_options +test', when='@0.10.4:')
-    depends_on('cmake @3.11:', type='build')
-    depends_on('dd4hep @1.10:', when='+dd4hep')
-    depends_on('dd4hep @1.10: +geant4', when='+dd4hep +geant4')
-    depends_on('eigen @3.2.9:', type='build')
-    depends_on('geant4', when='+geant4')
-    depends_on('hepmc3@3.1:', when='+hepmc3')
-    depends_on('heppdt', when='+hepmc3')
-    depends_on('intel-tbb', when='+examples')
-    depends_on('nlohmann-json @3.2.0:', when='@0.14: +json')
-    depends_on('pythia8', when='+pythia8')
-    depends_on('root @6.10: cxxstd=14', when='+tgeo @:0.8.0')
-    depends_on('root @6.10: cxxstd=17', when='+tgeo @0.8.1:')
-
-    # Some variant combinations do not make sense
-    conflicts('+autodiff', when='@:1.01')
-    conflicts('+benchmarks', when='@:0.15')
-    conflicts('+dd4hep', when='-tgeo')
-    conflicts('+examples', when='@:0.22')
-    conflicts('+examples', when='-digitization')
-    conflicts('+examples', when='-fatras')
-    conflicts('+examples', when='-identification')
-    conflicts('+examples', when='-json')
-    conflicts('+examples', when='-tgeo')
-    conflicts('+fatras', when='@:0.15')
-    conflicts('+geant4', when='@:0.22')
-    conflicts('+geant4', when='-examples')
-    conflicts('+hepmc3', when='@:0.22')
-    conflicts('+hepmc3', when='-examples')
-    conflicts('+pythia8', when='@:0.22')
-    conflicts('+pythia8', when='-examples')
-    conflicts('+tgeo', when='-identification')
-    conflicts('%gcc@:7', when='@0.23:')
-
-    def cmake_args(self):
-        spec = self.spec
-
-        def cmake_variant(cmake_label, spack_variant):
-            enabled = spec.satisfies('+' + spack_variant)
-            return "-DACTS_BUILD_{0}={1}".format(cmake_label, enabled)
-
-        def example_cmake_variant(cmake_label, spack_variant):
-            enabled = spec.satisfies('+examples +' + spack_variant)
-            return "-DACTS_BUILD_EXAMPLES_{0}={1}".format(cmake_label, enabled)
-
-        def plugin_label(plugin_name):
-            if spec.satisfies('@0.33:'):
-                return "PLUGIN_" + plugin_name
-            else:
-                return plugin_name + "_PLUGIN"
-
-        def plugin_cmake_variant(plugin_name, spack_variant):
-            return cmake_variant(plugin_label(plugin_name), spack_variant)
-
-        integration_tests_label = "INTEGRATIONTESTS"
-        unit_tests_label = "UNITTESTS"
-        legacy_plugin_label = "LEGACY_PLUGIN"
-        if spec.satisfies('@:0.15'):
-            integration_tests_label = "INTEGRATION_TESTS"
-            unit_tests_label = "TESTS"
-        if spec.satisfies('@:0.32'):
-            legacy_plugin_label = "LEGACY"
-
-        args = [
-            plugin_cmake_variant("AUTODIFF", "autodiff"),
-            cmake_variant("BENCHMARKS", "benchmarks"),
-            plugin_cmake_variant("CUDA", "cuda"),
-            plugin_cmake_variant("DD4HEP", "dd4hep"),
-            plugin_cmake_variant("DIGITIZATION", "digitization"),
-            cmake_variant("EXAMPLES", "examples"),
-            example_cmake_variant("DD4HEP", "dd4hep"),
-            example_cmake_variant("GEANT4", "geant4"),
-            example_cmake_variant("HEPMC3", "hepmc3"),
-            example_cmake_variant("PYTHIA8", "pythia8"),
-            cmake_variant("FATRAS", "fatras"),
-            plugin_cmake_variant("IDENTIFICATION", "identification"),
-            cmake_variant(integration_tests_label, "integration_tests"),
-            plugin_cmake_variant("JSON", "json"),
-            cmake_variant(unit_tests_label, "unit_tests"),
-            cmake_variant(legacy_plugin_label, "legacy"),
-            plugin_cmake_variant("TGEO", "tgeo")
-        ]
-
-        cuda_arch = spec.variants['cuda_arch'].value
-        if cuda_arch != 'none':
-            args.append('-DCUDA_FLAGS=-arch=sm_{0}'.format(cuda_arch[0]))
-
-        if 'root' in spec:
-            cxxstd = spec['root'].variants['cxxstd'].value
-            args.append("-DCMAKE_CXX_STANDARD={0}".format(cxxstd))
-
-        # FIXME: Once we can use spack's autodiff package, set
-        #        ACTS_USE_SYSTEM_AUTODIFF too.
-        if spec.satisfies('@0.33: +json'):
-            args.append("-DACTS_USE_SYSTEM_NLOHMANN_JSON=ON")
-        elif spec.satisfies('@0.14.0: +json'):
-            args.append("-DACTS_USE_BUNDLED_NLOHMANN_JSON=OFF")
-
-        return args
diff --git a/spack/packages/dawn/package.py b/spack/packages/dawn/package.py
index c9d3d050c2fc3370ff627e11e3804335ab192038..703a134b3cfdfc360b91904ac6c328858083a88c 100644
--- a/spack/packages/dawn/package.py
+++ b/spack/packages/dawn/package.py
@@ -30,8 +30,11 @@ class Dawn(MakefilePackage):
           installed on your system.
     """
 
+    # Note: Dawn homepage not available anymore...
     homepage = "https://geant4.kek.jp/~tanaka"
-    url      = "http://geant4.kek.jp/~tanaka/src/dawn_3_91a.tgz"
+    #url      = "http://geant4.kek.jp/~tanaka/src/dawn_3_91a.tgz"
+    url      = "http://10.10.241.24/software/dawn_3_91a.tgz"
+
     maintainers = ['sly2j']
 
     version('3_91a', sha256='81d855ead1117681b188242dd0be3a24e005d9bd4063fd2bda9a7a794ebcf5f4')
diff --git a/spack/packages/dawncut/package.py b/spack/packages/dawncut/package.py
index c0eac789f402ce621bbf75f7abe65f7ced118c87..56727106ca8485278e180de3d8429335343a9540 100644
--- a/spack/packages/dawncut/package.py
+++ b/spack/packages/dawncut/package.py
@@ -13,8 +13,9 @@ class Dawncut(MakefilePackage):
     visualized with Fukui Renderer DAWN.
     """
 
+    # dawn webpage not available anymore
     homepage = "https://geant4.kek.jp/~tanaka"
-    url = "http://10.10.241.20/software/dawncut_1_54a.tar.gz"
+    url = "http://10.10.241.24/software/dawncut_1_54a.tar.gz"
     maintainers = ['sly2j']
 
     version('1_54a',
diff --git a/spack/packages/dd4hep/package.py b/spack/packages/dd4hep/package.py
deleted file mode 100644
index 8b8412767b98035289193c1f1cdfb638b7697989..0000000000000000000000000000000000000000
--- a/spack/packages/dd4hep/package.py
+++ /dev/null
@@ -1,97 +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-12-01.tar.gz"
-    git      = "https://github.com/AIDASoft/DD4hep.git"
-
-    maintainers = ['vvolkl', 'drbenmorgan']
-
-    version('master', branch='master')
-    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/tbb-workarounds.patch b/spack/packages/dd4hep/tbb-workarounds.patch
deleted file mode 100644
index 6592329774349d13e33d0a799c0b57f4b08cc82b..0000000000000000000000000000000000000000
--- a/spack/packages/dd4hep/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/tbb2.patch b/spack/packages/dd4hep/tbb2.patch
deleted file mode 100644
index 932458001c211c75708555f2feee1ad8cdeb39e1..0000000000000000000000000000000000000000
--- a/spack/packages/dd4hep/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;
-   }
-
diff --git a/spack/packages/fmt/package.py b/spack/packages/fmt/package.py
index 26de8998a4431997edbcaa992a6019a090ad0cf4..e0aea9bd48276a240332dabd2d26d7ac0117720a 100644
--- a/spack/packages/fmt/package.py
+++ b/spack/packages/fmt/package.py
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# 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)
@@ -11,9 +11,10 @@ class Fmt(CMakePackage):
     It can be used as a safe alternative to printf or as a fast alternative
     to C++ IOStreams."""
 
-    homepage = "http://fmtlib.net/latest/index.html"
-    url      = "https://github.com/fmtlib/fmt/releases/download/7.1.2/fmt-7.1.2.zip"
+    homepage = "https://fmt.dev/"
+    url      = "https://github.com/fmtlib/fmt/releases/download/7.1.3/fmt-7.1.3.zip"
 
+    version('7.1.3', sha256='5d98c504d0205f912e22449ecdea776b78ce0bb096927334f80781e720084c9f')
     version('7.1.2', sha256='4d6968ab7c01e95cc76df136755703defb985105a117b83057e4fd5d53680ea7')
     version('7.1.0', sha256='308af4e36ee3ab527b51014a2a5d862682c84f5d16f7a597aea34c84853cbcb0')
     version('6.1.2', sha256='63650f3c39a96371f5810c4e41d6f9b0bb10305064e6faf201cbafe297ea30e8')
@@ -73,6 +74,7 @@ class Fmt(CMakePackage):
         # compiler supports the selected standard.
         args.append('-DCMAKE_CXX_STANDARD_REQUIRED=ON')
 
+        # S. Joosten --> hard build shared library version
         args.append('-DBUILD_SHARED_LIBS=TRUE')
 
         # When cxxstd is 98, must disable FMT_USE_CPP11
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
deleted file mode 100644
index a8e6ea73fd4f7bd02189abf5255d9e1423ebfa71..0000000000000000000000000000000000000000
--- a/spack/packages/geant4/package.py
+++ /dev/null
@@ -1,159 +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 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.6.0/geant4-v10.6.0.tar.gz"
-
-    maintainers = ['drbenmorgan']
-
-    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.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 cannont be built with Python bindings')
-
-    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)
-
-        # 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')
-
-    def cmake_args(self):
-        spec = self.spec
-
-        # Core options
-        options = [
-            '-DGEANT4_BUILD_CXXSTD=c++{0}'.format(
-                self.spec.variants['cxxstd'].value),
-            '-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)
-        ]
-
-        # 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
diff --git a/spack/packages/graphviz/fix-quartz-darwin.patch b/spack/packages/graphviz/fix-quartz-darwin.patch
deleted file mode 100644
index f20ade2f957c603f11d23841dc542007ea5a2ee2..0000000000000000000000000000000000000000
--- a/spack/packages/graphviz/fix-quartz-darwin.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/configure.ac	2019-04-08 12:14:26.000000000 -0400
-+++ b/configure.ac	2019-04-08 12:15:03.000000000 -0400
-@@ -170,16 +170,8 @@
- 	BROWSER="open"
- 	JSHEXT=jnilib
- 	AC_DEFINE_UNQUOTED(DARWIN_DYLIB,"$DARWIN_DYLIB",[Define for Darwin-style shared library names.])
--	case "${host_os}" in
--	*darwin9*)
--		DARWIN9=yes
--		;;
--        esac
--	case "${host_os}" in
--	*darwin9.4* | *darwin9.5* )
--		EXTRA_SMYRNA_LDFLAGS="-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
--		;;
--        esac
-+        DARWIN9=yes
-+        EXTRA_SMYRNA_LDFLAGS="-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
- 	;;
-   * ) # This sucks!  Whatever happened to standards for file system layout?   (Good job its no longer used unless fontconfig is unavailable.)
- 	DEFAULT_FONTPATH="/usr/share/fonts/sun/TrueType:/usr/share/fonts/TrueType:/usr/X11/lib/X11/fonts/TrueType:/usr/share/fonts/sun/Type1:/usr/openwin/lib/X11/fonts/Type1:/usr/share/fonts/X11/Type1:/usr/share/fonts/default/Type1:/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/Type1:/usr/common/share/fonts/ttf";
---- a/plugin/quartz/Makefile.am	2019-04-06 08:33:24.000000000 -0400
-+++ b/plugin/quartz/Makefile.am	2019-04-08 12:32:41.000000000 -0400
-@@ -39,5 +39,5 @@
-
- if WITH_DARWIN9
- libgvplugin_quartz_la_LDFLAGS += -Wl,-exported_symbol,_gvplugin_quartz_LTX_library
--AM_LIBTOOLSFLAGS = --tag=CC
-+AM_LIBTOOLFLAGS = --tag=CC
- endif
diff --git a/spack/packages/graphviz/implicit.patch b/spack/packages/graphviz/implicit.patch
deleted file mode 100644
index dd174761a9ae2c89b52d9b8eb25b2929ed478617..0000000000000000000000000000000000000000
--- a/spack/packages/graphviz/implicit.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Fix "error: implicit declaration of function 'makeTetrix'" and another
-problem fixed by the same upstream commit.
-https://gitlab.com/graphviz/graphviz/-/commit/b4947d67a4ebd48ca0105d44f92e47f044e51600
---- cmd/lefty/dot2l/dotlex.c.orig	2016-08-09 16:02:09.000000000 -0500
-+++ cmd/lefty/dot2l/dotlex.c	2020-08-27 14:45:45.000000000 -0500
-@@ -252,7 +252,7 @@
-     char *q;
- 
-     q = lexbuf;
--    if (p == '\0')
-+    if (!p || *p == '\0')
-         return NULL;
-     while (isalnum (*p) || (*p == '_') || (!isascii (*p)))
-         *q++ = *p++;
---- cmd/tools/gvgen.c.orig	2016-11-22 23:43:56.000000000 -0600
-+++ cmd/tools/gvgen.c	2020-08-27 14:45:45.000000000 -0500
-@@ -458,6 +458,8 @@
- 	fprintf(opts.outfile, "}\ngraph {\n");
- }
- 
-+extern void makeTetrix(int depth, edgefn ef);
-+
- int main(int argc, char *argv[])
- {
-     GraphType graphType;
diff --git a/spack/packages/graphviz/package.py b/spack/packages/graphviz/package.py
deleted file mode 100644
index 344ecd990e4f9cf42858c8b8a50772202f0a4d8e..0000000000000000000000000000000000000000
--- a/spack/packages/graphviz/package.py
+++ /dev/null
@@ -1,174 +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 *
-from spack.operating_systems.mac_os import macos_version
-
-import os
-import sys
-
-
-MACOS_VERSION = macos_version() if sys.platform == 'darwin' else None
-
-
-class Graphviz(AutotoolsPackage):
-    """Graph Visualization Software"""
-
-    homepage = 'http://www.graphviz.org'
-    git      = 'https://gitlab.com/graphviz/graphviz.git'
-
-    # This commit hash is tag='stable_release_2.44.1'
-    version('2.44.1', commit='771bc4dbff3e6f358fa75cdc7774a413ccacad51')
-    # This commit hash is tag='stable_release_2.42.2'
-    version('2.42.2', commit='da4c2ec6f24ca1b6d1752c6b5bc4389e55682147')
-    # This commit hash is tag='stable_release_2.40.1'
-    version('2.40.1', commit='67cd2e5121379a38e0801cc05cce5033f8a2a609')
-
-    conflicts('%gcc@:5.9',
-              when='@2.40.1+qt ^qt@5:',
-              msg='graphviz-2.40.1 needs gcc-6 or greater to compile with QT5 '
-              'suppport')
-
-    # Language bindings
-    language_bindings = ['java']
-
-    # Additional language bindings are nominally supported by GraphViz via SWIG
-    # but are untested and need the proper dependencies added:
-    # language_bindings += ['sharp', 'go', 'guile', 'io', 'lua', 'ocaml',
-    #                       'perl', 'php', 'python', 'r', 'ruby', 'tcl']
-
-    for lang in language_bindings:
-        variant(lang, default=False,
-                description='Enable for optional {0} language '
-                'bindings'.format(lang))
-
-    # Feature variants
-    variant('expat', default=False,
-            description='Build with Expat support (enables HTML-like labels)')
-    variant('gts', default=False,
-            description='Build with GNU Triangulated Surface Library')
-    variant('ghostscript', default=False,
-            description='Build with Ghostscript support')
-    variant('gtkplus', default=False,
-            description='Build with GTK+ support')
-    variant('libgd', default=False,
-            description='Build with libgd support (more output formats)')
-    variant('pangocairo', default=False,
-            description='Build with pango+cairo support (more output formats)')
-    variant('poppler', default=False,
-            description='Build with poppler support (pdf formats)')
-    variant('qt', default=False,
-            description='Build with Qt support')
-    variant('quartz', default=(MACOS_VERSION is not None),
-            description='Build with Quartz and PDF support')
-    variant('x', default=False,
-            description='Use the X Window System')
-
-    patch('http://www.linuxfromscratch.org/patches/blfs/9.0/graphviz-2.40.1-qt5-1.patch',
-          sha256='bd532df325df811713e311d17aaeac3f5d6075ea4fd0eae8d989391e6afba930',
-          when='@:2.40+qt^qt@5:')
-    patch('https://raw.githubusercontent.com/easybuilders/easybuild-easyconfigs/master/easybuild/easyconfigs/g/Graphviz/Graphviz-2.38.0_icc_sfio.patch',
-          sha256='393a0a772315a89dcc970b5efd4765d22dba83493d7956303673eb89c45b949f',
-          level=0,
-          when='@:2.40%intel')
-    patch('https://raw.githubusercontent.com/easybuilders/easybuild-easyconfigs/master/easybuild/easyconfigs/g/Graphviz/Graphviz-2.40.1_icc_vmalloc.patch',
-          sha256='813e6529e79161a18b0f24a969b7de22f8417b2e942239e658b5402884541bc2',
-          when='@:2.40%intel')
-    patch('ps2pdf.patch')
-    ## Don't apply to newer versions, as they are already fixed
-    patch('implicit.patch', when='@:2.42.0')
-
-    if not MACOS_VERSION:
-        conflicts('+quartz',
-                  msg="Graphviz can only be build with Quartz on macOS.")
-    elif MACOS_VERSION >= Version('10.9'):
-        # Doesn't detect newer mac os systems as being new
-        patch('fix-quartz-darwin.patch')
-
-    # Language dependencies
-    depends_on('java', when='+java')
-    for lang in language_bindings:
-        depends_on('swig', when=('+' + lang))
-
-    # Feature dependencies
-    depends_on('expat', when='+expat')
-    depends_on('libgd', when='+libgd')
-    depends_on('fontconfig', when='+libgd')
-    depends_on('freetype', when='+libgd')
-    depends_on('ghostscript', when='+ghostscript')
-    depends_on('gtkplus', when='+gtkplus')
-    depends_on('gts', when='+gts')
-    depends_on('cairo+pdf+png+svg', when='+pangocairo')
-    depends_on('fontconfig', when='+pangocairo')
-    depends_on('freetype', when='+pangocairo')
-    depends_on('glib', when='+pangocairo')
-    depends_on('libpng', when='+pangocairo')
-    depends_on('pango', when='+pangocairo')
-    depends_on('poppler+glib', when='+poppler')
-    depends_on('zlib')
-    depends_on('qt', when='+qt')
-    depends_on('libx11', when="+x")
-
-    # Build dependencies
-    depends_on('pkgconfig', type='build')
-    # The following are needed when building from git
-    depends_on('automake', type='build')
-    depends_on('autoconf', type='build')
-    depends_on('bison', type='build')
-    depends_on('flex', type='build')
-    depends_on('libtool', type='build')
-    # required to build docs
-    depends_on('groff', type='build')
-    depends_on('ghostscript', type='build')
-
-    parallel = False
-
-    def autoreconf(self, spec, prefix):
-        # We need to generate 'configure' when checking out sources from git
-        # If configure exists nothing needs to be done
-        if os.path.exists(self.configure_abs_path):
-            return
-        # Else bootstrap (disabling auto-configure with NOCONFIG)
-        bash = which('bash')
-        bash('./autogen.sh', 'NOCONFIG')
-
-    def setup_build_environment(self, env):
-        if '+quartz' in self.spec:
-            env.set('OBJC', self.compiler.cc)
-
-    @when('%clang platform=darwin')
-    def patch(self):
-        # When using Clang, replace GCC's libstdc++ with LLVM's libc++
-        mkdirs = ['cmd/dot', 'cmd/edgepaint', 'cmd/mingle', 'plugin/gdiplus']
-        filter_file(r'-lstdc\+\+', '-lc++', 'configure.ac',
-                    *(d + '/Makefile.am' for d in mkdirs))
-
-    @when('%apple-clang')
-    def patch(self):
-        # When using Clang, replace GCC's libstdc++ with LLVM's libc++
-        mkdirs = ['cmd/dot', 'cmd/edgepaint', 'cmd/mingle', 'plugin/gdiplus']
-        filter_file(r'-lstdc\+\+', '-lc++', 'configure.ac',
-                    *(d + '/Makefile.am' for d in mkdirs))
-
-    def configure_args(self):
-        spec = self.spec
-        args = ['--disable-silent-rules']
-
-        use_swig = False
-        for lang in self.language_bindings:
-            if '+' + lang in spec:
-                use_swig = True
-                args.append('--enable-' + lang)
-
-        args.append('--{0}-swig'.format('enable' if use_swig else 'disable'))
-
-        for var in ["expat", "gts", "ghostscript", "libgd", "pangocairo",
-                    "poppler", "qt", "quartz", "x"]:
-            args += self.with_or_without(var)
-
-        args.append('--{0}-gtk'.format(
-            "with" if "+gtkplus" in spec else "without"))
-
-        return args
diff --git a/spack/packages/graphviz/ps2pdf.patch b/spack/packages/graphviz/ps2pdf.patch
deleted file mode 100644
index 6bf9d067f322838b09b608a2be51fa59ee33b306..0000000000000000000000000000000000000000
--- a/spack/packages/graphviz/ps2pdf.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-https://gitlab.com/graphviz/graphviz/-/issues/1826
-https://github.com/Homebrew/homebrew-core/pull/57132
-diff --git a/configure.ac b/configure.ac
-index cf42504..68db027 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -284,8 +284,7 @@ AC_CHECK_PROGS(SORT,gsort sort,false)
-
- AC_CHECK_PROG(EGREP,egrep,egrep,false)
- AC_CHECK_PROG(GROFF,groff,groff,false)
--AC_CHECK_PROG(PS2PDF,ps2pdf,ps2pdf,false)
--AC_CHECK_PROG(PS2PDF,pstopdf,pstopdf,false)
-+AC_CHECK_PROGS(PS2PDF,ps2pdf pstopdf,false)
-
- PKG_PROG_PKG_CONFIG
diff --git a/spack/packages/mesa/package.py b/spack/packages/mesa/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..dafac166c6b390590d4cf469cc9bc7a272cf325e
--- /dev/null
+++ b/spack/packages/mesa/package.py
@@ -0,0 +1,239 @@
+# 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 *
+
+import sys
+
+
+class Mesa(MesonPackage):
+    """Mesa is an open-source implementation of the OpenGL specification
+     - a system for rendering interactive 3D graphics."""
+
+    homepage = "http://www.mesa3d.org"
+    maintainers = ['chuckatkins', 'v-dobrev']
+
+    git = "https://gitlab.freedesktop.org/mesa/mesa.git"
+    url = "https://archive.mesa3d.org/mesa-20.2.1.tar.xz"
+
+    version('master', tag='master')
+    version('21.0.0', sha256='e6204e98e6a8d77cf9dc5d34f99dd8e3ef7144f3601c808ca0dd26ba522e0d84')
+    version('20.3.4', sha256='dc21a987ec1ff45b278fe4b1419b1719f1968debbb80221480e44180849b4084')
+    version('20.2.1', sha256='d1a46d9a3f291bc0e0374600bdcb59844fa3eafaa50398e472a36fc65fd0244a')
+
+    depends_on('meson@0.52:', type='build')
+
+    depends_on('pkgconfig', type='build')
+    depends_on('binutils', when=(sys.platform != 'darwin'), type='build')
+    depends_on('bison', type='build')
+    depends_on('cmake', type='build')
+    depends_on('flex', type='build')
+    depends_on('gettext', type='build')
+    depends_on('python@3:', type='build')
+    depends_on('py-mako@0.8.0:', type='build')
+    depends_on('expat')
+    depends_on('zlib@1.2.3:')
+
+    # Internal options
+    variant('llvm', default=True, description="Enable LLVM.")
+    variant('swr', default='auto',
+            values=('auto', 'none', 'avx', 'avx2', 'knl', 'skx'),
+            multi=True,
+            description="Enable the SWR driver.")
+    # conflicts('~llvm', when='~swr=none')
+
+    # Front ends
+    variant('osmesa', default=True, description="Enable the OSMesa frontend.")
+
+    is_linux = sys.platform.startswith('linux')
+    variant('glx', default=is_linux, description="Enable the GLX frontend.")
+
+    # TODO: effectively deal with EGL.  The implications of this have not been
+    # worked through yet
+    # variant('egl', default=False, description="Enable the EGL frontend.")
+
+    # TODO: Effectively deal with hardware drivers
+    # The implication of this is enabling DRI, among other things, and
+    # needing to check which llvm targets were built (ptx or amdgpu, etc.)
+
+    # Back ends
+    variant('opengl', default=True, description="Enable full OpenGL support.")
+    variant('opengles', default=False, description="Enable OpenGL ES support.")
+
+    # Provides
+    provides('gl@4.5',  when='+opengl')
+    provides('glx@1.4', when='+glx')
+    # provides('egl@1.5', when='+egl')
+    provides('osmesa', when='+osmesa')
+
+    # Variant dependencies
+    depends_on('llvm@6:', when='+llvm')
+    depends_on('libx11',  when='+glx')
+    depends_on('libxcb',  when='+glx')
+    depends_on('libxext', when='+glx')
+    depends_on('libxt',  when='+glx')
+    depends_on('xrandr', when='+glx')
+    depends_on('glproto@1.4.14:', when='+glx')
+
+    # version specific issue
+    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96130
+    conflicts('%gcc@10.1.0', msg='GCC 10.1.0 has a bug')
+
+    # Require at least 1 front-end
+    # TODO: Add egl to this conflict once made available
+    conflicts('~osmesa ~glx')
+
+    # Require at least 1 back-end
+    # TODO: Add vulkan to this conflict once made available
+    conflicts('~opengl ~opengles')
+
+    # OpenGL ES requires OpenGL
+    conflicts('~opengl +opengles')
+
+    # 'auto' needed when shared llvm is built
+    @when('^llvm~shared_libs')
+    def patch(self):
+        filter_file(
+            r"_llvm_method = 'auto'",
+            "_llvm_method = 'config-tool'",
+            "meson.build")
+
+    def meson_args(self):
+        spec = self.spec
+        args = [
+            '-Dvulkan-drivers=',
+            '-Dgallium-vdpau=disabled',
+            '-Dgallium-xvmc=disabled',
+            '-Dgallium-omx=disabled',
+            '-Dgallium-va=disabled',
+            '-Dgallium-xa=disabled',
+            '-Dgallium-nine=false',
+            '-Dgallium-opencl=disabled',
+            '-Dbuild-tests=false',
+            '-Dglvnd=false']
+        args_platforms = []
+        args_gallium_drivers = ['swrast']
+        args_dri_drivers = []
+
+        opt_enable = lambda c, o: '-D%s=%sabled' % (o, 'en' if c else 'dis')
+        opt_bool = lambda c, o: '-D%s=%s' % (o, str(c).lower())
+        if spec.target.family == 'arm' or spec.target.family == 'aarch64':
+            args.append('-Dlibunwind=disabled')
+
+        num_frontends = 0
+        if '+osmesa' in spec:
+            num_frontends += 1
+            args.append('-Dosmesa=gallium')
+        else:
+            #S. Joosten --> this line does not work in latest container
+            #args.append('-Dosmesa=none')
+            args.append('-Dosmesa=false')
+
+        if '+glx' in spec:
+            num_frontends += 1
+            if '+egl' in spec:
+                args.append('-Dglx=dri')
+            else:
+                args.append('-Dglx=gallium-xlib')
+            args_platforms.append('x11')
+        else:
+            args.append('-Dglx=disabled')
+
+        if '+egl' in spec:
+            num_frontends += 1
+            args.extend(['-Degl=enabled', '-Dgbm=enabled', '-Ddri3=enabled'])
+            args_platforms.append('surfaceless')
+        else:
+            args.extend(
+                ['-Degl=disabled', '-Dgbm=disabled', '-Ddri3=disabled'])
+
+        args.append(opt_bool('+opengl' in spec, 'opengl'))
+        args.append(opt_enable('+opengles' in spec, 'gles1'))
+        args.append(opt_enable('+opengles' in spec, 'gles2'))
+
+        args.append(opt_enable(num_frontends > 1, 'shared-glapi'))
+
+        if '+llvm' in spec:
+            args.append('-Dllvm=enabled')
+            args.append(opt_enable(
+                '+link_dylib' in spec['llvm'], 'shared-llvm'))
+        else:
+            args.append('-Dllvm=disabled')
+
+        args_swr_arches = []
+        if 'swr=auto' in spec:
+            if 'avx' in spec.target:
+                args_swr_arches.append('avx')
+            if 'avx2' in spec.target:
+                args_swr_arches.append('avx2')
+            if 'avx512f' in spec.target:
+                if 'avx512er' in spec.target:
+                    args_swr_arches.append('knl')
+                if 'avx512bw' in spec.target:
+                    args_swr_arches.append('skx')
+        else:
+            if 'swr=avx' in spec:
+                args_swr_arches.append('avx')
+            if 'swr=avx2' in spec:
+                args_swr_arches.append('avx2')
+            if 'swr=knl' in spec:
+                args_swr_arches.append('knl')
+            if 'swr=skx' in spec:
+                args_swr_arches.append('skx')
+
+        if args_swr_arches:
+            if '+llvm' not in spec:
+                raise SpecError('Variant swr requires +llvm')
+            args_gallium_drivers.append('swr')
+            args.append('-Dswr-arches=' + ','.join(args_swr_arches))
+
+        # Add the remaining list args
+        args.append('-Dplatforms=' + ','.join(args_platforms))
+        args.append('-Dgallium-drivers=' + ','.join(args_gallium_drivers))
+        args.append('-Ddri-drivers=' + ','.join(args_dri_drivers))
+
+        return args
+
+    @property
+    def libs(self):
+        spec = self.spec
+        libs_to_seek = set()
+
+        if '+osmesa' in spec:
+            libs_to_seek.add('libOSMesa')
+
+        if '+glx' in spec:
+            libs_to_seek.add('libGL')
+
+        if '+opengl' in spec:
+            libs_to_seek.add('libGL')
+
+        if '+opengles' in spec:
+            libs_to_seek.add('libGLES')
+            libs_to_seek.add('libGLES2')
+
+        if libs_to_seek:
+            return find_libraries(list(libs_to_seek),
+                                  root=self.spec.prefix,
+                                  recursive=True)
+        return LibraryList()
+
+    @property
+    def osmesa_libs(self):
+        return find_libraries('libOSMesa',
+                              root=self.spec.prefix,
+                              recursive=True)
+
+    @property
+    def glx_libs(self):
+        return find_libraries('libGL',
+                              root=self.spec.prefix,
+                              recursive=True)
+
+    @property
+    def gl_libs(self):
+        return find_libraries('libGL',
+                              root=self.spec.prefix,
+                              recursive=True)
diff --git a/spack/packages/podio/cpack.patch b/spack/packages/podio/cpack.patch
deleted file mode 100644
index e685f9bc13dc94adde4ce15bf4e6a542d1379a3d..0000000000000000000000000000000000000000
--- a/spack/packages/podio/cpack.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -86,7 +86,7 @@ include(cmake/podioMacros.cmake)
- include(CTest)
- 
- #--- enable CPack --------------------------------------------------------------
--include(cmake/podioCPack.cmake)
-+#include(cmake/podioCPack.cmake)
- 
- #--- target for Doxygen documentation ------------------------------------------
- if(CREATE_DOC)
diff --git a/spack/packages/podio/dictloading.patch b/spack/packages/podio/dictloading.patch
deleted file mode 100644
index 15ec301b13984b354f7f6cd07cae6f3e4adf09f5..0000000000000000000000000000000000000000
--- a/spack/packages/podio/dictloading.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 120a899..05991f1 100755
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -41,7 +41,7 @@ SET(headers
-   ${CMAKE_SOURCE_DIR}/include/podio/PythonEventStore.h
-   )
- PODIO_GENERATE_DICTIONARY(podioDict ${headers} SELECTION selection.xml
--  OPTIONS --library ${CMAKE_SHARED_LIBRARY_PREFIX}podio${CMAKE_SHARED_LIBRARY_SUFFIX}
-+  OPTIONS --library ${CMAKE_SHARED_LIBRARY_PREFIX}podioDict${CMAKE_SHARED_LIBRARY_SUFFIX}
-   )
- # prevent generating dictionary twice
- set_target_properties(podioDict-dictgen PROPERTIES EXCLUDE_FROM_ALL TRUE)
-@@ -58,5 +58,5 @@ install(TARGETS podio podioDict podioRootIO
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/podio DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
- install(FILES
-   ${CMAKE_CURRENT_BINARY_DIR}/podioDictDict.rootmap
--  ${CMAKE_CURRENT_BINARY_DIR}/libpodio_rdict.pcm
-+  ${CMAKE_CURRENT_BINARY_DIR}/libpodioDict_rdict.pcm
-   DESTINATION "${CMAKE_INSTALL_LIBDIR}")
diff --git a/spack/packages/podio/package.py b/spack/packages/podio/package.py
deleted file mode 100644
index 360547a80a85ca910d461a7737a525063293c802..0000000000000000000000000000000000000000
--- a/spack/packages/podio/package.py
+++ /dev/null
@@ -1,87 +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)
-
-
-class Podio(CMakePackage):
-    """PODIO, or plain-old-data I/O, is a C++ library to support the creation
-    and handling of data models in particle physics."""
-
-    homepage = "https://github.com/AIDASoft/podio"
-    url      = "https://github.com/AIDASoft/podio/archive/v00-09-02.tar.gz"
-    git      = "https://github.com/AIDASoft/podio.git"
-
-    maintainers = ['vvolkl', 'drbenmorgan']
-
-    tags = ["hep", "key4hep"]
-
-    version('master', branch='master')
-    version('0.13', sha256='e9cbd4e25730003d3706ad82e28b15cb5bdc524a78b0a26e90b89ea852101498')
-    version('0.12', sha256='1729a2ce21e8b307fc37dfb9a9f5ae031e9f4be4992385cf99dba3e5fdf5323a')
-    version('0.11', sha256='4b2765566a14f0ddece2c894634e0a8e4f42f3e44392addb9110d856f6267fb6')
-    version('0.10', sha256='b5b42770ec8b96bcd2748abc05669dd3e4d4cc84f81ed57d57d2eda1ade90ef2')
-    version('0.9.2', sha256='8234d1b9636029124235ef81199a1220968dcc7fdaeab81cdc96a47af332d240')
-    version('0.9', sha256='3cde67556b6b76fd2d004adfaa3b3b6173a110c0c209792bfdb5f9353e21076f')
-    version('0.8', sha256='9d035a7f5ebfae5279a17405003206853271af692f762e2bac8e73825f2af327')
-
-    variant('build_type', default='Release',
-            description='The build type to build',
-            values=('Debug', 'Release'))
-
-    variant('sio', default=False,
-            description='Build the SIO I/O backend')
-
-    # cpack config throws an error on some systems
-    patch('cpack.patch', when="@:0.10.0")
-    patch('dictloading.patch', when="@0.10.0")
-
-    depends_on('root@6.08.06: cxxstd=17')
-
-    depends_on('cmake@3.8:', type='build')
-    depends_on('python', type=('build', 'run'))
-    depends_on('py-pyyaml', type=('build', 'run'))
-    depends_on('py-jinja2@2.10.1:', type=('build', 'run'), when='@0.12.0:')
-    depends_on('sio', type=('build', 'run'), when='+sio')
-
-    conflicts('+sio', when='@:0.12', msg='sio support requires at least podio@0.13')
-
-    def cmake_args(self):
-        args = [
-            self.define_from_variant('ENABLE_SIO', 'sio')
-        ]
-        return args
-
-    def setup_run_environment(self, env):
-        env.prepend_path('PYTHONPATH', self.prefix.python)
-
-    def url_for_version(self, version):
-        """Translate version numbers to ilcsoft conventions.
-        in spack, the convention is: 0.1 (or 0.1.0) 0.1.1, 0.2, 0.2.1 ...
-        in ilcsoft, releases are dashed and padded with a leading zero
-        the patch version is omitted when 0
-        so for example v01-12-01, v01-12 ...
-        :param self: spack package class that has a url
-        :type self: class: `spack.PackageBase`
-        :param version: version
-        :type param: str
-        """
-        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/root/package.py b/spack/packages/root/package.py
index 15a7e15cd37ae08cebcb3bf4fc6abfd06e428a2b..7cd544509e61588df8693d70e21173b786a8f231 100644
--- a/spack/packages/root/package.py
+++ b/spack/packages/root/package.py
@@ -28,6 +28,7 @@ class Root(CMakePackage):
     # Development version (when more recent than production).
 
     # Production version
+    version('6.22.08', sha256='6f061ff6ef8f5ec218a12c4c9ea92665eea116b16e1cd4df4f96f00c078a2f6f')
     version('6.22.06', sha256='c4688784a7e946cd10b311040b6cf0b2f75125a7520e04d1af0b746505911b57')
     version('6.22.02', sha256='89784afa9c9047e9da25afa72a724f32fa8aa646df267b7731e4527cc8a0c340')
     version('6.22.00', sha256='efd961211c0f9cd76cf4a486e4f89badbcf1d08e7535bba556862b3c1a80beed')
@@ -247,11 +248,18 @@ class Root(CMakePackage):
     depends_on('shadow',    when='+shadow')
     depends_on('sqlite',    when='+sqlite')
     depends_on('tbb',       when='+tbb')
+    # See: https://github.com/root-project/root/issues/6933
+    conflicts('^intel-tbb@2021.1:', when='@:6.22',
+              msg='Please use an older intel-tbb version')
+    conflicts('^intel-oneapi-tbb@2021.1:', when='@:6.22',
+              msg='Please use an older intel-tbb/intel-oneapi-tbb version')
+    # depends_on('intel-tbb@:2021.0', when='@:6.22 ^intel-tbb')
     depends_on('unuran',    when='+unuran')
     depends_on('vc',        when='+vc')
     depends_on('vdt',       when='+vdt')
     depends_on('libxml2',   when='+xml')
-    depends_on('xrootd@:4.99.99',    when='+xrootd')
+    depends_on('xrootd',          when='+xrootd')
+    depends_on('xrootd@:4.99.99', when='@:6.22.03 +xrootd')
 
     # ###################### Conflicts ######################
 
@@ -271,7 +279,7 @@ class Root(CMakePackage):
 
     # See README.md
     ## S. Joosten --> commented out, this is not an issue when building in
-    ##                a container
+    ##                our container
     #conflicts('+http',
     #          msg='HTTP server currently unsupported due to dependency issues')
 
diff --git a/spack/packages/xcb-proto/package.py b/spack/packages/xcb-proto/package.py
deleted file mode 100644
index 51cbd5b71f514897cbed100fbb34bc27c1c9ac70..0000000000000000000000000000000000000000
--- a/spack/packages/xcb-proto/package.py
+++ /dev/null
@@ -1,28 +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 XcbProto(AutotoolsPackage):
-    """xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
-    generate the majority of its code and API."""
-
-    homepage = "http://xcb.freedesktop.org/"
-    url      = "http://xcb.freedesktop.org/dist/xcb-proto-1.13.tar.gz"
-
-    version('1.13', sha256='0698e8f596e4c0dbad71d3dc754d95eb0edbb42df5464e0f782621216fa33ba7')
-    version('1.12', sha256='cfa49e65dd390233d560ce4476575e4b76e505a0e0bacdfb5ba6f8d0af53fd59')
-    version('1.11', sha256='d12152193bd71aabbdbb97b029717ae6d5d0477ab239614e3d6193cc0385d906')
-
-    # TODO: uncomment once build deps can be resolved separately
-    # See #7646, #4145, #4063, and #2548 for details
-    # extends('python')
-
-    patch('xcb-proto-1.12-schema-1.patch', when='@1.12')
-
-    ## using fractions.gcd has been deprecated since python 3.5
-    ## always apply fix
-    patch('python-fix.patch')
diff --git a/spack/packages/xcb-proto/python-fix.patch b/spack/packages/xcb-proto/python-fix.patch
deleted file mode 100644
index 353abcce684a5b6366428bedcb46723e53ad476c..0000000000000000000000000000000000000000
--- a/spack/packages/xcb-proto/python-fix.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff --git a/xcbgen/align.py b/xcbgen/align.py
-index d4c12ee..cc39764 100644
---- a/xcbgen/align.py
-+++ b/xcbgen/align.py
-@@ -2,7 +2,7 @@
- This module contains helper classes for alignment arithmetic and checks
- '''
- 
--from fractions import gcd
-+import math
- 
- class Alignment(object):
- 
-@@ -73,14 +73,14 @@ class Alignment(object):
-     def combine_with(self, other):
-         # returns the alignment that is guaranteed when
-         # both, self or other, can happen
--        new_align = gcd(self.align, other.align)
-+        new_align = math.gcd(self.align, other.align)
-         new_offset_candidate1 = self.offset % new_align
-         new_offset_candidate2 = other.offset % new_align
-         if new_offset_candidate1 == new_offset_candidate2:
-             new_offset = new_offset_candidate1
-         else:
-             offset_diff = abs(new_offset_candidate2 - new_offset_candidate1)
--            new_align = gcd(new_align, offset_diff)
-+            new_align = math.gcd(new_align, offset_diff)
-             new_offset_candidate1 = self.offset % new_align
-             new_offset_candidate2 = other.offset % new_align
-             assert new_offset_candidate1 == new_offset_candidate2
diff --git a/spack/packages/xcb-proto/xcb-proto-1.12-schema-1.patch b/spack/packages/xcb-proto/xcb-proto-1.12-schema-1.patch
deleted file mode 100644
index 2a0b69255c4e6d8b91280c36cfb594b73586c514..0000000000000000000000000000000000000000
--- a/spack/packages/xcb-proto/xcb-proto-1.12-schema-1.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Submitted By: Bruce Dubbs <bdubbs at linuxfromscratch dot org>
-Date: 2016-06-01
-Initial Package Version: 1.12
-Upstream Status: Not Committed
-Origin: https://lists.freedesktop.org/archives/xcb/2016-February/010676.html
-Description: Fixes make check
-
-
---- a/src/xcb.xsd
-+++ b/src/xcb.xsd
-@@ -44,6 +44,15 @@ authorization from the authors.
-     <xsd:complexType>
-       <xsd:attribute name="bytes" type="xsd:integer" use="optional" />
-       <xsd:attribute name="align" type="xsd:integer" use="optional" />
-+      <xsd:attribute name="serialize" type="xsd:boolean" use="optional" />
-+    </xsd:complexType>
-+  </xsd:element>
-+
-+  <!-- Alignment -->
-+  <xsd:element name="required_start_align" >
-+    <xsd:complexType>
-+      <xsd:attribute name="align" type="xsd:integer" use="required" />
-+      <xsd:attribute name="offset" type="xsd:integer" use="optional" />
-     </xsd:complexType>
-   </xsd:element>
- 
-@@ -76,14 +85,13 @@ authorization from the authors.
-     <xsd:sequence>
-       <!-- switch(expression) -->
-       <xsd:group ref="expression" minOccurs="1" maxOccurs="1" />
-+      <xsd:element ref="required_start_align" minOccurs="0" maxOccurs="1" />
-       <xsd:choice>
-         <!-- bitcase expression - bit test -->
-         <xsd:element name="bitcase" type="caseexpr" minOccurs="0" maxOccurs="unbounded" />
-         <!-- case expression - value test -->
-         <xsd:element name="case" type="caseexpr" minOccurs="0" maxOccurs="unbounded" />
-       </xsd:choice>
--      <!-- default: -->
--      <xsd:group ref="fields" minOccurs="0" maxOccurs="1" />
-     </xsd:sequence>
-     <xsd:attribute name="name" type="xsd:string" use="required" />
-   </xsd:complexType>
-@@ -201,6 +209,7 @@ authorization from the authors.
-       <xsd:element ref="field" />
-       <xsd:element ref="list" />
-       <xsd:element ref="fd" />
-+      <xsd:element ref="required_start_align" />
-     </xsd:choice>
-   </xsd:group>
- 
-
-