From 270c7c3262b928835b78c2c809cb51aaabfe4fed Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Tue, 28 Apr 2020 16:04:00 +0200 Subject: [PATCH 1/2] Backport validation support for composer-runtime-api (#8842) Fixes #8841 --- src/Composer/Repository/PlatformRepository.php | 2 +- .../Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Composer/Repository/PlatformRepository.php b/src/Composer/Repository/PlatformRepository.php index 265cdbf4a..1426d4a16 100644 --- a/src/Composer/Repository/PlatformRepository.php +++ b/src/Composer/Repository/PlatformRepository.php @@ -27,7 +27,7 @@ use Symfony\Component\Process\ExecutableFinder; */ class PlatformRepository extends ArrayRepository { - const PLATFORM_PACKAGE_REGEX = '{^(?:php(?:-64bit|-ipv6|-zts|-debug)?|hhvm|(?:ext|lib)-[a-z0-9](?:[_.-]?[a-z0-9]+)*|composer-plugin-api)$}iD'; + const PLATFORM_PACKAGE_REGEX = '{^(?:php(?:-64bit|-ipv6|-zts|-debug)?|hhvm|(?:ext|lib)-[a-z0-9](?:[_.-]?[a-z0-9]+)*|composer-(?:plugin|runtime)-api)$}iD'; private $versionParser; diff --git a/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php b/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php index 9dabb23b7..e1ce9264a 100644 --- a/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php +++ b/tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php @@ -86,6 +86,7 @@ class ValidatingArrayLoaderTest extends TestCase 'a/b' => '1.*', 'b/c' => '~2', 'example' => '>2.0-dev,<2.4-dev', + 'composer-runtime-api' => '*', ), 'require-dev' => array( 'a/b' => '1.*', From ff05150c4e1514c452be03b86974fbc891942156 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Wed, 29 Apr 2020 08:55:58 +0200 Subject: [PATCH 2/2] Add composer-runtime-api version constant --- src/Composer/Composer.php | 11 +++++++++++ src/Composer/Repository/PlatformRepository.php | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/src/Composer/Composer.php b/src/Composer/Composer.php index 99f4756b0..a879a0dae 100644 --- a/src/Composer/Composer.php +++ b/src/Composer/Composer.php @@ -55,6 +55,17 @@ class Composer const RELEASE_DATE = '@release_date@'; const SOURCE_VERSION = '1.10-dev+source'; + /** + * Version number of the internal composer-runtime-api package + * + * This is used to version features available to projects at runtime + * like the platform-check file, the Composer\InstalledVersions class + * and possibly others in the future. + * + * @var string + */ + const RUNTIME_API_VERSION = '1.0.0'; + public static function getVersion() { // no replacement done, this must be a source checkout diff --git a/src/Composer/Repository/PlatformRepository.php b/src/Composer/Repository/PlatformRepository.php index 1426d4a16..ecd4ca256 100644 --- a/src/Composer/Repository/PlatformRepository.php +++ b/src/Composer/Repository/PlatformRepository.php @@ -12,6 +12,7 @@ namespace Composer\Repository; +use Composer\Composer; use Composer\Package\CompletePackage; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionParser; @@ -74,6 +75,12 @@ class PlatformRepository extends ArrayRepository $composerPluginApi->setDescription('The Composer Plugin API'); $this->addPackage($composerPluginApi); + $prettyVersion = Composer::RUNTIME_API_VERSION; + $version = $this->versionParser->normalize($prettyVersion); + $composerRuntimeApi = new CompletePackage('composer-runtime-api', $version, $prettyVersion); + $composerRuntimeApi->setDescription('The Composer Runtime API'); + $this->addPackage($composerRuntimeApi); + try { $prettyVersion = PHP_VERSION; $version = $this->versionParser->normalize($prettyVersion);