-
Notifications
You must be signed in to change notification settings - Fork 265
/
build_manifest.yml
250 lines (222 loc) · 7.33 KB
/
build_manifest.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# buildDir: Directory path relative to repo root, from which the docker build context is created.
# projectDir: Directory path relative to repo root, to a project directory. This defaults to buildDir, but some paths
# are computed relative to this directory (e.g. terraform directory, rebuild patterns file path).
# dockerfile: Path to a Dockerfile, relative to the buildDir. Defaults to Dockerfile. Useful if you have multiple.
# rebuildPatterns: Either a string to file relative to projectDir containing patterns, or an array of patterns.
# If any changed file path matches any pattern, the project will be rebuilt.
# multiarch: Not defined: no multiarch
# host: Whichever host machine arch (determined in config.yml) determines target arch.
# buildx: Use dockers buildx emulation to build for both x86_64 and arm.
# dependencies: An array of other projects that this project depends on.
# runDependencies: Additional projects that are needed to run a container/compose file. Ensures they're pulled first.
# Builds noir for x86_64 and arm64, creating a runnable container just with nargo + acvm.
noir:
buildDir: noir
dockerfile: Dockerfile.native
rebuildPatterns: .rebuild_patterns_native
multiarch: host
# Builds and runs noir native tests.
noir-tests:
buildDir: noir
dockerfile: Dockerfile.native-test
rebuildPatterns: .rebuild_patterns_native
# Builds just the noir js packages needed by aztec.
noir-packages:
buildDir: noir
dockerfile: Dockerfile.packages
rebuildPatterns: .rebuild_patterns_packages
dependencies:
- bb.js
# Builds and runs *all* noir package tests.
noir-packages-tests:
buildDir: noir
dockerfile: Dockerfile.packages-test
rebuildPatterns: .rebuild_patterns_packages
dependencies:
- noir
- bb.js
- noir-packages
# Builds the brillig to avm transpiler.
avm-transpiler:
buildDir: .
dockerfile: avm-transpiler/Dockerfile
rebuildPatterns:
- ^avm-transpiler/
- ^noir/
# Compiles all aztec noir projects using nargo and the avm-transpiler.
noir-projects:
buildDir: noir-projects
dependencies:
- noir
- avm-transpiler
# Uses nargo to compile all the noir test programs, used to test bb and bb.js.
noir-compile-acir-tests:
buildDir: noir/noir-repo/test_programs
# Awkward. Maybe change dockerfile paths to be absolute.
dockerfile: ../../../barretenberg/acir_tests/Dockerfile.noir_acir_tests
rebuildPatterns:
- ^noir/noir-repo/test_programs
- ^barretenberg/acir_tests/Dockerfile.noir_acir_tests
dependencies:
- noir
# Builds x86_64 bb binary.
barretenberg-x86_64-linux-clang:
buildDir: barretenberg/cpp
dockerfile: dockerfiles/Dockerfile.x86_64-linux-clang
rebuildPatterns: .rebuild_patterns
# Builds all of barretenberg with clang, including tests, with assertions enabled.
barretenberg-x86_64-linux-clang-assert:
buildDir: barretenberg/cpp
dockerfile: dockerfiles/Dockerfile.x86_64-linux-clang-assert
rebuildPatterns: .rebuild_patterns
barretenberg-x86_64-linux-clang-fuzzing:
buildDir: barretenberg/cpp
dockerfile: dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing
rebuildPatterns: .rebuild_patterns
# Builds all of barretenberg with gcc. Ensures compiler compatibility.
barretenberg-x86_64-linux-gcc:
buildDir: barretenberg/cpp
dockerfile: dockerfiles/Dockerfile.x86_64-linux-gcc
rebuildPatterns: .rebuild_patterns
# Builds barretenberg.wasm (single and multithreaded builds).
barretenberg-wasm-linux-clang:
buildDir: barretenberg/cpp
dockerfile: dockerfiles/Dockerfile.wasm-linux-clang
rebuildPatterns: .rebuild_patterns
barretenberg-x86_64-linux-clang-sol:
buildDir: barretenberg
dockerfile: sol/Dockerfile
rebuildPatterns: sol/.rebuild_patterns
# Builds bb.js. Container is runnable for running the tests independently.
bb.js:
buildDir: barretenberg/ts
dependencies:
- barretenberg-wasm-linux-clang
# Runs all the compiled acir tests through native bb.
barretenberg-acir-tests-bb:
buildDir: barretenberg/acir_tests
dockerfile: Dockerfile.bb
dependencies:
- barretenberg-x86_64-linux-clang-assert
- noir-compile-acir-tests
# Uses bb to compute a l1 verifier contract for each acir test, and verifies a test proof on chain.
barretenberg-acir-tests-bb-sol:
buildDir: barretenberg/acir_tests
dockerfile: Dockerfile.bb.sol
dependencies:
- barretenberg-x86_64-linux-clang-assert
- barretenberg-x86_64-linux-clang-sol
- noir-compile-acir-tests
# Runs all the compiled acir tests through bb.js.
barretenberg-acir-tests-bb.js:
buildDir: barretenberg/acir_tests
dockerfile: Dockerfile.bb.js
dependencies:
- bb.js
- noir-compile-acir-tests
barretenberg-bench:
buildDir: barretenberg/cpp
dockerfile: dockerfiles/Dockerfile.bench
dependencies:
- barretenberg-x86_64-linux-clang
barretenberg-docs:
buildDir: barretenberg/cpp
dockerfile: docs/Dockerfile
# Compiles all l1 solidity contracts. Output is JSON abis.
l1-contracts:
buildDir: l1-contracts
# Runs all yarn-projects checks and tests.
yarn-project-test:
buildDir: yarn-project
dockerfile: Dockerfile.test
rebuildPatterns:
- ^yarn-project/.*\.(ts|tsx|js|cjs|mjs|json|html|md|sh|nr|toml|snap)$
- ^yarn-project/Dockerfile$
dependencies:
- bb.js
- noir-packages
- l1-contracts
- noir-projects
- barretenberg-x86_64-linux-clang
- noir
# Runs all prover-client checks and tests.
prover-client-test:
buildDir: yarn-project
projectDir: yarn-project/prover-client
dockerfile: Dockerfile.test
rebuildPatterns:
- ^yarn-project/.*\.(ts|tsx|js|cjs|mjs|json|html|md|sh|nr|toml|snap)$
- ^yarn-project/Dockerfile$
dependencies:
- bb.js
- noir-packages
- l1-contracts
- noir-projects
- barretenberg-x86_64-linux-clang
- noir
# Builds all of yarn-project, with all developer dependencies.
# Creates a runnable container used to run tests and formatting checks.
yarn-project:
buildDir: yarn-project
rebuildPatterns:
- ^yarn-project/.*\.(ts|tsx|js|cjs|mjs|json|html|md|sh|nr|toml|snap)$
- ^yarn-project/Dockerfile$
dependencies:
- bb.js
- noir-packages
- l1-contracts
- noir-projects
- noir
- barretenberg-x86_64-linux-clang
multiarch: host
# A runnable container, sets entrypoint to be the aztec infrastructure entrypoint.
aztec:
buildDir: yarn-project
projectDir: yarn-project/aztec
dependencies:
- yarn-project
multiarch: buildx
aztec-builder:
buildDir: yarn-project
projectDir: yarn-project/builder
dependencies:
- yarn-project
multiarch: buildx
# Builds all the boxes. They are then independently tested in the container.
boxes:
buildDir: boxes
dependencies:
- aztec
- noir
- noir-projects
runDependencies:
- aztec
# Builds a runnable container for running end-to-end tests (requires installing chromium etc).
# We add the runnable dependency 'aztec' to ensure the container is pulled before running the test compose file.
end-to-end:
buildDir: yarn-project
projectDir: yarn-project/end-to-end
dependencies:
- bb.js
- noir-packages
- l1-contracts
- noir-projects
- noir
- yarn-project
runDependencies:
- aztec
docs:
buildDir: .
dockerfile: docs/Dockerfile
rebuildPatterns:
- ^docs/
- ^.*\.cpp$
- ^.*\.hpp$
- ^.*\.ts$
- ^.release-please-manifest\.json$
- ^.*\.nr$
dependencies:
- bb.js
- noir-packages
- l1-contracts
- noir-projects