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://dl.sourceforge.net/boost/%{name}_%{_fver}.tar.bz2
18 # Source0-md5: 7bf3b4eb841b62ffb0ade2b82218ebe6
19 Patch0: %{name}-climits.patch
20 Patch1: %{name}-link.patch
21 Patch2: %{name}-xpressive.patch
22 URL: http://www.boost.org/
23 BuildRequires: boost-jam >= 3.1.12
24 BuildRequires: bzip2-devel
25 BuildRequires: expat-devel
26 BuildRequires: libicu-devel
27 BuildRequires: libstdc++-devel
28 BuildRequires: perl-base
29 %{?with_python:BuildRequires: python-devel >= 2.2}
30 BuildRequires: rpm-pythonprov
31 BuildRequires: zlib-devel
32 BuildConflicts: gcc = 5:3.3.1
33 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
36 The Boost web site provides free peer-reviewed portable C++ source
37 libraries. The emphasis is on libraries which work well with the C++
38 Standard Library. One goal is to establish "existing practice" and
39 provide reference implementations so that the Boost libraries are
40 suitable for eventual standardization. Some of the libraries have
41 already been proposed for inclusion in the C++ Standards Committee's
42 upcoming C++ Standard Library Technical Report.
44 %description -l pl.UTF-8
45 Strona http://www.boost.org/ dostarcza darmowe biblioteki C++ wraz z
46 kodem źródłowym. Nacisk położono na biblioteki, które dobrze
47 współpracują ze standardową biblioteką C++. Celem jest ustanowienie
48 "istniejącej praktyki" i dostarczenie implementacji, tak że biblioteki
49 "Boost" nadają się do ewentualnej standaryzacji. Niektóre z bibliotek
50 już zostały zgłoszone do komitetu standaryzacyjnego C++ w nadchodzącym
51 Raporcie Technicznym Biblioteki Standardowej C++.
54 Summary: Boost C++ development headers
55 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek C++ Boost
56 Group: Development/Libraries
57 Requires: %{name} = %{version}-%{release}
58 Requires: %{name}-date_time = %{version}-%{release}
59 Requires: %{name}-filesystem = %{version}-%{release}
60 Requires: %{name}-graph = %{version}-%{release}
61 Requires: %{name}-program_options = %{version}-%{release}
62 Requires: %{name}-regex = %{version}-%{release}
63 Requires: %{name}-signals = %{version}-%{release}
64 Requires: %{name}-system = %{version}-%{release}
65 Requires: %{name}-test = %{version}-%{release}
66 Requires: %{name}-thread = %{version}-%{release}
67 Requires: %{name}-wave = %{version}-%{release}
68 Requires: libstdc++-devel
69 Obsoletes: boost-any-devel
70 Obsoletes: boost-array-devel
72 Obsoletes: boost-bind-devel
73 Obsoletes: boost-call_traits-devel
74 Obsoletes: boost-compatibility-devel
75 Obsoletes: boost-compose-devel
76 Obsoletes: boost-compressed_pair-devel
77 Obsoletes: boost-concept_check-devel
78 Obsoletes: boost-conversion-devel
79 Obsoletes: boost-crc-devel
80 Obsoletes: boost-date_time-devel
81 Obsoletes: boost-filesystem-devel
82 Obsoletes: boost-graph-devel
83 Obsoletes: boost-mem_fn-devel
84 Obsoletes: boost-mpl-devel
85 Obsoletes: boost-preprocessor-devel
86 Obsoletes: boost-program_options-devel
87 Obsoletes: boost-ref-devel
88 Obsoletes: boost-regex-devel
89 Obsoletes: boost-signals-devel
90 Obsoletes: boost-spirit-devel
91 Obsoletes: boost-statechart-devel
92 Obsoletes: boost-static_assert-devel
93 Obsoletes: boost-test-devel
94 Obsoletes: boost-thread-devel
95 Obsoletes: boost-tr1-devel
96 Obsoletes: boost-type_traits-devel
97 Obsoletes: boost-typeof-devel
98 Obsoletes: boost-uBLAS-devel
99 Obsoletes: boost-utility-devel
100 Obsoletes: boost-wave-devel
101 Obsoletes: boost-xpressive-devel
104 Header files for the Boost C++ libraries.
106 %description devel -l pl.UTF-8
107 Pliki nagłówkowe bibliotek C++ Boost.
110 Summary: Static version of base Boost C++ libraries
111 Summary(pl.UTF-8): Statyczne wersje podstawowych bibliotek C++ Boost
112 Group: Development/Libraries
113 Requires: %{name}-devel = %{version}-%{release}
114 Obsoletes: boost-static < 1.33
117 Static version of base Boost C++ libraries.
119 %description static -l pl.UTF-8
120 Statyczne wersje podstawowych bibliotek C++ Boost.
123 Summary: Boost.Python library
124 Summary(pl.UTF-8): biblioteka Boost.Python
126 %pyrequires_eq python
129 Use the Boost Python Library to quickly and easily export a C++
130 library to Python such that the Python interface is very similar to
131 the C++ interface. It is designed to be minimally intrusive on your
132 C++ design. In most cases, you should not have to alter your C++
133 classes in any way in order to use them with Boost.Python. The system
134 should simply ``reflect'' your C++ classes and functions into Python.
136 %description python -l pl.UTF-8
137 Biblioteka Boost Python służy do szybkiego i prostego eksportu
138 biblioteki C++ do Pythona, tak że interfejs Pythona jest bardzo
139 podobny do interfejsu C++. Biblioteka jest zaprojektowana tak, żeby
140 narzucać jak najmniej wymagań dotyczących konstrukcjii C++. W
141 większości przypadków nie trzeba w ogóle zmieniać własnych klas C++,
142 żeby używać ich z Boost.Python. System powinien po prostu ,,odbić''
143 klasy C++ i funkcje do Pythona.
145 %package python-devel
146 Summary: Boost.Python development headers
147 Summary(pl.UTF-8): Pliki nagłówkowe dla Boost.Python
148 Group: Development/Libraries
149 Requires: %{name}-devel = %{version}-%{release}
150 Requires: %{name}-python = %{version}-%{release}
152 %description python-devel
153 Headers for the Boost.Python library.
155 %description python-devel -l pl.UTF-8
156 Pliki nagłówkowe dla biblioteki Boost.Python.
158 %package python-static
159 Summary: Static version of Boost.Python library
160 Summary(pl.UTF-8): Statyczna wersja biblioteki Boost.Python
161 Group: Development/Libraries
162 Requires: %{name}-python-devel = %{version}-%{release}
164 %description python-static
165 Static version of Boost.Python library.
167 %description python-static -l pl.UTF-8
168 Statyczna wersja biblioteki Boost.Python.
171 Summary: Date-Time library
172 Summary(pl.UTF-8): Biblioteka daty-czasu
174 Obsoletes: boost < 1.33
176 %description date_time
177 A set of date-time libraries.
179 %description date_time -l pl.UTF-8
180 Zbiór bibliotek daty-czasu.
183 Summary: Portable paths, iteration over directories, and other useful filesystem operations
184 Summary(pl.UTF-8): Przenośne ścieżki, iteracje katalogów i inne użyteczne operacje na systemie plików
186 Requires: %{name}-system = %{version}-%{release}
187 Obsoletes: boost < 1.33
189 %description filesystem
190 The boost::filesystem library provides portable facilities to query
191 and manipulate paths, files, and directories.
193 %description filesystem -l pl.UTF-8
194 Przenośna biblioteka boost::filesystem dostarcza ułatwienia w
195 operacjach na ścieżkach, plikach i katalogach.
198 Summary: General purpose, generic C++ library for graph data structures and graph algorithms
199 Summary(pl.UTF-8): Biblioteka ogólnego przeznaczenia w C++ dla struktur danych typu grafy oraz algorytmów związanych z grafami
203 The boost::graph library provides portable facilities to operate on
204 graph data structures using graph algorithms.
206 %description graph -l pl.UTF-8
207 Przenośna biblioteka boost::graph dostarcza ułatwienia w operacjach na
208 strukturach danych typu graf za pomocą algorytmów związanych z
211 %package program_options
212 Summary: Access to program options, via conventional methods such as command line and config file
213 Summary(pl.UTF-8): Dostęp do opcji programu za pomocą typowych metod, jak linia poleceń i plik konfiguracyjny
216 %description program_options
217 The program_options library allows program developers to obtain
218 program options, that is (name, value) pairs from the user, via
219 conventional methods such as command line and config file.
221 %description program_options -l pl.UTF-8
222 Biblioteka program_options umożliwia uzyskanie od użytkownika opcji
223 programu, czyli par (nazwa, wartość), za pomocą typowych metod, takich
224 jak linia poleceń, czy plik konfiguracyjny.
227 Summary: Boost C++ regular expressions library
228 Summary(pl.UTF-8): Biblioteka wyrażeń regularnych Boost C++
232 Shared library for Boost C++ regular expressions.
234 %description regex -l pl.UTF-8
235 Biblioteka wyrażeń regularnych dla C++, biblioteki dzielone.
238 Summary: Signals & slots callback implementation
239 Summary(pl.UTF-8): Implementacja sygnałów i slotów
241 Obsoletes: boost < 1.33
244 The boost::signals library is an implementation of a signals and slots
247 %description signals -l pl.UTF-8
248 Biblioteka boost::signals jest implementacją systemu sygnałów i
252 Summary: Support for getting system specific error codes
253 Summary(pl.UTF-8): Wsparcie dla pobierania specyficznych dla systemu kodów błędów
257 The Boost System library provides simple, light-weight error_code
258 objects that encapsulate system-specific error code values, yet also
259 provide access to more abstract and portable error conditions objects.
261 %description system -l pl.UTF-8
262 Biblioteka Boost System udostępnia proste, lekkie obiekty error_code
263 obudowujące wartości kodów błędów specyficznych dla systemu, dając
264 jednocześnie dostęp do bardziej abstrakcyjnych i przenośnych obiektów
268 Summary: Support for program testing and execution monitoring
269 Summary(pl.UTF-8): Wsparcie dla testowania i monitorowania programu
271 Obsoletes: boost < 1.33
274 Support for simple program testing, full unit testing, and for program
275 execution monitoring.
277 %description test -l pl.UTF-8
278 Wsparcie dla prostego testowania programu, pełnego testowania i
279 monitorowania wykonania programu.
282 Summary: Portable C++ threads library
283 Summary(pl.UTF-8): Przenośna biblioteka wątków C++
285 Obsoletes: boost < 1.33
288 Portable C++ threads library - shared library.
290 %description thread -l pl.UTF-8
291 Przenośna biblioteka wątków dla C++ - biblioteka dzielona.
294 Summary: Boost.Wave - a standard compliant C++ preprocessor library
295 Summary(pl.UTF-8): Boost.Wave - zgodna ze standardem biblioteka preprocesora C++
296 Group: Development/Libraries
299 Boost.Wave - a standard compliant C++ preprocessor library.
301 %description wave -l pl.UTF-8
302 Boost.Wave - zgodna ze standardem biblioteka preprocesora C++.
305 Summary: Boost C++ Library documentation
306 Summary(pl.UTF-8): Dokumentacja dla biblioteki Boost C++
308 Requires: %{name}-devel = %{version}-%{release}
311 Documentation for the Boost C++ Library.
313 %description doc -l pl.UTF-8
314 Dokumentacja dla biblioteki Boost C++.
317 %setup -q -n %{name}_%{_fver}
322 # - don't know how to pass it through (b)jam -s (no way?)
323 # due to oversophisticated build flags system.
324 # - pass -fPIC due to <shared-linkable> removal.
325 %{__sed} -i "s/<optimization>speed : -O3/<optimization>speed : ${CXXFLAGS:-%rpmcxxflags} -fPIC/" tools/build/v2/tools/gcc.jam
327 # cleanup -g switch to avoid override debuginfocflags.
328 %{__sed} -i 's/<debug-symbols>on : -g/<debug-symbols>on :/' tools/build/v2/tools/gcc.jam
329 # link against shared expat library.
330 %{__sed} -i 's:find-static:find-shared:' libs/graph/build/Jamfile.v2
333 # -pthread gcc parameter doesn't add _REENTRANT to cpp macros on alpha (only)
334 # don't know, is it gcc bug or intentional omission?
335 # anyway, boost check of -D_REENTRANT in its headers, so it's needed here
336 %{__perl} -pi -e 's/(CFLAGS.*-pthread)/$1 -D_REENTRANT/' tools/build/v1/gcc-tools.jam
339 cat << EOF > tools/build/v2/user-config.jam
340 using gcc : %(%{__cxx} -dumpversion) : %{__cxx} ;
345 PYTHON_VERSION=$(%{__python} -c 'import sys; print sys.version[0:3]')
346 PYTHON_ROOT=%{_prefix}
351 EXPAT_INCLUDE=%{_includedir} \
352 EXPAT_LIBPATH=%{_libdir} \
353 ICU_PATH=%{_prefix} \
356 variant=release debug-symbols=on inlining=on link=static,shared threading=multi
359 rm -rf $RPM_BUILD_ROOT
360 install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}}
362 cp -rf boost $RPM_BUILD_ROOT%{_includedir}
364 install bin.v2/libs/*/build/gcc-*/release/debug-symbols-on/inlining-on/link-static/threading-multi/lib*.a $RPM_BUILD_ROOT%{_libdir}
365 install bin.v2/libs/*/build/gcc-*/release/debug-symbols-on/inlining-on/threading-multi/lib*.so.*.*.* $RPM_BUILD_ROOT%{_libdir}
367 # create symlinks without -gccXX-mt-* things in names
368 for f in $RPM_BUILD_ROOT%{_libdir}/*.so.*.*.*; do
369 [ -f "$f" ] || continue
371 soname=$(basename "$f" | sed -e 's#-gcc..-mt-.*#.so#g')
372 [ ! -f "$RPM_BUILD_ROOT%{_libdir}/$soname" ] && ln -s "$f" "$RPM_BUILD_ROOT%{_libdir}/$soname"
373 rawsoname=$(basename "$f" | sed -e 's#\.so.*#.so#g')
374 [ ! -f "$RPM_BUILD_ROOT%{_libdir}/$rawsoname" ] && ln -s "$f" "$RPM_BUILD_ROOT%{_libdir}/$rawsoname"
377 for f in $RPM_BUILD_ROOT%{_libdir}/*.a; do
378 [ -f "$f" ] || continue
380 soname=$(basename "$f" | sed -e 's#-gcc..-mt-.*#.a#g')
381 [ ! -f "$RPM_BUILD_ROOT%{_libdir}/$soname" ] && ln -s "$f" "$RPM_BUILD_ROOT%{_libdir}/$soname"
382 rawsoname=$(basename "$f" | sed -e 's#\.so.*#.so#g')
383 [ ! -f "$RPM_BUILD_ROOT%{_libdir}/$rawsoname" ] && ln -s "$f" "$RPM_BUILD_ROOT%{_libdir}/$rawsoname"
387 install -d $RPM_BUILD_ROOT%{_docdir}/boost-%{version}
389 # as the documentation doesn't completely reside in a directory of its
390 # own, we need to find out ourselves... this looks for HTML files and
391 # then collects everything linked from those. this is certainly quite
392 # unoptimized wrt mkdir calls, but does it really matter?
394 for i in $(find -type f -name '*.htm*'); do
395 # bjam docu is included in the boost-jam RPM
396 if test "`echo $i | sed 's,jam_src,,'`" = "$i"; then
397 install -d $RPM_BUILD_ROOT%{_docdir}/boost-%{version}/${i%/*}
398 for LINKED in `%{__perl} - $i $RPM_BUILD_ROOT%{_docdir}/boost-%{version}/$i <<'EOT'
402 # rewrite links from boost/* to %{_includedir}/boost/* and
403 # ignore external links as well as document-internal ones.
404 # HTML files are also ignored as they get installed anyway.
405 if (!($link =~ s,^(?:../)*boost/,%{_includedir}/boost/,) && !($link =~ m,(?:^[^/]+:|^\#|\.html?(?:$|\#)),))
407 (my $file = $link) =~ s/\#.*//;
413 open OUT, ">@ARGV[1]";
417 $in_link and s/^\s*"([^"> ]*)"/'"' . rewrite_link($1) . '"'/e;
418 s/(href|src)="([^"> ]*)"/"$1=\"" . rewrite_link($2) . '"'/eig;
420 $in_link = /href|src=\s*$/;
423 TARGET=${i%/*}/$LINKED
424 # ignore non-existant linked files
425 if test -f $TARGET; then
426 install -D -m 644 $TARGET $RPM_BUILD_ROOT%{_docdir}/boost-%{version}/$TARGET
434 rm -rf $RPM_BUILD_ROOT
436 %post -p /sbin/ldconfig
437 %postun -p /sbin/ldconfig
439 %post date_time -p /sbin/ldconfig
440 %postun date_time -p /sbin/ldconfig
442 %post filesystem -p /sbin/ldconfig
443 %postun filesystem -p /sbin/ldconfig
445 %post graph -p /sbin/ldconfig
446 %postun graph -p /sbin/ldconfig
448 %post python -p /sbin/ldconfig
449 %postun python -p /sbin/ldconfig
451 %post program_options -p /sbin/ldconfig
452 %postun program_options -p /sbin/ldconfig
454 %post regex -p /sbin/ldconfig
455 %postun regex -p /sbin/ldconfig
457 %post signals -p /sbin/ldconfig
458 %postun signals -p /sbin/ldconfig
460 %post system -p /sbin/ldconfig
461 %postun system -p /sbin/ldconfig
463 %post test -p /sbin/ldconfig
464 %postun test -p /sbin/ldconfig
466 %post wave -p /sbin/ldconfig
467 %postun wave -p /sbin/ldconfig
469 %post thread -p /sbin/ldconfig
470 %postun thread -p /sbin/ldconfig
473 %defattr(644,root,root,755)
474 %attr(755,root,root) %{_libdir}/libboost_iostreams*.so.*.*.*
475 %attr(755,root,root) %{_libdir}/libboost_math_*.so.*.*.*
476 %attr(755,root,root) %{_libdir}/libboost_serialization*.so.*.*.*
477 %attr(755,root,root) %{_libdir}/libboost_wserialization*.so.*.*.*
480 %defattr(644,root,root,755)
482 %attr(755,root,root) %{_libdir}/libboost_date_time*.so
483 %attr(755,root,root) %{_libdir}/libboost_filesystem*.so
484 %attr(755,root,root) %{_libdir}/libboost_graph*.so
485 %attr(755,root,root) %{_libdir}/libboost_iostreams*.so
486 %attr(755,root,root) %{_libdir}/libboost_math_*.so
487 %attr(755,root,root) %{_libdir}/libboost_prg_exec_monitor*.so
488 %attr(755,root,root) %{_libdir}/libboost_program_options*.so
489 %attr(755,root,root) %{_libdir}/libboost_regex*.so
490 %attr(755,root,root) %{_libdir}/libboost_serialization*.so
491 %attr(755,root,root) %{_libdir}/libboost_signals*.so
492 %attr(755,root,root) %{_libdir}/libboost_system*.so
493 %attr(755,root,root) %{_libdir}/libboost_thread*.so
494 %attr(755,root,root) %{_libdir}/libboost_unit_test_framework*.so
495 %attr(755,root,root) %{_libdir}/libboost_wave*.so
496 %attr(755,root,root) %{_libdir}/libboost_wserialization*.so
499 %defattr(644,root,root,755)
500 %{_libdir}/libboost_date_time*.a
501 %{_libdir}/libboost_filesystem*.a
502 %{_libdir}/libboost_grap*.a
503 %{_libdir}/libboost_iostreams*.a
504 %{_libdir}/libboost_math_*.a
505 %{_libdir}/libboost_prg_exec_monitor*.a
506 %{_libdir}/libboost_program_options*.a
507 %{_libdir}/libboost_regex*.a
508 %{_libdir}/libboost_serialization*.a
509 %{_libdir}/libboost_signals*.a
510 %{_libdir}/libboost_system*.a
511 %{_libdir}/libboost_test_exec_monitor*.a
512 %{_libdir}/libboost_thread*.a
513 %{_libdir}/libboost_unit_test_framework*.a
514 %{_libdir}/libboost_wave*.a
515 %{_libdir}/libboost_wserialization*.a
519 %defattr(644,root,root,755)
520 %attr(755,root,root) %{_libdir}/libboost_python*.so.*.*.*
523 %defattr(644,root,root,755)
524 %attr(755,root,root) %{_libdir}/libboost_python*.so
525 %{_includedir}/boost/python
526 %{_includedir}/boost/python.hpp
529 %defattr(644,root,root,755)
530 %{_libdir}/libboost_python*.a
534 %defattr(644,root,root,755)
535 %attr(755,root,root) %{_libdir}/libboost_date_time*.so.*.*.*
538 %defattr(644,root,root,755)
539 %attr(755,root,root) %{_libdir}/libboost_filesystem*.so.*.*.*
542 %defattr(644,root,root,755)
543 %attr(755,root,root) %{_libdir}/libboost_graph*.so.*.*.*
545 %files program_options
546 %defattr(644,root,root,755)
547 %attr(755,root,root) %{_libdir}/libboost_program_options*.so.*.*.*
550 %defattr(644,root,root,755)
551 %attr(755,root,root) %{_libdir}/libboost_regex*.so.*.*.*
554 %defattr(644,root,root,755)
555 %attr(755,root,root) %{_libdir}/libboost_signals*.so.*.*.*
558 %defattr(644,root,root,755)
559 %attr(755,root,root) %{_libdir}/libboost_system*.so.*.*.*
562 %defattr(644,root,root,755)
563 %attr(755,root,root) %{_libdir}/libboost_prg_exec_monitor*.so.*.*.*
564 %attr(755,root,root) %{_libdir}/libboost_unit_test_framework*.so.*.*.*
567 %defattr(644,root,root,755)
568 %attr(755,root,root) %{_libdir}/libboost_thread*.so.*.*.*
571 %defattr(644,root,root,755)
572 %attr(755,root,root) %{_libdir}/libboost_wave*.so.*.*.*
575 %defattr(644,root,root,755)
576 %{_docdir}/%{name}-%{version}