From 2f58b9f435b35605a1bcfebc7a8bd58b04de20f4 Mon Sep 17 00:00:00 2001 From: Leonid Pliushch Date: Sat, 20 Jun 2020 22:43:34 +0300 Subject: [PATCH] build-package.sh: add function for setting up GHC --- build-package.sh | 4 +++ scripts/build/setup/termux_setup_ghc.sh | 34 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 scripts/build/setup/termux_setup_ghc.sh diff --git a/build-package.sh b/build-package.sh index 0b57a69ab9..67bd9e75a2 100755 --- a/build-package.sh +++ b/build-package.sh @@ -41,6 +41,10 @@ source "$TERMUX_SCRIPTDIR/scripts/build/termux_error_exit.sh" # shellcheck source=scripts/build/termux_download.sh source "$TERMUX_SCRIPTDIR/scripts/build/termux_download.sh" +# Utility function for setting up GHC toolchain. +# shellcheck source=scripts/build/setup/termux_setup_ghc.sh +source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_ghc.sh" + # Utility function for golang-using packages to setup a go toolchain. # shellcheck source=scripts/build/setup/termux_setup_golang.sh source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_golang.sh" diff --git a/scripts/build/setup/termux_setup_ghc.sh b/scripts/build/setup/termux_setup_ghc.sh new file mode 100644 index 0000000000..59bdf8f189 --- /dev/null +++ b/scripts/build/setup/termux_setup_ghc.sh @@ -0,0 +1,34 @@ +# Utility function to setup a GHC toolchain. +termux_setup_ghc() { + if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then + local TERMUX_GHC_VERSION=8.10.1 + local TERMUX_GHC_TEMP_FOLDER="${TERMUX_COMMON_CACHEDIR}/ghc-${TERMUX_GHC_VERSION}" + local TERMUX_GHC_RUNTIME_FOLDER="${TERMUX_COMMON_CACHEDIR}/ghc-${TERMUX_GHC_VERSION}-runtime" + local TERMUX_GHC_TAR="${TERMUX_GHC_TEMP_FOLDER}.tar.xz" + + export PATH="$TERMUX_GHC_RUNTIME_FOLDER/bin:$PATH" + + if [ -d "$TERMUX_GHC_RUNTIME_FOLDER" ]; then return; fi + + termux_download "https://downloads.haskell.org/~ghc/${TERMUX_GHC_VERSION}/ghc-${TERMUX_GHC_VERSION}-x86_64-deb10-linux.tar.xz" \ + "$TERMUX_GHC_TAR" \ + c1e31d798b013699b3c0de4fda27fb4cda47f572df0e75e3bd598a3012060615 + + rm -Rf "$TERMUX_GHC_TEMP_FOLDER" + tar xf "$TERMUX_GHC_TAR" -C "$TERMUX_COMMON_CACHEDIR" + + (set -e + unset CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS AR AS CPP LD RANLIB READELF STRIP + cd "$TERMUX_GHC_TEMP_FOLDER" + ./configure --prefix="$TERMUX_GHC_RUNTIME_FOLDER" + make install + ) + + rm -Rf "$TERMUX_GHC_TEMP_FOLDER" + else + if [ "$(dpkg-query -W -f '${db:Status-Status}\n' ghc 2>/dev/null)" != "installed" ]; then + echo "Package 'ghc' is not installed." + exit 1 + fi + fi +}