2
2
set -e
3
3
4
4
GHCUP_VERSION=" 0.1.19.2"
5
- GHCUP_BIN=" x86_64-linux-ghcup-${GHCUP_VERSION} "
5
+ # Source /etc/os-release to get OS info
6
+ . /etc/os-release
7
+ # Fetch host/container arch.
8
+ architecture=" $( dpkg --print-architecture) "
9
+ GHCUP_BIN=" ${architecture} -linux-ghcup-${GHCUP_VERSION} "
10
+
6
11
BOOTSTRAP_HASKELL_GHC_VERSION=" ${VERSION:- " recommended " } "
7
12
8
13
# Maybe install curl, gcc, make
9
14
for x in curl gcc make; do
10
15
which $x > /dev/null || (apt update && apt install $x -y -qq)
11
16
done
12
17
13
- GHCUP_DIR=~ /.ghcup/bin
18
+ # Ensure that login shells get the correct path if the user updated the PATH using ENV.
19
+ rm -f /etc/profile.d/00-restore-env.sh
20
+ echo " export PATH=${PATH// $(sh -lc ' echo $PATH' )/ \$ PATH} " > /etc/profile.d/00-restore-env.sh
21
+ chmod +x /etc/profile.d/00-restore-env.sh
22
+
23
+ # Determine the appropriate non-root user
24
+ if [ " ${USERNAME} " = " auto" ] || [ " ${USERNAME} " = " automatic" ]; then
25
+ USERNAME=" "
26
+ POSSIBLE_USERS=(" vscode" " node" " codespace" " $( awk -v val=1000 -F " :" ' $3==val{print $1}' /etc/passwd) " )
27
+ for CURRENT_USER in " ${POSSIBLE_USERS[@]} " ; do
28
+ if id -u ${CURRENT_USER} > /dev/null 2>&1 ; then
29
+ USERNAME=${CURRENT_USER}
30
+ break
31
+ fi
32
+ done
33
+ if [ " ${USERNAME} " = " " ]; then
34
+ USERNAME=root
35
+ fi
36
+ elif [ " ${USERNAME} " = " none" ] || ! id -u ${USERNAME} > /dev/null 2>&1 ; then
37
+ USERNAME=root
38
+ fi
39
+
40
+ GHCUP_DIR=${USERNAME} /.ghcup/bin
14
41
mkdir -p $GHCUP_DIR
15
- curl https://downloads.haskell.org/~ghcup/${GHCUP_VERSION} /x86_64 -linux-ghcup-${GHCUP_VERSION} --output ${GHCUP_BIN}
42
+ curl https://downloads.haskell.org/~ghcup/${GHCUP_VERSION} /${architecture} -linux-ghcup-${GHCUP_VERSION} --output ${GHCUP_BIN}
16
43
echo " 25b7fc417c1a811dd7ff439b67ea647a59cf5b8d71b274f97e917d50b2150d5b ${GHCUP_BIN} " | sha256sum --check --status
17
44
18
45
mv ${GHCUP_BIN} $GHCUP_DIR /ghcup
19
46
chmod a+x $GHCUP_DIR /ghcup
20
47
48
+ export GHCUP_INSTALL_BASE_PREFIX=${USERNAME}
49
+
21
50
${GHCUP_DIR} /ghcup install ghc $BOOTSTRAP_HASKELL_GHC_VERSION
22
51
${GHCUP_DIR} /ghcup install cabal $CABALVERSION
23
52
${GHCUP_DIR} /ghcup install hls $HLSVERSION
@@ -27,3 +56,8 @@ ${GHCUP_DIR}/ghcup set ghc $BOOTSTRAP_HASKELL_GHC_VERSION
27
56
${GHCUP_DIR} /ghcup set cabal $CABALVERSION
28
57
${GHCUP_DIR} /ghcup set hls $HLSVERSION
29
58
${GHCUP_DIR} /ghcup set stack $STACKVERSION
59
+
60
+ # Clean up
61
+ rm -rf /var/lib/apt/lists/*
62
+
63
+ echo " Done!"
0 commit comments