[Git][ghc/ghc][wip/bump-ci-images] 3 commits: gitlab-ci: Bump Docker images
Ben Gamari
gitlab at gitlab.haskell.org
Sat Sep 5 01:55:21 UTC 2020
Ben Gamari pushed to branch wip/bump-ci-images at Glasgow Haskell Compiler / GHC
Commits:
11b86790 by Ben Gamari at 2020-09-04T21:55:15-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.
- - - - -
b6905f6f by Ben Gamari at 2020-09-04T21:55:15-04:00
hadrian: Fix leakage of GHC in PATH into build
Previously hadrian would use GHC on PATH when configuring packages (or
fail if there is no such GHC). Fix this. Unfortunately this runs into
another bug in Cabal which we workaround.
- - - - -
7e39e23c by Ben Gamari at 2020-09-04T21:55:15-04:00
utils: Bump cabal-version of hp2ps and unlit
- - - - -
7 changed files:
- .gitlab-ci.yml
- .gitlab/ci.sh
- hadrian/build-cabal
- hadrian/build-cabal.bat
- hadrian/src/Hadrian/Oracles/Cabal/Rules.hs
- utils/hp2ps/hp2ps.cabal
- utils/unlit/unlit.cabal
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: 8d0e7f321c78850f4aefe9f09a0a4b565ac36367
# 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.
=====================================
hadrian/src/Hadrian/Oracles/Cabal/Rules.hs
=====================================
@@ -15,6 +15,7 @@ import Control.Monad
import Data.Maybe
import Development.Shake
import Distribution.Simple.GHC
+import Distribution.Simple.Program.Builtin
import Distribution.Simple.Program.Db
import Distribution.Verbosity
@@ -58,8 +59,13 @@ cabalOracle = do
++ quote (pkgName pkg) ++ " (" ++ show stage ++ ")..."
-- Configure the package with the GHC corresponding to the given stage
hcPath <- builderPath (Ghc CompileHs stage)
+ let progDb = userSpecifyPath "ghc" hcPath
+ $ addKnownProgram ghcProgram emptyProgramDb
(compiler, maybePlatform, _pkgdb) <- liftIO $
- configure silent (Just hcPath) Nothing emptyProgramDb
+ -- N.B. the hcPath parameter of `configure` is broken when given an
+ -- empty ProgramDb. To work around this we manually construct an
+ -- appropriate ProgramDb.
+ configure silent Nothing Nothing progDb
let platform = fromMaybe (error msg) maybePlatform
msg = "PackageConfiguration oracle: cannot detect platform"
return $ PackageConfiguration (compiler, platform)
=====================================
utils/hp2ps/hp2ps.cabal
=====================================
@@ -1,4 +1,4 @@
-cabal-version: 2.1
+cabal-version: 2.4
Name: hp2ps
Version: 0.1
Copyright: XXX
=====================================
utils/unlit/unlit.cabal
=====================================
@@ -1,4 +1,4 @@
-cabal-version: 2.1
+cabal-version: 2.4
Name: unlit
Version: 0.1
Copyright: XXX
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b2ba6a66274d6c6772484481279d872f662b52f0...7e39e23ca883e2352080b32bdbd67d33be0fc3a8
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b2ba6a66274d6c6772484481279d872f662b52f0...7e39e23ca883e2352080b32bdbd67d33be0fc3a8
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/0b909d4c/attachment-0001.html>
More information about the ghc-commits
mailing list