This is an automated email from the ASF dual-hosted git repository. xyz pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/pulsar-client-cpp.git
The following commit(s) were added to refs/heads/main by this push: new 9f0b6fb Use vcpkg to build alpine packages (#505) 9f0b6fb is described below commit 9f0b6fb40700131de080897ee69bbdfbcacc527a Author: Yunze Xu <xyzinfern...@163.com> AuthorDate: Mon Sep 29 22:41:24 2025 +0800 Use vcpkg to build alpine packages (#505) --- .github/workflows/ci-build-binary-artifacts.yaml | 8 +-- pkg/apk/APKBUILD | 30 ++++---- pkg/apk/Dockerfile | 91 ++---------------------- pkg/apk/build-apk.sh | 2 +- pkg/apk/docker-build-apk-arm64.sh | 2 +- 5 files changed, 28 insertions(+), 105 deletions(-) diff --git a/.github/workflows/ci-build-binary-artifacts.yaml b/.github/workflows/ci-build-binary-artifacts.yaml index 0a49c70..f91e117 100644 --- a/.github/workflows/ci-build-binary-artifacts.yaml +++ b/.github/workflows/ci-build-binary-artifacts.yaml @@ -93,16 +93,16 @@ jobs: matrix: include: - name: 'Windows x64' - os: windows-2019 + os: windows-2022 triplet: x64-windows-static suffix: 'windows-win64' - generator: 'Visual Studio 16 2019' + generator: 'Visual Studio 17 2022' arch: '-A x64' - name: 'Windows x86' - os: windows-2019 + os: windows-2022 triplet: x86-windows-static suffix: 'windows-win32' - generator: 'Visual Studio 16 2019' + generator: 'Visual Studio 17 2022' arch: '-A Win32' steps: diff --git a/pkg/apk/APKBUILD b/pkg/apk/APKBUILD index 3c3cdc7..1b476c2 100644 --- a/pkg/apk/APKBUILD +++ b/pkg/apk/APKBUILD @@ -17,7 +17,7 @@ # under the License. # -# Maintainer: "Apache Pulsar <d...@pulsar.apache.org>" +# Maintainer: Apache Pulsar <d...@pulsar.apache.org> pkgname="apache-pulsar-client" pkgver="$VERSION" @@ -38,19 +38,23 @@ build() { if [ "$CBUILD" != "$CHOST" ]; then CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" fi - cmake \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_INSTALL_LIBDIR=lib \ - -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ - -DCMAKE_C_FLAGS="$CFLAGS" \ - -DBUILD_TESTS=OFF \ - -DLINK_STATIC=ON \ - ${CMAKE_CROSSOPTS} ${ROOT_DIR} - make -j6 + git clone https://github.com/microsoft/vcpkg.git + mv vcpkg $ROOT_DIR/ + export VCPKG_FORCE_SYSTEM_BINARIES=1 + set +e + cmake -B build -DINTEGRATE_VCPKG=ON -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_MAKE_PROGRAM=make \ + -DCMAKE_INSTALL_PREFIX="$pkgdir" \ + -DBUILD_TESTS=OFF -DBUILD_DYNAMIC_LIB=ON -DBUILD_STATIC_LIB=ON \ + $ROOT_DIR + if [[ $? -ne 0 ]]; then + cat $ROOT_DIR/vcpkg/buildtrees/detect_compiler/*.log + exit 1 + fi + set -e + cmake --build build -j8 } package() { - make DESTDIR="$pkgdir" install + cmake --build build --target install } diff --git a/pkg/apk/Dockerfile b/pkg/apk/Dockerfile index db501f0..1335174 100644 --- a/pkg/apk/Dockerfile +++ b/pkg/apk/Dockerfile @@ -17,7 +17,7 @@ # under the License. # -FROM alpine:3.12 +FROM alpine:3.19 ARG PLATFORM @@ -31,91 +31,10 @@ RUN apk add \ g++ \ make \ cmake \ - python3 \ - py3-pip \ perl \ git \ + ninja \ + zip \ + unzip \ + openssl-dev \ sudo - -RUN pip3 install pyyaml - -ADD .build/dependencies.yaml / -ADD .build/dep-version.py /usr/local/bin - -# Download and compile boost -RUN BOOST_VERSION=$(dep-version.py boost) && \ - curl -O -L https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION}.tar.gz && \ - tar zxf boost-${BOOST_VERSION}.tar.gz && \ - cd boost-${BOOST_VERSION} && \ - ./bootstrap.sh --with-libraries=regex && \ - ./b2 -d0 address-model=64 cxxflags=-fPIC link=static threading=multi variant=release install && \ - rm -rf /boost-${BOOST_VERSION}.tar.gz /boost-${BOOST_VERSION} - -# Download and compile protobuf -RUN PROTOBUF_VERSION=$(dep-version.py protobuf) && \ - curl -O -L https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protobuf-cpp-${PROTOBUF_VERSION}.tar.gz && \ - tar xfz protobuf-cpp-${PROTOBUF_VERSION}.tar.gz && \ - cd protobuf-${PROTOBUF_VERSION}/ && \ - CXXFLAGS=-fPIC ./configure && \ - make -j8 && make install && \ - rm -rf /protobuf-cpp-${PROTOBUF_VERSION}.tar.gz /protobuf-${PROTOBUF_VERSION} - -# ZLib -RUN ZLIB_VERSION=$(dep-version.py zlib) && \ - curl -O -L https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.tar.gz && \ - tar xfz v${ZLIB_VERSION}.tar.gz && \ - cd zlib-${ZLIB_VERSION} && \ - CFLAGS="-fPIC -O3" ./configure && \ - make -j8 && make install && \ - rm -rf /v${ZLIB_VERSION}.tar.gz /zlib-${ZLIB_VERSION} - -# Zstandard -RUN ZSTD_VERSION=$(dep-version.py zstd) && \ - curl -O -L https://github.com/facebook/zstd/releases/download/v${ZSTD_VERSION}/zstd-${ZSTD_VERSION}.tar.gz && \ - tar xfz zstd-${ZSTD_VERSION}.tar.gz && \ - cd zstd-${ZSTD_VERSION} && \ - CFLAGS="-fPIC -O3" make -j8 && \ - make install && \ - rm -rf /zstd-${ZSTD_VERSION} /zstd-${ZSTD_VERSION}.tar.gz - -# Snappy -RUN SNAPPY_VERSION=$(dep-version.py snappy) && \ - curl -O -L https://github.com/google/snappy/archive/refs/tags/${SNAPPY_VERSION}.tar.gz && \ - tar xfz ${SNAPPY_VERSION}.tar.gz && \ - cd snappy-${SNAPPY_VERSION} && \ - CXXFLAGS="-fPIC -O3" cmake . -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF && \ - make -j8 && make install && \ - rm -rf /snappy-${SNAPPY_VERSION} /${SNAPPY_VERSION}.tar.gz - -# Roaring -RUN ROARING_VERSION=$(dep-version.py roaring) && \ - curl -O -L https://github.com/RoaringBitmap/CRoaring/archive/refs/tags/v${ROARING_VERSION}.tar.gz && \ - tar xfz v${ROARING_VERSION}.tar.gz && \ - cd CRoaring-${ROARING_VERSION} && \ - mkdir build && cd build && CXXFLAGS="-fPIC -O3" cmake .. && \ - make -j8 && make install && \ - rm -rf /v${ROARING_VERSION}.tar.gz /CRoaring-${ROARING_VERSION} - -RUN OPENSSL_VERSION=$(dep-version.py openssl) && \ - OPENSSL_VERSION_UNDERSCORE=$(echo $OPENSSL_VERSION | sed 's/\./_/g') && \ - curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz && \ - tar xfz OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz && \ - cd openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}/ && \ - ./Configure -fPIC --prefix=/usr/local/ssl/ linux-${PLATFORM} && \ - make -j8 && make install && \ - rm -rf /OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz /openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE} - -ENV LD_LIBRARY_PATH /usr/local/ssl/lib/: -ENV OPENSSL_ROOT_DIR /usr/local/ssl/ - -# LibCurl -RUN CURL_VERSION=$(dep-version.py curl) && \ - CURL_VERSION_UNDERSCORE=$(echo $CURL_VERSION | sed 's/\./_/g') && \ - curl -O -L https://github.com/curl/curl/releases/download/curl-${CURL_VERSION_UNDERSCORE}/curl-${CURL_VERSION}.tar.gz && \ - tar xfz curl-${CURL_VERSION}.tar.gz && \ - cd curl-${CURL_VERSION} && \ - CFLAGS=-fPIC ./configure --with-ssl=/usr/local/ssl/ --without-zstd --without-libpsl && \ - make -j8 && make install && \ - rm -rf /curl-${CURL_VERSION}.tar.gz /curl-${CURL_VERSION} - - diff --git a/pkg/apk/build-apk.sh b/pkg/apk/build-apk.sh index 66cb763..5436048 100755 --- a/pkg/apk/build-apk.sh +++ b/pkg/apk/build-apk.sh @@ -36,7 +36,7 @@ export VERSION=`echo $POM_VERSION | sed -E 's/\-[a-zA-Z]+//'` echo "VERSION: $VERSION" -abuild-keygen -a -i -n +sudo abuild-keygen -a -i -n abuild -F -c -r cp -r /root/packages/pkg ./build diff --git a/pkg/apk/docker-build-apk-arm64.sh b/pkg/apk/docker-build-apk-arm64.sh index 7563152..8480ee5 100755 --- a/pkg/apk/docker-build-apk-arm64.sh +++ b/pkg/apk/docker-build-apk-arm64.sh @@ -25,7 +25,7 @@ ROOT_DIR=$(git rev-parse --show-toplevel) IMAGE_NAME=${1:-apachepulsar/pulsar-build:alpine-3.16-arm64} docker run -v $ROOT_DIR:/pulsar-client-cpp \ - --env PLATFORM=arm64 \ + --env PLATFORM=aarch64 \ $IMAGE_NAME \ /pulsar-client-cpp/pkg/apk/build-apk.sh