forked from mirrors/nixpkgs
python3Packages.tensorflow: switched to Nix-provided protobuf. (#150887)
This prevents conflicts with other Python packages that also use protobuf, see e.g. #150765.
This commit is contained in:
parent
79086069e6
commit
487bb1b1e2
|
@ -6,13 +6,13 @@
|
||||||
, numpy, tensorflow-tensorboard, absl-py
|
, numpy, tensorflow-tensorboard, absl-py
|
||||||
, setuptools, wheel, keras, keras-preprocessing, google-pasta
|
, setuptools, wheel, keras, keras-preprocessing, google-pasta
|
||||||
, opt-einsum, astunparse, h5py
|
, opt-einsum, astunparse, h5py
|
||||||
, termcolor, grpcio, six, wrapt, protobuf, tensorflow-estimator
|
, termcolor, grpcio, six, wrapt, protobuf-python, tensorflow-estimator
|
||||||
, dill, flatbuffers-python, tblib, typing-extensions
|
, dill, flatbuffers-python, tblib, typing-extensions
|
||||||
# Common deps
|
# Common deps
|
||||||
, git, pybind11, which, binutils, glibcLocales, cython, perl
|
, git, pybind11, which, binutils, glibcLocales, cython, perl
|
||||||
# Common libraries
|
# Common libraries
|
||||||
, jemalloc, mpi, gast, grpc, sqlite, boringssl, jsoncpp
|
, jemalloc, mpi, gast, grpc, sqlite, boringssl, jsoncpp
|
||||||
, curl, snappy, flatbuffers-core, lmdb-core, icu, double-conversion, libpng, libjpeg_turbo, giflib
|
, curl, snappy, flatbuffers-core, lmdb-core, icu, double-conversion, libpng, libjpeg_turbo, giflib, protobuf-core
|
||||||
# Upsteam by default includes cuda support since tensorflow 1.15. We could do
|
# Upsteam by default includes cuda support since tensorflow 1.15. We could do
|
||||||
# that in nix as well. It would make some things easier and less confusing, but
|
# that in nix as well. It would make some things easier and less confusing, but
|
||||||
# it would also make the default tensorflow package unfree. See
|
# it would also make the default tensorflow package unfree. See
|
||||||
|
@ -90,7 +90,7 @@ let
|
||||||
keras-preprocessing
|
keras-preprocessing
|
||||||
numpy
|
numpy
|
||||||
opt-einsum
|
opt-einsum
|
||||||
protobuf
|
protobuf-python
|
||||||
setuptools
|
setuptools
|
||||||
six
|
six
|
||||||
tblib
|
tblib
|
||||||
|
@ -188,11 +188,16 @@ let
|
||||||
sha256 = "sha256-n7jRDPeXsyq4pEWSWmOCas4c8VsArIKlCuwvSU/Ro/c=";
|
sha256 = "sha256-n7jRDPeXsyq4pEWSWmOCas4c8VsArIKlCuwvSU/Ro/c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Patch the sources to compile with protobuf >= 3.16.
|
||||||
|
./system-protobuf.patch
|
||||||
|
];
|
||||||
|
|
||||||
# On update, it can be useful to steal the changes from gentoo
|
# On update, it can be useful to steal the changes from gentoo
|
||||||
# https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
|
# https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
which pythonEnv cython perl
|
which pythonEnv cython perl protobuf-core
|
||||||
] ++ lib.optional cudaSupport addOpenGLRunpath;
|
] ++ lib.optional cudaSupport addOpenGLRunpath;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -241,12 +246,7 @@ let
|
||||||
# "com_github_googleapis_googleapis"
|
# "com_github_googleapis_googleapis"
|
||||||
# "com_github_googlecloudplatform_google_cloud_cpp"
|
# "com_github_googlecloudplatform_google_cloud_cpp"
|
||||||
"com_github_grpc_grpc"
|
"com_github_grpc_grpc"
|
||||||
# Multiple issues with custom protobuf.
|
"com_google_protobuf"
|
||||||
# First `com_github_googleapis` fails to configure. Can be worked around by disabling `com_github_googleapis`
|
|
||||||
# and related functionality, but then the next error is about "dangling symbolic link", and in general
|
|
||||||
# looks like that's only the beginning: see
|
|
||||||
# https://stackoverflow.com/questions/55578884/how-to-build-tensorflow-1-13-1-with-custom-protobuf
|
|
||||||
# "com_google_protobuf"
|
|
||||||
# Fails with the error: external/org_tensorflow/tensorflow/core/profiler/utils/tf_op_utils.cc:46:49: error: no matching function for call to 're2::RE2::FullMatch(absl::lts_2020_02_25::string_view&, re2::RE2&)'
|
# Fails with the error: external/org_tensorflow/tensorflow/core/profiler/utils/tf_op_utils.cc:46:49: error: no matching function for call to 're2::RE2::FullMatch(absl::lts_2020_02_25::string_view&, re2::RE2&)'
|
||||||
# "com_googlesource_code_re2"
|
# "com_googlesource_code_re2"
|
||||||
"curl"
|
"curl"
|
||||||
|
@ -281,6 +281,11 @@ let
|
||||||
|
|
||||||
INCLUDEDIR = "${includes_joined}/include";
|
INCLUDEDIR = "${includes_joined}/include";
|
||||||
|
|
||||||
|
# This is needed for the Nix-provided protobuf dependency to work,
|
||||||
|
# as otherwise the rule `link_proto_files` tries to create the links
|
||||||
|
# to `/usr/include/...` which results in build failures.
|
||||||
|
PROTOBUF_INCLUDE_PATH = "${protobuf-core}/include";
|
||||||
|
|
||||||
PYTHON_BIN_PATH = pythonEnv.interpreter;
|
PYTHON_BIN_PATH = pythonEnv.interpreter;
|
||||||
|
|
||||||
TF_NEED_GCP = true;
|
TF_NEED_GCP = true;
|
||||||
|
@ -356,12 +361,12 @@ let
|
||||||
fetchAttrs = {
|
fetchAttrs = {
|
||||||
# cudaSupport causes fetch of ncclArchive, resulting in different hashes
|
# cudaSupport causes fetch of ncclArchive, resulting in different hashes
|
||||||
sha256 = if cudaSupport then
|
sha256 = if cudaSupport then
|
||||||
"sha256-GIBs1BAUuefwlavu7dr9rFb4n1A3uwnvvCAvsBnSSqQ="
|
"sha256-+szc2mRoImwijzbj3nw6HmZp3DeRjjPRU5yC+5AEbkg="
|
||||||
else
|
else
|
||||||
if stdenv.isDarwin then
|
if stdenv.isDarwin then
|
||||||
"sha256-156eOnnjk+wzIiGLd6k/+SAgm4AyImsV/qBsHFlxe+k="
|
"sha256-+bwIzp6t7gRJPcI8B5oyuf9z0AjCAyggUR7x+vv5kFs="
|
||||||
else
|
else
|
||||||
"sha256-Fj/wWapsre55VctJ1k1kcYKAn3uDCMPN5rVX8y76ypM=";
|
"sha256-5yOYmeGpJq4Chi55H7iblxyRXVktgnePtpYTPvBs538=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
@ -454,7 +459,7 @@ in buildPythonPackage {
|
||||||
keras-preprocessing
|
keras-preprocessing
|
||||||
numpy
|
numpy
|
||||||
opt-einsum
|
opt-einsum
|
||||||
protobuf
|
protobuf-python
|
||||||
six
|
six
|
||||||
tblib
|
tblib
|
||||||
tensorflow-estimator
|
tensorflow-estimator
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/tensorflow/core/kernels/example_parsing_ops.cc b/tensorflow/core/kernels/example_parsing_ops.cc
|
||||||
|
index a1265cfb5c6..ada919bbd7b 100644
|
||||||
|
--- a/tensorflow/core/kernels/example_parsing_ops.cc
|
||||||
|
+++ b/tensorflow/core/kernels/example_parsing_ops.cc
|
||||||
|
@@ -1218,7 +1218,7 @@ class DecodeJSONExampleOp : public OpKernel {
|
||||||
|
resolver_.get(), "type.googleapis.com/tensorflow.Example", &in, &out);
|
||||||
|
OP_REQUIRES(ctx, status.ok(),
|
||||||
|
errors::InvalidArgument("Error while parsing JSON: ",
|
||||||
|
- string(status.error_message())));
|
||||||
|
+ string(status.message())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -9392,6 +9392,8 @@ in {
|
||||||
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
|
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
|
||||||
flatbuffers-core = pkgs.flatbuffers;
|
flatbuffers-core = pkgs.flatbuffers;
|
||||||
flatbuffers-python = self.flatbuffers;
|
flatbuffers-python = self.flatbuffers;
|
||||||
|
protobuf-core = pkgs.protobuf;
|
||||||
|
protobuf-python = self.protobuf;
|
||||||
lmdb-core = pkgs.lmdb;
|
lmdb-core = pkgs.lmdb;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue