diff options
author | Peter Simons <simons@cryp.to> | 2018-05-23 09:36:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-23 09:36:16 +0200 |
commit | 5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb (patch) | |
tree | 0ac0f9db025f0e560c7d335f542b394402a9e70a /pkgs/development/haskell-modules | |
parent | 9530d717253575b471d8136eee42f721b0c21bdb (diff) | |
download | nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.tar nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.tar.gz nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.tar.bz2 nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.tar.lz nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.tar.xz nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.tar.zst nixlib-5db3a9df5e82a0af45bc20bb2eda15dc7fa290bb.zip |
Revert "ghc, haskell infra: #40642 direct to master"
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r-- | pkgs/development/haskell-modules/configuration-nix.nix | 2 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/generic-builder.nix | 72 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/lib.nix | 2 |
3 files changed, 18 insertions, 58 deletions
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix index 2f1eb1ad97a8..469b249010fa 100644 --- a/pkgs/development/haskell-modules/configuration-nix.nix +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -128,7 +128,7 @@ self: super: builtins.intersectAttrs super { # Prevents needing to add security_tool as a build tool to all of x509-system's # dependencies. - x509-system = if pkgs.stdenv.targetPlatform.isDarwin && !pkgs.stdenv.cc.nativeLibc + x509-system = if pkgs.stdenv.isDarwin && !pkgs.stdenv.cc.nativeLibc then let inherit (pkgs.darwin) security_tool; in pkgs.lib.overrideDerivation (addBuildDepend super.x509-system security_tool) (drv: { postPatch = (drv.postPatch or "") + '' diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index 99c85ac688a5..3ab77c42cbba 100644 --- a/pkgs/development/haskell-modules/generic-builder.nix +++ b/pkgs/development/haskell-modules/generic-builder.nix @@ -19,7 +19,6 @@ in , buildTarget ? "" , buildTools ? [], libraryToolDepends ? [], executableToolDepends ? [], testToolDepends ? [], benchmarkToolDepends ? [] , configureFlags ? [] -, buildFlags ? [] , description ? "" , doCheck ? !isCross && (stdenv.lib.versionOlder "7.4" ghc.version) , doBenchmark ? false @@ -32,7 +31,7 @@ in , enableSharedExecutables ? false , enableSharedLibraries ? ((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version) , enableDeadCodeElimination ? (!stdenv.isDarwin) # TODO: use -dead_strip for darwin -, enableStaticLibraries ? !hostPlatform.isWindows +, enableStaticLibraries ? true , enableHsc2hsViaAsm ? hostPlatform.isWindows && stdenv.lib.versionAtLeast ghc.version "8.4" , extraLibraries ? [], librarySystemDepends ? [], executableSystemDepends ? [] , homepage ? "http://hackage.haskell.org/package/${pname}" @@ -69,10 +68,6 @@ in assert editedCabalFile != null -> revision != null; -# --enable-static does not work on windows. This is a bug in GHC. -# --enable-static will pass -staticlib to ghc, which only works for mach-o and elf. -assert hostPlatform.isWindows -> enableStaticLibraries == false; - let inherit (stdenv.lib) optional optionals optionalString versionOlder versionAtLeast @@ -131,8 +126,6 @@ let crossCabalFlagsString = stdenv.lib.optionalString isCross (" " + stdenv.lib.concatStringsSep " " crossCabalFlags); - buildFlagsString = optionalString (buildFlags != []) (" " + concatStringsSep " " buildFlags); - defaultConfigureFlags = [ "--verbose" "--prefix=$out" "--libdir=\\$prefix/lib/\\$compiler" "--libsubdir=\\$pkgid" (optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}") @@ -176,22 +169,18 @@ let optionals doCheck testPkgconfigDepends ++ optionals doBenchmark benchmarkPkgconfigDepends; nativeBuildInputs = [ ghc nativeGhc removeReferencesTo ] ++ optional (allPkgconfigDepends != []) pkgconfig ++ - setupHaskellDepends ++ buildTools ++ libraryToolDepends ++ executableToolDepends; propagatedBuildInputs = buildDepends ++ libraryHaskellDepends ++ executableHaskellDepends; - otherBuildInputs = extraLibraries ++ librarySystemDepends ++ executableSystemDepends ++ + otherBuildInputs = setupHaskellDepends ++ extraLibraries ++ librarySystemDepends ++ executableSystemDepends ++ optionals (allPkgconfigDepends != []) allPkgconfigDepends ++ optionals doCheck (testDepends ++ testHaskellDepends ++ testSystemDepends ++ testToolDepends) ++ optionals doBenchmark (benchmarkDepends ++ benchmarkHaskellDepends ++ benchmarkSystemDepends ++ benchmarkToolDepends); - allBuildInputs = propagatedBuildInputs ++ otherBuildInputs; haskellBuildInputs = stdenv.lib.filter isHaskellPkg allBuildInputs; systemBuildInputs = stdenv.lib.filter isSystemPkg allBuildInputs; - # When not cross compiling, also include Setup.hs dependencies. - ghcEnv = ghc.withPackages (p: - haskellBuildInputs ++ stdenv.lib.optional (!isCross) setupHaskellDepends); + ghcEnv = ghc.withPackages (p: haskellBuildInputs); setupCommand = "./Setup"; @@ -201,22 +190,6 @@ let nativeGhcCommand = "${nativeGhc.targetPrefix}ghc"; - buildPkgDb = ghcName: '' - if [ -d "$p/lib/${ghcName}/package.conf.d" ]; then - cp -f "$p/lib/${ghcName}/package.conf.d/"*.conf $packageConfDir/ - continue - fi - if [ -d "$p/include" ]; then - configureFlags+=" --extra-include-dirs=$p/include" - fi - if [ -d "$p/lib" ]; then - configureFlags+=" --extra-lib-dirs=$p/lib" - fi - if [[ -d "$p/Library/Frameworks" ]]; then - configureFlags+=" --extra-framework-dirs=$p/Library/Frameworks" - fi - ''; - in assert allPkgconfigDepends != [] -> pkgconfig != null; @@ -257,37 +230,30 @@ stdenv.mkDerivation ({ echo "Build with ${ghc}." ${optionalString (hasActiveLibrary && hyperlinkSource) "export PATH=${hscolour}/bin:$PATH"} - '' + (optionalString (setupHaskellDepends != []) '' - setupPackageConfDir="$TMPDIR/setup-package.conf.d" - mkdir -p $setupPackageConfDir - '') + '' packageConfDir="$TMPDIR/package.conf.d" mkdir -p $packageConfDir setupCompileFlags="${concatStringsSep " " setupCompileFlags}" configureFlags="${concatStringsSep " " defaultConfigureFlags} $configureFlags" - '' - # We build the Setup.hs on the *build* machine, and as such should only add - # dependencies for the build machine. - # - # pkgs* arrays defined in stdenv/setup.hs - + (optionalString (setupHaskellDepends != []) '' - for p in "''${pkgsBuildBuild[@]}" "''${pkgsBuildHost[@]}" "''${pkgsBuildTarget[@]}"; do - ${buildPkgDb nativeGhc.name} - done - ${nativeGhcCommand}-pkg --${nativePackageDbFlag}="$setupPackageConfDir" recache - '') - # For normal components - + '' + # host.*Pkgs defined in stdenv/setup.hs for p in "''${pkgsHostHost[@]}" "''${pkgsHostTarget[@]}"; do - ${buildPkgDb ghc.name} + if [ -d "$p/lib/${ghc.name}/package.conf.d" ]; then + cp -f "$p/lib/${ghc.name}/package.conf.d/"*.conf $packageConfDir/ + continue + fi + if [ -d "$p/include" ]; then + configureFlags+=" --extra-include-dirs=$p/include" + fi + if [ -d "$p/lib" ]; then + configureFlags+=" --extra-lib-dirs=$p/lib" + fi done '' # only use the links hack if we're actually building dylibs. otherwise, the # "dynamic-library-dirs" point to nonexistent paths, and the ln command becomes # "ln -s $out/lib/links", which tries to recreate the links dir and fails - + (optionalString (stdenv.isDarwin && (enableSharedLibraries || enableSharedExecutables)) '' + + (optionalString (stdenv.isDarwin && enableSharedLibraries) '' # Work around a limit in the macOS Sierra linker on the number of paths # referenced by any one dynamic library: # @@ -316,11 +282,7 @@ stdenv.mkDerivation ({ done echo setupCompileFlags: $setupCompileFlags - ${optionalString (setupHaskellDepends != []) - '' - echo GHC_PACKAGE_PATH="$setupPackageConfDir:" - GHC_PACKAGE_PATH="$setupPackageConfDir:" '' - }${nativeGhcCommand} $setupCompileFlags --make -o Setup -odir $TMPDIR -hidir $TMPDIR $i + ${nativeGhcCommand} $setupCompileFlags --make -o Setup -odir $TMPDIR -hidir $TMPDIR $i runHook postCompileBuildDriver ''; @@ -348,7 +310,7 @@ stdenv.mkDerivation ({ buildPhase = '' runHook preBuild - ${setupCommand} build ${buildTarget}${crossCabalFlagsString}${buildFlagsString} + ${setupCommand} build ${buildTarget}${crossCabalFlagsString} runHook postBuild ''; diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index fb1302f60ea5..55e45bd6559d 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -131,8 +131,6 @@ rec { */ appendConfigureFlag = drv: x: overrideCabal drv (drv: { configureFlags = (drv.configureFlags or []) ++ [x]; }); - appendBuildFlag = drv: x: overrideCabal drv (drv: { buildFlags = (drv.buildFlags or []) ++ [x]; }); - appendBuildFlags = drv: xs: overrideCabal drv (drv: { buildFlags = (drv.buildFlags or []) ++ xs; }); /* removeConfigureFlag drv x is a Haskell package like drv, but with all cabal configure arguments that are equal to x removed. |