]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dpdk: add Github action to build Suricata with all available (LTS) DPDK versions
authorLukas Sismis <lsismis@oisf.net>
Wed, 12 Oct 2022 06:23:58 +0000 (08:23 +0200)
committerVictor Julien <vjulien@oisf.net>
Tue, 24 Jan 2023 09:44:49 +0000 (10:44 +0100)
.github/workflows/builds.yml

index cd7116ff633999352cc764c2ced81bda8778e7a1..2c94434b06b619d745f14f21ec71044fd96f0868 100644 (file)
@@ -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