docs: cabal.project in parent directories
[cabal.git] / .gitlab / ci.sh
blob19a9f9c4cdfa1d3d99a56047301321502f96cab2
1 #!/usr/bin/env bash
3 set -Eeuo pipefail
5 source "$CI_PROJECT_DIR/.gitlab/common.sh"
8 export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR/toolchain"
9 export CABAL_DIR="$CI_PROJECT_DIR/cabal"
11 case "$(uname)" in
12 MSYS_*|MINGW*)
13 export CABAL_DIR="$(cygpath -w "$CABAL_DIR")"
14 GHCUP_BINDIR="${GHCUP_INSTALL_BASE_PREFIX}/ghcup/bin"
17 GHCUP_BINDIR="${GHCUP_INSTALL_BASE_PREFIX}/.ghcup/bin"
19 esac
21 mkdir -p "$CABAL_DIR"
22 mkdir -p "$GHCUP_BINDIR"
23 export PATH="$GHCUP_BINDIR:$PATH"
25 export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
26 export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
27 export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_INSTALL_VERSION
28 export BOOTSTRAP_HASKELL_VERBOSE=1
29 export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=yes
31 curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
33 # https://github.com/haskell/cabal/issues/7313#issuecomment-811851884
34 if [ "$(getconf LONG_BIT)" == "32" ] ; then
35 echo 'constraints: lukko -ofd-locking' >> cabal.project.release.local
38 args=(
39 -w "ghc-$GHC_VERSION"
40 --disable-profiling
41 --enable-executable-stripping
42 --project-file=cabal.project.release
43 ${ADD_CABAL_ARGS}
46 run cabal v2-build ${args[@]} cabal-install
48 mkdir "$CI_PROJECT_DIR/out"
49 cp "$(cabal list-bin ${args[@]} cabal-install:exe:cabal)" "$CI_PROJECT_DIR/out/cabal"
50 cp dist-newstyle/cache/plan.json "$CI_PROJECT_DIR/out/plan.json"
51 cd "$CI_PROJECT_DIR/out/"
53 # create tarball/zip
54 TARBALL_PREFIX="cabal-install-$("$CI_PROJECT_DIR/out/cabal" --numeric-version)"
55 case "${TARBALL_EXT}" in
56 zip)
57 zip "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}.${TARBALL_EXT}" cabal plan.json
59 tar.xz)
60 tar caf "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}.${TARBALL_EXT}" cabal plan.json
63 fail "Unknown TARBALL_EXT: ${TARBALL_EXT}"
65 esac
67 rm cabal plan.json