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 <dev.aditya.alok@gmail.com>
This commit is contained in:
Aditya Alok 2022-03-10 23:38:53 +05:30 committed by Henrik Grimler
parent d47825a88c
commit 3c9ed52daf
No known key found for this signature in database
GPG Key ID: B0076E490B71616B
7 changed files with 20 additions and 46 deletions

View File

@ -5,7 +5,6 @@ termux_step_configure() {
# should be executed by its own build system. # should be executed by its own build system.
if ls "${TERMUX_PKG_SRCDIR}"/*.cabal &>/dev/null; then if ls "${TERMUX_PKG_SRCDIR}"/*.cabal &>/dev/null; then
[ "$TERMUX_CONTINUE_BUILD" == "true" ] && return [ "$TERMUX_CONTINUE_BUILD" == "true" ] && return
termux_setup_ghc
termux_setup_ghc_cross_compiler termux_setup_ghc_cross_compiler
termux_step_configure_haskell_build termux_step_configure_haskell_build
elif [ "$TERMUX_PKG_FORCE_CMAKE" = "false" ] && [ -f "$TERMUX_PKG_SRCDIR/configure" ]; then elif [ "$TERMUX_PKG_FORCE_CMAKE" = "false" ] && [ -f "$TERMUX_PKG_SRCDIR/configure" ]; then

View File

@ -111,17 +111,9 @@ termux_step_configure_haskell_build() {
} }
[ "$TERMUX_DEBUG_BUILD" = "true" ] && OPTIMISATION="-O0" || OPTIMISATION="-O" [ "$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. # NOTE: We do not want to quote AVOID_GNULIB as we want word expansion.
# shellcheck disable=SC2086 # shellcheck disable=SC2086
env $AVOID_GNULIB runhaskell Setup configure \ env $AVOID_GNULIB termux-ghc-setup configure \
$OPTIMISATION \ $OPTIMISATION \
--prefix=$TERMUX_PREFIX \ --prefix=$TERMUX_PREFIX \
--configure-option=--disable-rpath \ --configure-option=--disable-rpath \

View File

@ -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_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}" \ "${TERMUX_CABAL_TAR}" \
"54de3ac03f9648a7e71715c1c4cba3ada34d9d20c812f39d134545e3e32708d4" "f433e99cb3ff85239bd633f2ae2a370bfb7103f9db80e38199e0fda27897bdfe"
mkdir -p "${TERMUX_CABAL_RUNTIME_FOLDER}" mkdir -p "${TERMUX_CABAL_RUNTIME_FOLDER}"
tar xf "${TERMUX_CABAL_TAR}" -C "${TERMUX_CABAL_RUNTIME_FOLDER}" tar xf "${TERMUX_CABAL_TAR}" -C "${TERMUX_CABAL_RUNTIME_FOLDER}"

View File

@ -11,9 +11,10 @@ termux_setup_ghc_cross_compiler() {
TERMUX_GHC_RUNTIME_FOLDER="${TERMUX_COMMON_CACHEDIR}/${GHC_PREFIX}-runtime" TERMUX_GHC_RUNTIME_FOLDER="${TERMUX_COMMON_CACHEDIR}/${GHC_PREFIX}-runtime"
fi fi
local GHC_BIN="${TERMUX_GHC_RUNTIME_FOLDER}/${TERMUX_ARCH}"
local TERMUX_GHC_TAR="${TERMUX_COMMON_CACHEDIR}/${GHC_PREFIX}.tar.xz" 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}" || 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." \ 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'." "You should specify it in 'TERMUX_PKG_BUILD_DEPENDS'."
@ -31,9 +32,7 @@ termux_setup_ghc_cross_compiler() {
fi fi
done done
export PATH="${GHC_BIN}:${PATH}" [ -d "${TERMUX_GHC_RUNTIME_FOLDER}/bin/${TERMUX_ARCH}" ] && return
[ -d "${GHC_BIN}" ] && return
local CHECKSUMS="$( local CHECKSUMS="$(
cat <<-EOF cat <<-EOF
@ -48,7 +47,7 @@ termux_setup_ghc_cross_compiler() {
"${TERMUX_GHC_TAR}" \ "${TERMUX_GHC_TAR}" \
"$(echo "${CHECKSUMS}" | grep -w "${TERMUX_ARCH}" | cut -d ':' -f 2)" "$(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}" 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" \ 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_GHC_RUNTIME_FOLDER}/lib/ghc-${TERMUX_GHC_VERSION}/settings" > \
"${TERMUX_PREFIX}/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 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 "s|\$executablename|${TERMUX_GHC_RUNTIME_FOLDER}/lib/ghc-${TERMUX_GHC_VERSION}/bin/${tool}|g" \
"${TERMUX_GHC_RUNTIME_FOLDER}/bin/${TERMUX_ARCH}/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}"
done done
# GHC ships with old version, we use our own. # GHC ships with old version, we use our own.

View File

@ -3,8 +3,7 @@
termux_setup_jailbreak_cabal() { termux_setup_jailbreak_cabal() {
if [ "${TERMUX_ON_DEVICE_BUILD}" = "false" ]; then if [ "${TERMUX_ON_DEVICE_BUILD}" = "false" ]; then
local TERMUX_JAILBREAK_VERSION=1.3.5 local TERMUX_JAILBREAK_VERSION=1.3.5
local TERMUX_JAILBREAK_TMPDIR="${TERMUX_COMMON_CACHEDIR}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}" local TERMUX_JAILBREAK_TAR="${TERMUX_COMMON_CACHEDIR}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}.tar.gz"
local TERMUX_JAILBREAK_TAR="${TERMUX_JAILBREAK_TMPDIR}.tar.gz"
local TERMUX_JAILBREAK_RUNTIME_FOLDER local TERMUX_JAILBREAK_RUNTIME_FOLDER
if [ "${TERMUX_PACKAGES_OFFLINE-false}" = "true" ]; then 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" TERMUX_JAILBREAK_RUNTIME_FOLDER="${TERMUX_COMMON_CACHEDIR}/jailbreak-cabal-${TERMUX_JAILBREAK_VERSION}-runtime"
fi fi
export PATH="${TERMUX_JAILBREAK_RUNTIME_FOLDER}/bin:${PATH}" export PATH="${TERMUX_JAILBREAK_RUNTIME_FOLDER}:${PATH}"
[ -d "${TERMUX_JAILBREAK_RUNTIME_FOLDER}" ] && return [ -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}" \ "${TERMUX_JAILBREAK_TAR}" \
"8d1fce7dd9b755367f8236d91c94c5bb212a5fea9d8bc32696774cff5e7f4188" "8d1a8b8fadf48f4abf42da025d5cf843bd68e1b3c18ecacdc0cd0c9bd470c64e"
mkdir -p "${TERMUX_JAILBREAK_RUNTIME_FOLDER}" "${TERMUX_JAILBREAK_TMPDIR}" mkdir -p "${TERMUX_JAILBREAK_RUNTIME_FOLDER}"
tar xf "${TERMUX_JAILBREAK_TAR}" -C "${TERMUX_JAILBREAK_TMPDIR}" --strip-components=1 tar xf "${TERMUX_JAILBREAK_TAR}" -C "${TERMUX_JAILBREAK_RUNTIME_FOLDER}"
(
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
)
rm "${TERMUX_JAILBREAK_TAR}" rm "${TERMUX_JAILBREAK_TAR}"
rm -Rf "${TERMUX_JAILBREAK_TMPDIR}"
else else
if [[ "$TERMUX_MAIN_PACKAGE_FORMAT" = "debian" && "$(dpkg-query -W -f '${db:Status-Status}\n' jailbreak-cabal 2>/dev/null)" != "installed" ]] || 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 [[ "$TERMUX_MAIN_PACKAGE_FORMAT" = "pacman" && ! "$(pacman -Q jailbreak-cabal 2>/dev/null)" ]]; then

View File

@ -9,7 +9,7 @@ termux_step_make() {
if test -f build.ninja; then if test -f build.ninja; then
ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES
elif ls ./*.cabal &>/dev/null; then 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 elif ls ./*akefile &>/dev/null || [ ! -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then
if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then
make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD

View File

@ -4,10 +4,10 @@ termux_step_make_install() {
if test -f build.ninja; then if test -f build.ninja; then
ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES install ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES install
elif ls ./*.cabal &>/dev/null; then elif ls ./*.cabal &>/dev/null; then
runhaskell Setup copy termux-ghc-setup copy
if [ "${TERMUX_PKG_IS_HASKELL_LIB}" = true ]; then if [ "${TERMUX_PKG_IS_HASKELL_LIB}" = true ]; then
runhaskell Setup register --gen-script termux-ghc-setup register --gen-script
runhaskell Setup unregister --gen-script termux-ghc-setup unregister --gen-script
install -Dm744 register.sh "${TERMUX_PREFIX}"/share/haskell/register/"${TERMUX_PKG_NAME}".sh 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 install -Dm744 unregister.sh "${TERMUX_PREFIX}"/share/haskell/unregister/"${TERMUX_PKG_NAME}".sh