diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2018-05-23 09:40:37 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2018-05-23 09:40:37 -0400 |
commit | 18742471aff29270453a540f84d543137ee9d44e (patch) | |
tree | d21863fd81db3722e8cac52b52be3dd1c429cf21 /pkgs/development/haskell-modules/generic-builder.nix | |
parent | 2e831da76da0a51557975a55dc8a18ebf3401bfb (diff) | |
parent | bbcaf78350d87c4657b1a2451132535467a454eb (diff) | |
download | nixlib-18742471aff29270453a540f84d543137ee9d44e.tar nixlib-18742471aff29270453a540f84d543137ee9d44e.tar.gz nixlib-18742471aff29270453a540f84d543137ee9d44e.tar.bz2 nixlib-18742471aff29270453a540f84d543137ee9d44e.tar.lz nixlib-18742471aff29270453a540f84d543137ee9d44e.tar.xz nixlib-18742471aff29270453a540f84d543137ee9d44e.tar.zst nixlib-18742471aff29270453a540f84d543137ee9d44e.zip |
Merge remote-tracking branch 'upstream/master' into staging
Use newer vagrant from master
Diffstat (limited to 'pkgs/development/haskell-modules/generic-builder.nix')
-rw-r--r-- | pkgs/development/haskell-modules/generic-builder.nix | 74 |
1 files changed, 20 insertions, 54 deletions
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index 5054106959f7..32e7734dd0bd 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,22 @@ 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 ++ allPkgconfigDepends ++ +======= + otherBuildInputs = setupHaskellDepends ++ extraLibraries ++ librarySystemDepends ++ executableSystemDepends ++ + optionals (allPkgconfigDepends != []) allPkgconfigDepends ++ +>>>>>>> upstream/master 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 +194,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 +234,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 +286,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 +314,7 @@ stdenv.mkDerivation ({ buildPhase = '' runHook preBuild - ${setupCommand} build ${buildTarget}${crossCabalFlagsString}${buildFlagsString} + ${setupCommand} build ${buildTarget}${crossCabalFlagsString} runHook postBuild ''; |