Problem/Motivation
In preparation to expose Drupal Components outside of Drupal we added a composer.json file to every component and a "replace" section to core/composer.json.
But:
- some components requirement declarations are incorrect
- some components are missing from the drupal/core replace section
- some composer files are missing from Drupal\Tests\ComposerIntegrationTest::getPaths()
Examples:
- drupal/core-event-dispatcher declares "symfony/event-dispatcher": "2.7.*", drupal/core replaces "drupal/core-event-dispatcher": "self.version", drupal/core requires "symfony/event-dispatcher": "~2.8"
- drupal/core-dependency-injection declares "symfony/dependency-injection": "2.7.*"; drupal/core requires "symfony/dependency-injection": "~2.8". Here drupal/core-dependency-injection is missing from the drupal/core replace section.
- drupal/core-dependency-injection declares "symfony/expression-language": "2.7.*"; symfony/expression-language is not required by drupal/core.
- #2712647: Update Symfony components to ~3.2 has a patch which updates core/composer.json but not the core component composer files.
Proposed resolution
- Fix the drupal/core replace section to have all drupal/core-* components declared.
- Fix Drupal\Tests\ComposerIntegrationTest::getPaths() to cover all drupal/core-* composer files.
- Track down all drupal/core-* components external dependencies that are also required by drupal/core but still have have an old version requirement declaration after drupal/core updated its version requirement. Update the components composer.json to match drupal/core in this respect.
- Test coverage?
#2720811: Fix package names of drupal/core-fileCache and drupal/core-phpStorage
#2744357: drupal/core-* components Symfony requirements conflict with drupal/core
#2744383: drupal/core-dependency-injection is missing from the drupal/core replace section
#2747083: drupal/core-dependency-injection wrongly requires symfony/expression-language
#2752119: drupal/core-render is missing from the drupal/core replace section
#2752127: drupal/core-assertion is missing from the drupal/core replace section
#2759839: Rename drupal/core-httpFoundation, add it to drupal/core replace section
Comments
Comment #2
eric_a commentedComment #3
eric_a commentedComment #4
dawehnerPatching those sounds like a novice task.
Comment #5
eric_a commentedComment #6
eric_a commentedComment #7
eric_a commentedComment #8
eric_a commentedComment #9
eric_a commentedComment #10
eric_a commentedComment #11
eric_a commentedComment #12
eric_a commentedI've moved the Novice Symfony version fix to #2744357: drupal/core-* components Symfony requirements conflict with drupal/core.
#2720811: Fix package names of drupal/core-fileCache and drupal/core-phpStorage seems like a issue for novices, too.
Comment #13
eric_a commentedComment #14
eric_a commentedCreated two more novice issues:
- #2752119: drupal/core-render is missing from the drupal/core replace section
- #2752127: drupal/core-assertion is missing from the drupal/core replace section
Comment #15
eric_a commentedComment #16
eric_a commentedComment #17
mile23+1 on this work. Rock on. :-)
That will be the final build process.
Hopefully many of these 'replaces' will be removed because they're splits that will be pulled in and put in
vendor/.Comment #18
eric_a commentedOne more missing from the replace section. Think this is the last one.
#2759839: Rename drupal/core-httpFoundation, add it to drupal/core replace section
Comment #19
eric_a commentedHere's another novice issue: #2771331: drupal/core-uuid composer.json not tested by \Drupal\Tests\ComposerIntegrationTest::testComposerJson()
Comment #20
eric_a commentedAll child issues fixed here!