trigger: branches: include: - '*' pr: branches: include: - '*' jobs: - job: packages timeoutInMinutes: 90 # default `60` led to lots of cancelled jobs; use 0 for unlimited (may be undesirable) strategy: matrix: Linux_amd64: vmImage: 'ubuntu-16.04' CPU: amd64 Linux_i386: vmImage: 'ubuntu-16.04' CPU: i386 OSX_amd64: vmImage: 'macOS-10.15' CPU: amd64 OSX_amd64_cpp: vmImage: 'macOS-10.15' CPU: amd64 NIM_COMPILE_TO_CPP: true Windows_amd64: vmImage: 'windows-2019' CPU: amd64 Linux_amd64_pkg: vmImage: 'ubuntu-16.04' CPU: amd64 NIM_TEST_PACKAGES: true OSX_amd64_pkg: vmImage: 'macOS-10.15' CPU: amd64 NIM_TEST_PACKAGES: true pool: vmImage: $(vmImage) workspace: clean: all steps: - bash: git config --global core.autocrlf false displayName: 'Disable auto conversion to CRLF by git (Windows-only)' condition: eq(variables['Agent.OS'], 'Windows_NT') - checkout: self - bash: git clone --depth 1 https://github.com/nim-lang/csources.git displayName: 'Checkout csources' - task: NodeTool@0 inputs: versionSpec: '8.x' displayName: 'Install node.js 8.x' - bash: | sudo apt-fast update -qq DEBIAN_FRONTEND='noninteractive' \ sudo apt-fast install --no-install-recommends -yq \ libcurl4-openssl-dev libgc-dev libsdl1.2-dev libsfml-dev valgrind libc6-dbg displayName: 'Install dependencies (amd64 Linux)' condition: and(eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64')) - bash: | sudo dpkg --add-architecture i386 # Downgrade llvm, libgcc and libstdc++: # - llvm has to be downgraded to have 32bit version installed for sfml. # - libgcc and libstdc++ have to be downgraded as an optimization to # prevent the use of the toolchain ppa, which has a terrible download # speed. cat << EOF | sudo tee /etc/apt/preferences.d/pin-to-rel Package: libllvm6.0 libgcc1 libstdc++6 Pin: origin "azure.archive.ubuntu.com" Pin-Priority: 1001 Package: * Pin: release o=LP-PPA-ubuntu-toolchain-r-test Pin-Priority: 100 EOF sudo apt-fast update -qq # `:i386` (e.g. in `libffi-dev:i386`) is needed otherwise you may get: # `could not load: libffi.so` during dynamic loading. DEBIAN_FRONTEND='noninteractive' \ sudo apt-fast install --no-install-recommends --allow-downgrades -yq \ g++-multilib gcc-multilib libcurl4-openssl-dev:i386 libgc-dev:i386 \ libsdl1.2-dev:i386 libsfml-dev:i386 libglib2.0-dev:i386 libffi-dev:i386 cat << EOF > bin/gcc #!/bin/bash exec $(which gcc) -m32 "\$@" EOF cat << EOF > bin/g++ #!/bin/bash exec $(which g++) -m32 "\$@" EOF chmod 755 bin/gcc chmod 755 bin/g++ displayName: 'Install dependencies (i386 Linux)' condition: and(eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'i386')) - bash: brew install boehmgc make sfml displayName: 'Install dependencies (OSX)' condition: eq(variables['Agent.OS'], 'Darwin') - bash: | mkdir dist curl -L https://nim-lang.org/download/mingw64.7z -o dist/mingw64.7z curl -L https://nim-lang.org/download/dlls.zip -o dist/dlls.zip 7z x dist/mingw64.7z -odist 7z x dist/dlls.zip -obin echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin' displayName: 'Install dependencies (Windows)' condition: eq(variables['Agent.OS'], 'Windows_NT') - bash: echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/bin' displayName: 'Add build binaries to PATH' - bash: | echo 'PATH:' "$PATH" echo '##[section]gcc version' gcc -v echo '##[section]nodejs version' node -v echo '##[section]make version' make -v displayName: 'System information' - bash: | ncpu= case '$(Agent.OS)' in 'Linux') ncpu=$(nproc) ;; 'Darwin') ncpu=$(sysctl -n hw.ncpu) ;; 'Windows_NT') ncpu=$NUMBER_OF_PROCESSORS ;; esac [[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1 make -C csources -j $ncpu CC=gcc ucpu=$(CPU) displayName: 'Build csources' - bash: nim c koch displayName: 'Build koch' # set result to omit the "bash exited with error code '1'" message - bash: | ./koch runCI || echo '##vso[task.complete result=Failed]' displayName: 'Run CI' env: SYSTEM_ACCESSTOKEN: $(System.AccessToken)