mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* don't run azure on other branches either refs #20184 Azure is more prone to clogging & it's especially bad with the timeouts (some PRs haven't rebased). * allow all version- branches Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> * add closing quote Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
169 lines
5.4 KiB
YAML
169 lines
5.4 KiB
YAML
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-11'
|
|
CPU: amd64
|
|
OSX_amd64_cpp:
|
|
vmImage: 'macOS-11'
|
|
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: '16.x'
|
|
displayName: 'Install node.js 16.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)
|