glfs/general/genlib/boost.xml

248 lines
8.5 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
2021-05-04 22:36:40 +08:00
<!ENTITY boost-download-http "https://boostorg.jfrog.io/artifactory/main/release/&boost-version;/source/boost_&boost-dl-version;.tar.bz2">
<!ENTITY boost-download-ftp " ">
2023-08-14 01:14:55 +08:00
<!ENTITY boost-md5sum "406f0b870182b4eb17a23a9d8fce967d">
<!ENTITY boost-size "117 MB">
<!ENTITY boost-buildsize "1.1 GB (199 MB installed)">
<!ENTITY boost-time "2.8 SBU (Using parallelism=4; add 0.7 SBU for tests)">
]>
<sect1 id="boost" xreflabel="Boost-&boost-version;">
<?dbhtml filename="boost.html"?>
<title>Boost-&boost-version;</title>
<indexterm zone="boost">
<primary sortas="a-Boost">Boost</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to Boost</title>
<para>
<application>Boost</application> provides a set of free peer-reviewed
portable C++ source libraries. It includes libraries for linear algebra,
pseudorandom number generation, multithreading, image processing, regular
expressions and unit testing.
</para>
2023-02-15 08:44:18 +08:00
&lfs113_checked;
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Download (HTTP): <ulink url="&boost-download-http;"/>
</para>
</listitem>
<listitem>
<para>
Download (FTP): <ulink url="&boost-download-ftp;"/>
</para>
</listitem>
<listitem>
<para>
Download MD5 sum: &boost-md5sum;
</para>
</listitem>
<listitem>
<para>
Download size: &boost-size;
</para>
</listitem>
<listitem>
<para>
Estimated disk space required: &boost-buildsize;
</para>
</listitem>
<listitem>
<para>
Estimated build time: &boost-time;
</para>
</listitem>
</itemizedlist>
<!--
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Recommended patch, required to build <xref linkend="libreoffice"/>:
<ulink url="&patch-root;/boost-&boost-version;-gcc_10-1.patch"/>
</para>
</listitem>
</itemizedlist>
-->
<bridgehead renderas="sect3">Boost Dependencies</bridgehead>
<bridgehead renderas="sect4">Recommended</bridgehead>
<para role="recommended">
<xref linkend="which"/>
</para>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional">
<xref linkend="icu"/> and
<ulink url="https://www.open-mpi.org/">Open MPI</ulink>
</para>
<para condition="html" role="usernotes">Editor Notes:
<ulink url="&blfs-wiki;/boost"/>
</para>
</sect2>
<sect2 role="installation">
<title>Installation of Boost</title>
<para>
A change in this version of <application>boost</application> breaks
the few packages which use the <application>phoenix</application>
module when compiled with current <application>GCC</application>. In BLFS,
that affects <xref linkend="libreoffice"/>. Fix this with the following
command:
</para>
<screen><userinput>sed -i '/#include.*phoenix.*tuple.hpp.*/d' \
boost/phoenix/stl.hpp</userinput></screen>
<para>
This package can be built with several jobs running in parallel. In
the instructions below, <parameter>&lt;N&gt;</parameter> stands for the
number of jobs. Install <application>Boost</application> by running the
following commands:
</para>
<screen><userinput>./bootstrap.sh --prefix=/usr --with-python=python3 &amp;&amp;
./b2 stage -j<replaceable>&lt;N&gt;</replaceable> threading=multi link=shared</userinput></screen>
<para>
2023-08-14 01:14:55 +08:00
To run Boost.Build's regression tests, issue
<command>pushd tools/build/test; python3 test_all.py; popd</command>.
2023-08-14 01:14:55 +08:00
<!--With python-3.10.x all 168 tests should pass. With
<xref linkend='python3'/>, 20 tests fail for undetermined reasons.-->
<!-- This was fixed in 1.83.0 -->
</para>
<para>
To run every library's regression tests, issue <command>pushd status;
../b2; popd</command>. A few tests may fail. They take a very long time
(over 119 SBU at -j4) and use a very large amount of disk space
(46 GB). You should use the <parameter>-jN</parameter> switch to
speed them up.
</para>
<note>
<para>
Boost installs many versioned directories in /usr/lib/cmake.
2022-01-08 07:58:43 +08:00
If a new version of <application>Boost</application> is installed over a
previous version, the older cmake directories need to be
explicitly removed. To do this, run as the
<systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>rm -rf /usr/lib/cmake/[Bb]oost*</userinput></screen>
<para>
before installing the new version.
</para>
</note>
<para>
Now, as the <systemitem class="username">root</systemitem> user:
</para>
<!-- dev note: ./b2 - -prefix=<DESTDIR>/usr install threading=multi link=shared -->
<screen role="root"><userinput>./b2 install threading=multi link=shared</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para>
<parameter>sed -i '/#include ...</parameter>: This removes the inclusion
of <filename>boost/phoenix/stl/tuple.hpp</filename> from this header-only
library, allowing applications which use it to link using recent C++.
<!-- FIXME: remove before 11.3 is we still use 1.81.0 and LO-7.4,
this alternative is only for people working through the development book.-->
An alternative is to edit
<filename>/usr/include/boost/phoenix/stl.hpp</filename> if this version of
boost has already been installed without this <command>sed</command>.
</para>
<para>
<parameter>threading=multi</parameter>: This parameter ensures that
<application>Boost</application> is built with multithreading support.
</para>
<para>
<parameter>link=shared</parameter>: This parameter ensures that only
shared libraries are created, except for libboost_exception and
libboost_test_exec_monitor which are created as static. Most people
will not need the static libraries, and most programs using
<application>Boost</application> only use the headers. Omit
this parameter if you do need static libraries.
</para>
<para>
<parameter>--with-python=python3</parameter>: This switch ensures Python3
is used if Python2 is installed.
</para>
<para>
<option>-jN</option>: This switch may be added to the
<command>b2</command> command lines, to run up to N processes in
parallel.
</para>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directory</segtitle>
<seglistitem>
<seg>
None
</seg>
<seg>
libboost_atomic.so, libboost_chrono.so, libboost_container.so,
libboost_context.so, libboost_contract.so, libboost_coroutine.so,
libboost_date_time.so, libboost_exception.a, libboost_fiber.so,
libboost_filesystem.so, libboost_graph.so, libboost_iostreams.so,
libboost_json.so, libboost_locale.so,
libboost_log_setup.so, libboost_log.so, libboost_math_c99.so,
libboost_math_c99f.so, libboost_math_c99l.so, libboost_math_tr1.so,
libboost_math_tr1f.so, libboost_math_tr1l.so,
libboost_nowide.so, libboost_numpy3&python3-minor;.so,
libboost_prg_exec_monitor.so, libboost_program_options.so,
libboost_python3&python3-minor;.so, libboost_random.so,
libboost_regex.so, libboost_serialization.so,
libboost_stacktrace_addr2line.so, libboost_stacktrace_basic.so,
libboost_stacktrace_noop.so, libboost_system.so,
libboost_test_exec_monitor.a, libboost_thread.so, libboost_timer.so,
libboost_type_erasure.so, libboost_unit_test_framework.so,
2023-04-19 05:26:35 +08:00
libboost_url.so, libboost_wave.so, and libboost_wserialization.so
</seg>
<seg>
/usr/include/boost
</seg>
</seglistitem>
</segmentedlist>
</sect2>
</sect1>