diff --git a/.appveyor.yml b/.appveyor.yml index 8c9d15b..a16d8ad 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,9 +1,9 @@ version: '{build}' +image: Visual Studio 2015 + cache: -- x86_64-4.9.2-release-win32-seh-rt_v4-rev4.7z -- i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z -- Nim +- NimBinaries matrix: # We always want 32 and 64-bit compilation @@ -13,74 +13,27 @@ platform: - x86 - x64 +# when multiple CI builds are queued, the tested commit needs to be in the last X commits cloned with "--depth X" +clone_depth: 10 + install: - git submodule update --init --recursive - - setlocal EnableExtensions EnableDelayedExpansion - - IF "%PLATFORM%" == "x86" ( - SET "MINGW_ARCHIVE=i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z" & - SET "MINGW_URL=https://sourceforge.net/projects/mingw-w64/files/Toolchains%%20targetting%%20Win32/Personal%%20Builds/mingw-builds/4.9.2/threads-win32/dwarf/i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z" & - SET "MINGW_DIR=mingw32" - ) ELSE ( - IF "%PLATFORM%" == "x64" ( - SET "MINGW_ARCHIVE=x86_64-4.9.2-release-win32-seh-rt_v4-rev4.7z" & - SET "MINGW_URL=https://sourceforge.net/projects/mingw-w64/files/Toolchains%%20targetting%%20Win64/Personal%%20Builds/mingw-builds/4.9.2/threads-win32/seh/x86_64-4.9.2-release-win32-seh-rt_v4-rev4.7z" & - SET "MINGW_DIR=mingw64" - ) else ( - echo "Unknown platform" - ) - ) - - - SET PATH=%CD%\%MINGW_DIR%\bin;%CD%\Nim\bin;%PATH% - - # Unpack mingw - - IF NOT EXIST "%MINGW_ARCHIVE%" appveyor DownloadFile "%MINGW_URL%" -FileName "%MINGW_ARCHIVE%" - - 7z x -y "%MINGW_ARCHIVE%" > nul + # use the newest versions documented here: https://www.appveyor.com/docs/windows-images-software/#mingw-msys-cygwin + - IF "%PLATFORM%" == "x86" SET PATH=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH% + - IF "%PLATFORM%" == "x64" SET PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH% # build nim from our own branch - this to avoid the day-to-day churn and # regressions of the fast-paced Nim development while maintaining the # flexibility to apply patches - - SET "NEED_REBUILD=" - - - IF NOT EXIST "Nim\\.git\\" ( - git clone https://github.com/status-im/Nim.git - ) ELSE ( - ( cd Nim ) & - ( git pull ) & - ( cd .. ) - ) - - # Rebuild Nim if HEAD has moved or if we don't yet have a cached version - - IF NOT EXIST "Nim\\ver.txt" ( - SET NEED_REBUILD=1 - ) ELSE ( - ( CD Nim ) & - ( git rev-parse HEAD > ..\\cur_ver.txt ) & - ( fc ver.txt ..\\cur_ver.txt || SET NEED_REBUILD=1 ) & - ( cd .. ) - ) - - - IF NOT EXIST "Nim\\bin\\nim.exe" SET NEED_REBUILD=1 - - IF NOT EXIST "Nim\\bin\\nimble.exe" SET NEED_REBUILD=1 - - # after building nim, wipe csources to save on cache space - - IF DEFINED NEED_REBUILD ( - cd Nim & - ( IF EXIST "csources" rmdir /s /q csources ) & - git clone --depth 1 https://github.com/nim-lang/csources & - cd csources & - ( IF "%PLATFORM%" == "x64" ( build64.bat ) else ( build.bat ) ) & - cd .. & - bin\nim c koch & - koch boot -d:release & - koch nimble & - git rev-parse HEAD > ver.txt & - rmdir /s /q csources - ) + - curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus/devel/build_nim.sh + - env MAKE="mingw32-make -j2" ARCH_OVERRIDE=%PLATFORM% bash build_nim.sh Nim csources dist/nimble NimBinaries + - SET PATH=%CD%\Nim\bin;%PATH% build_script: - cd C:\projects\%APPVEYOR_PROJECT_SLUG% - nimble install -y + test_script: - nimble test diff --git a/.travis.yml b/.travis.yml index 490c9d6..277aa91 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,15 @@ -language: c # or other C/C++ variants - -# xenial is required for GO 1.11.x -# dist: xenial -sudo: false +language: c # https://docs.travis-ci.com/user/caching/ -# -# Caching the whole nim folder is better than relying on ccache - this way, we -# skip the expensive bootstrap process and linking cache: directories: - - nim + - NimBinaries - $HOME/go/src/gx +git: + # when multiple CI builds are queued, the tested commit needs to be in the last X commits cloned with "--depth X" + depth: 10 + matrix: include: - os: linux @@ -26,25 +23,14 @@ matrix: update: true before_install: - export GOPATH=$HOME/go + install: # build nim from our own branch - this to avoid the day-to-day churn and # regressions of the fast-paced Nim development while maintaining the # flexibility to apply patches - # - # check version of remote branch - - "export NIMVER=$(git ls-remote https://github.com/status-im/nim.git HEAD | cut -f 1)" - - # after building nim, wipe csources to save on cache space - - "{ [ -f nim/$NIMVER/bin/nim ] && [ -f nim/$NIMVER/bin/nimble ] ; } || - { rm -rf nim ; - mkdir -p nim ; - git clone --depth=1 https://github.com/status-im/nim.git nim/$NIMVER ; - cd nim/$NIMVER ; - sh build_all.sh ; - rm -rf csources ; - cd ../.. ; - }" - - export PATH=$PWD/nim/$NIMVER/bin:$GOPATH/bin:$PATH + - curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus/devel/build_nim.sh + - env MAKE="make -j2" bash build_nim.sh Nim csources dist/nimble NimBinaries + - export PATH="$PWD/Nim/bin:$GOPATH/bin:$PATH" - go version - git clone https://github.com/libp2p/go-libp2p-daemon - cd go-libp2p-daemon