From 2db4176c329e5e99e68f47dcb058c55d434bb64e Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Tue, 31 May 2016 22:35:32 +0100 Subject: [PATCH] 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 --- eclass/ghc-package.eclass | 12 +++++++++++- eclass/haskell-cabal.eclass | 26 ++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/eclass/ghc-package.eclass b/eclass/ghc-package.eclass index 5466c0b5b20d..ccc6d6ffd84b 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 373507995f36..a568bf4337b1 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 -- 2.26.2