summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch
diff options
context:
space:
mode:
authorSören Tempel <soeren@soeren-tempel.net>2026-07-25 21:36:45 +0200
committerAndreas Enge <andreas@enge.fr>2026-08-23 16:34:20 +0200
commit7d69e87c376967d9151b090606d208c60bb3c4a8 (patch)
treed67ff9006d40447f37633973183ed011bbaba458 /gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch
parentaf4eedd6cede0a213548d6a823bec4c1a19af647 (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.patch67
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 @@
1Without this patch, Cabal terminates if GHC_PACKAGE_PATH is set. This is
2an annoyance with Guix as it makes heavy use of GHC_PACKAGE_PATH to have
3GHC pickup Haskell package installed via Guix. Therefore, Cabal does
4presently not work by default in environments created by Guix. This is
5a workaround which makes Cabal respect GHC_PACKAGE_PATH.
6
7Taken from https://github.com/haskell/cabal/issues/3728
8
9diff --git a/Cabal/src/Distribution/Simple/GHC.hs b/Cabal/src/Distribution/Simple/GHC.hs
10index 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 =