From 04af94c9754676f0d1a790fd850600db32206dd8 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Thu, 21 Dec 2023 14:02:32 +0800 Subject: [PATCH 1/3] add sqlsrv support --- config/ext.json | 11 +++++++ config/lib.json | 11 +++++++ config/source.json | 18 ++++++++++++ src/SPC/builder/linux/LinuxBuilder.php | 1 + src/SPC/builder/linux/library/unixodbc.php | 12 ++++++++ src/SPC/builder/macos/MacOSBuilder.php | 1 + src/SPC/builder/macos/library/unixodbc.php | 12 ++++++++ src/SPC/builder/unix/library/unixodbc.php | 34 ++++++++++++++++++++++ 8 files changed, 100 insertions(+) create mode 100644 src/SPC/builder/linux/library/unixodbc.php create mode 100644 src/SPC/builder/macos/library/unixodbc.php create mode 100644 src/SPC/builder/unix/library/unixodbc.php diff --git a/config/ext.json b/config/ext.json index 8a75b5022..26bb9e948 100644 --- a/config/ext.json +++ b/config/ext.json @@ -391,6 +391,17 @@ "sqlite" ] }, + "sqlsrv": { + "type": "external", + "source": "sqlsrv", + "lib-depends": [ + "unixodbc" + ], + "cpp-extension": true, + "ext-depends-linux": [ + "pcntl" + ] + }, "ssh2": { "type": "external", "source": "ext-ssh2", diff --git a/config/lib.json b/config/lib.json index 14d66130c..73c5aee29 100644 --- a/config/lib.json +++ b/config/lib.json @@ -496,6 +496,17 @@ "libtidy.a" ] }, + "unixodbc": { + "source": "unixodbc", + "static-libs-unix": [ + "libodbc.a", + "libodbccr.a", + "libodbcinst.a" + ], + "lib-depends": [ + "libiconv" + ] + }, "xz": { "source": "xz", "static-libs-unix": [ diff --git a/config/source.json b/config/source.json index 09cd20647..d9cd69dd5 100644 --- a/config/source.json +++ b/config/source.json @@ -457,6 +457,16 @@ "text": "The author disclaims copyright to this source code. In place of\na legal notice, here is a blessing:\n\n * May you do good and not evil.\n * May you find forgiveness for yourself and forgive others.\n * May you share freely, never taking more than you give." } }, + "sqlsrv": { + "type": "url", + "url": "https://pecl.php.net/get/sqlsrv", + "path": "php-src/ext/sqlsrv", + "filename": "sqlsrv.tgz", + "license": { + "type": "text", + "text": "TODO" + } + }, "swoole": { "type": "ghtar", "path": "php-src/ext/swoole", @@ -486,6 +496,14 @@ "path": "README/LICENSE.md" } }, + "unixodbc": { + "type": "url", + "url": "https://www.unixodbc.org/unixODBC-2.3.12.tar.gz", + "license": { + "type": "text", + "text": "TODO" + } + }, "xlswriter": { "type": "url", "url": "https://pecl.php.net/get/xlswriter", diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index da7f793d3..a757c661c 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -144,6 +144,7 @@ public function buildPHP(int $build_target = BUILD_TARGET_NONE): void // prepare build php envs $envs_build_php = SystemUtil::makeEnvVarString([ 'CFLAGS' => $cflags, + 'CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH, 'LIBS' => '-ldl -lpthread', ]); diff --git a/src/SPC/builder/linux/library/unixodbc.php b/src/SPC/builder/linux/library/unixodbc.php new file mode 100644 index 000000000..0741d2646 --- /dev/null +++ b/src/SPC/builder/linux/library/unixodbc.php @@ -0,0 +1,12 @@ +arch_c_flags} -Werror=unknown-warning-option' " . + "CPPFLAGS='-I" . BUILD_INCLUDE_PATH . "' " . '--disable-all ' . '--disable-cgi ' . '--disable-phpdbg ' . diff --git a/src/SPC/builder/macos/library/unixodbc.php b/src/SPC/builder/macos/library/unixodbc.php new file mode 100644 index 000000000..35ac965ec --- /dev/null +++ b/src/SPC/builder/macos/library/unixodbc.php @@ -0,0 +1,12 @@ +cd($this->source_dir) + ->exec( + './configure ' . + '--enable-static --disable-shared ' . + '--disable-debug ' . + '--disable-dependency-tracking ' . + '--with-libiconv-prefix=' . BUILD_ROOT_PATH . ' ' . + '--enable-gui=no ' . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); + $this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']); + $this->cleanLaFiles(); + } +} From 5e2160f3b590b7c393ee6eeeabadbc5d52b5aef1 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Thu, 21 Dec 2023 14:03:33 +0800 Subject: [PATCH 2/3] add sqlsrv support test --- src/globals/test-extensions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index f047e2493..ce05d33e5 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -3,7 +3,7 @@ declare(strict_types=1); # If you want to test new extensions here, just modify it. -$extensions = 'password-argon2,apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,event,exif,fileinfo,filter,ftp,gd,gmp,iconv,imagick,imap,intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,posix,protobuf,readline,redis,session,shmop,simplexml,soap,sockets,sqlite3,swoole,sysvmsg,sysvsem,sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib'; +$extensions = 'sqlsrv,apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,event,exif,fileinfo,filter,ftp,gd,gmp,iconv,imagick,imap,intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,posix,protobuf,readline,redis,session,shmop,simplexml,soap,sockets,sqlite3,swoole,sysvmsg,sysvsem,sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib'; if (PHP_OS_FAMILY === 'Darwin') { $extensions .= ',sodium'; From ef83bc3943c6a1fc6df6d79c4f1ca2f653420bac Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Thu, 21 Dec 2023 15:02:21 +0800 Subject: [PATCH 3/3] fix x86_64 build --- config/source.json | 8 ++++---- src/SPC/builder/unix/library/unixodbc.php | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/source.json b/config/source.json index d9cd69dd5..276cb4bd3 100644 --- a/config/source.json +++ b/config/source.json @@ -463,8 +463,8 @@ "path": "php-src/ext/sqlsrv", "filename": "sqlsrv.tgz", "license": { - "type": "text", - "text": "TODO" + "type": "file", + "path": "LICENSE" } }, "swoole": { @@ -500,8 +500,8 @@ "type": "url", "url": "https://www.unixodbc.org/unixODBC-2.3.12.tar.gz", "license": { - "type": "text", - "text": "TODO" + "type": "file", + "path": "COPYING" } }, "xlswriter": { diff --git a/src/SPC/builder/unix/library/unixodbc.php b/src/SPC/builder/unix/library/unixodbc.php index 48c403e0f..f89eb0a44 100644 --- a/src/SPC/builder/unix/library/unixodbc.php +++ b/src/SPC/builder/unix/library/unixodbc.php @@ -22,6 +22,7 @@ protected function build(): void '--disable-debug ' . '--disable-dependency-tracking ' . '--with-libiconv-prefix=' . BUILD_ROOT_PATH . ' ' . + '--with-included-ltdl ' . '--enable-gui=no ' . '--prefix=' )