From dc6e63e1ba0c66d38dd92935a137e209ae6b1ab6 Mon Sep 17 00:00:00 2001 From: henderkes Date: Sat, 9 May 2026 15:09:59 +0700 Subject: [PATCH] fix logic errors in shared ext patching --- src/Package/Target/php/unix.php | 16 ++++++++-------- src/StaticPHP/Package/PhpExtensionPackage.php | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Package/Target/php/unix.php b/src/Package/Target/php/unix.php index e1052fbd..fc3d3ab9 100644 --- a/src/Package/Target/php/unix.php +++ b/src/Package/Target/php/unix.php @@ -354,14 +354,13 @@ trait unix // ------------- SPC_CMD_VAR_PHP_EMBED_TYPE=static ------------- - // process libphp.a for static embed - if (!file_exists("{$package->getLibDir()}/libphp.a")) { - return; + // process libphp.a for static embed (only when present) + if (file_exists("{$package->getLibDir()}/libphp.a")) { + $ar = getenv('AR') ?: 'ar'; + $libphp_a = "{$package->getLibDir()}/libphp.a"; + shell()->exec("{$ar} -t {$libphp_a} | grep '\\.a$' | xargs -n1 {$ar} d {$libphp_a}"); + UnixUtil::exportDynamicSymbols($libphp_a); } - $ar = getenv('AR') ?: 'ar'; - $libphp_a = "{$package->getLibDir()}/libphp.a"; - shell()->exec("{$ar} -t {$libphp_a} | grep '\\.a$' | xargs -n1 {$ar} d {$libphp_a}"); - UnixUtil::exportDynamicSymbols($libphp_a); // deploy embed php scripts $package->runStage([$this, 'patchUnixEmbedScripts']); @@ -510,7 +509,8 @@ trait unix if (file_exists(BUILD_BIN_PATH . '/php-config')) { logger()->debug('Patching php-config prefix and libs order'); $php_config_str = FileSystem::readFile(BUILD_BIN_PATH . '/php-config'); - $php_config_str = str_replace('prefix=""', 'prefix="' . BUILD_ROOT_PATH . '"', $php_config_str); + // anchor to start-of-line so we don't also match `program_prefix=""` + $php_config_str = preg_replace('/^prefix=""/m', 'prefix="' . BUILD_ROOT_PATH . '"', $php_config_str); // move mimalloc to the beginning of libs $php_config_str = preg_replace('/(libs=")(.*?)\s*(' . preg_quote(BUILD_LIB_PATH, '/') . '\/mimalloc\.o)\s*(.*?)"/', '$1$3 $2 $4"', $php_config_str); // move lstdc++ to the end of libs diff --git a/src/StaticPHP/Package/PhpExtensionPackage.php b/src/StaticPHP/Package/PhpExtensionPackage.php index 1201496d..fef88efd 100644 --- a/src/StaticPHP/Package/PhpExtensionPackage.php +++ b/src/StaticPHP/Package/PhpExtensionPackage.php @@ -306,7 +306,7 @@ class PhpExtensionPackage extends Package shell()->cd($package->getSourceDir()) ->setEnv($env) ->exec( - './configure ' . $this->getPhpConfigureArg(SystemTarget::getCurrentPlatformString(), true) . + './configure ' . $this->getPhpConfigureArg(SystemTarget::getTargetOS(), true) . ' --with-php-config=' . BUILD_BIN_PATH . '/php-config ' . "--enable-shared --disable-static {$phpvars}" );