3 # - think about building MPI.
4 # - split shared libs from core package into -iostreams/-serialization.
7 %bcond_without python # without boost-python support
9 %define fver %(echo %{version} | tr . _)
10 Summary: The Boost C++ Libraries
11 Summary(pl.UTF-8): Biblioteki C++ "Boost"
15 License: Boost Software License and others
17 Source0: http://downloads.sourceforge.net/boost/%{name}_%{fver}.tar.bz2
18 # Source0-md5: 4b6bd483b692fd138aef84ed2c8eb679
19 Patch0: %{name}-link.patch
20 Patch1: %{name}-hash-enum.patch
21 URL: http://www.boost.org/
22 BuildRequires: bzip2-devel
23 BuildRequires: expat-devel
24 BuildRequires: libicu-devel
25 BuildRequires: libstdc++-devel
26 BuildRequires: perl-base
27 %{?with_python:BuildRequires: python-devel >= 2.2}
28 BuildRequires: rpm-pythonprov
29 BuildRequires: zlib-devel
30 BuildConflicts: gcc = 5:3.3.1
31 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
34 The Boost web site provides free peer-reviewed portable C++ source
35 libraries. The emphasis is on libraries which work well with the C++
36 Standard Library. One goal is to establish "existing practice" and
37 provide reference implementations so that the Boost libraries are
38 suitable for eventual standardization. Some of the libraries have
39 already been proposed for inclusion in the C++ Standards Committee's
40 upcoming C++ Standard Library Technical Report.
42 %description -l pl.UTF-8
43 Strona http://www.boost.org/ dostarcza darmowe biblioteki C++ wraz z
44 kodem źródłowym. Nacisk położono na biblioteki, które dobrze
45 współpracują ze standardową biblioteką C++. Celem jest ustanowienie
46 "istniejącej praktyki" i dostarczenie implementacji, tak że biblioteki
47 "Boost" nadają się do ewentualnej standaryzacji. Niektóre z bibliotek
48 już zostały zgłoszone do komitetu standaryzacyjnego C++ w nadchodzącym
49 Raporcie Technicznym Biblioteki Standardowej C++.
52 Summary: Boost C++ development headers
53 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek C++ Boost
54 Group: Development/Libraries
55 Requires: %{name} = %{version}-%{release}
56 Requires: %{name}-chrono = %{version}-%{release}
57 Requires: %{name}-context = %{version}-%{release}
58 Requires: %{name}-date_time = %{version}-%{release}
59 Requires: %{name}-filesystem = %{version}-%{release}
60 Requires: %{name}-graph = %{version}-%{release}
61 Requires: %{name}-locale = %{version}-%{release}
62 Requires: %{name}-program_options = %{version}-%{release}
63 Requires: %{name}-regex = %{version}-%{release}
64 Requires: %{name}-signals = %{version}-%{release}
65 Requires: %{name}-system = %{version}-%{release}
66 Requires: %{name}-test = %{version}-%{release}
67 Requires: %{name}-thread = %{version}-%{release}
68 Requires: %{name}-timer = %{version}-%{release}
69 Requires: %{name}-wave = %{version}-%{release}
70 Requires: libstdc++-devel
71 Obsoletes: boost-any-devel
72 Obsoletes: boost-array-devel
74 Obsoletes: boost-bind-devel
75 Obsoletes: boost-call_traits-devel
76 Obsoletes: boost-compatibility-devel
77 Obsoletes: boost-compose-devel
78 Obsoletes: boost-compressed_pair-devel
79 Obsoletes: boost-concept_check-devel
80 Obsoletes: boost-conversion-devel
81 Obsoletes: boost-crc-devel
82 Obsoletes: boost-date_time-devel
83 Obsoletes: boost-filesystem-devel
84 Obsoletes: boost-graph-devel
85 Obsoletes: boost-mem_fn-devel
86 Obsoletes: boost-mpl-devel
87 Obsoletes: boost-preprocessor-devel
88 Obsoletes: boost-program_options-devel
89 Obsoletes: boost-ref-devel
90 Obsoletes: boost-regex-devel
91 Obsoletes: boost-signals-devel
92 Obsoletes: boost-spirit-devel
93 Obsoletes: boost-statechart-devel
94 Obsoletes: boost-static_assert-devel
95 Obsoletes: boost-test-devel
96 Obsoletes: boost-thread-devel
97 Obsoletes: boost-tr1-devel
98 Obsoletes: boost-type_traits-devel
99 Obsoletes: boost-typeof-devel
100 Obsoletes: boost-uBLAS-devel
101 Obsoletes: boost-utility-devel
102 Obsoletes: boost-wave-devel
103 Obsoletes: boost-xpressive-devel
106 Header files for the Boost C++ libraries.
108 %description devel -l pl.UTF-8
109 Pliki nagłówkowe bibliotek C++ Boost.
112 Summary: Static version of base Boost C++ libraries
113 Summary(pl.UTF-8): Statyczne wersje podstawowych bibliotek C++ Boost
114 Group: Development/Libraries
115 Requires: %{name}-devel = %{version}-%{release}
116 Obsoletes: boost-static < 1.33
119 Static version of base Boost C++ libraries.
121 %description static -l pl.UTF-8
122 Statyczne wersje podstawowych bibliotek C++ Boost.
125 Summary: Boost.Python library
126 Summary(pl.UTF-8): biblioteka Boost.Python
128 %pyrequires_eq python
131 Use the Boost Python Library to quickly and easily export a C++
132 library to Python such that the Python interface is very similar to
133 the C++ interface. It is designed to be minimally intrusive on your
134 C++ design. In most cases, you should not have to alter your C++
135 classes in any way in order to use them with Boost.Python. The system
136 should simply ``reflect'' your C++ classes and functions into Python.
138 %description python -l pl.UTF-8
139 Biblioteka Boost Python służy do szybkiego i prostego eksportu
140 biblioteki C++ do Pythona, tak że interfejs Pythona jest bardzo
141 podobny do interfejsu C++. Biblioteka jest zaprojektowana tak, żeby
142 narzucać jak najmniej wymagań dotyczących konstrukcjii C++. W
143 większości przypadków nie trzeba w ogóle zmieniać własnych klas C++,
144 żeby używać ich z Boost.Python. System powinien po prostu ,,odbić''
145 klasy C++ i funkcje do Pythona.
147 %package python-devel
148 Summary: Boost.Python development headers
149 Summary(pl.UTF-8): Pliki nagłówkowe dla Boost.Python
150 Group: Development/Libraries
151 Requires: %{name}-devel = %{version}-%{release}
152 Requires: %{name}-python = %{version}-%{release}
154 %description python-devel
155 Headers for the Boost.Python library.
157 %description python-devel -l pl.UTF-8
158 Pliki nagłówkowe dla biblioteki Boost.Python.
160 %package python-static
161 Summary: Static version of Boost.Python library
162 Summary(pl.UTF-8): Statyczna wersja biblioteki Boost.Python
163 Group: Development/Libraries
164 Requires: %{name}-python-devel = %{version}-%{release}
166 %description python-static
167 Static version of Boost.Python library.
169 %description python-static -l pl.UTF-8
170 Statyczna wersja biblioteki Boost.Python.
173 Summary: Useful time utilities
174 Summary(pl.UTF-8): Przydatne funkcje związane z czasem
176 Obsoletes: boost < 1.33
179 Useful time utilities.
181 %description chrono -l pl.UTF-8
182 Przydatne funkcje związane z czasem.
185 Summary: Boost.Context - context switching library
186 Summary(pl.UTF-8): Boost.Context - biblioteka do zmiany kontekstu
190 Boost.Context - context switching library, providing a sort of
191 cooperative multitasking on a single thread.
193 %description context -l pl.UTF-8
194 Boost.Context - biblioteka do zmiany kontekstu, zapewniająca pewną
195 wielozadaniowość kooperatywnąw ramach pojedynczego wątku.
198 Summary: Date-Time library
199 Summary(pl.UTF-8): Biblioteka daty-czasu
201 Obsoletes: boost < 1.33
203 %description date_time
204 A set of date-time libraries.
206 %description date_time -l pl.UTF-8
207 Zbiór bibliotek daty-czasu.
210 Summary: Portable paths, iteration over directories, and other useful filesystem operations
211 Summary(pl.UTF-8): Przenośne ścieżki, iteracje katalogów i inne użyteczne operacje na systemie plików
213 Requires: %{name}-system = %{version}-%{release}
214 Obsoletes: boost < 1.33
216 %description filesystem
217 The boost::filesystem library provides portable facilities to query
218 and manipulate paths, files, and directories.
220 %description filesystem -l pl.UTF-8
221 Przenośna biblioteka boost::filesystem dostarcza ułatwienia w
222 operacjach na ścieżkach, plikach i katalogach.
225 Summary: General purpose, generic C++ library for graph data structures and graph algorithms
226 Summary(pl.UTF-8): Biblioteka ogólnego przeznaczenia w C++ dla struktur danych typu grafy oraz algorytmów związanych z grafami
230 The boost::graph library provides portable facilities to operate on
231 graph data structures using graph algorithms.
233 %description graph -l pl.UTF-8
234 Przenośna biblioteka boost::graph dostarcza ułatwienia w operacjach na
235 strukturach danych typu graf za pomocą algorytmów związanych z
239 Summary: Provide localization and Unicode handling tools for C++
240 Summary(pl.UTF-8): Narzędzia do obsługi lokalizacji i Unikodu w C++
244 Provide localization and Unicode handling tools for C++.
246 %description locale -l pl.UTF-8
247 Narzędzia do obsługi lokalizacji i Unikodu w C++.
249 %package program_options
250 Summary: Access to program options, via conventional methods such as command line and config file
251 Summary(pl.UTF-8): Dostęp do opcji programu za pomocą typowych metod, jak linia poleceń i plik konfiguracyjny
254 %description program_options
255 The program_options library allows program developers to obtain
256 program options, that is (name, value) pairs from the user, via
257 conventional methods such as command line and config file.
259 %description program_options -l pl.UTF-8
260 Biblioteka program_options umożliwia uzyskanie od użytkownika opcji
261 programu, czyli par (nazwa, wartość), za pomocą typowych metod, takich
262 jak linia poleceń, czy plik konfiguracyjny.
265 Summary: Boost C++ regular expressions library
266 Summary(pl.UTF-8): Biblioteka wyrażeń regularnych Boost C++
270 Shared library for Boost C++ regular expressions.
272 %description regex -l pl.UTF-8
273 Biblioteka współdzielona do obsługi wyrażeń regularnych w C++.
276 Summary: Signals & slots callback implementation
277 Summary(pl.UTF-8): Implementacja sygnałów i slotów
279 Obsoletes: boost < 1.33
282 The boost::signals library is an implementation of a signals and slots
285 %description signals -l pl.UTF-8
286 Biblioteka boost::signals jest implementacją systemu sygnałów i
290 Summary: Support for getting system specific error codes
291 Summary(pl.UTF-8): Wsparcie dla pobierania specyficznych dla systemu kodów błędów
295 The Boost System library provides simple, light-weight error_code
296 objects that encapsulate system-specific error code values, yet also
297 provide access to more abstract and portable error conditions objects.
299 %description system -l pl.UTF-8
300 Biblioteka Boost System udostępnia proste, lekkie obiekty error_code
301 obudowujące wartości kodów błędów specyficznych dla systemu, dając
302 jednocześnie dostęp do bardziej abstrakcyjnych i przenośnych obiektów
306 Summary: Support for program testing and execution monitoring
307 Summary(pl.UTF-8): Wsparcie dla testowania i monitorowania programu
309 Obsoletes: boost < 1.33
312 Support for simple program testing, full unit testing, and for program
313 execution monitoring.
315 %description test -l pl.UTF-8
316 Wsparcie dla prostego testowania programu, pełnego testowania i
317 monitorowania wykonania programu.
320 Summary: Portable C++ threads library
321 Summary(pl.UTF-8): Przenośna biblioteka wątków C++
323 Obsoletes: boost < 1.33
326 Portable C++ threads library - shared library.
328 %description thread -l pl.UTF-8
329 Przenośna biblioteka wątków dla C++ - biblioteka dzielona.
332 Summary: Event timer, progress timer, and progress display classes
333 Summary(pl.UTF-8): Klasy do obsługi pomiarów czasu, postępu i wyświetlania postępu
335 Obsoletes: boost < 1.33
338 Event timer, progress timer, and progress display classes.
340 %description timer -l pl.UTF-8
341 Klasy do obsługi pomiarów czasu, postępu i wyświetlania postępu.
344 Summary: Boost.Wave - a standard compliant C++ preprocessor library
345 Summary(pl.UTF-8): Boost.Wave - zgodna ze standardem biblioteka preprocesora C++
346 Group: Development/Libraries
349 Boost.Wave - a standard compliant C++ preprocessor library.
351 %description wave -l pl.UTF-8
352 Boost.Wave - zgodna ze standardem biblioteka preprocesora C++.
355 Summary: Boost C++ Library documentation
356 Summary(pl.UTF-8): Dokumentacja dla biblioteki Boost C++
358 Requires: %{name}-devel = %{version}-%{release}
361 Documentation for the Boost C++ Library.
363 %description doc -l pl.UTF-8
364 Dokumentacja dla biblioteki Boost C++.
367 %setup -q -n %{name}_%{fver}
371 # - don't know how to pass it through (b)jam -s (no way?)
372 # due to oversophisticated build flags system.
373 # - pass -fPIC due to <shared-linkable> removal.
374 %{__sed} -i "s/<optimization>speed : -O3/<optimization>speed : ${CXXFLAGS:-%rpmcxxflags} -fPIC/" tools/build/v2/tools/gcc.jam
376 # cleanup -g switch to avoid override debuginfocflags.
377 %{__sed} -i 's/<debug-symbols>on : -g/<debug-symbols>on :/' tools/build/v2/tools/gcc.jam
378 # link against shared expat library.
379 %{__sed} -i 's:find-static:find-shared:' libs/graph/build/Jamfile.v2
381 cat << EOF > tools/build/v2/user-config.jam
382 using gcc : %(%{__cxx} -dumpversion) : %{__cxx} ;
387 PYTHON_VERSION=$(%{__python} -c 'import sys; print sys.version[0:3]')
388 PYTHON_ROOT=%{_prefix}
393 EXPAT_INCLUDE=%{_includedir} \
394 EXPAT_LIBPATH=%{_libdir} \
395 ICU_PATH=%{_prefix} \
396 ./bootstrap.sh --prefix=%{_prefix}
399 variant=release debug-symbols=on inlining=on link=static,shared threading=multi
402 rm -rf $RPM_BUILD_ROOT
403 install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}}
405 cp -rf boost $RPM_BUILD_ROOT%{_includedir}
407 install -p stage/lib/lib*.a $RPM_BUILD_ROOT%{_libdir}
408 install -p stage/lib/lib*.so.*.*.* $RPM_BUILD_ROOT%{_libdir}
409 cp -a stage/lib/lib*.so $RPM_BUILD_ROOT%{_libdir}
412 install -d $RPM_BUILD_ROOT%{_docdir}/boost-%{version}
414 # as the documentation doesn't completely reside in a directory of its
415 # own, we need to find out ourselves... this looks for HTML files and
416 # then collects everything linked from those. this is certainly quite
417 # unoptimized wrt mkdir calls, but does it really matter?
419 for i in $(find -type f -name '*.htm*'); do
420 # bjam docu is included in the boost-jam RPM
421 if test "`echo $i | sed 's,jam_src,,'`" = "$i"; then
422 install -d $RPM_BUILD_ROOT%{_docdir}/boost-%{version}/${i%/*}
423 for LINKED in `%{__perl} - $i $RPM_BUILD_ROOT%{_docdir}/boost-%{version}/$i <<'EOT'
427 # rewrite links from boost/* to %{_includedir}/boost/* and
428 # ignore external links as well as document-internal ones.
429 # HTML files are also ignored as they get installed anyway.
430 if (!($link =~ s,^(?:../)*boost/,%{_includedir}/boost/,) && !($link =~ m,(?:^[^/]+:|^\#|\.html?(?:$|\#)),))
432 (my $file = $link) =~ s/\#.*//;
438 open OUT, ">@ARGV[1]";
442 $in_link and s/^\s*"([^"> ]*)"/'"' . rewrite_link($1) . '"'/e;
443 s/(href|src)="([^"> ]*)"/"$1=\"" . rewrite_link($2) . '"'/eig;
445 $in_link = /href|src=\s*$/;
448 TARGET=${i%/*}/$LINKED
449 # ignore non-existant linked files
450 if test -f $TARGET; then
451 install -D -m 644 $TARGET $RPM_BUILD_ROOT%{_docdir}/boost-%{version}/$TARGET
459 rm -rf $RPM_BUILD_ROOT
461 %post -p /sbin/ldconfig
462 %postun -p /sbin/ldconfig
464 %post chrono -p /sbin/ldconfig
465 %postun chrono -p /sbin/ldconfig
467 %post context -p /sbin/ldconfig
468 %postun context -p /sbin/ldconfig
470 %post date_time -p /sbin/ldconfig
471 %postun date_time -p /sbin/ldconfig
473 %post filesystem -p /sbin/ldconfig
474 %postun filesystem -p /sbin/ldconfig
476 %post graph -p /sbin/ldconfig
477 %postun graph -p /sbin/ldconfig
479 %post locale -p /sbin/ldconfig
480 %postun locale -p /sbin/ldconfig
482 %post python -p /sbin/ldconfig
483 %postun python -p /sbin/ldconfig
485 %post program_options -p /sbin/ldconfig
486 %postun program_options -p /sbin/ldconfig
488 %post regex -p /sbin/ldconfig
489 %postun regex -p /sbin/ldconfig
491 %post signals -p /sbin/ldconfig
492 %postun signals -p /sbin/ldconfig
494 %post system -p /sbin/ldconfig
495 %postun system -p /sbin/ldconfig
497 %post test -p /sbin/ldconfig
498 %postun test -p /sbin/ldconfig
500 %post thread -p /sbin/ldconfig
501 %postun thread -p /sbin/ldconfig
503 %post timer -p /sbin/ldconfig
504 %postun timer -p /sbin/ldconfig
506 %post wave -p /sbin/ldconfig
507 %postun wave -p /sbin/ldconfig
510 %defattr(644,root,root,755)
511 %attr(755,root,root) %{_libdir}/libboost_iostreams.so.*.*.*
512 %attr(755,root,root) %{_libdir}/libboost_math_*.so.*.*.*
513 %attr(755,root,root) %{_libdir}/libboost_random.so.*.*.*
514 %attr(755,root,root) %{_libdir}/libboost_serialization.so.*.*.*
515 %attr(755,root,root) %{_libdir}/libboost_wserialization.so.*.*.*
518 %defattr(644,root,root,755)
519 %attr(755,root,root) %{_libdir}/libboost_chrono.so
520 %attr(755,root,root) %{_libdir}/libboost_context.so
521 %attr(755,root,root) %{_libdir}/libboost_date_time.so
522 %attr(755,root,root) %{_libdir}/libboost_filesystem.so
523 %attr(755,root,root) %{_libdir}/libboost_graph.so
524 %attr(755,root,root) %{_libdir}/libboost_iostreams.so
525 %attr(755,root,root) %{_libdir}/libboost_locale.so
526 %attr(755,root,root) %{_libdir}/libboost_math_*.so
527 %attr(755,root,root) %{_libdir}/libboost_prg_exec_monitor.so
528 %attr(755,root,root) %{_libdir}/libboost_program_options.so
529 %attr(755,root,root) %{_libdir}/libboost_regex.so
530 %attr(755,root,root) %{_libdir}/libboost_random.so
531 %attr(755,root,root) %{_libdir}/libboost_serialization.so
532 %attr(755,root,root) %{_libdir}/libboost_signals.so
533 %attr(755,root,root) %{_libdir}/libboost_system.so
534 %attr(755,root,root) %{_libdir}/libboost_thread.so
535 %attr(755,root,root) %{_libdir}/libboost_timer.so
536 %attr(755,root,root) %{_libdir}/libboost_unit_test_framework.so
537 %attr(755,root,root) %{_libdir}/libboost_wave.so
538 %attr(755,root,root) %{_libdir}/libboost_wserialization.so
540 %exclude %{_includedir}/boost/python
541 %exclude %{_includedir}/boost/python.hpp
544 %defattr(644,root,root,755)
545 %{_libdir}/libboost_chrono.a
546 %{_libdir}/libboost_context.a
547 %{_libdir}/libboost_date_time.a
548 %{_libdir}/libboost_exception.a
549 %{_libdir}/libboost_filesystem.a
550 %{_libdir}/libboost_graph.a
551 %{_libdir}/libboost_iostreams.a
552 %{_libdir}/libboost_locale.a
553 %{_libdir}/libboost_math_*.a
554 %{_libdir}/libboost_prg_exec_monitor.a
555 %{_libdir}/libboost_program_options.a
556 %{_libdir}/libboost_random.a
557 %{_libdir}/libboost_regex.a
558 %{_libdir}/libboost_serialization.a
559 %{_libdir}/libboost_signals.a
560 %{_libdir}/libboost_system.a
561 %{_libdir}/libboost_test_exec_monitor.a
562 %{_libdir}/libboost_timer.a
563 %{_libdir}/libboost_thread.a
564 %{_libdir}/libboost_unit_test_framework.a
565 %{_libdir}/libboost_wave.a
566 %{_libdir}/libboost_wserialization.a
570 %defattr(644,root,root,755)
571 %attr(755,root,root) %{_libdir}/libboost_python.so.*.*.*
574 %defattr(644,root,root,755)
575 %attr(755,root,root) %{_libdir}/libboost_python.so
576 %{_includedir}/boost/python
577 %{_includedir}/boost/python.hpp
580 %defattr(644,root,root,755)
581 %{_libdir}/libboost_python.a
585 %defattr(644,root,root,755)
586 %attr(755,root,root) %{_libdir}/libboost_chrono.so.*.*.*
589 %defattr(644,root,root,755)
590 %attr(755,root,root) %{_libdir}/libboost_context.so.*.*.*
593 %defattr(644,root,root,755)
594 %attr(755,root,root) %{_libdir}/libboost_date_time.so.*.*.*
597 %defattr(644,root,root,755)
598 %attr(755,root,root) %{_libdir}/libboost_filesystem.so.*.*.*
601 %defattr(644,root,root,755)
602 %attr(755,root,root) %{_libdir}/libboost_graph.so.*.*.*
605 %defattr(644,root,root,755)
606 %attr(755,root,root) %{_libdir}/libboost_locale.so.*.*.*
608 %files program_options
609 %defattr(644,root,root,755)
610 %attr(755,root,root) %{_libdir}/libboost_program_options.so.*.*.*
613 %defattr(644,root,root,755)
614 %attr(755,root,root) %{_libdir}/libboost_regex.so.*.*.*
617 %defattr(644,root,root,755)
618 %attr(755,root,root) %{_libdir}/libboost_signals.so.*.*.*
621 %defattr(644,root,root,755)
622 %attr(755,root,root) %{_libdir}/libboost_system.so.*.*.*
625 %defattr(644,root,root,755)
626 %attr(755,root,root) %{_libdir}/libboost_prg_exec_monitor.so.*.*.*
627 %attr(755,root,root) %{_libdir}/libboost_unit_test_framework.so.*.*.*
630 %defattr(644,root,root,755)
631 %attr(755,root,root) %{_libdir}/libboost_thread.so.*.*.*
634 %defattr(644,root,root,755)
635 %attr(755,root,root) %{_libdir}/libboost_timer.so.*.*.*
638 %defattr(644,root,root,755)
639 %attr(755,root,root) %{_libdir}/libboost_wave.so.*.*.*
642 %defattr(644,root,root,755)
643 %{_docdir}/%{name}-%{version}