]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
github-ci: add windows build with suricata-verify
authorVictor Julien <victor@inliniac.net>
Thu, 29 Oct 2020 07:02:50 +0000 (08:02 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 4 Nov 2020 15:30:41 +0000 (16:30 +0100)
Initial attempt with a few hacks:
- npcap dlls are extracted from the installer and placed in cwd
- cbindgen is installed system wide desipte a preinstalled copy

This does not yet hook into the "prep" build from build.yaml or
support using custom support PRs/branches (SV, SU).

.github/workflows/windows.yml [new file with mode: 0644]

diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
new file mode 100644 (file)
index 0000000..110d1dc
--- /dev/null
@@ -0,0 +1,52 @@
+name: Windows
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    defaults:
+      run:
+        shell: msys2 {0}
+    steps:
+      - uses: actions/checkout@v2
+      - uses: msys2/setup-msys2@v2
+        with:
+          msystem: MINGW64
+          update: true
+          install: git mingw-w64-x86_64-toolchain automake1.16 automake-wrapper autoconf libtool libyaml-devel pcre-devel jansson-devel make mingw-w64-x86_64-libyaml mingw-w64-x86_64-pcre mingw-w64-x86_64-rust mingw-w64-x86_64-jansson mingw-w64-x86_64-nss mingw-w64-x86_64-nspr unzip p7zip python-setuptools mingw-w64-x86_64-python-yaml mingw-w64-x86_64-jq
+      # hack: install our own cbindgen system wide as we can't get the
+      # preinstalled one to be picked up by configure
+      - name: cbindgen
+        run: cargo install --root /usr --force --debug --version 0.14.1 cbindgen
+      - name: Npcap DLL
+        run: |
+          curl -s -O https://nmap.org/npcap/dist/npcap-1.00.exe
+          7z -y x -o/npcap-bin npcap-1.00.exe
+          # hack: place dlls in cwd
+          cp /npcap-bin/*.dll .
+      - name: Npcap SDK
+        run: |
+          curl -s -O https://nmap.org/npcap/dist/npcap-sdk-1.06.zip
+          unzip npcap-sdk-1.06.zip -d /npcap
+          cp /npcap/Lib/x64/* /usr/lib/
+      - name: libhtp
+        run: git clone https://github.com/OISF/libhtp -b 0.5.x
+      - name: Suricata-Update
+        run: |
+          mv suricata-update suricata-update.old
+          git clone https://github.com/OISF/suricata-update
+          # make sure to place the makefiles back
+          cp suricata-update.old/* suricata-update/
+      - name: Suricata-Verify
+        run: git clone https://github.com/OISF/suricata-verify
+      - name: Build
+        run: |
+          ./autogen.sh
+          CFLAGS="-ggdb -Werror" ./configure --enable-unittests --enable-gccprotect --disable-gccmarch-native --disable-shared --with-libpcap-includes=/npcap/Include --with-libpcap-libraries=/npcap/Lib/x64
+          make -j3
+      - name: Run
+        run: |
+          ./src/suricata --build-info
+          ./src/suricata -u -l /tmp/
+          # need cwd in path due to npcap dlls (see above)
+          PATH="$PATH:$(pwd)" python3 ./suricata-verify/run.py