Loading core/includes/install.core.inc +11 −5 Original line number Diff line number Diff line Loading @@ -1610,18 +1610,24 @@ function install_profile_modules(&$install_state) { $batch_builder = new BatchBuilder(); // Put modules into groups of up to the maximum batch size, or until a module // states that it needs a container rebuild immediately after install. // states that it needs a container rebuild before and after install. $index = 0; $module_groups = []; foreach (array_keys($required + $non_required) as $module) { // If the container needs to be rebuilt, ensure this happens both before and // after the module is installed. // @todo Consider reversing this logic so that modules must explicitly // state that they need a container build. // @see https://www.drupal.org/project/drupal/issues/3492235 $container_rebuild_required = !isset($files[$module]->info['container_rebuild_required']) || $files[$module]->info['container_rebuild_required']; if ($container_rebuild_required && !empty($module_groups[$index])) { $index++; } $module_groups[$index][] = $module; if (count($module_groups[$index]) === Settings::get('core.multi_module_install_batch_size', 20)) { $index++; } // @todo Consider reversing this logic so that modules must explicitly // state that they need a container build. // @see https://www.drupal.org/project/drupal/issues/3492235 elseif (!isset($files[$module]->info['container_rebuild_required']) || $files[$module]->info['container_rebuild_required']) { elseif ($container_rebuild_required) { $index++; } } Loading core/lib/Drupal/Core/Extension/ModuleInstaller.php +9 −3 Original line number Diff line number Diff line Loading @@ -208,16 +208,22 @@ public function install(array $module_list, $enable_dependencies = TRUE) { // exceptions if the configuration is not valid. $config_installer->checkConfigurationToInstall('module', $module_list); // Some modules require a container rebuild immediately after install. // Some modules require a container rebuild before and after install. // Group modules such that as many are installed together as possible until // one needs a container rebuild. $module_groups = []; $index = 0; foreach ($module_list as $module) { $module_groups[$index][] = $module; // Ensure the container is rebuilt both before and after a module that // requires a container rebuild is installed. // @todo Consider reversing the behavior when the info key is not set. // See https://www.drupal.org/project/drupal/issues/3492235 if (!isset($module_data[$module]->info['container_rebuild_required']) || $module_data[$module]->info['container_rebuild_required']) { $container_rebuild_required = !isset($module_data[$module]->info['container_rebuild_required']) || $module_data[$module]->info['container_rebuild_required']; if ($container_rebuild_required && !empty($module_groups[$index])) { $index++; } $module_groups[$index][] = $module; if ($container_rebuild_required) { $index++; } } Loading core/tests/Drupal/KernelTests/Core/Extension/ModuleInstallerTest.php +7 −7 Original line number Diff line number Diff line Loading @@ -192,14 +192,14 @@ public static function containerRebuildRequiredProvider(): array { [['container_rebuild_required_true'], 1], [['container_rebuild_required_false'], 1], [['container_rebuild_required_false', 'container_rebuild_required_false_2'], 1], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true'], 1], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true', 'container_rebuild_required_true_2'], 2], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true'], 2], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true', 'container_rebuild_required_true_2'], 3], [['container_rebuild_required_true', 'container_rebuild_required_false', 'container_rebuild_required_false_2'], 2], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2'], 2], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2', 'container_rebuild_required_true_2'], 2], [['container_rebuild_required_true', 'container_rebuild_required_false', 'container_rebuild_required_true_2', 'container_rebuild_required_false_2'], 3], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false'], 2], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false', 'container_rebuild_required_true'], 2], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2'], 3], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2', 'container_rebuild_required_true_2'], 4], [['container_rebuild_required_true', 'container_rebuild_required_false', 'container_rebuild_required_true_2', 'container_rebuild_required_false_2'], 4], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false'], 3], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false', 'container_rebuild_required_true'], 3], ]; } Loading Loading
core/includes/install.core.inc +11 −5 Original line number Diff line number Diff line Loading @@ -1610,18 +1610,24 @@ function install_profile_modules(&$install_state) { $batch_builder = new BatchBuilder(); // Put modules into groups of up to the maximum batch size, or until a module // states that it needs a container rebuild immediately after install. // states that it needs a container rebuild before and after install. $index = 0; $module_groups = []; foreach (array_keys($required + $non_required) as $module) { // If the container needs to be rebuilt, ensure this happens both before and // after the module is installed. // @todo Consider reversing this logic so that modules must explicitly // state that they need a container build. // @see https://www.drupal.org/project/drupal/issues/3492235 $container_rebuild_required = !isset($files[$module]->info['container_rebuild_required']) || $files[$module]->info['container_rebuild_required']; if ($container_rebuild_required && !empty($module_groups[$index])) { $index++; } $module_groups[$index][] = $module; if (count($module_groups[$index]) === Settings::get('core.multi_module_install_batch_size', 20)) { $index++; } // @todo Consider reversing this logic so that modules must explicitly // state that they need a container build. // @see https://www.drupal.org/project/drupal/issues/3492235 elseif (!isset($files[$module]->info['container_rebuild_required']) || $files[$module]->info['container_rebuild_required']) { elseif ($container_rebuild_required) { $index++; } } Loading
core/lib/Drupal/Core/Extension/ModuleInstaller.php +9 −3 Original line number Diff line number Diff line Loading @@ -208,16 +208,22 @@ public function install(array $module_list, $enable_dependencies = TRUE) { // exceptions if the configuration is not valid. $config_installer->checkConfigurationToInstall('module', $module_list); // Some modules require a container rebuild immediately after install. // Some modules require a container rebuild before and after install. // Group modules such that as many are installed together as possible until // one needs a container rebuild. $module_groups = []; $index = 0; foreach ($module_list as $module) { $module_groups[$index][] = $module; // Ensure the container is rebuilt both before and after a module that // requires a container rebuild is installed. // @todo Consider reversing the behavior when the info key is not set. // See https://www.drupal.org/project/drupal/issues/3492235 if (!isset($module_data[$module]->info['container_rebuild_required']) || $module_data[$module]->info['container_rebuild_required']) { $container_rebuild_required = !isset($module_data[$module]->info['container_rebuild_required']) || $module_data[$module]->info['container_rebuild_required']; if ($container_rebuild_required && !empty($module_groups[$index])) { $index++; } $module_groups[$index][] = $module; if ($container_rebuild_required) { $index++; } } Loading
core/tests/Drupal/KernelTests/Core/Extension/ModuleInstallerTest.php +7 −7 Original line number Diff line number Diff line Loading @@ -192,14 +192,14 @@ public static function containerRebuildRequiredProvider(): array { [['container_rebuild_required_true'], 1], [['container_rebuild_required_false'], 1], [['container_rebuild_required_false', 'container_rebuild_required_false_2'], 1], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true'], 1], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true', 'container_rebuild_required_true_2'], 2], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true'], 2], [['container_rebuild_required_false', 'container_rebuild_required_false_2', 'container_rebuild_required_true', 'container_rebuild_required_true_2'], 3], [['container_rebuild_required_true', 'container_rebuild_required_false', 'container_rebuild_required_false_2'], 2], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2'], 2], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2', 'container_rebuild_required_true_2'], 2], [['container_rebuild_required_true', 'container_rebuild_required_false', 'container_rebuild_required_true_2', 'container_rebuild_required_false_2'], 3], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false'], 2], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false', 'container_rebuild_required_true'], 2], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2'], 3], [['container_rebuild_required_false', 'container_rebuild_required_true', 'container_rebuild_required_false_2', 'container_rebuild_required_true_2'], 4], [['container_rebuild_required_true', 'container_rebuild_required_false', 'container_rebuild_required_true_2', 'container_rebuild_required_false_2'], 4], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false'], 3], [['container_rebuild_required_false_2', 'container_rebuild_required_dependency_false', 'container_rebuild_required_true'], 3], ]; } Loading