2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00
ovs/.ci/dpdk-build.sh
David Marchand c30ff22b5d ci: Remove dependency on libpcap.
Since commit 98ee21ef6364 ("system-dpdk: Use dummy-pmd port for ..."),
DPDK unit tests don't require net/pcap driver anymore, and we can remove
this dependency when building DPDK and OVS in GHA.

Fixes: 98ee21ef6364 ("system-dpdk: Use dummy-pmd port for packet injection.")
Acked-by: Eelco Chaudron <echaudro@redhat.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
2024-10-30 14:29:34 +01:00

65 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -o errexit
set -x
function build_dpdk()
{
local DPDK_VER=$1
local DPDK_OPTS=""
local DPDK_INSTALL_DIR="$(pwd)/dpdk-dir"
local VERSION_FILE="$DPDK_INSTALL_DIR/cached-version"
rm -rf dpdk-src
rm -rf $DPDK_INSTALL_DIR
if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then
git clone --single-branch $DPDK_GIT dpdk-src -b "${DPDK_VER##refs/*/}"
pushd dpdk-src
git log -1 --oneline
else
wget https://fast.dpdk.org/rel/dpdk-$1.tar.xz
tar xvf dpdk-$1.tar.xz > /dev/null
DIR_NAME=$(tar -tf dpdk-$1.tar.xz | head -1 | cut -f1 -d"/")
mv ${DIR_NAME} dpdk-src
pushd dpdk-src
fi
# Switching to 'generic' platform to make the dpdk cache usable on
# different CPUs. We can't be sure that all CI machines are exactly same.
DPDK_OPTS="$DPDK_OPTS -Dplatform=generic"
# Disable building DPDK unit tests. Not needed for OVS build or tests.
DPDK_OPTS="$DPDK_OPTS -Dtests=false"
# Disable DPDK developer mode, this results in less build checks and less
# meson verbose outputs.
DPDK_OPTS="$DPDK_OPTS -Ddeveloper_mode=disabled"
# OVS compilation and "normal" unit tests (run in the CI) do not depend on
# any DPDK driver.
# check-dpdk unit tests requires testpmd and some net/ driver.
DPDK_OPTS="$DPDK_OPTS -Denable_apps=test-pmd"
enable_drivers="net/null,net/af_xdp,net/tap,net/virtio"
DPDK_OPTS="$DPDK_OPTS -Denable_drivers=$enable_drivers"
# OVS depends on the vhost library (and its dependencies).
# net/tap depends on the gso library.
DPDK_OPTS="$DPDK_OPTS -Denable_libs=cryptodev,dmadev,gso,vhost"
# Install DPDK using prefix.
DPDK_OPTS="$DPDK_OPTS --prefix=$DPDK_INSTALL_DIR"
meson setup $DPDK_OPTS build
ninja -C build
ninja -C build install
popd
# Remove examples sources.
rm -rf $DPDK_INSTALL_DIR/share/dpdk/examples
echo "Installed DPDK in $DPDK_INSTALL_DIR"
echo "${DPDK_VER}" > ${VERSION_FILE}
}
build_dpdk $DPDK_VER