Let's check if unit tests from the reference build can run with the current release libraries/drivers.
This gives another level of ABI checking, like catching regressions on experimental or internal ABI symbols that get promoted to stable. Skip unit tests that were added since the reference (iow v26.03). $ git diff v26.03..origin/main | sed -ne 's/^[+]REGISTER_FAST_TEST(\([^,]*\).*$/\1/p' | sort af_packet_pmd_autotest bpf_exec_wrong_flags_autotest bpf_exec_wrong_nb_prog_arg_autotest bpf_load_null_autotest bpf_validate_autotest eal_flags_pagesz_mem_autotest feature_autotest pcap_pmd_autotest reassembly_autotest As reported in https://bugs.dpdk.org/show_bug.cgi?id=1967, devargs and vdev autotests are broken due to drivers ABI changes since those unit tests are directly accessing internal objects. FIXME: for now, use a branch of mine with backports on 26.03. Signed-off-by: David Marchand <[email protected]> --- .ci/linux-build.sh | 28 +++++++++++++++++++++++++--- .github/workflows/build.yml | 15 +++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index a5e602ed83..f4fb398cd9 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -200,23 +200,28 @@ if [ "$ABI_CHECKS" = "true" ]; then rm -rf reference fi + # FIXME: force regeneration in CI for this patch + if [ ! -e reference/usr/local/bin/dpdk-test ]; then + rm -rf reference + fi + if [ ! -d reference ]; then REF_OPTS="$OPTS" # We only care about the drivers and libs, disable developer checks and # don't try to link apps. REF_OPTS="$REF_OPTS -Dcheck_includes=false" REF_OPTS="$REF_OPTS -Ddeveloper_mode=disabled" - REF_OPTS="$REF_OPTS -Ddisable_apps=*" + REF_OPTS="$REF_OPTS -Denable_apps=test" REF_OPTS="$REF_OPTS -Denable_docs=false" REF_OPTS="$REF_OPTS -Dexamples=" - REF_OPTS="$REF_OPTS -Dtests=false" refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG) git clone --single-branch -b "$REF_GIT_TAG" $REF_GIT_REPO $refsrcdir meson setup $REF_OPTS $refsrcdir $refsrcdir/build ninja -C $refsrcdir/build DESTDIR=$(pwd)/reference meson install -C $refsrcdir/build find reference/usr/local -name '*.a' -delete - rm -rf reference/usr/local/bin + rm -rf reference/usr/local/bin/* + cp $refsrcdir/build/app/dpdk-test reference/usr/local/bin/dpdk-test rm -rf reference/usr/local/share echo $REF_GIT_TAG > reference/VERSION fi @@ -233,6 +238,23 @@ if [ "$RUN_TESTS" = "true" ]; then catch_ubsan DPDK:fast-tests build/meson-logs/testlog.txt check_traces [ "$failed" != "true" ] + + if [ "$ABI_CHECKS" = "true" ]; then + failed= + configure_coredump + mv -f build/app/dpdk-test build/app/dpdk-test.ori + cp reference/usr/local/bin/dpdk-test build/app/dpdk-test + for t in ${ABI_SKIP_TESTS}; do + DPDK_TEST_SKIP=${DPDK_TEST_SKIP+$DPDK_TEST_SKIP,}$t + done + sudo env DPDK_TEST_SKIP="$DPDK_TEST_SKIP" \ + meson test -C build --suite fast-tests -t 3 --no-stdsplit --print-errorlogs || failed="true" + catch_coredump + catch_ubsan DPDK:fast-tests build/meson-logs/testlog.txt + check_traces + mv -f build/app/dpdk-test.ori build/app/dpdk-test + [ "$failed" != "true" ] + fi fi # Test examples compilation with an installed dpdk diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f0ef39d34f..b311ee26f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,8 +11,9 @@ defaults: env: REF_GIT_BRANCH: main - REF_GIT_REPO: https://github.com/DPDK/dpdk - REF_GIT_TAG: v26.03 + # FIXME + REF_GIT_REPO: https://github.com/david-marchand/dpdk + REF_GIT_TAG: 26.03 jobs: checkpatch: @@ -39,6 +40,16 @@ jobs: env: AARCH64: ${{ matrix.config.cross == 'aarch64' }} ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }} + ABI_SKIP_TESTS: | + af_packet_pmd_autotest + bpf_exec_wrong_flags_autotest + bpf_exec_wrong_nb_prog_arg_autotest + bpf_load_null_autotest + bpf_validate_autotest + eal_flags_pagesz_mem_autotest + feature_autotest + pcap_pmd_autotest + reassembly_autotest ASAN: ${{ contains(matrix.config.checks, 'asan') }} BUILD_32BIT: ${{ matrix.config.cross == 'i386' }} BUILD_DEBUG: ${{ contains(matrix.config.checks, 'debug') }} -- 2.54.0

