From 932e5dedc248782146cb3ab14292948fff306332 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 19 Feb 2019 09:44:14 +0100 Subject: [PATCH] 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. --- appveyor.yml | 114 ++++++++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 52 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 3419d1c98e..54709ccfd7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -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