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.
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

View File

@ -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 \

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_CABAL_TAR}" \
"54de3ac03f9648a7e71715c1c4cba3ada34d9d20c812f39d134545e3e32708d4"
"f433e99cb3ff85239bd633f2ae2a370bfb7103f9db80e38199e0fda27897bdfe"
mkdir -p "${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"
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.

View File

@ -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

View File

@ -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

View File

@ -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