This is an automated email from the ASF dual-hosted git repository.

mmerli 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 778fcba  Build images with deps versions (#19)
778fcba is described below

commit 778fcba8a0a875a71826af72627fe626cd08a20b
Author: Matteo Merli <[email protected]>
AuthorDate: Fri Oct 7 10:37:33 2022 -0700

    Build images with deps versions (#19)
    
    * Fixed building Alpine Linux APK packaged for x86_64 and arm64
    
    * Removed job depedency
    
    * Fixed permissions
    
    * Fixed directory ownership
    
    * Fixed building APK as root
    
    * Use qemu to build arm64 package
    
    * fixed copying the APK package to artifacts
    
    * Build images with fixed dependencies
    
    * Apply suggestions from code review
    
    Co-authored-by: Yunze Xu <[email protected]>
    
    * Fixed docker tag names
    
    * Added load: true
    
    * Fixed overriding image name
    
    Co-authored-by: Yunze Xu <[email protected]>
---
 .github/workflows/ci-build-binary-artifacts.yaml   | 136 ++++++++++++++++++++-
 .github/workflows/ci-pr-validation.yaml            |  86 +++++++++----
 .../copy-deps-versionfile.sh                       |  12 +-
 .../dep-version.py                                 |  13 +-
 pkg/apk/docker-build-apk.sh => dependencies.yaml   |  18 ++-
 pkg/apk/.gitignore                                 |   6 +-
 pkg/apk/APKBUILD                                   |   4 +-
 pkg/apk/Dockerfile                                 | 112 +++++++++++++++++
 pkg/apk/build-apk.sh                               |  11 +-
 pkg/{rpm => apk}/create-images.sh                  |   8 +-
 .../docker-build-apk-arm64.sh}                     |   8 +-
 .../docker-build-apk-x86_64.sh}                    |   9 +-
 pkg/deb/.gitignore                                 |   1 +
 pkg/deb/Dockerfile                                 | 114 ++++++++++-------
 pkg/deb/create-images.sh                           |   2 +
 pkg/deb/docker-build-deb-arm64.sh                  |   3 +-
 pkg/deb/docker-build-deb-x86_64.sh                 |   3 +-
 pkg/rpm/.gitignore                                 |   3 +-
 pkg/rpm/Dockerfile                                 | 107 +++++++++-------
 pkg/rpm/create-images.sh                           |   2 +
 pkg/rpm/docker-build-rpm-arm64.sh                  |   4 +-
 pkg/rpm/docker-build-rpm-x86_64.sh                 |   4 +-
 22 files changed, 483 insertions(+), 183 deletions(-)

diff --git a/.github/workflows/ci-build-binary-artifacts.yaml 
b/.github/workflows/ci-build-binary-artifacts.yaml
index 61b1fe4..dd48231 100644
--- a/.github/workflows/ci-build-binary-artifacts.yaml
+++ b/.github/workflows/ci-build-binary-artifacts.yaml
@@ -20,8 +20,6 @@
 name: CI - Build binary artifacts
 on:
   push:
-    branches:
-      - '*'
     tags:
       - '*'
 
@@ -43,8 +41,21 @@ jobs:
       - name: Package Pulsar source
         run: build-support/generate-source-archive.sh
 
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/deb
+          load: true
+          tags: build-deb-x86_64:latest
+          build-args: PLATFORM=x86_64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
       - name: Build Debian packages
-        run: pkg/deb/docker-build-deb-x86_64.sh
+        run: pkg/deb/docker-build-deb-x86_64.sh build-deb-x86_64:latest
 
       - name: Upload artifacts
         uses: actions/upload-artifact@v3
@@ -67,8 +78,22 @@ jobs:
       - name: Package Pulsar source
         run: build-support/generate-source-archive.sh
 
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/deb
+          load: true
+          tags: build-deb-arm64:latest
+          build-args: PLATFORM=aarch64
+          platforms: linux/arm64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
       - name: Build Debian packages
-        run: pkg/deb/docker-build-deb-arm64.sh
+        run: pkg/deb/docker-build-deb-arm64.sh build-deb-arm64:latest
 
       - name: Upload artifacts
         uses: actions/upload-artifact@v3
@@ -88,8 +113,21 @@ jobs:
       - name: Package Pulsar source
         run: build-support/generate-source-archive.sh
 
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/rpm
+          load: true
+          tags: build-rpm-x86_64:latest
+          build-args: PLATFORM=x86_64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
       - name: Build RPM packages
-        run: pkg/rpm/docker-build-rpm-x86_64.sh
+        run: pkg/rpm/docker-build-rpm-x86_64.sh build-rpm-x86_64:latest
 
       - name: Upload artifacts
         uses: actions/upload-artifact@v3
@@ -112,11 +150,97 @@ jobs:
       - name: Package Pulsar source
         run: build-support/generate-source-archive.sh
 
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/rpm
+          load: true
+          tags: build-rpm-arm64:latest
+          build-args: PLATFORM=aarch64
+          platforms: linux/arm64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
       - name: Build RPM packages
-        run: pkg/rpm/docker-build-rpm-arm64.sh
+        run: pkg/rpm/docker-build-rpm-arm64.sh build-rpm-arm64:latest
 
       - name: Upload artifacts
         uses: actions/upload-artifact@v3
         with:
           name: rpm-arm64
           path: pkg/rpm/RPMS
+
+  apk-packaging-x86_64:
+    name: Build Alpine Linux APK Package - x86_64
+    runs-on: ubuntu-20.04
+    timeout-minutes: 120
+
+    steps:
+      - name: checkout
+        uses: actions/checkout@v2
+
+      - name: Package Pulsar source
+        run: build-support/generate-source-archive.sh
+
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/apk
+          load: true
+          tags: build-apk-x86_64:latest
+          build-args: PLATFORM=x86_64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
+      - name: Build APK packages
+        run: pkg/apk/docker-build-apk-x86_64.sh build-apk-x86_64:latest
+
+      - name: Upload artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: apk-x86_64
+          path: pkg/apk/build/x86_64
+
+  apk-packaging-arm64:
+    name: Build Alpine Linux APK Package - arm64
+    runs-on: ubuntu-20.04
+    timeout-minutes: 120
+
+    steps:
+      - name: checkout
+        uses: actions/checkout@v2
+
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v1
+
+      - name: Package Pulsar source
+        run: build-support/generate-source-archive.sh
+
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/apk
+          load: true
+          tags: build-apk-arm64:latest
+          build-args: PLATFORM=aarch64
+          platforms: linux/arm64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
+      - name: Build APK packages
+        run: pkg/apk/docker-build-apk-arm64.sh build-apk-arm64:latest
+
+      - name: Upload artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: apk-arm64
+          path: pkg/apk/build/aarch64
diff --git a/.github/workflows/ci-pr-validation.yaml 
b/.github/workflows/ci-pr-validation.yaml
index 0c2e4ef..eafa65e 100644
--- a/.github/workflows/ci-pr-validation.yaml
+++ b/.github/workflows/ci-pr-validation.yaml
@@ -22,9 +22,6 @@ on:
   pull_request:
     branches:
       - main
-  push:
-    branches:
-      - main
 
 concurrency:
   group: ${{ github.workflow }}-${{ github.ref }}
@@ -209,10 +206,22 @@ jobs:
       - name: Package Pulsar source
         run: build-support/generate-source-archive.sh
 
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/deb
+          load: true
+          tags: build-deb-x86_64:latest
+          build-args: PLATFORM=x86_64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
       - name: Build Debian packages
-        run: |
-          echo "Build Debian packages"
-          BUILD_IMAGE=1 pkg/deb/docker-build-deb-x86_64.sh
+        run: pkg/deb/docker-build-deb-x86_64.sh build-deb-x86_64:latest
+
 
   rpm-packaging:
     name: Build RPM Package
@@ -227,25 +236,48 @@ jobs:
       - name: Package Pulsar source
         run: build-support/generate-source-archive.sh
 
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/rpm
+          load: true
+          tags: build-rpm-x86_64:latest
+          build-args: PLATFORM=x86_64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
       - name: Build RPM packages
-        run: |
-          echo "Build RPM packages"
-          BUILD_IMAGE=1 pkg/rpm/docker-build-rpm-x86_64.sh
-
-#  apk-packaging:
-#    name: Build Alpine Linux APK Package
-#    runs-on: ubuntu-20.04
-#    needs: unit-tests
-#    timeout-minutes: 120
-#
-#    steps:
-#      - name: checkout
-#        uses: actions/checkout@v2
-#
-#      - name: Package Pulsar source
-#        run: build-support/generate-source-archive.sh
-#
-#      - name: Build APK packages
-#        run: |
-#          echo "Build APK packages"
-#          BUILD_IMAGE=1 pkg/apk/docker-build-apk.sh
\ No newline at end of file
+        run: pkg/rpm/docker-build-rpm-x86_64.sh build-rpm-x86_64:latest
+
+
+  apk-packaging:
+    name: Build Alpine Linux APK Package
+    runs-on: ubuntu-20.04
+    needs: unit-tests
+    timeout-minutes: 120
+
+    steps:
+      - name: checkout
+        uses: actions/checkout@v2
+
+      - name: Package Pulsar source
+        run: build-support/generate-source-archive.sh
+
+      - uses: docker/setup-buildx-action@v2
+      - run: build-support/copy-deps-versionfile.sh
+
+      - name: Build dependencies Docker image
+        uses: docker/build-push-action@v3
+        with:
+          context: ./pkg/apk
+          load: true
+          tags: build-apk-x86_64:latest
+          build-args: PLATFORM=x86_64
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
+
+      - name: Build APK packages
+        run: pkg/apk/docker-build-apk-x86_64.sh build-apk-x86_64:latest
\ No newline at end of file
diff --git a/pkg/apk/docker-build-apk.sh 
b/build-support/copy-deps-versionfile.sh
similarity index 82%
copy from pkg/apk/docker-build-apk.sh
copy to build-support/copy-deps-versionfile.sh
index c400c7d..8ecc8c0 100755
--- a/pkg/apk/docker-build-apk.sh
+++ b/build-support/copy-deps-versionfile.sh
@@ -18,12 +18,12 @@
 # under the License.
 #
 
-set -e
+set -e -x
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
-IMAGE=apachepulsar/pulsar-build:alpine-3.11
 
-docker pull $IMAGE
-
-docker run -i -v $ROOT_DIR:/pulsar-client-cpp $IMAGE \
-        /pulsar-client-cpp/pkg/apk/build-apk.sh
+for dir in apk deb rpm; do
+  mkdir -p pkg/$dir/.build
+  cp $ROOT_DIR/dependencies.yaml pkg/$dir/.build
+  cp $ROOT_DIR/build-support/dep-version.py pkg/$dir/.build
+done
diff --git a/pkg/apk/docker-build-apk.sh b/build-support/dep-version.py
similarity index 76%
copy from pkg/apk/docker-build-apk.sh
copy to build-support/dep-version.py
index c400c7d..2421d42 100755
--- a/pkg/apk/docker-build-apk.sh
+++ b/build-support/dep-version.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env python3
 #
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -18,12 +18,7 @@
 # under the License.
 #
 
-set -e
+import yaml, sys
 
-ROOT_DIR=$(git rev-parse --show-toplevel)
-IMAGE=apachepulsar/pulsar-build:alpine-3.11
-
-docker pull $IMAGE
-
-docker run -i -v $ROOT_DIR:/pulsar-client-cpp $IMAGE \
-        /pulsar-client-cpp/pkg/apk/build-apk.sh
+deps = yaml.safe_load(open('dependencies.yaml'))
+print(deps[sys.argv[1]])
diff --git a/pkg/apk/docker-build-apk.sh b/dependencies.yaml
old mode 100755
new mode 100644
similarity index 76%
rename from pkg/apk/docker-build-apk.sh
rename to dependencies.yaml
index c400c7d..bc2c531
--- a/pkg/apk/docker-build-apk.sh
+++ b/dependencies.yaml
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 #
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -18,12 +17,11 @@
 # under the License.
 #
 
-set -e
-
-ROOT_DIR=$(git rev-parse --show-toplevel)
-IMAGE=apachepulsar/pulsar-build:alpine-3.11
-
-docker pull $IMAGE
-
-docker run -i -v $ROOT_DIR:/pulsar-client-cpp $IMAGE \
-        /pulsar-client-cpp/pkg/apk/build-apk.sh
+boost : 1.80.0
+cmake: 3.24.2
+protobuf: 3.20.0
+zlib: 1.2.12
+zstd: 1.5.2
+snappy: 1.1.9
+openssl: 1.1.1q
+curl: 7.85.0
diff --git a/pkg/apk/.gitignore b/pkg/apk/.gitignore
index 842209a..c3a14d5 100644
--- a/pkg/apk/.gitignore
+++ b/pkg/apk/.gitignore
@@ -1,5 +1,3 @@
 pkg
-perf
-examples
-lib
-src
+build
+.build
\ No newline at end of file
diff --git a/pkg/apk/APKBUILD b/pkg/apk/APKBUILD
index e3ae244..3c3cdc7 100644
--- a/pkg/apk/APKBUILD
+++ b/pkg/apk/APKBUILD
@@ -27,7 +27,7 @@ url="https://pulsar.apache.org";
 arch="all"
 license="https://www.apache.org/licenses/LICENSE-2.0.txt";
 depends=""
-makedepends="cmake"
+makedepends=""
 install=""
 subpackages="$pkgname-dev"
 source=""
@@ -48,7 +48,7 @@ build() {
                -DBUILD_TESTS=OFF \
                 -DLINK_STATIC=ON  \
                ${CMAKE_CROSSOPTS} ${ROOT_DIR}
-       make
+       make -j6
 }
 
 package() {
diff --git a/pkg/apk/Dockerfile b/pkg/apk/Dockerfile
new file mode 100644
index 0000000..2a3d3a0
--- /dev/null
+++ b/pkg/apk/Dockerfile
@@ -0,0 +1,112 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+FROM alpine:3.16
+
+ARG PLATFORM
+
+# perl is required to install OpenSSL
+RUN apk add \
+      build-base \
+      linux-headers \
+      abuild \
+      bash \
+      curl \
+      g++ \
+      make \
+      cmake \
+      python3 \
+      py3-pip \
+      perl \
+      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) && \
+    BOOST_VERSION_UNDESRSCORE=$(echo $BOOST_VERSION | sed 's/\./_/g') && \
+    curl -O -L 
https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz
 && \
+    tar xfz boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz && \
+    cd boost_${BOOST_VERSION_UNDESRSCORE} && \
+    ./bootstrap.sh --with-libraries=regex && \
+    ./b2 address-model=64 cxxflags=-fPIC link=static threading=multi 
variant=release install && \
+    rm -rf /boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz 
/boost_${BOOST_VERSION_UNDESRSCORE}
+
+# 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
+
+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 && \
+    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 b31a131..66cb763 100755
--- a/pkg/apk/build-apk.sh
+++ b/pkg/apk/build-apk.sh
@@ -37,13 +37,6 @@ export VERSION=`echo $POM_VERSION | sed -E 's/\-[a-zA-Z]+//'`
 echo "VERSION: $VERSION"
 
 abuild-keygen -a -i -n
-chmod 755 ~
-chmod 755 ~/.abuild
-chmod 644 ~/.abuild/*
+abuild -F -c -r
 
-mkdir -p /root/packages
-chmod 777 /root/packages
-
-sudo -E -u pulsar abuild -r
-
-mv /root/packages/pkg .
+cp -r /root/packages/pkg ./build
diff --git a/pkg/rpm/create-images.sh b/pkg/apk/create-images.sh
similarity index 85%
copy from pkg/rpm/create-images.sh
copy to pkg/apk/create-images.sh
index 9bfb3ee..eb8a89f 100755
--- a/pkg/rpm/create-images.sh
+++ b/pkg/apk/create-images.sh
@@ -21,12 +21,14 @@
 set -e -x
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
-cd $ROOT_DIR/pkg/rpm
+cd $ROOT_DIR/pkg/apk
+
+$ROOT_DIR/build-support/copy-deps-versionfile.sh
 
 # ARM
-IMAGE=apachepulsar/pulsar-build:centos-7-2.11-arm64
+IMAGE=apachepulsar/pulsar-build:alpine-3.16-arm64
 docker build --platform arm64 -t $IMAGE . --build-arg PLATFORM=aarch64
 
 # X86_64
-IMAGE=apachepulsar/pulsar-build:centos-7-2.11-x86_64
+IMAGE=apachepulsar/pulsar-build:alpine-3.16-x86_64
 docker build --platform x86_64 -t $IMAGE . --build-arg PLATFORM=x86_64
diff --git a/pkg/deb/docker-build-deb-arm64.sh 
b/pkg/apk/docker-build-apk-arm64.sh
similarity index 87%
copy from pkg/deb/docker-build-deb-arm64.sh
copy to pkg/apk/docker-build-apk-arm64.sh
index 5a814b2..7563152 100755
--- a/pkg/deb/docker-build-deb-arm64.sh
+++ b/pkg/apk/docker-build-apk-arm64.sh
@@ -18,14 +18,14 @@
 # under the License.
 #
 
-set -ex
+set -e -x
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
 
-IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-arm64
+IMAGE_NAME=${1:-apachepulsar/pulsar-build:alpine-3.16-arm64}
 
-docker pull $IMAGE_NAME
 docker run -v $ROOT_DIR:/pulsar-client-cpp \
         --env PLATFORM=arm64 \
         $IMAGE_NAME \
-        /pulsar-client-cpp/pkg/deb/build-deb.sh
+        /pulsar-client-cpp/pkg/apk/build-apk.sh
+
diff --git a/pkg/rpm/docker-build-rpm-x86_64.sh 
b/pkg/apk/docker-build-apk-x86_64.sh
similarity index 87%
copy from pkg/rpm/docker-build-rpm-x86_64.sh
copy to pkg/apk/docker-build-apk-x86_64.sh
index 69707c1..985d87d 100755
--- a/pkg/rpm/docker-build-rpm-x86_64.sh
+++ b/pkg/apk/docker-build-apk-x86_64.sh
@@ -18,15 +18,14 @@
 # under the License.
 #
 
-set -ex
+set -e -x
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
 
-IMAGE_NAME=apachepulsar/pulsar-build:centos-7-2.11-x86_64
-
-docker pull $IMAGE_NAME
+IMAGE_NAME=${1:-apachepulsar/pulsar-build:alpine-3.16-x86_64}
 
 docker run -v $ROOT_DIR:/pulsar-client-cpp \
         --env PLATFORM=x86_64 \
         $IMAGE_NAME \
-        /pulsar-client-cpp/pkg/rpm/build-rpm.sh
+        /pulsar-client-cpp/pkg/apk/build-apk.sh
+
diff --git a/pkg/deb/.gitignore b/pkg/deb/.gitignore
index 89620f3..a71cdd7 100644
--- a/pkg/deb/.gitignore
+++ b/pkg/deb/.gitignore
@@ -1 +1,2 @@
 BUILD
+.build
\ No newline at end of file
diff --git a/pkg/deb/Dockerfile b/pkg/deb/Dockerfile
index 839f05a..8229762 100644
--- a/pkg/deb/Dockerfile
+++ b/pkg/deb/Dockerfile
@@ -25,69 +25,93 @@ ARG PLATFORM
 
 # perl is required to install OpenSSL
 RUN apt-get update -y && \
-     apt-get install -y curl g++ make perl dpkg-dev python3
+     apt-get install -y \
+        curl \
+        g++ \
+        make \
+        perl \
+        dpkg-dev \
+        python3 \
+        python3-pip
+
+RUN pip3 install pyyaml
+
+ADD .build/dependencies.yaml /
+ADD .build/dep-version.py /usr/local/bin
 
 # Download and compile boost
-RUN curl -O -L 
https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz
 && \
-    tar xfz boost_1_79_0.tar.gz && \
-    cd boost_1_79_0 && \
-    ./bootstrap.sh && \
-    ./b2 address-model=64 cxxflags=-fPIC link=static threading=multi 
variant=release install && \
-    rm -rf /boost_1_79_0.tar.gz /boost_1_79_0
-
-RUN curl -O -L 
https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-${PLATFORM}.tar.gz
 && \
-    tar xfz cmake-3.24.0-linux-${PLATFORM}.tar.gz && \
-    cp cmake-3.24.0-linux-${PLATFORM}/bin/* /usr/bin/ && \
-    cp -r cmake-3.24.0-linux-${PLATFORM}/share/cmake-3.24 /usr/share/ && \
-    rm -rf cmake-3.24.0-linux-${PLATFORM} cmake-3.24.0-linux-${PLATFORM}.tar.gz
-
-# Download and copile protoubf
-RUN curl -O -L  
https://github.com/google/protobuf/releases/download/v3.20.0/protobuf-cpp-3.20.0.tar.gz
 && \
-    tar xfz protobuf-cpp-3.20.0.tar.gz && \
-    cd protobuf-3.20.0/ && \
+RUN BOOST_VERSION=$(dep-version.py boost) && \
+    BOOST_VERSION_UNDESRSCORE=$(echo $BOOST_VERSION | sed 's/\./_/g') && \
+    curl -O -L 
https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz
 && \
+    tar xfz boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz && \
+    cd boost_${BOOST_VERSION_UNDESRSCORE} && \
+    ./bootstrap.sh --with-libraries=regex && \
+    ./b2 -d0 address-model=64 cxxflags=-fPIC link=static threading=multi 
variant=release install && \
+    rm -rf /boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz 
/boost_${BOOST_VERSION_UNDESRSCORE}
+
+RUN CMAKE_VERSION=$(dep-version.py cmake) && \
+    curl -O -L 
https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-${PLATFORM}.tar.gz
 && \
+    tar xfz cmake-${CMAKE_VERSION}-linux-${PLATFORM}.tar.gz && \
+    cp cmake-${CMAKE_VERSION}-linux-${PLATFORM}/bin/* /usr/bin/ && \
+    cp -r cmake-${CMAKE_VERSION}-linux-${PLATFORM}/share/cmake-* /usr/share/ 
&& \
+    rm -rf cmake-${CMAKE_VERSION}-linux-${PLATFORM} 
cmake-${CMAKE_VERSION}-linux-${PLATFORM}.tar.gz
+
+# 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 && ldconfig && \
-    rm -rf /protobuf-cpp-3.20.0.tar.gz /protobuf-3.20.0
+    rm -rf /protobuf-cpp-${PROTOBUF_VERSION}.tar.gz 
/protobuf-${PROTOBUF_VERSION}
 
 # ZLib
-RUN curl -O -L https://github.com/madler/zlib/archive/v1.2.12.tar.gz && \
-    tar xfz v1.2.12.tar.gz && \
-    cd zlib-1.2.12 && \
+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 && make install && \
-    rm -rf /v1.2.12.tar.gz /zlib-1.2.12
+    make -j8 && make install && \
+    rm -rf /v${ZLIB_VERSION}.tar.gz /zlib-${ZLIB_VERSION}
 
 # Zstandard
-RUN curl -O -L 
https://github.com/facebook/zstd/releases/download/v1.3.7/zstd-1.3.7.tar.gz && \
-    tar xfz zstd-1.3.7.tar.gz && \
-    cd zstd-1.3.7 && \
+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-1.3.7 /zstd-1.3.7.tar.gz
+    rm -rf /zstd-${ZSTD_VERSION} /zstd-${ZSTD_VERSION}.tar.gz
 
 # Snappy
-RUN curl -O -L 
https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz && 
\
-    tar xfz snappy-1.1.3.tar.gz && \
-    cd snappy-1.1.3 && \
-    CXXFLAGS="-fPIC -O3" ./configure && \
-    make && make install && \
-    rm -rf /snappy-1.1.3 /snappy-1.1.3.tar.gz
-
-RUN curl -O -L 
https://github.com/openssl/openssl/archive/OpenSSL_1_1_1n.tar.gz && \
-    tar xfz OpenSSL_1_1_1n.tar.gz && \
-    cd openssl-OpenSSL_1_1_1n/ && \
+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
+
+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_1_1_1n.tar.gz /openssl-OpenSSL_1_1_1n
+    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 -O -L  
https://github.com/curl/curl/releases/download/curl-7_61_0/curl-7.61.0.tar.gz 
&& \
-    tar xfz curl-7.61.0.tar.gz && \
-    cd curl-7.61.0 && \
-    CFLAGS=-fPIC ./configure --with-ssl=/usr/local/ssl/ && \
+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 && \
     make -j8 && make install && \
-    rm -rf /curl-7.61.0.tar.gz /curl-7.61.0
+    rm -rf /curl-${CURL_VERSION}.tar.gz /curl-${CURL_VERSION}
+
 
-ENV OPENSSL_ROOT_DIR /usr/local/ssl/
diff --git a/pkg/deb/create-images.sh b/pkg/deb/create-images.sh
index ad85357..14b64b5 100755
--- a/pkg/deb/create-images.sh
+++ b/pkg/deb/create-images.sh
@@ -23,6 +23,8 @@ set -e -x
 ROOT_DIR=$(git rev-parse --show-toplevel)
 cd $ROOT_DIR/pkg/deb
 
+$ROOT_DIR/build-support/copy-deps-versionfile.sh
+
 # ARM
 IMAGE=apachepulsar/pulsar-build:debian-9-2.11-arm64
 docker build --platform arm64 -t $IMAGE . --build-arg PLATFORM=aarch64
diff --git a/pkg/deb/docker-build-deb-arm64.sh 
b/pkg/deb/docker-build-deb-arm64.sh
index 5a814b2..f8c397c 100755
--- a/pkg/deb/docker-build-deb-arm64.sh
+++ b/pkg/deb/docker-build-deb-arm64.sh
@@ -22,9 +22,8 @@ set -ex
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
 
-IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-arm64
+IMAGE_NAME=${1:-apachepulsar/pulsar-build:debian-9-2.11-arm64}
 
-docker pull $IMAGE_NAME
 docker run -v $ROOT_DIR:/pulsar-client-cpp \
         --env PLATFORM=arm64 \
         $IMAGE_NAME \
diff --git a/pkg/deb/docker-build-deb-x86_64.sh 
b/pkg/deb/docker-build-deb-x86_64.sh
index 5a958a6..fecf6a1 100755
--- a/pkg/deb/docker-build-deb-x86_64.sh
+++ b/pkg/deb/docker-build-deb-x86_64.sh
@@ -22,9 +22,8 @@ set -ex
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
 
-IMAGE_NAME=apachepulsar/pulsar-build:debian-9-2.11-x86_64
+IMAGE_NAME=${1:-apachepulsar/pulsar-build:debian-9-2.11-x86_64}
 
-docker pull $IMAGE_NAME
 docker run -v $ROOT_DIR:/pulsar-client-cpp \
         --env PLATFORM=amd64 \
         $IMAGE_NAME \
diff --git a/pkg/rpm/.gitignore b/pkg/rpm/.gitignore
index b77cada..f825e31 100644
--- a/pkg/rpm/.gitignore
+++ b/pkg/rpm/.gitignore
@@ -2,4 +2,5 @@ BUILD
 BUILDROOT
 SOURCES
 RPMS
-SRPMS
\ No newline at end of file
+SRPMS
+.build
\ No newline at end of file
diff --git a/pkg/rpm/Dockerfile b/pkg/rpm/Dockerfile
index e4b809b..119ca9d 100644
--- a/pkg/rpm/Dockerfile
+++ b/pkg/rpm/Dockerfile
@@ -24,71 +24,94 @@ FROM centos:7
 ARG PLATFORM
 
 RUN yum update -y && \
-    yum install -y gcc-c++ make rpm-build which \
-                createrepo libstdc++-static python3
+    yum install -y \
+        gcc-c++ \
+        make \
+        rpm-build \
+        which \
+        createrepo \
+        libstdc++-static \
+        python3
+
+RUN pip3 install pyyaml
+
+ADD .build/dependencies.yaml /
+ADD .build/dep-version.py /usr/local/bin
 
 # Download and compile boost
 # GCC 4.8.2 implementation of std::regex is buggy, so we install boost::regex 
here
-RUN curl -O -L 
https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz
 && \
-    tar xfz boost_1_79_0.tar.gz && \
-    cd boost_1_79_0 && \
+RUN BOOST_VERSION=$(dep-version.py boost) && \
+    echo "BOOST VERSION: '${BOOST_VERSION}'" && \
+    BOOST_VERSION_UNDESRSCORE=$(echo $BOOST_VERSION | sed 's/\./_/g') && \
+    curl -O -L 
https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz
 && \
+    tar xfz boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz && \
+    cd boost_${BOOST_VERSION_UNDESRSCORE} && \
     ./bootstrap.sh --with-libraries=regex && \
     ./b2 address-model=64 cxxflags=-fPIC link=static threading=multi 
variant=release install && \
-    rm -rf /boost_1_79_0.tar.gz /boost_1_79_0
+    rm -rf /boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz 
/boost_${BOOST_VERSION_UNDESRSCORE}
 
-RUN curl -O -L 
https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-${PLATFORM}.tar.gz
 && \
-    tar xfz cmake-3.24.0-linux-${PLATFORM}.tar.gz && \
-    cp cmake-3.24.0-linux-${PLATFORM}/bin/* /usr/bin/ && \
-    cp -r cmake-3.24.0-linux-${PLATFORM}/share/cmake-3.24 /usr/share/ && \
-    rm -rf cmake-3.24.0-linux-${PLATFORM} cmake-3.24.0-linux-${PLATFORM}.tar.gz
+RUN CMAKE_VERSION=$(dep-version.py cmake) && \
+    curl -O -L 
https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-${PLATFORM}.tar.gz
 && \
+    tar xfz cmake-${CMAKE_VERSION}-linux-${PLATFORM}.tar.gz && \
+    cp cmake-${CMAKE_VERSION}-linux-${PLATFORM}/bin/* /usr/bin/ && \
+    cp -r cmake-${CMAKE_VERSION}-linux-${PLATFORM}/share/cmake-* /usr/share/ 
&& \
+    rm -rf cmake-${CMAKE_VERSION}-linux-${PLATFORM} 
cmake-${CMAKE_VERSION}-linux-${PLATFORM}.tar.gz
 
 # Download and copile protoubf
-RUN curl -O -L  
https://github.com/google/protobuf/releases/download/v3.20.0/protobuf-cpp-3.20.0.tar.gz
 && \
-    tar xfz protobuf-cpp-3.20.0.tar.gz && \
-    cd protobuf-3.20.0/ && \
+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 && ldconfig && \
-    rm -rf /protobuf-cpp-3.20.0.tar.gz /protobuf-3.20.0
+    rm -rf /protobuf-cpp-${PROTOBUF_VERSION}.tar.gz 
/protobuf-${PROTOBUF_VERSION}
 
 # ZLib
-RUN curl -O -L https://github.com/madler/zlib/archive/v1.2.12.tar.gz && \
-    tar xfz v1.2.12.tar.gz && \
-    cd zlib-1.2.12 && \
+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 && make install && \
-    rm -rf /v1.2.12.tar.gz /zlib-1.2.12
+    make -j8 && make install && \
+    rm -rf /v${ZLIB_VERSION}.tar.gz /zlib-${ZLIB_VERSION}
 
 # Zstandard
-RUN curl -O -L 
https://github.com/facebook/zstd/releases/download/v1.3.7/zstd-1.3.7.tar.gz && \
-    tar xfz zstd-1.3.7.tar.gz && \
-    cd zstd-1.3.7 && \
+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-1.3.7 /zstd-1.3.7.tar.gz
+    rm -rf /zstd-${ZSTD_VERSION} /zstd-${ZSTD_VERSION}.tar.gz
 
 # Snappy
-RUN curl -O -L 
https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz && 
\
-    tar xfz snappy-1.1.3.tar.gz && \
-    cd snappy-1.1.3 && \
-    CXXFLAGS="-fPIC -O3" ./configure && \
-    make && make install && \
-    rm -rf /snappy-1.1.3 /snappy-1.1.3.tar.gz
-
-RUN curl -O -L 
https://github.com/openssl/openssl/archive/OpenSSL_1_1_1n.tar.gz && \
-    tar xfz OpenSSL_1_1_1n.tar.gz && \
-    cd openssl-OpenSSL_1_1_1n/ && \
+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
+
+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_1_1_1n.tar.gz /openssl-OpenSSL_1_1_1n
+    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 -O -L  
https://github.com/curl/curl/releases/download/curl-7_61_0/curl-7.61.0.tar.gz 
&& \
-    tar xfz curl-7.61.0.tar.gz && \
-    cd curl-7.61.0 && \
-    CFLAGS=-fPIC ./configure --with-ssl=/usr/local/ssl/ && \
-    make && make install && \
-    rm -rf /curl-7.61.0.tar.gz /curl-7.61.0
+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 && \
+    make -j8 && make install && \
+    rm -rf /curl-${CURL_VERSION}.tar.gz /curl-${CURL_VERSION}
 
-ENV OPENSSL_ROOT_DIR /usr/local/ssl/
diff --git a/pkg/rpm/create-images.sh b/pkg/rpm/create-images.sh
index 9bfb3ee..0e57d35 100755
--- a/pkg/rpm/create-images.sh
+++ b/pkg/rpm/create-images.sh
@@ -23,6 +23,8 @@ set -e -x
 ROOT_DIR=$(git rev-parse --show-toplevel)
 cd $ROOT_DIR/pkg/rpm
 
+$ROOT_DIR/build-support/copy-deps-versionfile.sh
+
 # ARM
 IMAGE=apachepulsar/pulsar-build:centos-7-2.11-arm64
 docker build --platform arm64 -t $IMAGE . --build-arg PLATFORM=aarch64
diff --git a/pkg/rpm/docker-build-rpm-arm64.sh 
b/pkg/rpm/docker-build-rpm-arm64.sh
index 07d05d6..13ca8d5 100755
--- a/pkg/rpm/docker-build-rpm-arm64.sh
+++ b/pkg/rpm/docker-build-rpm-arm64.sh
@@ -22,9 +22,7 @@ set -ex
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
 
-IMAGE_NAME=apachepulsar/pulsar-build:centos-7-2.11-arm64
-
-docker pull $IMAGE_NAME
+IMAGE_NAME=${1:-apachepulsar/pulsar-build:centos-7-2.11-arm64}
 
 docker run -v $ROOT_DIR:/pulsar-client-cpp \
         --env PLATFORM=aarch64 \
diff --git a/pkg/rpm/docker-build-rpm-x86_64.sh 
b/pkg/rpm/docker-build-rpm-x86_64.sh
index 69707c1..c78dc7b 100755
--- a/pkg/rpm/docker-build-rpm-x86_64.sh
+++ b/pkg/rpm/docker-build-rpm-x86_64.sh
@@ -22,9 +22,7 @@ set -ex
 
 ROOT_DIR=$(git rev-parse --show-toplevel)
 
-IMAGE_NAME=apachepulsar/pulsar-build:centos-7-2.11-x86_64
-
-docker pull $IMAGE_NAME
+IMAGE_NAME=${1:-apachepulsar/pulsar-build:centos-7-2.11-x86_64}
 
 docker run -v $ROOT_DIR:/pulsar-client-cpp \
         --env PLATFORM=x86_64 \


Reply via email to