diff --git a/config/env.ini b/config/env.ini index 4b9f294a..35941f68 100644 --- a/config/env.ini +++ b/config/env.ini @@ -104,8 +104,6 @@ SPC_MICRO_PATCHES=cli_checks,disable_huge_page SPC_CMD_PREFIX_PHP_BUILDCONF="./buildconf --force" ; configure command SPC_CMD_PREFIX_PHP_CONFIGURE="./configure --prefix= --with-valgrind=no --disable-shared --enable-static --disable-all --disable-phpdbg --with-pic" -; make command -SPC_CMD_PREFIX_PHP_MAKE="make -j${SPC_CONCURRENCY}" ; *** default build vars for building php *** ; embed type for php, static (libphp.a) or shared (libphp.so) @@ -138,8 +136,6 @@ SPC_MICRO_PATCHES=cli_checks,macos_iconv SPC_CMD_PREFIX_PHP_BUILDCONF="./buildconf --force" ; configure command SPC_CMD_PREFIX_PHP_CONFIGURE="./configure --prefix= --with-valgrind=no --enable-shared=no --enable-static=yes --disable-all --disable-phpdbg" -; make command -SPC_CMD_PREFIX_PHP_MAKE="make -j${SPC_CONCURRENCY}" ; *** default build vars for building php *** ; embed type for php, static (libphp.a) or shared (libphp.dylib) diff --git a/src/SPC/builder/extension/readline.php b/src/SPC/builder/extension/readline.php index b12e8b89..035d7b43 100644 --- a/src/SPC/builder/extension/readline.php +++ b/src/SPC/builder/extension/readline.php @@ -8,7 +8,6 @@ use SPC\builder\Extension; use SPC\exception\ValidationException; use SPC\store\FileSystem; use SPC\util\CustomExt; -use SPC\util\SPCTarget; #[CustomExt('readline')] class readline extends Extension @@ -45,21 +44,4 @@ class readline extends Extension throw new ValidationException("readline extension failed sanity check. Code: {$ret}, output: " . implode("\n", $out)); } } - - public static function patchCliLinux(bool $patch): void - { - if (SPCTarget::getTargetOS() === 'Linux' && SPCTarget::isStatic() && $patch) { - FileSystem::replaceFileStr( - SOURCE_PATH . '/php-src/ext/readline/readline_cli.c', - "/*#else\n#define GET_SHELL_CB(cb) (cb) = php_cli_get_shell_callbacks()", - "#define GET_SHELL_CB(cb) (cb) = php_cli_get_shell_callbacks()\n/*#else", - ); - } else { - FileSystem::replaceFileStr( - SOURCE_PATH . '/php-src/ext/readline/readline_cli.c', - "#define GET_SHELL_CB(cb) (cb) = php_cli_get_shell_callbacks()\n/*#else", - "/*#else\n#define GET_SHELL_CB(cb) (cb) = php_cli_get_shell_callbacks()", - ); - } - } } diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index daa0f93b..b2e515eb 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace SPC\builder\linux; -use SPC\builder\extension\readline; use SPC\builder\unix\UnixBuilderBase; use SPC\exception\PatchException; use SPC\exception\WrongUsageException; @@ -106,18 +105,18 @@ class LinuxBuilder extends UnixBuilderBase $this->seekPhpSrcLogFileOnException(fn () => shell()->cd(SOURCE_PATH . '/php-src')->exec( $php_configure_env . ' ' . - getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' . - ($enableCli ? '--enable-cli ' : '--disable-cli ') . - ($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') . - ($enableEmbed ? "--enable-embed={$embed_type} " : '--disable-embed ') . - ($enableMicro ? '--enable-micro=all-static ' : '--disable-micro ') . - ($enableCgi ? '--enable-cgi ' : '--disable-cgi ') . - $config_file_path . - $config_file_scan_dir . - $json_74 . - $zts . - $maxExecutionTimers . - $this->makeStaticExtensionArgs() . ' ' + getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' . + ($enableCli ? '--enable-cli ' : '--disable-cli ') . + ($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') . + ($enableEmbed ? "--enable-embed={$embed_type} " : '--disable-embed ') . + ($enableMicro ? '--enable-micro=all-static ' : '--disable-micro ') . + ($enableCgi ? '--enable-cgi ' : '--disable-cgi ') . + $config_file_path . + $config_file_scan_dir . + $json_74 . + $zts . + $maxExecutionTimers . + $this->makeStaticExtensionArgs() . ' ' )); $this->emitPatchPoint('before-php-make'); @@ -170,18 +169,17 @@ class LinuxBuilder extends UnixBuilderBase */ protected function buildCli(): void { - if ($this->getExt('readline')) { + if ($this->getExt('readline') && SPCTarget::isStatic()) { SourcePatcher::patchFile('musl_static_readline.patch', SOURCE_PATH . '/php-src'); } + $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); - readline::patchCliLinux(true); - $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') - ->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} cli"); - readline::patchCliLinux(false); + ->exec("make {$concurrency} {$vars} cli"); - if ($this->getExt('readline')) { + if ($this->getExt('readline') && SPCTarget::isStatic()) { SourcePatcher::patchFile('musl_static_readline.patch', SOURCE_PATH . '/php-src', true); } @@ -199,10 +197,10 @@ class LinuxBuilder extends UnixBuilderBase protected function buildCgi(): void { $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); - $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') - ->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} cgi"); + ->exec("make {$concurrency} {$vars} cgi"); if (!$this->getOption('no-strip', false)) { shell()->cd(SOURCE_PATH . '/php-src/sapi/cgi')->exec('strip --strip-unneeded php-cgi'); @@ -234,11 +232,11 @@ class LinuxBuilder extends UnixBuilderBase // patch fake cli for micro $vars['EXTRA_CFLAGS'] .= $enable_fake_cli; $vars = SystemUtil::makeEnvVarString($vars); - $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') - ->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} micro"); + ->exec("make {$concurrency} {$vars} micro"); $this->processMicroUPX(); @@ -255,10 +253,10 @@ class LinuxBuilder extends UnixBuilderBase protected function buildFpm(): void { $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); - $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') - ->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} fpm"); + ->exec("make {$concurrency} {$vars} fpm"); if (!$this->getOption('no-strip', false)) { shell()->cd(SOURCE_PATH . '/php-src/sapi/fpm')->exec('strip --strip-unneeded php-fpm'); @@ -276,11 +274,11 @@ class LinuxBuilder extends UnixBuilderBase protected function buildEmbed(): void { $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); - + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') ->exec('sed -i "s|^EXTENSION_DIR = .*|EXTENSION_DIR = /' . basename(BUILD_MODULES_PATH) . '|" Makefile') - ->exec(getenv('SPC_CMD_PREFIX_PHP_MAKE') . ' INSTALL_ROOT=' . BUILD_ROOT_PATH . " {$vars} install"); + ->exec("make {$concurrency} INSTALL_ROOT=" . BUILD_ROOT_PATH . " {$vars} install"); $ldflags = getenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS') ?: ''; $libDir = BUILD_LIB_PATH; diff --git a/src/SPC/builder/macos/MacOSBuilder.php b/src/SPC/builder/macos/MacOSBuilder.php index ef7b303b..39f91e38 100644 --- a/src/SPC/builder/macos/MacOSBuilder.php +++ b/src/SPC/builder/macos/MacOSBuilder.php @@ -186,8 +186,8 @@ class MacOSBuilder extends UnixBuilderBase $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); $shell = shell()->cd(SOURCE_PATH . '/php-src'); - $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; - $shell->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} cli"); + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; + $shell->exec("make {$concurrency} {$vars} cli"); if (!$this->getOption('no-strip', false)) { $shell->exec('dsymutil -f sapi/cli/php')->exec('strip -S sapi/cli/php'); } @@ -199,8 +199,8 @@ class MacOSBuilder extends UnixBuilderBase $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); $shell = shell()->cd(SOURCE_PATH . '/php-src'); - $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; - $shell->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} cgi"); + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; + $shell->exec("make {$concurrency} {$vars} cgi"); if (!$this->getOption('no-strip', false)) { $shell->exec('dsymutil -f sapi/cgi/php-cgi')->exec('strip -S sapi/cgi/php-cgi'); } @@ -229,7 +229,8 @@ class MacOSBuilder extends UnixBuilderBase $shell = shell()->cd(SOURCE_PATH . '/php-src'); // build - $shell->exec(getenv('SPC_CMD_PREFIX_PHP_MAKE') . " {$vars} micro"); + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; + $shell->exec("make {$concurrency} {$vars} micro"); // strip if (!$this->getOption('no-strip', false)) { $shell->exec('dsymutil -f sapi/micro/micro.sfx')->exec('strip -S sapi/micro/micro.sfx'); @@ -250,7 +251,8 @@ class MacOSBuilder extends UnixBuilderBase $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); $shell = shell()->cd(SOURCE_PATH . '/php-src'); - $shell->exec(getenv('SPC_CMD_PREFIX_PHP_MAKE') . " {$vars} fpm"); + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; + $shell->exec("make {$concurrency} {$vars} fpm"); if (!$this->getOption('no-strip', false)) { $shell->exec('dsymutil -f sapi/fpm/php-fpm')->exec('strip -S sapi/fpm/php-fpm'); } @@ -263,9 +265,9 @@ class MacOSBuilder extends UnixBuilderBase protected function buildEmbed(): void { $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); - + $concurrency = getenv('SPC_CONCURRENCY') ? '-j' . getenv('SPC_CONCURRENCY') : ''; shell()->cd(SOURCE_PATH . '/php-src') - ->exec(getenv('SPC_CMD_PREFIX_PHP_MAKE') . ' INSTALL_ROOT=' . BUILD_ROOT_PATH . " {$vars} install"); + ->exec("make {$concurrency} INSTALL_ROOT=" . BUILD_ROOT_PATH . " {$vars} install"); if (getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') === 'static') { $AR = getenv('AR') ?: 'ar';