On Thu, Jul 23, 2026 at 02:55:58PM +0200, David Marchand wrote: > Let's check if a testpmd and unit tests from a 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. > > We may need to skip unit tests that were added since the reference. > So add a ABI_SKIP_TESTS environment variable in preparation. > > Signed-off-by: David Marchand <[email protected]> > --- > Changes since v1: > - dropped hack, testing this patch can't be done in the CI now, > - emptied the excluded tests list, > - added test-null.sh, > > ---
This is a good test to run. It's something I believe our internal validation team does at times too. Some comments inline below, nothing major though. Acked-by: Bruce Richardson <[email protected]> > .ci/linux-build.sh | 33 ++++++++++++++++++++++++++++++--- > .github/workflows/build.yml | 1 + > 2 files changed, 31 insertions(+), 3 deletions(-) > > diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh > index a5e602ed83..032f3726e8 100755 > --- a/.ci/linux-build.sh > +++ b/.ci/linux-build.sh > @@ -206,23 +206,33 @@ if [ "$ABI_CHECKS" = "true" ]; then > # 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,test-pmd" > REF_OPTS="$REF_OPTS -Denable_docs=false" > REF_OPTS="$REF_OPTS -Dexamples=" > - REF_OPTS="$REF_OPTS -Dtests=false" These changes should go in the previous patch, I think - certainly you can drop the tests=false one, since it should be a no-op. > 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 > + cp $refsrcdir/build/app/dpdk-testpmd > reference/usr/local/bin/dpdk-testpmd At this point I'd suggest running "meson test --list --suite=fast-tests" to get the list of available tests in the reference implementation. > rm -rf reference/usr/local/share > echo $REF_GIT_TAG > reference/VERSION > fi > > DESTDIR=$(pwd)/install meson install -C build > devtools/check-abi.sh reference install ${ABI_CHECKS_WARN_ONLY:-} > + > + failed= > + configure_coredump > + mv -f build/app/dpdk-testpmd build/app/dpdk-testpmd.ori > + cp reference/usr/local/bin/dpdk-testpmd build/app/dpdk-testpmd > + devtools/test-null.sh || failed="true" > + mv -f build/app/dpdk-testpmd.ori build/app/dpdk-testpmd > + catch_coredump > + [ "$failed" != "true" ] > fi > > if [ "$RUN_TESTS" = "true" ]; then > @@ -233,6 +243,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 As well as the ABI_SKIP_TESTS, you could automate the list by again running "meson test --list --suite..." and then only running the tests in both lists. [using "sort" and "uniq -d" perhaps?] > + 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 c63a9a3982..5ee55f4d27 100644 > --- a/.github/workflows/build.yml > +++ b/.github/workflows/build.yml > @@ -39,6 +39,7 @@ jobs: > env: > AARCH64: ${{ matrix.config.cross == 'aarch64' }} > ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }} > + ABI_SKIP_TESTS: none > ASAN: ${{ contains(matrix.config.checks, 'asan') }} > BUILD_32BIT: ${{ matrix.config.cross == 'i386' }} > BUILD_DEBUG: ${{ contains(matrix.config.checks, 'debug') }} > -- > 2.54.0 >

