... |
... |
@@ -3,45 +3,38 @@ variables: |
3
|
3
|
version: "2024-08-x86"
|
4
|
4
|
bootstrap: "-B boot-2024-08"
|
5
|
5
|
|
6
|
|
-
|
7
|
|
-stages:
|
8
|
|
- - install
|
9
|
|
- - build
|
10
|
|
- - test
|
11
|
|
- - ansi-test
|
12
|
|
- - benchmark
|
13
|
|
- - analyze
|
14
|
|
-
|
15
|
|
-cache:
|
16
|
|
-
|
17
|
|
-
|
18
|
|
-linux:install:
|
|
6
|
+# Default install configuration to download the cmucl tarballs to use
|
|
7
|
+# for building.
|
|
8
|
+.install_template: &install_configuration
|
19
|
9
|
stage: install
|
20
|
|
- tags:
|
21
|
|
- - linux
|
22
|
10
|
artifacts:
|
23
|
11
|
paths:
|
24
|
12
|
- snapshot/
|
25
|
13
|
script:
|
26
|
|
- - wget -nv $download_url/cmucl-$version-linux.tar.bz2
|
27
|
|
- - wget -nv $download_url/cmucl-$version-linux.extra.tar.bz2
|
|
14
|
+ - echo PATH = $PATH
|
|
15
|
+ - ls -F /usr/local/bin
|
|
16
|
+ - type -all gitlab-runner
|
|
17
|
+ # Download binaries. (Do we really need the extras tarball?)
|
|
18
|
+ - $CURL -o cmucl-$version-$osname.tar.bz2 $download_url/cmucl-$version-$osname.tar.bz2
|
|
19
|
+ - $CURL -o cmucl-$version-$osname.extra.tar.bz2 $download_url/cmucl-$version-$osname.extra.tar.bz2
|
28
|
20
|
- mkdir snapshot
|
29
|
|
- - (cd snapshot; tar xjf ../cmucl-$version-linux.tar.bz2; tar xjf ../cmucl-$version-linux.extra.tar.bz2)
|
|
21
|
+ - (cd snapshot; tar xjf ../cmucl-$version-$osname.tar.bz2; tar xjf ../cmucl-$version-$osname.extra.tar.bz2)
|
30
|
22
|
|
31
|
|
-linux:build:
|
|
23
|
+# Default build configuration to be added to each build stage for each
|
|
24
|
+# OS. This assumes we don't need anything special between OSes, and
|
|
25
|
+# the option '-C ""' is good enough. We also override the default
|
|
26
|
+# build dirs by using the -b option so that we know where the results
|
|
27
|
+# are, independent of OS.
|
|
28
|
+.build_template: &build_configuration
|
32
|
29
|
stage: build
|
33
|
|
- tags:
|
34
|
|
- - linux
|
35
|
30
|
artifacts:
|
36
|
31
|
paths:
|
37
|
32
|
- dist/
|
38
|
|
- - linux-2/*.log
|
39
|
|
- - linux-3/*.log
|
40
|
|
- - linux-4/
|
41
|
|
- - src/lisp/
|
42
|
|
- needs:
|
43
|
|
- - job: linux:install
|
44
|
|
- artifacts: true
|
|
33
|
+ - build-2/*.log
|
|
34
|
+ - build-3/*.log
|
|
35
|
+ - build-4/
|
|
36
|
+ # Needed by Linux analyzer stage
|
|
37
|
+ - src/lisp/cmucl-version.h
|
45
|
38
|
script:
|
46
|
39
|
# Do cross compile first
|
47
|
40
|
#- bin/create-target.sh xtarget x86_linux_clang
|
... |
... |
@@ -50,11 +43,79 @@ linux:build: |
50
|
43
|
# Regular build using the cross-compiled result or snapshot. The
|
51
|
44
|
# analyzer job requires gcc, so make sure we build with gcc here
|
52
|
45
|
# instead of clang.
|
53
|
|
- - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
|
54
|
|
- # - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
|
|
46
|
+ - bin/build.sh $bootstrap -b build -R -C "" -o snapshot/bin/lisp
|
55
|
47
|
# When the result of `git describe` cannot be used as a version
|
56
|
48
|
# string, an alternative can be provided with the -V flag
|
57
|
|
- - bin/make-dist.sh -I dist linux-4
|
|
49
|
+ - bin/make-dist.sh -I dist build-4
|
|
50
|
+
|
|
51
|
+# Default configuration for running the ansi-tests.
|
|
52
|
+.ansi_test_template: &ansi_test_configuration
|
|
53
|
+ stage: ansi-test
|
|
54
|
+ artifacts:
|
|
55
|
+ paths:
|
|
56
|
+ - ansi-test/test.out
|
|
57
|
+ script:
|
|
58
|
+ - bin/run-ansi-tests.sh -l dist/bin/lisp
|
|
59
|
+
|
|
60
|
+# Default configuration for running unit tests.
|
|
61
|
+.unit_test_template: &unit_test_configuration
|
|
62
|
+ stage: test
|
|
63
|
+ artifacts:
|
|
64
|
+ paths:
|
|
65
|
+ - ansi-test/test.out
|
|
66
|
+ - test.log
|
|
67
|
+ script:
|
|
68
|
+ - echo LANG = $LANG
|
|
69
|
+ - bin/run-unit-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
|
|
70
|
+
|
|
71
|
+# Default configuration to test creation of lisp executable and
|
|
72
|
+# testing the exectuable works.
|
|
73
|
+.exec_test_template: &exec_test_configuration
|
|
74
|
+ stage: test
|
|
75
|
+ script:
|
|
76
|
+ # Create an executable and test it by printing the version.
|
|
77
|
+ - dist/bin/lisp -eval '(save-lisp "saved-lisp-executable" :executable t)'
|
|
78
|
+ - ./saved-lisp-executable --version
|
|
79
|
+
|
|
80
|
+# Default configuration for running the benchmarks.
|
|
81
|
+.benchmark_template: &benchmark_configuration
|
|
82
|
+ stage: benchmark
|
|
83
|
+ artifacts:
|
|
84
|
+ paths:
|
|
85
|
+ - benchmarks/cl-bench/results
|
|
86
|
+ script:
|
|
87
|
+ - cd benchmarks/cl-bench
|
|
88
|
+ - mkdir tmp
|
|
89
|
+ - CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
|
|
90
|
+ - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
|
|
91
|
+ - ../../snapshot/bin/lisp -load report
|
|
92
|
+
|
|
93
|
+stages:
|
|
94
|
+ - install
|
|
95
|
+ - build
|
|
96
|
+ - test
|
|
97
|
+ - ansi-test
|
|
98
|
+ - benchmark
|
|
99
|
+ - analyze
|
|
100
|
+
|
|
101
|
+cache:
|
|
102
|
+
|
|
103
|
+#### Linux jobs ####
|
|
104
|
+linux:install:
|
|
105
|
+ <<: *install_configuration
|
|
106
|
+ tags:
|
|
107
|
+ - linux
|
|
108
|
+ variables:
|
|
109
|
+ osname: "linux"
|
|
110
|
+ CURL: "curl"
|
|
111
|
+
|
|
112
|
+linux:build:
|
|
113
|
+ <<: *build_configuration
|
|
114
|
+ tags:
|
|
115
|
+ - linux
|
|
116
|
+ needs:
|
|
117
|
+ - job: linux:install
|
|
118
|
+ artifacts: true
|
58
|
119
|
|
59
|
120
|
linux:cross-build:
|
60
|
121
|
stage: build
|
... |
... |
@@ -85,31 +146,21 @@ linux:cross-build: |
85
|
146
|
- bin/make-dist.sh -I xdist xlinux-4
|
86
|
147
|
|
87
|
148
|
linux:test:
|
88
|
|
- stage: test
|
|
149
|
+ <<: *unit_test_configuration
|
89
|
150
|
tags:
|
90
|
151
|
- linux
|
91
|
|
- artifacts:
|
92
|
|
- paths:
|
93
|
|
- - ansi-test/test.out
|
94
|
|
- - test.log
|
95
|
152
|
needs:
|
96
|
153
|
# Needs artifacts from build (dist/)
|
97
|
154
|
- job: linux:build
|
98
|
155
|
artifacts: true
|
99
|
|
- script:
|
100
|
|
- - bin/run-unit-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
|
101
|
156
|
|
102
|
157
|
linux:exec-test:
|
103
|
|
- stage: test
|
|
158
|
+ <<: *exec_test_configuration
|
104
|
159
|
tags:
|
105
|
160
|
- linux
|
106
|
161
|
needs:
|
107
|
162
|
- job: linux:build
|
108
|
163
|
artifacts: true
|
109
|
|
- script:
|
110
|
|
- # Create an executable and test it by printing the version.
|
111
|
|
- - dist/bin/lisp -eval '(save-lisp "saved-lisp-executable" :executable t)'
|
112
|
|
- - ./saved-lisp-executable --version
|
113
|
164
|
|
114
|
165
|
linux:cross-test:
|
115
|
166
|
stage: test
|
... |
... |
@@ -127,141 +178,76 @@ linux:cross-test: |
127
|
178
|
- bin/run-unit-tests.sh -l xdist/bin/lisp 2>&1 | tee cross-test.log
|
128
|
179
|
|
129
|
180
|
linux:ansi-test:
|
130
|
|
- stage: ansi-test
|
|
181
|
+ <<: *ansi_test_configuration
|
131
|
182
|
tags:
|
132
|
183
|
- linux
|
133
|
|
- artifacts:
|
134
|
|
- paths:
|
135
|
|
- - ansi-test/test.out
|
136
|
184
|
needs:
|
137
|
185
|
# Needs artifacts from build (dist/)
|
138
|
186
|
- job: linux:build
|
139
|
187
|
artifacts: true
|
140
|
|
- script:
|
141
|
|
- - bin/run-ansi-tests.sh -l dist/bin/lisp
|
142
|
188
|
|
143
|
189
|
linux:benchmark:
|
144
|
|
- stage: benchmark
|
|
190
|
+ <<: *benchmark_configuration
|
145
|
191
|
tags:
|
146
|
192
|
- linux
|
147
|
|
- artifacts:
|
148
|
|
- paths:
|
149
|
|
- - benchmarks/cl-bench/results
|
150
|
193
|
needs:
|
151
|
194
|
# Needs artifacts from install (snapshot/) and build (dist/)
|
152
|
195
|
- job: linux:install
|
153
|
196
|
artifacts: true
|
154
|
197
|
- job: linux:build
|
155
|
|
- script:
|
156
|
|
- - cd benchmarks/cl-bench
|
157
|
|
- - mkdir tmp
|
158
|
|
- - CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
|
159
|
|
- - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
|
160
|
|
- - ../../snapshot/bin/lisp -load report
|
161
|
198
|
|
|
199
|
+#### OSX (Mac) jobs ####
|
162
|
200
|
osx:install:
|
163
|
|
- stage: install
|
|
201
|
+ <<: *install_configuration
|
164
|
202
|
tags:
|
165
|
203
|
- macos-virtualbox
|
166
|
|
- artifacts:
|
167
|
|
- paths:
|
168
|
|
- - snapshot/
|
169
|
|
- script:
|
170
|
|
- - echo PATH = $PATH
|
171
|
|
- - ls -F /usr/local/bin
|
172
|
|
- - type -all gitlab-runner
|
173
|
|
- - /opt/local/bin/curl -o cmucl-$version-darwin.tar.bz2 $download_url/cmucl-$version-darwin.tar.bz2
|
174
|
|
- - mkdir snapshot
|
175
|
|
- - (cd snapshot; tar xjf ../cmucl-$version-darwin.tar.bz2)
|
|
204
|
+ variables:
|
|
205
|
+ osname: "darwin"
|
|
206
|
+ CURL: "/opt/local/bin/curl"
|
176
|
207
|
|
177
|
208
|
osx:build:
|
178
|
|
- stage: build
|
|
209
|
+ <<: *build_configuration
|
179
|
210
|
tags:
|
180
|
211
|
- macos-virtualbox
|
181
|
|
- artifacts:
|
182
|
|
- paths:
|
183
|
|
- - dist/
|
184
|
|
- - darwin-2/*.log
|
185
|
|
- - darwin-3/*.log
|
186
|
|
- - darwin-4/*.log
|
187
|
212
|
needs:
|
188
|
213
|
- job: osx:install
|
189
|
214
|
artifacts: true
|
190
|
|
- script:
|
191
|
|
- # Do cross compile first
|
192
|
|
- #- bin/create-target.sh xtarget x86_darwin
|
193
|
|
- #- bin/create-target.sh xcross x86_darwin
|
194
|
|
- #- bin/cross-build-world.sh -crl -B boot-2020-04-1 xtarget xcross src/tools/cross-scripts/cross-x86-x86.lisp snapshot/bin/lisp
|
195
|
|
- # Regular build using the cross-compiled result or snapshot.
|
196
|
|
- # Need /opt/local/bin to get msgmerge and msgfmt programs.
|
197
|
|
- - PATH=/opt/local/bin:$PATH bin/build.sh $bootstrap -R -C "" -o snapshot/bin/lisp
|
198
|
|
- # If needed use -V to specify the version in case some tag makes git
|
199
|
|
- # describe return something that make-dist.sh doesn't like.
|
200
|
|
- - bin/make-dist.sh -I dist darwin-4
|
201
|
215
|
|
202
|
216
|
osx:test:
|
203
|
|
- stage: test
|
|
217
|
+ <<: *unit_test_configuration
|
204
|
218
|
tags:
|
205
|
219
|
- macos-virtualbox
|
206
|
|
- artifacts:
|
207
|
|
- paths:
|
208
|
|
- - ansi-test/test.out
|
209
|
|
- - test.log
|
210
|
220
|
needs:
|
211
|
221
|
# Needs artifacts from build (dist/)
|
212
|
222
|
- job: osx:build
|
213
|
223
|
artifacts: true
|
214
|
|
- script:
|
215
|
|
- - echo LANG = $LANG
|
216
|
|
- - bin/run-unit-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
|
217
|
224
|
|
218
|
225
|
osx:exec-test:
|
219
|
|
- stage: test
|
|
226
|
+ <<: *exec_test_configuration
|
220
|
227
|
tags:
|
221
|
228
|
- macos-virtualbox
|
222
|
229
|
needs:
|
223
|
230
|
- job: osx:build
|
224
|
231
|
artifacts: true
|
225
|
|
- script:
|
226
|
|
- # Create an executable and test it by printing the version.
|
227
|
|
- - dist/bin/lisp -eval '(save-lisp "saved-lisp-executable" :executable t)'
|
228
|
|
- - ./saved-lisp-executable --version
|
229
|
232
|
|
230
|
233
|
osx:ansi-test:
|
231
|
|
- stage: ansi-test
|
|
234
|
+ <<: *ansi_test_configuration
|
232
|
235
|
tags:
|
233
|
236
|
- macos-virtualbox
|
234
|
|
- artifacts:
|
235
|
|
- paths:
|
236
|
|
- - ansi-test/test.out
|
237
|
237
|
needs:
|
238
|
238
|
# Needs artifacts from build (dist/)
|
239
|
239
|
- job: osx:build
|
240
|
240
|
artifacts: true
|
241
|
|
- script:
|
242
|
|
- # NB: sometimes we can't clone the ansi-test repo (bad cert!?!).
|
243
|
|
- # Manually cloning it in the gitlab build dir helps with this
|
244
|
|
- # issue until we can figure out what's going on.
|
245
|
|
- - bin/run-ansi-tests.sh -l dist/bin/lisp
|
246
|
241
|
|
247
|
242
|
osx:benchmark:
|
248
|
|
- stage: benchmark
|
|
243
|
+ <<: *benchmark_configuration
|
249
|
244
|
tags:
|
250
|
245
|
- macos-virtualbox
|
251
|
|
- artifacts:
|
252
|
|
- paths:
|
253
|
|
- - benchmarks/cl-bench/results
|
254
|
246
|
needs:
|
255
|
247
|
# Needs artifacts from install (snapshot/) and build (dist/)
|
256
|
248
|
- job: osx:install
|
257
|
249
|
artifacts: true
|
258
|
250
|
- job: osx:build
|
259
|
|
- script:
|
260
|
|
- - cd benchmarks/cl-bench
|
261
|
|
- - mkdir tmp
|
262
|
|
- - CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
|
263
|
|
- - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
|
264
|
|
- - ../../snapshot/bin/lisp -load report
|
265
|
251
|
|
266
|
252
|
# Optional job that runs the static analyzer. It needs the files from
|
267
|
253
|
# the linux-4 directory built in the linux:build job.
|
... |
... |
@@ -281,75 +267,41 @@ linux:static-analyzer: |
281
|
267
|
# the results to the log file instead of also having it go to the
|
282
|
268
|
# console. If someday there's less or no output, we can consider
|
283
|
269
|
# having the logs go to the console too.
|
284
|
|
- - make -C linux-4/lisp clean
|
285
|
|
- - make -C linux-4/lisp CFLAGS=-fanalyzer > analyzer.log 2>&1
|
|
270
|
+ - make -C build-4/lisp clean
|
|
271
|
+ - make -C build-4/lisp CFLAGS=-fanalyzer > analyzer.log 2>&1
|
286
|
272
|
|
|
273
|
+#### OpenSUSE jobs ####
|
287
|
274
|
opensuse:install:
|
288
|
|
- stage: install
|
|
275
|
+ <<: *install_configuration
|
289
|
276
|
tags:
|
290
|
277
|
- opensuse
|
291
|
|
- artifacts:
|
292
|
|
- paths:
|
293
|
|
- - snapshot/
|
294
|
|
- script:
|
295
|
|
- - wget -nv $download_url/cmucl-$version-linux.tar.bz2
|
296
|
|
- - wget -nv $download_url/cmucl-$version-linux.extra.tar.bz2
|
297
|
|
- - mkdir snapshot
|
298
|
|
- - (cd snapshot; tar xjf ../cmucl-$version-linux.tar.bz2; tar xjf ../cmucl-$version-linux.extra.tar.bz2)
|
|
278
|
+ variables:
|
|
279
|
+ osname: "linux"
|
|
280
|
+ CURL: "curl"
|
299
|
281
|
|
300
|
282
|
opensuse:build:
|
301
|
|
- stage: build
|
|
283
|
+ <<: *build_configuration
|
302
|
284
|
tags:
|
303
|
285
|
- opensuse
|
304
|
|
- artifacts:
|
305
|
|
- paths:
|
306
|
|
- - dist/
|
307
|
|
- - linux-2/*.log
|
308
|
|
- - linux-3/*.log
|
309
|
|
- - linux-4/
|
310
|
286
|
needs:
|
311
|
287
|
- job: opensuse:install
|
312
|
288
|
artifacts: true
|
313
|
|
- script:
|
314
|
|
- # Do cross compile first
|
315
|
|
- #- bin/create-target.sh xtarget x86_linux_clang
|
316
|
|
- #- bin/create-target.sh xcross x86_linux_clang
|
317
|
|
- #- bin/cross-build-world.sh -crl -B boot-2020-04-1 xtarget xcross src/tools/cross-scripts/cross-x86-x86.lisp snapshot/bin/lisp
|
318
|
|
- # Regular build using the cross-compiled result or snapshot. The
|
319
|
|
- # analyzer job requires gcc, so make sure we build with gcc here
|
320
|
|
- # instead of clang.
|
321
|
|
- - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
|
322
|
|
- # - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
|
323
|
|
- # If needed use -V to specify the version in case some tag makes git
|
324
|
|
- # describe return something that make-dist.sh doesn't like.
|
325
|
|
- - bin/make-dist.sh -I dist linux-4
|
326
|
289
|
|
327
|
290
|
opensuse:test:
|
328
|
|
- stage: test
|
|
291
|
+ <<: *unit_test_configuration
|
329
|
292
|
tags:
|
330
|
|
- - linux
|
331
|
|
- artifacts:
|
332
|
|
- paths:
|
333
|
|
- - ansi-test/test.out
|
334
|
|
- - test.log
|
|
293
|
+ - opensuse
|
335
|
294
|
needs:
|
336
|
295
|
# Needs artifacts from build (dist/)
|
337
|
296
|
- job: opensuse:build
|
338
|
297
|
artifacts: true
|
339
|
|
- script:
|
340
|
|
- - bin/run-unit-tests.sh -l dist/bin/lisp 2>&1 | tee test.log
|
341
|
298
|
|
342
|
299
|
opensuse:ansi-test:
|
343
|
|
- stage: ansi-test
|
|
300
|
+ <<: *ansi_test_configuration
|
344
|
301
|
tags:
|
345
|
|
- - linux
|
346
|
|
- artifacts:
|
347
|
|
- paths:
|
348
|
|
- - ansi-test/test.out
|
|
302
|
+ - opensuse
|
349
|
303
|
needs:
|
350
|
304
|
# Needs artifacts from build (dist/)
|
351
|
305
|
- job: opensuse:build
|
352
|
306
|
artifacts: true
|
353
|
|
- script:
|
354
|
|
- - bin/run-ansi-tests.sh -l dist/bin/lisp
|
355
|
307
|
|