123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- trigger:
- branches:
- include:
- - 'devel'
- - 'version-*'
- pr:
- branches:
- include:
- - '*'
- variables:
- - name: skipci
- value: false
- 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-20.04'
- CPU: amd64
- # regularly breaks, refs bug #17325
- # Linux_i386:
- # # on 'ubuntu-16.04' (not supported anymore anyways) it errored with:
- # # g++-multilib : Depends: gcc-multilib (>= 4:5.3.1-1ubuntu1) but it is not going to be installed
- # vmImage: 'ubuntu-18.04'
- # CPU: i386
- OSX_amd64:
- vmImage: 'macOS-12'
- CPU: amd64
- OSX_amd64_cpp:
- vmImage: 'macOS-12'
- CPU: amd64
- NIM_COMPILE_TO_CPP: true
- Windows_amd64_batch0_3:
- vmImage: 'windows-2019'
- CPU: amd64
- # see also: `NIM_TEST_PACKAGES`
- NIM_TESTAMENT_BATCH: "0_3"
- Windows_amd64_batch1_3:
- vmImage: 'windows-2019'
- CPU: amd64
- NIM_TESTAMENT_BATCH: "1_3"
- Windows_amd64_batch2_3:
- vmImage: 'windows-2019'
- CPU: amd64
- NIM_TESTAMENT_BATCH: "2_3"
- 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: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
- - checkout: self
- fetchDepth: 2 # see D20210329T004830
- - bash: |
- set -e
- . ci/funs.sh
- if nimIsCiSkip; then
- echo '##vso[task.setvariable variable=skipci]true'
- fi
- displayName: 'Check whether to skip CI'
- - task: NodeTool@0
- inputs:
- versionSpec: '20.x'
- displayName: 'Install node.js 20.x'
- condition: and(succeeded(), eq(variables['skipci'], 'false'))
- - bash: |
- set -e
- . ci/funs.sh
- echo_run sudo apt-fast update -qq
- DEBIAN_FRONTEND='noninteractive' \
- echo_run 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(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'amd64'))
- - bash: |
- set -e
- . ci/funs.sh
- echo_run sudo dpkg --add-architecture i386
- # Downgrade llvm:
- # - llvm has to be downgraded to have 32bit version installed for sfml.
- cat << EOF | sudo tee /etc/apt/preferences.d/pin-to-rel
- Package: libllvm6.0
- Pin: origin "azure.archive.ubuntu.com"
- Pin-Priority: 1001
- EOF
- # echo_run sudo apt-fast update -qq
- echo_run sudo apt-fast update -qq || echo "failed, see bug #17343"
- # `:i386` (e.g. in `libffi-dev:i386`) is needed otherwise you may get:
- # `could not load: libffi.so` during dynamic loading.
- DEBIAN_FRONTEND='noninteractive' \
- echo_run 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
- echo_run chmod 755 bin/gcc
- echo_run chmod 755 bin/g++
- displayName: 'Install dependencies (i386 Linux)'
- condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Linux'), eq(variables['CPU'], 'i386'))
- - bash: brew install boehmgc make sfml
- displayName: 'Install dependencies (OSX)'
- condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Darwin'))
- - bash: |
- set -e
- . ci/funs.sh
- nimInternalInstallDepsWindows
- echo_run echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/dist/mingw64/bin'
- displayName: 'Install dependencies (Windows)'
- condition: and(succeeded(), eq(variables['skipci'], 'false'), eq(variables['Agent.OS'], 'Windows_NT'))
- - bash: echo '##vso[task.prependpath]$(System.DefaultWorkingDirectory)/bin'
- condition: and(succeeded(), eq(variables['skipci'], 'false'))
- displayName: 'Add build binaries to PATH'
- - bash: . ci/funs.sh && nimCiSystemInfo
- condition: and(succeeded(), eq(variables['skipci'], 'false'))
- displayName: 'System information'
- - bash: . ci/funs.sh && nimBuildCsourcesIfNeeded CC=gcc ucpu=$(CPU)
- condition: and(succeeded(), eq(variables['skipci'], 'false'))
- displayName: 'Build csourcesAny'
- # this could be revived if performance justifies it (needs a few updates)
- # - task: Cache@2
- # inputs:
- # key: 'csourcesAny | "$(Agent.OS)" | $(CPU) | $(csources_version)'
- # path: $(nim_csources)
- # condition: and(succeeded(), eq(variables['skipci'], 'false'))
- # displayName: 'Restore built csourcesAny'
- - bash: . ci/funs.sh && nimInternalBuildKochAndRunCI
- # would could also show on failure: echo '##vso[task.complete result=Failed]'
- condition: and(succeeded(), eq(variables['skipci'], 'false'))
- displayName: 'koch, Run CI'
- env:
- SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|