-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a33b72a
commit 8578e7d
Showing
1 changed file
with
153 additions
and
148 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,148 +1,153 @@ | ||
strategy: | ||
matrix: | ||
Linux_amd64: | ||
vmImage: 'ubuntu-16.04' | ||
CPU: amd64 | ||
Linux_i386: | ||
vmImage: 'ubuntu-16.04' | ||
CPU: i386 | ||
OSX_amd64: | ||
vmImage: 'macOS-10.14' | ||
CPU: amd64 | ||
OSX_amd64_cpp: | ||
vmImage: 'macOS-10.14' | ||
CPU: amd64 | ||
NIM_COMPILE_TO_CPP: true | ||
Windows_amd64: | ||
vmImage: 'windows-2019' | ||
CPU: amd64 | ||
Windows_amd64_pkg: | ||
vmImage: 'windows-2019' | ||
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 | ||
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 | ||
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) | ||
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.14' | ||
CPU: amd64 | ||
OSX_amd64_cpp: | ||
vmImage: 'macOS-10.14' | ||
CPU: amd64 | ||
NIM_COMPILE_TO_CPP: true | ||
Windows_amd64: | ||
vmImage: 'windows-2019' | ||
CPU: amd64 | ||
Windows_amd64_pkg: | ||
vmImage: 'windows-2019' | ||
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 | ||
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 | ||
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) |