diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 038994878..55f424c73 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -1139,7 +1139,7 @@
&dependencies;
Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
- Make, Patch, Sed, and Texinfo
+ Make, Patch, Pcre2, Sed, and Texinfo
@@ -1168,9 +1168,7 @@
&external;
- PCRE2
- and
- libsigsegv
+ None
@@ -1584,7 +1582,7 @@
&dependencies;
Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make,
- Ncurses, and Sed
+ Ncurses, Pcre2, and Sed
@@ -1613,8 +1611,7 @@
&external;
- PCRE2 or
- PCRE
+ None
@@ -1759,7 +1756,7 @@
&testsuites;
- Check and Pkgconf
+ Pkgconf
@@ -2497,6 +2494,48 @@
+
+ Pcre2
+
+
+ &dependencies;
+
+ Bash, Binutils, Bzip2, Coreutils, GCC, Glibc, GZip, Make, and
+ Readline
+
+
+
+
+ &runtime;
+
+ Glibc
+
+
+
+
+ &testsuites;
+
+ Grep
+
+
+
+
+ &before;
+
+ Grep and Less
+
+
+
+
+ &external;
+
+
+ Valgrind and
+ libedit
+
+
+
+
Perl
@@ -2545,7 +2584,7 @@
&dependencies;
Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make,
- and Sed
+ Sed, and Sqlite
@@ -2870,6 +2909,47 @@
+
+ Pcre2
+
+
+ &dependencies;
+
+ Bash, Binutils, GCC, Glibc, Gzip, Make, Ncurses, and Readline
+
+
+
+
+ &runtime;
+
+ Glibc
+
+
+
+
+ &testsuites;
+
+ None
+
+
+
+
+ &before;
+
+ Python
+
+
+
+
+ &external;
+
+
+ libarchive and
+ libedit
+
+
+
+
Sysklogd
@@ -2916,7 +2996,7 @@
Acl, Bash, Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Lz4, Meson,
- OpenSSL, Pkgconf, Sed, Util-linux, and Zstd
+ OpenSSL, Pcre2, Pkgconf, Sed, Util-linux, and Zstd
@@ -2983,7 +3063,6 @@
url="&blfs-book;general/python-modules.html#lxml">lxml,
make-ca,
p11-kit,
- PCRE2,
pefile,
Polkit,
pyelftools,
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index f3a9cdfd2..703788ee1 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -40,6 +40,25 @@
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2025-09-03
+
+
+ [bdubbs] - Add the sqlite-3.50.4 package. Fixes
+ #5784.
+
+
+ [bdubbs] - Add the pcre2-10.45 package. Fixes
+ #5782.
+
+
+ [bdubbs] - Add a description on how to use a kernel base+patch
+ in Chapter 3. Fixes
+ #5785.
+
+
+
+
2025-09-01
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index a91e9cc92..c92a5755b 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -292,6 +292,8 @@
Added:
+ pcre2
+ sqlite
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 6cdb5e224..2d5349db5 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -3,6 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
%general-entities;
+
]>
@@ -466,15 +467,43 @@
The Linux kernel is updated quite frequently, many times due to
- discoveries of security vulnerabilities. The latest available
- stable kernel
- version may be
- used, unless the errata page says otherwise.
+ discoveries of security vulnerabilities. The latest available stable
+ kernel version may be used, unless the errata page says
+ otherwise.
For users with limited speed or expensive bandwidth who wish to
update the Linux kernel, a baseline version of the package and
patches can be downloaded separately. This may save some time or
- cost for a subsequent patch level upgrade within a minor release.
+ cost for a subsequent patch level upgrade within a minor
+ release.
+
+
+ As an example, for linux-&linux-version;, the following could be downloaded:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Then in and
+ unpack the kernel, change
+ to the package directory and then apply the patch with
+ xzcat ../patch-&linux-version;.xz | patch -Np1.
+
+
+
+ At this point, if a newer point version of the kernel is needed, then
+ only the newer patch is needed. However, if a new minor version is
+ desired, then both full minor version and any desired patch will both
+ need to be downloaded.
@@ -606,6 +635,15 @@
+
+ Pcre2 (&pcre2-version;) - &pcre2-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &pcre2-md5;
+
+
+
Perl (&perl-version;) - &perl-size;:
@@ -695,6 +733,30 @@
+
+ Sqlite (&sqlite-version;) - &sqlite-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &sqlite-md5;
+
+
+
+
+ Sqlite Documentation (&sqlite-version;) - &sqlite-doc-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &sqlite-doc-md5;
+
+
+ The Linux From Scratch team generates its own tarball of the
+ documentation pages using the sqlite documentation zip file. This is done
+ in order to avoid unnecessary dependencies.
+
+
+
+
Sysklogd (&sysklogd-version;) - &sysklogd-size;:
diff --git a/chapter06/bash.xml b/chapter06/bash.xml
index 8e6a2396e..cd29529fd 100644
--- a/chapter06/bash.xml
+++ b/chapter06/bash.xml
@@ -42,11 +42,7 @@
Installation of Bash
-
+
Prepare Bash for compilation:
./configure --prefix=/usr \
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index bd8571903..6d3207021 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -23,6 +23,7 @@
+
@@ -62,6 +63,7 @@
+
diff --git a/chapter08/gcc.xml b/chapter08/gcc.xml
index 0da20e95b..8285744bd 100644
--- a/chapter08/gcc.xml
+++ b/chapter08/gcc.xml
@@ -65,10 +65,20 @@ cd build
--disable-fixincludes \
--with-system-zlib
- GCC supports seven different computer languages, but the
- prerequisites for most of them have not yet been installed. See the
- BLFS Book GCC page
- for instructions on how to build all of GCC's supported languages.
+ We only enable C and C++ here to save the build time as no
+ packages in LFS and BLFS require GCC to compile other languages. Append
+ cobol for Cobol (note that it will cause GCC fail
+ to build on a 32-bit LFS system),
+ fortran for Fortran,
+ go for Go,
+ objc for Objective C,
+ obj-c++ for Objective C++, and/or
+ m2 for Modula 2 into the value of
+ --enable-languages option if you want to compile
+ programs in one or more of those languages with GCC. GCC also supports
+ Ada and D, but the code to support Ada or D is written in Ada or D
+ itself, so the support can only be built with an existing Ada or D
+ compiler installation and we cannot enable the support here.
The meaning of the new configure parameters:
@@ -82,6 +92,22 @@ cd build
+
+ --disable-bootstrap
+
+ By default, the build system of GCC will bootstrap it in
+ 3 stages unless it's built as a cross-compiler or it is being
+ cross-compiled. The bootstrap process is needed for robustness,
+ especially when upgrading GCC to a new version. In LFS we are
+ using a different method to bootstrap GCC (as we introduced in
+ ), so here we don't
+ need the bootstrap process provided by the build system and we
+ disable it to significantly reduce the build time. Remove this
+ option when you upgrade GCC on a complete LFS system (instead of
+ building LFS).
+
+
+
--disable-fixincludes
diff --git a/chapter08/meson.xml b/chapter08/meson.xml
index 89e3a5bdc..bc5ec2555 100644
--- a/chapter08/meson.xml
+++ b/chapter08/meson.xml
@@ -39,11 +39,7 @@
Installation of Meson
-
Compile Meson with the following command:
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
diff --git a/chapter08/pcre.xml b/chapter08/pcre.xml
new file mode 100644
index 000000000..d937d8f6c
--- /dev/null
+++ b/chapter08/pcre.xml
@@ -0,0 +1,185 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ pcre2
+ &pcre2-version;
+ &pcre2-url;
+
+
+ Pcre2-&pcre2-version;
+
+
+ Pcre2
+
+
+
+
+
+ The pcre2 package contains a new generation of the Perl Compatible
+ Regular Expression libraries.
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &pcre2-fin-sbu;
+ &pcre2-fin-du;
+
+
+
+
+
+
+ Installation of Pcre2
+
+ Prepare pcre2 for compilation:
+
+./configure --prefix=/usr \
+ --docdir=/usr/share/doc/pcre2-10.45 \
+ --enable-unicode \
+ --enable-jit \
+ --enable-pcre2-16 \
+ --enable-pcre2-32 \
+ --enable-pcre2grep-libz \
+ --enable-pcre2grep-libbz2 \
+ --enable-pcre2test-libreadline \
+ --disable-static
+
+
+ The meaning of the new configure options:
+
+
+ --enable-unicode
+
+
+ This option enables Unicode support and includes the functions for
+ handling UTF-8/16/32 character strings in the library.
+
+
+
+
+
+ --enable-jit
+
+
+ This option enables Just-in-time compiling, which can greatly
+ speed up pattern matching.
+
+
+
+
+
+ --enable-pcre2-16
+
+
+ This option enables 16 bit character support.
+
+
+
+
+
+ --enable-pcre2-32
+
+
+ This option enables 32 bit character support.
+
+
+
+
+
+ --enable-pcre2grep-libz
+
+
+ This option adds support for reading .gz compressed files to pcre2grep.
+
+
+
+
+
+ --enable-pcre2grep-libbz2
+
+
+ This option adds support for reading .bz2 compressed files to pcre2grep.
+
+
+
+
+
+ --enable-pcre2test-libreadline
+
+
+ This option adds line editing and history features to the pcre2test program.
+
+
+
+
+
+
+ Compile the package:
+
+make
+
+ To test the results, issue:
+
+make check
+
+ Install the package:
+
+make install
+
+
+
+
+
+ Contents of Pcre2
+
+
+ Installed programs
+ Installed library
+
+
+ pcre2grep and pcre2test
+ libpcre2-8.so, libpcre2-16.so, libpcre2-32.so, and libpcre2-posix.so
+
+
+
+
+ Short Descriptions
+
+
+
+
+ pcre2grep
+
+ is a version of grep that understands Perl compatible regular
+ expressions
+
+ pcre2grep
+
+
+
+
+
+ pcre2test
+
+ can test a Perl compatible regular expression
+
+ pcre2test
+
+
+
+
+
+
+
+
+
diff --git a/chapter08/perl.xml b/chapter08/perl.xml
index fb07aea21..b678f7f9d 100644
--- a/chapter08/perl.xml
+++ b/chapter08/perl.xml
@@ -40,11 +40,7 @@
Installation of Perl
-
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.
diff --git a/chapter08/sqlite.xml b/chapter08/sqlite.xml
new file mode 100644
index 000000000..e01eded51
--- /dev/null
+++ b/chapter08/sqlite.xml
@@ -0,0 +1,144 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ sqlite
+ &sqlite-version;
+ &sqlite-url;
+
+
+ Sqlite-&sqlite-version;
+
+
+ Sqlite
+
+
+
+
+
+ The Sqlite package is a software library that implements
+ a self-contained, serverless, zero-configuration, transactional
+ SQL database engine.
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &sqlite-fin-sbu;
+ &sqlite-fin-du;
+
+
+
+
+
+
+ Installation of Sqlite
+
+ Unpack the documentation:
+
+tar -xf ../sqlite-doc-&sqlite-doc-version;.tar.xz
+
+ Prepare Sqlite for compilation with:
+
+./configure --prefix=/usr \
+ --disable-static \
+ --enable-fts{4,5} \
+ CPPFLAGS="-D SQLITE_ENABLE_COLUMN_METADATA=1 \
+ -D SQLITE_ENABLE_UNLOCK_NOTIFY=1 \
+ -D SQLITE_ENABLE_DBSTAT_VTAB=1 \
+ -D SQLITE_SECURE_DELETE=1"
+
+ The meaning of the make option:
+
+
+ --enable-fts{4,5}
+
+ These switches enable support for version 4 and 5 of
+ the full text search (FTS) extension.
+
+
+
+
+ CPPFLAGS="-D SQLITE_ENABLE_COLUMN_METADATA=1 ...
+
+ Some applications require these options to be turned on. The only
+ way to do this is to include them in the CFLAGS or CPPFLAGS. We use
+ the latter so the default value (or any value set by the user) of
+ CFLAGS won't be affected. For further information on what can be
+ specified see https://www.sqlite.org/compile.html.
+
+
+
+
+
+ Compile the package:
+
+make
+
+ This package does not come with a test suite.
+
+ Install the package:
+
+make install
+
+ If desired, install the documentation:
+
+install -v -m755 -d /usr/share/doc/sqlite-&sqlite-short-version;
+cp -v -R sqlite-doc-&sqlite-doc-version;/* /usr/share/doc/sqlite-&sqlite-short-version;
+
+
+
+
+ Contents of Sqlite
+
+
+ Installed programs
+ Installed libraries
+ Installed directories
+
+
+ sqlite3
+ libsqlite3.so
+ /usr/share/doc/sqlite-&sqlite-short-version;
+
+
+
+
+ Short Descriptions
+
+
+
+
+ sqlite3
+
+ is a terminal-based front-end to the SQLite library that
+ can evaluate queries interactively and display the results
+
+ sqlite3
+
+
+
+
+
+ libsqlite3.so
+
+ contains the SQLite API functions
+
+ libsqlite3.so
+
+
+
+
+
+
+
+
+
diff --git a/chapter08/xz.xml b/chapter08/xz.xml
index 316b8558e..f4c0ec342 100644
--- a/chapter08/xz.xml
+++ b/chapter08/xz.xml
@@ -43,11 +43,7 @@
Installation of Xz
-
Prepare Xz for compilation with:
./configure --prefix=/usr \
diff --git a/lfs-latest-git.php b/lfs-latest-git.php
index a6723e909..ebd10bf2a 100644
--- a/lfs-latest-git.php
+++ b/lfs-latest-git.php
@@ -140,6 +140,7 @@ if ( $package == "ncurses" ) $dirpath = "https://invisible-mirror.net/archive
if ( $package == "ninja" ) $dirpath = github("ninja-build/ninja");
if ( $package == "openssl" ) $dirpath = github("openssl/openssl");
if ( $package == "packaging" ) $dirpath = "https://pypi.org/rss/project/packaging/releases.xml";
+if ( $package == "pcre" ) $dirpath = github("PCRE2Project/pcre2") );
if ( $package == "procps-ng" ) $dirpath = "https://gitlab.com/procps-ng/procps/-/tags";
if ( $package == "psmisc" ) $dirpath = "https://gitlab.com/psmisc/psmisc/-/tags";
if ( $package == "Python" ) $dirpath = "https://www.python.org/downloads/source/";
@@ -266,6 +267,9 @@ if ( $package == "zstd" ) $dirpath = github("facebook/zstd");
if ( $package == "packaging" )
return find_max( $lines, "/packaging/", "/^.*^.*packaging.([\d\.]+\d)\/.*$/" );
+ if ( $book_index == "pcre2" )
+ return find_max( $lines, '/name.:/', '/^.*pcre2-([\d\.]+\d).*$/' );
+
if ( $package == "procps-ng" )
return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" );
diff --git a/packages.ent b/packages.ent
index 9c158c48c..6b3394954 100644
--- a/packages.ent
+++ b/packages.ent
@@ -398,7 +398,7 @@
-
+
@@ -423,6 +423,7 @@
+
@@ -496,7 +497,7 @@
-
+
@@ -564,6 +565,14 @@
+
+
+
+
+
+
+
+
@@ -654,6 +663,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/prologue/why.xml b/prologue/why.xml
index 287a61635..28e3aca36 100644
--- a/prologue/why.xml
+++ b/prologue/why.xml
@@ -91,13 +91,13 @@
This package contains programs for compressing and decompressing
files. It is required to decompress many LFS packages.
-
+
Coreutils
@@ -480,6 +480,14 @@
the build procedure for several LFS packages.
+
+ Pcre2
+
+ This package provides a set of functions that implement regular
+ expression pattern matching using the same syntax and semantics as
+ Perl 5.
+
+
Perl
@@ -545,6 +553,13 @@
securely.
+
+ Sqlite
+
+ This package provides a serverless, zero-configuration,
+ transactional SQL database engine.
+
+
Sysklogd
diff --git a/stylesheets/md5sum.xsl b/stylesheets/md5sum.xsl
index 57723df97..4ea19741b 100644
--- a/stylesheets/md5sum.xsl
+++ b/stylesheets/md5sum.xsl
@@ -15,10 +15,11 @@
-
+
diff --git a/stylesheets/wget-list.xsl b/stylesheets/wget-list.xsl
index 09f99cd22..0b07db373 100644
--- a/stylesheets/wget-list.xsl
+++ b/stylesheets/wget-list.xsl
@@ -16,10 +16,11 @@
-
+