From 51b57d6587b75020045c1a1edf9eb02990ca63cc Mon Sep 17 00:00:00 2001 From: Matthew Pickering <matthewtpickering@gmail.com> Date: Tue, 6 Jun 2023 17:09:38 +0100 Subject: [PATCH] Add aarch64 alpine bindist This is dynamically linked and makes creating statically linked executables more straightforward. Fixes #23482 --- .gitlab/generate-ci/gen_ci.hs | 22 +-- .gitlab/jobs.yaml | 131 ++++++++++++++++++ .../fetch-gitlab-artifacts/fetch_gitlab.py | 2 + 3 files changed, 147 insertions(+), 8 deletions(-) diff --git a/.gitlab/generate-ci/gen_ci.hs b/.gitlab/generate-ci/gen_ci.hs index c78dedfd7c92..993b852d4bbf 100644 --- a/.gitlab/generate-ci/gen_ci.hs +++ b/.gitlab/generate-ci/gen_ci.hs @@ -114,7 +114,8 @@ data LinuxDistro | Ubuntu2004 | Ubuntu1804 | Centos7 - | Alpine + | Alpine312 + | Alpine318 | AlpineWasm | Rocky8 deriving (Eq) @@ -293,7 +294,8 @@ distroName Fedora38 = "fedora38" distroName Ubuntu1804 = "ubuntu18_04" distroName Ubuntu2004 = "ubuntu20_04" distroName Centos7 = "centos7" -distroName Alpine = "alpine3_12" +distroName Alpine312 = "alpine3_12" +distroName Alpine318 = "alpine3_18" distroName AlpineWasm = "alpine3_17-wasm" distroName Rocky8 = "rocky8" @@ -430,9 +432,7 @@ opsysVariables _ (Windows {}) = , "GHC_VERSION" =: "9.4.3" ] opsysVariables _ _ = mempty - -distroVariables :: LinuxDistro -> Variables -distroVariables Alpine = mconcat +alpineVariables = mconcat [ -- Due to #20266 "CONFIGURE_ARGS" =: "--disable-ld-override" , "INSTALL_CONFIGURE_ARGS" =: "--disable-ld-override" @@ -441,6 +441,11 @@ distroVariables Alpine = mconcat -- T10458, ghcilink002: due to #17869 , "BROKEN_TESTS" =: "encoding004 T10458" ] + + +distroVariables :: LinuxDistro -> Variables +distroVariables Alpine312 = alpineVariables +distroVariables Alpine318 = alpineVariables distroVariables Centos7 = mconcat [ "HADRIAN_ARGS" =: "--docs=no-sphinx" ] @@ -997,10 +1002,11 @@ job_groups = , disableValidate (validateBuilds AArch64 (Linux Debian10) llvm) , standardBuildsWithConfig I386 (Linux Debian10) (splitSectionsBroken vanilla) -- Fully static build, in theory usable on any linux distribution. - , fullyStaticBrokenTests (standardBuildsWithConfig Amd64 (Linux Alpine) (splitSectionsBroken static)) + , fullyStaticBrokenTests (standardBuildsWithConfig Amd64 (Linux Alpine312) (splitSectionsBroken static)) -- Dynamically linked build, suitable for building your own static executables on alpine - , disableValidate (standardBuildsWithConfig Amd64 (Linux Alpine) (splitSectionsBroken vanilla)) - , fullyStaticBrokenTests (disableValidate (allowFailureGroup (standardBuildsWithConfig Amd64 (Linux Alpine) staticNativeInt))) + , disableValidate (standardBuildsWithConfig Amd64 (Linux Alpine312) (splitSectionsBroken vanilla)) + , disableValidate (standardBuildsWithConfig AArch64 (Linux Alpine318) (splitSectionsBroken vanilla)) + , fullyStaticBrokenTests (disableValidate (allowFailureGroup (standardBuildsWithConfig Amd64 (Linux Alpine312) staticNativeInt))) , validateBuilds Amd64 (Linux Debian11) (crossConfig "aarch64-linux-gnu" (Emulator "qemu-aarch64 -L /usr/aarch64-linux-gnu") Nothing) , validateBuilds Amd64 (Linux Debian11) (crossConfig "javascript-unknown-ghcjs" (Emulator "js-emulator") (Just "emconfigure") ) diff --git a/.gitlab/jobs.yaml b/.gitlab/jobs.yaml index 677a5539b1a3..b638ec04f1cf 100644 --- a/.gitlab/jobs.yaml +++ b/.gitlab/jobs.yaml @@ -253,6 +253,71 @@ "XZ_OPT": "-9" } }, + "nightly-aarch64-linux-alpine3_18-validate": { + "after_script": [ + ".gitlab/ci.sh save_cache", + ".gitlab/ci.sh save_test_output", + ".gitlab/ci.sh clean", + "cat ci_timings" + ], + "allow_failure": false, + "artifacts": { + "expire_in": "8 weeks", + "paths": [ + "ghc-aarch64-linux-alpine3_18-validate.tar.xz", + "junit.xml", + "unexpected-test-output.tar.gz" + ], + "reports": { + "junit": "junit.xml" + }, + "when": "always" + }, + "cache": { + "key": "aarch64-linux-alpine3_18-$CACHE_REV", + "paths": [ + "cabal-cache", + "toolchain" + ] + }, + "dependencies": [], + "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-alpine3_18:$DOCKER_REV", + "needs": [ + { + "artifacts": false, + "job": "hadrian-ghc-in-ghci" + } + ], + "rules": [ + { + "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY)", + "when": "on_success" + } + ], + "script": [ + "sudo chown ghc:ghc -R .", + ".gitlab/ci.sh setup", + ".gitlab/ci.sh configure", + ".gitlab/ci.sh build_hadrian", + ".gitlab/ci.sh test_hadrian" + ], + "stage": "full-build", + "tags": [ + "aarch64-linux" + ], + "variables": { + "BIGNUM_BACKEND": "gmp", + "BIN_DIST_NAME": "ghc-aarch64-linux-alpine3_18-validate", + "BROKEN_TESTS": "encoding004 T10458", + "BUILD_FLAVOUR": "validate", + "CONFIGURE_ARGS": "--disable-ld-override --enable-strict-ghc-toolchain-check", + "HADRIAN_ARGS": "--docs=no-sphinx", + "INSTALL_CONFIGURE_ARGS": "--disable-ld-override", + "RUNTEST_ARGS": "", + "TEST_ENV": "aarch64-linux-alpine3_18-validate", + "XZ_OPT": "-9" + } + }, "nightly-aarch64-linux-deb10-validate": { "after_script": [ ".gitlab/ci.sh save_cache", @@ -2593,6 +2658,72 @@ "XZ_OPT": "-9" } }, + "release-aarch64-linux-alpine3_18-release+no_split_sections": { + "after_script": [ + ".gitlab/ci.sh save_cache", + ".gitlab/ci.sh save_test_output", + ".gitlab/ci.sh clean", + "cat ci_timings" + ], + "allow_failure": false, + "artifacts": { + "expire_in": "1 year", + "paths": [ + "ghc-aarch64-linux-alpine3_18-release+no_split_sections.tar.xz", + "junit.xml", + "unexpected-test-output.tar.gz" + ], + "reports": { + "junit": "junit.xml" + }, + "when": "always" + }, + "cache": { + "key": "aarch64-linux-alpine3_18-$CACHE_REV", + "paths": [ + "cabal-cache", + "toolchain" + ] + }, + "dependencies": [], + "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-alpine3_18:$DOCKER_REV", + "needs": [ + { + "artifacts": false, + "job": "hadrian-ghc-in-ghci" + } + ], + "rules": [ + { + "if": "(\"true\" == \"true\") && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null)", + "when": "on_success" + } + ], + "script": [ + "sudo chown ghc:ghc -R .", + ".gitlab/ci.sh setup", + ".gitlab/ci.sh configure", + ".gitlab/ci.sh build_hadrian", + ".gitlab/ci.sh test_hadrian" + ], + "stage": "full-build", + "tags": [ + "aarch64-linux" + ], + "variables": { + "BIGNUM_BACKEND": "gmp", + "BIN_DIST_NAME": "ghc-aarch64-linux-alpine3_18-release+no_split_sections", + "BROKEN_TESTS": "encoding004 T10458", + "BUILD_FLAVOUR": "release+no_split_sections", + "CONFIGURE_ARGS": "--disable-ld-override --enable-strict-ghc-toolchain-check", + "HADRIAN_ARGS": "--hash-unit-ids --docs=no-sphinx", + "IGNORE_PERF_FAILURES": "all", + "INSTALL_CONFIGURE_ARGS": "--disable-ld-override", + "RUNTEST_ARGS": "", + "TEST_ENV": "aarch64-linux-alpine3_18-release+no_split_sections", + "XZ_OPT": "-9" + } + }, "release-aarch64-linux-deb10-release+no_split_sections": { "after_script": [ ".gitlab/ci.sh save_cache", diff --git a/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py b/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py index 87b0ad780c85..ac1efd5169ad 100644 --- a/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py +++ b/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py @@ -39,6 +39,8 @@ def job_triple(job_name): 'release-i386-linux-deb10-release': 'i386-deb10-linux', 'release-armv7-linux-deb10-release': 'armv7-deb10-linux', 'release-aarch64-linux-deb10-release': 'aarch64-deb10-linux', + 'release-aarch64-linux-deb11-release': 'aarch64-deb11-linux', + 'release-aarch64-linux-alpine_3_18-release': 'aarch64-alpine3_18-linux', 'release-aarch64-darwin-release': 'aarch64-apple-darwin', 'source-tarball': 'src', -- GitLab