mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
Followup to #24154, packages aren't ready for macos 14 (M1/ARM CPU) yet and it seems to be preview on azure, so upgrade to macos 13 for now. Macos 12 gives a warning: ``` You are using macOS 12. We (and Apple) do not provide support for this old version. It is expected behaviour that some formulae will fail to build in this old version. It is expected behaviour that Homebrew will be buggy and slow. Do not create any issues about this on Homebrew's GitHub repositories. Do not create any issues even if you think this message is unrelated. Any opened issues will be immediately closed without response. Do not ask for help from Homebrew or its maintainers on social media. You may ask for help in Homebrew's discussions but are unlikely to receive a response. Try to figure out the problem yourself and submit a fix as a pull request. We will review it but may or may not accept it. ```
170 lines
5.5 KiB
YAML
170 lines
5.5 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-13'
|
|
CPU: amd64
|
|
OSX_amd64_cpp:
|
|
vmImage: 'macOS-13'
|
|
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'))
|
|
# XXX can't find boehm on macos 13
|
|
|
|
- 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)
|