mirror of https://github.com/OISF/suricata
windows: msys/mingw based appveyor support
Add rust but have it disabled as it is broken. Add windivert, winpcap and npcap builds. Run unittests on one of the builds. Use reasonably strict CFLAGS.pull/3669/head
parent
d143ac6e89
commit
932e5dedc2
@ -1,61 +1,71 @@
|
||||
# Based on https://github.com/redis/hiredis/blob/master/appveyor.yml
|
||||
# and https://github.com/dokan-dev/dokany/pull/336/files
|
||||
# Appveyor configuration file for CI build of hiredis on Windows (under Cygwin)
|
||||
environment:
|
||||
matrix:
|
||||
# - CYG_ROOT: C:\cygwin64
|
||||
# CYG_SETUP: setup-x86_64.exe
|
||||
# CYG_MIRROR: http://cygwin.mirror.constant.com
|
||||
# CYG_CACHE: C:\cygwin64\var\cache\setup
|
||||
# CYG_BASH: C:\cygwin64\bin\bash
|
||||
# CC: gcc
|
||||
- CYG_ROOT: C:\cygwin
|
||||
CYG_SETUP: setup-x86.exe
|
||||
CYG_MIRROR: http://cygwin.mirror.constant.com
|
||||
CYG_CACHE: C:\cygwin\var\cache\setup
|
||||
CYG_BASH: C:\cygwin\bin\bash
|
||||
CC: gcc
|
||||
CFLAGS: -Wall -Wextra -Werror -Wshadow -Wno-unused-parameter -Wno-unused-function
|
||||
matrix:
|
||||
- COMPILER: mingw-w64
|
||||
PCAP_URL: https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
|
||||
PCAP_FILE: WpdPack_4_1_2.zip
|
||||
PCAP_EXTRACT: c:\
|
||||
PCAP_PATH: "c:\\WpdPack\\Lib\\x64;c:\\WinDivert-1.4.3-A\\x86_64"
|
||||
CONFIGURE: "--with-libpcap-libraries=/c/WpdPack/Lib/x64 --with-libpcap-includes=/c/WpdPack/Include --enable-windivert --with-windivert-include=/c/WinDivert-1.4.3-A/include --with-windivert-libraries=/c/WinDivert-1.4.3-A/x86_64 --enable-unittests"
|
||||
MINGW_DIR: c:\msys64\mingw64
|
||||
MINGW_ARCH: x86_64
|
||||
RUST: disable
|
||||
WINDIVERT: enable
|
||||
UNITTESTS: enable
|
||||
CFLAGS: -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-function
|
||||
|
||||
# Cache Cygwin files to speed up build
|
||||
cache:
|
||||
- '%CYG_CACHE%'
|
||||
clone_depth: 1
|
||||
- COMPILER: mingw
|
||||
PCAP_URL: https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
|
||||
PCAP_FILE: WpdPack_4_1_2.zip
|
||||
PCAP_EXTRACT: c:\
|
||||
PCAP_PATH: "c:\\WpdPack\\Lib"
|
||||
CONFIGURE: "--with-libpcap-libraries=/c/WpdPack/Lib --with-libpcap-includes=/c/WpdPack/Include"
|
||||
MINGW_DIR: c:\msys64\mingw32
|
||||
MINGW_ARCH: i686
|
||||
RUST: disable
|
||||
WINDIVERT: disable
|
||||
UNITTESTS: disable
|
||||
CFLAGS: -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-function
|
||||
|
||||
# Attempt to ensure we don't try to convert line endings to Win32 CRLF as this will cause build to fail
|
||||
init:
|
||||
- git config --global core.autocrlf input
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
- COMPILER: mingw-w64
|
||||
PCAP_URL: https://nmap.org/npcap/dist/npcap-sdk-1.01.zip
|
||||
PCAP_FILE: npcap-sdk-1.01.zip
|
||||
PCAP_EXTRACT: c:\npcap\
|
||||
PCAP_PATH: "c:\\npcap\\Lib\\x64"
|
||||
CONFIGURE: "--with-libpcap-libraries=/c/npcap/Lib/x64 --with-libpcap-includes=/c/npcap/Include"
|
||||
MINGW_DIR: c:\msys64\mingw64
|
||||
MINGW_ARCH: x86_64
|
||||
RUST: disable
|
||||
WINDIVERT: disable
|
||||
UNITTESTS: disable
|
||||
CFLAGS: -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-function
|
||||
|
||||
before_build:
|
||||
- set Path=%MINGW_DIR%\bin;%Path%
|
||||
- c:\msys64\usr\bin\pacman -Su --noconfirm libyaml-devel pcre-devel jansson-devel
|
||||
- c:\msys64\usr\bin\pacman -Su --noconfirm mingw-w64-"%MINGW_ARCH%"-libyaml
|
||||
- c:\msys64\usr\bin\pacman -Su --noconfirm mingw-w64-"%MINGW_ARCH%"-pcre
|
||||
- c:\msys64\usr\bin\pacman -Su --noconfirm mingw-w64-"%MINGW_ARCH%"-rust
|
||||
- c:\msys64\usr\bin\pacman -Su --noconfirm mingw-w64-"%MINGW_ARCH%"-jansson
|
||||
|
||||
# Install needed build dependencies. First update cygwin to avoid weird dll issues.
|
||||
install:
|
||||
- ps: 'Start-FileDownload "http://cygwin.com/$env:CYG_SETUP" -FileName "$env:CYG_SETUP"'
|
||||
- '%CYG_SETUP% -gqnNdO --quiet-mode --no-shortcuts --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" > NUL 2>&1'
|
||||
- '%CYG_SETUP% --quiet-mode --no-shortcuts --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" --packages automake,bison,gcc-core,libtool,make,gettext-devel,gettext,intltool,pkg-config,clang,llvm,libpcre-devel,file-devel,wget,zlib-devel,libnss-devel,libnspr-devel,libGeoIP-devel,libyaml-devel,luajit-devel,unzip,libiconv,libiconv-devel > NUL 2>&1'
|
||||
- '%CYG_BASH% -lc "cygcheck -dc cygwin"'
|
||||
- '%CYG_BASH% -lc "wget https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip && ls && unzip WpdPack_4_1_2.zip"'
|
||||
- '%CYG_BASH% -lc "cp WpdPack/Lib/libpacket.a /usr/lib/"'
|
||||
- '%CYG_BASH% -lc "cp WpdPack/Lib/libwpcap.a /usr/lib/libpcap.a"' # so -lpcap works
|
||||
# - '%CYG_BASH% -lc "cp WpdPack/Lib/libwpcap.a /usr/lib/libwpcap.a"'
|
||||
- '%CYG_BASH% -lc "cp WpdPack/Lib/Packet.lib /usr/lib/"'
|
||||
- '%CYG_BASH% -lc "cp WpdPack/Lib/wpcap.lib /usr/lib/"'
|
||||
- '%CYG_BASH% -lc "mkdir -p /usr/include/pcap"'
|
||||
- '%CYG_BASH% -lc "cp -r WpdPack/Include/* /usr/include/"'
|
||||
- choco install winpcap # userspace
|
||||
- choco install winpcap # winpcap userspace
|
||||
- if not exist "%PCAP_FILE%" appveyor DownloadFile "%PCAP_URL%" -FileName "%PCAP_FILE%"
|
||||
- 7z x -y -o%PCAP_EXTRACT% "%PCAP_FILE%"
|
||||
- if "%WINDIVERT%"=="enable" appveyor DownloadFile https://reqrypt.org/download/WinDivert-1.4.3-A.zip -FileName windivert.zip
|
||||
- if "%WINDIVERT%"=="enable" 7z x -y -oc:\ windivert.zip
|
||||
|
||||
build_script:
|
||||
- 'echo building...'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; bash ./qa/travis-libhtp.sh"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; ./autogen.sh"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; ./configure --enable-unittests --disable-shared --disable-gccmarch-native --enable-luajit --enable-geoip"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; exec 0</dev/null; make -j3 LDFLAGS=$LDFLAGS CC=$CC CFLAGS=$CFLAGS"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; file src/suricata.exe"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; ldd src/suricata.exe"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; src/suricata.exe --build-info"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; src/suricata.exe -u -l /tmp/"'
|
||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; exec 0</dev/null; make -j3 DISTCHECK_CONFIGURE_FLAGS="--enable-unittests --disable-shared --disable-gccmarch-native" LDFLAGS=$LDFLAGS CC=$CC distcheck CFLAGS=$CFLAGS"'
|
||||
- set Path=%MINGW_DIR%\bin;c:\msys64\usr\bin;%PCAP_PATH%;%Path%
|
||||
- git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||
- bash autogen.sh
|
||||
- bash configure %CONFIGURE% --disable-shared --%RUST%-rust
|
||||
- make -j3
|
||||
- ldd src\suricata
|
||||
- src\suricata --build-info
|
||||
- if "%UNITTESTS%"=="enable" src\suricata -u -l %TEMP% --fatal-unittests
|
||||
|
||||
#on_finish:
|
||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
# - '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; cat config.log"'
|
||||
artifacts:
|
||||
- path: '*.zip'
|
||||
|
||||
#on_finish:
|
||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
Loading…
Reference in New Issue