From 565ac87b65164504575b358a7d7ba5cce9d2068f Mon Sep 17 00:00:00 2001 From: henderkes Date: Wed, 8 Oct 2025 10:05:02 +0200 Subject: [PATCH] only apply readline fix for CLI compilation on linux --- src/SPC/builder/extension/readline.php | 23 ++++++----------------- src/SPC/builder/linux/LinuxBuilder.php | 3 +++ 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/SPC/builder/extension/readline.php b/src/SPC/builder/extension/readline.php index 70829aff..fdfa87c6 100644 --- a/src/SPC/builder/extension/readline.php +++ b/src/SPC/builder/extension/readline.php @@ -36,31 +36,20 @@ class readline extends Extension parent::buildUnixShared(); } - public function patchBeforeMake(): bool + public static function patchCliLinux(bool $revert = false): void { - if (SPCTarget::getTargetOS() === 'Linux' && SPCTarget::isStatic() && $this->builder->getOption('build-cli')) { + if (SPCTarget::getTargetOS() === 'Linux' && SPCTarget::isStatic() && !$revert) { FileSystem::replaceFileStr( SOURCE_PATH . '/php-src/ext/readline/readline_cli.c', - "/*\n#ifdef COMPILE_DL_READLINE", - "#ifdef COMPILE_DL_READLINE\n/*" - ); - FileSystem::replaceFileRegex( - SOURCE_PATH . '/php-src/ext/readline/readline_cli.c', - '/\/\*#else\s+?#define GET_SHELL_CB\(cb\) \(cb\) = php_cli_get_shell_callbacks\(\)\s+#endif\*\//s', - "#else\n#define GET_SHELL_CB(cb) (cb) = php_cli_get_shell_callbacks()\n#endif" + "/*#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', - "#ifdef COMPILE_DL_READLINE\n/*", - "/*\n#ifdef COMPILE_DL_READLINE" - ); - FileSystem::replaceFileRegex( - SOURCE_PATH . '/php-src/ext/readline/readline_cli.c', - '/#else\s+?#define GET_SHELL_CB\(cb\) \(cb\) = php_cli_get_shell_callbacks\(\)\s+#endif/s', - "/*#else\n#define GET_SHELL_CB(cb) (cb) = php_cli_get_shell_callbacks()\n#endif*/" + "#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()", ); } - return false; } } diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index b1b1ffc5..5620b6ee 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -4,6 +4,7 @@ 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; @@ -170,10 +171,12 @@ class LinuxBuilder extends UnixBuilderBase protected function buildCli(): void { $vars = SystemUtil::makeEnvVarString($this->getMakeExtraVars()); + readline::patchCliLinux(); $SPC_CMD_PREFIX_PHP_MAKE = getenv('SPC_CMD_PREFIX_PHP_MAKE') ?: 'make'; shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') ->exec("{$SPC_CMD_PREFIX_PHP_MAKE} {$vars} cli"); + readline::patchCliLinux(true); if (!$this->getOption('no-strip', false)) { shell()->cd(SOURCE_PATH . '/php-src/sapi/cli')->exec('strip --strip-unneeded php');