diff --git a/config/ext.json b/config/ext.json index 5650b9d8..5dc86c62 100644 --- a/config/ext.json +++ b/config/ext.json @@ -519,17 +519,20 @@ }, "pdo_pgsql": { "support": { - "Windows": "wip", "BSD": "wip" }, "type": "builtin", "arg-type": "with-prefix", + "arg-type-windows": "custom", "ext-depends": [ "pdo", "pgsql" ], - "lib-depends": [ + "lib-depends-unix": [ "postgresql" + ], + "lib-depends-windows": [ + "postgresql-win" ] }, "pdo_sqlite": { @@ -560,14 +563,16 @@ }, "pgsql": { "support": { - "Windows": "wip", "BSD": "wip" }, "notes": true, "type": "builtin", "arg-type": "custom", - "lib-depends": [ + "lib-depends-unix": [ "postgresql" + ], + "lib-depends-windows": [ + "postgresql-win" ] }, "phar": { diff --git a/config/lib.json b/config/lib.json index 9656fcc1..0dae815f 100644 --- a/config/lib.json +++ b/config/lib.json @@ -671,6 +671,14 @@ "zstd" ] }, + "postgresql-win": { + "source": "postgresql-win", + "static-libs": [ + "libpq.lib", + "libpgport.lib", + "libpgcommon.lib" + ] + }, "pthreads4w": { "source": "pthreads4w", "static-libs-windows": [ diff --git a/config/source.json b/config/source.json index 006c9d6b..10daf546 100644 --- a/config/source.json +++ b/config/source.json @@ -761,6 +761,14 @@ "path": "COPYRIGHT" } }, + "postgresql-win": { + "type": "url", + "url": "https://get.enterprisedb.com/postgresql/postgresql-16.8-1-windows-x64-binaries.zip", + "license": { + "type": "text", + "text": "PostgreSQL Database Management System\n(also known as Postgres, formerly as Postgres95)\n\nPortions Copyright (c) 1996-2025, The PostgreSQL Global Development Group\n\nPortions Copyright (c) 1994, The Regents of the University of California\n\nPermission to use, copy, modify, and distribute this software and its\ndocumentation for any purpose, without fee, and without a written\nagreement is hereby granted, provided that the above copyright notice\nand this paragraph and the following two paragraphs appear in all\ncopies.\n\nIN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY\nFOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,\nINCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS\nDOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF\nTHE POSSIBILITY OF SUCH DAMAGE.\n\nTHE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,\nINCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\nON AN \"AS IS\" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS\nTO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + } + }, "protobuf": { "type": "url", "url": "https://pecl.php.net/get/protobuf", diff --git a/src/SPC/builder/extension/pdo_pgsql.php b/src/SPC/builder/extension/pdo_pgsql.php new file mode 100644 index 00000000..e29014cb --- /dev/null +++ b/src/SPC/builder/extension/pdo_pgsql.php @@ -0,0 +1,17 @@ +builder->getPHPVersionID() >= 80400) { + return '--with-pgsql'; + } + return '--with-pgsql=' . BUILD_ROOT_PATH; + } } diff --git a/src/SPC/builder/windows/library/postgresql_win.php b/src/SPC/builder/windows/library/postgresql_win.php new file mode 100644 index 00000000..7f708be6 --- /dev/null +++ b/src/SPC/builder/windows/library/postgresql_win.php @@ -0,0 +1,27 @@ +source_dir . '\pgsql\lib\libpq.lib', BUILD_LIB_PATH . '\libpq.lib'); + copy($this->source_dir . '\pgsql\lib\libpgport.lib', BUILD_LIB_PATH . '\libpgport.lib'); + copy($this->source_dir . '\pgsql\lib\libpgcommon.lib', BUILD_LIB_PATH . '\libpgcommon.lib'); + + // create libpq folder in buildroot/includes/libpq + if (!file_exists(BUILD_INCLUDE_PATH . '\libpq')) { + mkdir(BUILD_INCLUDE_PATH . '\libpq'); + } + + $headerFiles = ['libpq-fe.h', 'postgres_ext.h', 'pg_config_ext.h', 'libpq\libpq-fs.h']; + foreach ($headerFiles as $header) { + copy($this->source_dir . '\pgsql\include\\' . $header, BUILD_INCLUDE_PATH . '\\' . $header); + } + } +} diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 5b376e94..cecb8ace 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -21,8 +21,8 @@ $test_php_version = [ // test os (macos-13, macos-14, ubuntu-latest, windows-latest are available) $test_os = [ - 'macos-13', - 'macos-14', + // 'macos-13', + // 'macos-14', 'ubuntu-latest', 'windows-latest', ]; @@ -40,8 +40,8 @@ $prefer_pre_built = false; // If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`). $extensions = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => 'odbc,pdo_odbc', - 'Windows' => 'odbc,pdo_odbc', + 'Linux', 'Darwin' => 'pgsql,pdo_pgsql', + 'Windows' => 'pgsql,pdo_pgsql', }; // If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`).