on iko/ghcjs-patch-master help sign in
Add revision to hackage-package. Default to newest (#933)

Fixes #903 by choosing the newest instead of oldest revision, but not #932.

commit401c1d7cc26314e75ae557a701577ad49999d8ea authorHamish Mackenzie <Hamish.Mackenzie@iohk.io> dateThu 19 Nov 2020, 21:40 (6 years ago) parent31029c1
1 file changed+18−9
overlays/haskell.nix+18−9
overlays/haskell.nix+18−9
@@ -460,20 +460,29 @@ final: prev: {
460460 { name
461461 , compiler-nix-name
462462 , version
463+ , revision ? "default"
463464 , ... }@args':
464465 let args = { caller = "hackage-project"; } // args';
465466 tarball = final.pkgs.fetchurl {
466− url = "mirror://hackage/${name}-${version}.tar.gz";
467− inherit (hackage.${name}.${version}) sha256; };
468− in let src = final.buildPackages.pkgs.runCommand "${name}-${version}-src" { } ''
469− tmp=$(mktemp -d)
470− cd $tmp
471− tar xzf ${tarball}
472− mv "${name}-${version}" $out
473− '';
467+ url = "mirror://hackage/${name}-${version}.tar.gz";
468+ inherit (hackage.${name}.${version}) sha256; };
469+ rev = hackage.${name}.${version}.revisions.${revision};
470+ cabalFile = final.pkgs.fetchurl {
471+ url = "https://hackage.haskell.org/package/${name}-${version}/revision/${toString rev.revNum}.cabal";
472+ inherit (rev) sha256;
473+ };
474+ revSuffix = final.lib.optionalString (rev.revNum > 0) "-r${toString rev.revNum}";
475+ in let src = final.buildPackages.pkgs.runCommand "${name}-${version}${revSuffix}-src" { } (''
476+ tmp=$(mktemp -d)
477+ cd $tmp
478+ tar xzf ${tarball}
479+ mv "${name}-${version}" $out
480+ '' + final.lib.optionalString (rev.revNum > 0) ''
481+ cp ${cabalFile} $out/${name}.cabal
482+ '');
474483 in cabalProject' (
475484 (final.haskell-nix.hackageQuirks { inherit name version; }) //
476− builtins.removeAttrs args [ "version" ] // { inherit src; });
485+ builtins.removeAttrs args [ "version" "revision" ] // { inherit src; });
477486
478487 # This function is like `cabalProject` but it makes the plan-nix available
479488 # separately from the hsPkgs. The advantage is that the you can get the