From 4af5abc5867cd941aa81c7ae402dc448d14c45d8 Mon Sep 17 00:00:00 2001
From: Benjamin Franzke <bfr@qbus.de>
Date: Wed, 27 May 2020 08:58:39 +0200
Subject: [PATCH] [TASK] Cleanup runtimeActivatedPackages deprecation removal

Remove a stale comment wrt PackageManager->activePackageDuringRuntime()
as that method has been removed in #91477. Drop the setSingletonInstance
workaround which was only needed for the runtime activated packages
feature to work.

Also remove some left over runtimeActivatedPackages logic in various
places.

Resolves: #91500
Related: #91477
Related: #91473
Releases: master
Change-Id: Ia2830c230e2a8b7443bb24a79c81dbf7f2f86226
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64588
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
---
 typo3/sysext/core/Classes/Core/Bootstrap.php       | 14 +++++---------
 .../Classes/Utility/ExtensionManagementUtility.php |  6 +++---
 .../core/Configuration/DefaultConfiguration.php    |  1 -
 .../ToggleExtensionInstallationStateViewHelper.php |  4 ++--
 .../ExtensionScanner/Php/ArrayDimensionMatcher.php |  1 +
 5 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/typo3/sysext/core/Classes/Core/Bootstrap.php b/typo3/sysext/core/Classes/Core/Bootstrap.php
index fa2822f94e96..1e4c94182502 100644
--- a/typo3/sysext/core/Classes/Core/Bootstrap.php
+++ b/typo3/sysext/core/Classes/Core/Bootstrap.php
@@ -106,12 +106,6 @@ class Bootstrap
             $coreCache
         );
 
-        // Push PackageManager instance to ExtensionManagementUtility
-        // Should be fetched through the container (later) but currently a PackageManager
-        // singleton instance is required by PackageManager->activePackageDuringRuntime
-        GeneralUtility::setSingletonInstance(PackageManager::class, $packageManager);
-        ExtensionManagementUtility::setPackageManager($packageManager);
-
         static::setDefaultTimezone();
         static::setMemoryLimit();
 
@@ -142,10 +136,12 @@ class Bootstrap
         // makeInstance() method creates classes using the container from now on.
         GeneralUtility::setContainer($container);
 
-        // Reset singleton instances in order for GeneralUtility::makeInstance() to use
-        // ContainerInterface->get() for early services from now on.
+        // Reset LogManager singleton instance in order for GeneralUtility::makeInstance()
+        // to proxy LogManager retrieval to ContainerInterface->get() from now on.
         GeneralUtility::removeSingletonInstance(LogManager::class, $logManager);
-        GeneralUtility::removeSingletonInstance(PackageManager::class, $packageManager);
+
+        // Push PackageManager instance to ExtensionManagementUtility
+        ExtensionManagementUtility::setPackageManager($packageManager);
 
         if ($failsafe) {
             $bootState->done = true;
diff --git a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
index 9e2a69487077..2ae4f6c718fc 100644
--- a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
+++ b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
@@ -1621,7 +1621,7 @@ tt_content.' . $key . $suffix . ' {
      */
     protected static function getExtLocalconfCacheIdentifier()
     {
-        return 'ext_localconf_' . sha1((string)(new Typo3Version()) . Environment::getProjectPath() . 'extLocalconf' . serialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['runtimeActivatedPackages']));
+        return 'ext_localconf_' . sha1((string)(new Typo3Version()) . Environment::getProjectPath() . 'extLocalconf');
     }
 
     /**
@@ -1759,7 +1759,7 @@ tt_content.' . $key . $suffix . ' {
      */
     protected static function getBaseTcaCacheIdentifier()
     {
-        return 'tca_base_' . sha1((string)(new Typo3Version()) . Environment::getProjectPath() . 'tca_code' . serialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['runtimeActivatedPackages']));
+        return 'tca_base_' . sha1((string)(new Typo3Version()) . Environment::getProjectPath() . 'tca_code');
     }
 
     /**
@@ -1844,7 +1844,7 @@ tt_content.' . $key . $suffix . ' {
      */
     protected static function getExtTablesCacheIdentifier()
     {
-        return 'ext_tables_' . sha1((string)(new Typo3Version()) . Environment::getProjectPath() . 'extTables' . serialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['runtimeActivatedPackages']));
+        return 'ext_tables_' . sha1((string)(new Typo3Version()) . Environment::getProjectPath() . 'extTables');
     }
 
     /**
diff --git a/typo3/sysext/core/Configuration/DefaultConfiguration.php b/typo3/sysext/core/Configuration/DefaultConfiguration.php
index d4ba12d8afd7..fdcb930239e5 100644
--- a/typo3/sysext/core/Configuration/DefaultConfiguration.php
+++ b/typo3/sysext/core/Configuration/DefaultConfiguration.php
@@ -1112,7 +1112,6 @@ return [
         'allowGlobalInstall' => false,
         'allowLocalInstall' => true,
         'excludeForPackaging' => '(?:\\.(?!htaccess$).*|.*~|.*\\.swp|.*\\.bak|node_modules|bower_components)',
-        'runtimeActivatedPackages' => [],
     ],
     'BE' => [
         // Backend Configuration.
diff --git a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php
index bceeadcc4b83..6937fd9cbdee 100644
--- a/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php
+++ b/typo3/sysext/extensionmanager/Classes/ViewHelpers/ToggleExtensionInstallationStateViewHelper.php
@@ -63,11 +63,11 @@ class ToggleExtensionInstallationStateViewHelper extends ActionViewHelper
     public function render()
     {
         $extension = $this->arguments['extension'];
-        // Early return if package is protected or is a runtime activated package and can not be unloaded
+        // Early return if package is protected and can not be unloaded
         /** @var \TYPO3\CMS\Core\Package\PackageManager $packageManager */
         $packageManager = $this->objectManager->get(PackageManager::class);
         $package = $packageManager->getPackage($extension['key']);
-        if ($package->isProtected() || in_array($extension['key'], $GLOBALS['TYPO3_CONF_VARS']['EXT']['runtimeActivatedPackages'])) {
+        if ($package->isProtected()) {
             return '';
         }
 
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
index 2c5ad379191f..cc73306a01c4 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
@@ -429,6 +429,7 @@ return [
     '$GLOBALS[\'TYPO3_CONF_VARS\'][\'EXT\'][\'runtimeActivatedPackages\']' => [
         'restFiles' => [
             'Deprecation-91030-Runtime-ActivatedPackages.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
 ];
-- 
GitLab