From f85f29e628ea5396d4de39e3303e5666b135a69a Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Thu, 12 Mar 2026 22:22:02 +0800 Subject: [PATCH] Add ext-pgsql,ext-pdo_pgsql --- config/pkg/ext/builtin-extensions.yml | 15 +++++++++ src/Package/Extension/pgsql.php | 48 +++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/Package/Extension/pgsql.php diff --git a/config/pkg/ext/builtin-extensions.yml b/config/pkg/ext/builtin-extensions.yml index 78d3d282..33287bd8 100644 --- a/config/pkg/ext/builtin-extensions.yml +++ b/config/pkg/ext/builtin-extensions.yml @@ -187,6 +187,21 @@ ext-pdo_odbc: - ext-odbc php-extension: arg-type: custom +ext-pdo_pgsql: + type: php-extension + depends@unix: + - ext-pdo + - ext-pgsql + - postgresql + php-extension: + arg-type@unix: with-path + arg-type@windows: '--with-pdo-pgsql=yes' +ext-pgsql: + type: php-extension + depends@unix: + - postgresql + php-extension: + arg-type: custom ext-phar: type: php-extension depends: diff --git a/src/Package/Extension/pgsql.php b/src/Package/Extension/pgsql.php new file mode 100644 index 00000000..6e2b8f0b --- /dev/null +++ b/src/Package/Extension/pgsql.php @@ -0,0 +1,48 @@ += 80400) { + $libfiles = new SPCConfigUtil(['libs_only_deps' => true, 'absolute_libs' => true])->getPackageDepsConfig('postgresql', array_keys($installer->getResolvedPackages()), $builder->getOption('with-suggests'))['libs']; + $libfiles = str_replace("{$builder->getLibDir()}/lib", '-l', $libfiles); + $libfiles = str_replace('.a', '', $libfiles); + return '--with-pgsql' . ($shared ? '=shared' : '') . + ' PGSQL_CFLAGS=-I' . $builder->getIncludeDir() . + ' PGSQL_LIBS="-L' . $builder->getLibDir() . ' ' . $libfiles . '"'; + } + return '--with-pgsql=' . ($shared ? 'shared,' : '') . $builder->getBuildRootPath(); + } + + #[CustomPhpConfigureArg('Windows')] + public function getWindowsConfigureArg(bool $shared, PackageBuilder $builder): string + { + if (php::getPHPVersionID() >= 80400) { + return '--with-pgsql'; + } + return "--with-pgsql={$builder->getBuildRootPath()}"; + } + + public function getSharedExtensionEnv(): array + { + $parent = parent::getSharedExtensionEnv(); + $parent['CFLAGS'] .= ' -std=c17 -Wno-int-conversion'; + return $parent; + } +}