Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3a4ffdd38b56
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 72ad1ebda9e0
Choose a head ref
  • 2 commits
  • 5 files changed
  • 1 contributor

Commits on Mar 29, 2019

  1. haskell: allow separate bin output, disable by default

    (cherry picked from commit bd06834)
    Signed-off-by: Domen Kožar <domen@dev.si>
    domenkozar committed Mar 29, 2019

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    b19ae16 View commit details
  2. cachix: use separate bin output to prove it's useful

    Spares compilation time by not compiling the package twice.
    
    (cherry picked from commit b06201b)
    Signed-off-by: Domen Kožar <domen@dev.si>
    domenkozar committed Mar 29, 2019
    Copy the full SHA
    72ad1eb View commit details
2 changes: 2 additions & 0 deletions pkgs/development/haskell-modules/configuration-nix.nix
Original file line number Diff line number Diff line change
@@ -94,6 +94,8 @@ self: super: builtins.intersectAttrs super {
# Won't find it's header files without help.
sfml-audio = appendConfigureFlag super.sfml-audio "--extra-include-dirs=${pkgs.openal}/include/AL";

cachix = enableSeparateBinOutput super.cachix;

hzk = overrideCabal super.hzk (drv: {
preConfigure = "sed -i -e /include-dirs/d hzk.cabal";
configureFlags = "--extra-include-dirs=${pkgs.zookeeper_mt}/include/zookeeper";
20 changes: 15 additions & 5 deletions pkgs/development/haskell-modules/generic-builder.nix
Original file line number Diff line number Diff line change
@@ -73,6 +73,7 @@ in
, coreSetup ? false # Use only core packages to build Setup.hs.
, useCpphs ? false
, hardeningDisable ? stdenv.lib.optional (ghc.isHaLVM or false) "all"
, enableSeparateBinOutput ? false
, enableSeparateDataOutput ? false
, enableSeparateDocOutput ? doHaddock
, # Don't fail at configure time if there are multiple versions of the
@@ -111,6 +112,8 @@ let
# the target dir for haddock documentation
docdir = docoutput: docoutput + "/share/doc/" + pname + "-" + version;

binDir = if enableSeparateBinOutput then "$bin/bin" else "$out/bin";

newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal";
newCabalFile = fetchurl {
url = newCabalFileUrl;
@@ -143,7 +146,10 @@ let
buildFlagsString = optionalString (buildFlags != []) (" " + concatStringsSep " " buildFlags);

defaultConfigureFlags = [
"--verbose" "--prefix=$out" "--libdir=\\$prefix/lib/\\$compiler" "--libsubdir=\\$abi/\\$libname"
"--verbose"
"--prefix=$out"
"--libdir=\\$prefix/lib/\\$compiler"
"--libsubdir=\\$abi/\\$libname"
(optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}")
(optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}")
"--with-gcc=$CC" # Clang won't work without that extra information.
@@ -173,7 +179,8 @@ let
"--ghcjs"
] ++ optionals isCross ([
"--configure-option=--host=${stdenv.hostPlatform.config}"
] ++ crossCabalFlags);
] ++ crossCabalFlags
) ++ optionals enableSeparateBinOutput ["--bindir=${binDir}"];

setupCompileFlags = [
(optionalString (!coreSetup) "-${nativePackageDbFlag}=$setupPackageConfDir")
@@ -233,7 +240,10 @@ assert allPkgconfigDepends != [] -> pkgconfig != null;
stdenv.mkDerivation ({
name = "${pname}-${version}";

outputs = [ "out" ] ++ (optional enableSeparateDataOutput "data") ++ (optional enableSeparateDocOutput "doc");
outputs = [ "out" ]
++ (optional enableSeparateDataOutput "data")
++ (optional enableSeparateDocOutput "doc")
++ (optional enableSeparateBinOutput "bin");
setOutputFlags = false;

pos = builtins.unsafeGetAttrPos "pname" args;
@@ -414,7 +424,7 @@ stdenv.mkDerivation ({
find $packageConfDir -maxdepth 0 -empty -delete;
''}
${optionalString isGhcjs ''
for exeDir in "$out/bin/"*.jsexe; do
for exeDir in "${binDir}/"*.jsexe; do
exe="''${exeDir%.jsexe}"
printWords '#!${nodejs}/bin/node' > "$exe"
echo >> "$exe"
@@ -424,7 +434,7 @@ 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 "$out/bin/"* ; do
for exe in "${binDir}/"* ; do
install_name_tool -add_rpath "$out/lib/ghc-${ghc.version}/${pname}-${version}" "$exe"
done
''}
2 changes: 2 additions & 0 deletions pkgs/development/haskell-modules/lib.nix
Original file line number Diff line number Diff line change
@@ -181,6 +181,8 @@ rec {
enableStaticLibraries = drv: overrideCabal drv (drv: { enableStaticLibraries = true; });
disableStaticLibraries = drv: overrideCabal drv (drv: { enableStaticLibraries = false; });

enableSeparateBinOutput = drv: overrideCabal drv (drv: { enableSeparateBinOutput = true; });

appendPatch = drv: x: appendPatches drv [x];
appendPatches = drv: xs: overrideCabal drv (drv: { patches = (drv.patches or []) ++ xs; });

7 changes: 1 addition & 6 deletions pkgs/development/tools/cachix/default.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
{ haskellPackages, haskell }:

(haskellPackages.override {
overrides = self: super: {
cachix = haskell.lib.justStaticExecutables (super.callPackage ./cachix.nix {});
cachix-api = super.callPackage ./cachix-api.nix {};
};
}).cachix
(haskell.lib.doDistribute haskellPackages.cachix).bin
6 changes: 1 addition & 5 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
@@ -9498,11 +9498,7 @@ in

c-blosc = callPackage ../development/libraries/c-blosc { };

cachix = (callPackage ../development/tools/cachix { }).overrideAttrs (drv: {
meta = drv.meta // {
hydraPlatforms = stdenv.lib.platforms.unix;
};
});
cachix = callPackage ../development/tools/cachix { };

capnproto = callPackage ../development/libraries/capnproto { };