From 39e7d18c8370f726ec313cdd0786b76d467e6c31 Mon Sep 17 00:00:00 2001
From: Mohammad AlQanneh <mqanneh@gmail.com>
Date: Wed, 20 Jul 2016 16:18:36 +0300
Subject: [PATCH] Re-rolled the patch against 8.1.x

---
 core/includes/install.core.inc                        | 10 ++++++++++
 core/lib/Drupal/Core/DrupalKernel.php                 |  4 ++++
 core/lib/Drupal/Core/Extension/ExtensionDiscovery.php | 13 +++++++++++++
 3 files changed, 27 insertions(+)

diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 1b3b255..a29b8b2 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -2176,6 +2176,16 @@ function install_write_profile($install_state) {
       'value' => $install_state['parameters']['profile'],
       'required' => TRUE,
     );
+  }
+  // Add specified base_profile to the settings profile_directories.
+  if (!empty($install_state['profile_info']['base_profile']) && isset($install_state['profiles'][$install_state['profile_info']['base_profile']]) && empty(Settings::get('profile_directories'))) {
+    $path = $install_state['profiles'][$install_state['profile_info']['base_profile']]->getPath();
+    $settings['settings']['profile_directories'] = (object) array(
+      'value' => array($path),
+      'required' => TRUE,
+    );
+  }
+  if (!empty($settings)) {
     drupal_rewrite_settings($settings);
   }
 }
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 1a3b943..377ec18 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -718,6 +718,10 @@ protected function moduleData($module) {
       $profile_directories = array_map(function ($profile) {
         return $profile->getPath();
       }, $profiles);
+
+      // Allow additional profile directories to be added from settings.php.
+      // This provides support for "base profiles".
+      $profile_directories = array_merge(Settings::get('profile_directories', []), $profile_directories);
       $listing->setProfileDirectories($profile_directories);
 
       // Now find modules.
diff --git a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
index 337629b..e93833a 100644
--- a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
+++ b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
@@ -16,6 +16,14 @@
  * $settings['extension_discovery_scan_tests'] = TRUE;
  * @endcode
  * to your settings.php.
+ *
+ * To add additional profile directories, add
+ * @code
+ * $settings['profile_directories'] = array(path);
+ * @encode
+ * to your settings.php.  If multiple paths are specified, they are searched
+ * from last to first.
+ *
  */
 class ExtensionDiscovery {
 
@@ -250,6 +258,11 @@ public function setProfileDirectoriesFromSettings() {
     if ($profile) {
       $this->profileDirectories[] = drupal_get_path('profile', $profile);
     }
+
+    // Allow additional profile directories to be added from settings.php.
+    // This provides support for "base profiles".
+    $this->profileDirectories = array_merge(Settings::get('profile_directories', []), $this->profileDirectories);
+
     return $this;
   }
 
-- 
2.9.2

