Skip to content

Commit 9f0b6fb

Browse files
Use vcpkg to build alpine packages (#505)
1 parent 69b86aa commit 9f0b6fb

File tree

5 files changed

+28
-105
lines changed

5 files changed

+28
-105
lines changed

.github/workflows/ci-build-binary-artifacts.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,16 +93,16 @@ jobs:
9393
matrix:
9494
include:
9595
- name: 'Windows x64'
96-
os: windows-2019
96+
os: windows-2022
9797
triplet: x64-windows-static
9898
suffix: 'windows-win64'
99-
generator: 'Visual Studio 16 2019'
99+
generator: 'Visual Studio 17 2022'
100100
arch: '-A x64'
101101
- name: 'Windows x86'
102-
os: windows-2019
102+
os: windows-2022
103103
triplet: x86-windows-static
104104
suffix: 'windows-win32'
105-
generator: 'Visual Studio 16 2019'
105+
generator: 'Visual Studio 17 2022'
106106
arch: '-A Win32'
107107

108108
steps:

pkg/apk/APKBUILD

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# under the License.
1818
#
1919

20-
# Maintainer: "Apache Pulsar <[email protected]>"
20+
# Maintainer: Apache Pulsar <[email protected]>
2121

2222
pkgname="apache-pulsar-client"
2323
pkgver="$VERSION"
@@ -38,19 +38,23 @@ build() {
3838
if [ "$CBUILD" != "$CHOST" ]; then
3939
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
4040
fi
41-
cmake \
42-
-DCMAKE_INSTALL_PREFIX=/usr \
43-
-DCMAKE_INSTALL_LIBDIR=lib \
44-
-DBUILD_SHARED_LIBS=True \
45-
-DCMAKE_BUILD_TYPE=Release \
46-
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
47-
-DCMAKE_C_FLAGS="$CFLAGS" \
48-
-DBUILD_TESTS=OFF \
49-
-DLINK_STATIC=ON \
50-
${CMAKE_CROSSOPTS} ${ROOT_DIR}
51-
make -j6
41+
git clone https://github.com/microsoft/vcpkg.git
42+
mv vcpkg $ROOT_DIR/
43+
export VCPKG_FORCE_SYSTEM_BINARIES=1
44+
set +e
45+
cmake -B build -DINTEGRATE_VCPKG=ON -DCMAKE_BUILD_TYPE=Release \
46+
-DCMAKE_MAKE_PROGRAM=make \
47+
-DCMAKE_INSTALL_PREFIX="$pkgdir" \
48+
-DBUILD_TESTS=OFF -DBUILD_DYNAMIC_LIB=ON -DBUILD_STATIC_LIB=ON \
49+
$ROOT_DIR
50+
if [[ $? -ne 0 ]]; then
51+
cat $ROOT_DIR/vcpkg/buildtrees/detect_compiler/*.log
52+
exit 1
53+
fi
54+
set -e
55+
cmake --build build -j8
5256
}
5357

5458
package() {
55-
make DESTDIR="$pkgdir" install
59+
cmake --build build --target install
5660
}

pkg/apk/Dockerfile

Lines changed: 5 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# under the License.
1818
#
1919

20-
FROM alpine:3.12
20+
FROM alpine:3.19
2121

2222
ARG PLATFORM
2323

@@ -31,91 +31,10 @@ RUN apk add \
3131
g++ \
3232
make \
3333
cmake \
34-
python3 \
35-
py3-pip \
3634
perl \
3735
git \
36+
ninja \
37+
zip \
38+
unzip \
39+
openssl-dev \
3840
sudo
39-
40-
RUN pip3 install pyyaml
41-
42-
ADD .build/dependencies.yaml /
43-
ADD .build/dep-version.py /usr/local/bin
44-
45-
# Download and compile boost
46-
RUN BOOST_VERSION=$(dep-version.py boost) && \
47-
curl -O -L https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION}.tar.gz && \
48-
tar zxf boost-${BOOST_VERSION}.tar.gz && \
49-
cd boost-${BOOST_VERSION} && \
50-
./bootstrap.sh --with-libraries=regex && \
51-
./b2 -d0 address-model=64 cxxflags=-fPIC link=static threading=multi variant=release install && \
52-
rm -rf /boost-${BOOST_VERSION}.tar.gz /boost-${BOOST_VERSION}
53-
54-
# Download and compile protobuf
55-
RUN PROTOBUF_VERSION=$(dep-version.py protobuf) && \
56-
curl -O -L https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protobuf-cpp-${PROTOBUF_VERSION}.tar.gz && \
57-
tar xfz protobuf-cpp-${PROTOBUF_VERSION}.tar.gz && \
58-
cd protobuf-${PROTOBUF_VERSION}/ && \
59-
CXXFLAGS=-fPIC ./configure && \
60-
make -j8 && make install && \
61-
rm -rf /protobuf-cpp-${PROTOBUF_VERSION}.tar.gz /protobuf-${PROTOBUF_VERSION}
62-
63-
# ZLib
64-
RUN ZLIB_VERSION=$(dep-version.py zlib) && \
65-
curl -O -L https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.tar.gz && \
66-
tar xfz v${ZLIB_VERSION}.tar.gz && \
67-
cd zlib-${ZLIB_VERSION} && \
68-
CFLAGS="-fPIC -O3" ./configure && \
69-
make -j8 && make install && \
70-
rm -rf /v${ZLIB_VERSION}.tar.gz /zlib-${ZLIB_VERSION}
71-
72-
# Zstandard
73-
RUN ZSTD_VERSION=$(dep-version.py zstd) && \
74-
curl -O -L https://github.com/facebook/zstd/releases/download/v${ZSTD_VERSION}/zstd-${ZSTD_VERSION}.tar.gz && \
75-
tar xfz zstd-${ZSTD_VERSION}.tar.gz && \
76-
cd zstd-${ZSTD_VERSION} && \
77-
CFLAGS="-fPIC -O3" make -j8 && \
78-
make install && \
79-
rm -rf /zstd-${ZSTD_VERSION} /zstd-${ZSTD_VERSION}.tar.gz
80-
81-
# Snappy
82-
RUN SNAPPY_VERSION=$(dep-version.py snappy) && \
83-
curl -O -L https://github.com/google/snappy/archive/refs/tags/${SNAPPY_VERSION}.tar.gz && \
84-
tar xfz ${SNAPPY_VERSION}.tar.gz && \
85-
cd snappy-${SNAPPY_VERSION} && \
86-
CXXFLAGS="-fPIC -O3" cmake . -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF && \
87-
make -j8 && make install && \
88-
rm -rf /snappy-${SNAPPY_VERSION} /${SNAPPY_VERSION}.tar.gz
89-
90-
# Roaring
91-
RUN ROARING_VERSION=$(dep-version.py roaring) && \
92-
curl -O -L https://github.com/RoaringBitmap/CRoaring/archive/refs/tags/v${ROARING_VERSION}.tar.gz && \
93-
tar xfz v${ROARING_VERSION}.tar.gz && \
94-
cd CRoaring-${ROARING_VERSION} && \
95-
mkdir build && cd build && CXXFLAGS="-fPIC -O3" cmake .. && \
96-
make -j8 && make install && \
97-
rm -rf /v${ROARING_VERSION}.tar.gz /CRoaring-${ROARING_VERSION}
98-
99-
RUN OPENSSL_VERSION=$(dep-version.py openssl) && \
100-
OPENSSL_VERSION_UNDERSCORE=$(echo $OPENSSL_VERSION | sed 's/\./_/g') && \
101-
curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz && \
102-
tar xfz OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz && \
103-
cd openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}/ && \
104-
./Configure -fPIC --prefix=/usr/local/ssl/ linux-${PLATFORM} && \
105-
make -j8 && make install && \
106-
rm -rf /OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz /openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}
107-
108-
ENV LD_LIBRARY_PATH /usr/local/ssl/lib/:
109-
ENV OPENSSL_ROOT_DIR /usr/local/ssl/
110-
111-
# LibCurl
112-
RUN CURL_VERSION=$(dep-version.py curl) && \
113-
CURL_VERSION_UNDERSCORE=$(echo $CURL_VERSION | sed 's/\./_/g') && \
114-
curl -O -L https://github.com/curl/curl/releases/download/curl-${CURL_VERSION_UNDERSCORE}/curl-${CURL_VERSION}.tar.gz && \
115-
tar xfz curl-${CURL_VERSION}.tar.gz && \
116-
cd curl-${CURL_VERSION} && \
117-
CFLAGS=-fPIC ./configure --with-ssl=/usr/local/ssl/ --without-zstd --without-libpsl && \
118-
make -j8 && make install && \
119-
rm -rf /curl-${CURL_VERSION}.tar.gz /curl-${CURL_VERSION}
120-
121-

pkg/apk/build-apk.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export VERSION=`echo $POM_VERSION | sed -E 's/\-[a-zA-Z]+//'`
3636

3737
echo "VERSION: $VERSION"
3838

39-
abuild-keygen -a -i -n
39+
sudo abuild-keygen -a -i -n
4040
abuild -F -c -r
4141

4242
cp -r /root/packages/pkg ./build

pkg/apk/docker-build-apk-arm64.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ ROOT_DIR=$(git rev-parse --show-toplevel)
2525
IMAGE_NAME=${1:-apachepulsar/pulsar-build:alpine-3.16-arm64}
2626

2727
docker run -v $ROOT_DIR:/pulsar-client-cpp \
28-
--env PLATFORM=arm64 \
28+
--env PLATFORM=aarch64 \
2929
$IMAGE_NAME \
3030
/pulsar-client-cpp/pkg/apk/build-apk.sh
3131

0 commit comments

Comments
 (0)