From 65b232a85050dd078738a77e83100b0e8a9c829a Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Mon, 29 Jan 2018 18:49:59 +0000
Subject: [PATCH] Issue #2867960 by Eric_A, Mile23, Jo Fitzgerald, mpdonadio:
 Merge Component composer.json files to account for them during build

---
 composer.json                                 |  2 +-
 composer.lock                                 |  2 +-
 core/composer.json                            | 31 +++++++++++++++++++
 .../Drupal/Component/Annotation/composer.json |  2 +-
 .../Component/ClassFinder/composer.json       |  2 +-
 .../DependencyInjection/composer.json         |  2 +-
 .../Component/EventDispatcher/composer.json   |  4 +--
 .../Component/HttpFoundation/composer.json    |  2 +-
 .../lib/Drupal/Component/Plugin/composer.json |  2 +-
 .../Component/Serialization/composer.json     |  2 +-
 10 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/composer.json b/composer.json
index 173691990657..1f3d18281399 100644
--- a/composer.json
+++ b/composer.json
@@ -28,7 +28,7 @@
             "include": [
                 "core/composer.json"
             ],
-            "recurse": false,
+            "recurse": true,
             "replace": false,
             "merge-extra": false
         },
diff --git a/composer.lock b/composer.lock
index 878ac44adceb..020aea9c7c53 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "fdc8e2afb49b5917c7bb593a3a8746d3",
+    "content-hash": "e64d8398c963abb6a608286320ff0d0c",
     "packages": [
         {
             "name": "asm89/stack-cors",
diff --git a/core/composer.json b/core/composer.json
index 064fc2b90eee..1f60805ffb11 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -155,6 +155,37 @@
         "drupal/views_ui": "self.version",
         "drupal/workflows": "self.version"
     },
+    "extra": {
+        "merge-plugin": {
+            "require": [
+                "core/lib/Drupal/Component/Annotation/composer.json",
+                "core/lib/Drupal/Component/Assertion/composer.json",
+                "core/lib/Drupal/Component/Bridge/composer.json",
+                "core/lib/Drupal/Component/ClassFinder/composer.json",
+                "core/lib/Drupal/Component/Datetime/composer.json",
+                "core/lib/Drupal/Component/DependencyInjection/composer.json",
+                "core/lib/Drupal/Component/Diff/composer.json",
+                "core/lib/Drupal/Component/Discovery/composer.json",
+                "core/lib/Drupal/Component/EventDispatcher/composer.json",
+                "core/lib/Drupal/Component/FileCache/composer.json",
+                "core/lib/Drupal/Component/FileSystem/composer.json",
+                "core/lib/Drupal/Component/Gettext/composer.json",
+                "core/lib/Drupal/Component/Graph/composer.json",
+                "core/lib/Drupal/Component/HttpFoundation/composer.json",
+                "core/lib/Drupal/Component/PhpStorage/composer.json",
+                "core/lib/Drupal/Component/Plugin/composer.json",
+                "core/lib/Drupal/Component/ProxyBuilder/composer.json",
+                "core/lib/Drupal/Component/Render/composer.json",
+                "core/lib/Drupal/Component/Serialization/composer.json",
+                "core/lib/Drupal/Component/Transliteration/composer.json",
+                "core/lib/Drupal/Component/Utility/composer.json",
+                "core/lib/Drupal/Component/Uuid/composer.json"
+            ],
+            "recurse": false,
+            "replace": false,
+            "merge-extra": false
+        }
+    },
     "minimum-stability": "dev",
     "prefer-stable": true,
     "autoload": {
diff --git a/core/lib/Drupal/Component/Annotation/composer.json b/core/lib/Drupal/Component/Annotation/composer.json
index 193ad48f1d7e..51e7d25b00b3 100644
--- a/core/lib/Drupal/Component/Annotation/composer.json
+++ b/core/lib/Drupal/Component/Annotation/composer.json
@@ -6,7 +6,7 @@
   "license": "GPL-2.0-or-later",
   "require": {
     "php": ">=5.5.9",
-    "doctrine/common": "2.5.*",
+    "doctrine/common": "^2.5",
     "doctrine/annotations": "1.2.*",
     "drupal/core-file-cache": "^8.2",
     "drupal/core-plugin": "^8.2",
diff --git a/core/lib/Drupal/Component/ClassFinder/composer.json b/core/lib/Drupal/Component/ClassFinder/composer.json
index bba825432c5d..c5a97b09f1c2 100644
--- a/core/lib/Drupal/Component/ClassFinder/composer.json
+++ b/core/lib/Drupal/Component/ClassFinder/composer.json
@@ -6,7 +6,7 @@
   "license": "GPL-2.0-or-later",
   "require": {
     "php": ">=5.5.9",
-    "doctrine/common": "2.5.*"
+    "doctrine/common": "^2.5"
   },
   "autoload": {
     "psr-4": {
diff --git a/core/lib/Drupal/Component/DependencyInjection/composer.json b/core/lib/Drupal/Component/DependencyInjection/composer.json
index 56864cb19e85..846034affae8 100644
--- a/core/lib/Drupal/Component/DependencyInjection/composer.json
+++ b/core/lib/Drupal/Component/DependencyInjection/composer.json
@@ -12,7 +12,7 @@
   },
   "require": {
     "php": ">=5.5.9",
-    "symfony/dependency-injection": "^2.8"
+    "symfony/dependency-injection": ">=2.8 <4.0.0"
   },
   "suggest": {
     "symfony/expression-language": "For using expressions in service container configuration"
diff --git a/core/lib/Drupal/Component/EventDispatcher/composer.json b/core/lib/Drupal/Component/EventDispatcher/composer.json
index 8039bb7e371b..cfbcc72e3f71 100644
--- a/core/lib/Drupal/Component/EventDispatcher/composer.json
+++ b/core/lib/Drupal/Component/EventDispatcher/composer.json
@@ -6,8 +6,8 @@
   "license": "GPL-2.0-or-later",
   "require": {
     "php": ">=5.5.9",
-    "symfony/dependency-injection": "^2.8",
-    "symfony/event-dispatcher": "^2.7"
+    "symfony/dependency-injection": ">=2.8 <4.0.0",
+    "symfony/event-dispatcher": ">=2.7 <4.0.0"
   },
   "autoload": {
     "psr-4": {
diff --git a/core/lib/Drupal/Component/HttpFoundation/composer.json b/core/lib/Drupal/Component/HttpFoundation/composer.json
index f82c2524e88e..910a648a2115 100644
--- a/core/lib/Drupal/Component/HttpFoundation/composer.json
+++ b/core/lib/Drupal/Component/HttpFoundation/composer.json
@@ -6,7 +6,7 @@
   "license": "GPL-2.0-or-later",
   "require": {
     "php": ">=5.5.9",
-    "symfony/http-foundation": "^2.7"
+    "symfony/http-foundation": ">=2.7 <4.0.0"
   },
   "autoload": {
     "psr-4": {
diff --git a/core/lib/Drupal/Component/Plugin/composer.json b/core/lib/Drupal/Component/Plugin/composer.json
index d9a5f0276d6a..77f02d6fb1c2 100644
--- a/core/lib/Drupal/Component/Plugin/composer.json
+++ b/core/lib/Drupal/Component/Plugin/composer.json
@@ -6,7 +6,7 @@
   "license": "GPL-2.0-or-later",
   "require": {
     "php": ">=5.5.9",
-    "symfony/validator": "^2.7"
+    "symfony/validator": ">=2.7 <4.0.0"
   },
   "autoload": {
     "psr-4": {
diff --git a/core/lib/Drupal/Component/Serialization/composer.json b/core/lib/Drupal/Component/Serialization/composer.json
index e618363948c8..3439f5863980 100644
--- a/core/lib/Drupal/Component/Serialization/composer.json
+++ b/core/lib/Drupal/Component/Serialization/composer.json
@@ -6,7 +6,7 @@
   "license": "GPL-2.0-or-later",
   "require": {
     "php": ">=5.5.9",
-    "symfony/yaml": "^2.7"
+    "symfony/yaml": ">=2.7 <4.0.0"
   },
   "autoload": {
     "psr-4": {
-- 
GitLab