diff --git a/Event/xAOD/xAODJet/CMakeLists.txt b/Event/xAOD/xAODJet/CMakeLists.txt
index 2de2058ff220b187a1fe054b94477162131e0adf..22eca9fb7b5b94c6bb492a9b13b05d6fe5786f89 100644
--- a/Event/xAOD/xAODJet/CMakeLists.txt
+++ b/Event/xAOD/xAODJet/CMakeLists.txt
@@ -1,7 +1,4 @@
-# $Id: CMakeLists.txt 801071 2017-03-20 22:11:25Z delsart $
-################################################################################
-# Package: xAODJet
-################################################################################
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # Declare the package name:
 atlas_subdir( xAODJet )
@@ -14,45 +11,28 @@ set( extra_test_libs )
 
 # Extra dependencies, when we are not in a standalone build:
 if( NOT XAOD_STANDALONE )
-   set( extra_private_deps Control/SGTools )
    set( extra_test_libs SGTools )
 else()
-   set( extra_private_deps Control/xAODRootAccess )
    set( extra_test_libs xAODRootAccess )
 endif()
 
-if( NOT SIMULATIONBASE )
-   set( extra_deps Event/xAOD/xAODBTagging Event/xAOD/xAODTrigger Event/xAOD/xAODPFlow)
+if( NOT SIMULATIONBASE AND NOT GENERATIONBASE )
+   set( extra_srcs Root/JetTrigAuxContainer*.cxx )
    set( extra_libs xAODBTagging xAODPFlow xAODTrigger )
 endif()
 
-if (BUILDVP1LIGHT)
-    if( BUILDVP1LIGHT_DIST STREQUAL "ubuntu")
-        set( extra_libs ${extra_libs} GenVector )
-    endif()
+if( BUILDVP1LIGHT AND ( BUILDVP1LIGHT_DIST STREQUAL "ubuntu" ) )
+   list( APPEND extra_libs GenVector )
 endif()
 
-
-# Declare the package's dependencies:
-atlas_depends_on_subdirs(
-   PUBLIC
-   Control/AthContainers
-   Control/AthLinks
-   Event/xAOD/xAODBase
-   Event/xAOD/xAODCore
-   ${extra_deps}
-   PRIVATE
-   Control/CxxUtils
-   Event/xAOD/xAODCaloEvent
-   ${extra_private_deps} )
-
 # External dependencies:
 find_package( ROOT COMPONENTS Core GenVector )
 
 # Component(s) in the package:
 atlas_add_library( xAODJet
    xAODJet/*.h xAODJet/*.icc xAODJet/versions/*.h xAODJet/versions/*.icc
-   Root/*.cxx
+   Root/JetA*.cxx Root/JetC*.cxx Root/Jet_v*.cxx Root/xAODJetCLIDs.cxx
+   ${extra_srcs}
    PUBLIC_HEADERS xAODJet
    INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
    LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks
diff --git a/Event/xAOD/xAODJet/Root/JetConstituentVector.cxx b/Event/xAOD/xAODJet/Root/JetConstituentVector.cxx
index 1da848710eec8189b6549739a341f8b547f5c791..365d81947388e609ca26bdf8bc30660b590fe84f 100644
--- a/Event/xAOD/xAODJet/Root/JetConstituentVector.cxx
+++ b/Event/xAOD/xAODJet/Root/JetConstituentVector.cxx
@@ -1,13 +1,13 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <cmath>
 #include "xAODJet/JetConstituentVector.h"
 #include "xAODCaloEvent/CaloCluster.h"
-#ifndef SIMULATIONBASE
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
 #include "xAODPFlow/PFO.h"
-#endif //SIMULATIONBASE
+#endif // not SIMULATIONBASE or GENERATIONBASE
 
 namespace xAOD {
 
@@ -47,14 +47,14 @@ namespace xAOD {
         } 
         return;
       }
-#ifndef SIMULATIONBASE
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
       case Type::ParticleFlow: {
         const xAOD::PFO *pfo = dynamic_cast<const xAOD::PFO*>(part);
         if(pfo->ptEM()!=0) constit.SetCoordinates( pfo->ptEM(), pfo->etaEM(), pfo->phiEM(), pfo->mEM() );
         else constit.SetCoordinates( 0, 1, 1, 0 ); // To avoid Warnings from root.
         return;
       }
-#endif //SIMULATIONBASE
+#endif // not SIMULATIONBASE or GENERATIONBASE
       default: 
         break;// fall back on default kinematics
       }
diff --git a/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v1.cxx b/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v1.cxx
index 1bad4fca6c6ac55433172fe1d98d9ead324b6be7..a2f0a52422aab82618011bf2b01d932158d99952 100644
--- a/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v1.cxx
+++ b/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v1.cxx
@@ -1,9 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-
-#ifndef SIMULATIONBASE
 // Local include(s):
 #include "xAODJet/versions/JetTrigAuxContainer_v1.h"
 
@@ -19,8 +17,6 @@ namespace xAOD {
       AUX_VARIABLE( eta );
       AUX_VARIABLE( phi );
       AUX_VARIABLE( m );
-      
    }
 
 } // namespace xAOD
-#endif //SIMULATIONBASE
diff --git a/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v2.cxx b/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v2.cxx
index d531a76bd990ad25e2fa91f470c079c3a255f7f0..9e200b5a5248678d4a88ce3a4a61294c352437f0 100644
--- a/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v2.cxx
+++ b/Event/xAOD/xAODJet/Root/JetTrigAuxContainer_v2.cxx
@@ -1,9 +1,7 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-
-#ifndef SIMULATIONBASE
 // Local include(s):
 #include "xAODJet/versions/JetTrigAuxContainer_v2.h"
 
@@ -20,8 +18,6 @@ namespace xAOD {
       AUX_VARIABLE( eta );
       AUX_VARIABLE( phi );
       AUX_VARIABLE( m );
-      
    }
 
 } // namespace xAOD
-#endif //SIMULATIONBASE
diff --git a/Event/xAOD/xAODJet/Root/Jet_v1.cxx b/Event/xAOD/xAODJet/Root/Jet_v1.cxx
index 3b1b6b5a311870bedf2d4579aea0021015a49a01..ead3642b0ced419be8a83ad0641205fd0e62a9ac 100644
--- a/Event/xAOD/xAODJet/Root/Jet_v1.cxx
+++ b/Event/xAOD/xAODJet/Root/Jet_v1.cxx
@@ -259,7 +259,7 @@ namespace xAOD {
   void Jet_v1::setInputType(JetInput::Type t)  {inputAcc(*this)=t;}
 
 
-#ifndef SIMULATIONBASE
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
   static const SG::AuxElement::Accessor< ElementLink< BTaggingContainer > >
      btagAcc1( "btagging" );
   static const SG::AuxElement::Accessor< ElementLink< BTaggingContainer > >
@@ -291,7 +291,7 @@ namespace xAOD {
      btagAcc2( *this ) = el;
      return;
   }
-#endif //SIMULATIONBASE
+#endif // not SIMULATIONBASE or GENERATIONBASE
 
 //   void Jet_v1::toPersistent() {
 //   No longer needed, as this is done by the POOL converter for the aux container
diff --git a/Event/xAOD/xAODJet/Root/xAODJetCLIDs.cxx b/Event/xAOD/xAODJet/Root/xAODJetCLIDs.cxx
index f8daf6b0d651b7a3c0bb624e02b5f6a2280a782c..f67325ee5e8b636106582461e97b309d7a9fcba0 100644
--- a/Event/xAOD/xAODJet/Root/xAODJetCLIDs.cxx
+++ b/Event/xAOD/xAODJet/Root/xAODJetCLIDs.cxx
@@ -1,10 +1,10 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //simple includes to force the CLASS_DEF to be encountered during compile
 #include "xAODJet/JetAuxContainer.h"
 #include "xAODJet/JetContainer.h"
-#ifndef SIMULATIONBASE
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
 #include "xAODJet/JetTrigAuxContainer.h"
-#endif //SIMULATIONBASE
+#endif // not SIMULATIONBASE or GENERATIONBASE
diff --git a/Event/xAOD/xAODJet/xAODJet/JetTrigAuxContainer.h b/Event/xAOD/xAODJet/xAODJet/JetTrigAuxContainer.h
index 59ccbd1323a18be6fd1d42751d5abd20a377f1e2..06cf64970951f40760d318679e4b93ae81afbc71 100644
--- a/Event/xAOD/xAODJet/xAODJet/JetTrigAuxContainer.h
+++ b/Event/xAOD/xAODJet/xAODJet/JetTrigAuxContainer.h
@@ -1,12 +1,12 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAODJET_JETTRIGAUXCONTAINER_H
 #define XAODJET_JETTRIGAUXCONTAINER_H
-#ifndef SIMULATIONBASE
+
 // Local include(s):
 #include "xAODJet/versions/JetTrigAuxContainer_v2.h"
 
@@ -25,5 +25,4 @@ namespace xAOD {
 #include "xAODCore/CLASS_DEF.h"
 CLASS_DEF( xAOD::JetTrigAuxContainer, 1285854532, 1 )
 
-#endif //SIMULATIONBASE
-#endif // XAODJET_JETAUXCONTAINER_H
+#endif // XAODJET_JETTRIGAUXCONTAINER_H
diff --git a/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v1.h b/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v1.h
index a4d214c955184d3a499ed01f7722ea71c7dcecb5..e0ee21750e2dd9a342ceaf9bf3429532023fc38c 100644
--- a/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v1.h
+++ b/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v1.h
@@ -1,13 +1,11 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: JetTrigAuxContainer_v1.h 576027 2013-12-17 21:15:51Z delsart $
 #ifndef XAODJET_VERSIONS_JETTRIGAUXCONTAINER_V1_H
 #define XAODJET_VERSIONS_JETTRIGAUXCONTAINER_V1_H
-#ifndef SIMULATIONBASE
 
 // System include(s):
 #include <vector>
@@ -61,6 +59,5 @@ namespace xAOD {
 // Declare the inheritance of the class:
 #include "xAODCore/BaseInfo.h"
 SG_BASE( xAOD::JetTrigAuxContainer_v1, xAOD::ByteStreamAuxContainer_v1 );
-#endif
 
-#endif // XAODJET_VERSIONS_JETAUXCONTAINER_V1_H
+#endif // XAODJET_VERSIONS_JETTRIGAUXCONTAINER_V1_H
diff --git a/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v2.h b/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v2.h
index adb04d5c4fca0a69c87aa202d37e6735446ffb9f..dc506958e22336706077554f2d4aa65da95f2701 100644
--- a/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v2.h
+++ b/Event/xAOD/xAODJet/xAODJet/versions/JetTrigAuxContainer_v2.h
@@ -1,13 +1,11 @@
+// Dear emacs, this is -*- c++ -*-
+
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// Dear emacs, this is -*- c++ -*-
-
-// $Id: JetTrigAuxContainer_v2.h 2017-02-12 16:52 sschramm $
 #ifndef XAODJET_VERSIONS_JETTRIGAUXCONTAINER_V2_H
 #define XAODJET_VERSIONS_JETTRIGAUXCONTAINER_V2_H
-#ifndef SIMULATIONBASE
 
 // System include(s):
 #include <vector>
@@ -62,6 +60,5 @@ namespace xAOD {
 // Declare the inheritance of the class:
 #include "xAODCore/BaseInfo.h"
 SG_BASE( xAOD::JetTrigAuxContainer_v2, xAOD::ByteStreamAuxContainer_v1 );
-#endif
 
-#endif // XAODJET_VERSIONS_JETAUXCONTAINER_V2_H
+#endif // XAODJET_VERSIONS_JETTRIGAUXCONTAINER_V2_H
diff --git a/Event/xAOD/xAODJet/xAODJet/versions/Jet_v1.h b/Event/xAOD/xAODJet/xAODJet/versions/Jet_v1.h
index 84966c31aacf23d52b3307f45d6c680ee39de173..fff4300feddde92ad46c63b18a37f1bf70c43b91 100644
--- a/Event/xAOD/xAODJet/xAODJet/versions/Jet_v1.h
+++ b/Event/xAOD/xAODJet/xAODJet/versions/Jet_v1.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAODJET_VERSIONS_JET_V1_H
@@ -16,9 +16,9 @@
 // xAOD include(s):
 #include "xAODBase/IParticle.h"
 #include "xAODBase/IParticleContainer.h"
-#ifndef SIMULATIONBASE
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
 #include "xAODBTagging/BTaggingContainer.h"
-#endif //SIMULATIONBASE
+#endif // not SIMULATIONBASE or GENERATIONBASE
 
 // Local include(s):
 //#include "xAODJet/JetConstituentIterator.h"
@@ -236,14 +236,14 @@ namespace xAOD {
     /// Set  number by enum
     template<class T>
     void setAttribute( AttributeID type, const T& value );
-#ifndef SIMULATIONBASE
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
     /// Access to the associated btagging object
     const BTagging* btagging() const;
     /// Access to the associated btagging object
     const ElementLink< BTaggingContainer >& btaggingLink() const;
     /// Access to btagging objects
     void setBTaggingLink( const ElementLink< BTaggingContainer>& el );
-#endif
+#endif // not SIMULATIONBASE or GENERATIONBASE
 
     /// @}
     ////////////////////////////////////////////////////////    
diff --git a/Event/xAOD/xAODJet/xAODJet/xAODJetDict.h b/Event/xAOD/xAODJet/xAODJet/xAODJetDict.h
index a98758c97bc1b9c5d3ce6da8c0dc582835252f37..856d28909d73c2e8ec51fbd4aaab6e524484e2a2 100644
--- a/Event/xAOD/xAODJet/xAODJet/xAODJetDict.h
+++ b/Event/xAOD/xAODJet/xAODJet/xAODJetDict.h
@@ -1,10 +1,9 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: xAODJetDict.h 796773 2017-02-12 19:01:20Z sschramm $
 #ifndef XAODJET_XAODJETDICT_H
 #define XAODJET_XAODJETDICT_H
 
@@ -24,8 +23,10 @@
 #include "xAODJet/JetContainer.h"
 #include "xAODJet/versions/JetContainer_v1.h"
 #include "xAODJet/versions/JetAuxContainer_v1.h"
+#if !defined(SIMULATIONBASE) and !defined(GENERATIONBASE)
 #include "xAODJet/versions/JetTrigAuxContainer_v1.h"
 #include "xAODJet/versions/JetTrigAuxContainer_v2.h"
+#endif // not SIMULATIONBASE or GENERATIONBASE
 #include "xAODJet/versions/Jet_v1.h"
 #include "xAODJet/JetTypes.h"
 
diff --git a/Projects/AnalysisBase/externals.txt b/Projects/AnalysisBase/externals.txt
index 93215a7073946aed6ae3c1cd0b8c08acfba869d9..c9297de1c3c2569469916fb3a339758d4f5542b6 100644
--- a/Projects/AnalysisBase/externals.txt
+++ b/Projects/AnalysisBase/externals.txt
@@ -6,4 +6,4 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AnalysisBaseExternalsVersion = 2.0.56
+AnalysisBaseExternalsVersion = 2.0.57
diff --git a/Projects/AthDataQuality/externals.txt b/Projects/AthDataQuality/externals.txt
index 3fae03167e2eec37abff03bd6b7a1a5bc15397f7..600901a2292bfb982e7e2bc4cd5d9b9ac958c55f 100644
--- a/Projects/AthDataQuality/externals.txt
+++ b/Projects/AthDataQuality/externals.txt
@@ -5,4 +5,4 @@
 # an "origin/" prefix before it. For tags however this is explicitly
 # forbidden.
 
-AtlasExternalsVersion = 2.0.56
+AtlasExternalsVersion = 2.0.57
diff --git a/Projects/AthGeneration/CMakeLists.txt b/Projects/AthGeneration/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f538c30b54c1f8aa7222246f025c36f1bd222b46
--- /dev/null
+++ b/Projects/AthGeneration/CMakeLists.txt
@@ -0,0 +1,95 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+# Set up the project.
+cmake_minimum_required( VERSION 3.6 )
+file( READ ${CMAKE_SOURCE_DIR}/version.txt _version )
+string( STRIP ${_version} _version )
+project( AthGeneration VERSION ${_version} LANGUAGES C CXX Fortran )
+unset( _version )
+
+# Configure flake8:
+set( ATLAS_FLAKE8 "flake8_atlas --select ATL,F,E7,E9,W6 --enable-extension ATL902 --extend-ignore E701,E702,E741"
+   CACHE STRING "Default flake8 command" )
+
+set( ATLAS_PYTHON_CHECKER "${ATLAS_FLAKE8} --filterFiles AthenaConfiguration"
+   CACHE STRING "Python checker command to run during Python module compilation" )
+
+# Find the ATLAS CMake code:
+find_package( AtlasCMake QUIET )
+
+# Find the base project(s):
+find_package( AthGenerationExternals REQUIRED )
+find_package( Gaudi REQUIRED )
+
+# Additional externals needed for the build/runtime:
+find_package( Xrootd )
+find_package( GSL )
+find_package( Davix )
+find_package( PNG )
+find_package( BLAS )
+find_package( AIDA )
+
+# Set up the compilation option(s) for AthGeneration.
+add_definitions( -DGENERATIONBASE )
+set( GENERATIONBASE TRUE CACHE BOOL
+   "Flag specifying that this is a simulation release build" )
+
+# Load all the files from the externals/ subdirectory:
+file( GLOB _externals "${CMAKE_CURRENT_SOURCE_DIR}/externals/*.cmake" )
+foreach( _external ${_externals} )
+   include( ${_external} )
+   get_filename_component( _extName ${_external} NAME_WE )
+   string( TOUPPER ${_extName} _extNameUpper )
+   message( STATUS "Taking ${_extName} from: ${${_extNameUpper}_LCGROOT}" )
+   unset( _extName )
+   unset( _extNameUpper )
+endforeach()
+unset( _external )
+unset( _externals )
+
+# Disable the usage of the --no-undefined linker flag:
+atlas_disable_no_undefined()
+
+# Set up CTest:
+atlas_ctest_setup()
+
+# Set up the "ATLAS project".
+atlas_project( USE AthGenerationExternals ${AthGenerationExternals_VERSION}
+   PROJECT_ROOT ${CMAKE_SOURCE_DIR}/../../ )
+
+# Install the external configurations:
+install( DIRECTORY ${CMAKE_SOURCE_DIR}/externals
+   DESTINATION ${CMAKE_INSTALL_CMAKEDIR} USE_SOURCE_PERMISSIONS )
+
+# Generate the environment setup for the externals, to be used during the build:
+lcg_generate_env( SH_FILE ${CMAKE_BINARY_DIR}/${ATLAS_PLATFORM}/env_setup.sh )
+
+# Generate replacement rules for the installed paths:
+set( _replacements )
+if( NOT "$ENV{NICOS_PROJECT_HOME}" STREQUAL "" )
+   get_filename_component( _buildDir $ENV{NICOS_PROJECT_HOME} PATH )
+   list( APPEND _replacements ${_buildDir} "\${AthGeneration_DIR}/../../../.." )
+endif()
+if( NOT "$ENV{TDAQ_RELEASE_BASE}" STREQUAL "" )
+   list( APPEND _replacements $ENV{TDAQ_RELEASE_BASE}
+      "\${TDAQ_RELEASE_BASE}" )
+endif()
+
+# Now generate and install the installed setup files:
+lcg_generate_env( SH_FILE ${CMAKE_BINARY_DIR}/env_setup_install.sh
+   REPLACE ${_replacements} )
+install( FILES ${CMAKE_BINARY_DIR}/env_setup_install.sh
+   DESTINATION . RENAME env_setup.sh )
+
+# Configure and install the post-configuration file:
+string( REPLACE "$ENV{TDAQ_RELEASE_BASE}" "\$ENV{TDAQ_RELEASE_BASE}"
+   TDAQ-COMMON_ATROOT "${TDAQ-COMMON_ATROOT}" )
+string( REPLACE "${TDAQ-COMMON_VERSION}" "\${TDAQ-COMMON_VERSION}"
+   TDAQ-COMMON_ATROOT "${TDAQ-COMMON_ATROOT}" )
+configure_file( ${CMAKE_SOURCE_DIR}/cmake/PostConfig.cmake.in
+   ${CMAKE_BINARY_DIR}/PostConfig.cmake @ONLY )
+install( FILES ${CMAKE_BINARY_DIR}/PostConfig.cmake
+   DESTINATION ${CMAKE_INSTALL_CMAKEDIR} )
+
+# Package up the release using CPack:
+atlas_cpack_setup()
diff --git a/Projects/AthGeneration/README.md b/Projects/AthGeneration/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..bbd38eeb97cd5032f54983388e4721276fb308bf
--- /dev/null
+++ b/Projects/AthGeneration/README.md
@@ -0,0 +1,44 @@
+The Full ATLAS Offline Software Project
+=======================================
+
+This is the configuration for building the full offline software from the
+repository.
+
+Build Instructions
+------------------
+
+To build the externals necessary for building this project itself, use the
+
+    build_externals.sh
+
+script. It will build all the externals necessary for this project into a
+subdirectory of the directory holding this repository, called `build`.
+
+The sources of the externals will be checked out under `build/src`, the
+build of the projects will commence under `build/build`, and the results of
+the build will be installed under `build/install`.
+
+RPMs created from the externals are copied under `build/` by the script.
+
+Once the externals have finished building, you can initiate the full build
+of the project against these newly built externals by executing the
+
+    build.sh
+
+script. It uses the same directory layout inside the `build` directory as
+was used for the externals.
+
+Custom Builds
+-------------
+
+Of course it is perfectly allowed to set up a build by hand, not using the
+`build.sh` script as well. In that case you have to make sure to have a
+functional version of AthGenerationExternals set up in your environment, and point
+the `GAUDI_ROOT` environment variable against the Gaudi version that you
+want to use for the build.
+
+You will also need to set the `TDAQ_RELEASE_BASE` environment variable for
+the build to be successful. The simplest way of doing this is to use the
+helper script:
+
+    Build/AtlasBuildScripts/TDAQ_RELEASE_BASE.sh
diff --git a/Projects/AthGeneration/build.sh b/Projects/AthGeneration/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e793b9959e7618dfb8b0a8e569d448d117bef7aa
--- /dev/null
+++ b/Projects/AthGeneration/build.sh
@@ -0,0 +1,203 @@
+#!/bin/bash
+#
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+# Script for building the release on top of externals built using one of the
+# scripts in this directory.
+#
+_time_() { local c="time -p " ; while test "X$1" != "X" ; do c+=" \"$1\"" ; shift; done; ( eval "$c" ) 2>&1 | sed "s,^real[[:space:]],time::${c}:: real ," ; }
+
+# Function printing the usage information for the script
+usage() {
+    echo "Usage: build.sh [-t build type] [-b build dir] [-c] [-m] [-i] [-p] [-a] [-x opt] [-N]"
+    echo " -c: Execute CMake step"
+    echo " -m: Execute make step"
+    echo " -i: Execute install step"
+    echo " -p: Execute CPack step"
+    echo " -a: Abort on error"
+    echo " -x: Extra configuration argument(s) for CMake"
+    echo " -N: Use Ninja"
+
+    echo "If none of the c, m, i or p options are set then the script will do"
+    echo "*all* steps. Otherwise only the enabled steps are run - it's your"
+    echo "reponsibility to ensure that precusors are in good shape"
+}
+
+# Parse the command line arguments:
+BUILDDIR=""
+BUILDTYPE="RelWithDebInfo"
+EXE_CMAKE=""
+EXE_MAKE=""
+EXE_INSTALL=""
+EXE_CPACK=""
+NIGHTLY=true
+EXTRACMAKE=()
+BUILDTOOLTYPE=""
+BUILDTOOL="make -k"
+INSTALLRULE="install/fast"
+while getopts ":t:b:hcmipax:N" opt; do
+    case $opt in
+        t)
+            BUILDTYPE=$OPTARG
+            ;;
+        b)
+            BUILDDIR=$OPTARG
+            ;;
+        c)
+            EXE_CMAKE="1"
+            ;;
+        m)
+            EXE_MAKE="1"
+            ;;
+        i)
+            EXE_INSTALL="1"
+            ;;
+        p)
+            EXE_CPACK="1"
+            ;;
+        a)
+            NIGHTLY=false
+            ;;
+        x)
+            EXTRACMAKE+=($OPTARG)
+            ;;
+        N)
+            BUILDTOOL="ninja -k 0"
+            BUILDTOOLTYPE="-GNinja"
+            INSTALLRULE="install"
+            ;;
+        h)
+            usage
+            exit 0
+            ;;
+        :)
+            echo "Argument -$OPTARG requires a parameter!"
+            usage
+            exit 1
+            ;;
+        ?)
+            echo "Unknown argument: -$OPTARG"
+            usage
+            exit 1
+            ;;
+    esac
+done
+
+# If no step was explicitly specified, turn them all on:
+if [ -z "$EXE_CMAKE" -a -z "$EXE_MAKE" -a -z "$EXE_INSTALL" -a -z "$EXE_CPACK" ]; then
+    EXE_CMAKE="1"
+    EXE_MAKE="1"
+    EXE_INSTALL="1"
+    EXE_CPACK="1"
+fi
+
+# Stop on errors from here on out:
+set -e
+# consider a pipe failed if ANY of the commands fails
+set -o pipefail
+
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+    scriptsdir_nightly_status=${NIGHTLY_STATUS_SCRIPTS}
+    test "X$scriptsdir_nightly_status" = "X" && scriptsdir_nightly_status=${scriptsdir}/nightly_status 
+    test -x $scriptsdir_nightly_status/status_on_exit.sh  && trap $scriptsdir_nightly_status/status_on_exit.sh EXIT
+ }
+}
+
+# Source in our environment
+AthGenerationSrcDir=$(dirname ${BASH_SOURCE[0]})
+
+# The directory holding the helper scripts:
+scriptsdir=${AthGenerationSrcDir}/../../Build/AtlasBuildScripts
+scriptsdir=$(cd ${scriptsdir}; pwd)
+
+if [ -z "$BUILDDIR" ]; then
+    BUILDDIR=${AthGenerationSrcDir}/../../../build
+fi
+mkdir -p ${BUILDDIR}
+BUILDDIR=$(cd ${BUILDDIR} && pwd)
+source $AthGenerationSrcDir/build_env.sh -b $BUILDDIR  >& ${BUILDDIR}/build_env.log
+cat  ${BUILDDIR}/build_env.log
+
+# create the actual build directory
+mkdir -p ${BUILDDIR}/build/AthGeneration
+cd ${BUILDDIR}/build/AthGeneration
+
+# CMake:
+if [ -n "$EXE_CMAKE" ]; then
+    # Remove the CMakeCache.txt file, to force CMake to find externals
+    # from scratch in an incremental build.
+    rm -f CMakeCache.txt
+    # Now run the actual CMake configuration:
+    { _time_ cmake ${BUILDTOOLTYPE} -DCMAKE_BUILD_TYPE:STRING=${BUILDTYPE} \
+        ${EXTRACMAKE[@]} \
+        -DCTEST_USE_LAUNCHERS:BOOL=TRUE \
+        ${AthGenerationSrcDir}; } 2>&1 | tee cmake_config.log
+fi
+
+#log analyzer never affects return status in the parent shell:
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+    branch=$(basename $(cd ${BUILDDIR}/.. ; pwd)) #FIXME: should be taken from env.
+    timestamp_tmp=` basename ${BUILDDIR}/../.@@__* 2>/dev/null | sed 's,^\.,,' `
+    test "X$timestamp_tmp" != "X" || {
+        timestamp_tmp=@@__`date "+%Y-%m-%dT%H%M"`__@@ #to be used until the final stamp from ReleaseData is available
+        touch ${BUILDDIR}/../.${timestamp_tmp}
+    }
+    (set +e
+     ${scriptsdir_nightly_status}/cmake_config_status.sh "$branch" "$BINARY_TAG" "$timestamp_tmp" AthGeneration ${BUILDDIR}/build/AthGeneration/cmake_config.log 
+    )
+ } || true
+}
+
+# for nightly builds we want to get as far as we can
+if [ "$NIGHTLY" = true ]; then
+    # At this point stop worrying about errors:
+    set +e
+fi
+
+# make:
+if [ -n "$EXE_MAKE" ]; then
+    # Forcibly remove the merged CLID file from the previous build, to
+    # avoid issues with some library possibly changing the name/CLID
+    # of something during the build. Note that ${platform} is coming from
+    # the build_env.sh script.
+    rm -f ${platform}/share/clid.db
+    # Build the project.
+    { _time_ ${BUILDTOOL}; } 2>&1 | tee cmake_build.log
+fi
+
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+    (set +e
+     ${scriptsdir_nightly_status}/cmake_build_status.sh  "$branch" "$BINARY_TAG" "$timestamp_tmp" AthGeneration ${BUILDDIR}/build/AthGeneration/cmake_build.log 
+    )
+ } || true
+}
+
+# Install the results:
+if [ -n "$EXE_INSTALL" ]; then
+    { DESTDIR=${BUILDDIR}/install _time_ ${BUILDTOOL} ${INSTALLRULE}; } \
+	 2>&1 | tee cmake_install.log
+fi
+#^^^ do we need to analyze local install logs?
+
+# Build an RPM for the release:
+if [ -n "$EXE_CPACK" ]; then
+    { _time_ cpack; } 2>&1 | tee cmake_cpack.log
+    if [ "$BUILDTYPE" = "RelWithDebInfo" ]; then
+	{ _time_ cpack --config CPackDbgRPMConfig.cmake; } 2>&1 | tee -a cmake_cpack.log
+    fi
+    cp AthGeneration*.rpm ${BUILDDIR}/
+fi
+
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+    (set +e
+     for project in `ls ${BUILDDIR}/build 2>/dev/null` ; do
+        ${scriptsdir_nightly_status}/cmake_cpack_status.sh  "$branch" "$BINARY_TAG" "$timestamp_tmp" "${project}" ${BUILDDIR}/build/${project}/cmake_cpack.log 
+     done
+     ${scriptsdir_nightly_status}/collect_nightly_status.sh "$branch" "$BINARY_TAG" "$timestamp_tmp" "$BUILDDIR"
+    )
+ } || true
+}
diff --git a/Projects/AthGeneration/build_env.sh b/Projects/AthGeneration/build_env.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7327033c52343477a670d339552d790a7def97e6
--- /dev/null
+++ b/Projects/AthGeneration/build_env.sh
@@ -0,0 +1,108 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+# This script sets up the build enironment for an AthGeneration
+# build, on top of a built set of externals (including Gaudi)
+#
+# This script is kept separate from the build.sh
+# wrapper so it can be sourced separately from it when
+# clients want to manage their own build and just want
+# to setup the build environment
+
+env_usage() {
+    echo "Usage: build_env.sh [-b build dir]"
+}
+
+# This function actually sets up the environment for us
+# (factorise it here in case it needs skipped)
+env_setup() {
+    startdir=$(pwd)
+    # As this script can be sourced we need to support zsh and
+    # possibly other Bourne shells
+    if [ "x${BASH_SOURCE[0]}" = "x" ]; then
+        # This trick should do the right thing under ZSH:
+        thisdir=$(dirname `print -P %x`)
+        if [ $? != 0 ]; then
+            echo "ERROR: This script must be sourced from BASH or ZSH"
+            return 1
+        fi
+    else
+        # The BASH solution is a bit more straight forward:
+        thisdir=$(dirname ${BASH_SOURCE[0]})
+    fi
+    AthGenerationSrcDir=$(cd ${thisdir};pwd)
+
+    # The directory holding the helper scripts:
+    scriptsdir=${AthGenerationSrcDir}/../../Build/AtlasBuildScripts
+
+    # Go to the main directory of the repository:
+    cd ${AthGenerationSrcDir}/../..
+
+    # Check if the user specified any source/build directories:
+    if [ "$BUILDDIR" = "" ]; then
+	    BUILDDIR=${AthGenerationSrcDir}/../../../build
+    fi
+
+    # Get the version of AthGeneration for the build.
+    version=`cat ${AthGenerationSrcDir}/version.txt`
+
+    # Set up the environment for the build:
+    export NICOS_PROJECT_HOME=$(cd ${BUILDDIR}/install;pwd)/AthGeneration
+
+    # Set up the environment variables for finding LCG and the TDAQ externals:
+    source ${scriptsdir}/LCG_RELEASE_BASE.sh
+
+    # Set up the AthGenerationExternals project:
+    extDir=${BUILDDIR}/install/AthGenerationExternals/${version}/InstallArea
+    if [ ! -d ${extDir} ]; then
+	    echo "Didn't find the AthGenerationExternals project under ${extDir}"
+        echo "(Hopefully this is intentional and you have done e.g. asetup AthGenerationExternals,master,latest)"
+    else
+        echo "Setting up AthGenerationExternals from: ${extDir}"
+        source ${extDir}/*/setup.sh
+    fi
+
+    # Point to Gaudi:
+    # Get platform from the GAUDI build - we're assuming here that there's only one platform installed.
+    if [ -z "${GAUDI_ROOT+1}" ]; then
+        platform=$(cd ${BUILDDIR}/install/GAUDI/${version}/InstallArea/;ls)
+        export GAUDI_ROOT=${BUILDDIR}/install/GAUDI/${version}/InstallArea/${platform}
+    fi
+    echo "Taking Gaudi from: ${GAUDI_ROOT}"
+
+    cd $startdir
+}
+
+# we need to reset the option index as we are sourcing this script
+# http://stackoverflow.com/questions/23581368/bug-in-parsing-args-with-getopts-in-bash
+OPTIND=1
+
+# Parse the command line arguments:
+BUILDDIR=""
+while getopts "b:h" opt; do
+    case $opt in
+        b)
+            BUILDDIR=$OPTARG
+            ;;
+	h)
+	    env_usage
+	    ABORT=1
+	    ;;
+        :)
+            echo "Argument -$OPTARG requires a parameter!"
+            env_usage
+	    ABORT=1
+            ;;
+        ?)
+            echo "Unknown argument: -$OPTARG"
+            env_usage
+	    ABORT=1
+            ;;
+    esac
+done
+
+# Put a big wrapper around bad argument case, because
+# a sourced script should not call "exit". This is quite
+# annoying...
+if [ -z "$ABORT" ]; then
+    env_setup
+fi
diff --git a/Projects/AthGeneration/build_externals.sh b/Projects/AthGeneration/build_externals.sh
new file mode 100755
index 0000000000000000000000000000000000000000..99cf4d58cf4f15fd2faa785bb4275514c850e745
--- /dev/null
+++ b/Projects/AthGeneration/build_externals.sh
@@ -0,0 +1,202 @@
+#!/bin/bash
+#
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+# Script building all the externals necessary for the nightly build.
+#
+
+# Function printing the usage information for the script
+usage() {
+    echo "Usage: build_externals.sh [-t build_type] [-b build_dir] [-f] [-c] [-x]"
+    echo " -f: Force rebuild of externals from scratch, otherwise if script"
+    echo "     finds an external build present it will only do an incremental"
+    echo "     build"
+    echo " -c: Build the externals for the continuous integration (CI) system,"
+    echo "     skipping the build of the externals RPMs."
+    echo " -x: Extra cmake argument(s) to provide for the build(configuration)"
+    echo "     of all externals needed by AthGeneration."
+    echo "If a build_dir is not given the default is '../build'"
+    echo "relative to the athena checkout"
+}
+
+# Parse the command line arguments:
+BUILDDIR=""
+BUILDTYPE="RelWithDebInfo"
+FORCE=""
+CI=""
+EXTRACMAKE=(-DLCG_VERSION_NUMBER=96 -DLCG_VERSION_POSTFIX="")
+while getopts ":t:b:x:fch" opt; do
+    case $opt in
+        t)
+            BUILDTYPE=$OPTARG
+            ;;
+        b)
+            BUILDDIR=$OPTARG
+            ;;
+        f)
+            FORCE="1"
+            ;;
+        c)
+            CI="1"
+            ;;
+        x)
+            EXTRACMAKE+=($OPTARG)
+            ;;
+        h)
+            usage
+            exit 0
+            ;;
+        :)
+            echo "Argument -$OPTARG requires a parameter!"
+            usage
+            exit 1
+            ;;
+        ?)
+            echo "Unknown argument: -$OPTARG"
+            usage
+            exit 1
+            ;;
+    esac
+done
+
+# Only stop on errors if we are in the CI. Otherwise just count them.
+if [ "$CI" = "1" ]; then
+    set -e
+    set -o pipefail
+fi
+ERROR_COUNT=0
+
+# We are in BASH, get the path of this script in a simple way:
+thisdir=$(dirname ${BASH_SOURCE[0]})
+thisdir=$(cd ${thisdir};pwd)
+
+# Go to the main directory of the repository:
+cd ${thisdir}/../..
+
+{ 
+ test "X${NIGHTLY_STATUS}" != "X" && {
+    scriptsdir_nightly_status=${NIGHTLY_STATUS_SCRIPTS}
+    test "X$scriptsdir_nightly_status" = "X" && scriptsdir_nightly_status=${scriptsdir}/nightly_status 
+    test -x $scriptsdir_nightly_status/externals_status_on_exit.sh  && trap $scriptsdir_nightly_status/externals_status_on_exit.sh EXIT
+ }
+}
+
+# Check if the user specified any source/build directories:
+if [ "$BUILDDIR" = "" ]; then
+    BUILDDIR=${thisdir}/../../../build
+fi
+mkdir -p ${BUILDDIR}
+BUILDDIR=$(cd $BUILDDIR; pwd)
+
+if [ "$FORCE" = "1" ]; then
+    echo "Force deleting existing build area..."
+    rm -fr ${BUILDDIR}/install/AthGenerationExternals ${BUILDDIR}/install/GAUDI
+    rm -fr ${BUILDDIR}/src/AthGenerationExternals ${BUILDDIR}/src/GAUDI
+    rm -fr ${BUILDDIR}/build/AthGenerationExternals ${BUILDDIR}/build/GAUDI
+fi
+
+# Create some directories:
+mkdir -p ${BUILDDIR}/{src,install}
+
+# Get the version of AthGeneration for the build.
+version=`cat ${thisdir}/version.txt`
+
+# The directory holding the helper scripts:
+scriptsdir=${thisdir}/../../Build/AtlasBuildScripts
+scriptsdir=$(cd ${scriptsdir}; pwd)
+
+# Set the environment variable for finding LCG releases:
+source ${scriptsdir}/LCG_RELEASE_BASE.sh
+
+# Flag for triggering the build of RPMs for the externals:
+RPMOPTIONS="-r ${BUILDDIR}"
+if [ "$CI" = "1" ]; then
+    RPMOPTIONS=
+fi
+
+# Read in the tag/branch to use for AthGenerationExternals:
+AthGenerationExternalsVersion=$(awk '/^AthGenerationExternalsVersion/{print $3}' ${thisdir}/externals.txt)
+
+# Check out AthGenerationExternals from the right branch/tag:
+${scriptsdir}/checkout_atlasexternals.sh \
+    -t ${AthGenerationExternalsVersion} \
+    -s ${BUILDDIR}/src/AthGenerationExternals 2>&1 | \
+    tee ${BUILDDIR}/src/checkout.AthGenerationExternals.log 
+
+# log analyzer never affects return status in the parent shell:
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+    branch=$(basename $(cd .. ; pwd)) #FIXME: should be taken from env.
+    timestamp_tmp=` basename ${BUILDDIR}/../.@@__* 2>/dev/null | sed 's,^\.,,' ` #to be used until the final stamp from ReleaseData is available
+    test "X$timestamp_tmp" != "X" || {
+        timestamp_tmp=@@__`date "+%Y-%m-%dT%H%M"`__@@ 
+        touch ${BUILDDIR}/../.${timestamp_tmp}
+    }
+   (set +e 
+    ${scriptsdir_nightly_status}/checkout_status.sh "$branch" "$BINARY_TAG" "$timestamp_tmp" AthGenerationExternals ${BUILDDIR}/src/checkout.AthGenerationExternals.log
+   )
+ } || true
+}
+
+## Build AthGenerationExternals:
+${scriptsdir}/build_atlasexternals.sh \
+    -s ${BUILDDIR}/src/AthGenerationExternals \
+    -b ${BUILDDIR}/build/AthGenerationExternals \
+    -i ${BUILDDIR}/install \
+    -p AthGenerationExternals ${RPMOPTIONS} -t ${BUILDTYPE} \
+    -v ${version} \
+    ${EXTRACMAKE[@]/#/-x } || ((ERROR_COUNT++))
+
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+   (set +e 
+    ${scriptsdir_nightly_status}/cmake_config_status.sh "$branch" "$BINARY_TAG" "$timestamp_tmp" AthGenerationExternals ${BUILDDIR}/build/AthGenerationExternals/cmake_config.log 
+    ${scriptsdir_nightly_status}/cmake_build_status.sh  "$branch" "$BINARY_TAG" "$timestamp_tmp" AthGenerationExternals ${BUILDDIR}/build/AthGenerationExternals/cmake_build.log 
+   )
+ } || true
+}
+
+# Get the "platform name" from the directory created by the AthGenerationExternals
+# build:
+platform=$(cd ${BUILDDIR}/install/AthGenerationExternals/${version}/InstallArea;ls)
+
+# Read in the tag/branch to use for Gaudi:
+GaudiVersion=$(awk '/^GaudiVersion/{print $3}' ${thisdir}/externals.txt)
+
+# Check out Gaudi from the right branch/tag:
+${scriptsdir}/checkout_Gaudi.sh \
+    -t ${GaudiVersion} \
+    -s ${BUILDDIR}/src/GAUDI 2>&1 | tee ${BUILDDIR}/src/checkout.GAUDI.log
+
+{
+ test "X${NIGHTLY_STATUS}" != "X" && { 
+   (set +e
+    ${scriptsdir_nightly_status}/checkout_status.sh "$branch" "$BINARY_TAG" "$timestamp_tmp" GAUDI ${BUILDDIR}/src/checkout.GAUDI.log
+   )
+ } || true
+}
+
+# Build Gaudi:
+${scriptsdir}/build_Gaudi.sh \
+    -s ${BUILDDIR}/src/GAUDI \
+    -b ${BUILDDIR}/build/GAUDI \
+    -i ${BUILDDIR}/install \
+    -e ${BUILDDIR}/install/AthGenerationExternals/${version}/InstallArea/${platform} \
+    -v ${version} \
+    -p AthGenerationExternals -f ${platform} ${RPMOPTIONS} -t ${BUILDTYPE} \
+    ${EXTRACMAKE[@]/#/-x } || ((ERROR_COUNT++))
+
+{
+ test "X${NIGHTLY_STATUS}" != "X" && {
+   (set +e
+    ${scriptsdir_nightly_status}/cmake_config_status.sh "$branch" "$BINARY_TAG" "$timestamp_tmp" GAUDI ${BUILDDIR}/build/GAUDI/cmake_config.log 
+    ${scriptsdir_nightly_status}/cmake_build_status.sh  "$branch" "$BINARY_TAG" "$timestamp_tmp" GAUDI ${BUILDDIR}/build/GAUDI/cmake_build.log 
+   )
+ } || true
+}
+
+# Exit with the error count taken into account.
+if [ ${ERROR_COUNT} -ne 0 ]; then
+    echo "AthGeneration externals build encountered ${ERROR_COUNT} error(s)"
+fi
+exit ${ERROR_COUNT}
diff --git a/Projects/AthGeneration/cmake/PostConfig.cmake.in b/Projects/AthGeneration/cmake/PostConfig.cmake.in
new file mode 100644
index 0000000000000000000000000000000000000000..519cd3345d72bf4a0be22e7dcf6641d8bcfaac17
--- /dev/null
+++ b/Projects/AthGeneration/cmake/PostConfig.cmake.in
@@ -0,0 +1,30 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+# File taking care of pointing the downstream projects at the right
+# version of the externals.
+#
+
+# Find Gaudi:
+find_package( Gaudi REQUIRED )
+
+# Set up the compilation option(s) for AthGeneration.
+add_definitions( -DGENERATIONBASE )
+set( GENERATIONBASE TRUE CACHE BOOL
+    "Flag specifying that this is a generation release build" )
+
+# Load all the files from the externals/ subdirectory:
+get_filename_component( _thisdir ${CMAKE_CURRENT_LIST_FILE} PATH )
+file( GLOB _externals "${_thisdir}/externals/*.cmake" )
+unset( _thisdir )
+foreach( _external ${_externals} )
+   include( ${_external} )
+   get_filename_component( _extName ${_external} NAME_WE )
+   string( TOUPPER ${_extName} _extNameUpper )
+   if( NOT AtlasExternals_FIND_QUIETLY )
+      message( STATUS "Taking ${_extName} from: ${${_extNameUpper}_LCGROOT}" )
+   endif()
+   unset( _extName )
+   unset( _extNameUpper )
+endforeach()
+unset( _external )
+unset( _externals )
diff --git a/Projects/AthGeneration/cmake/README.txt.in b/Projects/AthGeneration/cmake/README.txt.in
new file mode 100644
index 0000000000000000000000000000000000000000..d1a2ff448e2478f1cd157ebff952dc6d26318634
--- /dev/null
+++ b/Projects/AthGeneration/cmake/README.txt.in
@@ -0,0 +1,5 @@
+
+  AthGeneration - @CMAKE_PROJECT_VERSION@
+
+This package provides version @CMAKE_PROJECT_VERSION@ of the ATLAS
+event generation software.
diff --git a/Projects/AthGeneration/externals.txt b/Projects/AthGeneration/externals.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1d5585722185f7bdef2f1cf1ac4660788536a060
--- /dev/null
+++ b/Projects/AthGeneration/externals.txt
@@ -0,0 +1,12 @@
+# Versions of the various externals to build before starting the build of
+# this project, when doing a full stack nightly build.
+#
+# Remember that when specifying the name of a branch, you *must* put
+# an "origin/" prefix before it. For tags however this is explicitly
+# forbidden.
+
+# The version of atlas/atlasexternals to use:
+AthGenerationExternalsVersion = 2.0.57
+
+# The version of atlas/Gaudi to use:
+GaudiVersion = v33r0.003
diff --git a/Projects/AthGeneration/externals/Crmc.cmake b/Projects/AthGeneration/externals/Crmc.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..b1a4276e809b45a7bf67c442c6ef82822e361ef3
--- /dev/null
+++ b/Projects/AthGeneration/externals/Crmc.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Crmc to use.
+#
+
+set( CRMC_VERSION 1.5.6 )
+set( CRMC_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/crmc/${CRMC_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/EvtGen.cmake b/Projects/AthGeneration/externals/EvtGen.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..5d729fa4457dd559530cf6c20db62a6974763059
--- /dev/null
+++ b/Projects/AthGeneration/externals/EvtGen.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of EvtGen to use.
+#
+
+set( EVTGEN_LCGVERSION 1.7.0 )
+set( EVTGEN_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/evtgen/${EVTGEN_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/FJContrib.cmake b/Projects/AthGeneration/externals/FJContrib.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..fe7873d126d03a3022a7319467800c24042224e7
--- /dev/null
+++ b/Projects/AthGeneration/externals/FJContrib.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of FJContrib to use.
+#
+
+set( FJCONTRIB_LCGVERSION 1.041 )
+set( FJCONTRIB_LCGROOT
+   ${LCG_RELEASE_DIR}/fjcontrib/${FJCONTRIB_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/HEPUtils.cmake b/Projects/AthGeneration/externals/HEPUtils.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8344158ac506661512518cc490a53e012719bfd0
--- /dev/null
+++ b/Projects/AthGeneration/externals/HEPUtils.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of HEPUtils to use.
+#
+
+set( HEPUTILS_LCGVERSION 1.3.2 )
+set( HEPUTILS_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/heputils/${HEPUTILS_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Herwig.cmake b/Projects/AthGeneration/externals/Herwig.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..b0df2d6dd7de4363b5fc6a5538ac9becea9f78ef
--- /dev/null
+++ b/Projects/AthGeneration/externals/Herwig.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Herwig to use.
+#
+
+set( HERWIG_LCGVERSION 6.521.2 )
+set( HERWIG_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/herwig/${HERWIG_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Herwig3.cmake b/Projects/AthGeneration/externals/Herwig3.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..70a428981e758362c6aad7a1f495bfb4050e899b
--- /dev/null
+++ b/Projects/AthGeneration/externals/Herwig3.cmake
@@ -0,0 +1,9 @@
+#
+# File specifying the location of Herwig3 to use.
+#
+
+set( HERWIG3_LCGVERSION 7.2.0 )
+# Comment the following line for H7 versions <7.2
+set( HW3_VER_IS_72 1 )
+set( HERWIG3_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/herwig++/${HERWIG3_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Hydjet.cmake b/Projects/AthGeneration/externals/Hydjet.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..1eede1364e82dd905ae8546a36ffba6acfe11849
--- /dev/null
+++ b/Projects/AthGeneration/externals/Hydjet.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Hydjet to use.
+#
+
+set( HYDJET_LCGVERSION 1.8 )
+set( HYDJET_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/hydjet/${HYDJET_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Lhapdf.cmake b/Projects/AthGeneration/externals/Lhapdf.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..03c1e85b5a88e746d9a03c918df24ae9b84b6faa
--- /dev/null
+++ b/Projects/AthGeneration/externals/Lhapdf.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Lhapdf to use.
+#
+
+set( LHAPDF_LCGVERSION 6.2.3 )
+set( LHAPDF_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/lhapdf/${LHAPDF_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/MCUtils.cmake b/Projects/AthGeneration/externals/MCUtils.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..f7ebb4984d7dde06c3c0be84b212779a3cf45bc4
--- /dev/null
+++ b/Projects/AthGeneration/externals/MCUtils.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of MCUtils to use.
+#
+
+set( MCUTILS_LCGVERSION 1.3.3 )
+set( MCUTILS_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/mcutils/${MCUTILS_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/MadGraph5Amc.cmake b/Projects/AthGeneration/externals/MadGraph5Amc.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..741f63cf942e814843d29e662f38f8a96ab607ba
--- /dev/null
+++ b/Projects/AthGeneration/externals/MadGraph5Amc.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of MadGraph to use.
+#
+
+set( MADGRAPH5AMC_LCGVERSION 2.6.7.atlas3 )
+set( MADGRAPH5AMC_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/madgraph5amc/${MADGRAPH5AMC_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/OpenLoops.cmake b/Projects/AthGeneration/externals/OpenLoops.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..087811c9d70c055a7419707b2358156a3e43c4e4
--- /dev/null
+++ b/Projects/AthGeneration/externals/OpenLoops.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of OpenLoops to use.
+#
+
+set( OPENLOOPS_LCGVERSION "2.0.0" )
+set( OPENLOOPS_LCGROOT
+  "${LCG_RELEASE_DIR}/MCGenerators/openloops/${OPENLOOPS_LCGVERSION}/${LCG_PLATFORM}" )
\ No newline at end of file
diff --git a/Projects/AthGeneration/externals/Photospp.cmake b/Projects/AthGeneration/externals/Photospp.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8e0b8c2deae56c516c33438e44d0ce2257191861
--- /dev/null
+++ b/Projects/AthGeneration/externals/Photospp.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Photos++ to use.
+#
+
+set( PHOTOSPP_LCGVERSION 3.61 )
+set( PHOTOSPP_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/photos++/${PHOTOSPP_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Pythia6.cmake b/Projects/AthGeneration/externals/Pythia6.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..b8810cd5b852142988e8bb706b07cfcafa1a29ca
--- /dev/null
+++ b/Projects/AthGeneration/externals/Pythia6.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Pythia 6 to use.
+#
+
+set( PYTHIA6_LCGVERSION 429.2 )
+set( PYTHIA6_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/pythia6/${PYTHIA6_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Pythia8.cmake b/Projects/AthGeneration/externals/Pythia8.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..378c1efff99649120c024d7951be38ff50c97979
--- /dev/null
+++ b/Projects/AthGeneration/externals/Pythia8.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Pythia 8 to use.
+#
+
+set( PYTHIA8_LCGVERSION 244 )
+set( PYTHIA8_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/pythia8/${PYTHIA8_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/README.md b/Projects/AthGeneration/externals/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a0b5ddb141d9662009c64e2664c9d3d704c9ab2c
--- /dev/null
+++ b/Projects/AthGeneration/externals/README.md
@@ -0,0 +1,20 @@
+Directory collecting external package declarations
+==================================================
+
+This directory is used to collect simple CMake files that get included by
+the CMake configuration to set up the locations of all the externals used
+for the offline release build.
+
+Each external should be defined by its own CMake file. The files should
+have a name <Bla> corresponding to the Find<Bla> module name used to find
+the external in question.
+
+The files should define all the variables expected by the Find<Bla> modules,
+which normally boil down to variables:
+
+`EXTNAME_LCGROOT`
+`EXTNAME_LCGVERSION`
+
+But some modules may require other variables. In which case the `_LCGROOT`
+variable should still be set, to get a nice printout from the AtlasExternals
+code during the build about the location of the used external.
diff --git a/Projects/AthGeneration/externals/Rivet.cmake b/Projects/AthGeneration/externals/Rivet.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..a2852f07772f2f45aa720a81c0049208bfbd0bab
--- /dev/null
+++ b/Projects/AthGeneration/externals/Rivet.cmake
@@ -0,0 +1,6 @@
+#
+# File specifying the location of Rivet to use.
+#
+set( RIVET_LCGVERSION 3.1.0 )
+set( RIVET_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/rivet/${RIVET_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Sherpa.cmake b/Projects/AthGeneration/externals/Sherpa.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..ba9b3421a933a8273427d55da9c62bfd131d3aab
--- /dev/null
+++ b/Projects/AthGeneration/externals/Sherpa.cmake
@@ -0,0 +1,6 @@
+#
+# File specifying the location of Sherpa to use.
+#
+set( SHERPA_LCGVERSION 2.2.8 )
+set( SHERPA_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/sherpa/${SHERPA_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Starlight.cmake b/Projects/AthGeneration/externals/Starlight.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..4e0548db7bff885d4230a5cc5749fa806ded1b08
--- /dev/null
+++ b/Projects/AthGeneration/externals/Starlight.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Starlight to use.
+#
+
+set( STARLIGHT_LCGVERSION r313 )
+set( STARLIGHT_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/starlight/${STARLIGHT_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Superchic.cmake b/Projects/AthGeneration/externals/Superchic.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..eae6f9b47adef44b2cc964e4e127ef803de49bab
--- /dev/null
+++ b/Projects/AthGeneration/externals/Superchic.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Superchic 3.0 to use.
+#
+
+set( SUPERCHIC_LCGVERSION 3.06 )
+set( SUPERCHIC_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/superchic/${SUPERCHIC_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/Tauolapp.cmake b/Projects/AthGeneration/externals/Tauolapp.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..375c6944f2a508160192f49f9f816570e11746cf
--- /dev/null
+++ b/Projects/AthGeneration/externals/Tauolapp.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of Tauola++ to use.
+#
+
+set( TAUOLAPP_LCGVERSION 1.1.6 )
+set( TAUOLAPP_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/tauola++/${TAUOLAPP_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/ThePEG.cmake b/Projects/AthGeneration/externals/ThePEG.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..cf5c807c4582efe4b7084e3add47f9910fed7e3e
--- /dev/null
+++ b/Projects/AthGeneration/externals/ThePEG.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of ThePEG to use.
+#
+
+set( THEPEG_LCGVERSION 2.2.0 )
+set( THEPEG_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/thepeg/${THEPEG_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/externals/VBFNLO.cmake b/Projects/AthGeneration/externals/VBFNLO.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..74e301bb25f7a2d90b5d5bbad9381a0df5b658da
--- /dev/null
+++ b/Projects/AthGeneration/externals/VBFNLO.cmake
@@ -0,0 +1,7 @@
+#
+# File specifying the location of VBFNLO to use.
+#
+
+set( VBFNLO_LCGVERSION "3.0.0beta2p3" )
+set( VBFNLO_LCGROOT
+  "${LCG_RELEASE_DIR}/MCGenerators/vbfnlo/${VBFNLO_LCGVERSION}/${LCG_PLATFORM}" )
\ No newline at end of file
diff --git a/Projects/AthGeneration/externals/YODA.cmake b/Projects/AthGeneration/externals/YODA.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..388f4c1e158db5510a576ca7146da09bd374e22c
--- /dev/null
+++ b/Projects/AthGeneration/externals/YODA.cmake
@@ -0,0 +1,6 @@
+#
+# File specifying the location of YODA to use.
+#
+set( YODA_LCGVERSION 1.8.0 )
+set( YODA_LCGROOT
+   ${LCG_RELEASE_DIR}/MCGenerators/yoda/${YODA_LCGVERSION}/${LCG_PLATFORM} )
diff --git a/Projects/AthGeneration/package_filters.txt b/Projects/AthGeneration/package_filters.txt
new file mode 100644
index 0000000000000000000000000000000000000000..85fd11c0ba723d11d7f3d5ebc307c3e83fed1187
--- /dev/null
+++ b/Projects/AthGeneration/package_filters.txt
@@ -0,0 +1,184 @@
+#
+# Package filtering rules for the AthGeneration project build.
+#
++ AtlasTest/TestTools
++ Calorimeter/CaloConditions
++ Calorimeter/CaloGeoHelpers
++ Calorimeter/CaloDetDescr
++ Calorimeter/CaloEvent
++ Calorimeter/CaloIdentifier
++ Control/AthAllocators
++ Control/AthAnalysisBaseComps
++ Control/AthContainers
++ Control/AthContainersInterfaces
++ Control/AthContainersRoot
++ Control/AthLinks
++ Control/AthToolSupport/AsgMessaging
++ Control/AthToolSupport/AsgTools
++ Control/AthenaBaseComps
++ Control/AthenaCommon
++ Control/AthenaInterprocess
++ Control/AthenaKernel
++ Control/AthenaMP
++ Control/AthenaMPTools
++ Control/AthenaPython
++ Control/AthenaServices
++ Control/CLIDComps
++ Control/CxxUtils
++ Control/DataModelAthenaPool
++ Control/DataModelRoot
++ Control/GaudiSequencer
++ Control/IOVSvc
++ Control/Navigation
++ Control/PerformanceMonitoring/PerfMonAna
++ Control/PerformanceMonitoring/PerfMonComps
++ Control/PerformanceMonitoring/PerfMonEvent
++ Control/PerformanceMonitoring/PerfMonKernel
++ Control/PyKernel
++ Control/RngComps
++ Control/RootUtils
++ Control/SGComps
++ Control/SGMon/SGAudCore
++ Control/SGMon/SGAudSvc
++ Control/SGTools
++ Control/StoreGate
++ Control/StoreGateBindings
++ Control/xAODRootAccess
++ Control/xAODRootAccessInterfaces
++ Database/APR/CollectionBase
++ Database/APR/CollectionUtilities
++ Database/APR/FileCatalog
++ Database/APR/ImplicitCollection
++ Database/APR/POOLCore 
++ Database/APR/PersistencySvc
++ Database/APR/RootStorageSvc
++ Database/APR/StorageSvc
++ Database/AthenaPOOL/AthenaPoolCnvSvc
++ Database/AthenaPOOL/AthenaPoolServices
++ Database/AthenaPOOL/AthenaPoolUtilities
++ Database/AthenaPOOL/DBDataModel
++ Database/AthenaPOOL/EventSelectorAthenaPool
++ Database/AthenaPOOL/OutputStreamAthenaPool
++ Database/AthenaPOOL/PoolSvc
++ Database/AthenaPOOL/RootConversions
++ Database/AtlasSealCLHEP
++ Database/ConnectionManagement/AtlasAuthentication
++ Database/ConnectionManagement/DBReplicaSvc
++ Database/CoraCool
++ Database/IOVDbAthenaPool
++ Database/IOVDbDataModel
++ Database/IOVDbMetaDataTools
++ Database/IOVDbSvc
++ Database/IOVDbTPCnv
++ Database/PersistentDataModel
++ Database/PersistentDataModelAthenaPool
++ Database/PersistentDataModelTPCnv
++ Database/TPTools
++ DetectorDescription/AtlasDetDescr
++ DetectorDescription/GeoModel/GeoModelInterfaces
++ DetectorDescription/GeoModel/GeoModelUtilities
++ DetectorDescription/GeoPrimitives
++ DetectorDescription/IdDict
++ DetectorDescription/IdDictParser
++ DetectorDescription/Identifier
++ Event/EventAthenaPool
++ Event/EventBookkeeperAthenaPool
++ Event/EventBookkeeperMetaData
++ Event/EventBookkeeperTPCnv
++ Event/EventBookkeeperTools
++ Event/EventContainers
++ Event/EventInfo
++ Event/EventInfoMgt
++ Event/EventKernel
++ Event/EventPTCnv
++ Event/EventPrimitives
++ Event/EventTPCnv
++ Event/FourMom
++ Event/NavFourMom
++ Event/PyDumper
++ Event/xAOD/xAODBase
++ Event/xAOD/xAODCaloEvent
++ Event/xAOD/xAODCore
++ Event/xAOD/xAODCoreAthenaPool
++ Event/xAOD/xAODCoreCnv
++ Event/xAOD/xAODCutFlow
++ Event/xAOD/xAODEventFormat
++ Event/xAOD/xAODEventInfo
++ Event/xAOD/xAODEventShape
++ Event/xAOD/xAODJet
++ Event/xAOD/xAODJetAthenaPool
++ Event/xAOD/xAODMuon
++ Event/xAOD/xAODPrimitives
++ Event/xAOD/xAODTracking
++ Event/xAOD/xAODTruth
++ Event/xAOD/xAODTruthAthenaPool
++ Event/xAOD/xAODTruthCnv
++ External/AtlasDataArea
++ External/Pythia8
++ External/pyAMI
++ Generators/Charybdis_i
+- Generators/EmbeddedTrackGenerator
+- Generators/ExoGraviton_i
+- Generators/GravADD_i
+- Generators/Horace_i
+- Generators/HvGen_i
+- Generators/MadCUP_i
+- Generators/Matchig_i
+- Generators/Protos_i
+- Generators/Pyquench_i
+- Generators/PythiaB
+- Generators/PythiaExo_i
+- Generators/Reldis_i
+- Generators/VBFNLOControl
+- Generators/TrackRecordGenerator
++ Generators/.*
++ InnerDetector/InDetExample/InDetRecExample
++ LArCalorimeter/LArCabling
++ LArCalorimeter/LArGeoModel/LArHV
++ LArCalorimeter/LArGeoModel/LArReadoutGeometry
++ LArCalorimeter/LArIdentifier
++ MuonSpectrometer/MuonIdHelpers
++ PhysicsAnalysis/AnalysisCommon/ParticleEvent
++ PhysicsAnalysis/AnalysisCommon/ParticleJetTools
++ PhysicsAnalysis/PATJobTransforms
++ PhysicsAnalysis/TruthParticleID/McParticleEvent
++ PhysicsAnalysis/TruthParticleID/McParticleKernel
++ Reconstruction/EventShapes/EventShapeInterface
++ Reconstruction/Jet/JetEDM
++ Reconstruction/Jet/JetEvent
++ Reconstruction/Jet/JetInterface
++ Reconstruction/Jet/JetRec
++ Reconstruction/MissingETEvent
++ Reconstruction/Particle
++ Reconstruction/RecExample/RecExCommon
++ Reconstruction/RecExample/RecExConfig
++ Simulation/Tools/AtlasCLHEP_RandomGenerators
++ Tools/ART
++ Tools/JobTransforms
++ Tools/KitValidation
++ Tools/PathResolver
++ Tools/PmbCxxUtils
++ Tools/PyJobTransforms
++ Tools/PyJobTransformsCore
++ Tools/PyUtils
++ Tools/Scripts
++ Tools/XMLCoreParser
++ Tracking/TrkDetDescr/TrkDetDescrUtils
++ Tracking/TrkDetDescr/TrkDetElementBase
++ Tracking/TrkDetDescr/TrkSurfaces
++ Tracking/TrkEvent/TrkEventPrimitives
++ Tracking/TrkEvent/TrkMaterialOnTrack
++ Tracking/TrkEvent/TrkMeasurementBase
++ Tracking/TrkEvent/TrkNeutralParameters
++ Tracking/TrkEvent/TrkParameters
++ Tracking/TrkEvent/TrkParametersBase
++ Tracking/TrkEvent/TrkParticleBase
++ Tracking/TrkEvent/TrkSegment
++ Tracking/TrkEvent/TrkTrack
++ Tracking/TrkEvent/TrkTrackLink
++ Tracking/TrkEvent/TrkTrackSummary
++ Tracking/TrkEvent/VxVertex
++ PhysicsAnalysis/MCTruthClassifier
+# Ignore everything else
+- .*
+
diff --git a/Projects/AthGeneration/version.txt b/Projects/AthGeneration/version.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f7fbce293b61ab52ce2049b102d5403190a3ad5c
--- /dev/null
+++ b/Projects/AthGeneration/version.txt
@@ -0,0 +1 @@
+22.0.10
diff --git a/Projects/AthSimulation/externals.txt b/Projects/AthSimulation/externals.txt
index 90c6b8fe5f8567bfb6caea0412b2a6c5965027e8..7f4a0a757f13aefc66b3c715e80bcfe19fbdabff 100644
--- a/Projects/AthSimulation/externals.txt
+++ b/Projects/AthSimulation/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthSimulationExternalsVersion = 2.0.56
+AthSimulationExternalsVersion = 2.0.57
 
 # The version of atlas/Gaudi to use:
 GaudiVersion = v33r0.003
diff --git a/Projects/Athena/externals.txt b/Projects/Athena/externals.txt
index 73b949186a0c324fd693ea40ad9e20dc815108ad..c31020459e677e03e32768f12d585330d419c3d4 100644
--- a/Projects/Athena/externals.txt
+++ b/Projects/Athena/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthenaExternalsVersion = 2.0.56
+AthenaExternalsVersion = 2.0.57
 
 # The version of atlas/Gaudi to use:
 GaudiVersion = v33r0.003
diff --git a/Projects/VP1Light/externals.txt b/Projects/VP1Light/externals.txt
index 8c3230444437adcbbe4bc892d96d78d25a5280fe..4478114a9c29f1225269759e2c644ab69162c339 100644
--- a/Projects/VP1Light/externals.txt
+++ b/Projects/VP1Light/externals.txt
@@ -6,4 +6,4 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-VP1LightExternalsVersion = 2.0.56
+VP1LightExternalsVersion = 2.0.57