|
1 | 1 | self: super:
|
2 | 2 | let
|
3 |
| - exactDeps = ghc: self.runCommand "ghc-exactdep-${ghc.version}" { nativeBuildInputs = [ ghc ]; } '' |
4 |
| - for P in $(${ghc.targetPrefix}ghc-pkg list --simple-output | sed 's/-[0-9][0-9.]*//g'); do |
5 |
| - mkdir -p $out/$P |
6 |
| - touch $out/$P/configure-flags |
7 |
| - touch $out/$P/cabal.config |
8 |
| -
|
9 |
| - if id=$(${ghc.targetPrefix}ghc-pkg field $P id --simple-output); then |
10 |
| - echo "--dependency=$P=$id" >> $out/$P/configure-flags |
11 |
| - elif id=$(${ghc.targetPrefix}ghc-pkg field "z-$P-z-*" id --simple-output); then |
12 |
| - name=$(${ghc.targetPrefix}ghc-pkg field "z-$P-z-*" name --simple-output) |
| 3 | + installDeps = targetPrefix: '' |
| 4 | + for P in $($out/bin/${targetPrefix}ghc-pkg list --simple-output | sed 's/-[0-9][0-9.]*//g'); do |
| 5 | + mkdir -p $out/exactDeps/$P |
| 6 | + touch $out/exactDeps/$P/configure-flags |
| 7 | + touch $out/exactDeps/$P/cabal.config |
| 8 | +
|
| 9 | + if id=$($out/bin/${targetPrefix}ghc-pkg field $P id --simple-output); then |
| 10 | + echo "--dependency=$P=$id" >> $out/exactDeps/$P/configure-flags |
| 11 | + elif id=$($out/bin/${targetPrefix}ghc-pkg field "z-$P-z-*" id --simple-output); then |
| 12 | + name=$($out/bin/${targetPrefix}ghc-pkg field "z-$P-z-*" name --simple-output) |
13 | 13 | # so we are dealing with a sublib. As we build sublibs separately, the above
|
14 | 14 | # query should be safe.
|
15 |
| - echo "--dependency=''${name#z-$P-z-}=$id" >> $out/$P/configure-flags |
| 15 | + echo "--dependency=''${name#z-$P-z-}=$id" >> $out/exactDeps/$P/configure-flags |
16 | 16 | fi
|
17 |
| - if ver=$(${ghc.targetPrefix}ghc-pkg field $P version --simple-output); then |
18 |
| - echo "constraint: $P == $ver" >> $out/$P/cabal.config |
19 |
| - echo "constraint: $P installed" >> $out/$P/cabal.config |
| 17 | + if ver=$($out/bin/${targetPrefix}ghc-pkg field $P version --simple-output); then |
| 18 | + echo "constraint: $P == $ver" >> $out/exactDeps/$P/cabal.config |
| 19 | + echo "constraint: $P installed" >> $out/exactDeps/$P/cabal.config |
20 | 20 | fi
|
21 | 21 | done
|
22 |
| - ''; |
23 | 22 |
|
24 |
| - envDeps = ghc: self.runCommand "ghc-envdep-${ghc.version}" { nativeBuildInputs = [ ghc ]; } '' |
25 |
| - mkdir -p $out |
26 |
| - for P in $(${ghc.targetPrefix}ghc-pkg list --simple-output | sed 's/-[0-9.]*//g'); do |
27 |
| - touch $out/$P |
28 |
| - if id=$(${ghc.targetPrefix}ghc-pkg field $P id --simple-output); then |
29 |
| - echo "package-id $id" >> $out/$P |
| 23 | + mkdir -p $out/evalDeps |
| 24 | + for P in $($out/bin/${targetPrefix}ghc-pkg list --simple-output | sed 's/-[0-9.]*//g'); do |
| 25 | + touch $out/evalDeps/$P |
| 26 | + if id=$($out/bin/${targetPrefix}ghc-pkg field $P id --simple-output); then |
| 27 | + echo "package-id $id" >> $out/evalDeps/$P |
30 | 28 | fi
|
31 | 29 | done
|
32 | 30 | '';
|
|
105 | 103 | ghc844 = self.callPackage ../compiler/ghc {
|
106 | 104 | extra-passthru = { buildGHC = self.buildPackages.haskell-nix.compiler.ghc844; };
|
107 | 105 |
|
108 |
| - inherit bootPkgs sphinx exactDeps envDeps; |
| 106 | + inherit bootPkgs sphinx installDeps; |
109 | 107 |
|
110 | 108 | buildLlvmPackages = self.buildPackages.llvmPackages_5;
|
111 | 109 | llvmPackages = self.llvmPackages_5;
|
|
123 | 121 | ghc861 = self.callPackage ../compiler/ghc {
|
124 | 122 | extra-passthru = { buildGHC = self.buildPackages.haskell-nix.compiler.ghc861; };
|
125 | 123 |
|
126 |
| - inherit bootPkgs sphinx exactDeps envDeps; |
| 124 | + inherit bootPkgs sphinx installDeps; |
127 | 125 |
|
128 | 126 | buildLlvmPackages = self.buildPackages.llvmPackages_5;
|
129 | 127 | llvmPackages = self.llvmPackages_5;
|
|
139 | 137 | ghc862 = self.callPackage ../compiler/ghc {
|
140 | 138 | extra-passthru = { buildGHC = self.buildPackages.haskell-nix.compiler.ghc862; };
|
141 | 139 |
|
142 |
| - inherit bootPkgs sphinx exactDeps envDeps; |
| 140 | + inherit bootPkgs sphinx installDeps; |
143 | 141 |
|
144 | 142 | buildLlvmPackages = self.buildPackages.llvmPackages_5;
|
145 | 143 | llvmPackages = self.llvmPackages_5;
|
|
156 | 154 | ghc863 = self.callPackage ../compiler/ghc {
|
157 | 155 | extra-passthru = { buildGHC = self.buildPackages.haskell-nix.compiler.ghc863; };
|
158 | 156 |
|
159 |
| - inherit bootPkgs sphinx exactDeps envDeps; |
| 157 | + inherit bootPkgs sphinx installDeps; |
160 | 158 |
|
161 | 159 | buildLlvmPackages = self.buildPackages.llvmPackages_5;
|
162 | 160 | llvmPackages = self.llvmPackages_5;
|
|
173 | 171 | ghc864 = self.callPackage ../compiler/ghc {
|
174 | 172 | extra-passthru = { buildGHC = self.buildPackages.haskell-nix.compiler.ghc864; };
|
175 | 173 |
|
176 |
| - inherit bootPkgs sphinx exactDeps envDeps; |
| 174 | + inherit bootPkgs sphinx installDeps; |
177 | 175 |
|
178 | 176 | buildLlvmPackages = self.buildPackages.llvmPackages_5;
|
179 | 177 | llvmPackages = self.llvmPackages_5;
|
|
190 | 188 | ghc865 = self.callPackage ../compiler/ghc {
|
191 | 189 | extra-passthru = { buildGHC = self.buildPackages.haskell-nix.compiler.ghc865; };
|
192 | 190 |
|
193 |
| - inherit bootPkgs sphinx exactDeps envDeps; |
| 191 | + inherit bootPkgs sphinx installDeps; |
194 | 192 |
|
195 | 193 | buildLlvmPackages = self.buildPackages.llvmPackages_5;
|
196 | 194 | llvmPackages = self.llvmPackages_5;
|
@@ -264,10 +262,10 @@ in {
|
264 | 262 | # We mark these compilers as boot compilers to make sure they are only used
|
265 | 263 | # where a boot compiler is expected.
|
266 | 264 | compiler = builtins.mapAttrs (_: v:
|
267 |
| - v // { |
| 265 | + v.overrideAttrs (drv: { |
| 266 | + postInstall = (drv.postInstall or "") + installDeps ""; |
| 267 | + }) // { |
268 | 268 | isHaskellNixBootCompiler = true;
|
269 |
| - exactDeps = exactDeps v; |
270 |
| - envDeps = envDeps v; |
271 | 269 | }
|
272 | 270 | )
|
273 | 271 | (import ../compiler/old-ghc-nix { pkgs = self; });
|
|
0 commit comments