callHackage: make 'all-cabal-hashes' repository overridable

This commit changes callHackage to use a deterministic version of the Hackage
checkout from https://github.com/commercialhaskell/all-cabal-hashes by default.
This means that packages uploaded to Hackage after today will be available to
callHackage only after "pkgs/data/misc/hackage/default.nix" has been updated.

People who want the previous behavior where we always had the latest version of
Hackage available -- at the cost of frequent downloads from Github --, can add
the following override to their "~/.nixpkgs/config.nix" file:

  {
    packageOverrides = super: {
      all-cabal-hashes = builtins.fetchTarball "https://github.com/commercialhaskell/all-cabal-hashes/archive/hackage.tar.gz";
    };
  }
This commit is contained in:
Peter Simons 2016-11-01 18:29:43 +01:00
parent 0607fa1874
commit fac1168816
3 changed files with 16 additions and 11 deletions

View file

@ -0,0 +1,11 @@
{ fetchFromGitHub }:
# Use builtins.fetchTarball "https://github.com/commercialhaskell/all-cabal-hashes/archive/hackage.tar.gz"
# instead if you want the latest Hackage automatically at the price of frequent re-downloads.
fetchFromGitHub {
owner = "commercialhaskell";
repo = "all-cabal-hashes";
rev = "ee101d34ff8bd59897aa2eb0a124bcd3fb47ceec";
sha256 = "1hky0s2c1rv1srfnhbyi3ny14rnfnnp2j9fsr4ylz76xyxgjf5wm";
}

View file

@ -1,4 +1,4 @@
{ pkgs, stdenv, ghc
{ pkgs, stdenv, ghc, all-cabal-hashes
, compilerConfig ? (self: super: {})
, packageSetConfig ? (self: super: {})
, overrides ? (self: super: {})
@ -6,14 +6,6 @@
let
allCabalFiles = stdenv.mkDerivation {
name = "all-cabal-hashes-0";
buildCommand = ''
mkdir -p $out
tar -C $out --strip-components=1 -x -f ${builtins.fetchurl "https://github.com/commercialhaskell/all-cabal-hashes/archive/hackage.tar.gz"}
'';
};
inherit (stdenv.lib) fix' extends;
haskellPackages = self:
@ -69,8 +61,8 @@ let
installPhase = ''
export HOME="$TMP"
mkdir $out
hash=$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' ${allCabalFiles}/${name}/${version}/${name}.json)
cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} --sha256=$hash ${allCabalFiles}/${name}/${version}/${name}.cabal >$out/default.nix
hash=$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' ${all-cabal-hashes}/${name}/${version}/${name}.json)
cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} --sha256=$hash ${all-cabal-hashes}/${name}/${version}/${name}.cabal >$out/default.nix
'';
};

View file

@ -4821,6 +4821,8 @@ in
postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc";
});
all-cabal-hashes = callPackage ../data/misc/hackage/default.nix { };
inherit (ocamlPackages) haxe;
hxcpp = callPackage ../development/compilers/haxe/hxcpp.nix { };