diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ad5db0644f..f98075e6d3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -118,9 +118,13 @@ jobs: matrix: include: - name: "centos8 glibc +gssapi" - artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-x64__lnk-std__extra-gssapi + artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-x64__lnk-std__extra-gssapi__sasl2abi-v3 image: quay.io/pypa/manylinux_2_28_x86_64:2024.07.01-1 extra_args: "" + - name: "centos8 glibc +gssapi +sasl2abi-v2" + artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-x64__lnk-std__extra-gssapi__sasl2abi-v2 + image: quay.io/pypa/manylinux_2_28_x86_64:2024.07.01-1 + extra_args: "--sasl2-abi-v2" - name: "centos8 glibc" artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-x64__lnk-all image: quay.io/pypa/manylinux_2_28_x86_64:2024.07.01-1 @@ -151,9 +155,13 @@ jobs: matrix: include: - name: "centos8 glibc +gssapi" - artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-arm64__lnk-std__extra-gssapi + artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-arm64__lnk-std__extra-gssapi__sasl2abi-v3 image: quay.io/pypa/manylinux_2_28_aarch64:2024.07.01-1 extra_args: "" + - name: "centos8 glibc +gssapi +sasl2abi-v2" + artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-arm64__lnk-std__extra-gssapi__sasl2abi-v2 + image: quay.io/pypa/manylinux_2_28_aarch64:2024.07.01-1 + extra_args: "--sasl2-abi-v2" - name: "centos8 glibc" artifact_key: p-librdkafka__plat-linux__dist-centos8__arch-arm64__lnk-all image: quay.io/pypa/manylinux_2_28_aarch64:2024.07.01-1 @@ -259,11 +267,10 @@ jobs: shell: pwsh run: | # Different packaging for tagged vs untagged builds - $vstring = "2.11.0-" - if ($env:GITHUB_REF -match '^refs/tags/') { - $vstring += "gr" + if ($env:GITHUB_REF -match '^refs/tags/v') { + $vstring = $env:GITHUB_REF -replace '^refs/tags/v', '' } else { - $vstring += "ci-$env:GITHUB_RUN_ID" + $vstring = "$((Get-Content .\vcpkg.json | ConvertFrom-Json).version)-ci-$($env:GITHUB_RUN_ID)" } mkdir packages diff --git a/packaging/nuget/nugetpackage.py b/packaging/nuget/nugetpackage.py index ab3655782f..289430b351 100644 --- a/packaging/nuget/nugetpackage.py +++ b/packaging/nuget/nugetpackage.py @@ -71,10 +71,40 @@ class NugetPackage (Package): Mapping({'arch': 'x64', 'plat': 'linux', 'dist': 'centos8', - 'lnk': 'std'}, + 'lnk': 'std', + 'sasl2abi': 'v3'}, 'librdkafka.tgz', './usr/local/lib/librdkafka.so.1', 'runtimes/linux-x64/native/librdkafka.so'), + # Linux glibc centos8 arm64 with GSSAPI + Mapping({'arch': 'arm64', + 'plat': 'linux', + 'dist': 'centos8', + 'lnk': 'std', + 'sasl2abi': 'v3'}, + 'librdkafka.tgz', + './usr/local/lib/librdkafka.so.1', + 'runtimes/linux-arm64/native/librdkafka.so'), + + # Linux glibc centos8 x64 with GSSAPI and SASL2 v2 ABI + Mapping({'arch': 'x64', + 'plat': 'linux', + 'dist': 'centos8', + 'lnk': 'std', + 'sasl2abi': 'v2'}, + 'librdkafka.tgz', + './usr/local/lib/librdkafka.so.1', + 'runtimes/linux-x64/native/sasl2abiv2-librdkafka.so'), + # Linux glibc centos8 arm64 with GSSAPI and SASL2 v2 ABI + Mapping({'arch': 'arm64', + 'plat': 'linux', + 'dist': 'centos8', + 'lnk': 'std', + 'sasl2abi': 'v2'}, + 'librdkafka.tgz', + './usr/local/lib/librdkafka.so.1', + 'runtimes/linux-arm64/native/sasl2abiv2-librdkafka.so'), + # Linux glibc centos8 x64 without GSSAPI (no external deps) Mapping({'arch': 'x64', 'plat': 'linux', @@ -90,7 +120,7 @@ class NugetPackage (Package): 'lnk': 'all'}, 'librdkafka.tgz', './usr/local/lib/librdkafka.so.1', - 'runtimes/linux-arm64/native/librdkafka.so'), + 'runtimes/linux-arm64/native/centos8-librdkafka.so'), # Linux musl alpine x64 without GSSAPI (no external deps) Mapping({'arch': 'x64', @@ -100,6 +130,14 @@ class NugetPackage (Package): 'librdkafka.tgz', './usr/local/lib/librdkafka.so.1', 'runtimes/linux-x64/native/alpine-librdkafka.so'), + # Linux musl alpine arm64 without GSSAPI (no external deps) + Mapping({'arch': 'arm64', + 'plat': 'linux', + 'dist': 'alpine', + 'lnk': 'all'}, + 'librdkafka.tgz', + './usr/local/lib/librdkafka.so.1', + 'runtimes/linux-arm64/native/alpine-librdkafka.so'), # Common Win runtime Mapping({'arch': 'x64', diff --git a/packaging/tools/build-release-artifacts.sh b/packaging/tools/build-release-artifacts.sh index 84e54eb222..dd1d533048 100755 --- a/packaging/tools/build-release-artifacts.sh +++ b/packaging/tools/build-release-artifacts.sh @@ -42,6 +42,14 @@ else disable_gssapi="" fi +# If --sasl2-abi-v2 is specified, we build librdkafka with the v2 ABI. +if [ "$1" = "--sasl2-abi-v2" ]; then + sasl2_abi_v2="$1" + shift +else + sasl2_abi_v2="" +fi + # Check if we're running on the host or the (docker) build target. if [ "$1" = "--in-docker" -a $# -eq 2 ]; then output="$2" @@ -55,7 +63,7 @@ fi if [ -n "$docker_image" ]; then # Running on the host, spin up the docker builder. - exec docker run -v "$PWD:/v" $docker_image /v/packaging/tools/build-release-artifacts.sh $disable_gssapi --in-docker "/v/$output" + exec docker run -v "$PWD:/v" $docker_image /v/packaging/tools/build-release-artifacts.sh $disable_gssapi $sasl2_abi_v2 --in-docker "/v/$output" # Only reached on exec error exit $? fi @@ -97,6 +105,10 @@ make -j # Show library linkage (for troubleshooting) and checksums (for verification) for lib in src/librdkafka.so.1 src-cpp/librdkafka++.so.1; do + if [ -n "$sasl2_abi_v2" ]; then + echo "$0: Patching $lib to use libsasl2.so.2" + patchelf --replace-needed libsasl2.so.3 libsasl2.so.2 ${lib} + fi echo "$0: LINKAGE ${lib}:" ldd src/librdkafka.so.1 echo "$0: SHA256 ${lib}:"