Automatic merge of trunk into multilib

This commit is contained in:
Thomas Trepl (Moody) 2022-11-18 08:41:41 +01:00
commit 8d5322ed52
5 changed files with 48 additions and 38 deletions

View File

@ -38,9 +38,10 @@
<para>From this point on, there is no need to use the <para>From this point on, there is no need to use the
<envar>LFS</envar> variable any more because all work will be restricted <envar>LFS</envar> variable any more because all work will be restricted
to the LFS file system; the <command>chroot</command> command tells the Bash shell that to the LFS file system; the <command>chroot</command> command runs the
<filename class="directory">$LFS</filename> is now the root Bash shell with the root
(<filename class="directory">/</filename>) directory.</para> (<filename class="directory">/</filename>) directory set to
<filename class='directory'>$LFS</filename>.</para>
<para>Notice that <filename class="directory">/tools/bin</filename> is not <para>Notice that <filename class="directory">/tools/bin</filename> is not
in the <envar>PATH</envar>. This means that the cross toolchain will no longer be in the <envar>PATH</envar>. This means that the cross toolchain will no longer be

View File

@ -41,8 +41,7 @@
<xref linkend='ch-config-udev-device-node-creation'/> for details.) <xref linkend='ch-config-udev-device-node-creation'/> for details.)
If the host kernel supports &devtmpfs;, we can simply mount a If the host kernel supports &devtmpfs;, we can simply mount a
&devtmpfs; at <filename class='directory'>$LFS/dev</filename> and rely &devtmpfs; at <filename class='directory'>$LFS/dev</filename> and rely
on the kernel to populate it (i.e., the udev daemon will do the on the kernel to populate it.</para>
necessary work automatically).</para>
<para>But some host kernels lack &devtmpfs; support; these <para>But some host kernels lack &devtmpfs; support; these
host distros use different methods to create the content of host distros use different methods to create the content of
@ -51,8 +50,8 @@
<filename class="directory">$LFS/dev</filename> directory is <filename class="directory">$LFS/dev</filename> directory is
by bind mounting the host system's by bind mounting the host system's
<filename class="directory">/dev</filename> directory. A bind mount is <filename class="directory">/dev</filename> directory. A bind mount is
a special type of mount that generates a duplicate copy of a a special type of mount that makes a directory subtree or a file
directory or mount point at some other location. Use the following visible at some other location. Use the following
command to do this.</para> command to do this.</para>
<screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen> <screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen>

View File

@ -43,7 +43,7 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Glibc</title> <title>Installation of Glibc</title>
<para>First, fix an issue building Glibc with parallel jobs and make-4.4 <para>First, fix an issue building Glibc with parallel jobs and Make-4.4
or later:</para> or later:</para>
<screen><userinput remap="pre">sed '/MAKEFLAGS :=/s/)r/) -r/' -i Makerules</userinput></screen> <screen><userinput remap="pre">sed '/MAKEFLAGS :=/s/)r/) -r/' -i Makerules</userinput></screen>
@ -97,7 +97,7 @@ cd build</userinput></screen>
<varlistentry> <varlistentry>
<term><parameter>--enable-kernel=&min-kernel;</parameter></term> <term><parameter>--enable-kernel=&min-kernel;</parameter></term>
<listitem> <listitem>
<para>This option tells the build system that this glibc may <para>This option tells the build system that this Glibc may
be used with kernels as old as &min-kernel;. This means generating be used with kernels as old as &min-kernel;. This means generating
workarounds in case a system call introduced in a later version workarounds in case a system call introduced in a later version
cannot be used.</para> cannot be used.</para>
@ -224,7 +224,7 @@ esac</userinput></screen>
<screen><userinput remap="install">make install</userinput></screen> <screen><userinput remap="install">make install</userinput></screen>
<para>Fix hardcoded path to the executable loader in <para>Fix a hardcoded path to the executable loader in the
<command>ldd</command> script:</para> <command>ldd</command> script:</para>
<screen><userinput remap="install">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</userinput></screen> <screen><userinput remap="install">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</userinput></screen>
@ -242,9 +242,9 @@ mkdir -pv /var/cache/nscd</userinput></screen>
install -v -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service</userinput></screen> install -v -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service</userinput></screen>
<para>Next, install the locales that can make the system respond in a <para>Next, install the locales that can make the system respond in a
different language. None of the locales are required, but if some of them different language. None of these locales are required, but if some of them
are missing, the test suites of future packages would skip important are missing, the test suites of some packages will skip important
testcases.</para> test cases.</para>
<para>Individual locales can be installed using the <para>Individual locales can be installed using the
<command>localedef</command> program. E.g., the second <command>localedef</command> program. E.g., the second
@ -297,7 +297,7 @@ localedef -i zh_TW -f UTF-8 zh_TW.UTF-8</userinput></screen>
<para>In addition, install the locale for your own country, language and <para>In addition, install the locale for your own country, language and
character set.</para> character set.</para>
<para>Alternatively, install all locales listed in the <para>Alternatively, install all the locales listed in the
<filename>glibc-&glibc-version;/localedata/SUPPORTED</filename> file <filename>glibc-&glibc-version;/localedata/SUPPORTED</filename> file
(it includes every locale listed above and many more) at once with the (it includes every locale listed above and many more) at once with the
following time-consuming command:</para> following time-consuming command:</para>
@ -363,7 +363,7 @@ EOF</userinput></screen>
</sect3> </sect3>
<sect3> <sect3>
<title>Adding time zone data</title> <title>Adding Time Zone Data</title>
<para>Install and set up the time zone data with the following:</para> <para>Install and set up the time zone data with the following:</para>
<screen><userinput>tar -xf ../../tzdata&tzdata-version;.tar.gz <screen><userinput>tar -xf ../../tzdata&tzdata-version;.tar.gz

View File

@ -20,20 +20,28 @@
work is to know what each package is used for and why you (or the system) work is to know what each package is used for and why you (or the system)
may need it.</para> may need it.</para>
<para>We do not recommend using optimizations. They can make <para>We do not recommend using customized optimizations. They can make
a program run slightly faster, but they may also cause compilation a program run slightly faster, but they may also cause compilation
difficulties and problems when running the program. If a package refuses to difficulties, and problems when running the program. If a package refuses to
compile when using optimization, try to compile it without optimization and compile with a customized optimization, try to compile it without
see if that fixes the problem. Even if the package does compile when using optimization and see if that fixes the problem. Even if the package does compile when using a customized
optimization, there is the risk it may have been compiled incorrectly because optimization, there is the risk it may have been compiled incorrectly because
of the complex interactions between the code and build tools. Also note that of the complex interactions between the code and the build tools. Also note that
the <option>-march</option> and <option>-mtune</option> options using values the <option>-march</option> and <option>-mtune</option> options using values
not specified in the book have not been tested. This may cause problems with not specified in the book have not been tested. This may cause problems with
the toolchain packages (Binutils, GCC and Glibc). The small potential gains the toolchain packages (Binutils, GCC and Glibc). The small potential gains
achieved in using compiler optimizations are often outweighed by the risks. achieved by customizing compiler optimizations are often outweighed by the risks.
First-time builders of LFS are encouraged to build without custom First-time builders of LFS are encouraged to build without custom
optimizations. The subsequent system will still run very fast and be stable optimizations.</para>
at the same time.</para>
<para>On the other hand, we keep the optimizations enabled by the default
configuration of the packages. In addition, we sometimes explicitly enable an
optimized configuration provided by a package but not enabled by
default. The package maintainers have already tested these configurations
and consider them safe, so it's not likely they would break the build.
Generally the default configuration already enables <option>-O2</option>
or <option>-O3</option>, so the resulting system will still run very fast
without any customized optimization, and be stable at the same time.</para>
<para>Before the installation instructions, each installation page provides <para>Before the installation instructions, each installation page provides
information about the package, including a concise description of what it information about the package, including a concise description of what it
@ -42,31 +50,31 @@
instructions, there is a list of programs and libraries (along with brief instructions, there is a list of programs and libraries (along with brief
descriptions) that the package installs.</para> descriptions) that the package installs.</para>
<note><para>The SBU values and required disk space includes test suite data <note><para>The SBU values and required disk space include test suite data
for all applicable packages in <xref linkend="chapter-building-system"/>. SBU for all applicable packages in <xref linkend="chapter-building-system"/>. SBU
values have been calculated using a single CPU core (-j1) for all values have been calculated using a single CPU core (-j1) for all
operations.</para></note> operations.</para></note>
<sect2> <sect2>
<title>About libraries</title> <title>About Libraries</title>
<para>In general, the LFS editors discourage building and installing static <para>In general, the LFS editors discourage building and installing static
libraries. The original purpose for most static libraries has been made libraries. Most static libraries have been made
obsolete in a modern Linux system. In addition, linking a static library obsolete in a modern Linux system. In addition, linking a static library
into a program can be detrimental. If an update to the library is needed into a program can be detrimental. If an update to the library is needed
to remove a security problem, all programs that use the static library will to remove a security problem, every program that uses the static library will
need to be relinked to the new library. Since the use of static libraries need to be relinked with the new library. Since the use of static libraries
is not always obvious, the relevant programs (and the procedures needed to is not always obvious, the relevant programs (and the procedures needed to
do the linking) may not even be known.</para> do the linking) may not even be known.</para>
<para>In the procedures in this chapter, we remove or disable installation of <para>The procedures in this chapter remove or disable installation of
most static libraries. Usually this is done by passing a most static libraries. Usually this is done by passing a
<option>--disable-static</option> option to <command>configure</command>. <option>--disable-static</option> option to <command>configure</command>.
In other cases, alternate means are needed. In a few cases, especially In other cases, alternate means are needed. In a few cases, especially
glibc and gcc, the use of static libraries remains essential to the general Glibc and GCC, the use of static libraries remains an essential feature of the
package building process. </para> package building process. </para>
<para>For a more complete discussion of libraries, see the discussion <para>For a more complete discussion of libraries, see
<ulink url="&blfs-book;introduction/libraries.html"> <ulink url="&blfs-book;introduction/libraries.html">
Libraries: Static or shared?</ulink> in the BLFS book.</para> Libraries: Static or shared?</ulink> in the BLFS book.</para>

View File

@ -12,10 +12,11 @@
<para>Package Management is an often requested addition to the LFS Book. A <para>Package Management is an often requested addition to the LFS Book. A
Package Manager tracks the installation of files, making it easier to Package Manager tracks the installation of files, making it easier to
remove and upgrade packages. As well as the binary and library files, a remove and upgrade packages. A good package manager will also handle the
package manager will handle the installation of configuration files. Before configuration files specially to keep the user configuration when the
package is reinstalled or upgraded. Before
you begin to wonder, NO&mdash;this section will not talk about nor recommend you begin to wonder, NO&mdash;this section will not talk about nor recommend
any particular package manager. What it provides is a roundup of the more any particular package manager. What it does provide is a roundup of the more
popular techniques and how they work. The perfect package manager for you may popular techniques and how they work. The perfect package manager for you may
be among these techniques, or it may be a combination of two or more of these be among these techniques, or it may be a combination of two or more of these
techniques. This section briefly mentions issues that may arise when upgrading techniques. This section briefly mentions issues that may arise when upgrading
@ -61,8 +62,8 @@
</listitem> </listitem>
<listitem> <listitem>
<para>If Linux API headers or glibc need to be upgraded to a newer <para>If the Linux API headers or Glibc need to be upgraded to a newer
version, (e.g., from glibc-2.31 to glibc-2.32), it is safer to version, (e.g., from Glibc-2.31 to Glibc-2.32), it is safer to
rebuild LFS. Though you <emphasis>may</emphasis> be able to rebuild rebuild LFS. Though you <emphasis>may</emphasis> be able to rebuild
all the packages in their dependency order, we do not recommend all the packages in their dependency order, we do not recommend
it. </para> it. </para>
@ -202,7 +203,7 @@
it is installed in <filename class="directory">/usr</filename> though in it is installed in <filename class="directory">/usr</filename> though in
reality it is installed in the reality it is installed in the
<filename class="directory">/usr/pkg</filename> hierarchy. Installing in <filename class="directory">/usr/pkg</filename> hierarchy. Installing in
this manner is not usually a trivial task. For example, consider that you this manner is not usually a trivial task. For example, suppose you
are installing a package libfoo-1.1. The following instructions may are installing a package libfoo-1.1. The following instructions may
not install the package properly:</para> not install the package properly:</para>
@ -321,7 +322,8 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
depend on the position of files on a disk system. Cloning an LFS build to depend on the position of files on a disk system. Cloning an LFS build to
another computer with the same architecture as the base system is as another computer with the same architecture as the base system is as
simple as using <command>tar</command> on the LFS partition that contains simple as using <command>tar</command> on the LFS partition that contains
the root directory (about 250MB uncompressed for a base LFS build), copying the root directory (about 900MB uncompressed for a basic LFS build), copying
<!-- D. Bryant created LFS 11.2 in October 2022; 900MB is (roughly) the size of his rsync archive. -->
that file via network transfer or CD-ROM / USB stick to the new system, and expanding that file via network transfer or CD-ROM / USB stick to the new system, and expanding
it. After that, a few configuration files will have to be changed. it. After that, a few configuration files will have to be changed.
Configuration files that may need to be updated include: Configuration files that may need to be updated include: