forked from autc04/Retro68
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazure-pipelines.yml
148 lines (139 loc) · 4.5 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
trigger:
- master
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-20.04'
timeoutInMinutes: 90
steps:
- checkout: self
submodules: true
- script: |
sudo apt-get update
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y \
cmake libgmp-dev libmpfr-dev libmpc-dev \
libboost-all-dev bison texinfo \
ruby flex curl
displayName: 'Install prerequisites'
- script: |
mkdir build
cd build
../build-toolchain.bash
displayName: 'Build'
- script: |
cd build
curl -L -O https://github.com/autc04/executor/releases/download/v0.1.0/Executor2000-0.1.0-Linux.tar.bz2
tar xfvj Executor2000-0.1.0-Linux.tar.bz2 Executor2000-0.1.0-Linux/bin/executor-headless
echo "executor-path=`pwd`/Executor2000-0.1.0-Linux/bin/executor-headless" > ~/.LaunchAPPL.cfg
echo "emulator=executor" >> ~/.LaunchAPPL.cfg
ctest --no-compress-output -T test -E Carbon || true
displayName: Run Tests using Executor 2000
- task: PublishTestResults@2
inputs:
testResultsFormat: 'CTest'
testResultsFiles: build/Testing/**/*.xml
buildPlatform: 'x86_64-linux'
- job: macOS
pool:
vmImage: 'macOS-11'
timeoutInMinutes: 90
steps:
- checkout: self
submodules: true
- script: |
brew install boost cmake gmp mpfr libmpc bison
displayName: 'Brew prerequisites'
- script: |
mkdir build
cd build
../build-toolchain.bash
displayName: Build
- script: |
cd build
curl -L -O https://github.com/autc04/executor/releases/download/v0.1.0/Executor2000-0.1.0-Darwin.tar.bz2
tar xfvj Executor2000-0.1.0-Darwin.tar.bz2 Executor2000-0.1.0-Darwin/bin/executor-headless
echo "executor-path=`pwd`/Executor2000-0.1.0-Darwin/bin/executor-headless" > ~/.LaunchAPPL.cfg
echo "emulator=executor" >> ~/.LaunchAPPL.cfg
ctest --no-compress-output -T test -E Carbon || true
displayName: Run Tests using Executor 2000
- task: PublishTestResults@2
inputs:
testResultsFormat: 'CTest'
testResultsFiles: build/Testing/**/*.xml
buildPlatform: 'x86_64-macos'
- job: NixLinux
strategy:
matrix:
M68K:
TARGET: m68k
PowerPC:
TARGET: powerpc
Carbon:
TARGET: carbon
maxParallel: 2
pool:
vmImage: 'ubuntu-20.04'
steps:
- checkout: self
submodules: true
- script: |
docker run -i --name nix -v`pwd`:/src nixos/nix:2.3.12 <<EOF
nix-env -iA cachix -f https://cachix.org/api/v1/install
cachix use autc04
nix-build src -A ${TARGET}.retro68.samples
EOF
displayName: Build inside nixos/nix docker
- script: |
mkdir CompiledSamples
cd CompiledSamples
docker cp -L nix:result - | tar x --strip-components 1
displayName: Copy result out of docker
- publish: CompiledSamples
artifact: Samples ($(TARGET))
- script: |
docker start nix -i <<EOF || true
set -e
export CACHIX_AUTH_TOKEN=$(CACHIX_AUTH_TOKEN)
cd src
nix-build -A ${TARGET}.retro68.samples | cachix push autc04
nix-shell -A ${TARGET} --command exit
nix-store -qR --include-outputs \$(nix-instantiate default.nix -A ${TARGET}) | cachix push autc04
EOF
displayName: Push to Cachix
condition: and(succeeded(), ne(variables['CACHIX_AUTH_TOKEN'], ''))
- job: NixMac
strategy:
matrix:
M68K:
TARGET: m68k
PowerPC:
TARGET: powerpc
Carbon:
TARGET: carbon
maxParallel: 2
pool:
vmImage: 'macOS-11'
steps:
- script: |
export NIX_EXTRA_CONF="trusted-users = root runner"
sh <(curl -L https://nixos.org/nix/install)
displayName: Install nix
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
nix-env -iA cachix -f https://cachix.org/api/v1/install
cachix use autc04
displayName: setup cachix
- checkout: self
submodules: false
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
nix-build -A $(TARGET).retro68.samples
displayName: build
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
export CACHIX_AUTH_TOKEN=$(CACHIX_AUTH_TOKEN)
nix-build -A $(TARGET).retro68.samples | (cachix push autc04 || true)
nix-shell -A $(TARGET) --command exit
nix-store -qR --include-outputs `nix-instantiate default.nix -A $(TARGET)` | (cachix push autc04 || true)
displayName: Push to Cachix
condition: and(succeeded(), ne(variables['CACHIX_AUTH_TOKEN'], ''))