summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2016-05-31 22:35:32 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2016-05-31 22:37:16 +0100
commit2db4176c329e5e99e68f47dcb058c55d434bb64e (patch)
tree8a268a63179d05ab2d6dece7fc640483aecee27f /eclass
parent1b1ccef7b21635b4e62c77f15329e82886330349 (diff)
downloadgentoo-2db4176c329e5e99e68f47dcb058c55d434bb64e.tar.gz
gentoo-2db4176c329e5e99e68f47dcb058c55d434bb64e.tar.xz
haskell-cabal.eclass: add basic support for ROOT!=/, bug #534194
Reported-by: Dennis Schridde Bug: https://bugs.gentoo.org/534194 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'eclass')
-rw-r--r--eclass/ghc-package.eclass12
-rw-r--r--eclass/haskell-cabal.eclass26
2 files changed, 33 insertions, 5 deletions
diff --git a/eclass/ghc-package.eclass b/eclass/ghc-package.eclass
index 5466c0b5b20..ccc6d6ffd84 100644
--- a/eclass/ghc-package.eclass
+++ b/eclass/ghc-package.eclass
@@ -62,6 +62,16 @@ ghc-getghcpkgbin() {
fi
}
+# @FUNCTION: ghc-host-prefix
+# @DESCRIPTION:
+# Returns root of installed ghc.
+# Some helpers (like best_version) require reference
+# host system as they are tied to compiler bing executed.
+ghc-host-root() {
+ has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
+ echo "${EPREFIX}/"
+}
+
# @FUNCTION: ghc-version
# @DESCRIPTION:
# returns upstream version of ghc
@@ -85,7 +95,7 @@ ghc-pm-version() {
local pm_ghc_p
if [[ -z "${_GHC_PM_VERSION_CACHE}" ]]; then
- pm_ghc_p=$(best_version dev-lang/ghc)
+ pm_ghc_p=$(ROOT=$(ghc-host-root) best_version dev-lang/ghc)
_GHC_PM_VERSION_CACHE="PM:${pm_ghc_p#dev-lang/ghc-}"
fi
echo "${_GHC_PM_VERSION_CACHE}"
diff --git a/eclass/haskell-cabal.eclass b/eclass/haskell-cabal.eclass
index 373507995f3..a568bf4337b 100644
--- a/eclass/haskell-cabal.eclass
+++ b/eclass/haskell-cabal.eclass
@@ -59,6 +59,13 @@ inherit eutils ghc-package multilib multiprocessing
# linking 'setup' faster.
: ${GHC_BOOTSTRAP_FLAGS:=}
+# @ECLASS-VARIABLE: CABAL_EXTRA_TEST_FLAGS
+# @DESCRIPTION:
+# User-specified additional parameters passed to 'setup test'.
+# example: /etc/portage/make.conf:
+# CABAL_EXTRA_TEST_FLAGS="-v3 --show-details=streaming"
+: ${CABAL_EXTRA_TEST_FLAGS:=}
+
# @ECLASS-VARIABLE: CABAL_DEBUG_LOOSENING
# @DESCRIPTION:
# Show debug output for 'cabal_chdeps' function if set.
@@ -118,8 +125,7 @@ if [[ -n "${CABAL_USE_HSCOLOUR}" ]]; then
fi
if [[ -n "${CABAL_USE_HOOGLE}" ]]; then
- # enabled only in ::haskell
- CABAL_USE_HOOGLE=
+ IUSE="${IUSE} hoogle"
fi
if [[ -n "${CABAL_USE_ALEX}" ]]; then
@@ -169,7 +175,7 @@ cabal-version() {
else
# We ask portage, not ghc, so that we only pick up
# portage-installed cabal versions.
- _CABAL_VERSION_CACHE="$(ghc-extractportageversion dev-haskell/cabal)"
+ _CABAL_VERSION_CACHE="$(ROOT=$(ghc-host-root) ghc-extractportageversion dev-haskell/cabal)"
fi
fi
echo "${_CABAL_VERSION_CACHE}"
@@ -602,13 +608,25 @@ haskell-cabal_src_compile() {
}
haskell-cabal_src_test() {
+ local cabaltest=()
+
pushd "${S}" > /dev/null || die
if cabal-is-dummy-lib; then
einfo ">>> No tests for dummy library: ${CATEGORY}/${PF}"
else
einfo ">>> Test phase [cabal test]: ${CATEGORY}/${PF}"
- set -- test "$@"
+
+ # '--show-details=streaming' appeared in Cabal-1.20
+ if ./setup test --help | grep -q -- "'streaming'"; then
+ cabaltest+=(--show-details=streaming)
+ fi
+
+ set -- test \
+ "${cabaltest[@]}" \
+ ${CABAL_TEST_FLAGS} \
+ ${CABAL_EXTRA_TEST_FLAGS} \
+ "$@"
echo ./setup "$@"
./setup "$@" || die "cabal test failed"
fi