diff --git a/.travis.yml b/.travis.yml index b6807555..2b871274 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,9 @@ matrix: packages: - doxygen - os: osx + - os: windows + cache: + - ccache: false compiler: - clang @@ -30,16 +33,20 @@ before_install: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update && brew install qt5 && brew cask install xquartz && brew install rust; fi - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart; fi - if [ "$TRAVIS_OS_NAME" = "linux" ]; then ci/build-docker-image.sh docker/ci/Dockerfile nanocurrency/nano-ci; fi + - if [ "$TRAVIS_OS_NAME" = "windows" ]; then choco install -y nuget.commandline; fi install: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install ccache; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi + - if [ "$TRAVIS_OS_NAME" = "windows" ]; then util/build_prep/windows/prep.sh; fi script: - if [ -n "$ONE_TIME_TESTS" ]; then ci/check-commit-format.sh; fi - if [ -n "$ONE_TIME_TESTS" ]; then doxygen doxygen.config; fi # TODO also deploy the built HTML - if [ "$TRAVIS_OS_NAME" = "osx" ]; then ci/build-travis.sh "/usr/local/opt/qt5/lib/cmake/Qt5"; fi - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v $TRAVIS_BUILD_DIR:/workspace -v $HOME/.ccache:/ccache -v $HOME/.cargo:/cargo nanocurrency/nano-ci /bin/bash -c "apt install ccache; cd /workspace && ASAN=${ASAN} TSAN=${TSAN} CCACHE_DIR=/ccache CARGO_HOME=/cargo ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"; fi + - if [ "$TRAVIS_OS_NAME" = "windows" ]; then ./ci/build-travis-win.sh; fi + - if [ "$TRAVIS_OS_NAME" = "windows" ]; then ./ci/test.sh ./build_win/Debug; fi deploy: provider: script diff --git a/ci/build-travis-win.sh b/ci/build-travis-win.sh new file mode 100644 index 00000000..abfe3e33 --- /dev/null +++ b/ci/build-travis-win.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +export PATH="$PATH:/c/Program Files (x86)/Microsoft Visual Studio/Installer/" +export MSVC=$(vswhere -latest -products "*" -requires Microsoft.Component.MSBuild -property installationPath) +export MSVC=$(echo /$MSVC | sed -e 's/\\/\//g' -e 's/://') +export PATH="$PATH:$MSVC/MSBuild/15.0/Bin/" + +NANO_ROOT=`PWD` +mkdir build_win +cd build_win + +cmake \ + -G'Visual Studio 15 2017 Win64' \ + -DACTIVE_NETWORK=nano_test_network \ + -DNANO_TEST=ON \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DBOOST_ROOT="~/platform/boost/" \ + -DIPHLPAPI_LIBRARY="/c/Program Files (x86)/Windows Kits/10/Lib/10.0.17134.0/um/x64/iphlpapi.Lib" \ + -DWINSOCK2_LIBRARY="/c/Program Files (x86)/Windows Kits/10/Lib/10.0.17134.0/um/x64/WS2_32.Lib" \ + -Dgtest_force_shared_crt=true \ + $NANO_ROOT + +cmd.exe /C "MSBuild.exe \"nano/core_test/core_test.vcxproj\" /m" diff --git a/ci/packages.config b/ci/packages.config new file mode 100644 index 00000000..5d28b5de --- /dev/null +++ b/ci/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/ci/test.sh b/ci/test.sh index ebcc01db..168ad0f7 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -58,7 +58,15 @@ run_tests() { sleep $[60 + (${RANDOM} % 30)] fi - ${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-${TIMEOUT_DEFAULT}} ./core_test + case "${OSTYPE}" in + msys|cygwin) + executableSuffix='.exe' + ;; + *) + executableSuffix='' + ;; + esac + ${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-${TIMEOUT_DEFAULT}} ./core_test${executableSuffix} core_test_res=${?} if [ "${core_test_res}" = '0' ]; then break diff --git a/util/build_prep/windows/packages.config b/util/build_prep/windows/packages.config new file mode 100644 index 00000000..b6b14625 --- /dev/null +++ b/util/build_prep/windows/packages.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/util/build_prep/windows/prep.sh b/util/build_prep/windows/prep.sh new file mode 100644 index 00000000..256b7ba6 --- /dev/null +++ b/util/build_prep/windows/prep.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +mkdir -p ~/platform/boost/lib +nuget install ./util/build_prep/windows/packages.config -ExcludeVersion -OutputDirectory ~/tmp +cp ~/tmp/boost_*/lib/native/libboost*.lib ~/platform/boost/lib +mv ~/tmp/boost/lib/native/include/* ~/platform/boost/