diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-09-03 21:31:32 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-09-09 18:31:40 -0400 |
commit | 5aae5b325ccef857800f1840665a0e1b152e9b88 (patch) | |
tree | 81e00f6fbe87e2c7a69be5084376d29e767a492e | |
parent | 7911d0d983a68eb0d54d7c1ba51326d6be737aae (diff) | |
download | haskell-5aae5b325ccef857800f1840665a0e1b152e9b88.tar.gz |
gitlab-ci: Bump Docker images
We now generate our Docker images via Dhall definitions, as described in
ghc/ci-images!52. Additionally, we are far more careful about where tools
come from, using the ALEX, HAPPY, HSCOLOR, and GHC environment variables
(set in the Dockerfiles) to find bootstrapping tools.
-rw-r--r-- | .gitlab-ci.yml | 52 | ||||
-rwxr-xr-x | .gitlab/ci.sh | 42 | ||||
-rwxr-xr-x | hadrian/build-cabal | 7 | ||||
-rw-r--r-- | hadrian/build-cabal.bat | 6 | ||||
-rw-r--r-- | testsuite/tests/module/mod184.stderr | 1 |
5 files changed, 61 insertions, 47 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1d8ec08803..5170243dd4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,7 +2,7 @@ variables: GIT_SSL_NO_VERIFY: "1" # Commit of ghc/ci-images repository from which to pull Docker images - DOCKER_REV: b65e1145d7c0a62c3533904a88dac14f56fb371b + DOCKER_REV: e1cdfaea745989faa266f09c1d6c4c981aa34dc6 # Sequential version number capturing the versions of all tools fetched by # .gitlab/ci.sh. @@ -119,7 +119,7 @@ lint-testsuite: stage: lint image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV" script: - - make -Ctestsuite list_broken TEST_HC=ghc + - make -Ctestsuite list_broken TEST_HC=$GHC dependencies: [] tags: - lint @@ -259,7 +259,7 @@ hadrian-ghc-in-ghci: - x86_64-linux script: - cabal update - - cd hadrian; cabal new-build --project-file=ci.project; cd .. + - cd hadrian; cabal new-build --with-compiler=$GHC --project-file=ci.project; cd .. - git clean -xdf && git submodule foreach git clean -xdf - .gitlab/ci.sh setup - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi @@ -461,66 +461,66 @@ validate-x86_64-darwin: - toolchain ################################# -# aarch64-linux-deb9 +# aarch64-linux-deb10 ################################# -.build-aarch64-linux-deb9: +.build-aarch64-linux-deb10: extends: .validate-linux stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb9:$DOCKER_REV" + image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV" allow_failure: true variables: - TEST_ENV: "aarch64-linux-deb9" - BIN_DIST_PREP_TAR_COMP: "ghc-aarch64-linux-deb9.tar.xz" + TEST_ENV: "aarch64-linux-deb10" + BIN_DIST_PREP_TAR_COMP: "ghc-aarch64-linux-deb10.tar.xz" cache: - key: linux-aarch64-deb9 + key: linux-aarch64-deb10 tags: - aarch64-linux -validate-aarch64-linux-deb9: - extends: .build-aarch64-linux-deb9 +validate-aarch64-linux-deb10: + extends: .build-aarch64-linux-deb10 artifacts: when: always expire_in: 2 week -nightly-aarch64-linux-deb9: +nightly-aarch64-linux-deb10: <<: *nightly - extends: .build-aarch64-linux-deb9 + extends: .build-aarch64-linux-deb10 variables: TEST_TYPE: slowtest ################################# -# armv7-linux-deb9 +# armv7-linux-deb10 ################################# -.build-armv7-linux-deb9: +.build-armv7-linux-deb10: extends: .validate-linux stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb9:$DOCKER_REV" + 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-deb9" - BIN_DIST_PREP_TAR_COMP: "ghc-armv7-linux-deb9.tar.xz" + 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-deb9 + key: linux-armv7-deb10 tags: - armv7-linux -validate-armv7-linux-deb9: - extends: .build-armv7-linux-deb9 +validate-armv7-linux-deb10: + extends: .build-armv7-linux-deb10 artifacts: when: always expire_in: 2 week -nightly-armv7-linux-deb9: +nightly-armv7-linux-deb10: <<: *nightly - extends: .build-armv7-linux-deb9 + extends: .build-armv7-linux-deb10 variables: TEST_TYPE: slowtest @@ -734,7 +734,7 @@ release-x86_64-linux-deb8: .build-x86_64-linux-alpine-hadrian: extends: .validate-linux-hadrian stage: full-build - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine:$DOCKER_REV" + 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: @@ -1082,8 +1082,8 @@ perf-nofib: make install popd rm -Rf tmp - - export BOOT_HC=$(which ghc) - - cabal update; cabal install -w $BOOT_HC regex-compat + - export BOOT_HC=$GHC + - cabal update; cabal install -w "$BOOT_HC" --lib regex-compat - export PATH=$root/bin:$PATH - make -C nofib boot mode=fast -j$CPUS - "make -C nofib EXTRA_RUNTEST_OPTS='-cachegrind +RTS -V0 -RTS' NoFibRuns=1 mode=fast -j$CPUS 2>&1 | tee nofib.log" diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh index 5a42709c24..4b37a00b83 100755 --- a/.gitlab/ci.sh +++ b/.gitlab/ci.sh @@ -152,22 +152,26 @@ function show_tool() { function set_toolchain_paths() { needs_toolchain=1 case "$(uname)" in - Linux) needs_toolchain="" ;; + Linux) needs_toolchain="0" ;; *) ;; esac - if [[ -n "$needs_toolchain" ]]; then + if [[ "$needs_toolchain" = 1 ]]; then # These are populated by setup_toolchain GHC="$toolchain/bin/ghc$exe" CABAL="$toolchain/bin/cabal$exe" HAPPY="$toolchain/bin/happy$exe" ALEX="$toolchain/bin/alex$exe" else - GHC="$(which ghc)" - CABAL="/usr/local/bin/cabal" - HAPPY="$HOME/.cabal/bin/happy" - ALEX="$HOME/.cabal/bin/alex" + # These are generally set by the Docker image but + # we provide these handy fallbacks in case the + # script isn't run from within a GHC CI docker image. + if [ -z "$GHC" ]; then GHC="$(which ghc)"; fi + if [ -z "$CABAL" ]; then GHC="$(which cabal)"; fi + if [ -z "$HAPPY" ]; then GHC="$(which happy)"; fi + if [ -z "$ALEX" ]; then GHC="$(which alex)"; fi fi + export GHC export CABAL export HAPPY @@ -204,12 +208,12 @@ function setup() { } function fetch_ghc() { - local v="$GHC_VERSION" - if [[ -z "$v" ]]; then - fail "GHC_VERSION is not set" - fi - if [ ! -e "$GHC" ]; then + local v="$GHC_VERSION" + if [[ -z "$v" ]]; then + fail "neither GHC nor GHC_VERSION are not set" + fi + start_section "fetch GHC" url="https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-${boot_triple}.tar.xz" info "Fetching GHC binary distribution from $url..." @@ -233,12 +237,12 @@ function fetch_ghc() { } function fetch_cabal() { - local v="$CABAL_INSTALL_VERSION" - if [[ -z "$v" ]]; then - fail "CABAL_INSTALL_VERSION is not set" - fi - if [ ! -e "$CABAL" ]; then + local v="$CABAL_INSTALL_VERSION" + if [[ -z "$v" ]]; then + fail "neither CABAL nor CABAL_INSTALL_VERSION are not set" + fi + start_section "fetch GHC" case "$(uname)" in # N.B. Windows uses zip whereas all others use .tar.xz @@ -279,7 +283,11 @@ function fetch_cabal() { function setup_toolchain() { fetch_ghc fetch_cabal - cabal_install="$CABAL v2-install --index-state=$hackage_index_state --installdir=$toolchain/bin" + + cabal_install="$CABAL v2-install \ + --with-compiler=$GHC \ + --index-state=$hackage_index_state --installdir=$toolchain/bin" + # Avoid symlinks on Windows case "$(uname)" in MSYS_*|MINGW*) cabal_install="$cabal_install --install-method=copy" ;; diff --git a/hadrian/build-cabal b/hadrian/build-cabal index 1a35d4ca29..7d16f3e6b2 100755 --- a/hadrian/build-cabal +++ b/hadrian/build-cabal @@ -1,8 +1,9 @@ #!/usr/bin/env bash -CABAL=cabal -CABFLAGS=("--disable-documentation" "--disable-profiling" "--disable-library-profiling" $CABFLAGS) -( ${GHC:-ghc} --info | grep -s '("Support SMP","YES")' > /dev/null ) || CABFLAGS+=("--constraint=hadrian -threaded") +CABAL="${CABAL:-cabal}" +GHC="${GHC:-ghc}" +CABFLAGS=("--with-compiler=$GHC" "--disable-documentation" "--disable-profiling" "--disable-library-profiling" $CABFLAGS) +( $GHC --info | grep -s '("Support SMP","YES")' > /dev/null ) || CABFLAGS+=("--constraint=hadrian -threaded") # It is currently more robust to pass Cabal an absolute path to the project file. PROJ="$PWD/hadrian/cabal.project" diff --git a/hadrian/build-cabal.bat b/hadrian/build-cabal.bat index ee64694368..1d5d8ecd0e 100644 --- a/hadrian/build-cabal.bat +++ b/hadrian/build-cabal.bat @@ -4,8 +4,12 @@ if "%CABAL%"=="" ( set CABAL=cabal ) +if "%GHC%"=="" ( + set GHC=ghc +) + if "%CABFLAGS%"=="" ( - set CABFLAGS=--disable-documentation --disable-profiling --disable-library-profiling + set CABFLAGS=--with-compiler=%GHC% --disable-documentation --disable-profiling --disable-library-profiling ) rem It is currently more robust to pass Cabal an absolute path to the project file. diff --git a/testsuite/tests/module/mod184.stderr b/testsuite/tests/module/mod184.stderr index ef5a80ae60..8fe888c028 100644 --- a/testsuite/tests/module/mod184.stderr +++ b/testsuite/tests/module/mod184.stderr @@ -1,3 +1,4 @@ + mod184.hs:6:8: warning: [-Wprepositive-qualified-module] Found ‘qualified’ in prepositive position Suggested fix: place ‘qualified’ after the module name instead. |