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 + + + + + + <para>The pcre2 package contains a new generation of the Perl Compatible + Regular Expression libraries.</para> + + <segmentedlist> + <segtitle>&buildtime;</segtitle> + <segtitle>&diskspace;</segtitle> + + <seglistitem> + <seg>&pcre2-fin-sbu;</seg> + <seg>&pcre2-fin-du;</seg> + </seglistitem> + </segmentedlist> + + </sect2> + + <sect2 role="installation"> + <title>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 + + + + + + <para>The Sqlite package is a software library that implements + a self-contained, serverless, zero-configuration, transactional + SQL database engine.</para> + + <segmentedlist> + <segtitle>&buildtime;</segtitle> + <segtitle>&diskspace;</segtitle> + + <seglistitem> + <seg>&sqlite-fin-sbu;</seg> + <seg>&sqlite-fin-du;</seg> + </seglistitem> + </segmentedlist> + + </sect2> + + <sect2 role="installation"> + <title>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 @@ - +