diff --git a/travis-ci/vmtest/build_selftests.sh b/travis-ci/vmtest/build_selftests.sh index 9952e48..4b0b0b7 100755 --- a/travis-ci/vmtest/build_selftests.sh +++ b/travis-ci/vmtest/build_selftests.sh @@ -10,7 +10,6 @@ sudo apt-get -y install python-docutils # for rst2man LLVM_VER=14 LIBBPF_PATH="${REPO_ROOT}" -REPO_PATH="travis-ci/vmtest/bpf-next" PREPARE_SELFTESTS_SCRIPT=${VMTEST_ROOT}/prepare_selftests-${KERNEL}.sh if [ -f "${PREPARE_SELFTESTS_SCRIPT}" ]; then diff --git a/travis-ci/vmtest/prepare_selftests.sh b/travis-ci/vmtest/prepare_selftests.sh index 52239e3..0dcb7ea 100755 --- a/travis-ci/vmtest/prepare_selftests.sh +++ b/travis-ci/vmtest/prepare_selftests.sh @@ -4,17 +4,18 @@ set -eu source $(cd $(dirname $0) && pwd)/helpers.sh -REPO_PATH=$1 +REPO_PATH=${1:-} -${VMTEST_ROOT}/checkout_latest_kernel.sh ${REPO_PATH} -cd ${REPO_PATH} +if [[ ! -z "$REPO_PATH" ]]; then + ${VMTEST_ROOT}/checkout_latest_kernel.sh ${REPO_PATH} + cd ${REPO_PATH} +fi if [[ "${KERNEL}" = 'LATEST' ]]; then travis_fold start build_kernel "Kernel build" cp ${VMTEST_ROOT}/configs/latest.config .config make -j $((4*$(nproc))) olddefconfig all >/dev/null - travis_fold end build_kernel fi diff --git a/travis-ci/vmtest/run.sh b/travis-ci/vmtest/run.sh index ed2d329..e88daf3 100755 --- a/travis-ci/vmtest/run.sh +++ b/travis-ci/vmtest/run.sh @@ -92,6 +92,12 @@ SKIPSOURCE=0 APPEND="" DIR="$PWD" LIST=0 + +# by default will copy all files that aren't listed in git exclusions +# but it doesn't work for entire kernel tree very well +# so for full kernel tree you may need to SOURCE_FULLCOPY=0 +SOURCE_FULLCOPY=${SOURCE_FULLCOPY:-1} + while true; do case "$1" in -k|--kernel) @@ -374,9 +380,10 @@ fi travis_fold end vmlinux_setup +REPO_PATH="${SELFTEST_REPO_PATH:-travis-ci/vmtest/bpf-next}" LIBBPF_PATH="${REPO_ROOT}" \ - REPO_PATH="travis-ci/vmtest/bpf-next" \ VMTEST_ROOT="${VMTEST_ROOT}" \ + REPO_PATH="${REPO_PATH}" \ VMLINUX_BTF=${vmlinux} ${VMTEST_ROOT}/build_selftests.sh travis_fold start vm_init "Starting virtual machine..." @@ -385,16 +392,17 @@ if (( SKIPSOURCE )); then echo "Not copying source files..." >&2 else echo "Copying source files..." >&2 - # Copy the source files in. sudo mkdir -p -m 0755 "$mnt/${PROJECT_NAME}" - { - if [[ -e .git ]]; then - git ls-files -z + if [[ "${SOURCE_FULLCOPY}" == "1" ]]; then + git ls-files -z | sudo rsync --files-from=- -0cpt . "$mnt/${PROJECT_NAME}" else - tr '\n' '\0' < "${PROJECT_NAME}.egg-info/SOURCES.txt" - fi - } | sudo rsync --files-from=- -0cpt . "$mnt/${PROJECT_NAME}" + sudo mkdir -p -m 0755 ${mnt}/${PROJECT_NAME}/{selftests,travis-ci} + tree --du -shaC "${REPO_ROOT}/selftests/bpf" + sudo rsync -avm "${REPO_ROOT}/selftests/bpf" "$mnt/${PROJECT_NAME}/selftests/" + sudo rsync -avm "${REPO_ROOT}/travis-ci/vmtest" "$mnt/${PROJECT_NAME}/travis-ci/" + fi + fi setup_script="#!/bin/sh diff --git a/travis-ci/vmtest/run_vmtest.sh b/travis-ci/vmtest/run_vmtest.sh index 7728e6d..91d201c 100755 --- a/travis-ci/vmtest/run_vmtest.sh +++ b/travis-ci/vmtest/run_vmtest.sh @@ -6,6 +6,10 @@ source $(cd $(dirname $0) && pwd)/helpers.sh VMTEST_SETUPCMD="GITHUB_WORKFLOW=${GITHUB_WORKFLOW:-} PROJECT_NAME=${PROJECT_NAME} ./${PROJECT_NAME}/travis-ci/vmtest/run_selftests.sh" +# if CHECKOUT_KERNEL is 1 code will consider that kernel code lives elsewhere +# if 0 it will consider that REPO_ROOT is a kernel tree +CHECKOUT_KERNEL=${CHECKOUT_KERNEL:-1} + echo "KERNEL: $KERNEL" echo @@ -24,7 +28,12 @@ sudo aptitude install -y clang-14 lld-14 llvm-14 travis_fold end install_clang # Build selftests (and latest kernel, if necessary) -${VMTEST_ROOT}/prepare_selftests.sh travis-ci/vmtest/bpf-next + +if [[ "$CHECKOUT_KERNEL" == "1" ]]; then + ${VMTEST_ROOT}/prepare_selftests.sh travis-ci/vmtest/bpf-next +else + ${VMTEST_ROOT}/prepare_selftests.sh +fi # Escape whitespace characters. setup_cmd=$(sed 's/\([[:space:]]\)/\\\1/g' <<< "${VMTEST_SETUPCMD}") @@ -32,7 +41,11 @@ setup_cmd=$(sed 's/\([[:space:]]\)/\\\1/g' <<< "${VMTEST_SETUPCMD}") sudo adduser "${USER}" kvm if [[ "${KERNEL}" = 'LATEST' ]]; then - sudo -E sudo -E -u "${USER}" "${VMTEST_ROOT}/run.sh" -b travis-ci/vmtest/bpf-next -o -d ~ -s "${setup_cmd}" ~/root.img; + if [[ "$CHECKOUT_KERNEL" == "1" ]]; then + sudo -E sudo -E -u "${USER}" "${VMTEST_ROOT}/run.sh" -b travis-ci/vmtest/bpf-next -o -d ~ -s "${setup_cmd}" ~/root.img + else + sudo -E sudo -E -u "${USER}" "${VMTEST_ROOT}/run.sh" -b "${REPO_ROOT}" -o -d ~ -s "${setup_cmd}" ~/root.img + fi else - sudo -E sudo -E -u "${USER}" "${VMTEST_ROOT}/run.sh" -k "${KERNEL}*" -o -d ~ -s "${setup_cmd}" ~/root.img; + sudo -E sudo -E -u "${USER}" "${VMTEST_ROOT}/run.sh" -k "${KERNEL}*" -o -d ~ -s "${setup_cmd}" ~/root.img fi