From 3ec259c3652b49a54b5d49011229b3e386a98858 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Thu, 14 Jan 2021 21:48:58 +0100 Subject: [PATCH 1/2] [ticket/16650] Adjust code for retrieving packagist info for composer 2 PHPBB3-16650 --- phpBB/phpbb/composer/installer.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index e7e885b989..9b356a5257 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -22,7 +22,7 @@ use Composer\Package\BasePackage; use Composer\Package\CompletePackage; use Composer\Repository\ComposerRepository; use Composer\Semver\Constraint\ConstraintInterface; -use Composer\Util\RemoteFilesystem; +use Composer\Util\HttpDownloader; use phpbb\composer\io\null_io; use phpbb\config\config; use phpbb\exception\runtime_exception; @@ -301,21 +301,21 @@ class installer { try { - if ($repository instanceof ComposerRepository && $repository->hasProviders()) + if ($repository instanceof ComposerRepository) { // Special case for packagist which exposes an api to retrieve all packages of a given type. // For the others composer repositories with providers we can't do anything. It would be too slow. - $r = new \ReflectionObject($repository); - $repo_url = $r->getProperty('url'); + $repositoryReflection = new \ReflectionObject($repository); + $repo_url = $repositoryReflection->getProperty('url'); $repo_url->setAccessible(true); - if ($repo_url->getValue($repository) === 'http://packagist.org') + if ($repo_url->getValue($repository) === 'https://repo.packagist.org') { - $url = 'https://packagist.org/packages/list.json?type=' . $type; - $rfs = new RemoteFilesystem($io); - $hostname = parse_url($url, PHP_URL_HOST) ?: $url; - $json = $rfs->getContents($hostname, $url, false); + $url = 'https://packagist.org/packages/list.json?type=' . $type; + $composer_config = new \Composer\Config([]); + $downloader = new HttpDownloader($io, $composer_config); + $json = $downloader->get($url)->getBody(); /** @var \Composer\Package\PackageInterface $package */ foreach (JsonFile::parseJson($json, $url)['packageNames'] as $package) From 76c4b7fe74cc2e91d14d7cb6f20410c049e19b99 Mon Sep 17 00:00:00 2001 From: rxu Date: Sat, 16 Jan 2021 14:13:07 +0700 Subject: [PATCH 2/2] [ticket/16650] Fix composer 2 compatibility issues PHPBB3-16650 --- phpBB/phpbb/composer/installer.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/phpBB/phpbb/composer/installer.php b/phpBB/phpbb/composer/installer.php index 9b356a5257..9910cb5a08 100644 --- a/phpBB/phpbb/composer/installer.php +++ b/phpBB/phpbb/composer/installer.php @@ -14,6 +14,7 @@ namespace phpbb\composer; use Composer\Composer; +use Composer\DependencyResolver\Request as composer_request; use Composer\Factory; use Composer\IO\IOInterface; use Composer\IO\NullIO; @@ -159,7 +160,7 @@ class installer $composer = Factory::create($io, $this->get_composer_ext_json_filename(), false); $install = \Composer\Installer::create($io, $composer); - $composer->getDownloadManager()->setOutputProgress(false); + $composer->getInstallationManager()->setOutputProgress(false); $install ->setVerbose(true) @@ -167,8 +168,8 @@ class installer ->setPreferDist(true) ->setDevMode(false) ->setUpdate(true) - ->setUpdateWhitelist($whitelist) - ->setWhitelistDependencies(false) + ->setUpdateAllowList($whitelist) + ->setUpdateAllowTransitiveDependencies(composer_request::UPDATE_ONLY_LISTED) ->setIgnorePlatformRequirements(false) ->setOptimizeAutoloader(true) ->setDumpAutoloader(true)