From 1ee8bc7d3483a5ebd7d25f73cfdaffa8bde72008 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Mar 2026 12:36:22 +0800 Subject: [PATCH] Add ext-swow --- config/pkg/ext/ext-swow.yml | 18 ++++++++++++++ src/Package/Extension/swow.php | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 config/pkg/ext/ext-swow.yml create mode 100644 src/Package/Extension/swow.php diff --git a/config/pkg/ext/ext-swow.yml b/config/pkg/ext/ext-swow.yml new file mode 100644 index 00000000..11592cd0 --- /dev/null +++ b/config/pkg/ext/ext-swow.yml @@ -0,0 +1,18 @@ +ext-swow: + type: php-extension + artifact: + source: + extract: php-src/ext/swow-src + type: ghtar + repo: swow/swow + prefer-stable: true + metadata: + license: Apache-2.0 + license-files: [LICENSE] + suggests: + - openssl + - curl + - ext-openssl + - ext-curl + php-extension: + arg-type: custom diff --git a/src/Package/Extension/swow.php b/src/Package/Extension/swow.php new file mode 100644 index 00000000..333a3ed7 --- /dev/null +++ b/src/Package/Extension/swow.php @@ -0,0 +1,44 @@ +getLibraryPackage('openssl') ? ' --enable-swow-ssl' : ' --disable-swow-ssl'; + $arg .= $installer->getLibraryPackage('curl') ? ' --enable-swow-curl' : ' --disable-swow-curl'; + return $arg; + } + + #[BeforeStage('php', [php::class, 'buildconfForUnix'], 'ext-swow')] + #[BeforeStage('php', [php::class, 'buildconfForWindows'], 'ext-swow')] + public function patchBeforeBuildconf(PackageInstaller $installer): bool + { + $php_src = $installer->getTargetPackage('php')->getSourceDir(); + if (php::getPHPVersionID() >= 80000 && !is_link("{$php_src}/ext/swow")) { + if (PHP_OS_FAMILY === 'Windows') { + f_passthru("cd {$php_src}/ext && mklink /D swow swow-src\\ext"); + } else { + f_passthru("cd {$php_src}/ext && ln -s swow-src/ext swow"); + } + } + // replace AC_DEFUN([SWOW_PKG_CHECK_MODULES] to AC_DEFUN([SWOW_PKG_CHECK_MODULES_STATIC] + FileSystem::replaceFileStr($this->getSourceDir() . '/ext/config.m4', 'AC_DEFUN([SWOW_PKG_CHECK_MODULES]', 'AC_DEFUN([SWOW_PKG_CHECK_MODULES_STATIC]'); + return false; + } +}