[Git][ghc/ghc][wip/bump-ci-images] gitlab-ci: Bump Docker images
Ben Gamari
gitlab at gitlab.haskell.org
Fri Sep 4 19:06:06 UTC 2020
Ben Gamari pushed to branch wip/bump-ci-images at Glasgow Haskell Compiler / GHC
Commits:
03caf67a by Ben Gamari at 2020-09-04T15:05:57-04:00
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.
- - - - -
4 changed files:
- .gitlab-ci.yml
- .gitlab/ci.sh
- hadrian/build-cabal
- hadrian/build-cabal.bat
Changes:
=====================================
.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: 95d7e7a4908cf9bb15c7f55455405412a6d07bec
# 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
@@ -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:
=====================================
.gitlab/ci.sh
=====================================
@@ -122,22 +122,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
@@ -174,12 +178,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..."
@@ -203,12 +207,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
@@ -249,7 +253,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" ;;
=====================================
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"
=====================================
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.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/03caf67a484e59a684aa1df384ad9b8e5c0ffee4
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/03caf67a484e59a684aa1df384ad9b8e5c0ffee4
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20200904/83be88e0/attachment-0001.html>
More information about the ghc-commits
mailing list