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:
parent
d47825a88c
commit
3c9ed52daf
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue