diff --git a/composer.json b/composer.json
index 3867dd414..3a18fe45b 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "composer/composer",
"type": "library",
- "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
"keywords": [
"package",
"dependency",
diff --git a/composer.lock b/composer.lock
index cf37babdc..c678c96ea 100644
--- a/composer.lock
+++ b/composer.lock
@@ -64,16 +64,16 @@
},
{
"name": "composer/semver",
- "version": "1.4.2",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
+ "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
- "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
+ "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
+ "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
"shasum": ""
},
"require": {
@@ -122,7 +122,7 @@
"validation",
"versioning"
],
- "time": "2016-08-30T16:08:34+00:00"
+ "time": "2019-03-19T17:25:45+00:00"
},
{
"name": "composer/spdx-licenses",
@@ -231,23 +231,23 @@
},
{
"name": "justinrainbow/json-schema",
- "version": "5.2.7",
+ "version": "5.2.8",
"source": {
"type": "git",
"url": "https://github.com/justinrainbow/json-schema.git",
- "reference": "8560d4314577199ba51bf2032f02cd1315587c23"
+ "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23",
- "reference": "8560d4314577199ba51bf2032f02cd1315587c23",
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4",
+ "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.1",
+ "friendsofphp/php-cs-fixer": "~2.2.20",
"json-schema/json-schema-test-suite": "1.2.0",
"phpunit/phpunit": "^4.8.35"
},
@@ -293,7 +293,7 @@
"json",
"schema"
],
- "time": "2018-02-14T22:26:30+00:00"
+ "time": "2019-01-14T23:55:14+00:00"
},
{
"name": "psr/log",
@@ -481,7 +481,7 @@
},
{
"name": "symfony/console",
- "version": "v2.8.48",
+ "version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
@@ -542,7 +542,7 @@
},
{
"name": "symfony/debug",
- "version": "v2.8.48",
+ "version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
@@ -599,7 +599,7 @@
},
{
"name": "symfony/filesystem",
- "version": "v2.8.48",
+ "version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@@ -649,7 +649,7 @@
},
{
"name": "symfony/finder",
- "version": "v2.8.48",
+ "version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
@@ -815,7 +815,7 @@
},
{
"name": "symfony/process",
- "version": "v2.8.48",
+ "version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
@@ -1404,6 +1404,7 @@
"mock",
"xunit"
],
+ "abandoned": true,
"time": "2015-10-02T06:51:40+00:00"
},
{
@@ -1780,7 +1781,7 @@
},
{
"name": "symfony/yaml",
- "version": "v2.8.48",
+ "version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
diff --git a/doc/00-intro.md b/doc/00-intro.md
index e4af54c2c..ed7a17c7c 100644
--- a/doc/00-intro.md
+++ b/doc/00-intro.md
@@ -10,7 +10,7 @@ Composer is **not** a package manager in the same sense as Yum or Apt are. Yes,
it deals with "packages" or libraries, but it manages them on a per-project
basis, installing them in a directory (e.g. `vendor`) inside your project. By
default it does not install anything globally. Thus, it is a dependency
-manager. It does however support a "global" project for convenience via the
+manager. It does however support a "global" project for convenience via the
[global](03-cli.md#global) command.
This idea is not new and Composer is strongly inspired by node's
@@ -47,7 +47,7 @@ Linux and macOS.
### Downloading the Composer Executable
Composer offers a convenient installer that you can execute directly from the
-commandline. Feel free to [download this file](https://getcomposer.org/installer)
+command line. Feel free to [download this file](https://getcomposer.org/installer)
or review it on [GitHub](https://github.com/composer/getcomposer.org/blob/master/web/installer)
if you wish to know more about the inner workings of the installer. The source
is plain PHP.
@@ -82,7 +82,7 @@ Now run `php bin/composer` in order to run Composer.
#### Globally
You can place the Composer PHAR anywhere you wish. If you put it in a directory
-that is part of your `PATH`, you can access it globally. On unixy systems you
+that is part of your `PATH`, you can access it globally. On Unix systems you
can even make it executable and invoke it without directly using the `php`
interpreter.
diff --git a/src/Composer/Cache.php b/src/Composer/Cache.php
index 3f2861797..06c6a0996 100644
--- a/src/Composer/Cache.php
+++ b/src/Composer/Cache.php
@@ -189,7 +189,8 @@ class Cache
public function clear()
{
if ($this->enabled) {
- return $this->filesystem->removeDirectory($this->root);
+ $this->filesystem->emptyDirectory($this->root);
+ return true;
}
return false;
diff --git a/src/Composer/Command/ArchiveCommand.php b/src/Composer/Command/ArchiveCommand.php
index e26aa59a1..ccda70c62 100644
--- a/src/Composer/Command/ArchiveCommand.php
+++ b/src/Composer/Command/ArchiveCommand.php
@@ -57,6 +57,7 @@ package in the specified version and writes it to the specified directory.
php composer.phar archive [--format=zip] [--dir=/foo] [package [version]]
+Read more at https://getcomposer.org/doc/03-cli.md#archive
EOT
)
;
diff --git a/src/Composer/Command/ClearCacheCommand.php b/src/Composer/Command/ClearCacheCommand.php
index 2514f6330..ec51c56d3 100644
--- a/src/Composer/Command/ClearCacheCommand.php
+++ b/src/Composer/Command/ClearCacheCommand.php
@@ -32,6 +32,8 @@ class ClearCacheCommand extends BaseCommand
<<clear-cache deletes all cached packages from composer's
cache directory.
+
+Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache-
EOT
)
;
diff --git a/src/Composer/Command/ConfigCommand.php b/src/Composer/Command/ConfigCommand.php
index 3970d915d..38b103bb6 100644
--- a/src/Composer/Command/ConfigCommand.php
+++ b/src/Composer/Command/ConfigCommand.php
@@ -125,6 +125,8 @@ You can always pass more than one option. As an example, if you want to edit the
global config.json file.
%command.full_name% --editor --global
+
+Read more at https://getcomposer.org/doc/03-cli.md#config
EOT
)
;
diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php
index c11a0595e..be5ad948d 100644
--- a/src/Composer/Command/CreateProjectCommand.php
+++ b/src/Composer/Command/CreateProjectCommand.php
@@ -105,6 +105,7 @@ controlled code by appending the '--prefer-source' flag.
To install a package from another repository than the default one you
can pass the '--repository=https://myrepository.org' flag.
+Read more at https://getcomposer.org/doc/03-cli.md#create-project
EOT
)
;
diff --git a/src/Composer/Command/DependsCommand.php b/src/Composer/Command/DependsCommand.php
index acbc89a70..d6adec083 100644
--- a/src/Composer/Command/DependsCommand.php
+++ b/src/Composer/Command/DependsCommand.php
@@ -37,6 +37,7 @@ Displays detailed information about where a package is referenced.
php composer.phar depends composer/composer
+Read more at https://getcomposer.org/doc/03-cli.md#depends-why-
EOT
)
;
diff --git a/src/Composer/Command/DiagnoseCommand.php b/src/Composer/Command/DiagnoseCommand.php
index c123e7003..c2123e066 100644
--- a/src/Composer/Command/DiagnoseCommand.php
+++ b/src/Composer/Command/DiagnoseCommand.php
@@ -55,6 +55,7 @@ The diagnose command checks common errors to help debugging problem
The process exit code will be 1 in case of warnings and 2 for errors.
+Read more at https://getcomposer.org/doc/03-cli.md#diagnose
EOT
)
;
diff --git a/src/Composer/Command/DumpAutoloadCommand.php b/src/Composer/Command/DumpAutoloadCommand.php
index 55a2c5f16..3add15166 100644
--- a/src/Composer/Command/DumpAutoloadCommand.php
+++ b/src/Composer/Command/DumpAutoloadCommand.php
@@ -39,6 +39,8 @@ class DumpAutoloadCommand extends BaseCommand
->setHelp(
<<php composer.phar dump-autoload
+
+Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload-
EOT
)
;
diff --git a/src/Composer/Command/ExecCommand.php b/src/Composer/Command/ExecCommand.php
index f07bc9d28..c9184c707 100644
--- a/src/Composer/Command/ExecCommand.php
+++ b/src/Composer/Command/ExecCommand.php
@@ -36,6 +36,13 @@ class ExecCommand extends BaseCommand
'Arguments to pass to the binary. Use -- to separate from composer arguments'
),
))
+ ->setHelp(
+ <</.config/composer
Note: This path may vary depending on customizations to bin-dir in
composer.json or the environmental variable COMPOSER_BIN_DIR.
+Read more at https://getcomposer.org/doc/03-cli.md#global
EOT
)
;
diff --git a/src/Composer/Command/HomeCommand.php b/src/Composer/Command/HomeCommand.php
index a2f0756a1..b7d907066 100644
--- a/src/Composer/Command/HomeCommand.php
+++ b/src/Composer/Command/HomeCommand.php
@@ -49,6 +49,8 @@ homepage in your default browser.
To open the homepage by default, use -H or --homepage.
To show instead of open the repository or homepage URL, use -s or --show.
+
+Read more at https://getcomposer.org/doc/03-cli.md#browse-home
EOT
);
}
diff --git a/src/Composer/Command/InitCommand.php b/src/Composer/Command/InitCommand.php
index c4942c03c..ac4b26ec8 100644
--- a/src/Composer/Command/InitCommand.php
+++ b/src/Composer/Command/InitCommand.php
@@ -72,6 +72,7 @@ in the current directory.
php composer.phar init
+Read more at https://getcomposer.org/doc/03-cli.md#init
EOT
)
;
@@ -694,15 +695,22 @@ EOT
{
// find the latest version allowed in this repo set
$versionSelector = new VersionSelector($this->getRepositorySet($input, $minimumStability));
- $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability);
+ $ignorePlatformReqs = $input->hasOption('ignore-platform-reqs') && $input->getOption('ignore-platform-reqs');
- // retry without phpVersion if platform requirements are ignored in case nothing was found
- if ($input->hasOption('ignore-platform-reqs') && $input->getOption('ignore-platform-reqs')) {
+ // ignore phpVersion if platform requirements are ignored
+ if ($ignorePlatformReqs) {
$phpVersion = null;
- $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability);
}
+ $package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability);
+
if (!$package) {
+ // platform packages can not be found in the pool in versions other than the local platform's has
+ // so if platform reqs are ignored we just take the user's word for it
+ if ($ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) {
+ return array($name, $requiredVersion ?: '*');
+ }
+
// Check whether the PHP version was the problem
if ($phpVersion && $versionSelector->findBestCandidate($name, $requiredVersion, null, $preferredStability)) {
throw new \InvalidArgumentException(sprintf(
diff --git a/src/Composer/Command/InstallCommand.php b/src/Composer/Command/InstallCommand.php
index 951d20289..1a2c808db 100644
--- a/src/Composer/Command/InstallCommand.php
+++ b/src/Composer/Command/InstallCommand.php
@@ -61,6 +61,7 @@ exist it will look for composer.json and do the same.
php composer.phar install
+Read more at https://getcomposer.org/doc/03-cli.md#install-i
EOT
)
;
diff --git a/src/Composer/Command/LicensesCommand.php b/src/Composer/Command/LicensesCommand.php
index 9dec45e1b..b3c30d63b 100644
--- a/src/Composer/Command/LicensesCommand.php
+++ b/src/Composer/Command/LicensesCommand.php
@@ -41,6 +41,7 @@ class LicensesCommand extends BaseCommand
The license command displays detailed information about the licenses of
the installed dependencies.
+Read more at https://getcomposer.org/doc/03-cli.md#licenses
EOT
)
;
diff --git a/src/Composer/Command/OutdatedCommand.php b/src/Composer/Command/OutdatedCommand.php
index 79409c58f..ae26a7487 100644
--- a/src/Composer/Command/OutdatedCommand.php
+++ b/src/Composer/Command/OutdatedCommand.php
@@ -50,7 +50,7 @@ The color coding (or signage if you have ANSI colors disabled) for dependency ve
may involve work.
- red (!): Dependency has a new version that is semver-compatible and you should upgrade it.
-
+Read more at https://getcomposer.org/doc/03-cli.md#outdated
EOT
)
;
diff --git a/src/Composer/Command/ProhibitsCommand.php b/src/Composer/Command/ProhibitsCommand.php
index edf6729ab..9e5575c74 100644
--- a/src/Composer/Command/ProhibitsCommand.php
+++ b/src/Composer/Command/ProhibitsCommand.php
@@ -37,6 +37,7 @@ Displays detailed information about why a package cannot be installed.
php composer.phar prohibits composer/composer
+Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not-
EOT
)
;
diff --git a/src/Composer/Command/RemoveCommand.php b/src/Composer/Command/RemoveCommand.php
index ea412ec66..f5562e01e 100644
--- a/src/Composer/Command/RemoveCommand.php
+++ b/src/Composer/Command/RemoveCommand.php
@@ -56,6 +56,7 @@ list of installed packages
php composer.phar remove
+Read more at https://getcomposer.org/doc/03-cli.md#remove
EOT
)
;
diff --git a/src/Composer/Command/RequireCommand.php b/src/Composer/Command/RequireCommand.php
index a28007a6b..c34e7f4f9 100644
--- a/src/Composer/Command/RequireCommand.php
+++ b/src/Composer/Command/RequireCommand.php
@@ -73,6 +73,7 @@ If you do not specify a version constraint, composer will choose a suitable one
If you do not want to install the new dependencies immediately you can call it with --no-update
+Read more at https://getcomposer.org/doc/03-cli.md#require
EOT
)
;
diff --git a/src/Composer/Command/RunScriptCommand.php b/src/Composer/Command/RunScriptCommand.php
index 7997dfb37..a110cc3d6 100644
--- a/src/Composer/Command/RunScriptCommand.php
+++ b/src/Composer/Command/RunScriptCommand.php
@@ -63,6 +63,8 @@ class RunScriptCommand extends BaseCommand
The run-script command runs scripts defined in composer.json:
php composer.phar run-script post-update-cmd
+
+Read more at https://getcomposer.org/doc/03-cli.md#run-script
EOT
)
;
diff --git a/src/Composer/Command/ScriptAliasCommand.php b/src/Composer/Command/ScriptAliasCommand.php
index 1aba0b074..455f7420c 100644
--- a/src/Composer/Command/ScriptAliasCommand.php
+++ b/src/Composer/Command/ScriptAliasCommand.php
@@ -48,6 +48,8 @@ class ScriptAliasCommand extends BaseCommand
The run-script command runs scripts defined in composer.json:
php composer.phar run-script post-update-cmd
+
+Read more at https://getcomposer.org/doc/03-cli.md#run-script
EOT
)
;
diff --git a/src/Composer/Command/SearchCommand.php b/src/Composer/Command/SearchCommand.php
index ed180e84c..54aa4dcea 100644
--- a/src/Composer/Command/SearchCommand.php
+++ b/src/Composer/Command/SearchCommand.php
@@ -49,6 +49,7 @@ class SearchCommand extends BaseCommand
The search command searches for packages by its name
php composer.phar search symfony composer
+Read more at https://getcomposer.org/doc/03-cli.md#search
EOT
)
;
diff --git a/src/Composer/Command/SelfUpdateCommand.php b/src/Composer/Command/SelfUpdateCommand.php
index 903b49d94..0e85f0ce3 100644
--- a/src/Composer/Command/SelfUpdateCommand.php
+++ b/src/Composer/Command/SelfUpdateCommand.php
@@ -60,6 +60,7 @@ versions of composer and if found, installs the latest.
php composer.phar self-update
+Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate-
EOT
)
;
diff --git a/src/Composer/Command/ShowCommand.php b/src/Composer/Command/ShowCommand.php
index a5a2cd780..91ee27143 100644
--- a/src/Composer/Command/ShowCommand.php
+++ b/src/Composer/Command/ShowCommand.php
@@ -85,6 +85,7 @@ class ShowCommand extends BaseCommand
The show command displays detailed information about a package, or
lists all packages available.
+Read more at https://getcomposer.org/doc/03-cli.md#show
EOT
)
;
diff --git a/src/Composer/Command/StatusCommand.php b/src/Composer/Command/StatusCommand.php
index 06fc7638b..06fb2ab05 100644
--- a/src/Composer/Command/StatusCommand.php
+++ b/src/Composer/Command/StatusCommand.php
@@ -52,6 +52,7 @@ class StatusCommand extends BaseCommand
The status command displays a list of dependencies that have
been modified locally.
+Read more at https://getcomposer.org/doc/03-cli.md#status
EOT
)
;
diff --git a/src/Composer/Command/SuggestsCommand.php b/src/Composer/Command/SuggestsCommand.php
index 1c1f23f93..411feb202 100644
--- a/src/Composer/Command/SuggestsCommand.php
+++ b/src/Composer/Command/SuggestsCommand.php
@@ -38,6 +38,7 @@ The %command.name% command shows a sorted list of suggested package
Enabling -v implies --by-package --by-suggestion, showing both lists.
+Read more at https://getcomposer.org/doc/03-cli.md#suggests
EOT
)
;
diff --git a/src/Composer/Command/UpdateCommand.php b/src/Composer/Command/UpdateCommand.php
index 06f998d63..99bd2d74b 100644
--- a/src/Composer/Command/UpdateCommand.php
+++ b/src/Composer/Command/UpdateCommand.php
@@ -81,6 +81,7 @@ from a specific vendor:
To select packages names interactively with auto-completion use -i.
+Read more at https://getcomposer.org/doc/03-cli.md#update-u
EOT
)
;
diff --git a/src/Composer/Command/ValidateCommand.php b/src/Composer/Command/ValidateCommand.php
index 52023e528..5aba74adf 100644
--- a/src/Composer/Command/ValidateCommand.php
+++ b/src/Composer/Command/ValidateCommand.php
@@ -55,6 +55,7 @@ Exit codes in case of errors are:
2 validation error(s)
3 file unreadable or missing
+Read more at https://getcomposer.org/doc/03-cli.md#validate
EOT
);
}
diff --git a/src/Composer/DependencyResolver/Problem.php b/src/Composer/DependencyResolver/Problem.php
index 98b07405a..7591f2bd5 100644
--- a/src/Composer/DependencyResolver/Problem.php
+++ b/src/Composer/DependencyResolver/Problem.php
@@ -79,7 +79,6 @@ class Problem
reset($reasons);
$reason = current($reasons);
- $rule = $reason['rule'];
$job = $reason['job'];
if (isset($job['constraint'])) {
diff --git a/src/Composer/Repository/VcsRepository.php b/src/Composer/Repository/VcsRepository.php
index d8e4b1501..cebbd2a5b 100644
--- a/src/Composer/Repository/VcsRepository.php
+++ b/src/Composer/Repository/VcsRepository.php
@@ -47,6 +47,7 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
private $driver;
/** @var VersionCacheInterface */
private $versionCache;
+ private $emptyReferences = array();
public function __construct(array $repoConfig, IOInterface $io, Config $config, HttpDownloader $httpDownloader, EventDispatcher $dispatcher = null, array $drivers = null, VersionCacheInterface $versionCache = null)
{
@@ -123,6 +124,11 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
return $this->branchErrorOccurred;
}
+ public function getEmptyReferences()
+ {
+ return $this->emptyReferences;
+ }
+
protected function initialize()
{
parent::initialize();
@@ -165,6 +171,10 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
if ($cachedPackage) {
$this->addPackage($cachedPackage);
+ continue;
+ } elseif ($cachedPackage === false) {
+ $this->emptyReferences[] = $identifier;
+
continue;
}
@@ -180,6 +190,7 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
if ($verbose) {
$this->io->writeError('Skipped tag '.$tag.', no composer file');
}
+ $this->emptyReferences[] = $identifier;
continue;
}
@@ -218,6 +229,9 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
$this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier)));
} catch (\Exception $e) {
+ if ($e instanceof TransportException && $e->getCode() === 404) {
+ $this->emptyReferences[] = $identifier;
+ }
if ($verbose) {
$this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found' : $e->getMessage()).'');
}
@@ -264,6 +278,10 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
if ($cachedPackage) {
$this->addPackage($cachedPackage);
+ continue;
+ } elseif ($cachedPackage === false) {
+ $this->emptyReferences[] = $identifier;
+
continue;
}
@@ -272,6 +290,7 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
if ($verbose) {
$this->io->writeError('Skipped branch '.$branch.', no composer file');
}
+ $this->emptyReferences[] = $identifier;
continue;
}
@@ -290,6 +309,9 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
}
$this->addPackage($package);
} catch (TransportException $e) {
+ if ($e->getCode() === 404) {
+ $this->emptyReferences[] = $identifier;
+ }
if ($verbose) {
$this->io->writeError('Skipped branch '.$branch.', no composer file was found');
}
@@ -358,6 +380,14 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
}
$cachedPackage = $this->versionCache->getVersionPackage($version, $identifier);
+ if ($cachedPackage === false) {
+ if ($verbose) {
+ $this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')');
+ }
+
+ return false;
+ }
+
if ($cachedPackage) {
$msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')';
if ($verbose) {
diff --git a/src/Composer/Repository/VersionCacheInterface.php b/src/Composer/Repository/VersionCacheInterface.php
index db5934b59..41d485c64 100644
--- a/src/Composer/Repository/VersionCacheInterface.php
+++ b/src/Composer/Repository/VersionCacheInterface.php
@@ -17,7 +17,7 @@ interface VersionCacheInterface
/**
* @param string $version
* @param string $identifier
- * @return array Package version data
+ * @return array|null|false Package version data if found, false to indicate the identifier is known but has no package, null for an unknown identifier
*/
public function getVersionPackage($version, $identifier);
}
diff --git a/src/Composer/Util/Filesystem.php b/src/Composer/Util/Filesystem.php
index 2d73016c6..6118df938 100644
--- a/src/Composer/Util/Filesystem.php
+++ b/src/Composer/Util/Filesystem.php
@@ -442,7 +442,7 @@ class Filesystem
*/
public function isAbsolutePath($path)
{
- return substr($path, 0, 1) === '/' || substr($path, 1, 1) === ':';
+ return substr($path, 0, 1) === '/' || substr($path, 1, 1) === ':' || substr($path, 0, 2) === '\\\\';
}
/**