nixpkgs/pkgs/development/haskell-modules/configuration-tensorflow.nix
Matthieu Coudron 11e2009821 haskellPackages.tensorflow-mnist-input-data: fetch
Prefetch data so that the package doesn't try to connect to the internet.
2018-09-06 00:11:02 +09:00

114 lines
3.9 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ pkgs, haskellLib }:
with haskellLib;
self: super:
let
tensorflow-haskell = pkgs.fetchFromGitHub {
owner = "tensorflow";
repo = "haskell";
rev = "85bf0bb12cecfcdfcf31dea43b67cbe44576f685";
sha256 = "1xbwc8y4a7n2163g746dpyh1q86rbxaw3d41kcy1mbhvmfqq56x7";
fetchSubmodules = true;
};
setSourceRoot = dir: drv: drv.overrideAttrs (_oldAttrs: {sourceRoot = "source/${dir}";});
proto-lens = self.proto-lens_0_2_2_0;
proto-lens-protoc = self.proto-lens-protoc_0_2_2_3;
proto-lens-protobuf-types = self.proto-lens-protobuf-types_0_2_2_0;
mainland-pretty = self.mainland-pretty_0_6_2;
in
{
proto-lens_0_2_2_0 = appendPatch super.proto-lens_0_2_2_0 ./patches/proto-lens-0.2.2.0.patch;
proto-lens-descriptors = doJailbreak (super.proto-lens-descriptors.override {
inherit proto-lens;
lens-labels = self.lens-labels_0_1_0_2;
});
proto-lens-protoc_0_2_2_3 = appendPatch (addBuildDepend (super.proto-lens-protoc_0_2_2_3.override {
inherit proto-lens;
haskell-src-exts = self.haskell-src-exts_1_19_1;
}) self.semigroups) ./patches/proto-lens-protoc-0.2.2.3.patch;
proto-lens-protobuf-types_0_2_2_0 = doJailbreak (super.proto-lens-protobuf-types_0_2_2_0.override {
inherit proto-lens proto-lens-protoc;
});
lens-labels_0_1_0_2 = doJailbreak super.lens-labels_0_1_0_2;
haskell-src-exts_1_19_1 = appendPatch (doJailbreak super.haskell-src-exts_1_19_1) (
# Adapt to the SemigroupMonoid Proposal (enables building on GHC >= 8.4)
pkgs.fetchpatch {
url = https://github.com/haskell-suite/haskell-src-exts/commit/258e072fe9e37f94360b7488b58ea2832843bbb8.patch;
sha256 = "0ja6ai41v9plinlhjwja282m6ahn6mw4xi79np0jxqk83cg0z1ff";
}
);
tensorflow-proto = super.tensorflow-proto.override {
inherit proto-lens proto-lens-protoc proto-lens-protobuf-types;
};
tensorflow = super.tensorflow.override {
inherit mainland-pretty proto-lens;
};
tensorflow-core-ops = super.tensorflow-core-ops.override {
inherit mainland-pretty proto-lens;
};
tensorflow-logging = super.tensorflow-logging.override {
inherit proto-lens;
};
tensorflow-mnist = super.tensorflow-mnist.override {
inherit proto-lens;
};
tensorflow-mnist-input-data = setSourceRoot "tensorflow-mnist-input-data" (super.callPackage (
{ mkDerivation, base, bytestring, Cabal, cryptonite, directory
, filepath, HTTP, network-uri, stdenv
}:
let
urlPrefix = "http://yann.lecun.com/exdb/mnist/";
# File names relative to 'urlPrefix' and their sha256.
fileInfos = [
[ "train-images-idx3-ubyte.gz"
"440fcabf73cc546fa21475e81ea370265605f56be210a4024d2ca8f203523609"
]
[ "train-labels-idx1-ubyte.gz"
"3552534a0a558bbed6aed32b30c495cca23d567ec52cac8be1a0730e8010255c"
]
[ "t10k-images-idx3-ubyte.gz"
"8d422c7b0a1c1c79245a5bcf07fe86e33eeafee792b84584aec276f5a2dbc4e6"
]
[ "t10k-labels-idx1-ubyte.gz"
"f7ae60f92e00ec6debd23a6088c31dbd2371eca3ffa0defaefb259924204aec6"
]
];
downloads = map (x: pkgs.fetchurl { url = urlPrefix + builtins.head x; sha256= builtins.tail x;}) fileInfos;
in
mkDerivation {
pname = "tensorflow-mnist-input-data";
version = "0.1.0.0";
src = tensorflow-haskell;
enableSeparateDataOutput = true;
setupHaskellDepends = [
base bytestring Cabal cryptonite directory filepath HTTP
network-uri
];
preConfigure = pkgs.lib.strings.concatStringsSep "\n" (
map (x: "cp ${x} data/$(stripHash ${x})") downloads
);
libraryHaskellDepends = [ base ];
homepage = "https://github.com/tensorflow/haskell#readme";
description = "Downloader of input data for training MNIST";
license = stdenv.lib.licenses.asl20;
}
) {});
tensorflow-opgen = super.tensorflow-opgen.override {
inherit mainland-pretty proto-lens;
};
tensorflow-ops = super.tensorflow-ops.override {
inherit proto-lens;
};
}