|
2 | 2 |
|
3 | 3 | set -Eeuo pipefail
|
4 | 4 |
|
5 |
| -TOP="$(pwd)" |
6 |
| -source "$TOP/.gitlab/common.sh" |
| 5 | +source "$CI_PROJECT_DIR/.gitlab/common.sh" |
7 | 6 |
|
8 |
| -# We don't have sudo access in GitLab CI, so we can't just dump binaries in |
9 |
| -# the usual PATH locations. |
10 |
| -toolchain="$(pwd)/toolchain" |
11 |
| -mkdir -p "$toolchain/bin" |
12 |
| -export PATH="$toolchain/bin:$PATH" |
13 | 7 |
|
14 |
| -export CABAL_DIR="$TOP/cabal" |
15 |
| -mkdir -p "$CABAL_DIR" |
| 8 | +export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR/toolchain" |
| 9 | +export CABAL_DIR="$CI_PROJECT_DIR/cabal" |
16 | 10 |
|
17 |
| -# Platform-specific bits |
18 |
| -MAKE="make" |
19 | 11 | case "$(uname)" in
|
20 | 12 | MSYS_*|MINGW*)
|
21 |
| - CABAL_DIR="$(cygpath -w "$CABAL_DIR")" |
22 |
| - ;; |
23 |
| - FreeBSD) |
24 |
| - MAKE="gmake" |
| 13 | + export CABAL_DIR="$(cygpath -w "$CABAL_DIR")" |
| 14 | + GHCUP_BINDIR="${GHCUP_INSTALL_BASE_PREFIX}/ghcup/bin" |
25 | 15 | ;;
|
| 16 | + *) |
| 17 | + GHCUP_BINDIR="${GHCUP_INSTALL_BASE_PREFIX}/.ghcup/bin" |
| 18 | + ;; |
26 | 19 | esac
|
27 | 20 |
|
28 |
| -fetch_cabal_install_unix() { |
29 |
| - local cabal_url="$1" |
30 |
| - run curl -L -o cabal.tar.xz "$cabal_url" |
31 |
| - run tar --directory "$toolchain/bin/" -xf cabal.tar.xz cabal |
32 |
| - chmod +x "$toolchain/bin/cabal" |
33 |
| - CABAL="$toolchain/bin/cabal" |
34 |
| -} |
35 |
| - |
36 |
| -setup_cabal_install() { |
37 |
| - if [ -z "${CABAL:-}" ]; then |
38 |
| - info "Fetching GHC..." |
39 |
| - case "$(uname)" in |
40 |
| - FreeBSD) |
41 |
| - fetch_cabal_install_unix "https://hasufell.de/d/d3e215db133e4fcaa61e/files/?p=/cabal-install-$CABAL_INSTALL_VERSION-x86_64-portbld-freebsd.tar.xz&dl=1" ;; |
42 |
| - Darwin) |
43 |
| - fetch_cabal_install_unix "https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL_VERSION/cabal-install-$CABAL_INSTALL_VERSION-x86_64-apple-darwin17.7.0.tar.xz" ;; |
44 |
| - MSYS_*|MINGW*) |
45 |
| - cabal_url="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL_VERSION/cabal-install-$CABAL_INSTALL_VERSION-x86_64-unknown-mingw32.zip" |
46 |
| - run curl -L -o cabal.zip "$cabal_url" |
47 |
| - run unzip cabal.zip |
48 |
| - cp cabal.exe "$toolchain/bin/cabal.exe" |
49 |
| - chmod +x "$toolchain/bin/cabal.exe" |
50 |
| - CABAL="$toolchain/bin/cabal.exe" |
51 |
| - ;; |
52 |
| - *) fail "no cabal-install bindist for $(uname)" |
53 |
| - esac |
54 |
| - |
55 |
| - fi |
56 |
| - export CABAL |
57 |
| - run "$CABAL" --version |
58 |
| -} |
59 |
| - |
60 |
| - |
61 |
| -fetch_ghc_unix() { |
62 |
| - local ghc_url="$1" |
63 |
| - run curl -sSfL -o ghc.tar.xz "$ghc_url" |
64 |
| - run tar -xf ghc.tar.xz |
65 |
| - |
66 |
| - pushd "ghc-${GHC_VERSION}" |
67 |
| - run ./configure --prefix="$toolchain" |
68 |
| - run "$MAKE" install |
69 |
| - popd |
70 |
| - GHC="$toolchain/bin/ghc" |
71 |
| -} |
72 |
| - |
73 |
| -setup_ghc() { |
74 |
| - if [ -z "${GHC:-}" ]; then |
75 |
| - info "Fetching GHC..." |
76 |
| - case "$(uname)" in |
77 |
| - FreeBSD) |
78 |
| - fetch_ghc_unix "https://downloads.haskell.org/~ghc/$GHC_VERSION/ghc-$GHC_VERSION-x86_64-unknown-freebsd.tar.xz" ;; |
79 |
| - Darwin) |
80 |
| - fetch_ghc_unix "https://downloads.haskell.org/~ghc/$GHC_VERSION/ghc-$GHC_VERSION-x86_64-apple-darwin.tar.xz" ;; |
81 |
| - MSYS_*|MINGW*) |
82 |
| - ghc_url="https://downloads.haskell.org/~ghc/$GHC_VERSION/ghc-$GHC_VERSION-x86_64-unknown-mingw32.tar.xz" |
83 |
| - run curl -sSfL -o ghc.tar.xz "$ghc_url" |
84 |
| - run tar -xf ghc.tar.xz |
85 |
| - cp -R ghc-$GHC_VERSION/* "$toolchain" |
86 |
| - GHC="$toolchain/bin/ghc.exe" |
87 |
| - run "$GHC" --version |
88 |
| - GHC="$(cygpath -w $GHC)" |
89 |
| - return |
90 |
| - ;; |
91 |
| - *) fail "no GHC bindist for $(uname)" |
92 |
| - esac |
93 |
| - fi |
| 21 | +mkdir -p "$CABAL_DIR" |
| 22 | +mkdir -p "$GHCUP_BINDIR" |
| 23 | +export PATH="$GHCUP_BINDIR:$PATH" |
94 | 24 |
|
95 |
| - export GHC |
96 |
| - run "$GHC" --version |
97 |
| -} |
| 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 |
98 | 30 |
|
99 |
| -setup_cabal_install |
100 |
| -setup_ghc |
| 31 | +curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh |
101 | 32 |
|
102 |
| -run "$CABAL" update |
103 |
| -run "$CABAL" v2-install cabal-install \ |
104 |
| - -w "$GHC" \ |
105 |
| - --installdir="$TOP/out" \ |
| 33 | +run cabal v2-install cabal-install \ |
| 34 | + -w "ghc-$GHC_VERSION" \ |
| 35 | + --installdir="$CI_PROJECT_DIR/out" \ |
106 | 36 | --install-method=copy \
|
107 | 37 | --overwrite-policy=always \
|
108 | 38 | --enable-executable-static \
|
109 | 39 | --disable-profiling \
|
110 | 40 | --enable-split-sections \
|
111 | 41 | --enable-executable-stripping
|
| 42 | + |
| 43 | +cp dist-newstyle/cache/plan.json "$CI_PROJECT_DIR/out/plan.json" |
0 commit comments