web-dev-qa-db-fra.com

Ne réappliquez pas les correctifs lorsque vous avez besoin d'un nouveau module?

Je continue de rencontrer le problème suivant: lorsque vous avez besoin d'un nouveau module avec Composer, les packages existants sont supprimés et réinstallés s'ils ont des correctifs définis dans composer.json. Par exemple:

$ lando composer require drupal/media_entity_browser
    1/2:        https://packages.drupal.org/8/drupal/provider-2019-2$bae9fca7243956d61e44a716bdfb5c872f0f3e1a0b48b1dccfcae53d7e59c86f.json 
    2/2:        https://packages.drupal.org/8/drupal/provider-2019-1$25356ca628b704d49a0ea504e6374f921a2b54d845d142aae1708cb94088516f.json 
    Finished: success: 2, skipped: 0, failure: 0, total: 2
    1/2:        http://repo.packagist.org/p/provider-latest$56447e2294826167894155c32ceb596c58b3b2af059facd78694060f8a4d8c1c.json 
    2/2:        http://repo.packagist.org/p/provider-2019-04$a612146345a708aa360ee61a695dd52d8d0faa79e136de5e075c95860af7c956.json 
    Finished: success: 2, skipped: 0, failure: 0, total: 2
Using version ^1.0@beta for drupal/media_entity_browser 
./composer.json has been updated 
Gathering patches for root package. 
Removing package drupal/core so that it can be re-installed and re-patched. 
  - Removing drupal/core (8.7.3)
Deleting web/core - deleted 
> DrupalProject\composer\ScriptHandler::checkComposerVersion 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
    1/4:        https://ftp.drupal.org/files/projects/media_entity-8.x-1.8.Zip 
    2/4:        https://ftp.drupal.org/files/projects/entity-8.x-1.0-rc3.Zip 
    3/4:        https://ftp.drupal.org/files/projects/entity_browser-8.x-2.1.Zip 
    4/4:        https://ftp.drupal.org/files/projects/media_entity_browser-8.x-1.0-beta3.Zip 
    Finished: success: 4, skipped: 0, failure: 0, total: 4
Package operations: 5 installs, 0 updates, 0 removals 
Gathering patches for root package.
Gathering patches for dependencies. This might take a minute

Pour quelque chose comme drupal/core c'est vraiment un problème sur mon local car il faut un certain temps pour télécharger et réinstaller le package. Je n'arrive pas à trouver un motif. Parfois, il semble que le package repatché soit une exigence de celui qui est requis, d'autres fois ils ne sont pas liés ou aucun package n'est repatched du tout.

Quelqu'un d'autre est-il tombé sur cela? Y a-t-il un moyen de contourner cela? Idéalement, nous ne réappliquerions les correctifs à un package que lorsqu'il serait mis à jour.

Voici mon composer.json depuis sa demande:

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "require": {
        "composer/installers": "^1.0.24",
        "cweagans/composer-patches": "^1.6",
        "drupal/address": "^1.4",
        "drupal/addtoany": "^1.10",
        "drupal/admin_toolbar": "^1.26",
        "drupal/antibot": "^1.2",
        "drupal/better_exposed_filters": "^3.0@alpha",
        "drupal/blazy": "^2.0@beta",
        "drupal/ckeditor_media_embed": "^1.3",
        "drupal/color_field": "^2.0",
        "drupal/config_inspector": "^1.0@beta",
        "drupal/config_update": "^1.6",
        "drupal/console": "~1.0",
        "drupal/context": "^4.0@beta",
        "drupal/core": "^8.7.0",
        "drupal/csv_serialization": "^1.4",
        "drupal/ctools": "^3.2",
        "drupal/delete_all": "^1.0",
        "drupal/devel": "^2.0",
        "drupal/draggableviews": "^1.2",
        "drupal/dropzonejs": "^2.0@alpha",
        "drupal/ds": "3.x-dev",
        "drupal/entity_clone": "^1.0@beta",
        "drupal/entity_print": "^2.1",
        "drupal/entity_update": "^1.2@RC",
        "drupal/entity_usage": "^2.0@alpha",
        "drupal/features": "^3.8",
        "drupal/file_mdm": "^1.1",
        "drupal/form_options_attributes": "^1.0",
        "drupal/geocoder": "^2.0",
        "drupal/geofield_map": "^2.23",
        "drupal/google_analytics": "^3.0",
        "drupal/google_tag": "^1.1",
        "drupal/honeypot": "^1.29",
        "drupal/htmlmail": "^3.0@alpha",
        "drupal/imagemagick": "^2.4",
        "drupal/imagick": "^1.2",
        "drupal/imce": "^1.7",
        "drupal/inline_entity_form": "^1.0@RC",
        "drupal/languageicons": "^1.0@beta",
        "drupal/layout_builder_at": "^2.8",
        "drupal/layout_builder_modal": "^1.0@alpha",
        "drupal/layout_builder_restrictions": "^2.2",
        "drupal/media_entity": "^2.0",
        "drupal/media_entity_browser": "2.x-dev",
        "drupal/media_entity_generic": "^1.0@alpha",
        "drupal/media_entity_image_exif": "1.x-dev",
        "drupal/media_entity_video": "^2.0@alpha",
        "drupal/menu_export": "^1.2",
        "drupal/menu_per_role": "^1.0",
        "drupal/metatag": "^1.8",
        "drupal/migrate_plus": "^4.1",
        "drupal/migrate_source_csv": "^2.2",
        "drupal/migrate_tools": "^4.1",
        "drupal/panelbutton": "^1.2",
        "drupal/paragraphs": "^1.5",
        "drupal/path_redirect_import": "^1.0@beta",
        "drupal/pathauto": "^1.3",
        "drupal/permissions_by_term": "^2.10",
        "drupal/recaptcha": "^2.4",
        "drupal/redirect": "^1.3",
        "drupal/redis": "^1.1",
        "drupal/rename_admin_paths": "^1.1",
        "drupal/restrict_ip": "^1.3",
        "drupal/search_api": "^1.12",
        "drupal/search_api_autocomplete": "^1.2",
        "drupal/search_api_page": "^1.0@alpha",
        "drupal/slick": "^2.0@beta",
        "drupal/slick_media": "^2.0@alpha",
        "drupal/slick_paragraphs": "^2.0",
        "drupal/smtp": "^1.0@beta",
        "drupal/stage_file_proxy": "^1.0@alpha",
        "drupal/superfish": "^1.3",
        "drupal/taxonomy_menu": "^3.4",
        "drupal/tmgmt": "^1.7",
        "drupal/twig_Tweak": "^2.1",
        "drupal/views_accordion": "^1.2",
        "drupal/views_block_area": "^1.0@beta",
        "drupal/views_bulk_operations": "^2.5",
        "drupal/views_data_export": "^1.0@beta",
        "drupal/webform": "5.1",
        "drupal/weight": "^3.1",
        "drush/drush": "^9.2",
        "league/iso3166": "^2.1",
        "solarium/solarium": "3.8",
        "wikimedia/composer-merge-plugin": "^1.4"
    },
    "require-dev": {
        "webflo/drupal-core-require-dev": "^8.7.0"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8",
        "sort-packages": true
    },
    "conflict": {
      "doctrine/common": ">2.8"
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php.",
            "This file specifies the packages.drupal.org repository.",
            "You can read more about this composer repository at:",
            "https://www.drupal.org/node/2718229"
        ],
        "installer-paths": {
            "core": ["type:drupal-core"],
            "modules/contrib/{$name}": ["type:drupal-module"],
            "profiles/contrib/{$name}": ["type:drupal-profile"],
            "themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/contrib/{$name}": ["type:drupal-drush"],
            "modules/custom/{$name}": ["type:drupal-custom-module"],
            "themes/custom/{$name}": ["type:drupal-custom-theme"]
        },
        "patches": {
            "drupal/core": {
                "Compatibility with JSON:API": "https://www.drupal.org/files/issues/2018-09-20/2942975-24.patch",
                "Layout builder revisions": "https://www.drupal.org/files/issues/2019-06-06/3033516-8.drupal.Revision-UI-on-Layout-Builder-does-not-function-correctly.patch",
                "Error: Call to a member function getLabel() after enable layout_builder": "https://www.drupal.org/files/issues/2018-07-16/2985882-entityfield-2.patch",
                "media_bundle shim": "patches/295028764_media-bundle-shim.patch"
            },
            "drupal/dropzonejs": {
                "The 'media_bundle' entity type does not exist.": "https://www.drupal.org/files/issues/2019-04-25/2820183-19.patch"
            },
            "drupal/paragraphs": {
                "Paragraphs Translation": "https://www.drupal.org/files/issues/2018-12-14/experimental-widget-asymetric-translation-2904705-47.patch"
            },
            "drupal/entity_reference_revisions": {
                "Fixes broken revisioning on paragraph updates": "https://www.drupal.org/files/issues/2019-01-29/3025709-3.patch"
            },
            "drupal/permissions_by_term": {
                "Use custom 403 destination set by admin form": "https://www.drupal.org/files/issues/2018-11-27/3009470-403-url-settings-ignored-10.patch"
            }
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit",
        "drupal-phpunit-upgrade": "@composer update phpunit/phpunit --with-dependencies --no-progress",
        "phpcs": "phpcs --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --",
        "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ]
}
1
Mrweiner

Le problème est probablement dû au fait que l'un des principaux correctifs que vous essayez d'appliquer n'existe pas ou n'a pas pu être téléchargé.

J'ai testé avec votre composer.json sur une installation propre Drupal 8 installation. Lors de l'exécution de composer update J'obtiens l'erreur suivante:

Impossible d'appliquer le patch! Saut. L'erreur était: The "patches/295028764_media-bundle-shim.patch" file could not be downloaded: failed to open stream: No such file or directory.

J'ai pensé que le media-bundle-shim.patch le patch n'est plus disponible, je l'ai donc supprimé de composer.json. Après cela, tout a bien fonctionné et il a cessé de réappliquer les patchs de base à chaque fois.

Il vous suffit donc de supprimer le patch de composer.json, ou remplacez-le par un nouveau qui existe:

"drupal/core": {
  "Compatibility with JSON:API": "https://www.drupal.org/files/issues/2018-09-20/2942975-24.patch",
  "Layout builder revisions": "https://www.drupal.org/files/issues/2019-06-06/3033516-8.drupal.Revision-UI-on-Layout-Builder-does-not-function-correctly.patch",
  /* Remove the last comma from this line. */ "Error: Call to a member function getLabel() after enable layout_builder": "https://www.drupal.org/files/issues/2018-07-16/2985882-entityfield-2.patch",
  /* Remove this line. */"media_bundle shim": "patches/295028764_media-bundle-shim.patch"
},

MISE À JOUR: Le media_bundle Le correctif n'a pas pu être appliqué pour moi, car il s'agit d'un correctif local.

J'ai deux suggestions pour expliquer pourquoi il continue de réappliquer les correctifs:

  1. lando provoque le problème.
  2. Le problème est dû au fait que le correctif local n'est pas appliqué correctement.

Étant donné que vous mentionnez que le problème existait avant d'ajouter le correctif local, il est peu probable que ce soit parce que le correctif local n'est pas appliqué correctement. Je pense que le problème est lando, puisque votre composer.json le fichier fonctionne correctement sur une installation propre Drupal en utilisant uniquement Drupal et compositeur.

Je ne sais pas s'il est possible d'exécuter composer require sans lando sur votre site, mais si c'est possible, vous pouvez tester si lando est le problème en exécutant composer require sans lando.

Si cela ne fonctionne pas, essayez de supprimer le correctif local si le problème persiste. Problèmes de patch locaux .

J'espère que cela vous aidera à déboguer davantage.

2
user72672

Je pense que vous pourriez manquer 2 "extra" paramètres dans votre composer.json:

"enable-patching": true,
"patchLevel": {
    "drupal/core": "-p2"
},

Explication:

De la documentation compositeur-patchs :

Si vous souhaitez que votre projet accepte les correctifs des dépendances, vous devez disposer des éléments suivants dans votre fichier composer: "enable-patching": true

Également drupal/core": "-p2" évite que les choses se retrouvent dans core/core ou core/b. Voir drupal-project/composer.json et Patch Drupal core sans que les choses se retrouvent dans core/core ou core/b .

1
milkovsky