From c0b52fc2d161e0e6bf4b8fa58e456acf9d515867 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sun, 5 Nov 2023 17:09:48 +0800 Subject: [PATCH 1/6] Add extension rdkafka support --- config/ext.json | 9 +++++ config/lib.json | 12 +++++++ config/source.json | 17 +++++++++ src/SPC/builder/extension/rdkafka.php | 36 ++++++++++++++++++++ src/SPC/builder/linux/library/librdkafka.php | 13 +++++++ src/SPC/builder/macos/library/librdkafka.php | 12 +++++++ src/SPC/builder/unix/library/librdkafka.php | 35 +++++++++++++++++++ 7 files changed, 134 insertions(+) create mode 100644 src/SPC/builder/extension/rdkafka.php create mode 100644 src/SPC/builder/linux/library/librdkafka.php create mode 100644 src/SPC/builder/macos/library/librdkafka.php create mode 100644 src/SPC/builder/unix/library/librdkafka.php diff --git a/config/ext.json b/config/ext.json index b18c8eb93..2ab3dc65c 100644 --- a/config/ext.json +++ b/config/ext.json @@ -385,6 +385,15 @@ "libssh2" ] }, + "rdkafka": { + "type": "external", + "source": "ext-rdkafka", + "arg-type": "custom", + "cpp-extension": true, + "lib-depends": [ + "librdkafka" + ] + }, "swoole": { "type": "external", "source": "swoole", diff --git a/config/lib.json b/config/lib.json index 6a602d16b..4df318dad 100644 --- a/config/lib.json +++ b/config/lib.json @@ -420,6 +420,18 @@ "pkg-config": { "source": "pkg-config" }, + "librdkafka": { + "source": "librdkafka", + "static-libs-unix": [ + "librdkafka.a", + "librdkafka++.a", + "librdkafka-static.a" + ], + "lib-depends": [ + "openssl", + "zlib" + ] + }, "postgresql": { "source": "postgresql", "static-libs-unix": [ diff --git a/config/source.json b/config/source.json index cd849f86f..447bc65ab 100644 --- a/config/source.json +++ b/config/source.json @@ -42,6 +42,23 @@ "path": "COPYING" } }, + "librdkafka": { + "type": "ghtar", + "repo": "confluentinc/librdkafka", + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "ext-rdkafka": { + "type": "ghtar", + "repo": "arnaud-lb/php-rdkafka", + "path": "php-src/ext/rdkafka", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "ext-event": { "type": "url", "url": "https://bitbucket.org/osmanov/pecl-event/get/3.0.8.tar.gz", diff --git a/src/SPC/builder/extension/rdkafka.php b/src/SPC/builder/extension/rdkafka.php new file mode 100644 index 000000000..50610325f --- /dev/null +++ b/src/SPC/builder/extension/rdkafka.php @@ -0,0 +1,36 @@ +execWithResult('pkg-config --libs --static rdkafka')[1]; + $pkgconf_libs = trim(implode('', $pkgconf_libs)); + return '--with-rdkafka=' . BUILD_ROOT_PATH . ' LIBS="' . $pkgconf_libs . '"'; + } +} diff --git a/src/SPC/builder/linux/library/librdkafka.php b/src/SPC/builder/linux/library/librdkafka.php new file mode 100644 index 000000000..2ccd701af --- /dev/null +++ b/src/SPC/builder/linux/library/librdkafka.php @@ -0,0 +1,13 @@ +cd($this->source_dir) + ->exec( + './configure ' . + '--enable-static --disable-shared --disable-curl --disable-sasl --disable-valgrind ' . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); + $this->patchPkgconfPrefix(['rdkafka.pc', 'rdkafka-static.pc', 'rdkafka++.pc', 'rdkafka++-static.pc']); + // remove dynamic libs + shell() + ->exec("rm -rf {$builddir}/lib/*.so.*") + ->exec("rm -rf {$builddir}/lib/*.so") + ->exec("rm -rf {$builddir}/lib/*.dylib"); + } +} From 330dd2bfc6092a3bde6ae0b710b53338d43579da Mon Sep 17 00:00:00 2001 From: daddeffe Date: Mon, 23 Sep 2024 10:19:40 +0200 Subject: [PATCH 2/6] Added optional zlib and disabled two extension (#545) asd --- config/lib.json | 5 ++--- src/SPC/builder/unix/library/librdkafka.php | 8 ++++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/config/lib.json b/config/lib.json index 4df318dad..3c84b2bfb 100644 --- a/config/lib.json +++ b/config/lib.json @@ -427,9 +427,8 @@ "librdkafka++.a", "librdkafka-static.a" ], - "lib-depends": [ - "openssl", - "zlib" + "lib-suggests": [ + "zstd" ] }, "postgresql": { diff --git a/src/SPC/builder/unix/library/librdkafka.php b/src/SPC/builder/unix/library/librdkafka.php index 41f6ed32d..5ee4c0c8e 100644 --- a/src/SPC/builder/unix/library/librdkafka.php +++ b/src/SPC/builder/unix/library/librdkafka.php @@ -16,15 +16,19 @@ trait librdkafka protected function build(): void { $builddir = BUILD_ROOT_PATH; + + $zstd_option = $this->builder->getLib('zstd') ? ("STATIC_LIB_libzstd={$builddir}/lib/libzstd.a ") : ''; shell()->cd($this->source_dir) ->exec( + $zstd_option . './configure ' . - '--enable-static --disable-shared --disable-curl --disable-sasl --disable-valgrind ' . + '--enable-static --disable-shared --disable-curl --disable-sasl --disable-valgrind --disable-zlib --disable-ssl ' . + ($zstd_option == '' ? '--disable-zstd ' : '') . '--prefix=' ) ->exec('make clean') ->exec("make -j{$this->builder->concurrency}") - ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); + ->exec("make install DESTDIR={$builddir}"); $this->patchPkgconfPrefix(['rdkafka.pc', 'rdkafka-static.pc', 'rdkafka++.pc', 'rdkafka++-static.pc']); // remove dynamic libs shell() From 413e4478f4ab67ed109bdbc17babbff54e01c0a8 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Mon, 23 Sep 2024 16:52:01 +0800 Subject: [PATCH 3/6] Add tests for rdkafka --- .../builder/windows/library/librdkafka.php | 43 +++++++++++++++++++ src/globals/test-extensions.php | 6 +-- 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 src/SPC/builder/windows/library/librdkafka.php diff --git a/src/SPC/builder/windows/library/librdkafka.php b/src/SPC/builder/windows/library/librdkafka.php new file mode 100644 index 000000000..fb79fe0e3 --- /dev/null +++ b/src/SPC/builder/windows/library/librdkafka.php @@ -0,0 +1,43 @@ +builder->getLib('zlib') ? 'ON' : 'OFF'; + + // reset cmake + FileSystem::resetDir($this->source_dir . '\build'); + + // start build + cmd()->cd($this->source_dir) + ->execWithWrapper( + $this->builder->makeSimpleWrapper('cmake'), + '-B build ' . + '-A x64 ' . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DSKIP_INSTALL_PROGRAM=ON ' . + '-DSKIP_INSTALL_FILES=ON ' . + '-DBUILD_SHARED_LIBS=OFF ' . + '-DLIBRDKAFKA_STATICLIB ' . + '-DLIBRDKAFKA_STATIC=ON ' . + '-DLIBRDKAFKA_SHARED=OFF ' . + "-DENABLE_ZLIB_COMPRESSION={$zlib} " . + '-DLIBRDKAFKA_TESTS=OFF ' . + '-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' + ) + ->execWithWrapper( + $this->builder->makeSimpleWrapper('cmake'), + "--build build --config Release --target install -j{$this->builder->concurrency}" + ); + } +} diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 755bdf4a6..22c67d3e2 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -19,13 +19,13 @@ // If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`). $extensions = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => 'gmssl', - 'Windows' => 'gmssl', + 'Linux', 'Darwin' => 'rdkafka', + 'Windows' => 'rdkafka', }; // If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`). $with_libs = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => 'liblz4', + 'Linux', 'Darwin' => '', 'Windows' => '', }; From 637f4892b926d84836a7a1ea15d0b75430e2b98b Mon Sep 17 00:00:00 2001 From: Davide Frattarolo Date: Fri, 4 Oct 2024 14:58:07 +0200 Subject: [PATCH 4/6] Removed a compile step --- src/SPC/builder/windows/library/librdkafka.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/SPC/builder/windows/library/librdkafka.php b/src/SPC/builder/windows/library/librdkafka.php index fb79fe0e3..9b28a8a5a 100644 --- a/src/SPC/builder/windows/library/librdkafka.php +++ b/src/SPC/builder/windows/library/librdkafka.php @@ -34,10 +34,6 @@ protected function build(): void "-DENABLE_ZLIB_COMPRESSION={$zlib} " . '-DLIBRDKAFKA_TESTS=OFF ' . '-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' - ) - ->execWithWrapper( - $this->builder->makeSimpleWrapper('cmake'), - "--build build --config Release --target install -j{$this->builder->concurrency}" ); } } From d61c67a94ab59742c2eb09c5e0d518a44b9690e2 Mon Sep 17 00:00:00 2001 From: Davide Frattarolo Date: Fri, 4 Oct 2024 15:01:59 +0200 Subject: [PATCH 5/6] Disabled args on linux for rdkafka --- src/SPC/builder/extension/rdkafka.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SPC/builder/extension/rdkafka.php b/src/SPC/builder/extension/rdkafka.php index 50610325f..355ab9b1d 100644 --- a/src/SPC/builder/extension/rdkafka.php +++ b/src/SPC/builder/extension/rdkafka.php @@ -27,7 +27,7 @@ public function patchBeforeMake(): bool return true; } - public function getConfigureArg(): string + public function getUnixConfigureArg(): string { $pkgconf_libs = shell()->execWithResult('pkg-config --libs --static rdkafka')[1]; $pkgconf_libs = trim(implode('', $pkgconf_libs)); From 73e0482c7f970df3f23fae8b322009bc9ef0be3d Mon Sep 17 00:00:00 2001 From: Davide Frattarolo Date: Fri, 4 Oct 2024 15:19:41 +0200 Subject: [PATCH 6/6] sabled some library during compile --- src/SPC/builder/windows/library/librdkafka.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SPC/builder/windows/library/librdkafka.php b/src/SPC/builder/windows/library/librdkafka.php index 9b28a8a5a..0fcd24033 100644 --- a/src/SPC/builder/windows/library/librdkafka.php +++ b/src/SPC/builder/windows/library/librdkafka.php @@ -30,8 +30,11 @@ protected function build(): void '-DBUILD_SHARED_LIBS=OFF ' . '-DLIBRDKAFKA_STATICLIB ' . '-DLIBRDKAFKA_STATIC=ON ' . - '-DLIBRDKAFKA_SHARED=OFF ' . + // '-DLIBRDKAFKA_SHARED=OFF ' . "-DENABLE_ZLIB_COMPRESSION={$zlib} " . + "-DENABLE_CURL=OFF" . + "-DENABLE_SASL=OFF" . + "-DENABLE_SSL=OFF" . '-DLIBRDKAFKA_TESTS=OFF ' . '-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' );