Compare commits

...

37 Commits
master ... f33

Author SHA1 Message Date
Thomas Rodgers 169c75fcca Revert accidental backport of gating.yaml 2021-06-10 11:34:07 -07:00
Thomas Rodgers c016558410 Fix ABI regression in tbb::empty_task caused by switch to LTO 2021-06-03 12:30:44 -07:00
Alexandra Hájková 0f20ac28a8 enable CI gating 2021-04-15 11:17:32 +02:00
Jerry James a4b9df0c98 Fix cmake file installation some more (bz 1930389). 2021-02-22 09:28:56 -07:00
Jerry James 000c049388 Fix cmake file installation (bz 1930389).
- Allow use of RTM instructions when available.
- At upstream's suggestion, do not force ITT_NOTIFY support.
- Drop -fetchadd64 patch, only needed for forced ITT_NOTIFY support.
2021-02-18 16:34:41 -07:00
Fedora Release Engineering 177a3e4a33 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 21:37:52 +00:00
Jerry James e35e6b14ab Explicitly BR make. 2020-11-09 21:16:43 -07:00
Fedora Release Engineering 15bdf135d5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 12:07:35 +00:00
Jerry James eb8a481cec Rebase to version 2020.3. 2020-07-27 10:38:21 -06:00
Tom Stellard 15df25ac84 Use make macros
https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
2020-07-22 03:52:42 +00:00
Jerry James d30055c777 Drop unnecessary %python_provide in Rawhide. 2020-07-21 19:50:50 -06:00
Miro Hrončok c4fe2b68a2 Rebuilt for Python 3.9 2020-05-26 03:51:40 +02:00
Jerry James be3639e235 Cope with compilers that have names other than gcc or clang. 2020-04-28 10:13:08 -06:00
Timm Bäder 491303ecdc Update the test-thread-monitor patch to use std::atomic
tbb::atomic is deprecated and the build otherwise fails with clang.
2020-04-27 16:28:36 +02:00
Timm Bäder 0cbe27892d spec: Pass compiler to make
tbb's build system already can handle different compiles such as gcc,
clang and icc. However, to pick the correct build definitions, it needs
to be told what compiler to use. Setting CC to that value does not
suffice and the 'compiler' variable needs to be passed to make.
2020-04-27 16:26:18 +02:00
Jerry James 1395d71065 Rebase to version 2020.2. 2020-03-31 07:43:41 -06:00
Fedora Release Engineering 259518be53 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-31 01:07:20 +00:00
Jerry James 68066bac15 Rebase to version 2020.1. 2020-01-22 21:34:40 -07:00
Jerry James 415a656975 Disable buggy test_task_scheduler_observer. 2020-01-02 10:19:47 -07:00
Jerry James 59598f1a37 Upload the new sources. 2019-12-31 10:31:18 -07:00
Jerry James c1c9c561bc Rebase to version 2020. 2019-12-31 10:28:22 -07:00
Jerry James bc177da166 Fix compilation on aarch64 and s390x.
See https://github.com/intel/tbb/issues/186.
2019-10-13 16:08:23 -06:00
Jerry James d846f5e692 Rebase to 2019 update 9. 2019-10-12 20:19:53 -06:00
Miro Hrončok 64bf7c4d92 Rebuilt for Python 3.8.0rc1 (#1748018) 2019-10-03 14:39:21 +02:00
Jerry James 7dab124ca2 Add -test-thread-monitor and -test-task-scheduler-init patches to fix FTBFS. 2019-08-27 14:31:01 -06:00
Miro Hrončok b72e2334bc Rebuilt for Python 3.8 2019-08-19 11:06:52 +02:00
Fedora Release Engineering ac2fd3895b - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-27 01:01:34 +00:00
Jerry James da5647ae05 Rebase to 2019 update 8. 2019-06-08 20:37:36 -06:00
Jerry James 06151e7c1c Rebase to 2019 update 7. 2019-05-23 19:08:10 -06:00
Jerry James 4e38dfca59 Rebase to 2019 update 6.
Add -attributes patch to silence gcc warnings.
2019-05-09 20:02:43 -06:00
Jerry James 9ec50bf2d0 Rebase to 2019 update 5. 2019-03-25 18:48:49 -06:00
Jerry James 58b6622ef2 Rebase to 2019 update 4. 2019-03-03 20:11:12 -07:00
Fedora Release Engineering 95c8d717ce - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-03 09:26:41 +00:00
Igor Gnatenko ea40e8e9ac Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:51 +01:00
Jerry James 477b28279c Rebase to 2019 update 3. 2018-12-08 11:27:36 -07:00
Jerry James a1c093e047 Rebase to 2019 update 2. 2018-11-15 20:26:22 -07:00
Jerry James a3e041fb5c Rebase to 2019 update 1.
Drop special SSE2 build for 32-bit x86 as that is now default.
Drop unneeded -cxxflags patch.
Drop python 2 support (bz 1629761).
2018-10-13 11:04:02 -06:00
17 changed files with 567 additions and 218 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

6
plans/ci.fmf Normal file
View File

@ -0,0 +1,6 @@
summary: CI Gating Plan
discover:
how: fmf
directory: tests
execute:
how: beakerlib

View File

@ -1 +1 @@
SHA512 (2018_U5.tar.gz) = 3e8d20276ccb1b50099f96b6cf968e3d0ada53caea1fa836ecb8652f1dca236fbbbf2c783e64ea2f761f7f21725064d19b72d176e35e4dc29706b8a30965153b
SHA512 (tbb-2020.3.tar.gz) = ea1ffd22c7234d715b8c46a4e51b40719c7a9b8837ab3166f1da5a2c6061167c2be2126b1d74fd361eec6975b8fce0df26829ca2e7af8029edbb52e40f23d630

View File

@ -1,38 +0,0 @@
diff -up tbb-2018_U5/build/common_rules.inc\~ tbb-2018_U5/build/common_rules.inc
--- tbb-2018_U5/build/common_rules.inc~ 2018-06-19 10:04:20.000000000 -0600
+++ tbb-2018_U5/build/common_rules.inc 2018-07-03 11:18:03.540252098 -0600
@@ -136,7 +136,7 @@ LINK_FILES+=$(TEST_LIBS)
# Customizations
$(KNOWN_WARNINGS): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
+ $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
tbb_misc.$(OBJ): version_string.ver
tbb_misc.$(OBJ): INCLUDES+=$(INCLUDE_KEY).
diff -up tbb-2018_U5/build/Makefile.tbbmalloc\~ tbb-2018_U5/build/Makefile.tbbmalloc
--- tbb-2018_U5/build/Makefile.tbbmalloc~ 2018-07-03 11:16:37.945377902 -0600
+++ tbb-2018_U5/build/Makefile.tbbmalloc 2018-07-03 11:16:58.872102659 -0600
@@ -51,7 +51,7 @@ ORIG_LINK_MALLOC.LIB:=$(LINK_MALLOC.LIB)
MALLOC_CPLUS.OBJ = backend.$(OBJ) large_objects.$(OBJ) backref.$(OBJ) tbbmalloc.$(OBJ)
MALLOC.OBJ := $(MALLOC_CPLUS.OBJ) $(MALLOC_ASM.OBJ) itt_notify_malloc.$(OBJ) frontend.$(OBJ)
PROXY.OBJ := proxy.$(OBJ) tbb_function_replacement.$(OBJ)
-M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(CXXFLAGS) $(DEFINE_KEY)__TBBMALLOC_BUILD=1
+M_CPLUS_FLAGS := $(CXXFLAGS) -fno-strict-aliasing $(DEFINE_KEY)__TBBMALLOC_BUILD=1
M_INCLUDES := $(INCLUDES) $(INCLUDE_KEY)$(MALLOC_ROOT) $(INCLUDE_KEY)$(MALLOC_SOURCE_ROOT)
# Suppress superfluous warnings for TBBMalloc compilation
diff -dup tbb-2018_U5/build/Makefile.test\~ tbb-2018_U5/build/Makefile.test
--- tbb-2018_U5/build/Makefile.test~ 2018-06-19 10:04:20.000000000 -0600
+++ tbb-2018_U5/build/Makefile.test 2018-07-03 11:18:53.651592978 -0600
@@ -272,7 +272,7 @@ test_tbb_plain: $(TEST_PREREQUISITE) $(T
# For deprecated files, we don't mind warnings etc., thus compilation rules are most relaxed
-CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
+CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
TEST_TBB_OLD.OBJ = test_concurrent_vector_v2.$(OBJ) test_concurrent_queue_v2.$(OBJ) test_mutex_v2.$(OBJ) test_task_scheduler_observer_v3.$(OBJ)
$(TEST_TBB_OLD.OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED)
Diff finished. Tue Jul 3 11:19:32 2018

View File

@ -0,0 +1,43 @@
diff -up tbb-2019_U6/build/common_rules.inc.orig tbb-2019_U6/build/common_rules.inc
--- tbb-2019_U6/build/common_rules.inc.orig 2019-04-18 05:14:08.000000000 -0600
+++ tbb-2019_U6/build/common_rules.inc 2019-05-08 08:30:03.434532204 -0600
@@ -130,7 +130,7 @@ LINK_FILES+=$(TEST_LIBS)
# Customizations
$(KNOWN_WARNINGS): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
+ $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
tbb_misc.$(OBJ): version_string.ver
tbb_misc.$(OBJ): INCLUDES+=$(INCLUDE_KEY).
diff -up tbb-2019_U6/build/Makefile.tbbmalloc.orig tbb-2019_U6/build/Makefile.tbbmalloc
--- tbb-2019_U6/build/Makefile.tbbmalloc.orig 2019-04-18 05:14:08.000000000 -0600
+++ tbb-2019_U6/build/Makefile.tbbmalloc 2019-05-08 08:30:03.447531968 -0600
@@ -47,11 +47,11 @@ ORIG_LINK_MALLOC.LIB:=$(LINK_MALLOC.LIB)
MALLOC_CPLUS.OBJ = backend.$(OBJ) large_objects.$(OBJ) backref.$(OBJ) tbbmalloc.$(OBJ)
MALLOC.OBJ := $(MALLOC_CPLUS.OBJ) $(MALLOC_ASM.OBJ) itt_notify_malloc.$(OBJ) frontend.$(OBJ)
PROXY.OBJ := proxy.$(OBJ) tbb_function_replacement.$(OBJ)
-M_CPLUS_FLAGS += $(DEFINE_KEY)__TBBMALLOC_BUILD=1
+M_CPLUS_FLAGS += -fno-strict-aliasing $(DEFINE_KEY)__TBBMALLOC_BUILD=1
M_INCLUDES := $(INCLUDES) $(INCLUDE_KEY)$(MALLOC_ROOT) $(INCLUDE_KEY)$(MALLOC_SOURCE_ROOT)
# Suppress superfluous warnings for TBBMalloc compilation
-$(MALLOC.OBJ): M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(WARNING_SUPPRESS)
+$(MALLOC.OBJ): M_CPLUS_FLAGS := $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS)
# Suppress superfluous warnings for TBBMalloc proxy compilation
$(PROXY.OBJ): CPLUS_FLAGS += $(WARNING_SUPPRESS)
diff -up tbb-2019_U6/build/Makefile.test.orig tbb-2019_U6/build/Makefile.test
--- tbb-2019_U6/build/Makefile.test.orig 2019-05-08 08:30:03.448531949 -0600
+++ tbb-2019_U6/build/Makefile.test 2019-05-08 08:31:48.190498336 -0600
@@ -275,7 +275,7 @@ test_tbb_plain: $(TEST_PREREQUISITE) $(T
# For deprecated files, we don't mind warnings etc., thus compilation rules are most relaxed
-CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
+CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
TEST_TBB_OLD.OBJ = test_concurrent_vector_v2.$(OBJ) test_concurrent_queue_v2.$(OBJ) test_mutex_v2.$(OBJ) test_task_scheduler_observer_v3.$(OBJ)
$(TEST_TBB_OLD.OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED)
Diff finished. Wed May 8 08:31:49 2019

View File

@ -0,0 +1,12 @@
diff -up tbb-2019_U8/src/test/test_task_scheduler_init.cpp.orig tbb-2019_U8/src/test/test_task_scheduler_init.cpp
--- tbb-2019_U8/src/test/test_task_scheduler_init.cpp.orig 2019-06-06 04:29:15.000000000 -0600
+++ tbb-2019_U8/src/test/test_task_scheduler_init.cpp 2019-08-26 12:08:19.547880295 -0600
@@ -285,7 +285,7 @@ namespace TestBlockingTerminateNS {
}
};
void operator()() {
- const int numThreads = 4;
+ const int numThreads = 2;
tbb::task_scheduler_init init( numThreads );
Harness::SpinBarrier barrier( numThreads );
tbb::parallel_for( 0, numThreads, Body( barrier ) );

View File

@ -0,0 +1,56 @@
--- tbb-2020.2/oneTBB-2020.2/src/rml/test/test_thread_monitor.cpp 2020-03-30 13:38:06.000000000 +0200
+++ oneTBB-2020.2/src/rml/test/test_thread_monitor.cpp 2020-04-27 15:43:34.209452298 +0200
@@ -23,6 +23,7 @@
#include "thread_monitor.h"
#include "harness_memory.h"
#include "tbb/semaphore.cpp"
+#include <atomic>
class ThreadState {
void loop();
@@ -33,21 +34,21 @@
}
typedef rml::internal::thread_monitor thread_monitor;
thread_monitor monitor;
- volatile int request;
- volatile int ack;
- volatile unsigned clock;
- volatile unsigned stamp;
+ std::atomic<int> request;
+ std::atomic<int> ack;
+ std::atomic<unsigned> clock;
+ unsigned stamp;
ThreadState() : request(-1), ack(-1), clock(0) {}
};
void ThreadState::loop() {
for(;;) {
- ++clock;
if( ack==request ) {
thread_monitor::cookie c;
monitor.prepare_wait(c);
if( ack==request ) {
- REMARK("%p: request=%d ack=%d\n", this, request, ack );
+ REMARK("%p: request=%d ack=%d\n", this, request.load(), ack.load() );
+ ++clock;
monitor.commit_wait(c);
} else
monitor.cancel_wait();
@@ -60,7 +61,7 @@
rml::internal::thread_monitor::yield();
}
int r = request;
- ack = request;
+ ack = r;
if( !r ) return;
}
}
@@ -89,7 +90,7 @@
REPORT("Warning: thread %d not waiting\n",i);
break;
}
- } while( t[i].stamp!=t[i].clock );
+ } while( t[i].stamp==0 || t[i].stamp!=t[i].clock );
}
}
REMARK("notifying threads\n");

54
tbb-2020-attributes.patch Normal file
View File

@ -0,0 +1,54 @@
diff -up oneTBB-2020.2/src/tbbmalloc/proxy.cpp.orig oneTBB-2020.2/src/tbbmalloc/proxy.cpp
--- oneTBB-2020.2/src/tbbmalloc/proxy.cpp.orig 2020-03-31 06:40:13.752296189 -0600
+++ oneTBB-2020.2/src/tbbmalloc/proxy.cpp 2020-03-31 06:42:52.611900760 -0600
@@ -146,15 +146,7 @@ static inline void initPageSize()
1) detection that the proxy library is loaded
2) check that dlsym("malloc") found something different from our replacement malloc
*/
-// Starting from GCC 9, the -Wmissing-attributes warning was extended for alias below
-#if __GNUC__ == 9
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wmissing-attributes"
-#endif
-extern "C" void *__TBB_malloc_proxy(size_t) __attribute__ ((alias ("malloc")));
-#if __GNUC__ == 9
- #pragma GCC diagnostic pop
-#endif
+extern "C" void *__TBB_malloc_proxy(size_t) __attribute__ ((alias ("malloc"), copy (malloc)));
static void *orig_msize;
@@ -296,25 +288,17 @@ struct mallinfo mallinfo() __THROW
size_t dlmalloc_usable_size(const void *ptr) __attribute__ ((alias ("malloc_usable_size")));
#else // __ANDROID__
// C11 function, supported starting GLIBC 2.16
-void *aligned_alloc(size_t alignment, size_t size) __attribute__ ((alias ("memalign")));
+void *aligned_alloc(size_t alignment, size_t size) __attribute__ ((alias ("memalign"), copy (memalign)));
// Those non-standard functions are exported by GLIBC, and might be used
// in conjunction with standard malloc/free, so we must ovberload them.
// Bionic doesn't have them. Not removing from the linker scripts,
// as absent entry points are ignored by the linker.
-// Starting from GCC 9, the -Wmissing-attributes warning was extended for aliases below
-#if __GNUC__ == 9
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wmissing-attributes"
-#endif
-void *__libc_malloc(size_t size) __attribute__ ((alias ("malloc")));
-void *__libc_calloc(size_t num, size_t size) __attribute__ ((alias ("calloc")));
-void *__libc_memalign(size_t alignment, size_t size) __attribute__ ((alias ("memalign")));
-void *__libc_pvalloc(size_t size) __attribute__ ((alias ("pvalloc")));
-void *__libc_valloc(size_t size) __attribute__ ((alias ("valloc")));
-#if __GNUC__ == 9
- #pragma GCC diagnostic pop
-#endif
+void *__libc_malloc(size_t size) __attribute__ ((alias ("malloc"), copy (malloc)));
+void *__libc_calloc(size_t num, size_t size) __attribute__ ((alias ("calloc"), copy (calloc)));
+void *__libc_memalign(size_t alignment, size_t size) __attribute__ ((alias ("memalign"), copy (memalign)));
+void *__libc_pvalloc(size_t size) __attribute__ ((alias ("pvalloc"), copy (pvalloc)));
+void *__libc_valloc(size_t size) __attribute__ ((alias ("valloc"), copy (valloc)));
// call original __libc_* to support naive replacement of free via __libc_free etc
void __libc_free(void *ptr)
Diff finished. Tue Mar 31 06:43:27 2020

View File

@ -1,14 +0,0 @@
diff -up tbb44_20151115oss/include/tbb/machine/linux_ia32.h\~ tbb44_20151115oss/include/tbb/machine/linux_ia32.h
--- tbb44_20151115oss/include/tbb/machine/linux_ia32.h~ 2015-11-25 03:49:14.000000000 -0700
+++ tbb44_20151115oss/include/tbb/machine/linux_ia32.h 2016-01-14 20:29:45.251333321 -0700
@@ -34,7 +34,7 @@
#define __TBB_control_consistency_helper() __TBB_compiler_fence()
#define __TBB_acquire_consistency_helper() __TBB_compiler_fence()
#define __TBB_release_consistency_helper() __TBB_compiler_fence()
-#define __TBB_full_memory_fence() __asm__ __volatile__("mfence": : :"memory")
+#define __TBB_full_memory_fence() __sync_synchronize()
#if __TBB_ICC_ASM_VOLATILE_BROKEN
#define __TBB_VOLATILE
Diff finished. Thu Jan 14 20:30:12 2016

View File

@ -1,37 +0,0 @@
diff -up tbb-2018_U2/build/linux.gcc.inc\~ tbb-2018_U2/build/linux.gcc.inc
--- tbb-2018_U2/build/linux.gcc.inc~ 2017-12-06 10:29:49.000000000 -0700
+++ tbb-2018_U2/build/linux.gcc.inc 2018-01-22 20:47:07.148422967 -0700
@@ -68,10 +68,10 @@ ifneq (,$(shell gcc -dumpversion | egrep
endif
ifeq ($(cfg), release)
- CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
+ CPLUS_FLAGS = $(CXXFLAGS) $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
endif
ifeq ($(cfg), debug)
- CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
+ CPLUS_FLAGS = $(CXXFLAGS) -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
endif
TBB_ASM.OBJ=
diff -up tbb-2018_U2/build/Makefile.tbbmalloc\~ tbb-2018_U2/build/Makefile.tbbmalloc
--- tbb-2018_U2/build/Makefile.tbbmalloc~ 2017-12-06 10:29:49.000000000 -0700
+++ tbb-2018_U2/build/Makefile.tbbmalloc 2018-01-22 20:47:30.104350662 -0700
@@ -51,7 +51,7 @@ ORIG_LINK_MALLOC.LIB:=$(LINK_MALLOC.LIB)
MALLOC_CPLUS.OBJ = backend.$(OBJ) large_objects.$(OBJ) backref.$(OBJ) tbbmalloc.$(OBJ)
MALLOC.OBJ := $(MALLOC_CPLUS.OBJ) $(MALLOC_ASM.OBJ) itt_notify_malloc.$(OBJ) frontend.$(OBJ)
PROXY.OBJ := proxy.$(OBJ) tbb_function_replacement.$(OBJ)
-M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(DEFINE_KEY)__TBBMALLOC_BUILD=1
+M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(CXXFLAGS) $(DEFINE_KEY)__TBBMALLOC_BUILD=1
M_INCLUDES := $(INCLUDES) $(INCLUDE_KEY)$(MALLOC_ROOT) $(INCLUDE_KEY)$(MALLOC_SOURCE_ROOT)
# Suppress superfluous warnings for TBBMalloc compilation
@@ -86,7 +86,7 @@ $(MALLOC.DLL) $(MALLOCPROXY.DLL): CPLUS_
$(MALLOC.DLL) $(MALLOCPROXY.DLL): M_CPLUS_FLAGS += $(SDL_FLAGS)
$(MALLOC.DLL): BUILDING_LIBRARY = $(MALLOC.DLL)
$(MALLOC.DLL): $(MALLOC.OBJ) $(MALLOC.RES) $(MALLOC_NO_VERSION.DLL)
- $(subst $(CPLUS),$(CONLY),$(LIB_LINK_CMD)) $(LIB_OUTPUT_KEY)$(MALLOC.DLL) $(MALLOC.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(MALLOC_LINK_FLAGS)
+ $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(MALLOC.DLL) $(MALLOC.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(MALLOC_LINK_FLAGS)
ifneq (,$(MALLOCPROXY.DEF))
tbbmallocproxy.def: $(MALLOCPROXY.DEF)

View File

@ -0,0 +1,26 @@
From db2f2116adfb545bb76c92205f91e3e3f0f9e44a Mon Sep 17 00:00:00 2001
From: Thomas Rodgers <rodgert@twrodgers.com>
Date: Wed, 2 Jun 2021 15:18:30 -0700
Subject: [PATCH] Mark tbb::empty_task::execute with [[gnu::used]]
---
include/tbb/task.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/include/tbb/task.h b/include/tbb/task.h
index 5e137c6..5b60163 100644
--- a/include/tbb/task.h
+++ b/include/tbb/task.h
@@ -1040,6 +1040,9 @@ inline void task::resume(suspend_point tag) {
//! task that does nothing. Useful for synchronization.
/** @ingroup task_scheduling */
class __TBB_DEPRECATED_IN_VERBOSE_MODE empty_task: public task {
+#if __has_cpp_attribute(gnu::used)
+ [[gnu::used]]
+#endif
task* execute() __TBB_override {
return NULL;
}
--
2.31.1

8
tbb.rpmlintrc Normal file
View File

@ -0,0 +1,8 @@
# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON
# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors
# The dictionary lacks some technical words
addFilter(r'spelling-error .* symlinks')
# We use whatever version of jquery doxygen gives us
addFilter(r'W: unversioned-explicit-provides bundled\(jquery\)')

290
tbb.spec
View File

@ -1,46 +1,42 @@
%global upver 2018
%global uprel 5
%if 0%{?fedora} || 0%{?rhel} >= 8
%global with_python3 1
%endif
Name: tbb
Summary: The Threading Building Blocks library abstracts low-level threading details
Version: %{upver}%{?uprel:.%{uprel}}
Release: 2%{?dist}
Version: 2020.3
Release: 7%{?dist}
License: ASL 2.0
Group: Development/Tools
URL: http://threadingbuildingblocks.org/
Source0: https://github.com/01org/tbb/archive/%{upver}%{?uprel:_U%{uprel}}.tar.gz
Source0: https://github.com/intel/tbb/archive/v%{version}/%{name}-%{version}.tar.gz
# These three are downstream sources.
Source6: tbb.pc
Source7: tbbmalloc.pc
Source8: tbbmalloc_proxy.pc
# Propagate CXXFLAGS variable into flags used when compiling C++.
# This is so that RPM_OPT_FLAGS are respected.
Patch1: tbb-4.4-cxxflags.patch
# For 32-bit x86 only, don't assume that the mfence instruction is available.
# It was added with SSE2. This patch causes a lock xchg instruction to be
# emitted for non-SSE2 builds, and the mfence instruction to be emitted for
# SSE2-enabled builds.
Patch2: tbb-4.0-mfence.patch
# Don't snip -Wall from C++ flags. Add -fno-strict-aliasing, as that
# uncovers some static-aliasing warnings.
# Related: https://bugzilla.redhat.com/show_bug.cgi?id=1037347
Patch3: tbb-2018U5-dont-snip-Wall.patch
Patch0: tbb-2019-dont-snip-Wall.patch
# Make attributes of aliases match those on the aliased function.
Patch1: tbb-2020-attributes.patch
# Fix test-thread-monitor, which had multiple bugs that could (and did, on
# ppc64le) result in a hang.
Patch2: tbb-2019-test-thread-monitor.patch
# Fix a test that builds a 4-thread barrier, but cannot guarantee that more
# than 2 threads will be available to use it.
Patch3: tbb-2019-test-task-scheduler-init.patch
# Fix ABI break resulting from tbb::empty_task being removed from libtbb.so's
# exported symbols
Patch4: tbb-mark-empty_task-execute-with-gnu-used.patch
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: gcc-c++
BuildRequires: python2-devel
BuildRequires: swig
%if 0%{?with_python3}
BuildRequires: make
BuildRequires: python3-devel
%endif
BuildRequires: swig
%description
Threading Building Blocks (TBB) is a C++ runtime library that
@ -56,7 +52,6 @@ maintenance is required as more processor cores become available.
%package devel
Summary: The Threading Building Blocks C++ headers and shared development libraries
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
@ -66,7 +61,6 @@ Blocks (TBB) C++ libraries.
%package doc
Summary: The Threading Building Blocks documentation
Group: Documentation
Provides: bundled(jquery)
%description doc
@ -74,112 +68,77 @@ PDF documentation for the user of the Threading Building Block (TBB)
C++ library.
%package -n python2-%{name}
Summary: Python 2 TBB module
%{?python_provide:%python_provide python2-%{name}}
%description -n python2-%{name}
Python 2 TBB module.
%if 0%{?with_python3}
%package -n python3-%{name}
Summary: Python 3 TBB module
%{?python_provide:%python_provide python3-%{name}}
%description -n python3-%{name}
Python 3 TBB module.
%endif
%prep
%autosetup -p1 -n %{name}-%{upver}_U%{uprel}
%autosetup -p1 -n oneTBB-%{version}
# For repeatable builds, don't query the hostname or architecture
sed -i 's/"`hostname -s`" ("`uname -m`"/fedorabuild (%{_arch}/' \
build/version_info_linux.sh
# Do not assume the RTM instructions are available
sed -i 's/-mrtm//' build/linux.gcc.inc
# Insert --as-needed before the libraries to be linked.
sed -i "s/-fPIC/& -Wl,--as-needed/" build/linux.gcc.inc
# Invoke the right python binary directly
sed -i 's,env python,python2,' python/TBB.py python/tbb/__*.py
sed -i 's,env python,python3,' python/TBB.py python/tbb/__*.py
# Remove shebang from files that don't need it
sed -i '/^#!/d' python/tbb/{pool,test}.py
# Fix libdir on 64-bit systems
if [ "%{_libdir}" != "%{_prefix}/lib" ]; then
sed -i.orig 's/"lib"/"%{_lib}"/' cmake/TBBMakeConfig.cmake
touch -r cmake/TBBMakeConfig.cmake.orig cmake/TBBMakeConfig.cmake
rm cmake/TBBMakeConfig.cmake.orig
%build
compiler=""
if [[ %{__cc} == *"gcc"* ]]; then
compiler="gcc"
elif [[ %{__cc} == *"clang"* ]]; then
compiler="clang"
else
compiler="%{__cc}"
fi
# Prepare to build the python module for both python 2 and python 3
cp -a python python3
sed -i 's,python,python3,g' python3/Makefile python3/rml/Makefile
sed -i 's,python2,python3,' python3/TBB.py python3/tbb/__*.py
%build
%ifarch %{ix86}
# Build an SSE2-enabled version so the mfence instruction can be used
cp -a build build.orig
make %{?_smp_mflags} tbb_build_prefix=obj stdver=c++14 \
CXXFLAGS="$RPM_OPT_FLAGS -march=pentium4 -msse2" \
LDFLAGS="-Wl,--as-needed $RPM_LD_FLAGS"
mv build build.sse2
mv build.orig build
%endif
make %{?_smp_mflags} tbb_build_prefix=obj stdver=c++14 \
CXXFLAGS="$RPM_OPT_FLAGS" \
LDFLAGS="-Wl,--as-needed $RPM_LD_FLAGS"
%make_build tbb_build_prefix=obj stdver=c++14 \
compiler=${compiler} \
CXXFLAGS="%{optflags} -DUSE_PTHREAD" \
LDFLAGS="$RPM_LD_FLAGS -lpthread"
for file in %{SOURCE6} %{SOURCE7} %{SOURCE8}; do
base=$(basename ${file})
sed 's/_FEDORA_VERSION/%{version}/' ${file} > ${base}
touch -r ${file} ${base}
done
# Build for python 2
# Build for python 3
. build/obj_release/tbbvars.sh
pushd python
make %{?_smp_mflags} -C rml stdver=c++14 \
CPLUS_FLAGS="%{optflags} -DDO_ITT_NOTIFY -DUSE_PTHREAD" \
PIC_KEY="-fPIC -Wl,--as-needed" \
LDFLAGS="$RPM_LD_FLAGS"
cp -p rml/libirml.so* .
%py2_build
popd
%if 0%{?with_python3}
# Build for python 3
pushd python3
make %{?_smp_mflags} -C rml stdver=c++14 \
CPLUS_FLAGS="%{optflags} -DDO_ITT_NOTIFY -DUSE_PTHREAD" \
PIC_KEY="-fPIC -Wl,--as-needed" \
LDFLAGS="$RPM_LD_FLAGS"
%make_build -C rml stdver=c++14 \
compiler=${compiler} \
CPLUS_FLAGS="%{optflags} -DUSE_PTHREAD" \
LDFLAGS="$RPM_LD_FLAGS -lpthread"
cp -p rml/libirml.so* .
%py3_build
popd
%endif
# Build the documentation
make doxygen
%check
make test tbb_build_prefix=obj stdver=c++14 CXXFLAGS="$RPM_OPT_FLAGS"
# This test assumes it can create thread barriers for arbitrary numbers of
# threads, but tbb limits the number of threads spawned to a function of the
# number of CPUs available. Some of the koji builders have a small number of
# CPUs, so the test hangs waiting for threads that have not been created to
# arrive at the barrier. Skip this test until upstream fixes it.
sed -i '/test_task_scheduler_observer/d' build/Makefile.test
make test tbb_build_prefix=obj stdver=c++14 CXXFLAGS="%{optflags}"
%install
mkdir -p $RPM_BUILD_ROOT/%{_libdir}
mkdir -p $RPM_BUILD_ROOT/%{_includedir}
%ifarch %{ix86}
mkdir -p $RPM_BUILD_ROOT/%{_libdir}/sse2
pushd build.sse2/obj_release
for file in libtbb{,malloc{,_proxy}}; do
install -p -D -m 755 ${file}.so.2 $RPM_BUILD_ROOT/%{_libdir}/sse2
done
popd
%endif
pushd build/obj_release
for file in libtbb{,malloc{,_proxy}}; do
install -p -D -m 755 ${file}.so.2 $RPM_BUILD_ROOT/%{_libdir}
@ -202,68 +161,143 @@ done
mkdir -p $RPM_BUILD_ROOT%{_includedir}/rml
cp -p src/rml/include/*.h $RPM_BUILD_ROOT%{_includedir}/rml
# Python 2 install
# Python 3 install
. build/obj_release/tbbvars.sh
pushd python
%py2_install
chmod a+x $RPM_BUILD_ROOT%{python2_sitearch}/TBB.py
chmod a+x $RPM_BUILD_ROOT%{python2_sitearch}/tbb/__*.py
cp -p libirml.so.1 $RPM_BUILD_ROOT%{_libdir}
ln -s libirml.so.1 $RPM_BUILD_ROOT%{_libdir}/libirml.so
popd
%if 0%{?with_python3}
# Python 3 install
pushd python3
%py3_install
chmod a+x $RPM_BUILD_ROOT%{python3_sitearch}/TBB.py
chmod a+x $RPM_BUILD_ROOT%{python3_sitearch}/tbb/__*.py
cp -p libirml.so.1 $RPM_BUILD_ROOT%{_libdir}
ln -s libirml.so.1 $RPM_BUILD_ROOT%{_libdir}/libirml.so
popd
%endif
# Install the cmake files
mkdir -p $RPM_BUILD_ROOT%{_libdir}/cmake
cp -a cmake $RPM_BUILD_ROOT%{_libdir}/cmake/%{name}
rm $RPM_BUILD_ROOT%{_libdir}/cmake/%{name}/README.rst
%ldconfig_scriptlets libs
cmake \
-DINSTALL_DIR=$RPM_BUILD_ROOT%{_libdir}/cmake/TBB \
-DSYSTEM_NAME=Linux \
-DLIB_REL_PATH=../.. \
-P cmake/tbb_config_installer.cmake
%files
%doc doc/Release_Notes.txt README.md
%license LICENSE
%{_libdir}/*.so.2
%{_libdir}/libtbb.so.2
%{_libdir}/libtbbmalloc.so.2
%{_libdir}/libtbbmalloc_proxy.so.2
%{_libdir}/libirml.so.1
%ifarch %{ix86}
%{_libdir}/sse2/*.so.2
%endif
%files devel
%doc CHANGES cmake/README.rst
%{_includedir}/rml
%{_includedir}/tbb
%{_includedir}/rml/
%{_includedir}/tbb/
%{_libdir}/*.so
%{_libdir}/cmake/
%{_libdir}/cmake/TBB/
%{_libdir}/pkgconfig/*.pc
%files doc
%doc doc/Release_Notes.txt
%doc doc/html
%doc html
%files -n python2-%{name}
%doc python/index.html
%{python2_sitearch}/TBB*
%{python2_sitearch}/tbb/
%if 0%{?with_python3}
%files -n python3-%{name}
%doc python3/index.html
%doc python/index.html
%{python3_sitearch}/TBB*
%{python3_sitearch}/tbb/
%{python3_sitearch}/__pycache__/TBB*
%endif
%changelog
* Thu Jun 10 2021 THomas Rodgers <trodgers@redhat.com> - 2020.3-7
- Revert accidental backport of gating.yaml
* Thu Jun 3 2021 Thomas Rodgers <trodgers@redhat.com> - 2020.3-6
- Fix ABI regression in tbb::empty_task caused by switch to LTO
* Mon Feb 22 2021 Jerry James <loganjerry@gmail.com> - 2020.3-5
- Fix cmake file installation some more (bz 1930389)
* Thu Feb 18 2021 Jerry James <loganjerry@gmail.com> - 2020.3-4
- Fix cmake file installation (bz 1930389)
- Allow use of RTM instructions when available
- At upstream's suggestion, do not force ITT_NOTIFY support
- Drop -fetchadd64 patch, only needed for forced ITT_NOTIFY support
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2020.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2020.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Jerry James <loganjerry@gmail.com> - 2020.3-1
- Rebase to version 2020.3
* Tue Jul 14 2020 Tom Stellard <tstellar@redhat.com> - 2020.2-4
- Use make macros
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 2020.2-3
- Rebuilt for Python 3.9
* Mon Apr 27 2020 Timm Baeder <tbaeder@redhat.com> - 2020.2-2
- Pass the compiler to when building
- Update the tbb-2019-test-thread-monitor.patch to use std::atomic
* Tue Mar 31 2020 Jerry James <loganjerry@gmail.com> - 2020.2-1
- Rebase to version 2020.2
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2020.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jan 22 2020 Jerry James <loganjerry@gmail.com> - 2020.1-1
- Rebase to version 2020.1
* Tue Dec 31 2019 Jerry James <loganjerry@gmail.com> - 2020-1
- Rebase to version 2020
* Sat Oct 12 2019 Jerry James <loganjerry@gmail.com> - 2019.9-1
- Rebase to 2019 update 9
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 2019.8-4
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Tue Aug 27 2019 Jerry James <loganjerry@gmail.com> - 2019.8-3
- Add -test-thread-monitor and -test-task-scheduler-init patches to fix FTBFS
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 2019.8-3
- Rebuilt for Python 3.8
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sat Jun 8 2019 Jerry James <loganjerry@gmail.com> - 2019.8-1
- Rebase to 2019 update 8
* Thu May 23 2019 Jerry James <loganjerry@gmail.com> - 2019.7-1
- Rebase to 2019 update 7
* Thu May 9 2019 Jerry James <loganjerry@gmail.com> - 2019.6-1
- Rebase to 2019 update 6
- Add -attributes patch to silence gcc warnings
* Mon Mar 25 2019 Jerry James <loganjerry@gmail.com> - 2019.5-1
- Rebase to 2019 update 5
* Mon Mar 4 2019 Jerry James <loganjerry@gmail.com> - 2019.4-1
- Rebase to 2019 update 4
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Dec 8 2018 Jerry James <loganjerry@gmail.com> - 2019.3-1
- Rebase to 2019 update 3
* Fri Nov 16 2018 Jerry James <loganjerry@gmail.com> - 2019.2-1
- Rebase to 2019 update 2
* Thu Oct 4 2018 Jerry James <loganjerry@gmail.com> - 2019.1-1
- Rebase to 2019 update 1
- Drop special SSE2 build for 32-bit x86 as that is now default
- Drop unneeded -cxxflags patch
- Drop python 2 support (bz 1629761)
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2018.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

View File

@ -0,0 +1,66 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /tools/tbb/Sanity/upstream
# Description: Test for package tbb that tests the whole library
# Author: Filip Holec <fholec@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/tools/tbb/Sanity/upstream
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Filip Holec <fholec@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test for package tbb that tests the whole library" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: tbb" >> $(METADATA)
@echo "Requires: tbb tbb-devel rpm-build gcc-c++" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
@echo "Bug: 844976" >> $(METADATA)
@echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA)
@echo "Architectures: x86_64 ppc64le aarch64 s390x" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,7 @@
PURPOSE of /tools/tbb/Sanity/upstream
Description: Test for package tbb that tests the whole library
Author: Filip Holec <fholec@redhat.com>
Bug summary: [RFE] Provide tbb (dependency of suitesparse, SciPy)
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=844976
Test for package tbb that tests the whole library

View File

@ -0,0 +1,19 @@
summary: Test for package tbb that tests the whole library
description: |
Bug summary: [RFE] Provide tbb (dependency of suitesparse, SciPy)
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=844976
Test for package tbb that tests the whole library
contact: Filip Holec <fholec@redhat.com>
component:
- tbb
test: ./runtest.sh
framework: beakerlib
recommend:
- tbb
- tbb-devel
- rpm-build
- gcc-c++
duration: 5m
extra-summary: /tools/tbb/Sanity/upstream
extra-task: /tools/tbb/Sanity/upstream

106
tests/sanity_test/runtest.sh Executable file
View File

@ -0,0 +1,106 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/tbb/Sanity/upstream
# Description: Test for package tbb that tests the whole library
# Author: Filip Holec <fholec@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh
PACKAGES=${PACKAGES:-tbb}
REQUIRES=${REQUIRES:-tbb-devel}
rlJournalStart
rlPhaseStartSetup
# Determine what architecture is the test running on
ARCH=$(rlGetPrimaryArch)
# work around https://bugzilla.redhat.com/show_bug.cgi?id=1374681
sed -i 's/\/mnt\/redhat\/scripts\/rel-eng\/utility\/find_package/\/usr\/bin\/find_package/' /usr/share/beakerlib/plugins/rh-internal.sh
wget -O /usr/bin/find_package http://nfs.englab.brq.redhat.com/scratch/mcermak/conf/find_package
chmod a+rx /usr/bin/find_package
# Supported architectures are i386 and x86_64
if [ $ARCH = "i386" -o $ARCH="x86_64" ] ; then
# Check if RPMs are installed
rlAssertRpm --all
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
# Download tests from lookaside and decompress them
PY_COLLECTION=$(echo $COLLECTIONS | egrep -o 'python\w+')
if [[ -n $PY_COLLECTION ]] && rlIsRHEL 6
then
echo "${PY_COLLECTION}-tbb"
rlRun "rlFetchSrcForInstalled ${PY_COLLECTION}-tbb" \
0 "Download tbb source RPM"
if [ "$PY_COLLECTION" == "python27" ]
then
FLAGS="CXXFLAGS='-I/opt/rh/python27/root/usr/include/ -L/opt/rh/python27/root/usr/lib64'"
tbb_prefix="/tbb"
else
FLAGS="CXXFLAGS='-I/opt/rh/python33/root/usr/include/ -L/opt/rh/python33/root/usr/lib64'"
tbb_prefix=""
fi
else
FLAGS=""
echo tbb
rlRun "rlFetchSrcForInstalled tbb" \
0 "Download tbb source RPM"
fi
rlRun "rpm --define '_topdir $TmpDir' -i *src.rpm" \
0 "Installing the source rpm"
rlRun "mkdir BUILD" 0 "Creating BUILD directory"
rlRun "rpmbuild --nodeps --define '_topdir $TmpDir' -bp $TmpDir/SPECS/*spec" \
0 "Preparing sources"
rlRun "pushd ./BUILD/" 0 "Go to source directory"
else
rlLog "tbb is not available for $ARCH, skipping the test"
fi
rlPhaseEnd
rlPhaseStartTest
# Test if architecture is supported
if [ $ARCH = "i386" -o $ARCH="x86_64" ] ; then
# Make and make fibonacci
rlRun "pushd .${tbb_prefix}/oneTBB*/examples/test_all/fibonacci; make ${FLAGS}" 0 \
"Enter fibonacci example directory and make"
# Run the fibonacci test
rlRun "./fibonacci" 0 \
"Testing fibonacci (which is complex testing of nearly all tbb library)"
fi
rlPhaseEnd
rlPhaseStartCleanup
# Test if architecture is supported
if [ $ARCH = "i386" -o $ARCH="x86_64" ] ; then
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
fi
rlPhaseEnd
rlJournalPrintText
rlJournalEnd