SHA256
8
0
forked from pool/tbb

11 Commits

Author SHA256 Message Date
9e871f15f7 Make build recipe POSIX sh compatible 2026-01-03 15:51:16 +01:00
f2c8c99553 Update to 2022.3.0
* [Preview] Introduced API for setting dynamic task dependencies
  in task_group. This allows successor tasks to execute only
  after all their predecessors have completed.
* Extended task_arena with API support for enqueuing functions
  into a task_group and waiting for the task_group to complete.
* Introduced API for setting and getting the assertion handler.
  This allows applications to set their own assertion handling
  functions.

Update cf-prot.patch, partially fixed upstream

* Add tbb-python-setuptools.patch
* gh#uxlfoundation/oneTBB#1941
* replace setup.py direct call
2026-01-03 15:49:49 +01:00
f5efb942ef Adhere to typical changelog syntax for bugrefs 2025-07-30 13:12:01 +02:00
Alessandro de Oliveira Faria (A.K.A.CABELO)
141d8e3c15 Change tbb-2022.2.0.tar.gz file - Bugzilla 1247142 2025-07-30 00:39:18 -03:00
5381658263 Add cf-prot.patch 2025-07-17 10:17:06 +02:00
Alessandro de Oliveira Faria (A.K.A.CABELO)
8999ae2f48 Version 2022.2.0 2025-07-05 20:26:39 -03:00
30971e4e50 Update to 2022.1.0
Also, build with ninja, format the .spec file and
use the common URL format for source URLs
2025-05-06 15:20:16 +02:00
Steve Kowalik
c9e26c7430 Support older and current versions of setuptools
Older versions of setuptools do not normalize the metadata directory,
whereas the newer does, so we need to support both cases.
2025-04-03 16:24:52 +11:00
f7a57bc661 Modernize building of the Python subpackage, don't generate *.egg. 2025-01-08 18:41:37 +01:00
dd92ead7d3 Do away with em dashes in summaries 2024-12-31 16:13:23 +01:00
0485d81d0d Update to 2022.0.0, remove patch and use _service to download tarball 2024-12-31 15:00:11 +01:00
8 changed files with 292 additions and 54 deletions

View File

@@ -1,4 +0,0 @@
mtime: 1736358097
commit: f7a57bc661f3aff47dfa1fc55642925d5639a4e30086a4543ac94237c479195a
url: https://src.opensuse.org/clibs/tbb
revision: master

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dccc6ecb695c71f7d6ed66008501d49a3ff852bb1f3ebea5b6aec276361225bc
size 256

23
cf-prot.patch Normal file
View File

@@ -0,0 +1,23 @@
From: Jan Engelhardt <ej@inai.de>
Date: 2025-07-17 10:15:40.088500829 +0200
References: https://github.com/uxlfoundation/oneTBB/issues/1783
-fcf-prot: not supported on this target
[at least i586, armv7hl, ppc64le, s390x, probably also riscv64]
---
cmake/compilers/GNU.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: oneTBB-2022.3.0/cmake/compilers/GNU.cmake
===================================================================
--- oneTBB-2022.3.0.orig/cmake/compilers/GNU.cmake
+++ oneTBB-2022.3.0/cmake/compilers/GNU.cmake
@@ -123,7 +123,7 @@ endif ()
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv)
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -Wformat -Wformat-security -Werror=format-security
-fstack-protector-strong )
-if (CMAKE_SYSTEM_PROCESSOR MATCHES "(AMD64|amd64|i.86|x86)" AND NOT EMSCRIPTEN)
+if (FALSE)
set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} $<$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},8.0>>:-fcf-protection=full>)
endif ()
set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} $<$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},8.0>>:-fstack-clash-protection>)

Binary file not shown.

BIN
tbb-2022.3.0.tar.gz LFS Normal file

Binary file not shown.

162
tbb-python-setuptools.patch Normal file
View File

@@ -0,0 +1,162 @@
From c654cdc5916cfddbffeb056d9e80809e5ba17c33 Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
Date: Sat, 3 Jan 2026 14:24:05 +0100
Subject: [PATCH] Replace 'setup.py build -I* -L*' usage with pip and
environment variables
---
python/CMakeLists.txt | 18 +++++++++++-------
python/README.md | 5 ++---
python/pyproject.toml | 3 +++
python/setup.py | 30 +++++++++++++++++++++++-------
4 files changed, 39 insertions(+), 17 deletions(-)
create mode 100644 python/pyproject.toml
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 748921a592..e507b97c13 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -1,4 +1,5 @@
-# Copyright (c) 2020-2023 Intel Corporation
+# Copyright (c) 2020-2025 Intel Corporation
+# Copyright (c) 2026 UXL Foundation Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -27,7 +28,7 @@ add_custom_target(
get_target_property(TBB_INCLUDES tbb INTERFACE_INCLUDE_DIRECTORIES)
foreach(dir ${TBB_INCLUDES})
if (${dir} MATCHES "<BUILD_INTERFACE:" OR TBB_FOUND)
- set(TBB4PY_INCLUDE_STRING "-I${dir} ${TBB4PY_INCLUDE_STRING}")
+ set(TBB4PY_INCLUDE_STRING "${dir} ${TBB4PY_INCLUDE_STRING}")
endif()
endforeach()
string(STRIP "${TBB4PY_INCLUDE_STRING}" TBB4PY_INCLUDE_STRING)
@@ -37,10 +38,13 @@ add_custom_target(
ALL
DEPENDS tbb python_copy
COMMAND
- ${PYTHON_EXECUTABLE} ${PYTHON_BUILD_WORK_DIR}/setup.py
- build -b${PYTHON_BUILD_WORK_DIR}
- build_ext ${TBB4PY_INCLUDE_STRING} -L$<TARGET_FILE_DIR:TBB::tbb>
- install --prefix build -f
+ ${CMAKE_COMMAND} -E env
+ TBB_INCLUDEDIRS="${TBB4PY_INCLUDE_STRING}"
+ TBB_LIBDIRS=$<TARGET_FILE_DIR:TBB::tbb>
+ ${PYTHON_EXECUTABLE} -m pip install
+ --no-build-isolation
+ --prefix build
+ ./${PYTHON_BUILD_WORK_DIR}
COMMENT "Build and install to work directory the oneTBB Python module"
)
@@ -50,7 +54,7 @@ add_test(NAME python_test
-DPYTHON_MODULE_BUILD_PATH=${PYTHON_BUILD_WORK_DIR}/build
-P ${PROJECT_SOURCE_DIR}/cmake/python/test_launcher.cmake)
-install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PYTHON_BUILD_WORK_DIR}/build/
+install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/
DESTINATION .
COMPONENT tbb4py)
diff --git a/python/README.md b/python/README.md
index e7e3318d30..30afe9a364 100644
--- a/python/README.md
+++ b/python/README.md
@@ -20,7 +20,7 @@ For more information and examples, please refer to [forum discussion](https://co
- **tbb** - The folder contains Python module sources.
## Files
- - **setup.py** - Standard Python setup script.
+ - **setup.py** - Standard Python setuptools script. Calling it directly is deprecated.
- **TBB.py** - Alternative entry point for Python module.
## CMake predefined targets
@@ -33,8 +33,7 @@ For more information and examples, please refer to [forum discussion](https://co
- `pydoc tbb` - Read built-in documentation for Python interfaces.
- `python3 -m tbb your_script.py` - Run your_script.py in context of `with tbb.Monkey():` when oneTBB is enabled. By default only multi-threading will be covered.
- `python3 -m tbb --ipc your_script.py` - Run your_script.py in context of `with tbb.Monkey():` when oneTBB enabled in both multi-threading and multi-processing modes.
- - `python3 setup.py build -b<output_directory_path> -f check` - Build oneTBB module for Python. (Prerequisites: built and sourced oneTBB and IRML libraries)
- - `python3 setup.py build -b<output_directory_path> build_ext -I<path_to_tbb_includes> -L<path_to_prebuilt_libraries> install -f <additional_flags> ` - Build and install oneTBB module for Python. (Prerequisites: built oneTBB and IRML libraries)
+ - `TBB_INCLUDEDIRS=<path_to_tbb_includes> TBB_LIBDIRS=<path_to_prebuilt_libraries> python3 -m pip install --no-build-isolation --prefix <output_directory_path>` - Build and install oneTBB module for Python. (Prerequisites: built oneTBB and IRML libraries)
- `python3 -m TBB test` - run test for oneTBB module for Python.
- `python3 -m tbb test` - run test for oneTBB module for Python.
diff --git a/python/pyproject.toml b/python/pyproject.toml
new file mode 100644
index 0000000000..09977b5b8e
--- /dev/null
+++ b/python/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools>=61"]
+build-backend = "setuptools.build_meta"
diff --git a/python/setup.py b/python/setup.py
index edf8580ff8..779660a594 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -1,4 +1,5 @@
-# Copyright (c) 2016-2023 Intel Corporation
+# Copyright (c) 2016-2025 Intel Corporation
+# Copyright (c) 2026 UXL Foundation Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,8 +18,12 @@
import platform
import os
-from distutils.core import *
-from distutils.command.build import build
+try:
+ from setuptools import setup, Extension
+ from setuptools.command.build import build
+except ImportError:
+ from distutils.core import setup, Extension
+ from distutils.command.build import build
rundir = os.getcwd()
os.chdir(os.path.abspath(os.path.dirname(__file__)))
@@ -57,19 +62,31 @@
compile_flags = ['-std=c++11', '-Wno-unused-variable']
tbb_lib_name = 'tbb'
+tbb_includedirs = os.getenv("TBB_INCLUDEDIRS", "")
+tbb_libdirs = os.getenv("TBB_LIBDIRS", "")
+
+if use_compiler_tbb and (tbb_includedirs or tbb_libdirs):
+ print("Warning: Ignoring TBB_INCLUDEDIRS=%s and TBB_LIBDIRS=%s "
+ "because using oneTBB from Intel (R) C++ Compiler is set"
+ % (tbb_includedirs, tbb_libdirs))
+
_tbb = Extension("tbb._api", ["tbb/api.i"],
- include_dirs=[os.path.join(tbb_root, 'include')] if not use_compiler_tbb else [],
+ include_dirs=([os.path.join(tbb_root, 'include')]
+ + tbb_includedirs.split()
+ ) if not use_compiler_tbb else [],
swig_opts =['-c++', '-O', '-threads'] + ( # add '-builtin' later
['-I' + os.path.join(tbb_root, 'include')] if not use_compiler_tbb else []),
extra_compile_args=compile_flags + tbb_flag,
extra_link_args=tbb_flag,
libraries =([tbb_lib_name] if not use_compiler_tbb else []) +
(['irml'] if platform.system() == "Linux" else []),
- library_dirs=[ rundir, # for custom-builds
+ library_dirs=([rundir, # for custom-builds
os.path.join(tbb_root, 'lib', 'intel64', 'gcc4.8'), # for Linux
os.path.join(tbb_root, 'lib'), # for MacOS
os.path.join(tbb_root, 'lib', 'intel64', 'vc_mt'), # for Windows
- ] if not use_compiler_tbb else [],
+ ]
+ + tbb_libdirs.split()
+ ) if not use_compiler_tbb else [],
language ='c++',
)
@@ -98,7 +115,6 @@ class TBBBuild(build):
'Intended Audience :: System Administrators',
'Intended Audience :: Other Audience',
'Intended Audience :: Science/Research',
- 'License :: OSI Approved :: Apache Software License',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: Linux',

View File

@@ -1,3 +1,67 @@
-------------------------------------------------------------------
Sat Jan 3 14:49:18 UTC 2026 - Jan Engelhardt <jengelh@inai.de>
- Make build recipe POSIX sh compatible
-------------------------------------------------------------------
Fri Jan 2 21:06:28 UTC 2026 - Ben Greiner <code@bnavigator.de>
- Update to 2022.3.0
* [Preview] Introduced API for setting dynamic task dependencies
in task_group. This allows successor tasks to execute only
after all their predecessors have completed.
* Extended task_arena with API support for enqueuing functions
into a task_group and waiting for the task_group to complete.
* Introduced API for setting and getting the assertion handler.
This allows applications to set their own assertion handling
functions.
- Update cf-prot.patch, partially fixed upstream
- Add tbb-python-setuptools.patch
* gh#uxlfoundation/oneTBB#1941
* replace setup.py direct call
-------------------------------------------------------------------
Wed Jul 30 03:38:43 UTC 2025 - Alessandro de Oliveira Faria <cabelo@opensuse.org>
- Change tbb-2022.2.0.tar.gz file [boo#1247142]
-------------------------------------------------------------------
Thu Jul 17 08:16:41 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Drop excessive gcc flags: add cf-prot.patch.
-------------------------------------------------------------------
Mon Jun 30 19:18:22 UTC 2025 - Alessandro de Oliveira Faria <cabelo@opensuse.org>
- Update to version 2022.2.0:
* Improved Hybrid CPU and NUMA Platforms API Support: Enhanced
API availability for better compatibility with Hybrid CPU and
NUMA platforms.
* Refined Environment Setup: Replaced CPATH with C_INCLUDE_PATH
and CPLUS_INCLUDE_PATH in environment setup to avoid
unintended compiler warnings caused by globally applied
include paths.
-------------------------------------------------------------------
Tue May 6 13:19:31 UTC 2025 - Eyad Issa <eyadlorenzo@gmail.com>
- Update to version 2022.1.0:
* Introduced the ONETBB_SPEC_VERSION macro to specify the version
of oneAPI specification implemented by the current version of
the library.
* blocked_nd_range is now a fully supported feature.
- Migrated URLs to the new UXL Foundation organization
- Use common URL format for Source URL
- Format .spec file
- Build with ninja
-------------------------------------------------------------------
Thu Apr 3 05:23:16 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
- Support older and current versions of setuptools WRT to the case of
the metadata directory.
-------------------------------------------------------------------
Wed Jan 8 17:41:12 UTC 2025 - Matej Cepl <mcepl@cepl.eu>

View File

@@ -1,7 +1,7 @@
#
# spec file for package tbb
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2023 Alessandro de Oliveira Faria (A.K.A. CABELO)
#
# All modifications and additions to the file contributed by third parties
@@ -40,25 +40,29 @@
%bcond_with python3
%endif
Name: tbb
Version: 2022.0.0
Version: 2022.3.0
Release: 0
Summary: oneAPI Threading Building Blocks (oneTBB)
License: Apache-2.0
Group: Development/Libraries/C and C++
URL: https://oneapi-src.github.io/oneTBB/
Source0: https://github.com/oneapi-src/oneTBB/archive/v%{version}.tar.gz#/tbb-%{version}.tar.gz
URL: https://uxlfoundation.github.io/oneTBB/
Source0: https://github.com/uxlfoundation/oneTBB/archive/v%{version}/%{name}-%{version}.tar.gz
Source99: tbb-rpmlintrc
# PATCH-FIX-UPSTREAM tbb-python-setuptools.patch gh#uxlfoundation/oneTBB#1941, remove deprecated setup.py usage
Patch1: tbb-python-setuptools.patch
# PATCH-FIX-OPENSUSE cmake-remove-include-path.patch -- openCV include error
Patch2: cmake-remove-include-path.patch
Patch4: add-cmake-check-for-libatomic-requirement-when-build.patch
Patch5: cf-prot.patch
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: hwloc-devel
BuildRequires: ninja
%if %{with python3}
BuildRequires: %{python_module devel >= 3.5}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros
BuildRequires: swig >= 3.0.6
@@ -191,14 +195,15 @@ scale the code.
This package contains the header files needed for development with oneTBB.
%prep
%setup -q -n oneTBB-%{version}
%autopatch -p1
%autosetup -n oneTBB-%{version} -p1
# fix python version
sed -i 's/version\s*="0.2"/version = "%{version}"/' python/setup.py
sed -i '1{/^#!.*env python/ d}' python/TBB.py python/tbb/*.py
%build
# Use ninja to build
%define __builder ninja
# HWLOC: no automatic find on SLE-12 (older cmake)
# TBB_TEST: don't compile by default
# TBB4PY: use cmake build system to build libirml in the python tree
@@ -221,29 +226,24 @@ sed -i '1{/^#!.*env python/ d}' python/TBB.py python/tbb/*.py
%endif
source */vars.sh
cd ..
# rebuild for every python flavor
%if %{with python3}
pushd python
cd python/python_build
%pyproject_wheel
popd
cd -
%endif
%install
# create empty python build dir (?)
mkdir -p build/python/build
%cmake_install
source build/*/vars.sh
. build/*/vars.sh
%if %{with python3}
pushd python
cd build/python/python_build/
%pyproject_install
%{python_expand %fdupes %{buildroot}%{$python_sitearch}
rm -rfv %{buildroot}%{$python_sitearch}/TBB-%{version}*.egg
}
popd
%python_expand %fdupes %{buildroot}%{$python_sitearch}
cd -
%endif
# we install it into the devel package docdir
@@ -261,20 +261,16 @@ test -f %{buildroot}%{_libdir}/pkgconfig/tbb32.pc && mv %{buildroot}%{_libdir}/p
%if %{with python3}
# avoid shuffling the existing build dir
mkdir python-test
pushd python-test
cd python-test
export LD_LIBRARY_PATH="%{buildroot}%{_libdir}"
%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} timeout 5m $python -m tbb test -v
popd
cd -
%endif
%post -n libtbb%{so_ver} -p /sbin/ldconfig
%postun -n libtbb%{so_ver} -p /sbin/ldconfig
%post -n libtbbmalloc%{so_ver_malloc} -p /sbin/ldconfig
%postun -n libtbbmalloc%{so_ver_malloc} -p /sbin/ldconfig
%post -n libirml%{so_ver_irml} -p /sbin/ldconfig
%postun -n libirml%{so_ver_irml} -p /sbin/ldconfig
%post -n libtbbbind%{tbbbind_suffix}-%{so_ver_bind} -p /sbin/ldconfig
%postun -n libtbbbind%{tbbbind_suffix}-%{so_ver_bind} -p /sbin/ldconfig
%ldconfig_scriptlets -n libtbb%{so_ver}
%ldconfig_scriptlets -n libtbbmalloc%{so_ver_malloc}
%ldconfig_scriptlets -n libirml%{so_ver_irml}
%ldconfig_scriptlets -n libtbbbind%{tbbbind_suffix}-%{so_ver_bind}
%files -n libtbb%{so_ver}
%{_libdir}/libtbb.so.%{so_ver}*
@@ -308,7 +304,7 @@ popd
%files %{python_files %{name}}
%{python_sitearch}/tbb
%{python_sitearch}/TBB.py
%{python_sitearch}/TBB-%{version}*-info
%{python_sitearch}/[Tt][Bb][Bb]-%{version}.dist-info
%pycache_only %{python_sitearch}/__pycache__/TBB*
%endif