diff options
| author | Sören Tempel <soeren@soeren-tempel.net> | 2026-07-25 21:36:45 +0200 |
|---|---|---|
| committer | Andreas Enge <andreas@enge.fr> | 2026-08-23 16:34:20 +0200 |
| commit | 7d69e87c376967d9151b090606d208c60bb3c4a8 (patch) | |
| tree | d67ff9006d40447f37633973183ed011bbaba458 /gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch | |
| parent | af4eedd6cede0a213548d6a823bec4c1a19af647 (diff) | |
gnu: ghc: Rebase patch to support GHC_PACKAGE_PATH in Cabal.haskell-team
* gnu/packages/haskell.scm (ghc-9.10)[source]{origin}<patches>: Apply
new patch for GHC_PACKAGE_PATH support in vendored Cabal library.
* gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch: New
patch.
* gnu/local.mk: Register it.
Diffstat (limited to 'gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch')
| -rw-r--r-- | gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch b/gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch new file mode 100644 index 00000000000..edfe06f0b1a --- /dev/null +++ b/gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | Without this patch, Cabal terminates if GHC_PACKAGE_PATH is set. This is | ||
| 2 | an annoyance with Guix as it makes heavy use of GHC_PACKAGE_PATH to have | ||
| 3 | GHC pickup Haskell package installed via Guix. Therefore, Cabal does | ||
| 4 | presently not work by default in environments created by Guix. This is | ||
| 5 | a workaround which makes Cabal respect GHC_PACKAGE_PATH. | ||
| 6 | |||
| 7 | Taken from https://github.com/haskell/cabal/issues/3728 | ||
| 8 | |||
| 9 | diff --git a/Cabal/src/Distribution/Simple/GHC.hs b/Cabal/src/Distribution/Simple/GHC.hs | ||
| 10 | index 614de7580..a14dd562f 100644 | ||
| 11 | --- a/libraries/Cabal/Cabal/src/Distribution/Simple/GHC.hs | ||
| 12 | +++ b/libraries/Cabal/Cabal/src/Distribution/Simple/GHC.hs | ||
| 13 | @@ -79,6 +79,7 @@ module Distribution.Simple.GHC | ||
| 14 | , GhcImplInfo (..) | ||
| 15 | ) where | ||
| 16 | |||
| 17 | +import Distribution.Compat.Environment (lookupEnv) | ||
| 18 | import Distribution.Compat.Prelude | ||
| 19 | import Prelude () | ||
| 20 | |||
| 21 | @@ -133,6 +134,7 @@ import System.FilePath | ||
| 22 | ( takeDirectory | ||
| 23 | , (<.>) | ||
| 24 | , (</>) | ||
| 25 | + , searchPathSeparator | ||
| 26 | ) | ||
| 27 | import qualified System.Info | ||
| 28 | #ifndef mingw32_HOST_OS | ||
| 29 | @@ -407,9 +409,11 @@ getInstalledPackages | ||
| 30 | -> ProgramDb | ||
| 31 | -> IO InstalledPackageIndex | ||
| 32 | getInstalledPackages verbosity comp packagedbs progdb = do | ||
| 33 | - checkPackageDbEnvVar verbosity | ||
| 34 | checkPackageDbStack verbosity comp packagedbs | ||
| 35 | - pkgss <- getInstalledPackages' verbosity packagedbs progdb | ||
| 36 | + envPackageDBs <- | ||
| 37 | + maybe [] (map SpecificPackageDB . unintersperse searchPathSeparator) | ||
| 38 | + <$> lookupEnv "GHC_PACKAGE_PATH" | ||
| 39 | + pkgss <- getInstalledPackages' verbosity (envPackageDBs ++ packagedbs) progdb | ||
| 40 | index <- toPackageIndex verbosity pkgss progdb | ||
| 41 | return $! hackRtsPackage index | ||
| 42 | where | ||
| 43 | @@ -484,10 +488,6 @@ getUserPackageDB _verbosity ghcProg platform = do | ||
| 44 | packageConfFileName = "package.conf.d" | ||
| 45 | ghcVersion = fromMaybe (error "GHC.getUserPackageDB: no ghc version") $ programVersion ghcProg | ||
| 46 | |||
| 47 | -checkPackageDbEnvVar :: Verbosity -> IO () | ||
| 48 | -checkPackageDbEnvVar verbosity = | ||
| 49 | - Internal.checkPackageDbEnvVar verbosity "GHC" "GHC_PACKAGE_PATH" | ||
| 50 | - | ||
| 51 | checkPackageDbStack :: Verbosity -> Compiler -> PackageDBStack -> IO () | ||
| 52 | checkPackageDbStack verbosity comp = | ||
| 53 | if flagPackageConf implInfo | ||
| 54 | @@ -542,8 +542,11 @@ getInstalledPackagesMonitorFiles | ||
| 55 | -> ProgramDb | ||
| 56 | -> [PackageDB] | ||
| 57 | -> IO [FilePath] | ||
| 58 | -getInstalledPackagesMonitorFiles verbosity platform progdb = | ||
| 59 | - traverse getPackageDBPath | ||
| 60 | +getInstalledPackagesMonitorFiles verbosity platform progdb packageDBs = do | ||
| 61 | + envPackageDBs <- | ||
| 62 | + maybe [] (map SpecificPackageDB . unintersperse searchPathSeparator) | ||
| 63 | + <$> lookupEnv "GHC_PACKAGE_PATH" | ||
| 64 | + traverse getPackageDBPath (envPackageDBs ++ packageDBs) | ||
| 65 | where | ||
| 66 | getPackageDBPath :: PackageDB -> IO FilePath | ||
| 67 | getPackageDBPath GlobalPackageDB = | ||
