-
Notifications
You must be signed in to change notification settings - Fork 122
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
Nov 15, 2021
1 parent
a5bdc36
commit 3b47f71
Showing
23 changed files
with
86,752 additions
and
18 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,34 @@ | ||
name: bpf-ci | ||
|
||
on: | ||
pull_request: | ||
|
||
concurrency: | ||
group: ci-test-${{ github.head_ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
VM_Test: | ||
timeout-minutes: 100 | ||
runs-on: ubuntu-latest | ||
env: | ||
PROJECT_NAME: 'libbpf' | ||
AUTHOR_EMAIL: "$(git log -1 --pretty=\"%aE\")" | ||
KERNEL: LATEST | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: install | ||
run: sudo apt-get update && sudo apt-get install aptitude qemu-kvm zstd binutils-dev elfutils libcap-dev libelf-dev libdw-dev python3-docutils | ||
- name: Get bpf-next source | ||
if: ${{ github.repository == 'kernel-patches/vmtest' }} | ||
uses: actions/checkout@v2 | ||
with: | ||
repository: kernel-patches/bpf | ||
ref: 'bpf-next' | ||
path: 'linux' | ||
- name: Move linux source in place | ||
if: ${{ github.repository == 'kernel-patches/vmtest' }} | ||
run: rsync --exclude .git -av linux/. . && rm -rf linux | ||
- name: Kernel LATEST + selftests | ||
run: export REPO_ROOT=$GITHUB_WORKSPACE; export CI_ROOT=$REPO_ROOT/travis-ci; export VMTEST_ROOT=$CI_ROOT/vmtest; ${CI_ROOT}/vmtest/run_vmtest.sh || exit 1 |
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 |
---|---|---|
@@ -1,18 +0,0 @@ | ||
Linux kernel | ||
============ | ||
|
||
There are several guides for kernel developers and users. These guides can | ||
be rendered in a number of formats, like HTML and PDF. Please read | ||
Documentation/admin-guide/README.rst first. | ||
|
||
In order to build the documentation, use ``make htmldocs`` or | ||
``make pdfdocs``. The formatted documentation can also be read online at: | ||
|
||
https://www.kernel.org/doc/html/latest/ | ||
|
||
There are various text files in the Documentation/ subdirectory, | ||
several of them using the Restructured Text markup notation. | ||
|
||
Please read the Documentation/process/changes.rst file, as it contains the | ||
requirements for building and running the kernel, and information about | ||
the problems which may result by upgrading your 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,96 @@ | ||
#!/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 -it $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" | ||
|
||
# Install Docker Engine | ||
sudo apt-get update | ||
sudo apt-get install \ | ||
apt-transport-https \ | ||
ca-certificates \ | ||
curl \ | ||
gnupg-agent \ | ||
software-properties-common | ||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | ||
sudo add-apt-repository \ | ||
"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | ||
sudo apt-get update | ||
sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce | ||
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 | ||
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 build-dep libelf-dev | ||
docker_exec apt-get -y install libelf-dev | ||
docker_exec apt-get -y install "${ADDITIONAL_DEPS[@]}" | ||
;; | ||
RUN|RUN_CLANG|RUN_GCC10|RUN_ASAN|RUN_CLANG_ASAN|RUN_GCC10_ASAN) | ||
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" | ||
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:-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 | ||
docker_exec rm -rf build install | ||
;; | ||
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,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,26 @@ | ||
#!/bin/bash | ||
set -eux | ||
|
||
RELEASE="focal" | ||
|
||
echo "deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse" >>/etc/apt/sources.list | ||
|
||
apt-get update | ||
apt-get -y build-dep libelf-dev | ||
apt-get install -y libelf-dev 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 | ||
rm -rf build install |
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,33 @@ | ||
#!/bin/bash | ||
|
||
set -eu | ||
|
||
source $(cd $(dirname $0) && pwd)/helpers.sh | ||
|
||
travis_fold start build_pahole "Building pahole" | ||
|
||
CWD=$(pwd) | ||
REPO_PATH=$1 | ||
PAHOLE_ORIGIN=https://git.kernel.org/pub/scm/devel/pahole/pahole.git | ||
|
||
mkdir -p ${REPO_PATH} | ||
cd ${REPO_PATH} | ||
git init | ||
git remote add origin ${PAHOLE_ORIGIN} | ||
git fetch origin | ||
git checkout master | ||
|
||
# temporary fix up for pahole until official 1.22 release | ||
sed -i 's/DDWARVES_MINOR_VERSION=21/DDWARVES_MINOR_VERSION=22/' CMakeLists.txt | ||
|
||
mkdir -p build | ||
cd build | ||
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -D__LIB=lib .. | ||
make -j$((4*$(nproc))) all | ||
sudo make install | ||
|
||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-}:/usr/local/lib | ||
ldd $(which pahole) | ||
pahole --version | ||
|
||
travis_fold end build_pahole |
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,40 @@ | ||
#!/bin/bash | ||
|
||
set -euo pipefail | ||
|
||
source $(cd $(dirname $0) && pwd)/helpers.sh | ||
|
||
travis_fold start prepare_selftests "Building selftests" | ||
|
||
LLVM_VER=14 | ||
LIBBPF_PATH="${REPO_ROOT}" | ||
|
||
PREPARE_SELFTESTS_SCRIPT=${VMTEST_ROOT}/prepare_selftests-${KERNEL}.sh | ||
if [ -f "${PREPARE_SELFTESTS_SCRIPT}" ]; then | ||
(cd "${REPO_ROOT}/tools/testing/selftests/bpf" && ${PREPARE_SELFTESTS_SCRIPT}) | ||
fi | ||
|
||
if [[ "${KERNEL}" = 'LATEST' ]]; then | ||
VMLINUX_H= | ||
else | ||
VMLINUX_H=${VMTEST_ROOT}/vmlinux.h | ||
fi | ||
|
||
make \ | ||
CLANG=clang-${LLVM_VER} \ | ||
LLC=llc-${LLVM_VER} \ | ||
LLVM_STRIP=llvm-strip-${LLVM_VER} \ | ||
VMLINUX_BTF="${VMLINUX_BTF}" \ | ||
VMLINUX_H=${VMLINUX_H} \ | ||
-C "${REPO_ROOT}/tools/testing/selftests/bpf" \ | ||
-j $((2*$(nproc))) | ||
mkdir ${LIBBPF_PATH}/selftests | ||
cp -R "${REPO_ROOT}/tools/testing/selftests/bpf" \ | ||
${LIBBPF_PATH}/selftests | ||
cd ${LIBBPF_PATH} | ||
rm selftests/bpf/.gitignore | ||
git add selftests | ||
|
||
git add "${VMTEST_ROOT}/configs/blacklist" | ||
|
||
travis_fold end prepare_selftests |
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,45 @@ | ||
#!/bin/bash | ||
|
||
set -eu | ||
|
||
source $(cd $(dirname $0) && pwd)/helpers.sh | ||
|
||
CWD=$(pwd) | ||
LIBBPF_PATH=$(pwd) | ||
REPO_PATH=$1 | ||
|
||
BPF_NEXT_ORIGIN=https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git | ||
LINUX_SHA=$(cat ${LIBBPF_PATH}/CHECKPOINT-COMMIT) | ||
SNAPSHOT_URL=https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/snapshot/bpf-next-${LINUX_SHA}.tar.gz | ||
|
||
echo REPO_PATH = ${REPO_PATH} | ||
echo LINUX_SHA = ${LINUX_SHA} | ||
|
||
if [ ! -d "${REPO_PATH}" ]; then | ||
echo | ||
travis_fold start pull_kernel_srcs "Fetching kernel sources" | ||
|
||
mkdir -p $(dirname "${REPO_PATH}") | ||
cd $(dirname "${REPO_PATH}") | ||
# attempt to fetch desired bpf-next repo snapshot | ||
if wget ${SNAPSHOT_URL} ; then | ||
tar xf bpf-next-${LINUX_SHA}.tar.gz | ||
mv bpf-next-${LINUX_SHA} $(basename ${REPO_PATH}) | ||
else | ||
# but fallback to git fetch approach if that fails | ||
mkdir -p ${REPO_PATH} | ||
cd ${REPO_PATH} | ||
git init | ||
git remote add bpf-next ${BPF_NEXT_ORIGIN} | ||
# try shallow clone first | ||
git fetch --depth 32 bpf-next | ||
# check if desired SHA exists | ||
if ! git cat-file -e ${LINUX_SHA}^{commit} ; then | ||
# if not, fetch all of bpf-next; slow and painful | ||
git fetch bpf-next | ||
fi | ||
git reset --hard ${LINUX_SHA} | ||
fi | ||
|
||
travis_fold end pull_kernel_srcs | ||
fi |
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,8 @@ | ||
INDEX https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/INDEX | ||
libbpf-vmtest-rootfs-2020.09.27.tar.zst https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/libbpf-vmtest-rootfs-2020.09.27.tar.zst | ||
vmlinux-4.9.0.zst https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/vmlinux-4.9.0.zst | ||
vmlinux-5.5.0-rc6.zst https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/vmlinux-5.5.0-rc6.zst | ||
vmlinux-5.5.0.zst https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/vmlinux-5.5.0.zst | ||
vmlinuz-5.5.0-rc6 https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/vmlinuz-5.5.0-rc6 | ||
vmlinuz-5.5.0 https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/vmlinuz-5.5.0 | ||
vmlinuz-4.9.0 https://libbpf-vmtest.s3-us-west-1.amazonaws.com/x86_64/vmlinuz-4.9.0 |
Oops, something went wrong.