coenjacobs / mozart

Developers tool for WordPress plugins: Wraps all your projects dependencies in your own namespace, in order to prevent conflicts with other plugins loading the same dependencies in different versions.
https://coenjacobs.me/projects/mozart/
MIT License
419 stars 52 forks source link

Namespacing the MaxMind GeoIP2 library causes the creation of duplicate files #145

Open daigo75 opened 5 months ago

daigo75 commented 5 months ago

I'm using a simple test configuration for mozart, as follows:

"mozart": {
    "dep_namespace": "\Dependencies\\",
    "dep_directory": "/dependencies/packages/",
    "classmap_directory": "/dependencies/classes/",
    "classmap_prefix": "Deps_",
    "packages": [
        "geoip2/geoip2"
    ],
    "delete_vendor_directories": true
}

Composer downloads the GeoIP2 files, which also have dependencies on packages maxmind-db/reader and maxmind/web-service-common. So far, so good. When mozart does its job, the dependencies directory contains a duplicate of the MaxMind WebService package. This raises a series of warnings, like the following: Warning: Ambiguous class resolution, "MaxMind\Exception\AuthenticationException" was found in both "/src/dependencies/packages/MaxMind/WebService/AuthenticationException.php" and "/src/dependencies/packages/MaxMind/WebService/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php", the first will be used.

The issue is the presence of folder /src/dependencies/packages/MaxMind/WebService/vendor/. For some reason, it seems that the namespacing process is causing the WebService library to "include itself", introducing duplicates of its files.

I haven't been able to find the root cause of the issue yet, so I thought of sharing this finding in case someone comes across it and has an ide of how to address it.

daigo75 commented 1 month ago

Hi there, Just checking if there is any update about this. Thanks.