ci: build libbpf with more versions of clang and gcc

Add few more versions of clang and gcc used to compile-test libbpf.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
This commit is contained in:
Andrii Nakryiko
2022-11-16 10:02:18 -08:00
committed by Andrii Nakryiko
parent c80f12f7f6
commit 7b0891ac6b
2 changed files with 29 additions and 11 deletions

View File

@@ -23,14 +23,24 @@ jobs:
target: RUN target: RUN
- name: ASan+UBSan - name: ASan+UBSan
target: RUN_ASAN target: RUN_ASAN
- name: clang
target: RUN_CLANG
- name: clang ASan+UBSan - name: clang ASan+UBSan
target: RUN_CLANG_ASAN target: RUN_CLANG_ASAN
- name: gcc-10
target: RUN_GCC10
- name: gcc-10 ASan+UBSan - name: gcc-10 ASan+UBSan
target: RUN_GCC10_ASAN target: RUN_GCC10_ASAN
- name: clang
target: RUN_CLANG
- name: clang-14
target: RUN_CLANG14
- name: clang-15
target: RUN_CLANG15
- name: clang-16
target: RUN_CLANG16
- name: gcc-10
target: RUN_GCC10
- name: gcc-11
target: RUN_GCC11
- name: gcc-12
target: RUN_GCC12
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
name: Checkout name: Checkout

View File

@@ -6,7 +6,7 @@ CONT_NAME="${CONT_NAME:-libbpf-debian-$DEBIAN_RELEASE}"
ENV_VARS="${ENV_VARS:-}" ENV_VARS="${ENV_VARS:-}"
DOCKER_RUN="${DOCKER_RUN:-docker run}" DOCKER_RUN="${DOCKER_RUN:-docker run}"
REPO_ROOT="${REPO_ROOT:-$PWD}" REPO_ROOT="${REPO_ROOT:-$PWD}"
ADDITIONAL_DEPS=(clang pkgconf gcc-10) ADDITIONAL_DEPS=(pkgconf)
EXTRA_CFLAGS="" EXTRA_CFLAGS=""
EXTRA_LDFLAGS="" EXTRA_LDFLAGS=""
@@ -47,23 +47,31 @@ for phase in "${PHASES[@]}"; do
docker_exec aptitude -y install "${ADDITIONAL_DEPS[@]}" docker_exec aptitude -y install "${ADDITIONAL_DEPS[@]}"
echo -e "::endgroup::" echo -e "::endgroup::"
;; ;;
RUN|RUN_CLANG|RUN_GCC10|RUN_ASAN|RUN_CLANG_ASAN|RUN_GCC10_ASAN) RUN|RUN_CLANG|RUN_CLANG14|RUN_CLANG15|RUN_CLANG16|RUN_GCC10|RUN_GCC11|RUN_GCC12|RUN_ASAN|RUN_CLANG_ASAN|RUN_GCC10_ASAN)
CC="cc" CC="cc"
if [[ "$phase" = *"CLANG"* ]]; then if [[ "$phase" =~ "RUN_CLANG(\d+)(_ASAN)?" ]]; then
ENV_VARS="-e CC=clang-${BASH_REMATCH[1]} -e CXX=clang++-${BASH_REMATCH[1]}"
CC="clang-${BASH_REMATCH[1]}"
elif [[ "$phase" = *"CLANG"* ]]; then
ENV_VARS="-e CC=clang -e CXX=clang++" ENV_VARS="-e CC=clang -e CXX=clang++"
CC="clang" CC="clang"
elif [[ "$phase" = *"GCC10"* ]]; then elif [[ "$phase" =~ "RUN_GCC(\d+)(_ASAN)?" ]]; then
ENV_VARS="-e CC=gcc-10 -e CXX=g++-10" ENV_VARS="-e CC=gcc-${BASH_REMATCH[1]} -e CXX=g++-${BASH_REMATCH[1]}"
CC="gcc-10" CC="gcc-${BASH_REMATCH[1]}"
fi fi
if [[ "$phase" = *"ASAN"* ]]; then if [[ "$phase" = *"ASAN"* ]]; then
EXTRA_CFLAGS="${EXTRA_CFLAGS} -fsanitize=address,undefined" EXTRA_CFLAGS="${EXTRA_CFLAGS} -fsanitize=address,undefined"
EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -fsanitize=address,undefined" EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -fsanitize=address,undefined"
fi fi
if [[ "$CC" != "cc" ]]; then
docker_exec aptitude -y install "$CC"
else
docker_exec aptitude -y install gcc
fi
docker_exec mkdir build install docker_exec mkdir build install
docker_exec ${CC} --version docker_exec ${CC} --version
info "build" info "build"
docker_exec make -j$((4*$(nproc))) EXTRA_CFLAGS="${EXTRA_CFLAGS}" EXTRA_LDFLAGS="${EXTRA_LDFLAGS}" -C ./src -B OBJDIR=../build docker_exec make -j$((4*$(nproc))) EXTRA_CFLAGS="${EXTRA_CFLAGS}" EXTRA_LDFLAGS="${EXTRA_LDFLAGS}" -C ./src -B OBJDIR=../build
info "ldd build/libbpf.so:" info "ldd build/libbpf.so:"
docker_exec ldd build/libbpf.so docker_exec ldd build/libbpf.so
if ! docker_exec ldd build/libbpf.so | grep -q libelf; then if ! docker_exec ldd build/libbpf.so | grep -q libelf; then