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
Victor Julien 7 years ago
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…
Cancel
Save