Merge commit '36bca61764984ff5395653cf8377ec5daa71b709' as 'libs/protobuf'
This commit is contained in:
44
libs/protobuf/kokoro/linux/aarch64/python_crosscompile_aarch64.sh
Executable file
44
libs/protobuf/kokoro/linux/aarch64/python_crosscompile_aarch64.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Builds protobuf python including the C++ extension with aarch64 crosscompiler.
|
||||
# The outputs of this script are laid out so that we can later test them under an aarch64 emulator.
|
||||
# NOTE: This script is expected to run under the dockcross/manylinux2014-aarch64 docker image.
|
||||
|
||||
set -ex
|
||||
|
||||
PYTHON="/opt/python/cp38-cp38/bin/python"
|
||||
|
||||
# Initialize any submodules.
|
||||
git submodule update --init --recursive
|
||||
|
||||
# Build protoc and libprotobuf
|
||||
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_WITH_ZLIB=0 -Dprotobuf_BUILD_TESTS=OFF .
|
||||
make -j8
|
||||
|
||||
# create a simple shell wrapper that runs crosscompiled protoc under qemu
|
||||
echo '#!/bin/bash' >protoc_qemu_wrapper.sh
|
||||
echo 'exec qemu-aarch64 "../protoc" "$@"' >>protoc_qemu_wrapper.sh
|
||||
chmod ugo+x protoc_qemu_wrapper.sh
|
||||
|
||||
# PROTOC variable is by build_py step that runs under ./python directory
|
||||
export PROTOC=../protoc_qemu_wrapper.sh
|
||||
|
||||
pushd python
|
||||
|
||||
# NOTE: this step will use protoc_qemu_wrapper.sh to generate protobuf files.
|
||||
${PYTHON} setup.py build_py
|
||||
|
||||
# when crosscompiling for aarch64, --plat-name needs to be set explicitly
|
||||
# to end up with correctly named wheel file
|
||||
# the value should be manylinuxABC_ARCH and dockcross docker image
|
||||
# conveniently provides the value in the AUDITWHEEL_PLAT env
|
||||
plat_name_flag="--plat-name=$AUDITWHEEL_PLAT"
|
||||
|
||||
# override the value of EXT_SUFFIX to make sure the crosscompiled .so files in the wheel have the correct filename suffix
|
||||
export PROTOCOL_BUFFERS_OVERRIDE_EXT_SUFFIX="$(${PYTHON} -c 'import sysconfig; print(sysconfig.get_config_var("EXT_SUFFIX").replace("-x86_64-linux-gnu.so", "-aarch64-linux-gnu.so"))')"
|
||||
|
||||
# Build the python extension inplace to be able to python unittests later
|
||||
${PYTHON} setup.py build_ext --cpp_implementation --compile_static_extension --inplace
|
||||
|
||||
# Build the binary wheel (to check it with auditwheel)
|
||||
${PYTHON} setup.py bdist_wheel --cpp_implementation --compile_static_extension $plat_name_flag
|
||||
Reference in New Issue
Block a user