commit:     7fb980be2673097805afdd00aeeb2babd46753d7
Author:     Kerin Millar <kfm <AT> plushkava <DOT> net>
AuthorDate: Tue Sep 21 06:55:42 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Sep 21 22:27:01 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7fb980be

sci-libs/tensorflow: build with -std=c++14 in 2.5.0-r1

TensorFlow is not yet compatible with the C++17 dialect. Allow it to
build with gcc:11 by appending -std=c++14 to CXXFLAGS, prior to composing
bazelrc. The flag doesn't encompass the building of the ruy library, so
this is accompanied by a patch to include the <limits> header in the one
place that ruy needs it.

Filter out the -fvtable-verify=@(std|preinit) flag, if present. While
ostensibly useful for hardening, it prevents TensorFlow from building
successfully. Note that, while the pattern is in the form of an
extglob, the accompanying shopt does _not_ need to be enabled.

Have src_install localise "l", rather than "j", because the function in
question never employs the latter.

Closes: https://bugs.gentoo.org/787938
Signed-off-by: Kerin Millar <kfm <AT> plushkava.net>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/0008-patch-ruy-for-gcc-11.patch          | 37 ++++++++++++++++++++++
 sci-libs/tensorflow/tensorflow-2.5.0-r1.ebuild     |  7 +++-
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/sci-libs/tensorflow/files/0008-patch-ruy-for-gcc-11.patch 
b/sci-libs/tensorflow/files/0008-patch-ruy-for-gcc-11.patch
new file mode 100644
index 00000000000..3bb2cf2e1cb
--- /dev/null
+++ b/sci-libs/tensorflow/files/0008-patch-ruy-for-gcc-11.patch
@@ -0,0 +1,37 @@
+diff --git a/third_party/ruy/commit-3c93cda.patch 
b/third_party/ruy/commit-3c93cda.patch
+new file mode 100644
+index 00000000000..e530a842717
+--- /dev/null
++++ b/third_party/ruy/commit-3c93cda.patch
+@@ -0,0 +1,21 @@
++From 3c93cda8211efa01128d48950f0d6ee5233c5b9b Mon Sep 17 00:00:00 2001
++From: stha09 <[email protected]>
++Date: Thu, 6 May 2021 18:31:30 +0200
++Subject: [PATCH] IWYU: include limits for std::numeric_limits (#253)
++
++---
++ ruy/block_map.cc | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/ruy/block_map.cc b/ruy/block_map.cc
++index 6c01e52a02..e04e7aff4a 100644
++--- a/ruy/block_map.cc
+++++ b/ruy/block_map.cc
++@@ -17,6 +17,7 @@ limitations under the License.
++ 
++ #include <algorithm>
++ #include <cstdint>
+++#include <limits>
++ 
++ #ifdef RUY_MAKEBLOCKMAP_DEBUG
++ #include <cstdio>
+diff --git a/third_party/ruy/workspace.bzl b/third_party/ruy/workspace.bzl
+index 50769621770..7e91d640469 100644
+--- a/third_party/ruy/workspace.bzl
++++ b/third_party/ruy/workspace.bzl
+@@ -12,4 +12,5 @@ def repo():
+             
"https://github.com/google/ruy/archive/54774a7a2cf85963777289193629d4bd42de4a59.zip";,
+         ],
+         build_file = "//third_party/ruy:BUILD",
++        patch_file = "//third_party/ruy:commit-3c93cda.patch"
+     )

diff --git a/sci-libs/tensorflow/tensorflow-2.5.0-r1.ebuild 
b/sci-libs/tensorflow/tensorflow-2.5.0-r1.ebuild
index 1a9cf3d0793..642c413aa74 100644
--- a/sci-libs/tensorflow/tensorflow-2.5.0-r1.ebuild
+++ b/sci-libs/tensorflow/tensorflow-2.5.0-r1.ebuild
@@ -145,6 +145,9 @@ REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
 
 S="${WORKDIR}/${MY_P}"
 
+PATCHES=(
+       "${FILESDIR}/0008-patch-ruy-for-gcc-11.patch"
+)
 DOCS=( AUTHORS CONTRIBUTING.md ISSUE_TEMPLATE.md README.md RELEASE.md )
 CHECKREQS_MEMORY="5G"
 CHECKREQS_DISK_BUILD="10G"
@@ -187,6 +190,8 @@ src_prepare() {
        export JAVA_HOME=$(java-config --jre-home) # so keepwork works
 
        append-flags $(get-cpu-flags)
+       append-cxxflags -std=c++14 # bug 787938
+       filter-flags '-fvtable-verify=@(std|preinit)'
        bazel_setup_bazelrc
 
        eapply "${WORKDIR}"/patches/*.patch
@@ -356,7 +361,7 @@ src_compile() {
 }
 
 src_install() {
-       local i j
+       local i l
        export JAVA_HOME=$(java-config --jre-home) # so keepwork works
        export KERAS_HOME="${T}/.keras" # otherwise sandbox violation writing 
~/.keras
 

Reply via email to