Raymond Toy pushed to branch master at cmucl / cmucl

Commits:

1 changed file:

Changes:

  • .gitlab-ci.yml
    ... ... @@ -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