diff options
-rw-r--r-- | .gitlab-ci.yml | 964 | ||||
-rwxr-xr-x | .gitlab/ci.sh | 4 | ||||
-rwxr-xr-x | .gitlab/gen_ci.hs | 747 | ||||
-rwxr-xr-x | .gitlab/generate_jobs | 9 | ||||
-rw-r--r-- | .gitlab/jobs.yaml | 3755 |
5 files changed, 4601 insertions, 878 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d10b50540..c0f1cc0739 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ variables: # Sequential version number of all cached things. # Bump to invalidate GitLab CI cache. - CACHE_REV: 5 + CACHE_REV: 6 # Disable shallow clones; they break our linting rules GIT_DEPTH: 0 @@ -167,7 +167,12 @@ not-interruptible: when: always +############################################################ +# Validate jobs +############################################################ +# These jobs are generated by running the ./.gitlab/generate_jobs script +include: '.gitlab/jobs.yaml' ############################################################ # tool linting @@ -265,9 +270,6 @@ lint-submods-branch: - export PATH="/opt/toolchain/bin:$PATH" # workaround for docker permissions - sudo chown ghc:ghc -R . - - git submodule sync --recursive - - git submodule update --init --recursive - - git checkout .gitmodules - .gitlab/ci.sh setup after_script: - .gitlab/ci.sh save_cache @@ -291,210 +293,6 @@ hlint-ghc-and-base: - .gitlab/ci.sh run_hadrian lint:compiler ############################################################ -# Validation via Pipelines (hadrian) -############################################################ - -.validate-hadrian: - variables: - BUILD_FLAVOUR: "validate" - script: - - .gitlab/ci.sh setup - - .gitlab/ci.sh configure - - .gitlab/ci.sh build_hadrian - - .gitlab/ci.sh test_hadrian - cache: - key: hadrian-$CACHE_REV - paths: - - cabal-cache - dependencies: [] - artifacts: - reports: - junit: junit.xml - expire_in: 2 week - paths: - - "$BIN_DIST_NAME.tar.xz" - - junit.xml - -################################# -# x86_64-linux-deb10 -################################# - -.build-x86_64-linux-deb10-hadrian: - extends: .validate-hadrian - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" - variables: - TEST_ENV: "x86_64-linux-deb10-hadrian" - BIN_DIST_NAME: "ghc-x86_64-deb10-linux" - before_script: - # workaround for docker permissions - - sudo chown ghc:ghc -R . - - git submodule sync --recursive - - git submodule update --init --recursive - - git checkout .gitmodules - - "git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/perf || true" - after_script: - - .gitlab/ci.sh save_cache - - .gitlab/ci.sh clean - - cat ci-timings - tags: - - x86_64-linux - - -.validate-x86_64-linux-deb10-hadrian: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -validate-x86_64-linux-deb10-unreg-hadrian: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - CONFIGURE_ARGS: --enable-unregisterised - TEST_ENV: "x86_64-linux-deb10-unreg-hadrian" - -validate-x86_64-linux-deb10-no_tntc-hadrian: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - when: manual - variables: - CONFIGURE_ARGS: --disable-tables-next-to-code - TEST_ENV: "x86_64-linux-deb10-no_tntc-hadrian" - -.build-x86_64-linux-deb10-hadrian-cross-aarch64: - extends: .build-x86_64-linux-deb10-hadrian - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" - variables: - BIN_DIST_NAME: "ghc-x86_64-deb10-linux" - CONFIGURE_ARGS: --with-intree-gmp - CROSS_TARGET: "aarch64-linux-gnu" - -validate-x86_64-linux-deb10-hadrian-cross-aarch64: - extends: .build-x86_64-linux-deb10-hadrian-cross-aarch64 - stage: full-build - rules: - - if: '$CI_MERGE_REQUEST_LABELS =~ /.*cross-compilation.*/' - -nightly-x86_64-linux-deb10-hadrian-cross-aarch64: - <<: *nightly - extends: .build-x86_64-linux-deb10-hadrian-cross-aarch64 - stage: full-build - - -release-x86_64-linux-deb10: - <<: *release - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - -nightly-x86_64-linux-deb10: - <<: *nightly - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - TEST_TYPE: slowtest - -# N.B. Has DEBUG assertions enabled in stage2 -validate-x86_64-linux-deb10-debug: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - # Slow-validate builds stage1 and stage2 compilers with -DDEBUG - BUILD_FLAVOUR: slow-validate - # Override validate flavour default; see #16890. - BUILD_SPHINX_PDF: "YES" - TEST_TYPE: slowtest - TEST_ENV: "x86_64-linux-deb10-debug" - BIN_DIST_NAME: "ghc-x86_64-deb10-linux-debug" - HADDOCK_HYPERLINKED_SOURCES: "yes" - # Numa enabled for this build so at least one build tests the libnuma build. - # It could be any job but luckily for deb10-debug, I choose it. - ENABLE_NUMA: 1 - artifacts: - when: always - expire_in: 2 week - -validate-x86_64-linux-deb10-integer-simple: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - BUILD_FLAVOUR: validate - BIGNUM_BACKEND: native - TEST_ENV: "x86_64-linux-deb10-integer-simple" - BIN_DIST_NAME: "ghc-x86_64-deb10-linux-integer-simple.tar.xz" - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -nightly-x86_64-linux-deb10-integer-simple: - <<: *nightly - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - BIGNUM_BACKEND: native - TEST_ENV: "x86_64-linux-deb10-integer-simple" - TEST_TYPE: slowtest - -.build-x86_64-linux-deb10-tsan: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - TEST_ENV: "x86_64-linux-deb10-tsan" - BUILD_FLAVOUR: "default+thread_sanitizer" - TSAN_OPTIONS: "suppressions=$CI_PROJECT_DIR/rts/.tsan-suppressions" - # Haddock is large enough to make TSAN choke without massive quantities of - # memory. - HADRIAN_ARGS: "--docs=none" - -nightly-x86_64-linux-deb10-tsan: - <<: *nightly - extends: .build-x86_64-linux-deb10-tsan - -validate-x86_64-linux-deb10-tsan: - extends: .build-x86_64-linux-deb10-tsan - when: manual - -validate-x86_64-linux-deb10-dwarf: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - CONFIGURE_ARGS: "--enable-dwarf-unwind" - BUILD_FLAVOUR: validate+debug_info - TEST_ENV: "x86_64-linux-deb10-dwarf-validate" - BIN_DIST_NAME: "ghc-x86_64-deb10-linux-dwarf" - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -release-x86_64-linux-deb10-dwarf: - <<: *release - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - CONFIGURE_ARGS: "--enable-dwarf-unwind" - BUILD_FLAVOUR: perf+debug_info - TEST_ENV: "x86_64-linux-deb10-dwarf-perf" - BIN_DIST_NAME: "ghc-x86_64-deb10-linux-dwarf" - artifacts: - when: always - expire_in: 1 year - -validate-x86_64-linux-deb10-llvm: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - rules: - - if: '$CI_MERGE_REQUEST_LABELS =~ /.*LLVM backend.*/' - variables: - BUILD_FLAVOUR: validate+llvm - TEST_ENV: "x86_64-linux-deb10-llvm" - -nightly-x86_64-linux-deb10-llvm: - <<: *nightly - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - variables: - BUILD_FLAVOUR: validate+llvm - TEST_ENV: "x86_64-linux-deb10-llvm" - - -############################################################ # GHC-in-GHCi (Hadrian) ############################################################ @@ -505,9 +303,6 @@ hadrian-ghc-in-ghci: before_script: # workaround for docker permissions - sudo chown ghc:ghc -R . - - git submodule sync --recursive - - git submodule update --init --recursive - - git checkout .gitmodules variables: GHC_FLAGS: -Werror tags: @@ -541,387 +336,69 @@ stack-hadrian-build: - .gitlab/ci.sh configure - hadrian/build-stack --version -############################################################ -# Validation via Pipelines (make) -############################################################ - -.validate: - variables: - TEST_TYPE: test - MAKE_ARGS: "-Werror" - script: | - # Build hyperlinked sources for documentation when building releases - if [[ "$RELEASE_JOB" = "yes" ]]; then - HADDOCK_HYPERLINKED_SOURCES=1 - fi - .gitlab/ci.sh setup - .gitlab/ci.sh configure - .gitlab/ci.sh build_make - .gitlab/ci.sh test_make - - dependencies: [] - artifacts: - reports: - junit: junit.xml - expire_in: 2 week - paths: - - $BIN_DIST_PREP_TAR_COMP - - junit.xml - - performance-metrics.tsv - ################################# -# x86_64-freebsd +# x86_64-linux-deb10-make ################################# -.build-x86_64-freebsd: - stage: full-build +# One job still using Make for now but we don't produce any release bindists with it. + +.build-x86_64-linux-deb10-make: extends: .validate - tags: - - x86_64-freebsd - allow_failure: true + image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" variables: - # 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" - GHC_VERSION: "8.10.1" - CABAL_INSTALL_VERSION: "3.2.0.0" - BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-portbld-freebsd.tar.xz" - TEST_ENV: "x86_64-freebsd" + TEST_ENV: "x86_64-linux-deb10-make" BUILD_FLAVOUR: "validate" + BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-deb10-linux.tar.gz" + before_script: + # workaround for docker permissions + - sudo chown ghc:ghc -R . after_script: - .gitlab/ci.sh save_cache - .gitlab/ci.sh clean - cat ci-timings - artifacts: - when: always - expire_in: 2 week - cache: - key: "freebsd-$GHC_VERSION-$CACHE_REV" - paths: - - cabal-cache - - toolchain - -# Conditional due to lack of builder capacity -validate-x86_64-freebsd: - extends: .build-x86_64-freebsd - rules: - - if: '$CI_MERGE_REQUEST_LABELS =~ /.*FreeBSD.*/' - -nightly-x86_64-freebsd: - <<: *nightly - extends: .build-x86_64-freebsd - -release-x86_64-freebsd: - <<: *release - extends: .build-x86_64-freebsd - -.build-x86_64-freebsd-hadrian: - extends: .validate-hadrian tags: - - x86_64-freebsd - allow_failure: true - variables: - 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.6.3 - CABAL_INSTALL_VERSION: 3.0.0.0 - BIN_DIST_NAME: "ghc-x86_64-portbld-freebsd" - TEST_ENV: "x86_64-freebsd-hadrian" - BUILD_FLAVOUR: "validate" - after_script: - - .gitlab/ci.sh save_cache - - .gitlab/ci.sh clean - - cat ci-timings - artifacts: - when: always - expire_in: 2 week - cache: - key: "freebsd-$GHC_VERSION-$CACHE_REV" - paths: - - cabal-cache - - toolchain - -# Disabled due to lack of builder capacity -.validate-x86_64-freebsd-hadrian: - extends: .build-x86_64-freebsd-hadrian - -################################# -# x86_64-darwin -################################# + - x86_64-linux -.build-x86_64-darwin: - extends: .validate-hadrian +validate-x86_64-linux-deb10-make: + extends: .build-x86_64-linux-deb10-make stage: full-build - tags: - - x86_64-darwin-m1 - - variables: - NIX_SYSTEM: x86_64-darwin - BUILD_FLAVOUR: "validate" - 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" - - TEST_TYPE: test - MAKE_ARGS: "-Werror" - # we run on M1's for now, getconf can't be built with nix yet, - # and we use a pure shell, so we can't/shouldn't use /usr/bin/getconf - # inside th shell. - CPUS: 8 - LANG: "en_US.UTF-8" - # WARNING: this is overridden in the shell.nix, see shell.nix! - CONFIGURE_ARGS: "--with-intree-gmp --with-system-libffi" - HADRIAN_ARGS: "--docs=no-sphinx" - TEST_ENV: "x86_64-darwin-hadrian" - BIN_DIST_NAME: "ghc-x86_64-apple-darwin" - # Due to #19025 - IGNORE_PERF_FAILURES: "all" - - script: | - # fix up config.sub in libraries for the time. - # aarch64-darwin is not supported in older config.sub's - 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 - .gitlab/ci.sh save_cache - - after_script: - - .gitlab/ci.sh clean - - cat ci-timings - - artifacts: - when: always - expire_in: 2 week - -validate-x86_64-darwin: - extends: .build-x86_64-darwin rules: - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' -release-x86_64-darwin: - <<: *release - extends: .build-x86_64-darwin - -################################# -# aarch64-darwin -################################# +############################################################ +# Validation via Pipelines (make) +############################################################ -.build-aarch64-darwin: - extends: .validate-hadrian - stage: full-build - tags: - - aarch64-darwin-m1 +.validate: variables: - NIX_SYSTEM: aarch64-darwin - BUILD_FLAVOUR: "validate" TEST_TYPE: test MAKE_ARGS: "-Werror" - MACOSX_DEPLOYMENT_TARGET: "11.0" - CPUS: 8 - LANG: "en_US.UTF-8" - # WARNING: this is overridden in the shell.nix, see shell.nix! - CONFIGURE_ARGS: "--with-intree-gmp --with-system-libffi" - HADRIAN_ARGS: "--docs=no-sphinx" - BIN_DIST_NAME: "ghc-arm64-apple-darwin" - TEST_ENV: "aarch64-darwin-hadrian" - # Capi_Ctype_001 Capi_Ctype_002 T12010: Due to #20393 - BROKEN_TESTS: "Capi_Ctype_001 Capi_Ctype_002 T12010" - script: | - # fix up config.sub in libraries for the time. - # aarch64-darwin is not supported in older config.sub's - find libraries -name config.sub -exec cp config.sub {} \; - + # Build hyperlinked sources for documentation when building releases + if [[ "$RELEASE_JOB" = "yes" ]]; then + HADDOCK_HYPERLINKED_SOURCES=1 + fi .gitlab/ci.sh setup .gitlab/ci.sh configure - .gitlab/ci.sh build_hadrian - .gitlab/ci.sh test_hadrian - .gitlab/ci.sh save_cache - - after_script: - - .gitlab/ci.sh clean - - cat ci-timings + .gitlab/ci.sh build_make + .gitlab/ci.sh test_make + dependencies: [] artifacts: - when: always + reports: + junit: junit.xml expire_in: 2 week - -validate-aarch64-darwin: - extends: .build-aarch64-darwin - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -release-aarch64-darwin: - <<: *release - extends: .build-aarch64-darwin - -.validate-linux: - extends: .validate - tags: - - x86_64-linux - variables: - BUILD_FLAVOUR: "validate" - before_script: - # workaround for docker permissions - - sudo chown ghc:ghc -R . - after_script: - - cp -Rf $HOME/.cabal cabal-cache - - cat ci-timings - cache: - key: linux-$CACHE_REV paths: - - cabal-cache - - toolchain - -################################# -# aarch64-linux-deb10 -################################# - -.build-aarch64-linux-deb10: - extends: .validate-linux - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV" - allow_failure: false - variables: - TEST_ENV: "aarch64-linux-deb10" - BIN_DIST_PREP_TAR_COMP: "ghc-aarch64-linux-deb10.tar.xz" - cache: - key: linux-aarch64-deb10-$CACHE_REV - tags: - - aarch64-linux - -validate-aarch64-linux-deb10: - extends: .build-aarch64-linux-deb10 - artifacts: - when: always - expire_in: 2 week - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -nightly-aarch64-linux-deb10: - <<: *nightly - extends: .build-aarch64-linux-deb10 - variables: - TEST_TYPE: slowtest - -release-aarch64-linux-deb10: - <<: *release - extends: .build-aarch64-linux-deb10 - -.build-aarch64-linux-deb10-llvm: - extends: .build-aarch64-linux-deb10 - stage: full-build - variables: - variables: - TEST_ENV: "aarch64-linux-deb10-llvm" - BIN_DIST_PREP_TAR_COMP: "ghc-aarch64-linux-deb10-llvm.tar.xz" - BUILD_FLAVOUR: perf-llvm - tags: - - aarch64-linux - -validate-aarch64-linux-deb10-llvm: - <<: *nightly - extends: .build-aarch64-linux-deb10-llvm - variables: - CONFIGURE_ARGS: "CC=/opt/llvm/bin/clang" - RUNTEST_ARGS: "--way=llvm" - BUILD_FLAVOUR: perf-llvm - # No docs, for this build, slows it down unncessarily. - # We build docs on other platforms already anyway. - BUILD_SPHINX_HTML: "NO" - BUILD_SPHINX_INFO: "NO" - BUILD_SPHINX_PDF: "NO" - BUILD_SPHINX_MAN: "NO" - artifacts: - when: always - expire_in: 2 week - -################################# -# armv7-linux-deb10 -################################# - -.build-armv7-linux-deb10: - extends: .validate-linux - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV" - # Due to linker issues - allow_failure: true - variables: - TEST_ENV: "armv7-linux-deb10" - BIN_DIST_PREP_TAR_COMP: "ghc-armv7-linux-deb10.tar.xz" - CONFIGURE_ARGS: "--host=armv7-linux-gnueabihf --build=armv7-linux-gnueabihf --target=armv7-linux-gnueabihf" - # N.B. We disable ld.lld explicitly here because it appears to fail - # non-deterministically on ARMv7. See #18280. - LD: "ld.gold" - GccUseLdOpt: "-fuse-ld=gold" - cache: - key: linux-armv7-deb10-$CACHE_REV - tags: - - armv7-linux - -# Disabled as the build takes over 4 hours -.validate-armv7-linux-deb10: - extends: .build-armv7-linux-deb10 - artifacts: - when: always - expire_in: 2 week - -nightly-armv7-linux-deb10: - <<: *nightly - extends: .build-armv7-linux-deb10 - variables: - TEST_TYPE: slowtest - -release-armv7-linux-deb10: - <<: *release - extends: .build-armv7-linux-deb10 - -################################# -# i386-linux-deb9 -################################# - -.build-i386-linux-deb9: - extends: .validate-linux - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV" - variables: - TEST_ENV: "i386-linux-deb9" - BIN_DIST_PREP_TAR_COMP: "ghc-i386-deb9-linux.tar.xz" - cache: - key: linux-i386-deb9-$CACHE_REV - -validate-i386-linux-deb9: - extends: .build-i386-linux-deb9 - artifacts: - when: always - expire_in: 2 week - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -nightly-i386-linux-deb9: - <<: *nightly - extends: .build-i386-linux-deb9 - variables: - TEST_TYPE: slowtest - -release-i386-linux-deb9: - <<: *release - extends: .build-i386-linux-deb9 - + - $BIN_DIST_PREP_TAR_COMP + - junit.xml + - performance-metrics.tsv #################################### # Testing reinstallable ghc codepath #################################### test-cabal-reinstall-x86_64-linux-deb10: - extends: .build-x86_64-linux-deb10-hadrian + extends: nightly-x86_64-linux-deb10-validate stage: full-build before_script: - ./boot @@ -934,319 +411,34 @@ test-cabal-reinstall-x86_64-linux-deb10: rules: - if: $NIGHTLY -################################# -# x86_64-linux-deb11 -################################# - -.build-x86_64-linux-deb11: - extends: .validate-linux - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb11:$DOCKER_REV" - variables: - TEST_ENV: "x86_64-linux-deb11" - BIN_DIST_PREP_TAR_COMP: "./ghc-x86_64-deb11-linux.tar.xz" - cache: - key: linux-x86_64-deb11-$CACHE_REV - -# Disabled to reduce CI load -.validate-x86_64-linux-deb11: - extends: .build-x86_64-linux-deb11 - stage: full-build - artifacts: - when: always - expire_in: 2 week - -release-x86_64-linux-deb11: - <<: *release - extends: .build-x86_64-linux-deb11 - stage: full-build - -nightly-x86_64-linux-deb11: - <<: *nightly - extends: .build-x86_64-linux-deb11 - stage: full-build - variables: - TEST_TYPE: slowtest - -################################# -# x86_64-linux-ubuntu 20.04 -################################# - -.build-x86_64-linux-ubuntu2004: - extends: .validate-linux - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-ubuntu20_04:$DOCKER_REV" - variables: - TEST_ENV: "x86_64-linux-ubuntu2004" - BIN_DIST_PREP_TAR_COMP: "./ghc-x86_64-ubuntu2004-linux.tar.xz" - cache: - key: linux-x86_64-ubuntu2004-$CACHE_REV - -# Disabled to alleviate CI load -.validate-x86_64-linux-ubuntu2004: - extends: .build-x86_64-linux-ubuntu2004 - stage: full-build - -nightly-x86_64-linux-ubuntu2004: - <<: *nightly - extends: .build-x86_64-linux-ubuntu2004 - variables: - TEST_TYPE: slowtest - -release-x86_64-linux-ubuntu2004: - <<: *release - extends: .build-x86_64-linux-ubuntu2004 - -################################# -# x86_64-linux-alpine -################################# - -.build-x86_64-linux-alpine-hadrian: - extends: .build-x86_64-linux-deb10-hadrian - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV" - # There are currently a few failing tests - allow_failure: true - variables: - TEST_ENV: "x86_64-linux-alpine" - BUILD_FLAVOUR: "validate+fully_static" - BIN_DIST_NAME: "ghc-x86_64-alpine-linux" - # Can't use ld.gold due to #13958. - 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" - cache: - key: linux-x86_64-alpine-$CACHE_REV - artifacts: - when: always - expire_in: 2 week - -validate-x86_64-linux-alpine-hadrian: - extends: .build-x86_64-linux-alpine-hadrian - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -release-x86_64-linux-alpine-integer-simple: - <<: *release - extends: .build-x86_64-linux-alpine-hadrian - variables: - BIGNUM_BACKEND: native - BUILD_FLAVOUR: "perf+fully_static" - -release-x86_64-linux-alpine-integer-gmp: - <<: *release - extends: .build-x86_64-linux-alpine-hadrian - variables: - BIGNUM_BACKEND: gmp - BUILD_FLAVOUR: "perf+fully_static" - -nightly-x86_64-linux-alpine: - <<: *nightly - extends: .build-x86_64-linux-alpine-hadrian - -################################# -# x86_64-linux-centos7 -################################# - -.build-x86_64-linux-centos7: - extends: .validate-linux - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV" - variables: - # The sphinx release shipped with Centos 7 fails to build out documentation - BUILD_SPHINX_HTML: "NO" - BUILD_SPHINX_PDF: "NO" - TEST_ENV: "x86_64-linux-centos7" - IGNORE_PERF_FAILURES: "all" - BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-centos7-linux.tar.xz" - # CentOS seems to default to ascii - LANG: "en_US.UTF-8" - cache: - key: linux-x86_64-centos7-$CACHE_REV - -release-x86_64-linux-centos7: - <<: *release - extends: .build-x86_64-linux-centos7 - -################################# -# x86_64-linux-fedora33 -################################# - -.build-x86_64-linux-fedora33: - extends: .validate-linux - stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV" - variables: - # LLVM 10 is not available for Fedora33 - LLC: /bin/false - OPT: /bin/false - TEST_ENV: "x86_64-linux-fedora33" - BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-fedora33-linux.tar.xz" - cache: - key: linux-x86_64-fedora33-$CACHE_REV - artifacts: - when: always - # These are used for head.hackage jobs therefore we keep them around for - # longer. - expire_in: 8 week - -validate-x86_64-linux-fedora33: - extends: .build-x86_64-linux-fedora33 - rules: - - if: '$CI_MERGE_REQUEST_LABELS !~ /.*fast-ci.*/' - -release-x86_64-linux-fedora33: - <<: *release - extends: .build-x86_64-linux-fedora33 - - -release-x86_64-linux-fedora33-dwarf: - <<: *release - extends: .build-x86_64-linux-fedora33 - variables: - CONFIGURE_ARGS: "--enable-dwarf-unwind" - BUILD_FLAVOUR: dwarf - IGNORE_PERF_FAILURES: "all" - BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-fedora33-linux-dwarf.tar.xz" - TEST_ENV: "x86_64-linux-fedora33-dwarf" - -############################################################ -# Validation via Pipelines (Windows) -############################################################ - -.build-windows: - before_script: - - git clean -xdf - - # Setup toolchain - - bash .gitlab/ci.sh setup - after_script: - - bash .gitlab/ci.sh save_cache - - bash .gitlab/ci.sh clean - - type ci-timings - dependencies: [] - variables: - #FORCE_SYMLINKS: 1 - LANG: "en_US.UTF-8" - SPHINXBUILD: "/mingw64/bin/sphinx-build.exe" - CABAL_INSTALL_VERSION: "3.2.0.0" - GHC_VERSION: "8.10.4" - cache: - paths: - - cabal-cache - - toolchain - - ghc-tarballs - -.build-windows-hadrian: - extends: .build-windows - stage: full-build - variables: - BUILD_FLAVOUR: "validate" - # skipping perf tests for now since we build a quick-flavoured GHC, - # which might result in some broken perf tests? - HADRIAN_ARGS: "--docs=no-sphinx --skip-perf" - - script: - - bash .gitlab/ci.sh configure - - bash .gitlab/ci.sh build_hadrian - - bash .gitlab/ci.sh test_hadrian - tags: - - new-x86_64-windows - - test - artifacts: - reports: - junit: junit.xml - expire_in: 2 week - when: always - paths: - - "$BIN_DIST_NAME.tar.xz" - - junit.xml - -.build-x86_64-windows-hadrian: - extends: .build-windows-hadrian - variables: - MSYSTEM: MINGW64 - TEST_ENV: "x86_64-windows" - BIN_DIST_NAME: "ghc-x86_64-unknown-mingw32" - cache: - key: "x86_64-windows-$CACHE_REV" - -validate-x86_64-windows-hadrian: - extends: .build-x86_64-windows-hadrian - -.build-windows-make: - extends: .build-windows - stage: full-build - variables: - BUILD_FLAVOUR: "quick" - BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-mingw32.tar.xz" - script: - - bash .gitlab/ci.sh configure - - bash .gitlab/ci.sh build_make - - bash .gitlab/ci.sh test_make - tags: - - new-x86_64-windows - - test - artifacts: - when: always - expire_in: 2 week - reports: - junit: junit.xml - paths: - # N.B. variable interpolation apparently doesn't work on Windows so - # this can't be $BIN_DIST_PREP_TAR_COMP - - "ghc-x86_64-mingw32.tar.xz" - - junit.xml - -.build-x86_64-windows-make: - extends: .build-windows-make - variables: - MSYSTEM: MINGW64 - TEST_ENV: "x86_64-windows" - cache: - key: "x86_64-windows-$CACHE_REV" - -nightly-x86_64-windows: - <<: *nightly - extends: .build-x86_64-windows-make - stage: full-build - variables: - BUILD_FLAVOUR: "validate" - -# Normal Windows validate builds lack profiled libraries; that won't do for -# releases. -release-x86_64-windows: - <<: *release - extends: .build-x86_64-windows-hadrian - -release-x86_64-windows-integer-simple: - <<: *release - extends: .build-x86_64-windows-hadrian - variables: - BIGNUM_BACKEND: native - BIN_DIST_NAME: "ghc-x86_64-mingw32-unknown-nogmp" - - ############################################################ # Packaging ############################################################ doc-tarball: stage: packaging - needs: [validate-x86_64-linux-deb10-debug, validate-x86_64-windows-hadrian, validate-x86_64-linux-deb10-unreg-hadrian] + needs: + - job: x86_64-linux-deb10-numa-slow-validate + optional: true + - job: nightly-x86_64-linux-deb10-validate + optional: true + - job: release-x86_64-linux-deb10-perf + optional: true + + - job: x86_64-windows-validate + optional: true + - job: nightly-x86_64-windows-validate + optional: true + - job: release-x86_64-windows-perf + optional: true + tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" - dependencies: - - validate-x86_64-linux-deb10-debug - - validate-x86_64-windows-hadrian + dependencies: null variables: - LINUX_BINDIST: "ghc-x86_64-deb10-linux-debug.tar.xz" - WINDOWS_BINDIST: "ghc-x86_64-unknown-mingw32.tar.xz" + LINUX_BINDIST: "ghc-x86_64-linux-deb10.tar.xz" + WINDOWS_BINDIST: "ghc-x86_64-windows.tar.xz" artifacts: paths: - haddock.html.tar.xz @@ -1256,6 +448,13 @@ doc-tarball: - "*.pdf" script: - | + mv "ghc-x86_64-linux-deb10-numa-slow-validate.tar.xz" "$LINUX_BINDIST" \ + || mv "ghc-x86_64-linux-deb10-validate.tar.xz" "$LINUX_BINDIST" \ + || mv "ghc-x86_64-linux-deb10-perf.tar.xz" "$LINUX_BINDIST" \ + || true + mv "ghc-x86_64-windows-validate.tar.xz" "$WINDOWS_BINDIST" \ + || mv "ghc-x86-windows-perf.tar.xz" "$WINDOWS_BINDIST" \ + || true if [ ! -f "$LINUX_BINDIST" ]; then echo "Error: $LINUX_BINDIST does not exist. Did the Debian 9 job fail?" exit 1 @@ -1289,15 +488,13 @@ source-tarball: - if: $NIGHTLY - - test-bootstrap: stage: full-build needs: [source-tarball] tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" - dependencies: [source-tarball] + dependencies: null script: - mkdir test-bootstrap - tar -xf ghc-*[0-9]-src.tar.xz -C test-bootstrap @@ -1382,10 +579,17 @@ perf-nofib: # Hence we allow this job to fail. allow_failure: true stage: testing - needs: [validate-x86_64-linux-deb10-dwarf, doc-tarball] - dependencies: - - validate-x86_64-linux-deb10-dwarf - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" + needs: + - job: x86_64-linux-fedora33-perf + optional: true + - job: nightly-x86_64-linux-fedora33-perf + optional: true + - job: release-x86_64-linux-fedora33-perf + optional: true + + - job: doc-tarball + optional: false + image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV" rules: - if: $CI_MERGE_REQUEST_ID - if: '$CI_COMMIT_BRANCH == "master"' @@ -1399,7 +603,7 @@ perf-nofib: - root=$(pwd)/ghc - | mkdir tmp - tar -xf ../ghc-x86_64-deb10-linux-dwarf.tar.xz -C tmp + tar -xf ../ghc-x86_64-linux-fedora33-perf.tar.xz -C tmp pushd tmp/ghc-*/ ./configure --prefix=$root make install @@ -1424,10 +628,17 @@ perf-nofib: perf: stage: testing - needs: [validate-x86_64-linux-deb10-dwarf, doc-tarball] - dependencies: - - validate-x86_64-linux-deb10-dwarf - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" + needs: + - job: x86_64-linux-fedora33-perf + optional: true + - job: nightly-x86_64-linux-fedora33-perf + optional: true + - job: release-x86_64-linux-fedora33-perf + optional: true + - job: doc-tarball + optional: false + dependencies: null + image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV" rules: - if: $CI_MERGE_REQUEST_ID - if: '$CI_COMMIT_BRANCH == "master"' @@ -1438,7 +649,7 @@ perf: - root=$(pwd)/ghc - | mkdir tmp - tar -xf ghc-x86_64-deb10-linux-dwarf.tar.xz -C tmp + tar -xf ghc-x86_64-linux-fedora33-perf.tar.xz -C tmp pushd tmp/ghc-*/ ./configure --prefix=$root make install @@ -1463,8 +674,7 @@ perf: pages: stage: deploy needs: [doc-tarball] - dependencies: - - doc-tarball + dependencies: null image: ghcci/x86_64-linux-deb9:0.2 # See #18973 allow_failure: true 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" + } + } +} |