summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/haskell.scm3
-rw-r--r--gnu/packages/patches/ghc-9.10-cabal-support-package-path.patch67
3 files changed, 70 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index f90c12810fd..ecb32742310 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1448,6 +1448,7 @@ dist_patch_DATA = \
1448 %D%/packages/patches/ghc-9.2-cabal-support-package-path.patch \ 1448 %D%/packages/patches/ghc-9.2-cabal-support-package-path.patch \
1449 %D%/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch \ 1449 %D%/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch \
1450 %D%/packages/patches/ghc-9.2-grep-warnings.patch \ 1450 %D%/packages/patches/ghc-9.2-grep-warnings.patch \
1451 %D%/packages/patches/ghc-9.10-cabal-support-package-path.patch \
1451 %D%/packages/patches/ghc-basement-fix-32-bit.patch \ 1452 %D%/packages/patches/ghc-basement-fix-32-bit.patch \
1452 %D%/packages/patches/ghc-testsuite-dlopen-pie.patch \ 1453 %D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
1453 %D%/packages/patches/ghc-testsuite-grep-compat.patch \ 1454 %D%/packages/patches/ghc-testsuite-grep-compat.patch \
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 6bba8bccbb1..56ccab3b45a 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2135,7 +2135,8 @@ interactive environment for the functional language Haskell.")
2135 "/ghc-" version "-src.tar.xz")) 2135 "/ghc-" version "-src.tar.xz"))
2136 (sha256 2136 (sha256
2137 (base32 2137 (base32
2138 "1pm84cgr3yg99r3srdjllgz6zig8h7dbwa597srwcnjp0nh41zam")))) 2138 "1pm84cgr3yg99r3srdjllgz6zig8h7dbwa597srwcnjp0nh41zam"))
2139 (patches (search-patches "ghc-9.10-cabal-support-package-path.patch"))))
2139 (arguments 2140 (arguments
2140 (substitute-keyword-arguments (package-arguments base) 2141 (substitute-keyword-arguments (package-arguments base)
2141 ((#:phases phases #~%standard-phases) 2142 ((#:phases phases #~%standard-phases)
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 =