From cf2e1d9819a1fd98d8fef7d9ed0ea008b69cb65d Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Mon, 9 Mar 2026 15:13:07 +0800 Subject: [PATCH] Add ext-ffi --- config/pkg/ext/builtin-extensions.yml | 7 +++++++ src/Package/Artifact/php_src.php | 11 ---------- src/Package/Extension/ffi.php | 29 +++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 src/Package/Extension/ffi.php diff --git a/config/pkg/ext/builtin-extensions.yml b/config/pkg/ext/builtin-extensions.yml index c5d832f8..a9f357f3 100644 --- a/config/pkg/ext/builtin-extensions.yml +++ b/config/pkg/ext/builtin-extensions.yml @@ -36,6 +36,13 @@ ext-dom: arg-type@windows: with ext-exif: type: php-extension +ext-ffi: + type: php-extension + depends@unix: + - libffi + php-extension: + arg-type@unix: '--with-ffi=@shared_suffix@ --enable-zend-signals' + arg-type@windows: with ext-mbregex: type: php-extension depends: diff --git a/src/Package/Artifact/php_src.php b/src/Package/Artifact/php_src.php index ae9488d6..119f9056 100644 --- a/src/Package/Artifact/php_src.php +++ b/src/Package/Artifact/php_src.php @@ -7,7 +7,6 @@ namespace Package\Artifact; use Package\Target\php; use StaticPHP\Attribute\Artifact\AfterSourceExtract; use StaticPHP\Attribute\PatchDescription; -use StaticPHP\Runtime\SystemTarget; use StaticPHP\Util\FileSystem; use StaticPHP\Util\SourcePatcher; @@ -52,16 +51,6 @@ class php_src } } - #[AfterSourceExtract('php-src')] - #[PatchDescription('Patch FFI extension on CentOS 7 with -O3 optimization (strncmp issue)')] - public function patchFfiCentos7FixO3strncmp(): void - { - spc_skip_if(!($ver = SystemTarget::getLibcVersion()) || version_compare($ver, '2.17', '>')); - $ver_id = php::getPHPVersionID(return_null_if_failed: true); - spc_skip_if($ver_id === null || $ver_id < 80316); - SourcePatcher::patchFile('ffi_centos7_fix_O3_strncmp.patch', SOURCE_PATH . '/php-src'); - } - #[AfterSourceExtract('php-src')] #[PatchDescription('Add LICENSE file to IMAP extension if missing')] public function patchImapLicense(): void diff --git a/src/Package/Extension/ffi.php b/src/Package/Extension/ffi.php new file mode 100644 index 00000000..dc5287e0 --- /dev/null +++ b/src/Package/Extension/ffi.php @@ -0,0 +1,29 @@ +')); + $ver_id = php::getPHPVersionID(return_null_if_failed: true); + spc_skip_if($ver_id === null || $ver_id < 80316); + spc_skip_if(LinuxUtil::getOSRelease()['dist'] !== 'centos'); + SourcePatcher::patchFile('ffi_centos7_fix_O3_strncmp.patch', SOURCE_PATH . '/php-src'); + } +}