From 8d8061ec20e0e41f43d9ff803f1834665ae31963 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 5 Dec 2017 09:36:08 +0100 Subject: [PATCH] Revert "Revive multiple outputs for Haskell packages." --- pkgs/development/compilers/ghc/7.10.2.nix | 2 +- pkgs/development/compilers/ghc/7.10.3.nix | 2 +- pkgs/development/compilers/ghc/8.0.2.nix | 2 +- pkgs/development/compilers/ghc/8.2.1.nix | 2 +- pkgs/development/compilers/ghc/head.nix | 2 +- pkgs/development/compilers/ghcjs/base.nix | 2 +- pkgs/development/compilers/halvm/2.4.0.nix | 4 +- .../haskell-modules/configuration-common.nix | 1 - .../haskell-modules/configuration-nix.nix | 53 +------- .../haskell-modules/generic-builder.nix | 122 ++++-------------- pkgs/development/haskell-modules/lib.nix | 4 - .../haskell-modules/make-package-set.nix | 1 - .../haskell-modules/with-packages-wrapper.nix | 2 +- pkgs/top-level/all-packages.nix | 10 +- 14 files changed, 37 insertions(+), 172 deletions(-) diff --git a/pkgs/development/compilers/ghc/7.10.2.nix b/pkgs/development/compilers/ghc/7.10.2.nix index af1db1e6dccf..51274dd60598 100644 --- a/pkgs/development/compilers/ghc/7.10.2.nix +++ b/pkgs/development/compilers/ghc/7.10.2.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { sha256 = "1x8m4rp2v7ydnrz6z9g8x7z3x3d3pxhv2pixy7i7hkbqbdsp7kal"; }; - buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 (stdenv.lib.getBin hscolour) ]; + buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 hscolour ]; patches = [ ./relocation.patch ]; diff --git a/pkgs/development/compilers/ghc/7.10.3.nix b/pkgs/development/compilers/ghc/7.10.3.nix index 22a1016776ee..d573a22e0ae8 100644 --- a/pkgs/development/compilers/ghc/7.10.3.nix +++ b/pkgs/development/compilers/ghc/7.10.3.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { ./relocation.patch ]; - buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 (stdenv.lib.getBin hscolour) ]; + buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 hscolour ]; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/ghc/8.0.2.nix b/pkgs/development/compilers/ghc/8.0.2.nix index 55193f2f3c31..d475e3438b4b 100644 --- a/pkgs/development/compilers/ghc/8.0.2.nix +++ b/pkgs/development/compilers/ghc/8.0.2.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional stdenv.isLinux ./ghc-no-madv-free.patch ++ stdenv.lib.optional stdenv.isDarwin ./ghc-8.0.2-no-cpp-warnings.patch; - buildInputs = [ ghc perl (stdenv.lib.getBin hscolour) sphinx ]; + buildInputs = [ ghc perl hscolour sphinx ]; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/ghc/8.2.1.nix b/pkgs/development/compilers/ghc/8.2.1.nix index 7c3b21f33c25..bcc801c98ea5 100644 --- a/pkgs/development/compilers/ghc/8.2.1.nix +++ b/pkgs/development/compilers/ghc/8.2.1.nix @@ -10,7 +10,7 @@ let inherit (bootPkgs) ghc; version = "8.2.1"; - preReleaseName = "ghc-8.2.1"; + commonBuildInputs = [ alex autoconf automake ghc happy hscolour perl python3 sphinx ]; commonPreConfigure = '' sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index 27f706fc1c67..92ba3f6a46ed 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -11,7 +11,7 @@ let inherit (bootPkgs) ghc; - commonBuildInputs = [ ghc perl autoconf automake (stdenv.lib.getBin happy) (stdenv.lib.getBin alex) python3 ]; + commonBuildInputs = [ ghc perl autoconf automake happy alex python3 ]; rev = "14457cf6a50f708eecece8f286f08687791d51f7"; diff --git a/pkgs/development/compilers/ghcjs/base.nix b/pkgs/development/compilers/ghcjs/base.nix index c7d5b7a742b4..d4418b058d92 100644 --- a/pkgs/development/compilers/ghcjs/base.nix +++ b/pkgs/development/compilers/ghcjs/base.nix @@ -113,7 +113,7 @@ in mkDerivation (rec { lens optparse-applicative parallel safe shelly split stringsearch syb system-fileio system-filepath tar terminfo text-binary unordered-containers vector wl-pprint-text yaml - (stdenv.lib.getBin alex) (stdenv.lib.getBin happy) git gnumake autoconf automake libtool patch gmp + alex happy git gnumake autoconf automake libtool patch gmp base16-bytestring cryptohash executable-path haddock-api transformers-compat QuickCheck haddock hspec xhtml regex-posix libiconv diff --git a/pkgs/development/compilers/halvm/2.4.0.nix b/pkgs/development/compilers/halvm/2.4.0.nix index 7547a8ebbc66..0c4cef653d86 100644 --- a/pkgs/development/compilers/halvm/2.4.0.nix +++ b/pkgs/development/compilers/halvm/2.4.0.nix @@ -20,9 +20,9 @@ stdenv.mkDerivation rec { sed -ie 's|ld |${targetPackages.stdenv.cc.bintools}/bin/ld |g' src/scripts/ldkernel.in ''; configureFlags = stdenv.lib.optional (!enableIntegerSimple) [ "--enable-gmp" ]; - propagatedNativeBuildInputs = [ (stdenv.lib.getBin alex) (stdenv.lib.getBin happy) ]; + propagatedNativeBuildInputs = [ alex happy ]; buildInputs = - let haskellPkgs = [ (stdenv.lib.getBin alex) (stdenv.lib.getBin happy) (stdenv.lib.getBin bootPkgs.hscolour) bootPkgs.cabal-install bootPkgs.haddock bootPkgs.hpc + let haskellPkgs = [ alex happy bootPkgs.hscolour bootPkgs.cabal-install bootPkgs.haddock bootPkgs.hpc ]; in [ bootPkgs.ghc automake perl git targetPackages.stdenv.cc.bintools autoconf xen zlib ncurses.dev diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 8c9cea0579f4..84df4d1f0c4d 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -897,7 +897,6 @@ self: super: { # Don't install internal mkReadme tool. hastache = overrideCabal super.hastache (drv: { doCheck = false; - enableSeparateBinOutput = false; postInstall = "rm $out/bin/mkReadme && rmdir $out/bin"; }); diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix index d5a2652a4b78..8146674a9435 100644 --- a/pkgs/development/haskell-modules/configuration-nix.nix +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -217,10 +217,7 @@ self: super: builtins.intersectAttrs super { # wxc supports wxGTX >= 3.0, but our current default version points to 2.8. # http://hydra.cryp.to/build/1331287/log/raw - wxc = (overrideCabal super.wxc (drv: { - buildDepends = (drv.buildDepends or []) ++ [self.split]; - postInstall = "cp -v dist/build/libwxc.so.0.92.3.0 $lib/lib/libwxc.so"; - })).override { wxGTK = pkgs.wxGTK30; }; + wxc = (addBuildDepend super.wxc self.split).override { wxGTK = pkgs.wxGTK30; }; wxcore = super.wxcore.override { wxGTK = pkgs.wxGTK30; }; # Test suite wants to connect to $DISPLAY. @@ -510,52 +507,4 @@ self: super: builtins.intersectAttrs super { # Break cyclic reference that results in an infinite recursion. partial-semigroup = dontCheck super.partial-semigroup; - # Alex has some weird files in /usr/share that create a cyclic ref with - # its bin dir. - alex = hasNoBinOutput super.alex; - - # Disable separate bin outputs for these specific packages that break with it. - H = hasNoBinOutput super.H; - cryptol = hasNoBinOutput super.cryptol; - hscolour = hasNoBinOutput super.hscolour; - sproxy = hasNoBinOutput super.sproxy; - sproxy2 = hasNoBinOutput super.sproxy2; - sproxy-web = hasNoBinOutput super.sproxy-web; - juandelacosa = hasNoBinOutput super.juandelacosa; - mywatch = hasNoBinOutput super.mywatch; - sugarhaskell = hasNoBinOutput super.sugarhaskell; - zerobin = hasNoBinOutput super.zerobin; - - git-annex = overrideCabal super.git-annex (drv: { - enableSeparateBinOutput = false; - enableSeparateEtcOutput = false; - }); - - # Has extra data files which are referred to from the binary output, - # creating a store reference cycle. Putting data in separate output - # solves the problem. - happy = overrideCabal super.happy (drv: { enableSeparateDataOutput = true; }); - - # Override a number of packages with specific references to $out in their - # derivations - stack = overrideCabal super.stack (drv: { - postInstall = '' - exe=$bin/bin/stack - mkdir -p $bin/share/bash-completion/completions - $exe --bash-completion-script $exe >$bin/share/bash-completion/completions/stack - ''; - }); - Agda = overrideCabal super.Agda (drv: { - postInstall = '' - files=("$out/share/"*"-ghc-"*"/Agda-"*"/lib/prim/Agda/"{Primitive.agda,Builtin"/"*.agda}) - for f in "''${files[@]}" ; do - $bin/bin/agda $f - done - for f in "''${files[@]}" ; do - $bin/bin/agda -c --no-main $f - done - $bin/bin/agda-mode compile - ''; - }); - } diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index aafc1b63530b..3e82003be43c 100644 --- a/pkgs/development/haskell-modules/generic-builder.nix +++ b/pkgs/development/haskell-modules/generic-builder.nix @@ -56,10 +56,6 @@ let isCross = (ghc.cross or null) != null; in , hardeningDisable ? lib.optional (ghc.isHaLVM or false) "all" , enableSeparateDataOutput ? false , enableSeparateDocOutput ? doHaddock -, enableSeparateBinOutput ? isExecutable -, outputsToInstall ? [] -, enableSeparateLibOutput ? true -, enableSeparateEtcOutput ? (stdenv.lib.versionOlder "7.7" ghc.version) } @ args: assert editedCabalFile != null -> revision != null; @@ -83,6 +79,9 @@ let then "package-db" else "package-conf"; + # the target dir for haddock documentation + docdir = docoutput: docoutput + "/share/doc"; + newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal"; newCabalFile = fetchurl { url = newCabalFileUrl; @@ -96,13 +95,6 @@ let ''; hasActiveLibrary = isLibrary && (enableStaticLibraries || enableSharedLibraries || enableLibraryProfiling); - hasLibOutput = enableSeparateLibOutput && hasActiveLibrary; - libDir = if hasLibOutput then "$lib/lib/${ghc.name}" else "$out/lib/${ghc.name}"; - binDir = if enableSeparateBinOutput then "$bin/bin" else "$out/bin"; - libexecDir = if enableSeparateBinOutput then "$libexec/bin" else "$out/libexec"; - etcDir = if enableSeparateEtcOutput then "$etc/etc" else "$out/etc"; - docDir = if enableSeparateDocOutput then "$doc/share/doc" else "$out/share/doc"; - dataDir = if enableSeparateDataOutput then "$data/share/${ghc.name}" else "$out/share/${ghc.name}"; # We cannot enable -j parallelism for libraries because GHC is far more # likely to generate a non-determistic library ID in that case. Further @@ -121,20 +113,12 @@ let stdenv.lib.optionalString isCross (" " + stdenv.lib.concatStringsSep " " crossCabalFlags); defaultConfigureFlags = [ - "--verbose" "--prefix=$out" - # Binary directory has to be $bin/bin instead of just $bin: this - # is so that the package is added to the PATH when it's used as a - # build input. Sadly mkDerivation won't add inputs that don't have - # bin subdirectory. - "--bindir=${binDir}" - "--libdir=${libDir}" "--libsubdir=\\$pkgid" - "--libexecdir=${libexecDir}" - (optionalString (enableSeparateEtcOutput) "--sysconfdir=${etcDir}") # Old versions of cabal don't support this flag. - "--datadir=${dataDir}" - "--docdir=${docDir}" + "--verbose" "--prefix=$out" "--libdir=\\$prefix/lib/\\$compiler" "--libsubdir=\\$pkgid" + (optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}") + (optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}") "--with-gcc=$CC" # Clang won't work without that extra information. "--package-db=$packageConfDir" - (optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=${libDir}/${pname}-${version}") + (optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=$out/lib/${ghc.name}/${pname}-${version}") (optionalString (enableSharedExecutables && stdenv.isDarwin) "--ghc-option=-optl=-Wl,-headerpad_max_install_names") (optionalString enableParallelBuilding "--ghc-option=-j$NIX_BUILD_CORES") (optionalString useCpphs "--with-cpphs=${cpphs}/bin/cpphs --ghc-options=-cpp --ghc-options=-pgmP${cpphs}/bin/cpphs --ghc-options=-optP--cpp") @@ -168,11 +152,8 @@ let allPkgconfigDepends = pkgconfigDepends ++ libraryPkgconfigDepends ++ executablePkgconfigDepends ++ optionals doCheck testPkgconfigDepends ++ optionals doBenchmark benchmarkPkgconfigDepends; - nativeBuildInputs = map stdenv.lib.getBin - ( optional (allPkgconfigDepends != []) pkgconfig - ++ buildTools ++ libraryToolDepends ++ executableToolDepends - ++ [ removeReferencesTo ] - ); + nativeBuildInputs = optional (allPkgconfigDepends != []) pkgconfig ++ + buildTools ++ libraryToolDepends ++ executableToolDepends ++ [ removeReferencesTo ]; propagatedBuildInputs = buildDepends ++ libraryHaskellDepends ++ executableHaskellDepends; otherBuildInputs = setupHaskellDepends ++ extraLibraries ++ librarySystemDepends ++ executableSystemDepends ++ optionals (allPkgconfigDepends != []) allPkgconfigDepends ++ @@ -201,15 +182,7 @@ assert allPkgconfigDepends != [] -> pkgconfig != null; stdenv.mkDerivation ({ name = "${pname}-${version}"; - outputs = if (args ? outputs) then args.outputs else - ( (optional enableSeparateBinOutput "bin") - ++ (optional enableSeparateBinOutput "libexec") - ++ [ "out" ] - ++ (optional enableSeparateDataOutput "data") - ++ (optional enableSeparateDocOutput "doc") - ++ (optional enableSeparateEtcOutput "etc") - ++ (optional hasLibOutput "lib") - ); + outputs = if (args ? outputs) then args.outputs else ([ "out" ] ++ (optional enableSeparateDataOutput "data") ++ (optional enableSeparateDocOutput "doc")); setOutputFlags = false; pos = builtins.unsafeGetAttrPos "pname" args; @@ -233,7 +206,7 @@ stdenv.mkDerivation ({ postPatch = optionalString jailbreak '' echo "Run jailbreak-cabal to lift version restrictions on build inputs." - ${stdenv.lib.getBin jailbreak-cabal}/bin/jailbreak-cabal ${pname}.cabal + ${jailbreak-cabal}/bin/jailbreak-cabal ${pname}.cabal '' + postPatch; setupCompilerEnvironmentPhase = '' @@ -241,7 +214,7 @@ stdenv.mkDerivation ({ echo "Build with ${ghc}." export PATH="${ghc}/bin:$PATH" - ${optionalString (hasActiveLibrary && hyperlinkSource) "export PATH=${stdenv.lib.getBin hscolour}/bin:$PATH"} + ${optionalString (hasActiveLibrary && hyperlinkSource) "export PATH=${hscolour}/bin:$PATH"} packageConfDir="$TMPDIR/package.conf.d" mkdir -p $packageConfDir @@ -268,7 +241,7 @@ stdenv.mkDerivation ({ # # Create a local directory with symlinks of the *.dylib (macOS shared # libraries) from all the dependencies. - local dynamicLinksDir="${libDir}/links" + local dynamicLinksDir="$out/lib/links" mkdir -p $dynamicLinksDir for d in $(grep dynamic-library-dirs "$packageConfDir/"*|awk '{print $2}'); do ln -s "$d/"*.dylib $dynamicLinksDir @@ -340,7 +313,7 @@ stdenv.mkDerivation ({ ${if !hasActiveLibrary then "${setupCommand} install" else '' ${setupCommand} copy - local packageConfDir="${libDir}/package.conf.d" + local packageConfDir="$out/lib/${ghc.name}/package.conf.d" local packageConfFile="$packageConfDir/${pname}-${version}.conf" mkdir -p "$packageConfDir" ${setupCommand} register --gen-pkg-config=$packageConfFile @@ -348,7 +321,7 @@ stdenv.mkDerivation ({ mv $packageConfFile $packageConfDir/$pkgId.conf ''} ${optionalString isGhcjs '' - for exeDir in "${binDir}/"*.jsexe; do + for exeDir in "$out/bin/"*.jsexe; do exe="''${exeDir%.jsexe}" printWords '#!${nodejs}/bin/node' > "$exe" cat "$exeDir/all.js" >> "$exe" @@ -357,68 +330,18 @@ stdenv.mkDerivation ({ ''} ${optionalString doCoverage "mkdir -p $out/share && cp -r dist/hpc $out/share"} ${optionalString (enableSharedExecutables && isExecutable && !isGhcjs && stdenv.isDarwin && stdenv.lib.versionOlder ghc.version "7.10") '' - for exe in "${binDir}/"* ; do - install_name_tool -add_rpath "${libDir}/${pname}-${version}" "$exe" + for exe in "$out/bin/"* ; do + install_name_tool -add_rpath "$out/lib/ghc-${ghc.version}/${pname}-${version}" "$exe" done ''} ${optionalString enableSeparateDocOutput '' - # Remove references back to $out but also back to $lib if we have - # docs. $lib is needed as it stores path to haddock interfaces in the - # conf file which creates a cycle if docs refer back to library - # path. - mkdir -p ${docDir} - - for x in ${docDir}/html/src/*.html; do - remove-references-to -t $out -t ${libDir} -t ${binDir} ${optionalString enableSeparateDataOutput "-t $data"} $x + for x in ${docdir "$doc"}/html/src/*.html; do + remove-references-to -t $out $x done + mkdir -p $doc ''} - - ${optionalString hasLibOutput '' - # Even if we don't have binary output for the package, things like - # Paths files will embed paths to bin/libexec directories in themselves - # which results in .lib <-> $out cyclic store reference. We - # therefore patch out the paths from separate library if we don't have - # separate bin output too. - # - # If we _do_ have separate bin and lib outputs, we may still be in - # trouble in case of shared executables: executable contains path to - # .lib, .lib contains path (through Paths) to .bin and we have a - # cycle. - # - # Lastly we have to deal with references from .lib back into - # $out/share if we're not splitting out data directory. - # - # It may happen that we have hasLibOutput set but the library - # directory was not created: this happens in the case that library - # section is not exposing any modules. See "fail" package for an - # example where no modules are exposed for GHC >= 8.0. - if [ -d ${libDir} ]; then - find ${libDir} -type f -exec \ - remove-references-to -t ${binDir} -t ${libexecDir} "{}" \; - fi - ''} - - ${optionalString (hasLibOutput && ! enableSeparateDocOutput) '' - # If we don't have separate docs, we have to patch out the ref to - # docs in package conf. This will likely break Haddock - # cross-package links but is necessary to break store cycle… - find ${libDir}/ -type f -name '*.conf' -exec \ - remove-references-to -t ${docDir} "{}" \; - ''} - - ${optionalString (hasLibOutput && ! enableSeparateDataOutput) '' - # Just like for doc output path in $out potentially landing in - # *.conf, we have to also remove the data directory so that it - # doesn't appear under data-dir field creating a cycle. - find ${libDir}/ -type f -exec echo Removing ${dataDir} refs from "{}" \; - find ${libDir}/ -type f -exec \ - remove-references-to -t ${dataDir} "{}" \; - ''} - - ${optionalString enableSeparateDataOutput "mkdir -p ${dataDir}"} - ${optionalString enableSeparateBinOutput "mkdir -p ${binDir} ${libexecDir}"} - ${optionalString enableSeparateEtcOutput "mkdir -p ${etcDir}"} + ${optionalString enableSeparateDataOutput "mkdir -p $data"} runHook postInstall ''; @@ -435,7 +358,7 @@ stdenv.mkDerivation ({ # the directory containing the haddock documentation. # `null' if no haddock documentation was built. # TODO: fetch the self from the fixpoint instead - haddockDir = self: if doHaddock then "${docDir}/html" else null; + haddockDir = self: if doHaddock then "${docdir self.doc}/html" else null; env = stdenv.mkDerivation { name = "interactive-${pname}-${version}-environment"; @@ -463,7 +386,6 @@ stdenv.mkDerivation ({ // optionalAttrs (description != "") { inherit description; } // optionalAttrs (maintainers != []) { inherit maintainers; } // optionalAttrs (hydraPlatforms != platforms) { inherit hydraPlatforms; } - // optionalAttrs (outputsToInstall != []) { inherit outputsToInstall; } ; } diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index b542a29c8299..96520dce2b2d 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -147,8 +147,4 @@ rec { overrideSrc = drv: { src, version ? drv.version }: overrideCabal drv (_: { inherit src version; editedCabalFile = null; }); - hasNoBinOutput = drv: overrideCabal drv (drv: { enableSeparateBinOutput = false; }); - - installOutputs = drv: outputs: overrideCabal drv - (drv: { outputsToInstall = outputs; }); } diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index cceaa360105c..61043252155e 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -44,7 +44,6 @@ let isLibrary = false; doHaddock = false; hyperlinkSource = false; # Avoid depending on hscolour for this build. - enableSeparateEtcOutput = false; # The flag to support this is missing in old versions of cabal. postFixup = "rm -rf $out/lib $out/share $out/nix-support"; }); cpphs = overrideCabal (self.cpphs.overrideScope (self: super: { diff --git a/pkgs/development/haskell-modules/with-packages-wrapper.nix b/pkgs/development/haskell-modules/with-packages-wrapper.nix index 1a12b2a65cd4..ac484b3c1124 100644 --- a/pkgs/development/haskell-modules/with-packages-wrapper.nix +++ b/pkgs/development/haskell-modules/with-packages-wrapper.nix @@ -43,7 +43,7 @@ let libDir = if isHaLVM then "$out/lib/HaLVM-${ghc.version}" else "$out/lib/${ghcCommand}-${ghc.version}"; docDir = "$out/share/doc/ghc/html"; packageCfgDir = "${libDir}/package.conf.d"; - paths = map lib.getLib (lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages)); + paths = lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages); hasLibraries = lib.any (x: x.isHaskellLibrary) paths; # CLang is needed on Darwin for -fllvm to work: # https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/code-generators.html diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8439f4237a35..7b29f4f9fc1d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -830,10 +830,10 @@ with pkgs; enableSharedExecutables = false; executableToolDepends = [ makeWrapper ]; postInstall = '' - exe=$libexec/bin/${drv.pname}-${drv.version}/${drv.pname} - install -D $bin/bin/${drv.pname} $exe - rm -rf $bin/bin $out/lib $out/share - makeWrapper $exe $bin/bin/${drv.pname} \ + exe=$out/libexec/${drv.pname}-${drv.version}/${drv.pname} + install -D $out/bin/${drv.pname} $exe + rm -rf $out/{bin,lib,share} + makeWrapper $exe $out/bin/${drv.pname} \ --prefix PATH ":" "${nix}/bin" \ --prefix PATH ":" "${nix-prefetch-scripts}/bin" mkdir -p $out/share/{bash-completion/completions,zsh/vendor-completions,fish/completions} @@ -847,7 +847,7 @@ with pkgs; executableToolDepends = [ makeWrapper ]; postInstall = '' wrapProgram $out/bin/stack2nix \ - ${lib.makeBinPath [ git cabal2nix cabal-install stack ]} + --prefix PATH ":" "${git}/bin:${cabal2nix}/bin:${cabal-install}/bin:${stack}/bin" ''; });