cweagans / composer-patches

Simple patches plugin for Composer
https://www.cweagans.net/project/composer-patches
BSD 3-Clause "New" or "Revised" License
1.52k stars 239 forks source link

patch is not executed #350

Closed ibasaw closed 3 years ago

ibasaw commented 3 years ago

Hi,

I want to patch a class for symfony/validator

php 7.2 composer 2.0.8 (i also tried with composer 1, same result)

patch -v
GNU patch 2.7.5

here my composer

{
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": {
            "": "src/",
            "SymfonyStandard": "app/"
        }
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/ibasaw/SonataMediaBundle"
        }
    ],
    "require": {
        "cweagans/composer-patches": "1.7.0",
        "php": ">=7.2",
        "symfony/symfony": "2.5.12",
        "doctrine/orm": "~2.2,>=2.2.3",
        "doctrine/doctrine-bundle": "~1.2",
        "twig/extensions": "~1.0",
        "symfony/twig-bundle" : "v2.5.12",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~2.4",
        "sensio/distribution-bundle": "~3.0",
        "sensio/framework-extra-bundle": "~3.0",
        "incenteev/composer-parameter-handler": "~2.0",
        "sonata-project/admin-bundle": "2.3.10",
        "sonata-project/doctrine-orm-admin-bundle": "2.3.4",
        "sonata-project/jquery-bundle": "1.10.2",
        "gedmo/doctrine-extensions": "v2.4.35",
        "stof/doctrine-extensions-bundle": "~1.1@dev",
        "sonata-project/media-bundle": "~2.3@dev",
        "sonata-project/intl-bundle": "2.3.2",
        "tilleuls/ckeditor-sonata-media-bundle": "1.0.6",
        "egeloen/ckeditor-bundle": "4.0.6",
        "friendsofsymfony/user-bundle": "v1.3.7",
        "sonata-project/user-bundle": "2.2.5",
        "sonata-project/datagrid-bundle": "2.2.1",
        "doctrine/doctrine-fixtures-bundle": "2.3.0",
        "genemu/form-bundle": "2.2.3",
        "liip/imagine-bundle": "^1.9",
        "suncat/mobile-detect-bundle": "v1.0.2",
        "doctrine/lexer" : "v1.0.2",
        "symfony/validator": "2.5.12"
    },
    "require-dev": {
        "sensio/generator-bundle": "~2.3"
    },
    "scripts": {
        "post-root-package-install": [
            "SymfonyStandard\\Composer::hookRootPackageInstall"
        ],
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
        ]
    },
    "config": {
        "bin-dir": "bin",
        "preferred-install": "source"
    },
    "extra": {
        "symfony-assets-install": "symlink",
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        },
        "branch-alias": {
            "dev-master": "2.5-dev"
        },
        "patches": {
            "symfony/validator": {
                "fix symfony validator": "./patches/fix_validator.patch"
            }
        },
        "enable-patching": true
    }
}

here the patch

Index: vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php b/vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php
--- a/vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php (revision d1cc6fdbf1db9b719642d2ba2289508dc7c1bd92)
+++ b/vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php (date 1608319834932)
@@ -728,7 +728,7 @@
         // The $cascadedGroups property is set, if the "Default" group is
         // overridden by a group sequence
         // See validateClassNode()
-        $cascadedGroups = count($cascadedGroups) > 0
+        $cascadedGroups = count( (array) $cascadedGroups) > 0
             ? $cascadedGroups
             : $groups;

My pacth is found by composer, but is not executed

No patches found for cweagans/composer-patches.
> pre-package-install: cweagans\Composer\Patches->gatherPatches
Gathering patches for root package.
Gathering patches for dependencies. This might take a minute.
Found 1 patches for symfony/validator.
  - Installing behat/transliterator (v1.3.0): Cloning 3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc from cache

and the class in the vendor is the original one, no patch apply at all

if i use git to apply the patch it work, but does not with composer

why ?

ibasaw commented 3 years ago

if you want to override symfony/validator in this case, you must change the composer like this

"patches": {
    "symfony/symfonyr": {
        "fix symfony validator": "./patches/fix_validator.patch"
    }
},