Sven Tennie pushed to branch wip/supersven/hadrian-cross-stage3 at Glasgow Haskell Compiler / GHC

Commits:

2 changed files:

Changes:

  • .gitlab/generate-ci/gen_ci.hs
    ... ... @@ -283,6 +283,18 @@ crossConfig triple emulator configure_wrapper =
    283 283
                 , configureWrapper = configure_wrapper
    
    284 284
                 }
    
    285 285
     
    
    286
    +-- | cross-compiled compilers (build /= host/target)
    
    287
    +stage3CrossConfig :: String       -- ^ target triple
    
    288
    +            -> CrossEmulator -- ^ emulator for testing
    
    289
    +            -> Maybe String -- ^ Configure wrapper
    
    290
    +            -> BuildConfig
    
    291
    +stage3CrossConfig triple emulator configure_wrapper =
    
    292
    +    vanilla { crossTarget = Just triple
    
    293
    +            , crossStage  = Just 3
    
    294
    +            , crossEmulator = emulator
    
    295
    +            , configureWrapper = configure_wrapper
    
    296
    +            }
    
    297
    +
    
    286 298
     llvm :: BuildConfig
    
    287 299
     llvm = vanilla { llvmBootstrap = True }
    
    288 300
     
    
    ... ... @@ -370,6 +382,8 @@ testEnv arch opsys bc =
    370 382
         , ["zstd"  | withZstd bc ]
    
    371 383
         , ["no_tntc"  | not (tablesNextToCode bc) ]
    
    372 384
         , ["cross_"++triple  | Just triple <- pure $ crossTarget bc ]
    
    385
    +    -- TODO: Is there something better than `show` for this?
    
    386
    +    , ["stage_" ++ show stage | Just stage <- pure $ crossStage bc ]
    
    373 387
         , [flavourString (mkJobFlavour bc)]
    
    374 388
         ]
    
    375 389
     
    
    ... ... @@ -1290,9 +1304,12 @@ cross_jobs = [
    1290 1304
         -- x86 -> aarch64
    
    1291 1305
         validateBuilds Amd64 (Linux Debian11) (crossConfig "aarch64-linux-gnu" (Emulator "qemu-aarch64 -L /usr/aarch64-linux-gnu") Nothing)
    
    1292 1306
     
    
    1293
    -    -- x86_64 -> riscv
    
    1307
    +    -- x86_64 (build/host) -> riscv (target)
    
    1294 1308
       , addValidateRule RiscV (validateBuilds Amd64 (Linux Debian12Riscv) (crossConfig "riscv64-linux-gnu" (Emulator "qemu-riscv64 -L /usr/riscv64-linux-gnu") Nothing))
    
    1295 1309
     
    
    1310
    +    -- x86_64 (build) -> riscv (host/target)
    
    1311
    +  , addValidateRule RiscV (validateBuilds Amd64 (Linux Debian12Riscv) (stage3CrossConfig "riscv64-linux-gnu" (Emulator "qemu-riscv64 -L /usr/riscv64-linux-gnu") Nothing))
    
    1312
    +
    
    1296 1313
         -- x86_64 -> loongarch64
    
    1297 1314
       , addValidateRule LoongArch64 (validateBuilds Amd64 (Linux Ubuntu2404LoongArch64) (crossConfig "loongarch64-linux-gnu" (Emulator "qemu-loongarch64 -L /usr/loongarch64-linux-gnu") Nothing))
    
    1298 1315
     
    

  • .gitlab/jobs.yaml
    ... ... @@ -315,7 +315,7 @@
    315 315
           "TEST_ENV": "aarch64-linux-deb12-validate+llvm"
    
    316 316
         }
    
    317 317
       },
    
    318
    -  "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate": {
    
    318
    +  "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate": {
    
    319 319
         "after_script": [
    
    320 320
           ".gitlab/ci.sh save_cache",
    
    321 321
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -326,7 +326,7 @@
    326 326
         "artifacts": {
    
    327 327
           "expire_in": "2 weeks",
    
    328 328
           "paths": [
    
    329
    -        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate.tar.xz",
    
    329
    +        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate.tar.xz",
    
    330 330
             "junit.xml",
    
    331 331
             "unexpected-test-output.tar.gz"
    
    332 332
           ],
    
    ... ... @@ -352,7 +352,7 @@
    352 352
         ],
    
    353 353
         "rules": [
    
    354 354
           {
    
    355
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || (($CI_MERGE_REQUEST_LABELS =~ /.*aarch64.*/) && ($CI_MERGE_REQUEST_LABELS =~ /.*Windows.*/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    355
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || (($CI_MERGE_REQUEST_LABELS =~ /.*aarch64.*/) && ($CI_MERGE_REQUEST_LABELS =~ /.*Windows.*/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    356 356
             "when": "on_success"
    
    357 357
           }
    
    358 358
         ],
    
    ... ... @@ -370,7 +370,7 @@
    370 370
         "variables": {
    
    371 371
           "AR": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ar",
    
    372 372
           "BIGNUM_BACKEND": "native",
    
    373
    -      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate",
    
    373
    +      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate",
    
    374 374
           "BUILD_FLAVOUR": "validate",
    
    375 375
           "CC": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
    
    376 376
           "CFLAGS": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
    
    ... ... @@ -393,11 +393,11 @@
    393 393
           "SIZE": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-size",
    
    394 394
           "STRINGS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strings",
    
    395 395
           "STRIP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strip",
    
    396
    -      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate",
    
    396
    +      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate",
    
    397 397
           "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres"
    
    398 398
         }
    
    399 399
       },
    
    400
    -  "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm": {
    
    400
    +  "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm": {
    
    401 401
         "after_script": [
    
    402 402
           ".gitlab/ci.sh save_cache",
    
    403 403
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -408,7 +408,7 @@
    408 408
         "artifacts": {
    
    409 409
           "expire_in": "2 weeks",
    
    410 410
           "paths": [
    
    411
    -        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm.tar.xz",
    
    411
    +        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm.tar.xz",
    
    412 412
             "junit.xml",
    
    413 413
             "unexpected-test-output.tar.gz"
    
    414 414
           ],
    
    ... ... @@ -434,7 +434,7 @@
    434 434
         ],
    
    435 435
         "rules": [
    
    436 436
           {
    
    437
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate\\+llvm(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || (($CI_MERGE_REQUEST_LABELS =~ /.*aarch64.*/) && ($CI_MERGE_REQUEST_LABELS =~ /.*Windows.*/) && ($CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    437
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate\\+llvm(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || (($CI_MERGE_REQUEST_LABELS =~ /.*aarch64.*/) && ($CI_MERGE_REQUEST_LABELS =~ /.*Windows.*/) && ($CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    438 438
             "when": "on_success"
    
    439 439
           }
    
    440 440
         ],
    
    ... ... @@ -452,7 +452,7 @@
    452 452
         "variables": {
    
    453 453
           "AR": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ar",
    
    454 454
           "BIGNUM_BACKEND": "native",
    
    455
    -      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm",
    
    455
    +      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm",
    
    456 456
           "BUILD_FLAVOUR": "validate+llvm",
    
    457 457
           "CC": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
    
    458 458
           "CFLAGS": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
    
    ... ... @@ -475,7 +475,7 @@
    475 475
           "SIZE": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-size",
    
    476 476
           "STRINGS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strings",
    
    477 477
           "STRIP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strip",
    
    478
    -      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm",
    
    478
    +      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm",
    
    479 479
           "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres"
    
    480 480
         }
    
    481 481
       },
    
    ... ... @@ -986,7 +986,7 @@
    986 986
           "XZ_OPT": "-9"
    
    987 987
         }
    
    988 988
       },
    
    989
    -  "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate": {
    
    989
    +  "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate": {
    
    990 990
         "after_script": [
    
    991 991
           ".gitlab/ci.sh save_cache",
    
    992 992
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -997,7 +997,7 @@
    997 997
         "artifacts": {
    
    998 998
           "expire_in": "8 weeks",
    
    999 999
           "paths": [
    
    1000
    -        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate.tar.xz",
    
    1000
    +        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate.tar.xz",
    
    1001 1001
             "junit.xml",
    
    1002 1002
             "unexpected-test-output.tar.gz"
    
    1003 1003
           ],
    
    ... ... @@ -1041,7 +1041,7 @@
    1041 1041
         "variables": {
    
    1042 1042
           "AR": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ar",
    
    1043 1043
           "BIGNUM_BACKEND": "native",
    
    1044
    -      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate",
    
    1044
    +      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate",
    
    1045 1045
           "BUILD_FLAVOUR": "validate",
    
    1046 1046
           "CC": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
    
    1047 1047
           "CFLAGS": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
    
    ... ... @@ -1064,12 +1064,12 @@
    1064 1064
           "SIZE": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-size",
    
    1065 1065
           "STRINGS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strings",
    
    1066 1066
           "STRIP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strip",
    
    1067
    -      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate",
    
    1067
    +      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate",
    
    1068 1068
           "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres",
    
    1069 1069
           "XZ_OPT": "-9"
    
    1070 1070
         }
    
    1071 1071
       },
    
    1072
    -  "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm": {
    
    1072
    +  "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm": {
    
    1073 1073
         "after_script": [
    
    1074 1074
           ".gitlab/ci.sh save_cache",
    
    1075 1075
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -1080,7 +1080,7 @@
    1080 1080
         "artifacts": {
    
    1081 1081
           "expire_in": "8 weeks",
    
    1082 1082
           "paths": [
    
    1083
    -        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm.tar.xz",
    
    1083
    +        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm.tar.xz",
    
    1084 1084
             "junit.xml",
    
    1085 1085
             "unexpected-test-output.tar.gz"
    
    1086 1086
           ],
    
    ... ... @@ -1124,7 +1124,7 @@
    1124 1124
         "variables": {
    
    1125 1125
           "AR": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ar",
    
    1126 1126
           "BIGNUM_BACKEND": "native",
    
    1127
    -      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm",
    
    1127
    +      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm",
    
    1128 1128
           "BUILD_FLAVOUR": "validate+llvm",
    
    1129 1129
           "CC": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
    
    1130 1130
           "CFLAGS": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
    
    ... ... @@ -1147,7 +1147,7 @@
    1147 1147
           "SIZE": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-size",
    
    1148 1148
           "STRINGS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strings",
    
    1149 1149
           "STRIP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strip",
    
    1150
    -      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm",
    
    1150
    +      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-stage_2-validate+llvm",
    
    1151 1151
           "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres",
    
    1152 1152
           "XZ_OPT": "-9"
    
    1153 1153
         }
    
    ... ... @@ -1670,7 +1670,7 @@
    1670 1670
           "XZ_OPT": "-9"
    
    1671 1671
         }
    
    1672 1672
       },
    
    1673
    -  "nightly-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf": {
    
    1673
    +  "nightly-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf": {
    
    1674 1674
         "after_script": [
    
    1675 1675
           ".gitlab/ci.sh save_cache",
    
    1676 1676
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -1681,7 +1681,7 @@
    1681 1681
         "artifacts": {
    
    1682 1682
           "expire_in": "8 weeks",
    
    1683 1683
           "paths": [
    
    1684
    -        "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf.tar.xz",
    
    1684
    +        "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf.tar.xz",
    
    1685 1685
             "junit.xml",
    
    1686 1686
             "unexpected-test-output.tar.gz"
    
    1687 1687
           ],
    
    ... ... @@ -1724,7 +1724,7 @@
    1724 1724
         ],
    
    1725 1725
         "variables": {
    
    1726 1726
           "BIGNUM_BACKEND": "gmp",
    
    1727
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    1727
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    1728 1728
           "BUILD_FLAVOUR": "release+host_fully_static+text_simdutf",
    
    1729 1729
           "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi --enable-strict-ghc-toolchain-check",
    
    1730 1730
           "CROSS_STAGE": "2",
    
    ... ... @@ -1732,11 +1732,11 @@
    1732 1732
           "FIREFOX_LAUNCH_OPTS": "{\"browser\":\"firefox\",\"executablePath\":\"/usr/bin/firefox\"}",
    
    1733 1733
           "HADRIAN_ARGS": "--docs=no-sphinx-pdfs --docs=no-sphinx-man",
    
    1734 1734
           "RUNTEST_ARGS": "",
    
    1735
    -      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    1735
    +      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    1736 1736
           "XZ_OPT": "-9"
    
    1737 1737
         }
    
    1738 1738
       },
    
    1739
    -  "nightly-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf": {
    
    1739
    +  "nightly-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf": {
    
    1740 1740
         "after_script": [
    
    1741 1741
           ".gitlab/ci.sh save_cache",
    
    1742 1742
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -1747,7 +1747,7 @@
    1747 1747
         "artifacts": {
    
    1748 1748
           "expire_in": "8 weeks",
    
    1749 1749
           "paths": [
    
    1750
    -        "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf.tar.xz",
    
    1750
    +        "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf.tar.xz",
    
    1751 1751
             "junit.xml",
    
    1752 1752
             "unexpected-test-output.tar.gz"
    
    1753 1753
           ],
    
    ... ... @@ -1790,7 +1790,7 @@
    1790 1790
         ],
    
    1791 1791
         "variables": {
    
    1792 1792
           "BIGNUM_BACKEND": "native",
    
    1793
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    1793
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    1794 1794
           "BUILD_FLAVOUR": "release+host_fully_static+text_simdutf",
    
    1795 1795
           "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi --enable-strict-ghc-toolchain-check",
    
    1796 1796
           "CROSS_STAGE": "2",
    
    ... ... @@ -1798,11 +1798,11 @@
    1798 1798
           "FIREFOX_LAUNCH_OPTS": "{\"browser\":\"firefox\",\"executablePath\":\"/usr/bin/firefox\"}",
    
    1799 1799
           "HADRIAN_ARGS": "--docs=no-sphinx-pdfs --docs=no-sphinx-man",
    
    1800 1800
           "RUNTEST_ARGS": "",
    
    1801
    -      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    1801
    +      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    1802 1802
           "XZ_OPT": "-9"
    
    1803 1803
         }
    
    1804 1804
       },
    
    1805
    -  "nightly-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf": {
    
    1805
    +  "nightly-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf": {
    
    1806 1806
         "after_script": [
    
    1807 1807
           ".gitlab/ci.sh save_cache",
    
    1808 1808
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -1813,7 +1813,7 @@
    1813 1813
         "artifacts": {
    
    1814 1814
           "expire_in": "8 weeks",
    
    1815 1815
           "paths": [
    
    1816
    -        "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf.tar.xz",
    
    1816
    +        "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf.tar.xz",
    
    1817 1817
             "junit.xml",
    
    1818 1818
             "unexpected-test-output.tar.gz"
    
    1819 1819
           ],
    
    ... ... @@ -1856,7 +1856,7 @@
    1856 1856
         ],
    
    1857 1857
         "variables": {
    
    1858 1858
           "BIGNUM_BACKEND": "gmp",
    
    1859
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    1859
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    1860 1860
           "BUILD_FLAVOUR": "release+host_fully_static+text_simdutf",
    
    1861 1861
           "CONFIGURE_ARGS": "--enable-unregisterised --with-intree-gmp --with-system-libffi --enable-strict-ghc-toolchain-check",
    
    1862 1862
           "CROSS_STAGE": "2",
    
    ... ... @@ -1864,7 +1864,7 @@
    1864 1864
           "FIREFOX_LAUNCH_OPTS": "{\"browser\":\"firefox\",\"executablePath\":\"/usr/bin/firefox\"}",
    
    1865 1865
           "HADRIAN_ARGS": "--docs=no-sphinx-pdfs --docs=no-sphinx-man",
    
    1866 1866
           "RUNTEST_ARGS": "",
    
    1867
    -      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    1867
    +      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    1868 1868
           "XZ_OPT": "-9"
    
    1869 1869
         }
    
    1870 1870
       },
    
    ... ... @@ -1994,7 +1994,7 @@
    1994 1994
           "XZ_OPT": "-9"
    
    1995 1995
         }
    
    1996 1996
       },
    
    1997
    -  "nightly-x86_64-linux-deb11-cross_aarch64-linux-gnu-validate": {
    
    1997
    +  "nightly-x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate": {
    
    1998 1998
         "after_script": [
    
    1999 1999
           ".gitlab/ci.sh save_cache",
    
    2000 2000
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -2005,7 +2005,7 @@
    2005 2005
         "artifacts": {
    
    2006 2006
           "expire_in": "8 weeks",
    
    2007 2007
           "paths": [
    
    2008
    -        "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-validate.tar.xz",
    
    2008
    +        "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate.tar.xz",
    
    2009 2009
             "junit.xml",
    
    2010 2010
             "unexpected-test-output.tar.gz"
    
    2011 2011
           ],
    
    ... ... @@ -2048,7 +2048,7 @@
    2048 2048
         ],
    
    2049 2049
         "variables": {
    
    2050 2050
           "BIGNUM_BACKEND": "gmp",
    
    2051
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-validate",
    
    2051
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate",
    
    2052 2052
           "BUILD_FLAVOUR": "validate",
    
    2053 2053
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    2054 2054
           "CROSS_EMULATOR": "qemu-aarch64 -L /usr/aarch64-linux-gnu",
    
    ... ... @@ -2056,11 +2056,11 @@
    2056 2056
           "CROSS_TARGET": "aarch64-linux-gnu",
    
    2057 2057
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    2058 2058
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    2059
    -      "TEST_ENV": "x86_64-linux-deb11-cross_aarch64-linux-gnu-validate",
    
    2059
    +      "TEST_ENV": "x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate",
    
    2060 2060
           "XZ_OPT": "-9"
    
    2061 2061
         }
    
    2062 2062
       },
    
    2063
    -  "nightly-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate": {
    
    2063
    +  "nightly-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate": {
    
    2064 2064
         "after_script": [
    
    2065 2065
           ".gitlab/ci.sh save_cache",
    
    2066 2066
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -2071,7 +2071,7 @@
    2071 2071
         "artifacts": {
    
    2072 2072
           "expire_in": "8 weeks",
    
    2073 2073
           "paths": [
    
    2074
    -        "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate.tar.xz",
    
    2074
    +        "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate.tar.xz",
    
    2075 2075
             "junit.xml",
    
    2076 2076
             "unexpected-test-output.tar.gz"
    
    2077 2077
           ],
    
    ... ... @@ -2114,7 +2114,7 @@
    2114 2114
         ],
    
    2115 2115
         "variables": {
    
    2116 2116
           "BIGNUM_BACKEND": "native",
    
    2117
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate",
    
    2117
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate",
    
    2118 2118
           "BUILD_FLAVOUR": "validate",
    
    2119 2119
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    2120 2120
           "CONFIGURE_WRAPPER": "emconfigure",
    
    ... ... @@ -2122,7 +2122,7 @@
    2122 2122
           "CROSS_TARGET": "javascript-unknown-ghcjs",
    
    2123 2123
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    2124 2124
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    2125
    -      "TEST_ENV": "x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate",
    
    2125
    +      "TEST_ENV": "x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate",
    
    2126 2126
           "XZ_OPT": "-9"
    
    2127 2127
         }
    
    2128 2128
       },
    
    ... ... @@ -2442,7 +2442,7 @@
    2442 2442
           "XZ_OPT": "-9"
    
    2443 2443
         }
    
    2444 2444
       },
    
    2445
    -  "nightly-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate": {
    
    2445
    +  "nightly-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate": {
    
    2446 2446
         "after_script": [
    
    2447 2447
           ".gitlab/ci.sh save_cache",
    
    2448 2448
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -2453,7 +2453,7 @@
    2453 2453
         "artifacts": {
    
    2454 2454
           "expire_in": "8 weeks",
    
    2455 2455
           "paths": [
    
    2456
    -        "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate.tar.xz",
    
    2456
    +        "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate.tar.xz",
    
    2457 2457
             "junit.xml",
    
    2458 2458
             "unexpected-test-output.tar.gz"
    
    2459 2459
           ],
    
    ... ... @@ -2496,7 +2496,7 @@
    2496 2496
         ],
    
    2497 2497
         "variables": {
    
    2498 2498
           "BIGNUM_BACKEND": "gmp",
    
    2499
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate",
    
    2499
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate",
    
    2500 2500
           "BUILD_FLAVOUR": "validate",
    
    2501 2501
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    2502 2502
           "CROSS_EMULATOR": "qemu-riscv64 -L /usr/riscv64-linux-gnu",
    
    ... ... @@ -2504,7 +2504,73 @@
    2504 2504
           "CROSS_TARGET": "riscv64-linux-gnu",
    
    2505 2505
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    2506 2506
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    2507
    -      "TEST_ENV": "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate",
    
    2507
    +      "TEST_ENV": "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate",
    
    2508
    +      "XZ_OPT": "-9"
    
    2509
    +    }
    
    2510
    +  },
    
    2511
    +  "nightly-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate": {
    
    2512
    +    "after_script": [
    
    2513
    +      ".gitlab/ci.sh save_cache",
    
    2514
    +      ".gitlab/ci.sh save_test_output",
    
    2515
    +      ".gitlab/ci.sh clean",
    
    2516
    +      "cat ci_timings.txt"
    
    2517
    +    ],
    
    2518
    +    "allow_failure": false,
    
    2519
    +    "artifacts": {
    
    2520
    +      "expire_in": "8 weeks",
    
    2521
    +      "paths": [
    
    2522
    +        "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate.tar.xz",
    
    2523
    +        "junit.xml",
    
    2524
    +        "unexpected-test-output.tar.gz"
    
    2525
    +      ],
    
    2526
    +      "reports": {
    
    2527
    +        "junit": "junit.xml"
    
    2528
    +      },
    
    2529
    +      "when": "always"
    
    2530
    +    },
    
    2531
    +    "cache": {
    
    2532
    +      "key": "x86_64-linux-deb12-riscv-$CACHE_REV",
    
    2533
    +      "paths": [
    
    2534
    +        "cabal-cache",
    
    2535
    +        "toolchain"
    
    2536
    +      ]
    
    2537
    +    },
    
    2538
    +    "dependencies": [],
    
    2539
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12-riscv:$DOCKER_REV",
    
    2540
    +    "needs": [
    
    2541
    +      {
    
    2542
    +        "artifacts": false,
    
    2543
    +        "job": "hadrian-ghc-in-ghci"
    
    2544
    +      }
    
    2545
    +    ],
    
    2546
    +    "rules": [
    
    2547
    +      {
    
    2548
    +        "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY)",
    
    2549
    +        "when": "on_success"
    
    2550
    +      }
    
    2551
    +    ],
    
    2552
    +    "script": [
    
    2553
    +      "sudo chown ghc:ghc -R .",
    
    2554
    +      ".gitlab/ci.sh setup",
    
    2555
    +      ".gitlab/ci.sh configure",
    
    2556
    +      ".gitlab/ci.sh build_hadrian",
    
    2557
    +      ".gitlab/ci.sh test_hadrian"
    
    2558
    +    ],
    
    2559
    +    "stage": "full-build",
    
    2560
    +    "tags": [
    
    2561
    +      "x86_64-linux"
    
    2562
    +    ],
    
    2563
    +    "variables": {
    
    2564
    +      "BIGNUM_BACKEND": "gmp",
    
    2565
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate",
    
    2566
    +      "BUILD_FLAVOUR": "validate",
    
    2567
    +      "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    2568
    +      "CROSS_EMULATOR": "qemu-riscv64 -L /usr/riscv64-linux-gnu",
    
    2569
    +      "CROSS_STAGE": "3",
    
    2570
    +      "CROSS_TARGET": "riscv64-linux-gnu",
    
    2571
    +      "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    2572
    +      "RUNTEST_ARGS": "-e config.timeout=900",
    
    2573
    +      "TEST_ENV": "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate",
    
    2508 2574
           "XZ_OPT": "-9"
    
    2509 2575
         }
    
    2510 2576
       },
    
    ... ... @@ -3521,7 +3587,7 @@
    3521 3587
           "XZ_OPT": "-9"
    
    3522 3588
         }
    
    3523 3589
       },
    
    3524
    -  "nightly-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate": {
    
    3590
    +  "nightly-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate": {
    
    3525 3591
         "after_script": [
    
    3526 3592
           ".gitlab/ci.sh save_cache",
    
    3527 3593
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -3532,7 +3598,7 @@
    3532 3598
         "artifacts": {
    
    3533 3599
           "expire_in": "8 weeks",
    
    3534 3600
           "paths": [
    
    3535
    -        "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate.tar.xz",
    
    3601
    +        "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate.tar.xz",
    
    3536 3602
             "junit.xml",
    
    3537 3603
             "unexpected-test-output.tar.gz"
    
    3538 3604
           ],
    
    ... ... @@ -3575,7 +3641,7 @@
    3575 3641
         ],
    
    3576 3642
         "variables": {
    
    3577 3643
           "BIGNUM_BACKEND": "gmp",
    
    3578
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate",
    
    3644
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate",
    
    3579 3645
           "BUILD_FLAVOUR": "validate",
    
    3580 3646
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    3581 3647
           "CROSS_EMULATOR": "qemu-loongarch64 -L /usr/loongarch64-linux-gnu",
    
    ... ... @@ -3583,7 +3649,7 @@
    3583 3649
           "CROSS_TARGET": "loongarch64-linux-gnu",
    
    3584 3650
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3585 3651
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    3586
    -      "TEST_ENV": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate",
    
    3652
    +      "TEST_ENV": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate",
    
    3587 3653
           "XZ_OPT": "-9"
    
    3588 3654
         }
    
    3589 3655
       },
    
    ... ... @@ -5847,7 +5913,7 @@
    5847 5913
           "TEST_ENV": "x86_64-linux-alpine3_23-validate"
    
    5848 5914
         }
    
    5849 5915
       },
    
    5850
    -  "x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf": {
    
    5916
    +  "x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf": {
    
    5851 5917
         "after_script": [
    
    5852 5918
           ".gitlab/ci.sh save_cache",
    
    5853 5919
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -5858,7 +5924,7 @@
    5858 5924
         "artifacts": {
    
    5859 5925
           "expire_in": "2 weeks",
    
    5860 5926
           "paths": [
    
    5861
    -        "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf.tar.xz",
    
    5927
    +        "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf.tar.xz",
    
    5862 5928
             "junit.xml",
    
    5863 5929
             "unexpected-test-output.tar.gz"
    
    5864 5930
           ],
    
    ... ... @@ -5884,7 +5950,7 @@
    5884 5950
         ],
    
    5885 5951
         "rules": [
    
    5886 5952
           {
    
    5887
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release\\+host_fully_static\\+text_simdutf(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*wasm.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    5953
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release\\+host_fully_static\\+text_simdutf(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*wasm.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    5888 5954
             "when": "on_success"
    
    5889 5955
           }
    
    5890 5956
         ],
    
    ... ... @@ -5901,7 +5967,7 @@
    5901 5967
         ],
    
    5902 5968
         "variables": {
    
    5903 5969
           "BIGNUM_BACKEND": "gmp",
    
    5904
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    5970
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    5905 5971
           "BUILD_FLAVOUR": "release+host_fully_static+text_simdutf",
    
    5906 5972
           "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi --enable-strict-ghc-toolchain-check",
    
    5907 5973
           "CROSS_STAGE": "2",
    
    ... ... @@ -5909,10 +5975,10 @@
    5909 5975
           "FIREFOX_LAUNCH_OPTS": "{\"browser\":\"firefox\",\"executablePath\":\"/usr/bin/firefox\"}",
    
    5910 5976
           "HADRIAN_ARGS": "--docs=no-sphinx-pdfs --docs=no-sphinx-man",
    
    5911 5977
           "RUNTEST_ARGS": "",
    
    5912
    -      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf"
    
    5978
    +      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf"
    
    5913 5979
         }
    
    5914 5980
       },
    
    5915
    -  "x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf": {
    
    5981
    +  "x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf": {
    
    5916 5982
         "after_script": [
    
    5917 5983
           ".gitlab/ci.sh save_cache",
    
    5918 5984
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -5923,7 +5989,7 @@
    5923 5989
         "artifacts": {
    
    5924 5990
           "expire_in": "2 weeks",
    
    5925 5991
           "paths": [
    
    5926
    -        "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf.tar.xz",
    
    5992
    +        "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf.tar.xz",
    
    5927 5993
             "junit.xml",
    
    5928 5994
             "unexpected-test-output.tar.gz"
    
    5929 5995
           ],
    
    ... ... @@ -5950,7 +6016,7 @@
    5950 6016
         "rules": [
    
    5951 6017
           {
    
    5952 6018
             "allow_failure": true,
    
    5953
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release\\+host_fully_static\\+text_simdutf(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*wasm.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6019
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release\\+host_fully_static\\+text_simdutf(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*wasm.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    5954 6020
             "when": "manual"
    
    5955 6021
           }
    
    5956 6022
         ],
    
    ... ... @@ -5967,7 +6033,7 @@
    5967 6033
         ],
    
    5968 6034
         "variables": {
    
    5969 6035
           "BIGNUM_BACKEND": "native",
    
    5970
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    6036
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    5971 6037
           "BUILD_FLAVOUR": "release+host_fully_static+text_simdutf",
    
    5972 6038
           "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi --enable-strict-ghc-toolchain-check",
    
    5973 6039
           "CROSS_STAGE": "2",
    
    ... ... @@ -5975,10 +6041,10 @@
    5975 6041
           "FIREFOX_LAUNCH_OPTS": "{\"browser\":\"firefox\",\"executablePath\":\"/usr/bin/firefox\"}",
    
    5976 6042
           "HADRIAN_ARGS": "--docs=no-sphinx-pdfs --docs=no-sphinx-man",
    
    5977 6043
           "RUNTEST_ARGS": "",
    
    5978
    -      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-release+host_fully_static+text_simdutf"
    
    6044
    +      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-int_native-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf"
    
    5979 6045
         }
    
    5980 6046
       },
    
    5981
    -  "x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf": {
    
    6047
    +  "x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf": {
    
    5982 6048
         "after_script": [
    
    5983 6049
           ".gitlab/ci.sh save_cache",
    
    5984 6050
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -5989,7 +6055,7 @@
    5989 6055
         "artifacts": {
    
    5990 6056
           "expire_in": "2 weeks",
    
    5991 6057
           "paths": [
    
    5992
    -        "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf.tar.xz",
    
    6058
    +        "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf.tar.xz",
    
    5993 6059
             "junit.xml",
    
    5994 6060
             "unexpected-test-output.tar.gz"
    
    5995 6061
           ],
    
    ... ... @@ -6016,7 +6082,7 @@
    6016 6082
         "rules": [
    
    6017 6083
           {
    
    6018 6084
             "allow_failure": true,
    
    6019
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release\\+host_fully_static\\+text_simdutf(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*wasm.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6085
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release\\+host_fully_static\\+text_simdutf(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*wasm.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6020 6086
             "when": "manual"
    
    6021 6087
           }
    
    6022 6088
         ],
    
    ... ... @@ -6033,7 +6099,7 @@
    6033 6099
         ],
    
    6034 6100
         "variables": {
    
    6035 6101
           "BIGNUM_BACKEND": "gmp",
    
    6036
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf",
    
    6102
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf",
    
    6037 6103
           "BUILD_FLAVOUR": "release+host_fully_static+text_simdutf",
    
    6038 6104
           "CONFIGURE_ARGS": "--enable-unregisterised --with-intree-gmp --with-system-libffi --enable-strict-ghc-toolchain-check",
    
    6039 6105
           "CROSS_STAGE": "2",
    
    ... ... @@ -6041,7 +6107,7 @@
    6041 6107
           "FIREFOX_LAUNCH_OPTS": "{\"browser\":\"firefox\",\"executablePath\":\"/usr/bin/firefox\"}",
    
    6042 6108
           "HADRIAN_ARGS": "--docs=no-sphinx-pdfs --docs=no-sphinx-man",
    
    6043 6109
           "RUNTEST_ARGS": "",
    
    6044
    -      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-release+host_fully_static+text_simdutf"
    
    6110
    +      "TEST_ENV": "x86_64-linux-alpine3_23-wasm-unreg-cross_wasm32-wasi-stage_2-release+host_fully_static+text_simdutf"
    
    6045 6111
         }
    
    6046 6112
       },
    
    6047 6113
       "x86_64-linux-deb10-validate": {
    
    ... ... @@ -6168,7 +6234,7 @@
    6168 6234
           "TEST_ENV": "x86_64-linux-deb10-validate+debug_info"
    
    6169 6235
         }
    
    6170 6236
       },
    
    6171
    -  "x86_64-linux-deb11-cross_aarch64-linux-gnu-validate": {
    
    6237
    +  "x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate": {
    
    6172 6238
         "after_script": [
    
    6173 6239
           ".gitlab/ci.sh save_cache",
    
    6174 6240
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -6179,7 +6245,7 @@
    6179 6245
         "artifacts": {
    
    6180 6246
           "expire_in": "2 weeks",
    
    6181 6247
           "paths": [
    
    6182
    -        "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-validate.tar.xz",
    
    6248
    +        "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate.tar.xz",
    
    6183 6249
             "junit.xml",
    
    6184 6250
             "unexpected-test-output.tar.gz"
    
    6185 6251
           ],
    
    ... ... @@ -6205,7 +6271,7 @@
    6205 6271
         ],
    
    6206 6272
         "rules": [
    
    6207 6273
           {
    
    6208
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb11-cross_aarch64-linux-gnu-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6274
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6209 6275
             "when": "on_success"
    
    6210 6276
           }
    
    6211 6277
         ],
    
    ... ... @@ -6222,7 +6288,7 @@
    6222 6288
         ],
    
    6223 6289
         "variables": {
    
    6224 6290
           "BIGNUM_BACKEND": "gmp",
    
    6225
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-validate",
    
    6291
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate",
    
    6226 6292
           "BUILD_FLAVOUR": "validate",
    
    6227 6293
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    6228 6294
           "CROSS_EMULATOR": "qemu-aarch64 -L /usr/aarch64-linux-gnu",
    
    ... ... @@ -6230,10 +6296,10 @@
    6230 6296
           "CROSS_TARGET": "aarch64-linux-gnu",
    
    6231 6297
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    6232 6298
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    6233
    -      "TEST_ENV": "x86_64-linux-deb11-cross_aarch64-linux-gnu-validate"
    
    6299
    +      "TEST_ENV": "x86_64-linux-deb11-cross_aarch64-linux-gnu-stage_2-validate"
    
    6234 6300
         }
    
    6235 6301
       },
    
    6236
    -  "x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate": {
    
    6302
    +  "x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate": {
    
    6237 6303
         "after_script": [
    
    6238 6304
           ".gitlab/ci.sh save_cache",
    
    6239 6305
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -6244,7 +6310,7 @@
    6244 6310
         "artifacts": {
    
    6245 6311
           "expire_in": "2 weeks",
    
    6246 6312
           "paths": [
    
    6247
    -        "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate.tar.xz",
    
    6313
    +        "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate.tar.xz",
    
    6248 6314
             "junit.xml",
    
    6249 6315
             "unexpected-test-output.tar.gz"
    
    6250 6316
           ],
    
    ... ... @@ -6270,7 +6336,7 @@
    6270 6336
         ],
    
    6271 6337
         "rules": [
    
    6272 6338
           {
    
    6273
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*javascript.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6339
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*javascript.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6274 6340
             "when": "on_success"
    
    6275 6341
           }
    
    6276 6342
         ],
    
    ... ... @@ -6287,7 +6353,7 @@
    6287 6353
         ],
    
    6288 6354
         "variables": {
    
    6289 6355
           "BIGNUM_BACKEND": "native",
    
    6290
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate",
    
    6356
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate",
    
    6291 6357
           "BUILD_FLAVOUR": "validate",
    
    6292 6358
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    6293 6359
           "CONFIGURE_WRAPPER": "emconfigure",
    
    ... ... @@ -6295,7 +6361,7 @@
    6295 6361
           "CROSS_TARGET": "javascript-unknown-ghcjs",
    
    6296 6362
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    6297 6363
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    6298
    -      "TEST_ENV": "x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-validate"
    
    6364
    +      "TEST_ENV": "x86_64-linux-deb11-emsdk-closure-int_native-cross_javascript-unknown-ghcjs-stage_2-validate"
    
    6299 6365
         }
    
    6300 6366
       },
    
    6301 6367
       "x86_64-linux-deb11-validate": {
    
    ... ... @@ -6610,7 +6676,7 @@
    6610 6676
           "TEST_ENV": "x86_64-linux-deb12-release"
    
    6611 6677
         }
    
    6612 6678
       },
    
    6613
    -  "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate": {
    
    6679
    +  "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate": {
    
    6614 6680
         "after_script": [
    
    6615 6681
           ".gitlab/ci.sh save_cache",
    
    6616 6682
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -6621,7 +6687,7 @@
    6621 6687
         "artifacts": {
    
    6622 6688
           "expire_in": "2 weeks",
    
    6623 6689
           "paths": [
    
    6624
    -        "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate.tar.xz",
    
    6690
    +        "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate.tar.xz",
    
    6625 6691
             "junit.xml",
    
    6626 6692
             "unexpected-test-output.tar.gz"
    
    6627 6693
           ],
    
    ... ... @@ -6647,7 +6713,7 @@
    6647 6713
         ],
    
    6648 6714
         "rules": [
    
    6649 6715
           {
    
    6650
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*RISC-V.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6716
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*RISC-V.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6651 6717
             "when": "on_success"
    
    6652 6718
           }
    
    6653 6719
         ],
    
    ... ... @@ -6664,7 +6730,7 @@
    6664 6730
         ],
    
    6665 6731
         "variables": {
    
    6666 6732
           "BIGNUM_BACKEND": "gmp",
    
    6667
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate",
    
    6733
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate",
    
    6668 6734
           "BUILD_FLAVOUR": "validate",
    
    6669 6735
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    6670 6736
           "CROSS_EMULATOR": "qemu-riscv64 -L /usr/riscv64-linux-gnu",
    
    ... ... @@ -6672,7 +6738,72 @@
    6672 6738
           "CROSS_TARGET": "riscv64-linux-gnu",
    
    6673 6739
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    6674 6740
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    6675
    -      "TEST_ENV": "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-validate"
    
    6741
    +      "TEST_ENV": "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_2-validate"
    
    6742
    +    }
    
    6743
    +  },
    
    6744
    +  "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate": {
    
    6745
    +    "after_script": [
    
    6746
    +      ".gitlab/ci.sh save_cache",
    
    6747
    +      ".gitlab/ci.sh save_test_output",
    
    6748
    +      ".gitlab/ci.sh clean",
    
    6749
    +      "cat ci_timings.txt"
    
    6750
    +    ],
    
    6751
    +    "allow_failure": false,
    
    6752
    +    "artifacts": {
    
    6753
    +      "expire_in": "2 weeks",
    
    6754
    +      "paths": [
    
    6755
    +        "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate.tar.xz",
    
    6756
    +        "junit.xml",
    
    6757
    +        "unexpected-test-output.tar.gz"
    
    6758
    +      ],
    
    6759
    +      "reports": {
    
    6760
    +        "junit": "junit.xml"
    
    6761
    +      },
    
    6762
    +      "when": "always"
    
    6763
    +    },
    
    6764
    +    "cache": {
    
    6765
    +      "key": "x86_64-linux-deb12-riscv-$CACHE_REV",
    
    6766
    +      "paths": [
    
    6767
    +        "cabal-cache",
    
    6768
    +        "toolchain"
    
    6769
    +      ]
    
    6770
    +    },
    
    6771
    +    "dependencies": [],
    
    6772
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12-riscv:$DOCKER_REV",
    
    6773
    +    "needs": [
    
    6774
    +      {
    
    6775
    +        "artifacts": false,
    
    6776
    +        "job": "hadrian-ghc-in-ghci"
    
    6777
    +      }
    
    6778
    +    ],
    
    6779
    +    "rules": [
    
    6780
    +      {
    
    6781
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*RISC-V.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    6782
    +        "when": "on_success"
    
    6783
    +      }
    
    6784
    +    ],
    
    6785
    +    "script": [
    
    6786
    +      "sudo chown ghc:ghc -R .",
    
    6787
    +      ".gitlab/ci.sh setup",
    
    6788
    +      ".gitlab/ci.sh configure",
    
    6789
    +      ".gitlab/ci.sh build_hadrian",
    
    6790
    +      ".gitlab/ci.sh test_hadrian"
    
    6791
    +    ],
    
    6792
    +    "stage": "full-build",
    
    6793
    +    "tags": [
    
    6794
    +      "x86_64-linux"
    
    6795
    +    ],
    
    6796
    +    "variables": {
    
    6797
    +      "BIGNUM_BACKEND": "gmp",
    
    6798
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate",
    
    6799
    +      "BUILD_FLAVOUR": "validate",
    
    6800
    +      "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    6801
    +      "CROSS_EMULATOR": "qemu-riscv64 -L /usr/riscv64-linux-gnu",
    
    6802
    +      "CROSS_STAGE": "3",
    
    6803
    +      "CROSS_TARGET": "riscv64-linux-gnu",
    
    6804
    +      "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    6805
    +      "RUNTEST_ARGS": "-e config.timeout=900",
    
    6806
    +      "TEST_ENV": "x86_64-linux-deb12-riscv-cross_riscv64-linux-gnu-stage_3-validate"
    
    6676 6807
         }
    
    6677 6808
       },
    
    6678 6809
       "x86_64-linux-deb12-unreg-validate": {
    
    ... ... @@ -7673,7 +7804,7 @@
    7673 7804
           "TEST_ENV": "x86_64-linux-ubuntu22_04-validate"
    
    7674 7805
         }
    
    7675 7806
       },
    
    7676
    -  "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate": {
    
    7807
    +  "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate": {
    
    7677 7808
         "after_script": [
    
    7678 7809
           ".gitlab/ci.sh save_cache",
    
    7679 7810
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -7684,7 +7815,7 @@
    7684 7815
         "artifacts": {
    
    7685 7816
           "expire_in": "2 weeks",
    
    7686 7817
           "paths": [
    
    7687
    -        "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate.tar.xz",
    
    7818
    +        "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate.tar.xz",
    
    7688 7819
             "junit.xml",
    
    7689 7820
             "unexpected-test-output.tar.gz"
    
    7690 7821
           ],
    
    ... ... @@ -7710,7 +7841,7 @@
    7710 7841
         ],
    
    7711 7842
         "rules": [
    
    7712 7843
           {
    
    7713
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*loongarch.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7844
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/)) || ($CI_MERGE_REQUEST_LABELS =~ /.*loongarch.*/)))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7714 7845
             "when": "on_success"
    
    7715 7846
           }
    
    7716 7847
         ],
    
    ... ... @@ -7727,7 +7858,7 @@
    7727 7858
         ],
    
    7728 7859
         "variables": {
    
    7729 7860
           "BIGNUM_BACKEND": "gmp",
    
    7730
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate",
    
    7861
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate",
    
    7731 7862
           "BUILD_FLAVOUR": "validate",
    
    7732 7863
           "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
    
    7733 7864
           "CROSS_EMULATOR": "qemu-loongarch64 -L /usr/loongarch64-linux-gnu",
    
    ... ... @@ -7735,7 +7866,7 @@
    7735 7866
           "CROSS_TARGET": "loongarch64-linux-gnu",
    
    7736 7867
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7737 7868
           "RUNTEST_ARGS": "-e config.timeout=900",
    
    7738
    -      "TEST_ENV": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate"
    
    7869
    +      "TEST_ENV": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-stage_2-validate"
    
    7739 7870
         }
    
    7740 7871
       },
    
    7741 7872
       "x86_64-linux-ubuntu24_04-validate": {