%bcond_without python2 # boost-python[2] support
%bcond_without python3 # boost-python3 support
%bcond_without numpy # boost-numpy support
+%bcond_without doc # don't package documentation
%define fver %(echo %{version} | tr . _)
Summary: The Boost C++ Libraries
Summary(pl.UTF-8): Biblioteki C++ "Boost"
Name: boost
-Version: 1.68.0
+Version: 1.81.0
Release: 1
License: Boost Software License and others
Group: Libraries
-Source0: http://downloads.sourceforge.net/boost/%{name}_%{fver}.tar.bz2
-# Source0-md5: 7fbd1890f571051f2a209681d57d486a
+Source0: https://boostorg.jfrog.io/artifactory/main/release/%{version}/source/%{name}_%{fver}.tar.bz2
+# Source0-md5: 3276c0637d1be8687740c550237ef999
Patch0: %{name}-link.patch
-Patch1: %{name}-x32-context.patch
-Patch2: %{name}-clean-gcc-flags.patch
+Patch1: %{name}-clean-gcc-flags.patch
+Patch2: %{name}-fallthrough.patch
# FC Patches:
Patch201: %{name}-python-abi_letters.patch
# https://svn.boost.org/trac/boost/ticket/5637
BuildRequires: libicu-devel
BuildRequires: libstdc++-devel >= 6:4.7
BuildRequires: perl-base
-%if %{with python}
+%if %{with python2}
BuildRequires: python-devel >= 2.2
%{?with_numpy:BuildRequires: python-numpy-devel}
%endif
BuildRequires: python3-devel
%{?with_numpy:BuildRequires: python3-numpy-devel}
%endif
+BuildRequires: rpm-build >= 4.6
BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.734
+BuildRequires: rpmbuild(macros) >= 1.750
BuildRequires: zlib-devel
+Obsoletes: boost-signals < 1.69
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define specflags -DBOOST_IOSTREAMS_USE_DEPRECATED=1
%define py2v %(echo %{py_ver} | tr -d .)
%define py3v %(echo %{py3_ver} | tr -d .)
+%if %{_ver_ge "%{py3_ver}" "3.8"}
+%define py3v_suffix ""
+%else
+%define py3v_suffix "m"
+%endif
+
%description
The Boost web site provides free peer-reviewed portable C++ source
libraries. The emphasis is on libraries which work well with the C++
Requires: %{name}-fiber = %{version}-%{release}
Requires: %{name}-filesystem = %{version}-%{release}
Requires: %{name}-graph = %{version}-%{release}
+Requires: %{name}-json = %{version}-%{release}
Requires: %{name}-locale = %{version}-%{release}
Requires: %{name}-log = %{version}-%{release}
Requires: %{name}-program_options = %{version}-%{release}
Requires: %{name}-regex = %{version}-%{release}
-Requires: %{name}-signals = %{version}-%{release}
Requires: %{name}-system = %{version}-%{release}
Requires: %{name}-test = %{version}-%{release}
Requires: %{name}-thread = %{version}-%{release}
Requires: %{name}-timer = %{version}-%{release}
+Requires: %{name}-url = %{version}-%{release}
Requires: %{name}-wave = %{version}-%{release}
Requires: libstdc++-devel >= 6:4.7
-Obsoletes: boost-any-devel
-Obsoletes: boost-array-devel
-Obsoletes: boost-asio
-Obsoletes: boost-bind-devel
-Obsoletes: boost-call_traits-devel
-Obsoletes: boost-compatibility-devel
-Obsoletes: boost-compose-devel
-Obsoletes: boost-compressed_pair-devel
-Obsoletes: boost-concept_check-devel
-Obsoletes: boost-conversion-devel
-Obsoletes: boost-crc-devel
-Obsoletes: boost-date_time-devel
-Obsoletes: boost-filesystem-devel
-Obsoletes: boost-graph-devel
-Obsoletes: boost-mem_fn-devel
-Obsoletes: boost-mpl-devel
-Obsoletes: boost-preprocessor-devel
-Obsoletes: boost-program_options-devel
-Obsoletes: boost-ref-devel
-Obsoletes: boost-regex-devel
-Obsoletes: boost-signals-devel
-Obsoletes: boost-spirit-devel
-Obsoletes: boost-statechart-devel
-Obsoletes: boost-static_assert-devel
-Obsoletes: boost-test-devel
-Obsoletes: boost-thread-devel
-Obsoletes: boost-tr1-devel
-Obsoletes: boost-type_traits-devel
-Obsoletes: boost-typeof-devel
-Obsoletes: boost-uBLAS-devel
-Obsoletes: boost-utility-devel
-Obsoletes: boost-wave-devel
-Obsoletes: boost-xpressive-devel
+Obsoletes: boost-any-devel < 1.35
+Obsoletes: boost-array-devel < 1.35
+Obsoletes: boost-asio < 1.3.0
+Obsoletes: boost-bind-devel < 1.35
+Obsoletes: boost-call_traits-devel < 1.34.1-2
+Obsoletes: boost-compatibility-devel < 1.35
+Obsoletes: boost-compose-devel < 1.31
+Obsoletes: boost-compressed_pair-devel < 1.35
+Obsoletes: boost-concept_check-devel < 1.33.1-1
+Obsoletes: boost-conversion-devel < 1.33.1-1
+Obsoletes: boost-crc-devel < 1.35
+Obsoletes: boost-date_time-devel < 1.35
+Obsoletes: boost-filesystem-devel < 1.35
+Obsoletes: boost-graph-devel < 1.35
+Obsoletes: boost-mem_fn-devel < 1.33.1-1
+Obsoletes: boost-mpl-devel < 1.33.1-1
+Obsoletes: boost-preprocessor-devel < 1.33.1-1
+Obsoletes: boost-program_options-devel < 1.35
+Obsoletes: boost-ref-devel < 1.34.1-2
+Obsoletes: boost-regex-devel < 1.35
+Obsoletes: boost-signals-devel < 1.35
+Obsoletes: boost-spirit-devel < 1.35
+Obsoletes: boost-statechart-devel < 1.35
+Obsoletes: boost-static_assert-devel < 1.33.1-1
+Obsoletes: boost-test-devel < 1.35
+Obsoletes: boost-thread-devel < 1.35
+Obsoletes: boost-tr1-devel < 1.35
+Obsoletes: boost-type_traits-devel < 1.33.1-1
+Obsoletes: boost-typeof-devel < 1.35
+Obsoletes: boost-uBLAS-devel < 1.35
+Obsoletes: boost-utility-devel < 1.33.1-1
+Obsoletes: boost-wave-devel < 1.35
+Obsoletes: boost-xpressive-devel < 1.35
%description devel
Header files for the Boost C++ libraries.
Summary(pl.UTF-8): Statyczne wersje podstawowych bibliotek C++ Boost
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
-Obsoletes: boost-static < 1.33
+Obsoletes: boost-date_time-static < 1.35
+Obsoletes: boost-filesystem-static < 1.35
+Obsoletes: boost-graph-static < 1.35
+Obsoletes: boost-program_options-static < 1.35
+Obsoletes: boost-regex-static < 1.35
+Obsoletes: boost-signals-static < 1.35
+Obsoletes: boost-test-static < 1.35
+Obsoletes: boost-thread-static < 1.35
+Obsoletes: boost-wave-static < 1.35
%description static
Static version of base Boost C++ libraries.
strukturach danych typu graf za pomocą algorytmów związanych z
grafami.
+%package json
+Summary: Boost.JSON - a portable C++ JSON library
+Summary(pl.UTF-8): Boost.JSON - przenośna biblioteka C++ dla formatu JSON
+Group: Development/Libraries
+
+%description json
+Boost.JSON is a portable C++ library which provides containers and
+algorithms that implement JavaScript Object Notation, or simply
+"JSON", a lightweight data-interchange format.
+
+%description json -l pl.UTF-8
+Boost.JSON to przenośna biblioteka C++, która dostarcza kontenery oraz
+algorytmy implementujące JavaScript Object Notation, lub po prostu
+"JSON", lekki format wymiany danych.
+
%package locale
Summary: Provide localization and Unicode handling tools for C++
Summary(pl.UTF-8): Narzędzia do obsługi lokalizacji i Unikodu w C++
%description regex -l pl.UTF-8
Biblioteka współdzielona do obsługi wyrażeń regularnych w C++.
-%package signals
-Summary: Signals & slots callback implementation
-Summary(pl.UTF-8): Implementacja sygnałów i slotów
-Group: Libraries
-Obsoletes: boost < 1.33
-
-%description signals
-The boost::signals library is an implementation of a signals and slots
-system.
-
-%description signals -l pl.UTF-8
-Biblioteka boost::signals jest implementacją systemu sygnałów i
-slotów.
-
%package system
Summary: Support for getting system specific error codes
Summary(pl.UTF-8): Wsparcie dla pobierania specyficznych dla systemu kodów błędów
%description timer -l pl.UTF-8
Klasy do obsługi pomiarów czasu, postępu i wyświetlania postępu.
+%package url
+Summary: Library for manipulating Uniform Resource Identifiers and Locators
+Summary(pl.UTF-8): Biblioteka do manipulacji Unfiform Resource Identifier i Locator
+Group: Libraries
+
+%description url
+Library for manipulating Uniform Resource Identifiers and Locators.
+
+%description url -l pl.UTF-8
+Biblioteka do manipulacji Unfiform Resource Identifier i Locator.
+
%package wave
Summary: Boost.Wave - a standard compliant C++ preprocessor library
Summary(pl.UTF-8): Boost.Wave - zgodna ze standardem biblioteka preprocesora C++
Summary: Boost C++ Library documentation
Summary(pl.UTF-8): Dokumentacja dla biblioteki Boost C++
Group: Documentation
-%if "%{_rpmversion}" >= "5"
BuildArch: noarch
-%endif
%description doc
Documentation for the Boost C++ Library.
--prefix=%{_prefix} \
-without-libraries=python
+# x32 detection need help (it's autodetected as address-model=32 abi=sysv, while context build expects address-model=64 abi=x32)
./b2 \
+ %{?__jobs:-j %{__jobs}} \
-d2 --toolset=gcc \
- variant=release \
+%ifarch x32
+ abi=x32 \
+ address-model=64 \
+%endif
debug-symbols=on \
inlining=on \
link=static,shared \
- threading=multi
+ threading=multi \
+ variant=release
%if %{with python3}
-echo "using python : %{py3_ver} : %{py3_prefix} : %{py3_incdir} : : : : m ;" >> project-config.jam
+echo "using python : %{py3_ver} : %{py3_prefix} : %{py3_incdir} : : : : %{py3v_suffix} ;" >> project-config.jam
./b2 \
+ %{?__jobs:-j %{__jobs}} \
--with-python python=%{py3_ver} \
-a -d2 --toolset=gcc \
- variant=release \
debug-symbols=on \
inlining=on \
link=static,shared \
- threading=multi
+ threading=multi \
+ variant=release
%endif
%if %{with python2}
%{__sed} -i -e '/^using python : 3/d' project-config.jam
echo "using python : %{py_ver} : %{py_prefix} : %{py_incdir} ;" >> project-config.jam
./b2 \
+ %{?__jobs:-j %{__jobs}} \
--with-python python=%{py_ver} \
-a -d2 --toolset=gcc \
- variant=release \
debug-symbols=on \
inlining=on \
link=static,shared \
- threading=multi
+ threading=multi \
+ variant=release
%endif
%install
install -p stage/lib/lib*.so.*.*.* $RPM_BUILD_ROOT%{_libdir}
cp -a stage/lib/lib*.so $RPM_BUILD_ROOT%{_libdir}
+%if %{with doc}
# documentation
install -d $RPM_BUILD_ROOT%{_docdir}/boost-%{version}
fi
done
}; installdocs
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post graph -p /sbin/ldconfig
%postun graph -p /sbin/ldconfig
+%post json -p /sbin/ldconfig
+%postun json -p /sbin/ldconfig
+
%post locale -p /sbin/ldconfig
%postun locale -p /sbin/ldconfig
%post regex -p /sbin/ldconfig
%postun regex -p /sbin/ldconfig
-%post signals -p /sbin/ldconfig
-%postun signals -p /sbin/ldconfig
-
%post system -p /sbin/ldconfig
%postun system -p /sbin/ldconfig
%post timer -p /sbin/ldconfig
%postun timer -p /sbin/ldconfig
+%post url -p /sbin/ldconfig
+%postun url -p /sbin/ldconfig
+
%post wave -p /sbin/ldconfig
%postun wave -p /sbin/ldconfig
%attr(755,root,root) %{_libdir}/libboost_coroutine.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_iostreams.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_math_*.so.*.*.*
+%attr(755,root,root) %{_libdir}/libboost_nowide.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_random.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_serialization.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_stacktrace_*.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_filesystem.so
%attr(755,root,root) %{_libdir}/libboost_graph.so
%attr(755,root,root) %{_libdir}/libboost_iostreams.so
+%attr(755,root,root) %{_libdir}/libboost_json.so
%attr(755,root,root) %{_libdir}/libboost_locale.so
%attr(755,root,root) %{_libdir}/libboost_log.so
%attr(755,root,root) %{_libdir}/libboost_log_setup.so
%attr(755,root,root) %{_libdir}/libboost_math_*.so
+%attr(755,root,root) %{_libdir}/libboost_nowide.so
%attr(755,root,root) %{_libdir}/libboost_prg_exec_monitor.so
%attr(755,root,root) %{_libdir}/libboost_program_options.so
%attr(755,root,root) %{_libdir}/libboost_regex.so
%attr(755,root,root) %{_libdir}/libboost_random.so
%attr(755,root,root) %{_libdir}/libboost_serialization.so
-%attr(755,root,root) %{_libdir}/libboost_signals.so
%attr(755,root,root) %{_libdir}/libboost_stacktrace_*.so
%attr(755,root,root) %{_libdir}/libboost_system.so
%attr(755,root,root) %{_libdir}/libboost_thread.so
%attr(755,root,root) %{_libdir}/libboost_timer.so
%attr(755,root,root) %{_libdir}/libboost_type_erasure.so
%attr(755,root,root) %{_libdir}/libboost_unit_test_framework.so
+%attr(755,root,root) %{_libdir}/libboost_url.so
%attr(755,root,root) %{_libdir}/libboost_wave.so
%attr(755,root,root) %{_libdir}/libboost_wserialization.so
%{_includedir}/boost
%{_libdir}/libboost_filesystem.a
%{_libdir}/libboost_graph.a
%{_libdir}/libboost_iostreams.a
+%{_libdir}/libboost_json.a
%{_libdir}/libboost_locale.a
%{_libdir}/libboost_log.a
%{_libdir}/libboost_log_setup.a
%{_libdir}/libboost_math_*.a
+%{_libdir}/libboost_nowide.a
%{_libdir}/libboost_prg_exec_monitor.a
%{_libdir}/libboost_program_options.a
%{_libdir}/libboost_random.a
%{_libdir}/libboost_regex.a
%{_libdir}/libboost_serialization.a
-%{_libdir}/libboost_signals.a
%{_libdir}/libboost_stacktrace_*.a
%{_libdir}/libboost_system.a
%{_libdir}/libboost_test_exec_monitor.a
%{_libdir}/libboost_timer.a
+%{_libdir}/libboost_url.a
%{_libdir}/libboost_thread.a
%{_libdir}/libboost_type_erasure.a
%{_libdir}/libboost_unit_test_framework.a
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_graph.so.*.*.*
+%files json
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libboost_json.so.*.*.*
+
%files locale
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_locale.so.*.*.*
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_regex.so.*.*.*
-%files signals
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libboost_signals.so.*.*.*
-
%files system
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_system.so.*.*.*
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_timer.so.*.*.*
+%files url
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libboost_url.so.*.*.*
+
%files wave
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_wave.so.*.*.*
+%if %{with doc}
%files doc
%defattr(644,root,root,755)
%{_docdir}/%{name}-%{version}
+%endif