From a58dde765bd6247a76cf8f8df8b22c27d204621b Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Mon, 27 Jan 2025 15:12:19 -0500 Subject: [PATCH] chore: update composer files for composer v2.3.5 Signed-off-by: Elizabeth Danzberger --- composer/composer/InstalledVersions.php | 20 ++++++++++++++++++-- composer/composer/installed.json.license | 2 -- composer/composer/installed.php | 4 ++-- 3 files changed, 20 insertions(+), 6 deletions(-) delete mode 100644 composer/composer/installed.json.license diff --git a/composer/composer/InstalledVersions.php b/composer/composer/InstalledVersions.php index 07b32ed6ef..6d29bff66a 100644 --- a/composer/composer/InstalledVersions.php +++ b/composer/composer/InstalledVersions.php @@ -32,6 +32,11 @@ class InstalledVersions */ private static $installed; + /** + * @var bool + */ + private static $installedIsLocalDir; + /** * @var bool|null */ @@ -309,6 +314,12 @@ public static function reload($data) { self::$installed = $data; self::$installedByVendor = array(); + + // when using reload, we disable the duplicate protection to ensure that self::$installed data is + // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, + // so we have to assume it does not, and that may result in duplicate data being returned when listing + // all installed packages for example + self::$installedIsLocalDir = false; } /** @@ -325,7 +336,9 @@ private static function getInstalled() $copiedLocalDir = false; if (self::$canGetVendors) { + $selfDir = strtr(__DIR__, '\\', '/'); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { @@ -333,11 +346,14 @@ private static function getInstalled() $required = require $vendorDir.'/composer/installed.php'; self::$installedByVendor[$vendorDir] = $required; $installed[] = $required; - if (strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { self::$installed = $required; - $copiedLocalDir = true; + self::$installedIsLocalDir = true; } } + if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { + $copiedLocalDir = true; + } } } diff --git a/composer/composer/installed.json.license b/composer/composer/installed.json.license deleted file mode 100644 index 75a458e9c0..0000000000 --- a/composer/composer/installed.json.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors -SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/composer/composer/installed.php b/composer/composer/installed.php index 895ce3d035..07e4aee00d 100644 --- a/composer/composer/installed.php +++ b/composer/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'cfd48c8ab8986bf0b444fede00b5c3f70c0f703a', + 'reference' => '8c21f5edd732074493f83a7e9c84b825ab8aab25', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'cfd48c8ab8986bf0b444fede00b5c3f70c0f703a', + 'reference' => '8c21f5edd732074493f83a7e9c84b825ab8aab25', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(),