Implemented php version check in autoload.php (#8546)
parent
3f338ee8d9
commit
e23710f92d
|
@ -60,35 +60,20 @@
|
||||||
"ssl",
|
"ssl",
|
||||||
"tls"
|
"tls"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
|
||||||
"issues": "https://github.com/composer/ca-bundle/issues",
|
|
||||||
"source": "https://github.com/composer/ca-bundle/tree/1.2.7"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://packagist.com",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-04-08T08:27:21+00:00"
|
"time": "2020-04-08T08:27:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
"version": "2.0.x-dev",
|
"version": "dev-master",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/semver.git",
|
"url": "https://github.com/composer/semver.git",
|
||||||
"reference": "4df5ff3249f01018504939d66040d8d2b783d820"
|
"reference": "2fbee6b82f09aeaa3905444eb6652c554411fe55"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/semver/zipball/4df5ff3249f01018504939d66040d8d2b783d820",
|
"url": "https://api.github.com/repos/composer/semver/zipball/2fbee6b82f09aeaa3905444eb6652c554411fe55",
|
||||||
"reference": "4df5ff3249f01018504939d66040d8d2b783d820",
|
"reference": "2fbee6b82f09aeaa3905444eb6652c554411fe55",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -136,22 +121,7 @@
|
||||||
"validation",
|
"validation",
|
||||||
"versioning"
|
"versioning"
|
||||||
],
|
],
|
||||||
"support": {
|
"time": "2020-04-16T13:02:51+00:00"
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
|
||||||
"issues": "https://github.com/composer/semver/issues",
|
|
||||||
"source": "https://github.com/composer/semver/tree/2.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://packagist.com",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-03-11T13:41:23+00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/spdx-licenses",
|
"name": "composer/spdx-licenses",
|
||||||
|
@ -211,11 +181,6 @@
|
||||||
"spdx",
|
"spdx",
|
||||||
"validator"
|
"validator"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
|
||||||
"issues": "https://github.com/composer/spdx-licenses/issues",
|
|
||||||
"source": "https://github.com/composer/spdx-licenses/tree/1.5.3"
|
|
||||||
},
|
|
||||||
"time": "2020-02-14T07:44:31+00:00"
|
"time": "2020-02-14T07:44:31+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -260,17 +225,6 @@
|
||||||
"Xdebug",
|
"Xdebug",
|
||||||
"performance"
|
"performance"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
|
||||||
"issues": "https://github.com/composer/xdebug-handler/issues",
|
|
||||||
"source": "https://github.com/composer/xdebug-handler/tree/master"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://packagist.com",
|
|
||||||
"type": "custom"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-03-01T12:26:26+00:00"
|
"time": "2020-03-01T12:26:26+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -337,10 +291,6 @@
|
||||||
"json",
|
"json",
|
||||||
"schema"
|
"schema"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/justinrainbow/json-schema/issues",
|
|
||||||
"source": "https://github.com/justinrainbow/json-schema/tree/5.2.9"
|
|
||||||
},
|
|
||||||
"time": "2019-09-25T14:49:45+00:00"
|
"time": "2019-09-25T14:49:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -388,9 +338,6 @@
|
||||||
"psr",
|
"psr",
|
||||||
"psr-3"
|
"psr-3"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/php-fig/log/tree/1.1.3"
|
|
||||||
},
|
|
||||||
"time": "2020-03-23T09:12:05+00:00"
|
"time": "2020-03-23T09:12:05+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -428,6 +375,12 @@
|
||||||
"license": [
|
"license": [
|
||||||
"MIT"
|
"MIT"
|
||||||
],
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jan Sorgalla",
|
||||||
|
"email": "jsorgalla@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
|
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
|
||||||
"time": "2016-03-07T13:46:50+00:00"
|
"time": "2016-03-07T13:46:50+00:00"
|
||||||
},
|
},
|
||||||
|
@ -478,10 +431,6 @@
|
||||||
"parser",
|
"parser",
|
||||||
"validator"
|
"validator"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/Seldaek/jsonlint/issues",
|
|
||||||
"source": "https://github.com/Seldaek/jsonlint/tree/1.7.2"
|
|
||||||
},
|
|
||||||
"time": "2019-10-24T14:27:39+00:00"
|
"time": "2019-10-24T14:27:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -526,10 +475,6 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"phar"
|
"phar"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/Seldaek/phar-utils/issues",
|
|
||||||
"source": "https://github.com/Seldaek/phar-utils/tree/1.1.0"
|
|
||||||
},
|
|
||||||
"time": "2020-02-14T15:25:33+00:00"
|
"time": "2020-02-14T15:25:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -591,9 +536,6 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Console Component",
|
"description": "Symfony Console Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/console/tree/v2.8.52"
|
|
||||||
},
|
|
||||||
"time": "2018-11-20T15:55:20+00:00"
|
"time": "2018-11-20T15:55:20+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -651,9 +593,6 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Debug Component",
|
"description": "Symfony Debug Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/debug/tree/v2.8.50"
|
|
||||||
},
|
|
||||||
"time": "2018-11-11T11:18:13+00:00"
|
"time": "2018-11-11T11:18:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -704,9 +643,6 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Filesystem Component",
|
"description": "Symfony Filesystem Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/filesystem/tree/v2.8.52"
|
|
||||||
},
|
|
||||||
"time": "2018-11-11T11:18:13+00:00"
|
"time": "2018-11-11T11:18:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -756,9 +692,6 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Finder Component",
|
"description": "Symfony Finder Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/finder/tree/v2.8.50"
|
|
||||||
},
|
|
||||||
"time": "2018-11-11T11:18:13+00:00"
|
"time": "2018-11-11T11:18:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -817,23 +750,6 @@
|
||||||
"polyfill",
|
"polyfill",
|
||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.15.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-02-27T09:26:54+00:00"
|
"time": "2020-02-27T09:26:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -893,23 +809,6 @@
|
||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.15.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-03-09T19:04:49+00:00"
|
"time": "2020-03-09T19:04:49+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -959,9 +858,6 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony Process Component",
|
"description": "Symfony Process Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/process/tree/v2.8.50"
|
|
||||||
},
|
|
||||||
"time": "2018-11-11T11:18:13+00:00"
|
"time": "2018-11-11T11:18:13+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -1018,10 +914,6 @@
|
||||||
"constructor",
|
"constructor",
|
||||||
"instantiate"
|
"instantiate"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/doctrine/instantiator/issues",
|
|
||||||
"source": "https://github.com/doctrine/instantiator/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2015-06-14T21:17:01+00:00"
|
"time": "2015-06-14T21:17:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1071,10 +963,6 @@
|
||||||
"email": "mike.vanriel@naenius.com"
|
"email": "mike.vanriel@naenius.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/2.x"
|
|
||||||
},
|
|
||||||
"time": "2016-01-25T08:17:30+00:00"
|
"time": "2016-01-25T08:17:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1138,10 +1026,6 @@
|
||||||
"spy",
|
"spy",
|
||||||
"stub"
|
"stub"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpspec/prophecy/issues",
|
|
||||||
"source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
|
|
||||||
},
|
|
||||||
"time": "2020-03-05T15:02:03+00:00"
|
"time": "2020-03-05T15:02:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1206,10 +1090,6 @@
|
||||||
"compare",
|
"compare",
|
||||||
"equality"
|
"equality"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/comparator/tree/1.2"
|
|
||||||
},
|
|
||||||
"time": "2017-01-29T09:50:25+00:00"
|
"time": "2017-01-29T09:50:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1262,10 +1142,6 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"diff"
|
"diff"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/diff/tree/1.4"
|
|
||||||
},
|
|
||||||
"time": "2017-05-22T07:24:03+00:00"
|
"time": "2017-05-22T07:24:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1333,10 +1209,6 @@
|
||||||
"export",
|
"export",
|
||||||
"exporter"
|
"exporter"
|
||||||
],
|
],
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/exporter/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2016-11-19T08:54:04+00:00"
|
"time": "2016-11-19T08:54:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1390,10 +1262,6 @@
|
||||||
],
|
],
|
||||||
"description": "Provides functionality to recursively process PHP variables",
|
"description": "Provides functionality to recursively process PHP variables",
|
||||||
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
|
|
||||||
"source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
|
|
||||||
},
|
|
||||||
"time": "2016-11-19T07:33:16+00:00"
|
"time": "2016-11-19T07:33:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1459,23 +1327,6 @@
|
||||||
],
|
],
|
||||||
"description": "Symfony PHPUnit Bridge",
|
"description": "Symfony PHPUnit Bridge",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/phpunit-bridge/tree/v3.4.38"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2020-02-21T08:01:47+00:00"
|
"time": "2020-02-21T08:01:47+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -1492,6 +1343,5 @@
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"platform-overrides": {
|
"platform-overrides": {
|
||||||
"php": "5.3.9"
|
"php": "5.3.9"
|
||||||
},
|
}
|
||||||
"plugin-api-version": "2.0.0"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ use Composer\IO\IOInterface;
|
||||||
use Composer\Package\AliasPackage;
|
use Composer\Package\AliasPackage;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
use Composer\Repository\InstalledRepositoryInterface;
|
use Composer\Repository\InstalledRepositoryInterface;
|
||||||
|
use Composer\Semver\Constraint\Bound;
|
||||||
use Composer\Util\Filesystem;
|
use Composer\Util\Filesystem;
|
||||||
use Composer\Script\ScriptEvents;
|
use Composer\Script\ScriptEvents;
|
||||||
use Composer\Util\PackageSorter;
|
use Composer\Util\PackageSorter;
|
||||||
|
@ -311,6 +312,7 @@ EOF;
|
||||||
unlink($includeFilesFilePath);
|
unlink($includeFilesFilePath);
|
||||||
}
|
}
|
||||||
$this->filePutContentsIfModified($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath, $staticPhpVersion));
|
$this->filePutContentsIfModified($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath, $staticPhpVersion));
|
||||||
|
$this->filePutContentsIfModified($targetDir.'/platform_check.php', $this->getPlatformCheck($packageMap));
|
||||||
$this->filePutContentsIfModified($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix));
|
$this->filePutContentsIfModified($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix));
|
||||||
$this->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion));
|
$this->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion));
|
||||||
|
|
||||||
|
@ -570,6 +572,94 @@ EOF;
|
||||||
return $baseDir . (($path !== false) ? var_export($path, true) : "");
|
return $baseDir . (($path !== false) ? var_export($path, true) : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getPlatformCheck($packageMap)
|
||||||
|
{
|
||||||
|
$lowestPhpVersion = Bound::zero();
|
||||||
|
$highestPhpVersion = Bound::positiveInfinity();
|
||||||
|
$requiredExtensions = array();
|
||||||
|
|
||||||
|
foreach ($packageMap as $item) {
|
||||||
|
list($package, $installPath) = $item;
|
||||||
|
foreach ($package->getRequires() as $link) {
|
||||||
|
if ('php' === $link->getTarget() && ($constraint = $link->getConstraint())) {
|
||||||
|
if ($constraint->getLowerBound()->compareTo($lowestPhpVersion, '>')) {
|
||||||
|
$lowestPhpVersion = $constraint->getLowerBound();
|
||||||
|
}
|
||||||
|
if ($constraint->getUpperBound()->compareTo($highestPhpVersion, '<')) {
|
||||||
|
$highestPhpVersion = $constraint->getUpperBound();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match('{^ext-(.+)$}iD', $link->getTarget(), $match)) {
|
||||||
|
$requiredExtensions[] = $match[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$requiredExtensions = array_values(array_unique($requiredExtensions));
|
||||||
|
sort($requiredExtensions);
|
||||||
|
|
||||||
|
$formatToPhpVersionId = function (Bound $bound) {
|
||||||
|
if ($bound->isZero()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($bound->isPositiveInfinity()) {
|
||||||
|
return 99999;
|
||||||
|
}
|
||||||
|
|
||||||
|
$version = str_replace('-', '.', $bound->getVersion());
|
||||||
|
$chunks = array_map('intval', explode('.', $version));
|
||||||
|
return $chunks[0] * 10000 + $chunks[1] * 100 + $chunks[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
$formatToHumanReadable = function (Bound $bound) {
|
||||||
|
if ($bound->isZero()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($bound->isPositiveInfinity()) {
|
||||||
|
return 99999;
|
||||||
|
}
|
||||||
|
|
||||||
|
$version = str_replace('-', '.', $bound->getVersion());
|
||||||
|
$chunks = explode('.', $version);
|
||||||
|
$chunks = array_slice($chunks, 0, 3);
|
||||||
|
return implode('.', $chunks);
|
||||||
|
};
|
||||||
|
|
||||||
|
$lowestOperator = $lowestPhpVersion->isInclusive() ? '>=' : '>';
|
||||||
|
$highestOperator = $highestPhpVersion->isInclusive() ? '<=' : '<';
|
||||||
|
$lowestPhpVersionId = $formatToPhpVersionId($lowestPhpVersion);
|
||||||
|
$highestPhpVersionId = $formatToPhpVersionId($highestPhpVersion);
|
||||||
|
$lowestPhpVersion = $formatToHumanReadable($lowestPhpVersion);
|
||||||
|
$highestPhpVersion = $formatToHumanReadable($highestPhpVersion);
|
||||||
|
$requiredExtensions = var_export($requiredExtensions, true);
|
||||||
|
|
||||||
|
return <<<PLATFORM_CHECK
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
\$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID $lowestOperator $lowestPhpVersionId && PHP_VERSION_ID $highestOperator $highestPhpVersionId)) {
|
||||||
|
\$issues[] = 'Your Composer dependencies require a PHP version "$lowestOperator $lowestPhpVersion" and "$highestOperator $highestPhpVersion". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
\$missingExtensions = array_diff($requiredExtensions, array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count(\$missingExtensions)) {
|
||||||
|
\$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', \$missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count(\$issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\\n\\n" . implode("\\n", \$issues));
|
||||||
|
}
|
||||||
|
|
||||||
|
PLATFORM_CHECK;
|
||||||
|
}
|
||||||
|
|
||||||
protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix)
|
protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix)
|
||||||
{
|
{
|
||||||
$lastChar = $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1];
|
$lastChar = $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1];
|
||||||
|
@ -618,6 +708,8 @@ class ComposerAutoloaderInit$suffix
|
||||||
return self::\$loader;
|
return self::\$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'), true, $prependAutoloader);
|
spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'), true, $prependAutoloader);
|
||||||
self::\$loader = \$loader = new \\Composer\\Autoload\\ClassLoader();
|
self::\$loader = \$loader = new \\Composer\\Autoload\\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'));
|
||||||
|
|
|
@ -14,6 +14,7 @@ namespace Composer\Test\Autoload;
|
||||||
|
|
||||||
use Composer\Autoload\AutoloadGenerator;
|
use Composer\Autoload\AutoloadGenerator;
|
||||||
use Composer\Package\Link;
|
use Composer\Package\Link;
|
||||||
|
use Composer\Package\Version\VersionParser;
|
||||||
use Composer\Semver\Constraint\Constraint;
|
use Composer\Semver\Constraint\Constraint;
|
||||||
use Composer\Util\Filesystem;
|
use Composer\Util\Filesystem;
|
||||||
use Composer\Package\AliasPackage;
|
use Composer\Package\AliasPackage;
|
||||||
|
@ -1625,6 +1626,70 @@ EOF;
|
||||||
$this->assertAutoloadFiles('classmap', $this->vendorDir.'/composer', 'classmap');
|
$this->assertAutoloadFiles('classmap', $this->vendorDir.'/composer', 'classmap');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider platformCheckProvider
|
||||||
|
*/
|
||||||
|
public function testGeneratesPlatformCheck(array $requires, $expectedFixture)
|
||||||
|
{
|
||||||
|
$package = new Package('a', '1.0', '1.0');
|
||||||
|
$package->setRequires($requires);
|
||||||
|
|
||||||
|
$this->repository->expects($this->once())
|
||||||
|
->method('getCanonicalPackages')
|
||||||
|
->will($this->returnValue(array()));
|
||||||
|
|
||||||
|
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_1');
|
||||||
|
|
||||||
|
$this->assertFileContentEquals(__DIR__ . '/Fixtures/platform/' . $expectedFixture . '.php', $this->vendorDir . '/composer/platform_check.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function platformCheckProvider()
|
||||||
|
{
|
||||||
|
$versionParser = new VersionParser();
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Typical project requirements' => array(
|
||||||
|
array(
|
||||||
|
new Link('a', 'php', $versionParser->parseConstraints('^7.2')),
|
||||||
|
new Link('a', 'ext-xml', $versionParser->parseConstraints('*')),
|
||||||
|
new Link('a', 'ext-json', $versionParser->parseConstraints('*'))
|
||||||
|
),
|
||||||
|
'typical'
|
||||||
|
),
|
||||||
|
'No PHP lower bound' => array(
|
||||||
|
array(
|
||||||
|
new Link('a', 'php', $versionParser->parseConstraints('< 8')),
|
||||||
|
),
|
||||||
|
'no_php_lower_bound'
|
||||||
|
),
|
||||||
|
'No PHP upper bound' => array(
|
||||||
|
array(
|
||||||
|
new Link('a', 'php', $versionParser->parseConstraints('>= 7.2')),
|
||||||
|
),
|
||||||
|
'no_php_upper_bound'
|
||||||
|
),
|
||||||
|
'Specific PHP release version' => array(
|
||||||
|
array(
|
||||||
|
new Link('a', 'php', $versionParser->parseConstraints('^7.2.8')),
|
||||||
|
),
|
||||||
|
'specific_php_release'
|
||||||
|
),
|
||||||
|
'No PHP required' => array(
|
||||||
|
array(
|
||||||
|
new Link('a', 'ext-xml', $versionParser->parseConstraints('*')),
|
||||||
|
new Link('a', 'ext-json', $versionParser->parseConstraints('*'))
|
||||||
|
),
|
||||||
|
'no_php_required'
|
||||||
|
),
|
||||||
|
'No extensions required' => array(
|
||||||
|
array(
|
||||||
|
new Link('a', 'php', $versionParser->parseConstraints('^7.2')),
|
||||||
|
),
|
||||||
|
'no_extensions_required'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private function assertAutoloadFiles($name, $dir, $type = 'namespaces')
|
private function assertAutoloadFiles($name, $dir, $type = 'namespaces')
|
||||||
{
|
{
|
||||||
$a = __DIR__.'/Fixtures/autoload_'.$name.'.php';
|
$a = __DIR__.'/Fixtures/autoload_'.$name.'.php';
|
||||||
|
|
|
@ -22,6 +22,8 @@ class ComposerAutoloaderInitFilesAutoloadOrder
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoloadOrder', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoloadOrder', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoloadOrder', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoloadOrder', 'loadClassLoader'));
|
||||||
|
|
|
@ -22,6 +22,8 @@ class ComposerAutoloaderInitFilesAutoload
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
|
||||||
|
|
|
@ -22,6 +22,8 @@ class ComposerAutoloaderInitFilesAutoload
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
|
||||||
|
|
|
@ -22,6 +22,8 @@ class ComposerAutoloaderInitFilesAutoload
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
|
||||||
|
|
|
@ -22,6 +22,8 @@ class ComposerAutoloaderInitIncludePath
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'));
|
||||||
|
|
|
@ -22,6 +22,8 @@ class ComposerAutoloaderInitTargetDir
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitTargetDir', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitTargetDir', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitTargetDir', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitTargetDir', 'loadClassLoader'));
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 70200 && PHP_VERSION_ID < 80000)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0" and "< 8.0.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$missingExtensions = array_diff(array (
|
||||||
|
), array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count($missingExtensions)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count($issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues));
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 0 && PHP_VERSION_ID < 80000)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 0" and "< 8.0.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$missingExtensions = array_diff(array (
|
||||||
|
), array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count($missingExtensions)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count($issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues));
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 0 && PHP_VERSION_ID < 99999)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 0" and "< 99999". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$missingExtensions = array_diff(array (
|
||||||
|
0 => 'json',
|
||||||
|
1 => 'xml',
|
||||||
|
), array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count($missingExtensions)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count($issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues));
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 70200 && PHP_VERSION_ID < 99999)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0" and "< 99999". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$missingExtensions = array_diff(array (
|
||||||
|
), array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count($missingExtensions)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count($issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues));
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 70208 && PHP_VERSION_ID < 80000)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.8" and "< 8.0.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$missingExtensions = array_diff(array (
|
||||||
|
), array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count($missingExtensions)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count($issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues));
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 70200 && PHP_VERSION_ID < 80000)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0" and "< 8.0.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
$missingExtensions = array_diff(array (
|
||||||
|
0 => 'json',
|
||||||
|
1 => 'xml',
|
||||||
|
), array_map('strtolower', get_loaded_extensions()));
|
||||||
|
|
||||||
|
if (0 !== count($missingExtensions)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== count($issues)) {
|
||||||
|
die('Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues));
|
||||||
|
}
|
Loading…
Reference in New Issue