From 1c8205e6b1cb1570517d86c9e6fe95b296c90b90 Mon Sep 17 00:00:00 2001 From: Lukas Sismis Date: Wed, 12 Oct 2022 08:23:58 +0200 Subject: [PATCH] dpdk: add Github action to build Suricata with all available (LTS) DPDK versions --- .github/workflows/builds.yml | 98 ++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index cd7116ff63..2c94434b06 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -1586,6 +1586,104 @@ jobs: - run: AFL_HARDEN=1 ac_cv_func_realloc_0_nonnull=yes ac_cv_func_malloc_0_nonnull=yes CFLAGS="-fsanitize=address -fno-omit-frame-pointer" CXXFLAGS=$CFLAGS CC=afl-clang-fast CXX=afl-clang-fast++ LDFLAGS="-fsanitize=address" ./configure --enable-fuzztargets --disable-shared - run: AFL_HARDEN=1 make -j2 + ubuntu-22-04-dpdk-build: + name: Ubuntu 22.04 (DPDK Build) + runs-on: ubuntu-22.04 + container: ubuntu:22.04 + needs: [ prepare-deps, prepare-cbindgen ] + strategy: + matrix: + dpdk_version: [ 22.11.1, 21.11.3, 20.11.7, 19.11.14 ] + steps: + + # Cache Rust stuff. + - name: Cache cargo registry + uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 + with: + path: ~/.cargo/registry + key: cargo-registry + + - name: Install dependencies + run: | + apt update + apt -y install \ + libpcre2-dev \ + build-essential \ + autoconf \ + automake \ + cargo \ + git \ + jq \ + libtool \ + libpcap-dev \ + libnet1-dev \ + libyaml-0-2 \ + libyaml-dev \ + libcap-ng-dev \ + libcap-ng0 \ + libmagic-dev \ + libnetfilter-queue-dev \ + libnetfilter-queue1 \ + libnfnetlink-dev \ + libnfnetlink0 \ + libhiredis-dev \ + libjansson-dev \ + libevent-dev \ + libevent-pthreads-2.1-7 \ + libjansson-dev \ + libpython2.7 \ + make \ + parallel \ + python3-yaml \ + rustc \ + software-properties-common \ + zlib1g \ + zlib1g-dev \ + exuberant-ctags + - name: Install DPDK dependencies + run: | + apt update + apt install -y \ + curl \ + build-essential \ + libnuma-dev \ + ninja-build \ + meson \ + python3-pip \ + python3-pyelftools \ + python3-setuptools \ + python3-wheel + + - name: Compile and install DPDK + run: | + cd $HOME + rm -rf dpdk_${{ matrix.dpdk_version }} + find /usr/ -name 'librte_*.a' -delete + mkdir -p dpdk_${{ matrix.dpdk_version }} && cd dpdk_${{ matrix.dpdk_version }} + curl -fsLS https://fast.dpdk.org/rel/dpdk-${{ matrix.dpdk_version }}.tar.xz | tar -xJ --strip-components=1 + rm -rf build/ + meson setup -Dtests=false --prefix=/usr/ build + ninja -C build + ninja -C build install + ldconfig + cd $HOME + - uses: actions/checkout@v3.3.0 + - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: prep + path: prep + - run: tar xf prep/libhtp.tar.gz + - name: Setup cbindgen + run: | + mkdir -p $HOME/.cargo/bin + cp prep/cbindgen $HOME/.cargo/bin + chmod 755 $HOME/.cargo/bin/cbindgen + echo "$HOME/.cargo/bin" >> $GITHUB_PATH + - run: ./autogen.sh + - run: CFLAGS="${DEFAULT_CFLAGS}" ./configure --enable-dpdk + - run: make -j2 + - run: make check + debian-10: name: Debian 10 runs-on: ubuntu-latest