Resolve dependencies through the repositories the packages filter dropped
A partial build (`satis build satis.json web/ vendor/package`) narrows the repository list down to the ones providing the requested packages. The dependency pass then reused that narrowed list, so with `require-dependencies` nothing the filtered package required could be found -- packagist.org and every other repository had already been dropped. Feed the dependency repository set the repositories the filter removed, the same way the repository-URL filter already does. Fixes #706
This commit is contained in:
1 parent
1a8cdb80c2
commit
8e2a075614
2 files changed
+56
-11
No files matched your search
@@ -221,12 +221,17 @@ class PackageSelection
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->hasFilterForPackages()) {
|
||||
$repos = $this->filterPackages($repos);
|
||||
$reposDroppedByPackagesFilter = [];
|
||||
|
||||
if (0 === count($repos)) {
|
||||
if ($this->hasFilterForPackages()) {
|
||||
$filteredRepos = $this->filterPackages($repos);
|
||||
|
||||
if (0 === count($filteredRepos)) {
|
||||
throw new \InvalidArgumentException(sprintf('Could not find any repositories config with "name" matching your package(s) filter: %s', implode(', ', $this->packagesFilter)));
|
||||
}
|
||||
|
||||
$reposDroppedByPackagesFilter = array_filter($repos, static fn ($repo) => !in_array($repo, $filteredRepos, true));
|
||||
$repos = $filteredRepos;
|
||||
}
|
||||
|
||||
$repositorySet = new RepositorySet($this->minimumStability, $stabilityFlags);
|
||||
@@ -253,6 +258,9 @@ class PackageSelection
|
||||
);
|
||||
}
|
||||
|
||||
// the packages filter picks what to request, not who may answer a dependency
|
||||
$this->addRepositories($repositorySet, $reposDroppedByPackagesFilter);
|
||||
|
||||
// additional repositories for dependencies
|
||||
if (!$this->hasRepositoriesFilter() || true !== $this->repositoryFilterDep) {
|
||||
$this->addRepositories($repositorySet, $this->getDepRepos($composer));
|
||||
|
||||
Reference in new issue
Block a user