From 4cfd8f4ca32b641227d61efba5140e5ea652d7b8 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Fri, 6 Feb 2026 11:45:14 +0800 Subject: [PATCH] Add librdkafka --- config/pkg/lib/librdkafka.yml | 19 ++++++++++ src/Package/Library/librdkafka.php | 59 ++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 config/pkg/lib/librdkafka.yml create mode 100644 src/Package/Library/librdkafka.php diff --git a/config/pkg/lib/librdkafka.yml b/config/pkg/lib/librdkafka.yml new file mode 100644 index 00000000..cb83fb43 --- /dev/null +++ b/config/pkg/lib/librdkafka.yml @@ -0,0 +1,19 @@ +librdkafka: + type: library + artifact: + source: + type: ghtar + repo: confluentinc/librdkafka + metadata: + license-files: [LICENSE] + license: BSD-2-Clause + suggests: + - curl + - liblz4 + - openssl + - zlib + - zstd + lang: cpp + pkg-configs: + - rdkafka++-static + - rdkafka-static diff --git a/src/Package/Library/librdkafka.php b/src/Package/Library/librdkafka.php new file mode 100644 index 00000000..29571c7d --- /dev/null +++ b/src/Package/Library/librdkafka.php @@ -0,0 +1,59 @@ +getSourceDir() . '/lds-gen.py', + "funcs.append('rd_ut_coverage_check')", + '' + ); + FileSystem::replaceFileStr( + $this->getSourceDir() . '/src/rd.h', + '#error "IOV_MAX not defined"', + "#define IOV_MAX 1024\n#define __GNU__" + ); + // Fix OAuthBearer OIDC flag + FileSystem::replaceFileStr( + $this->getSourceDir() . '/src/rdkafka_conf.c', + '#ifdef WITH_OAUTHBEARER_OIDC', + '#if WITH_OAUTHBEARER_OIDC' + ); + return true; + } + + #[BuildFor('Darwin')] + #[BuildFor('Linux')] + public function buildUnix(): void + { + UnixCMakeExecutor::create($this) + ->optionalPackage('zstd', ...cmake_boolean_args('WITH_ZSTD')) + ->optionalPackage('curl', ...cmake_boolean_args('WITH_CURL')) + ->optionalPackage('openssl', ...cmake_boolean_args('WITH_SSL')) + ->optionalPackage('zlib', ...cmake_boolean_args('WITH_ZLIB')) + ->optionalPackage('liblz4', ...cmake_boolean_args('ENABLE_LZ4_EXT')) + ->addConfigureArgs( + '-DWITH_SASL=OFF', + '-DRDKAFKA_BUILD_STATIC=ON', + '-DRDKAFKA_BUILD_EXAMPLES=OFF', + '-DRDKAFKA_BUILD_TESTS=OFF', + ) + ->build(); + } +}