diff --git a/lib/internal/Magento/Framework/Interception/Config/CacheManager.php b/lib/internal/Magento/Framework/Interception/Config/CacheManager.php index fd612370d0757..d8592890bc3cf 100644 --- a/lib/internal/Magento/Framework/Interception/Config/CacheManager.php +++ b/lib/internal/Magento/Framework/Interception/Config/CacheManager.php @@ -88,6 +88,9 @@ public function save(string $key, array $data) */ public function saveCompiled(string $key, array $data) { + // sort configuration to have it in the same order on every build + ksort($data); + $this->configWriter->write($key, $data); } diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/AppActionListGenerator.php b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/AppActionListGenerator.php index c3426dd0d9205..8829def02a023 100644 --- a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/AppActionListGenerator.php +++ b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/AppActionListGenerator.php @@ -20,7 +20,7 @@ class AppActionListGenerator implements OperationInterface private $moduleReader; /** - * @var \Magento\Framework\App\ObjectManager\ConfigWriterInterface + * @var ConfigWriterInterface */ private $configWriter; @@ -42,10 +42,11 @@ public function __construct( public function doOperation() { $actionList = $this->moduleReader->getActionFiles(); - $this->configWriter->write( - 'app_action_list', - $actionList - ); + + // sort configuration to have it in the same order on every build + ksort($actionList); + + $this->configWriter->write('app_action_list', $actionList); } /** diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/Area.php b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/Area.php index 61eae4b2ffff6..8cb830a72ed5b 100644 --- a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/Area.php +++ b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/Area.php @@ -95,10 +95,12 @@ public function doOperation() $config = $this->configReader->generateCachePerScope($definitionsCollection, $areaCode); $config = $this->modificationChain->modify($config); - $this->configWriter->write( - $areaCode, - $config - ); + // sort configuration to have it in the same order on every build + ksort($config['arguments']); + ksort($config['preferences']); + ksort($config['instanceTypes']); + + $this->configWriter->write($areaCode, $config); } } diff --git a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/PluginListGenerator.php b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/PluginListGenerator.php index c1314ec39c245..63db48bc7d9d2 100644 --- a/setup/src/Magento/Setup/Module/Di/App/Task/Operation/PluginListGenerator.php +++ b/setup/src/Magento/Setup/Module/Di/App/Task/Operation/PluginListGenerator.php @@ -47,6 +47,9 @@ public function doOperation() // remove primary scope for production mode as it is only called in developer mode $scopes = array_diff($scopes, ['primary']); + // sort configuration to have it in the same order on every build + ksort($scopes); + $this->configWriter->write($scopes); } diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php index 3b8d301fb3d0e..23ae84680ff00 100644 --- a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php +++ b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Reader.php @@ -100,11 +100,6 @@ public function generateCachePerScope( $config['instanceTypes'][$virtualType] = $areaConfig->getInstanceType($virtualType); } - // sort configuration to have it in the same order on every build - ksort($config['arguments']); - ksort($config['preferences']); - ksort($config['instanceTypes']); - return $config; }