Subject: [bug#53724] [PATCH staging 1/2] gnu: tbb: Fix test on AArch64.

From: Simon South <[email-masked]>
Date: Wed, 2 Feb 2022 09:47:05 -0500

* gnu/packages/patches/tbb-fix-test-on-aarch64.patch: New file.
* gnu/local.mk: Add it.
* gnu/packages/tbb.scm (tbb)[source]: Apply it.
---
 gnu/local.mk                                  |  1 +
 .../patches/tbb-fix-test-on-aarch64.patch     | 35 +++++++++++++++++++
 gnu/packages/tbb.scm                          |  4 +++
 3 files changed, 40 insertions(+)
 create mode 100644 gnu/packages/patches/tbb-fix-test-on-aarch64.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index dceaa53145..ab96d06a34 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1843,6 +1843,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tao-fix-parser-types.patch		\
   %D%/packages/patches/tar-remove-wholesparse-check.patch	\
   %D%/packages/patches/tar-skip-unreliable-tests.patch		\
+  %D%/packages/patches/tbb-fix-test-on-aarch64.patch		\
   %D%/packages/patches/tcc-boot-0.9.27.patch			\
   %D%/packages/patches/tclxml-3.2-install.patch			\
   %D%/packages/patches/tcsh-fix-autotest.patch			\
diff --git a/gnu/packages/patches/tbb-fix-test-on-aarch64.patch b/gnu/packages/patches/tbb-fix-test-on-aarch64.patch
new file mode 100644
index 0000000000..3a6003591e
--- /dev/null
+++ b/gnu/packages/patches/tbb-fix-test-on-aarch64.patch
@@ -0,0 +1,35 @@
+From 013035b4e9af39f506e87ae6b755c3363e768d4d Mon Sep 17 00:00:00 2001
+From: Vladislav Shchapov <[email-masked]>
+Date: Thu, 23 Dec 2021 19:17:24 +0500
+Subject: [PATCH] Fix issue #687 (test_eh_thread) (#697)
+
+Signed-off-by: Vladislav Shchapov <[email-masked]>
+---
+ test/tbb/test_eh_thread.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/test/tbb/test_eh_thread.cpp b/test/tbb/test_eh_thread.cpp
+index aa6d764d..af291f48 100644
+--- a/test/tbb/test_eh_thread.cpp
++++ b/test/tbb/test_eh_thread.cpp
+@@ -36,6 +36,7 @@
+ // TODO: enable limitThreads with sanitizer under docker
+ #if TBB_USE_EXCEPTIONS && !_WIN32 && !__ANDROID__
+ 
++#include <limits.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
+ #include <sys/resource.h>
+@@ -73,7 +74,8 @@ public:
+         mValid = false;
+         pthread_attr_t attr;
+         // Limit the stack size not to consume all virtual memory on 32 bit platforms.
+-        if (pthread_attr_init(&attr) == 0 && pthread_attr_setstacksize(&attr, 100*1024) == 0) {
++        std::size_t stacksize = utils::max(128*1024, PTHREAD_STACK_MIN);
++        if (pthread_attr_init(&attr) == 0 && pthread_attr_setstacksize(&attr, stacksize) == 0) {
+             mValid = pthread_create(&mHandle, &attr, thread_routine, /* arg = */ nullptr) == 0;
+         }
+     }
+-- 
+2.34.0
+
diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index e5d8394f5f..ef92e6db69 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -41,6 +41,10 @@ (define-public tbb
               (sha256
                (base32
                 "0ih727g802j9lvwkqhw021bk1wb7xlvfgd0vl1i6jng4am1wv7vq"))))
+              (patches (list
+                        ;; Backport an upstream commit that prevents the
+                        ;; "test_eh_thread" test failing on AArch64.
+                        (search-patch "tbb-fix-test-on-aarch64.patch")))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DTBB_STRICT=OFF"))) ;; Don't fail on warnings
-- 
2.34.0