Merge pull request #8391 from jtattermusch/cpp_aarch64_emulated_tests
run basic C++ aarch64 tests under qemu emulatorpull/8545/head
commit
37ba0bcfa2
6 changed files with 89 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# |
||||||
|
# Builds protobuf C++ with aarch64 crosscompiler and runs a basic set of tests under an emulator. |
||||||
|
# NOTE: This script is expected to run under the dockcross/linux-arm64 docker image. |
||||||
|
|
||||||
|
set -ex |
||||||
|
|
||||||
|
mkdir -p cmake/crossbuild_aarch64 |
||||||
|
cd cmake/crossbuild_aarch64 |
||||||
|
|
||||||
|
# the build commands are expected to run under dockcross docker image |
||||||
|
# where the CC, CXX and other toolchain variables already point to the crosscompiler |
||||||
|
cmake .. |
||||||
|
make -j8 |
||||||
|
|
||||||
|
# check that the resulting test binary is indeed an aarch64 ELF |
||||||
|
(file ./tests | grep -q "ELF 64-bit LSB executable, ARM aarch64") || (echo "Test binary in not an aarch64 binary"; exit 1) |
||||||
|
|
||||||
|
# run the basic set of C++ tests under QEMU |
||||||
|
# there are other tests we could run (e.g. ./lite-test), but this is sufficient as a smoketest |
||||||
|
qemu-aarch64 ./tests |
@ -0,0 +1,33 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
set -e |
||||||
|
|
||||||
|
# go to the repo root |
||||||
|
cd $(dirname $0)/../../../.. |
||||||
|
|
||||||
|
if [[ -t 0 ]]; then |
||||||
|
DOCKER_TTY_ARGS="-it" |
||||||
|
else |
||||||
|
# The input device on kokoro is not a TTY, so -it does not work. |
||||||
|
DOCKER_TTY_ARGS= |
||||||
|
fi |
||||||
|
|
||||||
|
# running dockcross image without any arguments generates a wrapper |
||||||
|
# scripts that can be used to run commands under the dockcross image |
||||||
|
# easily. |
||||||
|
# See https://github.com/dockcross/dockcross#usage for details |
||||||
|
docker run $DOCKER_TTY_ARGS --rm dockcross/linux-arm64 >dockcross-linux-arm64.sh |
||||||
|
chmod +x dockcross-linux-arm64.sh |
||||||
|
|
||||||
|
# the wrapper script has CRLF line endings and bash doesn't like that |
||||||
|
# so we change CRLF line endings into LF. |
||||||
|
sed -i 's/\r//g' dockcross-linux-arm64.sh |
||||||
|
|
||||||
|
# The dockcross wrapper script runs arbitrary commands under the selected dockcross |
||||||
|
# image with the following properties which make its use very convenient: |
||||||
|
# * the current working directory is mounted under /work so the container can easily |
||||||
|
# access the current workspace |
||||||
|
# * the processes in the container run under the same UID and GID as the host process so unlike |
||||||
|
# vanilla "docker run" invocations, the workspace doesn't get polluted with files |
||||||
|
# owned by root. |
||||||
|
./dockcross-linux-arm64.sh "$@" |
@ -0,0 +1,14 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# |
||||||
|
# Crosscompiles protobuf C++ under dockcross docker image and runs the tests under an emulator. |
||||||
|
|
||||||
|
set -e |
||||||
|
|
||||||
|
# go to the repo root |
||||||
|
cd $(dirname $0)/../../.. |
||||||
|
|
||||||
|
# Initialize any submodules. |
||||||
|
git submodule update --init --recursive |
||||||
|
|
||||||
|
# run the C++ build and test script under dockcross/linux-arm64 image |
||||||
|
kokoro/linux/aarch64/dockcross_helpers/run_dockcross_linux_aarch64.sh kokoro/linux/aarch64/cpp_crosscompile_and_run_tests_with_qemu_aarch64.sh |
@ -0,0 +1,11 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# |
||||||
|
# This is the top-level script we give to Kokoro as the entry point for |
||||||
|
# running the "continuous" and "presubmit" jobs. |
||||||
|
|
||||||
|
set -ex |
||||||
|
|
||||||
|
# Change to repo root |
||||||
|
cd $(dirname $0)/../../.. |
||||||
|
|
||||||
|
kokoro/linux/aarch64/test_cpp_aarch64.sh |
@ -0,0 +1,5 @@ |
|||||||
|
# Config file for running tests in Kokoro |
||||||
|
|
||||||
|
# Location of the build script in repository |
||||||
|
build_file: "protobuf/kokoro/linux/cpp_aarch64/build.sh" |
||||||
|
timeout_mins: 120 |
@ -0,0 +1,5 @@ |
|||||||
|
# Config file for running tests in Kokoro |
||||||
|
|
||||||
|
# Location of the build script in repository |
||||||
|
build_file: "protobuf/kokoro/linux/cpp_aarch64/build.sh" |
||||||
|
timeout_mins: 120 |
Loading…
Reference in new issue