From 07d983343dce2fdc5dfa5579c8399b3f9b6dbdbd 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) (cherry picked from commit 91fe5d97c089653aecb71bc84a6d2fa095897524) --- .gitlab-ci.yml | 2 +- .gitlab/gen_ci.hs | 10 ++++-- .gitlab/jobs.yaml | 84 +++++++++++++++++++++++------------------------ 3 files changed, 50 insertions(+), 46 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 852a5cc4845..94411d009f1 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: b58ecd021c2533f0f0d0b1c9109200a69506d2b7 + 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 25d27ff9408..9b59893bc29 100755 --- a/.gitlab/gen_ci.hs +++ b/.gitlab/gen_ci.hs @@ -146,6 +146,7 @@ data BuildConfig , crossEmulator :: CrossEmulator , configureWrapper :: Maybe String , fullyStatic :: Bool + , hostFullyStatic :: Bool , tablesNextToCode :: Bool , threadSanitiser :: Bool , noSplitSections :: Bool @@ -167,6 +168,7 @@ mkJobFlavour BuildConfig{..} = Flavour buildFlavour opts opts = [Llvm | llvmBootstrap] ++ [Dwarf | withDwarf] ++ [FullyStatic | fullyStatic] ++ + [HostFullyStatic | hostFullyStatic] ++ [ThreadSanitiser | threadSanitiser] ++ [NoSplitSections | noSplitSections, buildFlavour == Release ] ++ [BootNonmovingGc | validateNonmovingGc ] @@ -174,7 +176,7 @@ mkJobFlavour BuildConfig{..} = Flavour buildFlavour opts data Flavour = Flavour BaseFlavour [FlavourTrans] data FlavourTrans - = Llvm | Dwarf | FullyStatic | ThreadSanitiser | NoSplitSections + = Llvm | Dwarf | FullyStatic | HostFullyStatic | ThreadSanitiser | NoSplitSections | BootNonmovingGc data BaseFlavour = Release | Validate | SlowValidate deriving Eq @@ -197,6 +199,7 @@ vanilla = BuildConfig , crossEmulator = NoEmulator , configureWrapper = Nothing , fullyStatic = False + , hostFullyStatic = False , tablesNextToCode = True , threadSanitiser = False , noSplitSections = False @@ -282,7 +285,7 @@ distroName Ubuntu2004 = "ubuntu20_04" distroName Ubuntu2204 = "ubuntu22_04" distroName Centos7 = "centos7" distroName Alpine = "alpine3_12" -distroName AlpineWasm = "alpine3_17-wasm" +distroName AlpineWasm = "alpine3_20-wasm" distroName Rocky8 = "rocky8" opsysName :: Opsys -> String @@ -324,6 +327,7 @@ flavourString (Flavour base trans) = baseString base ++ concatMap (("+" ++) . fl flavourString Llvm = "llvm" flavourString Dwarf = "debug_info" flavourString FullyStatic = "fully_static" + flavourString HostFullyStatic = "host_fully_static" flavourString ThreadSanitiser = "thread_sanitizer" flavourString NoSplitSections = "no_split_sections" flavourString BootNonmovingGc = "boot_nonmoving_gc" @@ -940,7 +944,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 b08bb269355..71b65ec49f0 100644 --- a/.gitlab/jobs.yaml +++ b/.gitlab/jobs.yaml @@ -671,7 +671,7 @@ "XZ_OPT": "-9" } }, - "nightly-x86_64-linux-alpine3_17-wasm-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", @@ -681,7 +681,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-wasm-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -690,14 +690,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, @@ -723,16 +723,16 @@ ], "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", "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-int_native-cross_wasm32-wasi-release+host_fully_static": { "after_script": [ ".gitlab/ci.sh save_cache", ".gitlab/ci.sh clean", @@ -742,7 +742,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-int_native-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -751,14 +751,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, @@ -784,16 +784,16 @@ ], "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", "XZ_OPT": "-9" } }, - "nightly-x86_64-linux-alpine3_17-wasm-unreg-cross_wasm32-wasi-release+fully_static": { + "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", @@ -803,7 +803,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-unreg-cross_wasm32-wasi-release+host_fully_static.tar.xz", "junit.xml" ], "reports": { @@ -812,14 +812,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, @@ -845,12 +845,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", "XZ_OPT": "-9" } }, @@ -3703,7 +3703,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", @@ -3713,7 +3713,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": { @@ -3722,14 +3722,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, @@ -3755,15 +3755,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", @@ -3773,7 +3773,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": { @@ -3782,14 +3782,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, @@ -3816,15 +3816,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", @@ -3834,7 +3834,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": { @@ -3843,14 +3843,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, @@ -3877,12 +3877,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