about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorPeter Simons <simons@cryp.to>2013-12-10 22:29:20 +0100
committerPeter Simons <simons@cryp.to>2013-12-10 22:29:20 +0100
commit2bc29e4e6d3713d106de670b55e8789267f7acc7 (patch)
tree9076082dd2f23bc9c0e97c33ad998172d07e4e4d /pkgs/build-support
parent3227c1d215ce1897bb72ab72333fa1bdd0cd1154 (diff)
parent6cd149f2a975e9db3716bc5aa0e95674064bef0b (diff)
downloadnixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.tar
nixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.tar.gz
nixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.tar.bz2
nixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.tar.lz
nixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.tar.xz
nixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.tar.zst
nixlib-2bc29e4e6d3713d106de670b55e8789267f7acc7.zip
Merge branch 'master' into stdenv-updates.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/cabal/default.nix14
1 files changed, 14 insertions, 0 deletions
diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix
index 9b6d8c4e80ed..b17f720e5618 100644
--- a/pkgs/build-support/cabal/default.nix
+++ b/pkgs/build-support/cabal/default.nix
@@ -4,6 +4,7 @@
 , enableLibraryProfiling ? false
 , enableSharedLibraries ? false
 , enableSharedExecutables ? false
+, enableStaticLibraries ? true
 , enableCheckPhase ? stdenv.lib.versionOlder "7.4" ghc.version
 }:
 
@@ -25,6 +26,9 @@ assert enableSharedExecutables -> versionOlder "7.4" ghc.version;
 # Our GHC 6.10.x builds do not provide sharable versions of their core libraries.
 assert enableSharedLibraries -> versionOlder "6.12" ghc.version;
 
+# Our GHC 6.10.x builds do not provide sharable versions of their core libraries.
+assert !enableStaticLibraries -> versionOlder "7.7" ghc.version;
+
 {
   mkDerivation =
     args : # arguments for the individual package, can modify the defaults
@@ -42,6 +46,7 @@ assert enableSharedLibraries -> versionOlder "6.12" ghc.version;
           x : (removeAttrs x internalAttrs) // {
                 buildInputs           = filter (y : ! (y == null)) x.buildInputs;
                 propagatedBuildInputs = filter (y : ! (y == null)) x.propagatedBuildInputs;
+                propagatedUserEnvPkgs = filter (y : ! (y == null)) x.propagatedUserEnvPkgs;
                 doCheck               = enableCheckPhase && x.doCheck;
               };
 
@@ -92,6 +97,10 @@ assert enableSharedLibraries -> versionOlder "6.12" ghc.version;
             # have to check for its existence
             propagatedBuildInputs = if self.isLibrary then self.buildDepends ++ self.extraLibraries ++ self.pkgconfigDepends else [];
 
+            # By default, also propagate all dependencies to the user environment. This is required, otherwise packages would be broken, because
+            # GHC also needs all dependencies to be available.
+            propagatedUserEnvPkgs = if self.isLibrary then self.buildDepends else [];
+
             # library directories that have to be added to the Cabal files
             extraLibDirs = [];
 
@@ -128,6 +137,10 @@ assert enableSharedLibraries -> versionOlder "6.12" ghc.version;
             # and run any regression test suites the package might have
             doCheck = enableCheckPhase;
 
+            # pass the '--enable-library-vanilla' flag to cabal in the
+            # configure stage to enable building shared libraries
+            inherit enableStaticLibraries;
+
             # pass the '--enable-shared' flag to cabal in the configure
             # stage to enable building shared libraries
             inherit enableSharedLibraries;
@@ -140,6 +153,7 @@ assert enableSharedLibraries -> versionOlder "6.12" ghc.version;
               (enableFeature self.enableSplitObjs "split-objs")
               (enableFeature enableLibraryProfiling "library-profiling")
               (enableFeature self.enableSharedLibraries "shared")
+              (optional (versionOlder "7" ghc.version) (enableFeature self.enableStaticLibraries "library-vanilla"))
               (optional (versionOlder "7.4" ghc.version) (enableFeature self.enableSharedExecutables "executable-dynamic"))
               (optional (versionOlder "7" ghc.version) (enableFeature self.doCheck "tests"))
             ];