21 Aug 2024 |
piotrkwiecinski | * Pol: I'm doing some digging into composer issue | 18:38:06 |
piotrkwiecinski | These paths are part of PSR4 logic | 18:39:01 |
piotrkwiecinski | If I read it correctly autoload_psr4.php is generated first and is used by autoload_static.php | 18:40:26 |
piotrkwiecinski | https://github.com/composer/composer/blob/main/src/Composer/Autoload/AutoloadGenerator.php#L263-L287 it's a good starting point for debugging | 18:49:59 |
Pol | Most probably that the function getPathCode is missing a sort somewhere. | 19:16:11 |
Pol | But I cannot have a look at this before next week | 19:16:24 |
piotrkwiecinski | I'm trying to see if adding sort before they are saved to file helps | 19:16:28 |
Pol | I have some kind of hard deadline for the moment, and I can't do anything else. | 19:16:40 |
piotrkwiecinski | after getPathCode | 19:16:47 |
Pol | Just shove it in getPathCode so it's cleaner. | 19:17:09 |
piotrkwiecinski | $exportedPaths = [];
foreach ($paths as $path) {
$exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path);
}
| 19:17:31 |
piotrkwiecinski | getPathCode is a string | 19:17:38 |
piotrkwiecinski | so we have to sort the array after it's generated | 19:18:04 |
Pol | https://github.com/composer/composer/blob/main/src/Composer/Autoload/AutoloadGenerator.php#L735C15-L735C35 | 19:19:03 |
Pol | Oh wait. | 19:19:15 |
Pol | you're right. sorry. | 19:19:26 |
Pol | I guess it's a missing sort somewhere before that. | 19:20:01 |
22 Aug 2024 |
Pol | piotrkwiecinski: I cannot reproduce the issue with the patch you provided. | 04:33:45 |
Pol | I get a stable hash for phpdocumentor with it: sha256-LFrkJaFfMzNWOgeUXrNLLURpMt0eNqCUHcTYnIcQJqk= | 04:34:17 |
Pol | OK, got a working patch, plus a refactoring, plus the tests updated. | 05:21:27 |
Pol | Let me know if this is OK for you: https://github.com/composer/composer/pull/12090 | 05:29:02 |
Pol | Allrighty, I won't be able to take care of this today, I have to switch to something else now. | 05:46:22 |
Pol | I'll check here from time to time without being able to produce code if needed. | 05:46:40 |
piotrkwiecinski | Thank you Pol for picking it up. | 06:46:19 |
Pol | You did the job mate... I just created the PR to fix that issue ASAP. | 06:46:37 |
Pol | piotrkwiecinski: https://github.com/composer/composer/pull/12090#discussion_r1726756464 | 10:16:38 |
piotrkwiecinski | I saw the comment | 10:18:57 |
piotrkwiecinski | $psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $rootPackage);
$psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $rootPackage);
$classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $rootPackage);
$files = $this->parseAutoloadsType($sortedPackageMap, 'files', $rootPackage);
$exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $rootPackage);
| 10:18:59 |
piotrkwiecinski | psr4 doesn't seem to use sorted map | 10:19:16 |
piotrkwiecinski | maybe this is the problem | 10:19:56 |