Add librdkafka

This commit is contained in:
crazywhalecc 2026-02-06 11:45:14 +08:00
parent f2d389d89a
commit 4cfd8f4ca3
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680
2 changed files with 78 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,59 @@
<?php
declare(strict_types=1);
namespace Package\Library;
use StaticPHP\Attribute\Package\BuildFor;
use StaticPHP\Attribute\Package\Library;
use StaticPHP\Attribute\Package\PatchBeforeBuild;
use StaticPHP\Attribute\PatchDescription;
use StaticPHP\Package\LibraryPackage;
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
use StaticPHP\Util\FileSystem;
#[Library('librdkafka')]
class librdkafka extends LibraryPackage
{
#[PatchBeforeBuild]
#[PatchDescription('Disable rd_ut_coverage_check and define IOV_MAX to avoid build errors')]
public function patchBeforeBuild(): bool
{
FileSystem::replaceFileStr(
$this->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();
}
}