diff --git a/src/Composer/Downloader/FileDownloader.php b/src/Composer/Downloader/FileDownloader.php
index 356934514..3e15acf80 100644
--- a/src/Composer/Downloader/FileDownloader.php
+++ b/src/Composer/Downloader/FileDownloader.php
@@ -64,7 +64,7 @@ class FileDownloader implements DownloaderInterface
$fileName = $this->getFileName($package, $path);
- $this->io->write(" - Package " . $package->getName() . " (" . $package->getPrettyVersion() . ")");
+ $this->io->write(" - Installing " . $package->getName() . " (" . $package->getPrettyVersion() . ")");
$processUrl = $this->processUrl($url);
@@ -101,6 +101,7 @@ class FileDownloader implements DownloaderInterface
*/
public function remove(PackageInterface $package, $path)
{
+ $this->io->write(" - Removing " . $package->getName() . " (" . $package->getPrettyVersion() . ")");
if (!$this->filesystem->removeDirectory($path)) {
throw new \RuntimeException('Could not completely delete '.$path.', aborting.');
}
diff --git a/src/Composer/Downloader/VcsDownloader.php b/src/Composer/Downloader/VcsDownloader.php
index 2d19bba40..cacc74fc4 100644
--- a/src/Composer/Downloader/VcsDownloader.php
+++ b/src/Composer/Downloader/VcsDownloader.php
@@ -50,7 +50,7 @@ abstract class VcsDownloader implements DownloaderInterface
throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information');
}
- $this->io->write(" - Package " . $package->getName() . " (" . $package->getPrettyVersion() . ")");
+ $this->io->write(" - Installing " . $package->getName() . " (" . $package->getPrettyVersion() . ")");
$this->filesystem->removeDirectory($path);
$this->doDownload($package, $path);
$this->io->write('');
@@ -65,7 +65,7 @@ abstract class VcsDownloader implements DownloaderInterface
throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information');
}
- $this->io->write(" - Package " . $target->getName() . " (" . $target->getPrettyVersion() . ")");
+ $this->io->write(" - Installing " . $target->getName() . " (" . $target->getPrettyVersion() . ")");
$this->enforceCleanDirectory($path);
$this->doUpdate($initial, $target, $path);
$this->io->write('');
@@ -77,6 +77,7 @@ abstract class VcsDownloader implements DownloaderInterface
public function remove(PackageInterface $package, $path)
{
$this->enforceCleanDirectory($path);
+ $this->io->write(" - Removing " . $package->getName() . " (" . $package->getPrettyVersion() . ")");
if (!$this->filesystem->removeDirectory($path)) {
throw new \RuntimeException('Could not completely delete '.$path.', aborting.');
}
diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php
index 5819e3996..a6094d6e9 100644
--- a/src/Composer/Installer.php
+++ b/src/Composer/Installer.php
@@ -242,9 +242,11 @@ class Installer
}
}
- // fix the version all installed packages that are not in the current local repo to prevent rogue updates
+ // fix the version of all installed packages (+ platform) that are not
+ // in the current local repo to prevent rogue updates (e.g. non-dev
+ // updating when in dev)
foreach ($installedRepo->getPackages() as $package) {
- if ($package->getRepository() === $localRepo || $package->getRepository() instanceof PlatformRepository) {
+ if ($package->getRepository() === $localRepo) {
continue;
}
diff --git a/src/Composer/Installer/LibraryInstaller.php b/src/Composer/Installer/LibraryInstaller.php
index 0da923654..9be2e1d1d 100644
--- a/src/Composer/Installer/LibraryInstaller.php
+++ b/src/Composer/Installer/LibraryInstaller.php
@@ -127,6 +127,13 @@ class LibraryInstaller implements InstallerInterface
$this->downloadManager->remove($package, $downloadPath);
$this->removeBinaries($package);
$repo->removePackage($package);
+
+ if (strpos($package->getName(), '/')) {
+ $packageVendorDir = dirname($downloadPath);
+ if (is_dir($packageVendorDir) && !glob($packageVendorDir.'/*')) {
+ @rmdir($packageVendorDir);
+ }
+ }
}
/**