Merge remote-tracking branch 'origin/trunk' into xry111/arm64

This commit is contained in:
Xi Ruoyao 2022-12-09 15:53:09 +08:00
commit a747ea2a67
No known key found for this signature in database
GPG Key ID: ACAAD20E19E710E3
21 changed files with 262 additions and 177 deletions

View File

@ -39,6 +39,54 @@
<listitem revision="sysv"> or <listitem revision="systemd"> as
appropriate for the entry or if needed the entire day's listitem.
-->
<listitem>
<para>2022-12-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-6.0.11 (Security update). Fixes
<ulink url="&lfs-ticket-root;5175">#5175</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2022-12-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to iana-etc-20221122. Addresses
<ulink url="&lfs-ticket-root;5006">#5006</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to xz-5.2.9. Fixes
<ulink url="&lfs-ticket-root;5174">#5174</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to tzdata-2022g. Fixes
<ulink url="&lfs-ticket-root;5172">#5172</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to texinfo-7.0.1. Fixes
<ulink url="&lfs-ticket-root;5173">#5173</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to tcl-8.6.13. Fixes
<ulink url="&lfs-ticket-root;5170">#5170</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to meson-0.64.1. Fixes
<ulink url="&lfs-ticket-root;5169">#5169</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.0.10. Fixes
<ulink url="&lfs-ticket-root;5171">#5171</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gawk-5.2.1. Fixes
<ulink url="&lfs-ticket-root;5168">#5168</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2022-11-22</para>
<itemizedlist>

View File

@ -247,9 +247,9 @@
<!--<listitem>
<para>Tar-&tar-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Tcl-&tcl-version;</para>
</listitem>-->
</listitem>
<listitem>
<para>Texinfo-&texinfo-version;</para>
</listitem>

View File

@ -8,7 +8,7 @@
<sect1 id="ch-tools-creatingminlayout">
<?dbhtml filename="creatingminlayout.html"?>
<title>Creating a limited directory layout in LFS filesystem</title>
<title>Creating a Limited Directory Layout in the LFS Filesystem</title>
<para>In this section, we begin populating the LFS filesystem with the
pieces that will constitute the final Linux system. The first step is to
@ -35,4 +35,16 @@ done</userinput></screen>
<screen><userinput>mkdir -pv $LFS/tools</userinput></screen>
<note>
<para>
The LFS editors have deliberately decided not to use a
<filename class="directory">/usr/lib64</filename> directory. Several
steps are taken to be sure the toolchain will not use it. If for any
reason this directory appears (either because you made an error in
following the instructions, or because you installed a binary package that
created it after finishing LFS), it may break your system.
You should always be sure this directory does not exist.
</para>
</note>
</sect1>

View File

@ -160,15 +160,15 @@ cd build</userinput></screen>
</varlistentry>
<varlistentry>
<term><parameter>--disable-decimal-float, --disable-threads,
--disable-libatomic, --disable-libgomp,
<term><parameter>--disable-threads,
--disable-libatomic, --disable-libgomp,
--disable-libquadmath, --disable-libssp, --disable-libvtv,
--disable-libstdcxx</parameter></term>
<listitem>
<para>These switches disable support for the decimal floating point
extension, threading, libatomic, libgomp, libquadmath, libssp,
<para>These switches disable support for
threading, libatomic, libgomp, libquadmath, libssp,
libvtv, and the C++ standard library respectively. These features
will fail to compile when building a cross-compiler and are not
may fail to compile when building a cross-compiler and are not
necessary for the task of cross-compiling the temporary libc.</para>
</listitem>
</varlistentry>

View File

@ -68,6 +68,17 @@ install -dv -m 1777 /tmp /var/tmp</userinput></screen>
directories that are really necessary. However, feel free to create more
directories, if you wish. </para>
<warning>
<para>
The FHS does not mandate the existence of the directory
<filename class="directory">/usr/lib64</filename>, and the LFS editors
have decided not to use it. For the instructions in LFS and BLFS to work correctly,
it is imperative that this directory be non-existent. From time to time you should
verify that it does not exist, because it is easy to create it
inadvertently, and this will probably break your system.
</para>
</warning>
</sect2>
</sect1>

View File

@ -23,7 +23,7 @@
<sect2 role="package">
<title/>
<para>The Bash package contains the Bourne-Again SHell.</para>
<para>The Bash package contains the Bourne-Again Shell.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -73,8 +73,8 @@
<screen><userinput remap="test">chown -Rv tester .</userinput></screen>
<para>The testsuite of the package is designed to be run as a non-&root;
user that owns the terminal connected to standard input. To satisfy the
<para>The test suite of this package is designed to be run as a non-&root;
user who owns the terminal connected to standard input. To satisfy the
requirement, spawn a new pseudo terminal using
<application>Expect</application> and run the tests as the <systemitem
class="username">tester</systemitem> user:</para>

View File

@ -44,10 +44,6 @@
<screen><userinput remap="pre">sed -i 's/extras//' Makefile.in</userinput></screen>
<para>Now fix a programming error identified upstream:</para>
<screen><userinput remap="pre">sed -i '241i UPREF(m);' interpret.h</userinput></screen>
<para>Prepare Gawk for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>

View File

@ -76,8 +76,8 @@ cd build</userinput></screen>
--disable-bootstrap \
--with-system-zlib</userinput></screen>
<para>Note that for other programming languages there are some prerequisites that
are not yet available. See the
<para>GCC supports seven different computer languages, but the
prerequisites for most of them have not yet been installed. See the
<ulink url="&blfs-book;general/gcc.html">BLFS Book GCC page</ulink>
for instructions on how to build all of GCC's supported languages.</para>
@ -87,8 +87,8 @@ cd build</userinput></screen>
<varlistentry>
<term><parameter>LD=ld</parameter></term>
<listitem>
<para>This parameter makes the configure script use the ld installed
by the binutils built earlier in this chapter, rather than
<para>This parameter makes the configure script use the ld program installed
by the Binutils package built earlier in this chapter, rather than
the cross-built version which would otherwise be used.</para>
</listitem>
</varlistentry>
@ -97,7 +97,7 @@ cd build</userinput></screen>
<term><parameter>--with-system-zlib</parameter></term>
<listitem>
<para>This switch tells GCC to link to the system installed copy of
the zlib library, rather than its own internal copy.</para>
the Zlib library, rather than its own internal copy.</para>
</listitem>
</varlistentry>
</variablelist>
@ -105,21 +105,21 @@ cd build</userinput></screen>
<note>
<anchor id="pie-ssp-info" xreflabel="note on PIE and SSP"/>
<para>
PIE (position-independent executable) is a technique to produce
PIE (position-independent executables) are
binary programs that can be loaded anywhere in memory. Without PIE,
the security feature named ASLR (Address Space Layout Randomization)
can be applied for the shared libraries, but not the executable
itself. Enabling PIE allows ASLR for the executables in addition to
can be applied for the shared libraries, but not for the executables
themselves. Enabling PIE allows ASLR for the executables in addition to
the shared libraries, and mitigates some attacks based on fixed
addresses of sensitive code or data in the executables.
</para>
<para>
SSP (Stack Smashing Protection) is a technique to ensure
that the parameter stack is not corrupted. Stack corruption can
for example alter the return address of a subroutine,
which would allow transferring control to some dangerous code
that the parameter stack is not corrupted. Stack corruption can,
for example, alter the return address of a subroutine,
thus transferring control to some dangerous code
(existing in the program or shared libraries, or injected by the
attacker somehow) instead of the original one.
attacker somehow).
</para>
</note>
@ -129,10 +129,10 @@ cd build</userinput></screen>
<important>
<para>In this section, the test suite for GCC is considered
important, but it takes a long time. First time builders are
encouraged to not skip it. The time to run the tests can be
reduced significantly by adding -jx to the make command below
where x is the number of cores on your system.</para>
important, but it takes a long time. First-time builders are
encouraged to run the test suite. The time to run the tests can be
reduced significantly by adding -jx to the <command>make -k check</command> command below,
where x is the number of CPU cores on your system.</para>
</important>
<para>One set of tests in the GCC test suite is known to exhaust the default
@ -145,11 +145,11 @@ cd build</userinput></screen>
<screen><userinput remap="test">chown -Rv tester .
su tester -c "PATH=$PATH make -k check"</userinput></screen>
<para>To receive a summary of the test suite results, run:</para>
<para>To extract a summary of the test suite results, run:</para>
<screen><userinput remap="test">../contrib/test_summary</userinput></screen>
<para>For only the summaries, pipe the output through
<para>To filter out only the summaries, pipe the output through
<userinput>grep -A7 Summ</userinput>.</para>
<para>Results can be compared with those located at <ulink
@ -221,8 +221,8 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen>
<screen><userinput remap="install">make install</userinput></screen>
<para>The GCC build directory is owned by <systemitem class="username">
tester</systemitem> now and the ownership of the installed header
directory (and its content) will be incorrect. Change the ownership to
tester</systemitem> now, and the ownership of the installed header
directory (and its content) is incorrect. Change the ownership to the
<systemitem class="username">root</systemitem> user and group:</para>
<screen><userinput remap="install">chown -v -R root:root \
@ -259,7 +259,7 @@ readelf -l a.out | grep ': /lib'</userinput></screen>
<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux-aarch64.so.1]</computeroutput></screen>
<para>Now make sure that we're setup to use the correct start files:</para>
<para>Now make sure that we're set up to use the correct start files:</para>
<screen><userinput>grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log</userinput></screen>
@ -308,7 +308,7 @@ SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");</computeroutput></screen>
<para>A 32-bit system may see a few different directories. For example, here
<para>A 32-bit system may use a few other directories. For example, here
is the output from an i686 machine:</para>
<screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
@ -341,7 +341,7 @@ SEARCH_DIR("/usr/lib");</computeroutput></screen>
at all, then something is seriously wrong. Investigate and retrace the
steps to find out where the problem is and correct it. <!--The most likely
reason is that something went wrong with the specs file adjustment.--> Any
issues will need to be resolved before continuing with the process.</para>
issues should be resolved before continuing with the process.</para>
<para>Once everything is working correctly, clean up the test files:</para>
@ -408,7 +408,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<term><command>cpp</command></term>
<listitem>
<para>The C preprocessor; it is used by the compiler to expand the
#include, #define, and similar statements in the source files</para>
#include, #define, and similar directives in the source files</para>
<indexterm zone="ch-system-gcc cpp">
<primary sortas="b-cpp">cpp</primary>
</indexterm>
@ -441,7 +441,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<para>A wrapper around <command>ar</command> that adds a
plugin to the command line. This program is only used
to add "link time optimization" and is not useful with the
default build options</para>
default build options.</para>
<indexterm zone="ch-system-gcc gcc-ar">
<primary sortas="b-gcc-ar">gc-ar</primary>
</indexterm>
@ -454,7 +454,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<para>A wrapper around <command>nm</command> that adds a
plugin to the command line. This program is only used
to add "link time optimization" and is not useful with the
default build options</para>
default build options.</para>
<indexterm zone="ch-system-gcc gcc-nm">
<primary sortas="b-gcc-nm">gc-nm</primary>
</indexterm>
@ -467,7 +467,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<para>A wrapper around <command>ranlib</command> that adds a
plugin to the command line. This program is only used
to add "link time optimization" and is not useful with the
default build options</para>
default build options.</para>
<indexterm zone="ch-system-gcc gcc-ranlib">
<primary sortas="b-gcc-ranlib">gc-ranlib</primary>
</indexterm>
@ -478,7 +478,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<term><command>gcov</command></term>
<listitem>
<para>A coverage testing tool; it is used to analyze programs to
determine where optimizations will have the most effect</para>
determine where optimizations will have the greatest effect</para>
<indexterm zone="ch-system-gcc gcov">
<primary sortas="b-gcov">gcov</primary>
</indexterm>
@ -559,7 +559,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<varlistentry id="libgcov">
<term><filename class="libraryfile">libgcov</filename></term>
<listitem>
<para>This library is linked in to a program when GCC is instructed
<para>This library is linked into a program when GCC is instructed
to enable profiling</para>
<indexterm zone="ch-system-gcc libgcov">
<primary sortas="c-libgcov">libgcov</primary>
@ -601,7 +601,7 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<varlistentry id="liblto_plugin">
<term><filename class="libraryfile">liblto_plugin</filename></term>
<listitem>
<para>GCC's LTO plugin allows binutils to process object files
<para>GCC's LTO plugin allows Binutils to process object files
produced by GCC with LTO enabled</para>
<indexterm zone="ch-system-gcc liblto_plugin">
<primary sortas="c-liblto_plugin">liblto_plugin</primary>
@ -623,8 +623,8 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<term><filename class="libraryfile">libssp</filename></term>
<listitem>
<para>Contains routines supporting GCC's stack-smashing protection
functionality. Normally it's unused because glibc also provides
those routines</para>
functionality. Normally it is not used, because Glibc also provides
those routines.</para>
<indexterm zone="ch-system-gcc libssp">
<primary sortas="c-libssp">libssp</primary>
</indexterm>

View File

@ -24,7 +24,7 @@
<title/>
<para>The GDBM package contains the GNU Database Manager. It is a library
of database functions that use extensible hashing and works similar to the
of database functions that uses extensible hashing and works like the
standard UNIX dbm. The library provides primitives for storing key/data
pairs, searching and retrieving the data by its key and deleting a key
along with its data. </para>

View File

@ -346,7 +346,7 @@ chmod -v 0755 /usr/lib/preloadable_libintl.so</userinput></screen>
<varlistentry id="libasprintf">
<term><filename class="libraryfile">libasprintf</filename></term>
<listitem>
<para>defines the <emphasis>autosprintf</emphasis> class, which makes
<para>Defines the <emphasis>autosprintf</emphasis> class, which makes
C formatted output routines usable in C++ programs, for use with the
<emphasis>&lt;string&gt;</emphasis> strings and the
<emphasis>&lt;iostream&gt;</emphasis> streams</para>
@ -359,7 +359,7 @@ chmod -v 0755 /usr/lib/preloadable_libintl.so</userinput></screen>
<varlistentry id="libgettextlib">
<term><filename class="libraryfile">libgettextlib</filename></term>
<listitem>
<para>a private library containing common routines used by the
<para>Contains common routines used by the
various Gettext programs; these are not intended for general use</para>
<indexterm zone="ch-system-gettext libgettextlib">
<primary sortas="c-libgettextlib">libgettextlib</primary>
@ -385,7 +385,7 @@ chmod -v 0755 /usr/lib/preloadable_libintl.so</userinput></screen>
<varlistentry id="libgettextsrc">
<term><filename class="libraryfile">libgettextsrc</filename></term>
<listitem>
<para>A private library containing common routines used by the
<para>Provides common routines used by the
various Gettext programs; these are not intended for general use</para>
<indexterm zone="ch-system-gettext libgettextsrc">
<primary sortas="c-libgettextsrc">libgettextsrc</primary>
@ -406,8 +406,8 @@ chmod -v 0755 /usr/lib/preloadable_libintl.so</userinput></screen>
<varlistentry id="preloadable_libintl">
<term><filename class="libraryfile">preloadable_libintl</filename></term>
<listitem>
<para>A library, intended to be used by LD_PRELOAD that assists
<filename class="libraryfile">libintl</filename> in logging
<para>A library, intended to be used by LD_PRELOAD, that helps
<filename class="libraryfile">libintl</filename> log
untranslated messages</para>
<indexterm zone="ch-system-gettext preloadable_libintl">
<primary sortas="c-preloadable_libintl">preloadable_libintl</primary>

View File

@ -41,8 +41,8 @@
<sect2 role="installation">
<title>Installation of Libelf</title>
<para>Libelf is part of elfutils-&elfutils-version; package. Use
the elfutils-&elfutils-version;.tar.bz2 as the source tarball.</para>
<para>Libelf is part of the elfutils-&elfutils-version; package. Use
the elfutils-&elfutils-version;.tar.bz2 file as the source tarball.</para>
<para>Prepare Libelf for compilation:</para>
@ -59,7 +59,7 @@
<screen><userinput remap="test">make check</userinput></screen>
<para>One test named <filename>run-low_high_pc.sh</filename> is known to
fail on ARM64.</para>
fail on ARM64 systems.</para>
<para>Install only Libelf:</para>

View File

@ -26,6 +26,11 @@
<para>The Libffi library provides a portable, high level programming
interface to various calling conventions. This allows a programmer to call
any function specified by a call interface description at run time.</para>
<para>FFI stands for Foreign Function Interface. An FFI allows a program written
in one language to call a program written in another language. Specifically,
Libffi can provide a bridge between an interpreter like Perl, or Python, and
shared library subroutines written in C, or C++.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -43,7 +48,7 @@
<title>Installation of Libffi</title>
<note>
<para>Similar to GMP, libffi builds with optimizations specific
<para>Like GMP, Libffi builds with optimizations specific
to the processor in use. If building for another system, change the
value of the <parameter>--with-gcc-arch=</parameter> parameter in the
following command to an architecture name fully implemented by the
@ -52,7 +57,7 @@
Illegal Operation Errors.</para>
</note>
<para>Prepare libffi for compilation:</para>
<para>Prepare Libffi for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--disable-static \
@ -67,7 +72,7 @@
<listitem>
<para>Ensure GCC optimizes for the current system. If this
is not specified, the system is guessed and the code generated
may not be correct for some systems. If the generated code
may not be correct. If the generated code
will be copied from the native system to a less capable
system, use the less capable system as a parameter. For details
about alternative system types, see <ulink
@ -80,8 +85,8 @@
<!-- To editors: try to remove it once GJS fixed (at GNOME 43) -->
<term><parameter>--disable-exec-static-tramp</parameter></term>
<listitem>
<para>Disable static trampoline support. It's a new security
feature in libffi, but some BLFS packages (notably
<para>Disable static trampoline support, a new security
feature in Libffi. Some BLFS packages (notably
<application>GJS</application>) have not been adapted for it.</para>
</listitem>
</varlistentry>
@ -124,7 +129,7 @@
<varlistentry id="libffi">
<term><filename class="libraryfile">libffi</filename></term>
<listitem>
<para>contains the foreign function interface API functions</para>
<para>Contains the foreign function interface API functions</para>
<indexterm zone="ch-system-libffi">
<primary sortas="c-libffi">libffi</primary>
</indexterm>

View File

@ -24,7 +24,7 @@
<title/>
<para>The Libtool package contains the GNU generic library support script.
It wraps the complexity of using shared libraries in a consistent, portable
It makes the use of shared libraries simpler with a consistent, portable
interface.</para>
<segmentedlist>
@ -54,7 +54,7 @@
<screen><userinput remap="test">make -k check</userinput></screen>
<note><para>The test time for libtool can be reduced significantly on a
<note><para>The test time for Libtool can be reduced significantly on a
system with multiple cores. To do this, append
<command>TESTSUITEFLAGS=-j&lt;N&gt;</command> to the line above. For
instance, using -j4 can reduce the test time by over 60
@ -62,7 +62,7 @@
<para>Five tests are known to fail in the LFS build environment due
to a circular dependency, but these tests pass if rechecked after
automake is installed. Additionally, with grep-3.8, two tests will
automake has been installed. Additionally, with grep-3.8, two tests will
trigger a warning for non-POSIX regular expressions and fail.</para>
<para>Install the package:</para>
@ -123,7 +123,7 @@
<varlistentry id="libltdl">
<term><filename class="libraryfile">libltdl</filename></term>
<listitem>
<para>Hides the various difficulties of dlopening libraries</para>
<para>Hides the various difficulties of opening dynamically loaded libraries</para>
<indexterm zone="ch-system-libtool libltdl">
<primary sortas="c-libltdl">libltdl</primary>
</indexterm>

View File

@ -36,10 +36,10 @@
</segmentedlist>
<tip revision="sysv">
<para>This section is not strictly required for LFS if not using
systemd. On the other hand, ninja associated to meson makes
<para>This section is not strictly required when LFS does not use
systemd. On the other hand, Ninja, along with Meson, makes
a powerful build system combination,
which is expected to be used more and more often. It is required for
which will probably be used more and more often. It is required for
several packages in <ulink url="&blfs-book;">the BLFS
book</ulink>.</para>
</tip>
@ -49,12 +49,12 @@
<sect2 role="installation">
<title>Installation of Ninja</title>
<para>When run, ninja normally runs a maximum number of processes
in parallel. By default this is the number of cores on the system
plus two. In some cases this can overheat a CPU or run a system out
of memory. If run from the command line, passing a -jN parameter
will limit the number of parallel processes, but some packages
embed the execution of ninja and do not pass a -j parameter.</para>
<para>When run, <command>ninja</command> normally utilizes the greatest
possible number of processes in parallel. By default this is the number of cores on the system,
plus two. This may overheat the CPU, or make the system run out
of memory. When <command>ninja</command> is invoked from the command line, passing the -jN parameter
will limit the number of parallel processes. Some packages
embed the execution of <command>ninja</command>, and do not pass the -j parameter on to it.</para>
<para>Using the <emphasis>optional</emphasis> procedure below allows a user to
limit the number of parallel processes via an environment variable,
@ -62,10 +62,10 @@
<screen>export NINJAJOBS=4</screen>
will limit ninja to four parallel processes.</para>
will limit <command>ninja</command> to four parallel processes.</para>
<para>If desired, add the capability to use the environment variable
NINJAJOBS by running:</para>
<para>If desired, make <command>ninja</command> recognize the environment variable
NINJAJOBS by running the stream editor:</para>
<screen><userinput remap="pre">sed -i '/int Guess/a \
int j = 0;\
@ -84,7 +84,7 @@
<varlistentry>
<term><parameter>--bootstrap</parameter></term>
<listitem>
<para>This parameter forces ninja to rebuild itself for the current
<para>This parameter forces Ninja to rebuild itself for the current
system.</para>
</listitem>
</varlistentry>

View File

@ -89,13 +89,13 @@ make MANSUFFIX=ssl install</userinput></screen>
You should update OpenSSL when a new version which fixes vulnerabilities
is announced. Since OpenSSL 3.0.0, the OpenSSL versioning scheme
follows the MAJOR.MINOR.PATCH format. API/ABI compatibility
are guaranteed for the same MAJOR version number. Because LFS
is guaranteed for the same MAJOR version number. Because LFS
installs only the shared libraries, there is no need to recompile
packages which link to
<filename class="libraryfile">libcrypto.so</filename> or
<filename class="libraryfile">libssl.so</filename>
<emphasis>when upgrading to a version with MAJOR version number
unchanged</emphasis>.
<emphasis>when upgrading to a version with the same MAJOR version
number</emphasis>.
</para>
<para>

View File

@ -46,7 +46,7 @@
<screen><userinput remap="pre">patch -Np1 -i ../&perl-fix-patch;</userinput></screen>
-->
<para>This version of Perl now builds the Compress::Raw::Zlib and
<para>This version of Perl builds the Compress::Raw::Zlib and
Compress::Raw::BZip2 modules. By
default Perl will use an internal copy of the sources for the build.
Issue the following command so that Perl will use the libraries
@ -57,7 +57,7 @@ export BUILD_BZIP2=0</userinput></screen>
<para>To have full control over the way Perl is set up, you can remove the
<quote>-des</quote> options from the following command and hand-pick the way
this package is built. Alternatively, use the command exactly as below to
this package is built. Alternatively, use the command exactly as shown below to
use the defaults that Perl auto-detects:</para>
<screen><userinput remap="configure">sh Configure -des \
@ -82,7 +82,7 @@ export BUILD_BZIP2=0</userinput></screen>
<term><parameter>-Dvendorprefix=/usr</parameter></term>
<listitem>
<para>This ensures <command>perl</command> knows how to
tell packages where they should install their perl modules.</para>
tell packages where they should install their Perl modules.</para>
</listitem>
</varlistentry>
@ -99,33 +99,33 @@ export BUILD_BZIP2=0</userinput></screen>
-Dman3dir=/usr/share/man/man3</parameter></term>
<listitem>
<para>Since Groff is not installed yet, <command>Configure</command>
thinks that we do not want man pages for Perl. Issuing these
parameters overrides this decision.</para>
will not create man pages for Perl. These
parameters override this behavior.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Duseshrplib</parameter></term>
<listitem>
<para>Build a shared libperl needed by some perl modules.</para>
<para>Build a shared libperl needed by some Perl modules.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dusethreads</parameter></term>
<listitem>
<para>Build perl with support for threads.</para>
<para>Build Perl with support for threads.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-Dprivlib,-Darchlib,-Dsitelib,...</parameter></term>
<listitem>
<para>These settings define where Perl is looking for installed
<para>These settings define where Perl looks for installed
modules. The LFS editors chose to put them in a directory structure
based on the Major.Minor version of Perl (&perl-version-min;) which
allows upgrading Perl to newer Patch levels (&perl-version;) without
the need to reinstall all of the modules again.</para>
reinstalling all of the modules.</para>
</listitem>
</varlistentry>
@ -185,7 +185,7 @@ unset BUILD_ZLIB BUILD_BZIP2</userinput></screen>
<varlistentry id="corelist">
<term><command>corelist</command></term>
<listitem>
<para>A commandline frontend to Module::CoreList</para>
<para>A command line front end to Module::CoreList</para>
<indexterm zone="ch-system-perl corelist">
<primary sortas="b-corelist">corelist</primary>
</indexterm>
@ -250,8 +250,8 @@ unset BUILD_ZLIB BUILD_BZIP2</userinput></screen>
<varlistentry id="instmodsh">
<term><command>instmodsh</command></term>
<listitem>
<para>Shell script for examining installed Perl modules,
and can create a tarball from an installed module</para>
<para>Shell script for examining installed Perl modules;
it can create a tarball from an installed module</para>
<indexterm zone="ch-system-perl instmodsh">
<primary sortas="b-instmodsh">instmodsh</primary>
</indexterm>
@ -284,7 +284,7 @@ unset BUILD_ZLIB BUILD_BZIP2</userinput></screen>
<listitem>
<para>Combines some of the best features of C, <command>sed</command>,
<command>awk</command> and <command>sh</command> into a single
swiss-army language</para>
Swiss Army language</para>
<indexterm zone="ch-system-perl perl">
<primary sortas="b-perl">perl</primary>
</indexterm>

View File

@ -25,7 +25,8 @@
<para>The Python 3 package contains the Python development environment. It
is useful for object-oriented programming, writing scripts, prototyping
large programs, or developing entire applications.</para>
large programs, and developing entire applications. Python is an interpreted
computer language.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -56,7 +57,7 @@
<varlistentry>
<term><parameter>--with-system-expat</parameter></term>
<listitem>
<para>This switch enables linking against system version of
<para>This switch enables linking against the system version of
<application>Expat</application>.</para>
</listitem>
</varlistentry>
@ -64,15 +65,19 @@
<varlistentry>
<term><parameter>--with-system-ffi</parameter></term>
<listitem>
<para>This switch enables linking against system version of
<application>libffi</application>.</para>
<para>This switch enables linking against the system version of
<filename class='libraryfile'>libffi.so</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-optimizations</parameter></term>
<listitem>
<para>This switch enables stable, but expensive, optimizations.</para>
<para>This switch enables extensive, but time-consuming, optimization
steps. The interpreter is built twice; tests performed on the first
build are used to improve the optimized final version.</para>
<!-- This description was drawn from the README.rst file
in the Python-3.11.0 package. -->
</listitem>
</varlistentry>
@ -84,7 +89,7 @@
<para>Running the tests at this point is not recommended. The
tests are known to hang indefinitely in the partial LFS environment.
If desired, the tests can be rerun at the end of this chapter or
If desired, the tests can be rerun at the end of this chapter, or
when Python 3 is reinstalled in BLFS. To run the tests anyway,
issue <command>make test</command>.</para>
@ -92,29 +97,34 @@
<screen><userinput remap="install">make install</userinput></screen>
<para>In several places we use the <command>pip3</command> command to
<para>We use the <command>pip3</command> command to
install Python 3 programs and modules for all users as
<systemitem class='username'>root</systemitem>. This conflicts
with the Python developers recommendation to install packages into a
virtual environment or the home directory of a regular user (by running
<command>pip3</command> as this user). To this end, a multi-line warning
is written when using <command>pip3</command> as the
<systemitem class='username'>root</systemitem> user. The main reason
of this recommendation is for avoiding a conflict with the system
package manager (<command>dpkg</command> for example), but LFS does not
have a system-wide package manager so this is not a problem. And,
<command>pip3</command> will attempt to check for a new version of
itself whenever it's run. As domain name resolving is not configured
yet in LFS chroot environment, it will fail to check for a new version
and produce a warning. Once we boot the LFS system and set up network
connection, it will then produce a warning telling the user to update it
from a pre-built wheel on PyPI if any new version is available. But LFS
consider <command>pip3</command> a part of Python 3 so it should not be
updated separately, and an update from a pre-built wheel will deviate
from our purpose to build a Linux system from source code. So the
warning for a new <command>pip3</command> version should be ignored as
well. If desired, suppress these warnings by running the following
commands:</para>
<systemitem class='username'>root</systemitem> in several places in this book.
This conflicts with the Python developers' recommendation: to install packages into a
virtual environment, or into the home directory of a regular user (by running
<command>pip3</command> as this user). A multi-line warning
is triggered whenever <command>pip3</command> is issued by the
<systemitem class='username'>root</systemitem> user.</para>
<para>The main reason
for the recommendation is to avoid conflicts with the system's
package manager (<command>dpkg</command>, for example). LFS does not
have a system-wide package manager, so this is not a problem. Also,
<command>pip3</command> will check for a new version of
itself whenever it's run. Since domain name resolution is not yet configured
in the LFS chroot environment, <command>pip3</command> cannot check
for a new version of itself, and will
produce a warning. </para>
<para>After we boot the LFS system and set up a network connection,
a different warning will be issued, telling the user to update <command>pip3</command>
from a pre-built wheel on PyPI (whenever a new version is available). But LFS
considers <command>pip3</command> to be a part of Python 3, so it should not be
updated separately. Also, an update from a pre-built wheel would deviate
from our objective: to build a Linux system from source code. So the
warning about a new version of <command>pip3</command> should be ignored as
well. If you wish, you can suppress all these warnings by running the following
command, which creates a configuration file:</para>
<screen><userinput remap="install">cat &gt; /etc/pip.conf &lt;&lt; EOF
<literal>[global]
@ -130,20 +140,20 @@ EOF
<important>
<para>
In LFS and BLFS we normally build and install Python modules with the
<command>pip3</command> command. Please take care that the
<command>pip3 install</command> commands in both the books should be
run as the &root; user unless it's for a Python virtual environment.
Running a <command>pip3 install</command> as a non-&root; user may seem
to work fine, but it will cause the installed module to be inaccessible
<command>pip3</command> command. Please be sure that the
<command>pip3 install</command> commands in both books are
run as the &root; user (unless it's for a Python virtual environment).
Running <command>pip3 install</command> as a non-&root; user may seem
to work, but it will cause the installed module to be inaccessible
by other users.
</para>
<para>
<command>pip3 install</command> will not reinstall an already installed
module by default. For using the <command>pip3 install</command>
module automatically. When using the <command>pip3 install</command>
command to upgrade a module (for example, from meson-0.61.3 to
meson-0.62.0), insert the option <parameter>--upgrade</parameter> into
the command line. If it's really necessary to downgrade a module or
the command line. If it's really necessary to downgrade a module, or
reinstall the same version for some reason, insert
<parameter>--force-reinstall --no-deps</parameter> into the command
line.
@ -167,7 +177,7 @@ tar --strip-components=1 \
<term><option>--no-same-owner</option> and <option>--no-same-permissions</option></term>
<listitem>
<para>Ensure the installed files have the correct ownership and
permissions. Without these options, using <application>tar</application>
permissions. Without these options, <application>tar</application>
will install the package files with the upstream creator's values.
</para>
</listitem>
@ -226,8 +236,8 @@ tar --strip-components=1 \
<para>
is a wrapper script that opens a <application>Python</application>
aware GUI editor. For this script to run, you must have installed
<application>Tk</application> before Python so that the Tkinter
Python module is built
<application>Tk</application> before Python, so that the Tkinter
Python module is built.
</para>
<indexterm zone="ch-system-Python">
<primary sortas="b-idle3">idle3</primary>
@ -240,7 +250,7 @@ tar --strip-components=1 \
<listitem>
<para>
The package installer for Python. You can use pip to install
packages from Python Package Index and other indexes
packages from Python Package Index and other indexes.
</para>
<indexterm zone="ch-system-Python">
<primary sortas="b-pip3">pip3</primary>
@ -264,8 +274,8 @@ tar --strip-components=1 \
<term><command>python3</command></term>
<listitem>
<para>
is an interpreted, interactive, object-oriented programming
language
is the interpreter for Python, an interpreted, interactive,
object-oriented programming language
</para>
<indexterm zone="ch-system-Python">
<primary sortas="b-python3">python3</primary>

View File

@ -62,7 +62,9 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
<para id="shadow-login_defs">Instead of using the default
<emphasis>crypt</emphasis> method, use the more secure
<emphasis>SHA-512</emphasis> method of password encryption, which also
allows passwords longer than 8 characters. It is also necessary to change
allows passwords longer than 8 characters. In addition, set the number of
rounds to 500,000 instead of the default 5000, which is much too low to
prevent brute force password attacks. It is also necessary to change
the obsolete <filename class="directory">/var/spool/mail</filename> location
for user mailboxes that Shadow uses by default to the <filename
class="directory">/var/mail</filename> location used currently. And,
@ -80,6 +82,7 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s
</note>
<screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \
-e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@' \
-e 's:/var/spool/mail:/var/mail:' \
-e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
-i etc/login.defs</userinput></screen>
@ -639,7 +642,7 @@ useradd -D --gid 999</userinput></screen>
<varlistentry id="libsubid">
<term><filename class='libraryfile'>libsubid</filename></term>
<listitem>
<para>library for processing subordinate id ranges for users</para>
<para>library to handle subordinate id ranges for users and groups</para>
<indexterm zone="ch-system-shadow libsubid">
<primary sortas="c-libsubid">libsubid</primary>
</indexterm>

View File

@ -3,8 +3,8 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
<!ENTITY tdbc-ver "1.1.3">
<!ENTITY itcl-ver "4.2.2">
<!ENTITY tdbc-ver "1.1.5">
<!ENTITY itcl-ver "4.2.3">
]>
<sect1 id="ch-system-tcl" role="wrap">

View File

@ -40,21 +40,21 @@
<sect2 role="installation">
<title>Installation of Wheel</title>
<para>Compile wheel with the following command:</para>
<para>Compile Wheel with the following command:</para>
<screen><userinput remap="make">PYTHONPATH=src pip3 wheel -w dist --no-build-isolation --no-deps $PWD</userinput></screen>
<para>Install wheel with the following command:</para>
<para>Install Wheel with the following command:</para>
<screen><userinput remap="install">pip3 install --no-index --find-links=dist wheel</userinput></screen>
<variablelist>
<title>The meaning of the pip3 commands:</title>
<title>The meaning of the pip3 configuration options and commands:</title>
<varlistentry>
<term><envar>PYTHONPATH=src</envar></term>
<listitem>
<para>Allow using this package (not installed yet) to build a
<para>Allows this package (not installed yet) to build a
wheel archive for itself, to avoid a chicken-or-egg problem.</para>
</listitem>
</varlistentry>
@ -62,14 +62,14 @@
<varlistentry>
<term><command>wheel</command></term>
<listitem>
<para>Build wheel archive for this package.</para>
<para>This command builds the wheel archive for this package.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-w dist</parameter></term>
<listitem>
<para>Put the created wheels into the
<para>Instructs pip to put the created wheel into the
<filename class='directory'>dist</filename> directory.</para>
</listitem>
</varlistentry>
@ -77,7 +77,7 @@
<varlistentry>
<term><command>install</command></term>
<listitem>
<para>Install the package.</para>
<para>This command installs the package.</para>
</listitem>
</varlistentry>
@ -86,9 +86,9 @@
<parameter>--no-deps</parameter>, and
<parameter>--no-index</parameter></term>
<listitem>
<para>Prevent pip from fetching files from the online package
<para>These options prevent fetching files from the online package
repository (PyPI). If packages are installed in the correct order,
then it won't need to fetch any files in the first place, but these
pip won't need to fetch any files in the first place; these
options add some safety in case of user error.</para>
</listitem>
</varlistentry>
@ -96,7 +96,7 @@
<varlistentry>
<term><parameter>--find-links dist</parameter></term>
<listitem>
<para>Search wheel archives from the
<para>Instructs pip to search for wheel archives in the
<filename class='directory'>dist</filename> directory.</para>
</listitem>
</varlistentry>
@ -128,7 +128,7 @@
<term><command>wheel</command></term>
<listitem>
<para>
is an utility to unpack, pack, or convert wheel packages
is a utility to unpack, pack, or convert wheel archives
</para>
<indexterm zone="ch-system-wheel">
<primary sortas="b-wheel">wheel</primary>

View File

@ -207,10 +207,10 @@
<!ENTITY flex-fin-du "33 MB">
<!ENTITY flex-fin-sbu "0.4 SBU">
<!ENTITY gawk-version "5.2.0">
<!ENTITY gawk-size "3,307 KB">
<!ENTITY gawk-version "5.2.1">
<!ENTITY gawk-size "3,332 KB">
<!ENTITY gawk-url "&gnu;gawk/gawk-&gawk-version;.tar.xz">
<!ENTITY gawk-md5 "2f724d925873fc82f5e7b1d605ba9a42">
<!ENTITY gawk-md5 "02956bc5d117a7437bb4f7039f23b964">
<!ENTITY gawk-home "&gnu-software;gawk/">
<!ENTITY gawk-tmp-du "45 MB">
<!ENTITY gawk-tmp-sbu "0.2 SBU">
@ -317,10 +317,10 @@
<!ENTITY gzip-fin-du "21 MB">
<!ENTITY gzip-fin-sbu "0.3 SBU">
<!ENTITY iana-etc-version "20221025">
<!ENTITY iana-etc-size "584 KB">
<!ENTITY iana-etc-version "20221122">
<!ENTITY iana-etc-size "585 KB">
<!ENTITY iana-etc-url "https://github.com/Mic92/iana-etc/releases/download/&iana-etc-version;/iana-etc-&iana-etc-version;.tar.gz">
<!ENTITY iana-etc-md5 "feeb662fd7875d94767fd5aed5ae21d7">
<!ENTITY iana-etc-md5 "2d4ea18372691d8c6ffd009a766e3380">
<!ENTITY iana-etc-home "https://www.iana.org/protocols">
<!ENTITY iana-etc-fin-du "4.8 MB">
<!ENTITY iana-etc-fin-sbu "less than 0.1 SBU">
@ -424,12 +424,12 @@
<!ENTITY linux-major-version "6">
<!ENTITY linux-minor-version "0">
<!ENTITY linux-patch-version "9">
<!ENTITY linux-patch-version "11">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
<!ENTITY linux-size "130,776 KB">
<!ENTITY linux-size "130,780 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
<!ENTITY linux-md5 "3de364bdbacd2115950cc3dd94157ab6">
<!ENTITY linux-md5 "7a47796e842b77519613abbca6037c91">
<!ENTITY linux-home "https://www.kernel.org/">
<!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is
allnoconfig rounded down to allow for ongoing cleanups,
@ -487,10 +487,10 @@
<!ENTITY markupsafe-fin-du "168 KB">
<!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
<!ENTITY meson-version "0.64.0">
<!ENTITY meson-size "2,042 KB">
<!ENTITY meson-version "0.64.1">
<!ENTITY meson-size "2,041 KB">
<!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
<!ENTITY meson-md5 "63a3d83206e7e277fce4b90e8ad8003a">
<!ENTITY meson-md5 "9f260adfcbc66ed2e15047c6eb98e503">
<!ENTITY meson-home "https://mesonbuild.com">
<!ENTITY meson-fin-du "38 MB">
<!ENTITY meson-fin-sbu "less than 0.1 SBU">
@ -672,32 +672,32 @@
<!ENTITY tar-fin-du "40 MB">
<!ENTITY tar-fin-sbu "1.7 SBU">
<!ENTITY tcl-version "8.6.12">
<!ENTITY tcl-version "8.6.13">
<!ENTITY tcl-major-version "8.6">
<!ENTITY tcl-size "10,112 KB">
<!ENTITY tcl-size "10,581 KB">
<!ENTITY tcl-url "https://downloads.sourceforge.net/tcl/tcl&tcl-version;-src.tar.gz">
<!ENTITY tcl-md5 "87ea890821d2221f2ab5157bc5eb885f">
<!ENTITY tcl-md5 "0e4358aade2f5db8a8b6f2f6d9481ec2">
<!ENTITY tcl-home "http://tcl.sourceforge.net/">
<!ENTITY tcl-docs-url "https://downloads.sourceforge.net/tcl/tcl&tcl-version;-html.tar.gz">
<!ENTITY tcl-docs-md5 "a0d1a5b60bbb68f2f0bd3066a19c527a">
<!ENTITY tcl-docs-size "1,176 KB">
<!ENTITY tcl-docs-md5 "4452f2f6d557f5598cca17b786d6eb68">
<!ENTITY tcl-docs-size "1,165 KB">
<!ENTITY tcl-tmp-du "88 MB">
<!ENTITY tcl-tmp-sbu "3.2 SBU">
<!ENTITY texinfo-version "7.0">
<!ENTITY texinfo-size "4,786 KB">
<!ENTITY texinfo-version "7.0.1">
<!ENTITY texinfo-size "4,776 KB">
<!ENTITY texinfo-url "&gnu;texinfo/texinfo-&texinfo-version;.tar.xz">
<!ENTITY texinfo-md5 "c9bda68c809e3afe67f1fbcd7c3d9fd3">
<!ENTITY texinfo-md5 "545e6fdb23f5c7923c057187aa19f9f4">
<!ENTITY texinfo-home "&gnu-software;texinfo/">
<!ENTITY texinfo-tmp-du "113 MB">
<!ENTITY texinfo-tmp-sbu "0.2 SBU">
<!ENTITY texinfo-fin-du "114 MB">
<!ENTITY texinfo-fin-sbu "0.6 SBU">
<!ENTITY tzdata-version "2022f">
<!ENTITY tzdata-size "427 KB">
<!ENTITY tzdata-version "2022g">
<!ENTITY tzdata-size "430 KB">
<!ENTITY tzdata-url "https://www.iana.org/time-zones/repository/releases/tzdata&tzdata-version;.tar.gz">
<!ENTITY tzdata-md5 "7dbb997b73a0504b61a83a85988d7771">
<!ENTITY tzdata-md5 "884250fd2a8a55f6322900ad4ab94d7b">
<!ENTITY tzdata-home "https://www.iana.org/time-zones">
<!ENTITY udev-lfs-version "udev-lfs-20171102">
@ -744,10 +744,10 @@
<!ENTITY xml-parser-fin-du "2.3 MB">
<!ENTITY xml-parser-fin-sbu "less than 0.1 SBU">
<!ENTITY xz-version "5.2.8">
<!ENTITY xz-size "1,260 KB">
<!ENTITY xz-version "5.2.9">
<!ENTITY xz-size "1,261 KB">
<!ENTITY xz-url "https://tukaani.org/xz/xz-&xz-version;.tar.xz">
<!ENTITY xz-md5 "7cfa6136d984083e7d4da12c8fb083ea">
<!ENTITY xz-md5 "115d93141a38801983572f816c6dd68a">
<!ENTITY xz-home "https://tukaani.org/xz">
<!ENTITY xz-tmp-du "16 MB">
<!ENTITY xz-tmp-sbu "0.1 SBU">