tbb/tbb.spec

507 lines
16 KiB
RPMSpec
Raw Normal View History

2017-11-25 20:33:59 +00:00
%global upver 2018
%global uprel 5
2008-02-13 18:01:54 +00:00
%if 0%{?fedora} || 0%{?rhel} >= 8
%global with_python3 1
%endif
2014-01-12 14:30:52 +00:00
Name: tbb
2008-02-13 18:01:54 +00:00
Summary: The Threading Building Blocks library abstracts low-level threading details
2017-11-25 20:33:59 +00:00
Version: %{upver}%{?uprel:.%{uprel}}
Release: 2.0.riscv64%{?dist}
License: ASL 2.0
2014-01-12 14:30:52 +00:00
Group: Development/Tools
URL: http://threadingbuildingblocks.org/
2011-07-26 14:41:37 +00:00
2017-11-25 20:33:59 +00:00
Source0: https://github.com/01org/tbb/archive/%{upver}%{?uprel:_U%{uprel}}.tar.gz
# These three are downstream sources.
Source6: tbb.pc
Source7: tbbmalloc.pc
Source8: tbbmalloc_proxy.pc
2013-06-06 18:18:15 +00:00
# Propagate CXXFLAGS variable into flags used when compiling C++.
# This is so that RPM_OPT_FLAGS are respected.
Patch1: tbb-4.4-cxxflags.patch
2013-06-06 18:18:15 +00:00
# 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
2012-08-28 12:20:50 +00:00
2013-12-03 11:21:02 +00:00
# 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
2013-12-03 11:21:02 +00:00
2016-02-20 18:44:58 +00:00
BuildRequires: gcc-c++
BuildRequires: python2-devel
BuildRequires: swig
%if 0%{?with_python3}
BuildRequires: python3-devel
%endif
2008-02-13 18:01:54 +00:00
%description
Threading Building Blocks (TBB) is a C++ runtime library that
abstracts the low-level threading details necessary for optimal
multi-core performance. It uses common C++ templates and coding style
to eliminate tedious threading implementation work.
TBB requires fewer lines of code to achieve parallelism than other
threading models. The applications you write are portable across
platforms. Since the library is also inherently scalable, no code
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
2011-07-26 14:41:37 +00:00
Requires: %{name}%{?_isa} = %{version}-%{release}
2008-02-13 18:01:54 +00:00
%description devel
Header files and shared object symlinks for the Threading Building
Blocks (TBB) C++ libraries.
%package doc
Summary: The Threading Building Blocks documentation
Group: Documentation
Provides: bundled(jquery)
2008-02-13 18:01:54 +00:00
%description doc
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
2008-02-13 18:01:54 +00:00
%prep
2018-06-01 03:20:43 +00:00
%autosetup -p1 -n %{name}-%{upver}_U%{uprel}
2008-02-13 18:01:54 +00:00
2016-02-20 18:44:58 +00:00
# For repeatable builds, don't query the hostname or architecture
sed -i 's/"`hostname -s`" ("`uname -m`"/fedorabuild (%{_arch}/' \
2016-02-20 18:44:58 +00:00
build/version_info_linux.sh
# Do not assume the RTM instructions are available
sed -i 's/-mrtm//' build/linux.gcc.inc
# Invoke the right python binary directly
sed -i 's,env python,python2,' 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
fi
# Prepare to build the python module for both python 2 and python 3
cp -a python python3
2018-01-25 03:12:30 +00:00
sed -i 's,python,python3,g' python3/Makefile python3/rml/Makefile
sed -i 's,python2,python3,' python3/TBB.py python3/tbb/__*.py
2008-02-13 18:01:54 +00:00
%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 \
2018-01-25 03:12:30 +00:00
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" \
%ifnarch riscv64
LDFLAGS="-Wl,--as-needed $RPM_LD_FLAGS"
%else
LDFLAGS="-Wl,--as-needed -latomic $RPM_LD_FLAGS"
%endif
for file in %{SOURCE6} %{SOURCE7} %{SOURCE8}; do
base=$(basename ${file})
sed 's/_FEDORA_VERSION/%{version}/' ${file} > ${base}
touch -r ${file} ${base}
done
2008-02-13 18:01:54 +00:00
# Build for python 2
. 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" \
%ifnarch riscv64
LDFLAGS="$RPM_LD_FLAGS"
%else
LDFLAGS="-latomic $RPM_LD_FLAGS"
%endif
2018-01-25 03:12:30 +00:00
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" \
%ifnarch riscv64
LDFLAGS="$RPM_LD_FLAGS"
%else
LDFLAGS="-latomic $RPM_LD_FLAGS"
%endif
2018-01-25 03:12:30 +00:00
cp -p rml/libirml.so* .
%py3_build
popd
%endif
%check
make test tbb_build_prefix=obj stdver=c++14 CXXFLAGS="$RPM_OPT_FLAGS"
2008-02-13 18:01:54 +00:00
%install
mkdir -p $RPM_BUILD_ROOT/%{_libdir}
mkdir -p $RPM_BUILD_ROOT/%{_includedir}
2008-02-13 18:01:54 +00:00
%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}
ln -s $file.so.2 $RPM_BUILD_ROOT/%{_libdir}/$file.so
2008-02-13 18:01:54 +00:00
done
popd
pushd include
find tbb -type f ! -name \*.htm\* -exec \
2008-02-13 18:01:54 +00:00
install -p -D -m 644 {} $RPM_BUILD_ROOT/%{_includedir}/{} \
\;
popd
for file in %{SOURCE6} %{SOURCE7} %{SOURCE8}; do
install -p -D -m 644 $(basename ${file}) \
$RPM_BUILD_ROOT/%{_libdir}/pkgconfig/$(basename ${file})
done
# Install the rml headers
mkdir -p $RPM_BUILD_ROOT%{_includedir}/rml
cp -p src/rml/include/*.h $RPM_BUILD_ROOT%{_includedir}/rml
# Python 2 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}
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
2018-06-01 03:20:43 +00:00
%ldconfig_scriptlets libs
2008-02-13 18:01:54 +00:00
%files
%doc doc/Release_Notes.txt README.md
%license LICENSE
2008-02-13 18:01:54 +00:00
%{_libdir}/*.so.2
%{_libdir}/libirml.so.1
%ifarch %{ix86}
%{_libdir}/sse2/*.so.2
%endif
2008-02-13 18:01:54 +00:00
%files devel
%doc CHANGES cmake/README.rst
%{_includedir}/rml
2008-02-13 18:01:54 +00:00
%{_includedir}/tbb
%{_libdir}/*.so
%{_libdir}/cmake/
%{_libdir}/pkgconfig/*.pc
2008-02-13 18:01:54 +00:00
%files doc
2013-05-22 13:32:02 +00:00
%doc doc/Release_Notes.txt
%doc doc/html
2008-02-13 18:01:54 +00:00
%files -n python2-%{name}
%doc python/index.html
%{python2_sitearch}/TBB*
2018-01-25 03:12:30 +00:00
%{python2_sitearch}/tbb/
%if 0%{?with_python3}
%files -n python3-%{name}
%doc python3/index.html
%{python3_sitearch}/TBB*
2018-01-25 03:12:30 +00:00
%{python3_sitearch}/tbb/
%{python3_sitearch}/__pycache__/TBB*
%endif
2008-02-13 18:01:54 +00:00
%changelog
* Mon Aug 27 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 2018.5-2.0.riscv64
- Add support for RISC-V (riscv64)
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2018.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jul 3 2018 Jerry James <loganjerry@gmail.com> - 2018.5-1
- Rebase to 2018 update 5
- Run check script on all architectures
2018-06-19 09:28:20 +00:00
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 2018.4-2
- Rebuilt for Python 3.7
2018-06-01 03:20:43 +00:00
* Thu May 31 2018 Jerry James <loganjerry@gmail.com> - 2018.4-1
- Rebase to 2018 update 4
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2018.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Jan 30 2018 Jerry James <loganjerry@gmail.com> - 2018.2-4
- Build libirml with the correct flags (bz 1540268)
- Do not build with -mrtm
* Mon Jan 29 2018 Iryna Shcherbina <ishcherb@redhat.com> - 2018.2-3
- Fix Python 2 dependency from python3-tbb
* Fri Jan 26 2018 Jerry James <loganjerry@gmail.com> - 2018.2-2
- Install libirml for the python interfaces
2018-01-25 03:12:30 +00:00
* Wed Jan 24 2018 Jerry James <loganjerry@gmail.com> - 2018.2-1
- Rebase to 2018 update 2
2017-11-25 20:33:59 +00:00
* Sat Nov 25 2017 Jerry James <loganjerry@gmail.com> - 2018.1-1
- Rebase to 2018 update 1
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2017.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2017.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
2017-11-25 20:33:59 +00:00
* Thu Jun 8 2017 Jerry James <loganjerry@gmail.com> - 2017.7-1
- Rebase to 2017 update 7
- Use the license macro
- Ship the new cmake files in -devel
2017-11-25 20:33:59 +00:00
* Tue May 16 2017 Jerry James <loganjerry@gmail.com> - 2017.6-1
2017-05-16 03:00:35 +00:00
- Rebase to 2017 update 6
2017-11-25 20:33:59 +00:00
* Fri Mar 17 2017 Jerry James <loganjerry@gmail.com> - 2017.5-1
- Rebase to 2017 update 5
- Change version scheme again to match upstream's change
- New source URL on github
- Drop upstreamed patch to fix detection of s390x as 64-bit arch
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2017-8.20161128
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Jan 02 2017 Dan Horák <dan[at]danny.cz> - 2017-7.20161128
- Fix detection of s390x as 64-bit arch (#1379632)
2016-12-19 17:20:38 +00:00
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 2017-6.20161128
- Rebuild for Python 3.6
* Fri Dec 2 2016 Jerry James <loganjerry@gmail.com> - 2017-5.20161128
- Rebase to 2017 update 3
- Drop upstreamed s390x patch
2016-11-03 01:55:40 +00:00
* Wed Nov 2 2016 Jerry James <loganjerry@gmail.com> - 2017-4.20161004
- Rebase to 2017 update 2
* Fri Oct 07 2016 Dan Horák <dan[at]danny.cz> - 2017-3.20160916
- Fix detection of s390x as 64-bit arch (#1379632)
2016-09-30 16:14:47 +00:00
* Fri Sep 30 2016 Jerry James <loganjerry@gmail.com> - 2017-2.20160916
- New upstream release
* Thu Sep 22 2016 Jerry James <loganjerry@gmail.com> - 2017-1.20160722
- Rebase to 2017, new upstream version numbering scheme
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.4-8.20160526
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Wed Jun 1 2016 Jerry James <loganjerry@gmail.com> - 4.4-7.20160526
- Rebase to 4.4u5
- Build in C++14 mode
- Build the new python module
2016-05-06 15:01:55 +00:00
* Fri May 6 2016 Jerry James <loganjerry@gmail.com> - 4.4-6.20160413
- Rebase to 4.4u4
* Mon Apr 4 2016 Jerry James <loganjerry@gmail.com> - 4.4-5.20160316
- Add -fno-delete-null-pointer-checks to fix optimized code
* Fri Mar 18 2016 Jerry James <loganjerry@gmail.com> - 4.4-4.20160316
- Updated upstream tarball
- Link with RPM_LD_FLAGS
2016-02-20 18:44:58 +00:00
* Sat Feb 20 2016 Jerry James <loganjerry@gmail.com> - 4.4-3.20160128
- Rebase to 4.4u3
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.4-2.20151115
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Jan 15 2016 Jerry James <loganjerry@gmail.com> - 4.4-1.20151115
- Rebase to 4.4u2
- Fix the mfence patch to actually emit a memory barrier (bz 1288314)
- Build an sse2 version for i386 for better performance on capable CPUs
- Enable use of C++0x features
- Drop out-of-date CHANGES.txt from git
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.3-3.20141204
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
2015-05-02 16:07:39 +00:00
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 4.3-2.20141204
- Rebuilt for GCC 5 C++11 ABI change
2015-01-19 19:28:45 +00:00
* Mon Jan 19 2015 Petr Machata <pmachata@redhat.com> - 4.3-1.20141204
- Rebase to 4.3u2
- Drop ExclusiveArch
* Thu Sep 25 2014 Karsten Hopp <karsten@redhat.com> 4.1-9.20130314
- enable ppc64le and run 'make test' on that new arch
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1-8.20130314
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1-7.20130314
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
2014-01-12 14:30:52 +00:00
* Sun Jan 12 2014 Peter Robinson <pbrobinson@fedoraproject.org> 4.1-6.20130314
- Build on aarch64, minor spec cleanups
2013-12-03 11:21:02 +00:00
* Tue Dec 3 2013 Petr Machata <pmachata@redhat.com> - 4.1-5.20130314
- Fix building with -Werror=format-security (tbb-4.1-dont-snip-Wall.patch)
* Thu Oct 3 2013 Petr Machata <pmachata@redhat.com> - 4.1-4.20130314
- Fix %%install to also install include files that are not named *.h
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1-3.20130314
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Tue May 28 2013 Petr Machata <pmachata@redhat.com> - 4.1-3.20130314
- Enable ARM arches
2013-05-28 15:11:00 +00:00
* Wed May 22 2013 Petr Machata <pmachata@redhat.com> - 4.1-2.20130314
- Fix mfence patch. Since the __TBB_full_memory_fence macro was
function-call-like, it stole () intended for function invocation.
2013-05-22 13:32:02 +00:00
* Wed May 22 2013 Petr Machata <pmachata@redhat.com> - 4.1-1.20130314
- Rebase to 4.1 update 3
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-7.20120408
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
2012-08-28 12:20:50 +00:00
* Tue Aug 28 2012 Petr Machata <pmachata@redhat.com> - 4.0-6.20120408
- Fix build on PowerPC
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-5.20120408
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Thu Jun 7 2012 Petr Machata <pmachata@redhat.com> - 4.0-4.20120408
- Rebase to 4.0 update 4
- Refresh Getting_Started.pdf, Reference.pdf, Tutorial.pdf
- Provide pkg-config files
- Resolves: #825402
2012-04-05 13:30:21 +00:00
* Thu Apr 05 2012 Karsten Hopp <karsten@redhat.com> 4.0-3.20110809
- tbb builds now on PPC(64)
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-2.20110809
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Tue Oct 18 2011 Petr Machata <pmachata@redhat.com> - 4.0-1.20110809
- Rebase to 4.0
- Port the mfence patch
- Refresh the documentation bundle
2011-07-26 14:41:37 +00:00
* Tue Jul 26 2011 Petr Machata <pmachata@redhat.com> - 3.0-1.20110419
- Rebase to 3.0-r6
- Port both patches
- Package Design_Patterns.pdf
- Thanks to Richard Shaw for initial rebase patch
- Resolves: #723043
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2-3.20090809
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Thu Jun 10 2010 Petr Machata <pmachata@redhat.com> - 2.2-2.20090809
- Replace mfence instruction with xchg to make it run on ia32-class
machines without SSE2.
- Resolves: #600654
2009-11-03 15:37:55 +00:00
* Tue Nov 3 2009 Petr Machata <pmachata@redhat.com> - 2.2-1.20090809
- New upstream 2.2
- Resolves: #521571
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1-3.20080605
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1-2.20080605
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Fri Jun 13 2008 Petr Machata <pmachata@redhat.com> - 2.1-1.20080605
- New upstream 2.1
- Drop soname patch, parallel make patch, and GCC 4.3 patch
2008-02-13 18:01:54 +00:00
* Wed Feb 13 2008 Petr Machata <pmachata@redhat.com> - 2.0-4.20070927
- Review fixes
- Use updated URL
- More timestamp preservation
- Initial import into Fedora CVS
* Mon Feb 11 2008 Petr Machata <pmachata@redhat.com> - 2.0-3.20070927
- Review fixes
- Preserve timestamp of installed files
- Fix soname not to contain "debug"
* Tue Feb 5 2008 Petr Machata <pmachata@redhat.com> - 2.0-2.20070927
- Review fixes
- GCC 4.3 patchset
- Add BR util-linux net-tools
- Add full URL to Source0
- Build in debug mode to work around problems with GCC 4.3
* Mon Dec 17 2007 Petr Machata <pmachata@redhat.com> - 2.0-1.20070927
- Initial package.
- Using SONAME patch from Debian.