-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Nobody
committed
Oct 6, 2021
1 parent
32a16f6
commit 122cb56
Showing
28 changed files
with
92,089 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
name: 'debian' | ||
description: 'Build' | ||
inputs: | ||
target: | ||
description: 'Run target' | ||
required: true | ||
runs: | ||
using: "composite" | ||
steps: | ||
- run: | | ||
source /tmp/ci_setup | ||
bash -x $CI_ROOT/managers/debian.sh SETUP | ||
bash -x $CI_ROOT/managers/debian.sh ${{ inputs.target }} | ||
bash -x $CI_ROOT/managers/debian.sh CLEANUP | ||
shell: bash | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
name: 'get_scripts' | ||
description: 'Partially checkout CI files onto build dir' | ||
inputs: | ||
branch: | ||
description: 'Branch' | ||
required: false | ||
default: 'master' | ||
repo: | ||
description: 'Repo' | ||
required: false | ||
default: 'https://github.com/libbpf/ci' | ||
files: | ||
description: 'Files to copy separated with space' | ||
required: false | ||
default: 'custom-workflows travis-ci' | ||
destdir: | ||
description: 'Destination of checkout' | ||
required: false | ||
default: './' | ||
runs: | ||
using: "composite" | ||
steps: | ||
- name: Clone | ||
run: | | ||
# using nested actions not implemented https://github.com/actions/runner/pull/612 | ||
# so just plaint git clone | ||
git clone -b ${{ inputs.branch }} ${{ inputs.repo }} /tmp/_temp_get_scripts | ||
shell: bash | ||
- name: Copy files | ||
run: | | ||
for f in ${{ inputs.files }}; | ||
do cp -a /tmp/_temp_get_scripts/$f ${{ inputs.destdir }} | ||
done | ||
rm -rf /tmp/_temp_get_scripts | ||
shell: bash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
name: 'setup' | ||
description: 'setup env, create /tmp/ci_setup' | ||
runs: | ||
using: "composite" | ||
steps: | ||
- id: variables | ||
run: | | ||
export REPO_ROOT=$GITHUB_WORKSPACE | ||
export CI_ROOT=$REPO_ROOT/travis-ci | ||
# this is somewhat ugly, but that is the easiest way to share this code with | ||
# arch specific docker | ||
echo 'echo ::group::Env setup' > /tmp/ci_setup | ||
echo export DEBIAN_FRONTEND=noninteractive >> /tmp/ci_setup | ||
echo sudo apt-get update >> /tmp/ci_setup | ||
echo sudo apt-get install -y aptitude qemu-kvm zstd binutils-dev elfutils libcap-dev libelf-dev libdw-dev >> /tmp/ci_setup | ||
echo export PROJECT_NAME='libbpf' >> /tmp/ci_setup | ||
echo export AUTHOR_EMAIL="$(git log -1 --pretty=\"%aE\")" >> /tmp/ci_setup | ||
echo export REPO_ROOT=$GITHUB_WORKSPACE >> /tmp/ci_setup | ||
echo export CI_ROOT=$REPO_ROOT/travis-ci >> /tmp/ci_setup | ||
echo export VMTEST_ROOT=$CI_ROOT/vmtest >> /tmp/ci_setup | ||
echo 'echo ::endgroup::' >> /tmp/ci_setup | ||
shell: bash | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
name: 'vmtest' | ||
description: 'Build + run vmtest' | ||
inputs: | ||
kernel: | ||
description: 'kernel version or LATEST' | ||
required: true | ||
default: 'LATEST' | ||
kernel-rev: | ||
description: 'CHECKPOINT or rev/tag/branch' | ||
required: true | ||
default: 'CHECKPOINT' | ||
kernel-origin: | ||
description: 'kernel repo' | ||
required: true | ||
default: 'https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git' | ||
pahole: | ||
description: 'pahole rev/tag/branch' | ||
required: true | ||
default: 'master' | ||
pahole-origin: | ||
description: 'pahole repo' | ||
required: true | ||
default: 'https://git.kernel.org/pub/scm/devel/pahole/pahole.git' | ||
runs: | ||
using: "composite" | ||
steps: | ||
- run: | | ||
find ./ | grep travis | ||
source /tmp/ci_setup | ||
export KERNEL=${{ inputs.kernel }} | ||
export KERNEL_BRANCH=${{ inputs.kernel-rev }} | ||
export KERNEL_ORIGIN=${{ inputs.kernel-origin }} | ||
export PAHOLE_BRANCH=${{ inputs.pahole }} | ||
export PAHOLE_ORIGIN=${{ inputs.pahole-origin }} | ||
$CI_ROOT/vmtest/run_vmtest.sh | ||
shell: bash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
name: bpf-ci | ||
|
||
on: | ||
pull_request: | ||
|
||
concurrency: | ||
group: ci-test-${{ github.head_ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
vmtest: | ||
runs-on: ubuntu-latest | ||
name: Kernel ${{ matrix.kernel }} + selftests | ||
env: | ||
CHECKOUT_KERNEL: 0 | ||
SELFTEST_REPO_PATH: "." | ||
SOURCE_FULLCOPY: 0 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- kernel: 'LATEST' | ||
steps: | ||
- uses: actions/checkout@v2 | ||
name: Checkout | ||
- uses: ./.github/actions/setup | ||
name: Setup | ||
- uses: ./.github/actions/vmtest | ||
name: vmtest | ||
with: | ||
kernel: ${{ matrix.kernel }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
name: bpf-ci | ||
|
||
on: | ||
pull_request: | ||
|
||
concurrency: | ||
group: ci-test-${{ github.head_ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
vmtest: | ||
runs-on: ubuntu-latest | ||
name: Kernel ${{ matrix.kernel }} + selftests | ||
env: | ||
CHECKOUT_KERNEL: 0 | ||
SELFTEST_REPO_PATH: "." | ||
SOURCE_FULLCOPY: 0 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- kernel: 'LATEST' | ||
steps: | ||
- uses: actions/checkout@v2 | ||
name: Checkout | ||
- uses: ./.github/actions/setup | ||
name: Setup | ||
- uses: ./.github/actions/vmtest | ||
name: vmtest | ||
with: | ||
kernel: ${{ matrix.kernel }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
#!/bin/bash | ||
|
||
PHASES=(${@:-SETUP RUN RUN_ASAN CLEANUP}) | ||
DEBIAN_RELEASE="${DEBIAN_RELEASE:-testing}" | ||
CONT_NAME="${CONT_NAME:-libbpf-debian-$DEBIAN_RELEASE}" | ||
ENV_VARS="${ENV_VARS:-}" | ||
DOCKER_RUN="${DOCKER_RUN:-docker run}" | ||
REPO_ROOT="${REPO_ROOT:-$PWD}" | ||
ADDITIONAL_DEPS=(clang pkg-config gcc-10) | ||
CFLAGS="-g -O2 -Werror -Wall" | ||
|
||
function info() { | ||
echo -e "\033[33;1m$1\033[0m" | ||
} | ||
|
||
function error() { | ||
echo -e "\033[31;1m$1\033[0m" | ||
} | ||
|
||
function docker_exec() { | ||
docker exec $ENV_VARS $CONT_NAME "$@" | ||
} | ||
|
||
set -eu | ||
|
||
source "$(dirname $0)/travis_wait.bash" | ||
|
||
for phase in "${PHASES[@]}"; do | ||
case $phase in | ||
SETUP) | ||
info "Setup phase" | ||
info "Using Debian $DEBIAN_RELEASE" | ||
|
||
docker --version | ||
|
||
docker pull debian:$DEBIAN_RELEASE | ||
info "Starting container $CONT_NAME" | ||
$DOCKER_RUN -v $REPO_ROOT:/build:rw \ | ||
-w /build --privileged=true --name $CONT_NAME \ | ||
-dit --net=host debian:$DEBIAN_RELEASE /bin/bash | ||
echo -e "::group::Build Env Setup" | ||
docker_exec bash -c "echo deb-src http://deb.debian.org/debian $DEBIAN_RELEASE main >>/etc/apt/sources.list" | ||
docker_exec apt-get -y update | ||
docker_exec apt-get -y install aptitude | ||
docker_exec aptitude -y build-dep libelf-dev | ||
docker_exec aptitude -y install libelf-dev | ||
docker_exec aptitude -y install "${ADDITIONAL_DEPS[@]}" | ||
echo -e "::endgroup::" | ||
;; | ||
RUN|RUN_CLANG|RUN_GCC10|RUN_ASAN|RUN_CLANG_ASAN|RUN_GCC10_ASAN) | ||
CC="cc" | ||
if [[ "$phase" = *"CLANG"* ]]; then | ||
ENV_VARS="-e CC=clang -e CXX=clang++" | ||
CC="clang" | ||
elif [[ "$phase" = *"GCC10"* ]]; then | ||
ENV_VARS="-e CC=gcc-10 -e CXX=g++-10" | ||
CC="gcc-10" | ||
CFLAGS="${CFLAGS} -Wno-stringop-truncation" | ||
else | ||
CFLAGS="${CFLAGS} -Wno-stringop-truncation" | ||
fi | ||
if [[ "$phase" = *"ASAN"* ]]; then | ||
CFLAGS="${CFLAGS} -fsanitize=address,undefined" | ||
fi | ||
docker_exec mkdir build install | ||
docker_exec ${CC} --version | ||
info "build" | ||
docker_exec make -j$((4*$(nproc))) CFLAGS="${CFLAGS}" -C ./src -B OBJDIR=../build | ||
info "ldd build/libbpf.so:" | ||
docker_exec ldd build/libbpf.so | ||
if ! docker_exec ldd build/libbpf.so | grep -q libelf; then | ||
error "No reference to libelf.so in libbpf.so!" | ||
exit 1 | ||
fi | ||
info "install" | ||
docker_exec make -j$((4*$(nproc))) -C src OBJDIR=../build DESTDIR=../install install | ||
info "link binary" | ||
docker_exec bash -c "CFLAGS=\"${CFLAGS}\" ./travis-ci/managers/test_compile.sh" | ||
;; | ||
CLEANUP) | ||
info "Cleanup phase" | ||
docker stop $CONT_NAME | ||
docker rm -f $CONT_NAME | ||
;; | ||
*) | ||
echo >&2 "Unknown phase '$phase'" | ||
exit 1 | ||
esac | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/bin/bash | ||
set -euox pipefail | ||
|
||
CFLAGS=${CFLAGS:-} | ||
|
||
cat << EOF > main.c | ||
#include <bpf/libbpf.h> | ||
int main() { | ||
return bpf_object__open(0) < 0; | ||
} | ||
EOF | ||
|
||
# static linking | ||
${CC:-cc} ${CFLAGS} -o main -I./install/usr/include main.c ./build/libbpf.a -lelf -lz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# This was borrowed from https://github.com/travis-ci/travis-build/tree/master/lib/travis/build/bash | ||
# to get around https://github.com/travis-ci/travis-ci/issues/9979. It should probably be removed | ||
# as soon as Travis CI has started to provide an easy way to export the functions to bash scripts. | ||
|
||
travis_jigger() { | ||
local cmd_pid="${1}" | ||
shift | ||
local timeout="${1}" | ||
shift | ||
local count=0 | ||
|
||
echo -e "\\n" | ||
|
||
while [[ "${count}" -lt "${timeout}" ]]; do | ||
count="$((count + 1))" | ||
echo -ne "Still running (${count} of ${timeout}): ${*}\\r" | ||
sleep 60 | ||
done | ||
|
||
echo -e "\\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"${*}\"${ANSI_RESET}\\n" | ||
kill -9 "${cmd_pid}" | ||
} | ||
|
||
travis_wait() { | ||
local timeout="${1}" | ||
|
||
if [[ "${timeout}" =~ ^[0-9]+$ ]]; then | ||
shift | ||
else | ||
timeout=20 | ||
fi | ||
|
||
local cmd=("${@}") | ||
local log_file="travis_wait_${$}.log" | ||
|
||
"${cmd[@]}" &>"${log_file}" & | ||
local cmd_pid="${!}" | ||
|
||
travis_jigger "${!}" "${timeout}" "${cmd[@]}" & | ||
local jigger_pid="${!}" | ||
local result | ||
|
||
{ | ||
set +e | ||
wait "${cmd_pid}" 2>/dev/null | ||
result="${?}" | ||
ps -p"${jigger_pid}" &>/dev/null && kill "${jigger_pid}" | ||
set -e | ||
} | ||
|
||
if [[ "${result}" -eq 0 ]]; then | ||
echo -e "\\n${ANSI_GREEN}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" | ||
else | ||
echo -e "\\n${ANSI_RED}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" | ||
fi | ||
|
||
echo -e "\\n${ANSI_GREEN}Log:${ANSI_RESET}\\n" | ||
cat "${log_file}" | ||
|
||
return "${result}" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/bash | ||
set -eux | ||
|
||
RELEASE="focal" | ||
|
||
apt-get update | ||
apt-get install -y pkg-config | ||
|
||
source "$(dirname $0)/travis_wait.bash" | ||
|
||
cd $REPO_ROOT | ||
|
||
CFLAGS="-g -O2 -Werror -Wall -fsanitize=address,undefined -Wno-stringop-truncation" | ||
mkdir build install | ||
cc --version | ||
make -j$((4*$(nproc))) CFLAGS="${CFLAGS}" -C ./src -B OBJDIR=../build | ||
ldd build/libbpf.so | ||
if ! ldd build/libbpf.so | grep -q libelf; then | ||
echo "FAIL: No reference to libelf.so in libbpf.so!" | ||
exit 1 | ||
fi | ||
make -j$((4*$(nproc))) -C src OBJDIR=../build DESTDIR=../install install | ||
CFLAGS=${CFLAGS} $(dirname $0)/test_compile.sh |
Oops, something went wrong.