Skip to content

Commit fac642f

Browse files
committed
Suggestion: wire parts of the builder together in the same place
1 parent dee3423 commit fac642f

File tree

3 files changed

+38
-43
lines changed

3 files changed

+38
-43
lines changed

builder/default.nix

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ let
66
inherit ghc haskellLib makeConfigFiles ghcForComponent hsPkgs;
77
};
88

9+
setup-builder = haskellLib.weakCallPackage pkgs ./setup-builder.nix {
10+
ghc = buildGHC;
11+
hsPkgs = hsPkgs.buildPackages;
12+
inherit haskellLib nonReinstallablePkgs makeConfigFiles;
13+
};
14+
915
# Wraps GHC to provide dependencies in a way that works for both the
1016
# component builder and for nix-shells.
1117
ghcForComponent = import ./ghc-for-component-wrapper.nix {
@@ -31,7 +37,7 @@ in {
3137
# Build a Haskell package from its config.
3238
# TODO: this pkgs is the adjusted pkgs, but pkgs.pkgs is unadjusted
3339
build-package = haskellLib.weakCallPackage pkgs ./hspkg-builder.nix {
34-
inherit haskellLib ghc buildGHC comp-builder nonReinstallablePkgs hsPkgs;
40+
inherit haskellLib ghc buildGHC comp-builder setup-builder;
3541
};
3642

3743
# Same as haskellPackages.shellFor in nixpkgs.

builder/hspkg-builder.nix

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{ pkgs, buildPackages, stdenv, lib, haskellLib, ghc, buildGHC, fetchurl, runCommand, pkgconfig, comp-builder, nonReinstallablePkgs, hsPkgs }:
1+
{ pkgs, buildPackages, stdenv, lib, haskellLib, ghc, buildGHC, fetchurl, runCommand, comp-builder, setup-builder }:
22

33

44
{ flags
@@ -38,13 +38,9 @@ let
3838

3939
setup = if package.buildType == "Simple"
4040
then defaultSetup
41-
else haskellLib.weakCallPackage pkgs ./setup-builder.nix {
42-
ghc = buildGHC;
41+
else setup-builder {
4342
setup-depends = package.setup-depends;
44-
hsPkgs = hsPkgs.buildPackages;
45-
inherit haskellLib nonReinstallablePkgs
46-
package name src flags pkgconfig
47-
;
43+
inherit package name src flags;
4844
};
4945

5046
buildComp = componentId: component: comp-builder {

builder/setup-builder.nix

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
1-
{ stdenv, buildPackages, ghc, lib, pkgconfig, writeText, runCommand
2-
, haskellLib, nonReinstallablePkgs, hsPkgs, setup-depends
3-
, package, name, src, flags }:
1+
{ stdenv, buildPackages, haskellLib, ghc, nonReinstallablePkgs, hsPkgs, makeConfigFiles }:
42

53
let
64
fullName = "${name}-setup";
75

86
includeGhcPackage = lib.any (p: p.identifier.name == "ghc") setup-depends;
97

10-
makeConfigFiles = haskellLib.weakCallPackage buildPackages ./make-config-files.nix {
11-
inherit ghc haskellLib nonReinstallablePkgs;
12-
};
13-
148
configFiles = makeConfigFiles {
159
inherit (package) identifier;
1610
inherit fullName flags;
@@ -22,31 +16,30 @@ let
2216
};
2317
};
2418

25-
in stdenv.lib.fix (drv:
26-
27-
stdenv.mkDerivation {
28-
name = "${fullName}";
29-
inherit src;
30-
nativeBuildInputs = [ghc];
31-
32-
CABAL_CONFIG = configFiles + /cabal.config;
33-
phases = ["unpackPhase" "buildPhase" "installPhase"];
34-
buildPhase = ''
35-
for f in Setup.hs Setup.lhs; do
36-
if [ -f $f ]; then
37-
echo Compiling package $f
38-
ghc $f '' + (if includeGhcPackage then "-package ghc " else "")
39-
+ ''-package-db ${configFiles}/package.conf.d --make -o ./Setup
40-
setup=$(pwd)/Setup
41-
fi
42-
done
43-
[ -f ./Setup ] || (echo Failed to build Setup && exit 1)
44-
'';
45-
46-
installPhase = ''
47-
mkdir -p $out/bin
48-
install ./Setup $out/bin/Setup
49-
'';
50-
})
51-
52-
19+
in
20+
{ setup-depends, package, name, src, flags }:
21+
stdenv.lib.fix (drv:
22+
stdenv.mkDerivation {
23+
name = "${fullName}";
24+
inherit src;
25+
nativeBuildInputs = [ghc];
26+
27+
CABAL_CONFIG = configFiles + /cabal.config;
28+
phases = ["unpackPhase" "buildPhase" "installPhase"];
29+
buildPhase = ''
30+
for f in Setup.hs Setup.lhs; do
31+
if [ -f $f ]; then
32+
echo Compiling package $f
33+
ghc $f '' + (if includeGhcPackage then "-package ghc " else "")
34+
+ ''-package-db ${configFiles}/package.conf.d --make -o ./Setup
35+
setup=$(pwd)/Setup
36+
fi
37+
done
38+
[ -f ./Setup ] || (echo Failed to build Setup && exit 1)
39+
'';
40+
41+
installPhase = ''
42+
mkdir -p $out/bin
43+
install ./Setup $out/bin/Setup
44+
'';
45+
})

0 commit comments

Comments
 (0)