From e559fa19f319c0208fc27261faa479a8abec2d00 Mon Sep 17 00:00:00 2001 From: Yuri Aisaka Date: Fri, 9 Mar 2018 22:32:42 +0900 Subject: [PATCH] fix compilation on gcc7 --- .../libraries/science/math/caffe2/default.nix | 8 +++- .../math/caffe2/fix_compilation_on_gcc7.patch | 46 +++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/science/math/caffe2/fix_compilation_on_gcc7.patch diff --git a/pkgs/development/libraries/science/math/caffe2/default.nix b/pkgs/development/libraries/science/math/caffe2/default.nix index b055acba9f1..af7078599db 100644 --- a/pkgs/development/libraries/science/math/caffe2/default.nix +++ b/pkgs/development/libraries/science/math/caffe2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, config, fetchFromGitHub +{ stdenv, lib, config, fetchFromGitHub, fetchpatch , cmake , glog, google-gflags, gtest , protobuf, snappy @@ -56,6 +56,8 @@ let }; dst = "pybind11"; }; + + ccVersion = (builtins.parseDrvName stdenv.cc.name).version; in stdenv.mkDerivation rec { @@ -84,7 +86,9 @@ stdenv.mkDerivation rec { ; propagatedBuildInputs = [ numpy future six python-protobuf pydot ]; - patches = lib.optional stdenv.cc.isClang [ ./update_clang_cvtsh_bugfix.patch ]; + patches = lib.optional (stdenv.cc.isGNU && lib.versionAtLeast ccVersion "7.0.0") [ + ./fix_compilation_on_gcc7.patch + ] ++ lib.optional stdenv.cc.isClang [ ./update_clang_cvtsh_bugfix.patch ]; cmakeFlags = [ ''-DBUILD_TEST=OFF'' ''-DBUILD_PYTHON=ON'' diff --git a/pkgs/development/libraries/science/math/caffe2/fix_compilation_on_gcc7.patch b/pkgs/development/libraries/science/math/caffe2/fix_compilation_on_gcc7.patch new file mode 100644 index 00000000000..f319f20233a --- /dev/null +++ b/pkgs/development/libraries/science/math/caffe2/fix_compilation_on_gcc7.patch @@ -0,0 +1,46 @@ +diff --git a/caffe2/operators/recurrent_network_op.cc b/caffe2/operators/recurrent_network_op.cc +index dd4fded..5995e8a 100644 +--- a/caffe2/operators/recurrent_network_op.cc ++++ b/caffe2/operators/recurrent_network_op.cc +@@ -1,4 +1,4 @@ +-#include "recurrent_network_op.h" ++#include "caffe2/operators/recurrent_network_op.h" + #include "caffe2/core/workspace.h" + + namespace caffe2 { +diff --git a/caffe2/operators/recurrent_network_op.h b/caffe2/operators/recurrent_network_op.h +index 55328e5..ea898bc 100644 +--- a/caffe2/operators/recurrent_network_op.h ++++ b/caffe2/operators/recurrent_network_op.h +@@ -762,8 +762,8 @@ class AccumulateInputGradientOp : public Operator { + USE_OPERATOR_CONTEXT_FUNCTIONS; + + bool RunOnDevice() override { +- const auto t = +- OperatorBase::Input>(0).template data()[0]; ++ const auto& t0 = OperatorBase::Input>(0); ++ const auto t = t0.template data()[0]; + auto& og = Input(1); + auto* g = Output(0); + +diff --git a/caffe2/queue/queue_ops.h b/caffe2/queue/queue_ops.h +index f2c0a33..642343f 100644 +--- a/caffe2/queue/queue_ops.h ++++ b/caffe2/queue/queue_ops.h +@@ -17,13 +17,10 @@ class CreateBlobsQueueOp final : public Operator { + name(operator_def.output().Get(0)) {} + + bool RunOnDevice() override { +- const auto capacity = +- OperatorBase::template GetSingleArgument("capacity", 1); +- const auto numBlobs = +- OperatorBase::template GetSingleArgument("num_blobs", 1); ++ const auto capacity = GetSingleArgument("capacity", 1); ++ const auto numBlobs = GetSingleArgument("num_blobs", 1); + const auto enforceUniqueName = +- OperatorBase::template GetSingleArgument( +- "enforce_unique_name", false); ++ GetSingleArgument("enforce_unique_name", false); + const auto fieldNames = + OperatorBase::template GetRepeatedArgument("field_names"); + CAFFE_ENFORCE_EQ(this->OutputSize(), 1);