From 3c9ed52daf88226b0dd808ac81d2d757c8dbdb81 Mon Sep 17 00:00:00 2001 From: Aditya Alok Date: Thu, 10 Mar 2022 23:38:53 +0530 Subject: [PATCH] feat(haskell build): adhere to new setup script feat(termux_setup_jailbreak_cabal): use pre-compiled binary chore(termux_setup_cabal): update checksum Signed-off-by: Aditya Alok --- .../build/configure/termux_step_configure.sh | 1 - .../termux_step_configure_haskell_build.sh | 10 +------- scripts/build/setup/termux_setup_cabal.sh | 2 +- .../setup/termux_setup_ghc_cross_compiler.sh | 20 ++++++--------- .../setup/termux_setup_jailbreak_cabal.sh | 25 +++++-------------- scripts/build/termux_step_make.sh | 2 +- scripts/build/termux_step_make_install.sh | 6 ++--- 7 files changed, 20 insertions(+), 46 deletions(-) diff --git a/scripts/build/configure/termux_step_configure.sh b/scripts/build/configure/termux_step_configure.sh index 5f523d1ef..1e1c1e4f9 100644 --- a/scripts/build/configure/termux_step_configure.sh +++ b/scripts/build/configure/termux_step_configure.sh @@ -5,7 +5,6 @@ termux_step_configure() { # should be executed by its own build system. if ls "${TERMUX_PKG_SRCDIR}"/*.cabal &>/dev/null; then [ "$TERMUX_CONTINUE_BUILD" == "true" ] && return - termux_setup_ghc termux_setup_ghc_cross_compiler termux_step_configure_haskell_build elif [ "$TERMUX_PKG_FORCE_CMAKE" = "false" ] && [ -f "$TERMUX_PKG_SRCDIR/configure" ]; then diff --git a/scripts/build/configure/termux_step_configure_haskell_build.sh b/scripts/build/configure/termux_step_configure_haskell_build.sh index 9d3152a13..712a75b09 100644 --- a/scripts/build/configure/termux_step_configure_haskell_build.sh +++ b/scripts/build/configure/termux_step_configure_haskell_build.sh @@ -111,17 +111,9 @@ termux_step_configure_haskell_build() { } [ "$TERMUX_DEBUG_BUILD" = "true" ] && OPTIMISATION="-O0" || OPTIMISATION="-O" - # Some packages rely on cabal build, therefore they may not have Setup.hs, (though very rare case) - # as cabal has that configured by default. - if [ ! -f "${TERMUX_PKG_SRCDIR}/Setup.hs" ] && [ ! -f "${TERMUX_PKG_SRCDIR}/Setup.lhs" ]; then - echo "Warning: No Setup.{hs,lhs} file found in ${TERMUX_PKG_SRCDIR}." - echo "Using default Setup.hs..." - cp "${TERMUX_SCRIPTDIR}/scripts/build/haskell-build/default-setup.hs" "${TERMUX_PKG_SRCDIR}/Setup.hs" - fi - # NOTE: We do not want to quote AVOID_GNULIB as we want word expansion. # shellcheck disable=SC2086 - env $AVOID_GNULIB runhaskell Setup configure \ + env $AVOID_GNULIB termux-ghc-setup configure \ $OPTIMISATION \ --prefix=$TERMUX_PREFIX \ --configure-option=--disable-rpath \ diff --git a/scripts/build/setup/termux_setup_cabal.sh b/scripts/build/setup/termux_setup_cabal.sh index 274730f69..ff80bf842 100644 --- a/scripts/build/setup/termux_setup_cabal.sh +++ b/scripts/build/setup/termux_setup_cabal.sh @@ -17,7 +17,7 @@ termux_setup_cabal() { termux_download "https://github.com/MrAdityaAlok/ghc-cross-tools/releases/download/cabal-install-v${TERMUX_CABAL_VERSION}/cabal-install-${TERMUX_CABAL_VERSION}.tar.xz" \ "${TERMUX_CABAL_TAR}" \ - "54de3ac03f9648a7e71715c1c4cba3ada34d9d20c812f39d134545e3e32708d4" + "f433e99cb3ff85239bd633f2ae2a370bfb7103f9db80e38199e0fda27897bdfe" mkdir -p "${TERMUX_CABAL_RUNTIME_FOLDER}" tar xf "${TERMUX_CABAL_TAR}" -C "${TERMUX_CABAL_RUNTIME_FOLDER}" diff --git a/scripts/build/setup/termux_setup_ghc_cross_compiler.sh b/scripts/build/setup/termux_setup_ghc_cross_compiler.sh index 2bd16eca3..8d2a12708 100644 --- a/scripts/build/setup/termux_setup_ghc_cross_compiler.sh +++ b/scripts/build/setup/termux_setup_ghc_cross_compiler.sh @@ -11,9 +11,10 @@ termux_setup_ghc_cross_compiler() { TERMUX_GHC_RUNTIME_FOLDER="${TERMUX_COMMON_CACHEDIR}/${GHC_PREFIX}-runtime" fi - local GHC_BIN="${TERMUX_GHC_RUNTIME_FOLDER}/${TERMUX_ARCH}" local TERMUX_GHC_TAR="${TERMUX_COMMON_CACHEDIR}/${GHC_PREFIX}.tar.xz" + export PATH="${TERMUX_GHC_RUNTIME_FOLDER}/bin/${TERMUX_ARCH}:${TERMUX_GHC_RUNTIME_FOLDER}/bin:${PATH}" + test -d "${TERMUX_PREFIX}/lib/ghc-${TERMUX_GHC_VERSION}" || termux_error_exit "Package 'ghc-libs' is not installed. It is required by GHC cross-compiler." \ "You should specify it in 'TERMUX_PKG_BUILD_DEPENDS'." @@ -31,9 +32,7 @@ termux_setup_ghc_cross_compiler() { fi done - export PATH="${GHC_BIN}:${PATH}" - - [ -d "${GHC_BIN}" ] && return + [ -d "${TERMUX_GHC_RUNTIME_FOLDER}/bin/${TERMUX_ARCH}" ] && return local CHECKSUMS="$( cat <<-EOF @@ -48,7 +47,7 @@ termux_setup_ghc_cross_compiler() { "${TERMUX_GHC_TAR}" \ "$(echo "${CHECKSUMS}" | grep -w "${TERMUX_ARCH}" | cut -d ':' -f 2)" - mkdir -p "${GHC_BIN}" + mkdir -p "${TERMUX_GHC_RUNTIME_FOLDER}" tar -xf "${TERMUX_GHC_TAR}" -C "${TERMUX_GHC_RUNTIME_FOLDER}" @@ -59,15 +58,12 @@ termux_setup_ghc_cross_compiler() { sed "s|\$topdir/bin/unlit|${TERMUX_GHC_RUNTIME_FOLDER}/lib/ghc-${TERMUX_GHC_VERSION}/bin/unlit|g" \ "${TERMUX_GHC_RUNTIME_FOLDER}/lib/ghc-${TERMUX_GHC_VERSION}/settings" > \ "${TERMUX_PREFIX}/lib/ghc-${TERMUX_GHC_VERSION}/settings" - # NOTE: Above command is being run after timestamp is created, so we need to remove it in massage step. + # NOTE: Above command edits file in $TERMUX_PREFIX after timestamp is created, + # so we need to remove it in massage step. for tool in ghc ghc-pkg hsc2hs hp2ps ghci; do - ln -sf "${TERMUX_GHC_RUNTIME_FOLDER}/bin/${_HOST}-${tool}" "${GHC_BIN}/termux-${tool}" - - sed -i -e "s|^#!${TERMUX_PREFIX}/bin/sh|#!/usr/bin/sh|" \ - -e "s|${_HOST}-ghc-${TERMUX_GHC_VERSION}|ghc-${TERMUX_GHC_VERSION}|g" \ - -e "s|\$executablename|${TERMUX_GHC_RUNTIME_FOLDER}/lib/ghc-${TERMUX_GHC_VERSION}/bin/${tool}|g" \ - "${GHC_BIN}/termux-${tool}" + sed -i "s|\$executablename|${TERMUX_GHC_RUNTIME_FOLDER}/lib/ghc-${TERMUX_GHC_VERSION}/bin/${tool}|g" \ + "${TERMUX_GHC_RUNTIME_FOLDER}/bin/${TERMUX_ARCH}/termux-${tool}" done # GHC ships with old version, we use our own. diff --git a/scripts/build/setup/termux_setup_jailbreak_cabal.sh b/scripts/build/setup/termux_setup_jailbreak_cabal.sh index 3dc0f5e3c..15ecf3bfc 100644 --- a/scripts/build/setup/termux_setup_jailbreak_cabal.sh +++ b/scripts/build/setup/termux_setup_jailbreak_cabal.sh @@ -3,8 +3,7 @@ termux_setup_jailbreak_cabal() { if [ "${TERMUX_ON_DEVICE_BUILD}" = "false" ]; then local TERMUX_JAILBREAK_VERSION=1.3.5 - local TERMUX_JAILBREAK_TMPDIR="${TERMUX_COMMON_CACHEDIR}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}" - local TERMUX_JAILBREAK_TAR="${TERMUX_JAILBREAK_TMPDIR}.tar.gz" + local TERMUX_JAILBREAK_TAR="${TERMUX_COMMON_CACHEDIR}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}.tar.gz" local TERMUX_JAILBREAK_RUNTIME_FOLDER if [ "${TERMUX_PACKAGES_OFFLINE-false}" = "true" ]; then @@ -13,30 +12,18 @@ termux_setup_jailbreak_cabal() { TERMUX_JAILBREAK_RUNTIME_FOLDER="${TERMUX_COMMON_CACHEDIR}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}-runtime" fi - export PATH="${TERMUX_JAILBREAK_RUNTIME_FOLDER}/bin:${PATH}" + export PATH="${TERMUX_JAILBREAK_RUNTIME_FOLDER}:${PATH}" [ -d "${TERMUX_JAILBREAK_RUNTIME_FOLDER}" ] && return - termux_download "https://hackage.haskell.org/package/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}.tar.gz" \ + termux_download "https://github.com/MrAdityaAlok/ghc-cross-tools/releases/download/jailbreak-cabal-v${TERMUX_JAILBREAK_VERSION}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}.tar.xz" \ "${TERMUX_JAILBREAK_TAR}" \ - "8d1fce7dd9b755367f8236d91c94c5bb212a5fea9d8bc32696774cff5e7f4188" + "8d1a8b8fadf48f4abf42da025d5cf843bd68e1b3c18ecacdc0cd0c9bd470c64e" - mkdir -p "${TERMUX_JAILBREAK_RUNTIME_FOLDER}" "${TERMUX_JAILBREAK_TMPDIR}" - tar xf "${TERMUX_JAILBREAK_TAR}" -C "${TERMUX_JAILBREAK_TMPDIR}" --strip-components=1 - ( - cd "${TERMUX_JAILBREAK_TMPDIR}" - termux_setup_ghc - runhaskell Setup configure \ - --prefix="${TERMUX_JAILBREAK_RUNTIME_FOLDER}" \ - --enable-shared \ - --enable-executable-dynamic \ - --ghc-options=-dynamic - runhaskell Setup build - runhaskell Setup install - ) + mkdir -p "${TERMUX_JAILBREAK_RUNTIME_FOLDER}" + tar xf "${TERMUX_JAILBREAK_TAR}" -C "${TERMUX_JAILBREAK_RUNTIME_FOLDER}" rm "${TERMUX_JAILBREAK_TAR}" - rm -Rf "${TERMUX_JAILBREAK_TMPDIR}" else if [[ "$TERMUX_MAIN_PACKAGE_FORMAT" = "debian" && "$(dpkg-query -W -f '${db:Status-Status}\n' jailbreak-cabal 2>/dev/null)" != "installed" ]] || [[ "$TERMUX_MAIN_PACKAGE_FORMAT" = "pacman" && ! "$(pacman -Q jailbreak-cabal 2>/dev/null)" ]]; then diff --git a/scripts/build/termux_step_make.sh b/scripts/build/termux_step_make.sh index 67c35a33a..5e7666890 100644 --- a/scripts/build/termux_step_make.sh +++ b/scripts/build/termux_step_make.sh @@ -9,7 +9,7 @@ termux_step_make() { if test -f build.ninja; then ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES elif ls ./*.cabal &>/dev/null; then - runhaskell Setup -j$TERMUX_MAKE_PROCESSES build + termux-ghc-setup -j$TERMUX_MAKE_PROCESSES build elif ls ./*akefile &>/dev/null || [ ! -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD diff --git a/scripts/build/termux_step_make_install.sh b/scripts/build/termux_step_make_install.sh index d30974e99..41b8207a5 100644 --- a/scripts/build/termux_step_make_install.sh +++ b/scripts/build/termux_step_make_install.sh @@ -4,10 +4,10 @@ termux_step_make_install() { if test -f build.ninja; then ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES install elif ls ./*.cabal &>/dev/null; then - runhaskell Setup copy + termux-ghc-setup copy if [ "${TERMUX_PKG_IS_HASKELL_LIB}" = true ]; then - runhaskell Setup register --gen-script - runhaskell Setup unregister --gen-script + termux-ghc-setup register --gen-script + termux-ghc-setup unregister --gen-script install -Dm744 register.sh "${TERMUX_PREFIX}"/share/haskell/register/"${TERMUX_PKG_NAME}".sh install -Dm744 unregister.sh "${TERMUX_PREFIX}"/share/haskell/unregister/"${TERMUX_PKG_NAME}".sh