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:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
# - CYG_ROOT: C:\cygwin64
|
- COMPILER: mingw-w64
|
||||||
# CYG_SETUP: setup-x86_64.exe
|
PCAP_URL: https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
|
||||||
# CYG_MIRROR: http://cygwin.mirror.constant.com
|
PCAP_FILE: WpdPack_4_1_2.zip
|
||||||
# CYG_CACHE: C:\cygwin64\var\cache\setup
|
PCAP_EXTRACT: c:\
|
||||||
# CYG_BASH: C:\cygwin64\bin\bash
|
PCAP_PATH: "c:\\WpdPack\\Lib\\x64;c:\\WinDivert-1.4.3-A\\x86_64"
|
||||||
# CC: gcc
|
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"
|
||||||
- CYG_ROOT: C:\cygwin
|
MINGW_DIR: c:\msys64\mingw64
|
||||||
CYG_SETUP: setup-x86.exe
|
MINGW_ARCH: x86_64
|
||||||
CYG_MIRROR: http://cygwin.mirror.constant.com
|
RUST: disable
|
||||||
CYG_CACHE: C:\cygwin\var\cache\setup
|
WINDIVERT: enable
|
||||||
CYG_BASH: C:\cygwin\bin\bash
|
UNITTESTS: enable
|
||||||
CC: gcc
|
CFLAGS: -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-function
|
||||||
CFLAGS: -Wall -Wextra -Werror -Wshadow -Wno-unused-parameter -Wno-unused-function
|
|
||||||
|
|
||||||
# Cache Cygwin files to speed up build
|
- COMPILER: mingw
|
||||||
cache:
|
PCAP_URL: https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
|
||||||
- '%CYG_CACHE%'
|
PCAP_FILE: WpdPack_4_1_2.zip
|
||||||
clone_depth: 1
|
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
|
- COMPILER: mingw-w64
|
||||||
init:
|
PCAP_URL: https://nmap.org/npcap/dist/npcap-sdk-1.01.zip
|
||||||
- git config --global core.autocrlf input
|
PCAP_FILE: npcap-sdk-1.01.zip
|
||||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
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:
|
install:
|
||||||
- ps: 'Start-FileDownload "http://cygwin.com/$env:CYG_SETUP" -FileName "$env:CYG_SETUP"'
|
- choco install winpcap # winpcap userspace
|
||||||
- '%CYG_SETUP% -gqnNdO --quiet-mode --no-shortcuts --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" > NUL 2>&1'
|
- if not exist "%PCAP_FILE%" appveyor DownloadFile "%PCAP_URL%" -FileName "%PCAP_FILE%"
|
||||||
- '%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'
|
- 7z x -y -o%PCAP_EXTRACT% "%PCAP_FILE%"
|
||||||
- '%CYG_BASH% -lc "cygcheck -dc cygwin"'
|
- if "%WINDIVERT%"=="enable" appveyor DownloadFile https://reqrypt.org/download/WinDivert-1.4.3-A.zip -FileName windivert.zip
|
||||||
- '%CYG_BASH% -lc "wget https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip && ls && unzip WpdPack_4_1_2.zip"'
|
- if "%WINDIVERT%"=="enable" 7z x -y -oc:\ windivert.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
|
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- 'echo building...'
|
- set Path=%MINGW_DIR%\bin;c:\msys64\usr\bin;%PCAP_PATH%;%Path%
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; bash ./qa/travis-libhtp.sh"'
|
- git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; ./autogen.sh"'
|
- bash autogen.sh
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; ./configure --enable-unittests --disable-shared --disable-gccmarch-native --enable-luajit --enable-geoip"'
|
- bash configure %CONFIGURE% --disable-shared --%RUST%-rust
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; exec 0</dev/null; make -j3 LDFLAGS=$LDFLAGS CC=$CC CFLAGS=$CFLAGS"'
|
- make -j3
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; file src/suricata.exe"'
|
- ldd src\suricata
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; ldd src/suricata.exe"'
|
- src\suricata --build-info
|
||||||
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; src/suricata.exe --build-info"'
|
- if "%UNITTESTS%"=="enable" src\suricata -u -l %TEMP% --fatal-unittests
|
||||||
- '%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"'
|
|
||||||
|
|
||||||
#on_finish:
|
artifacts:
|
||||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
- path: '*.zip'
|
||||||
# - '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; cat config.log"'
|
|
||||||
|
|
||||||
|
#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