From 83d3b873e17a61354d9a8762adfcbc1eae31e0c6 Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Sat, 18 Jan 2025 21:51:47 +0800 Subject: [PATCH 1/3] Upgrade the C++ client to 3.7.0 --- dependencies.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.yaml b/dependencies.yaml index d58263f..9d9136e 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -17,7 +17,7 @@ # under the License. # -pulsar-cpp: 3.5.1 +pulsar-cpp: 3.7.0 pybind11: 2.10.1 # The OpenSSL dependency is only used when building Python from source openssl: 1.1.1q From 9fa26d7dcb432ba167254fdc9a549b976304d3de Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Sat, 18 Jan 2025 22:24:30 +0800 Subject: [PATCH 2/3] Remove the debuginfo rpm --- pkg/build-wheel-inside-docker.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/build-wheel-inside-docker.sh b/pkg/build-wheel-inside-docker.sh index 0e73eae..ae68f44 100755 --- a/pkg/build-wheel-inside-docker.sh +++ b/pkg/build-wheel-inside-docker.sh @@ -34,7 +34,6 @@ if [ $CPP_BINARY_TYPE == "rpm" ]; then fi curl -O -L $RPM_ROOT_DIR/apache-pulsar-client-$PULSAR_CPP_VERSION-1.$ARCH.rpm curl -O -L $RPM_ROOT_DIR/apache-pulsar-client-devel-$PULSAR_CPP_VERSION-1.$ARCH.rpm - curl -O -L $RPM_ROOT_DIR/apache-pulsar-client-debuginfo-$PULSAR_CPP_VERSION-1.$ARCH.rpm rpm -ivh *.rpm else # apk if [ $ARCH == "aarch64" ]; then From 30de05a05c1271e99c24aa73d3516e1e942e9108 Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Mon, 20 Jan 2025 13:59:40 +0800 Subject: [PATCH 3/3] Build from source on manylinux2014 --- pkg/build-wheel-inside-docker.sh | 31 +++++++++++++++++++++++-------- pkg/manylinux2014/Dockerfile | 2 ++ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/pkg/build-wheel-inside-docker.sh b/pkg/build-wheel-inside-docker.sh index ae68f44..2aac91f 100755 --- a/pkg/build-wheel-inside-docker.sh +++ b/pkg/build-wheel-inside-docker.sh @@ -24,17 +24,32 @@ cd /pulsar-client-python source build-support/dep-url.sh # Build cpp wheels +if [[ $ARCH == "aarch64" ]]; then + export VCPKG_FORCE_SYSTEM_BINARIES=1 +fi PULSAR_CPP_VERSION=$(cat ./dependencies.yaml | grep pulsar-cpp | awk '{print $2}') if [ $CPP_BINARY_TYPE == "rpm" ]; then - if [ $ARCH == "aarch64" ]; then - RPM_ROOT_DIR=$(pulsar_cpp_base_url $PULSAR_CPP_VERSION)/rpm-arm64/aarch64 - else - RPM_ROOT_DIR=$(pulsar_cpp_base_url $PULSAR_CPP_VERSION)/rpm-x86_64/x86_64 - fi - curl -O -L $RPM_ROOT_DIR/apache-pulsar-client-$PULSAR_CPP_VERSION-1.$ARCH.rpm - curl -O -L $RPM_ROOT_DIR/apache-pulsar-client-devel-$PULSAR_CPP_VERSION-1.$ARCH.rpm - rpm -ivh *.rpm + # The pre-built RPM packages have incompatible ABI with manylinux2014, so we have to build from source + download_dependency ./dependencies.yaml pulsar-cpp + cd apache-pulsar-client-cpp-${PULSAR_CPP_VERSION} + + git clone https://github.com/microsoft/vcpkg.git + cd vcpkg + + # manylinux2014 does not have ninja in the system package manager + git clone https://github.com/ninja-build/ninja.git + cd ninja + git checkout release + ./configure.py --bootstrap + mv ninja /usr/bin/ + cd .. + ./bootstrap-vcpkg.sh + cd .. + cmake -B build-cpp -DINTEGRATE_VCPKG=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_DYNAMIC_LIB=ON -DBUILD_STATIC_LIB=ON + cmake --build build-cpp -j8 --target install + cd .. + rm -rf apache-pulsar-client-cpp-$(PULSAR_CPP_VERSION) else # apk if [ $ARCH == "aarch64" ]; then APK_ROOT_DIR=$(pulsar_cpp_base_url $PULSAR_CPP_VERSION)/apk-arm64/aarch64 diff --git a/pkg/manylinux2014/Dockerfile b/pkg/manylinux2014/Dockerfile index d59ed3f..63948cd 100644 --- a/pkg/manylinux2014/Dockerfile +++ b/pkg/manylinux2014/Dockerfile @@ -32,3 +32,5 @@ ENV PATH="/opt/python/${PYTHON_SPEC}/bin:${PATH}" ENV ARCH=${ARCH} RUN pip3 install setuptools +# Dependencies for vcpkg on arm64 architecture +RUN yum install -y curl zip unzip tar perl-IPC-Cmd