Skip to content

Commit d5b6790

Browse files
committed
Build wheels via vcpkg on manylinux2014
1 parent 064a753 commit d5b6790

File tree

2 files changed

+29
-73
lines changed

2 files changed

+29
-73
lines changed

pkg/build-wheel-inside-docker.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,33 @@ set -e -x
2222

2323
cd /pulsar-client-python
2424

25+
# Build cpp wheels
26+
if [[ $ARCH == "aarch64" ]]; then
27+
export VCPKG_FORCE_SYSTEM_BINARIES=1
28+
fi
29+
PULSAR_CPP_VERSION=$(dep-version.py pulsar-cpp)
30+
. /dep-url.sh
31+
download_dependency /dependencies.yaml pulsar-cpp
32+
cd apache-pulsar-client-cpp-${PULSAR_CPP_VERSION}
33+
34+
git clone https://github.com/microsoft/vcpkg.git
35+
cd vcpkg
36+
# The following dependencies are required to build vcpkg on arm64 Linux
37+
yum install -y curl zip unzip tar perl-IPC-Cmd
38+
git clone https://github.com/ninja-build/ninja.git
39+
cd ninja
40+
git checkout release
41+
/opt/python/cp312-cp312/bin/python configure.py --bootstrap
42+
mv ninja /usr/bin/
43+
cd ..
44+
./bootstrap-vcpkg.sh
45+
cd ..
46+
47+
cmake -B build -DINTEGRATE_VCPKG=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_DYNAMIC_LIB=ON -DBUILD_STATIC_LIB=ON
48+
cmake --build build -j8 --target install
49+
cd ..
50+
rm -rf apache-pulsar-client-cpp-$(PULSAR_CPP_VERSION)
51+
2552
PYBIND11_VERSION=$(./build-support/dep-version.py pybind11)
2653
curl -L -O https://github.com/pybind/pybind11/archive/refs/tags/v${PYBIND11_VERSION}.tar.gz
2754
tar zxf v${PYBIND11_VERSION}.tar.gz

pkg/manylinux2014/Dockerfile

Lines changed: 2 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -28,85 +28,14 @@ ENV PYTHON_VERSION=${PYTHON_VERSION}
2828
ENV PYTHON_SPEC=${PYTHON_SPEC}
2929

3030
ENV PATH="/opt/python/${PYTHON_SPEC}/bin:${PATH}"
31+
ENV ARCH=${ARCH}
3132

3233
ENV PYTHON_INCLUDE_DIR /opt/python/${PYTHON_SPEC}/include
3334
ENV PYTHON_LIBRARIES /opt/python/${PYTHON_SPEC}/lib/python${PYTHON_VERSION}
35+
ENV Python3_ROOT_DIR /opt/python/${PYTHON_SPEC}/
3436

3537
RUN pip3 install pyyaml setuptools
3638

3739
ADD .build/dependencies.yaml /
3840
ADD .build/dep-version.py /usr/local/bin
3941
ADD .build/dep-url.sh /
40-
41-
# Download and install boost
42-
RUN BOOST_VERSION=$(dep-version.py boost) && \
43-
BOOST_VERSION_UNDESRSCORE=$(echo $BOOST_VERSION | sed 's/\./_/g') && \
44-
. /dep-url.sh && download_dependency /dependencies.yaml boost && \
45-
cp -r boost_${BOOST_VERSION_UNDESRSCORE}/boost /usr/include/ && \
46-
rm -rf /boost_${BOOST_VERSION_UNDESRSCORE}.tar.gz /boost_${BOOST_VERSION_UNDESRSCORE}
47-
48-
RUN CMAKE_VERSION=$(dep-version.py cmake) && \
49-
. /dep-url.sh && ARCH=${ARCH} download_dependency /dependencies.yaml cmake && \
50-
cp cmake-${CMAKE_VERSION}-linux-${ARCH}/bin/* /usr/bin/ && \
51-
cp -r cmake-${CMAKE_VERSION}-linux-${ARCH}/share/cmake-* /usr/share/ && \
52-
rm -rf cmake-${CMAKE_VERSION}-linux-${ARCH} cmake-${CMAKE_VERSION}-linux-${ARCH}.tar.gz
53-
54-
# Download and compile protobuf
55-
RUN PROTOBUF_VERSION=$(dep-version.py protobuf) && \
56-
. /dep-url.sh && download_dependency /dependencies.yaml protobuf && \
57-
cd protobuf-${PROTOBUF_VERSION}/ && \
58-
CXXFLAGS=-fPIC ./configure && \
59-
make -j8 && make install && ldconfig && \
60-
rm -rf /protobuf-cpp-${PROTOBUF_VERSION}.tar.gz /protobuf-${PROTOBUF_VERSION}
61-
62-
# ZLib
63-
RUN ZLIB_VERSION=$(dep-version.py zlib) && \
64-
. /dep-url.sh && download_dependency /dependencies.yaml zlib && \
65-
cd zlib-${ZLIB_VERSION} && \
66-
CFLAGS="-fPIC -O3" ./configure && \
67-
make -j8 && make install && \
68-
rm -rf /v${ZLIB_VERSION}.tar.gz /zlib-${ZLIB_VERSION}
69-
70-
# Zstandard
71-
RUN ZSTD_VERSION=$(dep-version.py zstd) && \
72-
. /dep-url.sh && download_dependency /dependencies.yaml zstd && \
73-
cd zstd-${ZSTD_VERSION} && \
74-
CFLAGS="-fPIC -O3" make -j8 && \
75-
make install && \
76-
rm -rf /zstd-${ZSTD_VERSION} /zstd-${ZSTD_VERSION}.tar.gz
77-
78-
# Snappy
79-
RUN SNAPPY_VERSION=$(dep-version.py snappy) && \
80-
. /dep-url.sh && download_dependency /dependencies.yaml snappy && \
81-
cd snappy-${SNAPPY_VERSION} && \
82-
CXXFLAGS="-fPIC -O3" cmake . -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF && \
83-
make -j8 && make install && \
84-
rm -rf /snappy-${SNAPPY_VERSION} /${SNAPPY_VERSION}.tar.gz
85-
86-
RUN OPENSSL_VERSION=$(dep-version.py openssl) && \
87-
OPENSSL_VERSION_UNDERSCORE=$(echo $OPENSSL_VERSION | sed 's/\./_/g') && \
88-
. /dep-url.sh && download_dependency /dependencies.yaml openssl && \
89-
cd openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}/ && \
90-
./config -fPIC --prefix=/usr/local/ssl/ && \
91-
make -j8 && make install && \
92-
rm -rf /OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz /openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}
93-
94-
ENV LD_LIBRARY_PATH /usr/local/ssl/lib/:/usr/local/lib
95-
ENV OPENSSL_ROOT_DIR /usr/local/ssl/
96-
97-
# LibCurl
98-
RUN CURL_VERSION=$(dep-version.py curl) && \
99-
. /dep-url.sh && download_dependency /dependencies.yaml curl && \
100-
cd curl-${CURL_VERSION} && \
101-
CFLAGS=-fPIC ./configure --with-ssl=/usr/local/ssl/ --without-zstd && \
102-
make -j8 && make install && \
103-
rm -rf /curl-${CURL_VERSION}.tar.gz /curl-${CURL_VERSION}
104-
105-
# Pulsar client C++
106-
RUN PULSAR_CPP_VERSION=$(dep-version.py pulsar-cpp) && \
107-
. /dep-url.sh && download_dependency /dependencies.yaml pulsar-cpp && \
108-
cd apache-pulsar-client-cpp-${PULSAR_CPP_VERSION} && \
109-
cmake . -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_STATIC_LIB=OFF -DLINK_STATIC=ON && \
110-
make -j8 && \
111-
make install && \
112-
rm -rf apache-pulsar-client-cpp-${PULSAR_CPP_VERSION} apache-pulsar-client-cpp-${PULSAR_CPP_VERSION}.tar.gz

0 commit comments

Comments
 (0)