on iko/ghcjs-patch-master help sign in
Pin the index-state used by ghc dependencies (#264)
3984c0eHamish Mackenzie
lib/call-cabal-project-to-nix.nix+14−5
@@ -1,5 +1,6 @@
1{ dotCabal, pkgs, runCommand, nix-tools, cabal-install, ghc, hpack, symlinkJoin, cacert, index-state-hashes, haskellLib }@defaults:
1{ dotCabal, pkgs, runCommand, nix-tools, cabal-install, ghc, hpack, symlinkJoin, cacert, index-state-hashes, haskellLib }@defaults:
2+{ name ? null # optional name for better error messages
2−{ src
3+, src
3, index-state ? null
4, index-state ? null
4, index-sha256 ? null
5, index-sha256 ? null
5, cabalProject ? null
6, cabalProject ? null
@@ -47,9 +48,15 @@ let
47
48
48 index-state-found = if index-state != null
49 index-state-found = if index-state != null
49 then index-state
50 then index-state
51+ else
50− else if rawCabalProject != null
52+ let cabalProjectIndexState = if rawCabalProject != null
51− then parseIndexState rawCabalProject
53+ then parseIndexState rawCabalProject
52− else null;
54+ else null;
55+ in
56+ if cabalProjectIndexState != null
57+ then cabalProjectIndexState
58+ else builtins.trace ("Using latest index state" + (if name == null then "" else " for " + name) + "!")
59+ (pkgs.lib.last (builtins.attrNames index-state-hashes));
53
60
54 # Lookup hash for the index state we found
61 # Lookup hash for the index state we found
55 index-sha256-found = if index-sha256 != null
62 index-sha256-found = if index-sha256 != null
@@ -161,7 +168,9 @@ let
161 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
168 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
162 HOME=${dotCabal {
169 HOME=${dotCabal {
163 inherit cabal-install nix-tools;
170 inherit cabal-install nix-tools;
171+ index-state =
172+ builtins.trace ("Using index-state: ${index-state-found}" + (if name == null then "" else " for " + name))
164− index-state = index-state-found;
173+ index-state-found;
165 sha256 = index-sha256-found; }} cabal new-configure \
174 sha256 = index-sha256-found; }} cabal new-configure \
166 --with-ghc=${ghc.targetPrefix}ghc \
175 --with-ghc=${ghc.targetPrefix}ghc \
167 --with-ghc-pkg=${ghc.targetPrefix}ghc-pkg \
176 --with-ghc-pkg=${ghc.targetPrefix}ghc-pkg \
overlays/bootstrap.nix+3
@@ -269,17 +269,20 @@ self: super: rec {
269 inherit ghc;
269 inherit ghc;
270 inherit (bootstrap.haskell.packages) cabal-install nix-tools hpack;
270 inherit (bootstrap.haskell.packages) cabal-install nix-tools hpack;
271 name = "alex"; version = "3.2.4";
271 name = "alex"; version = "3.2.4";
272+ index-state = "2019-10-20T00:00:00Z";
272 }).components.exes.alex;
273 }).components.exes.alex;
273 happy = (hackage-package {
274 happy = (hackage-package {
274 inherit ghc;
275 inherit ghc;
275 inherit (bootstrap.haskell.packages) cabal-install nix-tools hpack;
276 inherit (bootstrap.haskell.packages) cabal-install nix-tools hpack;
276 name = "happy"; version = "1.19.11";
277 name = "happy"; version = "1.19.11";
278+ index-state = "2019-10-20T00:00:00Z";
277 }).components.exes.happy;
279 }).components.exes.happy;
278
280
279 hscolour = (hackage-package {
281 hscolour = (hackage-package {
280 inherit ghc;
282 inherit ghc;
281 inherit (bootstrap.haskell.packages) cabal-install nix-tools hpack;
283 inherit (bootstrap.haskell.packages) cabal-install nix-tools hpack;
282 name = "hscolour"; version = "1.24.4";
284 name = "hscolour"; version = "1.24.4";
285+ index-state = "2019-10-20T00:00:00Z";
283 }).components.exes.HsColour;
286 }).components.exes.HsColour;
284 };
287 };
285 };
288 };
overlays/ghc-packages.nix+1
@@ -82,6 +82,7 @@ in rec {
82 }) self.buildPackages.haskell.compiler;
82 }) self.buildPackages.haskell.compiler;
83
83
84 ghc-extra-packages = builtins.mapAttrs (name: proj: self.haskell-nix.cabalProject {
84 ghc-extra-packages = builtins.mapAttrs (name: proj: self.haskell-nix.cabalProject {
85+ name = "ghc-extra-packages";
85 src = proj;
86 src = proj;
86 ghc = self.buildPackages.haskell.compiler.${name};
87 ghc = self.buildPackages.haskell.compiler.${name};
87 })
88 })
overlays/haskell.nix+3−7
@@ -260,7 +260,6 @@ self: super: {
260 hackage-project =
260 hackage-project =
261 { name
261 { name
262 , version
262 , version
263− , index-state ? builtins.trace "Using latest index state!" self.lib.last (builtins.attrNames (import indexStateHashesPath))
264 , ... }@args:
263 , ... }@args:
265 let tarball = self.pkgs.fetchurl {
264 let tarball = self.pkgs.fetchurl {
266 url = "mirror://hackage/${name}-${version}.tar.gz";
265 url = "mirror://hackage/${name}-${version}.tar.gz";
@@ -271,15 +270,12 @@ self: super: {
271 tar xzf ${tarball}
270 tar xzf ${tarball}
272 mv "${name}-${version}" $out
271 mv "${name}-${version}" $out
273 '';
272 '';
274− in cabalProject (builtins.removeAttrs args [ "name" "version" ] // { inherit index-state src; });
273+ in cabalProject (builtins.removeAttrs args [ "version" ] // { inherit src; });
275
274
276 cabalProject' =
275 cabalProject' =
277− { index-state ? builtins.trace "Using latest index state!" self.lib.last (builtins.attrNames (import indexStateHashesPath))
276+ { name ? null
278 , ... }@args:
277 , ... }@args:
279− let plan = (importAndFilterProject
278+ let plan = importAndFilterProject (callCabalProjectToNix args);
280− (callCabalProjectToNix
281− (builtins.trace "Using index-state: ${index-state}"
282− (args // { inherit index-state; }))));
283 in let pkg-set = mkCabalProjectPkgSet
279 in let pkg-set = mkCabalProjectPkgSet
284 { plan-pkgs = plan.pkgs;
280 { plan-pkgs = plan.pkgs;
285 pkg-def-extras = args.pkg-def-extras or [];
281 pkg-def-extras = args.pkg-def-extras or [];