Keep absolute path repos symlinks absolute, fixes #8700
parent
b11f1c3082
commit
7e679656a4
|
@ -75,7 +75,7 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the transport options with default values
|
// Get the transport options with default values
|
||||||
$transportOptions = $package->getTransportOptions() + array('symlink' => null);
|
$transportOptions = $package->getTransportOptions() + array('symlink' => null, 'relative' => true);
|
||||||
|
|
||||||
// When symlink transport option is null, both symlink and mirror are allowed
|
// When symlink transport option is null, both symlink and mirror are allowed
|
||||||
$currentStrategy = self::STRATEGY_SYMLINK;
|
$currentStrategy = self::STRATEGY_SYMLINK;
|
||||||
|
@ -126,7 +126,11 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
|
||||||
$shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl);
|
$shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl);
|
||||||
$path = rtrim($path, "/");
|
$path = rtrim($path, "/");
|
||||||
$this->io->writeError(sprintf('Symlinking from %s', $url), false);
|
$this->io->writeError(sprintf('Symlinking from %s', $url), false);
|
||||||
$fileSystem->symlink($shortestPath, $path);
|
if ($transportOptions['relative']) {
|
||||||
|
$fileSystem->symlink($shortestPath, $path);
|
||||||
|
} else {
|
||||||
|
$fileSystem->symlink($absolutePath, $path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException $e) {
|
} catch (IOException $e) {
|
||||||
if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) {
|
if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) {
|
||||||
|
|
|
@ -20,6 +20,7 @@ use Composer\Package\Version\VersionGuesser;
|
||||||
use Composer\Package\Version\VersionParser;
|
use Composer\Package\Version\VersionParser;
|
||||||
use Composer\Util\Platform;
|
use Composer\Util\Platform;
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
|
use Composer\Util\Filesystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This repository allows installing local packages that are not necessarily under their own VCS.
|
* This repository allows installing local packages that are not necessarily under their own VCS.
|
||||||
|
@ -107,6 +108,10 @@ class PathRepository extends ArrayRepository implements ConfigurableRepositoryIn
|
||||||
$this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser());
|
$this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser());
|
||||||
$this->repoConfig = $repoConfig;
|
$this->repoConfig = $repoConfig;
|
||||||
$this->options = isset($repoConfig['options']) ? $repoConfig['options'] : array();
|
$this->options = isset($repoConfig['options']) ? $repoConfig['options'] : array();
|
||||||
|
if (!isset($this->options['relative'])) {
|
||||||
|
$filesystem = new Filesystem();
|
||||||
|
$this->options['relative'] = !$filesystem->isAbsolutePath($this->url);
|
||||||
|
}
|
||||||
|
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue