Sven Tennie pushed to branch wip/supersven/cross-compiler-manual-test-jobs at Glasgow Haskell Compiler / GHC
Commits:
508cc020 by Sven Tennie at 2026-06-07T10:23:11+00:00
ci: fix platform_mapping collision for manual testsuite jobs
Both the build job and its manual test job share the same (Arch, Opsys)
platform, causing platform_mapping's combine function to error. Prefer
the build job when one of the two has the -manual-testsuite suffix.
Co-Authored-By: Claude Sonnet 4.6
- - - - -
5ffab85d by Sven Tennie at 2026-06-07T15:36:12+00:00
ci: simplify crossTestJob helpers
- Remove WHAT-explaining haddocks on crossTestJob and withCrossTestJob
- renameRule fallback now errors explicitly rather than silently no-oping
Co-Authored-By: Claude Sonnet 4.6
- - - - -
7206c32b by Sven Tennie at 2026-06-07T15:47:09+00:00
ci: set jobDependencies in crossTestJob to enable artifact download
GitLab: dependencies:[] overrides needs:[{artifacts:true}], preventing
artifact download. Set dependencies:[buildName] so the bindist tarball
is actually fetched from the build job.
Co-Authored-By: Claude Sonnet 4.6
- - - - -
2 changed files:
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
Changes:
=====================================
.gitlab/generate-ci/gen_ci.hs
=====================================
@@ -591,7 +591,7 @@ manualRule rules = rules { when = Manual }
renameRule :: String -> OnOffRules -> OnOffRules
renameRule n (OnOffRules (ValidateOnly _ rs) w) = OnOffRules (ValidateOnly n rs) w
-renameRule _ r = r
+renameRule _ r = error $ "renameRule: not a ValidateOnly rule: " ++ show (rule_set r)
-- Given 'OnOffRules', returns a list of ALL rules with their toggled status.
-- For example, even if you don't explicitly disable a rule it will end up in the
@@ -1009,14 +1009,13 @@ release arch opsys bc =
. ignorePerfFailures
. highCompression $ j
}
--- | Derive a manually-triggered full-testsuite job from a cross-compiler build job.
--- The test job downloads the build job's bindist artifact and runs the full testsuite.
crossTestJob :: NamedJob Job -> NamedJob Job
crossTestJob (NamedJob buildName buildJob) =
NamedJob testName $
buildJob
{ jobNeeds = ["hadrian-ghc-in-ghci"]
, jobNeedsWithArtifacts = [buildName]
+ , jobDependencies = [buildName]
, jobScript = testScript (jobPlatform buildJob)
, jobRules = renameRule testName $ manualRule (jobRules buildJob)
, jobAllowFailure = True
@@ -1030,8 +1029,6 @@ crossTestJob (NamedJob buildName buildJob) =
, ".gitlab/ci.sh test_hadrian_cross_full"
]
--- | Pair a cross-compiler build JobGroup with a manual test job derived from
--- its validate variant.
withCrossTestJob :: JobGroup Job -> [JobGroup Job]
withCrossTestJob jg@(StandardTriple (Just vj) _ _) =
[jg, StandardTriple (Just (crossTestJob vj)) Nothing Nothing]
@@ -1485,6 +1482,8 @@ platform_mapping = Map.map go combined_result
, show (name b) ] -- Explicitly selected
| name a `elem` whitelist = a -- Explicitly selected
| name b `elem` whitelist = b
+ | "-manual-testsuite" `isSuffixOf` name a = b -- prefer build job over manual test job
+ | "-manual-testsuite" `isSuffixOf` name b = a
| otherwise = error (show (name a) ++ show (name b))
go = fmap (BindistInfo . unwords . fromJust . mmlookup "BIN_DIST_NAME" . jobVariables)
=====================================
.gitlab/jobs.yaml
=====================================
@@ -444,7 +444,9 @@
"toolchain"
]
},
- "dependencies": [],
+ "dependencies": [
+ "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm"
+ ],
"image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb12-wine:$DOCKER_REV",
"needs": [
{
@@ -530,7 +532,9 @@
"toolchain"
]
},
- "dependencies": [],
+ "dependencies": [
+ "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate"
+ ],
"image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb12-wine:$DOCKER_REV",
"needs": [
{
@@ -6546,7 +6550,9 @@
"toolchain"
]
},
- "dependencies": [],
+ "dependencies": [
+ "x86_64-linux-deb13-cross_aarch64-linux-gnu-validate"
+ ],
"image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb13:$DOCKER_REV",
"needs": [
{
@@ -6928,7 +6934,9 @@
"toolchain"
]
},
- "dependencies": [],
+ "dependencies": [
+ "x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate"
+ ],
"image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb13-riscv:$DOCKER_REV",
"needs": [
{
@@ -7872,7 +7880,9 @@
"toolchain"
]
},
- "dependencies": [],
+ "dependencies": [
+ "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate"
+ ],
"image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-ubuntu24_04-loongarch:$DOCKER_REV",
"needs": [
{
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/7ae6c7ae4a20054de2721d29b8590b4...
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/7ae6c7ae4a20054de2721d29b8590b4...
You're receiving this email because of your account on gitlab.haskell.org.