#898654 by chx, Damien Tournoud, alex_b: Fixed Required modules not installed before optional modules.
parent
e5a965d777
commit
1ba166ff8e
|
@ -1354,16 +1354,34 @@ function install_profile_modules(&$install_state) {
|
||||||
$files = system_rebuild_module_data();
|
$files = system_rebuild_module_data();
|
||||||
variable_del('install_profile_modules');
|
variable_del('install_profile_modules');
|
||||||
|
|
||||||
// Install dependencies first.
|
// Always install required modules first. Respect the dependencies between
|
||||||
$modules = array_flip($modules);
|
// the modules.
|
||||||
foreach ($modules as $module => $weight) {
|
$required = array();
|
||||||
$modules[$module] = $files[$module]->sort;
|
$non_required = array();
|
||||||
|
// Although the profile module is marked as required, it needs to go after
|
||||||
|
// every dependency, including non-required ones. So clear its required
|
||||||
|
// flag for now to allow it to install late.
|
||||||
|
$files[$install_state['parameters']['profile']]->info['required'] = FALSE;
|
||||||
|
// Add modules that other modules depend on.
|
||||||
|
foreach ($modules as $module) {
|
||||||
|
if ($files[$module]->requires) {
|
||||||
|
$modules = array_merge($modules, array_keys($files[$module]->requires));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
arsort($modules);
|
$modules = array_unique($modules);
|
||||||
$modules = array_keys($modules);
|
foreach ($modules as $module) {
|
||||||
|
if (!empty($files[$module]->info['required'])) {
|
||||||
|
$required[$module] = $files[$module]->sort;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$non_required[$module] = $files[$module]->sort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arsort($required);
|
||||||
|
arsort($non_required);
|
||||||
|
|
||||||
$operations = array();
|
$operations = array();
|
||||||
foreach ($modules as $module) {
|
foreach ($required + $non_required as $module => $weight) {
|
||||||
$operations[] = array('_install_module_batch', array($module, $files[$module]->info['name']));
|
$operations[] = array('_install_module_batch', array($module, $files[$module]->info['name']));
|
||||||
}
|
}
|
||||||
$batch = array(
|
$batch = array(
|
||||||
|
|
Loading…
Reference in New Issue