|
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