summaryrefslogtreecommitdiff
path: root/.gitlab
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab')
-rwxr-xr-x.gitlab/ci.sh4
-rwxr-xr-x.gitlab/gen_ci.hs747
-rwxr-xr-x.gitlab/generate_jobs9
-rw-r--r--.gitlab/jobs.yaml3755
4 files changed, 4514 insertions, 1 deletions
diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh
index d1a7d75eb1..b91161896a 100755
--- a/.gitlab/ci.sh
+++ b/.gitlab/ci.sh
@@ -238,6 +238,7 @@ function cabal_update() {
"$CABAL" update --index="$HACKAGE_INDEX_STATE"
}
+
# Extract GHC toolchain
function setup() {
echo "=== TIMINGS ===" > ci-timings
@@ -476,7 +477,8 @@ function determine_metric_baseline() {
# We should never try to build a validate build in a release pipeline so this is
# very defensive in case we have made a mistake somewhere.
function check_release_build() {
- if [ -z "${RELEASE_JOB:-}" ] && [["${BUILD_FLAVOUR:-}" == *"validate"* ]]then
+ if [ "${RELEASE_JOB:-}" == "yes" ] && [[ "${BUILD_FLAVOUR:-}" == *"validate"* ]]
+ then
info "Exiting build because this is a validate build in a release job"
exit 0;
fi
diff --git a/.gitlab/gen_ci.hs b/.gitlab/gen_ci.hs
new file mode 100755
index 0000000000..c1099d846e
--- /dev/null
+++ b/.gitlab/gen_ci.hs
@@ -0,0 +1,747 @@
+#!/usr/bin/env cabal
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE DeriveFunctor #-}
+{- cabal:
+build-depends: base, monoidal-containers, aeson >= 1.8.1, containers, bytestring
+-}
+
+import Data.String (String)
+import Data.Aeson as A
+import qualified Data.Map.Monoidal as M
+import qualified Data.ByteString.Lazy as B hiding (putStrLn)
+import qualified Data.ByteString.Lazy.Char8 as B
+import Data.List (intercalate)
+import Data.Set (Set)
+import qualified Data.Set as S
+import System.Environment
+
+{-
+Note [Generating the CI pipeline]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This script is responsible for generating the majority of jobs in the CI pipeline.
+In particular, it generates all the standard build configurations which perform a
+full build and test of the compiler.
+
+There are broadly three categories of job:
+
+* validate - jobs run on every MR, these are typically validate builds.
+* nightly - jobs run once per day on the master branch
+* release - jobs for producing release artifacts, these are perf builds.
+
+Basically, for each suitable combination of architecture and operating system these three
+jobs are generated which run either.
+
+In reality things are a bit more complicated because
+
+* validate - we run some additional validation jobs which have no corresponding release artifacts
+* nightly - Some builds are only run on nightly, rather than also validate, to
+ relieve pressure on CI
+* release - Not all jobs are run in release pipelines, only those which we
+ produce release artifacts for.
+
+The job specification can be seen at the bottom of this file in the 'jobs' variable.
+
+The generated jobs assume certain things about the configuration file they are included
+into. For example
+
+* The DOCKER_REV variable must be set (which specifies the versions of the docker images)
+
+Things will go very quickly wrong if you don't have the right variables set, the
+testing logic in `ci.sh` contains more dependencies on these global variables.
+
+Generating the CI configuration
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In order to regenerate the CI configuration you need to run the ./generate_jobs
+script which adds a module header and also formats the output JSON with jq.
+
+Other CI jobs
+~~~~~~~~~~~~~
+
+Not all the jobs in the CI pipeline are generated by this script. There are quite a
+few ad-hoc jobs (which don't fit into the build/test with hadrian) model. For example
+
+* linters
+* hadrian/ghci
+* One test which builds with the make build system (until we remove it #17527)
+
+All these definitions are found in the .gitlab-ci.yaml file directly.
+
+
+Note [Consumers of artifacts]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The generated names for the jobs is important as there are a few downstream consumers
+of the jobs artifacts. Therefore some care should be taken if changing the generated
+names of jobs to update these other places.
+
+1. Fedora33 jobs are required by head.hackage
+2. The fetch-gitlab release utility pulls release artifacts from the
+3. The ghc-head-from script downloads release artifacts based on a pipeline change.
+4. Some subsequent CI jobs have explicit dependencies (for example docs-tarball, perf, perf-nofib)
+
+-}
+
+-----------------------------------------------------------------------------
+-- Definition of a BuildConfig (options which affect the binaries which are in the bindist)
+-----------------------------------------------------------------------------
+
+-- | Operating system
+data Opsys
+ = Linux LinuxDistro
+ | Darwin
+ | FreeBSD
+ | Windows deriving (Eq)
+
+data LinuxDistro
+ = Debian11 | Debian10 | Debian9 | Fedora33 | Ubuntu2004 | Centos7 | Alpine deriving (Eq)
+
+data Arch = Amd64 | AArch64 | ARMv7 | I386
+
+data BignumBackend = Native | Gmp deriving Eq
+
+bignumString :: BignumBackend -> String
+bignumString Gmp = "gmp"
+bignumString Native = "native"
+
+-- | A BuildConfig records all the options which can be modified to affect the
+-- bindists produced by the compiler.
+data BuildConfig
+ = BuildConfig { withDwarf :: Bool
+ , unregisterised :: Bool
+ , buildFlavour :: BaseFlavour
+ , bignumBackend :: BignumBackend
+ , llvmBootstrap :: Bool
+ , withAssertions :: Bool
+ , withNuma :: Bool
+ , fullyStatic :: Bool
+ , tablesNextToCode :: Bool
+ , threadSanitiser :: Bool
+ }
+
+-- Extra arguments to pass to ./configure due to the BuildConfig
+configureArgsStr :: BuildConfig -> String
+configureArgsStr bc = intercalate " " $
+ ["--enable-unregisterised"| unregisterised bc ]
+ ++ ["--disable-tables-next-to-code" | not (tablesNextToCode bc) ]
+
+-- Compute the hadrian flavour from the BuildConfig
+mkJobFlavour :: BuildConfig -> Flavour
+mkJobFlavour BuildConfig{..} = Flavour buildFlavour opts
+ where
+ opts = [Llvm | llvmBootstrap] ++
+ [Dwarf | withDwarf] ++
+ [FullyStatic | fullyStatic] ++
+ [ThreadSanitiser | threadSanitiser]
+
+data Flavour = Flavour BaseFlavour [FlavourTrans]
+
+data FlavourTrans = Llvm | Dwarf | FullyStatic | ThreadSanitiser
+
+data BaseFlavour = Perf | Validate | SlowValidate
+
+-----------------------------------------------------------------------------
+-- Build Configs
+-----------------------------------------------------------------------------
+
+-- | A standard build config
+vanilla :: BuildConfig
+vanilla = BuildConfig
+ { withDwarf = False
+ , unregisterised = False
+ , buildFlavour = Validate
+ , bignumBackend = Gmp
+ , llvmBootstrap = False
+ , withAssertions = False
+ , withNuma = False
+ , fullyStatic = False
+ , tablesNextToCode = True
+ , threadSanitiser = False
+ }
+
+nativeInt :: BuildConfig
+nativeInt = vanilla { bignumBackend = Native }
+
+dwarf :: BuildConfig
+dwarf = vanilla { withDwarf = True }
+
+unreg :: BuildConfig
+unreg = vanilla { unregisterised = True }
+
+perf :: BuildConfig
+perf = vanilla { buildFlavour = Perf }
+
+debug :: BuildConfig
+debug = vanilla { buildFlavour = SlowValidate
+ , withAssertions = True
+ -- WithNuma so at least one job tests Numa
+ , withNuma = True
+ }
+
+static :: BuildConfig
+static = vanilla { fullyStatic = True }
+
+staticNativeInt :: BuildConfig
+staticNativeInt = static { bignumBackend = Native }
+
+llvm :: BuildConfig
+llvm = vanilla { llvmBootstrap = True }
+
+tsan :: BuildConfig
+tsan = vanilla { threadSanitiser = True }
+
+noTntc :: BuildConfig
+noTntc = vanilla { tablesNextToCode = False }
+
+-----------------------------------------------------------------------------
+-- Platform specific variables
+-----------------------------------------------------------------------------
+
+-- | These tags have to match what we call the runners on gitlab
+runnerTag :: Arch -> Opsys -> String
+runnerTag arch (Linux distro) =
+ case arch of
+ Amd64 -> "x86_64-linux"
+ AArch64 -> "aarch64-linux"
+ ARMv7 -> "armv7-linux"
+ I386 -> "x86_64-linux"
+runnerTag AArch64 Darwin = "aarch64-darwin"
+runnerTag Amd64 Darwin = "x86_64-darwin-m1"
+runnerTag Amd64 Windows = "new-x86_64-windows"
+runnerTag Amd64 FreeBSD = "x86_64-freebsd"
+
+tags :: Arch -> Opsys -> BuildConfig -> [String]
+tags arch opsys _bc = [runnerTag arch opsys] -- Tag for which runners we can use
+
+-- These names are used to find the docker image so they have to match what is
+-- in the docker registry.
+distroName :: LinuxDistro -> String
+distroName Debian11 = "deb11"
+distroName Debian10 = "deb10"
+distroName Debian9 = "deb9"
+distroName Fedora33 = "fedora33"
+distroName Ubuntu2004 = "ubuntu20_04"
+distroName Centos7 = "centos7"
+distroName Alpine = "alpine3_12"
+
+opsysName :: Opsys -> String
+opsysName (Linux distro) = "linux-" ++ distroName distro
+opsysName Darwin = "darwin"
+opsysName FreeBSD = "freebsd"
+opsysName Windows = "windows"
+
+archName :: Arch -> String
+archName Amd64 = "x86_64"
+archName AArch64 = "aarch64"
+archName ARMv7 = "armv7"
+archName I386 = "i386"
+
+binDistName :: Arch -> Opsys -> BuildConfig -> String
+binDistName arch opsys bc = "ghc-" ++ testEnv arch opsys bc
+
+-- | Test env should create a string which changes whenever the 'BuildConfig' changes.
+-- Either the change is reflected by modifying the flavourString or directly (as is
+-- the case for settings which affect environment variables)
+testEnv :: Arch -> Opsys -> BuildConfig -> String
+testEnv arch opsys bc = intercalate "-" $
+ [ archName arch
+ , opsysName opsys ]
+ ++ ["int_" ++ bignumString (bignumBackend bc) | bignumBackend bc /= Gmp]
+ ++ ["unreg" | unregisterised bc ]
+ ++ ["numa" | withNuma bc ]
+ ++ ["no_tntc" | not (tablesNextToCode bc) ]
+ ++ [flavourString (mkJobFlavour bc)]
+
+-- | The hadrian flavour string we are going to use for this build
+flavourString :: Flavour -> String
+flavourString (Flavour base trans) = baseString base ++ concatMap (("+" ++) . flavourString) trans
+ where
+ baseString Perf = "perf"
+ baseString Validate = "validate"
+ baseString SlowValidate = "slow-validate"
+
+ flavourString Llvm = "llvm"
+ flavourString Dwarf = "debug_info"
+ flavourString FullyStatic = "fully_static"
+ flavourString ThreadSanitiser = "thread_sanitizer"
+
+-- The path to the docker image (just for linux builders)
+dockerImage :: Arch -> Opsys -> Maybe String
+dockerImage arch (Linux distro) =
+ Just image
+ where
+ image = mconcat
+ [ "registry.gitlab.haskell.org/ghc/ci-images/"
+ , archName arch
+ , "-linux-"
+ , distroName distro
+ , ":$DOCKER_REV"
+ ]
+dockerImage _ _ = Nothing
+
+-----------------------------------------------------------------------------
+-- Platform specific variables
+-----------------------------------------------------------------------------
+
+-- The variables map is a monoidal map so that we don't ever accidentally lose
+-- variables settings by silently overwriting when merging. At the end these variables
+-- are combinated together with spaces if they are set multiple times. This may
+-- produce nonsense but it's easier to debug that silently overwriting.
+--
+-- The "proper" solution would be to use a dependent monoidal map where each key specifies
+-- the combination behaviour of it's values. Ie, whether setting it multiple times is an error
+-- or they should be combined.
+type Variables = M.MonoidalMap String [String]
+
+(=:) :: String -> String -> Variables
+a =: b = M.singleton a [b]
+
+opsysVariables :: Arch -> Opsys -> Variables
+opsysVariables _ FreeBSD = mconcat
+ [ -- N.B. we use iconv from ports as I see linker errors when we attempt
+ -- to use the "native" iconv embedded in libc as suggested by the
+ -- porting guide [1].
+ -- [1] https://www.freebsd.org/doc/en/books/porters-handbook/using-iconv.html)
+ "CONFIGURE_ARGS" =: "--with-gmp-includes=/usr/local/include --with-gmp-libraries=/usr/local/lib --with-iconv-includes=/usr/local/include --with-iconv-libraries=/usr/local/lib"
+ , "HADRIAN_ARGS" =: "--docs=no-sphinx"
+ , "GHC_VERSION" =: "8.10.1"
+ , "CABAL_INSTALL_VERSION" =: "3.2.0.0"
+ ]
+opsysVariables _ (Linux distro) = distroVariables distro
+opsysVariables AArch64 (Darwin {}) =
+ mconcat [ "NIX_SYSTEM" =: "aarch64-darwin"
+ , "MACOSX_DEPLOYMENT_TARGET" =: "11.0"
+ , "LANG" =: "en_US.UTF-8"
+ , "CONFIGURE_ARGS" =: "--with-intree-gmp --with-system-libffi"
+ -- Fonts can't be installed on darwin
+ , "HADRIAN_ARGS" =: "--docs=no-sphinx"
+ ]
+opsysVariables Amd64 (Darwin {}) =
+ mconcat [ "NIX_SYSTEM" =: "x86_64-darwin"
+ , "MACOSX_DEPLOYMENT_TARGET" =: "10.10"
+ -- "# Only Sierra and onwards supports clock_gettime. See #12858"
+ , "ac_cv_func_clock_gettime" =: "no"
+ -- # Only newer OS Xs support utimensat. See #17895
+ , "ac_cv_func_utimensat" =: "no"
+ , "LANG" =: "en_US.UTF-8"
+ , "CONFIGURE_ARGS" =: "--with-intree-gmp --with-system-libffi"
+ -- Fonts can't be installed on darwin
+ , "HADRIAN_ARGS" =: "--docs=no-sphinx"
+
+ ]
+opsysVariables _ (Windows {}) =
+ mconcat [ "MSYSTEM" =: "MINGW64"
+ , "HADRIAN_ARGS" =: "--docs=no-sphinx"
+ , "LANG" =: "en_US.UTF-8"
+ , "CABAL_INSTALL_VERSION" =: "3.2.0.0"
+ , "GHC_VERSION" =: "8.10.4" ]
+opsysVariables _ _ = mempty
+
+
+distroVariables :: LinuxDistro -> Variables
+distroVariables Alpine = mconcat
+ [ "CONFIGURE_ARGS" =: "--disable-ld-override"
+ , "INSTALL_CONFIGURE_ARGS" =: "--disable-ld-override"
+ , "HADRIAN_ARGS" =: "--docs=no-sphinx"
+-- encoding004: due to lack of locale support
+-- T10458, ghcilink002: due to #17869
+-- linker_unload_native: due to musl not supporting any means of probing dynlib dependencies
+-- (see Note [Object unloading]).
+ , "BROKEN_TESTS" =: "encoding004 T10458 ghcilink002 linker_unload_native"
+ ]
+distroVariables _ = mempty
+
+-----------------------------------------------------------------------------
+-- Cache settings, what to cache and when can we share the cache
+-----------------------------------------------------------------------------
+
+data Cache
+ = Cache { cacheKey :: String
+ , cachePaths :: [String]
+ }
+
+-- The cache doesn't depend on the BuildConfig because we only cache the cabal store.
+mkCacheKey :: Arch -> Opsys -> String
+mkCacheKey arch opsys = archName arch <> "-" <> opsysName opsys <> "-$CACHE_REV"
+
+instance ToJSON Cache where
+ toJSON Cache {..} = object
+ [ "key" A..= cacheKey
+ , "paths" A..= cachePaths
+ ]
+
+-----------------------------------------------------------------------------
+-- Artifacts, what to store and how long for
+-----------------------------------------------------------------------------
+
+data Artifacts
+ = Artifacts { artifactPaths :: [String]
+ , junitReport :: String
+ , expireIn :: String
+ }
+
+instance ToJSON Artifacts where
+ toJSON Artifacts{..} = object
+ [ "reports" A..= object
+ [ "junit" A..= junitReport
+ ]
+ , "expire_in" A..= expireIn
+ , "paths" A..= artifactPaths
+ ]
+
+-----------------------------------------------------------------------------
+-- Rules, when do we run a job
+-----------------------------------------------------------------------------
+
+-- Data structure which records the condition when a job is run.
+data OnOffRules = OnOffRules { rule_set :: Set Rule -- ^ The set of enabled rules
+ , when :: ManualFlag -- ^ The additional condition about when to run this job.
+ }
+
+-- The initial set of rules where all rules are disabled and the job is always run.
+emptyRules :: OnOffRules
+emptyRules = OnOffRules S.empty Always
+
+-- When to run the job
+data ManualFlag = Manual -- ^ Only run the job when explicitly triggered by a user
+ | Always -- ^ Always run it, if the rules pass (the default)
+ deriving Eq
+
+enableRule :: Rule -> OnOffRules -> OnOffRules
+enableRule r (OnOffRules o m) = OnOffRules (S.insert r o) m
+
+manualRule :: OnOffRules -> OnOffRules
+manualRule rules = rules { when = Manual }
+
+-- 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.
+enumRules :: OnOffRules -> [OnOffRule]
+enumRules o = map lkup rules
+ where
+ enabled_rules = rule_set o
+ lkup r = OnOffRule (if S.member r enabled_rules then On else Off) r
+
+
+data OnOffRule = OnOffRule OnOff Rule
+
+data OnOff = On | Off
+
+instance ToJSON ManualFlag where
+ toJSON Manual = "manual"
+ toJSON Always = "always"
+
+instance ToJSON OnOffRules where
+ toJSON rules = toJSON [(object ([
+ "if" A..= and_all (map one_rule (enumRules rules))
+ , "when" A..= toJSON (when rules)]
+ -- Necessary to stop manual jobs stopping pipeline progress
+ -- https://docs.gitlab.com/ee/ci/yaml/#rulesallow_failure
+ ++
+ ["allow_failure" A..= True | when rules == Manual ]))]
+
+ where
+ one_rule (OnOffRule onoff r) = ruleString onoff r
+ parens s = "(" ++ s ++ ")"
+ and_all rs = intercalate " && " (map parens rs)
+
+-- | A Rule corresponds to some condition which must be satisifed in order to
+-- run the job.
+data Rule = FastCI -- ^ Run this job when the fast-ci label is set
+ | ReleaseOnly -- ^ Only run this job in a release pipeline
+ | Nightly -- ^ Only run this job in the nightly pipeline
+ | LLVMBackend -- ^ Only run this job when the "LLVM backend" label is present
+ | FreeBSDTag -- ^ Only run this job when the "FreeBSD" label is set.
+ | Disable -- ^ Don't run this job.
+ deriving (Bounded, Enum, Ord, Eq)
+
+-- A constant evaluating to True because gitlab doesn't support "true" in the
+-- expression language.
+true :: String
+true = "\"true\" == \"true\""
+-- A constant evaluating to False because gitlab doesn't support "true" in the
+-- expression language.
+false :: String
+false = "\"disabled\" != \"disabled\""
+
+-- Convert the state of the rule into a string that gitlab understand.
+ruleString :: OnOff -> Rule -> String
+ruleString On FastCI = true
+ruleString Off FastCI = "$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/"
+ruleString On LLVMBackend = "$CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/"
+ruleString Off LLVMBackend = true
+ruleString On FreeBSDTag = "$CI_MERGE_REQUEST_LABELS =~ /.*FreeBSD.*/"
+ruleString Off FreeBSDTag = true
+ruleString On ReleaseOnly = "$RELEASE_JOB == \"yes\""
+ruleString Off ReleaseOnly = "$RELEASE_JOB != \"yes\""
+ruleString On Nightly = "$NIGHTLY"
+ruleString Off Nightly = "$NIGHTLY == null"
+ruleString On Disable = false
+ruleString Off Disable = true
+
+-- Enumeration of all the rules
+rules :: [Rule]
+rules = [minBound .. maxBound]
+
+-- | A 'Job' is the description of a single job in a gitlab pipeline. The
+-- job contains all the information about how to do the build but can be further
+-- modified with information about when to run jobs, which variables to set for
+-- certain platforms and so on.
+data Job
+ = Job { jobStage :: String
+ , jobNeeds :: [String]
+ , jobTags :: [String]
+ , jobAllowFailure :: Bool
+ , jobScript :: [String]
+ , jobAfterScript :: [String]
+ , jobDockerImage :: Maybe String
+ , jobVariables :: Variables
+ , jobDependencies :: [String]
+ , jobArtifacts :: Artifacts
+ , jobCache :: Cache
+ , jobRules :: OnOffRules
+ }
+
+instance ToJSON Job where
+ toJSON Job{..} = object
+ [ "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
+ , "dependencies" A..= jobDependencies
+ , "image" A..= jobDockerImage
+ , "tags" A..= jobTags
+ , "allow_failure" A..= jobAllowFailure
+ -- Joining up variables like this may well be the wrong thing to do but
+ -- at least it doesn't lose information silently by overriding.
+ , "variables" A..= (M.map (intercalate " ") jobVariables)
+ , "artifacts" A..= jobArtifacts
+ , "cache" A..= jobCache
+ , "after_script" A..= jobAfterScript
+ , "script" A..= jobScript
+ , "rules" A..= jobRules
+ ]
+
+-- | Build a job description from the system description and 'BuildConfig'
+job :: Arch -> Opsys -> BuildConfig -> (String, Job)
+job arch opsys buildConfig = (jobName, Job {..})
+ where
+ jobRules = emptyRules
+
+ jobName = testEnv arch opsys buildConfig
+
+ jobTags = tags arch opsys buildConfig
+
+ jobDockerImage = dockerImage arch opsys
+
+ jobScript
+ | Windows <- opsys
+ = [ "bash .gitlab/ci.sh setup"
+ , "bash .gitlab/ci.sh configure"
+ , "bash .gitlab/ci.sh build_hadrian"
+ , "bash .gitlab/ci.sh test_hadrian" ]
+ | otherwise
+ = [ "find libraries -name config.sub -exec cp config.sub {} \\;" | Darwin == opsys ] ++
+ [ "sudo chown ghc:ghc -R ." | Linux {} <- [opsys]] ++
+ [ ".gitlab/ci.sh setup"
+ , ".gitlab/ci.sh configure"
+ , ".gitlab/ci.sh build_hadrian"
+ , ".gitlab/ci.sh test_hadrian"
+ ]
+
+ jobAfterScript =
+ [ ".gitlab/ci.sh save_cache"
+ , ".gitlab/ci.sh clean"
+ , "cat ci_timings" ]
+
+ jobFlavour = mkJobFlavour buildConfig
+
+ jobDependencies = []
+ jobVariables = mconcat
+ [ opsysVariables arch opsys
+ ,"TEST_ENV" =: testEnv arch opsys buildConfig
+ , "BIN_DIST_NAME" =: binDistName arch opsys buildConfig
+ , "BUILD_FLAVOUR" =: flavourString jobFlavour
+ , "BIGNUM_BACKEND" =: bignumString (bignumBackend buildConfig)
+ , "CONFIGURE_ARGS" =: configureArgsStr buildConfig
+
+ , if withNuma buildConfig then "ENABLE_NUMA" =: "1" else M.empty
+ ]
+
+ jobArtifacts = Artifacts
+ { junitReport = "junit.xml"
+ , expireIn = "2 weeks"
+ , artifactPaths = [binDistName arch opsys buildConfig ++ ".tar.xz"
+ ,"junit.xml"]
+ }
+
+ jobCache = Cache
+ { cachePaths = [ "cabal-cache", "toolchain" ]
+ , cacheKey = mkCacheKey arch opsys
+
+ }
+
+ jobAllowFailure = False
+ jobStage = "full-build"
+ jobNeeds = ["hadrian-ghc-in-ghci"]
+
+---------------------------------------------------------------------------
+-- Job Modifiers
+---------------------------------------------------------------------------
+
+-- Generic modification functions
+
+-- | Modify all jobs in a 'JobGroup'
+modifyJobs :: (a -> a) -> JobGroup a -> JobGroup a
+modifyJobs f = fmap f
+
+-- | Modify just the validate jobs in a 'JobGroup'
+modifyValidateJobs :: (a -> a) -> JobGroup a -> JobGroup a
+modifyValidateJobs f jg = jg { v = f <$> (v jg) }
+
+-- Generic helpers
+
+addJobRule :: Rule -> Job -> Job
+addJobRule r j = j { jobRules = enableRule r (jobRules j) }
+
+addVariable :: String -> String -> Job -> Job
+addVariable k v j = j { jobVariables = M.insertWith (++) k [v] (jobVariables j) }
+
+-- Building the standard jobs
+--
+-- | Make a normal validate CI job
+validate :: Arch -> Opsys -> BuildConfig -> (String, Job)
+validate arch opsys bc =
+ job arch opsys bc
+
+-- | Make a normal nightly CI job
+nightly arch opsys bc =
+ let (n, j) = job arch opsys bc
+ in ("nightly-" ++ n, addJobRule Nightly . keepArtifacts "8 weeks" . highCompression $ j)
+
+-- | Make a normal release CI job
+release arch opsys bc =
+ let (n, j) = job arch opsys (bc { buildFlavour = Perf })
+ in ("release-" ++ n, addJobRule ReleaseOnly . keepArtifacts "1 year" . ignorePerfFailures . highCompression $ j)
+
+-- Specific job modification functions
+
+-- | Mark a job as requiring a manual trigger.
+manual :: Job -> Job
+manual j = j { jobRules = manualRule (jobRules j) }
+
+-- | Mark a job as allowed to fail
+allowFailure :: Job -> Job
+allowFailure j = j { jobAllowFailure = True }
+
+-- | Modify the time the job keeps its artifacts for
+keepArtifacts :: String -> Job -> Job
+keepArtifacts l j = j { jobArtifacts = (jobArtifacts j) { expireIn = l } }
+
+-- | Ignore performance test failures for this job
+ignorePerfFailures :: Job -> Job
+ignorePerfFailures = addVariable "IGNORE_PERF_FAILURES" "all"
+
+-- | Use a higher compression level to produce the job bindists (slower but produces
+-- smaller results)
+highCompression :: Job -> Job
+highCompression = addVariable "XZ_OPT" "-9"
+
+-- | Mark the validate job to run in fast-ci mode
+fastCI :: JobGroup Job -> JobGroup Job
+fastCI = modifyValidateJobs (addJobRule FastCI)
+
+-- | Mark a group of jobs as allowed to fail.
+allowFailureGroup :: JobGroup Job -> JobGroup Job
+allowFailureGroup = modifyJobs allowFailure
+
+-- | Add a 'Rule' to just the validate job, for example, only run a job if a certain
+-- label is set.
+addValidateRule :: Rule -> JobGroup Job -> JobGroup Job
+addValidateRule t = modifyValidateJobs (addJobRule t)
+
+-- | Don't run the validate job, normally used to alleviate CI load by marking
+-- jobs which are unlikely to fail (ie different linux distros)
+disableValidate :: JobGroup Job -> JobGroup Job
+disableValidate = addValidateRule Disable
+
+-- Jobs are grouped into either triples or pairs depending on whether the
+-- job is just validate and nightly, or also release.
+data JobGroup a = StandardTriple { v :: (String, a)
+ , n :: (String, a)
+ , r :: (String, a) }
+ | ValidateOnly { v :: (String, a)
+ , n :: (String, a) } deriving Functor
+
+-- | Construct a 'JobGroup' which consists of a validate, nightly and release build with
+-- a specific config.
+standardBuildsWithConfig :: Arch -> Opsys -> BuildConfig -> JobGroup Job
+standardBuildsWithConfig a op bc =
+ StandardTriple (validate a op bc)
+ (nightly a op bc)
+ (release a op bc)
+
+-- | Construct a 'JobGroup' which consists of a validate, nightly and release builds with
+-- the 'vanilla' config.
+standardBuilds :: Arch -> Opsys -> JobGroup Job
+standardBuilds a op = standardBuildsWithConfig a op vanilla
+
+-- | Construct a 'JobGroup' which just consists of a validate and nightly build. We don't
+-- produce releases for these jobs.
+validateBuilds :: Arch -> Opsys -> BuildConfig -> JobGroup Job
+validateBuilds a op bc = ValidateOnly (validate a op bc) (nightly a op bc)
+
+flattenJobGroup :: JobGroup a -> [(String, a)]
+flattenJobGroup (StandardTriple a b c) = [a,b,c]
+flattenJobGroup (ValidateOnly a b) = [a, b]
+
+
+-- | Specification for all the jobs we want to build.
+jobs :: M.MonoidalMap String Job
+jobs = M.fromList $ concatMap flattenJobGroup $
+ [ disableValidate (standardBuilds Amd64 (Linux Debian10))
+ , (standardBuildsWithConfig Amd64 (Linux Debian10) dwarf)
+ , (validateBuilds Amd64 (Linux Debian10) nativeInt)
+ , fastCI (validateBuilds Amd64 (Linux Debian10) unreg)
+ , fastCI (validateBuilds Amd64 (Linux Debian10) debug)
+ , modifyValidateJobs manual tsan_jobs
+ , modifyValidateJobs manual (validateBuilds Amd64 (Linux Debian10) noTntc)
+ , addValidateRule LLVMBackend (validateBuilds Amd64 (Linux Debian10) llvm)
+
+ , disableValidate (standardBuilds Amd64 (Linux Debian11))
+ , disableValidate (standardBuilds Amd64 (Linux Ubuntu2004))
+ , disableValidate (standardBuilds Amd64 (Linux Centos7))
+ -- Fedora33 job is always built with perf so there's one job in the normal
+ -- validate pipeline which is built with perf.
+ , (standardBuildsWithConfig Amd64 (Linux Fedora33) perf)
+ , disableValidate (standardBuildsWithConfig Amd64 (Linux Fedora33) dwarf)
+ , fastCI (standardBuilds Amd64 Windows)
+ , disableValidate (standardBuildsWithConfig Amd64 Windows nativeInt)
+ , standardBuilds Amd64 Darwin
+ , allowFailureGroup (addValidateRule FreeBSDTag (standardBuilds Amd64 FreeBSD))
+ , standardBuilds AArch64 Darwin
+ , standardBuilds AArch64 (Linux Debian10)
+ , allowFailureGroup (disableValidate (standardBuilds ARMv7 (Linux Debian10)))
+ , standardBuilds I386 (Linux Debian9)
+ , allowFailureGroup (standardBuildsWithConfig Amd64 (Linux Alpine) static)
+ , disableValidate (allowFailureGroup (standardBuildsWithConfig Amd64 (Linux Alpine) staticNativeInt))
+ ]
+
+ where
+ tsan_jobs =
+ modifyJobs
+ ( addVariable "TSAN_OPTIONS" "suppressions=$CI_PROJECT_DIR/rts/.tsan-suppressions"
+ -- Haddock is large enough to make TSAN choke without massive quantities of
+ -- memory.
+ . addVariable "HADRIAN_ARGS" "--docs=none") $
+ validateBuilds Amd64 (Linux Debian10) tsan
+
+main = do
+ as <- getArgs
+ (case as of
+ [] -> B.putStrLn
+ (fp:_) -> B.writeFile fp)
+ (A.encode jobs)
+
diff --git a/.gitlab/generate_jobs b/.gitlab/generate_jobs
new file mode 100755
index 0000000000..863ff37670
--- /dev/null
+++ b/.gitlab/generate_jobs
@@ -0,0 +1,9 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p cabal-install ghc jq
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+tmp=$(mktemp)
+./gen_ci.hs $tmp
+rm -f jobs.yaml
+echo "### THIS IS A GENERATED FILE, DO NOT MODIFY DIRECTLY" > jobs.yaml
+cat $tmp | jq | tee -a jobs.yaml
diff --git a/.gitlab/jobs.yaml b/.gitlab/jobs.yaml
new file mode 100644
index 0000000000..5101835e93
--- /dev/null
+++ b/.gitlab/jobs.yaml
@@ -0,0 +1,3755 @@
+### THIS IS A GENERATED FILE, DO NOT MODIFY DIRECTLY
+{
+ "aarch64-darwin-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-aarch64-darwin-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "aarch64-darwin-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "find libraries -name config.sub -exec cp config.sub {} \\;",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "aarch64-darwin"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-aarch64-darwin-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MACOSX_DEPLOYMENT_TARGET": "11.0",
+ "NIX_SYSTEM": "aarch64-darwin",
+ "TEST_ENV": "aarch64-darwin-validate"
+ }
+ },
+ "aarch64-linux-deb10-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-aarch64-linux-deb10-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "aarch64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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-deb10-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "aarch64-linux-deb10-validate"
+ }
+ },
+ "armv7-linux-deb10-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-armv7-linux-deb10-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "armv7-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "armv7-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-armv7-linux-deb10-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "armv7-linux-deb10-validate"
+ }
+ },
+ "i386-linux-deb9-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-i386-linux-deb9-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "i386-linux-deb9-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-i386-linux-deb9-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "i386-linux-deb9-validate"
+ }
+ },
+ "nightly-aarch64-darwin-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-aarch64-darwin-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "aarch64-darwin-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "find libraries -name config.sub -exec cp config.sub {} \\;",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "aarch64-darwin"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-aarch64-darwin-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MACOSX_DEPLOYMENT_TARGET": "11.0",
+ "NIX_SYSTEM": "aarch64-darwin",
+ "TEST_ENV": "aarch64-darwin-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-aarch64-linux-deb10-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-aarch64-linux-deb10-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "aarch64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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-deb10-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "aarch64-linux-deb10-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-armv7-linux-deb10-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-armv7-linux-deb10-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "armv7-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "armv7-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-armv7-linux-deb10-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "armv7-linux-deb10-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-i386-linux-deb9-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-i386-linux-deb9-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "i386-linux-deb9-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-i386-linux-deb9-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "i386-linux-deb9-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-darwin-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-darwin-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-darwin-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "find libraries -name config.sub -exec cp config.sub {} \\;",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-darwin-m1"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-darwin-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MACOSX_DEPLOYMENT_TARGET": "10.10",
+ "NIX_SYSTEM": "x86_64-darwin",
+ "TEST_ENV": "x86_64-darwin-validate",
+ "XZ_OPT": "-9",
+ "ac_cv_func_clock_gettime": "no",
+ "ac_cv_func_utimensat": "no"
+ }
+ },
+ "nightly-x86_64-freebsd-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-freebsd-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-freebsd-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-freebsd"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-freebsd-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "--with-gmp-includes=/usr/local/include --with-gmp-libraries=/usr/local/lib --with-iconv-includes=/usr/local/include --with-iconv-libraries=/usr/local/lib ",
+ "GHC_VERSION": "8.10.1",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "TEST_ENV": "x86_64-freebsd-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-alpine3_12-int_native-validate+fully_static": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-alpine3_12-int_native-validate+fully_static.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-alpine3_12-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_12-int_native-validate+fully_static",
+ "BROKEN_TESTS": "encoding004 T10458 ghcilink002 linker_unload_native",
+ "BUILD_FLAVOUR": "validate+fully_static",
+ "CONFIGURE_ARGS": "--disable-ld-override ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "INSTALL_CONFIGURE_ARGS": "--disable-ld-override",
+ "TEST_ENV": "x86_64-linux-alpine3_12-int_native-validate+fully_static",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-alpine3_12-validate+fully_static": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-alpine3_12-validate+fully_static.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-alpine3_12-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_12-validate+fully_static",
+ "BROKEN_TESTS": "encoding004 T10458 ghcilink002 linker_unload_native",
+ "BUILD_FLAVOUR": "validate+fully_static",
+ "CONFIGURE_ARGS": "--disable-ld-override ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "INSTALL_CONFIGURE_ARGS": "--disable-ld-override",
+ "TEST_ENV": "x86_64-linux-alpine3_12-validate+fully_static",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-centos7-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-centos7-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-centos7-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-centos7-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-centos7-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-int_native-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-int_native-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-int_native-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-int_native-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-no_tntc-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-no_tntc-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-no_tntc-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--disable-tables-next-to-code",
+ "TEST_ENV": "x86_64-linux-deb10-no_tntc-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-numa-slow-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-numa-slow-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-numa-slow-validate",
+ "BUILD_FLAVOUR": "slow-validate",
+ "CONFIGURE_ARGS": "",
+ "ENABLE_NUMA": "1",
+ "TEST_ENV": "x86_64-linux-deb10-numa-slow-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-unreg-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-unreg-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-unreg-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--enable-unregisterised",
+ "TEST_ENV": "x86_64-linux-deb10-unreg-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-validate+debug_info": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate+debug_info.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate+debug_info",
+ "BUILD_FLAVOUR": "validate+debug_info",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-validate+debug_info",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-validate+llvm": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate+llvm.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate+llvm",
+ "BUILD_FLAVOUR": "validate+llvm",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-validate+llvm",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb10-validate+thread_sanitizer": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate+thread_sanitizer.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate+thread_sanitizer",
+ "BUILD_FLAVOUR": "validate+thread_sanitizer",
+ "CONFIGURE_ARGS": "",
+ "HADRIAN_ARGS": "--docs=none",
+ "TEST_ENV": "x86_64-linux-deb10-validate+thread_sanitizer",
+ "TSAN_OPTIONS": "suppressions=$CI_PROJECT_DIR/rts/.tsan-suppressions",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-deb11-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb11-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb11-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb11:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb11-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-fedora33-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-fedora33-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-fedora33-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-fedora33-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "LLC": "/bin/false",
+ "OPT": "/bin/false",
+ "TEST_ENV": "x86_64-linux-fedora33-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-fedora33-validate+debug_info": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-fedora33-validate+debug_info.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-fedora33-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-fedora33-validate+debug_info",
+ "BUILD_FLAVOUR": "validate+debug_info",
+ "CONFIGURE_ARGS": "",
+ "LLC": "/bin/false",
+ "OPT": "/bin/false",
+ "TEST_ENV": "x86_64-linux-fedora33-validate+debug_info",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-linux-ubuntu20_04-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-linux-ubuntu20_04-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-ubuntu20_04-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-ubuntu20_04:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu20_04-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-ubuntu20_04-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-windows-int_native-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-windows-int_native-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-windows-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
+ "bash .gitlab/ci.sh build_hadrian",
+ "bash .gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "new-x86_64-windows"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-windows-int_native-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "",
+ "GHC_VERSION": "8.10.4",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MSYSTEM": "MINGW64",
+ "SPHINXBUILD": "/mingw64/bin/sphinx-build.exe",
+ "TEST_ENV": "x86_64-windows-int_native-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "nightly-x86_64-windows-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "8 weeks",
+ "paths": [
+ "ghc-x86_64-windows-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-windows-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
+ "bash .gitlab/ci.sh build_hadrian",
+ "bash .gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "new-x86_64-windows"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-windows-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "",
+ "GHC_VERSION": "8.10.4",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MSYSTEM": "MINGW64",
+ "SPHINXBUILD": "/mingw64/bin/sphinx-build.exe",
+ "TEST_ENV": "x86_64-windows-validate",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-aarch64-darwin-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-aarch64-darwin-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "aarch64-darwin-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "find libraries -name config.sub -exec cp config.sub {} \\;",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "aarch64-darwin"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-aarch64-darwin-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "LANG": "en_US.UTF-8",
+ "MACOSX_DEPLOYMENT_TARGET": "11.0",
+ "NIX_SYSTEM": "aarch64-darwin",
+ "TEST_ENV": "aarch64-darwin-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-aarch64-linux-deb10-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-aarch64-linux-deb10-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "aarch64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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-deb10-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "aarch64-linux-deb10-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-armv7-linux-deb10-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-armv7-linux-deb10-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "armv7-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "armv7-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-armv7-linux-deb10-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "armv7-linux-deb10-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-i386-linux-deb9-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-i386-linux-deb9-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "i386-linux-deb9-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-i386-linux-deb9-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "i386-linux-deb9-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-darwin-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-darwin-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-darwin-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "find libraries -name config.sub -exec cp config.sub {} \\;",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-darwin-m1"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-darwin-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "LANG": "en_US.UTF-8",
+ "MACOSX_DEPLOYMENT_TARGET": "10.10",
+ "NIX_SYSTEM": "x86_64-darwin",
+ "TEST_ENV": "x86_64-darwin-perf",
+ "XZ_OPT": "-9",
+ "ac_cv_func_clock_gettime": "no",
+ "ac_cv_func_utimensat": "no"
+ }
+ },
+ "release-x86_64-freebsd-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-freebsd-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-freebsd-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-freebsd"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-freebsd-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "--with-gmp-includes=/usr/local/include --with-gmp-libraries=/usr/local/lib --with-iconv-includes=/usr/local/include --with-iconv-libraries=/usr/local/lib ",
+ "GHC_VERSION": "8.10.1",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "x86_64-freebsd-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-alpine3_12-int_native-perf+fully_static": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-alpine3_12-int_native-perf+fully_static.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-alpine3_12-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_12-int_native-perf+fully_static",
+ "BROKEN_TESTS": "encoding004 T10458 ghcilink002 linker_unload_native",
+ "BUILD_FLAVOUR": "perf+fully_static",
+ "CONFIGURE_ARGS": "--disable-ld-override ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "INSTALL_CONFIGURE_ARGS": "--disable-ld-override",
+ "TEST_ENV": "x86_64-linux-alpine3_12-int_native-perf+fully_static",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-alpine3_12-perf+fully_static": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-alpine3_12-perf+fully_static.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-alpine3_12-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_12-perf+fully_static",
+ "BROKEN_TESTS": "encoding004 T10458 ghcilink002 linker_unload_native",
+ "BUILD_FLAVOUR": "perf+fully_static",
+ "CONFIGURE_ARGS": "--disable-ld-override ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "INSTALL_CONFIGURE_ARGS": "--disable-ld-override",
+ "TEST_ENV": "x86_64-linux-alpine3_12-perf+fully_static",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-centos7-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-centos7-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-centos7-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-centos7-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "x86_64-linux-centos7-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-deb10-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-deb10-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "x86_64-linux-deb10-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-deb10-perf+debug_info": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-deb10-perf+debug_info.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-perf+debug_info",
+ "BUILD_FLAVOUR": "perf+debug_info",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "x86_64-linux-deb10-perf+debug_info",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-deb11-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-deb11-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb11-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb11:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "x86_64-linux-deb11-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-fedora33-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-fedora33-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-fedora33-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-fedora33-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "LLC": "/bin/false",
+ "OPT": "/bin/false",
+ "TEST_ENV": "x86_64-linux-fedora33-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-fedora33-perf+debug_info": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-fedora33-perf+debug_info.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-fedora33-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-fedora33-perf+debug_info",
+ "BUILD_FLAVOUR": "perf+debug_info",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "LLC": "/bin/false",
+ "OPT": "/bin/false",
+ "TEST_ENV": "x86_64-linux-fedora33-perf+debug_info",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-linux-ubuntu20_04-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-linux-ubuntu20_04-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-ubuntu20_04-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-ubuntu20_04:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu20_04-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "IGNORE_PERF_FAILURES": "all",
+ "TEST_ENV": "x86_64-linux-ubuntu20_04-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-windows-int_native-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-windows-int_native-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-windows-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
+ "bash .gitlab/ci.sh build_hadrian",
+ "bash .gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "new-x86_64-windows"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-windows-int_native-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "",
+ "GHC_VERSION": "8.10.4",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "LANG": "en_US.UTF-8",
+ "MSYSTEM": "MINGW64",
+ "SPHINXBUILD": "/mingw64/bin/sphinx-build.exe",
+ "TEST_ENV": "x86_64-windows-int_native-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "release-x86_64-windows-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "1 year",
+ "paths": [
+ "ghc-x86_64-windows-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-windows-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB == \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
+ "bash .gitlab/ci.sh build_hadrian",
+ "bash .gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "new-x86_64-windows"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-windows-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "",
+ "GHC_VERSION": "8.10.4",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "IGNORE_PERF_FAILURES": "all",
+ "LANG": "en_US.UTF-8",
+ "MSYSTEM": "MINGW64",
+ "SPHINXBUILD": "/mingw64/bin/sphinx-build.exe",
+ "TEST_ENV": "x86_64-windows-perf",
+ "XZ_OPT": "-9"
+ }
+ },
+ "x86_64-darwin-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-darwin-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-darwin-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "find libraries -name config.sub -exec cp config.sub {} \\;",
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-darwin-m1"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-darwin-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--with-intree-gmp --with-system-libffi ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MACOSX_DEPLOYMENT_TARGET": "10.10",
+ "NIX_SYSTEM": "x86_64-darwin",
+ "TEST_ENV": "x86_64-darwin-validate",
+ "ac_cv_func_clock_gettime": "no",
+ "ac_cv_func_utimensat": "no"
+ }
+ },
+ "x86_64-freebsd-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-freebsd-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-freebsd-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && ($CI_MERGE_REQUEST_LABELS =~ /.*FreeBSD.*/) && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ ".gitlab/ci.sh setup",
+ ".gitlab/ci.sh configure",
+ ".gitlab/ci.sh build_hadrian",
+ ".gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "x86_64-freebsd"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-freebsd-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "--with-gmp-includes=/usr/local/include --with-gmp-libraries=/usr/local/lib --with-iconv-includes=/usr/local/include --with-iconv-libraries=/usr/local/lib ",
+ "GHC_VERSION": "8.10.1",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "TEST_ENV": "x86_64-freebsd-validate"
+ }
+ },
+ "x86_64-linux-alpine3_12-int_native-validate+fully_static": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-alpine3_12-int_native-validate+fully_static.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-alpine3_12-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_12-int_native-validate+fully_static",
+ "BROKEN_TESTS": "encoding004 T10458 ghcilink002 linker_unload_native",
+ "BUILD_FLAVOUR": "validate+fully_static",
+ "CONFIGURE_ARGS": "--disable-ld-override ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "INSTALL_CONFIGURE_ARGS": "--disable-ld-override",
+ "TEST_ENV": "x86_64-linux-alpine3_12-int_native-validate+fully_static"
+ }
+ },
+ "x86_64-linux-alpine3_12-validate+fully_static": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": true,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-alpine3_12-validate+fully_static.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-alpine3_12-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-alpine3_12-validate+fully_static",
+ "BROKEN_TESTS": "encoding004 T10458 ghcilink002 linker_unload_native",
+ "BUILD_FLAVOUR": "validate+fully_static",
+ "CONFIGURE_ARGS": "--disable-ld-override ",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "INSTALL_CONFIGURE_ARGS": "--disable-ld-override",
+ "TEST_ENV": "x86_64-linux-alpine3_12-validate+fully_static"
+ }
+ },
+ "x86_64-linux-centos7-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-centos7-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-centos7-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-centos7-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-centos7-validate"
+ }
+ },
+ "x86_64-linux-deb10-int_native-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-int_native-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-int_native-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-int_native-validate"
+ }
+ },
+ "x86_64-linux-deb10-no_tntc-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-no_tntc-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "manual"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-no_tntc-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--disable-tables-next-to-code",
+ "TEST_ENV": "x86_64-linux-deb10-no_tntc-validate"
+ }
+ },
+ "x86_64-linux-deb10-numa-slow-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-numa-slow-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-numa-slow-validate",
+ "BUILD_FLAVOUR": "slow-validate",
+ "CONFIGURE_ARGS": "",
+ "ENABLE_NUMA": "1",
+ "TEST_ENV": "x86_64-linux-deb10-numa-slow-validate"
+ }
+ },
+ "x86_64-linux-deb10-unreg-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-unreg-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-unreg-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "--enable-unregisterised",
+ "TEST_ENV": "x86_64-linux-deb10-unreg-validate"
+ }
+ },
+ "x86_64-linux-deb10-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-validate"
+ }
+ },
+ "x86_64-linux-deb10-validate+debug_info": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate+debug_info.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate+debug_info",
+ "BUILD_FLAVOUR": "validate+debug_info",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-validate+debug_info"
+ }
+ },
+ "x86_64-linux-deb10-validate+llvm": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate+llvm.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && ($CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/) && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate+llvm",
+ "BUILD_FLAVOUR": "validate+llvm",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb10-validate+llvm"
+ }
+ },
+ "x86_64-linux-deb10-validate+thread_sanitizer": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb10-validate+thread_sanitizer.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb10-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "allow_failure": true,
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "manual"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-validate+thread_sanitizer",
+ "BUILD_FLAVOUR": "validate+thread_sanitizer",
+ "CONFIGURE_ARGS": "",
+ "HADRIAN_ARGS": "--docs=none",
+ "TEST_ENV": "x86_64-linux-deb10-validate+thread_sanitizer",
+ "TSAN_OPTIONS": "suppressions=$CI_PROJECT_DIR/rts/.tsan-suppressions"
+ }
+ },
+ "x86_64-linux-deb11-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-deb11-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-deb11-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb11:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-deb11-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-deb11-validate"
+ }
+ },
+ "x86_64-linux-fedora33-perf": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-fedora33-perf.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-fedora33-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-fedora33-perf",
+ "BUILD_FLAVOUR": "perf",
+ "CONFIGURE_ARGS": "",
+ "LLC": "/bin/false",
+ "OPT": "/bin/false",
+ "TEST_ENV": "x86_64-linux-fedora33-perf"
+ }
+ },
+ "x86_64-linux-fedora33-validate+debug_info": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-fedora33-validate+debug_info.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-fedora33-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-fedora33-validate+debug_info",
+ "BUILD_FLAVOUR": "validate+debug_info",
+ "CONFIGURE_ARGS": "",
+ "LLC": "/bin/false",
+ "OPT": "/bin/false",
+ "TEST_ENV": "x86_64-linux-fedora33-validate+debug_info"
+ }
+ },
+ "x86_64-linux-ubuntu20_04-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-linux-ubuntu20_04-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-linux-ubuntu20_04-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-ubuntu20_04:$DOCKER_REV",
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "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": [
+ "x86_64-linux"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-linux-ubuntu20_04-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CONFIGURE_ARGS": "",
+ "TEST_ENV": "x86_64-linux-ubuntu20_04-validate"
+ }
+ },
+ "x86_64-windows-int_native-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-windows-int_native-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-windows-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "($CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"disabled\" != \"disabled\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
+ "bash .gitlab/ci.sh build_hadrian",
+ "bash .gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "new-x86_64-windows"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "native",
+ "BIN_DIST_NAME": "ghc-x86_64-windows-int_native-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "",
+ "GHC_VERSION": "8.10.4",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MSYSTEM": "MINGW64",
+ "SPHINXBUILD": "/mingw64/bin/sphinx-build.exe",
+ "TEST_ENV": "x86_64-windows-int_native-validate"
+ }
+ },
+ "x86_64-windows-validate": {
+ "after_script": [
+ ".gitlab/ci.sh save_cache",
+ ".gitlab/ci.sh clean",
+ "cat ci_timings"
+ ],
+ "allow_failure": false,
+ "artifacts": {
+ "expire_in": "2 weeks",
+ "paths": [
+ "ghc-x86_64-windows-validate.tar.xz",
+ "junit.xml"
+ ],
+ "reports": {
+ "junit": "junit.xml"
+ }
+ },
+ "cache": {
+ "key": "x86_64-windows-$CACHE_REV",
+ "paths": [
+ "cabal-cache",
+ "toolchain"
+ ]
+ },
+ "dependencies": [],
+ "image": null,
+ "needs": [
+ {
+ "artifacts": false,
+ "job": "hadrian-ghc-in-ghci"
+ }
+ ],
+ "rules": [
+ {
+ "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null) && (\"true\" == \"true\") && (\"true\" == \"true\") && (\"true\" == \"true\")",
+ "when": "always"
+ }
+ ],
+ "script": [
+ "bash .gitlab/ci.sh setup",
+ "bash .gitlab/ci.sh configure",
+ "bash .gitlab/ci.sh build_hadrian",
+ "bash .gitlab/ci.sh test_hadrian"
+ ],
+ "stage": "full-build",
+ "tags": [
+ "new-x86_64-windows"
+ ],
+ "variables": {
+ "BIGNUM_BACKEND": "gmp",
+ "BIN_DIST_NAME": "ghc-x86_64-windows-validate",
+ "BUILD_FLAVOUR": "validate",
+ "CABAL_INSTALL_VERSION": "3.2.0.0",
+ "CONFIGURE_ARGS": "",
+ "GHC_VERSION": "8.10.4",
+ "HADRIAN_ARGS": "--docs=no-sphinx",
+ "LANG": "en_US.UTF-8",
+ "MSYSTEM": "MINGW64",
+ "SPHINXBUILD": "/mingw64/bin/sphinx-build.exe",
+ "TEST_ENV": "x86_64-windows-validate"
+ }
+ }
+}