From 91fe5d97c089653aecb71bc84a6d2fa095897524 Mon Sep 17 00:00:00 2001 From: Cheng Shao <terrorjack@type.dance> Date: Thu, 2 May 2024 13:06:04 +0000 Subject: [PATCH] ci: update wasm jobs configuration This commit bumps ci-image revision to use updated wasm toolchain, and use host_fully_static instead of fully_static for wasm jobs so to ensure wasm shared libraries can be properly built. (cherry picked from commit 5043507ca32e31d14869a0a11dd317529f616fc2) (cherry picked from commit 0ae9f0d5d06c4878222f4879f05d64363b567153) --- .gitlab-ci.yml | 2 +- .gitlab/gen_ci.hs | 9 +++- .gitlab/jobs.yaml | 118 +++++++++++++++++++++++----------------------- 3 files changed, 67 insertions(+), 62 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0dcb1ac73cd..833ff3e33cf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,7 +2,7 @@ variables: GIT_SSL_NO_VERIFY: "1" # Commit of ghc/ci-images repository from which to pull Docker images - DOCKER_REV: 653b899f026f84c8043c76c014a5355d28cda24a + DOCKER_REV: efc1ab81236eb37e20cb287ec77aebb6c6341098 # Sequential version number of all cached things. # Bump to invalidate GitLab CI cache. diff --git a/.gitlab/gen_ci.hs b/.gitlab/gen_ci.hs index 6948778d0db..d9806494c84 100755 --- a/.gitlab/gen_ci.hs +++ b/.gitlab/gen_ci.hs @@ -152,6 +152,7 @@ data BuildConfig , crossEmulator :: CrossEmulator , configureWrapper :: Maybe String , fullyStatic :: Bool + , hostFullyStatic :: Bool , tablesNextToCode :: Bool , threadSanitiser :: Bool , noSplitSections :: Bool @@ -174,6 +175,7 @@ mkJobFlavour BuildConfig{..} = Flavour buildFlavour opts opts = [Llvm | llvmBootstrap] ++ [Dwarf | withDwarf] ++ [FullyStatic | fullyStatic] ++ + [HostFullyStatic | hostFullyStatic] ++ [ThreadSanitiser | threadSanitiser] ++ [NoSplitSections | noSplitSections, buildFlavour == Release ] ++ [BootNonmovingGc | validateNonmovingGc ] @@ -184,6 +186,7 @@ data FlavourTrans = Llvm | Dwarf | FullyStatic + | HostFullyStatic | ThreadSanitiser | NoSplitSections | BootNonmovingGc @@ -209,6 +212,7 @@ vanilla = BuildConfig , crossEmulator = NoEmulator , configureWrapper = Nothing , fullyStatic = False + , hostFullyStatic = False , tablesNextToCode = True , threadSanitiser = False , noSplitSections = False @@ -300,7 +304,7 @@ distroName Centos7 = "centos7" distroName Alpine312 = "alpine3_12" distroName Alpine318 = "alpine3_18" distroName Alpine320 = "alpine3_20" -distroName AlpineWasm = "alpine3_17-wasm" +distroName AlpineWasm = "alpine3_20-wasm" distroName Rocky8 = "rocky8" opsysName :: Opsys -> String @@ -342,6 +346,7 @@ flavourString (Flavour base trans) = base_string base ++ concatMap (("+" ++) . f flavour_string Llvm = "llvm" flavour_string Dwarf = "debug_info" flavour_string FullyStatic = "fully_static" + flavour_string HostFullyStatic = "host_fully_static" flavour_string ThreadSanitiser = "thread_sanitizer" flavour_string NoSplitSections = "no_split_sections" flavour_string BootNonmovingGc = "boot_nonmoving_gc" @@ -985,7 +990,7 @@ job_groups = wasm_build_config = (crossConfig "wasm32-wasi" NoEmulatorNeeded Nothing) { - fullyStatic = True + hostFullyStatic = True , buildFlavour = Release -- TODO: This needs to be validate but wasm backend doesn't pass yet } diff --git a/.gitlab/jobs.yaml b/.gitlab/jobs.yaml index f211e56cd37..a02f778b3e5 100644 --- a/.gitlab/jobs.yaml +++ b/.gitlab/jobs.yaml @@ -852,7 +852,7 @@ "XZ_OPT": "-9" } }, - "nightly-x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static": { + "nightly-x86_64-linux-alpine3_20-validate": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -862,7 +862,7 @@ "artifacts": { "expire_in": "8 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static.tar.xz", + "ghc-x86_64-linux-alpine3_20-validate.tar.xz", "junit.xml" ], "reports": { @@ -871,14 +871,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_17-wasm-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_17-wasm:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -904,16 +904,17 @@ ], "variables": { "BIGNUM_BACKEND": "gmp", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static", - "BUILD_FLAVOUR": "release+fully_static", - "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi", - "CROSS_TARGET": "wasm32-wasi", - "HADRIAN_ARGS": "--docs=none", - "TEST_ENV": "x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-validate", + "BROKEN_TESTS": "encoding004 T10458 linker_unload_native", + "BUILD_FLAVOUR": "validate", + "CONFIGURE_ARGS": "--disable-ld-override ", + "HADRIAN_ARGS": "--docs=no-sphinx", + "INSTALL_CONFIGURE_ARGS": "--disable-ld-override", + "TEST_ENV": "x86_64-linux-alpine3_20-validate", "XZ_OPT": "-9" } }, - "nightly-x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static": { + "nightly-x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -923,7 +924,7 @@ "artifacts": { "expire_in": "8 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static.tar.xz", + "ghc-x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -932,14 +933,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_17-wasm-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-wasm-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_17-wasm:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20-wasm:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -964,17 +965,17 @@ "x86_64-linux" ], "variables": { - "BIGNUM_BACKEND": "native", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static", - "BUILD_FLAVOUR": "release+fully_static", + "BIGNUM_BACKEND": "gmp", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static", + "BUILD_FLAVOUR": "release+host_fully_static", "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi", "CROSS_TARGET": "wasm32-wasi", "HADRIAN_ARGS": "--docs=none", - "TEST_ENV": "x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static", + "TEST_ENV": "x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static", "XZ_OPT": "-9" } }, - "nightly-x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static": { + "nightly-x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -984,7 +985,7 @@ "artifacts": { "expire_in": "8 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static.tar.xz", + "ghc-x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -993,14 +994,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_17-wasm-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-wasm-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_17-wasm:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20-wasm:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -1025,17 +1026,17 @@ "x86_64-linux" ], "variables": { - "BIGNUM_BACKEND": "gmp", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static", - "BUILD_FLAVOUR": "release+fully_static", - "CONFIGURE_ARGS": "--enable-unregisterised --with-intree-gmp --with-system-libffi", + "BIGNUM_BACKEND": "native", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static", + "BUILD_FLAVOUR": "release+host_fully_static", + "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi", "CROSS_TARGET": "wasm32-wasi", "HADRIAN_ARGS": "--docs=none", - "TEST_ENV": "x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static", + "TEST_ENV": "x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static", "XZ_OPT": "-9" } }, - "nightly-x86_64-linux-alpine3_20-validate": { + "nightly-x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -1045,7 +1046,7 @@ "artifacts": { "expire_in": "8 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_20-validate.tar.xz", + "ghc-x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -1054,14 +1055,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_20-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-wasm-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20-wasm:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -1087,13 +1088,12 @@ ], "variables": { "BIGNUM_BACKEND": "gmp", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-validate", - "BROKEN_TESTS": "encoding004 T10458 linker_unload_native", - "BUILD_FLAVOUR": "validate", - "CONFIGURE_ARGS": "--disable-ld-override ", - "HADRIAN_ARGS": "--docs=no-sphinx", - "INSTALL_CONFIGURE_ARGS": "--disable-ld-override", - "TEST_ENV": "x86_64-linux-alpine3_20-validate", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static", + "BUILD_FLAVOUR": "release+host_fully_static", + "CONFIGURE_ARGS": "--enable-unregisterised --with-intree-gmp --with-system-libffi", + "CROSS_TARGET": "wasm32-wasi", + "HADRIAN_ARGS": "--docs=none", + "TEST_ENV": "x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static", "XZ_OPT": "-9" } }, @@ -4267,7 +4267,7 @@ "TEST_ENV": "x86_64-linux-alpine3_12-validate+fully_static" } }, - "x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static": { + "x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -4277,7 +4277,7 @@ "artifacts": { "expire_in": "2 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static.tar.xz", + "ghc-x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -4286,14 +4286,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_17-wasm-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-wasm-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_17-wasm:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20-wasm:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -4319,15 +4319,15 @@ ], "variables": { "BIGNUM_BACKEND": "gmp", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static", - "BUILD_FLAVOUR": "release+fully_static", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static", + "BUILD_FLAVOUR": "release+host_fully_static", "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi", "CROSS_TARGET": "wasm32-wasi", "HADRIAN_ARGS": "--docs=none", - "TEST_ENV": "x86_64-linux-alpine3_17-wasm-cross_wasm32-wasi-release+fully_static" + "TEST_ENV": "x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static" } }, - "x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static": { + "x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -4337,7 +4337,7 @@ "artifacts": { "expire_in": "2 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static.tar.xz", + "ghc-x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -4346,14 +4346,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_17-wasm-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-wasm-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_17-wasm:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20-wasm:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -4380,15 +4380,15 @@ ], "variables": { "BIGNUM_BACKEND": "native", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static", - "BUILD_FLAVOUR": "release+fully_static", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static", + "BUILD_FLAVOUR": "release+host_fully_static", "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi", "CROSS_TARGET": "wasm32-wasi", "HADRIAN_ARGS": "--docs=none", - "TEST_ENV": "x86_64-linux-alpine3_17-wasm-int_native-cross_wasm32-wasi-release+fully_static" + "TEST_ENV": "x86_64-linux-alpine3_20-wasm-int_native-cross_wasm32-wasi-release+host_fully_static" } }, - "x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static": { + "x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -4398,7 +4398,7 @@ "artifacts": { "expire_in": "2 weeks", "paths": [ - "ghc-x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static.tar.xz", + "ghc-x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -4407,14 +4407,14 @@ "when": "always" }, "cache": { - "key": "x86_64-linux-alpine3_17-wasm-$CACHE_REV", + "key": "x86_64-linux-alpine3_20-wasm-$CACHE_REV", "paths": [ "cabal-cache", "toolchain" ] }, "dependencies": [], - "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_17-wasm:$DOCKER_REV", + "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_20-wasm:$DOCKER_REV", "needs": [ { "artifacts": false, @@ -4441,12 +4441,12 @@ ], "variables": { "BIGNUM_BACKEND": "gmp", - "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static", - "BUILD_FLAVOUR": "release+fully_static", + "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static", + "BUILD_FLAVOUR": "release+host_fully_static", "CONFIGURE_ARGS": "--enable-unregisterised --with-intree-gmp --with-system-libffi", "CROSS_TARGET": "wasm32-wasi", "HADRIAN_ARGS": "--docs=none", - "TEST_ENV": "x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static" + "TEST_ENV": "x86_64-linux-alpine3_20-wasm-unreg-cross_wasm32-wasi-release+host_fully_static" } }, "x86_64-linux-deb10-int_native-validate": { -- GitLab