Serge S. Gulin pushed to branch wip/T25974 at Glasgow Haskell Compiler / GHC

Commits:

3 changed files:

Changes:

  • .gitlab-ci.yml
    ... ... @@ -2,7 +2,7 @@ variables:
    2 2
       GIT_SSL_NO_VERIFY: "1"
    
    3 3
     
    
    4 4
       # Commit of ghc/ci-images repository from which to pull Docker images
    
    5
    -  DOCKER_REV: 6e9f8f17086e56e83adae4a8a9d63e2fec3cb6c7
    
    5
    +  DOCKER_REV: 14b23867eebc6d5f43e79dab32304175e2416797
    
    6 6
     
    
    7 7
       # Sequential version number of all cached things.
    
    8 8
       # Bump to invalidate GitLab CI cache.
    

  • .gitlab/generate-ci/gen_ci.hs
    ... ... @@ -110,9 +110,19 @@ data Opsys
    110 110
       | FreeBSD14
    
    111 111
       | Windows deriving (Eq)
    
    112 112
     
    
    113
    +data WineMode
    
    114
    +  = OnlyTest
    
    115
    +  -- ^ Wine will be used only to test binaries after cross-compile
    
    116
    +  -- which means we do cross-compile from Linux to Windows
    
    117
    +  | FullBuild
    
    118
    +  -- ^ Wine will be used for full process of compilation
    
    119
    +  -- which means compilation itself will be executed under Wine.
    
    120
    +  -- It makes possible to run compilation for Windows environment at Linux machines.
    
    121
    +  deriving (Eq)
    
    122
    +
    
    113 123
     data LinuxDistro
    
    114 124
       = Debian12
    
    115
    -  | Debian12Wine
    
    125
    +  | Debian12Wine WineMode
    
    116 126
       | Debian12Riscv
    
    117 127
       | Debian11
    
    118 128
       | Debian11Js
    
    ... ... @@ -316,7 +326,7 @@ distroName Debian12 = "deb12"
    316 326
     distroName Debian11      = "deb11"
    
    317 327
     distroName Debian11Js    = "deb11-emsdk-closure"
    
    318 328
     distroName Debian12Riscv = "deb12-riscv"
    
    319
    -distroName Debian12Wine  = "deb12-wine"
    
    329
    +distroName (Debian12Wine _) = "deb12-wine"
    
    320 330
     distroName Debian10      = "deb10"
    
    321 331
     distroName Debian9       = "deb9"
    
    322 332
     distroName Fedora33      = "fedora33"
    
    ... ... @@ -360,6 +370,7 @@ testEnv arch opsys bc =
    360 370
         , ["no_tntc"  | not (tablesNextToCode bc) ]
    
    361 371
         , ["cross_"++triple  | Just triple <- pure $ crossTarget bc ]
    
    362 372
         , [flavourString (mkJobFlavour bc)]
    
    373
    +    , if opsys == Linux (Debian12Wine FullBuild) then ["_wine_full_build"] else []
    
    363 374
         ]
    
    364 375
     
    
    365 376
     -- | The hadrian flavour string we are going to use for this build
    
    ... ... @@ -728,6 +739,7 @@ data ValidateRule
    728 739
       | I386Backend  -- ^ Run this job when the "i386" label is set
    
    729 740
       | WinArm64     -- ^ Run this job when the "aarch64" and "Windows" labels are set together without "LLVM backend"
    
    730 741
       | WinArm64LLVM -- ^ Run this job when the "aarch64" and "Windows" labels are set together with "LLVM backend"
    
    742
    +  | WineArm64    -- ^ Run this job when the "aarch64" and "Wine" labels are set
    
    731 743
       deriving (Show, Ord, Eq)
    
    732 744
     
    
    733 745
     -- | Convert the state of the rule into a string that gitlab understand.
    
    ... ... @@ -781,6 +793,10 @@ validateRuleString WinArm64LLVM = and_all
    781 793
                                         , labelString "Windows"
    
    782 794
                                         , validateRuleString LLVMBackend
    
    783 795
                                         ]
    
    796
    +validateRuleString WineArm64     = and_all
    
    797
    +                                    [ labelString "aarch64"
    
    798
    +                                    , labelString "Wine"
    
    799
    +                                    ]
    
    784 800
     
    
    785 801
     ---------------------------------------------------------------------
    
    786 802
     -- The Job type
    
    ... ... @@ -847,6 +863,16 @@ job arch opsys buildConfig = NamedJob { name = jobName, jobInfo = Job {..} }
    847 863
             , "bash .gitlab/ci.sh build_hadrian"
    
    848 864
             , "bash .gitlab/ci.sh test_hadrian"
    
    849 865
             ]
    
    866
    +      | Linux (Debian12Wine FullBuild) <- opsys
    
    867
    +      = [ "sudo chown ghc:ghc -R ."
    
    868
    +        , "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh setup"
    
    869
    +        , "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh configure"
    
    870
    +        -- We have to trigger cabal build in an independent way to mitigate Wine hangs at MSYS2/Arm64EC
    
    871
    +        , "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l -c './hadrian/build-cabal clean'"
    
    872
    +        , "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh build_hadrian"
    
    873
    +        -- It builds, it is already a huge win at the moment of this commit
    
    874
    +        -- TODO: , "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh test_hadrian"
    
    875
    +        ]
    
    850 876
           | otherwise
    
    851 877
           = [ "find libraries -name config.sub -exec cp config.sub {} \\;" | Darwin == opsys ] ++
    
    852 878
             [ "sudo chown ghc:ghc -R ." | Linux {} <- [opsys]] ++
    
    ... ... @@ -897,6 +923,10 @@ job arch opsys buildConfig = NamedJob { name = jobName, jobInfo = Job {..} }
    897 923
                     ]
    
    898 924
             in "RUNTEST_ARGS" =: unwords runtestArgs
    
    899 925
           , if testsuiteUsePerf buildConfig then "RUNTEST_ARGS" =: "--config perf_path=perf" else mempty
    
    926
    +      -- TODO: move me to an appropriate way
    
    927
    +      , if crossTarget buildConfig == Just "aarch64-unknown-mingw32" && opsys == Linux (Debian12Wine FullBuild)
    
    928
    +          then "CONFIGURE_ARGS" =: "--build=x86_64-unknown-mingw32 --host=x86_64-unknown-mingw32"
    
    929
    +          else mempty
    
    900 930
           ]
    
    901 931
     
    
    902 932
         jobArtifacts = Artifacts
    
    ... ... @@ -1277,51 +1307,73 @@ cross_jobs = [
    1277 1307
         -- Linux Aarch64 (Wine + FEX + MSYS64) => Windows Aarch64
    
    1278 1308
       , makeWinArmJobs
    
    1279 1309
           $ addValidateRule WinArm64
    
    1280
    -        (validateBuilds AArch64 (Linux Debian12Wine) winAarch64Config)
    
    1310
    +        (validateBuilds AArch64 (Linux (Debian12Wine OnlyTest)) winAarch64Config)
    
    1281 1311
       , makeWinArmJobs
    
    1282 1312
           $ addValidateRule WinArm64LLVM
    
    1283
    -        (validateBuilds AArch64 (Linux Debian12Wine) (winAarch64Config {llvmBootstrap = True}))
    
    1313
    +        (validateBuilds AArch64 (Linux (Debian12Wine OnlyTest)) (winAarch64Config {llvmBootstrap = True}))
    
    1314
    +  , makeWineArmJobs
    
    1315
    +      $ addValidateRule WineArm64
    
    1316
    +        (validateBuilds AArch64 (Linux (Debian12Wine FullBuild)) winAarch64Config)
    
    1284 1317
       ]
    
    1285 1318
       where
    
    1286 1319
         javascriptConfig = (crossConfig "javascript-unknown-ghcjs" (Emulator "js-emulator") (Just "emconfigure"))
    
    1287 1320
                              { bignumBackend = Native }
    
    1288 1321
     
    
    1289
    -    makeWinArmJobs = modifyJobs
    
    1290
    -        ( -- Cross compiler validate does not need any docs
    
    1291
    -          setVariable "HADRIAN_ARGS" "--docs=none"
    
    1292
    -        . setVariable "AR" (llvm_prefix ++ "llvm-ar")
    
    1293
    -        . setVariable "CC" (llvm_prefix ++ "clang")
    
    1294
    -        . setVariable "CXX" (llvm_prefix ++ "clang++")
    
    1295
    -        . setVariable "NM" (llvm_prefix ++ "nm")
    
    1296
    -        . setVariable "OBJCOPY" (llvm_prefix ++ "objcopy")
    
    1297
    -        . setVariable "OBJDUMP" (llvm_prefix ++ "objdump")
    
    1298
    -        . setVariable "RANLIB" (llvm_prefix ++ "llvm-ranlib")
    
    1299
    -        . setVariable "SIZE" (llvm_prefix ++ "size")
    
    1300
    -        . setVariable "STRINGS" (llvm_prefix ++ "strings")
    
    1301
    -        . setVariable "STRIP" (llvm_prefix ++ "strip")
    
    1302
    -        . setVariable "WindresCmd" (llvm_prefix ++ "windres")
    
    1303
    -        . setVariable "LLVMAS" (llvm_prefix ++ "clang")
    
    1304
    -        . setVariable "LD" (llvm_prefix ++ "ld")
    
    1305
    -          -- See Note [Empty MergeObjsCmd]
    
    1306
    -          -- Windows target require to make linker merge feature check disabled.
    
    1307
    -        . setVariable "MergeObjsCmd" ""
    
    1308
    -          -- Note [Wide Triple Windows]
    
    1309
    -          -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    1310
    -          -- LLVM MinGW Linux Toolchain expects to recieve "aarch64-w64-mingw32"
    
    1311
    -          -- as a triple but we use more common "aarch64-unknown-mingw32".
    
    1312
    -          -- Due of this we need configure ld manually for clang because
    
    1313
    -          -- it will use system's ld otherwise when --target will be specified to
    
    1314
    -          -- unexpected triple.
    
    1315
    -        . setVariable "CFLAGS" cflags
    
    1316
    -        . setVariable "CONF_CC_OPTS_STAGE2" cflags
    
    1317
    -        ) where
    
    1318
    -            llvm_prefix = "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-"
    
    1319
    -            -- See Note [Windows Toolchain Standard Library Options]
    
    1320
    -            cflags = "-fuse-ld=" ++ llvm_prefix ++ "ld --rtlib=compiler-rt"
    
    1322
    +    addWindowsCrossArmVars llvm_prefix exe_suffix cflags = modifyJobs
    
    1323
    +      ( -- Cross compiler validate does not need any docs
    
    1324
    +        setVariable "HADRIAN_ARGS" "--docs=none"
    
    1325
    +      . setVariable "AR" (llvm_prefix ++ "llvm-ar" ++ exe_suffix)
    
    1326
    +      . setVariable "CC" (llvm_prefix ++ "clang")
    
    1327
    +      . setVariable "CXX" (llvm_prefix ++ "clang++")
    
    1328
    +      . setVariable "NM" (llvm_prefix ++ "nm" ++ exe_suffix)
    
    1329
    +      . setVariable "OBJCOPY" (llvm_prefix ++ "objcopy")
    
    1330
    +      . setVariable "OBJDUMP" (llvm_prefix ++ "objdump")
    
    1331
    +      . setVariable "RANLIB" (llvm_prefix ++ "llvm-ranlib" ++ exe_suffix)
    
    1332
    +      . setVariable "SIZE" (llvm_prefix ++ "size")
    
    1333
    +      . setVariable "STRINGS" (llvm_prefix ++ "strings")
    
    1334
    +      . setVariable "STRIP" (llvm_prefix ++ "strip")
    
    1335
    +      . setVariable "WindresCmd" (llvm_prefix ++ "windres")
    
    1336
    +      . setVariable "LLVMAS" (llvm_prefix ++ "clang")
    
    1337
    +      . setVariable "LD" (llvm_prefix ++ "ld")
    
    1338
    +        -- See Note [Empty MergeObjsCmd]
    
    1339
    +        -- Windows target require to make linker merge feature check disabled.
    
    1340
    +      . setVariable "MergeObjsCmd" ""
    
    1341
    +        -- Note [Wide Triple Windows]
    
    1342
    +        -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    1343
    +        -- LLVM MinGW Linux Toolchain expects to recieve "aarch64-w64-mingw32"
    
    1344
    +        -- as a triple but we use more common "aarch64-unknown-mingw32".
    
    1345
    +        -- Due of this we need configure ld manually for clang because
    
    1346
    +        -- it will use system's ld otherwise when --target will be specified to
    
    1347
    +        -- unexpected triple.
    
    1348
    +      . setVariable "CFLAGS" cflags
    
    1349
    +      . setVariable "CONF_CC_OPTS_STAGE2" cflags
    
    1350
    +      )
    
    1351
    +
    
    1352
    +    makeWinArmJobs =
    
    1353
    +      let
    
    1354
    +        llvm_prefix = "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-"
    
    1355
    +        -- See Note [Windows Toolchain Standard Library Options]
    
    1356
    +        cflags = "-fuse-ld=" ++ llvm_prefix ++ "ld --rtlib=compiler-rt"
    
    1357
    +      in addWindowsCrossArmVars llvm_prefix "" cflags
    
    1321 1358
     
    
    1322 1359
         winAarch64Config = (crossConfig "aarch64-unknown-mingw32" (Emulator "/opt/wine-arm64ec-msys2-deb12/bin/wine") Nothing)
    
    1323 1360
                              { bignumBackend = Native }
    
    1324 1361
     
    
    1362
    +    makeWineArmJobs =
    
    1363
    +      let
    
    1364
    +        llvm_path = "C:/msys64/opt/llvm-mingw-windows/bin"
    
    1365
    +        llvm_prefix = llvm_path ++ "/aarch64-w64-mingw32-"
    
    1366
    +        exe_suffix = ".exe"
    
    1367
    +        -- See Note [Windows Toolchain Standard Library Options]
    
    1368
    +        cflags = "-fuse-ld=" ++ (llvm_path ++ "/bin/ld.lld") ++ "ld --rtlib=compiler-rt -D_UCRT"
    
    1369
    +      in modifyJobs
    
    1370
    +        ( setVariable "TOOLCHAIN_SOURCE" "env"
    
    1371
    +        . setVariable "DLLTOOL" (llvm_path ++ "/dlltool" ++ exe_suffix)
    
    1372
    +        . setVariable "CC_STAGE0" (llvm_path ++ "/bin/x86_64-w64-mingw32-clang")
    
    1373
    +        . setVariable "CONF_CC_OPTS_STAGE0" ("--target=x86_64-unknown-mingw32 " ++ cflags)
    
    1374
    +        . setVariable "CONF_CC_OPTS_STAGE1" cflags
    
    1375
    +        ) . (addWindowsCrossArmVars llvm_prefix exe_suffix cflags)
    
    1376
    +
    
    1325 1377
         make_wasm_jobs cfg =
    
    1326 1378
           modifyJobs
    
    1327 1379
             ( -- See Note [Testing wasm ghci browser mode]
    
    ... ... @@ -1381,6 +1433,7 @@ platform_mapping = Map.map go combined_result
    1381 1433
                     , "x86_64-windows-validate"
    
    1382 1434
                     , "aarch64-linux-deb12-validate"
    
    1383 1435
                     , "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate"
    
    1436
    +                , "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build"
    
    1384 1437
                     , "nightly-x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static+text_simdutf"
    
    1385 1438
                     , "nightly-x86_64-linux-deb11-validate"
    
    1386 1439
                     , "nightly-x86_64-linux-deb12-validate"
    
    ... ... @@ -1389,6 +1442,7 @@ platform_mapping = Map.map go combined_result
    1389 1442
                     , "nightly-aarch64-linux-deb10-validate"
    
    1390 1443
                     , "nightly-aarch64-linux-deb12-validate"
    
    1391 1444
                     , "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate"
    
    1445
    +                , "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build"
    
    1392 1446
                     , "nightly-x86_64-linux-alpine3_12-validate"
    
    1393 1447
                     , "nightly-x86_64-linux-deb10-validate"
    
    1394 1448
                     , "nightly-x86_64-linux-fedora33-release"
    

  • .gitlab/jobs.yaml
    ... ... @@ -477,6 +477,92 @@
    477 477
           "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres"
    
    478 478
         }
    
    479 479
       },
    
    480
    +  "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build": {
    
    481
    +    "after_script": [
    
    482
    +      ".gitlab/ci.sh save_cache",
    
    483
    +      ".gitlab/ci.sh save_test_output",
    
    484
    +      ".gitlab/ci.sh clean",
    
    485
    +      "cat ci_timings"
    
    486
    +    ],
    
    487
    +    "allow_failure": false,
    
    488
    +    "artifacts": {
    
    489
    +      "expire_in": "2 weeks",
    
    490
    +      "paths": [
    
    491
    +        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build.tar.xz",
    
    492
    +        "junit.xml",
    
    493
    +        "unexpected-test-output.tar.gz"
    
    494
    +      ],
    
    495
    +      "reports": {
    
    496
    +        "junit": "junit.xml"
    
    497
    +      },
    
    498
    +      "when": "always"
    
    499
    +    },
    
    500
    +    "cache": {
    
    501
    +      "key": "aarch64-linux-deb12-wine-$CACHE_REV",
    
    502
    +      "paths": [
    
    503
    +        "cabal-cache",
    
    504
    +        "toolchain"
    
    505
    +      ]
    
    506
    +    },
    
    507
    +    "dependencies": [],
    
    508
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb12-wine:$DOCKER_REV",
    
    509
    +    "needs": [
    
    510
    +      {
    
    511
    +        "artifacts": false,
    
    512
    +        "job": "hadrian-ghc-in-ghci"
    
    513
    +      }
    
    514
    +    ],
    
    515
    +    "rules": [
    
    516
    +      {
    
    517
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build(\\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 =~ /.*Wine.*/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    518
    +        "when": "on_success"
    
    519
    +      }
    
    520
    +    ],
    
    521
    +    "script": [
    
    522
    +      "sudo chown ghc:ghc -R .",
    
    523
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh setup",
    
    524
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh configure",
    
    525
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l -c './hadrian/build-cabal clean'",
    
    526
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh build_hadrian"
    
    527
    +    ],
    
    528
    +    "stage": "full-build",
    
    529
    +    "tags": [
    
    530
    +      "aarch64-linux"
    
    531
    +    ],
    
    532
    +    "variables": {
    
    533
    +      "AR": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-llvm-ar.exe",
    
    534
    +      "BIGNUM_BACKEND": "native",
    
    535
    +      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build",
    
    536
    +      "BUILD_FLAVOUR": "validate",
    
    537
    +      "CC": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-clang",
    
    538
    +      "CC_STAGE0": "C:/msys64/opt/llvm-mingw-windows/bin/bin/x86_64-w64-mingw32-clang",
    
    539
    +      "CFLAGS": "-fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    540
    +      "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check --build=x86_64-unknown-mingw32 --host=x86_64-unknown-mingw32",
    
    541
    +      "CONF_CC_OPTS_STAGE0": "--target=x86_64-unknown-mingw32 -fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    542
    +      "CONF_CC_OPTS_STAGE1": "-fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    543
    +      "CONF_CC_OPTS_STAGE2": "-fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    544
    +      "CROSS_EMULATOR": "/opt/wine-arm64ec-msys2-deb12/bin/wine",
    
    545
    +      "CROSS_TARGET": "aarch64-unknown-mingw32",
    
    546
    +      "CXX": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-clang++",
    
    547
    +      "DLLTOOL": "C:/msys64/opt/llvm-mingw-windows/bin/dlltool.exe",
    
    548
    +      "HADRIAN_ARGS": "--docs=none",
    
    549
    +      "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    550
    +      "LD": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-ld",
    
    551
    +      "LLVMAS": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-clang",
    
    552
    +      "MergeObjsCmd": "",
    
    553
    +      "NM": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-nm.exe",
    
    554
    +      "OBJCOPY": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-objcopy",
    
    555
    +      "OBJDUMP": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-objdump",
    
    556
    +      "RANLIB": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-llvm-ranlib.exe",
    
    557
    +      "RUNTEST_ARGS": "",
    
    558
    +      "SIZE": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-size",
    
    559
    +      "STRINGS": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-strings",
    
    560
    +      "STRIP": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-strip",
    
    561
    +      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build",
    
    562
    +      "TOOLCHAIN_SOURCE": "env",
    
    563
    +      "WindresCmd": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-windres"
    
    564
    +    }
    
    565
    +  },
    
    480 566
       "i386-linux-alpine3_20-validate": {
    
    481 567
         "after_script": [
    
    482 568
           ".gitlab/ci.sh save_cache",
    
    ... ... @@ -1148,6 +1234,93 @@
    1148 1234
           "XZ_OPT": "-9"
    
    1149 1235
         }
    
    1150 1236
       },
    
    1237
    +  "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build": {
    
    1238
    +    "after_script": [
    
    1239
    +      ".gitlab/ci.sh save_cache",
    
    1240
    +      ".gitlab/ci.sh save_test_output",
    
    1241
    +      ".gitlab/ci.sh clean",
    
    1242
    +      "cat ci_timings"
    
    1243
    +    ],
    
    1244
    +    "allow_failure": false,
    
    1245
    +    "artifacts": {
    
    1246
    +      "expire_in": "8 weeks",
    
    1247
    +      "paths": [
    
    1248
    +        "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build.tar.xz",
    
    1249
    +        "junit.xml",
    
    1250
    +        "unexpected-test-output.tar.gz"
    
    1251
    +      ],
    
    1252
    +      "reports": {
    
    1253
    +        "junit": "junit.xml"
    
    1254
    +      },
    
    1255
    +      "when": "always"
    
    1256
    +    },
    
    1257
    +    "cache": {
    
    1258
    +      "key": "aarch64-linux-deb12-wine-$CACHE_REV",
    
    1259
    +      "paths": [
    
    1260
    +        "cabal-cache",
    
    1261
    +        "toolchain"
    
    1262
    +      ]
    
    1263
    +    },
    
    1264
    +    "dependencies": [],
    
    1265
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb12-wine:$DOCKER_REV",
    
    1266
    +    "needs": [
    
    1267
    +      {
    
    1268
    +        "artifacts": false,
    
    1269
    +        "job": "hadrian-ghc-in-ghci"
    
    1270
    +      }
    
    1271
    +    ],
    
    1272
    +    "rules": [
    
    1273
    +      {
    
    1274
    +        "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY)",
    
    1275
    +        "when": "on_success"
    
    1276
    +      }
    
    1277
    +    ],
    
    1278
    +    "script": [
    
    1279
    +      "sudo chown ghc:ghc -R .",
    
    1280
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh setup",
    
    1281
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh configure",
    
    1282
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l -c './hadrian/build-cabal clean'",
    
    1283
    +      "/opt/wine-arm64ec-msys2-deb12/bin/wine c:/msys64/usr/bin/bash.exe -l .gitlab/ci.sh build_hadrian"
    
    1284
    +    ],
    
    1285
    +    "stage": "full-build",
    
    1286
    +    "tags": [
    
    1287
    +      "aarch64-linux"
    
    1288
    +    ],
    
    1289
    +    "variables": {
    
    1290
    +      "AR": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-llvm-ar.exe",
    
    1291
    +      "BIGNUM_BACKEND": "native",
    
    1292
    +      "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build",
    
    1293
    +      "BUILD_FLAVOUR": "validate",
    
    1294
    +      "CC": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-clang",
    
    1295
    +      "CC_STAGE0": "C:/msys64/opt/llvm-mingw-windows/bin/bin/x86_64-w64-mingw32-clang",
    
    1296
    +      "CFLAGS": "-fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    1297
    +      "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check --build=x86_64-unknown-mingw32 --host=x86_64-unknown-mingw32",
    
    1298
    +      "CONF_CC_OPTS_STAGE0": "--target=x86_64-unknown-mingw32 -fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    1299
    +      "CONF_CC_OPTS_STAGE1": "-fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    1300
    +      "CONF_CC_OPTS_STAGE2": "-fuse-ld=C:/msys64/opt/llvm-mingw-windows/bin/bin/ld.lldld --rtlib=compiler-rt -D_UCRT",
    
    1301
    +      "CROSS_EMULATOR": "/opt/wine-arm64ec-msys2-deb12/bin/wine",
    
    1302
    +      "CROSS_TARGET": "aarch64-unknown-mingw32",
    
    1303
    +      "CXX": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-clang++",
    
    1304
    +      "DLLTOOL": "C:/msys64/opt/llvm-mingw-windows/bin/dlltool.exe",
    
    1305
    +      "HADRIAN_ARGS": "--docs=none",
    
    1306
    +      "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    1307
    +      "LD": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-ld",
    
    1308
    +      "LLVMAS": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-clang",
    
    1309
    +      "MergeObjsCmd": "",
    
    1310
    +      "NM": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-nm.exe",
    
    1311
    +      "OBJCOPY": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-objcopy",
    
    1312
    +      "OBJDUMP": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-objdump",
    
    1313
    +      "RANLIB": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-llvm-ranlib.exe",
    
    1314
    +      "RUNTEST_ARGS": "",
    
    1315
    +      "SIZE": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-size",
    
    1316
    +      "STRINGS": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-strings",
    
    1317
    +      "STRIP": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-strip",
    
    1318
    +      "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-_wine_full_build",
    
    1319
    +      "TOOLCHAIN_SOURCE": "env",
    
    1320
    +      "WindresCmd": "C:/msys64/opt/llvm-mingw-windows/bin/aarch64-w64-mingw32-windres",
    
    1321
    +      "XZ_OPT": "-9"
    
    1322
    +    }
    
    1323
    +  },
    
    1151 1324
       "nightly-i386-linux-alpine3_20-validate": {
    
    1152 1325
         "after_script": [
    
    1153 1326
           ".gitlab/ci.sh save_cache",