1
0
Fork 0

Disable full platform-check for extensions by default, now set to php-only, refs #9412

pull/9418/head
Jordi Boggiano 2020-11-04 21:50:06 +01:00
parent fc0d724938
commit 6c31744c04
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
4 changed files with 18 additions and 7 deletions

View File

@ -312,8 +312,8 @@
"description": "Defaults to true. If set to false, Composer will not create a composer.lock file." "description": "Defaults to true. If set to false, Composer will not create a composer.lock file."
}, },
"platform-check": { "platform-check": {
"type": "boolean", "type": ["boolean", "string"],
"description": "Defaults to true. If set to false, Composer will not create and require a platform_check.php file as part of the autoloader bootstrap." "description": "Defaults to \"php-only\" which checks only the PHP version. Setting to true will also check the presence of required PHP extensions. If set to false, Composer will not create and require a platform_check.php file as part of the autoloader bootstrap."
} }
} }
}, },

View File

@ -350,7 +350,7 @@ EOF;
$checkPlatform = $config->get('platform-check') && $this->ignorePlatformReqs !== true; $checkPlatform = $config->get('platform-check') && $this->ignorePlatformReqs !== true;
$platformCheckContent = null; $platformCheckContent = null;
if ($checkPlatform) { if ($checkPlatform) {
$platformCheckContent = $this->getPlatformCheck($packageMap, $this->ignorePlatformReqs ?: array()); $platformCheckContent = $this->getPlatformCheck($packageMap, $this->ignorePlatformReqs ?: array(), $config->get('platform-check'));
if (null === $platformCheckContent) { if (null === $platformCheckContent) {
$checkPlatform = false; $checkPlatform = false;
} }
@ -609,7 +609,7 @@ EOF;
return $baseDir . (($path !== false) ? var_export($path, true) : ""); return $baseDir . (($path !== false) ? var_export($path, true) : "");
} }
protected function getPlatformCheck($packageMap, array $ignorePlatformReqs) protected function getPlatformCheck($packageMap, array $ignorePlatformReqs, $checkPlatform)
{ {
$lowestPhpVersion = Bound::zero(); $lowestPhpVersion = Bound::zero();
$requiredExtensions = array(); $requiredExtensions = array();
@ -637,7 +637,7 @@ EOF;
} }
} }
if (preg_match('{^ext-(.+)$}iD', $link->getTarget(), $match)) { if ($checkPlatform === true && preg_match('{^ext-(.+)$}iD', $link->getTarget(), $match)) {
// skip extension checks if they have a valid provider/replacer // skip extension checks if they have a valid provider/replacer
if (isset($extensionProviders[$match[1]])) { if (isset($extensionProviders[$match[1]])) {
foreach ($extensionProviders[$match[1]] as $provided) { foreach ($extensionProviders[$match[1]] as $provided) {

View File

@ -428,7 +428,18 @@ EOT
'github-expose-hostname' => array($booleanValidator, $booleanNormalizer), 'github-expose-hostname' => array($booleanValidator, $booleanNormalizer),
'htaccess-protect' => array($booleanValidator, $booleanNormalizer), 'htaccess-protect' => array($booleanValidator, $booleanNormalizer),
'lock' => array($booleanValidator, $booleanNormalizer), 'lock' => array($booleanValidator, $booleanNormalizer),
'platform-check' => array($booleanValidator, $booleanNormalizer), 'platform-check' => array(
function ($val) {
return in_array($val, array('php-only', 'true', 'false', '1', '0'), true);
},
function ($val) {
if ('php-only' === $val) {
return 'php-only';
}
return $val !== 'false' && (bool) $val;
},
),
); );
$multiConfigValues = array( $multiConfigValues = array(
'github-protocols' => array( 'github-protocols' => array(

View File

@ -65,7 +65,7 @@ class Config
'htaccess-protect' => true, 'htaccess-protect' => true,
'use-github-api' => true, 'use-github-api' => true,
'lock' => true, 'lock' => true,
'platform-check' => true, 'platform-check' => 'php-only',
// valid keys without defaults (auth config stuff): // valid keys without defaults (auth config stuff):
// bitbucket-oauth // bitbucket-oauth
// github-oauth // github-oauth