summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2020-09-03 21:31:32 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-09-09 18:31:40 -0400
commit5aae5b325ccef857800f1840665a0e1b152e9b88 (patch)
tree81e00f6fbe87e2c7a69be5084376d29e767a492e
parent7911d0d983a68eb0d54d7c1ba51326d6be737aae (diff)
downloadhaskell-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.yml52
-rwxr-xr-x.gitlab/ci.sh42
-rwxr-xr-xhadrian/build-cabal7
-rw-r--r--hadrian/build-cabal.bat6
-rw-r--r--testsuite/tests/module/mod184.stderr1
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.