function Installer::createRequest
Parameters
RootPackageInterface&BasePackage $rootPackage:
3 calls to Installer::createRequest()
- Installer::doInstall in vendor/
composer/ composer/ src/ Composer/ Installer.php - @phpstan-return self::ERROR_*
- Installer::doUpdate in vendor/
composer/ composer/ src/ Composer/ Installer.php - @phpstan-return self::ERROR_*
- Installer::extractDevPackages in vendor/
composer/ composer/ src/ Composer/ Installer.php - Run the solver a second time on top of the existing update result with only the current result set in the pool and see what packages would get removed if we only had the non-dev packages in the solver request
File
-
vendor/
composer/ composer/ src/ Composer/ Installer.php, line 976
Class
- Installer
- @author Jordi Boggiano <j.boggiano@seld.be> @author Beau Simensen <beau@dflydev.com> @author Konstantin Kudryashov <ever.zet@gmail.com> @author Nils Adermann <naderman@naderman.de>
Namespace
ComposerCode
private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo, ?LockArrayRepository $lockedRepository = null) : Request {
$request = new Request($lockedRepository);
$request->fixPackage($rootPackage);
if ($rootPackage instanceof RootAliasPackage) {
$request->fixPackage($rootPackage->getAliasOf());
}
$fixedPackages = $platformRepo->getPackages();
if ($this->additionalFixedRepository) {
$fixedPackages = array_merge($fixedPackages, $this->additionalFixedRepository
->getPackages());
}
// fix the version of all platform packages + additionally installed packages
// to prevent the solver trying to remove or update those
// TODO why not replaces?
$provided = $rootPackage->getProvides();
foreach ($fixedPackages as $package) {
// skip platform packages that are provided by the root package
if ($package->getRepository() !== $platformRepo || !isset($provided[$package->getName()]) || !$provided[$package->getName()]
->getConstraint()
->matches(new Constraint('=', $package->getVersion()))) {
$request->fixPackage($package);
}
}
return $request;
}