haskell-cabal.eclass: add basic support for ROOT!=/, bug #534194
authorSergei Trofimovich <slyfox@gentoo.org>
Tue, 31 May 2016 21:35:32 +0000 (22:35 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Tue, 31 May 2016 21:37:16 +0000 (22:37 +0100)
Reported-by: Dennis Schridde
Bug: https://bugs.gentoo.org/534194
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
eclass/ghc-package.eclass
eclass/haskell-cabal.eclass

index 5466c0b5b20db676c44004b8f15d2a582f36ff5f..ccc6d6ffd84bebecc9bf37e95c04dbea685973d2 100644 (file)
@@ -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}"
index 373507995f36653751ffcbe9c88b76e41a08e214..a568bf4337b12e5c587264b47c603093421d03a7 100644 (file)
@@ -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