Skip to content

Commit 0db26be

Browse files
committed
Correct SAPI-packages to be installed
1 parent a4bd2a7 commit 0db26be

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

src/StaticPHP/Package/PackageInstaller.php

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -150,44 +150,45 @@ public function run(bool $interactive = true, bool $disable_delay_msg = false):
150150
}
151151
$builder = ApplicationContext::get(PackageBuilder::class);
152152
foreach ($this->packages as $package) {
153-
if (
154-
$this->isBuildPackage($package) ||
155-
$package instanceof LibraryPackage && $package->hasStage('build') && !$package->getArtifact()->shouldUseBinary()
156-
) {
153+
$is_to_build = $this->isBuildPackage($package);
154+
$has_build_stage = $package instanceof LibraryPackage && $package->hasStage('build');
155+
$should_use_binary = $package instanceof LibraryPackage && ($package->getArtifact()?->shouldUseBinary() ?? false);
156+
$has_source = $package->hasSource();
157+
if (!$is_to_build && $should_use_binary) {
158+
// install binary
157159
if ($interactive) {
158-
InteractiveTerm::indicateProgress('Building package: ' . ConsoleColor::yellow($package->getName()));
160+
InteractiveTerm::indicateProgress('Installing package: ' . ConsoleColor::yellow($package->getName()));
159161
}
160162
try {
161-
/** @var LibraryPackage $package */
162-
$status = $builder->buildPackage($package, $this->isBuildPackage($package));
163+
$status = $this->installBinary($package);
163164
} catch (\Throwable $e) {
164165
if ($interactive) {
165-
InteractiveTerm::finish('Building package failed: ' . ConsoleColor::red($package->getName()), false);
166+
InteractiveTerm::finish('Installing binary package failed: ' . ConsoleColor::red($package->getName()), false);
166167
echo PHP_EOL;
167168
}
168169
throw $e;
169170
}
170171
if ($interactive) {
171-
InteractiveTerm::finish('Built package: ' . ConsoleColor::green($package->getName()) . ($status === SPC_STATUS_ALREADY_BUILT ? ' (already built, skipped)' : ''));
172+
InteractiveTerm::finish('Installed binary package: ' . ConsoleColor::green($package->getName()) . ($status === SPC_STATUS_ALREADY_INSTALLED ? ' (already installed, skipped)' : ''));
172173
}
173-
} elseif ($package instanceof LibraryPackage && $package->getArtifact()->shouldUseBinary()) {
174-
// install binary
174+
} elseif ($is_to_build && $has_build_stage || $has_source && $has_build_stage) {
175175
if ($interactive) {
176-
InteractiveTerm::indicateProgress('Installing package: ' . ConsoleColor::yellow($package->getName()));
176+
InteractiveTerm::indicateProgress('Building package: ' . ConsoleColor::yellow($package->getName()));
177177
}
178178
try {
179-
$status = $this->installBinary($package);
179+
/** @var LibraryPackage $package */
180+
$status = $builder->buildPackage($package, $this->isBuildPackage($package));
180181
} catch (\Throwable $e) {
181182
if ($interactive) {
182-
InteractiveTerm::finish('Installing binary package failed: ' . ConsoleColor::red($package->getName()), false);
183+
InteractiveTerm::finish('Building package failed: ' . ConsoleColor::red($package->getName()), false);
183184
echo PHP_EOL;
184185
}
185186
throw $e;
186187
}
187188
if ($interactive) {
188-
InteractiveTerm::finish('Installed binary package: ' . ConsoleColor::green($package->getName()) . ($status === SPC_STATUS_ALREADY_INSTALLED ? ' (already installed, skipped)' : ''));
189+
InteractiveTerm::finish('Built package: ' . ConsoleColor::green($package->getName()) . ($status === SPC_STATUS_ALREADY_BUILT ? ' (already built, skipped)' : ''));
189190
}
190-
} elseif ($package instanceof LibraryPackage) {
191+
} elseif ($package->getType() === 'library') {
191192
throw new WrongUsageException("Package '{$package->getName()}' cannot be installed: no build stage defined and no binary artifact available for current OS.");
192193
}
193194
}
@@ -442,32 +443,32 @@ private function handlePhpTargetPackage(TargetPackage $package): void
442443

443444
if ($package->getBuildOption('build-all') || $package->getBuildOption('build-cli')) {
444445
$cli = PackageLoader::getPackage('php-cli');
445-
$this->build_packages[$cli->getName()] = $cli;
446+
$this->install_packages[$cli->getName()] = $cli;
446447
$added = true;
447448
}
448449
if ($package->getBuildOption('build-all') || $package->getBuildOption('build-fpm')) {
449450
$fpm = PackageLoader::getPackage('php-fpm');
450-
$this->build_packages[$fpm->getName()] = $fpm;
451+
$this->install_packages[$fpm->getName()] = $fpm;
451452
$added = true;
452453
}
453454
if ($package->getBuildOption('build-all') || $package->getBuildOption('build-micro')) {
454455
$micro = PackageLoader::getPackage('php-micro');
455-
$this->build_packages[$micro->getName()] = $micro;
456+
$this->install_packages[$micro->getName()] = $micro;
456457
$added = true;
457458
}
458459
if ($package->getBuildOption('build-all') || $package->getBuildOption('build-cgi')) {
459460
$cgi = PackageLoader::getPackage('php-cgi');
460-
$this->build_packages[$cgi->getName()] = $cgi;
461+
$this->install_packages[$cgi->getName()] = $cgi;
461462
$added = true;
462463
}
463464
if ($package->getBuildOption('build-all') || $package->getBuildOption('build-embed')) {
464465
$embed = PackageLoader::getPackage('php-embed');
465-
$this->build_packages[$embed->getName()] = $embed;
466+
$this->install_packages[$embed->getName()] = $embed;
466467
$added = true;
467468
}
468469
if ($package->getBuildOption('build-all') || $package->getBuildOption('build-frankenphp')) {
469470
$frankenphp = PackageLoader::getPackage('frankenphp');
470-
$this->build_packages[$frankenphp->getName()] = $frankenphp;
471+
$this->install_packages[$frankenphp->getName()] = $frankenphp;
471472
$added = true;
472473
}
473474
$this->build_packages[$package->getName()] = $package;
@@ -481,7 +482,7 @@ private function handlePhpTargetPackage(TargetPackage $package): void
481482
} else {
482483
// process specific php sapi targets
483484
$this->build_packages['php'] = PackageLoader::getPackage('php');
484-
$this->build_packages[$package->getName()] = $package;
485+
$this->install_packages[$package->getName()] = $package;
485486
}
486487
}
487488

0 commit comments

Comments
 (0)