Sven Tennie pushed to branch wip/supersven/cross-compiler-manual-test-jobs at Glasgow Haskell Compiler / GHC
Commits:
b7a84067 by Sven Tennie at 2026-06-08T11:35:14+00:00
ci: add manually-triggered full-testsuite jobs for cross-compilers
For cross-compiler targets with a real emulator (qemu, wine) add a
manually-triggered companion job that downloads the bindist artifact
from the corresponding build job and runs the full testsuite via a new
ci.sh command test_hadrian_cross_full.
Changes:
- gen_ci.hs: add jobNeedsWithArtifacts field to Job (needs with
artifacts:true), add crossTestJob/withCrossTestJob helpers, add
withCrossTestJobAuto which activates only for real-emulator jobs by
inspecting CROSS_EMULATOR in the job's variables
- ci.sh: add test_hadrian_cross_full command (extract bindist, install,
run hadrian test with EXTRA_HC_OPTS=-fexternal-interpreter)
- jobs.yaml: regenerated
Co-Authored-By: Claude Sonnet 4.6
- - - - -
96d3e23e by Sven Tennie at 2026-06-08T11:35:14+00:00
ci: symlink bootstrap GHC for test tool builds in cross test job
Cross-compiler bindist only provides the cross-prefixed ghc binary.
Hadrian needs a native ghc at _build/install/bin/ghc to build test
support tools (check-exact, ghc-config). Symlink to bootstrap GHC
which is on PATH after ci.sh setup.
Co-Authored-By: Claude Sonnet 4.6
- - - - -
3 changed files:
- .gitlab/ci.sh
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
Changes:
=====================================
.gitlab/ci.sh
=====================================
@@ -59,6 +59,7 @@ Common Modes:
Hadrian build system
build_hadrian Build GHC via the Hadrian build system
test_hadrian Test GHC via the Hadrian build system
+ test_hadrian_cross_full Test cross-compiled GHC using a downloaded bindist artifact
Environment variables affecting both build systems:
@@ -640,6 +641,34 @@ function install_bindist() {
end_section install-bindist
}
+function test_hadrian_cross_full() {
+ if [[ -z "${BIN_DIST_NAME:-}" ]]; then
+ fail "BIN_DIST_NAME is not set; cannot locate bindist artifact"
+ fi
+
+ local instdir="$TOP/_build/install"
+ local test_compiler="$instdir/bin/${cross_prefix}ghc$exe"
+
+ tar xJf "${BIN_DIST_NAME}.tar.xz"
+ install_bindist ghc-*/ "$instdir"
+
+ # Cross-compiler bindist provides only the cross-prefixed ghc binary, not a
+ # native ghc. Hadrian needs a native ghc at this path to build test support
+ # tools (check-exact, ghc-config). Symlink to the bootstrap GHC from setup.
+ if [[ ! -e "$instdir/bin/ghc" ]]; then
+ ln -sf "$GHC" "$instdir/bin/ghc"
+ fi
+
+ EXTRA_HC_OPTS="-fexternal-interpreter" run_hadrian \
+ test \
+ --summary-junit=./junit.xml \
+ --test-have-intree-files \
+ --test-compiler="${test_compiler}" \
+ "runtest.opts+=${RUNTEST_ARGS:-}" \
+ "runtest.opts+=--unexpected-output-dir=$TOP/unexpected-test-output" \
+ || fail "hadrian cross full testsuite"
+}
+
function test_hadrian() {
check_msys2_deps _build/stage1/bin/ghc --version
check_release_build
@@ -1091,6 +1120,12 @@ case ${1:-help} in
time_it "test" test_hadrian || res=$?
push_perf_notes
exit $res ;;
+ test_hadrian_cross_full)
+ fetch_perf_notes
+ res=0
+ time_it "test" test_hadrian_cross_full || res=$?
+ push_perf_notes
+ exit $res ;;
run_hadrian) shift; run_hadrian "$@" ;;
perf_test) run_perf_test ;;
abi_test) abi_test ;;
=====================================
.gitlab/generate-ci/gen_ci.hs
=====================================
@@ -589,6 +589,10 @@ modifyValidateRules _ r = error $ "Applying validate rule to nightly/release job
manualRule :: OnOffRules -> OnOffRules
manualRule rules = rules { when = Manual }
+renameRule :: String -> OnOffRules -> OnOffRules
+renameRule n (OnOffRules (ValidateOnly _ rs) w) = OnOffRules (ValidateOnly n rs) w
+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
-- rule list with the OFF state.
@@ -786,6 +790,7 @@ validateRuleString LoongArch64 = labelString "loongarch"
data Job
= Job { jobStage :: String
, jobNeeds :: [String]
+ , jobNeedsWithArtifacts :: [String]
, jobTags :: [String]
, jobAllowFailure :: Bool
, jobScript :: [String]
@@ -807,7 +812,9 @@ instance ToJSON Job where
[ "stage" A..= jobStage
-- Convoluted to avoid download artifacts from ghci job
-- https://docs.gitlab.com/ee/ci/yaml/#needsartifacts
- , "needs" A..= map (\j -> object [ "job" A..= j, "artifacts" A..= False ]) jobNeeds
+ , "needs" A..= ( map (\j -> object [ "job" A..= j, "artifacts" A..= False ]) jobNeeds
+ ++ map (\j -> object [ "job" A..= j, "artifacts" A..= True ]) jobNeedsWithArtifacts
+ )
, "dependencies" A..= jobDependencies
, "image" A..= jobDockerImage
, "tags" A..= jobTags
@@ -868,6 +875,7 @@ job arch opsys buildConfig = NamedJob { name = jobName, jobInfo = Job {..} }
jobFlavour = mkJobFlavour buildConfig
jobDependencies = []
+ jobNeedsWithArtifacts = []
jobVariables = mconcat
[ opsysVariables arch opsys
, "TEST_ENV" =: testEnv arch opsys buildConfig
@@ -1001,6 +1009,41 @@ release arch opsys bc =
. ignorePerfFailures
. highCompression $ j
}
+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
+ }
+ where
+ testName = buildName ++ "-manual-testsuite"
+ testScript (_, opsys) =
+ [ "sudo chown ghc:ghc -R ." | Linux {} <- [opsys] ] ++
+ [ ".gitlab/ci.sh setup"
+ , ".gitlab/ci.sh configure"
+ , ".gitlab/ci.sh test_hadrian_cross_full"
+ ]
+
+withCrossTestJob :: JobGroup Job -> [JobGroup Job]
+withCrossTestJob jg@(StandardTriple (Just vj) _ _) =
+ [jg, StandardTriple (Just (crossTestJob vj)) Nothing Nothing]
+withCrossTestJob jg = [jg]
+
+-- | Apply withCrossTestJob only when the job already has a real emulator configured.
+-- JS and wasm jobs run their own testsuite; jobs without CROSS_EMULATOR can't run tests.
+withCrossTestJobAuto :: JobGroup Job -> [JobGroup Job]
+withCrossTestJobAuto jg@(StandardTriple (Just (NamedJob _ vj)) _ _)
+ | Just [e] <- mmlookup "CROSS_EMULATOR" (jobVariables vj)
+ , e /= "NOT_SET"
+ , e /= "js-emulator"
+ = withCrossTestJob jg
+withCrossTestJobAuto jg = [jg]
+
---------------------------------------------------------------------
-- Specific job modification functions
---------------------------------------------------------------------
@@ -1259,7 +1302,7 @@ alpine_aarch64 = [
]
cross_jobs :: [JobGroup Job]
-cross_jobs = [
+cross_jobs = concatMap withCrossTestJobAuto [
-- x86 -> aarch64
validateBuilds Amd64 (Linux Debian13) (crossConfig "aarch64-linux-gnu" (Emulator "qemu-aarch64 -L /usr/aarch64-linux-gnu") Nothing)
@@ -1439,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
=====================================
@@ -417,6 +417,182 @@
"WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres"
}
},
+ "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm-manual-testsuite": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh save_test_output",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings.txt"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm.tar.xz",
+ "junit.xml",
+ "unexpected-test-output.tar.gz"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ },
+ "when": "always"
+ },
+ "cache": {
+ "key": "aarch64-linux-deb12-wine-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "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": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ },
+ {
+ "artifacts": true,
+ "job": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate\\+llvm-manual-testsuite(\\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)",
+ "when": "manual"
+ }
+ ],
+ "script": [
+ "sudo chown ghc:ghc -R .",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh test_hadrian_cross_full"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "aarch64-linux"
+ ],
+ "variables": {
+ "AR": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ar",
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm",
+ "BUILD_FLAVOUR": "validate+llvm",
+ "CC": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
+ "CFLAGS": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
+ "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
+ "CONF_CC_OPTS_STAGE2": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
+ "CROSS_EMULATOR": "/opt/wine-arm64ec-msys2-deb12/bin/wine",
+ "CROSS_TARGET": "aarch64-unknown-mingw32",
+ "CXX": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang++",
+ "HADRIAN_ARGS": "--docs=none",
+ "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
+ "LD": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld",
+ "LLVMAS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
+ "MergeObjsCmd": "",
+ "NM": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-nm",
+ "OBJCOPY": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-objcopy",
+ "OBJDUMP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-objdump",
+ "RANLIB": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ranlib",
+ "RUNTEST_ARGS": "",
+ "SIZE": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-size",
+ "STRINGS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strings",
+ "STRIP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strip",
+ "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate+llvm",
+ "USER_CONF_CC_OPTS_STAGE2": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
+ "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres"
+ }
+ },
+ "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-manual-testsuite": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh save_test_output",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings.txt"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate.tar.xz",
+ "junit.xml",
+ "unexpected-test-output.tar.gz"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ },
+ "when": "always"
+ },
+ "cache": {
+ "key": "aarch64-linux-deb12-wine-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "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": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ },
+ {
+ "artifacts": true,
+ "job": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\baarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate-manual-testsuite(\\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)",
+ "when": "manual"
+ }
+ ],
+ "script": [
+ "sudo chown ghc:ghc -R .",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh test_hadrian_cross_full"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "aarch64-linux"
+ ],
+ "variables": {
+ "AR": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ar",
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CC": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
+ "CFLAGS": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
+ "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
+ "CONF_CC_OPTS_STAGE2": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
+ "CROSS_EMULATOR": "/opt/wine-arm64ec-msys2-deb12/bin/wine",
+ "CROSS_TARGET": "aarch64-unknown-mingw32",
+ "CXX": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang++",
+ "HADRIAN_ARGS": "--docs=none",
+ "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
+ "LD": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld",
+ "LLVMAS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-clang",
+ "MergeObjsCmd": "",
+ "NM": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-nm",
+ "OBJCOPY": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-objcopy",
+ "OBJDUMP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-objdump",
+ "RANLIB": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-llvm-ranlib",
+ "RUNTEST_ARGS": "",
+ "SIZE": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-size",
+ "STRINGS": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strings",
+ "STRIP": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-strip",
+ "TEST_ENV": "aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate",
+ "USER_CONF_CC_OPTS_STAGE2": "-fuse-ld=/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-ld --rtlib=compiler-rt",
+ "WindresCmd": "/opt/llvm-mingw-linux/bin/aarch64-w64-mingw32-windres"
+ }
+ },
"aarch64-linux-deb13-validate": {
"after_script": [
".gitlab/ci.sh save_cache",
@@ -6347,6 +6523,76 @@
"TEST_ENV": "x86_64-linux-deb13-cross_aarch64-linux-gnu-validate"
}
},
+ "x86_64-linux-deb13-cross_aarch64-linux-gnu-validate-manual-testsuite": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh save_test_output",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings.txt"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb13-cross_aarch64-linux-gnu-validate.tar.xz",
+ "junit.xml",
+ "unexpected-test-output.tar.gz"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ },
+ "when": "always"
+ },
+ "cache": {
+ "key": "x86_64-linux-deb13-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "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": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ },
+ {
+ "artifacts": true,
+ "job": "x86_64-linux-deb13-cross_aarch64-linux-gnu-validate"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb13-cross_aarch64-linux-gnu-validate-manual-testsuite(\\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)",
+ "when": "manual"
+ }
+ ],
+ "script": [
+ "sudo chown ghc:ghc -R .",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh test_hadrian_cross_full"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb13-cross_aarch64-linux-gnu-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
+ "CROSS_EMULATOR": "qemu-aarch64 -L /usr/aarch64-linux-gnu",
+ "CROSS_TARGET": "aarch64-linux-gnu",
+ "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
+ "RUNTEST_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb13-cross_aarch64-linux-gnu-validate"
+ }
+ },
"x86_64-linux-deb13-int_native-validate": {
"after_script": [
".gitlab/ci.sh save_cache",
@@ -6661,6 +6907,76 @@
"TEST_ENV": "x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate"
}
},
+ "x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate-manual-testsuite": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh save_test_output",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings.txt"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate.tar.xz",
+ "junit.xml",
+ "unexpected-test-output.tar.gz"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ },
+ "when": "always"
+ },
+ "cache": {
+ "key": "x86_64-linux-deb13-riscv-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "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": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ },
+ {
+ "artifacts": true,
+ "job": "x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate-manual-testsuite(\\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)",
+ "when": "manual"
+ }
+ ],
+ "script": [
+ "sudo chown ghc:ghc -R .",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh test_hadrian_cross_full"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
+ "CROSS_EMULATOR": "qemu-riscv64 -L /usr/riscv64-linux-gnu",
+ "CROSS_TARGET": "riscv64-linux-gnu",
+ "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
+ "RUNTEST_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb13-riscv-cross_riscv64-linux-gnu-validate"
+ }
+ },
"x86_64-linux-deb13-unreg-validate": {
"after_script": [
".gitlab/ci.sh save_cache",
@@ -7537,6 +7853,76 @@
"TEST_ENV": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate"
}
},
+ "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate-manual-testsuite": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh save_test_output",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings.txt"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate.tar.xz",
+ "junit.xml",
+ "unexpected-test-output.tar.gz"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ },
+ "when": "always"
+ },
+ "cache": {
+ "key": "x86_64-linux-ubuntu24_04-loongarch-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "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": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ },
+ {
+ "artifacts": true,
+ "job": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate-manual-testsuite(\\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)",
+ "when": "manual"
+ }
+ ],
+ "script": [
+ "sudo chown ghc:ghc -R .",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh test_hadrian_cross_full"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --enable-strict-ghc-toolchain-check",
+ "CROSS_EMULATOR": "qemu-loongarch64 -L /usr/loongarch64-linux-gnu",
+ "CROSS_TARGET": "loongarch64-linux-gnu",
+ "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
+ "RUNTEST_ARGS": "",
+ "TEST_ENV": "x86_64-linux-ubuntu24_04-loongarch-cross_loongarch64-linux-gnu-validate"
+ }
+ },
"x86_64-linux-ubuntu24_04-validate": {
"after_script": [
".gitlab/ci.sh save_cache",
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/dd38245169e7890f7e486d4b77a7c40...
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/dd38245169e7890f7e486d4b77a7c40...
You're receiving this email because of your account on gitlab.haskell.org.