@@ -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