Fix whitespace
[cabal.git] / .gitlab / ci.sh
blob95d43664cb9aca8e3e6968095742c87fb634655e
1 #!/usr/bin/env bash
3 set -Eeuxo pipefail
5 source "$CI_PROJECT_DIR/.gitlab/common.sh"
7 export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR/toolchain"
8 export CABAL_DIR="$CI_PROJECT_DIR/cabal"
10 case "$(uname)" in
11 MSYS_*|MINGW*)
12 export CABAL_DIR="$(cygpath -w "$CABAL_DIR")"
13 GHCUP_BINDIR="${GHCUP_INSTALL_BASE_PREFIX}/ghcup/bin"
14 EXE_EXT=".exe"
17 GHCUP_BINDIR="${GHCUP_INSTALL_BASE_PREFIX}/.ghcup/bin"
18 EXE_EXT=""
20 esac
22 mkdir -p "$CABAL_DIR"
23 mkdir -p "$GHCUP_BINDIR"
24 export PATH="$GHCUP_BINDIR:$PATH"
26 export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
27 export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION
28 export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_INSTALL_VERSION
29 export BOOTSTRAP_HASKELL_VERBOSE=1
30 export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=yes
32 # for some reason the subshell doesn't pick up the arm64 environment on darwin
33 # and starts installing x86_64 GHC
34 case "$(uname -s)" in
35 "Darwin"|"darwin")
36 case "$(/usr/bin/arch)" in
37 aarch64|arm64|armv8l)
38 curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | arch -arm64 /bin/bash
41 curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
43 esac
46 curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
48 esac
50 # https://github.com/haskell/cabal/issues/7313#issuecomment-811851884
51 if [ "$(getconf LONG_BIT)" == "32" ] ; then
52 echo 'constraints: lukko -ofd-locking' >> cabal.project.release.local
55 args=(
56 -w "ghc-$GHC_VERSION"
57 --disable-profiling
58 --enable-executable-stripping
59 --project-file=cabal.project.release
60 ${ADD_CABAL_ARGS}
63 run cabal v2-build ${args[@]} cabal-install
65 mkdir "$CI_PROJECT_DIR/out"
66 cp "$(cabal list-bin ${args[@]} cabal-install:exe:cabal)" "$CI_PROJECT_DIR/out/cabal$EXE_EXT"
67 cp dist-newstyle/cache/plan.json "$CI_PROJECT_DIR/out/plan.json"
68 cd "$CI_PROJECT_DIR/out/"
70 # create tarball/zip
71 TARBALL_PREFIX="cabal-install-$("$CI_PROJECT_DIR/out/cabal" --numeric-version)"
72 case "${TARBALL_EXT}" in
73 zip)
74 zip "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}.${TARBALL_EXT}" "cabal${EXE_EXT}" plan.json
76 tar.xz)
77 tar caf "${TARBALL_PREFIX}-${TARBALL_ARCHIVE_SUFFIX}.${TARBALL_EXT}" "cabal${EXE_EXT}" plan.json
80 fail "Unknown TARBALL_EXT: ${TARBALL_EXT}"
82 esac
84 rm cabal plan.json