diff -u b/core/includes/install.inc b/core/includes/install.inc --- b/core/includes/install.inc +++ b/core/includes/install.inc @@ -1073,9 +1073,6 @@ * Drupal's default installer theme. * - finish_url: A destination to visit after the installation of the * distribution is finished - * - base profile: The shortname of the base installation profile. Existence of - * this key denotes that the installation profile depends on a parent - * installation profile. * * Note that this function does an expensive file system scan to get info file * information for dependencies. If you only need information from the info @@ -1083,6 +1080,9 @@ * Drupal's default installer theme. * - finish_url: A destination to visit after the installation of the * distribution is finished + * - base profile: The shortname of the base installation profile. Existence of + * this key denotes that the installation profile depends on a parent + * installation profile. * * Note that this function does an expensive file system scan to get info file * information for dependencies. If you only need information from the info @@ -1111,6 +1111,7 @@ if (!isset($cache[$profile][$langcode])) { $profile_path = drupal_get_path('profile', $profile); $info = \Drupal::service('extension.list.profile')->getExtensionInfo($profile); + $ancestors = \Drupal::service('extension.list.profile')->getAncestors($profile); $dependency_name_function = function ($dependency) { return Dependency::createFromString($dependency)->getName(); @@ -1131,6 +1132,9 @@ // remove any duplicates. $info['install'] = array_unique(array_merge($info['install'], $required, $info['dependencies'], $locale)); + // Remove the base profiles from the install list. + $info['install'] = array_diff($info['install'], array_keys($ancestors)); + // If the profile has a config/sync directory use that to install drupal. if (is_dir($profile_path . '/config/sync')) { $info['config_install_path'] = $profile_path . '/config/sync'; diff -u b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php --- b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php +++ b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php @@ -146,7 +146,10 @@ $ancestor->children[] = $profile_name; $info['install'] = array_merge($info['install'], $ancestor->info['install']); $info['themes'] = array_merge($info['themes'], $ancestor->info['themes']); + // Add ancestor dependencies as our dependencies. + $info['dependencies'] = array_merge($info['dependencies'], $ancestor->info['dependencies']); } + $info['dependencies'] = array_unique($info['dependencies']); $info['install'] = array_unique($info['install']); $info['themes'] = array_unique($info['themes']); }