... |
... |
@@ -10,6 +10,7 @@ stages: |
10
|
10
|
- test
|
11
|
11
|
- ansi-test
|
12
|
12
|
- benchmark
|
|
13
|
+ - analyze
|
13
|
14
|
|
14
|
15
|
cache:
|
15
|
16
|
|
... |
... |
@@ -36,7 +37,7 @@ linux:build: |
36
|
37
|
- dist/
|
37
|
38
|
- linux-2/*.log
|
38
|
39
|
- linux-3/*.log
|
39
|
|
- - linux-4/*.log
|
|
40
|
+ - linux-4/
|
40
|
41
|
needs:
|
41
|
42
|
- job: linux:install
|
42
|
43
|
artifacts: true
|
... |
... |
@@ -45,8 +46,10 @@ linux:build: |
45
|
46
|
#- bin/create-target.sh xtarget x86_linux_clang
|
46
|
47
|
#- bin/create-target.sh xcross x86_linux_clang
|
47
|
48
|
#- bin/cross-build-world.sh -crl -B boot-2020-04-1 xtarget xcross src/tools/cross-scripts/cross-x86-x86.lisp snapshot/bin/lisp
|
48
|
|
- # Regular build using the cross-compiled result or snapshot
|
49
|
|
- - bin/build.sh $bootstrap -R -C "x86_linux_clang" -o snapshot/bin/lisp
|
|
49
|
+ # Regular build using the cross-compiled result or snapshot. The
|
|
50
|
+ # analyzer job requires gcc, so make sure we build with gcc here
|
|
51
|
+ # instead of clang.
|
|
52
|
+ - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
|
50
|
53
|
# - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
|
51
|
54
|
# Use -V to specify the version in case some tag makes git
|
52
|
55
|
# describe return something that make-dist.sh doesn't like.
|
... |
... |
@@ -62,6 +65,8 @@ linux:cross-build: |
62
|
65
|
- linux-2/*.log
|
63
|
66
|
- linux-3/*.log
|
64
|
67
|
- linux-4/*.log
|
|
68
|
+ # The lisp directory is needed for the static analyzer job.
|
|
69
|
+ - linux-4/lisp
|
65
|
70
|
needs:
|
66
|
71
|
|
67
|
72
|
# Normally need the linux:install stage to get the compiler to
|
... |
... |
@@ -232,3 +237,24 @@ osx:benchmark: |
232
|
237
|
- CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
|
233
|
238
|
- CMUCL=../../dist/bin/lisp ./run-cmucl.sh
|
234
|
239
|
- ../../snapshot/bin/lisp -load report
|
|
240
|
+
|
|
241
|
+# Optional job that runs the static analyzer. It needs the files from
|
|
242
|
+# the linux-4 directory built in the linux:build job.
|
|
243
|
+linux:static-analyzer:
|
|
244
|
+ stage: analyze
|
|
245
|
+ when: manual
|
|
246
|
+ tags:
|
|
247
|
+ - linux
|
|
248
|
+ artifacts:
|
|
249
|
+ paths:
|
|
250
|
+ - analyzer.log
|
|
251
|
+ needs:
|
|
252
|
+ - job: linux:build
|
|
253
|
+ artifacts: true
|
|
254
|
+ script:
|
|
255
|
+ # Analysis can generate huge amounts of output. For now just save
|
|
256
|
+ # the results to the log file instead of also having it go to the
|
|
257
|
+ # console. If someday there's less or no output, we can consider
|
|
258
|
+ # having the logs go to the console too.
|
|
259
|
+ - make -C linux-4/lisp clean
|
|
260
|
+ - make -C linux-4/lisp CFLAGS=-fanalyzer > analyzer.log 2>&1 |