From 495e868a7122d2be8b7ce9376ec1f4f6f905a675 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 21 May 2025 13:19:51 +0700 Subject: [PATCH] rework configure args --- config/ext.json | 15 +++++++++------ src/SPC/builder/BuilderBase.php | 6 +++++- src/SPC/builder/extension/bz2.php | 5 ----- src/SPC/builder/extension/curl.php | 7 +------ src/SPC/builder/extension/dba.php | 2 +- src/SPC/builder/extension/dom.php | 2 +- src/SPC/builder/extension/ffi.php | 2 +- src/SPC/builder/extension/gd.php | 2 +- src/SPC/builder/extension/ldap.php | 5 ----- src/SPC/builder/extension/mbstring.php | 2 +- src/SPC/builder/extension/xml.php | 4 +--- src/SPC/builder/linux/LinuxBuilder.php | 2 +- src/SPC/builder/unix/library/libxslt.php | 1 + src/SPC/store/SourcePatcher.php | 2 +- 14 files changed, 24 insertions(+), 33 deletions(-) diff --git a/config/ext.json b/config/ext.json index 1c74db74..89f17dc7 100644 --- a/config/ext.json +++ b/config/ext.json @@ -79,6 +79,9 @@ "xml" ], "shared-ext-depends": [ + "libxml", + "xmlreader", + "xmlwriter", "xml" ] }, @@ -413,22 +416,22 @@ }, "mysqli": { "type": "builtin", - "target": [ - "static" - ], "arg-type": "with", "ext-depends": [ "mysqlnd" + ], + "target": [ + "static" ] }, "mysqlnd": { "type": "builtin", - "target": [ - "static" - ], "arg-type-windows": "with", "lib-depends": [ "zlib" + ], + "target": [ + "static" ] }, "oci8": { diff --git a/src/SPC/builder/BuilderBase.php b/src/SPC/builder/BuilderBase.php index d32651f6..0e4c0603 100644 --- a/src/SPC/builder/BuilderBase.php +++ b/src/SPC/builder/BuilderBase.php @@ -257,7 +257,11 @@ abstract class BuilderBase continue; } if (Config::getExt($ext->getName(), 'type') === 'builtin') { - logger()->info('Shared extension [' . $ext->getName() . '] was already built by php-src/configure (' . $ext->getName() . '.so)'); + if (file_exists(BUILD_MODULES_PATH . '/' . $ext->getName() . '.so')) { + logger()->info('Shared extension [' . $ext->getName() . '] was already built by php-src/configure (' . $ext->getName() . '.so)'); + continue; + } + logger()->warning('Shared extension [' . $ext->getName() . '] was built statically by php-src/configure'); continue; } logger()->info('Building extension [' . $ext->getName() . '] as shared extension (' . $ext->getName() . '.so)'); diff --git a/src/SPC/builder/extension/bz2.php b/src/SPC/builder/extension/bz2.php index ee3f2996..88f22e56 100644 --- a/src/SPC/builder/extension/bz2.php +++ b/src/SPC/builder/extension/bz2.php @@ -24,9 +24,4 @@ class bz2 extends Extension FileSystem::replaceFileRegex(SOURCE_PATH . '/php-src/configure', '/-lbz2/', $this->getLibFilesString() . $frameworks); return true; } - - public function getUnixConfigureArg(bool $shared = false): string - { - return $shared ? '--with-bz2=' . BUILD_ROOT_PATH : ''; - } } diff --git a/src/SPC/builder/extension/curl.php b/src/SPC/builder/extension/curl.php index 5ed224f6..0fd2b90b 100644 --- a/src/SPC/builder/extension/curl.php +++ b/src/SPC/builder/extension/curl.php @@ -53,6 +53,7 @@ class curl extends Extension { $frameworks = $this->builder instanceof MacOSBuilder ? ' ' . $this->builder->getFrameworks(true) . ' ' : ''; FileSystem::replaceFileRegex(SOURCE_PATH . '/php-src/configure', '/-lcurl/', $this->getLibFilesString() . $frameworks); + $this->patchBeforeSharedConfigure(); return true; } @@ -99,12 +100,6 @@ class curl extends Extension return true; } - - public function getUnixConfigureArg(bool $shared = false): string - { - return '--with-curl'; - } - public function buildUnixShared(): void { if (!$this->builder instanceof LinuxBuilder) { diff --git a/src/SPC/builder/extension/dba.php b/src/SPC/builder/extension/dba.php index ec5a4d86..4a69c0a5 100644 --- a/src/SPC/builder/extension/dba.php +++ b/src/SPC/builder/extension/dba.php @@ -12,7 +12,7 @@ class dba extends Extension { public function getUnixConfigureArg(bool $shared = false): string { - $qdbm = $this->builder->getLib('qdbm') ? (' --with-qdbm=' . BUILD_ROOT_PATH) : ''; + $qdbm = $this->builder->getLib('qdbm') ? (' --with-qdbm=' . ($shared ? 'shared,' : '') . BUILD_ROOT_PATH) : ''; return '--enable-dba' . $qdbm; } diff --git a/src/SPC/builder/extension/dom.php b/src/SPC/builder/extension/dom.php index 2d69ac64..46dae9e2 100644 --- a/src/SPC/builder/extension/dom.php +++ b/src/SPC/builder/extension/dom.php @@ -17,7 +17,7 @@ class dom extends Extension */ public function getUnixConfigureArg(bool $shared = false): string { - $arg = '--enable-dom'; + $arg = '--enable-dom' . ($shared ? '=shared' : ''); if (!$shared) { $arg .= ' --with-libxml="' . BUILD_ROOT_PATH . '"'; } diff --git a/src/SPC/builder/extension/ffi.php b/src/SPC/builder/extension/ffi.php index 1d55397b..98547723 100644 --- a/src/SPC/builder/extension/ffi.php +++ b/src/SPC/builder/extension/ffi.php @@ -12,7 +12,7 @@ class ffi extends Extension { public function getUnixConfigureArg(bool $shared = false): string { - return '--with-ffi --enable-zend-signals'; + return '--with-ffi' . ($shared ? '=shared' : '') . ' --enable-zend-signals'; } public function getWindowsConfigureArg(bool $shared = false): string diff --git a/src/SPC/builder/extension/gd.php b/src/SPC/builder/extension/gd.php index f872733b..677b1522 100644 --- a/src/SPC/builder/extension/gd.php +++ b/src/SPC/builder/extension/gd.php @@ -12,7 +12,7 @@ class gd extends Extension { public function getUnixConfigureArg(bool $shared = false): string { - $arg = '--enable-gd'; + $arg = '--enable-gd' . ($shared ? '=shared' : ''); $arg .= $this->builder->getLib('freetype') ? ' --with-freetype' : ''; $arg .= $this->builder->getLib('libjpeg') ? ' --with-jpeg' : ''; $arg .= $this->builder->getLib('libwebp') ? ' --with-webp' : ''; diff --git a/src/SPC/builder/extension/ldap.php b/src/SPC/builder/extension/ldap.php index 18db78c1..4616bea8 100644 --- a/src/SPC/builder/extension/ldap.php +++ b/src/SPC/builder/extension/ldap.php @@ -20,9 +20,4 @@ class ldap extends Extension } return true; } - - public function getUnixConfigureArg(bool $shared = false): string - { - return '--with-ldap=' . BUILD_ROOT_PATH; - } } diff --git a/src/SPC/builder/extension/mbstring.php b/src/SPC/builder/extension/mbstring.php index 42249509..697ad3fe 100644 --- a/src/SPC/builder/extension/mbstring.php +++ b/src/SPC/builder/extension/mbstring.php @@ -23,7 +23,7 @@ class mbstring extends Extension public function getUnixConfigureArg(bool $shared = false): string { - $arg = '--enable-mbstring'; + $arg = '--enable-mbstring' . ($shared ? '=shared' : ''); if ($this->builder->getExt('mbregex') === null) { $arg .= ' --disable-mbregex'; } else { diff --git a/src/SPC/builder/extension/xml.php b/src/SPC/builder/extension/xml.php index d36df758..3c8b5dff 100644 --- a/src/SPC/builder/extension/xml.php +++ b/src/SPC/builder/extension/xml.php @@ -29,9 +29,7 @@ class xml extends Extension 'simplexml' => '--enable-simplexml', default => throw new RuntimeException('Not accept non-xml extension'), }; - if (!$shared) { - $arg .= ' --with-libxml="' . BUILD_ROOT_PATH . '"'; - } + $arg .= ($shared ? '=shared' : '' ) . ' --with-libxml="' . BUILD_ROOT_PATH . '"'; return $arg; } diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index 9b901460..0a827c85 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -322,7 +322,7 @@ class LinuxBuilder extends UnixBuilderBase shell()->cd(SOURCE_PATH . '/php-src') ->exec('sed -i "s|//lib|/lib|g" Makefile') - ->exec('sed -i "s|^EXTENSION_DIR = .*|EXTENSION_DIR = ' . BUILD_MODULES_PATH . '|" 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"); $this->patchPhpScripts(); } diff --git a/src/SPC/builder/unix/library/libxslt.php b/src/SPC/builder/unix/library/libxslt.php index 799c87c2..6de23e3e 100644 --- a/src/SPC/builder/unix/library/libxslt.php +++ b/src/SPC/builder/unix/library/libxslt.php @@ -47,5 +47,6 @@ trait libxslt ->execWithEnv("make -j{$this->builder->concurrency}") ->execWithEnv('make install DESTDIR=' . escapeshellarg(BUILD_ROOT_PATH)); $this->patchPkgconfPrefix(['libexslt.pc']); + $this->patchLaDependencyPrefix(['libxslt.la', 'libexslt.la']); } } diff --git a/src/SPC/store/SourcePatcher.php b/src/SPC/store/SourcePatcher.php index 24ba666c..0c02e155 100644 --- a/src/SPC/store/SourcePatcher.php +++ b/src/SPC/store/SourcePatcher.php @@ -95,7 +95,7 @@ class SourcePatcher */ public static function patchBeforeConfigure(BuilderBase $builder): void { - foreach ($builder->getExts(false) as $ext) { + foreach ($builder->getExts() as $ext) { if ($ext->patchBeforeConfigure() === true) { logger()->info('Extension [' . $ext->getName() . '] patched before configure'); }