From 00fd6f53b927d9b4be8f18e08e333ac4940f49eb Mon Sep 17 00:00:00 2001
From: Julian Ospald <hasufell@posteo.de>
Date: Tue, 11 Jun 2019 11:21:52 +0800
Subject: [PATCH] Add GHC alpine supprt wrt #82

* the bindists are not official
* we have to allow curl to follow redirects, because github
  hosts on AWS
* bindists are built without haddock support, so those symlinks
  must be conditional for now, see
  https://github.com/redneb/ghc-alt-libc/issues/5
---
 .download-urls           | 19 +++++++++++++++++++
 .requirements/ghc/alpine |  1 +
 ghcup                    | 14 ++++++++++----
 3 files changed, 30 insertions(+), 4 deletions(-)
 create mode 100644 .requirements/ghc/alpine

diff --git a/.download-urls b/.download-urls
index 6ac814a..0a79c60 100644
--- a/.download-urls
+++ b/.download-urls
@@ -19,6 +19,10 @@ ghc 8.0.2   x86_64  debian=8,debian,ubuntu,mint,unknown https://downloads.haskel
 ghc 8.0.2   i386    debian=8,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-i386-deb8-linux.tar.xz
 ghc 8.0.2   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-x86_64-apple-darwin.tar.xz
 ghc 8.0.2   x86_64  freebsd=9,freebsd=10,freebsd=11     https://downloads.haskell.org/~ghc/8.0.2/ghc-8.0.2-x86_64-portbld-freebsd.tar.xz
+ghc 8.0.2   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.0.2-musl/ghc-8.0.2-x86_64-unknown-linux-musl.tar.xz
+ghc 8.0.2   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.0.2-musl/ghc-8.0.2-i386-unknown-linux-musl.tar.xz
+
+
 
 ghc 8.2.2   x86_64  debian=7                            https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-deb7-linux.tar.xz
 ghc 8.2.2   i386    debian=7                            https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-i386-deb7-linux.tar.xz
@@ -34,6 +38,8 @@ ghc 8.4.3   x86_64  debian=8                            https://downloads.haskel
 ghc 8.4.3   x86_64  debian=9,debian,ubuntu,mint         https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-x86_64-deb9-linux.tar.xz
 ghc 8.4.3   x86_64  fedora=27,fedora,unknown            https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-x86_64-fedora27-linux.tar.xz
 ghc 8.4.3   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-x86_64-apple-darwin.tar.xz
+ghc 8.4.3   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.3-musl/ghc-8.4.3-i386-unknown-linux-musl.tar.xz
+ghc 8.4.3   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.3-musl/ghc-8.4.3-x86_64-unknown-linux-musl.tar.xz
 
 ghc 8.4.4   i386    debian=8,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-i386-deb8-linux.tar.xz
 ghc 8.4.4   x86_64  debian=8                            https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-deb8-linux.tar.xz
@@ -42,6 +48,8 @@ ghc 8.4.4   x86_64  centos=7,centos,amazonlinux         https://downloads.haskel
 ghc 8.4.4   x86_64  fedora=27,fedora,unknown            https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-fedora27-linux.tar.xz
 ghc 8.4.4   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-apple-darwin.tar.xz
 ghc 8.4.4   x86_64  freebsd=11                          https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-portbld-freebsd11.tar.xz
+ghc 8.4.4   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.4-musl/ghc-8.4.4-i386-unknown-linux-musl.tar.xz
+ghc 8.4.4   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.4.4-musl/ghc-8.4.4-x86_64-unknown-linux-musl.tar.xz
 
 ghc 8.6.1   i386    debian=8,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-i386-deb8-linux.tar.xz
 ghc 8.6.1   x86_64  debian=8                            https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-x86_64-deb8-linux.tar.xz
@@ -49,11 +57,16 @@ ghc 8.6.1   x86_64  debian=9,debian,ubuntu,mint         https://downloads.haskel
 ghc 8.6.1   x86_64  fedora=27,fedora,unknown            https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-x86_64-fedora27-linux.tar.xz
 ghc 8.6.1   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-x86_64-apple-darwin.tar.xz
 ghc 8.6.1   x86_64  freebsd                             https://downloads.haskell.org/~ghc/8.6.1/ghc-8.6.1-x86_64-portbld-freebsd.tar.xz
+ghc 8.6.1   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.1-musl/ghc-8.6.1-i386-unknown-linux-musl.tar.xz
+ghc 8.6.1   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.1-musl/ghc-8.6.1-x86_64-unknown-linux-musl.tar.xz
 
 ghc 8.6.2   i386    debian=8,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.6.2/ghc-8.6.2-i386-deb8-linux.tar.xz
 ghc 8.6.2   x86_64  debian=8,debian,ubuntu,mint         https://downloads.haskell.org/~ghc/8.6.2/ghc-8.6.2-x86_64-deb8-linux.tar.xz
 ghc 8.6.2   x86_64  fedora=27,fedora,unknown            https://downloads.haskell.org/~ghc/8.6.2/ghc-8.6.2-x86_64-fedora27-linux.tar.xz
 ghc 8.6.2   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.6.2/ghc-8.6.2-x86_64-apple-darwin.tar.xz
+ghc 8.6.2   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.2-musl/ghc-8.6.2-i386-unknown-linux-musl.tar.xz
+ghc 8.6.2   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.2-musl/ghc-8.6.2-x86_64-unknown-linux-musl.tar.xz
+
 
 ghc 8.6.3   i386    debian=8,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-i386-deb8-linux.tar.xz
 ghc 8.6.3   x86_64  debian=8                            https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-x86_64-deb8-linux.tar.xz
@@ -62,12 +75,16 @@ ghc 8.6.3   x86_64  fedora=27,fedora,unknown            https://downloads.haskel
 ghc 8.6.3   x86_64  centos=7,centos,amazonlinux         https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-x86_64-centos7-linux.tar.xz
 ghc 8.6.3   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-x86_64-apple-darwin.tar.xz
 ghc 8.6.3   x86_64  freebsd=11                          https://downloads.haskell.org/~ghc/8.6.3/ghc-8.6.3-x86_64-portbld-freebsd.tar.xz
+ghc 8.6.3   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.3-musl/ghc-8.6.3-i386-unknown-linux-musl.tar.xz
+ghc 8.6.3   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.3-musl/ghc-8.6.3-x86_64-unknown-linux-musl.tar.xz
 
 ghc 8.6.4   i386    debian=9,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.6.4/ghc-8.6.4-i386-deb9-linux.tar.xz
 ghc 8.6.4   x86_64  debian=8                            https://downloads.haskell.org/~ghc/8.6.4/ghc-8.6.4-x86_64-deb8-linux.tar.xz
 ghc 8.6.4   x86_64  debian=9,debian,ubuntu,mint         https://downloads.haskell.org/~ghc/8.6.4/ghc-8.6.4-x86_64-deb9-linux.tar.xz
 ghc 8.6.4   x86_64  fedora=27,fedora,unknown            https://downloads.haskell.org/~ghc/8.6.4/ghc-8.6.4-x86_64-fedora27-linux.tar.xz
 ghc 8.6.4   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.6.4/ghc-8.6.4-x86_64-apple-darwin.tar.xz
+ghc 8.6.4   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.4-musl/ghc-8.6.4-i386-unknown-linux-musl.tar.xz
+ghc 8.6.4   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.4-musl/ghc-8.6.4-x86_64-unknown-linux-musl.tar.xz
 
 ghc 8.6.5   i386    debian=9,debian,ubuntu,mint,unknown https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-i386-deb9-linux.tar.xz
 ghc 8.6.5   x86_64  debian=8                            https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-deb8-linux.tar.xz
@@ -75,6 +92,8 @@ ghc 8.6.5   x86_64  debian=9,debian,ubuntu,mint         https://downloads.haskel
 ghc 8.6.5   x86_64  fedora=27,fedora,unknown            https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-fedora27-linux.tar.xz
 ghc 8.6.5   x86_64  centos=7,centos,amazonlinux         https://downloads.haskell.org/~ghc/8.6.5/ghc-x86_64-centos7-linux.tar.xz
 ghc 8.6.5   x86_64  darwin                              https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-apple-darwin.tar.xz
+ghc 8.6.5   i386    alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.5-musl/ghc-8.6.5-i386-unknown-linux-musl.tar.xz
+ghc 8.6.5   x86_64  alpine                              https://github.com/redneb/ghc-alt-libc/releases/download/ghc-8.6.5-musl/ghc-8.6.5-x86_64-unknown-linux-musl.tar.xz
 
 
 cabal-install   2.2.0.0     i386    unknown             https://downloads.haskell.org/~cabal/cabal-install-2.2.0.0/cabal-install-2.2.0.0-i386-unknown-linux.tar.gz
diff --git a/.requirements/ghc/alpine b/.requirements/ghc/alpine
new file mode 100644
index 0000000..e9cad8f
--- /dev/null
+++ b/.requirements/ghc/alpine
@@ -0,0 +1 @@
+curl gcc g++ gmp-dev ncurses-dev libffi-dev make python3 xz tar perl
diff --git a/ghcup b/ghcup
index 3f9a334..2fd2c0a 100755
--- a/ghcup
+++ b/ghcup
@@ -98,12 +98,12 @@ DOWNLOADER="curl"
 # @VARIABLE: DOWNLOADER_OPTS
 # @DESCRIPTION:
 # Options passed to the download program.
-DOWNLOADER_OPTS="--fail -O"
+DOWNLOADER_OPTS="-L --fail -O"
 
 # @VARIABLE: DOWNLOADER_STDOUT_OPTS
 # @DESCRIPTION:
 # Options passed to the download program when printing the content to stdout.
-DOWNLOADER_STDOUT_OPTS="--fail"
+DOWNLOADER_STDOUT_OPTS="-L --fail"
 
 # @VARIABLE: GHC_DOWNLOAD_BASEURL
 # @DESCRIPTION:
@@ -1443,8 +1443,11 @@ set_ghc() {
     done
     # shellcheck disable=SC2046
     edo ln $(optionv "-v") -sf runghc "${BIN_LOCATION}"/runhaskell
-    # shellcheck disable=SC2046
-    edo ln $(optionv "-v") -sf haddock-ghc "${BIN_LOCATION}"/haddock
+    # not all bindists install haddock...
+    if [ -e "${inst_location}/bin/haddock" ] ; then
+        # shellcheck disable=SC2046
+        edo ln $(optionv "-v") -sf haddock-ghc "${BIN_LOCATION}"/haddock
+    fi
 
     status_message "Done, make sure \"${BIN_LOCATION}\" is in your PATH!"
 
@@ -1877,6 +1880,9 @@ system_reqs_url() {
     [ -z "$1" ] && die "Internal error: no argument given to system_reqs_url"
 
     case "$1" in
+    "alpine")
+        printf "%s/.requirements/ghc/alpine" "${BASE_DOWNLOAD_URL}"
+        ;;
     "debian"|"ubuntu")
         printf "%s/.requirements/ghc/ubuntu" "${BASE_DOWNLOAD_URL}"
         ;;
-- 
GitLab