diff options
| author | hololeap <hololeap@protonmail.com> | 2025-04-12 11:41:40 -0600 |
|---|---|---|
| committer | Arsen Arsenović <arsen@gentoo.org> | 2025-05-15 09:09:53 +0200 |
| commit | 8ae4c6d315b09451163b0f8fdc95b52ce1f1374c (patch) | |
| tree | f712e4b3b3d96dd76e3c6888fc7191c2412c0996 /eclass/haskell-cabal.eclass | |
| parent | 78beda50cf5b46f553803b31e294569a1317aa1b (diff) | |
| download | gentoo-8ae4c6d315b09451163b0f8fdc95b52ce1f1374c.tar.gz gentoo-8ae4c6d315b09451163b0f8fdc95b52ce1f1374c.tar.bz2 gentoo-8ae4c6d315b09451163b0f8fdc95b52ce1f1374c.zip | |
haskell-cabal.eclass: Add early check for invalid GHC cache
If the GHC cache is invalid, it can create a confusing error during
src_compile. Add a check in haskell-cabal-pkg_setup that checks for
and fixes an invalid cache.
Closes: https://bugs.gentoo.org/916785
Closes: https://bugs.gentoo.org/916971
Closes: https://bugs.gentoo.org/920879
Closes: https://github.com/gentoo-haskell/gentoo-haskell/issues/1469
Thanks-to: Tom Gillespie <tgbugs@gmail.com>
Signed-off-by: hololeap <hololeap@protonmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/41562
Closes: https://github.com/gentoo/gentoo/pull/41562
Signed-off-by: Arsen Arsenović <arsen@gentoo.org>
Diffstat (limited to 'eclass/haskell-cabal.eclass')
| -rw-r--r-- | eclass/haskell-cabal.eclass | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/eclass/haskell-cabal.eclass b/eclass/haskell-cabal.eclass index e228d7fbc1bc..bb73c0e4881d 100644 --- a/eclass/haskell-cabal.eclass +++ b/eclass/haskell-cabal.eclass @@ -661,6 +661,23 @@ cabal-is-dummy-lib() { return 1 } +# @FUNCTION: cabal-check-cache +# @DESCRIPTION: +# Check the state of the GHC cache by running 'ghc-pkg check' and looking +# for the string "WARNING: cache is out of date". If the string is not found, +# the cache is considered valid and the function returns 0. If it is found, +# the cache is considered invalid and the function returns 1. +cabal-check-cache() { + if $(ghc-getghcpkg) check 2>&1 \ + | grep -q 'WARNING: cache is out of date' + then + ewarn 'GHC cache is out of date!' + return 1 + else + return 0 + fi +} + # exported function: check if cabal is correctly installed for # the currently active ghc (we cannot guarantee this with portage) haskell-cabal_pkg_setup() { @@ -672,6 +689,13 @@ haskell-cabal_pkg_setup() { fi if cabal-is-dummy-lib; then einfo "${P} is included in ghc-${CABAL_CORE_LIB_GHC_PV}, nothing to install." + else + # bug 916785 + if ! cabal-check-cache; then + # avoid running ghc-recache-db so as not to set _GHC_RECACHE_CALLED + einfo "Recaching GHC package DB" + $(ghc-getghcpkg) recache + fi fi } |
