diff -Naurp lfs-git-2025-03-26/blfs-lfs-conv.xml lfs-pacman-2025-03-26/blfs-lfs-conv.xml
--- lfs-git-2025-03-26/blfs-lfs-conv.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/blfs-lfs-conv.xml	2025-03-25 22:21:39.463107975 -0500
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-mypackage" role="wrap">
+  <?dbhtml filename="mypackage.html"?>
+
+  <sect1info condition="script">
+    <productname>mypackage</productname>
+    <productnumber>&mypackage-version;</productnumber>
+    <address>&mypackage-url;</address>
+  </sect1info>
+
+  <title>Libffi-&mypackage-version;</title>
+
+  <indexterm zone="ch-system-mypackage">
+    <primary sortas="a-mypackage">mypackage</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para></para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&mypackage-fin-sbu;</seg>
+        <seg>&mypackage-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
diff -Naurp lfs-git-2025-03-26/chapter01/changelog.xml lfs-pacman-2025-03-26/chapter01/changelog.xml
--- lfs-git-2025-03-26/chapter01/changelog.xml	2025-03-25 18:44:40.095534974 -0500
+++ lfs-pacman-2025-03-26/chapter01/changelog.xml	2025-03-25 22:21:39.460113328 -0500
@@ -51,7 +51,7 @@
           <para>[bdubbs] - Update to iana-etc-20250304. Addresses
           <ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
         </listitem>
-        <listitem revision='sysv'>
+        <listitem>
           <para>[bdubbs] - Update to sysklogd-2.7.1. Fixes
           <ulink url='&lfs-ticket-root;5668'>#5668</ulink>.</para>
         </listitem>
@@ -87,7 +87,7 @@
           <para>[bdubbs] - Update to expat-2.7.0. Fixes
           <ulink url='&lfs-ticket-root;5675'>#5675</ulink>.</para>
         </listitem>
-        <listitem revision='systemd'>
+        <listitem>
           <para>[bdubbs] - Update to dbus-1.16.2. Fixes
           <ulink url='&lfs-ticket-root;5663'>#5663</ulink>.</para>
         </listitem>
diff -Naurp lfs-git-2025-03-26/chapter03/packages.xml lfs-pacman-2025-03-26/chapter03/packages.xml
--- lfs-git-2025-03-26/chapter03/packages.xml	2025-03-25 18:44:40.095641144 -0500
+++ lfs-pacman-2025-03-26/chapter03/packages.xml	2025-03-25 22:21:39.460196298 -0500
@@ -39,6 +39,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>asciidoc (&asciidoc-version;) - <token>&asciidoc-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&asciidoc-home;"/></para>
+        <para>Download: <ulink url="&asciidoc-url;"/></para>
+        <para>MD5 sum: <literal>&asciidoc-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Attr (&attr-version;) - <token>&attr-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&attr-home;"/></para>
@@ -128,6 +137,33 @@
       </listitem>
     </varlistentry>
 
+    <varlistentry>
+      <term>CrackLib (&cracklib-version;) - <token>&cracklib-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&cracklib-home;"/></para>
+        <para>Download: <ulink url="&cracklib-url;"/></para>
+        <para>MD5 sum: <literal>&cracklib-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>CrackLib Words (&cracklib-version;) - <token>&cracklib-words-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&cracklib-home;"/></para>
+        <para>Download: <ulink url="&cracklib-words-url;"/></para>
+        <para>MD5 sum: <literal>&cracklib-words-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry revision="systemd">
+      <term>cURL (&curl-version;) - <token>&curl-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&curl-home;"/></para>
+        <para>Download: <ulink url="&curl-url;"/></para>
+        <para>MD5 sum: <literal>&curl-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
     <varlistentry revision="systemd">
       <term>D-Bus (&dbus-version;) - <token>&dbus-size;</token>:</term>
       <listitem>
@@ -156,6 +192,33 @@
     </varlistentry>
 
     <varlistentry>
+      <term>DocBook XML Stylesheets (&docbook-xml-version;) - <token>&docbook-xml-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&docbook-xml-home;"/></para>
+        <para>Download: <ulink url="&docbook-xml-url;"/></para>
+        <para>MD5 sum: <literal>&docbook-xml-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>DocBook XSL Stylesheets (No Namespace) (&docbook-xsl-nons-version;) - <token>&docbook-xsl-nons-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&docbook-xsl-nons-home;"/></para>
+        <para>Download: <ulink url="&docbook-xsl-nons-url;"/></para>
+        <para>MD5 sum: <literal>&docbook-xsl-nons-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>DocBook XSL Stylesheets Docs (&docbook-xsl-nons-version;) - <token>&docbook-xsl-nons-doc-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&docbook-xsl-nons-home;"/></para>
+        <para>Download: <ulink url="&docbook-xsl-nons-doc-url;"/></para>
+        <para>MD5 sum: <literal>&docbook-xsl-nons-doc-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>E2fsprogs (&e2fsprogs-version;) - <token>&e2fsprogs-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&e2fsprogs-home;"/></para>
@@ -165,6 +228,24 @@
     </varlistentry>
 
     <varlistentry>
+      <term>efivar (&efivar-version;) - <token>&efivar-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&efivar-home;"/></para>
+        <para>Download: <ulink url="&efivar-url;"/></para>
+        <para>MD5 sum: <literal>&efivar-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>efibootmgr (&efibootmgr-version;) - <token>&efibootmgr-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&efibootmgr-home;"/></para>
+        <para>Download: <ulink url="&efibootmgr-url;"/></para>
+        <para>MD5 sum: <literal>&efibootmgr-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Elfutils (&elfutils-version;) - <token>&elfutils-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&elfutils-home;"/></para>
@@ -192,6 +273,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>FakeRoot (&fakeroot-version;) - <token>&fakeroot-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&fakeroot-home;"/></para>
+        <para>Download: <ulink url="&fakeroot-url;"/></para>
+        <para>MD5 sum: <literal>&fakeroot-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>File (&file-version;) - <token>&file-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&file-home;"/></para>
@@ -296,6 +386,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>GnuPG (&gnupg-version;) - <token>&gnupg-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&gnupg-home;"/></para>
+        <para>Download: <ulink url="&gnupg-url;"/></para>
+        <para>MD5 sum: <literal>&gnupg-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Gperf (&gperf-version;) - <token>&gperf-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&gperf-home;"/></para>
@@ -305,6 +404,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>GPGME (&gpgme-version;) - <token>&gpgme-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&gpgme-home;"/></para>
+        <para>Download: <ulink url="&gpgme-url;"/></para>
+        <para>MD5 sum: <literal>&gpgme-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Grep (&grep-version;) - <token>&grep-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&grep-home;"/></para>
@@ -332,6 +440,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>GRUB Unicode Font (&grub-font-version;) - <token>&grub-font-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&grub-home;"/></para>
+        <para>Download: <ulink url="&grub-font-url;"/></para>
+        <para>MD5 sum: <literal>&grub-font-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Gzip (&gzip-version;) - <token>&gzip-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&gzip-home;"/></para>
@@ -377,6 +494,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>ISL (&isl-version;) - <token>&isl-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&isl-home;"/></para>
+        <para>Download: <ulink url="&isl-url;"/></para>
+        <para>MD5 sum: <literal>&isl-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&jinja2-home;"/></para>
@@ -422,6 +548,24 @@
     </varlistentry>
 
     <varlistentry>
+      <term>libarchive (&libarchive-version;) - <token>&libarchive-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libarchive-home;"/></para>
+        <para>Download: <ulink url="&libarchive-url;"/></para>
+        <para>MD5 sum: <literal>&libarchive-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libassuan (&libassuan-version;) - <token>&libassuan-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libassuan-home;"/></para>
+        <para>Download: <ulink url="&libassuan-url;"/></para>
+        <para>MD5 sum: <literal>&libassuan-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Libcap (&libcap-version;) - <token>&libcap-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&libcap-home;"/></para>
@@ -440,6 +584,51 @@
     </varlistentry>
 
     <varlistentry>
+      <term>libgcrypt (&libgcrypt-version;) - <token>&libgcrypt-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libgcrypt-home;"/></para>
+        <para>Download: <ulink url="&libgcrypt-url;"/></para>
+        <para>MD5 sum: <literal>&libgcrypt-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libgpg-error (&libgpg-error-version;) - <token>&libgpg-error-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libgpg-error-home;"/></para>
+        <para>Download: <ulink url="&libgpg-error-url;"/></para>
+        <para>MD5 sum: <literal>&libgpg-error-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libidn2 (&libidn2-version;) - <token>&libidn2-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libidn2-home;"/></para>
+        <para>Download: <ulink url="&libidn2-url;"/></para>
+        <para>MD5 sum: <literal>&libidn2-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libksba (&libksba-version;) - <token>&libksba-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libksba-home;"/></para>
+        <para>Download: <ulink url="&libksba-url;"/></para>
+        <para>MD5 sum: <literal>&libksba-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libnsl (&libnsl-version;) - <token>&libnsl-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libnsl-home;"/></para>
+        <para>Download: <ulink url="&libnsl-url;"/></para>
+        <para>MD5 sum: <literal>&libnsl-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Libpipeline (&libpipeline-version;) - <token>&libpipeline-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&libpipeline-home;"/></para>
@@ -449,6 +638,51 @@
     </varlistentry>
 
     <varlistentry>
+      <term>libpsl (&libpsl-version;) - <token>&libpsl-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libpsl-home;"/></para>
+        <para>Download: <ulink url="&libpsl-url;"/></para>
+        <para>MD5 sum: <literal>&libpsl-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libpwquality (&libpwquality-version;) - <token>&libpwquality-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libpwquality-home;"/></para>
+        <para>Download: <ulink url="&libpwquality-url;"/></para>
+        <para>MD5 sum: <literal>&libpwquality-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libtasn1 (&libtasn1-version;) - <token>&libtasn1-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libtasn1-home;"/></para>
+        <para>Download: <ulink url="&libtasn1-url;"/></para>
+        <para>MD5 sum: <literal>&libtasn1-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libtirpc (&libtirpc-version;) - <token>&libtirpc-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libtirpc-home;"/></para>
+        <para>Download: <ulink url="&libtirpc-url;"/></para>
+        <para>MD5 sum: <literal>&libtirpc-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libunistring (&libunistring-version;) - <token>&libunistring-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libunistring-home;"/></para>
+        <para>Download: <ulink url="&libunistring-url;"/></para>
+        <para>MD5 sum: <literal>&libunistring-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Libtool (&libtool-version;) - <token>&libtool-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&libtool-home;"/></para>
@@ -467,6 +701,33 @@
     </varlistentry>
 
     <varlistentry>
+      <term>libxml2 (&libxml2-version;) - <token>&libxml2-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libxml2-home;"/></para>
+        <para>Download: <ulink url="&libxml2-url;"/></para>
+        <para>MD5 sum: <literal>&libxml2-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libxslt (&libxslt-version;) - <token>&libxslt-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libxslt-home;"/></para>
+        <para>Download: <ulink url="&libxslt-url;"/></para>
+        <para>MD5 sum: <literal>&libxslt-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>libusb (&libusb-version;) - <token>&libusb-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&libusb-home;"/></para>
+        <para>Download: <ulink url="&libusb-url;"/></para>
+        <para>MD5 sum: <literal>&libusb-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Linux (&linux-version;) - <token>&linux-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&linux-home;"/></para>
@@ -490,6 +751,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>Linux-PAM (&linux-pam-version;) - <token>&linux-pam-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&linux-pam-home;"/></para>
+        <para>Download: <ulink url="&linux-pam-url;"/></para>
+        <para>MD5 sum: <literal>&linux-pam-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Lz4 (&lz4-version;) - <token>&lz4-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&lz4-home;"/></para>
@@ -499,6 +769,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>LZO (&lzo-version;) - <token>&lzo-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&lzo-home;"/></para>
+        <para>Download: <ulink url="&lzo-url;"/></para>
+        <para>MD5 sum: <literal>&lzo-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>M4 (&m4-version;) - <token>&m4-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&m4-home;"/></para>
@@ -517,6 +796,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>make-ca (&make-ca-version;) - <token>&make-ca-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&make-ca-home;"/></para>
+        <para>Download: <ulink url="&make-ca-url;"/></para>
+        <para>MD5 sum: <literal>&make-ca-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Man-DB (&man-db-version;) - <token>&man-db-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&man-db-home;"/></para>
@@ -580,6 +868,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>Nettle (&nettle-version;) - <token>&nettle-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&nettle-home;"/></para>
+        <para>Download: <ulink url="&nettle-url;"/></para>
+        <para>MD5 sum: <literal>&nettle-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Ninja (&ninja-version;) - <token>&ninja-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&ninja-home;"/></para>
@@ -589,6 +886,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>npth (&npth-version;) - <token>&npth-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&npth-home;"/></para>
+        <para>Download: <ulink url="&npth-url;"/></para>
+        <para>MD5 sum: <literal>&npth-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>OpenSSL (&openssl-version;) - <token>&openssl-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&openssl-home;"/></para>
@@ -598,6 +904,42 @@
     </varlistentry>
 
     <varlistentry>
+      <term>p11-kit (&p11-kit-version;) - <token>&p11-kit-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&p11-kit-home;"/></para>
+        <para>Download: <ulink url="&p11-kit-url;"/></para>
+        <para>MD5 sum: <literal>&p11-kit-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>Pacman (&pacman-version;) - <token>&pacman-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&pacman-home;"/></para>
+        <para>Download: <ulink url="&pacman-url;"/></para>
+        <para>MD5 sum: <literal>&pacman-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>Pacman-contrib (&pacman-contrib-version;) - <token>&pacman-contrib-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&pacman-home;"/></para>
+        <para>Download: <ulink url="&pacman-contrib-url;"/></para>
+        <para>MD5 sum: <literal>&pacman-contrib-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>Pacman-Hooks (&pacman-hooks-version;) - <token>&pacman-hooks-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&pacman-home;"/></para>
+        <para>Download: <ulink url="&pacman-hooks-url;"/></para>
+        <para>MD5 sum: <literal>&pacman-hooks-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Patch (&patch-version;) - <token>&patch-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&patch-home;"/></para>
@@ -616,6 +958,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>Pip (&pip-version;) - <token>&pip-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&pip-home;"/></para>
+        <para>Download: <ulink url="&pip-url;"/></para>
+        <para>MD5 sum: <literal>&pip-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Pkgconf (&pkgconf-version;) - <token>&pkgconf-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&pkgconf-home;"/></para>
@@ -625,6 +976,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>Popt (&popt-version;) - <token>&popt-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&popt-home;"/></para>
+        <para>Download: <ulink url="&popt-url;"/></para>
+        <para>MD5 sum: <literal>&popt-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Procps (&procps-ng-version;) - <token>&procps-ng-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&procps-ng-home;"/></para>
@@ -669,6 +1029,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>rpcsvc-proto (&rpcsvc-proto-version;) - <token>&rpcsvc-proto-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&rpcsvc-proto-home;"/></para>
+        <para>Download: <ulink url="&rpcsvc-proto-url;"/></para>
+        <para>MD5 sum: <literal>&rpcsvc-proto-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Sed (&sed-version;) - <token>&sed-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&sed-home;"/></para>
@@ -687,6 +1056,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>sgml-common (&sgml-common-version;) - <token>&sgml-common-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&sgml-common-home;"/></para>
+        <para>Download: <ulink url="&sgml-common-url;"/></para>
+        <para>MD5 sum: <literal>&sgml-common-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Shadow (&shadow-version;) - <token>&shadow-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&shadow-home;"/></para>
@@ -696,6 +1074,23 @@
     </varlistentry>
 
     <varlistentry revision="sysv">
+      <term>SQLite (&sqlite-version;) - <token>&sqlite-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&sqlite-home;"/></para>
+        <para>Download: <ulink url="&sqlite-url;"/></para>
+        <para>MD5 sum: <literal>&sqlite-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>SQLite Documentation (&sqlite-doc-version;) - <token>&sqlite-doc-size;</token>:</term>
+      <listitem>
+        <para>Download: <ulink url="&sqlite-doc-url;"/></para>
+        <para>MD5 sum: <literal>&sqlite-doc-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry revision="sysv">
       <term>Sysklogd (&sysklogd-version;) - <token>&sysklogd-size;</token>:</term>
       <listitem>
         <para>Home page: <ulink url="&sysklogd-home;"/></para>
@@ -782,6 +1177,15 @@
       </listitem>
     </varlistentry>
 
+    <varlistentry>
+      <term>Time Zone Code (&tzdata-version;) - <token>&tzdata-code-size;</token>:</term>
+      <listitem>
+        <para>Home page: <ulink url="&tzdata-home;"/></para>
+        <para>Download: <ulink url="&tzdata-code-url;"/></para>
+        <para>MD5 sum: <literal>&tzdata-code-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
     <varlistentry revision="sysv">
       <term>Udev-lfs Tarball (&udev-lfs-version;) - <token>&udev-lfs-size;</token>:</term>
       <listitem>
diff -Naurp lfs-git-2025-03-26/chapter03/patches.xml lfs-pacman-2025-03-26/chapter03/patches.xml
--- lfs-git-2025-03-26/chapter03/patches.xml	2025-03-25 18:44:40.095651174 -0500
+++ lfs-pacman-2025-03-26/chapter03/patches.xml	2025-03-25 22:21:39.460209497 -0500
@@ -61,6 +61,14 @@
     </varlistentry>
 
     <varlistentry>
+      <term>Docbook XSL Stylesheets (No Namespace) Stack Fix Patch - <token>&docbook-xsl-nons-stack-fix-patch-size;</token>:</term>
+      <listitem>
+        <para>Download: <ulink url="&patches-root;&docbook-xsl-nons-stack-fix-patch;"/></para>
+        <para>MD5 sum: <literal>&docbook-xsl-nons-stack-fix-patch-md5;</literal></para>
+      </listitem>
+   </varlistentry>
+
+    <varlistentry>
       <term>Expect GCC14 Patch - <token>&expect-gcc14-patch-size;</token>:</term>
       <listitem>
         <para>Download: <ulink url="&patches-root;&expect-gcc14-patch;"/></para>
@@ -136,6 +144,14 @@
       </listitem>
     </varlistentry>
 -->
+    <varlistentry>
+      <term>SGML Common Manpages Patch - <token>&sgml-common-manpage-patch-size;</token>:</term>
+      <listitem>
+        <para>Download: <ulink url="&patches-root;&sgml-common-manpage-patch;"/></para>
+        <para>MD5 sum: <literal>&sgml-common-manpage-patch-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
     <varlistentry revision="sysv">
       <term>SysVinit Consolidated Patch - <token>&sysvinit-consolidated-patch-size;</token>:</term>
       <listitem>
diff -Naurp lfs-git-2025-03-26/chapter07/bzip2.xml lfs-pacman-2025-03-26/chapter07/bzip2.xml
--- lfs-git-2025-03-26/chapter07/bzip2.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/bzip2.xml	2025-03-25 22:21:39.460457026 -0500
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-bzip2" role="wrap">
+  <?dbhtml filename="bzip2.html"?>
+
+  <sect1info condition="script">
+    <productname>bzip2</productname>
+    <productnumber>&bzip2-version;</productnumber>
+    <address>&bzip2-url;</address>
+  </sect1info>
+
+  <title>Bzip2-&bzip2-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Bzip2 package contains programs for compressing and decompressing
+    files. Compressing text files with <command>bzip2</command> yields a much
+    better compression percentage than with the traditional
+    <command>gzip</command>.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&bzip2-fin-sbu;</seg>
+        <seg>&bzip2-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Bzip2</title>
+
+   <para>The following command ensures installation of symbolic links are relative:</para>
+
+<screen><userinput remap="pre">sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile</userinput></screen>
+
+    <para>Prepare Bzip2 for compilation with:</para>
+
+<screen><userinput remap="make">make -f Makefile-libbz2_so
+make clean</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the make parameter:</title>
+
+      <varlistentry>
+        <term><parameter>-f Makefile-libbz2_so</parameter></term>
+        <listitem>
+          <para>This will cause Bzip2 to be built using a different
+          <filename>Makefile</filename> file, in this case the
+          <filename>Makefile-libbz2_so</filename> file, which creates a dynamic
+          <filename class="libraryfile">libbz2.so</filename> library and links
+          the Bzip2 utilities against it.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Compile and test the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the programs:</para>
+
+<screen><userinput remap="install">make PREFIX=/usr install</userinput></screen>
+
+    <para>Install the shared library:</para>
+<screen><userinput remap="install">cp -av libbz2.so.* /usr/lib
+ln -sv libbz2.so.&bzip2-version; /usr/lib/libbz2.so</userinput></screen>
+
+    <para>Install the shared <command>bzip2</command> binary into the
+    <filename class="directory">/usr/bin</filename> directory, and replace
+    two copies of <command>bzip2</command> with symlinks:</para>
+
+<screen><userinput remap="install">cp -v bzip2-shared /usr/bin/bzip2
+for i in /usr/bin/{bzcat,bunzip2}; do
+  ln -sfv bzip2 $i
+done</userinput></screen>
+
+    <para>Remove a useless static library:</para>
+
+<screen><userinput remap="install">rm -fv /usr/lib/libbz2.a</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/chapter07.xml lfs-pacman-2025-03-26/chapter07/chapter07.xml
--- lfs-git-2025-03-26/chapter07/chapter07.xml	2025-03-25 18:44:40.095899603 -0500
+++ lfs-pacman-2025-03-26/chapter07/chapter07.xml	2025-03-25 22:21:39.460706355 -0500
@@ -24,6 +24,36 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="texinfo.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
 
+    <!-- These required for pacman packagemanagement -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bzip2.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libgpg-error.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libassuan.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="npth.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libgcrypt.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libksba.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libtasn1.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libffi.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="zlib.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="openssl.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gmp.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="nettle.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libarchive.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sqlite.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="expat.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pkgconf.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="python-2nd.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="wheel.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setuptools.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pip.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libcap.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fakeroot.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ninja.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="meson.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="curl.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="shadow.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pacman.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pacman-contrib.xml"/>
+
 <!--
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tcl.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="expect.xml"/>
diff -Naurp lfs-git-2025-03-26/chapter07/createfiles.xml lfs-pacman-2025-03-26/chapter07/createfiles.xml
--- lfs-git-2025-03-26/chapter07/createfiles.xml	2025-03-25 18:44:40.095917423 -0500
+++ lfs-pacman-2025-03-26/chapter07/createfiles.xml	2025-03-25 22:21:39.460544686 -0500
@@ -66,6 +66,7 @@ bin:x:1:1:bin:/dev/null:/usr/bin/false
 daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
 messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
 uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
+pacman:x:102:102:Pacman Packaging User:/home/pacman:/bin/bash
 nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
 EOF</userinput></screen>
 
@@ -83,6 +84,7 @@ systemd-timesync:x:78:78:systemd Time Sy
 systemd-coredump:x:79:79:systemd Core Dumper:/:/usr/bin/false
 uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
 systemd-oom:x:81:81:systemd Out Of Memory Daemon:/:/usr/bin/false
+pacman:x:102:102:Pacman Packaging User:/home/pacman:/bin/bash
 nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
 EOF</userinput></screen>
 
@@ -115,6 +117,7 @@ mail:x:34:
 kvm:x:61:
 uuidd:x:80:
 wheel:x:97:
+pacman:x:102:
 users:x:999:
 nogroup:x:65534:</literal>
 EOF</userinput></screen>
@@ -151,6 +154,7 @@ systemd-coredump:x:79:
 uuidd:x:80:
 systemd-oom:x:81:
 wheel:x:97:
+pacman:x:102:
 users:x:999:
 nogroup:x:65534:</literal>
 EOF</userinput></screen>
diff -Naurp lfs-git-2025-03-26/chapter07/curl.xml lfs-pacman-2025-03-26/chapter07/curl.xml
--- lfs-git-2025-03-26/chapter07/curl.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/curl.xml	2025-03-25 22:21:39.460640796 -0500
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-curl" role="wrap">
+  <?dbhtml filename="curl.html"?>
+
+  <sect1info condition="script">
+    <productname>curl</productname>
+    <productnumber>&curl-version;</productnumber>
+    <address>&curl-url;</address>
+  </sect1info>
+
+  <title>Curl-&curl-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>cURL</application> package contains an utility
+      and a library used for transferring files with URL syntax to any of
+      the following protocols: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP,
+      TELNET, DICT, LDAP, LDAPS and FILE. Its ability to both download
+      and upload files can be incorporated into other programs to support
+      functions like streaming media.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&curl-fin-sbu;</seg>
+        <seg>&curl-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title/>
+
+    <para>
+      Configure <application>cURL</application> by running the following
+      command:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr                           \
+            --disable-static                        \
+            --with-openssl                          \
+            --with-ca-path=/etc/ssl/certs</userinput></screen>
+
+    <para>
+      Build <application>cURL</application> by running the following
+      command:
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>
+      Install <application>cURL</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--with-ca-path=/etc/ssl/certs</parameter>: This
+      switch sets the location of the BLFS Certificate Authority store.
+    </para>
+
+    <para>
+      <option>--with-gssapi</option>: This parameter adds
+      <application>Kerberos 5</application> support to
+      <filename class="libraryfile">libcurl</filename>.
+    </para>
+
+    <para>
+      <option>--without-ssl --with-gnutls</option>: Use to
+      build with <application>GnuTLS</application> support
+      instead of <application>OpenSSL</application> for SSL/TLS.
+    </para>
+
+    <para>
+      <option>--with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt</option>: Use
+      this switch instead of <parameter>--with-ca-path</parameter> if
+      building with <application>GnuTLS</application> support
+      instead of <application>OpenSSL</application> for SSL/TLS.
+    </para>
+
+    <para>
+      <option>--with-libssh2</option>: This paramater adds
+      <application>SSH</application> support to cURL. This is disabled
+      by default.
+    </para>
+
+    <para>
+      <option>--enable-ares</option>: This paramater adds
+      support for DNS resolution through the c-ares library. It is disabled
+      by default, but does speed up DNS resolution queries.
+    </para>
+
+    <para>
+      <command>find docs ... -exec rm {} \;</command>: This command removes
+      <filename>Makefiles</filename> and man files from the documentation
+      directory that would otherwise be installed by the commands that follow.
+    </para>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/expat.xml lfs-pacman-2025-03-26/chapter07/expat.xml
--- lfs-git-2025-03-26/chapter07/expat.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/expat.xml	2025-03-25 22:21:39.460694715 -0500
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-expat" role="wrap">
+  <?dbhtml filename="expat.html"?>
+
+  <sect1info condition="script">
+    <productname>expat</productname>
+    <productnumber>&expat-version;</productnumber>
+    <address>&expat-url;</address>
+  </sect1info>
+
+  <title>Expat-&expat-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Expat package contains a stream oriented C library for
+    parsing XML.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&expat-fin-sbu;</seg>
+        <seg>&expat-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Expat</title>
+
+    <para>Prepare Expat for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/expat-&expat-version;</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/fakeroot.xml lfs-pacman-2025-03-26/chapter07/fakeroot.xml
--- lfs-git-2025-03-26/chapter07/fakeroot.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/fakeroot.xml	2025-03-25 22:21:39.460617356 -0500
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-fakeroot" role="wrap">
+  <?dbhtml filename="fakeroot.html"?>
+
+  <sect1info condition="script">
+    <productname>FakeRoot</productname>
+    <productnumber>&fakeroot-version;</productnumber>
+    <address>&fakeroot-url;</address>
+  </sect1info>
+
+  <title>FakeRoot-&fakeroot-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The FakeRoot package contains programs for simulating superuser
+    privileges.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&fakeroot-fin-sbu;</seg>
+        <seg>&fakeroot-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of FakeRoot</title>
+
+    <para>Prepare FakeRoot for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr     \
+            --libdir=/usr/lib \
+            --disable-static  \
+            --with-ipc=sysv
+sed '/SUBDIRS/s/doc //' -i Makefile</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/gmp.xml lfs-pacman-2025-03-26/chapter07/gmp.xml
--- lfs-git-2025-03-26/chapter07/gmp.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/gmp.xml	2025-03-25 22:21:39.460491826 -0500
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-gmp" role="wrap">
+  <?dbhtml filename="gmp.html"?>
+
+  <sect1info condition="script">
+    <productname>gmp</productname>
+    <productnumber>&gmp-version;</productnumber>
+    <address>&gmp-url;</address>
+  </sect1info>
+
+  <title>GMP-&gmp-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The GMP package contains math libraries. These have useful functions
+    for arbitrary precision arithmetic.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&gmp-fin-sbu;</seg>
+        <seg>&gmp-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of GMP</title>
+
+    <note>
+      <para>If you are building for 32-bit x86, but you have a CPU which is
+      capable of running 64-bit code <emphasis>and</emphasis> you have specified
+      <envar>CFLAGS</envar> in the environment, the configure script will
+      attempt to configure for 64-bits and fail.
+      Avoid this by invoking the configure command below with
+<screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>
+    </note>
+
+      <para>The default settings of GMP produce libraries optimized for the
+      host processor. Build generic libraries, suitable for package managment
+      by running the following:</para>
+
+<screen><userinput>cp -v configfsf.guess config.guess
+cp -v configfsf.sub   config.sub</userinput></screen>
+
+    <para>Prepare GMP for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr               \
+            --enable-cxx                \
+            --disable-static            \
+            --build=x86_64-pc-linux-gnu \
+            --docdir=/usr/share/doc/gmp-&gmp-version;</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the new configure options:</title>
+
+      <varlistentry>
+        <term><parameter>--enable-cxx</parameter></term>
+        <listitem>
+          <para>This parameter enables C++ support</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--docdir=/usr/share/doc/gmp-&gmp-version;</parameter></term>
+        <listitem>
+          <para>This variable specifies the correct place for the
+          documentation.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Compile the package and generate the HTML documentation:</para>
+
+<screen><userinput remap="make">sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+make
+make html</userinput></screen>
+
+    <para>Install the package and its documentation:</para>
+
+<screen><userinput remap="install">make install
+make install-html</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libarchive.xml lfs-pacman-2025-03-26/chapter07/libarchive.xml
--- lfs-git-2025-03-26/chapter07/libarchive.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libarchive.xml	2025-03-25 22:21:39.460497286 -0500
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libarchive" role="wrap">
+  <?dbhtml filename="libarchive.html"?>
+
+  <sect1info condition="script">
+    <productname>libarchive</productname>
+    <productnumber>&libarchive-version;</productnumber>
+    <address>&libarchive-url;</address>
+  </sect1info>
+
+  <title>Libarchive-&libarchive-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libarchive</application> library provides a single
+      interface for reading/writing various compression formats.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libarchive-fin-sbu;</seg>
+        <seg>&libarchive-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libarchive</title>
+
+    <para>
+      Configure <application>libarchive</application> by running the following
+      command:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr --disable-static</userinput></screen>
+
+    <para>
+      Build <application>libarchive</application> by running the following
+      command:
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>
+      Install <application>libarchive</application> by running the following
+      command:
+    </para>
+
+<screen><userinput remap="install">make install
+ln -sfv bsdunzip /usr/bin/unzip</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libassuan.xml lfs-pacman-2025-03-26/chapter07/libassuan.xml
--- lfs-git-2025-03-26/chapter07/libassuan.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libassuan.xml	2025-03-25 22:21:39.460463776 -0500
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libassuan" role="wrap">
+  <?dbhtml filename="libassuan.html"?>
+
+  <sect1info condition="script">
+    <productname>libassuan</productname>
+    <productnumber>&libassuan-version;</productnumber>
+    <address>&libassuan-url;</address>
+  </sect1info>
+
+  <title>Libassuan-&libassuan-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libassuan</application> package contains an inter
+      process communication library used by some of the other
+      <application>GnuPG</application> related packages.
+      <application>libassuan</application>'s primary use is to allow a
+      client to interact with a non-persistent server.
+      <application>libassuan</application> is not, however, limited to
+      use with <application>GnuPG</application> servers and clients. It
+      was designed to be flexible enough to meet the demands of many
+      transaction based environments with non-persistent servers.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libassuan-fin-sbu;</seg>
+        <seg>&libassuan-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Libassuan</title>
+
+    <para>
+      Install <application>libassuan</application> by running the
+      following commands:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+
+    <para>
+      Compile the package:
+    </para>
+
+<screen><userinput remap="make">make
+make -C doc html
+makeinfo --html --no-split -o doc/assuan_nochunks.html doc/assuan.texi
+makeinfo --plaintext       -o doc/assuan.txt           doc/assuan.texi</userinput></screen>
+
+    <para>
+      Install the package:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libcap.xml lfs-pacman-2025-03-26/chapter07/libcap.xml
--- lfs-git-2025-03-26/chapter07/libcap.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libcap.xml	2025-03-25 22:21:39.460653826 -0500
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libcap" role="wrap">
+  <?dbhtml filename="libcap.html"?>
+
+  <sect1info condition="script">
+    <productname>libcap</productname>
+    <productnumber>&libcap-version;</productnumber>
+    <address>&libcap-url;</address>
+  </sect1info>
+
+  <title>Libcap-&libcap-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Libcap package implements the user-space interfaces to the POSIX
+    1003.1e capabilities available in Linux kernels. These capabilities are a
+    partitioning of the all powerful root privilege into a set of distinct
+    privileges.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libcap-fin-sbu;</seg>
+        <seg>&libcap-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Libcap</title>
+
+    <para>Prevent static libraries from being installed:</para>
+
+<screen><userinput remap="pre">sed -i '/install -m.*STA/d' libcap/Makefile</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make prefix=/usr lib=lib</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the make option:</title>
+
+      <varlistentry>
+        <term><parameter>lib=lib</parameter></term>
+        <listitem>
+          <para>This parameter sets the library directory to
+          <filename>/usr/lib</filename> rather than
+          <filename>/usr/lib64</filename> on x86_64. It has no effect on
+          x86.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make prefix=/usr lib=lib install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libffi.xml lfs-pacman-2025-03-26/chapter07/libffi.xml
--- lfs-git-2025-03-26/chapter07/libffi.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libffi.xml	2025-03-25 22:21:39.460602876 -0500
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libffi" role="wrap">
+  <?dbhtml filename="libffi.html"?>
+
+  <sect1info condition="script">
+    <productname>libffi</productname>
+    <productnumber>&libffi-version;</productnumber>
+    <address>&libffi-url;</address>
+  </sect1info>
+
+  <title>Libffi-&libffi-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <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>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libffi-fin-sbu;</seg>
+        <seg>&libffi-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Libffi</title>
+
+    <para>First, get the build-host value and set a variable:</para>
+
+<screen><userinput remap="prepare">case $(uname -m) in
+  x86_64)
+    chost="x86-64"
+  ;;
+  *)
+    chost="i686"
+  ;;
+esac</userinput></screen>
+    <para>Prepare libffi for compilation:</para>
+
+    <screen><userinput remap="configure">./configure --prefix=/usr               \
+            --disable-static            \
+	    --disable-exec-static-tramp \
+            --with-gcc-arch=${chost}</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the configure option:</title>
+
+      <varlistentry>
+        <term><parameter>--with-gcc-arch=*</parameter></term>
+        <listitem>
+          <para>Ensure GCC does not optimize specifically for the current
+	  system. If this is not specified, the system is guessed and the code
+          generated may not be correct for some systems.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <!-- 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
+          <application>GJS</application>) have not been adapted for it.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>To test the results, issue:</para>
+
+<screen><userinput remap="test">make check</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter07/libgcrypt.xml lfs-pacman-2025-03-26/chapter07/libgcrypt.xml
--- lfs-git-2025-03-26/chapter07/libgcrypt.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libgcrypt.xml	2025-03-25 22:21:39.460670855 -0500
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libgcrypt" role="wrap">
+  <?dbhtml filename="libgcrypt.html"?>
+
+  <sect1info condition="script">
+    <productname>libgcrypt</productname>
+    <productnumber>&libgcrypt-version;</productnumber>
+    <address>&libgcrypt-url;</address>
+  </sect1info>
+
+  <title>Libgcrypt-&libgcrypt-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libgcrypt</application> package contains a general
+      purpose crypto library based on the code used in
+      <application>GnuPG</application>. The library provides a high level
+      interface to cryptographic building blocks using an extendable and flexible
+      API.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libgcrypt-fin-sbu;</seg>
+        <seg>&libgcrypt-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libgcrypt</title>
+
+    <para>
+      Configure <application>libgcrypt</application> by running the
+      following commands:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+
+    <para>
+      Build <application>libgcrypt</application> with the following commands:
+    </para>
+
+<screen><userinput remap="make">make
+make -C doc html
+makeinfo --html --no-split -o doc/gcrypt_nochunks.html doc/gcrypt.texi
+makeinfo --plaintext       -o doc/gcrypt.txt           doc/gcrypt.texi</userinput></screen>
+
+    <para>
+      Now install the package:
+    </para>
+
+    <screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <option>--with-capabilities</option>: This option enables libcap2 support.
+    </para>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libgpg-error.xml lfs-pacman-2025-03-26/chapter07/libgpg-error.xml
--- lfs-git-2025-03-26/chapter07/libgpg-error.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libgpg-error.xml	2025-03-25 22:21:39.460659485 -0500
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libgpg-error" role="wrap">
+  <?dbhtml filename="libgpg-error.html"?>
+
+  <sect1info condition="script">
+    <productname>libgpg-error</productname>
+    <productnumber>&libgpg-error-version;</productnumber>
+    <address>&libgpg-error-url;</address>
+  </sect1info>
+
+  <title>Libgpg-error-&libgpg-error-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>Libgpg-error</application> package contains a
+      library that defines common error values for all
+      <application>GnuPG</application> components.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libgpg-error-fin-sbu;</seg>
+        <seg>&libgpg-error-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libgpg-error</title>
+
+    <para>
+      Prepare <application>libgpg-error</application> by running the
+      following command:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr
+make</userinput></screen>
+
+    <para>
+      Now, install <application>libgpg-error</application> by running the
+      following commands:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libksba.xml lfs-pacman-2025-03-26/chapter07/libksba.xml
--- lfs-git-2025-03-26/chapter07/libksba.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libksba.xml	2025-03-25 22:21:39.460474436 -0500
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libksba" role="wrap">
+  <?dbhtml filename="libksba.html"?>
+
+  <sect1info condition="script">
+    <productname>libksba</productname>
+    <productnumber>&libksba-version;</productnumber>
+    <address>&libksba-url;</address>
+  </sect1info>
+
+  <title>Libksba-&libksba-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>Libksba</application> package contains a library
+      used to make X.509 certificates as well as making the CMS (Cryptographic
+      Message Syntax) easily accessible by other applications. Both
+      specifications are building blocks of S/MIME and TLS. The library does
+      not rely on another cryptographic library but provides hooks for easy
+      integration with <application>Libgcrypt</application>.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libksba-fin-sbu;</seg>
+        <seg>&libksba-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Libksba</title>
+
+    <para>
+      Configure <application>Libksba</application> by running the
+      following command:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+
+    <para>
+      Build <application>Libksba</application> by running the
+      following command:
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>
+      Install with the following command:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/libtasn1.xml lfs-pacman-2025-03-26/chapter07/libtasn1.xml
--- lfs-git-2025-03-26/chapter07/libtasn1.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/libtasn1.xml	2025-03-25 22:21:39.460480446 -0500
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-libtasn1" role="wrap">
+  <?dbhtml filename="libtasn1.html"?>
+
+  <sect1info condition="script">
+    <productname>libtasn1</productname>
+    <productnumber>&libtasn1-version;</productnumber>
+    <address>&libtasn1-url;</address>
+  </sect1info>
+
+  <title>Libtasn1-&libtasn1-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      <application>libtasn1</application> is a highly portable C library
+      that encodes and decodes DER/BER data following an ASN.1 schema.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libtasn1-fin-sbu;</seg>
+        <seg>&libtasn1-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libtasn1</title>
+
+    <para>
+      Configure <application>libtasn1</application> by running the
+      following command:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr --disable-static</userinput></screen>
+
+    <para>
+      Build <application>libtasn1</application> by running the
+      following command:
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+
+    <para>
+      Install <application>libtasn1</application> by running the
+      following command:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/meson.xml lfs-pacman-2025-03-26/chapter07/meson.xml
--- lfs-git-2025-03-26/chapter07/meson.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/meson.xml	2025-03-25 22:21:39.460635036 -0500
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-meson" role="wrap">
+  <?dbhtml filename="meson.html"?>
+
+  <sect1info condition="script">
+    <productname>meson</productname>
+    <productnumber>&meson-version;</productnumber>
+    <address>&meson-url;</address>
+  </sect1info>
+
+  <title>Meson-&meson-version;</title>
+
+  <indexterm zone="ch-tools-meson">
+    <primary sortas="a-Meson">Meson</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>Meson is an open source build system designed to be both extremely fast
+    and as user friendly as possible.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+      <seglistitem>
+        <seg>&meson-fin-sbu;</seg>
+        <seg>&meson-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Meson</title>
+<!--
+    <para>First, apply a patch that fixes an issue identified upstream:</para>
+
+<screen><userinput remap="pre">patch -Np1 -i ../&meson-fix-patch;</userinput></screen>
+-->
+    <para>Compile Meson with the following command:</para>
+
+<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">pip3 install --no-index --find-links dist meson</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the install parameters:</title>
+
+      <varlistentry>
+        <term><parameter>-w dist</parameter></term>
+        <listitem>
+           <para>Puts the created wheels into the
+           <filename class='directory'>dist</filename> directory.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--find-links dist</parameter></term>
+        <listitem>
+           <para>Installs wheels from the
+           <filename class='directory'>dist</filename> directory.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter07/nettle.xml lfs-pacman-2025-03-26/chapter07/nettle.xml
--- lfs-git-2025-03-26/chapter07/nettle.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/nettle.xml	2025-03-25 22:21:39.460525936 -0500
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-nettle" role="wrap">
+  <?dbhtml filename="nettle.html"?>
+
+  <sect1info condition="script">
+    <productname>nettle</productname>
+    <productnumber>&nettle-version;</productnumber>
+    <address>&nettle-url;</address>
+  </sect1info>
+
+  <title>Nettle-&nettle-version;</title>
+
+  <sect2 role="package">
+    <title>Introduction to Nettle</title>
+
+    <para>
+      The <application>Nettle</application> package contains a low-level
+      cryptographic library that is designed to fit easily in many contexts.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&nettle-fin-sbu;</seg>
+        <seg>&nettle-fin-du;</seg>
+      </seglistitem>
+      </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Nettle</title>
+
+    <para>
+      Install <application>Nettle</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput>./configure --prefix=/usr --disable-static &amp;&amp;
+make</userinput></screen>
+
+    <para>
+      Now, as the <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>make install
+chmod   -v   755 /usr/lib/lib{hogweed,nettle}.so</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/ninja.xml lfs-pacman-2025-03-26/chapter07/ninja.xml
--- lfs-git-2025-03-26/chapter07/ninja.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/ninja.xml	2025-03-25 22:21:39.460485896 -0500
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-ninja" role="wrap">
+  <?dbhtml filename="ninja.html"?>
+
+  <sect1info condition="script">
+    <productname>ninja</productname>
+    <productnumber>&ninja-version;</productnumber>
+    <address>&ninja-url;</address>
+  </sect1info>
+
+  <title>Ninja-&ninja-version;</title>
+
+  <indexterm zone="ch-tools-ninja">
+    <primary sortas="a-Ninja">Ninja</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>Ninja is a small build system with a focus on speed.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&ninja-fin-sbu;</seg>
+        <seg>&ninja-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Ninja</title>
+
+    <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,
+    NINJAJOBS.  <emphasis role="bold">For example</emphasis>, setting:
+
+    <screen>export NINJAJOBS=4</screen>
+
+    will limit <command>ninja</command> to four parallel processes.</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;\
+  char* jobs = getenv( "NINJAJOBS" );\
+  if ( jobs != NULL ) j = atoi( jobs );\
+  if ( j > 0 ) return j;\
+' src/ninja.cc</userinput></screen>
+
+    <para>Build Ninja with:</para>
+
+<screen><userinput remap="configure">python3 configure.py --bootstrap --verbose</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the build option:</title>
+
+      <varlistentry>
+        <term><parameter>--bootstrap</parameter></term>
+        <listitem>
+          <para>This parameter forces Ninja to rebuild itself for the current
+          system.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--verbose</parameter></term>
+        <listitem>
+          <para>This parameter makes <command>configure.py</command> show
+          the progress building Ninja.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">install -vm755 ninja /usr/bin/</userinput></screen>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter07/npth.xml lfs-pacman-2025-03-26/chapter07/npth.xml
--- lfs-git-2025-03-26/chapter07/npth.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/npth.xml	2025-03-25 22:21:39.460677025 -0500
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-pth" role="wrap">
+  <?dbhtml filename="pth.html"?>
+
+  <sect1info condition="script">
+    <productname>pth</productname>
+    <productnumber>&npth-version;</productnumber>
+    <address>&npth-url;</address>
+  </sect1info>
+
+  <title>Pth-&npth-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>NPth</application> package contains a very portable
+      POSIX/ANSI-C based library for Unix platforms which provides
+      non-preemptive priority-based scheduling for multiple threads of
+      execution (multithreading) inside event-driven applications. All
+      threads run in the same address space of the server application, but
+      each thread has its own individual program-counter, run-time stack,
+      signal mask and errno variable.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&npth-fin-sbu;</seg>
+        <seg>&npth-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+
+  <sect2 role="installation">
+    <title>Installation of Pth</title>
+
+    <para>
+      Install <application>NPth</application> by running the
+      following commands:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>
+      Install the package with the following commands:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/openssl.xml lfs-pacman-2025-03-26/chapter07/openssl.xml
--- lfs-git-2025-03-26/chapter07/openssl.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/openssl.xml	2025-03-25 22:21:39.460683165 -0500
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-openssl" role="wrap">
+  <?dbhtml filename="openssl.html"?>
+
+  <sect1info condition="script">
+    <productname>openssl</productname>
+    <productnumber>&openssl-version;</productnumber>
+    <address>&openssl-url;</address>
+  </sect1info>
+
+  <title>OpenSSL-&openssl-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The OpenSSL package contains  management tools and libraries relating
+    to cryptography. These are useful for providing cryptographic functions
+    to other packages, such as OpenSSH, email applications, and web browsers
+    (for accessing HTTPS sites).  </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&openssl-fin-sbu;</seg>
+        <seg>&openssl-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of OpenSSL</title>
+
+<!--
+    <para>First fix a problem with some advanced arcitectures with avx512
+    capability:</para>
+
+    <screen><userinput remap="pre">sed -e '/bn_reduce.*m1/i\    factor_size /= sizeof(BN_ULONG) * 8;' \
+        -i crypto/bn/rsaz_exp_x2.c</userinput></screen>
+-->
+    <para>Prepare OpenSSL for compilation:</para>
+
+<screen><userinput remap="configure">./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=lib          \
+         shared                \
+         zlib-dynamic</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>To test the results, issue:</para>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
+make MANSUFFIX=ssl install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/pacman-contrib.xml lfs-pacman-2025-03-26/chapter07/pacman-contrib.xml
--- lfs-git-2025-03-26/chapter07/pacman-contrib.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/pacman-contrib.xml	2025-03-25 22:21:39.460665115 -0500
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-pacman-contrib" role="wrap">
+  <?dbhtml filename="pacman-contrib.html"?>
+
+  <sect1info condition="script">
+    <productname>pacman-contrib</productname>
+    <productnumber>&pacman-contrib-version;</productnumber>
+    <address>&pacman-contrib-url;</address>
+  </sect1info>
+
+  <title>Pacman-contirb-&pacman-contrib-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Pacman-contirb package contains scripts and tools for Pacman
+    systems.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pacman-contrib-fin-sbu;</seg>
+        <seg>&pacman-contrib-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Pacman-contirb</title>
+
+    <para>Prepare Pacman-contirb for compilation:</para>
+
+<screen><userinput remap="configure">./autogen.sh
+./configure --prefix=/usr     \
+            --disable-doc     \
+            --sysconfdir=/etc \
+            --localstatedir=/var</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install
+rm -rf /usr/lib/systemd/</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/pacman.xml lfs-pacman-2025-03-26/chapter07/pacman.xml
--- lfs-git-2025-03-26/chapter07/pacman.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/pacman.xml	2025-03-25 22:21:39.460609746 -0500
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-pacman" role="wrap">
+  <?dbhtml filename="pacman.html"?>
+
+  <sect1info condition="script">
+    <productname>pacman</productname>
+    <productnumber>&pacman-version;</productnumber>
+    <address>&pacman-url;</address>
+  </sect1info>
+
+  <title>Pacman-&pacman-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Pacman package contains the pacman package manager.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pacman-fin-sbu;</seg>
+        <seg>&pacman-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Pacman</title>
+
+    <para>Prepare Pacman for compilation:</para>
+
+<screen><userinput remap="configure">tar -xf ../pacman-hooks-&pacman-hooks-version;.tar.xz
+meson --prefix=/usr \
+      --buildtype=plain \
+      -Dscriptlet-shell=/usr/bin/bash \
+      -Dldconfig=/usr/bin/ldconfig \
+      build
+meson compile -C build</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">meson compile -C build</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">meson install -C build</userinput></screen>
+
+    <para>Install the hooks:</para>
+
+<screen revision="sysv"><userinput remap="install">rm -f pacman-hooks-&pacman-hooks-version;/hooks/*systemd*
+rm -f pacman-hooks-&pacman-hooks-version;/hooks/dbus-reload.hook
+rm -f pacman-hooks-&pacman-hooks-version;/scripts/*systemd*
+sed '/^Target/s@/\*@/*.info*@' -i \
+    pacman-hooks-&pacman-hooks-version;/hooks/texinfo-install.hook
+install -vdm755 /usr/share/libalpm/{hooks,scripts}/
+install -vm644  pacman-hooks-&pacman-hooks-version;/hooks/* \
+                /usr/share/libalpm/hooks/
+install -vm755  pacman-hooks-&pacman-hooks-version;/scripts/* \
+                /usr/share/libalpm/scripts/</userinput></screen>
+
+    <para>Modify the makepkg.conf file:</para>
+
+<screen><userinput remap="install">cat &gt; /etc/pacman.conf &lt;&lt; "EOF"
+<literal># /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir     = /
+#DBPath      = /var/lib/pacman/
+#CacheDir    = /var/cache/pacman/pkg/
+#LogFile     = /var/log/pacman.log
+#GPGDir      = /etc/pacman.d/gnupg/
+#HookDir     = /etc/pacman.d/hooks/
+HoldPkg     = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg   =
+#IgnoreGroup =
+
+#NoUpgrade   =
+#NoExtract   =
+
+# Misc options
+#UseSyslog
+#Color
+#TotalDownload
+CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel    = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+#   - can be defined here or included from another file
+#   - pacman will search repositories in the order defined here
+#   - local/custom mirrors can be added here or in separate files
+#   - repositories listed first will take precedence when packages
+#     have identical names, regardless of version number
+#   - URLs will have $repo replaced by the name of the current repo
+#   - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+#       [repo-name]
+#       Server = ServerName
+#       Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# An example of a disabled remote package repository with multiple servers
+# available. To enable, uncomment the following lines. You can add preferred
+# servers immediately after the header and they will be used before the
+# default mirrors.
+#[core]
+#SigLevel = Required
+#Server = ftp://ftp.example.com/foobar/$repo/os/$arch/
+# The file referenced here should contain a list of 'Server = ' lines.
+#Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository.  See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+
+[Main]
+SigLevel = Optional TrustAll
+Server = file:///srv/pacman/repos/Main
+
+[Extra]
+SigLevel = Optional TrustAll
+Server = file:///srv/pacman/repos/Extra</literal>
+EOF</userinput></screen>
+
+    <para>Modify the pacman.conf file:</para>
+
+<screen><userinput remap="install">cat &gt; /etc/makepkg.conf &lt;&lt; "EOF"
+<literal>#!/hint/bash
+#
+# /etc/makepkg.conf
+#
+
+#########################################################################
+# SOURCE ACQUISITION
+#########################################################################
+#
+#-- The download utilities that makepkg should use to acquire sources
+#  Format: 'protocol::agent'
+DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
+          'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
+          'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
+          'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
+          'rsync::/usr/bin/rsync --no-motd -z %u %o'
+          'scp::/usr/bin/scp -C %u %o')
+
+# Other common tools:
+# /usr/bin/snarf
+# /usr/bin/lftpget -c
+# /usr/bin/wget
+
+#-- The package required by makepkg to download VCS sources
+#  Format: 'protocol::package'
+VCSCLIENTS=('bzr::breezy'
+            'fossil::fossil'
+            'git::git'
+            'hg::mercurial'
+            'svn::subversion')
+
+#########################################################################
+# ARCHITECTURE, COMPILE FLAGS
+#########################################################################
+#
+CARCH="x86_64"
+CHOST="x86_64-pc-linux-gnu"
+
+#-- Compiler and Linker Flags
+#CPPFLAGS=""
+CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+        -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
+        -fstack-clash-protection -fcf-protection \
+        -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
+CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
+LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
+         -Wl,-z,pack-relative-relocs"
+LTOFLAGS="-flto=auto"
+#-- Make Flags: change this for DistCC/SMP systems
+#MAKEFLAGS="-j2"
+#-- Debugging flags
+DEBUG_CFLAGS="-g"
+DEBUG_CXXFLAGS="$DEBUG_CFLAGS"
+
+#########################################################################
+# BUILD ENVIRONMENT
+#########################################################################
+#
+# Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
+#  A negated environment option will do the opposite of the comments below.
+#
+#-- distcc:   Use the Distributed C/C++/ObjC compiler
+#-- color:    Colorize output messages
+#-- ccache:   Use ccache to cache compilation
+#-- check:    Run the check() function if present in the PKGBUILD
+#-- sign:     Generate PGP signature file
+#
+BUILDENV=(!distcc color !ccache check !sign)
+#
+#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
+#-- specify a space-delimited list of hosts running in the DistCC cluster.
+#DISTCC_HOSTS=""
+#
+#-- Specify a directory for package building.
+#BUILDDIR=/tmp/makepkg
+
+#########################################################################
+# GLOBAL PACKAGE OPTIONS
+#   These are default values for the options=() settings
+#########################################################################
+#
+# Makepkg defaults:
+# OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps)
+#  A negated option will do the opposite of the comments below.
+#
+#-- strip:      Strip symbols from binaries/libraries
+#-- docs:       Save doc directories specified by DOC_DIRS
+#-- libtool:    Leave libtool (.la) files in packages
+#-- staticlibs: Leave static library (.a) files in packages
+#-- emptydirs:  Leave empty directories in packages
+#-- zipman:     Compress manual (man and info) pages in MAN_DIRS with gzip
+#-- purge:      Remove files specified by PURGE_TARGETS
+#-- debug:      Add debugging flags as specified in DEBUG_* variables
+#-- lto:        Add compile flags for building with link time optimization
+#-- autodeps:   Automatically add depends/provides
+#
+OPTIONS=(strip docs !libtool !staticlibs emptydirs !zipman purge !debug !lto !autodeps)
+
+#-- File integrity checks to use. Valid: ck, md5, sha1, sha224, sha256, sha384, sha512, b2
+INTEGRITY_CHECK=(sha256)
+#-- Options to be used when stripping binaries. See `man strip' for details.
+STRIP_BINARIES="--strip-all"
+#-- Options to be used when stripping shared libraries. See `man strip' for details.
+STRIP_SHARED="--strip-unneeded"
+#-- Options to be used when stripping static libraries. See `man strip' for details.
+STRIP_STATIC="--strip-debug"
+#-- Manual (man and info) directories to compress (if zipman is specified)
+MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
+#-- Doc directories to remove (if !docs is specified)
+DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
+#-- Files to be removed from all packages (if purge is specified)
+PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
+#-- Directory to store source code in for debug packages
+DBGSRCDIR="/usr/src/debug"
+#-- Prefix and directories for library autodeps
+LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32')
+
+#########################################################################
+# PACKAGE OUTPUT
+#########################################################################
+#
+# Default: put built package and cached source in build directory
+#
+#-- Destination: specify a fixed directory where all packages will be placed
+#PKGDEST=/home/packages
+#-- Source cache: specify a fixed directory where source files will be cached
+#SRCDEST=/home/sources
+#-- Source packages: specify a fixed directory where all src packages will be placed
+#SRCPKGDEST=/home/srcpackages
+#-- Log files: specify a fixed directory where all log files will be placed
+#LOGDEST=/home/makepkglogs
+#-- Packager: name/email of the person or organization building packages
+#PACKAGER="John Doe &lt;john@doe.com&gt;"
+#-- Specify a key to use for package signing
+#GPGKEY=""
+
+#########################################################################
+# COMPRESSION DEFAULTS
+#########################################################################
+#
+COMPRESSGZ=(gzip -c -f -n)
+COMPRESSBZ2=(bzip2 -c -f)
+COMPRESSXZ=(xz -c -z -)
+COMPRESSZST=(zstd -c -z -q -)
+COMPRESSLRZ=(lrzip -q)
+COMPRESSLZO=(lzop -q)
+COMPRESSZ=(compress -c -f)
+COMPRESSLZ4=(lz4 -q)
+COMPRESSLZ=(lzip -c -f)
+
+#########################################################################
+# EXTENSION DEFAULTS
+#########################################################################
+#
+PKGEXT='.pkg.tar.xz'
+SRCEXT='.src.tar.xz'
+
+#########################################################################
+# OTHER
+#########################################################################
+#
+#-- Command used to run pacman as root, instead of trying sudo and su
+PACMAN_AUTH=()
+EOF</literal></userinput></screen>
+
+    <para>Initialize the Main repository. In this case, you want the directory
+    to be writable by anybody in the
+    <systemitem class="username">pacman</systemitem> group. In addition, we set
+    the group sticky bit (2) so that any direcoties created will also have the
+    same group ownership.</para>
+
+<screen><userinput remap="install">install -o pacman -d /home/pacman
+install -o root -g pacman -vdm2775 /srv/pacman/{repos,source,logs}/{Main,Extra}
+repo-add /srv/pacman/repos/Main/Main.db.tar.gz
+repo-add /srv/pacman/repos/Extra/Extra.db.tar.gz
+pacman -Tv
+pacman -Syu</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/pip.xml lfs-pacman-2025-03-26/chapter07/pip.xml
--- lfs-git-2025-03-26/chapter07/pip.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/pip.xml	2025-03-25 22:21:39.460502686 -0500
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-pip" role="wrap">
+  <?dbhtml filename="pip.html"?>
+
+  <sect1info condition="script">
+    <productname>pip</productname>
+    <productnumber>&pip-version;</productnumber>
+    <address>&pip-url;</address>
+  </sect1info>
+
+  <title>pip-&pip-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The pip package provides a method to easily download, build,
+    install, upgrade, and uninstall Python packages</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pip-fin-sbu;</seg>
+        <seg>&pip-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of standalone pip</title>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">python3 -m build --wheel --no-isolation</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">python3 -m installer dist/*.whl</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/pkgconf.xml lfs-pacman-2025-03-26/chapter07/pkgconf.xml
--- lfs-git-2025-03-26/chapter07/pkgconf.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/pkgconf.xml	2025-03-25 22:21:39.460688925 -0500
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-pkgconf" role="wrap">
+  <?dbhtml filename="pkgconf.html"?>
+
+  <sect1info condition="script">
+    <productname>pkgconf</productname>
+    <productnumber>&pkgconf-version;</productnumber>
+    <address>&pkgconf-url;</address>
+  </sect1info>
+
+  <title>Pkgconf-&pkgconf-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The pkgconf package is a successor to pkgconf and contains a tool
+    for passing the include path and/or library paths to build tools during the
+    configure and make phases of package installations.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pkgconf-fin-sbu;</seg>
+        <seg>&pkgconf-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Pkgconf</title>
+
+    <para>Prepare Pkgconf for compilation:</para>
+
+    <screen><userinput remap="configure">./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/pkgconf-&pkgconf-version;</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install
+ln -sv pkgconf   /usr/bin/pkg-config
+ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/python-2nd.xml lfs-pacman-2025-03-26/chapter07/python-2nd.xml
--- lfs-git-2025-03-26/chapter07/python-2nd.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/python-2nd.xml	2025-03-25 22:21:39.460623116 -0500
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-Python-2nd" role="wrap">
+  <?dbhtml filename="Python-2nd.html"?>
+
+  <sect1info condition="script">
+    <productname>Python</productname>
+    <productnumber>&python-version;</productnumber>
+    <address>&python-url;</address>
+  </sect1info>
+
+  <title>Python-&python-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <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>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&python-fin-sbu;</seg>
+        <seg>&python-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Reinstallation of Python 3</title>
+
+    <para>Prepare Python for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr        \
+            --enable-shared      \
+            --with-system-expat  \
+            --with-system-ffi    \
+            --enable-optimizations</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the configure options:</title>
+
+    <varlistentry>
+      <term><parameter>--with-system-expat</parameter></term>
+      <listitem>
+        <para>This switch enables linking against system version of
+        <application>Expat</application>.</para>
+       </listitem>
+     </varlistentry>
+
+    <varlistentry>
+      <term><parameter>--with-system-ffi</parameter></term>
+      <listitem>
+        <para>This switch enables linking against system version of
+        <application>libffi</application>.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><parameter>--enable-optimizations</parameter></term>
+      <listitem>
+        <para>This switch enables stable, but expensive, optimizations.</para>
+      </listitem>
+    </varlistentry>
+
+    </variablelist>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <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
+    when Python 3 is reinstalled in BLFS.  To run the tests anyway,
+    issue <command>make test</command>.</para>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+    <para>We use the pip3 command to install Python 3 programs and modules for
+    all users as root 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 pip3
+    as this user). A multi-line warning is triggered whenever pip3 is issued
+    by the root user.</para>
+
+    <para>The main reason for the recommendation is to avoid conflicts with the
+    system's package manager (dpkg, for example). LFS does not have a
+    system-wide package manager, so this is not a problem. Also, pip3 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, pip3 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 pip3 from a
+    pre-built wheel on PyPI (whenever a new version is available). But LFS
+    considers pip3 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 pip3 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
+[global]
+root-user-action = ignore
+disable-pip-version-check = true
+EOF</userinput></screen>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter07/setuptools.xml lfs-pacman-2025-03-26/chapter07/setuptools.xml
--- lfs-git-2025-03-26/chapter07/setuptools.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/setuptools.xml	2025-03-25 22:21:39.460509026 -0500
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-setuptools" role="wrap">
+  <?dbhtml filename="setuptools.html"?>
+
+  <sect1info condition="script">
+    <productname>setuptools</productname>
+    <productnumber>&setuptools-version;</productnumber>
+    <address>&setuptools-url;</address>
+  </sect1info>
+
+  <title>setuptools-&setuptools-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The setuptools package provides a method to easily download, build,
+    install, upgrade, and uninstall Python packages</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&setuptools-fin-sbu;</seg>
+        <seg>&setuptools-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of setuptools</title>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">pip3 install --no-index --find-links dist setuptools</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/shadow.xml lfs-pacman-2025-03-26/chapter07/shadow.xml
--- lfs-git-2025-03-26/chapter07/shadow.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/shadow.xml	2025-03-25 22:21:39.460646676 -0500
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-shadow" role="wrap">
+  <?dbhtml filename="shadow.html"?>
+
+  <sect1info condition="script">
+    <productname>shadow</productname>
+    <productnumber>&shadow-version;</productnumber>
+    <address>&shadow-url;</address>
+  </sect1info>
+
+  <title>Shadow-&shadow-version;</title>
+
+  <indexterm zone="ch-tools-shadow">
+    <primary sortas="a-Shadow">Shadow</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Shadow package contains programs for handling passwords in a secure
+    way.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&shadow-fin-sbu;</seg>
+        <seg>&shadow-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Shadow</title>
+
+    <para>Disable the installation of the <command>groups</command> program
+    and its man pages, as Coreutils provides a better version. Also,
+    prevent the installation of manual pages that will be installed in
+    <xref linkend="ch-system-man-pages"/>:</para>
+
+<screen><userinput remap="pre">sed -i 's/groups$(EXEEXT) //' src/Makefile.in
+find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
+find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
+find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;</userinput></screen>
+
+    <para id="ch-tools-shadow-login_defs">Instead of using the default
+    <emphasis>crypt</emphasis> method, use the much more secure
+    <emphasis>YESCRYPT</emphasis> method of password encryption, which also
+    allows passwords longer than 8 characters.
+    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,
+    remove <filename class="directory">/bin</filename> and
+    <filename class="directory">/sbin</filename> from the <envar>PATH</envar>,
+    since they are simply symlinks to their counterparts in
+    <filename class="directory">/usr</filename>.</para>
+
+    <warning>
+      <para>Including <filename class="directory">/bin</filename>
+      and/or <filename class="directory">/sbin</filename> in
+      the <envar>PATH</envar> variable may cause some BLFS packages fail to
+      build,<!-- known example: SPIRV-LLVM-Translator --> so don't do that
+      in the <filename>.bashrc</filename> file or anywhere else.</para>
+    </warning>
+
+<screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
+    -e 's:/var/spool/mail:/var/mail:'                   \
+    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                  \
+    -i etc/login.defs</userinput></screen>
+
+    <para>Prepare Shadow for compilation:</para>
+
+<screen><userinput remap="configure">touch /usr/bin/passwd
+./configure --sysconfdir=/etc   \
+            --disable-static    \
+            --with-{b,yes}crypt \
+            --without-libbsd    \
+            --with-group-name-max-length=32</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the new configuration options:</title>
+
+      <varlistentry>
+        <term><command>touch /usr/bin/passwd</command></term>
+        <listitem>
+          <para>The file <filename>/usr/bin/passwd</filename> needs
+          to exist because its location is hardcoded in some programs; 
+          if it does not already exist, the installation script will 
+          create it in the wrong place.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--with-{b,yes}crypt</parameter></term>
+        <listitem>
+          <para>The shell expands this to two switches,
+          <parameter>--with-bcrypt</parameter> and
+          <parameter>--with-yescrypt</parameter>.  They allow shadow to use
+          the Bcrypt and Yescrypt algorithms implemented by
+          <application>Libxcrypt</application> for hashing passwords.
+          These algorithms are more secure (in particular, much more
+          resistant to GPU-based attacks) than the traditional SHA
+          algorithms.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--with-group-name-max-length=32</parameter></term>
+        <listitem>
+          <para>The longest permissible user name is 32 characters.  Make the maximum
+          length of a group name the same.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--without-libbsd</parameter></term>
+        <listitem>
+           <para>Do not use the readpassphrase function from libbsd which
+           is not in LFS.  Use the internal copy instead.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    <para>Compile the package:</para>
+
+    <screen><userinput remap="make">make</userinput></screen>
+
+    <para>This package does not come with a test suite.</para>
+
+    <para>Install the package:</para>
+
+    <screen><userinput remap="install">make exec_prefix=/usr install</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="ch-tools-conf-shadow" role="configuration">
+    <title>Configuring Shadow</title>
+
+    <indexterm zone="ch-tools-conf-shadow">
+      <primary sortas="a-Shadow">Shadow</primary>
+      <secondary>configuring</secondary>
+    </indexterm>
+
+    <para>This package contains utilities to add, modify, and delete users and
+    groups; set and change their passwords; and perform other administrative
+    tasks. For a full explanation of what <emphasis>password shadowing</emphasis>
+    means, see the <filename>doc/HOWTO</filename> file within the unpacked
+    source tree. If you use Shadow support, keep in mind that programs which need
+    to verify passwords (display managers, FTP programs, pop3 daemons, etc.)
+    must be Shadow-compliant. That is, they must be able to work with
+    shadowed passwords.</para>
+
+    <para>To enable shadowed passwords, run the following command:</para>
+
+<screen><userinput>pwconv</userinput></screen>
+
+    <para>To enable shadowed group passwords, run:</para>
+
+<screen><userinput>grpconv</userinput></screen>
+
+    <para>Shadow's default configuration for the <command>useradd</command>
+    utility needs some explanation. First, the default
+    action for the <command>useradd</command> utility is to create the user and
+    a group with the same name as the user. By default the user ID (UID) and
+    group ID (GID) numbers will begin at 1000. This means if you don't pass
+    extra parameters to <command>useradd</command>, each user will be a member of a
+    unique group on the system. If this behavior is undesirable, you'll need
+    to pass either the <parameter>-g</parameter> or <parameter>-N</parameter>
+    parameter to <command>useradd</command>, or else change the setting of
+    <parameter>USERGROUPS_ENAB</parameter> in
+    <filename>/etc/login.defs</filename>. See <ulink role='man'
+    url='&man;useradd.8'>useradd(8)</ulink> for more information.</para>
+
+    <para>Second, to change the default parameters, the file
+    <filename>/etc/default/useradd</filename> must be created and tailored
+    to suit your particular needs. Create it with:</para>
+
+<screen><userinput>mkdir -p /etc/default
+useradd -D --gid 999</userinput></screen>
+
+    <variablelist>
+      <title><filename>/etc/default/useradd</filename> parameter explanations</title>
+
+      <varlistentry>
+        <term><parameter>GROUP=999</parameter></term>
+        <listitem>
+          <para>This parameter sets the beginning of the group numbers used in
+          the <filename>/etc/group</filename> file. The particular value 999
+          comes from the <parameter>--gid</parameter> parameter above.  You
+          may set it to any desired value.
+
+          Note that <command>useradd</command> will never reuse a UID or GID.
+          If the number identified in this parameter is used, it will use the
+          next available number. Note also that if you don't have a group with
+          an ID equal to this number on your system, then the first time you use
+          <command>useradd</command> without the <parameter>-g</parameter>
+          parameter, an error message will be generated&mdash;<computeroutput>useradd:
+          unknown GID 999</computeroutput>,
+          even though the account has been created correctly. That is why we
+          created the group <systemitem class="groupname">users</systemitem>
+          with this group ID in
+          <xref linkend='ch-tools-createfiles' role='.'/></para>
+
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><parameter>CREATE_MAIL_SPOOL=yes</parameter></term>
+        <listitem>
+          <para>This parameter causes <command>useradd</command> to create a
+          mailbox file for each new user. <command>useradd</command>
+          will assign the group ownership of this file to the
+          <systemitem class="groupname">mail</systemitem> group with 0660
+          permissions. If you would rather not create these files,
+          issue the following command:</para>
+
+<screen><userinput>sed -i '/MAIL/s/yes/no/' /etc/default/useradd</userinput></screen>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter07/sqlite.xml lfs-pacman-2025-03-26/chapter07/sqlite.xml
--- lfs-git-2025-03-26/chapter07/sqlite.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/sqlite.xml	2025-03-25 22:21:39.460700645 -0500
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-sqlite" role="wrap">
+  <?dbhtml filename="sqlite.html"?>
+
+  <sect1info condition="script">
+    <productname>sqlite</productname>
+    <productnumber>&sqlite-version;</productnumber>
+    <address>&sqlite-url;</address>
+  </sect1info>
+
+  <title>SQLite-&sqlite-version;</title>
+
+  <sect2 role="package">
+    <title>Introduction to SQLite</title>
+
+    <para>
+      The <application>SQLite</application> 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</title>
+
+    <para>
+      Configure <application>SQLite</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr     \
+            --disable-static  \
+            --enable-fts{4,5} \
+            CPPFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1 \
+                      -DSQLITE_ENABLE_UNLOCK_NOTIFY=1   \
+                      -DSQLITE_ENABLE_DBSTAT_VTAB=1     \
+                      -DSQLITE_SECURE_DELETE=1</userinput></screen>
+
+    <para>
+      Build <application>SQLite</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>
+      Install <application>SQLite</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter07/wheel.xml lfs-pacman-2025-03-26/chapter07/wheel.xml
--- lfs-git-2025-03-26/chapter07/wheel.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/wheel.xml	2025-03-25 22:21:39.460629496 -0500
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-wheel" role="wrap">
+  <?dbhtml filename="wheel.html"?>
+
+  <sect1info condition="script">
+    <productname>wheel</productname>
+    <productnumber>&wheel-version;</productnumber>
+    <address>&wheel-url;</address>
+  </sect1info>
+
+  <title>Wheel-&wheel-version;</title>
+
+  <indexterm zone="ch-tools-wheel">
+    <primary sortas="a-wheel">wheel</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>Wheel is a Python library that is the reference
+    implementation of the Python wheel packaging standard.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+      <seglistitem>
+        <seg>&wheel-fin-sbu;</seg>
+        <seg>&wheel-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Wheel</title>
+
+    <para>Compile Wheel with the following command:</para>
+
+<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
+
+    <para>Install Wheel with the following command:</para>
+
+<screen><userinput remap="install">pip3 install --no-index --find-links dist wheel</userinput></screen>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter07/zlib.xml lfs-pacman-2025-03-26/chapter07/zlib.xml
--- lfs-git-2025-03-26/chapter07/zlib.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter07/zlib.xml	2025-03-25 22:21:39.460469136 -0500
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-tools-zlib" role="wrap">
+  <?dbhtml filename="zlib.html"?>
+
+  <sect1info condition="script">
+    <productname>zlib</productname>
+    <productnumber>&zlib-version;</productnumber>
+    <address>&zlib-url;</address>
+  </sect1info>
+
+  <title>Zlib-&zlib-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Zlib package contains compression and decompression routines used by
+    some programs.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&zlib-fin-sbu;</seg>
+        <seg>&zlib-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Zlib</title>
+
+    <para>Prepare Zlib for compilation:</para>
+
+<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+
+    <para>Compile the package:</para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>Install the package:</para>
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+    <para>Remove a useless static library:</para>
+
+<screen><userinput remap="install">rm -fv /usr/lib/libz.a</userinput></screen>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/acl.xml lfs-pacman-2025-03-26/chapter08/acl.xml
--- lfs-git-2025-03-26/chapter08/acl.xml	2025-03-25 18:44:40.096004092 -0500
+++ lfs-pacman-2025-03-26/chapter08/acl.xml	2025-03-25 22:21:39.460756145 -0500
@@ -42,28 +42,82 @@
   <sect2 role="installation">
     <title>Installation of Acl</title>
 
-    <para>Prepare Acl for compilation:</para>
+    <para>Create the PKGBUILD for the Acl package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr         \
-            --disable-static      \
-            --docdir=/usr/share/doc/acl-&acl-version;</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>The Acl tests must be run on a filesystem that supports access
-    controls.  To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>One test named <filename>test/cp.test</filename> is known to
-    fail because <application>Coreutils</application> is not built with
-    the <application>Acl</application> support yet.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/acl
+cd /sources/acl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="acl"
+pkgver="&acl-version;"
+pkgrel="&acl-release;"
+pkgdesc="The Acl package contains utilities to administer Access Control Lists."
+arch=('x86'
+      'x86_64')
+license=('GPLv2'
+         'LGPLv2.1')
+groups=('core')
+depends=('attr'
+         'glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'm4'
+             'make'
+             'perl'
+             'sed'
+             'texinfo')
+checkdepends=('automake'
+              'diffutils'
+              'findutils'
+              'libtool')
+source=('&acl-url;')
+md5sums=('&acl-md5;')
+
+build() {
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr         \
+              --disable-static      \
+              --docdir=/usr/share/doc/acl-${pkgver}
+  make
+}
+
+# The Acl tests must be run on a filesystem that supports access controls.
+check() {
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package() {
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp acl-&acl-version;-&acl-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/Main/Main.db.tar.xz \
+         /srv/pacman/repos/LFS/acl-&acl-version;-&acl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Acl package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S acl --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/Main/acl
+cp PKGBUILD /srv/pacman/source/Main/acl
+cd /sources
+rm -rf acl</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/asciidoc.xml lfs-pacman-2025-03-26/chapter08/asciidoc.xml
--- lfs-git-2025-03-26/chapter08/asciidoc.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/asciidoc.xml	2025-03-25 22:21:39.460774135 -0500
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-asciidoc" role="wrap">
+  <?dbhtml filename="asciidoc.html"?>
+
+  <sect1info condition="script">
+    <productname>asciidoc</productname>
+    <productnumber>&asciidoc-version;</productnumber>
+    <address>&asciidoc-url;</address>
+  </sect1info>
+
+  <title>Asciidoc-&asciidoc-version;</title>
+
+  <indexterm zone="ch-system-asciidoc">
+    <primary sortas="a-Asciidoc">Asciidoc</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to Asciidoc</title>
+
+    <para>
+      The <application>Asciidoc</application> package is a text document
+      format for writing notes, documentation, articles, books, ebooks,
+      slideshows, web pages, man pages and blogs. AsciiDoc files can be
+      translated to many formats including HTML, PDF, EPUB, and man page.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&asciidoc-fin-sbu;</seg>
+        <seg>&asciidoc-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Asciidoc</title>
+
+    <para>Create the PKGBUILD for the Asciidoc package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/asciidoc
+cd /sources/asciidoc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="asciidoc"
+pkgver="&asciidoc-version;"
+pkgrel="&asciidoc-release;"
+pkgdesc="Text document format for short documents, articles, books and UNIX man pages"
+arch=('any')
+url="&asciidoc-home;"
+license=('GPL3')
+groups=('core')
+depends=('docbook-xsl-nons'
+         'libxslt'
+         'python')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make')
+optdepends=('fop'
+            'libxslt'
+            'lynx')
+source=('&asciidoc-url;')
+md5sums=('&asciidoc-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  pip3 install --root "${pkgdir} --no-index --find-links dist --no-user asciidoc
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp asciidoc-&asciidoc-version;-&asciidoc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/asciidoc-&asciidoc-version;-&asciidoc-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Asciidoc package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S asciidoc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/asciidoc
+cp PKGBUILD /srv/pacman/source/LFS/asciidoc
+cd /sources
+rm -rf asciidoc</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          a2x (symlink to a2x.py),
+          a2x.py,
+          asciidoc (symlink to asciidoc.py), and
+          asciidoc.py
+        </seg>
+        <seg>None</seg>
+        <seg>/etc/asciidoc and
+             /usr/share/doc/asciidoc-&asciidoc-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="a2x">
+        <term><command>a2x</command></term>
+        <listitem>
+          <para>
+            is a toolchain manager for AsciiDoc
+            (converts Asciidoc text files to other file formats).
+          </para>
+          <indexterm zone="ch-system-asciidoc a2x">
+            <primary sortas="b-a2x">a2x</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="asciidoc-prog">
+        <term><command>asciidoc</command></term>
+        <listitem>
+          <para>
+            converts an AsciiDoc text file to HTML or DocBook
+          </para>
+          <indexterm zone="ch-system-asciidoc asciidoc-prog">
+            <primary sortas="b-asciidoc-prog">asciidoc</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/attr.xml lfs-pacman-2025-03-26/chapter08/attr.xml
--- lfs-git-2025-03-26/chapter08/attr.xml	2025-03-25 18:44:40.096009552 -0500
+++ lfs-pacman-2025-03-26/chapter08/attr.xml	2025-03-25 22:21:39.460787475 -0500
@@ -41,26 +41,83 @@
   <sect2 role="installation">
     <title>Installation of Attr</title>
 
-    <para>Prepare Attr for compilation:</para>
+    <para>Create the PKGBUILD for the Attr package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr     \
-            --disable-static  \
-            --sysconfdir=/etc \
-            --docdir=/usr/share/doc/attr-&attr-version;</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>The tests must be run on a filesystem that supports extended
-    attributes such as the ext2, ext3, or ext4 filesystems.
-    To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/attr
+cd /sources/attr
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="attr"
+pkgver="&attr-version;"
+pkgrel="&attr-release;"
+pkgdesc="The Attr package contains utilities to administer the extended attributes of filesystem objects."
+arch=('x86'
+      'x86_64')
+url="&attr-home;"
+license=('GPLv2'
+         'LGPLv2.1')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'm4'
+             'make'
+             'perl'
+             'sed'
+             'texinfo')
+checkdepends=('automake'
+              'diffutils'
+              'findutils'
+              'libtool')
+source=('&attr-url;')
+md5sums=('&attr-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr     \
+              --disable-static  \
+              --sysconfdir=/etc \
+              --docdir=/usr/share/doc/attr-${pkgver}
+  make
+}
+
+# The tests must be run on a filesystem that supports extended attributes.
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp attr-&attr-version;-&attr-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/attr-&attr-version;-&attr-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Attr package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S attr --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/attr
+cp PKGBUILD /srv/pacman/source/LFS/attr
+cd /sources
+rm -rf attr</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/autoconf.xml lfs-pacman-2025-03-26/chapter08/autoconf.xml
--- lfs-git-2025-03-26/chapter08/autoconf.xml	2025-03-25 18:44:40.096015092 -0500
+++ lfs-pacman-2025-03-26/chapter08/autoconf.xml	2025-03-25 22:21:39.461096034 -0500
@@ -41,24 +41,78 @@
   <sect2 role="installation">
     <title>Installation of Autoconf</title>
 
-    <para>Prepare Autoconf for compilation:</para>
+    <para>Create the PKGBUILD for the Autoconf package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-<!--
-    <para>The test suite is currently broken by bash-5 and libtool-2.4.3.
-    To run the tests anyway, issue:</para>
- -->
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/autoconf
+cd /sources/autoconf
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="autoconf"
+pkgver="&autoconf-version;"
+pkgrel="&autoconf-release;"
+pkgdesc="The Autoconf package contains programs for producing shell scripts that can automatically configure source code."
+arch=('x86'
+      'x86_64')
+url="&autoconf-home;"
+license=('custom'
+         'GPLv2')
+groups=('core')
+depends=('bash'
+         'coreutils'
+         'grep'
+         'm4'
+         'make'
+         'sed'
+         'texinfo'
+         'rootfs')
+makedepends=('perl')
+checkdepends=('automake'
+              'diffutils'
+              'findutils'
+              'gcc'
+              'libtool')
+optdepends=('emacs')
+source=('&autoconf-url;')
+md5sums=('&autoconf-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp autoconf-&autoconf-version;-&autoconf-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/autoconf-&autoconf-version;-&autoconf-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Autoconf package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S autoconf --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/autoconf
+cp PKGBUILD /srv/pacman/source/LFS/autoconf
+cd /sources
+rm -rf autoconf</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/automake.xml lfs-pacman-2025-03-26/chapter08/automake.xml
--- lfs-git-2025-03-26/chapter08/automake.xml	2025-03-25 18:44:40.096021312 -0500
+++ lfs-pacman-2025-03-26/chapter08/automake.xml	2025-03-25 22:21:39.461171593 -0500
@@ -40,31 +40,88 @@
 
   <sect2 role="installation">
     <title>Installation of Automake</title>
-<!--
-    <para>Fix a failing test:</para>
 
-<screen><userinput remap="pre">sed -i "s/''/etags/" t/tags-lisp-space.sh</userinput></screen>
--->
-    <para>Prepare Automake for compilation:</para>
+    <para>Create the PKGBUILD for the Automake package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr --docdir=/usr/share/doc/automake-&automake-version;</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>Using four parallel jobs speeds up the tests, even on systems with
-    less logical cores, due to internal delays in individual tests.  To test
-    the results, issue:</para>
-
-<screen><userinput remap="test">make <replaceable>-j$(($(nproc)&gt;4?$(nproc):4))</replaceable> check</userinput></screen>
-
-    <para>Replace <replaceable>$((...))</replaceable> with the number of
-    logical cores you want to use if you don't want to use all.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/automake
+cd /sources/automake
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="automake"
+pkgver="&automake-version;"
+pkgrel="&automake-release;"
+pkgdesc="The Automake package contains programs for generating Makefiles for use with Autoconf."
+arch=('x86'
+      'x86_64')
+url="&automake-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'coreutils'
+         'grep'
+         'm4'
+         'sed'
+         'texinfo'
+         'rootfs')
+makedepends=('autoconf'
+             'gettext'
+             'make'
+             'perl')
+checkdepends=('binutils'
+              'bison'
+              'bzip2'
+              'dejagnu'
+              'diffutils'
+              'expect'
+              'findutils'
+              'flex'
+              'gcc'
+              'gettext'
+              'gzip'
+              'libtool'
+              'tar')
+source=('&automake-url;')
+md5sums=('&automake-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr --docdir=/usr/share/doc/automake-${pkgver}
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  # Use -j4 at a minimum due to long waits
+  make -j$(($(nproc)>4?$(nproc):4)) check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp automake-&automake-version;-&automake-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/automake-&automake-version;-&automake-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Automake package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S automake --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/automake
+cp PKGBUILD /srv/pacman/source/LFS/automake
+cd /sources
+rm -rf automake</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/bash.xml lfs-pacman-2025-03-26/chapter08/bash.xml
--- lfs-git-2025-03-26/chapter08/bash.xml	2025-03-25 18:44:40.096027412 -0500
+++ lfs-pacman-2025-03-26/chapter08/bash.xml	2025-03-25 22:21:39.461315703 -0500
@@ -40,12 +40,65 @@
   <sect2 role="installation">
     <title>Installation of Bash</title>
 
-    <para>Prepare Bash for compilation:</para>
 
-    <screen><userinput remap="configure">./configure --prefix=/usr             \
-            --without-bash-malloc     \
-            --with-installed-readline \
-            --docdir=/usr/share/doc/bash-&bash-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Bash package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/bash
+cd /sources/bash
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="bash"
+pkgver="&bash-version;"
+pkgrel="&bash-release;"
+pkgdesc="The Bash package contains the Bourne-Again SHell."
+arch=('x86'
+      'x86_64')
+url="&bash-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'ncurses'
+         'readline'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'bison'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'patch'
+             'sed'
+             'texinfo')
+checkdepends=('expect'
+              'shadow')
+optdepends=('xorg')
+source=('&bash-url;')
+md5sums=('&bash-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr             \
+              --without-bash-malloc     \
+              --with-installed-readline \
+              --docdir=/usr/share/doc/bash-${version}
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make -k check || true
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure option:</title>
@@ -62,47 +115,25 @@
 
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
+    &pacman-build-add;
 
-    <para>Skip down to <quote>Install the
-    package</quote> if not running the test suite.</para>
+<screen><userinput>cp bash-&bash-version;-&bash-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/bash-&bash-version;-&bash-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To prepare the tests, ensure that the <systemitem class="username">tester</systemitem> user can write to the sources tree:</para>
+    <para>Update the local cache and install the Bash package:</para>
 
-<screen><userinput remap="test">chown -R tester .</userinput></screen>
-
-    <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>
-
-<screen><userinput remap="test">su -s /usr/bin/expect tester &lt;&lt; "EOF"
-set timeout -1
-spawn make tests
-expect eof
-lassign [wait] _ _ _ value
-exit $value
-EOF</userinput></screen>
-
-    <para>The test suite uses <command>diff</command> to detect the
-    difference between test script output and the expected output.  Any
-    output from <command>diff</command> (prefixed with
-    <computeroutput>&lt;</computeroutput> and
-    <computeroutput>&gt;</computeroutput>) indicates a test failure, unless
-    there is a message saying the difference can be ignored.
-    <!-- Some host distros set core file size hard limit < 1000, then the
-         test "ulimit -c -S 1000" attempts to set soft limit > hard limit
-         and fail.  -->
-    One test named <filename>run-builtins</filename> is known to fail on
-    some host distros with a difference on the first line of the
-    output.</para>
+<screen><userinput>pacman -Syu
+pacman -S bash --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/bash
+cp PKGBUILD /srv/pacman/source/LFS/bash
+cd /sources
+rm -rf bash</userinput></screen>
 
     <para>Run the newly compiled <command>bash</command> program (replacing the one that is
     currently being executed):</para>
diff -Naurp lfs-git-2025-03-26/chapter08/bc.xml lfs-pacman-2025-03-26/chapter08/bc.xml
--- lfs-git-2025-03-26/chapter08/bc.xml	2025-03-25 18:44:40.096033382 -0500
+++ lfs-pacman-2025-03-26/chapter08/bc.xml	2025-03-25 22:21:39.461708891 -0500
@@ -43,7 +43,53 @@
 
     <para>Prepare Bc for compilation:</para>
 
-<screen><userinput remap="configure">CC=gcc ./configure --prefix=/usr -G -O3 -r</userinput></screen>
+    <para>Create the PKGBUILD for the Bc package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/bc
+cd /sources/bc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="bc"
+pkgver="&bc-version;"
+pkgrel="&bc-release;"
+pkgdesc="The Bc package contains an arbitrary precision numeric processing language."
+arch=('x86'
+      'x86_64')
+url="&bc-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('glibc'
+         'ncurses'
+         'readline')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make')
+checkdepends=('gawk')
+source=('&bc-url;')
+md5sums=('&bc-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  CC=gcc ./configure --prefix=/usr -G -O3 -r
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make test
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -79,18 +125,25 @@
       </varlistentry>
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
+    &pacman-build-add;
 
-    <para>To test bc, run:</para>
+<screen><userinput>cp bc-&bc-version;-&bc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/bc-&bc-version;-&bc-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<screen><userinput remap="test">make test</userinput></screen>
+    <para>Update the local cache and install the Bc package:</para>
 
+<screen><userinput>pacman -Syu
+pacman -S bc --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/bc
+cp PKGBUILD /srv/pacman/source/LFS/bc
+cd /sources
+rm -rf bc</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/binutils.xml lfs-pacman-2025-03-26/chapter08/binutils.xml
--- lfs-git-2025-03-26/chapter08/binutils.xml	2025-03-25 18:44:40.096038992 -0500
+++ lfs-pacman-2025-03-26/chapter08/binutils.xml	2025-03-25 22:21:39.461389272 -0500
@@ -44,24 +44,105 @@
     <para>The Binutils documentation recommends building Binutils
     in a dedicated build directory:</para>
 
-<screen><userinput remap="pre">mkdir -v build
-cd       build</userinput></screen>
 
-    <para>Prepare Binutils for compilation:</para>
+    <para>Create the PKGBUILD for the Binutils package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">../configure --prefix=/usr       \
-             --sysconfdir=/etc   \
-             --enable-ld=default \
-             --enable-plugins    \
-             --enable-shared     \
-             --disable-werror    \
-             --enable-64-bit-bfd \
-             --enable-new-dtags  \
-             --with-system-zlib  \
-             --enable-default-hash-style=gnu</userinput></screen>
+<screen><userinput>mkdir /sources/binutils
+cd /sources/binutils
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="binutils"
+pkgver="&binutils-version;"
+pkgrel="&binutils-release;"
+pkgdesc="The Binutils package contains a linker, an assembler, and other tools for handling object files."
+arch=('x86'
+      'x86_64')
+url="&binutils-home;"
+license=('GPLv2'
+         'GPLv3'
+         'LGPLv2'
+         'LGPLv3')
+groups=('core')
+options=('!emptydirs'
+         'staticlibs'
+         '!strip')
+depends=('glibc'
+         'zlib'
+         'zstd')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'file'
+             'flex'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'perl'
+             'pkgconf'
+             'sed'
+             'texinfo')
+checkdepends=('gawk')
+source=('&binutils-url;')
+md5sums=('&binutils-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+
+  # Turn off development mode (-Werror, gas run-time checks, date in sonames)
+  sed -i '/^development=/s/true/false/' bfd/development.sh
+
+  mkdir -v build
+}
+
+build(){
+  cd "${pkgname}-${pkgver}/build"
+  ../configure --prefix=/usr       \
+               --sysconfdir=/etc   \
+               --enable-ld=default \
+               --enable-plugins    \
+               --enable-shared     \
+               --disable-werror    \
+               --enable-64-bit-bfd \
+               --enable-new-dtags  \
+               --with-system-zlib  \
+               --enable-default-hash-style=gnu
+
+  make tooldir=/usr
+}
+
+check(){
+  cd "${pkgname}-${pkgver}/build"
+  make -O CFLAGS_FOR_TARGET="-O2 -g" \
+          CXXFLAGS="-O2 -no-pie -fno-PIC" \
+          CFLAGS="-O2 -no-pie" \
+          LDFLAGS="" \
+          check || true
+
+  # one test is known to fail (binutils-all/ar.exp)
+  failcount=`grep '^FAIL:' $(find -name '*.log') | wc -l`
+  if test "${failcount}" -gt "1"; then
+    echo "Unexpected test failures..." &amp;&amp; exit 1
+  fi
+}
+
+package(){
+  cd "${pkgname}-${pkgver}/build"
+  make DESTDIR="${pkgdir}" tooldir=/usr install
+
+  # Remove unneeded static libraries
+  rm -fv "${pkgdir}"/usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
+
+  # Remove unused gprofng directory
+  rm -rfv "${pkgdir}/usr/share/doc/gprofng/"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
-      <title>The meaning of the new configure parameters:</title>
+      <title>The meaning of the new configure parameters and make commands:</title>
 
       <varlistentry>
         <term><parameter>--enable-ld=default</parameter></term>
@@ -86,15 +167,6 @@ cd       build</userinput></screen>
         </listitem>
       </varlistentry>
 
-    </variablelist>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make tooldir=/usr</userinput></screen>
-
-    <variablelist>
-      <title>The meaning of the make parameter:</title>
-
       <varlistentry>
         <term><parameter>tooldir=/usr</parameter></term>
         <listitem>
@@ -114,27 +186,25 @@ cd       build</userinput></screen>
 
     </variablelist>
 
-    <important>
-      <para>The test suite for Binutils in this section is considered critical.
-      Do not skip it under any circumstances.</para>
-    </important>
-
-    <para>Test the results:</para>
-
-<screen><userinput remap="test">make -k check</userinput></screen>
-
-    <para>For a list of failed tests, run:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
+<screen><userinput>cp binutils-&binutils-version;-&binutils-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/binutils-&binutils-version;-&binutils-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Update the local cache and install the Binutils package:</para>
 
-<screen><userinput remap="install">make tooldir=/usr install</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S binutils --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Remove useless static libraries and other files:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">rm -rfv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a \
-        /usr/share/doc/gprofng/</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/binutils
+cp PKGBUILD /srv/pacman/source/LFS/binutils
+cd /sources
+rm -rf binutils</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/bison.xml lfs-pacman-2025-03-26/chapter08/bison.xml
--- lfs-git-2025-03-26/chapter08/bison.xml	2025-03-25 18:44:40.096046452 -0500
+++ lfs-pacman-2025-03-26/chapter08/bison.xml	2025-03-25 22:21:39.461821570 -0500
@@ -40,21 +40,79 @@
   <sect2 role="installation">
     <title>Installation of Bison</title>
 
-    <para>Prepare Bison for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr --docdir=/usr/share/doc/bison-&bison-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Bison package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/bison
+cd /sources/bison
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="bison"
+pkgver="&bison-version;"
+pkgrel="&bison-release;"
+pkgdesc="The Bison package contains a parser generator."
+arch=('x86'
+      'x86_64')
+url="&bison-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'm4'
+             'make'
+             'perl'
+             'sed')
+checkdepends=('diffutils'
+              'findutils'
+              'flex')
+optdepends=('doxygen: to build additional documetation')
+source=('&bison-url;')
+md5sums=('&bison-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr --docdir=/usr/share/doc/${pkgname}-${pkgver}
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp bison-&bison-version;-&bison-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/bison-&bison-version;-&bison-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Bison package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S bison --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/bison
+cp PKGBUILD /srv/pacman/source/LFS/bison
+cd /sources
+rm -rf bison</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/bzip2.xml lfs-pacman-2025-03-26/chapter08/bzip2.xml
--- lfs-git-2025-03-26/chapter08/bzip2.xml	2025-03-25 18:44:40.096053142 -0500
+++ lfs-pacman-2025-03-26/chapter08/bzip2.xml	2025-03-25 22:21:39.461248503 -0500
@@ -43,22 +43,75 @@
   <sect2 role="installation">
     <title>Installation of Bzip2</title>
 
-    <para>Apply a patch that will install the documentation for this package:</para>
+    <para>Create the PKGBUILD for the Bzip2 package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">patch -Np1 -i ../&bzip2-docs-patch;</userinput></screen>
-
-   <para>The following command ensures installation of symbolic links are relative:</para>
-
-<screen><userinput remap="pre">sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile</userinput></screen>
-
-    <para>Ensure the man pages are installed into the correct location:</para>
-
-<screen><userinput remap="pre">sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile</userinput></screen>
-
-    <para>Prepare Bzip2 for compilation with:</para>
-
-<screen><userinput remap="make">make -f Makefile-libbz2_so
-make clean</userinput></screen>
+<screen><userinput>mkdir /sources/bzip2
+cd /sources/bzip2
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="bzip2"
+pkgver="&bzip2-version;"
+pkgrel="&bzip2-release;"
+pkgdesc="The Bzip2 package contains programs for compressing and decompressing files with bzip2 compression."
+arch=('x86'
+'x86_64')
+url="&bzip2-home;"
+groups=('core')
+license=('BSD3C'
+         'custom')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'make'
+             'patch')
+source=('&bzip2-url;'
+        '&patches-root;&bzip2-docs-patch;')
+md5sums=('&bzip2-md5;'
+         '&bzip2-docs-patch-md5;')
+
+prepare(){
+  cd ${srcdir}/${pkgname}-${pkgver}
+  patch -Np1 -i ${srcdir}/${pkgname}-${pkgver}-install_docs-1.patch
+  sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
+  sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
+
+  # Add largefile support to libbz2
+  sed -e 's/^CFLAGS=\(.*\)$/CFLAGS=\1 \$(BIGFILES)/' \
+      -i Makefile-libbz2_so
+
+  # Use makepkg's CFLAGS
+  sed "s|-O2|${CFLAGS}|g" -i Makefile
+  sed "s|-O2|${CFLAGS}|g" -i Makefile-libbz2_so
+}
+
+build(){
+  cd ${srcdir}/${pkgname}-${pkgver}
+  make -f Makefile-libbz2_so
+  make clean
+  make
+}
+
+check(){
+  cd ${srcdir}/${pkgname}-${pkgver}
+  make test
+}
+
+package(){
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make PREFIX="${pkgdir}/usr" install
+  install -vm755 libbz2.so.* "${pkgdir}/usr/lib"
+  ln -sv "libbz2.so.${pgkver}" "${pkgdir}/usr/lib/libbz2.so"
+  install -vm755  bzip2-shared "${pkgdir}/usr/bin/bzip2"
+  rm -v "${pkgdir}"/usr/bin/{bunzip2,bzcat}
+  ln -sv bzip2 "${pkgdir}/usr/bin/bunzip2"
+  ln -sv bsip2 "${pkgdir}/usr/bin/bzcat"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the make parameter:</title>
@@ -76,30 +129,25 @@ make clean</userinput></screen>
 
     </variablelist>
 
-    <para>Compile and test the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>Install the programs:</para>
-
-<screen><userinput remap="install">make PREFIX=/usr install</userinput></screen>
+    &pacman-build-add;
 
-    <para>Install the shared library:</para>
-<screen><userinput remap="install">cp -av libbz2.so.* /usr/lib
-ln -sv libbz2.so.&bzip2-version; /usr/lib/libbz2.so</userinput></screen>
+<screen><userinput>cp bzip2-&bzip2-version;-&bzip2-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/bzip2-&bzip2-version;-&bzip2-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>Install the shared <command>bzip2</command> binary into the
-    <filename class="directory">/usr/bin</filename> directory, and replace
-    two copies of <command>bzip2</command> with symlinks:</para>
+    <para>Update the local cache and install the Bzip2 package:</para>
 
-<screen><userinput remap="install">cp -v bzip2-shared /usr/bin/bzip2
-for i in /usr/bin/{bzcat,bunzip2}; do
-  ln -sfv bzip2 $i
-done</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S bzip2 --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Remove a useless static library:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">rm -fv /usr/lib/libbz2.a</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/bzip2
+cp PKGBUILD /srv/pacman/source/LFS/bzip2
+cd /sources
+rm -rf bzip2</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/chapter08.xml lfs-pacman-2025-03-26/chapter08/chapter08.xml
--- lfs-git-2025-03-26/chapter08/chapter08.xml	2025-03-25 18:44:40.096060322 -0500
+++ lfs-pacman-2025-03-26/chapter08/chapter08.xml	2025-03-25 22:21:39.461788721 -0500
@@ -13,9 +13,17 @@
 
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pkgmgt.xml"/>
+
+  <!-- New packge is rootfs for the skeleton root directory layout -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="rootfs.xml"/>
+
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-pages.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="iana-etc.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="glibc.xml"/>
+
+  <!-- Packaging - separate tzdata -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tzdata.xml"/>
+
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="zlib.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bzip2.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="xz.xml"/>
@@ -26,7 +34,6 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="m4.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bc.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="flex.xml"/>
-
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tcl.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="expect.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dejagnu.xml"/>
@@ -35,8 +42,21 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gmp.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/>
+
+  <!-- Packaging - includ ISL in LFS to avoid later dependency -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="isl.xml"/>
+
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
+
+  <!-- The following required to build Linux-PAM -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="rpcsvc-proto.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libtirpc.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libnsl.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="linux-pam.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="cracklib.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libpwquality.xml"/>
+
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libcap.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libxcrypt.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="shadow.xml"/>
@@ -65,6 +85,10 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="python.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="flit-core.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="wheel.xml"/>
+
+  <!-- We are packaging, pip needs to be separate -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pip.xml"/>
+
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setuptools.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ninja.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="meson.xml"/>
@@ -75,6 +99,12 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gawk.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="findutils.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="groff.xml"/>
+
+  <!-- Add EFI from the get go -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="efivar.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="popt.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="efibootmgr.xml"/>
+
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grub.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gzip.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="iproute2.xml"/>
@@ -85,22 +115,20 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tar.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="texinfo.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="vim.xml"/>
-
-  <!-- systemd only -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="markupsafe.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="jinja2.xml"/>
+
+  <!-- systemd only -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="systemd.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dbus.xml"/>
 
   <!-- sysv only -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
 
-  <!-- Both sysv on systemd builds -->
+  <!-- Both sysv and systemd builds -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-db.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="procps.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
-
-  <!-- Both sysv and systemd builds -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="e2fsprogs.xml"/>
 
   <!-- sysv only -->
@@ -111,4 +139,34 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="stripping.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="cleanup.xml"/>
 
+  <!-- Pacman Additions -->
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libgpg-error.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libassuan.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="npth.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libgcrypt.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libksba.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libtasn1.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="nettle.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libarchive.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sqlite.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="p11-kit.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="make-ca.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libunistring.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libidn2.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libpsl.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="curl.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libusb.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gnupg.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gpgme.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libxml2.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="lzo.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sgml-common.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="docbook-xml.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="docbook-xsl-nons.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libxslt.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="asciidoc.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fakeroot.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pacman.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pacman-contrib.xml"/>
+
 </chapter>
diff -Naurp lfs-git-2025-03-26/chapter08/check.xml lfs-pacman-2025-03-26/chapter08/check.xml
--- lfs-git-2025-03-26/chapter08/check.xml	2025-03-25 18:44:40.096066882 -0500
+++ lfs-pacman-2025-03-26/chapter08/check.xml	2025-03-25 22:21:39.460815665 -0500
@@ -40,25 +40,70 @@
   <sect2 role="installation">
     <title>Installation of Check</title>
 
-    <para>Prepare Check for compilation:</para>
+    <para>Create the PKGBUILD for the Check package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr --disable-static</userinput></screen>
-
-    <para>Build the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>Compilation is now complete.  To run the Check test suite, issue the
-    following command:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-<!--    <para>Note that the Check test suite may take a relatively long
-    (up to 4 SBU) time.</para>
--->
-    <para>Install the package:</para>
-
-    <screen><userinput remap="install">make docdir=/usr/share/doc/check-&check-version; install</userinput></screen>
+<screen><userinput>mkdir /sources/check
+cd /sources/check
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="check"
+pkgver="&check-version;"
+pkgrel="&check-release;"
+pkgdesc="Check is a unit testing framework for C."
+arch=('x86'
+      'x86_64')
+url="&check-home;"
+license=('LGPLv2.1')
+groups=('core')
+depends=('bash'
+         'gawk'
+         'rootfs')
+makedepends=('gcc'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+source=('&check-url;')
+md5sums=('&check-md5;')
+    
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" docdir="/usr/share/doc/check-${pkgver}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp check-&check-version;-&check-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/check-&check-version;-&check-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Check package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S check --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/check
+cp PKGBUILD /srv/pacman/source/LFS/check
+cd /sources
+rm -rf check</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/coreutils.xml lfs-pacman-2025-03-26/chapter08/coreutils.xml
--- lfs-git-2025-03-26/chapter08/coreutils.xml	2025-03-25 18:44:40.096078982 -0500
+++ lfs-pacman-2025-03-26/chapter08/coreutils.xml	2025-03-25 22:21:39.461470242 -0500
@@ -41,25 +41,94 @@
   <sect2 role="installation">
     <title>Installation of Coreutils</title>
 
-    <para>POSIX requires that programs from Coreutils recognize character
-    boundaries correctly even in multibyte locales. The following patch fixes
-    this non-compliance and other internationalization-related bugs.</para>
-
-<screen><userinput remap="pre">patch -Np1 -i ../&coreutils-i18n-patch;</userinput></screen>
-
-    <note>
-      <para>Many bugs have been found in this patch. When reporting new
-      bugs to the Coreutils maintainers, please check first to see if 
-      those bugs are reproducible without this patch.</para>
-    </note>
-
-    <para>Now prepare Coreutils for compilation:</para>
-
-<screen><userinput remap="configure">autoreconf -fv
-automake -af
-FORCE_UNSAFE_CONFIGURE=1 ./configure \
-            --prefix=/usr            \
-            --enable-no-install-program=kill,uptime</userinput></screen>
+    <para>Create the PKGBUILD for the Coreutils package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/coreutils
+cd /sources/coreutils
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="coreutils"
+pkgver="&coreutils-version;"
+pkgrel="&coreutils-release;"
+pkgdesc="The Coreutils package contains utilities for showing and setting the basic system characteristics."
+arch=('x86'
+      'x86_64')
+url="&coreutils-home;"
+license=('GPLv3'
+         'LGPLv2.1'
+         'LGPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('autoconf'
+             'automake'
+             'bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'gmp'
+             'grep'
+             'libcap'
+             'make'
+             'openssl'
+             'patch'
+             'perl'
+             'sed'
+             'texinfo')
+checkdepends=('diffutils'
+              'findutils'
+              'shadow'
+              'util-linux')
+optdepends=('expectpm'
+            'io-tty')
+source=('&coreutils-url;'
+        '&patches-root;&coreutils-i18n-patch;')
+md5sums=('&coreutils-md5;'
+         '&coreutils-i18n-patch-md5;)
+    
+prepare(){
+  cd ${pkgname}-${pkgver}
+
+  # POSIX requires that programs from Coreutils recognize character
+  # boundaries correctly even in multibyte locales. The following patch
+  # fixes this non-compliance and other internationalization-related bugs.
+  patch -Np1 -i ${srcdir}/${pkgname}-${pkgver}-i18n-1.patch
+
+  # In the past, many bugs were found in this patch. When reporting new
+  # bugs to Coreutils maintainers, please check first if they are reproducible
+  # without this patch.
+}
+
+build(){
+  cd ${pkgname}-${pkgver}
+  autoreconf -fv
+  automake -af
+  ./configure       \
+      --prefix=/usr \
+      --enable-no-install-program=kill,uptime
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  # Unfortunately, a few tests are known to fail with the i18n patch
+  # Just continue on failures and pass, check the logs afterward
+  make -k check || true
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+  install -vdm755 ${pkgdir}/usr/sbin
+  mv -v ${pkgdir}/usr/bin/chroot ${pkgdir}/usr/sbin
+  install -vdm755 ${pkgdir}/usr/share/man/man8
+  mv -v ${pkgdir}/usr/share/man/man1/chroot.1 ${pkgdir}/usr/share/man/man8/chroot.8
+  sed -i 's/"1"/"8"/' ${pkgdir}/usr/share/man/man8/chroot.8
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the commands and configure options:</title>
@@ -88,15 +157,6 @@ FORCE_UNSAFE_CONFIGURE=1 ./configure \
       </varlistentry>
 
       <varlistentry>
-        <term><envar>FORCE_UNSAFE_CONFIGURE=1</envar></term>
-        <listitem>
-          <para>This environment variable allows the package to be
-          built by the <systemitem class="username">root</systemitem> user.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
         <term><parameter>--enable-no-install-program=kill,uptime</parameter></term>
         <listitem>
           <para>The purpose of this switch is to prevent Coreutils from
@@ -106,58 +166,25 @@ FORCE_UNSAFE_CONFIGURE=1 ./configure \
       </varlistentry>
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>Skip down to <quote>Install the
-    package</quote> if not running the test suite.</para>
-
-    <para>Now the test suite is ready to be run. First, run the tests that are
-    meant to be run as user <systemitem class="username">root</systemitem>:</para>
-
-<screen><userinput remap="test">make NON_ROOT_USERNAME=tester check-root</userinput></screen>
-
-    <para>We're going to run the remainder of the tests as the
-    <systemitem class="username">tester</systemitem> user. Certain tests
-    require that the user be a member of more than one group. So that
-    these tests are not skipped, add a temporary group and make the
-    user <systemitem class="username">tester</systemitem> a part of it:</para>
-
-<screen><userinput remap="test">groupadd -g 102 dummy -U tester</userinput></screen>
-
-    <para>Fix some of the permissions so that the non-&root; user can
-    compile and run the tests:</para>
-
-<screen><userinput remap="test">chown -R tester . </userinput></screen>
-
-    <!-- To editors: in jhalfs the standard input is always piped to "make"
-         so the test failures are not reproducible in jhalfs even if
-         running the build in a PTY.  Don't use jhalfs to test if we can
-         remove < /dev/null.  -->
-    <para>Now run the tests (using <filename>/dev/null</filename> for the
-    standard input, or two tests may be broken if building LFS in a
-    graphical terminal or a session in SSH or GNU Screen because the
-    standard input is connected to a PTY from host distro, and the device
-    node for such a PTY cannot be accessed from the LFS chroot
-    environment):</para>
-
-<screen><userinput remap="test">su tester -c "PATH=$PATH make -k RUN_EXPENSIVE_TESTS=yes check" \
-   &lt; /dev/null</userinput></screen>
-
-    <para>Remove the temporary group:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="test">groupdel dummy</userinput></screen>
+<screen><userinput>cp coreutils-&coreutils-version;-&coreutils-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/coreutils-&coreutils-version;-&coreutils-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Update the local cache and install the Coreutils package:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S coreutils --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Move programs to the locations specified by the FHS:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">mv -v /usr/bin/chroot /usr/sbin
-mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
-sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/coreutils
+cp PKGBUILD /srv/pacman/source/LFS/coreutils
+cd /sources
+rm -rf coreutils</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/cracklib.xml lfs-pacman-2025-03-26/chapter08/cracklib.xml
--- lfs-git-2025-03-26/chapter08/cracklib.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/cracklib.xml	2025-03-25 22:21:39.461901160 -0500
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+
+]>
+
+<sect1 id="cracklib" xreflabel="CrackLib-&cracklib-version;">
+  <?dbhtml filename="cracklib.html"?>
+
+  <sect1info condition="script">
+    <productname>cracklib</productname>
+    <productnumber>&cracklib-version;</productnumber>
+    <address>&cracklib-url;</address>
+  </sect1info>
+
+  <title>CrackLib-&cracklib-version;</title>
+
+  <indexterm zone="cracklib">
+    <primary sortas="a-CrackLib">CrackLib</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to CrackLib</title>
+
+    <para>
+      The <application>CrackLib</application> package contains a
+      library used to enforce strong passwords by comparing user selected
+      passwords to words in chosen word lists.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&cracklib-fin-sbu;</seg>
+        <seg>&cracklib-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of CrackLib</title>
+
+    <para>Create the PKGBUILD for the Cracklib package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/cracklib
+cd /sources/cracklib
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="cracklib"
+pkgver="&cracklib-version;"
+pkgrel="1"
+pkgdesc="The CrackLib package contains a library used to enforce strong passwords by comparing user selected passwords to words in chosen word lists." 
+arch=('x86'
+      'x86_64')
+url="http://www.gnu.org/software/cracklib"
+license=('GPLv3')
+depends=('glibc'
+         'linux-pam')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'glibc'
+             'grep'
+             'linux-pam'
+             'shadow'
+             'sed')
+source=("&cracklib-url;"
+        "&cracklib-words-url;")
+md5sums=('&cracklib-md5;'
+         '&cracklib-words-md5;')
+install="cracklib.install"
+backup=("usr/share/dict/cracklib-extra-words")
+options=('emptydirs')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  # Remove a meaningless warning
+  sed -i '/skipping/d' util/packer.c
+  # Fix build with newer Python
+  sed -i '15209 s/.*/am_cv_python_version=&python-minor;/' configure
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  PYTHON=python3 CPPFLAGS=-I/usr/include/python3.10 \
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --with-default-dict=/usr/lib/cracklib/pw_dict
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  install -v -m644 -D "${srcdir}/cracklib}-words-${pkgver}.bz2" \
+                      "${pkgdir}/usr/share/dict/cracklib-words.bz2"
+  bzip2 -d -v "${pkgdir}/usr/share/dict/cracklib-words.bz2"
+  ln -v -sf cracklib-words "${pkgdir}/usr/share/dict/words"
+  echo "linuxfromscratch" &gt;&gt; "${pkgdir}/usr/share/dict/cracklib-extra-words"
+  install -v -m755 -d "${pkgdir}/usr/lib/cracklib"
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>We have also listed an install file in the above PKGBUILD that will
+    install the default dictionary and create our combined wordlists:</para>
+
+<screen><userinput>cat &gt; cracklib.install &lt;&lt; "REALEOF"
+<literal>post_install(){
+  echo $(hostname) &gt;&gt;  /usr/share/dict/cracklib-extra-words
+  create-cracklib-dict /usr/share/dict/cracklib-words \
+                       /usr/share/dict/cracklib-extra-words
+}
+
+post_upgrade(){
+  post_install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/cracklib-&cracklib-version;-1-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Cracklib package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S cracklib --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/cracklib
+cp PKGBUILD /srv/pacman/source/LFS/cracklib
+cp cracklib.install /srv/pacman/source/LFS/cracklib
+cd /sources
+rm -rf cracklib</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <command>sed -i '/skipping/d' util/packer.c</command>:
+      Remove a meaningless warning.
+    </para>
+
+    <para>
+      <envar>PYTHON=python3</envar>: This forces the installation of
+      python bindings for Python 3, even if Python 2 is installed.
+    </para>
+
+    <para>
+      <envar>CPPFLAGS=-I/usr/include/python&python-minor;</envar>:
+      This works around an issue caused by incorrect usage of Python 3
+      headers.
+    </para>
+
+    <para>
+      <parameter>--with-default-dict=/lib/cracklib/pw_dict</parameter>:
+      This parameter forces the installation of the
+      <application>CrackLib</application> dictionary to the
+      <filename class="directory">/lib</filename> hierarchy.
+    </para>
+
+    <para>
+      <command>install -v -m644 -D ...</command>: This command creates the
+      <filename class="directory">/usr/share/dict</filename> directory (if it
+      doesn't already exist) and installs the compressed word list there.
+    </para>
+
+    <para>
+      <command>ln -v -s cracklib-words /usr/share/dict/words</command>: The
+      word list is linked to <filename>/usr/share/dict/words</filename> as
+      historically, <filename>words</filename> is the primary word list in the
+      <filename class="directory">/usr/share/dict</filename> directory. Omit
+      this command if you already have a
+      <filename>/usr/share/dict/words</filename> file installed on your system.
+    </para>
+
+    <para>
+      <command>echo $(hostname) >>...</command>: The value of
+      <command>hostname</command> is echoed to a file called
+      <filename>cracklib-extra-words</filename>. This extra file is intended
+      to be a site specific list which includes easy to guess passwords such
+      as company or department names, user names, product names, computer
+      names, domain names, etc.
+    </para>
+
+    <para>
+      <command>create-cracklib-dict ...</command>: This command creates the
+      <application>CrackLib</application> dictionary from the word lists.
+      Modify the command to add any additional word lists you have installed.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>cracklib-check, cracklib-format, cracklib-packer,
+        cracklib-unpacker and create-cracklib-dict</seg>
+
+        <seg>libcrack.so and the _cracklib.so
+          (<application>Python</application> module)</seg>
+
+        <seg>/lib/cracklib, /usr/share/dict and /usr/share/cracklib</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="cracklib-check">
+        <term><command>cracklib-check</command></term>
+        <listitem>
+          <para>
+            is used to determine if a password is strong
+          </para>
+          <indexterm zone="cracklib cracklib-check">
+            <primary sortas="b-cracklib-check">cracklib-check</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="cracklib-format">
+        <term><command>cracklib-format</command></term>
+        <listitem>
+          <para>
+            is used to format text files (lowercases all words,
+            removes control characters and sorts the lists)
+          </para>
+          <indexterm zone="cracklib cracklib-format">
+            <primary sortas="b-cracklib-format">cracklib-format</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+     <varlistentry id="cracklib-packer">
+        <term><command>cracklib-packer</command></term>
+        <listitem>
+          <para>
+            creates a database with words read from standard input
+          </para>
+          <indexterm zone="cracklib cracklib-packer">
+            <primary sortas="b-cracklib-packer">cracklib-packer</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+     <varlistentry id="cracklib-unpacker">
+        <term><command>cracklib-unpacker</command></term>
+        <listitem>
+          <para>
+            displays on standard output the database specified
+          </para>
+          <indexterm zone="cracklib cracklib-packer">
+            <primary sortas="b-cracklib-packer">cracklib-packer</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="create-cracklib-dict">
+        <term><command>create-cracklib-dict</command></term>
+        <listitem>
+          <para>
+            is used to create the <application>CrackLib</application>
+            dictionary from the given word list(s)
+          </para>
+          <indexterm zone="cracklib create-cracklib-dict">
+            <primary sortas="b-create-cracklib-dict">create-cracklib-dict</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libcrack">
+        <term><filename class="libraryfile">libcrack.so</filename></term>
+        <listitem>
+          <para>
+            provides a fast dictionary lookup method for strong
+            password enforcement
+          </para>
+          <indexterm zone="cracklib libcrack">
+            <primary sortas="c-libcrack">libcrack.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/curl.xml lfs-pacman-2025-03-26/chapter08/curl.xml
--- lfs-git-2025-03-26/chapter08/curl.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/curl.xml	2025-03-25 22:21:39.461770961 -0500
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-curl" role="wrap">
+  <?dbhtml filename="curl.html"?>
+
+  <sect1info condition="script">
+    <productname>curl</productname>
+    <productnumber>&curl-version;</productnumber>
+    <address>&curl-url;</address>
+  </sect1info>
+
+  <title>Curl-&curl-version;</title>
+
+  <indexterm zone="ch-system-curl">
+    <primary sortas="a-Curl">Curl</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>cURL</application> package contains an utility
+      and a library used for transferring files with URL syntax to any of
+      the following protocols: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP,
+      TELNET, DICT, LDAP, LDAPS and FILE. Its ability to both download
+      and upload files can be incorporated into other programs to support
+      functions like streaming media.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&curl-fin-sbu;</seg>
+        <seg>&curl-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title/>
+
+    <note>
+      <para>The curl pacakge built here has many more depenencies as listed
+      in the optdepends array below, and is somewhat limited. You should
+      consider reviewing the package's optional dependencies and adjusting as
+      necessary.
+      </para>
+    </note>
+
+    <para>Create the PKGBUILD for the cURL package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/curl
+cd /sources/curl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="curl"
+pkgver="&curl-version;"
+pkgrel="&curl-release;"
+pkgdesc="cURL is a URL retrieval utility and library"
+arch=('x86'
+      'x86_64')
+url="&curl-home;"
+license=('MIT')
+groups=('core')
+depends=('glibc'
+         'make-ca'
+         'libidn2'
+         'libpsl'
+         'openssl'
+         'rootfs'
+         'zlib')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'pacman'
+             'sed'
+             'texinfo'
+             'xz')
+optdepends('apache'
+           'axtls'
+           'brotli'
+           'c-ares'
+           'cyassl'
+           'gnutls'
+           'impacket'
+           'krb5'
+           'libidn'
+           'libmetalink'
+           'librtmp'
+           'libssh2'
+           'mbedtls'
+           'nghttp2'
+           'ngtcp2'
+           'nss'
+           'openldap'
+           'openssh'
+           'polarssl'
+           'quiche'
+           'samba'
+           'spnego'
+           'stunnel'
+           'valgrind')
+source=('&curl-url;')
+md5sums=('&curl-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                           \
+              --disable-static                        \
+              --enable-threaded-resolver              \
+              --with-ca-path=/etc/ssl/certs
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  rm -rf docs/examples/.deps
+  find docs \( -name Makefile\* -o  \
+               -name \*.1       -o  \
+               -name \*.3       -o  \
+               -name CMakeLists.txt \) -delete
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  cp -v -R docs -T "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp curl-&curl-version;-&curl-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/curl-&curl-version;-&curl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the cURL package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S curl --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/curl
+cp PKGBUILD /srv/pacman/source/LFS/curl
+cd /sources
+rm -rf curl</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--enable-threaded-resolver</parameter>: This switch enables
+      <application>cURL</application>'s builtin threaded DNS resolver.
+    </para>
+
+    <para>
+      <parameter>--with-ca-path=/etc/ssl/certs</parameter>: This
+      switch sets the location of the BLFS Certificate Authority store.
+    </para>
+
+    <para>
+      <option>--with-gssapi</option>: This parameter adds
+      <application>Kerberos 5</application> support to
+      <filename class="libraryfile">libcurl</filename>.
+    </para>
+
+    <para>
+      <option>--without-ssl --with-gnutls</option>: Use to
+      build with <application>GnuTLS</application> support
+      instead of <application>OpenSSL</application> for SSL/TLS.
+    </para>
+
+    <para>
+      <option>--with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt</option>: Use
+      this switch instead of <parameter>--with-ca-path</parameter> if
+      building with <application>GnuTLS</application> support
+      instead of <application>OpenSSL</application> for SSL/TLS.
+    </para>
+
+    <para>
+      <option>--with-libssh2</option>: This paramater adds
+      <application>SSH</application> support to cURL. This is disabled
+      by default.
+    </para>
+
+    <para>
+      <option>--enable-ares</option>: This paramater adds
+      support for DNS resolution through the c-ares library. It is disabled
+      by default, but does speed up DNS resolution queries.
+    </para>
+
+    <para>
+      <command>find docs ... -exec rm {} \;</command>: This command removes
+      <filename>Makefiles</filename> and man files from the documentation
+      directory that would otherwise be installed by the commands that follow.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+           curl and curl-config
+        </seg>
+        <seg>
+           libcurl.so
+        </seg>
+        <seg>
+          /usr/include/curl and
+          /usr/share/doc/curl-&curl-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="curl-prog">
+        <term><command>curl</command></term>
+        <listitem>
+         <para>
+           is a command line tool for transferring files with URL syntax.
+         </para>
+          <indexterm zone="ch-system-curl curl-prog">
+            <primary sortas="b-curl">curl</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="curl-config">
+        <term><command>curl-config</command></term>
+        <listitem>
+          <para>
+            prints information about the last compile, like libraries
+            linked to and prefix setting.
+          </para>
+          <indexterm zone="ch-system-curl curl-config">
+            <primary sortas="b-curl-config">curl-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libcurl">
+        <term><filename class="libraryfile">libcurl.so</filename></term>
+        <listitem>
+          <para>
+            provides the API functions required by
+            <command>curl</command> and other programs.
+          </para>
+          <indexterm zone="ch-system-curl libcurl">
+            <primary sortas="c-libcurl">libcurl.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/dejagnu.xml lfs-pacman-2025-03-26/chapter08/dejagnu.xml
--- lfs-git-2025-03-26/chapter08/dejagnu.xml	2025-03-25 18:44:40.096099032 -0500
+++ lfs-pacman-2025-03-26/chapter08/dejagnu.xml	2025-03-25 22:21:39.461828710 -0500
@@ -42,27 +42,80 @@
   <sect2 role="installation">
     <title>Installation of DejaGNU</title>
 
-    <para>The upstream recommends building DejaGNU in a dedicated build
-    directory:</para>
+    <para>Create the PKGBUILD for the DejaGNU package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">mkdir -v build
-cd       build</userinput></screen>
-
-    <para>Prepare DejaGNU for compilation:</para>
-
-<screen><userinput remap="configure">../configure --prefix=/usr
-makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
-makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install
-install -v -dm755  /usr/share/doc/dejagnu-&dejagnu-version;
-install -v -m644   doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-&dejagnu-version;</userinput></screen>
+<screen><userinput>mkdir /sources/dejagnu
+cd /sources/dejagnu
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="dejagnu"
+pkgver="&dejagnu-version;"
+pkgrel="&dejagnu-release;"
+pkgdesc="The DejaGnu package contains a framework for running test suites on GNU tools."
+arch=('x86'
+      'x86_64')
+url="&dejagnu-home;"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'expect')
+makedepends=('coreutils'
+             'diffutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+source=('&dejagnu-url;')
+md5sums=('&dejagnu-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+
+  # Upstream recommends a dedicated build directory
+  mkdir -v build
+  cd build
+
+  ../configure --prefix=/usr
+  makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
+  makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi
+}
+
+check() {
+  cd "${pkgname}-${pkgver}/build"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}/build"
+  make DESTDIR="${pkgdir}" install
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -vm644  doc/dejagnu.{html,txt} \
+                  "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp dejagnu-&dejagnu-version;-&dejagnu-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/dejagnu-&dejagnu-version;-&dejagnu-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the DejaGNU package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S dejagnu --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/dejagnu
+cp PKGBUILD /srv/pacman/source/LFS/dejagnu
+cd /sources
+rm -rf dejagnu</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/diffutils.xml lfs-pacman-2025-03-26/chapter08/diffutils.xml
--- lfs-git-2025-03-26/chapter08/diffutils.xml	2025-03-25 18:44:40.096104512 -0500
+++ lfs-pacman-2025-03-26/chapter08/diffutils.xml	2025-03-25 22:21:39.461701351 -0500
@@ -41,21 +41,75 @@
   <sect2 role="installation">
     <title>Installation of Diffutils</title>
 
-    <para>Prepare Diffutils for compilation:</para>
+    <para>Create the PKGBUILD for the Diffutils package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/diffutils
+cd /sources/diffutils
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="diffutils"
+pkgver="&diffutils-version;"
+pkgrel="&diffutils-release;"
+pkgdesc="The Diffutils package contains programs that show the differences between files or directories."
+arch=('x86'
+      'x86_64')
+url="&diffutils-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('perl')
+source=('&diffutils-url;')
+md5sums=('&diffutils-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp diffutils-&diffutils-version;-&diffutils-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/diffutils-&diffutils-version;-&diffutils-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Diffutils package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S diffutils --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/diffutils
+cp PKGBUILD /srv/pacman/source/LFS/diffutils
+cd /sources
+rm -rf diffutils</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/docbook-xml.xml lfs-pacman-2025-03-26/chapter08/docbook-xml.xml
--- lfs-git-2025-03-26/chapter08/docbook-xml.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/docbook-xml.xml	2025-03-25 22:21:39.462052609 -0500
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-docbook-xml" role="wrap">
+  <?dbhtml filename="docbook-xml.html"?>
+
+  <sect1info condition="script">
+    <productname>docbook-xml</productname>
+    <productnumber>&docbook-xml-version;</productnumber>
+    <address>&docbook-xml-url;</address>
+  </sect1info>
+
+  <title>DocBook-XML-&docbook-xml-version;</title>
+
+  <indexterm zone="ch-system-docbook-xml">
+    <primary sortas="a-Docbook-45-XML">Docbook-4.5 XML DTD</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>DocBook-4.5 XML DTD</application>-&docbook-xml-version;
+      package contains document type definitions for verification of XML data
+      files against the DocBook rule set. These are useful for structuring
+      books and software documentation to a standard allowing you to utilize
+      transformations already written for that standard.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&docbook-xml-fin-sbu;</seg>
+        <seg>&docbook-xml-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of DocBook-4.5 XML DTD</title>
+
+    <para>Create the PKGBUILD for the docbook-xml package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/docbook-xml
+cd /sources/docbook-xml
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="docbook-xml"
+pkgver="&docbook-xml-version;"
+pkgrel="&docbook-xml-release;"
+pkgdesc="The DocBook-4.5 XML DTD-4.5 package contains document type definitions for verification of XML data files against the DocBook rule set."
+arch=('any')
+url="&docbook-xml-home;"
+license=('MIT')
+groups=('core')
+install=docbook-xml.install
+depends=('libxml2')
+makedepends=('bash'
+             'coreutils'
+             'libarchive'
+             'unzip')
+source=('&docbook-xml-url;')
+md5sums=('&docbook-xml-md5;')
+
+package(){
+  # No need to change directory, it just unzips in ${srcdir}
+  install -vdm755 "${pkgdir}/usr/share/xml/docbook/xml-dtd-4.5"
+  install -vdm755 "${pkgdir}/etc/xml"
+  cp -v -af --no-preserve=ownership docbook.cat *.dtd ent/ *.mod \
+      "${pkgdir}/usr/share/xml/docbook/xml-dtd-4.5"
+
+  # Create (or update) and populate the /etc/xml/docbook catalog
+  xmlcatalog --noout --create "${pkgdir}/etc/xml/docbook"
+  xmlcatalog --noout --add "public" \
+      "-//OASIS//DTD DocBook XML V4.5//EN" \
+      "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \
+      "${pkgdir}/etc/xml/docbook"
+  xmlcatalog --noout --add "public" \
+      "-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "public" \
+      "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "rewriteSystem" \
+      "http://www.oasis-open.org/docbook/xml/4.5" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5" \
+      "${pkgdir}/etc/xml/docbook"
+xmlcatalog --noout --add "rewriteURI" \
+      "http://www.oasis-open.org/docbook/xml/4.5" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5" \
+      "${pkgdir}/etc/xml/docbook"
+
+  # The above installation creates the files and updates the catalogs.
+  # In order to utilize DocBook XML DTD V4.5 when any version 4.x is
+  # requested in the System Identifier, you need to add additional
+  # statements to the catalog files:
+  for DTDVERSION in 4.1.2 4.2 4.3 4.4
+  do
+    xmlcatalog --noout --add "public" \
+      "-//OASIS//DTD DocBook XML V$DTDVERSION//EN" \
+      "http://www.oasis-open.org/docbook/xml/$DTDVERSION/docbookx.dtd" \
+      "${pkgdir}/etc/xml/docbook"
+    xmlcatalog --noout --add "rewriteSystem" \
+      "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5" \
+      "${pkgdir}/etc/xml/docbook"
+    xmlcatalog --noout --add "rewriteURI" \
+      "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
+      "file:///usr/share/xml/docbook/xml-dtd-4.5" \
+      "${pkgdir}/etc/xml/docbook"
+    xmlcatalog --noout --add "delegateSystem" \
+      "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
+      "file:///etc/xml/docbook" \
+      "${pkgdir}/etc/xml/catalog"
+    xmlcatalog --noout --add "delegateURI" \
+      "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
+      "file:///etc/xml/docbook" \
+      "${pkgdir}/etc/xml/catalog"
+  done
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>Create an install-script to handle removal, install, and
+    upgrades:</para>
+
+<screen><userinput>cat &gt; docbook-xml.install &lt;&lt; "REALEOF"
+<literal># docbook-xml.install
+
+post_install() {
+  if [ -e etc/xml/catalog.preserve ]; then
+    mv etc/xml/catalog.preserve etc/xml/catalog
+  elif [ ! -e etc/xml/catalog ]; then
+    xmlcatalog --noout --create etc/xml/catalog
+  fi
+  xmlcatalog --noout --add "delegatePublic" \
+    "-//OASIS//ENTITIES DocBook XML" \
+    "file:///etc/xml/docbook" \
+    etc/xml/catalog
+  xmlcatalog --noout --add "delegatePublic" \
+    "-//OASIS//DTD DocBook XML" \
+    "file:///etc/xml/docbook" \
+    etc/xml/catalog
+  xmlcatalog --noout --add "delegateSystem" \
+    "http://www.oasis-open.org/docbook/" \
+    "file:///etc/xml/docbook" \
+    etc/xml/catalog
+  xmlcatalog --noout --add "delegateURI" \
+    "http://www.oasis-open.org/docbook/" \
+    "file:///etc/xml/docbook" \
+    etc/xml/catalog
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+pre_upgrade() {
+  if [ $(vercmp $2 4.5) -lt 0 ]; then
+    xmlcatalog --del "file:///etc/xml/docbook" etc/xml/catalog > etc/xml/catalog.preserve
+  fi
+}
+
+post_upgrade() {
+  if [ $(vercmp $2 4.5) -ge 0 ]; then
+    post_remove
+  fi
+  post_install
+}
+
+post_remove() {
+  xmlcatalog --noout --del file:///etc/xml/docbook etc/xml/catalog
+}
+</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp docbook-xml-&docbook-xml-version;-&docbook-xml-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/docbook-xml-&docbook-xml-version;-&docbook-xml-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the docbook-xml package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S docbook-xml --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/docbook-xml
+cp PKGBUILD /srv/pacman/source/LFS/docbook-xml
+cd /sources
+rm -rf docbook-xml</userinput></screen>
+
+    <sect3 id="docbook-config">
+      <title>Config Files</title>
+
+      <para>
+        <filename>/etc/xml/catalog</filename> and
+        <filename>/etc/xml/docbook</filename>
+      </para>
+
+      <indexterm zone="ch-system-docbook-xml docbook-config">
+        <primary sortas="e-etc-xml-docbook">/etc/xml/docbook</primary>
+      </indexterm>
+
+      <indexterm zone="ch-system-docbook-xml docbook-config">
+        <primary sortas="e-etc-xml-catalog">/etc/xml/catalog</primary>
+      </indexterm>
+
+      <para>In a packaged system, these files should be managed by the packager
+      as per our PKGBUILD and docbook-xml.install files above.</para>
+
+    </sect3>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Files</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>DTD, MOD and ENT files</seg>
+        <seg>/etc/xml and /usr/share/xml/docbook/xml-dtd-&docbook-xml-version;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="DTD-files">
+        <term><filename>DTD files</filename></term>
+        <listitem>
+          <para>
+            contain a document type definition which defines the element
+            types and the attribute lists that can be used in the corresponding
+            <filename>XML</filename> files.
+          </para>
+          <indexterm zone="ch-system-docbook-xml DTD-files">
+            <primary sortas="g-XML-DTD-files">XML DTD Files</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="MOD-files">
+        <term><filename>MOD files</filename></term>
+        <listitem>
+          <para>
+            contain components of the document type definition that
+            are sourced into the <filename>DTD</filename> files.
+          </para>
+          <indexterm zone="ch-system-docbook-xml MOD-files">
+            <primary sortas="g-XML-MOD-files">XML MOD files</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="ENT-files">
+        <term><filename>ENT files</filename></term>
+        <listitem>
+          <para>
+            contain lists of named character entities allowed in HTML.
+          </para>
+          <indexterm zone="ch-system-docbook-xml ENT-files">
+            <primary sortas="g-XML-ENT-files">XML entity files</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/docbook-xsl-nons.xml lfs-pacman-2025-03-26/chapter08/docbook-xsl-nons.xml
--- lfs-git-2025-03-26/chapter08/docbook-xsl-nons.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/docbook-xsl-nons.xml	2025-03-25 22:21:39.461763591 -0500
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-docbook-xsl" role="wrap">
+  <?dbhtml filename="docbook-xsl.html"?>
+
+  <sect1info condition="script">
+    <productname>docbook-xsl</productname>
+    <productnumber>&docbook-xsl-nons-version;</productnumber>
+    <address>&docbook-xsl-nons-url;</address>
+  </sect1info>
+
+  <title>DocBook XSL Stylesheets (No Namespace) &docbook-xsl-nons-version;</title>
+
+  <indexterm zone="ch-system-docbook-xsl">
+    <primary sortas="a-DocBook-XSL">DocBook-XSL-NoNS</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>DocBook XSL Stylesheets (No Namespace)</application>
+      package contains XSL stylesheets. These are useful for
+      performing transformations on XML DocBook files.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&docbook-xsl-nons-fin-sbu;</seg>
+        <seg>&docbook-xsl-nons-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of DocBook XSL Stylesheets (No Namespace)</title>
+
+
+    <para>Create the PKGBUILD for the Docbook XLS Stylesheets (No Namespace) package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/docbook-xsl-nons
+cd /sources/docbook-xsl-nons
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="docbook-xsl-nons"
+pkgver="&docbook-xsl-nons-version;"
+pkgrel="&docbook-xsl-nons-release;"
+pkgdesc="The DocBook XSL Stylesheets (No Namespace) package contains XSL stylesheets."
+arch=('any')
+url="&docbook-xsl-nons-home;"
+license=(custom)
+install=docbook-xsl-nons.install
+groups=('core')
+depends=('docbook-xml'
+         'libxml2'
+         'libxslt')
+source=('&docbook-xsl-nons-url;'
+        '&patches-root;&docbook-xsl-nons-stack-fix-patch;'
+        '&docbook-xsl-nons-doc-url;')
+md5sums=('&docbook-xsl-nons-md5;'
+         '&docbook-xsl-nons-stack-fix-patch-md5;'
+         '&docbook-xsl-nons-doc-md5;')
+noextract=("docbook-xsl-doc-${pkgver}.tar.bz2")
+
+prepare() {
+  cd "${pkgname}-${pkgver}"
+  # Fix a problem that causes stack overflows when doing recursion
+  patch -Np1 -i "${srcdir}/${pkgname}-${pkgver}-stack_fix-1.patch"
+  # Extract the documentation
+  tar -xf "${srcdir}/docbook-xsl-doc-${pkgver}.tar.bz2" --strip-components=1
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  install -vdm755 "${pkgdir}/usr/share/xml/docbook/${pkgname}-${pkgver}"
+  cp -Rv VERSION assembly common eclipse epub epub3 extensions fo        \
+         highlighting html htmlhelp images javahelp lib manpages params  \
+         profiling roundtrip slides template tests tools webhelp website \
+         xhtml xhtml-1_1 xhtml5                                          \
+         "${pkgdir}/usr/share/xml/docbook/${pkgname}-${pkgver}"
+
+  ln -sfv VERSION "${pkgdir}/usr/share/xml/docbook/${pkgname}-${pkgver}/VERSION.xls"
+
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -vm644 README \
+                    "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}/README.txt"
+  install -vm644  RELEASE-NOTES* NEWS* \
+                    "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+
+  cp -v -R doc/* "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>Create the docbook-xsl-nons.install script which will handle
+    post-install, upgrade, and removal tasks:</para>
+
+<screen><userinput>cat &gt; docbook-xsl-nons.install &lt;&lt; "REALEOF"
+<literal># docbook-xsl-nons.install
+
+_xmlcatalog() {
+  xmlcatalog --noout "$@" etc/xml/catalog
+}
+
+post_install() {
+  [[ -f etc/xml/catalog ]] || _xmlcatalog --create
+
+  local new=${1%-*}
+
+  _xmlcatalog --add "rewriteSystem" \
+    "https://cdn.docbook.org/release/xsl-nons/$new" \
+    "/usr/share/xml/docbook/xsl-stylesheets-nons-$new"
+
+  _xmlcatalog --add "rewriteURI" \
+    "https://cdn.docbook.org/release/xsl-nons/$new" \
+    "/usr/share/xml/docbook/xsl-stylesheets-nons-$new"
+
+  _xmlcatalog --add "rewriteSystem" \
+    "https://cdn.docbook.org/release/xsl-nons/current" \
+    "/usr/share/xml/docbook/xsl-stylesheets-nons-$new"
+
+  _xmlcatalog --add "rewriteURI" \
+    "https://cdn.docbook.org/release/xsl-nons/current" \
+    "/usr/share/xml/docbook/xsl-stylesheets-nons-$new"
+
+  _xmlcatalog --add "rewriteSystem" \
+    "http://docbook.sourceforge.net/release/xsl/current" \
+    "/usr/share/xml/docbook/xsl-stylesheets-nons-$new"
+
+  _xmlcatalog --add "rewriteURI" \
+    "http://docbook.sourceforge.net/release/xsl/current" \
+    "/usr/share/xml/docbook/xsl-stylesheets-nons-$new"
+}
+
+post_upgrade() {
+  post_remove $2
+  post_install $1
+}
+
+post_remove() {
+  local old=${1%-*}
+  _xmlcatalog --del /usr/share/xml/docbook/xsl-stylesheets-nons-$old
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp docbook-xsl-nons-&docbook-xsl-nons-version;-&docbook-xsl-nons-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/docbook-xsl-nons-&docbook-xsl-nons-version;-&docbook-xsl-nons-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Docbook XLS Stylesheets (No Namespace) package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S docbook-xsl-nons --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/docbook-xsl-nons
+cp PKGBUILD /srv/pacman/source/LFS/docbook-xsl-nons
+cd /sources
+rm -rf docbook-xsl-nons</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="configuration">
+    <title>Configuring DocBook XSL Stylesheets</title>
+
+    <sect3 id="docbook-xsl-config">
+      <title>Config Files</title>
+
+      <para>
+        <filename>/etc/xml/catalog</filename>
+      </para>
+
+      <indexterm zone="ch-system-docbook-xsl docbook-xsl-config">
+        <primary sortas="e-etc-xml-catalog">/etc/xml/catalog</primary>
+      </indexterm>
+
+    </sect3>
+
+    <sect3>
+      <title>Configuration Information</title>
+
+      <para>
+	As per other cases in this variant of LFS, let the package manager
+	handle updates to the XML catalog files.
+      </para>
+
+    </sect3>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Files</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>/usr/share/xml/docbook/xsl-stylesheets-&docbook-xsl-nons-version;/*/*.xsl</seg>
+        <seg>/usr/share/xml/docbook/xsl-stylesheets-&docbook-xsl-nons-version; and
+        /usr/share/doc/docbook-xsl-&docbook-xsl-nons-version;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="xsl-stylesheets">
+        <term><filename>XSL Stylesheets</filename></term>
+        <listitem>
+          <para>
+            are used for performing transformations on XML files.
+          </para>
+          <indexterm zone="ch-system-docbook-xsl xsl-stylesheets">
+            <primary sortas="g-XSL-Stylesheets">XSL Stylesheets</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/e2fsprogs.xml lfs-pacman-2025-03-26/chapter08/e2fsprogs.xml
--- lfs-git-2025-03-26/chapter08/e2fsprogs.xml	2025-03-25 18:44:40.096110522 -0500
+++ lfs-pacman-2025-03-26/chapter08/e2fsprogs.xml	2025-03-25 22:21:39.461371322 -0500
@@ -44,21 +44,87 @@
   <sect2 role="installation">
     <title>Installation of E2fsprogs</title>
 
-    <para>The E2fsprogs documentation recommends that the package be built in
-    a subdirectory of the source tree: </para>
-
-<screen><userinput remap="pre">mkdir -v build
-cd       build</userinput></screen>
-
-    <para>Prepare E2fsprogs for compilation:</para>
+    <para>Create the PKGBUILD for the E2fsprogs package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">../configure --prefix=/usr           \
-             --sysconfdir=/etc       \
-             --enable-elf-shlibs     \
-             --disable-libblkid      \
-             --disable-libuuid       \
-             --disable-uuidd         \
-             --disable-fsck</userinput></screen>
+<screen><userinput>mkdir /sources/e2fsprogs
+cd /sources/e2fsprogs
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="e2fsprogs"
+pkgver="&e2fsprogs-version;"
+pkgrel="&e2fsprogs-release;"
+pkgdesc="The e2fsprogs package contains the utilities for handling the ext2, ext3, and ext4 file systems."
+arch=('x86'
+      'x86_64')
+url="&e2fsprogs-home;"
+license=('custom'
+         'GPLv2'
+         'MIT')
+groups=('core')
+depends=('glibc'
+         'util-linux'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'gzip'
+             'make'
+             'pkgconf'
+             'sed'
+             'texinfo')
+checkdepends=('procps-ng'
+              'psmisc')
+backup=('etc/mke2fs.conf')
+source=('&e2fsprogs-url;')
+md5sums=('&e2fsprogs-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  # Create a build directory
+  mkdir -v build
+}
+
+build(){
+  cd "${pkgname}-${pkgver}/build"
+  ../configure --prefix=/usr           \
+               --sysconfdir=/etc       \
+               --enable-elf-shlibs     \
+               --disable-libblkid      \
+               --disable-libuuid       \
+               --disable-uuidd         \
+               --disable-fsck
+make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}/build"
+  # One test named m_assume_storage_prezeroed is known to fail. Another test
+  # named m_rootdir_acl is known to fail if the file system used for the LFS
+  # system is not ext4.
+  make -k check || true
+}
+
+package(){
+  cd "${pkgname}-${pkgver}/build"
+    make DESTDIR="${pkgdir}" install
+
+  # Remove static libraries
+  rm -fv "${pkgdir}"/usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
+
+  # Use uncompressed info page in package
+  gunzip -v "${pkgdir}/usr/share/info/libext2fs.info.gz"
+
+  # Build additonal info doc
+  makeinfo -o    doc/com_err.info ../lib/et/com_err.texinfo
+  install -vm644 doc/com_err.info "${pkgdir}/usr/share/info"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -85,58 +151,26 @@ cd       build</userinput></screen>
 
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To run the tests, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
+    &pacman-build-add;
 
-    <!-- https://github.com/tytso/e2fsprogs/issues/134
-         https://github.com/tytso/e2fsprogs/issues/158 -->
-    <para>One test named <filename>m_assume_storage_prezeroed</filename>
-    is known to fail.  Another test named <filename>m_rootdir_acl</filename>
-    is known to fail if the file system used for the LFS system is not
-    <systemitem class='filesystem'>ext4</systemitem>.</para>
+<screen><userinput>cp e2fsprogs-&e2fsprogs-version;-&e2fsprogs-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/e2fsprogs-&e2fsprogs-version;-&e2fsprogs-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<!-- This is a ridiculous amount now! And is it still true?
-     Does not appear to be true for version 1.46.3.  Time with tests
-     26 seconds with tests (With lots of cores and ram and an ssd disk).
+    <para>Update the local cache and install the E2fsprogs package:</para>
 
-    <para>One of the e2fsprogs tests will attempt to allocate 256 MB of memory.
-    If you do not have significantly more RAM than this, be sure to enable
-    sufficient swap space for the test. See <xref
-    linkend="ch-partitioning-creatingfilesystem"/> and <xref
-    linkend="ch-partitioning-mounting"/>
-    for details on creating and enabling swap space.</para>
-
-    <para>On a spinning disk, the tests take a little more than 4 SBUs. They
-    can be much shorter on an SSD (down to about 1.5 SBUs).</para>
--->
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>Remove useless static libraries:</para>
-
-<screen><userinput remap="install">rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a</userinput></screen>
-
-    <para>This package installs a gzipped
-    <filename class="extension">.info</filename> file but doesn't update the
-    system-wide <filename>dir</filename> file. Unzip this file and then update
-    the system <filename>dir</filename> file using the following
-    commands:</para>
+<screen><userinput>pacman -Syu
+pacman -S e2fsprogs --overwrite \* -dd --noconfirm</userinput></screen>
 
-<screen><userinput remap="install">gunzip -v /usr/share/info/libext2fs.info.gz
-install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info</userinput></screen>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-    <para>If desired, create and install some additional documentation by
-    issuing the following commands:</para>
+<screen><userinput>mkdir /srv/pacman/source/LFS/e2fsprogs
+cp PKGBUILD /srv/pacman/source/LFS/e2fsprogs
+cd /sources
+rm -rf e2fsprogs</userinput></screen>
 
-<screen><userinput remap="install">makeinfo -o      doc/com_err.info ../lib/et/com_err.texinfo
-install -v -m644 doc/com_err.info /usr/share/info
-install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info</userinput></screen>
   </sect2>
 
   <sect2 id="conf-e2fsprogs" role="configuration">
diff -Naurp lfs-git-2025-03-26/chapter08/efibootmgr.xml lfs-pacman-2025-03-26/chapter08/efibootmgr.xml
--- lfs-git-2025-03-26/chapter08/efibootmgr.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/efibootmgr.xml	2025-03-25 22:21:39.460898784 -0500
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-efibootmgr" role="wrap">
+  <?dbhtml filename="efibootmgr.html"?>
+
+  <sect1info condition="script">
+    <productname>efibootmgr</productname>
+    <productnumber>&efibootmgr-version;</productnumber>
+    <address>&efibootmgr-url;</address>
+  </sect1info>
+
+  <title>efibootmgr-&efibootmgr-version;</title>
+
+  <indexterm zone="ch-system-efibootmgr">
+    <primary sortas="a-efibootmgr">efibootmgr</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The efibootmgr package contains a Linux user-space application to
+    modify the EFI Boot Manager.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&efibootmgr-fin-sbu;</seg>
+        <seg>&efibootmgr-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of efibootmgr</title>
+
+      <para>Create the PKGBUILD for the efibootmgr package with the following
+      commands:</para>
+
+<screen><userinput>mkdir /sources/efibootmgr
+cd /sources/efibootmgr
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="efibootmgr"
+pkgver="&efibootmgr-version;"
+pkgrel="&efibootmgr-release;"
+pkgdesc="A Linux user-space application to modify the EFI Boot Manager."
+arch=('x86'
+      'x86_64')
+url="&efibootmgr-home;"
+license=('GPLv2')
+groups=('core')
+depends=('efivar'
+         'glibc'
+         'popt'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make')
+source=('&efibootmgr-url;')
+md5sums=('&efibootmgr-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  make EFIDIR=LFS EFI_LOADER=grubx64.efi
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install EFIDIR=LFS
+}</literal>
+REALEOF</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the make options:</title>
+
+      <varlistentry>
+        <term><parameter>EFIDIR=LFS</parameter></term>
+        <listitem>
+	  <para>This option specifies the distro's subdirectory name under
+          <filename class="directory">/boot/efi/EFI</filename>. The build
+	  system of this package needs it to be set explicitly.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>EFI_LOADER=grubx64.efi</parameter></term>
+        <listitem>
+	  <para>This option specifies the name of the default EFI boot loader.
+	  It is set to match the EFI boot loader provided by GRUB.</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    &pacman-build-add;
+
+<screen><userinput>cp efibootmgr-&efibootmgr-version;-&efibootmgr-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/efibootmgr-&efibootmgr-version;-&efibootmgr-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the efibootmgr package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S efibootmgr --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/efibootmgr
+cp PKGBUILD /srv/pacman/source/LFS/efibootmgr
+cd /sources
+rm -rf efibootmgr</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-efibootmgr" role="content">
+    <title>Contents of efibootmgr</title>
+
+    <segmentedlist>
+      <segtitle>Installed program</segtitle>
+
+      <seglistitem>
+        <seg>
+          efibootdump and efibootmgr
+        </seg>
+      </seglistitem>
+
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="efibootdump">
+        <term><command>efibootdump</command></term>
+        <listitem>
+          <para>is a tool to display individual UEFI boot options, from a file
+          or an UEFI variable</para>
+          <indexterm zone="ch-system-efibootmgr efibootdump">
+            <primary sortas="b-efibootdump">efibootdump</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="efibootmgr">
+        <term><command>efibootmgr</command></term>
+        <listitem>
+          <para>is a tool to manipulate the UEFI Boot Manager</para>
+          <indexterm zone="ch-system-efibootmgr efibootmgr">
+            <primary sortas="b-efibootmgr">efibootmgr</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/efivar.xml lfs-pacman-2025-03-26/chapter08/efivar.xml
--- lfs-git-2025-03-26/chapter08/efivar.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/efivar.xml	2025-03-25 22:21:39.461737701 -0500
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-efivar" role="wrap">
+  <?dbhtml filename="efivar.html"?>
+
+  <sect1info condition="script">
+    <productname>efivar</productname>
+    <productnumber>&efivar-version;</productnumber>
+    <address>&efivar-url;</address>
+  </sect1info>
+
+  <title>efivar-&efivar-version;</title>
+
+  <indexterm zone="ch-system-efivar">
+    <primary sortas="a-efivar">efivar</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The efivar package provides tools and libraries to manipulate EFI variables.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&efivar-fin-sbu;</seg>
+        <seg>&efivar-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of efivar</title>
+
+      <para>Create the PKGBUILD for the efivar package with the following
+      commands:</para>
+
+<screen><userinput>mkdir /sources/efivar
+cd /sources/efivar
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="efivar"
+pkgver="&efivar-version;"
+pkgrel="&efivar-release;"
+pkgdesc="The efivar package provides tools and libraries to manipulate EFI variables."
+arch=('x86'
+      'x86_64')
+url="&efivar-home;"
+license=('LGPLv2.1')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make')
+optdepends=('mandoc')
+source=('&efivar-url;')
+md5sums=('&efivar-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  # Set to 1 if mandoc is installed
+  make ENABLE_DOCS=0
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install ENABLE_DOCS=0 LIBDIR=/usr/lib
+
+  # Install shipped man pages if mandoc is not installed
+  install -vDm644 docs/efivar.1 "${pkgdir}/usr/share/man/man1"
+  install -vDm644 docs/*.3      "${pkgdir}/usr/share/man/man3"
+}</literal>
+REALEOF</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the make options:</title>
+
+      <varlistentry>
+        <term><parameter>ENABLE_DOCS=0</parameter></term>
+        <listitem>
+	  <para>Disable the generation of man pages, in order to allow building
+	  this package without mandoc installed.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>LIBDIR=/usr/lib</parameter></term>
+        <listitem>
+	  <para>This option overrides the default library directory of the package
+	  (/usr/lib64, which is not used by LFS).</para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+    &pacman-build-add;
+
+<screen><userinput>cp efivar-&efivar-version;-&efivar-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/efivar-&efivar-version;-&efivar-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the efivar package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S efivar --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/efivar
+cp PKGBUILD /srv/pacman/source/LFS/efivar
+cd /sources
+rm -rf efivar</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-efivar" role="content">
+    <title>Contents of efivar</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+      <segtitle>Installed libraries</segtitle>
+
+      <seglistitem>
+        <seg>
+          efisecdb and efivar
+        </seg>
+        <seg>
+          libefiboot.so, libefisec.so, and libefivar.so
+        </seg>
+      </seglistitem>
+
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="efisecdb">
+        <term><command>efisecdb</command></term>
+        <listitem>
+          <para>is a utility for managing UEFI signature lists</para>
+          <indexterm zone="ch-system-efivar efisecdb">
+            <primary sortas="b-efisecdb">efisecdb</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="efivar">
+        <term><command>efivar</command></term>
+        <listitem>
+          <para>is a tool to manipulate UEFI variables</para>
+          <indexterm zone="ch-system-efivar efivar">
+            <primary sortas="b-efivar">efivar</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+      
+      <varlistentry id="libefiboot">
+        <term><filename class="libraryfile">libefiboot</filename></term>
+        <listitem>
+          <para>is a library used by efibootmgr</para>
+          <indexterm zone="ch-system-efivar libefiboot">
+            <primary sortas="c-libefiboot">libefiboot</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libefisec">
+        <term><filename class="libraryfile">libefisec</filename></term>
+        <listitem>
+          <para>is a library for managing UEFI signature lists</para>
+          <indexterm zone="ch-system-efivar libefisec">
+            <primary sortas="c-libefisec">libefisec</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libefivar">
+        <term><filename class="libraryfile">libefivar</filename></term>
+        <listitem>
+          <para>is a library for the manipulation of EFI variables</para>
+          <indexterm zone="ch-system-efivar libefivar">
+            <primary sortas="c-libefivar">libefivar</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/expat.xml lfs-pacman-2025-03-26/chapter08/expat.xml
--- lfs-git-2025-03-26/chapter08/expat.xml	2025-03-25 18:44:40.096119462 -0500
+++ lfs-pacman-2025-03-26/chapter08/expat.xml	2025-03-25 22:21:39.461328463 -0500
@@ -41,27 +41,76 @@
   <sect2 role="installation">
     <title>Installation of Expat</title>
 
-    <para>Prepare Expat for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/expat-&expat-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Expat package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>If desired, install the documentation:</para>
-
-<screen><userinput remap="install">install -v -m644 doc/*.{html,css} /usr/share/doc/expat-&expat-version;</userinput></screen>
+<screen><userinput>mkdir /sources/expat
+cd /sources/expat
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="expat"
+pkgver="&expat-version;"
+pkgrel="&expat-release;"
+pkgdesc="The Expat package contains a stream oriented C library for parsing XML."
+arch=('x86'
+      'x86_64')
+url="&expat-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&expat-url;')
+md5sums=('&expat-md5;')
+
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --docdir=/usr/share/doc/expat-${pkgver}
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp expat-&expat-version;-&expat-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/expat-&expat-version;-&expat-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Expat package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S expat --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/expat
+cp PKGBUILD /srv/pacman/source/LFS/expat
+cd /sources
+rm -rf expat</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/expect.xml lfs-pacman-2025-03-26/chapter08/expect.xml
--- lfs-git-2025-03-26/chapter08/expect.xml	2025-03-25 18:44:40.096125262 -0500
+++ lfs-pacman-2025-03-26/chapter08/expect.xml	2025-03-25 22:21:39.460911534 -0500
@@ -67,18 +67,72 @@
     GDBM, and of course Expect itself) will fail catastrophically, and other
     subtle breakages may also happen.</para>
 
-    <para>Now, make some changes to allow the package with gcc-14.1 or later:</para>
+    <para>Create the PKGBUILD for the Expect package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">patch -Np1 -i ../expect-&expect-version;-gcc14-1.patch</userinput></screen>
-
-    <para>Prepare Expect for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr           \
-            --with-tcl=/usr/lib     \
-            --enable-shared         \
-            --disable-rpath         \
-            --mandir=/usr/share/man \
-            --with-tclinclude=/usr/include</userinput></screen>
+<screen><userinput>mkdir /sources/expect
+cd /sources/expect
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="expect"
+pkgver="&expect-version;"
+pkgrel="&expect-release;"
+pkgdesc="The Expect package contains tools for automating, via scripted dialogues, interactive applications."
+arch=('x86'
+      'x86_64')
+url="&expect-home;"
+license=('PD')
+groups=('core')
+depends=('glibc'
+         'tcl')
+optdepends=('tk')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'grep'
+             'make'
+             'patch'
+             'sed')
+source=('&expect-url;'
+        '&patches-root;&expect-gcc14-patch;)
+md5sums=('&expect-md5;'
+         '&expect-gcc14-patch-md5;)
+
+prepare(){
+  cd "${pkgname}${pkgver}"
+  # Allow the package with gcc-14.1 or later
+  patch -Np1 -i "../${pkgname}-${pkgver}-gcc14-1.patch"
+}
+
+build() {
+  # Remove -Werror from CFLAGS
+  CFLAGS=${CFLAGS/-Werror=format-security/}
+
+  cd "${pkgname}${pkgver}"
+  ./configure --prefix=/usr           \
+              --with-tcl=/usr/lib     \
+              --enable-shared         \
+              --disable-rpath         \
+              --disable-werror        \
+              --mandir=/usr/share/man \
+              --with-tclinclude=/usr/include
+make
+}
+
+check() {
+  cd "${pkgname}${pkgver}"
+  make test
+}
+
+package() {
+  cd "${pkgname}${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  ln -svf "${pkgname}${pkgver}/lib${pkgname}${pkgver}.so" "${pkgdir}/usr/lib"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -95,25 +149,32 @@
       <varlistentry>
         <term><parameter>--with-tclinclude=/usr/include</parameter></term>
         <listitem>
-          <para>This explicitly tells Expect where to find Tcl's internal
+          <para>This explicitly tells Expect where to find Expect's internal
           headers.</para>
         </listitem>
       </varlistentry>
 
     </variablelist>
 
-    <para>Build the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp expect-&expect-version;-&expect-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/expect-&expect-version;-&expect-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Expect package:</para>
 
-<screen><userinput remap="test">make test</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S expect --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install
-ln -svf expect&expect-version;/libexpect&expect-version;.so /usr/lib</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/expect
+cp PKGBUILD /srv/pacman/source/LFS/expect
+cd /sources
+rm -rf expect</userinput></screen>
 
   </sect2>
 
@@ -149,8 +210,8 @@ ln -svf expect&expect-version;/libexpect
       <varlistentry id="libexpect">
         <term><filename class="libraryfile">libexpect-&expect-version;.so</filename></term>
         <listitem>
-          <para>Contains functions that allow Expect to be used as a Tcl
-          extension or to be used directly from C or C++ (without Tcl)</para>
+          <para>Contains functions that allow Expect to be used as a Expect
+          extension or to be used directly from C or C++ (without Expect)</para>
           <indexterm zone="ch-system-expect libexpect">
             <primary sortas="c-libexpect-&expect-version;">libexpect-&expect-version;</primary>
           </indexterm>
diff -Naurp lfs-git-2025-03-26/chapter08/fakeroot.xml lfs-pacman-2025-03-26/chapter08/fakeroot.xml
--- lfs-git-2025-03-26/chapter08/fakeroot.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/fakeroot.xml	2025-03-25 22:21:39.461781401 -0500
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-fakeroot" role="wrap">
+  <?dbhtml filename="fakeroot.html"?>
+
+  <sect1info condition="script">
+    <productname>FakeRoot</productname>
+    <productnumber>&fakeroot-version;</productnumber>
+    <address>&fakeroot-url;</address>
+  </sect1info>
+
+  <title>FakeRoot-&fakeroot-version;</title>
+
+  <indexterm zone="ch-system-fakeroot">
+    <primary sortas="a-FakeRoot">FakeRoot</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The FakeRoot package contains programs for simulating superuser
+    privileges.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&fakeroot-fin-sbu;</seg>
+        <seg>&fakeroot-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of FakeRoot</title>
+
+    <para>Create the PKGBUILD for the FakeRoot package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/fakeroot
+cd /sources/fakeroot
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="fakeroot"
+pkgver="&fakeroot-version;"
+pkgrel="&fakeroot-release;"
+pkgdesc="The fakeroot package provides a tool for simulating superuser privileges."
+arch=('x86'
+      'x86_64')
+url="&fakeroot-home;"
+license=('GPL')
+groups=('core')
+depends=('bash'
+         'gcc'
+         'glibc'
+         'sed'
+         'util-linux')
+makedepends=('autoconf'
+             'automake'
+             'm4'
+             'make'
+             'patch')
+source=('&fakeroot-url;')
+md5sums=('&fakeroot-md5;')
+
+prepare()
+  "cd ${pkgname}-upstream-${pkgver}"
+  autoreconf -fiv
+}
+
+build(){
+  "cd ${pkgname}-upstream-${pkgver}"
+  ./configure --prefix=/usr     \
+              --libdir=/usr/lib \
+              --disable-static  \
+              --with-ipc=sysv
+  make
+}
+
+package(){
+  cd "${pkgname}-upstream-${pkgver}"
+  make DESTDIR=${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp fakeroot-&fakeroot-version;-&fakeroot-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/fakeroot-&fakeroot-version;-&fakeroot-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Fakeroot package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S fakeroot --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/fakeroot
+cp PKGBUILD /srv/pacman/source/LFS/fakeroot
+cd /sources
+rm -rf fakeroot</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-fakeroot" role="content">
+    <title>Contents of FakeRoot</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+      <segtitle>Installed library</segtitle>
+
+      <seglistitem>
+        <seg>faked and fakeroot</seg>
+        <seg>libfakeroot.so</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="faked">
+        <term><command>faked</command></term>
+        <listitem>
+          <para>is a daemon that remembers fake ownership/permissions of files
+          manipulated by fakeroot processes.</para>
+          <indexterm zone="ch-system-fakeroot faked">
+            <primary sortas="b-faked">faked</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="fakeroot">
+        <term><command>fakeroot</command></term>
+        <listitem>
+          <para>runs a command in an environment faking root privileges for
+          file manipulation.</para>
+          <indexterm zone="ch-system-fakeroot fakeroot">
+            <primary sortas="b-fakeroot">fakeroot</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libfakeroot">
+        <term><filename class="libraryfile">libfakeroot.so</filename></term>
+        <listitem>
+          <para>is the primary fakeroot library.</para>
+          <indexterm zone="ch-system-fakeroot libfakeroot">
+            <primary sortas="c-libfakeroot">libfakeroot.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/file.xml lfs-pacman-2025-03-26/chapter08/file.xml
--- lfs-git-2025-03-26/chapter08/file.xml	2025-03-25 18:44:40.096131892 -0500
+++ lfs-pacman-2025-03-26/chapter08/file.xml	2025-03-25 22:21:39.461836430 -0500
@@ -43,19 +43,77 @@
 
     <para>Prepare File for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+    <para>Create the PKGBUILD for the File package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/file
+cd /sources/file
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="file"
+pkgver="&file-version;"
+pkgrel="&file-release;"
+pkgdesc="The File package contains a utility for determining the type of a given file or files."
+arch=('x86'
+      'x86_64')
+url="&file-home;"
+groups=('core')
+license=('BSD3C'
+         'custom')
+depends=('bzip2'
+         'glibc'
+         'xz'
+         'zlib')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+optdepends=('libseccomp')
+source=('&file-url;')
+md5sums=('&file-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp file-&file-version;-&file-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/file-&file-version;-&file-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the File package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S file --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/file
+cp PKGBUILD /srv/pacman/source/LFS/file
+cd /sources
+rm -rf file</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/findutils.xml lfs-pacman-2025-03-26/chapter08/findutils.xml
--- lfs-git-2025-03-26/chapter08/findutils.xml	2025-03-25 18:44:40.096137992 -0500
+++ lfs-pacman-2025-03-26/chapter08/findutils.xml	2025-03-25 22:21:39.460780975 -0500
@@ -45,15 +45,56 @@
   <sect2 role="installation">
     <title>Installation of Findutils</title>
 
-    <para>Prepare Findutils for compilation:</para>
+    <para>Create the PKGBUILD for the Findutils package with the following
+    commands:</para>
 
-<!-- no longer needed with gcc13
-<screen><userinput remap="configure">case $(uname -m) in
-    i?86)   TIME_T_32_BIT_OK=yes ./configure - -prefix=/usr - -localstatedir=/var/lib/locate ;;
-    x86_64) ./configure - -prefix=/usr - -localstatedir=/var/lib/locate ;;
-esac</userinput></screen>
--->
-    <screen><userinput remap="configure">./configure --prefix=/usr --localstatedir=/var/lib/locate</userinput></screen>
+<screen><userinput>mkdir /sources/findutils
+cd /sources/findutils
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="findutils"
+pkgver="&findutils-version;"
+pkgrel="&findutils-release;"
+pkgdesc="The Findutils package contains programs to find files."
+arch=('x86'
+      'x86_64')
+url="&findutils-home;"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('dejagnu'
+              'diffutils'
+              'expect')
+source=('&findutils-url;')
+md5sums=('&findutils-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --localstatedir=/var/lib/locate
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -76,18 +117,25 @@ esac</userinput></screen>
 
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp findutils-&findutils-version;-&findutils-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/findutils-&findutils-version;-&findutils-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Findutils package:</para>
 
-<screen><userinput remap="test">chown -R tester .
-su tester -c "PATH=$PATH make check"</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S findutils --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/findutils
+cp PKGBUILD /srv/pacman/source/LFS/findutils
+cd /sources
+rm -rf findutils</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/flex.xml lfs-pacman-2025-03-26/chapter08/flex.xml
--- lfs-git-2025-03-26/chapter08/flex.xml	2025-03-25 18:44:40.096144682 -0500
+++ lfs-pacman-2025-03-26/chapter08/flex.xml	2025-03-25 22:21:39.461572231 -0500
@@ -41,43 +41,82 @@
   <sect2 role="installation">
     <title>Installation of Flex</title>
 
-<!--
-    <para>First, fix a problem introduced with glibc-2.26:</para>
+    <para>Create the PKGBUILD for the Flex package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">sed -i "/math.h/a #include &lt;malloc.h&gt;" src/flexdef.h</userinput></screen>
-
-    <para>The build procedure assumes the <application>help2man</application>
-    program is available to create a man page from the executable - -help option.
-    This is not present, so we use an environment variable to skip this process.
-    Now, prepare Flex for compilation:</para> -->
-
-    <para>Prepare Flex for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr \
-            --docdir=/usr/share/doc/flex-&flex-version; \
-            --disable-static</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>A few programs do not know about <command>flex</command> yet and
-    try to run its predecessor, <command>lex</command>. To support those
-    programs, create a symbolic link named <filename>lex</filename> that
-    runs <filename>flex</filename> in <command>lex</command> emulation
-    mode, and also create the man page of <command>lex</command> as a
-    symlink:</para>
-
-<screen><userinput remap="install">ln -sv flex   /usr/bin/lex
-ln -sv flex.1 /usr/share/man/man1/lex.1</userinput></screen>
+<screen><userinput>mkdir /sources/flex
+cd /sources/flex
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="flex"
+pkgver="&flex-version;"
+pkgrel="&flex-release;"
+pkgdesc="The Flex package contains a utility for generating programs that recognize patterns in text."
+arch=('x86'
+      'x86_64')
+url="&flex-home;"
+license=('BSD3C'
+         'custom')
+groups=('core')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'patch'
+             'sed'
+             'texinfo')
+depends=('bash'
+         'glibc'
+         'm4')
+checkdepends=('bison'
+              'gawk')
+optdepends=('help2man')
+source=('&flex-url;')
+md5sums=('&flex-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr \
+              --disable-static \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  ln -svf flex "${pkgdir}/usr/bin/lex"
+  ln -svf flex.1 "${pkgdir}/usr/share/man/man1/lex.1"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp flex-&flex-version;-&flex-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/flex-&flex-version;-&flex-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Flex package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S flex --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/flex
+cp PKGBUILD /srv/pacman/source/LFS/flex
+cd /sources
+rm -rf flex</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/flit-core.xml lfs-pacman-2025-03-26/chapter08/flit-core.xml
--- lfs-git-2025-03-26/chapter08/flit-core.xml	2025-03-25 18:44:40.096150732 -0500
+++ lfs-pacman-2025-03-26/chapter08/flit-core.xml	2025-03-25 22:21:39.461613941 -0500
@@ -40,13 +40,59 @@
   <sect2 role="installation">
     <title>Installation of Flit-Core</title>
 
-    <para>Build the package:</para>
 
-<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
+    <para>Create the PKGBUILD for the Flit-Core package with the following
+    commands:</para>
 
-    <para>Install the package:</para>
+<screen><userinput>mkdir /sources/flit-core
+cd /sources/flit-core
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
 
-<screen><userinput remap="install">pip3 install --no-index --find-links dist flit_core</userinput></screen>
+pkgname="flit-core"
+pkgver="&flit-core-version;"
+pkgrel="&flit-core-release;"
+pkgdesc="Flit-core is the distribution-building parts of Flit (a packaging tool for simple Python modules)."
+arch=('any')
+url="&flit-core-home;"
+license=('BSD3C')
+groups=('core')
+depends('python')
+optdepends=('pytest'
+            'testpath')
+source=('&flit-core-url;')
+md5sums=('&flit-core-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+pip3 install --root "${pkgdir}" --no-index --find-links dist flit_core
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp flit-core-&flit-core-version;-&flit-core-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/flit-core-&flit-core-version;-&flit-core-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Flit-Core package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S flit-core --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/flit-core
+cp PKGBUILD /srv/pacman/source/LFS/flit-core
+cd /sources
+rm -rf flit-core</userinput></screen>
 
     <variablelist>
       <title>The meaning of the pip3 configuration options and commands:</title>
diff -Naurp lfs-git-2025-03-26/chapter08/gawk.xml lfs-pacman-2025-03-26/chapter08/gawk.xml
--- lfs-git-2025-03-26/chapter08/gawk.xml	2025-03-25 18:44:40.096156752 -0500
+++ lfs-pacman-2025-03-26/chapter08/gawk.xml	2025-03-25 22:21:39.461053804 -0500
@@ -40,27 +40,72 @@
   <sect2 role="installation">
     <title>Installation of Gawk</title>
 
-    <para>First, ensure some unneeded files are not installed:</para>
 
-<screen><userinput remap="pre">sed -i 's/extras//' Makefile.in</userinput></screen>
+    <para>Create the PKGBUILD for the Gawk package with the following
+    commands:</para>
 
-    <para>Prepare Gawk for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">chown -R tester .
-su tester -c "PATH=$PATH make check"</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">rm -f /usr/bin/gawk-&gawk-version;
-make install</userinput></screen>
+<screen><userinput>mkdir /sources/gawk
+cd /sources/gawk
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gawk"
+pkgver="&gawk-version;"
+pkgrel="&gawk-release;"
+pkgdesc="The Gawk package contains programs for manipulating text files."
+arch=('x86'
+      'x86_64')
+url="&gawk-home;"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'glibc'
+         'mpfr'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'gmp'
+             'grep'
+             'make'
+             'patch'
+             'readline'
+             'sed'
+             'texinfo')
+checkdepends=('diffutils')
+optdepends=('libsigsegv')
+source=('&gawk-url;')
+md5sums=('&gawk-md5;')
+
+prepare(){
+  cd ${pkgname}-${pkgver}
+  # Enusre some unneeded files are not installed
+  sed -i 's/extras//' Makefile.in
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  # awk symlink is arleady installed, do the same with the man page
+  ln -sv gawk.1 "${pkgdir}/usr/share/man/man1/awk.1"
+  # Install the documentation
+  mkdir -v "${pkgdir}/usr/share/doc/gawk-${pkgver}"
+  cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} "${pkgdir}/usr/share/doc/gawk-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the command:</title>
@@ -76,15 +121,25 @@ make install</userinput></screen>
       </varlistentry>
    </variablelist>
 
-    <para>The installation process already created <command>awk</command>
-    as a symlink to <command>gawk</command>, create its man page as a
-    symlink as well:</para>
+    &pacman-build-add;
+
+<screen><userinput>cp gawk-&gawk-version;-&gawk-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gawk-&gawk-version;-&gawk-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Gawk package:</para>
 
-<screen><userinput remap="install">ln -sv gawk.1 /usr/share/man/man1/awk.1</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S gawk --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>If desired, install the documentation:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">install -vDm644 doc/{awkforai.txt,*.{eps,pdf,jpg}} -t /usr/share/doc/gawk-&gawk-version;</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/gawk
+cp PKGBUILD /srv/pacman/source/LFS/gawk
+cd /sources
+rm -rf gawk</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/gcc.xml lfs-pacman-2025-03-26/chapter08/gcc.xml
--- lfs-git-2025-03-26/chapter08/gcc.xml	2025-03-25 18:44:40.096163702 -0500
+++ lfs-pacman-2025-03-26/chapter08/gcc.xml	2025-03-25 22:21:39.461017154 -0500
@@ -41,38 +41,444 @@
   <sect2 role="installation">
     <title>Installation of GCC</title>
 
-    <para>If building on x86_64, change the default directory name for 64-bit
-    libraries to <quote>lib</quote>:</para>
+    <para>Create the PKGBUILD for the GCC package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">case $(uname -m) in
-  x86_64)
-    sed -e '/m64=/s/lib64/lib/' \
-        -i.orig gcc/config/i386/t-linux64
-  ;;
-esac</userinput></screen>
-
-    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
-
-<screen><userinput remap="pre">mkdir -v build
-cd       build</userinput></screen>
-
-    <para>Prepare GCC for compilation:</para>
-
-<screen><userinput remap="configure">../configure --prefix=/usr            \
-             LD=ld                    \
-             --enable-languages=c,c++ \
-             --enable-default-pie     \
-             --enable-default-ssp     \
-             --enable-host-pie        \
-             --disable-multilib       \
-             --disable-bootstrap      \
-             --disable-fixincludes    \
-             --with-system-zlib</userinput></screen>
-
-    <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>
+<screen><userinput>mkdir /sources/gcc
+cd /sources/gcc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+# Note, if bootstrapping, this package will recquire sudo permissions
+# for the build user as temporary gcc build is not possition inedependent
+
+pkgbase="gcc"
+pkgname=(gcc-ada
+         gcc-d
+         gcc-fortran
+         gcc-go
+         gcc-m2
+         gcc-objc
+         gcc-rust
+         gcc)
+pkgver="&gcc-version;"
+pkgrel="&gcc-release;"
+pkgdesc="The GCC package contains the GNU compiler collection."
+arch=('x86'
+      'x86_64')
+url="&gcc-home;"
+options=('!emptydirs'
+         '!lto'
+         'staticlibs')
+license=('GPL'
+         'LGPL'
+         'FDL'
+         'custom')
+makedepends=('coreutils'
+             'diffutils'
+             'findutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'gmp'
+             'grep'
+             'isl'
+             'm4'
+             'make'
+             'mpfr'
+             'patch'
+             'perl'
+             'rust'
+             'sed'
+             'tar'
+             'texinfo'
+             'zztd')
+checkdepends=('dejagnu'
+              'inetutils')
+source=('&gcc-url;')
+md5sums=('&gcc-md5;')
+    
+# If you want to modify what is actually built for a local build, set these 0
+_build_ada=1
+_build_d=1
+_build_fortran=1
+_build_go=1
+_build_lto=1 #lto-dump gets installed with base gcc package
+_build_m2=1
+_build_objc=1
+_build_rust=1
+
+_confargs=""
+_languages="c,c++"
+_need_temp_gcc="no"
+
+# See if we have ada
+_have_ada=$(pacman -Q gcc-ada > /dev/null 2&gt;&amp;1 &amp;&amp; echo "1" || echo "0")
+if [[ "x${_build_ada}" == "x1" &amp;&amp; "x${_have_ada}" == "x0" ]]; then
+  _need_temp_gcc="yes"
+fi
+
+# See if we have d
+_have_d=$(pacman -Q gcc-d > /dev/null 2&gt;&amp;1 &amp;&amp; echo "1" || echo "0")
+if [[ "x${_build_d}" == "x1" &amp;&amp; "x${_have_d}" == "x0" ]]; then
+  _need_temp_gcc="1"
+fi
+
+# Add temp gcc if needed
+if [[ "x${_need_temp_gcc}" == "x1" ]]; then
+  source=("${source}"
+          "http://www.lucasit.com/gcc-${pkgver}-bootstrap-c-c++-ada-d-isl-20250309.tar.xz")
+fi
+
+prepare() {
+  cd "${srcdir}/${pkgbase}-${pkgver}"
+
+  # hack! - some configure tests for header files using "$CPP $CPPFLAGS"
+  #sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure
+
+  # adjust libdir for x86_64
+  case $(uname -m) in
+    x86_64)
+      sed -e '/m64=/s/lib64/lib/' \
+          -i.orig gcc/config/i386/t-linux64
+    ;;
+  esac
+
+  # The GCC documentation recommends building GCC in a dedicated build directory
+  mkdir build
+}
+
+build() {
+  cd "${srcdir}/${pkgbase}-${pkgver}/build"
+
+  # Handle options
+  if [[ "x${_build_ada}" == "x1" ]]; then
+    _languages="ada,${_languages}"
+  fi
+
+  if [[ "x${_build_d}" == "x1" ]]; then
+    _languages="${_languages},d"
+  fi
+
+  if [[ "x${_build_fortran}" == "x1" ]]; then
+    _languages="${_languages},fortran"
+  fi
+
+  if [[ "x${_build_go}" == "x1" ]]; then
+    _languages="${_languages},go"
+  fi
+
+  if [[ "x${_build_lto}" == "x1" ]]; then
+    _languages="${_languages},lto"
+  fi
+
+  if [[ "x${_build_m2}" == "x1" ]]; then
+    _languages="${_languages},m2"
+  fi
+
+  if [[ "x${_build_objc}" == "x1" ]]; then
+    _languages="${_languages},objc,obj-c++"
+  fi
+
+  if [[ "x${_build_rust}" == "x1" ]]; then
+    _languages="${_languages},rust"
+  fi
+
+  # Put temporary gcc into place
+  if [[ "x${_need_temp_gcc}" == "x1" ]]; then
+    if [[ -d /opt/gcc ]]; then echo "ERROR: /opt/gcc exists! Exiting..." &amp;&amp; exit 1; fi
+    # Copy to real filesystem -- FIXME: REQUIRES SUDO PERMISSIONS
+    sudo cp -Rv ${srcdir}/opt/gcc /opt
+    export PATH="/opt/gcc/bin:${PATH}"
+    _confargs="${_confargs} --enable-bootstrap"
+  else
+    _confargs="${_confargs} --disable-bootstrap"
+  fi
+
+  # Disable -Werror in CFLAGS
+  CFLAGS=${CFLAGS/-Werror=format-security/}
+  CXXFLAGS=${CXXFLAGS/-Werror=format-security/}
+
+  ../configure --prefix=/usr            \
+               LD=ld                    \
+               --enable-default-pie     \
+               --enable-default-ssp     \
+               --enable-host-pie        \
+               --disable-multilib       \
+               --disable-fixincludes    \
+               --with-system-zlib       \
+               ${_confargs}             \
+               --enable-languages=${_languages}
+
+  # Optimize final GCC
+  # Borrowed form Arch
+  # See https://bugs.archlinux.org/task/71777
+  if [[ "x${_need_temp_gcc}" == "x1" ]]; then
+    make -O STAGE1_CFLAGS="-O2" \
+    BOOT_CFLAGS="$CFLAGS" \
+    BOOT_LDFLAGS="$LDFLAGS" \
+    LDFLAGS_FOR_TARGET="$LDFLAGS"
+  else
+    make -O BOOT_CFLAGS="$CFLAGS" \
+    BOOT_LDFLAGS="$LDFLAGS" \
+    LDFLAGS_FOR_TARGET="$LDFLAGS"
+  fi
+
+  # Install to temp location and extract split packages from there
+  make DESTDIR=${srcdir}/gcc-dest install
+
+  # Strip most of the package if not a debug build
+  if check_option 'debug' n; then
+    options+=('!strip')
+
+    # Executables
+    find "${srcdir}/gcc-dest/usr/bin" \
+      -type f \
+      -executable \
+      -exec strip $STRIP_BINARIES {} + 2&gt; /dev/null || true
+    find "${srcdir}/gcc-dest/usr/lib/libexec/" \
+     -type f -executable \
+     -not -name "*.so*" \
+     -not -name "*.a" \
+     -not -name "*.sh" \
+     -exec strip $STRIP_BINARIES {} + 2&gt; /dev/null || true
+
+    # Libraries
+    find "${srcdir}/gcc-dest/usr/lib" \
+      -name '*.a' \
+      -type f \
+      -exec strip $STRIP_STATIC {} + 2&gt; /dev/null || true
+    find "${srcdir}/gcc-dest/usr/lib" \
+      -type f \
+      -name '*.so' \
+      -not -name "libquadmath*" \
+      -not -name "libstdc++*" \
+      -not -name "libitm*" \
+      -not -name "libatomic*" \
+      -exec strip $STRIP_SHARED {} + 2&gt; /dev/null || true
+  fi
+
+  # Remove temporary gcc if needed
+  if [[ "x${_need_temp_gcc}" == "x1" ]]; then
+    sudo rm -rfv /opt/gcc
+  fi
+}
+
+check() {
+  cd ${srcdir}/${pkgbase}-${pkgver}/build
+  make -k check || true
+  ${srcdir}/${pkgbase}-${pkgver}/contrib/test_summary
+}
+
+package_gcc-ada() {
+  pkgdesc="The GCC package contains the GNU compiler collection (Ada front-end)"
+  depends=("gcc=${pkgver}-${pkgrel}")
+
+  # Bin
+  install -vdm755 "${pkgdir}/usr/bin"
+  mv -v "${srcdir}"/gcc-dest/usr/bin/gnat* "${pkgdir}/usr/bin"
+
+  # Lib
+  install -vdm755 "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v \
+  "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/ada_target_properties" \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"/adainclude \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"/adalib \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+  # Libexec
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/gnat1" \
+        "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+  # Info
+  install -vdm755 "${pkgdir}/usr/share/info"
+  mv -v "${srcdir}"/gcc-dest/usr/share/info/gnat* \
+        "${pkgdir}/usr/share/info"
+}
+
+package_gcc-d() {
+  pkgdesc="The GCC package contains the GNU compiler collection (D front-end)"
+  depends=("gcc=${pkgver}-${pkgrel}")
+
+  # Bin
+  install -vdm755 "${pkgdir}/usr/bin"
+  mv -v "${srcdir}"/gcc-dest/usr/bin/{,"${CARCH}"-pc-linux-gnu-}gdc "${pkgdir}/usr/bin"
+
+  # Lib
+  install -vdm755 "${pkgdir}/usr/lib"
+  mv -v "${srcdir}"/gcc-dest/usr/lib/libg{druntime,phobos}.* "${pkgdir}/usr/lib"
+  install -vdm755 "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/include"
+  mv -v "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/include/d" \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/include"
+
+  # Libexec
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/d21" \
+        "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+  # Info/Man
+  install -vdm755 "${pkgdir}"/usr/share/{info,man/man1}
+  mv -v "${srcdir}"/gcc-dest/usr/share/info/gdc.* \
+        "${pkgdir}/usr/share/info"
+  mv -v "${srcdir}"/gcc-dest/usr/share/man/man1/gdc.* \
+        "${pkgdir}/usr/share/man/man1"
+}
+
+package_gcc-fortran() {
+  pkgdesc="The GCC package contains the GNU compiler collection (Fortran front-end)"
+  depends=("gcc=${pkgver}-${pkgrel}")
+
+  # Bin
+  install -vdm755 "${pkgdir}/usr/bin"
+  mv -v "${srcdir}"/gcc-dest/usr/bin/{,"${CARCH}"-pc-linux-gnu-}gfortran \
+        "${pkgdir}/usr/bin"
+
+  # Lib
+  install -vdm755 "${pkgdir}/usr/lib"
+  mv -v "${srcdir}"/gcc-dest/usr/lib/libgfortran.* "${pkgdir}/usr/lib"
+  install -vdm755 "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"/libcaf* \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/finclude" \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  install -vdm755 "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/include"
+  mv -v \
+    "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"/include/ISO_F*.h \
+    "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/include"
+
+  # Libexce
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/f951" \
+        "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+  # Info/Man
+  install -vdm755 "${pkgdir}"/usr/share/{info,man/man1}
+  mv -v "${srcdir}"/gcc-dest/usr/share/info/gfortran.* \
+        "${pkgdir}/usr/share/info"
+  mv -v "${srcdir}"/gcc-dest/usr/share/man/man1/gfortran.* \
+        "${pkgdir}/usr/share/man/man1"
+}
+
+package_gcc-go() {
+  pkgdesc="The GCC package contains the GNU compiler collection (Go front-end)"
+  depends=("gcc=${pkgver}-${pkgrel}")
+
+  # Bin
+  install -vdm755 "${pkgdir}/usr/bin"
+  mv -v "${srcdir}"/gcc-dest/usr/bin/{{,"${CARCH}"-pc-linux-gnu-}gccgo,go{,fmt}} \
+        "${pkgdir}/usr/bin"
+
+  # Lib
+  install -vdm755 "${pkgdir}/usr/lib"
+  mv -v "${srcdir}"/gcc-dest/usr/lib/libgo.* "${pkgdir}/usr/lib"
+  mv -v "${srcdir}"/gcc-dest/usr/lib/libgo{,lib}begin.a "${pkgdir}/usr/lib"
+  mv -v "${srcdir}/gcc-dest/usr/lib/go" "${pkgdir}/usr/lib"
+
+  # Libexec
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  for file in buildid cgo go1 test2json vet; do
+    mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/${file}" \
+          "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  done
+
+  #Info/Man
+  install -vdm755 "${pkgdir}"/usr/share/{info,man/man1}
+  mv -v "${srcdir}"/gcc-dest/usr/share/info/gccgo.* \
+        "${pkgdir}/usr/share/info"
+  mv -v "${srcdir}"/gcc-dest/usr/share/man/man1/{gccgo,go,gofmt}.* \
+        "${pkgdir}/usr/share/man/man1"
+}
+
+package_gcc-m2() {
+  pkgdesc="The GCC package contains the GNU compiler collection (Modula-2 frontend)"
+  depends=("gcc=${pkgver}-${pkgrel}")
+
+  # Bin
+  install -vdm755 "${pkgdir}/usr/bin"
+  mv -v "${srcdir}"/gcc-dest/usr/bin/{,"${CARCH}"-pc-linux-gnu-}gm2 \
+        "${pkgdir}/usr/bin"
+
+  # Lib
+  install -vdm755 "${pkgdir}/usr/lib"
+  mv -v "${srcdir}"/gcc-dest/usr/lib/libm2* \
+        "${pkgdir}/usr/lib"
+  install -vdm755 "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}/m2" \
+        "${pkgdir}/usr/lib/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+  # Libexec
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/cc1gm2" \
+        "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+  #Info/Man
+  install -vdm755 "${pkgdir}"/usr/share/{info,man/man1}
+  mv -v "${srcdir}"/gcc-dest/usr/share/info/m2.* \
+        "${pkgdir}/usr/share/info"
+  mv -v "${srcdir}"/gcc-dest/usr/share/man/man1/gm2.* \
+        "${pkgdir}/usr/share/man/man1"
+}
+
+package_gcc-objc() {
+  pkgdesc="The GCC package contains the GNU compiler collection (Objective-C and Objective-C++ front-end)"
+  depends=("gcc=${pkgver}-${pkgrel}")
+
+  # Libs
+  install -vdm755 "${pkgdir}/usr/lib"
+  mv -v "${srcdir}"/gcc-dest/usr/lib/libobjc* "${pkgdir}/usr/lib"
+  install -vdm755 "${pkgdir}/usr/lib/gcc/$CARCH-pc-linux-gnu/${pkgver}/plugin/include"
+  mv -v \
+    "${srcdir}/gcc-dest/usr/lib/gcc/$CARCH-pc-linux-gnu/${pkgver}/plugin/include/objc" \
+    "${pkgdir}/usr/lib/gcc/$CARCH-pc-linux-gnu/${pkgver}/plugin/include"
+
+  # Libexc
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  for file in cc1obj cc1objplus; do
+    mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/${file}" \
+          "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  done
+}
+
+package_gcc-rust() {
+  pkgdesc="The GCC package contains the GNU compiler collection (Rust front-end)"
+  depends=("gcc=${pkgver}-${pkgrel}"
+           'rust')
+  install -vdm755 "${pkgdir}/usr/bin"
+  mv -v "${srcdir}"/gcc-dest/usr/bin/{,"${CARCH}"-pc-linux-gnu-}gccrs \
+        "${pkgdir}/usr/bin"
+  install -vdm755 "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+  mv -v "${srcdir}/gcc-dest/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}/crab1" \
+        "${pkgdir}/usr/libexec/gcc/${CARCH}-pc-linux-gnu/${pkgver}"
+
+}
+
+package_gcc() {
+  pkgdesc="The GCC package contains the GNU compiler collection (C and C++ front-ends)"
+  depends=('bash'
+           'binutils'
+           'glibc'
+           'mpc'
+           'python')
+  groups=('core')
+
+  install -vdm755 "${pkgdir}/usr/"
+  mv -v "${srcdir}"/gcc-dest/usr/* "${pkgdir}/usr/"
+
+  install -vdm755 "${pkgdir}/usr/share/gdb/auto-load/usr/lib"
+  mv -v "${pkgdir}"/usr/lib/*gdb.py "${pkgdir}/usr/share/gdb/auto-load/usr/lib"
+
+  ln -vsf ../usr/bin/cpp "${pkgdir}/lib"
+  ln -vsf gcc "${pkgdir}/usr/bin/cc"
+
+  if [[ "x${_build_lto}" == "x1" ]]; then
+    install -vdm755 "${pkgdir}/usr/lib/bfd-plugins"
+    ln -sfv ../../libexec/gcc/"${CARCH}"-pc-linux-gnu/"${pkgver}"/liblto_plugin.so \
+            "${pkgdir}/usr/lib/bfd-plugins"
+  fi
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure parameters:</title>
@@ -106,6 +512,38 @@ cd       build</userinput></screen>
       </varlistentry>
     </variablelist>
 
+    &pacman-build-add;
+
+<screen><userinput>cp gcc-&gcc-version;-&gcc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+cp gcc-*-&gcc-version;-&gcc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gcc-&gcc-version;-&gcc-release;-$(uname -m).pkg.tar.xz
+for file /srv/pacman/repos/LFS/gcc-*-&gcc-version;-&gcc-release;-$(uname -m).pkg.tar.xz; do
+   repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz "${file}"
+done</userinput></screen>
+
+    <para>Update the local cache and install the main GCC package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S gcc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>If you wish to install the additional GCC drivers, execute the
+    following commands:</para>
+
+<screen><userinput role="nodump">for file in ada d fortran go m2 objc rust; do
+    pacman -S "gcc-${file}" --overwrite \* -dd --noconfirm
+done</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/gcc
+cp PKGBUILD /srv/pacman/source/LFS/gcc
+cd /sources
+rm -rf gcc</userinput></screen>
+
     <note>
       <anchor id="pie-ssp-info" xreflabel="note on PIE and SSP"/>
       <para>
@@ -127,98 +565,6 @@ cd       build</userinput></screen>
       </para>
     </note>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</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 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>GCC may need more stack space compiling some extremely complex
-    code patterns.  As a precaution for the host distros with a tight stack
-    limit, explicitly set the stack size hard limit to infinite.
-    On most host distros (and the final LFS system) the hard limit is
-    infinite by default, but there is no harm done by setting it explicitly.
-    It's not necessary to change the stack size soft limit because GCC will
-    automatically set it to an appropriate value, as long as the value does
-    not exceed the hard limit:</para>
-
-<screen><userinput remap="test">ulimit -s -H unlimited</userinput></screen>
-
-    <para>Now remove/fix several known test failures:</para>
-
-<screen><userinput remap="test">sed -e '/cpython/d'               -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
-sed -e 's/no-pic /&amp;-no-pie /'     -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c
-sed -e 's/300000/(1|300000)/'     -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c
-sed -e 's/{ target nonpic } //' \
-    -e '/GOTPCREL/d'              -i ../gcc/testsuite/gcc.target/i386/fentryname3.c</userinput></screen>
-
-    <para>Test the results as a non-privileged user, but do not stop at errors:</para>
-
-<screen><userinput remap="test">chown -R tester .
-su tester -c "PATH=$PATH make -k check"</userinput></screen>
-
-    <para>To extract a summary of the test suite results, run:</para>
-
-<screen><userinput remap="test">../contrib/test_summary</userinput></screen>
-
-    <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
-    url="&test-results;"/> and
-    <ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para>
-
-    <!-- https://github.com/google/sanitizers/issues/1716
-         Affecting any host distro with a large vm.mmap_rnd_bits.
-         The fix is https://github.com/llvm/llvm-project/commit/0784b1eefa36
-         but it's not in GCC 14.  TODO retry with
-             sudo sysctl vm.mmap_rnd_bits=32
-         on the host distro when we update to GCC 15.  -->
-    <para>The tsan tests are known to fail on some host distros.</para>
-
-    <para>A few unexpected failures cannot always be avoided. In some cases
-    test failures depend on the specific hardware of the system.<!--The GCC developers
-    are usually aware of these issues, but have not resolved them yet.-->
-    Unless the test results are vastly different from those at the above URL,
-    it is safe to continue.</para>
-
-    <para>Install the package:</para>
-
-<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) 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 \
-    /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include{,-fixed}</userinput></screen>
-
-    <para>Create a symlink required by the <ulink
-    url="https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html">FHS</ulink>
-    for "historical" reasons.</para>
-
-<screen><userinput remap="install">ln -svr /usr/bin/cpp /usr/lib</userinput></screen>
-
-    <para>Many packages use the name <command>cc</command> to call the C
-    compiler.  We've already created <command>cc</command> as a symlink in
-    <xref linkend='ch-tools-gcc-pass2'/>, create its man page as a symlink
-    as well:</para>
-
-<screen><userinput remap="install">ln -sv gcc.1 /usr/share/man/man1/cc.1</userinput></screen>
-
-    <para>Add a compatibility symlink to enable building programs with
-    Link Time Optimization (LTO):</para>
-
-<screen><userinput remap="install">ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/&gcc-version;/liblto_plugin.so \
-        /usr/lib/bfd-plugins/</userinput></screen>
-
     <para>Now that our final toolchain is in place, it is important to again ensure
     that compiling and linking will work as expected. We do this by performing
     some sanity checks:</para>
@@ -321,11 +667,6 @@ SEARCH_DIR("/usr/lib");</computeroutput>
 
 <screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
 
-    <para>Finally, move a misplaced file:</para>
-
-<screen><userinput remap="install">mkdir -pv /usr/share/gdb/auto-load/usr/lib
-mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
-
   </sect2>
 
   <sect2 id="contents-gcc" role="content">
diff -Naurp lfs-git-2025-03-26/chapter08/gdbm.xml lfs-pacman-2025-03-26/chapter08/gdbm.xml
--- lfs-git-2025-03-26/chapter08/gdbm.xml	2025-03-25 18:44:40.096174222 -0500
+++ lfs-pacman-2025-03-26/chapter08/gdbm.xml	2025-03-25 22:21:39.461997440 -0500
@@ -43,16 +43,57 @@
 
   <sect2 role="installation">
     <title>Installation of GDBM</title>
-<!--
-    <para>First, fix an issue first identified by gcc-10:</para>
 
-<screen><userinput remap="pre">sed -r -i '/^char.*parseopt_program_(doc|args)/d' src/parseopt.c</userinput></screen>
--->
-    <para>Prepare GDBM for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --disable-static \
-            --enable-libgdbm-compat</userinput></screen>
+
+    <para>Create the PKGBUILD for the GDBM package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/gdbm
+cd /sources/gdbm
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gdbm"
+pkgver="&gdbm-version;"
+pkgrel="&gdbm-release;"
+pkgdesc="The GDBM package contains the GNU Database Manager."
+arch=('x86'
+      'x86_64')
+url="&gdbm-home;"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'glibc'
+         'readline'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&gdbm-url;')
+md5sums=('&gdbm-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --enable-libgdbm-compat
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure option:</title>
@@ -67,21 +108,25 @@
       </varlistentry>
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
+
+<screen><userinput>cp gdbm-&gdbm-version;-&gdbm-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gdbm-&gdbm-version;-&gdbm-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<screen><userinput remap="make">make</userinput></screen>
+    <para>Update the local cache and install the GDBM package:</para>
 
-    <para>To test the results, issue:</para>
+<screen><userinput>pacman -Syu
+pacman -S gdbm --overwrite \* -dd --noconfirm</userinput></screen>
 
-<screen><userinput remap="test">make check</userinput></screen>
-<!--
-    <para>
-      One test, <filename>version</filename>, is known to fail.
-    </para>
--->
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/gdbm
+cp PKGBUILD /srv/pacman/source/LFS/gdbm
+cd /sources
+rm -rf gdbm</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/gettext.xml lfs-pacman-2025-03-26/chapter08/gettext.xml
--- lfs-git-2025-03-26/chapter08/gettext.xml	2025-03-25 18:44:40.096182902 -0500
+++ lfs-pacman-2025-03-26/chapter08/gettext.xml	2025-03-25 22:21:39.461844170 -0500
@@ -42,49 +42,84 @@
 
   <sect2 role="installation">
     <title>Installation of Gettext</title>
-<!--
-    <para>At first, fix an issue causing the package fail to build with
-    libxml-2.12 or later.  The fix is optional for building LFS, but
-    required if rebuilding this package in BLFS with libxml
-    installed:</para>
-
-<screen><userinput remap="pre">sed -e '/^structured/s/xmlError \*/typeof(xmlCtxtGetLastError(NULL)) /' \
-    -i gettext-tools/src/its.c</userinput></screen>
--->
-    <para>Prepare Gettext for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/gettext-&gettext-version;</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<!--<screen><userinput remap="make">make BISON_LOCALEDIR=/usr/share/locale</userinput></screen>-->
-<screen><userinput remap="make">make</userinput></screen>
-<!--
-   <variablelist>
-      <title>The meaning of the make parameter:</title>
-
-      <varlistentry>
-        <term><parameter>BISON_LOCALEDIR=/usr/share/locale</parameter></term>
-        <listitem>
-          <para>Since bison is not yet installed in /usr, configure hardcodes
-          the directory containing translations for the bison program (the
-          "locale" directory) as /tools/share/locale. Passing this variable
-           to make allows overriding the choice made by configure.</para>
-        </listitem>
-      </varlistentry>
-
-    </variablelist>
--->
-    <para>To test the results, issue:</para>
 
-<screen><userinput remap="test">make check</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Create the PKGBUILD for the Gettext package with the following
+    commands:</para>
 
-<screen><userinput remap="install">make install
-chmod -v 0755 /usr/lib/preloadable_libintl.so</userinput></screen>
+<screen><userinput>mkdir /sources/gettext
+cd /sources/gettext
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gettext"
+pkgver="&gettext-version;"
+pkgrel="&gettext-release;"
+pkgdesc="The Gettext package contains utilities for internationalization and localization."
+arch=('x86'
+      'x86_64')
+url="&gettext-home;"
+license=('GPLv3')
+groups=('core')
+depends=('acl'
+         'bash'
+         'gcc'
+         'glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gawk'
+             'grep'
+             'make'
+             'ncurses'
+             'sed'
+             'texinfo')
+checkdepends=('diffutils'
+              'perl'
+              'tcl')
+source=('&gettext-url;')
+md5sums=('&gettext-md5;')
+
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --docdir=/usr/share/doc/gettext-${pkgver{
+  make
+}
+
+check(){
+  # Note, this takes a long time, about 3 SBU
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+  chmod -v 0755 ${pkgdir}/usr/lib/preloadable_libintl.so
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp gettext-&gettext-version;-&gettext-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gettext-&gettext-version;-&gettext-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Gettext package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S gettext --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/gettext
+cp PKGBUILD /srv/pacman/source/LFS/gettext
+cd /sources
+rm -rf gettext</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/glibc.xml lfs-pacman-2025-03-26/chapter08/glibc.xml
--- lfs-git-2025-03-26/chapter08/glibc.xml	2025-03-25 18:44:40.096191471 -0500
+++ lfs-pacman-2025-03-26/chapter08/glibc.xml	2025-03-25 22:21:39.462087429 -0500
@@ -40,40 +40,347 @@
 
   </sect2>
 
-  <sect2 role="installation">
+  <sect2 id="glibc-install" role="installation">
     <title>Installation of Glibc</title>
 
-    <para>Some of the Glibc programs use the non-FHS compliant
-    <filename class="directory">/var/db</filename> directory to store
-    their runtime data. Apply the following patch to make such programs
-    store their runtime data in the FHS-compliant locations:</para>
+    <para>Unlike in LFS, we will need to be able to generate locales on install
+    or upgrade for the target system. To do so, we've borrowed a script from
+    Arch Linux. Create the locale-gen script with the following command:</para>
+
+<screen><userinput remap="prepare">mkdir /sources/glibc
+cd /sources/glibc
+cat &gt; locale-gen &lt;&lt; "REALEOF"
+<literal>#!/usr/bin/sh
+
+set -e
+
+LOCALEGEN=/etc/locale.gen
+LOCALES=/usr/share/i18n/locales
+if [ -n "$POSIXLY_CORRECT" ]; then
+  unset POSIXLY_CORRECT
+fi
+
+
+[ -f $LOCALEGEN -a -s $LOCALEGEN ] || exit 0;
+
+# Remove all old locale dir and locale-archive before generating new
+# locale data.
+rm -rf /usr/lib/locale/* || true
+
+umask 022
+
+is_entry_ok() {
+  if [ -n "$locale" -a -n "$charset" ] ; then
+    true
+  else
+    echo "error: Bad entry '$locale $charset'"
+    false
+  fi
+}
+
+echo "Generating locales..."
+while read locale charset; do \
+        case $locale in \#*) continue;; "") continue;; esac; \
+        is_entry_ok || continue
+        echo -n "  `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"; \
+        echo -n ".$charset"; \
+        echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \
+        echo -n '...'; \
+        if [ -f $LOCALES/$locale ]; then input=$locale; else \
+        input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; fi; \
+        localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale; \
+        echo ' done'; \
+done &lt; $LOCALEGEN
+echo "Generation complete."</literal>
+REALEOF</userinput></screen>
+
+      <para>Additionally, create the template file for locale-gen configuration
+      file:</para>
+
+<screen><userinput remap="prepare">cat &gt; locale.gen.txt &lt;&lt; "REALEOF"
+<literal># Configuration file for locale-gen
+#
+# lists of locales that are to be generated by the locale-gen command.
+#
+# Each line is of the form:
+#
+#     &lt;locale&gt; &lt;charset&gt;
+#
+#  where &lt;locale&gt; is one of the locales given in /usr/share/i18n/locales
+#  and &lt;charset&gt; is one of the character sets listed in /usr/share/i18n/charmaps
+#
+#  Examples:
+#  en_US ISO-8859-1
+#  en_US.UTF-8 UTF-8
+#  de_DE ISO-8859-1
+#  de_DE@euro ISO-8859-15
+#
+#  The locale-gen command will generate all the locales,
+#  placing them in /usr/lib/locale.
+#
+#  A list of supported locales is included in this file.
+#  Uncomment the ones you need.</literal>
+REALEOF</userinput></screen>
+
+    <para>You need to regenrate the installed locales on isntallation of a new
+    version of GLibC. Create an install file which runs locale-gen on both
+    first installation and on upgrades:</para>
+
+<screen><userinput>cat &gt; glibc.install &lt;&lt; "REALEOF"
+<literal># glibc.install
+
+post_install(){
+  /usr/bin/locale-gen
+}
+
+post_upgrade(){
+  /usr/bin/locale-gen
+}</literal>
+REALEOF</userinput></screen>
+
+      <para>Finally, create the PKGBUILD file for GlibC:</para>
+
+<screen><userinput remap="prepare">cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="glibc"
+pkgver="&glibc-version;"
+pkgrel="&glibc-release;"
+pkgdesc="The Glibc package contains the main C library. This library provides the basic routines for allocating memory, searching directories, opening and closing files, reading and writing files, string handling, pattern matching, arithmetic, and so on."
+arch=('x86'
+      'x86_64')
+url="&glibc-home;"
+groups=('core')
+options=('!emptydirs'
+         'staticlibs'
+         '!strip') 
+license=('GPLv2'
+         'LGPLv2.1'
+         'PD')
+install='glibc.install'
+depends=('rootfs')
+makedepends=('bash'
+             'binutils'
+             'bison'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'grep'
+             'gzip'
+             'linux-api-headers'
+             'make'
+             'perl'
+             'python'
+             'sed'
+             'texinfo')
+checkdepends=('file')
+backup=('etc/nsswitch.conf'
+        'etc/locale.gen')
+source=("&glibc-url;"
+        "&patches-root;&glibc-fhs-patch;"
+        'locale.gen.txt'
+        'locale-gen')
+md5sums=('&glibc-md5;'
+         '&glibc-fhs-patch-md5;'
+         ''
+         '')
+
+prepare(){
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/${pkgname}-${pkgver}-fhs-1.patch"
+  mkdir build
+}
+
+build(){
+
+  # D_FORTIFY_SOURCE=2 causes testsuite build failure and is unnecessary during
+  # actual builds (support is built-in via --enable-fortify-source).
+  CFLAGS=${CFLAGS/-Wp,-D_FORTIFY_SOURCE=3/}
+
+  cd "${srcdir}/${pkgname}-${pkgver}/build"
+
+  # Make sure everything is correclty installed in the /usr prefix
+  echo "slibdir=/usr/lib"      &gt;&gt; configparms
+  echo "rtlddir=/usr/lib"      &gt;&gt; configparms
+  echo "sbindir=/usr/sbin"     &gt;&gt; configparms
+  echo "rootsbindir=/usr/sbin" &gt;&gt; configparms
+
+  ../configure                                        \
+      --prefix=/usr                                   \
+      --libdir=/usr/lib                               \
+      --disable-werror                                \
+      --enable-kernel=5.4                             \
+      --enable-stack-protector=strong                 \
+      --enable-fortify-source                         \
+      --disable-nscd                                  \
+      --enable-cet                                    \
+      libc_cv_slibdir=/usr/lib
+  make
+}
+
+check(){
+  cd "${srcdir}/${pkgname}-${pkgver}/build"
+
+  # adjust/remove buildflags that cause false-positive testsuite failures
+  # failure to build testsuite:
+  sed -i 's/-Werror=format-security/-Wformat-security/' config.make
+  # 27 test failures:
+  sed -i '/CFLAGS/s/-fno-plt//' config.make
+  # 1 test failure
+  sed -i '/CFLAGS/s/-fexceptions//' config.make
+
+  make -k check || true
+
+  # Get test rusults together into one file
+  for file in `find . -name "*.sum"`
+  do
+    cat $file &gt;&gt; tests-summary
+  done
+  _FAILCOUNT=`grep -c "^FAIL" tests-summary`
+
+  # Known test failures:
+  # io/tst-lchmod
+  # misc/tst-sched-affinity-inheritance
+  # nptl/tst-default-attr
+  # nptl/tst-pthread-affinity-inheritance
+  # posix/tst-sysconf-empty-chroot
+
+  # Possible arch specific failures:
+  # nss/tst-nss-files-hosts-multi
+  # nptl/tst-thread-affinity-pthread
+  # nptl/tst-thread-affinity-pthread2
+  # nptl/tst-thread-affinity-sched
+  # elf/tst-cpu-features-cpuinfo
+  # stdlib/tst-arc4random-thread
+
+  # Just make sure number of failures is no more than the known 5
+  # and 7 possible arch specific failures
+  test x"${_FAILCOUNT}" != "x" || _FAILCOUNT="0"
+  test "${_FAILCOUNT}" -lt "13" || exit 1
+}
+
+package(){
+
+  # locale-gen taken from Arch Linux
+  install -vdm755 "${pkgdir}/usr/bin"
+  install -vm755 "${srcdir}/locale-gen" "${pkgdir}/usr/bin"
+  install -vdm755 "${pkgdir}/etc"
+  install -vm644 "${srcdir}/locale.gen.txt" "${pkgdir}/etc/locale.gen"
+
+  # uncommet locales by default required for LFS testsuites
+  echo "# These locales are requried for LFS testsuites, do not comment out" \
+       &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "C.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "cs_CZ.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "de_DE ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "de_DE@euro ISO-8859-15" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "de_DE.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "el_GR ISO-8859-7" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "en_GB ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "en_GB.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "en_HK ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "en_PH ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "en_US ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "en_US.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "es_ES@euro ISO-8859-15" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "es_MX ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "fa_IR UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "fr_FR ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "fr_FR@euro ISO-8859-15" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "fr_FR.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "is_IS ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "is_IS.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "it_IT ISO-8859-1" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "it_IT@euro ISO-8859-15" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "it_IT.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "ja_JP EUC-JP" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "ja_JP.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "nl_NL@euro ISO-8859-15" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "ru_RU.KOI8-R KOI8-R" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "ru_RU.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "se_NO.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "ta_IN.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "tr_TR.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "zh_CN.GB18030 GB18030" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "zh_HK.BIG5-HKSCS BIG5-HKSCS"
+  echo "zh_TW.UTF-8 UTF-8" &gt;&gt; "${pkgdir}/etc/locale.gen"
+  echo "" &gt;&gt; "${pkgdir}/etc/locale.gen"
+
+  # Supply a list of all available locales
+  sed -e '1,3d' -e 's|/| |g' -e 's|\\| |g' -e 's|^|#|g' \
+    ${srcdir}/${pkgname}-${pkgver}/localedata/SUPPORTED \
+    &gt;&gt; "${pkgdir}/etc/locale.gen"
+
+  # Create the locale directory
+  install -vdm755 ${pkgdir}/usr/lib/locale
+
+  # Finally do the installation
+  cd "${srcdir}/${pkgname}-${pkgver}/build"
+  make DESTDIR="${pkgdir}" install
+
+  # Remove these as they are part of the tzdata package
+  rm -f "${pkgdir}"/usr/bin/{tzselect,zdump,zic}
+
+  # Don't install ld.so.c{onf,ache} files - included in rootfs package
+  rm -f ${pkgdir}/etc/ld.so.c{onf,ache}
+
+  # If not a debug build, then we need to specify !strip and do it manually
+  if check_option 'debug' n; then
+    options+=('!strip')
+
+    # Executables
+    find "${pkgdir}"/usr/bin -type f -executable -exec strip $STRIP_BINARIES {} + 2&gt; /dev/null || true
+    find "${pkgdir}"/usr/sbin -type f -executable -exec strip $STRIP_BINARIES {} + 2&gt; /dev/null || true
+    find "${pkgdir}"/bin -type f -executable -exec strip $STRIP_BINARIES {} + 2&gt; /dev/null || true
+    find "${pkgdir}"/sbin -type f -executable -exec strip $STRIP_BINARIES {} + 2&gt; /dev/null || true
+
+    # Libraries
+    find "${pkgdir}"/usr/lib -name '*.a' -type f -exec strip $STRIP_STATIC {} + 2&gt; /dev/null || true
+    find "{$pkgdir}"/lib -name '*.a' -type f -exec strip $STRIP_STATIC {} + 2&gt; /dev/null || true
+    find "{$pkgdir}"/usr/lib \
+      -name '*.so' -type f -exec strip $STRIP_SHARED {} + 2&gt; /dev/null || true
+
+    # Do not strip these four for gdb and valgrind useability, strip the rest
+    find "${pkgdir}"/lib \
+      -not -name 'ld-*.so' \
+      -not -name 'libc-*.so' \
+      -not -name 'libpthread-*.so' \
+      -not -name 'libthread_db-*.so' \
+      -name '*.so' -type f -exec strip $STRIP_SHARED {} + 2&gt; /dev/null || true
+  fi
+
+  # Create /etc/nsswitch.conf
+  cat &gt; ${pkgdir}/etc/nsswitch.conf &lt;&lt; "EOF"
+# Begin /etc/nsswitch.conf
 
-<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
-<!--
-    <para>Now fix a security vulnerability:</para>
+passwd: files
+group: files
+shadow: files
 
-<screen><userinput remap="pre">patch -Np1 -i ../&glibc-upstream-patch;</userinput></screen>
--->
-    <para>The Glibc documentation recommends building Glibc
-    in a dedicated build directory:</para>
+hosts: files dns
+networks: files
+
+protocols: files
+services: files
+ethers: files
+rpc: files
+
+# End /etc/nsswitch.conf
+EOF
+
+  # Install compatibility and lsb symlinks for x86_64
+  install -vdm755 "${pkgdir}/lib64"
+  ln -s ../lib/ld-linux-x86-64.so.2 "${pkgdir}/lib64"
+  ln -s ../lib/ld-linux-x86-64.so.2 "${pkgdir}/lib64/ld-lsb-x86-64.so.3"
 
-<screen><userinput remap="pre">mkdir -v build
-cd       build</userinput></screen>
+}</literal>
+REALEOF</userinput></screen>
 
-    <para>Ensure that the <command>ldconfig</command> and <command>sln</command>
-    utilities will be installed into
-    <filename class="directory">/usr/sbin</filename>:</para>
-
-<screen><userinput remap="pre">echo "rootsbindir=/usr/sbin" &gt; configparms</userinput></screen>
-
-    <para>Prepare Glibc for compilation:</para>
-
-<screen><userinput remap="configure">../configure --prefix=/usr                            \
-             --disable-werror                         \
-             --enable-kernel=&min-kernel;                     \
-             --enable-stack-protector=strong          \
-             --disable-nscd                           \
-             libc_cv_slibdir=/usr/lib</userinput></screen>
+    <indexterm zone="glibc-install">
+      <primary sortas="e-/etc/nsswitch.conf">/etc/nsswitch.conf</primary>
+    </indexterm>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -103,15 +410,15 @@ cd       build</userinput></screen>
           extra code to check for buffer overflows, such as stack
           smashing attacks.  Note that Glibc always explicitly overrides
           the default of GCC, so this option is still needed even though
-          we've already specified <option>--enable-default-ssp</option> for
-          GCC.</para>
+	  we've already specified <option>--enable-default-ssp</option> for
+	  GCC.</para>
         </listitem>
       </varlistentry>
 
       <varlistentry>
         <term><parameter>--disable-nscd</parameter></term>
         <listitem>
-          <para>Do not build the name service cache daemon which is no 
+          <para>Do not build the name service cache daemon which is no
           longer used.</para>
         </listitem>
       </varlistentry>
@@ -126,489 +433,39 @@ cd       build</userinput></screen>
 
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <important>
-      <para>In this section, the test suite for Glibc is considered critical.
-      Do not skip it under any circumstance.</para>
-    </important>
-
-    <para>Generally a few tests do not pass. The test failures listed below
-    are usually safe to ignore.</para>
-
-<!-- Use remap="make" here to work around a jhalfs issue. -->
-<!--<screen><userinput remap="make">case $(uname -m) in
-  i?86)   ln -sfnv $PWD/elf/ld-linux.so.2        /lib ;;
-  x86_64) ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;
-esac</userinput></screen>
-
-    <note><para>The symbolic link above is needed to run the tests at this
-    stage of building in the chroot environment.  It will be overwritten
-    in the install phase below.</para></note>
--->
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>You may see some test failures. The Glibc test suite is
-    somewhat dependent on the host system. A few failures out of
-    over 6000 tests can generally be ignored. This is a list of the
-    most common issues seen for recent versions of LFS:</para>
-
-    <itemizedlist>
-
-      <listitem>
-        <para><emphasis>io/tst-lchmod</emphasis>
-        is known to fail in the LFS chroot environment.</para>
-      </listitem>
-
-      <listitem>
-        <para>Some tests, for example
-        <emphasis>nss/tst-nss-files-hosts-multi</emphasis> and
-        <emphasis>nptl/tst-thread-affinity*</emphasis>
-        are known to fail due to a timeout (especially when the system is
-        relatively slow and/or running the test suite with multiple
-        parallel make jobs).  These tests can be identified with:</para>
-
-        <screen><userinput remap="test">grep "Timed out" $(find -name \*.out)</userinput></screen>
-
-        <para>It's possible to re-run a single test with enlarged timeout
-        with
-        <command>TIMEOUTFACTOR=<replaceable>&lt;factor&gt;</replaceable>
-        make test t=<replaceable>&lt;test name&gt;</replaceable></command>.
-        For example, <command>TIMEOUTFACTOR=10 make test
-        t=nss/tst-nss-files-hosts-multi</command> will re-run
-        <emphasis>nss/tst-nss-files-hosts-multi</emphasis> with ten times
-        the original timeout.</para>
-      </listitem>
-
-      <listitem>
-        <para>Additionally, some tests may fail with a relatively old CPU
-        model (for example
-        <emphasis>elf/tst-cpu-features-cpuinfo</emphasis>) or host kernel
-        version (for example
-        <emphasis>stdlib/tst-arc4random-thread</emphasis>).</para>
-      </listitem>
-    </itemizedlist>
-
-    <para>Though it is a harmless message, the install stage of Glibc will
-    complain about the absence of <filename>/etc/ld.so.conf</filename>.
-    Prevent this warning with:</para>
-
-<screen><userinput remap="install">touch /etc/ld.so.conf</userinput></screen>
-
-    <!-- https://sourceware.org/bugzilla/show_bug.cgi?id=21911 -->
-    <para>Fix the Makefile to skip an outdated sanity check
-    that fails with a modern Glibc configuration:</para>
-
-<screen><userinput remap="install">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</userinput></screen>
-
-    <important>
-      <para>
-        If upgrading Glibc to a new minor version (for example, from
-        Glibc-2.36 to Glibc-&glibc-version;) on a running LFS system, you
-        need to take some extra precautions to avoid breaking the system:
-      </para>
-
-      <itemizedlist>
-        <listitem>
-          <!-- There are two reasons we don't support this:
-               1. Upgrading on a system with separate /lib and /usr/lib is
-                  tricky.
-               2. With Glibc prior to 2.34 libc.so.6 etc. are symlinks to
-                  libc-2.33.so etc., again causing the upgradation tricky.
-                  The Glibc NEWS file explicit states they no longer use
-                  symlinks for the ABI names to avoid upgradation
-                  issues.  -->
-          <para>
-            Upgrading Glibc on a LFS system prior to 11.0 (exclusive) is
-            not supported.  Rebuild LFS if you are running such an old LFS
-            system but you need a newer Glibc.
-          </para>
-        </listitem>
-
-        <!-- https://sourceware.org/pipermail/libc-alpha/2024-January/154095.html -->
-        <listitem>
-          <para>
-            If upgrading on a LFS system prior to 12.0 (exclusive), install
-            <application>Libxcrypt</application> following
-            <xref role='.' linkend='ch-system-libxcrypt'/>  In addition to
-            a normal <application>Libxcrypt</application> installation,
-            <emphasis role='bold'>you MUST follow the note in Libxcrypt
-            section to install
-            <filename class='libraryfile'>libcrypt.so.1*</filename>
-            (replacing
-            <filename class='libraryfile'>libcrypt.so.1</filename> from the
-            prior Glibc installation)</emphasis>.
-          </para>
-        </listitem>
-
-        <!-- Otherwise on lfs-systemd nscd will fail to start on boot,
-             and on both lfs-sysv and lfs-systemd useradd etc. will try
-             to start nscd, then nscd will fail to start as well and
-             produce some spurious error message.  -->
-        <listitem>
-          <para>
-            If upgrading on a LFS system prior to 12.1 (exclusive),
-            remove the <command>nscd</command> program:
-          </para>
-
-          <screen role='nodump'><userinput>rm -f /usr/sbin/nscd</userinput></screen>
-
-          <para revision='systemd'>
-            If this system (prior to LFS 12.1, exclusive) is based on
-            Systemd, it's also needed to disable and stop the
-            <command>nscd</command> service now:
-          </para>
-
-          <screen revision='systemd' role='nodump'><userinput>systemctl disable --now nscd</userinput></screen>
-        </listitem>
-
-        <listitem>
-          <para>
-            Upgrade the kernel and reboot if it's older than &min-kernel;
-            (check the current version with <command>uname -r</command>)
-            or if you want to upgrade it anyway, following
-            <xref linkend='ch-bootable-kernel' role='.'/>
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Upgrade the kernel API headers if it's older than &min-kernel;
-            (check the current version with
-            <command>cat /usr/include/linux/version.h</command>)
-            or if you want to upgrade it anyway, following
-            <xref linkend='ch-tools-linux-headers'/> (but removing
-            <envar>$LFS</envar> from the <command>cp</command> command).
-          </para>
-        </listitem>
-
-        <!-- This is to ensure we don't start a process at the time point
-             where some Glibc shared libraries are updated but the others
-             are not.  Such mismatches can cause programs crash on startup,
-             esp. a mismatch between ld-linux-x86-64.so.2 and
-             libc.so.6.  Note that a crash in the installation process
-             will leave the system in a state with the mismatch forever,
-             unrecoverable without the help of another distro.  -->
-        <listitem>
-          <para>
-            Perform a <envar>DESTDIR</envar> installation and upgrade
-            the Glibc shared libraries on the system using one single
-            <command>install</command> command:
-          </para>
-
-          <screen role='nodump'><userinput>make DESTDIR=$PWD/dest install
-install -vm755 dest/usr/lib/*.so.* /usr/lib</userinput></screen>
-        </listitem>
-      </itemizedlist>
-
-      <para>
-        It's imperative to strictly follow these steps above unless you
-        completely understand what you are doing.
-        <emphasis role='bold'>Any unexpected deviation may render the
-        system completely unusable.  YOU ARE WARNED.</emphasis>
-      </para>
-
-      <para>
-        Then continue to run the <command>make install</command> command,
-        the <command>sed</command> command against
-        <filename>/usr/bin/ldd</filename>, and the commands to install
-        the locales.  Once they are finished, reboot the system
-        immediately.
-      </para>
-
-      <para>
-        When the system has successfully rebooted, if you are running
-        a LFS system prior to 12.0 (exclusive) where GCC was not built
-        with the <parameter>--disable-fixincludes</parameter> option,
-        move two GCC headers into a better location and
-        remove the stale <quote>fixed</quote> copies of the Glibc headers:
-      </para>
-
-      <screen role='nodump'><userinput>DIR=$(dirname $(gcc -print-libgcc-file-name))
-[ -e $DIR/include/limits.h ] || mv $DIR/include{-fixed,}/limits.h
-[ -e $DIR/include/syslimits.h ] || mv $DIR/include{-fixed,}/syslimits.h
-rm -rfv $(dirname $(gcc -print-libgcc-file-name))/include-fixed/*</userinput></screen>
-    </important>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>Fix a hardcoded path to the executable loader in the
-    <command>ldd</command> script:</para>
-
-<screen><userinput remap="install">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</userinput></screen>
-<!--
-    <para>Install the configuration file and runtime directory for
-    <command>nscd</command>:</para>
-
-<screen><userinput remap="install">cp -v ../nscd/nscd.conf /etc/nscd.conf
-mkdir -pv /var/cache/nscd</userinput></screen>
-
-    <para revision="systemd">Install the systemd support files for
-    <command>nscd</command>:</para>
-
-    <screen revision="systemd"><userinput remap="install">install -v -Dm644 ../nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf
-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
-    different language.  None of these locales are required, but if some of them
-    are missing, the test suites of some packages will skip important
-    test cases.</para>
-
-    <para>Individual locales can be installed using the
-    <command>localedef</command> program. E.g., the second
-    <command>localedef</command> command below combines the
-    <filename>/usr/share/i18n/locales/cs_CZ</filename>
-    charset-independent locale definition with the
-    <filename>/usr/share/i18n/charmaps/UTF-8.gz</filename>
-    charmap definition and appends the result to the
-    <filename>/usr/lib/locale/locale-archive</filename> file.
-    The following instructions will install the minimum set of
-    locales necessary for the optimal coverage of tests:</para>
-
-<screen role="nodump"><userinput remap="locale-test">localedef -i C -f UTF-8 C.UTF-8
-localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
-localedef -i de_DE -f ISO-8859-1 de_DE
-localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
-localedef -i de_DE -f UTF-8 de_DE.UTF-8
-localedef -i el_GR -f ISO-8859-7 el_GR
-localedef -i en_GB -f ISO-8859-1 en_GB
-localedef -i en_GB -f UTF-8 en_GB.UTF-8
-localedef -i en_HK -f ISO-8859-1 en_HK
-localedef -i en_PH -f ISO-8859-1 en_PH
-localedef -i en_US -f ISO-8859-1 en_US
-localedef -i en_US -f UTF-8 en_US.UTF-8
-localedef -i es_ES -f ISO-8859-15 es_ES@euro
-localedef -i es_MX -f ISO-8859-1 es_MX
-localedef -i fa_IR -f UTF-8 fa_IR
-localedef -i fr_FR -f ISO-8859-1 fr_FR
-localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
-localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
-localedef -i is_IS -f ISO-8859-1 is_IS
-localedef -i is_IS -f UTF-8 is_IS.UTF-8
-localedef -i it_IT -f ISO-8859-1 it_IT
-localedef -i it_IT -f ISO-8859-15 it_IT@euro
-localedef -i it_IT -f UTF-8 it_IT.UTF-8
-localedef -i ja_JP -f EUC-JP ja_JP
-localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
-localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro
-localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
-localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
-localedef -i se_NO -f UTF-8 se_NO.UTF-8
-localedef -i ta_IN -f UTF-8 ta_IN.UTF-8
-localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
-localedef -i zh_CN -f GB18030 zh_CN.GB18030
-localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
-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
-    character set.</para>
-
-    <para>Alternatively, install all the locales listed in the
-    <filename>glibc-&glibc-version;/localedata/SUPPORTED</filename> file
-    (it includes every locale listed above and many more) at once with the
-    following time-consuming command:</para>
-
-<screen><userinput remap="locale-full">make localedata/install-locales</userinput></screen>
-
-    <note><para>Glibc now uses libidn2 when resolving internationalized
-    domain names.  This is a run time dependency.  If this capability
-    is needed, the instructions for installing libidn2 are in the
-    <ulink url="&blfs-book;general/libidn2.html">BLFS libidn2 page</ulink>.
-    </para></note>
+    <para>Prepare the build directory for the pacman user and build the
+    package (unlike previous packages, note the use of the 'updpkgsums'
+    command to populate the checksums for the newly created files):</para>
+
+<screen><userinput remap="make">chown -R root:pacman .
+chmod 2775 .
+chmod 664 PKGBUILD
+su pacman -c 'updpkgsums'
+su pacman -c 'makepkg -L --nodeps'</userinput></screen>
+
+    <para>Add the package to the central repository:</para>
+
+<screen><userinput remap="maek">cp glibc-&glibc-version;-&glibc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/glibc-&glibc-version;-&glibc-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the glibc package:</para>
+
+<screen><userinput remap="install">pacman -Syu
+pacman -S glibc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput remap="install">mkdir /srv/pacman/source/LFS/glibc
+cp locale-gen locale.gen.txt glibc.install PKGBUILD \
+   /srv/pacman/source/LFS/glibc
+cd /sources
+rm -rf glibc</userinput></screen>
 
   </sect2>
 
-  <sect2 id="conf-glibc" role="configuration">
-    <title>Configuring Glibc</title>
-
-    <indexterm zone="conf-glibc">
-      <primary sortas="e-/etc/nsswitch.conf">/etc/nsswitch.conf</primary>
-    </indexterm>
-
-    <indexterm zone="conf-glibc">
-      <primary sortas="e-/etc/localtime">/etc/localtime</primary>
-    </indexterm>
-
-  <sect3>
-  <title>Adding nsswitch.conf</title>
-
-    <para>The <filename>/etc/nsswitch.conf</filename> file needs to be created
-    because the Glibc defaults do not work well in a networked environment.
-    </para>
-
-    <para>Create a new file <filename>/etc/nsswitch.conf</filename> by running the
-    following:</para>
-
-<screen revision='sysv'><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
-<literal># Begin /etc/nsswitch.conf
-
-passwd: files
-group: files
-shadow: files
-
-hosts: files dns
-networks: files
-
-protocols: files
-services: files
-ethers: files
-rpc: files
-
-# End /etc/nsswitch.conf</literal>
-EOF</userinput></screen>
-
-<screen revision='systemd'><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
-<literal># Begin /etc/nsswitch.conf
-
-passwd: files systemd
-group: files systemd
-shadow: files systemd
-
-hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
-networks: files
-
-protocols: files
-services: files
-ethers: files
-rpc: files
-
-# End /etc/nsswitch.conf</literal>
-EOF</userinput></screen>
-
-    </sect3>
-
-    <sect3>
-    <title>Adding Time Zone Data</title>
-
-    <para>Install and set up the time zone data with the following:</para>
-<screen><userinput>tar -xf ../../tzdata&tzdata-version;.tar.gz
-
-ZONEINFO=/usr/share/zoneinfo
-mkdir -pv $ZONEINFO/{posix,right}
-
-for tz in etcetera southamerica northamerica europe africa antarctica  \
-          asia australasia backward; do
-    zic -L /dev/null   -d $ZONEINFO       ${tz}
-    zic -L /dev/null   -d $ZONEINFO/posix ${tz}
-    zic -L leapseconds -d $ZONEINFO/right ${tz}
-done
-
-cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
-zic -d $ZONEINFO -p America/New_York
-unset ZONEINFO tz</userinput></screen>
-
-    <variablelist>
-      <title>The meaning of the zic commands:</title>
-
-      <varlistentry>
-        <term><parameter>zic -L /dev/null ...</parameter></term>
-        <listitem>
-          <para>This creates posix time zones without any leap seconds.  It is
-          conventional to put these in both
-          <filename class="directory">zoneinfo</filename> and
-          <filename class="directory">zoneinfo/posix</filename>. It is
-          necessary to put the POSIX time zones in
-          <filename class="directory">zoneinfo</filename>, otherwise various
-          test suites will report errors. On an embedded system, where space is
-          tight and you do not intend to ever update the time zones, you could save
-          1.9 MB by not using the <filename class="directory">posix</filename>
-          directory, but some applications or test suites might produce some
-          failures.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><parameter>zic -L leapseconds ...</parameter></term>
-        <listitem>
-          <para>This creates right time zones, including leap seconds. On an
-          embedded system, where space is tight and you do not intend to
-          ever update the time zones, or care about the correct time, you could
-          save 1.9MB by omitting the <filename class="directory">right</filename>
-          directory.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><parameter>zic ... -p ...</parameter></term>
-        <listitem>
-          <para>This creates the <filename>posixrules</filename> file. We use
-          New York because POSIX requires the daylight saving time rules
-          to be in accordance with US rules.</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-
-
-    <para>One way to determine the local time zone is to run the following
-    script:</para>
-
-<screen role="nodump"><userinput>tzselect</userinput></screen>
-
-    <para>After answering a few questions about the location, the script will
-    output the name of the time zone (e.g.,
-    <emphasis>America/Edmonton</emphasis>). There are also some other possible
-    time zones listed in <filename
-    class='directory'>/usr/share/zoneinfo</filename> such as
-    <emphasis>Canada/Eastern</emphasis> or <emphasis>EST5EDT</emphasis> that
-    are not identified by the script but can be used.</para>
-
-    <para>Then create the <filename>/etc/localtime</filename> file by
-    running:</para>
-
-<screen><userinput>ln -sfv /usr/share/zoneinfo/<replaceable>&lt;xxx&gt;</replaceable> /etc/localtime</userinput></screen>
-
-    <para>Replace <replaceable>&lt;xxx&gt;</replaceable> with the name of the
-    time zone selected (e.g., Canada/Eastern).</para>
-
-  </sect3>
-
-  <sect3 id="conf-ld" role="configuration">
-    <title>Configuring the Dynamic Loader</title>
-
-    <indexterm zone="conf-ld">
-      <primary sortas="e-/etc/ld.so.conf">/etc/ld.so.conf</primary>
-    </indexterm>
-
-    <para>By default, the dynamic loader (<filename
-    class="libraryfile">/lib/ld-linux.so.2</filename>) searches through
-    <filename class="directory">/usr/lib</filename> for dynamic libraries
-    that are needed by programs as they are run. However, if there are
-    libraries in directories other than
-    <filename class="directory">/usr/lib</filename>, these need to be added
-    to the <filename>/etc/ld.so.conf</filename> file in order for the
-    dynamic loader to find them. Two directories that are commonly known
-    to contain additional libraries are <filename
-    class="directory">/usr/local/lib</filename> and <filename
-    class="directory">/opt/lib</filename>, so add those directories to the
-    dynamic loader's search path.</para>
-
-    <para>Create a new file <filename>/etc/ld.so.conf</filename> by running the
-    following:</para>
-
-<screen><userinput>cat &gt; /etc/ld.so.conf &lt;&lt; "EOF"
-<literal># Begin /etc/ld.so.conf
-/usr/local/lib
-/opt/lib
-</literal>
-EOF</userinput></screen>
-
-  <para>If desired, the dynamic loader can also search a directory and
-  include the contents of files found there.  Generally the files in
-  this include directory are one line specifying the desired library path.
-  To add this capability run the following commands:</para>
-
-<screen role="nodump"><userinput>cat &gt;&gt; /etc/ld.so.conf &lt;&lt; "EOF"
-<literal># Add an include directory
-include /etc/ld.so.conf.d/*.conf
-</literal>
-EOF
-mkdir -pv /etc/ld.so.conf.d</userinput></screen>
-
-  </sect3>
-  </sect2>
-
   <sect2 id="contents-glibc" role="content">
     <title>Contents of Glibc</title>
 
@@ -622,8 +479,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput><
         ldd, lddlibc4,
         ld.so (symlink to ld-linux-x86-64.so.2 or ld-linux.so.2),
         locale, localedef, makedb, mtrace,
-        pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace,
-        zdump, and zic</seg>
+        pcprofiledump, pldd, sln, sotruss, sprof, and xtrace</seg>
         <seg>ld-linux-x86-64.so.2, ld-linux.so.2,
         libBrokenLocale.{a,so}, libanl.{a,so},
         libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so,
@@ -640,8 +496,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput><
         /usr/include/netrom, /usr/include/netrose, /usr/include/nfs,
         /usr/include/protocols, /usr/include/rpc,
         /usr/include/sys, /usr/lib/audit, /usr/lib/gconv, /usr/lib/locale,
-        /usr/libexec/getconf, /usr/share/i18n, /usr/share/zoneinfo,
-        and /var/lib/nss_db</seg>
+        /usr/libexec/getconf, /usr/share/i18n, and /var/lib/nss_db</seg>
       </seglistitem>
     </segmentedlist>
 
@@ -825,6 +680,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput><
         </listitem>
       </varlistentry>
 
+<!--
       <varlistentry id="tzselect">
         <term><command>tzselect</command></term>
         <listitem>
@@ -835,6 +691,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput><
           </indexterm>
         </listitem>
       </varlistentry>
+-->
 
       <varlistentry id="xtrace">
         <term><command>xtrace</command></term>
@@ -847,6 +704,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput><
         </listitem>
       </varlistentry>
 
+<!--
       <varlistentry id="zdump">
         <term><command>zdump</command></term>
         <listitem>
@@ -866,6 +724,7 @@ mkdir -pv /etc/ld.so.conf.d</userinput><
           </indexterm>
         </listitem>
       </varlistentry>
+-->
 
       <varlistentry id="ld.so">
         <term><filename class="libraryfile">ld-*.so</filename></term>
diff -Naurp lfs-git-2025-03-26/chapter08/gmp.xml lfs-pacman-2025-03-26/chapter08/gmp.xml
--- lfs-git-2025-03-26/chapter08/gmp.xml	2025-03-25 18:44:40.096203431 -0500
+++ lfs-pacman-2025-03-26/chapter08/gmp.xml	2025-03-25 22:21:39.461716171 -0500
@@ -41,33 +41,75 @@
   <sect2 role="installation">
     <title>Installation of GMP</title>
 
-    <note>
-      <para>If you are building for 32-bit x86, but you have a CPU which is
-      capable of running 64-bit code <emphasis>and</emphasis> you have specified
-      <envar>CFLAGS</envar> in the environment, the configure script will
-      attempt to configure for 64-bits and fail.
-      Avoid this by invoking the configure command below with
-<screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>
-    </note>
-
-    <note>
-      <para>The default settings of GMP produce libraries optimized for
-      the host processor.  If libraries suitable for processors less
-      capable than the host's CPU are desired, generic libraries can be
-      created by appending the <option>--host=none-linux-gnu</option> option
-      to the <command>configure</command> command.</para>
-
-      <!-- To editors: the configure script says "the none host is obsolete,
-           use - -disable-assembly," but don't believe it: with the latter
-           CFLAGS is still automatically set to -march=something.  -->
-    </note>
-
-    <para>Prepare GMP for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --enable-cxx     \
-            --disable-static \
-            --docdir=/usr/share/doc/gmp-&gmp-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Gmp package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/gmp
+cd /sources/gmp
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gmp"
+pkgver="&gmp-version;"
+pkgrel="&gmp-release;"
+pkgdesc="The GMP package contains math libraries for arbitrary precision arithmetic."
+arch=('x86'
+      'x86_64')
+url="&gmp-home;"
+license=('GPLv2'
+         'GPLv3'
+         'LGPLv3')
+groups=('core')
+depends=('gcc'
+         'glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'grep'
+             'm4'
+             'make'
+             'sed'
+             'texinfo')
+source=('&gmp-url;')
+md5sums=('&gmp-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+  # Enable shadow stack support
+  LDFLAGS+=' -Wl,-z,shstk'     \
+  ./configure --prefix=/usr    \
+              --enable-cxx     \
+              --disable-static \
+              --build=${CHOST} \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+
+  # Fix overlinking
+  sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+
+  make
+  make html
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check 2&gt;&amp;1 | tee gmp-check-log
+
+  # 1 test is known to fial in some instances
+  failcount=`awk '/# FAIL:/{total+=$3} ; END{print total}' gmp-check-log`
+  if $failcount -gt 1; then
+      echo "Falure in check, failcount=${failcount}"
+      exit 1
+  fi
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" install-html
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure options:</title>
@@ -87,41 +129,36 @@
         </listitem>
       </varlistentry>
 
-    </variablelist>
-
-    <para>Compile the package and generate the HTML documentation:</para>
-
-<screen><userinput remap="make">make
-make html</userinput></screen>
-
-    <important>
-      <para>The test suite for GMP in this section is considered critical.
-      Do not skip it under any circumstances.</para>
-    </important>
+      <varlistentry>
+        <term><parameter>--build=${CHOST}</parameter></term>
+        <listitem>
+          <para>This parameter builds for the generic target arch, using
+          ${CHOST} ensures that it's build for the correct target CPU as
+	  defined in <filename>/etc/makepkg.conf</filename>.</para>
+        </listitem>
+      </varlistentry>
 
-    <para>Test the results:</para>
+    </variablelist>
 
-<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
+    &pacman-build-add;
 
-    <caution><para>The code in gmp is highly optimized for the processor where
-    it is built. Occasionally, the code that detects the processor misidentifies
-    the system capabilities and there will be errors in the tests or other
-    applications using the gmp libraries with the message
-    <computeroutput>Illegal instruction</computeroutput>.
-    In this case, gmp should be reconfigured with the option
-    <option>--host=none-linux-gnu</option> and rebuilt.</para></caution>
+<screen><userinput>cp gmp-&gmp-version;-&gmp-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gmp-&gmp-version;-&gmp-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <!-- Some tests PASS on a specific uarch but SKIP on other CPUs.
-         For example on K8 the following command outputs 200.  -->
-    <para>Ensure that at least 199 tests in the test suite passed.
-    Check the results by issuing the following command:</para>
+    <para>Update the local cache and install the Gmp package:</para>
 
-<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S gmp --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package and its documentation:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install
-make install-html</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/gmp
+cp PKGBUILD /srv/pacman/source/LFS/gmp
+cd /sources
+rm -rf gmp</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/gnupg.xml lfs-pacman-2025-03-26/chapter08/gnupg.xml
--- lfs-git-2025-03-26/chapter08/gnupg.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/gnupg.xml	2025-03-25 22:21:39.462020910 -0500
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-gnupg" role="wrap">
+  <?dbhtml filename="gnupg.html"?>
+
+  <sect1info condition="script">
+    <productname>gnupg</productname>
+    <productnumber>&gnupg-version;</productnumber>
+    <address>&gnupg-url;</address>
+  </sect1info>
+
+  <title>Gnupg-&gnupg-version;</title>
+
+  <indexterm zone="ch-system-gnupg">
+    <primary sortas="a-Gnupg">Gnupg</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to GnuPG</title>
+
+    <para>The <application>GnuPG</application> package contains a
+    public/private key encryptor. This is useful for signing
+    files or emails as proof of identity and preventing tampering with
+    the contents of the file or email. For a more enhanced version of
+    GnuPG which supports S/MIME, see the gnupg2
+    package.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&gnupg-fin-sbu;</seg>
+        <seg>&gnupg-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of GnuPG</title>
+
+    <para>Create the PKGBUILD for the GnuPG package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/gnupg
+cd /sources/gnupg
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gnupg"
+pkgver="&gnupg-version;"
+pkgrel="&gnupg-release;"
+pkgdesc="The GnuPG package is GNU's tool for secure communication and data storage."
+arch=('x86'
+      'x86_64')
+url="&gnupg-home;"
+license=('GPL3')
+groups=('core')
+depends=('curl'
+         'glibc'
+         'libassuan'
+         'libgcrypt'
+         'libksba'
+         'libusb'
+         'npth'
+         'sqlite')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+makedepends('fuse'
+            'gnutls'
+            'openldap'
+            'tex')
+source=('&gnupg-url;')
+md5sums=('&gnupg-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --libexecdir=/usr/lib
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp gnupg-&gnupg-version;-&gnupg-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gnupg-&gnupg-version;-&gnupg-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the GnuPG package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S gnupg --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/gnupg
+cp PKGBUILD /srv/pacman/source/LFS/gnupg
+cd /sources
+rm -rf gnupg</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para><parameter>--libexecdir=/usr/lib</parameter>: This command
+    creates a <filename class="directory">gnupg</filename> directory in
+    <filename class="directory">/usr/lib</filename> instead of
+    <filename class="directory">/usr/libexec</filename>.</para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>gpg, gpg-zip, gpgsplit, and gpgv</seg>
+        <seg>None</seg>
+        <seg>/usr/lib/gnupg, /usr/share/gnupg and
+        /usr/share/doc/gnupg-&gnupg-version;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="gpg">
+        <term><command>gpg</command></term>
+        <listitem>
+          <para>is the backend (command-line interface) for
+          this OpenPGP implementation.</para>
+          <indexterm zone="ch-system-gnupg gpg">
+            <primary sortas="b-gpg">gpg</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpg-zip">
+        <term><command>gpg-zip</command></term>
+        <listitem>
+          <para>shell script that implements a gpg-ized version of
+          <command>tar</command>.</para>
+          <indexterm zone="ch-system-gnupg gpg-zip">
+            <primary sortas="b-gpg-zip">gpg-zip</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpgsplit">
+        <term><command>gpgsplit</command></term>
+        <listitem>
+          <para>separates key rings.</para>
+          <indexterm zone="ch-system-gnupg gpgsplit">
+            <primary sortas="b-gpgsplit">gpgsplit</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpgv">
+        <term><command>gpgv</command></term>
+        <listitem>
+          <para>is a verify only version of <command>gpg</command>.</para>
+          <indexterm zone="ch-system-gnupg gpgv">
+            <primary sortas="b-gpgv">gpgv</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/gperf.xml lfs-pacman-2025-03-26/chapter08/gperf.xml
--- lfs-git-2025-03-26/chapter08/gperf.xml	2025-03-25 18:44:40.096210041 -0500
+++ lfs-pacman-2025-03-26/chapter08/gperf.xml	2025-03-25 22:21:39.461112994 -0500
@@ -40,23 +40,73 @@
   <sect2 role="installation">
     <title>Installation of Gperf</title>
 
-    <para>Prepare Gperf for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr --docdir=/usr/share/doc/gperf-&gperf-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Gperf package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>The tests are known to fail if running multiple
-    simultaneous tests (-j option greater than 1). To test
-    the results, issue:</para>
-
-<screen><userinput remap="test">make -j1 check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/gperf
+cd /sources/gperf
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gperf"
+pkgver="&gperf-version;"
+pkgrel="&gperf-release;"
+pkgdesc="Gperf generates a perfect hash function from a key set."
+arch=('x86'
+      'x86_64')
+url="&gperf-home;"
+license=('GPLv3')
+groups=('core')
+depends=('gcc'
+         'glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'make')
+checkdepends=('diffutils'
+              'expect')
+source=('&gperf-url;')
+md5sums=('&gperf-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-${pkgver}
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  # The tests are known to fail if j>1
+  make -j1 check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp gperf-&gperf-version;-&gperf-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gperf-&gperf-version;-&gperf-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Gperf package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S gperf --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/gperf
+cp PKGBUILD /srv/pacman/source/LFS/gperf
+cd /sources
+rm -rf gperf</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/gpgme.xml lfs-pacman-2025-03-26/chapter08/gpgme.xml
--- lfs-git-2025-03-26/chapter08/gpgme.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/gpgme.xml	2025-03-25 22:21:39.462029160 -0500
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-gpgme" role="wrap">
+  <?dbhtml filename="gpgme.html"?>
+
+  <sect1info condition="script">
+    <productname>gpgme</productname>
+    <productnumber>&gpgme-version;</productnumber>
+    <address>&gpgme-url;</address>
+  </sect1info>
+
+  <title>Gpgme-&gpgme-version;</title>
+
+  <indexterm zone="ch-system-gpgme">
+    <primary sortas="a-Gpgme">Gpgme</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>GPGME</application> package is a C library
+      that allows cryptography support to be added to a
+      program. It is designed to make access to public key crypto
+      engines like <application>GnuPG</application> or GpgSM easier
+      for applications. <application>GPGME</application> provides
+      a high-level crypto API for encryption, decryption, signing,
+      signature verification and key management.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&gpgme-fin-sbu;</seg>
+        <seg>&gpgme-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of GPGME</title>
+
+    <para>Create the PKGBUILD for the GPGME package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/gpgme
+cd /sources/gpgme
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gpgme"
+pkgver="&gpgme-version;"
+pkgrel="&gpgme-release;"
+pkgdesc="The GPGME package is a C library that allows cryptography support to be added to a program."
+arch=('x86'
+      'x86_64')
+url="&gpgme-home;"
+license=('GPL3')
+groups=('core')
+depends=('glibc'
+         'gnupg'
+         'libassuan'
+         'python')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make')
+optdepends=('clisp'
+            'doxygen'
+            'graphviz'
+            'qt'
+            'swig')
+source=('&gpgme-url;')
+md5sums=('&gpgme-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-gpg-test
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp gpgme-&gpgme-version;-&gpgme-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gpgme-&gpgme-version;-&gpgme-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the GPGME package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S gpgme --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/gpgme
+cp PKGBUILD /srv/pacman/source/LFS/gpgme
+cd /sources
+rm -rf gpgme</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--disable-gpg-test</parameter>: if this parameter is not
+      passed to configure, the test programs are built during
+      <command>make</command> stage, which requires gnupg2.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          gpgme-config, gpgme-json, and gpgme-tool
+        </seg>
+        <seg>
+          libgpgme, libgpgmepp.so, and libqgpgme.so
+        </seg>
+        <seg>
+          /usr/include/{gpgme++,qgpgme,QGpgME},
+          /usr/lib/cmake/{Gpgmepp,QGpgme}.
+          /usr/lib/python{2.7,3.7}/site-packages/gpg, and
+          /usr/share/common-lisp/source/gpgme
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="gpgme-config">
+        <term><command>gpgme-config</command></term>
+        <listitem>
+          <para>
+            is used to obtain <application>GPGME</application> compilation and
+            linking information.
+          </para>
+          <indexterm zone="ch-system-gpgme gpgme-config">
+            <primary sortas="b-gpgme-config">gpgme-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpgme-json">
+        <term><command>gpgme-json</command></term>
+        <listitem>
+          <para>
+            outputs <application>GPGME</application> commands in JSON format.
+          </para>
+          <indexterm zone="ch-system-gpgme gpgme-json">
+            <primary sortas="b-gpgme-json">gpgme-json</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpgme-tool">
+        <term><command>gpgme-tool</command></term>
+        <listitem>
+          <para>
+            prints fingerprint and keyid with keyservers.
+          </para>
+          <indexterm zone="ch-system-gpgme gpgme-tool">
+            <primary sortas="b-gpgme-tool">gpgme-tool</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <!-- As of 1.13.1, this library isn't present anymore.
+      <varlistentry id="libgpgme-pthread">
+        <term><filename class="libraryfile">libgpgme-pthread.so</filename></term>
+        <listitem>
+          <para>
+            contains the <application>GPGME</application> API functions for
+            applications using pthread.
+          </para>
+          <indexterm zone="ch-system-gpgme libgpgme-pthread">
+            <primary sortas="c-libgpgme-pthread">libgpgme-pthread.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+      -->
+
+      <varlistentry id="libgpgme">
+        <term><filename class="libraryfile">libgpgme.so</filename></term>
+        <listitem>
+          <para>
+            contains the <application>GPGME</application> API functions.
+          </para>
+          <indexterm zone="ch-system-gpgme libgpgme">
+            <primary sortas="c-libgpgme">libgpgme.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libgpgmepp">
+        <term><filename class="libraryfile">libgpgmepp.so</filename></term>
+        <listitem>
+          <para>
+            contains the C++ <application>GPGME</application> API functions.
+          </para>
+          <indexterm zone="ch-system-gpgme libgpgmepp">
+            <primary sortas="c-libgpgmepp">libgpgmepp.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libqgpgme">
+        <term><filename class="libraryfile">libqgpgme.so</filename></term>
+        <listitem>
+          <para>
+            contains API functions for handling GPG operations in
+            <application>Qt</application> applications.
+          </para>
+          <indexterm zone="ch-system-gpgme libqgpgme">
+            <primary sortas="c-libqgpgme">libqgpgme.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/grep.xml lfs-pacman-2025-03-26/chapter08/grep.xml
--- lfs-git-2025-03-26/chapter08/grep.xml	2025-03-25 18:44:40.096215641 -0500
+++ lfs-pacman-2025-03-26/chapter08/grep.xml	2025-03-25 22:21:39.461152083 -0500
@@ -45,23 +45,84 @@
        tests on some packages fail:
     </para>
 
-<screen><userinput remap="pre">sed -i "s/echo/#echo/" src/egrep.sh</userinput></screen>
+    <para>Create the PKGBUILD for the Grep package with the following
+    commands:</para>
 
-    <para>Prepare Grep for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/grep
+cd /sources/grep
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="grep"
+pkgver="&grep-version;"
+pkgrel="&grep-release;"
+pkgdesc="The Grep package contains programs for searching through the contents of files."
+arch=('x86'
+      'x86_64')
+url="&grep-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'patch'
+             'sed'
+             'texinfo')
+checkdepends=('gawk')
+optdepends=('pcre'
+            'libsigsegv')
+source=('&grep-url;')
+md5sums=('&grep-md5;')
+
+prepare(){
+  cd ${pkgname}-${pkgver}
+  # First, remove a warning about using egrep and fgrep that makes tests on some packages fail
+  sed -i "s/echo/#echo/" src/egrep.sh
+}
+
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp grep-&grep-version;-&grep-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/grep-&grep-version;-&grep-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Grep package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S grep --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/grep
+cp PKGBUILD /srv/pacman/source/LFS/grep
+cd /sources
+rm -rf grep</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/groff.xml lfs-pacman-2025-03-26/chapter08/groff.xml
--- lfs-git-2025-03-26/chapter08/groff.xml	2025-03-25 18:44:40.096222081 -0500
+++ lfs-pacman-2025-03-26/chapter08/groff.xml	2025-03-25 22:21:39.461262613 -0500
@@ -41,29 +41,93 @@
   <sect2 role="installation">
     <title>Installation of Groff</title>
 
-    <para>Groff expects the environment variable <envar>PAGE</envar> to
-    contain the default paper size. For users in the United States,
-    <parameter>PAGE=letter</parameter> is appropriate. Elsewhere,
-    <parameter>PAGE=A4</parameter> may be more suitable. While the default
-    paper size is configured during compilation, it can be overridden later
-    by echoing either <quote>A4</quote> or <quote>letter</quote> to the
-    <filename>/etc/papersize</filename> file.</para>
+    <para>Create the PKGBUILD for the Groff package with the following
+    commands:</para>
 
-    <para>Prepare Groff for compilation:</para>
-
-<screen><userinput remap="configure">PAGE=<replaceable>&lt;paper_size&gt;</replaceable> ./configure --prefix=/usr</userinput></screen>
-
-    <para>Build the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/groff
+cd /sources/groff
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="groff"
+pkgver="&groff-version;"
+pkgrel="&groff-release;"
+pkgdesc="The Groff package contains programs for processing and formatting text."
+arch=('x86'
+      'x86_64')
+url="&groff-home;"
+license=('GPLv3')
+groups=('core')
+depends=('gcc'
+         'glibc'
+         'perl'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'bison'
+             'coreutils'
+             'gawk'
+             'grep'
+             'make'
+             'patch'
+             'sed'
+             'texinfo')
+optdepends=('ghostscript'
+            'uchardet')
+backup=('etc/papersize')
+source=('&groff-url;')
+md5sums=('&groff-md5;')
+_ps=A4
+echo "$LANG" | grep "US" > /dev/null 2>&amp;1 &amp;&amp; _ps=letter
+echo "$LANG" | grep "CA" > /dev/null 2>&amp;1 &amp;&amp; _ps=letter
+
+build(){
+  cd "${pkgname}-${pkgver}"
+
+  # Groff expects the environment variable PAGE to contain the default paper
+  # size. For users in the United States, PAGE=letter is appropriate. Elsewhere,
+  # PAGE=A4 may be more suitable. While the default paper size is configured
+  # during compilation, it can be overridden later by echoing either “A4” or
+  # “letter” to the /etc/papersize file.
+
+  PAGE="${_ps}" ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  # Create the /etc/papersize file
+  install -vdm755 "${pkgdir}/etc"
+  echo "${_ps}" > "${pkgdir}/etc/papersize"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp groff-&groff-version;-&groff-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/groff-&groff-version;-&groff-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Groff package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S groff --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/groff
+cp PKGBUILD /srv/pacman/source/LFS/groff
+cd /sources
+rm -rf groff</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/grub.xml lfs-pacman-2025-03-26/chapter08/grub.xml
--- lfs-git-2025-03-26/chapter08/grub.xml	2025-03-25 18:44:40.096231261 -0500
+++ lfs-pacman-2025-03-26/chapter08/grub.xml	2025-03-25 22:21:39.461970250 -0500
@@ -40,18 +40,6 @@
   <sect2 role="installation">
     <title>Installation of GRUB</title>
 
-    <note>
-      <para>
-        If your system has UEFI support and you wish to boot LFS with UEFI,
-        you need to install GRUB with UEFI support (and its dependencies) by
-        following the instructions on
-        <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>.
-        You may skip this package, or install this package and the BLFS
-        GRUB for UEFI package without conflict (the BLFS page provides
-        instructions for both cases).
-      </para>
-    </note>
-
     <warning>
       <para>Unset any environment variables which may affect the build:</para>
 
@@ -63,18 +51,91 @@
       aggressive optimization.</para>
     </warning>
 
-    <para>
-      Add a file missing from the release tarball:
-    </para>
-
-<screen><userinput remap='pre'>echo <literal>depends bli part_gpt</literal> &gt; grub-core/extra_deps.lst</userinput></screen>
-
-    <para>Prepare GRUB for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr          \
-            --sysconfdir=/etc      \
-            --disable-efiemu       \
-            --disable-werror</userinput></screen>
+    <para>Create the PKGBUILD for the Grub package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/grub
+cd /sources/grub
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="grub"
+pkgver="&grub-version;"
+pkgrel="&grub-release;"
+_ufver="&grub-font-version;"
+pkgdesc="The GRUB package contains the GRand Unified Bootloader."
+arch=('x86'
+      'x86_64')
+url="&grub-home;"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'efivars'
+         'efibootmgr'
+         'gcc'
+         'gettext'
+         'glibc'
+         'xz'
+         'sed'
+         'rootfs')
+makedepends=('binutils'
+             'bison'
+             'coreutils'
+             'diffutils'
+             'grep'
+             'make'
+             'ncurses'
+             'texinfo')
+optdepends=('freetype'
+            'fuse'
+            'lvm2')
+backup=('etc/grub/grub.cfg')
+source=('&grub-url;'
+        '&grub-font-url;')
+md5sums=('&grub-md5;'
+         '&grub-font-md5;')
+noextract=("unifont-${_ufver}.pcf.gz")
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  # Add a file missing from the release tarball
+  echo depends bli part_gpt > grub-core/extra_deps.lst
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr          \
+              --sysconfdir=/etc      \
+              --disable-efiemu       \
+              --with-platform=efi    \
+              --target=x86_64        \
+              --disable-werror
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  # Install an empty grub.cfg
+  install -vdm755 "${pkgdir}/etc/grub"
+  touch "${pkgdir}/etc/grub/grub.cfg"
+
+  # Install the Bash completion file
+  install -vdm755 "${pkgdir}/usr/share/bash-completions/completions"
+  mv -v "${pkgdir}/etc/bash_completion.d/grub" \
+        "${pkgdir}/usr/share/bash-completion/completions"
+
+  # If you have Freetype installed, uncomment the next two lines
+  # mkdir -pv "${pkgdir}/usr/share/fonts/unifont"
+  # gunzip -c "${srcdir}/unifont-${_ufver}.pcf.gz" &gt; /usr/share/fonts/unifont/unifont.pcf
+  # install -vDm755 grub-mkfont "${pkgdir}/usr/bin/"
+  # install -vDm644 ascii.h widthspec.h *.pf2 "${pkgdir}/usr/share/grub/"
+
+  # If Fuse and LVM2 are installed, install grub-mount
+  # install -vDm755 grub-mount ${pkgdir}/usr/bin/
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure options:</title>
@@ -95,21 +156,53 @@
         </listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><parameter>--with-platform=efi</parameter></term>
+        <listitem>
+          <para>This option ensures building GRUB with EFI enabled.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--target=x86_64</parameter></term>
+        <listitem>
+          <para>This option ensures building GRUB for x86_64 even if building
+          on a 32-bit LFS system. Most EFI firmware on x86_64 does not support
+          32-bit bootloaders.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><parameter>--target=i386</parameter></term>
+        <listitem>
+          <para>A few 32-bit x86 platforms have EFI support. And, some x86_64 
+          platforms have a 32-bit EFI implementation, but they are very old and
+	  rare. Use this instead of <parameter>--target=x86_64</parameter> if
+          you are absolutely sure that LFS is running on such a system.</para>
+        </listitem>
+      </varlistentry>
+
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
+
+<screen><userinput>cp grub-&grub-version;-&grub-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/grub-&grub-version;-&grub-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<screen><userinput remap="make">make</userinput></screen>
+    <para>Update the local cache and install the Grub package:</para>
 
-    <para>The test suite for this packages is not recommended.  Most of
-    the tests depend on packages that are not available in the limited
-    LFS environment. To run the tests anyway, run <command>make check</command>.</para>
+<screen><userinput>pacman -Syu
+pacman -S grub --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package, and move the Bash completion support file to
-    the location recommended by the Bash completion maintainers:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install
-mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/grub
+cp PKGBUILD /srv/pacman/source/LFS/grub
+cd /sources
+rm -rf grub</userinput></screen>
 
   <para>Making your LFS system bootable with GRUB will be discussed in
   <xref linkend="ch-bootable-grub" role='.'/></para>
@@ -127,15 +220,15 @@ mv -v /etc/bash_completion.d/grub /usr/s
 
        <seg>grub-bios-setup,      grub-editenv,    grub-file,        grub-fstest,
             grub-glue-efi,        grub-install,    grub-kbdcomp,     grub-macbless,
-            grub-menulst2cfg,     grub-mkconfig,
+            grub-menulst2cfg,     grub-mkconfig,   grub-mkfont,
                                   grub-mkimage,    grub-mklayout,    grub-mknetdir,
             grub-mkpasswd-pbkdf2, grub-mkrelpath,  grub-mkrescue,    grub-mkstandalone,
-            grub-ofpathname,      grub-probe,      grub-reboot,      grub-render-label,
-            grub-script-check,
+            grub-mount            grub-ofpathname, grub-probe,       grub-reboot,
+            grub-render-label,    grub-script-check,
             grub-set-default,     grub-sparc64-setup, and grub-syslinux2cfg</seg>
 
-        <seg>/usr/lib/grub, /etc/grub.d, /usr/share/grub, and /boot/grub (when grub-install
-        is first run)</seg>
+	<seg>/usr/lib/grub, /usr/lib/grub/x86_64-efi, /etc/grub.d, /usr/share/grub,
+        and /boot/grub</seg>
       </seglistitem>
     </segmentedlist>
 
@@ -247,6 +340,16 @@ mv -v /etc/bash_completion.d/grub /usr/s
         </listitem>
       </varlistentry>
 
+      <varlistentry id="grub-mkfont">
+        <term><command>grub-mkfont</command></term>
+        <listitem>
+          <para>Converts common font file formats into PF2</para>
+          <indexterm zone="ch-system-grub grub-mkfont">
+            <primary sortas="b-grub-mkfont">grub-mkfont</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
       <varlistentry id="grub-mkimage">
         <term><command>grub-mkimage</command></term>
         <listitem>
@@ -318,6 +421,16 @@ mv -v /etc/bash_completion.d/grub /usr/s
           </indexterm>
         </listitem>
       </varlistentry>
+
+      <varlistentry id="grub-mount">
+        <term><command>grub-mount</command></term>
+        <listitem>
+          <para>A debug tool for filesystem drivers</para>
+          <indexterm zone="ch-system-grub grub-mount">
+            <primary sortas="b-grub-mount">grub-mount</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
 
       <varlistentry id="grub-ofpathname">
         <term><command>grub-ofpathname</command></term>
diff -Naurp lfs-git-2025-03-26/chapter08/gzip.xml lfs-pacman-2025-03-26/chapter08/gzip.xml
--- lfs-git-2025-03-26/chapter08/gzip.xml	2025-03-25 18:44:40.096239301 -0500
+++ lfs-pacman-2025-03-26/chapter08/gzip.xml	2025-03-25 22:21:39.461598851 -0500
@@ -41,21 +41,74 @@
   <sect2 role="installation">
     <title>Installation of Gzip</title>
 
-    <para>Prepare Gzip for compilation:</para>
+    <para>Create the PKGBUILD for the Gzip package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/gzip
+cd /sources/gzip
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="gzip"
+pkgver="&gzip-version;"
+pkgrel="&gzip-release;"
+pkgdesc="The Gzip package contains programs for compressing and decompressing files."
+arch=('x86'
+      'x86_64')
+url="&gzip-home;"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('diffutils'
+              'less')
+source=('&gzip-url;')
+md5sums=('&gzip-md5;')
+ 
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp gzip-&gzip-version;-&gzip-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/gzip-&gzip-version;-&gzip-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Gzip package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S gzip --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/gzip
+cp PKGBUILD /srv/pacman/source/LFS/gzip
+cd /sources
+rm -rf gzip</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/iana-etc.xml lfs-pacman-2025-03-26/chapter08/iana-etc.xml
--- lfs-git-2025-03-26/chapter08/iana-etc.xml	2025-03-25 18:44:40.096245831 -0500
+++ lfs-pacman-2025-03-26/chapter08/iana-etc.xml	2025-03-25 22:21:39.461876830 -0500
@@ -41,9 +41,76 @@
   <sect2 role="installation">
     <title>Installation of Iana-Etc</title>
 
-    <para>For this package, we only need to copy the files into place:</para>
+    <para>Prepare the PKGBUILD file for iana-etc:</para>
 
-<screen><userinput remap="install">cp services protocols /etc</userinput></screen>
+<screen><userinput>mkdir /sources/iana-etc
+cd /sources/iana-etc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="iana-etc"
+pkgver="&iana-etc-version;"
+pkgrel="&iana-etc-release;"
+pkgdesc="The Iana-Etc package provides data for network services and protocols."
+arch=('any')
+url="&iana-etc-home;"
+license=('OSL3')
+groups=('core')
+depends=('coreutils'
+         'rootfs')
+makedepends=('make')
+backup=('etc/services'
+        'etc/protocols')
+source=("&iana-etc-url;")
+md5sums=('&iana-etc-md5;')
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make get
+  make
+  make DESTDIR="${pkgdir}" install
+  install -vdm755 "${pkgdir}/usr/libexec/iana-etc"
+  install -vm644 protocols.gawk "${pkgdir}/usr/libexec/iana-etc"
+  install -vm644 services.gawk "${pkgdir}/usr/libexec/iana-etc"
+  install -vm644 get.pl "${pkgdir}/usr/libexec/iana-etc"
+  install -vdm755 "${pkgdir}/usr/sbin"
+  cat &gt; "${pkgdir}/usr/sbin/iana-update" &lt;&lt; "EOF"
+#!/bin/bash
+
+TEMPDIR=`mktemp -d`
+cd ${TEMPDIR}
+perl /usr/libexec/iana-etc/get.pl protocol-numbers
+perl /usr/libexec/iana-etc/get.pl service-names-port-numbers
+awk -f /usr/libexec/iana-etc/protocols.gawk -F"[&lt;&gt;]" protocol-numbers.xml > protocols
+awk -f /usr/libexec/iana-etc/services.gawk -F"[&lt;&gt;]" service-names-port-numbers.xml > services
+mv /etc/protocols{,.old}
+mv /etc/services{,.old}
+install -vm644 protocols /etc
+install -vm644 services /etc
+EOF
+  chmod 755 "${pkgdir}/usr/sbin/iana-update"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp iana-etc-&iana-etc-version;-&iana-etc-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/iana-etc-&iana-etc-version;-&iana-etc-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the iana-etc package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S iana-etc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/iana-etc
+cp PKGBUILD /srv/pacman/source/LFS/iana-etc
+cd /sources
+rm -rf iana-etc</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/inetutils.xml lfs-pacman-2025-03-26/chapter08/inetutils.xml
--- lfs-git-2025-03-26/chapter08/inetutils.xml	2025-03-25 18:44:40.096251961 -0500
+++ lfs-pacman-2025-03-26/chapter08/inetutils.xml	2025-03-25 22:21:39.460847345 -0500
@@ -40,22 +40,74 @@
   <sect2 role="installation">
     <title>Installation of Inetutils</title>
 
-    <para>First, make the package build with gcc-14.1 or later:</para>
 
-<screen><userinput remap="pre">sed -i 's/def HAVE_TERMCAP_TGETENT/ 1/' telnet/telnet.c</userinput></screen>
+    <para>Create the PKGBUILD for the Inetutils package with the following
+    commands:</para>
 
-    <para>Prepare Inetutils for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr        \
-            --bindir=/usr/bin    \
-            --localstatedir=/var \
-            --disable-logger     \
-            --disable-whois      \
-            --disable-rcp        \
-            --disable-rexec      \
-            --disable-rlogin     \
-            --disable-rsh        \
-            --disable-servers</userinput></screen>
+<screen><userinput>mkdir /sources/inetutils
+cd /sources/inetutils
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="inetutils"
+pkgver="&inetutils-version;"
+pkgrel="&inetutils-release;"
+pkgdesc="The Inetutils package contains programs for basic networking."
+arch=('x86'
+      'x86_64')
+url="&inetutils-home;"
+license=('GPLv3')
+groups=('core')
+depends=('gcc'
+         'glibc'
+         'ncurses'
+         'readline'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'grep'
+             'make'
+             'patch'
+             'sed'
+             'texinfo'
+             'zlib')
+source=('&inetutils-url;')
+md5sums=('&inetutils-md5;')
+
+prepare(){
+  cd ${pkgname}-${pkgver}
+  # Fix a build issue with gcc-14.1 or later
+  sed -i 's/def HAVE_TERMCAP_TGETENT/ 1/' telnet/telnet.c
+}
+
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr        \
+              --bindir=/usr/bin    \
+              --localstatedir=/var \
+              --disable-logger     \
+              --disable-whois      \
+              --disable-rcp        \
+              --disable-rexec      \
+              --disable-rlogin     \
+              --disable-rsh        \
+              --disable-servers
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+  install -vdm755 ${pkgdir}/usr/sbin
+  mv -v ${pkgdir}/usr/{,s}bin/ifconfig
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -102,26 +154,20 @@
 
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
+    &pacman-build-add;                                                                                                                                                                                                                          <screen><userinput>cp inetutils-&inetutils-version;-&inetutils-release;-$(uname -m).pkg.tar.xz \                           /srv/pacman/repos/LFS/                                                                                               repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \                                                                                   /srv/pacman/repos/LFS/inetutils-&inetutils-version;-&inetutils-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<screen><userinput remap="test">make check</userinput></screen>
-<!--
-    <note><para>One test, libls.sh, may fail in the initial chroot
-    environment but will pass if the test is rerun after the LFS system
-    is complete. One test, ping-localhost.sh, will fail if the host
-    system does not have ipv6 capability.</para></note>
--->
-    <para>Install the package:</para>
+    <para>Update the local cache and install the Inetutils package:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S inetutils --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Move a program to the proper location:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">mv -v /usr/{,s}bin/ifconfig</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/inetutils
+cp PKGBUILD /srv/pacman/source/LFS/inetutils
+cd /sources
+rm -rf inetutils</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/intltool.xml lfs-pacman-2025-03-26/chapter08/intltool.xml
--- lfs-git-2025-03-26/chapter08/intltool.xml	2025-03-25 18:44:40.096259211 -0500
+++ lfs-pacman-2025-03-26/chapter08/intltool.xml	2025-03-25 22:21:39.460869765 -0500
@@ -41,30 +41,81 @@
   <sect2 role="installation">
     <title>Installation of Intltool</title>
 
-    <para>First fix a warning that is caused by perl-5.22 and later:</para>
 
-<screen><userinput remap="pre">sed -i 's:\\\${:\\\$\\{:' intltool-update.in</userinput></screen>
+    <para>Create the PKGBUILD for the Intltool package with the following
+    commands:</para>
 
-    <note><para>The above regular expression looks unusual because of all the
-    backslashes.  What it does is add a backslash before the right brace
-    character in the sequence '\${' resulting in '\$\{'.</para></note>
-
-    <para>Prepare Intltool for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install
-install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-&intltool-version;/I18N-HOWTO</userinput></screen>
+<screen><userinput>mkdir /sources/intltool
+cd /sources/intltool
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="intltool"
+pkgver="&intltool-version;"
+pkgrel="&intltool-release;"
+pkgdesc="The Intltool is used for extracting translatable strings from source files."
+arch=('x86'
+      'x86_64')
+url="&intltool-home;"
+license=('GPLv2')
+groups=('core')
+depends=('autoconf'
+         'automake'
+         'bash'
+         'glibc'
+         'grep'
+         'perl'
+         'sed'
+         'rootfs')
+makedepends=('gawk'
+             'xml-parser')
+checkdepends=('perl')
+source=('&intltool-url;')
+md5sums=('&intltool-md5;')
+    
+prepare(){
+  cd ${pkgname}-${pkgver}</literal>
+  # Fix a warning that is caused by perl-5.22 and later
+<literal>  sed -i 's:\\\${:\\\$\\{:' intltool-update.in
+}
+
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+  install -v -Dm644 doc/I18N-HOWTO ${pkgdir}/usr/share/doc/intltool-${pkgver}/I18N-HOWTO
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp intltool-&intltool-version;-&intltool-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/intltool-&intltool-version;-&intltool-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Intltool package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S intltool --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/intltool
+cp PKGBUILD /srv/pacman/source/LFS/intltool
+cd /sources
+rm -rf intltool</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/iproute2.xml lfs-pacman-2025-03-26/chapter08/iproute2.xml
--- lfs-git-2025-03-26/chapter08/iproute2.xml	2025-03-25 18:44:40.096272451 -0500
+++ lfs-pacman-2025-03-26/chapter08/iproute2.xml	2025-03-25 22:21:39.461137703 -0500
@@ -41,43 +41,85 @@
   <sect2 role="installation">
     <title>Installation of IPRoute2</title>
 
-    <para>The <command>arpd</command> program included in this package will not
-    be built since it depends on Berkeley DB, which is not installed in
-    LFS. However, a directory and a man page for <command>arpd</command> will still
-    be installed. Prevent this by running the commands shown below.
-    </para>
-
-<screen><userinput remap="pre">sed -i /ARPD/d Makefile
-rm -fv man/man8/arpd.8</userinput></screen>
-
-<!-- fixed upstream for 5.16.0
-    <para>It is also necessary to disable building two modules that
-    require <ulink url="&blfs-book;postlfs/iptables.html"/>.</para>
-
-<screen><userinput remap="pre">sed -i 's/.m_ipt.o//' tc/Makefile</userinput></screen>
--->
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make NETNS_RUN_DIR=/run/netns</userinput></screen>
-
-    <para>This package does not have a working test suite.</para>
-<!-- currently not useful, no tests actually run
-    <para>This package comes with a test suite, but due to assumptions it makes,
-    it is not possible to reliably run these tests from within the chroot
-    environment. If you wish to run these tests after booting into your new LFS
-    system, ensure you enable <filename>/proc/config.gz</filename> support
-    in your kernel (&quot;General setup&quot; -> &quot;Enable access to
-    .config through /proc/config.gz&quot; [CONFIG_IKCONFIG_PROC]), then run
-    'make alltests' from the <filename class="directory">testsuite/</filename>
-    subdirectory.</para>-->
+    <para>Create the PKGBUILD for the IPRoute2 package with the following
+    commands:</para>
 
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make SBINDIR=/usr/sbin install</userinput></screen>
-
-    <para>If desired, install the documentation:</para>
-
-<screen><userinput remap="install">install -vDm644 COPYING README* -t /usr/share/doc/iproute2-&iproute2-version;</userinput></screen>
+<screen><userinput>mkdir /sources/iproute2
+cd /sources/iproute2
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="iproute2"
+pkgver="&iproute2-version;"
+pkgrel="&iproute2-release;"
+pkgdesc="The IPRoute2 package contains programs for basic and advanced IP-based networking."
+arch=('x86'
+      'x86_64')
+url="&iproute2-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'coreutils'
+         'glibc'
+         'libcap'
+         'libelf'
+         'zlib'
+         'rootfs')
+makedepends=('bison'
+             'flex'
+             'gcc'
+             'make'
+             'libtirpc'
+             'linux-api-headers'
+             'pkgconf')
+optdepends=('db'
+            'iptables'
+            'libbpf
+            'libmnl)
+source=('&iproute2-url;')
+md5sums=('&iproute2-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  # The arpd program included in this package will not be built since it
+  # depends on Berkeley DB, which is not installed in LFS. However, a
+  # directory and a man page for arpd will still be installed. Prevent this
+  # by running the commands shown below.
+  sed -i /ARPD/d Makefile
+  rm -fv man/man8/arpd.8
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  make NETNS_RUN_DIR=/run/netns
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR=${pkgdir} SBINDIR=/usr/sbin install
+  install -vDm644 COPYING README* -t ${pkgdir}/usr/share/doc/${pkgname}-${pkgver}
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp iproute2-&iproute2-version;-&iproute2-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/iproute2-&iproute2-version;-&iproute2-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the IPRoute2 package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S iproute2 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/iproute2
+cp PKGBUILD /srv/pacman/source/LFS/iproute2
+cd /sources
+rm -rf iproute2</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/isl.xml lfs-pacman-2025-03-26/chapter08/isl.xml
--- lfs-git-2025-03-26/chapter08/isl.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/isl.xml	2025-03-25 22:21:39.461444402 -0500
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-isl" role="wrap">
+  <?dbhtml filename="isl.html"?>
+
+  <sect1info condition="script">
+    <productname>isl</productname>
+    <productnumber>&isl-version;</productnumber>
+    <address>&isl-url;</address>
+  </sect1info>
+
+  <title>ISL-&isl-version;</title>
+
+  <indexterm zone="ch-system-isl">
+    <primary sortas="a-ISL">ISL</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The ISL (Integer Set Library) contains a library for manipulating sets and relations of integer points bounded by linear constraints.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&isl-fin-sbu;</seg>
+        <seg>&isl-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of ISL</title>
+
+    <para>Create the PKGBUILD for the Mpc package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/isl
+cd /sources/isl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="isl"
+pkgver="&isl-version;"
+pkgrel="&isl-release;"
+pkgdesc="The ISL (Integer Set Library) contains a library for manipulating sets and relations of integer points bounded by linear constraints."
+arch=('x86'
+      'x86_64')
+url="&isl-home;"
+license=('LGPLv3')
+groups=('core')
+depends=('glibc'
+         'gmp')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&isl-url;')
+md5sums=('&isl-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr        \
+              --disable-static
+  make
+  make html
+
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  # Install the gdb.py file in the auto-load directory
+  install -dm755 "${pkgdir}"/usr/share/gdb/auto-load/usr/lib/
+  mv "${pkgdir}"/usr/lib/libisl.so.*-gdb.py "${pkgdir}"/usr/share/gdb/auto-load/usr/lib/
+
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp isl-&isl-version;-&isl-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/isl-&isl-version;-&isl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Mpc package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S isl --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/isl
+cp PKGBUILD /srv/pacman/source/LFS/isl
+cd /sources
+rm -rf isl</userinput></screen>
+
+  </sect2>
+
+
+  <sect2 id="contents-isl" role="content">
+    <title>Contents of ISL</title>
+
+    <segmentedlist>
+      <segtitle>Installed libraries</segtitle>
+
+      <seglistitem>
+        <seg>libisl.so</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libisl">
+        <term><filename class="libraryfile">libisl</filename></term>
+        <listitem>
+          <para>Contains integer set math functions</para>
+          <indexterm zone="ch-system-isl libisl">
+            <primary sortas="c-libisl">libisl</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/jinja2.xml lfs-pacman-2025-03-26/chapter08/jinja2.xml
--- lfs-git-2025-03-26/chapter08/jinja2.xml	2025-03-25 18:44:40.096279421 -0500
+++ lfs-pacman-2025-03-26/chapter08/jinja2.xml	2025-03-25 22:21:39.461669021 -0500
@@ -40,13 +40,59 @@
   <sect2 role="installation">
     <title>Installation of Jinja2</title>
 
-    <para>Build the package:</para>
+    <para>Create the PKGBUILD for the Jinja2 package with the following
+    commands:</para>
 
-<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">pip3 install --no-index --find-links dist Jinja2</userinput></screen>
+<screen><userinput>mkdir /sources/jinja2
+cd /sources/jinja2
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="jinja2"
+pkgver="&jinja2-version;"
+pkgrel="&jinja2-release;"
+pkgdesc="A Python module that implements a simple pythonic template language." 
+arch=('any')
+url="&jinja2-home;"
+license=('BSD3C')
+groups=('core')
+depends=('markupsafe'
+         'python')
+makedepends=('setuptools'
+             'wheel')
+source=('&jinja2-url;')
+md5sums=('&jinja2-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}
+  pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+}
+
+package(){
+  cd "${pkgname}-${pkgver}
+  pip3 install --root "${pkgdir}" --no-index --find-links dist Jinja2
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp jinja2-&jinja2-version;-&jinja2-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/jinja2-&jinja2-version;-&jinja2-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Jinja2 package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S jinja2 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/jinja2
+cp PKGBUILD /srv/pacman/source/LFS/jinja2
+cd /sources
+rm -rf jinja2</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/kbd.xml lfs-pacman-2025-03-26/chapter08/kbd.xml
--- lfs-git-2025-03-26/chapter08/kbd.xml	2025-03-25 18:44:40.096286121 -0500
+++ lfs-pacman-2025-03-26/chapter08/kbd.xml	2025-03-25 22:21:39.461690591 -0500
@@ -41,26 +41,77 @@
   <sect2 role="installation">
     <title>Installation of Kbd</title>
 
-    <para>The behavior of the backspace and delete keys is not consistent
-    across the keymaps in the Kbd package. The following patch fixes this
-    issue for i386 keymaps:</para>
+    <para>Create the PKGBUILD for the Kbd package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">patch -Np1 -i ../&kbd-backspace-patch;</userinput></screen>
-
-    <para>After patching, the backspace key generates the character with code 127,
-    and the delete key generates a well-known escape sequence.</para>
-
-    <para>Remove the redundant <command>resizecons</command> program (it requires
-    the defunct svgalib to provide the video mode files - for normal use
-    <command>setfont</command> sizes the console appropriately) together with its
-    manpage.</para>
-
-<screen><userinput remap="pre">sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
-sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in</userinput></screen>
-
-    <para>Prepare Kbd for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr --disable-vlock</userinput></screen>
+<screen><userinput>mkdir /sources/kbd
+cd /sources/kbd
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="kbd"
+pkgver="&kbd-version;"
+pkgrel="&kbd-release;"
+pkgdesc="The Kbd package contains key-table files, console fonts, and keyboard utilities."
+arch=('x86'
+      'x86_64')
+url="&kbd-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'coreutils'
+         'glibc'
+         'linux-pam'
+         'rootfs')
+makedepends=('binutils'
+             'bison'
+             'check'
+             'flex'
+             'gcc'
+             'gettext'
+             'gzip'
+             'make'
+             'patch'
+             'sed')
+source=('&kbd-url;'
+        '&patches-root;&kbd-backspace-patch;')
+md5sums=('&kbd-md5;'
+         '&kbd-backspace-patch-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+
+  # The behaviour of the backspace and delete keys is not consistent
+  # across the keymaps in the Kbd package. The following patch fixes this
+  # issue for i386 keymaps
+  patch -Np1 -i "${srcdir}/${pkgname}-${pkgver}-backspace-1.patch"
+
+  # Remove the redundant resizeicons program (it requires the defunct svgalib to
+  # provide the video mode files - for normal use setfont sizes the console
+  # appropriately) together with its manpage.
+  sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
+  sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  # Unlike in vanila LFS, we do not disable vclock as PAM is installed
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make -j1 DESTDIR="${pkgdir}" install
+  install -vdm755     "${pkgdir}/usr/share/doc/kbd-${pkgver}"
+  cp -R -v docs/doc/* "${pkgdir}/usr/share/doc/kbd-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure option:</title>
@@ -76,17 +127,25 @@ sed -i 's/resizecons.8 //' docs/man/man8
 
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp kbd-&kbd-version;-&kbd-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/kbd-&kbd-version;-&kbd-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Kbd package:</para>
 
-<screen><userinput remap="test">make check</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S kbd --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/kbd
+cp PKGBUILD /srv/pacman/source/LFS/kbd
+cd /sources
+rm -rf kbd</userinput></screen>
 
     <note>
       <para>For some languages (e.g., Belarusian) the Kbd package doesn't
@@ -95,10 +154,6 @@ sed -i 's/resizecons.8 //' docs/man/man8
       such languages have to download working keymaps separately.</para>
     </note>
 
-    <para>If desired, install the documentation:</para>
-
-<screen><userinput remap="install">cp -R -v docs/doc -T /usr/share/doc/kbd-&kbd-version;</userinput></screen>
-
   </sect2>
 
   <sect2 id="contents-kbd" role="content">
diff -Naurp lfs-git-2025-03-26/chapter08/kmod.xml lfs-pacman-2025-03-26/chapter08/kmod.xml
--- lfs-git-2025-03-26/chapter08/kmod.xml	2025-03-25 18:44:40.096294151 -0500
+++ lfs-pacman-2025-03-26/chapter08/kmod.xml	2025-03-25 22:21:39.461518982 -0500
@@ -41,15 +41,68 @@
   <sect2 role="installation">
     <title>Installation of Kmod</title>
 
-    <para>Prepare Kmod for compilation:</para>
+    <para>Create the PKGBUILD for the Kmod package with the following
+    commands:</para>
 
-    <screen><userinput remap="configure">mkdir -p build
-cd       build
-
-meson setup --prefix=/usr ..    \
-            --sbindir=/usr/sbin \
-            --buildtype=release \
-            -D manpages=false</userinput></screen>
+<screen><userinput>mkdir /sources/kmod
+cd /sources/kmod
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="kmod"
+pkgver="&kmod-version;"
+pkgrel="&kmod-release;"
+pkgdesc="The Kmod package contains libraries and utilities for loading kernel modules."
+arch=('x86'
+      'x86_64')
+url="&kmod-home;"
+license=('LGPLv2.1')
+groups=('core')
+depends=('glibc'
+         'xz'
+         'zlib'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'bison'
+             'coreutils'
+             'flex'
+             'gcc'
+             'gettext'
+             'gzip'
+             'make'
+             'pkg-config'
+             'sed')
+source=('&kmod-url;')
+md5sums=('&kmod-md5;')
+    
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  mkdir -p build
+  cd       build
+}
+
+build(){
+  cd "${pkgname}-${pkgver}/build"
+  meson setup --prefix=/usr ..    \
+              --sbindir=/usr/sbin \
+              --buildtype=release \
+              -D manpages=false
+  ninja
+}
+
+check(){
+  cd "${pkgname}-${pkgver}/build"
+  # Do nothing as the test suite depends on raw kernel headers
+  # A "linux-source" package would make sense here
+  echo ""
+}
+
+package(){
+  cd "${pkgname}-${pkgver}/build"
+  DESTDIR="${pkgdir}" ninja install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -66,17 +119,30 @@ meson setup --prefix=/usr ..    \
 
     </variablelist>
 
-    <para>Compile the package:</para>
+    <para>Prepare the build directory for the pacman user and build the
+    package:</para>
+
+<screen><userinput>chown -R root:pacman .
+chmod 2775 .
+chmod 664 PKGBUILD
+su pacman -c 'makepkg -L --nodeps --nocheck'</userinput></screen>
+
+<para>Add the newly created package to the central package repository:</para>
+
+<screen><userinput>cp kmod-&kmod-version;-&kmod-release;-$(uname -m).pkg.tar.xz \                           /srv/pacman/repos/LFS/                                                                                               repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \                                                                                   /srv/pacman/repos/LFS/kmod-&kmod-version;-&kmod-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<screen><userinput remap="make">ninja</userinput></screen>
+    <para>Update the local cache and install the Kmod package:</para>
 
-    <para>The test suite of this package requires raw kernel headers
-    (not the <quote>sanitized</quote> kernel headers installed earlier),
-    which are beyond the scope of LFS.</para>
+<screen><userinput>pacman -Syu
+pacman -S kmod --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Now install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">ninja install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/kmod
+cp PKGBUILD /srv/pacman/source/LFS/kmod
+cd /sources
+rm -rf kmod</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/less.xml lfs-pacman-2025-03-26/chapter08/less.xml
--- lfs-git-2025-03-26/chapter08/less.xml	2025-03-25 18:44:40.096300461 -0500
+++ lfs-pacman-2025-03-26/chapter08/less.xml	2025-03-25 22:21:39.461185153 -0500
@@ -40,9 +40,69 @@
   <sect2 role="installation">
     <title>Installation of Less</title>
 
-    <para>Prepare Less for compilation:</para>
+    <para>Create the PKGBUILD for the Less package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr --sysconfdir=/etc</userinput></screen>
+<screen><userinput>mkdir /sources/less
+cd /sources/less
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="less"
+pkgver="&less-version;"
+pkgrel="&less-release;"
+pkgdesc="The Less package contains a text file viewer."
+arch=('x86'
+      'x86_64')
+url="&less-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'ncurses'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+optdepends=('pcre')
+source=('&less-url;')
+md5sums=('&less-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr --sysconfdir=/etc
+  make
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp less-&less-version;-&less-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/less-&less-version;-&less-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Less package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S less --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/less
+cp PKGBUILD /srv/pacman/source/LFS/less
+cd /sources
+rm -rf less</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -58,17 +118,25 @@
 
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp less-&less-version;-&less-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/less-&less-version;-&less-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Less package:</para>
 
-<screen><userinput remap="test">make check</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S less --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/less
+cp PKGBUILD /srv/pacman/source/LFS/less
+cd /sources
+rm -rf less</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libarchive.xml lfs-pacman-2025-03-26/chapter08/libarchive.xml
--- lfs-git-2025-03-26/chapter08/libarchive.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libarchive.xml	2025-03-25 22:21:39.461806400 -0500
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libarchive" role="wrap">
+  <?dbhtml filename="libarchive.html"?>
+
+  <sect1info condition="script">
+    <productname>libarchive</productname>
+    <productnumber>&libarchive-version;</productnumber>
+    <address>&libarchive-url;</address>
+  </sect1info>
+
+  <title>Libarchive-&libarchive-version;</title>
+
+  <indexterm zone="ch-system-libarchive">
+    <primary sortas="a-Libarchive">Libarchive</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libarchive</application> library provides a single
+      interface for reading/writing various compression formats.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libarchive-fin-sbu;</seg>
+        <seg>&libarchive-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libarchive</title>
+
+    <para>Create the PKGBUILD for the libarchive package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libarchive
+cd /sources/libarchive
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libarchive"
+pkgver="&libarchive-version;"
+pkgrel="&libarchive-release;"
+pkgdesc="Provides a single interface for reading/writing various compression formats."
+arch=('x86'
+      'x86_64')
+url="&libarchive-home;"
+groups=('core')
+license=('BSD3C')
+depends=('acl'
+         'bzip2'
+         'glibc'
+         'libxml2'
+         'lz4'
+         'nettle'
+         'openssl'
+         'rootfs'
+         'xz'
+         'zlib'
+         'zstd')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&libarchive-url;')
+md5sums=('&libarchive-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --with-nettle
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  ln -sfv bsdunzip "${pkgdir}/usr/bin/unzip"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libarchive-&libarchive-version;-&libarchive-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libarchive-&libarchive-version;-&libarchive-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libarchive package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libarchive --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libarchive
+cp PKGBUILD /srv/pacman/source/LFS/libarchive
+cd /sources
+rm -rf libarchive</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          bsdcat, bsdcpio, and bsdtar
+        </seg>
+        <seg>
+          libarchive.so
+        </seg>
+        <seg>
+          None
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="bsdcat">
+        <term><command>bsdcat</command></term>
+        <listitem>
+          <para>
+            expands files to standard output.
+          </para>
+          <indexterm zone="ch-system-libarchive bsdcat">
+            <primary sortas="b-bsdcat">bsdcat</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="bsdcpio">
+        <term><command>bsdcpio</command></term>
+        <listitem>
+          <para>
+            is a tool similar to <command>cpio</command>.
+          </para>
+          <indexterm zone="ch-system-libarchive bsdcpio">
+            <primary sortas="b-bsdcpio">bsdcpio</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="bsdtar">
+        <term><command>bsdtar</command></term>
+        <listitem>
+          <para>
+            is a tool similar to GNU <command>tar</command>.
+          </para>
+          <indexterm zone="ch-system-libarchive bsdtar">
+            <primary sortas="b-bsdtar">bsdtar</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libarchive-lib">
+        <term><filename class="libraryfile">libarchive.so</filename></term>
+        <listitem>
+          <para>
+            is a library that can create and read several streaming
+            archive formats.
+          </para>
+          <indexterm zone="ch-system-libarchive libarchive-lib">
+            <primary sortas="c-libarchive">libarchive.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libassuan.xml lfs-pacman-2025-03-26/chapter08/libassuan.xml
--- lfs-git-2025-03-26/chapter08/libassuan.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libassuan.xml	2025-03-25 22:21:39.461682761 -0500
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libassuan" role="wrap">
+  <?dbhtml filename="libassuan.html"?>
+
+  <sect1info condition="script">
+    <productname>libassuan</productname>
+    <productnumber>&libassuan-version;</productnumber>
+    <address>&libassuan-url;</address>
+  </sect1info>
+
+  <title>Libassuan-&libassuan-version;</title>
+
+  <indexterm zone="ch-system-libassuan">
+    <primary sortas="a-Libassuan">Libassuan</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libassuan</application> package contains an inter
+      process communication library used by some of the other
+      <application>GnuPG</application> related packages.
+      <application>libassuan</application>'s primary use is to allow a
+      client to interact with a non-persistent server.
+      <application>libassuan</application> is not, however, limited to
+      use with <application>GnuPG</application> servers and clients. It
+      was designed to be flexible enough to meet the demands of many
+      transaction based environments with non-persistent servers.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libassuan-fin-sbu;</seg>
+        <seg>&libassuan-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Libassuan</title>
+
+    <para>Create the PKGBUILD for the Libassuan package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libassuan
+cd /sources/libassuan
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libassuan"
+pkgver="&libassuan-version;"
+pkgrel="&libassuan-release;"
+pkgdesc="${pkgname} ${pkgver}"
+arch=('x86'
+      'x86_64')
+url="&libassuan-home;"
+license=('GPLv3'
+         'LGPLv2.1')
+groups=('core')
+depends=('glibc'
+         'libgpg-error')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'inetutils'
+             'make'
+             'readline'
+             'sed')
+optdepends=('texlive')
+source=('&libassuan-url;')
+md5sums=('&libassuan-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+
+  # Build the documenatation
+  make -C doc html
+  makeinfo --html --no-split -o doc/assuan_nochunks.html doc/assuan.texi
+  makeinfo --plaintext       -o doc/assuan.txt           doc/assuan.texi
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR="${pkgdir}/" install
+
+  # Install documentation
+  install -vdm755 ${pkgdir}/usr/share/doc/libassuan-${pkgver}/html
+  install -vm644  doc/assuan.html/* \
+                  ${pkgdir}/usr/share/doc/libassuan-${pkgver}/html
+  install -vm644  doc/assuan_nochunks.html \
+                  ${pkgdir}/usr/share/doc/libassuan-${pkgver}
+  install -vm644  doc/assuan.{txt,texi} \
+                  ${pkgdir}/usr/share/doc/libassuan-${pkgver}
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libassuan-&libassuan-version;-&libassuan-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libassuan-&libassuan-version;-&libassuan-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libassuan package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libassuan --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libassuan
+cp PKGBUILD /srv/pacman/source/LFS/libassuan
+cd /sources
+rm -rf libassuan</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          libassuan-config
+        </seg>
+        <seg>
+          libassuan.so
+        </seg>
+        <seg>
+          /usr/share/doc/libassuan-&libassuan-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libassuan-config">
+        <term><command>libassuan-config</command></term>
+        <listitem>
+          <para>
+            is a <filename class="libraryfile">libassuan</filename> build information script.
+          </para>
+          <indexterm zone="ch-system-libassuan libassuan-config">
+            <primary sortas="b-libassuan-config">libassuan-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libassuan-lib">
+        <term><filename class="libraryfile">libassuan.so</filename></term>
+        <listitem>
+          <para>
+            is an inter process communication library which
+            implements the Assuan protocol.
+          </para>
+          <indexterm zone="ch-system-libassuan libassuan-lib">
+            <primary sortas="c-libassuan">libassuan.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libcap.xml lfs-pacman-2025-03-26/chapter08/libcap.xml
--- lfs-git-2025-03-26/chapter08/libcap.xml	2025-03-25 18:44:40.096308541 -0500
+++ lfs-pacman-2025-03-26/chapter08/libcap.xml	2025-03-25 22:21:39.461456672 -0500
@@ -43,13 +43,64 @@
   <sect2 role="installation">
     <title>Installation of Libcap</title>
 
-    <para>Prevent static libraries from being installed:</para>
 
-<screen><userinput remap="pre">sed -i '/install -m.*STA/d' libcap/Makefile</userinput></screen>
+    <para>Create the PKGBUILD for the Libcap package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make prefix=/usr lib=lib</userinput></screen>
+<screen><userinput>mkdir /sources/libcap
+cd /sources/libcap
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libcap"
+pkgver="&libcap-version;"
+pkgrel="&libcap-release;"
+pkgdesc="The Libcap package implements the user-space interfaces to the POSIX 1003.1e capabilities available in Linux kernels."
+arch=('x86'
+      'x86_64')
+url="&libcap-home;"
+license=('BSD3C'
+         'GPLv2')
+groups=('core')
+depends=('glibc')
+makedepends=('attr'
+             'bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'perl'
+             'sed')
+optdepends=('linux-pam')
+backup=('etc/security/capability.conf')
+source=('&libcap-url;')
+md5sums=('&libcap-md5;')
+    
+prepare() {
+  cd "${pkgname}-${pkgver}"
+  # Prevent installation of the static library
+  sed -i '/install -m.*STA/d' libcap/Makefile
+}
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  make pefix=/usr lib=lib
+  make -C pam_cap
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make test
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make prefix=/usr lib=lib FAKEROOT="${pkgdir}" install
+  install -vdm755 "${pkgdir}"/{etc,usr/lib}/security
+  install -v -m755 pam_cap/pam_cap.so "${pkgdir}/usr/lib/security"
+  install -v -m644 pam_cap/capability.conf "${pkgdir}/etc/security"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the make option:</title>
@@ -65,13 +116,25 @@
       </varlistentry>
     </variablelist>
 
-    <para>To test the results, issue:</para>
+    &pacman-build-add;
+
+<screen><userinput>cp libcap-&libcap-version;-&libcap-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libcap-&libcap-version;-&libcap-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libcap package:</para>
 
-<screen><userinput remap="test">make test</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S libcap --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make prefix=/usr lib=lib install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/libcap
+cp PKGBUILD /srv/pacman/source/LFS/libcap
+cd /sources
+rm -rf libcap</userinput></screen>
 
   </sect2>
 
@@ -84,7 +147,7 @@
 
       <seglistitem>
         <seg>capsh, getcap, getpcaps, and setcap</seg>
-        <seg>libcap.so and libpsx.so</seg>
+        <seg>libcap.so, libpsx.so, and pam_cap.so</seg>
       </seglistitem>
     </segmentedlist>
 
@@ -154,6 +217,17 @@
           </indexterm>
         </listitem>
       </varlistentry>
+
+      <varlistentry id="pam_cap">
+        <term><filename class="libraryfile">pam_cap</filename></term>
+        <listitem>
+          <para><application>Linux-PAM</application> madule for
+          <application>libcap</application></para>
+          <indexterm zone="ch-system-libcap libpsx">
+            <primary sortas="c-libpsx">pam_cap</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
 
     </variablelist>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libelf.xml lfs-pacman-2025-03-26/chapter08/libelf.xml
--- lfs-git-2025-03-26/chapter08/libelf.xml	2025-03-25 18:44:40.096317161 -0500
+++ lfs-pacman-2025-03-26/chapter08/libelf.xml	2025-03-25 22:21:39.460892124 -0500
@@ -44,25 +44,80 @@
       <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>
+      <para>Create the PKGBUILD for the Libelf package with the following
+      commands:</para>
 
-    <screen><userinput remap="configure">./configure --prefix=/usr                \
-            --disable-debuginfod         \
-            --enable-libdebuginfod=dummy</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install only Libelf:</para>
-
-<screen><userinput remap="install">make -C libelf install
-install -vm644 config/libelf.pc /usr/lib/pkgconfig
-rm /usr/lib/libelf.a</userinput></screen>
+<screen><userinput>mkdir /sources/libelf
+cd /sources/libelf
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libelf"
+pkgver="&elfutils-version;"
+pkgrel="&elfutils-release;"
+pkgdesc="Libelf is a library for handling ELF (Executable and Linkable Format) files."
+arch=('x86'
+      'x86_64')
+url="&elfutils-home;"
+license=('GPLv2'
+         'GPLv3'
+         'LGPLv3')
+groups=('core')
+depends=('bzip2'
+         'glibc'
+         'xz'
+         'zlib'
+         'zstd')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make')
+checkdepends=('iproute2')
+source=('&elfutils-url;')
+md5sums=('&elfutils-md5;')
+ 
+build(){
+  cd ${_pkgname}-${pkgver}
+  ./configure --prefix=/usr                \
+              --disable-debuginfod         \
+              --enable-libdebuginfod=dummy
+  make
+}
+
+check(){
+  cd ${_pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${_pkgname}-${pkgver}
+  # Install only libelf
+  make DESTDIR=${pkgdir} -C libelf install
+  install -vm644 config/libelf.pc ${pkgdir}/usr/lib/pkgconfig
+  rm ${pkgdir}/usr/lib/libelf.a
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp elfutils-&elfutils-version;-&elfutils-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/elfutils-&elfutils-version;-&elfutils-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libelf package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libelf --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libelf
+cp PKGBUILD /srv/pacman/source/LFS/libelf
+cd /sources
+rm -rf libelf</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libffi.xml lfs-pacman-2025-03-26/chapter08/libffi.xml
--- lfs-git-2025-03-26/chapter08/libffi.xml	2025-03-25 18:44:40.096323321 -0500
+++ lfs-pacman-2025-03-26/chapter08/libffi.xml	2025-03-25 22:21:39.461124633 -0500
@@ -61,19 +61,75 @@
       <option>--without-gcc-arch</option> to produce a generic library.</para>
     </note>
 
-    <para>Prepare Libffi for compilation:</para>
 
-    <screen><userinput remap="configure">./configure --prefix=/usr          \
-            --disable-static       \
-            --with-gcc-arch=native</userinput></screen>
+    <para>Create the PKGBUILD for the Libffi package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libffi
+cd /sources/libffi
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libffi"
+pkgver="&libffi-version;"
+pkgrel="&libffi-release;"
+pkgdesc="The Libffi library provides a portable, high level programming interface to various calling conventions."
+arch=('x86'
+      'x86_64')
+url="&libffi-home;"
+license=('custom'
+         'GPLv2'
+         'MIT')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'sed')
+checkdepends=('dejagnu')
+source=('&libffi-url;')
+md5sums=('&libffi-md5;')
+
+build(){
+cd "${pkgdir}-${pkgver}"
+
+  # Determine arch
+  case $(uname -m) in
+    x86_64)
+      chost="x86-64"
+    ;;
+    *)
+      chost="i686"
+    ;;
+
+  ./configure --prefix=/usr               \
+              --disable-static            \
+              --disable-exec-static-tramp \
+              --with-gcc-arch="${chost}"
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure option:</title>
 
       <varlistentry>
-        <term><parameter>--with-gcc-arch=native</parameter></term>
+        <term><parameter>--with-gcc-arch=*</parameter></term>
         <listitem>
-          <para>Ensure GCC optimizes for the current system.  If this
+          <para>Ensure GCC optimizes for a generic arch.  If this
           is not specified, the system is guessed and the code generated
           may not be correct.  If the generated code
           will be copied from the native system to a less capable
@@ -85,17 +141,25 @@
       </varlistentry>
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp libffi-&libffi-version;-&libffi-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libffi-&libffi-version;-&libffi-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Libffi package:</para>
 
-<screen><userinput remap="test">make check</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S libffi --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/libffi
+cp PKGBUILD /srv/pacman/source/LFS/libffi
+cd /sources
+rm -rf libffi</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libgcrypt.xml lfs-pacman-2025-03-26/chapter08/libgcrypt.xml
--- lfs-git-2025-03-26/chapter08/libgcrypt.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libgcrypt.xml	2025-03-25 22:21:39.461222593 -0500
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libgcrypt" role="wrap">
+  <?dbhtml filename="libgcrypt.html"?>
+
+  <sect1info condition="script">
+    <productname>libgcrypt</productname>
+    <productnumber>&libgcrypt-version;</productnumber>
+    <address>&libgcrypt-url;</address>
+  </sect1info>
+
+  <title>Libgcrypt-&libgcrypt-version;</title>
+
+  <indexterm zone="ch-system-libgcrypt">
+    <primary sortas="a-Libgcrypt">Libgcrypt</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libgcrypt</application> package contains a general
+      purpose crypto library based on the code used in
+      <application>GnuPG</application>. The library provides a high level
+      interface to cryptographic building blocks using an extendable and flexible
+      API.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libgcrypt-fin-sbu;</seg>
+        <seg>&libgcrypt-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Libgcrypt</title>
+
+    <para>Create the PKGBUILD for the Libgcrypt package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libgcrypt
+cd /sources/libgcrypt
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libgcrypt"
+pkgver="&libgcrypt-version;
+pkgrel="&libgcrypt-release;"
+pkgdesc="The libgcrypt package contains a general purpose crypto library based on the code used in GnuPG."
+arch=('x86'
+      x86_64')
+license=('GPLv2'
+         'LGPLv2.1')
+url="&libgcrypt-home;"
+groups=('core')
+depends=('glibc'
+         'libcap'
+         'libgpg-error'
+         'rootfs')
+makedepends=('bash'
+         'binutils'
+         'coreutils'
+         'gawk'
+         'gcc'
+         'gettext'
+         'glibc'
+         'grep'
+         'make'
+         'sed')
+source=('&libgcrypt-url;)
+md5sums=('&libgcrypt-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --with-capabilities
+  make
+  make -C doc html
+  makeinfo --html --no-split -o doc/gcrypt_nochunks.html doc/gcrypt.texi
+  makeinfo --plaintext       -o doc/gcrypt.txt           doc/gcrypt.texi
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -vm644  README doc/{README.apichanges,fips*,libgcrypt*} \
+                  "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}/html"
+  install -vm644  doc/gcrypt.html/* \
+                  "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}/html"
+  install -vm644  doc/gcrypt_nochunks.html \
+                  "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -vm644  doc/gcrypt.{txt,texi} \
+                  "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libgcrypt-&libgcrypt-version;-&libgcrypt-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libgcrypt-&libgcrypt-version;-&libgcrypt-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libgcrypt package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libgcrypt --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libgcrypt
+cp PKGBUILD /srv/pacman/source/LFS/libgcrypt
+cd /sources
+rm -rf libgcrypt</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <option>--with-capabilities</option>: This option enables libcap2 support.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          dumpsexp, hmac256, libgcrypt-config, and mpicalc
+        </seg>
+        <seg>
+          libgcrypt.so
+        </seg>
+        <seg>
+          /usr/share/doc/libgcrypt-&libgcrypt-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="dumpsexp">
+        <term><command>dumpsexp</command></term>
+        <listitem>
+          <para>
+            is a debug tool for S-expressions.
+          </para>
+          <indexterm zone="ch-system-libgcrypt dumpsexp">
+            <primary sortas="b-dumpsexp">dumpsexp</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="hmac256">
+        <term><command>hmac256</command></term>
+        <listitem>
+          <para>
+            is a standalone HMAC-SHA-256 implementation used to compute
+            an HMAC-SHA-256 authentication code.
+          </para>
+          <indexterm zone="ch-system-libgcrypt hmac256">
+            <primary sortas="b-hmac256">hmac256</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libgcrypt-config">
+        <term><command>libgcrypt-config</command></term>
+        <listitem>
+          <para>
+            determines the compile and linker flags that should be used to
+            compile and link programs that use <filename class="libraryfile">libgcrypt</filename>.
+          </para>
+          <indexterm zone="ch-system-libgcrypt libgcrypt-config">
+            <primary sortas="b-libgcrypt-config">libgcrypt-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="mpicalc">
+        <term><command>mpicalc</command></term>
+        <listitem>
+          <para>
+            is a RPN (Reverse Polish Notation) calculator.
+          </para>
+          <indexterm zone="ch-system-libgcrypt mpicalc">
+            <primary sortas="b-mpicalc">mpicalc</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libgcrypt-lib">
+        <term><filename class="libraryfile">libgcrypt.so</filename></term>
+        <listitem>
+          <para>
+            contains the cryptographic API functions.
+          </para>
+          <indexterm zone="ch-system-libgcrypt libgcrypt-lib">
+            <primary sortas="c-libgcrypt">libgcrypt.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libgpg-error.xml lfs-pacman-2025-03-26/chapter08/libgpg-error.xml
--- lfs-git-2025-03-26/chapter08/libgpg-error.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libgpg-error.xml	2025-03-25 22:21:39.462005130 -0500
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libgpg-error" role="wrap">
+  <?dbhtml filename="libgpg-error.html"?>
+
+  <sect1info condition="script">
+    <productname>libgpg-error</productname>
+    <productnumber>&libgpg-error-version;</productnumber>
+    <address>&libgpg-error-url;</address>
+  </sect1info>
+
+  <title>Libgpg-error-&libgpg-error-version;</title>
+
+  <indexterm zone="ch-system-libgpg-error">
+    <primary sortas="a-Libgpg-errors">Libgpg-error</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>Libgpg-error</application> package contains a
+      library that defines common error values for all
+      <application>GnuPG</application> components.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libgpg-error-fin-sbu;</seg>
+        <seg>&libgpg-error-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Libgpg-error</title>
+
+    <para>Create the PKGBUILD for the Libgpg-error package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libgpg-error
+cd /sources/libgpg-error
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libgpg-error"
+pkgver="&libgpg-error-version;"
+pkgrel="&libgpg-error-release;"
+pkgdesc="Libgpg-error contains a library that defines common error values for GnuPG components."
+arch=('x86'
+      'x86_64')
+url="&libgpg-error-home;"
+license=('GPLv2'
+         'LGPLv2.1')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'grep'
+             'inetutils'
+             'make'
+             'readline'
+             'sed')
+source=('&libgpg-error-url;')
+md5sums=('&libgpg-error-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  install -vDm644 README "${pkgdir}/usr/share/doc/libgpg-error-${pkgver}/README"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libgp-error-&libgpg-error-version;-&libgpg-error-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libgp-error-&libgpg-error-version;-&libgpg-error-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libgpg-error package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libgpg-error --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libgpg-error
+cp PKGBUILD /srv/pacman/source/LFS/libgpg-error
+cd /sources
+rm -rf libgpg-error</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          gpg-error, gpg-error-config, gpgrt-config, and yat2m
+        </seg>
+        <seg>
+          libgpg-error.so
+        </seg>
+        <seg>
+          /usr/share/common-lisp/source/gpg-error,
+          /usr/share/libgpg-error, and
+          /usr/share/doc/libgpg-error-&libgpg-error-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="gpg-error">
+        <term><command>gpg-error</command></term>
+        <listitem>
+          <para>
+            is used to determine <application>libgpg-error</application>
+            error codes.
+          </para>
+          <indexterm zone="ch-system-libgpg-error gpg-error">
+            <primary sortas="b-gpg-error">gpg-error</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpg-error-config">
+        <term><command>gpg-error-config</command></term>
+        <listitem>
+          <para>
+            is a utility used to configure and build applications based on
+            the <application>libgpg-error</application> library. It can be used
+            to query the C compiler and linker flags which are required to
+            correctly compile and link the application against the
+            <application>libgpg-error</application> library.
+          </para>
+          <indexterm zone="ch-system-libgpg-error gpg-error-config">
+            <primary sortas="b-gpg-error-config">gpg-error-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="gpgrt-config">
+        <term><command>gpgrt-config</command></term>
+        <listitem>
+          <para>
+            is the same script as <command>gpg-error-config</command>.
+          </para>
+          <indexterm zone="ch-system-libgpg-error gpgrt-config">
+            <primary sortas="b-gpgrt-config">gpgrt-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="yat2m">
+        <term><command>yat2m</command></term>
+        <listitem>
+          <para>
+            extracts man pages from a Texinfo source.
+          </para>
+          <indexterm zone="ch-system-libgpg-error yat2m">
+            <primary sortas="b-yat2m">yat2m</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libgpg-error-lib">
+        <term><filename class="libraryfile">libgpg-error.so</filename></term>
+        <listitem>
+          <para>
+            contains the <application>libgpg-error</application> API
+            functions.
+          </para>
+          <indexterm zone="ch-system-libgpg-error libgpg-error-lib">
+            <primary sortas="c-libgpg-error">libgpg-error.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libidn2.xml lfs-pacman-2025-03-26/chapter08/libidn2.xml
--- lfs-git-2025-03-26/chapter08/libidn2.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libidn2.xml	2025-03-25 22:21:39.462099719 -0500
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libidn2" role="wrap">
+  <?dbhtml filename="libidn2.html"?>
+
+  <sect1info condition="script">
+    <productname>libidn2</productname>
+    <productnumber>&libidn2-version;</productnumber>
+    <address>&libidn2-url;</address>
+  </sect1info>
+
+  <title>libidn2-&libidn2-version;</title>
+
+  <indexterm zone="ch-system-libidn2">
+    <primary sortas="a-libidn2">libidn2</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      <application>libidn2</application> is a package designed for
+      internationalized string handling based on standards from the
+      Internet Engineering Task Force (IETF)'s IDN working group, designed for
+      internationalized domain names.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libidn2-fin-sbu;</seg>
+        <seg>&libidn2-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libidn2</title>
+
+    <para>Create the PKGBUILD for the libidn2 package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libidn2
+cd /sources/libidn2
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libidn2"
+pkgver="&libidn2-version;"
+pkgrel="&libidn2-release;"
+pkgdesc="A library for internationalized string handling based on standards from the IETF IDN working group"
+arch=('x86'
+      'x86_64')
+url="&libidn2-home;"
+groups=('core')
+license=('GPLv2'
+         'LGPLv3')
+depends=('libunistring'
+         'glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&libidn2-url;')
+md5sums=('&libidn2-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libidn2-&libidn2-version;-&libidn2-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libidn2-&libidn2-version;-&libidn2-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libidn2 package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libidn2 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libidn2
+cp PKGBUILD /srv/pacman/source/LFS/libidn2
+cd /sources
+rm -rf libidn2</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          idn2
+        </seg>
+        <seg>
+          libidn2.so
+        </seg>
+        <seg>
+          /usr/share/gtk-doc/html/libidn2
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="idn2">
+        <term><command>idn2</command></term>
+        <listitem>
+          <para>
+            is a command line interface to the internationalized domain
+            library
+          </para>
+          <indexterm zone="ch-system-libidn2 idn2">
+            <primary sortas="b-idn2">idn2</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libidn2">
+        <term><filename class="libraryfile">libidn2</filename></term>
+        <listitem>
+          <para>
+            contains a generic Stringprep implementation used for
+            internationalized string handling
+          </para>
+          <indexterm zone="ch-system-libidn2 libidn2">
+            <primary sortas="c-libidn2">libidn2</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libksba.xml lfs-pacman-2025-03-26/chapter08/libksba.xml
--- lfs-git-2025-03-26/chapter08/libksba.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libksba.xml	2025-03-25 22:21:39.461654981 -0500
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libksba" role="wrap">
+  <?dbhtml filename="libksba.html"?>
+
+  <sect1info condition="script">
+    <productname>libksba</productname>
+    <productnumber>&libksba-version;</productnumber>
+    <address>&libksba-url;</address>
+  </sect1info>
+
+  <title>Libksba-&libksba-version;</title>
+
+  <indexterm zone="ch-system-libksba">
+    <primary sortas="a-Libksba">Libksba</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>Libksba</application> package contains a library
+      used to make X.509 certificates as well as making the CMS (Cryptographic
+      Message Syntax) easily accessible by other applications. Both
+      specifications are building blocks of S/MIME and TLS. The library does
+      not rely on another cryptographic library but provides hooks for easy
+      integration with <application>Libgcrypt</application>.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libksba-fin-sbu;</seg>
+        <seg>&libksba-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Libksba</title>
+
+    <para>Create the PKGBUILD for the Libksba package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libksba
+cd /sources/libksba
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libksba"
+pkgver="&libksba-version;"
+pkgrel="&libksba-release;"
+pkgdesc="${pkgname} ${pkgver}"
+arch=('x86'
+      x86_64')
+license=('GPLv2'
+         'GPLv3'
+         'LGPLv3')
+url="&libksba-home;"
+groups=('core')
+depends=('glibc'
+         'libgcrypt'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&libksba-url;')
+md5sums=('&libksba-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libksba-&libksba-version;-&libksba-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libksba-&libksba-version;-&libksba-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libksba package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libksba --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libksba
+cp PKGBUILD /srv/pacman/source/LFS/libksba
+cd /sources
+rm -rf libksba</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>ksba-config</seg>
+        <seg>libksba.so</seg>
+        <seg>None<!--/usr/share/doc/libksba-&libksba-version;--></seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="ksba-config">
+        <term><command>ksba-config</command></term>
+        <listitem>
+          <para>
+            is a utility used to configure and build applications based on
+            the libksba(3) library. It can be used to query the C compiler and
+            linker flags which are required to correctly compile and link the
+            application against the libksba(3) library.
+          </para>
+          <indexterm zone="ch-system-libksba ksba-config">
+            <primary sortas="b-ksba-config">ksba-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libksba-lib">
+        <term><filename class='libraryfile'>libksba.{so,a}</filename></term>
+        <listitem>
+          <para>
+            contains the cryptographic API functions.
+          </para>
+          <indexterm zone="ch-system-libksba libksba-lib">
+            <primary sortas="c-libksba">libksba.{so,a}</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libnsl.xml lfs-pacman-2025-03-26/chapter08/libnsl.xml
--- lfs-git-2025-03-26/chapter08/libnsl.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libnsl.xml	2025-03-25 22:21:39.461884490 -0500
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+
+]>
+
+<sect1 id="libnsllib" xreflabel="libnsl-&libnsl-version;">
+  <?dbhtml filename="libnsl.html"?>
+
+  <sect1info condition="script">
+    <productname>libnsl</productname>
+    <productnumber>&libnsl-version;</productnumber>
+    <address>&libnsl-url;</address>
+  </sect1info>
+
+  <title>Libnsl-&libnsl-version;</title>
+
+  <indexterm zone="libnsl">
+    <primary sortas="a-libnsl">libnsl</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to Libnsl</title>
+
+    <para>
+      The <application>libnsl</application> package contains the public client
+      interface for NIS(YP). It replaces the NIS library that used to
+      be in glibc.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&zlib-fin-sbu;</seg>
+        <seg>&zlib-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Libnsl</title>
+
+    <para>Create the PKGBUILD for the Libnsl package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/zlib
+cd /sources/zlib
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libnsl"
+pkgver="&libnsl-version;"
+pkgrel="1"
+pkgdesc="The libnsl package contains the public client interface for NIS(YP) and NIS+."
+arch=(x86_64)
+license=('LGPLv2.1'
+         'LGPLv3')
+# Optional Dependencies:
+# $(pacman -Q keyutils &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo 'keyutils')
+# $(pacman -Q mitkrb5 &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo 'mitkrb5')
+depends=('glibc'
+         'libtirpc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'glibc'
+             'grep'
+             'libtirpc'
+             'sed')
+# $(pacman -Q keyutils &gt;/dev/null 2&gt;&amp;1 || echo 'keyutils:use key management')
+# $(pacman -Q mitkrb5 &gt;/dev/null 2&gt;&amp;1 || echo 'mitkrb5:add GSSAPI suppot')
+optdepends=('keyutils'
+            'mitkrb5')
+source=("https://github.com/thkukuk/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.xz")
+md5sums('&libnsl-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --sysconfdir=/etc --disable-static
+  make
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libnsl-&libnsl-version;-1-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libnsl package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libnsl --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libnsl
+cp PKGBUILD /srv/pacman/source/LFS/libnsl
+cd /sources
+rm -rf libnsl</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          None
+        </seg>
+        <seg>
+          libnsl.so
+        </seg>
+        <seg>
+          None
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libnsl-lib">
+        <term><filename class="libraryfile">libnsl.so</filename></term>
+        <listitem>
+          <para>
+            provides the NIS (YP) API functions required by other programs
+          </para>
+          <indexterm zone="libnsl libnsl-lib">
+            <primary sortas="c-libnsl">libnsl.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libpipeline.xml lfs-pacman-2025-03-26/chapter08/libpipeline.xml
--- lfs-git-2025-03-26/chapter08/libpipeline.xml	2025-03-25 18:44:40.096329651 -0500
+++ lfs-pacman-2025-03-26/chapter08/libpipeline.xml	2025-03-25 22:21:39.461210183 -0500
@@ -41,21 +41,75 @@
   <sect2 role="installation">
     <title>Installation of Libpipeline</title>
 
-    <para>Prepare Libpipeline for compilation:</para>
+    <para>Create the PKGBUILD for the Libpipeline package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/libpipeline
+cd /sources/libpipeline
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libpipeline"
+pkgver="&libpipeline-version;"
+pkgrel="&libpipeline-release;"
+pkgdesc="The Libpipeline package contains a library for manipulating pipelines of subprocesses in a flexible and convenient way."
+arch=('x86'
+      'x86_64')
+url="&libpipeline-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('check')
+source=('&libpipeline-url;')
+md5sums=('&libpipeline-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libpipeline-&libpipeline-version;-&libpipeline-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libpipeline-&libpipeline-version;-&libpipeline-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libpipeline package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libpipeline --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libpipeline
+cp PKGBUILD /srv/pacman/source/LFS/libpipeline
+cd /sources
+rm -rf libpipeline</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libpsl.xml lfs-pacman-2025-03-26/chapter08/libpsl.xml
--- lfs-git-2025-03-26/chapter08/libpsl.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libpsl.xml	2025-03-25 22:21:39.461745881 -0500
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libpsl" role="wrap">
+  <?dbhtml filename="libpsl.html"?>
+
+  <sect1info condition="script">
+    <productname>libpsl</productname>
+    <productnumber>&libpsl-version;</productnumber>
+    <address>&libpsl-url;</address>
+  </sect1info>
+
+  <title>libpsl-&libpsl-version;</title>
+
+  <indexterm zone="ch-system-libpsl">
+    <primary sortas="a-libpsl">libpsl</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libpsl</application> package provides a library for
+      accessing and resolving information from the Public Suffix List (PSL). The PSL
+      is a set of domain names beyond the standard suffixes, such as .com.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libpsl-fin-sbu;</seg>
+        <seg>&libpsl-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+<!--
+    <bridgehead renderas="sect4">Optional</bridgehead>
+    <para role="optional">
+      <xref linkend="gtk-doc"/> (for documentation),
+      <xref linkend="icu"/> (may be used instead of libidn2),
+      <xref linkend="libidn"/> (may be used instead of libidn2),
+      <xref linkend="valgrind"/> (for tests)
+    </para>
+    -->
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libpsl</title>
+
+    <para>Create the PKGBUILD for the libpsl package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libpsl
+cd /sources/libpsl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libpsl"
+pkgver="&libpsl-version;"
+pkgrel="&libpsl-release;"
+pkgdesc="Provides a library for accessing and resolving information from the Public Suffix List (PSL)"
+arch=('x86'
+      'x86_64')
+url="&libpsl-home;"
+license=('MIT')
+groups=('core')
+depends=('libidn2'
+         'libunistring'
+         'glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'sed')
+optdepends=('gtk-doc'
+            'icu'
+            'libidn'
+            'valgrind')
+source=('&libpsl-url;')
+md5sums=('&libpsl-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  mkdir build
+  cd    build
+  meson setup --prefix=/usr --buildtype=release
+  ninja
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  DESTDIR="${pkgdir}" ninja install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libpsl-&libpsl-version;-&libpsl-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libpsl-&libpsl-version;-&libpsl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libpsl package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libpsl --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libpsl
+cp PKGBUILD /srv/pacman/source/LFS/libpsl
+cd /sources
+rm -rf libpsl</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Library</segtitle>
+
+      <seglistitem>
+        <seg>
+          psl
+        </seg>
+        <seg>
+          libpsl.so
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="psl">
+        <term><command>psl</command></term>
+        <listitem>
+          <para>
+            queries the Public Suffix List
+          </para>
+          <indexterm zone="ch-system-libpsl psl">
+            <primary sortas="b-psl">psl</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libpsl">
+        <term><filename class="libraryfile">libpsl</filename></term>
+        <listitem>
+          <para>
+            contains a library used to access the Public Suffix List
+          </para>
+          <indexterm zone="ch-system-libpsl libpsl">
+            <primary sortas="c-libpsl">libpsl</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libpwquality.xml lfs-pacman-2025-03-26/chapter08/libpwquality.xml
--- lfs-git-2025-03-26/chapter08/libpwquality.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libpwquality.xml	2025-03-25 22:21:39.461910000 -0500
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+
+]>
+
+<sect1 id="libpwquality" xreflabel="libpwquality-&libpwquality-version;">
+  <?dbhtml filename="libpwquality.html"?>
+
+  <sect1info condition="script">
+    <productname>libpwquality</productname>
+    <productnumber>&libpwquality-version;</productnumber>
+    <address>&libpwquality-url;</address>
+  </sect1info>
+
+  <title>Libpwquality-&libpwquality-version;</title>
+
+  <indexterm zone="libpwquality">
+    <primary sortas="a-libpwquality">libpwquality</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to Libpwquality</title>
+
+    <para>
+      The <application>libpwquality</application> package provides common
+      functions for password quality checking and also scoring them based on
+      their apparent randomness. The library also provides a function for
+      generating random passwords with good pronounceability.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libpwquality-fin-sbu;</seg>
+        <seg>&libpwquality-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Libpwquality</title>
+
+    <para>Create the PKGBUILD for the Libpwquality package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libpwquality
+cd /sources/libpwquality
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libpwquality"
+pkgver="&libpwquality-version;"
+pkgrel="1"
+pkgdesc="The libpwquality package provides common functions for password quality checking and also scoring them based on their apparent randomness."
+arch=('x86'
+      'x86_64')
+url="https://github.com/libpwquality/libpwquality"
+license=('GPLv3')
+depends=('cracklib'
+         'glibc'
+         'linux-pam'
+         'python')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'cracklib'
+             'gcc'
+             'glibc'
+             'grep'
+             'linux-pam'
+             'make'
+             'python'
+             'sed'
+             'shadow')
+backup=('etc/security/pwquality.conf')
+install='libpwquality-install'
+source=("&libpwquality-url;")
+md5sums=('&libpwquality-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                      \
+              --disable-static                   \
+              --with-securedir=/usr/lib/security \
+              --with-python-binary=python3
+  make
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>You will also need to update the default Linux-PAM password
+    configuration when installing Libpwquality:</para>
+
+<screen><userinput>cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal>post_install(){
+  mv /etc/pam.d/system-password{,.orig}
+  cat &gt; /etc/pam.d/system-password &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-password
+
+# check new passwords for strength (man pam_pwquality)
+password  required    pam_pwquality.so   authtok_type=UNIX retry=1 difok=1 \
+                                         minlen=8 dcredit=0 ucredit=0 \
+                                         lcredit=0 ocredit=0 minclass=1 \
+                                         maxrepeat=0 maxsequence=0 \
+                                         maxclassrepeat=0 geoscheck=0 \
+                                         dictcheck=1 usercheck=1 \
+                                         enforcing=1 badwords="" \
+                                         dictpath=/usr/lib/cracklib/pw_dict
+# use sha512 hash for encryption, use shadow, and use the
+# authentication token (chosen password) set by pam_pwquality
+# above (or any previous modules)
+password  required    pam_unix.so        sha512 shadow use_authtok
+
+# End /etc/pam.d/system-password
+EOF
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libpwquality-&libpwquality-version;-1-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libpwquality package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libpwquality --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libpwquality
+cp PKGBUILD /srv/pacman/source/LFS/libpwquality
+cp libpwquality.install /srv/pacman/source/LFS/libpwquality
+cd /sources
+rm -rf libpwquality</userinput></screen>
+
+    <para>
+      Install <application>libpwquality</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput>./configure --prefix=/usr                      \
+            --disable-static                   \
+            --with-securedir=/usr/lib/security \
+            --with-python-binary=python3       &amp;&amp;
+make</userinput></screen>
+
+    <para>
+      This package does not come with a test suite.
+    </para>
+
+    <para>
+      Now, as the <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--with-python-binary=python3</parameter>: This parameter gives
+      the location of the <application>Python</application> binary. The default
+      is <parameter>python</parameter>, and requires Python-2.x.
+    </para>
+
+  </sect2>
+
+  <sect2 role="configuration">
+    <title>Configuring libpwquality</title>
+
+<!--
+    <para>
+      <application>libpwquality</application> is intended to be a
+      functional replacement for the <filename>pam_cracklib.so</filename>
+      module with additional options. To replace the
+      <filename>pam_cracklib.so</filename> module with the
+      <filename>pam_pwquality.so</filename> module, execute the following
+      commands as the <systemitem class="username">root</systemitem> user:
+    </para>
+-->
+
+    <para>
+      <application>libpwquality</application> is intended to be a
+      functional replacement for the now-obsolete
+      <filename>pam_cracklib.so</filename> PAM module. To configure the system
+      to use the <filename>pam_pwquality</filename> module, execute the
+      following commands as the
+      <systemitem class="username">root</systemitem> user:
+    </para>
+
+<screen role="root"><userinput>mv /etc/pam.d/system-password{,.orig} &amp;&amp;
+cat &gt; /etc/pam.d/system-password &lt;&lt; "EOF"
+<literal># Begin /etc/pam.d/system-password
+
+# check new passwords for strength (man pam_pwquality)
+password  required    pam_pwquality.so   authtok_type=UNIX retry=1 difok=1 \
+                                         minlen=8 dcredit=0 ucredit=0 \
+                                         lcredit=0 ocredit=0 minclass=1 \
+                                         maxrepeat=0 maxsequence=0 \
+                                         maxclassrepeat=0 geoscheck=0 \
+                                         dictcheck=1 usercheck=1 \
+                                         enforcing=1 badwords="" \
+                                         dictpath=/usr/lib/cracklib/pw_dict
+# use sha512 hash for encryption, use shadow, and use the
+# authentication token (chosen password) set by pam_pwquality
+# above (or any previous modules)
+password  required    pam_unix.so        sha512 shadow use_authtok
+
+# End /etc/pam.d/system-password</literal>
+EOF
+</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          pwscore and pwmake
+        </seg>
+        <seg>
+          pam_pwquality.so and libpwquality.so
+        </seg>
+        <seg>
+          None
+          <!-- /etc/security was installed by Linux-PAM -->
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="pwmake">
+        <term><command>pwmake</command></term>
+        <listitem>
+          <para>
+            is a simple configurable tool for generating random
+            and relatively easily pronounceable passwords
+          </para>
+          <indexterm zone="libpwquality pwmake">
+            <primary sortas="b-pwmake">pwmake</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pwscore">
+        <term><command>pwscore</command></term>
+        <listitem>
+          <para>
+            is a simple tool for checking quality of a password
+          </para>
+          <indexterm zone="libpwquality pwscore">
+            <primary sortas="b-pwscore">pwscore</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libpwquality-lib">
+        <term><filename class="libraryfile">libpwquality.so</filename></term>
+        <listitem>
+          <para>
+            contains API functions for checking the password quality
+          </para>
+          <indexterm zone="libpwquality libpwquality-lib">
+            <primary sortas="c-libpwquality">libpwquality.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pam_pwquality">
+        <term><filename class="libraryfile">pam_pwquality.so</filename></term>
+        <listitem>
+          <para>
+            is a <application>Linux PAM</application> module used to perform
+            password quality checking
+          </para>
+          <indexterm zone="libpwquality pam_pwquality">
+            <primary sortas="c-pam_pwquality">pam_pwquality.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libtasn1.xml lfs-pacman-2025-03-26/chapter08/libtasn1.xml
--- lfs-git-2025-03-26/chapter08/libtasn1.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libtasn1.xml	2025-03-25 22:21:39.462061129 -0500
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libtasn1" role="wrap">
+  <?dbhtml filename="libtasn1.html"?>
+
+  <sect1info condition="script">
+    <productname>libtasn1</productname>
+    <productnumber>&libtasn1-version;</productnumber>
+    <address>&libtasn1-url;</address>
+  </sect1info>
+
+  <title>Libtasn1-&libtasn1-version;</title>
+
+  <indexterm zone="ch-system-libtasn1">
+    <primary sortas="a-Libtasn1">Libtasn1</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      <application>libtasn1</application> is a highly portable C library
+      that encodes and decodes DER/BER data following an ASN.1 schema.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libtasn1-fin-sbu;</seg>
+        <seg>&libtasn1-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libtasn1</title>
+
+
+    <para>Create the PKGBUILD for the Libtasn1 package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libtasn1
+cd /sources/libtasn1
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libtasn1"
+pkgver="&libtasn1-version;"
+pkgrel="&libtasn1-release;"
+pkgdesc="Libtasn1 is a highly portable C library that encodes and decodes DER/BER data following an ASN.1 schema."
+arch=('x86'
+      'x86_64')
+url="&libtasn1-home;"
+license=('GPL3')
+groups=('core')
+depends=('libgpg-error'
+         'npth')
+makedepends=('bash'                                                                                                                  'binutils'                                                                                                              'coreutils'                                                                                                             'gcc'                                                                                                                   'gettext'                                                                                                               'make'                                                                                                                  'texinfo')
+optdepends=('gtk-doc'
+            'valgrind)
+source=('&libtasn1-url;')
+md5sums=('&libtasn1-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" -C doc/reference install-data-local
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libtasn1-&libtasn1-version;-&libtasn1-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libtasn1-&libtasn1-version;-&libtasn1-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libtasn1 package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libtasn1 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libtasn1
+cp PKGBUILD /srv/pacman/source/LFS/libtasn1
+cd /sources
+rm -rf libtasn1</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          asn1Coding, asn1Decoding and asn1Parser
+        </seg>
+        <seg>
+          libtasn1.so
+        </seg>
+        <seg>
+          /usr/share/gtk-doc/html/libtasn1
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="asn1Coding">
+        <term><command>asn1Coding</command></term>
+        <listitem>
+          <para>
+            is an ASN.1 DER encoder.
+          </para>
+          <indexterm zone="ch-system-libtasn1 asn1Coding">
+            <primary sortas="b-asn1Coding">asn1Coding</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="asn1Decoding">
+        <term><command>asn1Decoding</command></term>
+        <listitem>
+          <para>
+            is an ASN.1 DER decoder.
+          </para>
+          <indexterm zone="ch-system-libtasn1 asn1Decoding">
+            <primary sortas="b-asn1Decoding">asn1Decoding</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="asn1Parser">
+        <term><command>asn1Parser</command></term>
+        <listitem>
+          <para>
+            is an ASN.1 syntax tree generator for
+            <application>libtasn1</application>.
+          </para>
+          <indexterm zone="ch-system-libtasn1 asn1Parser">
+            <primary sortas="b-asn1Parser">asn1Parser</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libtasn1-lib">
+        <term><filename class="libraryfile">libtasn1.so</filename></term>
+        <listitem>
+          <para>
+            is a library for Abstract Syntax Notation One (ASN.1) and
+            Distinguish Encoding Rules (DER) manipulation.
+          </para>
+          <indexterm zone="ch-system-libtasn1 libtasn1-lib">
+            <primary sortas="c-libtasn1">libtasn1.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libtirpc.xml lfs-pacman-2025-03-26/chapter08/libtirpc.xml
--- lfs-git-2025-03-26/chapter08/libtirpc.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libtirpc.xml	2025-03-25 22:21:39.461861630 -0500
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+
+]>
+
+<sect1 id="libtirpc" xreflabel="libtirpc-&libtirpc-version;">
+  <?dbhtml filename="libtirpc.html"?>
+
+  <sect1info condition="script">
+    <productname>libtirpc</productname>
+    <productnumber>&libtirpc-version;</productnumber>
+    <address>&libtirpc-url;</address>
+  </sect1info>
+
+  <title>libtirpc-&libtirpc-version;</title>
+
+  <indexterm zone="libtirpc">
+    <primary sortas="a-libtirpc">libtirpc</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to libtirpc</title>
+
+    <para>
+      The <application>libtirpc</application> package contains
+      libraries that support programs that use the Remote Procedure Call (RPC)
+      API. It replaces the RPC, but not the NIS library entries that
+      used to be in glibc.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libtirpc-fin-sbu;</seg>
+        <seg>&libtirpc-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of libtirpc</title>
+
+<screen><userinput>mkdir /sources/libtirpc
+cd /sources/libtirpc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libtirpc"
+pkgver="&libtirpc-version;"
+pkgrel="1"
+pkgdesc="The libtirpc package contains libraries that support programs that use the Remote Procedure Call (RPC) API."
+arch=('x86'
+      'x86_64')
+license=('BSD3C')
+#        Conditional dependencies (commendted $() cases below) can be used in a
+#        complete environment, but not the limted environment in Chapter 8
+#        because the pacman database is not yet complete.
+#        These two examples would be used in depends/makedepends and optdepends
+#        respectively, and would add to the depends and makedepends arrays in
+#        the binary package if they are installed, or add to the optdepends
+#        array if not installed:
+# $(pacman -Q mitkrb5 &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo 'mitkrb5')
+# $(pacman -Q mitkrb5 &gt;/dev/null 2&gt;&amp;1 || echo 'mitkrb5: provide GSSAPI support')
+#        Note the optional description for the optdepends test variant above
+#        Also, take care with condtionals in PKGBUILD files as they are run by
+#        bash +e. If a negative pipestatus is possible, use a subshell as above.
+depends=('glibc')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'glibc'
+             'grep'
+             'make'
+             'sed')
+optdepends=('mitkrb5')
+backup=('etc/netconfig')
+source=(https://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sum=('&libtirpc-md5;')
+
+build() {
+# Optional deps must be handled here too if necesasry, for example:
+#  _confargs=""
+#  pacman -Q mitkrb5 >/dev/null 2&gt;&amp;1 || _confargs="${_confargs} --disable-gssapi"
+# Replace the "--disable-gssapi" argument with "${_confargs}" once in a full
+# build environment
+
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr    \
+              --sysconf=/etc   \
+              --disable-static --disable-gssapi
+
+  make
+}
+
+package() {
+  cd ${pkgname}-${pkgver}
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libtirpc-&libtirpc-version;-1-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libtirpc package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libtirpc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libtirpc
+cp PKGBUILD /srv/pacman/source/LFS/libtirpc
+cd /sources
+rm -rf libtirpc</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--disable-gssapi</parameter>: This switch is needed if
+      no GSSAPI is installed. Remove this switch if you have one
+      installed (for example MIT KRB 5) and you wish to use it.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          None
+        </seg>
+        <seg>
+          libtirpc.so
+        </seg>
+        <seg>
+          /usr/include/tirpc
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libtirpc-lib">
+        <term><filename class="libraryfile">libtirpc.so</filename></term>
+        <listitem>
+          <para>
+            provides the Remote Procedure Call (RPC) API functions required by
+            other programs
+          </para>
+          <indexterm zone="libtirpc libtirpc-lib">
+            <primary sortas="c-libtirpc">libtirpc.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libtool.xml lfs-pacman-2025-03-26/chapter08/libtool.xml
--- lfs-git-2025-03-26/chapter08/libtool.xml	2025-03-25 18:44:40.096336671 -0500
+++ lfs-pacman-2025-03-26/chapter08/libtool.xml	2025-03-25 22:21:39.461932720 -0500
@@ -42,28 +42,82 @@
   <sect2 role="installation">
     <title>Installation of Libtool</title>
 
-    <para>Prepare Libtool for compilation:</para>
+    <para>Create the PKGBUILD for the Libtool package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-<para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <!-- dev: - -disable-static works but causes additional test failures
-              so we manually remove the static library -->
-
-    <para>Remove a useless static library:</para>
-
-<screen><userinput remap="install">rm -fv /usr/lib/libltdl.a</userinput></screen>
+<screen><userinput>mkdir /sources/libtool
+cd /sources/libtool
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libtool"
+pkgver="&libtool-version;"
+pkgrel="&libtool-release;"
+pkgdesc="The Libtool package contains the GNU generic library support script."
+arch=('x86'
+      'x86_64')
+url="&libtool-home;"
+license=('GPLv2')
+groups=('core')
+depends=('autoconf'
+         'automake'
+         'bash'
+         'binutils'
+         'coreutils'
+         'file'
+         'gcc'
+         'glibc'
+         'grep'
+         'make'
+         'sed'
+         'rootfs')
+makedepends=('diffutils'
+             'gawk'
+             'texinfo')
+checkdepends=('autoconf'
+              'automake'
+              'findutils')
+source=('&libtool-url;')
+md5sums=('&libtool-md5;')
+
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+  # Remove a useless static library
+  rm -fv ${pkgdir}/usr/lib/libltdl.a
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libtool-&libtool-version;-&libtool-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libtool-&libtool-version;-&libtool-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Libtool package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libtool --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libtool
+cp PKGBUILD /srv/pacman/source/LFS/libtool
+cd /sources
+rm -rf libtool</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libunistring.xml lfs-pacman-2025-03-26/chapter08/libunistring.xml
--- lfs-git-2025-03-26/chapter08/libunistring.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libunistring.xml	2025-03-25 22:21:39.462107849 -0500
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libunistring" role="wrap">
+  <?dbhtml filename="libunistring.html"?>
+
+  <sect1info condition="script">
+    <productname>libunistring</productname>
+    <productnumber>&libunistring-version;</productnumber>
+    <address>&libunistring-url;</address>
+  </sect1info>
+
+  <title>libunistring-&libunistring-version;</title>
+
+  <indexterm zone="ch-system-libunistring">
+    <primary sortas="a-libunistring">libunistring</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      <application>libunistring</application> is a library that provides
+      functions for manipulating Unicode strings and for manipulating C
+      strings according to the Unicode standard.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libunistring-fin-sbu;</seg>
+        <seg>&libunistring-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libunistring</title>
+
+    <para>Create the PKGBUILD for the libunistring package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libunistring
+cd /sources/libunistring
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libunistring"
+pkgver="&libunistring-version;"
+pkgrel="&libunistring-release;"
+pkgdesc="A library that provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard"
+arch=('x86'
+      'x86_64')
+url="&libunistring-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&libunistring-url;')
+md5sums=('&libunistring-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libunistring-&libunistring-version;-&libunistring-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libunistring-&libunistring-version;-&libunistring-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libunistring package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libunistring --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libunistring
+cp PKGBUILD /srv/pacman/source/LFS/libunistring
+cd /sources
+rm -rf libunistring</userinput></screen>
+
+  </sect2>
+
+    <sect2 id="contents-libunistring" role="content">
+    <title>Contents of libunistring</title>
+
+    <segmentedlist>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>libunistring.so</seg>
+        <seg>
+          /usr/include/unistring and
+          /usr/share/doc/libunistring-&libunistring-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libunistring">
+        <term><filename class="libraryfile">libunistring</filename></term>
+        <listitem>
+          <para>Contains the foreign function interface API functions</para>
+          <indexterm zone="ch-system-libunistring">
+            <primary sortas="c-libunistring">libunistring</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libusb.xml lfs-pacman-2025-03-26/chapter08/libusb.xml
--- lfs-git-2025-03-26/chapter08/libusb.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libusb.xml	2025-03-25 22:21:39.461814400 -0500
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libusb" role="wrap">
+  <?dbhtml filename="libusb.html"?>
+
+  <sect1info condition="script">
+    <productname>libusb</productname>
+    <productnumber>&libusb-version;</productnumber>
+    <address>&libusb-url;</address>
+  </sect1info>
+
+  <title>Libusb-&libusb-version;</title>
+
+  <indexterm zone="ch-system-libusb">
+    <primary sortas="a-Libusb">Libusb</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to libusb</title>
+
+    <para>
+      The <application>libusb</application> package contains a library
+      used by some applications for USB device access.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libusb-fin-sbu;</seg>
+        <seg>&libusb-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libusb</title>
+
+    <para>Create the PKGBUILD for the libusb package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libusb
+cd /sources/libusb
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libusb"
+pkgver="&libusb-version;"
+pkgrel="&libusb-release;"
+pkgdesc="Contains a library used by some applications for USB device access"
+arch=('x86'
+      'x86_64')
+url="&libusb-home;"
+license=('GPL3')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'make'
+             'sed'
+             'texinfo')
+optdepends=('doxygen')
+source=('&libusb-url;')
+md5sums=('&libusb-md5;')
+
+prepare()
+  cd "${pkgname}-${pkgver}"
+  # Prevent a warning when building documentation
+  sed -i "s/^PROJECT_LOGO/#&amp;/" doc/doxygen.cfg.in
+{
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  # This package does not build correctly in parallel
+  make -j1
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libusb-&libusb-version;-&libusb-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libusb-&libusb-version;-&libusb-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libusb package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libusb --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libusb
+cp PKGBUILD /srv/pacman/source/LFS/libusb
+cd /sources
+rm -rf libusb</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="configuration">
+    <title>Configuring Libusb</title>
+
+    <para id="libusb-kernel">
+      To access raw USB devices (those not treated as a disk by the mass-storage
+      driver), appropriate support must be available in the kernel.  Check your
+      kernel configuration:
+    </para>
+
+<screen><literal>Device Drivers ---&gt;
+  [*] USB support ---&gt;                   [CONFIG_USB_SUPPORT]
+    &lt;*/M&gt; Support for Host-side USB      [CONFIG_USB]
+    (Select any USB hardware device drivers you may need on the same page)</literal></screen>
+
+    <indexterm zone="ch-system-libusb libusb-kernel">
+      <primary sortas="d-USB-device-filesystem">Support for Host-side USB</primary>
+    </indexterm>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          libusb-1.0.so
+        </seg>
+        <seg>
+          /usr/include/libusb-1.0 and
+          /usr/share/doc/libusb-&libusb-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libusb">
+        <term><filename class='libraryfile'>libusb-1.0</filename></term>
+        <listitem>
+          <para>
+            contains API functions used for accessing USB hardware.
+          </para>
+          <indexterm zone="ch-system-libusb libusb">
+            <primary sortas="c-libusb">libusb-1.0</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libxcrypt.xml lfs-pacman-2025-03-26/chapter08/libxcrypt.xml
--- lfs-git-2025-03-26/chapter08/libxcrypt.xml	2025-03-25 18:44:40.096342571 -0500
+++ lfs-pacman-2025-03-26/chapter08/libxcrypt.xml	2025-03-25 22:21:39.461279793 -0500
@@ -41,13 +41,63 @@
   <sect2 role="installation">
     <title>Installation of Libxcrypt</title>
 
-    <para>Prepare Libxcrypt for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr                \
-            --enable-hashes=strong,glibc \
-            --enable-obsolete-api=no     \
-            --disable-static             \
-            --disable-failure-tokens</userinput></screen>
+    <para>Create the PKGBUILD for the Libxcrypt package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libxcrypt
+cd /sources/libxcrypt
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libxcrypt"
+pkgver="&libxcrypt-version;"
+pkgrel="&libxcrypt-release;"
+pkgdesc="The Libxcrypt package contains a modern library for one-way hashing of passwords."
+arch=('x86'
+      'x86_64')
+url="&libxcrypt-home;"
+license=('LGPL2.1'
+         'GPL2'
+         'BSD0C'
+         'BSD1C'
+         'BSD3C'
+         'PD')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'perl'
+             'sed')
+source=('&libxcrypt-url;')
+md5sums=('&libxcrypt-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                \
+              --enable-hashes=strong,glibc \
+              --enable-obsolete-api=no     \
+              --disable-static             \
+              --disable-failure-tokens
+  make
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure options:</title>
@@ -81,17 +131,25 @@
       </varlistentry>
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp libxcrypt-&libxcrypt-version;-&libxcrypt-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libxcrypt-&libxcrypt-version;-&libxcrypt-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Libxcrypt package:</para>
 
-<screen><userinput remap="test">make check</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S libxcrypt --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/libxcrypt
+cp PKGBUILD /srv/pacman/source/LFS/libxcrypt
+cd /sources
+rm -rf libxcrypt</userinput></screen>
 
     <note>
 
diff -Naurp lfs-git-2025-03-26/chapter08/libxml2.xml lfs-pacman-2025-03-26/chapter08/libxml2.xml
--- lfs-git-2025-03-26/chapter08/libxml2.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libxml2.xml	2025-03-25 22:21:39.460809235 -0500
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libxml2" role="wrap">
+  <?dbhtml filename="libxml2.html"?>
+
+  <sect1info condition="script">
+    <productname>libxml2</productname>
+    <productnumber>&libxml2-version;</productnumber>
+    <address>&libxml2-url;</address>
+  </sect1info>
+
+  <title>Libxml2-&libxml2-version;</title>
+
+  <indexterm zone="ch-system-libxml2">
+    <primary sortas="a-Libxml2">Libxml2</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to libxml2</title>
+
+    <para>
+      The <application>libxml2</application> package contains libraries
+      and utilities used for parsing XML files.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libxml2-fin-sbu;</seg>
+        <seg>&libxml2-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title/>
+
+    <para>Create the PKGBUILD for the libxml2 package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/libxml2
+cd /sources/libxml2
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="libxml2"
+pkgver="&libxml2-version;"
+pkgrel="&libxml2-release;"
+pkgdesc="The libxml2 package contains libraries and utilities used for parsing XML files."
+arch=('x86'
+      'x86_64')
+url="&libxml2-home;"
+license=('GPL3')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make')
+source=('&libxml2-url;')
+md5sums=('&libxml2-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --with-history   \
+              --with-python=/usr/bin/python3
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp libxml2-&libxml2-version;-&libxml2-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/libxml2-&libxml2-version;-&libxml2-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the libxml2 package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S libxml2 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/libxml2
+cp PKGBUILD /srv/pacman/source/LFS/libxml2
+cd /sources
+rm -rf libxml2</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--with-history</parameter>: This switch enables
+      <application>Readline</application> support when running
+      <command>xmlcatalog</command> or <command>xmllint</command> in shell mode.
+    </para>
+
+    <para>
+      <parameter>--with-python=/usr/bin/python3</parameter>: Allows building
+      the libxml2 module with Python3 instead of Python2.
+    </para>
+
+    <para>
+      <option>--with-threads</option>: Add this switch to enable multithread
+      support.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          xml2-config,
+          xmlcatalog, and
+          xmllint <!--and the
+          drv_libxml2.py and libxml2.py <application>Python3</application>
+          modules.  These are pythin modules, not programs -->
+        </seg>
+        <seg>
+          libxml2.so and
+          libxml2mod.so (<application>Python3</application> module)
+        </seg>
+        <seg>
+          /usr/include/libxml2,
+          /usr/lib/cmake/libxml2,
+          /usr/share/doc/libxml2-&libxml2-version;,
+          /usr/share/doc/libxml2-python-&libxml2-version;, and
+          /usr/share/gtk-doc/html/libxml2
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="xml2-config">
+        <term><command>xml2-config</command></term>
+        <listitem>
+          <para>
+            determines the compile and linker flags that should be used to
+            compile and link programs that use
+            <filename class='libraryfile'>libxml2</filename>.
+          </para>
+          <indexterm zone="ch-system-libxml2 xml2-config">
+            <primary sortas="b-xml2-config">xml2-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="xmlcatalog">
+        <term><command>xmlcatalog</command></term>
+        <listitem>
+          <para>
+            is used to monitor and manipulate XML and SGML catalogs.
+          </para>
+          <indexterm zone="ch-system-libxml2 xmlcatalog">
+            <primary sortas="b-xmlcatalog">xmlcatalog</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="xmllint">
+        <term><command>xmllint</command></term>
+        <listitem>
+          <para>
+            parses XML files and outputs reports (based upon options) to detect
+            errors in XML coding.
+          </para>
+          <indexterm zone="ch-system-libxml2 xmllint">
+            <primary sortas="b-xmllint">xmllint</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+<!--
+      <varlistentry id="drv_libxml2.py3">
+        <term><command>drv_libxml2.py</command></term>
+        <listitem>
+          <para>
+            is a SAX <application>Python3</application> driver for libxml2.
+          </para>
+          <indexterm zone="ch-system-libxml2 drv_libxml2.py3">
+            <primary sortas="b-drv_libxml2.py3">drv_libxml2.py for Python3</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libxml2.py3">
+        <term><command>libxml2.py</command></term>
+        <listitem>
+          <para>
+            is the <application>Python3</application> binding for libxml2.
+          </para>
+          <indexterm zone="ch-system-libxml2 libxml2.py3">
+            <primary sortas="b-libxml2.py3">libxml2.py for Python3</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+-->
+      <varlistentry id="libxml2-lib">
+        <term><filename class="libraryfile">libxml2.so</filename></term>
+        <listitem>
+          <para>
+            provides functions for programs to parse files that use the XML
+            format.
+          </para>
+          <indexterm zone="ch-system-libxml2 libxml2-lib">
+            <primary sortas="c-libxml2">libxml2.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libxml2mod3">
+        <term><filename class="libraryfile">libxml2mod.so</filename></term>
+        <listitem>
+          <para>
+            is the interface for <application>Python3</application>
+            to use <filename class="libraryfile">libxml2.so</filename>.
+          </para>
+          <indexterm zone="ch-system-libxml2 libxml2mod3">
+            <primary sortas="c-libxml2mod">libxml2mod.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/libxslt.xml lfs-pacman-2025-03-26/chapter08/libxslt.xml
--- lfs-git-2025-03-26/chapter08/libxslt.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/libxslt.xml	2025-03-25 22:21:39.462044669 -0500
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-libxslt" role="wrap">
+  <?dbhtml filename="libxslt.html"?>
+
+  <sect1info condition="script">
+    <productname>libxslt</productname>
+    <productnumber>&libxslt-version;</productnumber>
+    <address>&libxslt-url;</address>
+  </sect1info>
+
+  <title>Libxslt-&libxslt-version;</title>
+
+  <indexterm zone="ch-system-libxslt">
+    <primary sortas="a-Libxslt">Libxslt</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>libxslt</application> package contains
+      XSLT libraries used for extending <filename
+      class="libraryfile">libxml2</filename> libraries to
+      support XSLT files.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&libxslt-fin-sbu;</seg>
+        <seg>&libxslt-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of libxslt</title>
+
+    <para>
+      Configure <application>libxslt</application> by running the following
+      commands:
+    </para>
+
+<screen><userinput remap="configure">sed -i s/3000/5000/ libxslt/transform.c doc/xsltproc.{1,xml}
+./configure --prefix=/usr --disable-static</userinput></screen>
+
+    <para>
+      Build <application>libxslt</application> by running the following
+      command:
+    </para>
+
+<screen><userinput remap="make">make</userinput></screen>
+
+    <para>
+      A shipped man page is glitched.  If the recommended dependencies are
+      installed, regenerate it by running the following commands:
+	 </para>
+
+<screen><userinput remap="make">sed -e 's@http://cdn.docbook.org/release/xsl@https://cdn.docbook.org/release/xsl-nons@' \
+    -e 's@\$Date\$@31 October 2019@' -i doc/xsltproc.xml
+xsltproc/xsltproc --nonet doc/xsltproc.xml -o doc/xsltproc.1</userinput></screen>
+
+    <para>
+      To test the results, issue:
+    </para>
+
+<screen><userinput remap="test">make check</userinput></screen>
+
+    <para>
+      Install <application>libxslt</application> by running the following
+      command:
+    </para>
+
+
+<screen><userinput remap="install">make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <command>sed -i s/3000/5000/ ...</command>: this increases the recursion
+      limit in libxslt. This is needed by some packages for their documentation.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          xslt-config and xsltproc
+        </seg>
+        <seg>
+          libexslt.so, libxslt.so and optionally, libxsltmod.so
+          <application>Python</application> module
+        </seg>
+        <seg>
+          /usr/include/libexslt,
+          /usr/include/libxslt,
+          /usr/lib/libxslt-plugins,
+          /usr/share/doc/libxslt-&libxslt-version;, and
+          /usr/share/doc/libxslt-python-&libxslt-version;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="xslt-config">
+        <term><command>xslt-config</command></term>
+        <listitem>
+          <para>
+            is used to find out the pre-processor, linking and
+            compiling flags necessary to use the <application>libxslt</application>
+            libraries in 3rd-party programs.
+          </para>
+          <indexterm zone="ch-system-libxslt xslt-config">
+            <primary sortas="b-xslt-config">xslt-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="xsltproc">
+        <term><command>xsltproc</command></term>
+        <listitem>
+          <para>
+            is used to apply XSLT stylesheets to XML documents.
+          </para>
+          <indexterm zone="ch-system-libxslt xsltproc">
+            <primary sortas="b-xsltproc">xsltproc</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libexslt">
+        <term><filename class="libraryfile">libexslt.so</filename></term>
+        <listitem>
+          <para>
+            is used to provide extensions to XSLT functions.
+          </para>
+          <indexterm zone="ch-system-libxslt libexslt">
+            <primary sortas="c-libexslt">libexslt.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libxslt-lib">
+        <term><filename class="libraryfile">libxslt.so</filename></term>
+        <listitem>
+          <para>
+            provides extensions to the
+            <filename class="libraryfile">libxml2</filename>
+            libraries to parse files that use the XSLT format.
+          </para>
+          <indexterm zone="ch-system-libxslt libxslt-lib">
+            <primary sortas="c-libxslt">libxslt.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/linux-pam.xml lfs-pacman-2025-03-26/chapter08/linux-pam.xml
--- lfs-git-2025-03-26/chapter08/linux-pam.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/linux-pam.xml	2025-03-25 22:21:39.461892380 -0500
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+
+]>
+
+<sect1 id="linux-pam" xreflabel="Linux-PAM-&linux-pam-version;">
+  <?dbhtml filename="linux-pam.html"?>
+
+  <sect1info condition="script">
+    <productname>linux-pam</productname>
+    <productnumber>&linux-pam-version;</productnumber>
+    <address>&linux-pam-url;</address>
+  </sect1info>
+
+  <title>Linux-PAM-&linux-pam-version;</title>
+
+  <indexterm zone="linux-pam">
+    <primary sortas="a-Linux-PAM">Linux-PAM</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to Linux PAM</title>
+
+    <para>
+      The <application>Linux PAM</application> package contains
+      Pluggable Authentication Modules used to enable the local
+      system administrator to choose how applications authenticate
+      users.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&linux-pam-fin-sbu;</seg>
+        <seg>&linux-pam-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Linux PAM</title>
+
+    <para>Create the PKGBUILD for the Linux PAM package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/linux-pam
+cd /sources/linux-pam
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="linux-pam"
+pkgver="&linux-pam-version;"
+pkgrel="1"
+pkgdesc="The Linux PAM package contains Pluggable Authentication Modules used to enable the local system administrator to choose how applications authenticate users."
+arch=('i686' 'x86'
+      'x86_64')
+url="http://www.gnu.org/software/${pkgname}/"
+license=('GPL')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gettext'
+             'gcc'
+             'glibc'
+             'grep'
+             'libnsl'
+             'libtirpc'
+             'sed'
+             'shadow')
+# $(pacman -Q db &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo 'db')
+depends=('db'
+         'glibc'
+         'libnsl'
+         'libtirpc'
+         'shadow')
+# optdepends=$(pacman -Q db &gt;/dev/null 2&gt;&amp;1 || echo 'db: Use Berkely DB for backend')
+source=("https://github.com/${pkgname}/${pkgname}/releases/download/v${pkgver}/Linux-PAM-${pkgver}.tar.xz"
+        "https://github.com/${pkgname}/${pkgname}/releases/download/v${pkgver}/Linux-PAM-${pkgver}-docs.tar.xz")
+md5sums=('&linux-pam-md5;'
+         '&linux-pam-docs-md5;')
+noextract=("Linux-PAM-${pkgver}-docs.tar.xz")
+backup=('etc/pam.d/system-account'
+        'etc/pam.d/system-auth'
+        'etc/pam.d/system-session'
+        'etc/pam.d/system-password'
+        'etc/pam.d/other')
+
+prepare(){
+  cd "Linux-PAM-${pkgver}"
+  tar -xf "../Linux-PAM-${pkgver}-docs.tar.xz" --strip-components=1
+}
+
+build(){
+  cd "Linux-PAM-${pkgver}"
+  ./configure --prefix=/usr                    \
+              --sbindir=/usr/sbin              \
+              --sysconfdir=/etc                \
+              --libdir=/usr/lib                \
+              --enable-securedir=/usr/lib/security \
+              --docdir="/usr/share/doc/Linux-PAM-${pkgver}"
+  make
+}
+
+package(){
+  cd "Linux-PAM-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+# Remove systemd specific files
+  rm -rf "${pkgdir}/usr/lib/systemd"
+  chmod -v 4755 "${pkgdir}/usr/sbin/unix_chkpwd"
+
+# /etc/pam.d files
+  install -vdm755 "${pkgdir}/etc/pam.d"
+  cat &gt; "${pkgdir}/etc/pam.d/system-account" &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-account
+
+account   required    pam_unix.so
+
+# End /etc/pam.d/system-account
+EOF
+
+  cat &gt; "${pkgdir}/etc/pam.d/system-auth" &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-auth
+
+auth      required    pam_unix.so
+auth      optional    pam_cap.so
+
+# End /etc/pam.d/system-auth
+EOF
+
+  cat &gt; "${pkgdir}/etc/pam.d/system-session" &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-session
+
+session   required    pam_unix.so
+
+# End /etc/pam.d/system-session
+EOF
+
+  cat &gt; "${pkgdir}/etc/pam.d/system-password" &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-password
+
+# use sha512 hash for encryption, use shadow, and use any previously
+# defined authentication token (chosen password) set by prior module
+password  required    pam_unix.so       sha512 shadow try_first_pass
+
+# End /etc/pam.d/system-password
+EOF
+
+  cat &gt; "${pkgdir}/etc/pam.d/other" &lt;&lt; "EOF"
+# Begin /etc/pam.d/other
+
+auth        required        pam_warn.so
+auth        required        pam_deny.so
+account     required        pam_warn.so
+account     required        pam_deny.so
+password    required        pam_warn.so
+password    required        pam_deny.so
+session     required        pam_warn.so
+session     required        pam_deny.so
+
+# End /etc/pam.d/other
+EOF
+}</literal>
+REALEOF</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          faillock, mkhomedir_helper, pam_namespace_helper,
+          pam_timestamp_check, pwhistory_helper, unix_chkpwd and
+          unix_update
+        </seg>
+        <seg>
+          libpam.so, libpamc.so and libpam_misc.so
+        </seg>
+        <seg>
+          /etc/security,
+          /usr/lib/security,
+          /usr/include/security and
+          /usr/share/doc/Linux-PAM-&linux-pam-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="faillock">
+        <term><command>faillock</command></term>
+        <listitem>
+          <para>
+            displays and modifies the authentication failure record files
+          </para>
+          <indexterm zone="linux-pam faillock">
+            <primary sortas="b-faillock">faillock</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="mkhomedir_helper">
+        <term><command>mkhomedir_helper</command></term>
+        <listitem>
+          <para>
+            is a helper binary that creates home directories
+          </para>
+          <indexterm zone="linux-pam mkhomedir_helper">
+            <primary sortas="b-mkhomedir_helper">mkhomedir_helper</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pam_namespace_helper">
+        <term><command>pam_namespace_helper</command></term>
+        <listitem>
+          <para>
+            is a helper program used to configure a private namespace for a
+            user session
+          </para>
+          <indexterm zone="linux-pam pam_namespace_helper">
+            <primary sortas="b-pam_namespace_helper">pam_namespace_helper</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pwhistory_helper">
+        <term><command>pwhistory_helper</command></term>
+        <listitem>
+          <para>
+            is a helper program that transfers password hashes from passwd or
+            shadow to opasswd
+          </para>
+          <indexterm zone="linux-pam pwhistory_helper">
+            <primary sortas="b-pwhistory_helper">pwhistory_helper</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+<!-- Removed with the removal of the pam_tally{,2} module
+      <varlistentry id="pam_tally">
+        <term><command>pam_tally</command></term>
+        <listitem>
+          <para>
+            is used to interrogate and manipulate the login counter file.
+          </para>
+          <indexterm zone="linux-pam pam_tally">
+            <primary sortas="b-pam_tally">pam_tally</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pam_tally2">
+        <term><command>pam_tally2</command></term>
+        <listitem>
+          <para>
+            is used to interrogate and manipulate the login counter file, but
+            does not have some limitations that <command>pam_tally</command>
+            does.
+          </para>
+          <indexterm zone="linux-pam pam_tally2">
+            <primary sortas="b-pam_tally2">pam_tally2</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+-->
+
+      <varlistentry id="pam_timestamp_check">
+        <term><command>pam_timestamp_check</command></term>
+        <listitem>
+          <para>
+            is used to check if the default timestamp is valid
+          </para>
+          <indexterm zone="linux-pam pam_timestamp_check">
+            <primary sortas="b-pam_timestamp_check">pam_timestamp_check</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="unix_chkpwd">
+        <term><command>unix_chkpwd</command></term>
+        <listitem>
+          <para>
+            is a helper binary that verifies the password of the current user
+          </para>
+          <indexterm zone="linux-pam unix_chkpwd">
+            <primary sortas="b-unix_chkpwd">unix_chkpwd</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="unix_update">
+        <term><command>unix_update</command></term>
+        <listitem>
+          <para>
+            is a helper binary that updates the password of a given user
+          </para>
+          <indexterm zone="linux-pam unix_update">
+            <primary sortas="b-unix_update">unix_update</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libpam">
+        <term><filename class="libraryfile">libpam.so</filename></term>
+        <listitem>
+          <para>
+            provides the interfaces between applications and the
+            PAM modules
+          </para>
+          <indexterm zone="linux-pam libpam">
+            <primary sortas="c-libpam">libpam.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/lz4.xml lfs-pacman-2025-03-26/chapter08/lz4.xml
--- lfs-git-2025-03-26/chapter08/lz4.xml	2025-03-25 18:44:40.096349231 -0500
+++ lfs-pacman-2025-03-26/chapter08/lz4.xml	2025-03-25 22:21:39.461341273 -0500
@@ -43,20 +43,70 @@
   <sect2 role="installation">
     <title>Installation of Lz4</title>
 
-    <para>Compile the package:</para>
+    <para>Create the PKGBUILD for the Lz4 package with the following
+    commands:</para>
 
-<screen><userinput remap="make">make BUILD_STATIC=no PREFIX=/usr</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-    <!-- This needs to be done at -j1 because otherwise test files do not
-         get generated correctly. -->
-
-<screen><userinput remap="test">make -j1 check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make BUILD_STATIC=no PREFIX=/usr install</userinput></screen>
+<screen><userinput>mkdir /sources/lz4
+cd /sources/lz4
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="lz4"
+pkgver="&lz4-version;"
+pkgrel="&lz4-release;"
+pkgdesc="Lz4 is a lossless compression algorithm, providing compression speed greater than 500 MB/s per core."
+arch=('x86'
+      'x86_64')
+url="&lz4-home;"
+groups=('core')
+license=('BSD3C'
+         'custom')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+         'binutils'
+         'coreutils'
+         'gcc'
+         'make')
+checkdepends=('python')
+source=('&lz4-url;')
+md5sums=('&lz4-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  make BUILD_STATIC=no PREFIX=/usr
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make -j1 check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make BUILD_STATIC=no PREFIX=/usr DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp lz4-&lz4-version;-&lz4-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/lz4-&lz4-version;-&lz4-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Lz4 package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S lz4 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/lz4
+cp PKGBUILD /srv/pacman/source/LFS/lz4
+cd /sources
+rm -rf lz4</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/lzo.xml lfs-pacman-2025-03-26/chapter08/lzo.xml
--- lfs-git-2025-03-26/chapter08/lzo.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/lzo.xml	2025-03-25 22:21:39.462037049 -0500
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-lzo" role="wrap">
+  <?dbhtml filename="lzo.html"?>
+
+  <sect1info condition="script">
+    <productname>lzo</productname>
+    <productnumber>&lzo-version;</productnumber>
+    <address>&lzo-url;</address>
+  </sect1info>
+
+  <title>Lzo-&lzo-version;</title>
+
+  <indexterm zone="ch-system-lzo">
+    <primary sortas="a-Lzo">Lzo</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      <application>LZO</application> is a data compression
+      library which is suitable for data decompression and compression in
+      real-time. This means it favors speed over compression ratio.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&lzo-fin-sbu;</seg>
+        <seg>&lzo-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of LZO</title>
+
+    <para>Create the PKGBUILD for the LZO package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/lzo
+cd /sources/lzo
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="lzo"
+pkgver="&lzo-version;"
+pkgrel="&lzo-release;"
+pkgdesc="A data compression library which is suitable for data decompression and compression in real-time."
+arch=('x86'
+      'x86_64')
+url="&lzo-home;"
+license=('GPLv2')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&lzo-url;')
+md5sums=('&lzo-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr    \
+              --enable-shared  \
+              --disable-static \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp lzo-&lzo-version;-&lzo-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/lzo-&lzo-version;-&lzo-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the LZO package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S lzo --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/lzo
+cp PKGBUILD /srv/pacman/source/LFS/lzo
+cd /sources
+rm -rf lzo</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          None
+        </seg>
+        <seg>
+          liblzo2.so
+        </seg>
+        <seg>
+          /usr/include/lzo and
+          /usr/share/doc/lzo
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+    <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="liblzo2">
+        <term><filename class='libraryfile'>liblzo2.so</filename></term>
+        <listitem>
+          <para>
+            is a data compression and decompression library.
+          </para>
+          <indexterm zone="ch-system-lzo liblzo2">
+            <primary sortas="c-liblzo2">liblzo2.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/m4.xml lfs-pacman-2025-03-26/chapter08/m4.xml
--- lfs-git-2025-03-26/chapter08/m4.xml	2025-03-25 18:44:40.096355911 -0500
+++ lfs-pacman-2025-03-26/chapter08/m4.xml	2025-03-25 22:21:39.461731211 -0500
@@ -39,27 +39,74 @@
 
   <sect2 role="installation">
     <title>Installation of M4</title>
-<!--
-    <para>First, make some fixes required by glibc-2.28 and later:</para>
-
-<screen><userinput remap="pre">sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
-echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h</userinput></screen>
--->
-    <para>Prepare M4 for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+    
+    <para>Create the PKGBUILD for the M4 package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/m4
+cd /sources/m4
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="m4"
+pkgver="&m4-version;"
+pkgrel="&m4-release;"
+pkgdesc="The M4 package contains a macro processor."
+arch=('x86'
+      'x86_64')
+url="http://www.gnu.org/software/m4/"
+license=('GPLv3')
+groups=('core')
+depends=('bash'
+         'glibc')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('diffutils')
+optdepends=('libsigsegv')
+source=('&m4-url;')
+md5sums=('&m4-md5;')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp m4-&m4-version;-&m4-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/m4-&m4-version;-&m4-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the zlib package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S m4 --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/m4
+cp PKGBUILD /srv/pacman/source/LFS/m4
+cd /sources
+rm -rf m4</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/make-ca.xml lfs-pacman-2025-03-26/chapter08/make-ca.xml
--- lfs-git-2025-03-26/chapter08/make-ca.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/make-ca.xml	2025-03-25 22:21:39.462069059 -0500
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-make-ca" role="wrap">
+  <?dbhtml filename="make-ca.html"?>
+
+  <sect1info condition="script">
+    <productname>make-ca</productname>
+    <productnumber>&make-ca-version;</productnumber>
+    <address>&make-ca-url;</address>
+  </sect1info>
+
+  <title>Make-ca-&make-ca-version;</title>
+
+  <indexterm zone="ch-system-make-ca">
+    <primary sortas="a-Make-ca">Make-ca</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to make-ca</title>
+
+    <para>
+      Public Key Infrastructure (PKI) is a method to validate the authenticity
+      of an otherwise unknown entity across untrusted networks. PKI works by
+      establishing a chain of trust, rather than trusting each individual host
+      or entity explicitly. In order for a certificate presented by a remote
+      entity to be trusted, that certificate must present a complete chain of
+      certificates that can be validated using the root certificate of a
+      Certificate Authority (CA) that is trusted by the local machine.
+    </para>
+
+    <para>
+      Establishing trust with a CA involves validating things like company
+      address, ownership, contact information, etc., and ensuring that the CA
+      has followed best practices, such as undergoing periodic security audits
+      by independent investigators and maintaining an always available
+      certificate revocation list. This is well outside the scope of BLFS (as
+      it is for most Linux distributions). The certificate store provided here
+      is taken from the Mozilla Foundation, who have established very strict
+      inclusion policies described <ulink
+        url="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/">here</ulink>.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&make-ca-fin-sbu;</seg>
+        <seg>&make-ca-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of make-ca</title>
+
+    <para>
+      The <application>make-ca</application> script will download and process
+      the certificates included in the <filename>certdata.txt</filename> file
+      for use as trust anchors for the p11-kit trust module.
+      Additionally, it will generate system certificate stores used by BLFS
+      applications (if the recommended and optional applications are present
+      on the system). Any local certificates stored in
+      <filename>/etc/ssl/local</filename> will be imported to both the trust
+      anchors and the generated certificate stores (overriding Mozilla's
+      trust). Additionally, any modified trust values will be copied from the
+      trust anchors to <filename>/etc/ssl/local</filename> prior to any
+      updates, preserving custom trust values that differ from Mozilla when
+      using the <command>trust</command> utility from
+      <application>p11-kit</application> to operate on the trust store.
+    </para>
+
+    <para>
+      To install the various certificate stores, first install the
+      <application>make-ca</application> script into the correct location.
+      As the <systemitem class="username">root</systemitem> user:
+    </para>
+
+    <para>Create the PKGBUILD for the make-ca package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/make-ca
+cd /sources/make-ca
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="make-ca"
+pkgver="&make-ca-version;"
+pkgrel="&make-ca-release;"
+pkgdesc="The make-ca script generates system certificate stores."
+arch=('any')
+url="&make-ca-home;"
+license=('MIT'
+         'GPLv3')
+groups=('core')
+install="make-ca.install"
+depends=('bash'
+         'coreutils'
+         'diffutils'
+         'gawk'
+         'grep'
+         'openssl'
+         'p11-kit'
+         'sed')
+makedepends=('make')
+optdepends=('nss: to generate a shared NSSDB')
+source=('&make-ca-url;')
+md5sums=('&make-ca-md5;')
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  install -vdm755 "${pkgdir}/etc/ssl/local"
+  rm -r "${pkgdir}/usr/lib/systemd"
+
+  # Install a weekly cron script to update the ca-certificates automatically
+  install -vdm755 "${pkgdir}/etc/cron.weekly/"
+  cat &gt; "${pkgdir}/etc/cron.weekly/update-pki.sh" &lt;&lt; "EOF"
+#!/bin/bash
+/usr/sbin/make-ca -g
+EOF
+  chmod 754 "${pkgdir}/etc/cron.weekly/update-pki.sh"
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>Create the install script for make-ca that will automatically run
+    make-ca on install or upgrade:</para>
+
+<screen><userinput>cat &gt; make-ca.install &lt;&lt; "REALEOF"
+<literal># make-ca.install
+
+post_install(){
+  /usr/bin/make-ca -g
+}
+
+post_upgrade(){
+  /usr/bin/make-ca -g
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp make-ca-&make-ca-version;-&make-ca-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/make-ca-&make-ca-version;-&make-ca-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the make-ca package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S make-ca --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/make-ca
+cp PKGBUILD /srv/pacman/source/LFS/make-ca
+cd /sources
+rm -rf make-ca</userinput></screen>
+
+    <note>
+      <para>
+        If running the script a second time with the same version of
+        <filename>certdata.txt</filename>, for instance, to add additional
+        stores as the requisite software is installed, add the
+        <parameter>-r</parameter> switch to the command line. If packaging,
+        run <command>make-ca --help</command> to see all available command
+        line options.
+      </para>
+    </note>
+
+  </sect2>
+
+  <sect2 role="configuration" id="make-ca-config">
+    <title>Configuring make-ca</title>
+
+    <para>
+      For most users, no additional configuration is necessary, however,
+      the default <filename>certdata.txt</filename> file provided by make-ca
+      is obtained from the mozilla-release branch, and is modified to provide a
+      Mercurial revision. This will be the correct version for most systems.
+      There are several other variants of the file available for use that might
+      be preferred for one reason or another, including the files shipped with
+      Mozilla products in this book. RedHat and OpenSUSE, for instance, use the
+      version included in nss. Additional upstream downloads
+      are available at the links included in
+      <filename>/etc/make-ca.conf.dist</filename>. Simply copy the file to
+      <filename>/etc/make-ca.conf</filename> and edit as appropriate.
+    </para>
+
+    <indexterm zone="ch-system-make-ca make-ca-config">
+      <primary sortas="e-etc-make-ca-conf">/etc/make-ca.conf</primary>
+    </indexterm>
+
+    <bridgehead renderas="sect3">About Trust Arguments</bridgehead>
+
+    <para>
+      There are three trust types that are recognized by the
+      <application>make-ca</application> script, SSL/TLS, S/Mime, and code
+      signing. For <application>OpenSSL</application>, these are
+      <parameter>serverAuth</parameter>,
+      <parameter>emailProtection</parameter>, and
+      <parameter>codeSigning</parameter> respectively. If one of the three
+      trust arguments is omitted, the certificate is neither trusted, nor
+      rejected for that role. Clients that use
+      <application>OpenSSL</application> or <application>NSS</application>
+      encountering this certificate will present a warning to the user.
+      Clients using
+      <application>GnuTLS</application> without
+      <application>p11-kit</application> support are not aware of trusted
+      certificates. To include this CA into the
+      <filename>ca-bundle.crt</filename>,
+      <filename>email-ca-bundle.crt</filename>, or
+      <filename>objsign-ca-bundle.crt</filename> files
+      (the <application>GnuTLS</application> legacy bundles), it must have the
+      appropriate trust arguments.
+    </para>
+
+    <bridgehead renderas="sect3">Adding Additional CA Certificates</bridgehead>
+
+    <para>
+      The <filename class="directory">/etc/ssl/local</filename> directory
+      is available to add additional CA certificates to the system. For
+      instance, you might need to add an organization or government CA
+      certificate. Files in this directory must be in the
+      <application>OpenSSL</application> trusted certificate format. To
+      create an <application>OpenSSL</application> trusted certificate from
+      a regular PEM encoded file, you need to add trust arguments to the
+      <command>openssl</command> command, and create a new certificate. For
+      example, using the <ulink url="http://www.cacert.org/">CAcert</ulink>
+      roots, if you want to trust both for all three roles, the following
+      commands will create appropriate OpenSSL trusted certificates (run as
+      the <systemitem class="username">root</systemitem> user after
+      wget is installed):
+    </para>
+
+<screen role="nodump"><userinput>wget http://www.cacert.org/certs/root.crt &amp;&amp;
+wget http://www.cacert.org/certs/class3.crt &amp;&amp;
+openssl x509 -in root.crt -text -fingerprint -setalias "CAcert Class 1 root" \
+        -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
+        > /etc/ssl/local/CAcert_Class_1_root.pem &amp;&amp;
+openssl x509 -in class3.crt -text -fingerprint -setalias "CAcert Class 3 root" \
+        -addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
+        > /etc/ssl/local/CAcert_Class_3_root.pem &amp;&amp;
+/usr/sbin/make-ca -r -f</userinput></screen>
+
+    <bridgehead renderas="sect3">Overriding Mozilla Trust</bridgehead>
+
+    <para>
+      Occasionally, there may be instances where you don't agree with
+      Mozilla's inclusion of a particular certificate authority. If you'd like
+      to override the default trust of a particular CA, simply create a copy of
+      the existing certificate in <filename
+      class="directory">/etc/ssl/local</filename> with different trust
+      arguments. For example, if you'd like to distrust the
+      "Makebelieve_CA_Root" file, run the following commands:
+    </para>
+
+<screen role="nodump"><userinput>openssl x509 -in /etc/ssl/certs/Makebelieve_CA_Root.pem \
+             -text \
+             -fingerprint \
+             -setalias "Disabled Makebelieve CA Root" \
+             -addreject serverAuth \
+             -addreject emailProtection \
+             -addreject codeSigning \
+       > /etc/ssl/local/Disabled_Makebelieve_CA_Root.pem &amp;&amp;
+/usr/sbin/make-ca -r -f</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>make-ca</seg>
+        <seg>/etc/ssl/{certs,local} and
+        /etc/pki/{nssdb,anchors,tls/{certs,java}}</seg>
+      </seglistitem>
+    </segmentedlist>
+
+   <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="make-ca-bin">
+        <term><command>make-ca</command></term>
+        <listitem>
+          <para>
+            is a shell script that adapts a current version of
+            <filename>certdata.txt</filename>, and prepares it for use
+            as the system trust store.
+          </para>
+          <indexterm zone="ch-system-make-ca make-ca-bin">
+            <primary sortas="b-make-ca">make-ca</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/make.xml lfs-pacman-2025-03-26/chapter08/make.xml
--- lfs-git-2025-03-26/chapter08/make.xml	2025-03-25 18:44:40.096361941 -0500
+++ lfs-pacman-2025-03-26/chapter08/make.xml	2025-03-25 22:21:39.460768545 -0500
@@ -41,24 +41,76 @@
   <sect2 role="installation">
     <title>Installation of Make</title>
 
-    <para>Prepare Make for compilation:</para>
+    <para>Create the PKGBUILD for the Make package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <!-- Running tests as root causes failures:
-         https://savannah.gnu.org/bugs/?63852 -->
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">chown -R tester .
-su tester -c "PATH=$PATH make check"</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/make
+cd /sources/make
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="make"
+pkgver="&make-version;"
+pkgrel="&make-release;"
+pkgdesc="The Make package contains a program for controlling the generation of executables and other non-source files of a package from source files."
+arch=('x86'
+      'x86_64')
+url="&make-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('perl'
+              'procps-ng')
+optdepends=('guile')
+source=('&make-url;')
+md5sums=('&make-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp make-&make-version;-&make-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/make-&make-version;-&make-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Make package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S make --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/make
+cp PKGBUILD /srv/pacman/source/LFS/make
+cd /sources
+rm -rf make</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/man-db.xml lfs-pacman-2025-03-26/chapter08/man-db.xml
--- lfs-git-2025-03-26/chapter08/man-db.xml	2025-03-25 18:44:40.096368041 -0500
+++ lfs-pacman-2025-03-26/chapter08/man-db.xml	2025-03-25 22:21:39.460882685 -0500
@@ -41,27 +41,140 @@
   <sect2 role="installation">
     <title>Installation of Man-DB</title>
 
-    <para>Prepare Man-DB for compilation:</para>
 
-<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr                         \
-            --docdir=/usr/share/doc/man-db-&man-db-version; \
-            --sysconfdir=/etc                     \
-            --disable-setuid                      \
-            --enable-cache-owner=bin              \
-            --with-browser=/usr/bin/lynx          \
-            --with-vgrind=/usr/bin/vgrind         \
-            --with-grap=/usr/bin/grap</userinput></screen>
+    <para>Create the PKGBUILD for the Man-DB package with the following
+    commands:</para>
 
-<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr                         \
+<screen revision="systemd"><userinput>mkdir /sources/man-db
+cd /sources/man-db
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="man-db"
+pkgver="&man-db-version;"
+pkgrel="&man-db-release;"
+pkgdesc="The Man-DB package contains programs for finding and viewing man pages."
+arch=('x86'
+      'x86_64')
+url="&man-db-home;"
+license=('GPLv2'
+         'LGPLv2.1')
+groups=('core')
+depends=('bash'
+         'gdbm'
+         'groff'
+         'glibc'
+         'gzip'
+         'less'
+         'libpipeline'
+         'zlib'
+         'rootfs')
+makedepends=('binutils'
+             'bzip2'
+             'coreutils'
+             'flex'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'pkgconf'
+             'sed'
+             'systemd'
+             'xz')
+checkdepends=('util-linux')
+optdepends=('libseccomp')
+source=('&man-db-url;')
+md5sums=('&man-db-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                         \
+              --docdir=/usr/share/doc/man-db-&man-db-version; \
+              --sysconfdir=/etc                     \
+              --disable-setuid                      \
+              --enable-cache-owner=bin              \
+              --with-browser=/usr/bin/lynx          \
+              --with-vgrind=/usr/bin/vgrind         \
+              --with-grap=/usr/bin/grap
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+<screen revision="sysv"><userinput>mkdir /sources/man-db
+cd /sources/man-db
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="man-db"
+pkgver="&man-db-version;"
+pkgrel="&man-db-release;"
+pkgdesc="The Man-DB package contains programs for finding and viewing man pages."
+arch=('x86'
+      'x86_64')
+url="&man-db-home;"
+license=('GPLv2'
+         'LGPLv2.1')
+groups=('core')
+depends=('bash'
+         'gdbm'
+         'groff'
+         'glibc'
+         'gzip'
+         'less'
+         'libpipeline'
+         'zlib'
+         'rootfs')
+makedepends=('binutils'
+             'bzip2'
+             'coreutils'
+             'flex'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'pkgconf'
+             'sed'
+             'xz')
+checkdepends=('util-linux')
+optdepends=('libseccomp')
+source=('&man-db-url;')
+md5sums=('&man-db-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                         \
             --docdir=/usr/share/doc/man-db-&man-db-version; \
-            --sysconfdir=/etc                     \
-            --disable-setuid                      \
-            --enable-cache-owner=bin              \
-            --with-browser=/usr/bin/lynx          \
-            --with-vgrind=/usr/bin/vgrind         \
-            --with-grap=/usr/bin/grap             \
-            --with-systemdtmpfilesdir=            \
-            --with-systemdsystemunitdir=</userinput></screen>
+              --sysconfdir=/etc                     \
+              --disable-setuid                      \
+              --enable-cache-owner=bin              \
+              --with-browser=/usr/bin/lynx          \
+              --with-vgrind=/usr/bin/vgrind         \
+              --with-grap=/usr/bin/grap             \
+              --with-systemdtmpfilesdir=            \
+              --with-systemdsystemunitdir=
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure options:</title>
@@ -107,17 +220,20 @@
 
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
+    &pacman-build-add;                                                                                                                                                                                                                          <screen><userinput>cp man-db-&man-db-version;-&man-db-release;-$(uname -m).pkg.tar.xz \                           /srv/pacman/repos/LFS/                                                                                               repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \                                                                                   /srv/pacman/repos/LFS/man-db-&man-db-version;-&man-db-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Man-DB package:</para>
 
-<screen><userinput remap="test">make check</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S man-db --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/man-db
+cp PKGBUILD /srv/pacman/source/LFS/man-db
+cd /sources
+rm -rf man-db</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/man-pages.xml lfs-pacman-2025-03-26/chapter08/man-pages.xml
--- lfs-git-2025-03-26/chapter08/man-pages.xml	2025-03-25 18:44:40.096375991 -0500
+++ lfs-pacman-2025-03-26/chapter08/man-pages.xml	2025-03-25 22:21:39.461066404 -0500
@@ -40,15 +40,47 @@
   <sect2 role="installation">
     <title>Installation of Man-pages</title>
 
-    <para>Remove two man pages for password hashing functions.
-    <application>Libxcrypt</application> will provide a better version
-    of these man pages:</para>
+    <para>Prepare the PKGBUILD with the following commands:</para>
 
-<screen><userinput remap="pre">rm -v man3/crypt*</userinput></screen>
-
-    <para>Install Man-pages by running:</para>
-
-<screen><userinput remap="install">make -R GIT=false prefix=/usr install</userinput></screen>
+<screen><userinput>mkdir /sources/man-pages
+cd /sources/man-pages
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="man-pages"
+pkgver="&man-pages-version;"
+pkgrel="&man-pages-release;"
+pkgdesc="The Man-pages package contains over 2,400 man pages."
+arch=('any')
+url="&man-pages-home;"
+license=('BSD2C'
+         'BSD3C'
+         'BSD4C'
+         'GPLv1'
+         'GPLv2'
+         'GPLv2+'
+         'GPLv3+'
+         'LGPLv3+Link'
+         'LGPLv3+'
+         'custom'
+         'MIT') 
+groups=('core')
+depends=('rootfs')
+makedepends=('bash'
+             'coreutils'
+             'make'
+             'sed')
+source=('&man-pages-url;')
+md5sums=('&man-pages-md5;')
+
+package(){
+  cd "${pkgname}-${pkgver}"
+
+  # Remove two man pages for password hashing functions - provided by libxcrypt
+  rm -v man3/crypt*
+  make DESTDIR="${pkgdir}" -R GIT=false prefix=/usr install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the options:</title>
@@ -75,6 +107,26 @@
       </varlistentry>
     </variablelist>
 
+    &pacman-build-add;
+
+<screen><userinput>cp man-pages-&man-pages-version;-&man-pages-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/man-pages-&man-pages-version;-&man-pages-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the man-pages package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S man-pages --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/man-pages
+cp PKGBUILD /srv/pacman/source/LFS/man-pages
+cd /sources
+rm -rf man-pages</userinput></screen>
+
   </sect2>
 
   <sect2 id="contents-manpages" role="content">
diff -Naurp lfs-git-2025-03-26/chapter08/markupsafe.xml lfs-pacman-2025-03-26/chapter08/markupsafe.xml
--- lfs-git-2025-03-26/chapter08/markupsafe.xml	2025-03-25 18:44:40.096381751 -0500
+++ lfs-pacman-2025-03-26/chapter08/markupsafe.xml	2025-03-25 22:21:39.461304553 -0500
@@ -40,15 +40,58 @@
   <sect2 role="installation">
     <title>Installation of MarkupSafe</title>
 
-    <para>Compile MarkupSafe with the following command:</para>
+    <para>Create the PKGBUILD for the MarkupSafe package with the following
+    commands:</para>
 
-<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
-
-    <para>This package does not come with a test suite.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">pip3 install --no-index --find-links dist Markupsafe</userinput></screen>
+<screen><userinput>mkdir /sources/markupsafe
+cd /sources/markupsafe
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="markupsafe"
+pkgver="&markupsafe-version;"
+pkgrel="&markupsafe-release;"
+pkgdesc="A Python module that implements an XML/HTML/XHTML Markup safe string."
+arch=('any')
+url="&markupsafe-home;"
+license=('BSD3C')
+groups=('core')
+depends=('python')
+makedepends=('setuptools'
+             'wheel')
+source=('&markupsafe-url;')
+md5sums=('&markupsafe-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}
+  pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+}
+
+package(){
+  cd "${pkgname}-${pkgver}
+  pip3 install --root "${pkgdir}" --no-index --find-links dist Markupsafe
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp markupsafe-&markupsafe-version;-&markupsafe-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/markupsafe-&markupsafe-version;-&markupsafe-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the MarkupSafe package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S markupsafe --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/markupsafe
+cp PKGBUILD /srv/pacman/source/LFS/markupsafe
+cd /sources
+rm -rf markupsafe</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/meson.xml lfs-pacman-2025-03-26/chapter08/meson.xml
--- lfs-git-2025-03-26/chapter08/meson.xml	2025-03-25 18:44:40.096387521 -0500
+++ lfs-pacman-2025-03-26/chapter08/meson.xml	2025-03-25 22:21:39.461418082 -0500
@@ -39,22 +39,61 @@
 
   <sect2 role="installation">
     <title>Installation of Meson</title>
-<!--
-    <para>First, apply a patch that fixes an issue identified upstream:</para>
 
-<screen><userinput remap="pre">patch -Np1 -i ../&meson-fix-patch;</userinput></screen>
--->
-    <para>Compile Meson with the following command:</para>
+    <para>Create the PKGBUILD for the Meson package with the following
+    commands:</para>
 
-<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
-
-    <para>The test suite requires some packages outside the scope of LFS.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">pip3 install --no-index --find-links dist meson
-install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
-install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson</userinput></screen>
+<screen><userinput>mkdir /sources/meson
+cd /sources/meson
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="meson"
+pkgver="&meson-version;"
+pkgrel="&meson-release;"
+pkgdesc="Meson is an open source build system meant to be both extremely fast and as user friendly as possible."
+arch=('any')
+url="&meson-home;"
+license=('Apachev2')
+groups=('core')
+depends=('python'
+         'rootfs')
+makedepends=('ninja')
+source=('&meson-url;')
+md5sums=('&meson-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  pip3 install --root "${pkgdir}" --no-index --find-links dist meson
+  install -vDm644 data/shell-completions/bash/meson ${pkgdir}/usr/share/bash-completion/completions/meson
+  install -vDm644 data/shell-completions/zsh/_meson ${pkgdir}/usr/share/zsh/site-functions/_meson
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp meson-&meson-version;-&meson-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/meson-&meson-version;-&meson-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Meson package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S meson --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/meson
+cp PKGBUILD /srv/pacman/source/LFS/meson
+cd /sources
+rm -rf meson</userinput></screen>
 
     <variablelist>
       <title>The meaning of the install parameters:</title>
diff -Naurp lfs-git-2025-03-26/chapter08/mpc.xml lfs-pacman-2025-03-26/chapter08/mpc.xml
--- lfs-git-2025-03-26/chapter08/mpc.xml	2025-03-25 18:44:40.096393431 -0500
+++ lfs-pacman-2025-03-26/chapter08/mpc.xml	2025-03-25 22:21:39.460834655 -0500
@@ -42,25 +42,80 @@
   <sect2 role="installation">
     <title>Installation of MPC</title>
 
-    <para>Prepare MPC for compilation:</para>
+    <para>Create the PKGBUILD for the Mpc package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/mpc-&mpc-version;</userinput></screen>
-
-    <para>Compile the package and generate the HTML documentation:</para>
-
-<screen><userinput remap="make">make
-make html</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package and its documentation:</para>
-
-<screen><userinput remap="install">make install
-make install-html</userinput></screen>
+<screen><userinput>mkdir /sources/mpc
+cd /sources/mpc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="mpc"
+pkgver="&mpc-version;"
+pkgrel="&mpc-release;"
+pkgdesc="The MPC package contains a math library for arbitrarily high precision with proper rounding."
+arch=('x86'
+      'x86_64')
+url="&mpc-home;"
+license=('LGPLv3')
+groups=('core')
+depends=('glibc'
+         'gmp'
+         'mpfr')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+source=('&mpc-url;')
+md5sums=('&mpc-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr        \
+              --disable-static     \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+  make html
+
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" install-html
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp mpc-&mpc-version;-&mpc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/mpc-&mpc-version;-&mpc-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Mpc package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S mpc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/mpc
+cp PKGBUILD /srv/pacman/source/LFS/mpc
+cd /sources
+rm -rf mpc</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/mpfr.xml lfs-pacman-2025-03-26/chapter08/mpfr.xml
--- lfs-git-2025-03-26/chapter08/mpfr.xml	2025-03-25 18:44:40.096399731 -0500
+++ lfs-pacman-2025-03-26/chapter08/mpfr.xml	2025-03-25 22:21:39.461948810 -0500
@@ -41,31 +41,81 @@
   <sect2 role="installation">
     <title>Installation of MPFR</title>
 
-    <para>Prepare MPFR for compilation:</para>
+    <para>Create the PKGBUILD for the Mpfr package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr        \
-            --disable-static     \
-            --enable-thread-safe \
-            --docdir=/usr/share/doc/mpfr-&mpfr-version;</userinput></screen>
-
-    <para>Compile the package and generate the HTML documentation:</para>
-
-<screen><userinput remap="make">make
-make html</userinput></screen>
-
-    <important>
-      <para>The test suite for MPFR in this section is considered critical.
-      Do not skip it under any circumstances.</para>
-    </important>
-
-    <para>Test the results and ensure that all 198 tests passed:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package and its documentation:</para>
-
-<screen><userinput remap="install">make install
-make install-html</userinput></screen>
+<screen><userinput>mkdir /sources/mpfr
+cd /sources/mpfr
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="mpfr"
+pkgver="&mpfr-version;"
+pkgrel="&mpfr-release;"
+pkgdesc="The MPFR package contains functions for multiple precision math."
+arch=('x86'
+      'x86_64')
+url="&mpfr-home;"
+license=('GPLv3'
+         'LGPLv3')
+groups=('core')
+depends=('glibc'
+         'gmp')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'gmp'
+             'make'
+             'sed'
+             'texinfo')
+source=('&mpfr-url;')
+md5sums=('&mpfr-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr        \
+              --disable-static     \
+              --enable-thread-safe \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+  make html
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" install-html
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp mpfr-&mpfr-version;-&mpfr-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/mpfr-&mpfr-version;-&mpfr-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Mpfr package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S mpfr --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/mpfr
+cp PKGBUILD /srv/pacman/source/LFS/mpfr
+cd /sources
+rm -rf mpfr</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/ncurses.xml lfs-pacman-2025-03-26/chapter08/ncurses.xml
--- lfs-git-2025-03-26/chapter08/ncurses.xml	2025-03-25 18:44:40.096405741 -0500
+++ lfs-pacman-2025-03-26/chapter08/ncurses.xml	2025-03-25 22:21:39.461039164 -0500
@@ -41,16 +41,75 @@
   <sect2 role="installation">
     <title>Installation of Ncurses</title>
 
-    <para>Prepare Ncurses for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr           \
-            --mandir=/usr/share/man \
-            --with-shared           \
-            --without-debug         \
-            --without-normal        \
-            --with-cxx-shared       \
-            --enable-pc-files       \
-            --with-pkg-config-libdir=/usr/lib/pkgconfig</userinput></screen>
+    <para>Create the PKGBUILD for the Ncurses package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/ncurses
+cd /sources/ncurses
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="ncurses"
+pkgver="&ncurses-version;"
+pkgrel="&ncurses-release;"
+pkgdesc="The Ncurses package contains libraries for terminal-independent handling of character screens."
+arch=('x86'
+      'x86_64')
+url="&ncurses-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'patch'
+             'sed')
+source=('&ncurses-url;')
+md5sums=('&ncurses-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./configure --prefix=/usr           \
+              --mandir=/usr/share/man \
+              --with-shared           \
+              --without-debug         \
+              --without-normal        \
+              --with-cxx-shared       \
+              --enable-pc-files       \
+              --with-pkg-config-libdir=/usr/lib/pkgconfig
+  make
+}
+
+package(){
+  make DESTDIR="${pkgdir}" install
+
+  # Not strictly necessary, but remove static archives
+  rm -v  "${pkgdir}"/usr/lib/{libncursesw.so."${pkgver}",libncurses++w.a}
+
+  # Edit curses.h so that the wide curses library is used
+  sed -e 's/^#if.*XOPEN.*$/#if 1/' -i "${pkgdir}/usr/include/curses.h"
+  # Create compatibility symlinks for non-wide ncurses
+  for lib in ncurses form panel menu ; do
+      ln -sfv lib${lib}w.so "${pkgdir}/usr/lib/lib${lib}.so"
+      ln -sfv ${lib}w.pc    "${pkgdir}/usr/lib/pkgconfig/${lib}.pc"
+  done
+
+  # Same thing for curses intead of ncurses
+  ln -sfv libncurses.so "${pkgdir}/usr/lib/libcurses.so"
+
+  # install documentation
+  mkdir -v       "${pkgdir}/usr/share/doc/ncurses-${pkgver}"
+  cp -v -R doc/* "${pkgdir}/usr/share/doc/ncurses-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
 
       <!--  - -enable-widec this is now the default -->
     <variablelist>
@@ -94,76 +153,28 @@
           </para>
         </listitem>
       </varlistentry>
-<!--
-      <varlistentry>
-        <term><parameter>- -enable-widec</parameter></term>
-        <listitem>
-          <para>This switch causes wide-character libraries (e.g., <filename
-          class="libraryfile">libncursesw.so.&ncurses-release;</filename>)
-          to be built instead of normal ones (e.g., <filename
-          class="libraryfile">libncurses.so.&ncurses-release;</filename>).
-          These wide-character libraries are usable in both multibyte and
-          traditional 8-bit locales, while normal libraries work properly
-          only in 8-bit locales. Wide-character and normal libraries are
-          source-compatible, but not binary-compatible.</para>
-        </listitem>
-      </varlistentry>
--->
+  
     </variablelist>
 
-    <para>Compile the package:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="make">make</userinput></screen>
+<screen><userinput>cp ncurses-&ncurses-version;-&ncurses-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/ncurses-&ncurses-version;-&ncurses-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>This package has a test suite, but it can only be run after the
-    package has been installed.  The tests reside in the
-    <filename class="directory">test/</filename> directory.  See the
-    <filename>README</filename> file in that directory for further details.
-    </para>
-
-    <!-- To editors: crash of shell process was very rare but really
-         observed.  We can't simply remove /usr/lib/libncursesw.so.6.x like
-         how we handle libmozjs-xx.so in BLFS because bash needs it, and
-         make will spawn new shell processes during "make install".  -->
-
-    <para>The installation of this package will overwrite
-    <filename class="libraryfile">libncursesw.so.&ncurses-version;</filename>
-    in-place.  It may crash the shell process which is using code and data
-    from the library file.  Install the package with
-    <literal>DESTDIR</literal>, and replace the library file correctly using
-    <command>install</command> command (the header
-    <filename>curses.h</filename> is also edited to ensure the
-    wide-character ABI to be used as what we've done in
-    <xref linkend='ch-tools-ncurses'/>):</para>
-
-<screen><userinput remap="install">make DESTDIR=$PWD/dest install
-install -vm755 dest/usr/lib/libncursesw.so.&ncurses-version; /usr/lib
-rm -v  dest/usr/lib/libncursesw.so.&ncurses-version;
-sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-    -i dest/usr/include/curses.h
-cp -av dest/* /</userinput></screen>
-
-    <para>Many applications still expect the linker to be able to find
-    non-wide-character Ncurses libraries. Trick such applications into
-    linking with wide-character libraries by means of symlinks
-    (note that the <filename class='extension'>.so</filename> links are
-    only safe with <filename>curses.h</filename> edited to always use the
-    wide-character ABI):</para>
-
-<screen><userinput remap="install">for lib in ncurses form panel menu ; do
-    ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
-    ln -sfv ${lib}w.pc    /usr/lib/pkgconfig/${lib}.pc
-done</userinput></screen>
-
-    <para>Finally, make sure that old applications that look for
-    <filename class="libraryfile">-lcurses</filename> at build time are still
-    buildable:</para>
+    <para>Update the local cache and install the Ncurses package:</para>
 
-<screen><userinput remap="install">ln -sfv libncursesw.so /usr/lib/libcurses.so</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S ncurses --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>If desired, install the Ncurses documentation:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">cp -v -R doc -T /usr/share/doc/ncurses-&ncurses-version;</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/ncurses
+cp PKGBUILD /srv/pacman/source/LFS/ncurses
+cd /sources
+rm -rf ncurses</userinput></screen>
 
     <note>
 
diff -Naurp lfs-git-2025-03-26/chapter08/nettle.xml lfs-pacman-2025-03-26/chapter08/nettle.xml
--- lfs-git-2025-03-26/chapter08/nettle.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/nettle.xml	2025-03-25 22:21:39.460762515 -0500
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-nettle" role="wrap">
+  <?dbhtml filename="nettle.html"?>
+
+  <sect1info condition="script">
+    <productname>nettle</productname>
+    <productnumber>&nettle-version;</productnumber>
+    <address>&nettle-url;</address>
+  </sect1info>
+
+  <title>Nettle-&nettle-version;</title>
+
+  <indexterm zone="ch-system-nettle">
+    <primary sortas="a-Nettle">Nettle</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to Nettle</title>
+
+    <para>
+      The <application>Nettle</application> package contains a low-level
+      cryptographic library that is designed to fit easily in many contexts.
+      </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&nettle-fin-sbu;</seg>
+        <seg>&nettle-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+</sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Nettle</title>
+
+    <para>Create the PKGBUILD for the Nettle package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/nettle
+cd /sources/nettle
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="nettle"
+pkgver="&nettle-version;"
+pkgrel="&nettle-release;"
+pkgdesc="The Nettle package contains a low-level cryptographic library."
+arch=('x86'
+      'x86_64')
+url="&nettle-home;"
+groups=('core')
+license=('LGPLv3')
+depends=('glibc'
+         'gmp'
+         'rootfs'))
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&nettle-url;')
+md5sums=('&nettle-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  make
+}
+
+package(){
+  make DESTDIR="${pkgdir}" install
+  chmod -v 755 "${pkgdir}"/usr/lib/lib{hogweed,nettle}.so
+  install -vdm755 -d "${pkgdir}/usr/share/doc/nettle-${pkgver}"
+  install -vm644 nettle.{html,pdf} "${pkgdir}/usr/share/doc/nettle-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp nettle-&nettle-version;-&nettle-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/nettle-&nettle-version;-&nettle-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Nettle package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S nettle --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/nettle
+cp PKGBUILD /srv/pacman/source/LFS/nettle
+cd /sources
+rm -rf nettle</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          nettle-hash, nettle-lfib-stream, nettle-pbkdf2,
+          pkcs1-conv and sexp-conv
+        </seg>
+        <seg>
+          libhogweed.so and libnettle.so
+        </seg>
+        <seg>
+          /usr/include/nettle and /usr/share/doc/nettle-&nettle-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="nettle-hash">
+        <term><command>nettle-hash</command></term>
+        <listitem>
+          <para>
+            calculates a hash value using a specified algorithm
+          </para>
+          <indexterm zone="ch-system-nettle nettle-hash">
+            <primary sortas="b-nettle-hash">nettle-hash</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="nettle-lfib-stream">
+        <term><command>nettle-lfib-stream</command></term>
+        <listitem>
+          <para>
+            outputs a sequence of pseudorandom (non-cryptographic)  bytes,
+            using Knuth's lagged fibonacci generator. The stream is useful for
+            testing, but should not be used to generate cryptographic keys or
+            anything else that needs real randomness
+          </para>
+          <indexterm zone="ch-system-nettle nettle-lfib-stream">
+            <primary sortas="b-nettle-lfib-stream">nettle-lfib-stream</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="nettle-pbkdf2">
+        <term><command>nettle-pbkdf2</command></term>
+        <listitem>
+          <para>
+            is a password-based key derivation function that takes a password
+            or a passphrase as input and returns a strengthened password,
+            which is protected against pre-computation attacks by using
+            salting and other expensive computations.
+          </para>
+          <indexterm zone="ch-system-nettle nettle-pbkdf2">
+            <primary sortas="b-nettle-pbkdf2">nettle-pbkdf2</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pkcs1-conv">
+        <term><command>pkcs1-conv</command></term>
+        <listitem>
+          <para>
+            converts private and public RSA keys from PKCS #1 format to
+            sexp format
+          </para>
+          <indexterm zone="ch-system-nettle pkcs1-conv">
+            <primary sortas="b-pkcs1-conv">pkcs1-conv</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="sexp-conv">
+        <term><command>sexp-conv</command></term>
+        <listitem>
+          <para>
+            converts an s-expression to a different encoding
+          </para>
+          <indexterm zone="ch-system-nettle sexp-conv">
+            <primary sortas="b-sexp-conv">sexp-conv</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/ninja.xml lfs-pacman-2025-03-26/chapter08/ninja.xml
--- lfs-git-2025-03-26/chapter08/ninja.xml	2025-03-25 18:44:40.096414771 -0500
+++ lfs-pacman-2025-03-26/chapter08/ninja.xml	2025-03-25 22:21:39.460821265 -0500
@@ -41,33 +41,83 @@
     <title>Installation of Ninja</title>
 
     <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,
-    NINJAJOBS.  <emphasis role="bold">For example</emphasis>, setting:
+    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, in the prepare
+    functoin below allows a user to limit the number of parallel processes via
+    an environment variable, NINJAJOBS. <emphasis role="bold">For
+    example</emphasis>, setting:
 
     <screen>export NINJAJOBS=4</screen>
 
     will limit <command>ninja</command> to four parallel processes.</para>
 
-    <para>If desired, make <command>ninja</command> recognize the environment variable
-    NINJAJOBS by running the stream editor:</para>
+    <para>Create the PKGBUILD for the Ninja package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">sed -i '/int Guess/a \
+<screen><userinput>mkdir /sources/ninja
+cd /sources/ninja
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="ninja"
+pkgver="&ninja-version;"
+pkgrel="&ninja-release;"
+pkgdesc="Ninja is a small build system with a focus on speed."
+arch=('x86'
+      'x86_64')
+url="&ninja-home;"
+license=('Apachev2')
+groups=('core')
+depends=('gcc'
+         'glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'python')
+checkdepends=('cmake')
+optdepends=('asciidoc'
+            'doxygen'
+            'emacs'
+            're2c')
+source=('&ninja-url;')
+md5sums=('&ninja-md5;')
+    
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  
+  # Add NINJAJOBS environment variable to limit number of jobs
+  sed -i '/int Guess/a \
   int   j = 0;\
   char* jobs = getenv( "NINJAJOBS" );\
   if ( jobs != NULL ) j = atoi( jobs );\
   if ( j > 0 ) return j;\
-' src/ninja.cc</userinput></screen>
+' src/ninja.cc
+}
 
-    <para>Build Ninja with:</para>
-
-<screen><userinput remap="configure">python3 configure.py --bootstrap --verbose</userinput></screen>
+build(){
+  cd ${pkgname}-${pkgver}
+  python3 configure.py --bootstrap --verbose
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  ./ninja ninja_test
+  ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  install -vm755 ninja ${pkgdir}/usr/bin/
+  install -vDm644 misc/bash-completion ${pkgdir}/usr/share/bash-completion/completions/ninja
+  install -vDm644 misc/zsh-completion  ${pkgdir}/usr/share/zsh/site-functions/_ninja
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the build option:</title>
@@ -90,22 +140,39 @@
 
     </variablelist>
 
-    <para>The package tests cannot run in the chroot environment. They require 
+    <para>Prepare the build directory for the pacman user and build the
+    package:</para>
+
+    <para>The package tests cannot run in the chroot environment. They require
     <ulink url="&blfs-book;general/cmake.html">cmake</ulink>.  But the basic
     function of this package is already tested by rebuilding itself
     (with the <parameter>--bootstrap</parameter> option) anyway.</para>
-<!--
-    <para>To test the results, issue:</para>
 
-<screen><userinput remap="test">./ninja ninja_test
-./ninja_test - -gtest_filter=-SubprocessTest.SetWithLots</userinput></screen>
--->
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">install -vm755 ninja /usr/bin/
-install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
-install -vDm644 misc/zsh-completion  /usr/share/zsh/site-functions/_ninja</userinput></screen>
+<screen><userinput>chown -R root:pacman .
+chmod 2775 .
+chmod 664 PKGBUILD
+su pacman -c 'makepkg -L --nodeps --nocheck'</userinput></screen>
+
+    <para>Add the newly created package to the central package
+    repository:</para>
+
+<screen><userinput>cp ninja-&ninja-version;-&ninja-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/ninja-&ninja-version;-&ninja-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Ninja package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S ninja --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/ninja
+cp PKGBUILD /srv/pacman/source/LFS/ninja
+cd /sources
+rm -rf ninja</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/npth.xml lfs-pacman-2025-03-26/chapter08/npth.xml
--- lfs-git-2025-03-26/chapter08/npth.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/npth.xml	2025-03-25 22:21:39.461675471 -0500
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-npth" role="wrap">
+  <?dbhtml filename="npth.html"?>
+
+  <sect1info condition="script">
+    <productname>npth</productname>
+    <productnumber>&npth-version;</productnumber>
+    <address>&npth-url;</address>
+  </sect1info>
+
+  <title>Npth-&npth-version;</title>
+
+  <indexterm zone="ch-system-npth">
+    <primary sortas="a-Npth">Npth</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>NPth</application> package contains a very portable
+      POSIX/ANSI-C based library for Unix platforms which provides
+      non-preemptive priority-based scheduling for multiple threads of
+      execution (multithreading) inside event-driven applications. All threads
+      run in the same address space of the server application, but each thread
+      has its own individual program-counter, run-time stack, signal mask and
+      errno variable.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&npth-fin-sbu;</seg>
+        <seg>&npth-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of NPth</title>
+
+    <para>Create the PKGBUILD for the NPth package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/npth
+cd /sources/npth
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="npth"
+pkgver="&npth-version;"
+pkgrel="&npth-release;"
+pkgdesc="${pkgname} ${pkgver}"
+arch=('x86'
+      'x86_64')
+url="&npth-home;"
+license=('LGPLv2.1')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&npth-url;')
+md5sums=('&npth-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp npth-&npth-version;-&npth-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/npth-&npth-version;-&npth-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the NPth package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S npth --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/npth
+cp PKGBUILD /srv/pacman/source/LFS/npth
+cd /sources
+rm -rf npth</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>npth-config</seg>
+        <seg>libnpth.so</seg>
+        <seg>None</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="npth-config">
+        <term><command>npth-config</command></term>
+        <listitem>
+          <para>
+            is a utility used to configure and build applications based on
+            the npth library. It can be used to query the C compiler and
+            linker flags which are required to correctly compile and link the
+            application against the npth library.
+          </para>
+          <indexterm zone="ch-system-npth npth-config">
+            <primary sortas="b-npth-config">npth-config</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libnpth">
+        <term><filename class="libraryfile">libnpth.so</filename></term>
+        <listitem>
+          <para>
+            contains the API functions used by the New Portable Threads
+            Library.
+          </para>
+          <indexterm zone="ch-system-npth libnpth">
+            <primary sortas="c-libnpth">libnpth.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </sect2>
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/openssl.xml lfs-pacman-2025-03-26/chapter08/openssl.xml
--- lfs-git-2025-03-26/chapter08/openssl.xml	2025-03-25 18:44:40.096421600 -0500
+++ lfs-pacman-2025-03-26/chapter08/openssl.xml	2025-03-25 22:21:39.460840465 -0500
@@ -42,28 +42,6 @@
 
   <sect2 role="installation">
     <title>Installation of OpenSSL</title>
-<!--
-    <para>First fix a problem with some advanced architectures with avx512
-    capability:</para>
-
- <screen><userinput remap="pre">sed -e '/bn_reduce.*m1/i\    factor_size /= sizeof(BN_ULONG) * 8;' \
-    -i crypto/bn/rsaz_exp_x2.c</userinput></screen>
--->
-    <para>Prepare OpenSSL for compilation:</para>
-
-<screen><userinput remap="configure">./config --prefix=/usr         \
-         --openssldir=/etc/ssl \
-         --libdir=lib          \
-         shared                \
-         zlib-dynamic</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">HARNESS_JOBS=<replaceable>$(nproc)</replaceable> make test</userinput></screen>
 
     <para>One test, 30-test_afalg.t, is known to fail if the host kernel
     does not have <option>CONFIG_CRYPTO_USER_API_SKCIPHER</option> enabled,
@@ -73,19 +51,91 @@
     <option>CONFIG_CRYPTO_AES_NI_INTEL</option> if the CPU supports AES-NI)
     enabled.  If it fails, it can safely be ignored.</para>
 
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
-make MANSUFFIX=ssl install</userinput></screen>
-
-    <para>Add the version to the documentation directory name, to be
-    consistent with other packages:</para>
-
-<screen><userinput remap="install">mv -v /usr/share/doc/openssl /usr/share/doc/openssl-&openssl-version;</userinput></screen>
 
-    <para>If desired, install some additional documentation:</para>
+    <para>Create the PKGBUILD for the OpenSSL package with the following
+    commands:</para>
 
-<screen><userinput remap="install">cp -vfr doc/* /usr/share/doc/openssl-&openssl-version;</userinput></screen>
+<screen><userinput>mkdir /sources/openssl
+cd /sources/openssl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="openssl"
+pkgver="&openssl-version;"
+pkgrel="&openssl-release;"
+pkgdesc="The OpenSSL package contains management tools and libraries relating to cryptography."
+arch=('x86'
+      'x86_64')
+url="&openssl-home;"
+license=('OpenSSL'
+         'SSLeay')
+groups=('core')
+depends=('glibc'
+         'perl'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'make')
+source=('&openssl-url;')
+md5sums=('&openssl-md5;')
+    
+build(){
+  cd ${pkgname}-${pkgver}
+  ./config --prefix=/usr         \
+           --openssldir=/etc/ssl \
+           --libdir=/lib         \
+           shared                \
+           zlib-dynamic
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  HARNESS_JOBS=$(nproc) make -k test || true
+
+  # One test, 30-test_afalg.t, is known to fail if the host kernel does
+  # not have CONFIG_CRYPTO_USER_API_SKCIPHER enabled, or does not have
+  # any options providing an AES with CBC implementation (for example,
+  # the combination of CONFIG_CRYPTO_AES and CONFIG_CRYPTO_CBC, or
+  # CONFIG_CRYPTO_AES_NI_INTEL if the CPU supports AES-NI) enabled.
+  # If it fails, it can safely be ignored.
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+
+  # Do not install static libs
+  sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
+
+  make DESTDIR=${pkgdir} MANSUFFIX=ssl install
+
+  # move docu to versioned directory and install the remainder
+  mv -v ${pkgdir}/usr/share/doc/openssl \
+        ${pkgdir}/usr/share/doc/openssl-${pkgver}
+  cp -vfr doc/* ${pkgdir}/usr/share/doc/openssl-${pkgver}
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp openssl-&openssl-version;-&openssl-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/openssl-&openssl-version;-&openssl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the OpenSSL package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S openssl --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/openssl
+cp PKGBUILD /srv/pacman/source/LFS/openssl
+cd /sources
+rm -rf openssl</userinput></screen>
 
     <note>
       <para>
diff -Naurp lfs-git-2025-03-26/chapter08/p11-kit.xml lfs-pacman-2025-03-26/chapter08/p11-kit.xml
--- lfs-git-2025-03-26/chapter08/p11-kit.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/p11-kit.xml	2025-03-25 22:21:39.462012990 -0500
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-p11-kit" role="wrap">
+  <?dbhtml filename="p11-kit.html"?>
+
+  <sect1info condition="script">
+    <productname>p11-kit</productname>
+    <productnumber>&p11-kit-version;</productnumber>
+    <address>&p11-kit-url;</address>
+  </sect1info>
+
+  <title>P11-kit-&p11-kit-version;</title>
+
+  <indexterm zone="ch-system-p11-kit">
+    <primary sortas="a-P11-kit">P11-kit</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to p11-kit</title>
+
+    <para>
+      The <application>p11-kit</application> package provides a way to load and
+      enumerate PKCS #11 (a Cryptographic Token Interface Standard) modules.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&p11-kit-fin-sbu;</seg>
+        <seg>&p11-kit-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of p11-kit</title>
+
+    <para>Create the PKGBUILD for the p11-kit package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/p11-kit
+cd /sources/p11-kit
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="p11-kit"
+pkgver="&p11-kit-version;"
+pkgrel="&p11-kit-release;"
+pkgdesc="The p11-kit package provides a way to load and enumerate PKCS #11 modules"
+arch=('x86'
+      'x86_64')
+url="&p11-kit-home;"
+depends=('glibc'
+         'libtasn1'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'make'
+             'sed'
+             'texinfo')
+optdepends=('gtk-doc'
+            'libxslt'
+            'nss')
+source=('&p11-kit-url;')
+md5sums=('&p11-kit-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr     \
+              --sysconfdir=/etc \
+              --with-trust-paths=/etc/pki/anchors
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  ln -sfv ./pkcs11/p11-kit-trust.so "${pkgdir}/usr/lib/libnssckbi.so"
+
+  # Configure the trust-extract-compat script to use make-ca
+  cat &gt;&gt; "{pkgdir}/usr/libexec/p11-kit/trust-extract-compat" &lt;&lt; "EOF"
+
+# Copy existing anchor modifications to /etc/ssl/local
+/usr/libexec/make-ca/copy-trust-modifications
+
+# Update trust stores
+/usr/sbin/make-ca -r
+EOF
+  ln -sfv /usr/libexec/p11-kit/trust-extract-compat \
+          "${pkgdir}/usr/bin/update-ca-certificates"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp p11-kit-&p11-kit-version;-&p11-kit-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/p11-kit-&p11-kit-version;-&p11-kit-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the p11-kit package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S p11-kit --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/p11-kit
+cp PKGBUILD /srv/pacman/source/LFS/p11-kit
+cd /sources
+rm -rf p11-kit</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--with-trust-paths=/etc/pki/anchors</parameter>: this switch
+      sets the location of trusted certificates used by libp11-kit.so.
+    </para>
+
+    <para>
+      <option>--with-hash-impl=freebl</option>: Use this switch if you want to
+      use the Freebl library from <application>NSS</application> for SHA1 and
+      MD5 hashing.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          p11-kit, trust, and update-ca-certificates
+        </seg>
+        <seg>
+          libp11-kit.so and p11-kit-proxy.so
+        </seg>
+        <seg>
+          /etc/pkcs11,
+          /usr/include/p11-kit-1,
+          /usr/lib/pkcs11,
+          /usr/libexec/p11-kit,
+          /usr/share/gtk-doc/html/p11-kit, and
+          /usr/share/p11-kit
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="p11-kit-prog">
+        <term><command>p11-kit</command></term>
+        <listitem>
+          <para>
+            is a command line tool that can be used to perform operations
+            on PKCS#11 modules configured on the system.
+          </para>
+          <indexterm zone="ch-system-p11-kit p11-kit-prog">
+            <primary sortas="b-p11-kit">p11-kit</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="trust">
+        <term><command>trust</command></term>
+        <listitem>
+          <para>
+            is a command line tool to examine and modify the shared trust
+            policy store.
+          </para>
+          <indexterm zone="ch-system-p11-kit trust">
+            <primary sortas="b-trust">trust</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="update-ca-certificates">
+        <term><command>update-ca-certificates</command></term>
+        <listitem>
+          <para>
+            is a command line tool to both extract local certificates from an
+            updated anchor store, and regenerate all anchors and certificate
+            stores on the system. This is done unconditionally in LFS using
+            the <parameter>-r</parameter> flag to <command>make-ca</command>
+            and should not be used to refresh the upstream certificate store.
+          </para>
+          <indexterm zone="ch-system-p11-kit update-ca-certificates">
+            <primary sortas="b-update-ca-certificates">update-ca-certificates</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libp11-kit">
+        <term><filename class="libraryfile">libp11-kit.so</filename></term>
+        <listitem>
+          <para>
+            contains functions used to coordinate initialization and
+            finalization of any PKCS#11 module.
+          </para>
+          <indexterm zone="ch-system-p11-kit libp11-kit">
+            <primary sortas="c-libp11-kit">libp11-kit.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="p11-kit-proxy">
+        <term><filename class="libraryfile">p11-kit-proxy.so</filename></term>
+        <listitem>
+          <para>
+            is the PKCS#11 proxy module.
+          </para>
+          <indexterm zone="ch-system-p11-kit p11-kit-proxy">
+            <primary sortas="c-p11-kit-proxy">p11-kit-proxy.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/pacman-contrib.xml lfs-pacman-2025-03-26/chapter08/pacman-contrib.xml
--- lfs-git-2025-03-26/chapter08/pacman-contrib.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/pacman-contrib.xml	2025-03-25 22:21:39.460747445 -0500
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-pacman-contrib" role="wrap">
+  <?dbhtml filename="pacman-contrib.html"?>
+
+  <sect1info condition="script">
+    <productname>pacman-contrib</productname>
+    <productnumber>&pacman-contrib-version;</productnumber>
+    <address>&pacman-contrib-url;</address>
+  </sect1info>
+
+  <title>Pacman-contirb-&pacman-contrib-version;</title>
+
+  <indexterm zone="ch-system-pacman-contrib">
+    <primary sortas="a-Pacman-contirb">Pacman-contirb</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Pacman-contirb package contains scripts and tools for Pacman
+    systems.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pacman-contrib-fin-sbu;</seg>
+        <seg>&pacman-contrib-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Pacman-contirb</title>
+
+    <para>Create the PKGBUILD for the Pacman-contrib package with the following
+    commands:</para>
+
+<screen revision="sysv"><userinput>mkdir /sources/pacman-contrib
+cd /sources/pacman-contrib
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="pacman-contrib"
+pkgver="&pacman-contrib-version;"
+pkgrel="&pacman-contrib-release;"
+pkgdesc="Contains utilities useful for working with pacman based packages"
+arch=('x86'
+      'x86_64')
+url="&pacman-contrib-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'diffutils'
+         'fakeroot'
+         'findutils'
+         'glibc'
+         'pacman'
+         'perl'
+         'sudo'
+         'vim')
+makedepends=('gcc'
+             'make')
+source=('&pacman-contrib-url;')
+md5sums=('&pacman-contrib-md5;')
+
+prepare(){
+  cd "${pkgname}-v${pkgver}"
+  ./autogen.sh
+}
+
+build(){
+  cd "${pkgname}-v${pkgver}"
+  ./configure --prefix=/usr     \
+              --disable-doc     \
+              --sysconfdir=/etc \
+              --localstatedir=/var
+  make
+{
+
+package(){
+  cd "${pkgname}-v${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  rm -rf "${pkgdir}/usr/lib/systemd/"
+}</literal>
+REALEOF</userinput></screen>
+
+<screen revision="systemd"><userinput>mkdir /sources/pacman-contrib
+cd /sources/pacman-contrib
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="pacman-contrib"
+pkgver="&pacman-contrib-version;"
+pkgrel="&pacman-contrib-release;"
+pkgdesc="Contains utilities useful for working with pacman based packages"
+arch=('x86'
+      'x86_64')
+url="&pacman-contrib-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'diffutils'
+         'fakeroot'
+         'findutils'
+         'glibc'
+         'pacman'
+         'perl'
+         'sudo'
+         'vim')
+makedepends=('gcc'
+             'make')
+source=('&pacman-contrib-url;')
+md5sums=('&pacman-contrib-md5;')
+
+prepare(){
+  cd "${pkgname}-v${pkgver}"
+  ./autogen.sh
+}
+
+build(){
+  cd "${pkgname}-v${pkgver}"
+  ./configure --prefix=/usr     \
+              --disable-doc     \
+              --sysconfdir=/etc \
+              --localstatedir=/var
+  make
+{
+
+package(){
+  cd "${pkgname}-v${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp pacman-contrib-&pacman-contrib-version;-&pacman-contrib-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/pacman-contrib-&pacman-contrib-version;-&pacman-contrib-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Pacman-contrib package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S pacman-contrib --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/pacman-contrib
+cp PKGBUILD /srv/pacman/source/LFS/pacman-contrib
+cd /sources
+rm -rf pacman-contrib</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-pacman-contrib" role="content">
+    <title>Contents of Pacman-contirb</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+
+      <seglistitem>
+        <seg>checkupdates, paccache, pacdiff, paclist, paclog-pkglist,
+        pacscripts, pacsearch, pacsort, pactree, rankmirrors, and
+        updpkgsums</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="checkupdates">
+        <term><command>checkupdates</command></term>
+        <listitem>
+          <para>is a utility to safely prints a list of pending updates.</para>
+          <indexterm zone="ch-system-pacman-contrib checkupdates">
+            <primary sortas="b-checkupdates">checkupdates</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="paccache">
+        <term><command>paccache</command></term>
+        <listitem>
+          <para>is a flexible pacman cache cleaning utility.</para>
+          <indexterm zone="ch-system-pacman-contrib paccache">
+            <primary sortas="b-paccache">paccache</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacdiff">
+        <term><command>pacdiff</command></term>
+        <listitem>
+          <para>is a pacorig, pacnew and pacsave configuration file maintenance
+          utility.</para>
+          <indexterm zone="ch-system-pacman-contrib pacdiff">
+            <primary sortas="b-pacdiff">pacdiff</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="paclist">
+        <term><command>paclist</command></term>
+        <listitem>
+          <para>is a utility to list all installed packages from a given
+          repo.</para>
+          <indexterm zone="ch-system-pacman-contrib paclist">
+            <primary sortas="b-paclist">paclist</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="paclog-pkglist">
+        <term><command>paclog-pkglist</command></term>
+        <listitem>
+          <para>is a utiltiy to parse a log file into a list of currently
+          installed packages.</para>
+          <indexterm zone="ch-system-pacman-contrib paclog-pkglist">
+            <primary sortas="b-paclog-pkglist">paclog-pkglist</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacscripts">
+        <term><command>pacscripts</command></term>
+        <listitem>
+          <para>is a utiltiy to print the {pre,post}_{install,remove,upgrade}
+          scripts of a given package.</para>
+          <indexterm zone="ch-system-pacman-contrib pacscripts">
+            <primary sortas="b-pacscripts">pacscripts</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacsearch">
+        <term><command>pacsearch</command></term>
+        <listitem>
+          <para>is a utility to search using both the local and the sync
+          databases.</para>
+          <indexterm zone="ch-system-pacman-contrib pacsearch">
+            <primary sortas="b-pacsearch">pacsearch</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacsort">
+        <term><command>pacsort</command></term>
+        <listitem>
+          <para>is a sort utility implementing alpm_pkg_vercmp.</para>
+          <indexterm zone="ch-system-pacman-contrib pacsort">
+            <primary sortas="b-pacsort">pacsort</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pactree">
+        <term><command>pactree</command></term>
+        <listitem>
+          <para>is a package dependency tree viewer.</para>
+          <indexterm zone="ch-system-pacman-contrib pactree">
+            <primary sortas="b-pactree">pactree</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="rankmirrors">
+        <term><command>rankmirrors</command></term>
+        <listitem>
+          <para>is a utility to rank pacman mirrors by their connection and
+          opening speed.</para>
+          <indexterm zone="ch-system-pacman-contrib rankmirrors">
+            <primary sortas="b-rankmirrors">rankmirrors</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="updpkgsums">
+        <term><command>updpkgsums</command></term>
+        <listitem>
+          <para>is a utility to update the checksums of a PKGBUILD file.</para>
+          <indexterm zone="ch-system-pacman-contrib updpkgsums">
+            <primary sortas="b-updpkgsums">updpkgsums</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/pacman.xml lfs-pacman-2025-03-26/chapter08/pacman.xml
--- lfs-git-2025-03-26/chapter08/pacman.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/pacman.xml	2025-03-25 22:21:39.461753461 -0500
@@ -0,0 +1,640 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-pacman" role="wrap">
+  <?dbhtml filename="pacman.html"?>
+
+  <sect1info condition="script">
+    <productname>pacman</productname>
+    <productnumber>&pacman-version;</productnumber>
+    <address>&pacman-url;</address>
+  </sect1info>
+
+  <title>Pacman-&pacman-version;</title>
+
+  <indexterm zone="ch-system-pacman">
+    <primary sortas="a-Pacman">Pacman</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Pacman package contains programs for simulating superuser
+    privileges.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pacman-fin-sbu;</seg>
+        <seg>&pacman-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Pacman</title>
+
+    <para>Create the PKGBUILD for the Pacman package with the following
+    commands:</para>
+
+<screen revision="sysv"><userinput>mkdir /sources/pacman
+cd /sources/pacman
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="pacman"
+pkgver="&pacman-version;"
+pkgrel="&pacman-release;"
+pkgdesc="A library-based package manager with dependency support"
+arch=('x86'
+      'x86_64')
+url="&pacman-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'curl'
+         'glibc'
+         'gpgme'
+         'libarchive')
+makedepends=('asciidoc'
+             'libxslt')
+backup=('etc/pacman.conf'
+        'etc/makepkg.conf')
+source=("&pacman-url;"
+        "&pacman-hooks-url;"
+        "makepkg.conf"
+        "pacman.conf")
+md5sums=('&pacman-md5;'
+         '&pacman-hooks-md5;'
+         ''
+         '')
+noextract=('pacman-hooks-&pacman-hooks-version;.tar.xz')
+prepare()
+  cd "${pkgname}-${pkgver}"
+  # Extract collection of pacman hooks that are useful for LFS
+  tar -xf ../pacman-hooks-&pacman-hooks-version;.tar.xz
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  meson --prefix=/usr \
+        --buildtype=plain \
+        -Dscriptlet-shell=/usr/bin/bash \
+        -Dldconfig=/usr/bin/ldconfig \
+        build
+  meson compile -C build
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  meson test -C build
+
+  # Install pacman hooks
+  # These aren't needed on SysV
+  rm -f pacman-hooks-&pacman-hooks-version;/hooks/*systemd*
+  rm -f pacman-hooks-&pacman-hooks-version;/hooks/dbus-reload.hook
+  rm -f pacman-hooks-&pacman-hooks-version;/scripts/*systemd*
+
+  sed '/^Target/s@/\*@/*.info*@' -i \
+     pacman-hooks-&pacman-hooks-version;/hooks/texinfo-install.hook
+  install -vdm755 /usr/share/libalpm/{hooks,scripts}/
+  install -vm644  pacman-hooks-&pacman-hooks-version;/hooks/* \
+                  "${pkgdir}/usr/share/libalpm/hooks/"
+  install -vm755  pacman-hooks-&pacman-hooks-version;/scripts/* \
+                  "${pkgdir}/usr/share/libalpm/scripts/"
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  DESTDIR="${pkgdir}" meson install -C build
+  # Install pacman hooks
+  # These aren't needed on SysV
+  rm -f pacman-hooks-&pacman-hooks-version;/hooks/*systemd*
+  rm -f pacman-hooks-&pacman-hooks-version;/hooks/dbus-reload.hook
+  rm -f pacman-hooks-&pacman-hooks-version;/scripts/*systemd*
+
+  sed '/^Target/s@/\*@/*.info*@' -i \
+     pacman-hooks-&pacman-hooks-version;/hooks/texinfo-install.hook
+  install -vdm755 /usr/share/libalpm/{hooks,scripts}/
+  install -vm644  pacman-hooks-&pacman-hooks-version;/hooks/* \
+                  "${pkgdir}/usr/share/libalpm/hooks/"
+  install -vm755  pacman-hooks-&pacman-hooks-version;/scripts/* \
+                  "${pkgdir}/usr/share/libalpm/scripts/"
+}</literal>
+REALEOF</userinput></screen>
+
+<screen revision="systemd"><userinput>mkdir /sources/pacman
+cd /sources/pacman
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="pacman"
+pkgver="&pacman-version;"
+pkgrel="&pacman-release;"
+pkgdesc="A library-based package manager with dependency support"
+arch=('x86'
+      'x86_64')
+url="&pacman-home;"
+license=('GPLv2')
+groups=('core')
+depends=('bash'
+         'curl'
+         'glibc'
+         'gpgme'
+         'libarchive')
+makedepends=('asciidoc'
+             'libxslt')
+backup=('etc/pacman.conf'
+        'etc/makepkg.conf')
+source=("&pacman-url;"
+        "&pacman-hooks-url;"
+        "makepkg.conf"
+        "pacman.conf")
+md5sums=('&pacman-md5;'
+         '&pacman-hooks-md5;'
+         ''
+         '')
+noextract=('pacman-hooks-&pacman-hooks-version;.tar.xz')
+prepare()
+  cd "${pkgname}-${pkgver}"
+  # Extract collection of pacman hooks that are useful for LFS
+  tar -xf ../pacman-hooks-&pacman-hooks-version;.tar.xz
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  meson --prefix=/usr \
+        --buildtype=plain \
+        -Dscriptlet-shell=/usr/bin/bash \
+        -Dldconfig=/usr/bin/ldconfig \
+        build
+  meson compile -C build
+}
+
+check() {
+  cd "${pkgname}-${pkgver}"
+  meson test -C build
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  DESTDIR="${pkgdir}" meson install -C build
+  
+  # Install pacman hooks
+  sed '/^Target/s@/\*@/*.info*@' -i \
+     pacman-hooks-&pacman-hooks-version;/hooks/texinfo-install.hook
+  install -vdm755 /usr/share/libalpm/{hooks,scripts}/
+  install -vm644  pacman-hooks-&pacman-hooks-version;/hooks/* \
+                  "${pkgdir}/usr/share/libalpm/hooks/"
+  install -vm755  pacman-hooks-&pacman-hooks-version;/scripts/* \
+                  "${pkgdir}/usr/share/libalpm/scripts/"
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>Create the default <filename>pacman.conf</filename>:</para>
+
+<screen><userinput>cat &gt; pacman.conf &lt;&lt; "REALEOF"
+<literal># /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir     = /
+#DBPath      = /var/lib/pacman/
+#CacheDir    = /var/cache/pacman/pkg/
+#LogFile     = /var/log/pacman.log
+#GPGDir      = /etc/pacman.d/gnupg/
+#HookDir     = /etc/pacman.d/hooks/
+HoldPkg     = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg   =
+#IgnoreGroup =
+
+#NoUpgrade   =
+#NoExtract   =
+
+# Misc options
+#UseSyslog
+#Color
+#TotalDownload
+CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel    = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+#   - can be defined here or included from another file
+#   - pacman will search repositories in the order defined here
+#   - local/custom mirrors can be added here or in separate files
+#   - repositories listed first will take precedence when packages
+#     have identical names, regardless of version number
+#   - URLs will have $repo replaced by the name of the current repo
+#   - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+#       [repo-name]
+#       Server = ServerName
+#       Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# An example of a disabled remote package repository with multiple servers
+# available. To enable, uncomment the following lines. You can add preferred
+# servers immediately after the header and they will be used before the
+# default mirrors.
+#[core]
+#SigLevel = Required
+#Server = ftp://ftp.example.com/foobar/$repo/os/$arch/
+# The file referenced here should contain a list of 'Server = ' lines.
+#Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository.  See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+
+[Main]
+SigLevel = Optional TrustAll
+Server = file:///srv/pacman/repos/Main
+
+[Extra]
+SigLevel = Optional TrustAll
+Server = file:///srv/pacman/repos/Extra</literal>
+REALEOF</userinput></screen>
+
+    <para>Create the default <filename>makepkg.conf</filename>:</para>
+
+<screen><userinput>cat &gt; makepkg.conf &lt;&lt; "REALEOF"
+<literal># /etc/makepkg.conf
+
+#########################################################################
+# SOURCE ACQUISITION
+#########################################################################
+#
+#-- The download utilities that makepkg should use to acquire sources
+#  Format: 'protocol::agent'
+DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
+          'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
+          'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
+          'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
+          'rsync::/usr/bin/rsync --no-motd -z %u %o'
+          'scp::/usr/bin/scp -C %u %o')
+
+# Other common tools:
+# /usr/bin/snarf
+# /usr/bin/lftpget -c
+# /usr/bin/wget
+
+#-- The package required by makepkg to download VCS sources
+#  Format: 'protocol::package'
+VCSCLIENTS=('bzr::breezy'
+            'fossil::fossil'
+            'git::git'
+            'hg::mercurial'
+            'svn::subversion')
+
+#########################################################################
+# ARCHITECTURE, COMPILE FLAGS
+#########################################################################
+#
+CARCH="x86_64"
+CHOST="x86_64-pc-linux-gnu"
+
+#-- Compiler and Linker Flags
+#CPPFLAGS=""
+CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+        -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
+        -fstack-clash-protection -fcf-protection \
+        -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
+CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
+LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
+         -Wl,-z,pack-relative-relocs"
+LTOFLAGS="-flto=auto"
+#-- Make Flags: change this for DistCC/SMP systems
+#MAKEFLAGS="-j2"
+#-- Debugging flags
+DEBUG_CFLAGS="-g"
+DEBUG_CXXFLAGS="$DEBUG_CFLAGS"
+
+#########################################################################
+# BUILD ENVIRONMENT
+#########################################################################
+#
+# Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
+#  A negated environment option will do the opposite of the comments below.
+#
+#-- distcc:   Use the Distributed C/C++/ObjC compiler
+#-- color:    Colorize output messages
+#-- ccache:   Use ccache to cache compilation
+#-- check:    Run the check() function if present in the PKGBUILD
+#-- sign:     Generate PGP signature file
+#
+BUILDENV=(!distcc color !ccache check !sign)
+#
+#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
+#-- specify a space-delimited list of hosts running in the DistCC cluster.
+#DISTCC_HOSTS=""
+#
+#-- Specify a directory for package building.
+#BUILDDIR=/tmp/makepkg
+
+#########################################################################
+# GLOBAL PACKAGE OPTIONS
+#   These are default values for the options=() settings
+#########################################################################
+#
+# Makepkg defaults:
+# OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps)
+#  A negated option will do the opposite of the comments below.
+#
+#-- strip:      Strip symbols from binaries/libraries
+#-- docs:       Save doc directories specified by DOC_DIRS
+#-- libtool:    Leave libtool (.la) files in packages
+#-- staticlibs: Leave static library (.a) files in packages
+#-- emptydirs:  Leave empty directories in packages
+#-- zipman:     Compress manual (man and info) pages in MAN_DIRS with gzip
+#-- purge:      Remove files specified by PURGE_TARGETS
+#-- debug:      Add debugging flags as specified in DEBUG_* variables
+#-- lto:        Add compile flags for building with link time optimization
+#-- autodeps:   Automatically add depends/provides
+#
+OPTIONS=(strip docs !libtool !staticlibs emptydirs !zipman purge !debug !lto !autodeps)
+
+#-- File integrity checks to use. Valid: ck, md5, sha1, sha224, sha256, sha384, sha512, b2
+INTEGRITY_CHECK=(sha256)
+#-- Options to be used when stripping binaries. See `man strip' for details.
+STRIP_BINARIES="--strip-all"
+#-- Options to be used when stripping shared libraries. See `man strip' for details.
+STRIP_SHARED="--strip-unneeded"
+#-- Options to be used when stripping static libraries. See `man strip' for details.
+STRIP_STATIC="--strip-debug"
+#-- Manual (man and info) directories to compress (if zipman is specified)
+MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
+#-- Doc directories to remove (if !docs is specified)
+DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
+#-- Files to be removed from all packages (if purge is specified)
+PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
+#-- Directory to store source code in for debug packages
+DBGSRCDIR="/usr/src/debug"
+#-- Prefix and directories for library autodeps
+LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32')
+
+#########################################################################
+# PACKAGE OUTPUT
+#########################################################################
+#
+# Default: put built package and cached source in build directory
+#
+#-- Destination: specify a fixed directory where all packages will be placed
+#PKGDEST=/home/packages
+#-- Source cache: specify a fixed directory where source files will be cached
+#SRCDEST=/home/sources
+#-- Source packages: specify a fixed directory where all src packages will be placed
+#SRCPKGDEST=/home/srcpackages
+#-- Log files: specify a fixed directory where all log files will be placed
+#LOGDEST=/home/makepkglogs
+#-- Packager: name/email of the person or organization building packages
+#PACKAGER="John Doe &lt;john@doe.com&gt;"
+#-- Specify a key to use for package signing
+#GPGKEY=""
+
+#########################################################################
+# COMPRESSION DEFAULTS
+#########################################################################
+#
+COMPRESSGZ=(gzip -c -f -n)
+COMPRESSBZ2=(bzip2 -c -f)
+COMPRESSXZ=(xz -c -z -)
+COMPRESSZST=(zstd -c -z -q -)
+COMPRESSLRZ=(lrzip -q)
+COMPRESSLZO=(lzop -q)
+COMPRESSZ=(compress -c -f)
+COMPRESSLZ4=(lz4 -q)
+COMPRESSLZ=(lzip -c -f)
+
+#########################################################################
+# EXTENSION DEFAULTS
+#########################################################################
+#
+PKGEXT='.pkg.tar.xz'
+SRCEXT='.src.tar.xz'
+
+#########################################################################
+# OTHER
+#########################################################################
+#
+#-- Command used to run pacman as root, instead of trying sudo and su
+PACMAN_AUTH=()</literal>
+REALEOF</userinput></screen>
+
+   <para>As was done with the GlibC package, we are creating files in the
+   source array on the fly, so we'll need to update the MD5 Sums:</para>
+
+<screen><userinput>updpkgsums</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp pacman-&pacman-version;-&pacman-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/pacman-&pacman-version;-&pacman-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Pacman package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S pacman --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/pacman
+cp PKGBUILD /srv/pacman/source/LFS/pacman
+cd /sources
+rm -rf pacman</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-pacman" role="content">
+    <title>Contents of Pacman</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+      <segtitle>Installed libraries</segtitle>
+      <segtitle>Installed directories</segtitle>
+
+      <seglistitem>
+        <seg>makepkg, makepkg-template, pacman, pacman-conf, pacman-db-upgrade,
+        pacman-key, repo-add, repo-elephant, repo-remove, testpkg, and
+        vercmp</seg>
+        <seg>libalpm.so</seg>
+        <seg>/usr/share/makepkg, /usr/share/pacman, and /srv/pacman/repos</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="makepkg">
+        <term><command>makepkg</command></term>
+        <listitem>
+          <para>is a script to automate the building of packages.</para>
+          <indexterm zone="ch-system-pacman makepkg">
+            <primary sortas="b-makepkg">makepkg</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="makepkg-template">
+        <term><command>makepkg-template</command></term>
+        <listitem>
+          <para>is a script to ease the work of maintaining multiple similar
+           PKGBUILDs.</para>
+          <indexterm zone="ch-system-pacman makepkg-template">
+            <primary sortas="b-makepkg-template">makepkg-template</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacman">
+        <term><command>pacman</command></term>
+        <listitem>
+          <para>is a package management utility that tracks installed packages
+          on a Linux system.</para>
+          <indexterm zone="ch-system-pacman pacman">
+            <primary sortas="b-pacman">pacman</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacman-conf">
+        <term><command>pacman-conf</command></term>
+        <listitem>
+          <para>is a utility for parsing the pacman configuration file and
+          returning script-friendly output.</para>
+          <indexterm zone="ch-system-pacman pacman-conf">
+            <primary sortas="b-pacman-conf">pacman-conf</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacman-db-upgrade">
+        <term><command>pacman-db-upgrade</command></term>
+        <listitem>
+          <para>is a tool to upgrade the local pacman database to a newer
+          format.</para>
+          <indexterm zone="ch-system-pacman pacman-db-upgrade">
+            <primary sortas="b-pacman-db-upgrade">pacman-db-upgrade</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="pacman-key">
+        <term><command>pacman-key</command></term>
+        <listitem>
+          <para>is a wrapper script for GnuPG used to manage pacman’s
+          keyring.</para>
+          <indexterm zone="ch-system-pacman pacman-key">
+            <primary sortas="b-pacman-key">pacman-key</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="repo-add">
+        <term><command>repo-add</command></term>
+        <listitem>
+          <para>is a tool to update a package database by reading a built
+          package file.</para>
+          <indexterm zone="ch-system-pacman repo-add">
+            <primary sortas="b-repo-add">repo-add</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="repo-elephant">
+        <term><command>repo-elephant</command></term>
+        <listitem>
+          <para>is an internal devleoper command not intended for users or
+          sysadmins.</para>
+          <indexterm zone="ch-system-pacman repo-elephant">
+            <primary sortas="b-repo-elephant">repo-elephant</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="repo-remove">
+        <term><command>repo-remove</command></term>
+        <listitem>
+          <para>is a tool to update a package database by removing the package
+          name specified on the command line.</para>
+          <indexterm zone="ch-system-pacman repo-remove">
+            <primary sortas="b-repo-remove">repo-remove</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="testpkg">
+        <term><command>testpkg</command></term>
+        <listitem>
+          <para>is a utility to test a pacman package for validity.</para>
+          <indexterm zone="ch-system-pacman testpkg">
+            <primary sortas="b-testpkg">testpkg</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="vercmp">
+        <term><command>vercmp</command></term>
+        <listitem>
+          <para>is a utility to determine the relationship between two given
+          version numbers.</para>
+          <indexterm zone="ch-system-pacman vercmp">
+            <primary sortas="b-vercmp">vercmp</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libalpm">
+        <term><filename class="libraryfile">libalpm.so</filename></term>
+        <listitem>
+          <para>is the primary library for package management functions.</para>
+          <indexterm zone="ch-system-pacman libalpm">
+            <primary sortas="c-ibalpm">libalpm.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/patch.xml lfs-pacman-2025-03-26/chapter08/patch.xml
--- lfs-git-2025-03-26/chapter08/patch.xml	2025-03-25 18:44:40.096428220 -0500
+++ lfs-pacman-2025-03-26/chapter08/patch.xml	2025-03-25 22:21:39.460793495 -0500
@@ -42,21 +42,74 @@
   <sect2 role="installation">
     <title>Installation of Patch</title>
 
-    <para>Prepare Patch for compilation:</para>
+    <para>Create the PKGBUILD for the Patch package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/patch
+cd /sources/patch
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="patch"
+pkgver="&patch-version;"
+pkgrel="&patch-release;"
+pkgdesc="The Patch package contains a program for modifying or creating files via patch file."
+arch=('x86'
+      'x86_64')
+url="&patch-home;"
+license=('GPLv3')
+groups=('core')
+depends=('attr'
+         'glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+checkdepends=('diffutils')
+optdepends=('ed')
+source=('&patch-url;')
+md5sums=('&patch-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp patch-&patch-version;-&patch-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/patch-&patch-version;-&patch-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Patch package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S patch --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/patch
+cp PKGBUILD /srv/pacman/source/LFS/patch
+cd /sources
+rm -rf patch</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/perl.xml lfs-pacman-2025-03-26/chapter08/perl.xml
--- lfs-git-2025-03-26/chapter08/perl.xml	2025-03-25 18:44:40.096434450 -0500
+++ lfs-pacman-2025-03-26/chapter08/perl.xml	2025-03-25 22:21:39.461079644 -0500
@@ -41,34 +41,92 @@
   <sect2 role="installation">
     <title>Installation of Perl</title>
 
-    <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
-    installed on the system:</para>
-
-<screen><userinput remap="pre">export BUILD_ZLIB=False
-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 shown below to
-    use the defaults that Perl auto-detects:</para>
-
- <screen><userinput remap="configure">sh Configure -des                                          \
-             -D prefix=/usr                                \
-             -D vendorprefix=/usr                          \
-             -D privlib=/usr/lib/perl5/&perl-version-min;/core_perl      \
-             -D archlib=/usr/lib/perl5/&perl-version-min;/core_perl      \
-             -D sitelib=/usr/lib/perl5/&perl-version-min;/site_perl      \
-             -D sitearch=/usr/lib/perl5/&perl-version-min;/site_perl     \
-             -D vendorlib=/usr/lib/perl5/&perl-version-min;/vendor_perl  \
-             -D vendorarch=/usr/lib/perl5/&perl-version-min;/vendor_perl \
-             -D man1dir=/usr/share/man/man1                \
-             -D man3dir=/usr/share/man/man3                \
-             -D pager="/usr/bin/less -isR"                 \
-             -D useshrplib                                 \
-             -D usethreads</userinput></screen>
+
+    <para>Create the PKGBUILD for the Perl package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/perl
+cd /sources/perl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="perl"
+pkgver="&perl-version;"
+pkgrel="&perl-release;"
+pkgdesc="The Perl package contains the Practical Extraction and Report Language."
+arch=('x86'
+      'x86_64')
+url="&perl-home;"
+license=('GPLv1')
+groups=('core')
+depends=('db'
+         'gdbm'
+         'glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'groff'
+             'make'
+             'sed'
+             'zlib')
+checkdepends=('iana-etc'
+              'less'
+              'procps-ng')
+source=('&perl-url;')
+md5sums=('&perl-md5;')
+    
+build()
+  cd ${pkgname}-${pkgver}
+
+  # 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
+  # installed on the system:
+  export BUILD_ZLIB=False
+  export BUILD_BZIP2=0
+
+  sh Configure -des                                          \
+               -D prefix=/usr                                \
+               -D vendorprefix=/usr                          \
+               -D privlib=/usr/lib/perl5/5.40/core_perl      \
+               -D archlib=/usr/lib/perl5/5.40/core_perl      \
+               -D sitelib=/usr/lib/perl5/5.40/site_perl      \
+               -D sitearch=/usr/lib/perl5/5.40/site_perl     \
+               -D vendorlib=/usr/lib/perl5/5.40/vendor_perl  \
+               -D vendorarch=/usr/lib/perl5/5.40/vendor_perl \
+               -D man1dir=/usr/share/man/man1                \
+               -D man3dir=/usr/share/man/man3                \
+               -D pager="/usr/bin/less -isR"                 \
+               -D useshrplib                                 \
+               -D usethreads
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+
+  # Same as before
+  export BUILD_ZLIB=False
+  export BUILD_BZIP2=0
+
+  TEST_JOBS=$(nproc) make test_harness
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+
+  # Same as before
+  export BUILD_ZLIB=False
+  export BUILD_BZIP2=0
+
+  make DESTDIR=${pkgdir} install  
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new Configure options:</title>
@@ -100,18 +158,20 @@ export BUILD_BZIP2=0</userinput></screen
 
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
+    &pacman-build-add;                                                                                                                                                                                                                          <screen><userinput>cp perl-&perl-version;-&perl-release;-$(uname -m).pkg.tar.xz \                           /srv/pacman/repos/LFS/                                                                                               repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \                                                                                   /srv/pacman/repos/LFS/perl-&perl-version;-&perl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>To test the results, issue:</para>
+    <para>Update the local cache and install the Perl package:</para>
 
-<screen><userinput remap="test">TEST_JOBS=$(nproc) make test_harness</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S perl --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package and clean up:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install
-unset BUILD_ZLIB BUILD_BZIP2</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/perl
+cp PKGBUILD /srv/pacman/source/LFS/perl
+cd /sources
+rm -rf perl</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/pip.xml lfs-pacman-2025-03-26/chapter08/pip.xml
--- lfs-git-2025-03-26/chapter08/pip.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/pip.xml	2025-03-25 22:21:39.461493072 -0500
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-pip" role="wrap">
+  <?dbhtml filename="pip.html"?>
+
+  <sect1info condition="script">
+    <productname>pip</productname>
+    <productnumber>&pip-version;</productnumber>
+    <address>&pip-url;</address>
+  </sect1info>
+
+  <title>pip-&pip-version;</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The pip package provides a method to easily download, build,
+    install, upgrade, and uninstall Python packages.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&pip-fin-sbu;</seg>
+        <seg>&pip-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of Pip</title>
+
+    <para>Create the PKGBUILD for the Pip package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/pip
+cd /sources/pip
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="pip"
+pkgver="&pip-version;"
+pkgrel="&pip-release;"
+pkgdesc="The Pip package provides a method to easily download, build, install, upgrade, and uninstall Python packages"
+arch=('any')
+url=("&pip-home;")
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('python'
+         'wheel')
+source=('&pip-url;')
+md5sums=('&pip-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  python3 -m build --wheel --no-isolation
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  python3 -m installer dist/*.whl
+  ln -sfv pip&python-minor; ${pkgdir}/usr/bin/pip3
+  ln -sfv pip&python-minor; ${pkgdir}/usr/bin/pip
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp pip-&pip-version;-&pip-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/pip-&pip-version;-&pip-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Pip package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S pip --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/pip
+cp PKGBUILD /srv/pacman/source/LFS/pip
+cd /sources
+rm -rf pip</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-pip" role="content">
+      <title>Contents of Pip</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          /usr/bin/pip&python-minor;
+        </seg>
+        <seg>
+          /usr/lib/python&python-minor;/site-packages/pip{,-&pip-version;-py&python-minor;.egg-info}
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="pip">
+        <term><command>pip&python-minor;</command></term>
+        <listitem>
+          <para>
+            The package installer for Python. You can use pip to install
+            packages from Python Package Index and other indexes
+          </para>
+          <indexterm zone="ch-system-pip">
+            <primary sortas="b-pip">pip&python-minor;</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/pkgconf.xml lfs-pacman-2025-03-26/chapter08/pkgconf.xml
--- lfs-git-2025-03-26/chapter08/pkgconf.xml	2025-03-25 18:44:40.096444160 -0500
+++ lfs-pacman-2025-03-26/chapter08/pkgconf.xml	2025-03-25 22:21:39.461532472 -0500
@@ -44,25 +44,72 @@
 
     <title>Installation of Pkgconf</title>
 
-    <para>Prepare Pkgconf for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr              \
-            --disable-static           \
-            --docdir=/usr/share/doc/pkgconf-&pkgconf-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Pkgconf package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>To maintain compatibility with the original Pkg-config create two
-    symlinks:</para>
-
-<screen><userinput remap="install">ln -sv pkgconf   /usr/bin/pkg-config
-ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1</userinput></screen>
+<screen><userinput>mkdir /sources/pkgconf
+cd /sources/pkgconf
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="pkgconf"
+pkgver="&pkgconf-version;"
+pkgrel="&pkgconf-release;"
+pkgdesc="The pkgconf package is a successor to pkg-config and contains a tool for passing the include path and/or library paths to build tools during the configure and make phases of package installations."
+arch=('x86'
+      'x86_64')
+url="&pkgconf-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+source=('&pkgconf-url;')
+md5sums=('&pkgconf-md5;')
+    
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr     \
+              --disable-static  \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  ln -sv pkgconf   "${pkgdir}/usr/bin/pkg-config"
+  ln -sv pkgconf.1 "${pkgdir}/usr/share/man/man1/pkg-config.1"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp pkgconf-&pkgconf-version;-&pkgconf-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/pkgconf-&pkgconf-version;-&pkgconf-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Pkgconf package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S pkgconf --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/pkgconf
+cp PKGBUILD /srv/pacman/source/LFS/pkgconf
+cd /sources
+rm -rf pkgconf</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/pkgmgt.xml lfs-pacman-2025-03-26/chapter08/pkgmgt.xml
--- lfs-git-2025-03-26/chapter08/pkgmgt.xml	2025-03-25 18:44:40.096450670 -0500
+++ lfs-pacman-2025-03-26/chapter08/pkgmgt.xml	2025-03-25 22:21:39.460861085 -0500
@@ -14,29 +14,8 @@
   Package Manager tracks the installation of files, making it easier to
   remove and upgrade packages. A good package manager will also handle the
   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
-  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
-  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
-  packages.</para>
-
-  <para>Some reasons why no package manager is mentioned in LFS or BLFS
-  include:</para>
-
-  <itemizedlist>
-    <listitem>
-      <para>Dealing with package management takes the focus away from the goals
-      of these books&mdash;teaching how a Linux system is built.</para>
-    </listitem>
-
-    <listitem>
-      <para>There are multiple solutions for package management, each having
-      its strengths and drawbacks.  Finding one solution that satisfies all audiences
-      is difficult.</para>
-    </listitem>
-  </itemizedlist>
+  package is reinstalled or upgraded. In this variant of the LFS Book, we'll
+  use <application>Pacman</application> for package management.</para>
 
   <para>There are some hints written on the topic of package management. Visit
   the <ulink url="&hints-root;">Hints Project</ulink> and see if one of them
@@ -56,9 +35,8 @@
         5.10.17 to 5.10.18 or 5.11.1), nothing else needs to be rebuilt.
         The system will keep working fine thanks to the well-defined interface
         between the kernel and userspace.  Specifically, Linux API headers
-        need not be upgraded
-        along with the kernel.  You will merely need to reboot your system to use the
-        upgraded kernel.</para>
+        need not be upgraded along with the kernel. You will merely need to
+	reboot your system to use the upgraded kernel.</para>
       </listitem>
 
       <listitem>
@@ -68,7 +46,7 @@
         Read <xref linkend='ch-system-glibc'/> for details.</para>
       </listitem>
 
-      <listitem> <para>If a package containing a shared library is updated, and
+      <listitem><para>If a package containing a shared library is updated, and
       if the name of the library<footnote><para>The name of a shared library is
       the string coded in the <constant>DT_SONAME</constant> entry of its
       ELF dynamic section.  You can get it with the
@@ -89,10 +67,10 @@
       newer library.
       For example, consider a package
       foo-1.2.3 that installs a shared library with the name <filename
-      class='libraryfile'>libfoo.so.1</filename>. Suppose you upgrade the package to
-      a newer version foo-1.2.4 that installs a shared library with the name
-      <filename class='libraryfile'>libfoo.so.2</filename>. In this case, any
-      packages that are dynamically linked to <filename
+      class='libraryfile'>libfoo.so.1</filename>. Suppose you upgrade the
+      package to a newer version foo-1.2.4 that installs a shared library with
+      the name <filename class='libraryfile'>libfoo.so.2</filename>. In this
+      case, any packages that are dynamically linked to <filename
       class='libraryfile'>libfoo.so.1</filename> need to be recompiled to link
       against <filename class='libraryfile'>libfoo.so.2</filename> in order to
       use the new library version. You should not remove the old
@@ -105,8 +83,8 @@
       <filename class='libraryfile'>libbar.so.1</filename>, while the latter
       links to <filename class='libraryfile'>libfoo.so.3</filename>), the
       package may malfunction because the different revisions of the shared
-      library present incompatible definitions for some symbol names. This can be
-      caused by recompiling some, but not all, of the packages linked to the
+      library present incompatible definitions for some symbol names. This can
+      be caused by recompiling some, but not all, of the packages linked to the
       old shared library after the package providing the shared library is
       upgraded.  To avoid the issue, users will need to rebuild every package
       linked to a shared library with an updated revision (e.g. libfoo.so.2 to
@@ -123,9 +101,9 @@
       <filename class='libraryfile'>libfoo.so.1.24</filename>),
       you should remove the library file from the previously installed version
       (<filename class='libraryfile'>libfoo.so.1.25</filename> in this case).
-      Otherwise, a <command>ldconfig</command> command (invoked by yourself from the command
-      line, or by the installation of some package) will reset the symlink
-      <filename class='libraryfile'>libfoo.so.1</filename> to point to
+      Otherwise, a <command>ldconfig</command> command (invoked by yourself from
+      the command line, or by the installation of some package) will reset the
+      symlink <filename class='libraryfile'>libfoo.so.1</filename> to point to
       the old library file because it seems to be a <quote>newer</quote>
       version; its version number is larger.  This situation may arise if
       you have to downgrade a package, or if the authors change the versioning
@@ -136,9 +114,9 @@
       (especially, a security vulnerability) is fixed, all running programs
       linked to the shared library should be restarted.  The following
       command, run as <systemitem class="username">root</systemitem> after
-      the update is complete, will list which processes are using the old versions of those libraries
-      (replace <replaceable>libfoo</replaceable> with the name of the
-      library):</para>
+      the update is complete, will list which processes are using the old
+      versions of those libraries( replace <replaceable>libfoo</replaceable>
+      with the name of the library):</para>
 
 <screen role="nodump"><userinput>grep -l '<replaceable>libfoo</replaceable>.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u</userinput></screen>
 
@@ -146,8 +124,8 @@
         If <application>OpenSSH</application> is being used to access
         the system and it is linked to the updated library, you must
         restart the <command>sshd</command> service, then logout, login again,
-        and run the preceding command again to confirm that nothing is still using the
-        deleted libraries.
+	and run the preceding command again to confirm that nothing is still
+        using the deleted libraries.
       </para>
 
       <para revision='systemd'>
@@ -158,21 +136,24 @@
       </para></listitem>
 
       <listitem>
-        <para>If an executable program or a shared library is overwritten, the processes
-        using the code or data in that program or library may crash.  The
-        correct way to update a program or a shared library without causing
+       <para>If an executable program or a shared library is overwritten, the
+        processes using the code or data in that program or library may crash.
+        The correct way to update a program or a shared library without causing
         the process to crash is to remove it first, then install the new
         version. The <command>install</command> command
         provided by <application>coreutils</application> has already
-        implemented this, and most packages use that command to install binary files and
-        libraries.  This means that you won't be troubled by this issue most of the time.
-        However, the install process of some packages (notably SpiderMonkey
-        in BLFS) just overwrites the file if it exists; this causes a crash. So
-        it's safer to save your work and close unneeded running processes
-        before updating a package.</para> <!-- binary is an adjective, not a noun. -->
+        iplemented this, and most packages use that command to install binary
+        files and libraries. This means that you won't be troubled by this issue
+        most of the time. However, the install process of some packages (notably
+        SpiderMonkey in BLFS) just overwrites the file if it exists; this causes
+        a crash. So it's safer to save your work and close unneeded running
+        processes before updating a package.</para>
+        <!-- binary is an adjective, not a noun. -->
       </listitem>
     </itemizedlist>
 
+    <para> It should be noted that <application>Pacman</application> addresses
+    most of these issues without user intervention.</para>
   </sect2>
 
   <sect2>
@@ -196,8 +177,8 @@
     <sect3>
       <title>Install in Separate Directories</title>
 
-      <para>This is a simplistic package management technique that does not need a
-      special program to manage the packages. Each package is installed in a
+      <para>This is a simplistic package management technique that does not need
+      a special program to manage the packages. Each package is installed in a
       separate directory. For example, package foo-1.1 is installed in
       <filename class='directory'>/opt/foo-1.1</filename>
       and a symlink is made from <filename>/opt/foo</filename> to
@@ -229,12 +210,12 @@
 
       <para>This is a variation of the previous package management technique.
       Each package is installed as in the previous scheme. But instead of
-      making the symlink via a generic package name, each file is symlinked into the
-      <filename class='directory'>/usr</filename> hierarchy. This removes the
-      need to expand the environment variables. Though the symlinks can be
-      created by the user, many package managers use this approach, and
-      automate the creation of the symlinks. A few of the popular ones include Stow,
-      Epkg, Graft, and Depot.</para>
+      making the symlink via a generic package name, each file is symlinked
+      into the <filename class='directory'>/usr</filename> hierarchy. This
+      removes the need to expand the environment variables. Though the symlinks
+      can be created by the user, many package managers use this approach, and
+      automate the creation of the symlinks. A few of the popular ones include
+      Stow, Epkg, Graft, and Depot.</para>
 
       <para>The installation script needs to be fooled, so the package thinks
       it is installed in <filename class="directory">/usr</filename> though in
@@ -249,9 +230,9 @@ make
 make install</userinput></screen>
 
       <para>The installation will work, but the dependent packages may not link
-      to libfoo as you would expect. If you compile a package that links against
-      libfoo, you may notice that it is linked to
-      <filename class='libraryfile'>/usr/pkg/libfoo/1.1/lib/libfoo.so.1</filename>
+      to libfoo as you would expect. If you compile a package that links
+      against libfoo, you may notice that it is linked to <filename
+      class='libraryfile'>/usr/pkg/libfoo/1.1/lib/libfoo.so.1</filename>
       instead of <filename class='libraryfile'>/usr/lib/libfoo.so.1</filename>
       as you would expect. The correct approach is to use the
       <envar>DESTDIR</envar> variable to direct the installation. This
@@ -261,10 +242,11 @@ make install</userinput></screen>
 make
 make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
 
-      <para>Most packages support this approach, but there are some which do not.
-      For the non-compliant packages, you may either need to install the
-      package manually, or you may find that it is easier to install some problematic
-      packages into <filename class='directory'>/opt</filename>.</para>
+      <para>Most packages support this approach, but there are some which do
+      not. For the non-compliant packages, you may either need to install the
+      package manually, or you may find that it is easier to install some
+      problematic packages into
+      <filename class='directory'>/opt</filename>.</para>
 
     </sect3>
 
@@ -281,28 +263,28 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install
       drawbacks. If, during installation, the files are installed with any
       timestamp other than the current time, those files will not be tracked by
       the package manager. Also, this scheme can only be used when packages
-      are installed one at a time. The logs are not reliable if two packages are
-      installed simultaneously from two different consoles.</para>
+      are installed one at a time. The logs are not reliable if two packages
+      are installed simultaneously from two different consoles.</para>
 
     </sect3>
 
     <sect3>
       <title>Tracing Installation Scripts</title>
 
-      <para>In this approach, the commands that the installation scripts perform
-      are recorded.  There are two techniques that one can use:</para>
+      <para>In this approach, the commands that the installation scripts
+      perform are recorded.  There are two techniques that one can use:</para>
 
       <para>The <envar>LD_PRELOAD</envar> environment variable can be set to
       point to a library to be preloaded before installation.  During
-      installation, this library tracks the packages that are being installed by
-      attaching itself to various executables such as <command>cp</command>,
+      installation, this library tracks the packages that are being installed
+      by attaching itself to various executables such as <command>cp</command>,
       <command>install</command>, <command>mv</command> and tracking the system
       calls that modify the filesystem. For this approach to work, all the
       executables need to be dynamically linked without the suid or sgid bit.
       Preloading the library may cause some unwanted side-effects during
       installation. Therefore, it's a good idea to perform some tests to
-      ensure that the package manager does not break anything, and that it logs all the
-      appropriate files.</para>
+      ensure that the package manager does not break anything, and that it logs
+      all the appropriate files.</para>
 
       <para>Another technique is to use <command>strace</command>, which
       logs all the system calls made during the execution of the installation
@@ -313,22 +295,20 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install
       <title>Creating Package Archives</title>
 
       <para>In this scheme, the package installation is faked into a separate
-      tree as previously described in the symlink style package management section. After the
-      installation, a package archive is created using the installed files.
-      This archive is then used to install the package on the local
-      machine or even on other machines.</para>
+      tree as previously described in the symlink style package management
+      section. After the installation, a package archive is created using the
+      installed files. This archive is then used to install the package on the
+      local machine or even on other machines.</para>
 
       <para>This approach is used by most of the package managers found in the
       commercial distributions. Examples of package managers that follow this
       approach are RPM (which, incidentally, is required by the <ulink
       url="https://refspecs.linuxfoundation.org/lsb.shtml">Linux
-      Standard Base Specification</ulink>), pkg-utils, Debian's apt, and
-      Gentoo's Portage system.  A hint describing how to adopt this style of
-      package management for LFS systems is located at <ulink
-      url="&hints-root;fakeroot.txt"/>.</para>
-
-      <para>The creation of package files that include dependency information is
-      complex, and beyond the scope of LFS.</para>
+      Standard Base Specification</ulink>), pkg-utils, Debian's apt,
+      Gentoo's Portage system, and of course, <application>Pacman</application>
+      that is uses in this variant of the LFS Book. A hint describing how to
+      adopt this style of package management for LFS systems is located at
+      <ulink url="&hints-root;fakeroot.txt"/>.</para>
 
       <para>Slackware uses a <command>tar</command>-based system for package
       archives.  This system purposely does not handle package dependencies
@@ -360,10 +340,11 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install
     another computer with the same architecture as the base system is as
     simple as using <command>tar</command> on the LFS partition that contains
     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
-    it.  After that, a few configuration files will have to be changed.
-    Configuration files that may need to be updated include:
+    <!-- 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 it.  After that, a few configuration files will have to be
+    changed. Configuration files that may need to be updated include:
     <filename>/etc/hosts</filename>,
     <filename>/etc/fstab</filename>,
     <filename>/etc/passwd</filename>,
diff -Naurp lfs-git-2025-03-26/chapter08/popt.xml lfs-pacman-2025-03-26/chapter08/popt.xml
--- lfs-git-2025-03-26/chapter08/popt.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/popt.xml	2025-03-25 22:21:39.461956100 -0500
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-popt" role="wrap">
+  <?dbhtml filename="popt.html"?>
+
+  <sect1info condition="script">
+    <productname>popt</productname>
+    <productnumber>&popt-version;</productnumber>
+    <address>&popt-url;</address>
+  </sect1info>
+
+  <title>Popt-&popt-version;</title>
+
+  <indexterm zone="ch-system-popt">
+    <primary sortas="a-Popt">Popt</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The popt package contains the popt libraries which are used by some
+    programs to parse command-line options.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&popt-fin-sbu;</seg>
+        <seg>&popt-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of Popt</title>
+
+    <para>Create the PKGBUILD for the Popt package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/popt
+cd /sources/popt
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="popt"
+pkgver="&popt-version;"
+pkgrel="&popt-release;"
+pkgdesc="The popt package contains the popt libraries which are used by some programs to parse command-line options."
+arch=('x86'
+      'x86_64')
+url="&popt-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+source=('&popt-url;')
+md5sums=('&popt-md5;')
+ 
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-static
+  make
+
+  # If you have Doxygen installed, uncomment the following:
+  # sed -i 's@\./@src/@' Doxyfile
+  # doxygen
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  # Again, if Doxygen is installed:
+  # install -vdm755 "${pkgdir}/usr/share/doc/popt-1.19"
+  # install -v -m644 doxygen/html/* "${pkgdir}/usr/share/doc/popt-1.19"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp popt-&popt-version;-&popt-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/popt-&popt-version;-&popt-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Popt package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S popt --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/popt
+cp PKGBUILD /srv/pacman/source/LFS/popt
+cd /sources
+rm -rf popt</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-popt" role="content">
+    <title>Contents of Popt</title>
+
+    <segmentedlist>
+      <segtitle>Installed library</segtitle>
+
+      <seglistitem>
+        <seg>libpopt.so</seg>
+      </seglistitem>
+
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="libpopt">
+        <term><filename class="libraryfile">libpopt</filename></term>
+        <listitem>
+          <para>Searches given directory trees for files matching the specified
+          criteria</para>
+          <indexterm zone="ch-system-popt libpopt">
+            <primary sortas="c-libpopt">libpopt</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/procps.xml lfs-pacman-2025-03-26/chapter08/procps.xml
--- lfs-git-2025-03-26/chapter08/procps.xml	2025-03-25 18:44:40.096459450 -0500
+++ lfs-pacman-2025-03-26/chapter08/procps.xml	2025-03-25 22:21:39.462077709 -0500
@@ -40,20 +40,115 @@
   <sect2 role="installation">
     <title>Installation of Procps-ng</title>
 
-    <para>Prepare Procps-ng for compilation:</para>
+    <para>Create the PKGBUILD for the Procps-ng package with the following
+    commands:</para>
 
-<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr                           \
+<screen revision="sysv"><userinput>mkdir /sources/procps-ng
+cd /sources/procps-ng
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="procps-ng"
+pkgver="&procps-ng-version;"
+pkgrel="&procps-ng-release;"
+pkgdesc="The Procps-ng package contains programs for monitoring processes."
+arch=('x86'
+      'x86_64')
+url="&procps-ng-home;"
+license=('GPLv2'
+         'LGPLv2')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'ncurses'
+             'pkgconf')
+checkdepends=('dejagnu')
+optdepends=('elogind')
+source=('&procps-ng-url;')
+md5sums=('&procps-ng-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                           \
             --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
             --disable-static                        \
             --disable-kill                          \
-            --enable-watch8bit</userinput></screen>
-
-<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr                           \
-            --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
-            --disable-static                        \
-            --disable-kill                          \
-            --enable-watch8bit                      \
-            --with-systemd</userinput></screen>
+            --enable-watch8bit
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  # One test named ps with output flag bsdtime,cputime,etime,etimes is known to
+  # fail if the host kernel is not built with CONFIG_BSD_PROCESS_ACCT enabled.
+  # In addition, one pgrep test may fail in the chroot environment.
+  make -k check || true
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+<screen revision="systemd"><userinput>mkdir /sources/procps-ng
+cd /sources/procps-ng
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="procps-ng"
+pkgver="&procps-ng-version;"
+pkgrel="&procps-ng-release;"
+pkgdesc="The Procps-ng package contains programs for monitoring processes."
+arch=('x86'
+      'x86_64')
+url="&procps-ng-home;"
+license=('GPLv2'
+         'LGPLv2')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'ncurses'
+	     'pkgconf'
+             'systemd')
+checkdepends=('dejagnu')
+source=('&procps-ng-url;')
+md5sums=('&procps-ng-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr                           \
+              --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \
+              --disable-static                        \
+              --disable-kill                          \
+              --enable-watch8bit                      \
+              --with-systemd
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  # One test named ps with output flag bsdtime,cputime,etime,etimes is known to
+  # fail if the host kernel is not built with CONFIG_BSD_PROCESS_ACCT enabled.
+  # In addition, one pgrep test may fail in the chroot environment.
+  make -k check || true
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the configure option:</title>
@@ -76,27 +171,25 @@
       </varlistentry>
     </variablelist>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
+    &pacman-build-add;
 
-    <!-- To editors: "pmap {X,XX} with unreachable process" tests don't work
-         as root.  They may seem to pass due to some Tcl/Expect/DejaGNU
-         internal hazards with some "luck" though.  -->
-    <para>To run the test suite, run:</para>
+<screen><userinput>cp procps-ng-&procps-ng-version;-&procps-ng-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/procps-ng-&procps-ng-version;-&procps-ng-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-<screen><userinput remap="test">chown -R tester .
-su tester -c "PATH=$PATH make check"</userinput></screen>
+    <para>Update the local cache and install the Procps-ng package:</para>
 
-    <para>One test named
-    <literal>ps with output flag bsdtime,cputime,etime,etimes</literal>
-    is known to fail if the host kernel is not built with
-    <literal>CONFIG_BSD_PROCESS_ACCT</literal> enabled. In
-    addition, one pgrep test may fail in the chroot environment.</para>
+<screen><userinput>pacman -Syu
+pacman -S procps-ng --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/procps-ng
+cp PKGBUILD /srv/pacman/source/LFS/procps-ng
+cd /sources
+rm -rf procps-ng</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/psmisc.xml lfs-pacman-2025-03-26/chapter08/psmisc.xml
--- lfs-git-2025-03-26/chapter08/psmisc.xml	2025-03-25 18:44:40.096466530 -0500
+++ lfs-pacman-2025-03-26/chapter08/psmisc.xml	2025-03-25 22:21:39.461989100 -0500
@@ -41,21 +41,72 @@
   <sect2 role="installation">
     <title>Installation of Psmisc</title>
 
-    <para>Prepare Psmisc for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+    <para>Create the PKGBUILD for the Psmisc package with the following
+    commands:</para>
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To run the test suite, run:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/psmisc
+cd /sources/psmisc
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="psmisc"
+pkgver="&psmisc-version;"
+pkgrel="&psmisc-release;"
+pkgdesc="The Psmisc package contains programs for displaying information about running processes."
+arch=('x86'
+      'x86_64')
+url="&psmisc-home;"
+license=('GPLv2')
+groups=('core')
+depends=('glibc'
+         'ncurses')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed')
+source=('&psmisc-url;')
+md5sums=('&psmisc-md5;')
+    
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp psmisc-&psmisc-version;-&psmisc-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/psmisc-&psmisc-version;-&psmisc-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Psmisc package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S psmisc --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/psmisc
+cp PKGBUILD /srv/pacman/source/LFS/psmisc
+cd /sources
+rm -rf psmisc</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/python.xml lfs-pacman-2025-03-26/chapter08/python.xml
--- lfs-git-2025-03-26/chapter08/python.xml	2025-03-25 18:44:40.096473840 -0500
+++ lfs-pacman-2025-03-26/chapter08/python.xml	2025-03-25 22:21:39.460827745 -0500
@@ -43,15 +43,101 @@
   <sect2 role="installation">
     <title>Installation of Python 3</title>
 
-    <para>Prepare Python for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr        \
-            --enable-shared      \
-            --with-system-expat  \
-            --enable-optimizations</userinput></screen>
+    <para>Create the PKGBUILD for the Python package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/python
+cd /sources/python
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="python"
+pkgver="&python-version;"
+pkgrel="&python-release;"
+pkgdesc="The Python 3 package contains the Python development environment."
+arch=('x86'
+      'x86_64')
+url="&python-home;"
+license=('PSFLv2')
+groups=('core')
+depends=('bzip2'
+         'expat'
+         'gdbm'
+         'glibc'
+         'libffi'
+         'libnsl'
+         'libxcrypt'
+         'ncurses'
+         'openssl'
+         'rootfs'
+         'sqlite'
+         'zlib')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'pkgconf'
+             'sed'
+             'util-linux')
+checkdepends=('gdb'
+              'valgrind')
+optdepends=('berkeley-db'
+            'tk')
+source=('&python-url;'
+        '&python-docs-url;')
+md5sums=('&python-md5;'
+         '&python-docs-md5;')
+    
+build(){
+  cd ${_pkgname}-${pkgver}
+  ./configure --prefix=/usr        \
+              --enable-shared      \
+              --with-system-expat  \
+              --without-ensurepip  \
+              --enable-optimizations
+  make
+}
+
+check(){
+  cd ${_pkgname}-${pkgver}
+  make test TESTOPTS="--timeout 120"
+}
+
+package(){
+  cd ${_pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+
+  # Install the Python documentation
+  install -v -dm755 ${pkgdir}/usr/share/doc/${pkgname}-${pkgver}/html
+  tar --strip-components=1  \
+      --no-same-owner       \
+      --no-same-permissions \
+      -C ${pkgdir}/usr/share/doc/${pkgname}-${pkgver}/html \
+      -xvf ${srcdir}/${pkgname}-${pkgver}-docs-html.tar.bz2
+
+  # Remove pycache from pkgdir
+  for dir in `find ${pkgdir} -name __pycache__`; do
+    rm -rf $dir
+  done
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
-      <title>The meaning of the configure options:</title>
+      <title>The meaning of the configure and install options:</title>
+
+    <varlistentry>
+      <term><parameter>--without-ensurepip</parameter></term>
+      <listitem>
+	<para>This switch ensures that <application>pip</application> is not built as
+	part of our <application>Python</application> installation. Unlike in the
+        upackaged LFS, the <application>pip</application> package will be installed
+        separately.</para>
+       </listitem>
+    </varlistentry>
 
     <varlistentry>
       <term><parameter>--with-system-expat</parameter></term>
@@ -72,105 +158,6 @@
       </listitem>
     </varlistentry>
 
-    </variablelist>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>Some tests are known to occasionally hang indefinitely.  So to test the
-    results, run the test suite but set a 2-minute time limit for each
-    test case:</para>
-
-<screen><userinput remap="test">make test TESTOPTS="--timeout 120"</userinput></screen>
-
-    <para>For a relatively slow system you may need to increase the time
-    limit and 1 SBU (measured when building Binutils pass 1 with one CPU
-    core) should be enough.  Some tests are flaky, so the test suite will
-    automatically re-run failed tests.  If a test failed but then passed
-    when re-run, it should be considered as passed.  One test, test_ssl,
-    is known to fail in the chroot environment.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>We use the <command>pip3</command> command to
-    install Python 3 programs and modules for all users as
-    <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]
-root-user-action = ignore
-disable-pip-version-check = true</literal>
-EOF
-</userinput></screen>
-<!--
-<screen><userinput remap="install">sed -e '/def warn_if_run_as_root/a\    return' \
-    -i /usr/lib/python3.10/site-packages/pip/_internal/cli/req_command.py
-</userinput></screen>
--->
-    <important>
-      <para>
-        In LFS and BLFS we normally build and install Python modules with the
-        <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 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
-        reinstall the same version for some reason, insert
-        <parameter>--force-reinstall --no-deps</parameter> into the command
-        line.
-      </para>
-    </important>
-
-    <para>If desired, install the preformatted documentation:</para>
-
-<screen><userinput remap="install">install -v -dm755 /usr/share/doc/python-&python-version;/html
-
-tar --strip-components=1  \
-    --no-same-owner       \
-    --no-same-permissions \
-    -C /usr/share/doc/python-&python-version;/html \
-    -xvf ../python-&python-version;-docs-html.tar.bz2</userinput></screen>
-
-    <variablelist>
-      <title>The meaning of the documentation install commands:</title>
-
     <varlistentry>
       <term><option>--no-same-owner</option> and <option>--no-same-permissions</option></term>
       <listitem>
@@ -183,6 +170,21 @@ tar --strip-components=1  \
 
     </variablelist>
 
+    &pacman-build-add;                                                                                                                                                                                                                          <screen><userinput>cp python-&python-version;-&python-release;-$(uname -m).pkg.tar.xz \                           /srv/pacman/repos/LFS/                                                                                               repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \                                                                                   /srv/pacman/repos/LFS/python-&python-version;-&python-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Python package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S python --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/python
+cp PKGBUILD /srv/pacman/source/LFS/python
+cd /sources
+rm -rf python</userinput></screen>
+
   </sect2>
 
   <sect2 id="contents-python" role="content">
diff -Naurp lfs-git-2025-03-26/chapter08/readline.xml lfs-pacman-2025-03-26/chapter08/readline.xml
--- lfs-git-2025-03-26/chapter08/readline.xml	2025-03-25 18:44:40.096481520 -0500
+++ lfs-pacman-2025-03-26/chapter08/readline.xml	2025-03-25 22:21:39.461868980 -0500
@@ -41,30 +41,66 @@
   <sect2 role="installation">
     <title>Installation of Readline</title>
 
-    <para>Reinstalling Readline will cause the old libraries to be moved to
-    &lt;libraryname&gt;.old. While this is normally not a problem, in some cases
-    it can trigger a linking bug in <command>ldconfig</command>. This can be
-    avoided by issuing the following two seds:</para>
-
-<screen><userinput remap="pre">sed -i '/MV.*old/d' Makefile.in
-sed -i '/{OLDSUFF}/c:' support/shlib-install</userinput></screen>
-
-    <para>Prevent hard coding library search paths (rpath) into
-    the shared libraries.  This package does not need rpath for an
-    installation into the standard location, and rpath may sometimes cause
-    unwanted effects or even security issues:</para>
-
-<screen><userinput>sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf</userinput></screen>
-
-    <para>Prepare Readline for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --disable-static \
-            --with-curses    \
-            --docdir=/usr/share/doc/readline-&readline-version;</userinput></screen>
+    <para>Create the PKGBUILD for the Readline package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/readline
+cd /sources/readline
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="readline"
+pkgver="&readline-version;"
+pkgrel="&readline-release;"
+pkgdesc="The Readline package offers command-line editing and history capabilities."
+arch=('x86'
+      'x86_64')
+url="&readline-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'ncurses')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gawk'
+             'gcc'
+             'grep'
+             'make'
+             'patch'
+             'sed'
+             'texinfo')
+source=('&readline-url;')
+md5sums=('&readline-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+
+  # Don't try to fix old libraries in DESTDIR
+  sed -i '/MV.*old/d' Makefile.in
+  sed -i '/{OLDSUFF}/c:' support/shlib-install
+
+  # Remove -rpath
+  sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
+
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --with-curses    \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make SHLIB_LIBS="-lncursesw"
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -vm644 doc/*.{ps,pdf,html,dvi} \
+                 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
 
      <variablelist>
-      <title>The meaning of the new configure option:</title>
+      <title>The meaning of the new configure and make options:</title>
 
       <varlistentry>
         <term><parameter>--with-curses</parameter></term>
@@ -76,15 +112,6 @@ sed -i '/{OLDSUFF}/c:' support/shlib-ins
         </listitem>
       </varlistentry>
 
-    </variablelist>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
-
-    <variablelist>
-      <title>The meaning of the make option:</title>
-
       <varlistentry>
         <term><parameter>SHLIB_LIBS="-lncursesw"</parameter></term>
         <listitem>
@@ -97,15 +124,25 @@ sed -i '/{OLDSUFF}/c:' support/shlib-ins
 
     </variablelist>
 
-    <para>This package does not come with a test suite.</para>
+    &pacman-build-add;
+
+<screen><userinput>cp readline-&readline-version;-&readline-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/readline-&readline-version;-&readline-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>Install the package:</para>
+    <para>Update the local cache and install the Readline package:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S readline --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>If desired, install the documentation:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-&readline-version;</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/readline
+cp PKGBUILD /srv/pacman/source/LFS/readline
+cd /sources
+rm -rf readline</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/rootfs.xml lfs-pacman-2025-03-26/chapter08/rootfs.xml
--- lfs-git-2025-03-26/chapter08/rootfs.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/rootfs.xml	2025-03-25 22:21:39.462116409 -0500
@@ -0,0 +1,715 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-rootfs" role="wrap">
+  <?dbhtml filename="rootfs.html"?>
+
+  <title>The root filesystem package</title>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The rootfs package provides the root filesystem layout, essential files
+    and symlinks, and base configuration files used in an LFS system.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&rootfs-fin-sbu;</seg>
+        <seg>&rootfs-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installaiton of the rootfs package</title>
+
+    <para>While most of these directories and links were installed to the main
+    LFS partition in <xref linkend='ch-tools-creatingdirs'/> and
+    <xref linkend='ch-tools-createfiles'/>, they also need to be packaged and
+    reinstalled. Additionally, other configuration files from
+    <xref linkend='chapter-config'/> and parts of BLFS are included.
+    Prepare the PKGBUILD for the rootfs package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/rootfs
+cd /sources/rootfs
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="rootfs"
+pkgver="&rootfs-version;"
+pkgrel="&rootfs-release;"
+pkgdesc="Skeleton directory layout and core /etc and /var/log files for initial install"
+arch=('any')
+url="&rootfs-home;"
+license=('Creative Commons Attribution-NonCommercial-ShareAlike 4.0')
+groups=('core')
+options=('emptydirs')
+backup=('etc/bashrc'
+        'etc/dircolors'
+        'etc/fstab'
+        'etc/group'
+        'etc/hosts'
+        'etc/inputrc'
+        'etc/ld.so.conf'
+        'etc/locale.conf'
+        'etc/passwd'
+        'etc/profile'
+        'etc/profile.d/bash_completion.sh'
+        'etc/profile.d/dircolors.sh'
+        'etc/profile.d/extrapaths.sh'
+        'etc/profile.d/readline.sh'
+        'etc/profile.d/umask.sh'
+        'etc/profile.d/i18n.sh'
+        'etc/skel/.bash_logout'
+        'etc/skel/.bash_profile'
+        'etc/skel/.bashrc'
+        'etc/skel/.profile'
+        'etc/shells'
+        'root/.bash_logout'
+        'root/.bash_profile'
+        'root/.bashrc'
+        'root/.profile'
+        'var/log/btmp'
+        'var/log/faillog'
+        'var/log/lastlog'
+        'var/log/wtmp')
+
+package(){
+  # 4.2
+  install -vdm755  "${pkgdir}"/{etc,usr/{bin,lib,sbin},var}
+  ln -sfv usr/bin  "${pkgdir}/bin"
+  ln -sfv usr/lib  "${pkgdir}/lib"
+  ln -sfv usr/sbin "${pkgdir}/sbin"
+  install -vdm755  "${pkgdir}/lib64"
+  # 7.3
+  install -vdm755  "${pkgdir}"/{dev,proc,run,sys}
+  # 7.5
+  install -vdm755  "${pkgdir}"/{boot,home,mnt,opt,srv}
+  install -vdm755  "${pkgdir}"/etc/{opt,sysconfig}
+  install -vdm755  "${pkgdir}"/lib/firmware
+  install -vdm755  "${pkgdir}"/media/{floppy,cdrom}
+  install -vdm755  "${pkgdir}"/usr/{,local/}{include,src}
+  install -vdm755  "${pkgdir}"/usr/lib/locale
+  install -vdm755  "${pkgdir}"/usr/local/{bin,lib,sbin}
+  install -vdm755  "${pkgdir}"/usr/{,local/}share/{color,dict,doc,info,locale,man}
+  install -vdm755  "${pkgdir}"/usr/{,local/}share/{misc,terminfo,zoneinfo}
+  install -vdm755  "${pkgdir}"/usr/{,local/}share/man/man{1..8}
+  install -vdm755  "${pkgdir}"/var/{cache,local,log,mail,opt,spool}
+  install -vdm755  "${pkgdir}"/var/lib/{color,misc,locate}
+  install -vdm750  "${pkgdir}"/root
+  install -vdm1777 "${pkgdir}"{,/var}/tmp
+  ln -sfv /run "${pkgdir}/var/run"
+  ln -sfv /run/lock "${pkgdir}/var/lock"
+  # 7.6
+ln -sv /proc/self/mounts "${pkgdir}/etc/mtab"</literal>
+REALEOF</userinput></screen>
+
+    <para>Need to break up for SysV and systemd:</para>
+
+<screen revision="sysv"><userinput>cat &gt;&gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal>  cat &gt; "${pkgdir}/etc/passwd" &lt;&lt; "EOF"
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/dev/null:/usr/bin/false
+daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
+messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
+uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
+pacman:x:102:102:Pacman Packaging User:/home/pacman:/bin/bash
+nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
+EOF
+  cat &gt; "${pkgdir}/etc/group" &lt;&lt; "EOF"
+root:x:0:
+bin:x:1:daemon
+sys:x:2:
+kmem:x:3:
+tape:x:4:
+tty:x:5:
+daemon:x:6:
+floppy:x:7:
+disk:x:8:
+lp:x:9:
+dialout:x:10:
+audio:x:11:
+video:x:12:
+utmp:x:13:
+cdrom:x:15:
+adm:x:16:
+messagebus:x:18:
+input:x:24:
+mail:x:34:
+kvm:x:61:
+uuidd:x:80:
+wheel:x:97:
+pacman:x:102:
+users:x:999:
+nogroup:x:65534:
+EOF</literal>
+REALEOF</userinput></screen>
+
+<screen revision="systemd"><userinput>cat &gt;&gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal>  cat &gt; "${pkgdir}/etc/passwd" &lt;&lt; "EOF"
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/dev/null:/usr/bin/false
+daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
+messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
+systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/usr/bin/false
+systemd-journal-remote:x:74:74:systemd Journal Remote:/:/usr/bin/false
+systemd-journal-upload:x:75:75:systemd Journal Upload:/:/usr/bin/false
+systemd-network:x:76:76:systemd Network Management:/:/usr/bin/false
+systemd-resolve:x:77:77:systemd Resolver:/:/usr/bin/false
+systemd-timesync:x:78:78:systemd Time Synchronization:/:/usr/bin/false
+systemd-coredump:x:79:79:systemd Core Dumper:/:/usr/bin/false
+uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
+systemd-oom:x:81:81:systemd Out Of Memory Daemon:/:/usr/bin/false
+pacman:x:102:102:Pacman Packaging User:/home/pacman:/bin/bash
+nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
+EOF
+  cat &gt; "${pkgdir}/etc/group" &lt;&lt; "EOF"
+root:x:0:
+bin:x:1:daemon
+sys:x:2:
+kmem:x:3:
+tape:x:4:
+tty:x:5:
+daemon:x:6:
+floppy:x:7:
+disk:x:8:
+lp:x:9:
+dialout:x:10:
+audio:x:11:
+video:x:12:
+utmp:x:13:
+usb:x:14:
+cdrom:x:15:
+adm:x:16:
+messagebus:x:18:
+input:x:24:
+mail:x:34:
+kvm:x:61:
+uuidd:x:80:
+wheel:x:97:
+pacman:x:102:
+users:x:999:
+nogroup:x:65534:
+EOF</literal>
+REALEOF</userinput></screen>
+
+    <para>Continue with the rest of the common configuraiton:</para>
+
+<screen><userinput>cat &gt;&gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal>  touch "${pkgdir}"/var/log/{btmp,lastlog,faillog,wtmp}
+  chgrp -v 13   "${pkgdir}/var/log/lastlog"
+  chmod -v 664  "${pkgdir}/var/log/lastlog"
+  chmod -v 600  "${pkgdir}/var/log/btmp"
+  # 7.6 and 9.5.4
+  cat &gt; "${pkgdir}/etc/hosts" &lt;&lt; "EOF"
+# Begin /etc/hosts
+
+# IPv4
+127.0.0.1 localhost.localdomain localhost
+# Populate the follwoing lines after installation
+#127.0.1.1 &lt;FQDN&gt; &lt;HOSTNAME&gt;
+#&lt;192.168.1.1&gt; &lt;FQDN&gt; &lt;HOSTNAME&gt; [alias1] [alias2 ...]
+
+# IPv6
+::1       localhost ip6-localhost ip6-loopback
+ff02::1   ip6-allnodes
+ff02::2   ip6-allrouters
+
+# End /etc/hosts
+EOF
+  #8.5.2.3
+  install -vdm755 "${pkgdir}/etc/ld.so.conf.d/"
+  cat &gt; "${pkgdir}/etc/ld.so.conf" &lt;&lt; "EOF"
+# Begin /etc/ld.so.conf
+
+/usr/local/lib
+/opt/lib
+
+# Add an include directory
+include /etc/ld.so.conf.d/*.conf
+
+# End /etc/ld.so.conf
+EOF
+  #9.8
+  cat &gt; "${pkgdir}/etc/inputrc" &lt;&lt; "EOF"
+# Begin /etc/inputrc
+# Modified by Chris Lynn &lt;roryo@roryo.dynup.net&gt;
+
+# Allow the command prompt to wrap to the next line
+set horizontal-scroll-mode Off
+
+# Enable 8bit input
+set meta-flag On
+set input-meta On
+
+# Turns off 8th bit stripping
+set convert-meta Off
+
+# Keep the 8th bit for display
+set output-meta On
+
+# none, visible or audible
+set bell-style none
+
+# All of the following map the escape sequence of the value
+# contained in the 1st argument to the readline specific functions
+"\eOd": backward-word
+"\eOc": forward-word
+
+# for linux console
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# for xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# for Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc
+EOF
+  #9.9
+  cat &gt; "${pkgdir}/etc/shells" &lt;&lt; "EOF"
+# Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells
+EOF
+  #10.2
+  cat &gt; "${pkgdir}/etc/fstab" &lt;&lt; "EOF"
+# Begin /etc/fstab
+
+# file system  mount-point  type     options             dump  fsck
+#                                                              order
+
+/dev/&lt;xxx&gt;     /            &lt;fff&gt;    defaults            1     1
+/dev/&lt;yyy&gt;     swap         swap     pri=1               0     0
+proc           /proc        proc     nosuid,noexec,nodev 0     0
+sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
+devpts         /dev/pts     devpts   gid=5,mode=620      0     0
+tmpfs          /run         tmpfs    defaults            0     0
+devtmpfs       /dev         devtmpfs mode=0755,nosuid    0     0
+
+# End /etc/fstab
+EOF
+  #BLFS postlfs/skel.html
+  install -vdm0700 "${pkgdir}/etc/skel"
+  #BLFS postlfs/profile.html
+  cat &gt; "${pkgdir}/etc/profile" &lt;&lt; "EOF"
+# Begin /etc/profile
+# Written for Beyond Linux From Scratch
+# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
+# modifications by Dagmar d'Surreal &lt;rivyqntzne@pbzpnfg.arg&gt;
+
+# System wide environment variables and startup programs.
+
+# System wide aliases and functions should go in /etc/bashrc.  Personal
+# environment variables and startup programs should go into
+# ~/.bash_profile.  Personal aliases and functions should go into
+# ~/.bashrc.
+
+# Functions to help us manage paths.  Second argument is the name of the
+# path variable to be modified (default: PATH)
+pathremove () {
+        local IFS=':'
+        local NEWPATH
+        local DIR
+        local PATHVARIABLE=${2:-PATH}
+        for DIR in ${!PATHVARIABLE} ; do
+                if [ "$DIR" != "$1" ] ; then
+                  NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
+                fi
+        done
+        export $PATHVARIABLE="$NEWPATH"
+}
+
+pathprepend () {
+        pathremove $1 $2
+        local PATHVARIABLE=${2:-PATH}
+        export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
+}
+
+pathappend () {
+        pathremove $1 $2
+        local PATHVARIABLE=${2:-PATH}
+        export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
+}
+
+export -f pathremove pathprepend pathappend
+
+# Set the initial path
+export PATH=/usr/bin
+
+# Attempt to provide backward compatibility with LFS earlier than 11
+if [ ! -L /bin ]; then
+        pathappend /bin
+fi
+
+if [ $EUID -eq 0 ] ; then
+        pathappend /usr/sbin
+        if [ ! -L /sbin ]; then
+                pathappend /sbin
+        fi
+        unset HISTFILE
+fi
+
+# Set up some environment variables.
+export HISTSIZE=1000
+export HISTIGNORE="&amp;:[bf]g:exit"
+
+# Set some defaults for graphical systems
+export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share}
+export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg}
+export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER}
+
+for script in /etc/profile.d/*.sh ; do
+        if [ -r $script ] ; then
+                . $script
+        fi
+done
+
+unset script
+
+# End /etc/profile
+EOF
+  install -vdm755 "${pkgdir}/etc/profile.d"
+  cat &gt; "${pkgdir}/etc/profile.d/bash_completion.sh" &lt;&lt; "EOF"
+# Begin /etc/profile.d/bash_completion.sh
+# Import bash completion scripts
+
+# If the bash-completion package is installed, use its configuration instead
+if [ -f /usr/share/bash-completion/bash_completion ]; then
+
+  # Check for interactive bash and that we haven't already been sourced.
+  if [ -n "${BASH_VERSION-}" -a -n "${PS1-}" -a -z "${BASH_COMPLETION_VERSINFO-}" ]; then
+
+    # Check for recent enough version of bash.
+    if [ ${BASH_VERSINFO[0]} -gt 4 ] || \
+       [ ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -ge 1 ]; then
+       [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] &amp;&amp; \
+            . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
+       if shopt -q progcomp &amp;&amp; [ -r /usr/share/bash-completion/bash_completion ]; then
+          # Source completion code.
+          . /usr/share/bash-completion/bash_completion
+       fi
+    fi
+  fi
+
+else
+
+  # bash-completions are not installed, use only bash completion directory
+  if shopt -q progcomp; then
+    for script in /etc/bash_completion.d/* ; do
+      if [ -r $script ] ; then
+        . $script
+      fi
+    done
+  fi
+fi
+
+# End /etc/profile.d/bash_completion.sh
+EOF
+  install -vdm755 "${pkgdir}/etc/bash_completion.d"
+  cat &gt; "${pkgdir}/etc/profile.d/dircolors.sh" &lt;&lt; "EOF"
+# Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc.
+if [ -f "/etc/dircolors" ] ; then
+        eval $(dircolors -b /etc/dircolors)
+fi
+
+if [ -f "$HOME/.dircolors" ] ; then
+        eval $(dircolors -b $HOME/.dircolors)
+fi
+EOF
+  cat &gt; "${pkgdir}/etc/profile.d/extrapaths.sh" &lt;&lt; "EOF"
+if [ -d /usr/local/lib/pkgconfig ] ; then
+        pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
+fi
+if [ -d /usr/local/bin ]; then
+        pathprepend /usr/local/bin
+fi
+if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
+        pathprepend /usr/local/sbin
+fi
+
+if [ -d /usr/local/share ]; then
+        pathprepend /usr/local/share XDG_DATA_DIRS
+fi
+
+# Set some defaults before other applications add to these paths.
+pathappend /usr/share/info INFOPATH
+EOF
+  cat &gt; "${pkgdir}/etc/profile.d/readline.sh" &lt;&lt; "EOF"
+# Set up the INPUTRC environment variable.
+if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
+        INPUTRC=/etc/inputrc
+fi
+export INPUTRC
+EOF
+  cat &gt; "${pkgdir}/etc/profile.d/umask.sh" &lt;&lt; "EOF"
+# By default, the umask should be set.
+if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
+  umask 002
+else
+  umask 022
+fi
+EOF
+  # Use blocaled configuration for /etc/locale.conf and /etc/profile.d/i18n.sh
+  cat &gt; "${pkgdir}/etc/locale.conf" &lt;&lt; EOF
+# Begin /etc/locale.conf
+
+LANG=en_US.UTF-8
+
+# End /etc/locale.conf
+EOF
+  cat &gt; "${pkgdir}/etc/profile.d/i18n.sh" &lt;&lt; "EOF"
+# Begin /etc/profile.d/i18n.sh
+
+if [ -r /etc/locale.conf ]; then source /etc/locale.conf; fi
+
+if [ -n "$LANG" ];              then export LANG; fi
+if [ -n "$LC_TYPE" ];           then export LC_TYPE; fi
+if [ -n "$LC_NUMERIC" ];        then export LC_NUMERIC; fi
+if [ -n "$LC_TIME" ];           then export LC_TIME; fi
+if [ -n "$LC_COLLATE" ];        then export LC_COLLATE; fi
+if [ -n "$LC_MONETARY" ];       then export LC_MONETARY; fi
+if [ -n "$LC_MESSAGES" ];       then export LC_MESSAGES; fi
+if [ -n "$LC_PAPER" ];          then export LC_PAPER; fi
+if [ -n "$LC_NAME" ];           then export LC_NAME; fi
+if [ -n "$LC_ADDRESS" ];        then export LC_ADDRESS; fi
+if [ -n "$LC_TELEPHONE" ];      then export LC_TELEPHONE; fi
+if [ -n "$LC_MEASUREMENT" ];    then export LC_MEASUREMENT; fi
+if [ -n "$LC_IDENTIFICATION" ]; then export LC_IDENTIFICATION; fi
+
+# End /etc/profile.d/i18n.sh
+EOF
+  cat &gt; "${pkgdir}/etc/bashrc" &lt;&lt; "EOF"
+# Begin /etc/bashrc
+# Written for Beyond Linux From Scratch
+# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
+# updated by Bruce Dubbs &lt;bdubbs@linuxfromscratch.org&gt;
+
+# System wide aliases and functions.
+
+# System wide environment variables and startup programs should go into
+# /etc/profile.  Personal environment variables and startup programs
+# should go into ~/.bash_profile.  Personal aliases and functions should
+# go into ~/.bashrc
+
+# Provides colored /bin/ls and /bin/grep commands.  Used in conjunction
+# with code in /etc/profile.
+
+alias ls='ls --color=auto'
+alias grep='grep --color=auto'
+
+# Provides prompt for interactive shells, specifically shells started
+# in the X environment. [Review the LFS archive thread titled
+# PS1 Environment Variable for a great case study behind this script
+# addendum.]
+
+# Setup different prompt colors for local/remote and root/non-root users
+NORMAL="\[\e[0m\]"
+RED="\[\e[1;31m\]"
+GREEN="\[\e[1;32m\]"
+YELLOW="\[\e[1;33m\]"
+MAGENTA="\[\e[1;35m\]"
+CYAN="\[\e[1;36m\]"
+
+# Set local prompt color
+if [[ $EUID == 0 ]] ; then
+  if [[ $TERM == "screen" ]] ; then
+    PS1="$RED\u [ $NORMAL\w$RED ] (screen)# $NORMAL"
+  else
+    PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
+  fi
+else
+  if [[ $TERM == "screen" ]] ; then
+    PS1="$YELLOW\w [ $NORMAL\w$YELLOW] (screen)\$ $NORMAL"
+  else
+    PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
+  fi
+fi
+
+# Set remote prompt
+if [[ "$SSH_CLIENT" != "" ]] ; then
+  if [[ $EUID == 0 ]] ; then
+    if [[ $TERM == "screen" ]] ; then
+      PS1="$MAGENTA\u\h [ $NORMAL\w$MAGENTA ] (screen)# $NORMAL"
+    else
+      PS1="$MAGENTA\u@\h [ $NORMAL\w$MAGENTA ]# $NORMAL"
+    fi
+  else
+    if [[ $TERM == "screen" ]] ; then
+      PS1="$CYAN\u@\h [ $NORMAL\w$CYAN ] (screen)\$ $NORMAL"
+    else
+      PS1="$CYAN\u@\h [ $NORMAL\w$CYAN ]\$ $NORMAL"
+    fi
+  fi
+fi
+
+unset RED GREEN MAGENTA YELLOW CYAN NORMAL
+
+# GnuPG wants this or it'll fail with pinentry-curses under some
+# circumstances# Begin ~/.bashrc
+# Written for Beyond Linux From Scratch
+# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
+
+# Personal aliases and functions.
+
+# Personal environment variables and startup programs should go in
+# ~/.bash_profile.  System wide environment variables and startup
+# programs are in /etc/profile.  System wide aliases and functions are
+# in /etc/bashrc.
+
+if [ -f "/etc/bashrc" ] ; then
+  source /etc/bashrc
+fi
+
+# Set up user specific i18n variables
+#export LANG=en_US.UTF-8
+
+# End ~/.bashrc (for example signing a Git commit)
+tty -s &amp;&amp; export GPG_TTY=$(tty)
+
+# End /etc/bashrc
+EOF
+  cat &gt; "${pkgdir}/etc/skel/.bash_profile" &lt;&lt; "EOF"
+# Begin ~/.bash_profile
+# Written for Beyond Linux From Scratch
+# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
+# updated by Bruce Dubbs &lt;bdubbs@linuxfromscratch.org&gt;
+
+# Personal environment variables and startup programs.
+
+# Personal aliases and functions should go in ~/.bashrc.  System wide
+# environment variables and startup programs are in /etc/profile.
+# System wide aliases and functions are in /etc/bashrc.
+
+if [ -f "$HOME/.bashrc" ] ; then
+  source $HOME/.bashrc
+fi
+
+if [ -d "$HOME/bin" ] ; then
+  pathprepend $HOME/bin
+fi
+
+# Having . in the PATH is dangerous
+#if [ $EUID -gt 99 ]; then
+#  pathappend .
+#fi
+
+# End ~/.bash_profile
+EOF
+  cat &gt; "${pkgdir}/etc/skel/.profile" &lt;&lt; "EOF"
+# Begin ~/.profile
+# Personal environment variables and startup programs.
+
+if [ -d "$HOME/bin" ] ; then
+  pathprepend $HOME/bin
+fi
+
+# Set up user specific i18n variables
+#export LANG=&lt;ll&gt;_&lt;CC&gt;.&lt;charmap&gt;&lt;@modifiers&gt;
+
+# End ~/.profile
+EOF
+  cat &gt; "${pkgdir}/etc/skel/.bashrc" &lt;&lt; "EOF"
+# Begin ~/.bashrc
+# Written for Beyond Linux From Scratch
+# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
+
+# Personal aliases and functions.
+
+# Personal environment variables and startup programs should go in
+# ~/.bash_profile.  System wide environment variables and startup
+# programs are in /etc/profile.  System wide aliases and functions are
+# in /etc/bashrc.
+
+if [ -f "/etc/bashrc" ] ; then
+  source /etc/bashrc
+fi
+
+# Set up user specific i18n variables
+#export LANG=en_US.UTF-8
+
+# End ~/.bashrc
+EOF
+  cat &gt; "${pkgdir}/etc/skel/.bash_logout" &lt;&lt; "EOF"
+# Begin ~/.bash_logout
+# Written for Beyond Linux From Scratch
+# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
+
+# Personal items to perform on logout.
+
+# End ~/.bash_logout
+EOF
+  dircolors -p &gt; "${pkgdir}/etc/dircolors"
+  cp "${pkgdir}/etc/skel/.bash_profile" "${pkgdir}/root"
+  cp "${pkgdir}/etc/skel/.profile" "${pkgdir}/root"
+  cp "${pkgdir}/etc/skel/.bashrc" "${pkgdir}/root"
+  cp "${pkgdir}/etc/skel/.bash_logout" "${pkgdir}/root"
+  # Post LFS fixes:
+  chmod 0555 "${pkgdir}/proc"
+  chmod 1777 "${pkgdir}/run"
+  chmod 0555 "${pkgdir}/sys"
+}
+REALEOF</literal></userinput></screen>
+
+    <para>Produce the rootfs package using the following commands:</para>
+
+<screen><userinput>chown -R root:pacman .
+chmod 2775 .
+chmod 664 PKGBUILD
+su pacman -c 'makepkg -L --nodeps'</userinput></screen>
+
+    <para>Add the newly created package to the central package repository:</para>
+
+<screen><userinput>cp rootfs-&rootfs-version;-&rootfs-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/rootfs-&rootfs-version;-&rootfs-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the rootfs package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S rootfs --overwrite \* -dd --noconfirm</userinput></screen>
+
+
+    <para>Despite the overwrite flag above, configuration files are a special
+    case and are added to the filesystem with a ".pacnew" file extension.
+    Overwrite the original files with the ones from this package using the
+    following command:</para>
+
+<screen><userinput>for file in `find / -name "*.pacnew"`
+do
+    cp -vf "${file}" "${file%.*}"
+done</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/rootfs
+cp PKGBUILD /srv/pacman/source/LFS/rootfs
+cd /sources
+rm -rf rootfs</userinput></screen>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter08/rpcsvc-proto.xml lfs-pacman-2025-03-26/chapter08/rpcsvc-proto.xml
--- lfs-git-2025-03-26/chapter08/rpcsvc-proto.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/rpcsvc-proto.xml	2025-03-25 22:21:39.461852810 -0500
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="rpcsvc-proto" xreflabel="rpcsvc-proto-&rpcsvc-proto-version;">
+  <?dbhtml filename="rpcsvc-proto.html"?>
+
+  <sect1info condition="script">
+    <productname>rpcsvc-proto</productname>
+    <productnumber>&rpcsvc-proto-version;</productnumber>
+    <address>&rpcsvc-proto-url;</address>
+  </sect1info>
+
+  <title>rpcsvc-proto-&rpcsvc-proto-version;</title>
+
+  <indexterm zone="rpcsvc-proto">
+    <primary sortas="a-rpcsvc-proto">rpcsvc-proto</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to rpcsvc-proto</title>
+
+    <para>
+      The <application>rpcsvc-proto</application> package contains the rcpsvc
+      protocol files and headers, formerly included with glibc, that are not
+      included in replacement <xref linkend="libtirpc"/>, along with the rpcgen
+      program.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&rpcsvc-proto-fin-sbu;</seg>
+        <seg>&rpcsvc-proto-fin-du;</seg>
+      </seglistitem>
+  </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of rpcsvc-proto</title>
+
+    <para>Create the PKGBUILD for the rpcsvc-propo package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/rpcsvc-proto
+cd /sources/rpcsvc-proto
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="rpcsvc-proto"
+pkgver="&rpcsvc-proto-version;"
+pkgrel="1"
+pkgdesc="The rpcsvc-proto package contains the rcpsvc protocol files and headers, formerly included with glibc."
+arch=('x86'
+      'x86_64')
+license=('BSD3C')
+groups=('core')
+depends=('glibc')
+makedepends=('binutils'
+             'coreutils'
+             'gettext'
+             'gcc'
+             'glibc'
+             'grep'
+             'make'
+             'sed')
+source=("https://github.com/thkukuk/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.xz")
+md5sums=('&rpcsvc-proto-md5;')
+
+build() {
+  cd ${pkgname}-${pkgver}
+  ./configure --sysconfdir=/etc
+  make
+}
+
+package() {
+  cd ${pkgname}-${pkgver}
+  make DESTDIR="$pkgdir" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/rpcsvc-proto-&rpcsvc-proto-version;-1-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the rpcsvc-proto package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S rpcsvc-proto --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/rpcsvc-proto
+cp PKGBUILD /srv/pacman/source/LFS/rpcsvc-proto
+cd /sources
+rm -rf rpcsvc-proto</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>
+          rpcgen
+        </seg>
+        <seg>
+          None
+        </seg>
+        <seg>
+          /usr/include/rpcsvc
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="rpcgen">
+        <term><command>rpcgen</command></term>
+        <listitem>
+          <para>
+            Generates C code to implement the RPC protocol
+          </para>
+          <indexterm zone="rpcsvc-proto rpcgen">
+            <primary sortas="b-rpcgen">rpcgen</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/sed.xml lfs-pacman-2025-03-26/chapter08/sed.xml
--- lfs-git-2025-03-26/chapter08/sed.xml	2025-03-25 18:44:40.096488450 -0500
+++ lfs-pacman-2025-03-26/chapter08/sed.xml	2025-03-25 22:21:39.461662241 -0500
@@ -40,25 +40,81 @@
   <sect2 role="installation">
     <title>Installation of Sed</title>
 
-    <para>Prepare Sed for compilation:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
+    <para>Create the PKGBUILD for the Sed package with the following
+    commands:</para>
 
-    <para>Compile the package and generate the HTML documentation:</para>
-
-<screen><userinput remap="make">make
-make html</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">chown -R tester .
-su tester -c "PATH=$PATH make check"</userinput></screen>
-
-    <para>Install the package and its documentation:</para>
-
-<screen><userinput remap="install">make install
-install -d -m755           /usr/share/doc/sed-&sed-version;
-install -m644 doc/sed.html /usr/share/doc/sed-&sed-version;</userinput></screen>
+<screen><userinput>mkdir /sources/sed
+cd /sources/sed
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="sed"
+pkgver="&sed-version;"
+pkgrel="&sed-release;"
+pkgdesc="The Sed package contains a stream editor."
+arch=('x86'
+      'x86_64')
+url="&sed-home;"
+license=('GPLv3')
+groups=('core')
+depends=('acl'
+         'attr'
+         'glibc'
+         'rootfs) 
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('diffutils'
+              'gawk')
+source=('&sed-url;')
+md5sums=('&sed-md5;')
+    
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr  --bindir=/bin
+  make
+  make html
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  install -d -m755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  install -m644 doc/sed.html "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp sed-&sed-version;-&sed-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/sed-&sed-version;-&sed-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Sed package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S sed --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/sed
+cp PKGBUILD /srv/pacman/source/LFS/sed
+cd /sources
+rm -rf sed</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/setuptools.xml lfs-pacman-2025-03-26/chapter08/setuptools.xml
--- lfs-git-2025-03-26/chapter08/setuptools.xml	2025-03-25 18:44:40.096494580 -0500
+++ lfs-pacman-2025-03-26/chapter08/setuptools.xml	2025-03-25 22:21:39.461002384 -0500
@@ -40,13 +40,59 @@
   <sect2 role="installation">
     <title>Installation of Setuptools</title>
 
-    <para>Build the package:</para>
+    <para>Create the PKGBUILD for the Setuptools package with the following
+    commands:</para>
 
-<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
+<screen><userinput>mkdir /sources/setuptools
+cd /sources/setuptools
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
 
-    <para>Install the package:</para>
+pkgname="setuptools"
+pkgver="&setuptools-version;"
+pkgrel="&setuptools-release;"
+pkgdesc="The Setuptools module provides a method to easily download, build, install, upgrade, and uninstall Python packages."
+arch=('any')
+url="&setuptools-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('python')
+makedepends=('wheel')
+source=('&setuptools-url;')
+md5sums=('&setuptools-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  pip3 install --root "${pkgdir}" --no-index --find-links dist setuptools
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp setuptools-&setuptools-version;-&setuptools-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/setuptools-&setuptools-version;-&setuptools-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Setuptools package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S setuptools --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/setuptools
+cp PKGBUILD /srv/pacman/source/LFS/setuptools
+cd /sources
+rm -rf setuptools</userinput></screen>
 
-<screen><userinput remap="install">pip3 install --no-index --find-links dist setuptools</userinput></screen>
   </sect2>
 
   <sect2 id="contents-setuptools" role="content">
diff -Naurp lfs-git-2025-03-26/chapter08/sgml-common.xml lfs-pacman-2025-03-26/chapter08/sgml-common.xml
--- lfs-git-2025-03-26/chapter08/sgml-common.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/sgml-common.xml	2025-03-25 22:21:39.460801555 -0500
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-sgml-common" role="wrap">
+  <?dbhtml filename="sgml-common.html"?>
+
+  <sect1info condition="script">
+    <productname>sgml-common</productname>
+    <productnumber>&sgml-common-version;</productnumber>
+    <address>&sgml-common-url;</address>
+  </sect1info>
+
+  <title>sgml-common-&sgml-common-version;</title>
+
+  <indexterm zone="ch-system-sgml-common">
+    <primary sortas="a-sgml-common">sgml-common</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>
+      The <application>SGML Common</application> package contains
+      <command>install-catalog</command>. This is useful for creating and
+      maintaining centralized SGML catalogs.
+    </para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&sgml-common-fin-sbu;</seg>
+        <seg>&sgml-common-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of SGML Common</title>
+
+    <para>Create the PKGBUILD for the sgml-common package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/sgml-common
+cd /sources/sgml-common
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="sgml-common"
+pkgver="&sgml-common-version;"
+pkgrel="&sgml-common-release;"
+pkgdesc="The SGML Common package contains install-catalog. This is useful for creating and maintaining centralized SGML catalogs."
+arch=('any')
+url="&sgml-common-home;"
+install=sgml-common.install
+depends=('rootfs')
+makedepends=('autoconf'
+             'automake'
+             'bash'
+             'binutils'
+             'coreutils'
+             'make'
+             'patch')
+source=('&sgml-common-url;'
+        '&patches-root;&sgml-common-manpage-patch;')
+md5sums=('&sgml-common-md5;'
+         '&patches-root;&sgml-common-manpage-patch-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  # Instead of the normal convention of including the autotools files
+  # in the package, the maintainers included symlinks to the files in
+  # /usr/share/automake. For previous versions of Automake this convention
+  # is correct, but recent versions of Automake install the internal files
+  # in version specific directories. This causes the configure script to
+  # abort. To fix this error, the autotools are regenerated. Since the
+  # included Makefile.am file uses a syntax not supported by current
+  # versions of Automake, a patch is required to fix the syntax.
+  patch -Np1 -i "${srcdir}/${pkgname}-${pkgver}-manpage-1.patch
+  autoreconf -fi
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --sysconfdir=/etc
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" docdir=/usr/share/doc install
+}</literal>
+REALEOF</userinput></screen>
+
+    <para>Create the install file to install catalogs after intallation:</para>
+
+<screen><userinput>cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># sgml-common.install
+
+# Taken from Arch Linux - Thanks
+# arg 1:  the new package version
+pre_install() {
+    /bin/true
+}
+
+# arg 1:  the new package version
+post_install() {
+    add_catalog "${1%-*}"
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+pre_upgrade() {
+    remove_catalog "${2%-*}"
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+    add_catalog "${1%-*}"
+}
+
+# arg 1:  the old package version
+pre_remove() {
+    remove_catalog "${1%-*}"
+}
+
+# arg 1:  the old package version
+post_remove() {
+    /bin/true
+}
+
+
+add_catalog() {
+    install-catalog --add /etc/sgml/sgml-ent.cat \
+        /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &gt; /dev/null 2&gt;&amp;1
+
+    install-catalog --add /etc/sgml/sgml-docbook.cat \
+        /etc/sgml/sgml-ent.cat &gt; /dev/null 2&gt;&amp;1
+}
+
+remove_catalog() {
+    install-catalog --remove /etc/sgml/sgml-ent.cat \
+        /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &gt; /dev/null 2&gt;&amp;1
+
+    install-catalog --remove /etc/sgml/sgml-docbook.cat \
+        /etc/sgml/sgml-ent.cat &gt; /dev/null 2&gt;&amp;1
+}
+
+op=$1
+shift
+$op "$@"</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp sgml-common-&sgml-common-version;-&sgml-common-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/sgml-common-&sgml-common-version;-&sgml-common-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the sgml-common package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S sgml-common --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/sgml-common
+cp PKGBUILD /srv/pacman/source/LFS/sgml-common
+cd /sources
+rm -rf sgml-common</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="configuration">
+    <title>Configuring SGML Common</title>
+
+    <sect3 id="sgml-common-config">
+      <title>Config Files</title>
+
+      <para>
+        <filename>/etc/sgml/sgml.conf</filename>
+      </para>
+
+      <indexterm zone="ch-system-sgml-common sgml-common-config">
+        <primary sortas="e-etc-sgml-sgml.conf">/etc/sgml/sgml.conf</primary>
+      </indexterm>
+
+    </sect3>
+
+    <sect3>
+      <title>Configuration Information</title>
+
+      <para>
+        No change in this file is necessary.
+      </para>
+
+    </sect3>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Programs</segtitle>
+      <segtitle>Installed Libraries</segtitle>
+      <segtitle>Installed Files</segtitle>
+      <segtitle>Installed Directories</segtitle>
+
+      <seglistitem>
+        <seg>install-catalog and sgmlwhich</seg>
+        <seg>None</seg>
+        <seg>SGML and XML DocBook entity files</seg>
+        <seg>/etc/sgml, /usr/share/doc/sgml-common-&sgml-common-version;, and
+        /usr/share/sgml</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="install-catalog">
+        <term><command>install-catalog</command></term>
+        <listitem>
+          <para>
+            creates a centralized catalog that maintains references to
+            catalogs scattered throughout the
+            <filename class="directory">/usr/share/sgml</filename> directory
+          tree.
+          </para>
+          <indexterm zone="ch-system-sgml-common install-catalog">
+            <primary sortas="b-install-catalog">install-catalog</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="sgmlwhich">
+        <term><command>sgmlwhich</command></term>
+        <listitem>
+          <para>
+            prints to standard output the name of the main configuration file.
+          </para>
+          <indexterm zone="ch-system-sgml-common sgmlwhich">
+            <primary sortas="b-sgmlwhich">sgmlwhich</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="SGML-entities">
+        <term><filename>SGML entities files</filename></term>
+        <listitem>
+          <para>
+            contains the basic character entities defined with SDATA entries.
+          </para>
+          <indexterm zone="ch-system-sgml-common SGML-entities">
+            <primary sortas="g-SGML-ENT-files">SGML entity files</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="XML-entities">
+        <term><filename>XML entities files</filename></term>
+        <listitem>
+          <para>
+            contains the basic character entities defined by a hexadecimal
+            representation of the Unicode character number.
+          </para>
+          <indexterm zone="ch-system-sgml-common XML-entities">
+            <primary sortas="g-XML-ENT-files">XML entity files</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/shadow.xml lfs-pacman-2025-03-26/chapter08/shadow.xml
--- lfs-git-2025-03-26/chapter08/shadow.xml	2025-03-25 18:44:40.096503810 -0500
+++ lfs-pacman-2025-03-26/chapter08/shadow.xml	2025-03-25 22:21:39.461623041 -0500
@@ -36,88 +36,339 @@
       </seglistitem>
     </segmentedlist>
 
-  </sect2>
+  </sect2> 
 
   <sect2 role="installation">
     <title>Installation of Shadow</title>
 
-    <important>
-      <para>
-        If you've installed Linux-PAM, you should follow
-        <ulink url='&blfs-book;postlfs/shadow.html'>the BLFS
-        instruction</ulink> instead of this page to build (or, rebuild or
-        upgrade) shadow.
-      </para>
-    </important>
-
-    <note>
-      <para>If you would like to enforce the use of strong passwords,
-      <ulink url='&blfs-book;postlfs/linux-pam.html'>install and configure
-      Linux-PAM</ulink> first.  Then
-      <ulink url='&blfs-book;postlfs/shadow.html'>install and configure
-      shadow with the PAM support</ulink>.  Finally
-      <ulink url='&blfs-book;postlfs/libpwquality.html'>install
-      libpwquality and configure PAM to use it</ulink>.</para>
-    </note>
-
-    <para>Disable the installation of the <command>groups</command> program
-    and its man pages, as Coreutils provides a better version. Also,
-    prevent the installation of manual pages that were already installed in
-    <xref linkend="ch-system-man-pages"/>:</para>
-
-<screen><userinput remap="pre">sed -i 's/groups$(EXEEXT) //' src/Makefile.in
-find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
-find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
-find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;</userinput></screen>
-
-    <para id="shadow-login_defs">Instead of using the default
-    <emphasis>crypt</emphasis> method, use the much more secure
-    <emphasis>YESCRYPT</emphasis> method of password encryption, which also
-    allows passwords longer than 8 characters.
-    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,
-    remove <filename class="directory">/bin</filename> and
-    <filename class="directory">/sbin</filename> from the <envar>PATH</envar>,
-    since they are simply symlinks to their counterparts in
-    <filename class="directory">/usr</filename>.</para>
-
-    <warning>
-      <para>Including <filename class="directory">/bin</filename>
-      and/or <filename class="directory">/sbin</filename> in
-      the <envar>PATH</envar> variable may cause some BLFS packages fail to
-      build,<!-- known example: SPIRV-LLVM-Translator --> so don't do that
-      in the <filename>.bashrc</filename> file or anywhere else.</para>
-    </warning>
-
-<screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
-    -e 's:/var/spool/mail:/var/mail:'                   \
-    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                  \
-    -i etc/login.defs</userinput></screen>
-
-<!--
-    <para>Make a minor change to make the first group number generated
-    by useradd 1000:</para>
-
-<screen><userinput remap="pre">sed -i 's/1000/999/' etc/useradd</userinput></screen>
--->
-<!--
-    <para>Fix a simple programming error by modifying a file with following command:</para>
-
-<screen><userinput remap="pre">sed -e "224s/rounds/min_rounds/" -i libmisc/salt.c</userinput></screen>
--->
-    <para>Prepare Shadow for compilation:</para>
-
-<screen><userinput remap="configure">touch /usr/bin/passwd
-./configure --sysconfdir=/etc   \
-            --disable-static    \
-            --with-{b,yes}crypt \
-            --without-libbsd    \
-            --with-group-name-max-length=32</userinput></screen>
+    <para>Create the PKGBUILD for the Shadow package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/shadow
+cd /sources/shadow
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="shadow"
+pkgver="&shadow-version;"
+pkgrel="&shadow-release;"
+pkgdesc="The Shadow package contains programs for handling passwords in a secure way."
+arch=('x86'
+      'x86_64')
+url="&shadow-home;"
+license=('BSD3C')
+groups=('core')
+depends=('glibc'
+         'libxcrypt'
+         'linux-pam')
+makedepends=('acl'
+             'attr'
+             'bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'findutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'grep'
+             'libcap'
+             'make'
+             'sed')
+source=('&shadow-url;')
+md5sums=('&shadow-md5;')
+backup=('etc/default/useradd'
+        'etc/login.defs'
+        'etc/pam.d/login'
+        'etc/pam.d/passwd'
+        'etc/pam.d/su'
+        'etc/pam.d/chage'
+        'etc/pam.d/chfn'
+        'etc/pam.d/chgpasswd'
+        'etc/pam.d/chpasswd'
+        'etc/pam.d/chsh'
+        'etc/pam.d/groupadd'
+        'etc/pam.d/groupdel'
+        'etc/pam.d/groupmems'
+        'etc/pam.d/groupmod'
+        'etc/pam.d/newusers'
+        'etc/pam.d/useradd'
+        'etc/pam.d/userdel'
+        'etc/pam.d/usermod')
+
+prepare() {
+  cd "${pkgname}-${pkgver}"
+
+  # Don't install groups utility (use Coreutils version)
+  sed -i 's/groups$(EXEEXT) //' src/Makefile.in
+
+  # Don't install groups man-page either
+  find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
+
+  # Don't install these as man-pages version is better
+  find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
+  find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;
+
+  # Use YESCRYPT instead of MD5, correct mail spool dir, and correct
+  # duplicate PATH entries due to merged /usr
+  sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' \
+      -e 's@/var/spool/mail@/var/mail@'                   \
+      -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                  \
+      -i etc/login.defs
+}
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  ./configure --sysconfdir=/etc   \
+              --disable-static    \
+              --without-libbsd    \
+              --with-{b,yes}crypt
+  make
+}
+
+package() {
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" exec_prefix=/usr pamddir= install
+  make DESTDIR="${pkgdir}" -C man install-man
+
+  # Disable login.defs functions that are hanled by Linud-PAM
+  for FUNCTION in FAIL_DELAY               \
+                  FAILLOG_ENAB             \
+                  LASTLOG_ENAB             \
+                  MAIL_CHECK_ENAB          \
+                  OBSCURE_CHECKS_ENAB      \
+                  PORTTIME_CHECKS_ENAB     \
+                  QUOTAS_ENAB              \
+                  CONSOLE MOTD_FILE        \
+                  FTMP_FILE NOLOGINS_FILE  \
+                  ENV_HZ PASS_MIN_LEN      \
+                  SU_WHEEL_ONLY            \
+                  CRACKLIB_DICTPATH        \
+                  PASS_CHANGE_TRIES        \
+                  PASS_ALWAYS_WARN         \
+                  CHFN_AUTH ENCRYPT_METHOD \
+                  ENVIRON_FILE
+  do
+    sed -i "s/^${FUNCTION}/# &amp;/" "${pkgdir}/etc/login.defs"
+  done
+
+  install -vdm755 "${pkgdir}/etc/pam.d"
+
+  # login
+  cat &gt; "${pkgdir}/etc/pam.d/login" &lt;&lt; "EOF"
+# Begin /etc/pam.d/login
+
+# Set failure delay before next prompt to 3 seconds
+auth      optional    pam_faildelay.so  delay=3000000
+
+# Check to make sure that the user is allowed to login
+auth      requisite   pam_nologin.so
+
+# Check to make sure that root is allowed to login
+# Disabled by default. You will need to create /etc/securetty
+# file for this module to function. See man 5 securetty.
+#auth      required    pam_securetty.so
+
+# Additional group memberships - disabled by default
+#auth      optional    pam_group.so
+
+# include system auth settings
+auth      include     system-auth
+
+# check access for the user
+account   required    pam_access.so
+
+# include system account settings
+account   include     system-account
+
+# Set default environment variables for the user
+session   required    pam_env.so
+
+# Set resource limits for the user
+session   required    pam_limits.so
+
+# Display the message of the day - Disabled by default
+#session   optional    pam_motd.so
+
+# Check user's mail - Disabled by default
+#session   optional    pam_mail.so      standard quiet
+
+# include system session and password settings
+session   include     system-session
+password  include     system-password
+
+# End /etc/pam.d/login
+EOF
+
+  # passwd
+  cat &gt; "${pkgdir}/etc/pam.d/passwd" &lt;&lt; "EOF"
+# Begin /etc/pam.d/passwd
+
+password  include     system-password
+
+# End /etc/pam.d/passwd
+EOF
+
+  # su
+  cat &gt; "${pkgdir}/etc/pam.d/su" &lt;&lt; "EOF"
+# Begin /etc/pam.d/su
+
+# always allow root
+auth      sufficient  pam_rootok.so
+
+# Allow users in the wheel group to execute su without a password
+# disabled by default
+#auth      sufficient  pam_wheel.so trust use_uid
+
+# include system auth settings
+auth      include     system-auth
+
+# limit su to users in the wheel group
+# disabled by default
+#auth      required    pam_wheel.so use_uid
+
+# include system account settings
+account   include     system-account
+
+# Set default environment variables for the service user
+session   required    pam_env.so
+
+# include system session settings
+session   include     system-session
+
+# End /etc/pam.d/su
+EOF
+
+  # chpasswd and newusers
+  cat &gt; "${pkgdir}/etc/pam.d/chpasswd" &lt;&lt; "EOF"
+# Begin /etc/pam.d/chpasswd
+
+# always allow root
+auth      sufficient  pam_rootok.so
+
+# include system auth and account settings
+auth      include     system-auth
+account   include     system-account
+password  include     system-password
+
+# End /etc/pam.d/chpasswd
+EOF
+  sed -e s/chpasswd/newusers/ \
+      "${pkgdir}/etc/pam.d/chpasswd" &gt; \
+      "${pkgdir}/etc/pam.d/newusers"
+
+  # chage
+  cat &gt; "${pkgdir}/etc/pam.d/chage" &lt;&lt; "EOF"
+# Begin /etc/pam.d/chage
+
+# always allow root
+auth      sufficient  pam_rootok.so
+
+# include system auth and account settings
+auth      include     system-auth
+account   include     system-account
+
+# End /etc/pam.d/chage
+EOF
+
+  # chfn chgpasswd chsh groupadd groupdel
+  # groupmems groupmod useradd userdel usermod
+  for PROGRAM in chfn chgpasswd chsh groupadd groupdel \
+                 groupmems groupmod useradd userdel usermod
+  do
+    install -v -m644 "${pkgdir}/etc/pam.d/chage" \
+                     "${pkgdir}/etc/pam.d/${PROGRAM}"
+    sed -i "s/chage/${PROGRAM}/" "${pkgdir}/etc/pam.d/${PROGRAM}"
+  done
+
+  install -vdm755 "${pkgdir}/etc/default"
+  cat &gt; "${pkgdir}/etc/default/useradd" &lt;&lt; "EOF"
+# useradd defaults file
+GROUP=999
+GROUPS=
+HOME=/home
+INACTIVE=-1
+EXPIRE=
+SHELL=/bin/bash
+SKEL=/etc/skel
+USRSKEL=/usr/etc/skel
+CREATE_MAIL_SPOOL=no
+LOG_INIT=yes
+EOF
+
+  # remove /etc/login.access and /etc/limits as they are not used
+  rm -fv "${pkgdir}"/etc/{login.access,limits}
+
+  # Install the Linux-PAM file here too
+  cat &gt; /etc/pam.d/system-account &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-account
+
+account   required    pam_unix.so
+
+# End /etc/pam.d/system-account
+EOF
+
+  cat &gt; /etc/pam.d/system-auth &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-auth
+
+auth      optional    pam_cap.so
+auth      required    pam_unix.so
+
+# End /etc/pam.d/system-auth
+EOF
+
+  cat &gt; /etc/pam.d/system-session &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-session
+
+session   required    pam_unix.so
+
+# End /etc/pam.d/system-session
+EOF
+
+  cat &gt; /etc/pam.d/system-password &lt;&lt; "EOF"
+# Begin /etc/pam.d/system-password
+
+# check new passwords for strength (man pam_pwquality)
+password  required    pam_pwquality.so   authtok_type=UNIX retry=1 difok=1 \
+                                         minlen=8 dcredit=0 ucredit=0 \
+                                         lcredit=0 ocredit=0 minclass=1 \
+                                         maxrepeat=0 maxsequence=0 \
+                                         maxclassrepeat=0 gecoscheck=0 \
+                                         dictcheck=1 usercheck=1 \
+                                         enforcing=1 badwords="" \
+                                         dictpath=/usr/lib/cracklib/pw_dict
+
+# use yescrypt hash for encryption, use shadow, and try to use any
+# previously defined authentication token (chosen password) set by any
+# prior module.
+password  required    pam_unix.so        yescrypt shadow try_first_pass
+
+# End /etc/pam.d/system-password
+EOF
+
+  cat &gt; /etc/pam.d/other &lt;&lt; "EOF"
+# Begin /etc/pam.d/other
+
+auth        required        pam_warn.so
+auth        required        pam_deny.so
+account     required        pam_warn.so
+account     required        pam_deny.so
+password    required        pam_warn.so
+password    required        pam_deny.so
+session     required        pam_warn.so
+session     required        pam_deny.so
+
+# End /etc/pam.d/other
+EOF
+
+  # Ensure minimum group warning is below 1000 (system groups)
+  install -vdm755 ${pkgdir}/etc/default/
+  echo "GROUPS=999" &gt; ${pkgdir}/etc/default/useradd
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
-      <title>The meaning of the new configuration options:</title>
+      <title>The meaning of the new configure options and configuration changes:</title>
 
       <varlistentry>
         <term><command>touch /usr/bin/passwd</command></term>
@@ -159,69 +410,6 @@ find man -name Makefile.in -exec sed -i
         </listitem>
       </varlistentry>
 
-    </variablelist>
-
-    <para>Compile the package:</para>
-
-    <screen><userinput remap="make">make</userinput></screen>
-
-    <para>This package does not come with a test suite.</para>
-
-    <para>Install the package:</para>
-
-    <screen><userinput remap="install">make exec_prefix=/usr install
-make -C man install-man</userinput></screen>
-
-  </sect2>
-
-  <sect2 id="conf-shadow" role="configuration">
-    <title>Configuring Shadow</title>
-
-    <indexterm zone="conf-shadow">
-      <primary sortas="a-Shadow">Shadow</primary>
-      <secondary>configuring</secondary>
-    </indexterm>
-
-    <para>This package contains utilities to add, modify, and delete users and
-    groups; set and change their passwords; and perform other administrative
-    tasks. For a full explanation of what <emphasis>password shadowing</emphasis>
-    means, see the <filename>doc/HOWTO</filename> file within the unpacked
-    source tree. If you use Shadow support, keep in mind that programs which need
-    to verify passwords (display managers, FTP programs, pop3 daemons, etc.)
-    must be Shadow-compliant. That is, they must be able to work with
-    shadowed passwords.</para>
-
-    <para>To enable shadowed passwords, run the following command:</para>
-
-<screen><userinput>pwconv</userinput></screen>
-
-    <para>To enable shadowed group passwords, run:</para>
-
-<screen><userinput>grpconv</userinput></screen>
-
-    <para>Shadow's default configuration for the <command>useradd</command>
-    utility needs some explanation. First, the default
-    action for the <command>useradd</command> utility is to create the user and
-    a group with the same name as the user. By default the user ID (UID) and
-    group ID (GID) numbers will begin at 1000. This means if you don't pass
-    extra parameters to <command>useradd</command>, each user will be a member of a
-    unique group on the system. If this behavior is undesirable, you'll need
-    to pass either the <parameter>-g</parameter> or <parameter>-N</parameter>
-    parameter to <command>useradd</command>, or else change the setting of
-    <parameter>USERGROUPS_ENAB</parameter> in
-    <filename>/etc/login.defs</filename>. See <ulink role='man'
-    url='&man;useradd.8'>useradd(8)</ulink> for more information.</para>
-
-    <para>Second, to change the default parameters, the file
-    <filename>/etc/default/useradd</filename> must be created and tailored
-    to suit your particular needs. Create it with:</para>
-
-<screen><userinput>mkdir -p /etc/default
-useradd -D --gid 999</userinput></screen>
-
-    <variablelist>
-      <title><filename>/etc/default/useradd</filename> parameter explanations</title>
-
       <varlistentry>
         <term><parameter>GROUP=999</parameter></term>
         <listitem>
@@ -244,6 +432,7 @@ useradd -D --gid 999</userinput></screen
 
         </listitem>
       </varlistentry>
+
       <varlistentry>
         <term><parameter>CREATE_MAIL_SPOOL=yes</parameter></term>
         <listitem>
@@ -260,15 +449,25 @@ useradd -D --gid 999</userinput></screen
 
     </variablelist>
 
-  </sect2>
+    &pacman-build-add;
+
+<screen><userinput>cp shadow-&shadow-version;-&shadow-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/shadow-&shadow-version;-&shadow-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Shadow package:</para>
 
-  <sect2 role="configuration">
-    <title>Setting the Root Password</title>
+<screen><userinput>pacman -Syu
+pacman -S shadow - -overwrite \* -dd - -noconfirm</userinput></screen>
 
-    <para>Choose a password for user <emphasis>root</emphasis> and set it
-    by running:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen role="nodump"><userinput>passwd root</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/shadow
+cp PKGBUILD /srv/pacman/source/LFS/shadow
+cd /sources
+rm -rf shadow</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/sqlite.xml lfs-pacman-2025-03-26/chapter08/sqlite.xml
--- lfs-git-2025-03-26/chapter08/sqlite.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/sqlite.xml	2025-03-25 22:21:39.461236033 -0500
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-sqlite" role="wrap">
+  <?dbhtml filename="sqlite.html"?>
+
+  <sect1info condition="script">
+    <productname>sqlite</productname>
+    <productnumber>&sqlite-version;</productnumber>
+    <address>&sqlite-url;</address>
+  </sect1info>
+
+  <title>SQLite-&sqlite-version;</title>
+
+  <indexterm zone="ch-system-sqlite">
+    <primary sortas="a-SQLite">SQLite</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title>Introduction to SQLite</title>
+
+    <para>
+      The <application>SQLite</application> 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</title>
+
+    <para>Create the PKGBUILD for the SQLite package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/sqlite
+cd /sources/sqlite
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="sqlite"
+pkgver="&sqlite-version;"
+pkgrel="&sqlite-release;"
+_docver="&sqlite-doc-version;"
+pkgdesc="The SQLite package is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine."
+arch=('x86'
+      'x86_64')
+url="&sqlite-home;"
+license=('GPL3')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'grep'
+             'libarchive'
+             'make'
+             'sed')
+source=('&sqlite-url;'
+        '&sqlite-doc-url;')
+md5sums=('&sqlite-md5;'
+         '&sqlite-doc-md5;')
+noextract=("${pkgname}-doc-${_docver}.zip") 
+
+prepare(){
+  cd "${pkgname}-autoconf-${_docver}"
+  unzip -q ../sqlite-doc-.zip
+}
+
+build(){
+  cd "${pkgname}-autoconf-${_docver}"
+  ./configure --prefix=/usr         \
+              --disable-static      \
+              --enable-fts{4,5}     \
+              CPPFLAGS="${CPPFLAGS} \
+                        -D SQLITE_ENABLE_COLUMN_METADATA=1 \
+                        -D SQLITE_ENABLE_UNLOCK_NOTIFY=1   \
+                        -D SQLITE_ENABLE_DBSTAT_VTAB=1     \
+                        -D SQLITE_SECURE_DELETE=1"
+  make
+}
+
+package(){
+  cd "${pkgname}-autoconf-${_docver}"
+  make DESTDIR="${pkgdir}" install
+  install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  cp -Rv "${pkgname}-doc-${_docver}"/* \
+         "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp sqlite-&sqlite-version;-&sqlite-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/sqlite-&sqlite-version;-&sqlite-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the SQLite package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S sqlite --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/sqlite
+cp PKGBUILD /srv/pacman/source/LFS/sqlite
+cd /sources
+rm -rf sqlite</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="commands">
+    <title>Command Explanations</title>
+
+    <para>
+      <parameter>--enable-fts5</parameter>: This switch enables support for
+      version 5 of the full text search extension.
+    </para>
+
+    <para>
+      <parameter>CFLAGS="-g -O2
+      -DSQLITE_ENABLE_FTS3=1
+      -DSQLITE_ENABLE_FTS3_TOKENIZER=1
+      -DSQLITE_ENABLE_FTS4=1
+      -DSQLITE_ENABLE_COLUMN_METADATA=1
+      -DSQLITE_SECURE_DELETE
+      -DSQLITE_ENABLE_UNLOCK_NOTIFY=1
+      -DSQLITE_ENABLE_DBSTAT_VTAB=1"</parameter>: Applications such as
+      <application>SeaMonkey</application> require these options
+      to be turned on.
+      The only way to do this is to include them in
+      the CFLAGS.
+      By default, these are set to <literal>"-g -O2"</literal> so we
+      specify that to preserve those settings. You may, of course, wish to omit
+      the <literal>'-g'</literal> if you do not wish to create debugging
+      information. For further information on what can be specified see <ulink
+      url="http://www.sqlite.org/compile.html"/>.
+    </para>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title>Contents</title>
+
+    <segmentedlist>
+      <segtitle>Installed Program</segtitle>
+      <segtitle>Installed Library</segtitle>
+      <segtitle>Installed Directory</segtitle>
+
+      <seglistitem>
+        <seg>
+          sqlite3
+        </seg>
+        <seg>
+          libsqlite3.so
+        </seg>
+        <seg>
+          /usr/share/doc/sqlite-&sqlite-version;
+        </seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="sqlite3">
+        <term><command>sqlite3</command></term>
+        <listitem>
+          <para>
+            A terminal-based front-end to the <application>SQLite</application>
+            library that can evaluate queries interactively and display the
+            results.
+          </para>
+          <indexterm zone="ch-system-sqlite sqlite3">
+            <primary sortas="b-sqlite3">sqlite3</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="libsqlite3">
+        <term><filename class="libraryfile">libsqlite3.so</filename></term>
+        <listitem>
+          <para>
+            contains the <application>SQLite</application> API functions.
+          </para>
+          <indexterm zone="ch-system-sqlite libsqlite3">
+            <primary sortas="c-libsqlite3">libsqlite3.so</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
diff -Naurp lfs-git-2025-03-26/chapter08/sysklogd.xml lfs-pacman-2025-03-26/chapter08/sysklogd.xml
--- lfs-git-2025-03-26/chapter08/sysklogd.xml	2025-03-25 18:44:40.096521550 -0500
+++ lfs-pacman-2025-03-26/chapter08/sysklogd.xml	2025-03-25 22:21:39.461405362 -0500
@@ -41,24 +41,89 @@
   <sect2 role="installation">
     <title>Installation of Sysklogd</title>
 
-    <para>Prepare the package for compilation:</para>
+    <para>Create the PKGBUILD for the Sysklogd package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr      \
-            --sysconfdir=/etc  \
-            --runstatedir=/run \
-            --without-logger   \
-            --disable-static   \
-            --docdir=/usr/share/doc/sysklogd-&sysklogd-version;</userinput></screen>
+<screen><userinput>mkdir /sources/sysklogd
+cd /sources/sysklogd
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="sysklogd"
+pkgver="&sysklogd-version;"
+pkgrel="&sysklogd-release;"
+pkgdesc="The sysklogd package contains programs for logging system messages."
+arch=('x86'
+      'x86_64')
+url="&sysklogd-home;"
+license=('GPLv2')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'patch')
+backup=('etc/syslog.conf')
+source=('&sysklogd-url;')
+md5sums=('&sysklogd-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr      \
+              --sysconfdir=/etc  \
+              --runstatedir=/run \
+              --without-logger   \
+              --disable-static   \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make prefix="${pkgdir}" install
+
+  # Install the default syslog.conf - this will be replaced after the build
+  install -vdm755 "${pkgdir}/etc"
+  cat &gt; "${pkgdir}/etc/syslog.conf" &lt;&lt; "EOF"
+# Begin /etc/syslog.conf
 
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>This package does not come with a test suite.</para>
+auth,authpriv.* -/var/log/auth.log
+*.*;auth,authpriv.none -/var/log/sys.log
+daemon.* -/var/log/daemon.log
+kern.* -/var/log/kern.log
+mail.* -/var/log/mail.log
+user.* -/var/log/user.log
+*.emerg *
 
-    <para>Install the package:</para>
+# Do not open any internet ports.
+secure_mode 2
 
-<screen><userinput remap="install">make install</userinput></screen>
+# End /etc/syslog.conf
+EOF
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp sysklogd-&sysklogd-version;-&sysklogd-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/sysklogd-&sysklogd-version;-&sysklogd-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Sysklogd package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S sysklogd --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/sysklogd
+cp PKGBUILD /srv/pacman/source/LFS/sysklogd
+cd /sources
+rm -rf sysklogd</userinput></screen>
 
   </sect2>
 
@@ -74,11 +139,10 @@
       <primary sortas="e-/etc/syslog.conf">/etc/syslog.conf</primary>
     </indexterm>
 
-    <para>Create a new <filename>/etc/syslog.conf</filename> file by running the
-    following:</para>
+    <para>The <filename>/etc/syslog.conf</filename> file is the configureation
+    file for sysklogd:</para>
 
-<screen><userinput>cat &gt; /etc/syslog.conf &lt;&lt; "EOF"
-<literal># Begin /etc/syslog.conf
+<screen># Begin /etc/syslog.conf
 
 auth,authpriv.* -/var/log/auth.log
 *.*;auth,authpriv.none -/var/log/sys.log
@@ -91,8 +155,7 @@ user.* -/var/log/user.log
 # Do not open any internet ports.
 secure_mode 2
 
-# End /etc/syslog.conf</literal>
-EOF</userinput></screen>
+# End /etc/syslog.conf</screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/sysvinit.xml lfs-pacman-2025-03-26/chapter08/sysvinit.xml
--- lfs-git-2025-03-26/chapter08/sysvinit.xml	2025-03-25 18:44:40.096539740 -0500
+++ lfs-pacman-2025-03-26/chapter08/sysvinit.xml	2025-03-25 22:21:39.461292163 -0500
@@ -41,46 +41,74 @@
   <sect2 role="installation">
     <title>Installation of SysVinit</title>
 
-<!--
-    <para>When run-levels are changed (for example, when halting the
-    system), <command>init</command> sends termination signals to those
-    processes that <command>init</command> itself started and that should
-    not be running in the new run-level.  While doing this,
-    <command>init</command> outputs messages like <quote>Sending processes
-    the TERM signal</quote> which seem to imply that it is sending these
-    signals to all currently running processes. To avoid this
-    misinterpretation, modify the source so that these messages read like
-    <quote>Sending processes configured via /etc/inittab the TERM signal</quote>
-    instead:</para>
-
-<screen><userinput remap="pre">sed -i 's@Sending processes@&amp; configured via /etc/inittab@g' src/init.c</userinput></screen>
-
-    <para>Maintained versions of the <command>wall</command>,
-    <command>mountpoint</command>, <command>last</command>,
-    <command>mesg</command>, <command>sulogin</command>, and
-    <command>utmpdump</command> programs were installed earlier by Util-linux.
-    Suppress the installation of SysVinit's versions of these programs and
-    their man pages:</para>
-
-<screen><userinput remap="make">sed -ri -e '/utmpdump/d'   \
-        -e '/mountpoint/d' \
-        -e '/mesg/d'       \
-        -e 's/= sulogin(\.8)?/=/' src/Makefile</userinput></screen>
--->
-    <para>First, apply a patch that removes several programs installed by other
-    packages, clarifies a message, and fixes a compiler warning:</para>
-
-<screen><userinput remap="pre">patch -Np1 -i ../&sysvinit-consolidated-patch;</userinput></screen>
-
-    <para>Compile the package:</para>
+    <para>Create the PKGBUILD for the SysVinit package with the following
+    commands:</para>
 
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>This package does not come with a test suite.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/sysvinit
+cd /sources/sysvinit
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="sysvinit"
+pkgver="&sysvinit-version;"
+pkgrel="&sysvinit-release;"
+pkgdesc="The Sysvinit package contains programs for controlling the startup, running, and shutdown of the system."
+arch=('x86'
+      'x86_64')
+url="&sysvinit-home;"
+license=('GPLv2')
+options=('emptydirs')
+groups=('core')
+depends=('glibc'
+         'rootfs')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'sed')
+backup=('etc/inittab')
+source=('&sysvinit-url;'
+        '&patches-root;&sysvinit-consolidated-patch;')
+md5sums=('&sysvinit-md5;'
+         '&sysvinit-consolidated-patch-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+  # Apply a patch that removes several programs installed by other packages,
+  # clarifies a message, and fixes a compiler warning
+  patch -Np1 -i "${srcdir}/&sysvinit-consolidated-patch;"
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  make
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make ROOT="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp sysvinit-&sysvinit-version;-&sysvinit-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/sysvinit-&sysvinit-version;-&sysvinit-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the SysVinit package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S sysvinit --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/sysvinit
+cp PKGBUILD /srv/pacman/source/LFS/sysvinit
+cd /sources
+rm -rf sysvinit</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/tar.xml lfs-pacman-2025-03-26/chapter08/tar.xml
--- lfs-git-2025-03-26/chapter08/tar.xml	2025-03-25 18:44:40.096547100 -0500
+++ lfs-pacman-2025-03-26/chapter08/tar.xml	2025-03-25 22:21:39.461505682 -0500
@@ -43,44 +43,92 @@
   <sect2 role="installation">
     <title>Installation of Tar</title>
 
-    <para>Prepare Tar for compilation:</para>
+    <para>Create the PKGBUILD for the Tar package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">FORCE_UNSAFE_CONFIGURE=1  \
-./configure --prefix=/usr</userinput></screen>
-
-    <variablelist>
-      <title>The meaning of the configure option:</title>
-
-      <varlistentry>
-        <term><envar>FORCE_UNSAFE_CONFIGURE=1</envar></term>
-        <listitem>
-          <para>This forces the test for <function>mknod</function> to be run
-          as <systemitem class="username">root</systemitem>.
-          It is generally considered dangerous to run this test as
-          the <systemitem class="username">root</systemitem> user, but as it
-          is being run on a system that has only been
-          partially built, overriding it is OK.</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>One test, capabilities: binary store/restore, is known to fail if it is
-    run because LFS lacks selinux, but will be skipped if the host kernel does
-    not support extended attributes or security labels on the filesystem
-    used for building LFS.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install
-make -C doc install-html docdir=/usr/share/doc/tar-&tar-version;</userinput></screen>
+<screen><userinput>mkdir /sources/tar
+cd /sources/tar
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="tar"
+pkgver="&tar-version;"
+pkgrel="&tar-release;"
+pkgdesc="The Tar package provides the ability to create and extract tar archives."
+arch=('x86'
+      'x86_64')
+url="&tar-home;"
+license=('GPLv3')
+groups=('core')
+depends=('acl'
+         'attr'
+         'bzip2'
+         'glibc'
+         'gzip'
+         'xz'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'bison'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'inetutils'
+             'make'
+             'sed'
+             'texinfo')
+checkdepends=('autoconf'
+              'diffutils'
+              'findutils'
+              'gawk'
+              'gzip')
+source=('&tar-url;')
+md5sums=('&tar-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  # Since building as the pacman user, no need for the workaround in LFS
+  # proper for "FORCE_UNSAFE_CONFIGURE=1":
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  # One test, capabilities: binary store/restore, is known to fail if it is run
+  # because LFS lacks selinux, but will be skipped if the host kernel does not
+  # support extended attributes or security labels on the filesystem used for
+  # building LFS.
+  make -k check || true
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" -C doc install-html docdir="/usr/share/doc/tar-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp tar-&tar-version;-&tar-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/tar-&tar-version;-&tar-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Tar package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S tar --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/tar
+cp PKGBUILD /srv/pacman/source/LFS/tar
+cd /sources
+rm -rf tar</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/tcl.xml lfs-pacman-2025-03-26/chapter08/tcl.xml
--- lfs-git-2025-03-26/chapter08/tcl.xml	2025-03-25 18:44:40.096553570 -0500
+++ lfs-pacman-2025-03-26/chapter08/tcl.xml	2025-03-25 22:21:39.461723581 -0500
@@ -50,13 +50,98 @@
     excessive, but it is very reassuring, if not essential, to know that the
     most important tools are working properly.</para>
 
-    <para>Prepare Tcl for compilation:</para>
 
-<screen><userinput remap="configure">SRCDIR=$(pwd)
-cd unix
-./configure --prefix=/usr           \
-            --mandir=/usr/share/man \
-            --disable-rpath</userinput></screen>
+    <para>Create the PKGBUILD for the Tcl package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/tcl
+cd /sources/tcl
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="tcl"
+pkgver="&tcl-version;"
+pkgrel="&tcl-release;"
+pkgdesc="The Tcl package contains the Tool Command Language, a robust general-purpose scripting language."
+arch=('x86'
+      'x86_64')
+url="&tcl-home;"
+license=('UC-Regents3C')
+groups=('core')
+options=('staticlibs')
+depends=('glibc'
+         'zlib')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'grep'
+             'make'
+             'sed')
+source=('&tcl-url;'
+        '&tcl-docs-url;')
+md5sums=('&tcl-md5;'
+         '&tcl-docs-md5;')
+    
+noextract=("${pkgname}${pkgver}-html.tar.gz")
+
+_tdbc="&tdbc-ver;"
+_itcl="&itcl-ver;"
+_ver="&tcl-minor-version;"
+
+build() {
+  cd "${srcdir}/tcl${pkgver}"
+  SRCDIR=$(pwd)
+  cd unix
+  ./configure --prefix=/usr           \
+              --mandir=/usr/share/man \
+              --disable-rpath
+
+  make
+
+  sed -e "s|${SRCDIR}/unix|/usr/lib|" \
+      -e "s|${SRCDIR}|/usr/include|"  \
+      -i tclConfig.sh
+
+  sed -e "s|${SRCDIR}/unix/pkgs/tdbc${_tdbc}|/usr/lib/tdbc${_tdbc}|" \
+      -e "s|${SRCDIR}/pkgs/tdbc${_tdbc}/generic|/usr/include|"       \
+      -e "s|${SRCDIR}/pkgs/tdbc${_tdbc}/library|/usr/lib/tcl8.6|"    \
+      -e "s|${SRCDIR}/pkgs/tdbc${_tdbc}|/usr/include|"               \
+      -i "pkgs/tdbc${_tdbc}/tdbcConfig.sh"
+
+  sed -e "s|${SRCDIR}/unix/pkgs/itcl${_itcl}|/usr/lib/itcl${_itcl}|" \
+      -e "s|${SRCDIR}/pkgs/itcl${_itcl}/generic|/usr/include|"       \
+      -e "s|${SRCDIR}/pkgs/itcl${_itcl}|/usr/include|"               \
+      -i "pkgs/itcl${_itcl}/itclConfig.sh"
+}
+
+check() {
+  cd "${srcdir}/tcl${pkgver}/unix"
+  make test
+}
+
+package() {
+  cd "${srcdir}/tcl${pkgver}/unix"
+  make DESTDIR="${pkgdir}" install
+
+  # Make the installed library writable so that it can be stirpped
+  chmod -v u+w "${pkgdir}/usr/lib/libtcl${_ver}.so"
+
+  # Install the headers
+  make DESTDIR="${pkgdir}" install-private-headers
+
+  # Create the normal tclsh link
+  ln -sfv "tclsh${_ver}" "${pkgdir}/usr/bin/tclsh"
+
+  # Rename a man page that conflicts with a Perl man page
+  mv -v "${pkgdir}"/usr/share/man/man3/{,Tcl_}Thread.3
+
+  # Install the documentation
+  tar -xf "${srcdir}/${pkgname}${pkgver}-html.tar.gz" --strip-components=1
+  mkdir -pv "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+  cp -rv    ./html/* "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the new configure parameters:</title>
@@ -73,65 +158,31 @@ cd unix
       </varlistentry>
     </variablelist>
 
-    <para>Build the package:</para>
-
-<screen><userinput remap="make">make
-
-sed -e "s|$SRCDIR/unix|/usr/lib|" \
-    -e "s|$SRCDIR|/usr/include|"  \
-    -i tclConfig.sh
-
-sed -e "s|$SRCDIR/unix/pkgs/tdbc&tdbc-ver;|/usr/lib/tdbc&tdbc-ver;|" \
-    -e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;/generic|/usr/include|"    \
-    -e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;/library|/usr/lib/tcl8.6|" \
-    -e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;|/usr/include|"            \
-    -i pkgs/tdbc&tdbc-ver;/tdbcConfig.sh
-
-sed -e "s|$SRCDIR/unix/pkgs/itcl&itcl-ver;|/usr/lib/itcl&itcl-ver;|" \
-    -e "s|$SRCDIR/pkgs/itcl&itcl-ver;/generic|/usr/include|"    \
-    -e "s|$SRCDIR/pkgs/itcl&itcl-ver;|/usr/include|"            \
-    -i pkgs/itcl&itcl-ver;/itclConfig.sh
-
-unset SRCDIR</userinput></screen>
-
     <para>The various <quote>sed</quote> instructions after the
     <quote>make</quote> command remove references to the build directory from
     the configuration files and replace them with the install directory.
     This is not mandatory for the remainder of LFS, but may be needed if a
     package built later uses Tcl.</para>
 
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make test</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>Make the installed library writable so debugging symbols can
-    be removed later:</para>
-
-<screen><userinput remap="install">chmod -v u+w /usr/lib/libtcl&tcl-major-version;.so</userinput></screen>
-
-    <para>Install Tcl's headers. The next package, Expect, requires them.</para>
-
-<screen><userinput remap="install">make install-private-headers</userinput></screen>
-
-    <para>Now make a necessary symbolic link:</para>
+    &pacman-build-add;
 
-<screen><userinput remap="install">ln -sfv tclsh&tcl-major-version; /usr/bin/tclsh</userinput></screen>
+<screen><userinput>cp tcl-&tcl-version;-&tcl-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/tcl-&tcl-version;-&tcl-release;-$(uname -m).pkg.tar.xz</userinput></screen>
 
-    <para>Rename a man page that conflicts with a Perl man page:</para>
+    <para>Update the local cache and install the Tcl package:</para>
 
-    <screen><userinput remap="install">mv /usr/share/man/man3/{Thread,Tcl_Thread}.3</userinput></screen>
+<screen><userinput>pacman -Syu
+pacman -S tcl --overwrite \* -dd --noconfirm</userinput></screen>
 
-    <para>Optionally, install the documentation by issuing
-    the following commands:</para>
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
 
-<screen><userinput remap="install">cd ..
-tar -xf ../tcl&tcl-version;-html.tar.gz --strip-components=1
-mkdir -v -p /usr/share/doc/tcl-&tcl-version;
-cp -v -r  ./html/* /usr/share/doc/tcl-&tcl-version;</userinput></screen>
+<screen><userinput>mkdir /srv/pacman/source/LFS/tcl
+cp PKGBUILD /srv/pacman/source/LFS/tcl
+cd /sources
+rm -rf tcl</userinput></screen>
 
   </sect2>
 
@@ -144,12 +195,12 @@ cp -v -r  ./html/* /usr/share/doc/tcl-&t
 
       <seglistitem>
         <seg>
-          tclsh (link to tclsh&tcl-major-version;) and
-          tclsh&tcl-major-version;
+          tclsh (link to tclsh&tcl-minor-version;) and
+          tclsh&tcl-minor-version;
         </seg>
         <seg>
-          libtcl&tcl-major-version;.so and
-          libtclstub&tcl-major-version;.a
+          libtcl&tcl-minor-version;.so and
+          libtclstub&tcl-minor-version;.a
         </seg>
       </seglistitem>
     </segmentedlist>
@@ -159,12 +210,12 @@ cp -v -r  ./html/* /usr/share/doc/tcl-&t
       <?dbfo list-presentation="list"?>
       <?dbhtml list-presentation="table"?>
 
-      <varlistentry id="tclsh&tcl-major-version;">
-        <term><command>tclsh&tcl-major-version;</command></term>
+      <varlistentry id="tclsh&tcl-minor-version;">
+        <term><command>tclsh&tcl-minor-version;</command></term>
         <listitem>
           <para>The Tcl command shell</para>
-          <indexterm zone="ch-system-tcl tclsh&tcl-major-version;">
-            <primary sortas="b-tclsh&tcl-major-version;">tclsh&tcl-major-version;</primary>
+          <indexterm zone="ch-system-tcl tclsh&tcl-minor-version;">
+            <primary sortas="b-tclsh&tcl-minor-version;">tclsh&tcl-minor-version;</primary>
           </indexterm>
         </listitem>
       </varlistentry>
@@ -172,29 +223,29 @@ cp -v -r  ./html/* /usr/share/doc/tcl-&t
       <varlistentry id="tclsh">
         <term><command>tclsh</command></term>
         <listitem>
-          <para>A link to tclsh&tcl-major-version;</para>
+          <para>A link to tclsh&tcl-minor-version;</para>
           <indexterm zone="ch-system-tcl tclsh">
             <primary sortas="b-tclsh">tclsh</primary>
           </indexterm>
         </listitem>
       </varlistentry>
 
-      <varlistentry id="libtcl&tcl-major-version;.so">
-        <term><filename class="libraryfile">libtcl&tcl-major-version;.so</filename></term>
+      <varlistentry id="libtcl&tcl-minor-version;.so">
+        <term><filename class="libraryfile">libtcl&tcl-minor-version;.so</filename></term>
         <listitem>
           <para>The Tcl library</para>
-          <indexterm zone="ch-system-tcl libtcl&tcl-major-version;.so">
-            <primary sortas="c-libtcl&tcl-major-version;.so">libtcl&tcl-major-version;.so</primary>
+          <indexterm zone="ch-system-tcl libtcl&tcl-minor-version;.so">
+            <primary sortas="c-libtcl&tcl-minor-version;.so">libtcl&tcl-minor-version;.so</primary>
           </indexterm>
         </listitem>
       </varlistentry>
 
-      <varlistentry id="libtclstub&tcl-major-version;.a">
-        <term><filename class="libraryfile">libtclstub&tcl-major-version;.a</filename></term>
+      <varlistentry id="libtclstub&tcl-minor-version;.a">
+        <term><filename class="libraryfile">libtclstub&tcl-minor-version;.a</filename></term>
         <listitem>
           <para>The Tcl Stub library</para>
-          <indexterm zone="ch-system-tcl libtclstub&tcl-major-version;.a">
-            <primary sortas="c-libtclstub&tcl-major-version;.a">libtclstub&tcl-major-version;.a</primary>
+          <indexterm zone="ch-system-tcl libtclstub&tcl-minor-version;.a">
+            <primary sortas="c-libtclstub&tcl-minor-version;.a">libtclstub&tcl-minor-version;.a</primary>
           </indexterm>
         </listitem>
       </varlistentry>
diff -Naurp lfs-git-2025-03-26/chapter08/texinfo.xml lfs-pacman-2025-03-26/chapter08/texinfo.xml
--- lfs-git-2025-03-26/chapter08/texinfo.xml	2025-03-25 18:44:40.096560620 -0500
+++ lfs-pacman-2025-03-26/chapter08/texinfo.xml	2025-03-25 22:21:39.461357722 -0500
@@ -41,44 +41,55 @@
   <sect2 role="installation">
     <title>Installation of Texinfo</title>
 
-    <para>Prepare Texinfo for compilation:</para>
+    <para>Create the PKGBUILD for the Texinfo package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-<!--
-    <variablelist>
-      <title>The meaning of the configure option:</title>
-
-      <varlistentry>
-        <term><parameter>- -disable-static</parameter></term>
-        <listitem>
-          <para>In this case, the top-level configure script will complain that
-          this is an unrecognized option, but the configure script for
-          XSParagraph recognizes it and uses it to disable installing a static
-          <filename class="libraryfile">XSParagraph.a</filename> to <filename
-          class="directory">/usr/lib/texinfo</filename>.</para>
-        </listitem>
-      </varlistentry>
-
-    </variablelist>
--->
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>Optionally, install the components belonging in a TeX
-    installation:</para>
-    <!-- FIXME: doesn't the TeX installation in BLFS overwrite files there? -->
-
-<screen><userinput remap="install">make TEXMF=/usr/share/texmf install-tex</userinput></screen>
+<screen><userinput>mkdir /sources/texinfo
+cd /sources/texinfo
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="texinfo"
+pkgver="&texinfo-version;"
+pkgrel="&texinfo-release;"
+pkgdesc="The Texinfo package contains programs for reading, writing, and converting info pages."
+arch=('x86'
+      'x86_64')
+url="&texinfo-home;"
+license=('GPLv3')
+groups=('core')
+depends=('glibc'
+         'ncurses'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'patch'
+             'sed')
+source=('&texinfo-url;')
+md5sums=('&texinfo-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" TEXMF=/usr/share/texmf install-tex
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the make parameter:</title>
@@ -94,19 +105,25 @@
 
     </variablelist>
 
-    <para>The Info documentation system uses a plain text file to hold its list of
-    menu entries. The file is located at <filename>/usr/share/info/dir</filename>.
-    Unfortunately, due to occasional problems in the Makefiles of various packages,
-    it can sometimes get out of sync with the info pages installed on the system.
-    If the <filename>/usr/share/info/dir</filename> file ever needs to be
-    recreated, the following optional commands will accomplish the task:</para>
-
-<screen role="nodump"><userinput>pushd /usr/share/info
-  rm -v dir
-  for f in *
-    do install-info $f dir 2&gt;/dev/null
-  done
-popd</userinput></screen>
+    &pacman-build-add;
+
+<screen><userinput>cp texinfo-&texinfo-version;-&texinfo-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/texinfo-&texinfo-version;-&texinfo-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Texinfo package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S texinfo --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/texinfo
+cp PKGBUILD /srv/pacman/source/LFS/texinfo
+cd /sources
+rm -rf texinfo</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/tzdata.xml lfs-pacman-2025-03-26/chapter08/tzdata.xml
--- lfs-git-2025-03-26/chapter08/tzdata.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/chapter08/tzdata.xml	2025-03-25 22:21:39.461430772 -0500
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-tzdata" role="wrap">
+  <?dbhtml filename="tzdata.html"?>
+
+  <sect1info condition="script">
+    <productname>tzdata</productname>
+    <productnumber>&tzdata-version;</productnumber>
+    <address>&tzdata-url;</address>
+  </sect1info>
+
+  <title>TZData-&tzdata-version;</title>
+
+  <indexterm zone="ch-system-tzdata">
+    <primary sortas="a-TZData">TZData</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The TZData package contains code and data that represent the history
+    of local time for many representative locations around the globe."</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>&tzdata-fin-sbu;</seg>
+        <seg>&tzdata-fin-du;</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Installation of TZData</title>
+
+    <para>Create the PKGBUILD for the TZ Data package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/tzdata
+cd /sources/tzdata
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="tzdata"
+_ver="&tzdata-version;"
+pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}}
+pkgrel="&tzdata-release;"
+pkgdesc="The Time Zone Database (often called tz or zoneinfo) contains code and data that represent the history of local time for many representative locations around the globe."
+arch=('x86'
+      'x86_64')
+url="http://www.iana.org/time-zones/"
+license=('PD')
+groups=('core')
+options=('!debug'
+         '!emptydirs'
+         '!strip')
+depends=('bash'
+         'glibc')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'gzip'
+             'make'
+             'sed'
+             'tar')
+source=('&tzdata-url;'
+        '&tzdata-code-url;')
+md5sums=('&tzdata-md5;'
+         '&tzdata-code-md5;')
+
+_timezones=('africa' 'antarctica' 'asia' 'australasia'                                                                             'europe' 'northamerica' 'southamerica'                                                                                  'etcetera' 'backward' 'factory')
+
+build() {
+  make LFLAGS="${LDFLAGS} ${LTOFLAGS}" CC="gcc -std=c99"
+}
+
+package() {
+  cd "${srcdir}"
+  # install tzcode stuff
+  make DESTDIR="${pkgdir}" install
+
+  # install tzdata stuff
+  ./zic -b fat -d "${pkgdir}"/usr/share/zoneinfo ${_timezones[@]}
+  ./zic -b fat -d "${pkgdir}"/usr/share/zoneinfo/posix ${_timezones[@]}
+  ./zic -b fat -d "${pkgdir}"/usr/share/zoneinfo/right -L leapseconds ${_timezones[@]}
+
+  # This creates the posixrules file.
+  # We use New York because POSIX requires the daylight savings time rules
+  # to be in accordance with US rules.
+  ./zic -b fat -d "${pkgdir}"/usr/share/zoneinfo -p America/New_York
+  install -m644 -t "${pkgdir}"/usr/share/zoneinfo \
+                   iso3166.tab leap-seconds.list \
+                   zone1970.tab zone.tab SECURITY
+  # zone.tab is depricated and will go soon
+
+  # cleanup
+  rm "${pkgdir}/etc/localtime"
+}</literal>
+REALEOF</userinput></screen>
+
+    <variablelist>
+      <title>The meaning of the zic commands:</title>
+
+      <varlistentry>
+        <term><parameter>zic -L /dev/null ...</parameter></term>
+        <listitem>
+          <para>This creates posix time zones without any leap seconds.  It is
+          conventional to put these in both
+          <filename class="directory">zoneinfo</filename> and
+          <filename class="directory">zoneinfo/posix</filename>. It is
+          necessary to put the POSIX time zones in
+          <filename class="directory">zoneinfo</filename>, otherwise various
+          test-suites will report errors. On an embedded system, where space is
+          tight and you do not intend to ever update the time zones, you could save
+          1.9 MB by not using the <filename class="directory">posix</filename>
+          directory, but some applications or test-suites might produce some
+          failures.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><parameter>zic -L leapseconds ...</parameter></term>
+        <listitem>
+          <para>This creates right time zones, including leap seconds. On an
+          embedded system, where space is tight and you do not intend to
+          ever update the time zones, or care about the correct time, you could
+          save 1.9MB by omitting the <filename class="directory">right</filename>
+          directory.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><parameter>zic ... -p ...</parameter></term>
+        <listitem>
+          <para>This creates the <filename>posixrules</filename> file. We use
+          New York because POSIX requires the daylight savings time rules
+          to be in accordance with US rules.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+
+    &pacman-build-add;
+
+<screen><userinput>_ver=&tzdata-version;
+pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}}
+cp tzdata-${pkgver}-&tzdata-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/tzdata-${pkgver}-&tzdata-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the tzdata package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S tzdata --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/tzdata
+cp PKGBUILD /srv/pacman/source/LFS/tzdata
+cd /sources
+rm -rf tzdata</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-tzdata" role="content">
+    <title>Contents of TZData</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+      <segtitle>Installed directories</segtitle>
+
+      <seglistitem>
+        <seg></seg>
+	<seg>/usr/share/zoneinfo</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="tzselect">
+        <term><command>tzselect</command></term>
+        <listitem>
+          <para>Asks the user about the location of the system and reports
+          the corresponding time zone description</para>
+          <indexterm zone="ch-system-glibc tzselect">
+            <primary sortas="b-tzselect">tzselect</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="zdump">
+        <term><command>zdump</command></term>
+        <listitem>
+          <para>The time zone dumper</para>
+          <indexterm zone="ch-system-glibc zdump">
+            <primary sortas="b-zdump">zdump</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="zic">
+        <term><command>zic</command></term>
+        <listitem>
+          <para>The time zone compiler</para>
+          <indexterm zone="ch-system-glibc zic">
+            <primary sortas="b-zic">zic</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
+
diff -Naurp lfs-git-2025-03-26/chapter08/udev.xml lfs-pacman-2025-03-26/chapter08/udev.xml
--- lfs-git-2025-03-26/chapter08/udev.xml	2025-03-25 18:44:40.096568760 -0500
+++ lfs-pacman-2025-03-26/chapter08/udev.xml	2025-03-25 22:21:39.461797211 -0500
@@ -43,38 +43,151 @@
     <para>Udev is part of the systemd-&systemd-version; package. Use
     the systemd-&systemd-version;.tar.xz file as the source tarball.</para>
 
-    <para>Remove two unneeded groups,
-    <systemitem class="groupname">render</systemitem> and
-    <systemitem class="groupname">sgx</systemitem>, from the default udev
-    rules:</para>
-
- <screen><userinput remap="pre">sed -e 's/GROUP="render"/GROUP="video"/' \
-    -e 's/GROUP="sgx", //'               \
-    -i rules.d/50-udev-default.rules.in</userinput></screen>
-
-    <para>Remove one udev rule requiring a full Systemd installation:</para>
-
- <screen><userinput remap="pre">sed -i '/systemd-sysctl/s/^/#/' rules.d/99-systemd.rules.in</userinput></screen>
-
-    <para>Adjust the hardcoded paths to network configuration files for the
-    standalone udev installation:</para>
-
- <screen><userinput remap="pre">sed -e '/NETWORK_DIRS/s/systemd/udev/' \
-    -i src/libsystemd/sd-network/network-util.h</userinput></screen>
-
-    <para>Prepare Udev for compilation:</para>
-
-<screen><userinput remap="configure">mkdir -p build
-cd       build
-
-meson setup ..                  \
-      --prefix=/usr             \
-      --buildtype=release       \
-      -D mode=release           \
-      -D dev-kvm-mode=0660      \
-      -D link-udev-shared=false \
-      -D logind=false           \
-      -D vconsole=false</userinput></screen>
+    <para>Create the PKGBUILD for the Udev package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/udev
+cd /sources/udev
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="udev"
+_pkgbase="systemd"
+pkgver="&systemd-version;"
+pkgrel="&systemd-release;"
+pkgdesc="The Udev package contains programs for dynamic creation of device nodes."
+arch=('x86'
+      'x86_64')
+url="&systemd-home;"
+license=('BSD2C'
+         'BSD3C'
+         'CCU-1'
+         'GLPv2'
+         'LGPLv2.1'
+         'MIT'
+         'PD'
+         'OFL')
+install='udev.install'
+groups=('core')
+depends=('acl'
+         'glibc'
+         'libcap'
+         'openssl'
+         'util-linux')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gawk'
+             'gcc'
+             'gperf'
+             'grep'
+             'jinja2'
+             'libxcrypt'
+             'meson'
+             'pkgconf'
+             'sed'
+             'zstd')
+source=('&systemd-url;'
+        '&systemd-man-url;'
+        '&udev-lfs-url;')
+md5sums=('&systemd-md5;'
+         '&systemd-man-md5;'
+         '&udev-lfs-md5;')
+noextract=('systemd-man-pages-&systemd-man-version;.tar.xz'
+           '&udev-lfs-version;.tar.xz')
+prepare(){
+  cd "${_pkgbase}-${pkgver}"
+  # Remove two unneeded groups, render and sgx, from the default udev rules
+  sed -e 's/GROUP="render"/GROUP="video"/' \
+      -e 's/GROUP="sgx", //'               \
+      -i rules.d/50-udev-default.rules.in
+
+  # Remove one udev rule requiring a full Systemd installation
+  sed -i '/systemd-sysctl/s/^/#/' rules.d/99-systemd.rules.in
+
+  # Adjust the hardcoded paths to network configuration files for the
+  # standalone udev installation
+  sed -e '/NETWORK_DIRS/s/systemd/udev/' \
+      -i src/libsystemd/sd-network/network-util.h
+
+  # Build udev in its own directory
+  mkdir -p build
+}
+
+build(){
+  cd "${_pkgbase}-${pkgver}/build"
+  meson setup ..                  \
+        --prefix=/usr             \
+        --buildtype=release       \
+        -D mode=release           \
+        -D dev-kvm-mode=0660      \
+        -D link-udev-shared=false \
+        -D logind=false           \
+        -D vconsole=false
+  # Get the list of the shipped udev helpers and save it into a variable
+  _udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
+                  awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
+
+  # Build the package
+  ninja udevadm systemd-hwdb                                           \
+        $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
+        $(realpath libudev.so --relative-to .)                         \
+        ${_udev_helpers}
+}
+
+package(){
+  cd "${_pkgbase}-${pkgver}/build"
+
+  # Get the list of the shipped udev helpers and save it into a variable
+  _udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
+                  awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
+
+  # Install only what is needed from the systemd package for udev
+  install -vDm755 -d "${pkgdir}"{/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
+  install -vDm755 -d "${pkgdir}"/usr/{lib,share}/pkgconfig
+  install -vDm755 udevadm                             "${pkgdir}/usr/bin/"
+  install -vDm755 systemd-hwdb                        "${pkgdir}/usr/bin/udev-hwdb"
+  install -vdm755 "${pkgdir}"/usr/sbin
+  ln      -svfn   ../bin/udevadm                      "${pkgdir}/usr/sbin/udevd"
+  cp      -av     libudev.so{,*[0-9]}                 "${pkgdir}/usr/lib/"
+  install -vDm644 ../src/libudev/libudev.h            "${pkgdir}/usr/include/"
+  install -vDm644 src/libudev/*.pc                    "${pkgdir}/usr/lib/pkgconfig/"
+  install -vDm644 src/udev/*.pc                       "${pkgdir}/usr/share/pkgconfig/"
+  install -vDm644 ../src/udev/udev.conf               "${pkgdir}/etc/udev/"
+  install -vDm644 rules.d/* ../rules.d/README         "${pkgdir}/usr/lib/udev/rules.d/"
+  install -vDm644 $(find ../rules.d/*.rules \
+                         -not -name '*power-switch*') "${pkgdir}/usr/lib/udev/rules.d/"
+  install -vDm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README} "${pkgdir}/usr/lib/udev/hwdb.d/"
+  install -vDm755 ${_udev_helpers}                    "${pkgdir}/usr/lib/udev"
+  install -vDm644 ../network/99-default.link          "${pkgdir}/usr/lib/udev/network"
+
+  # Install the LFS custom rules and support files
+  tar -xvf "${srcdir}/&udev-lfs-version;.tar.xz"
+  make -f udev-lfs-20230818/Makefile.lfs DESTDIR="${pkgdir}" install
+
+  # Install the man pages
+  tar -xf "${srcdir}/systemd-man-pages-&systemd-man-version;.tar.xz                     \
+      --no-same-owner --strip-components=1                              \
+      -C "${pkgdir}/usr/share/man" --wildcards '*/udev*' '*/libudev*'   \
+                                    '*/systemd.link.5'                  \
+                                    '*/systemd-'{hwdb,udevd.service}.8
+
+  sed 's|systemd/network|udev/network|'                                 \
+      "${pkgdir}/usr/share/man/man5/systemd.link.5"                     \
+    &gt; "${pkgdir}/usr/share/man/man5/udev.link.5"
+
+  sed 's/systemd\(\\\?-\)/udev\1/'                                      \
+      "${pkgdir}/usr/share/man/man8/systemd-hwdb.8"                     \
+    &gt; "${pkgdir}/usr/share/man/man8/udev-hwdb.8"
+
+  sed 's|lib.*udevd|sbin/udevd|'                                        \
+      "${pkgdir}/usr/share/man/man8/systemd-udevd.service.8"            \
+    &gt; "${pkgdir}/usr/share/man/man8/udevd.8"
+
+  rm "${pkgdir}"/usr/share/man/man*/systemd*
+}</literal>
+REALEOF</userinput></screen>
 
     <variablelist>
       <title>The meaning of the meson options:</title>
@@ -126,73 +239,41 @@ meson setup ..                  \
       </varlistentry>
     </variablelist>
 
-    <para>Get the list of the shipped udev helpers and save it into an
-    environment variable (exporting it is not strictly necessary, but it makes
-    building as a regular user or using a package manager easier):</para>
-
-    <screen><userinput remap="make">export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
-                      awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')</userinput></screen>
-
-    <para>Only build the components needed for udev:</para>
-
-    <screen><userinput remap="make">ninja udevadm systemd-hwdb                                           \
-      $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
-      $(realpath libudev.so --relative-to .)                         \
-      $udev_helpers</userinput></screen>
-
-    <para>Install the package:</para>
-
-    <screen><userinput remap="install">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
-install -vm755 -d /usr/{lib,share}/pkgconfig
-install -vm755 udevadm                             /usr/bin/
-install -vm755 systemd-hwdb                        /usr/bin/udev-hwdb
-ln      -svfn  ../bin/udevadm                      /usr/sbin/udevd
-cp      -av    libudev.so{,*[0-9]}                 /usr/lib/
-install -vm644 ../src/libudev/libudev.h            /usr/include/
-install -vm644 src/libudev/*.pc                    /usr/lib/pkgconfig/
-install -vm644 src/udev/*.pc                       /usr/share/pkgconfig/
-install -vm644 ../src/udev/udev.conf               /etc/udev/
-install -vm644 rules.d/* ../rules.d/README         /usr/lib/udev/rules.d/
-install -vm644 $(find ../rules.d/*.rules \
-                      -not -name '*power-switch*') /usr/lib/udev/rules.d/
-install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
-install -vm755 $udev_helpers                       /usr/lib/udev
-install -vm644 ../network/99-default.link          /usr/lib/udev/network</userinput></screen>
-
-    <para>Install some custom rules and support files useful in an LFS
-    environment:</para>
-
-<screen><userinput remap="install">tar -xvf ../../&udev-lfs-version;.tar.xz
-make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
-
-    <para>Install the man pages:</para>
-
-    <!-- Please make sure systemd man pages tarball has a common leading
-         component in the path.  -->
-<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz                            \
-    --no-same-owner --strip-components=1                              \
-    -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
-                                  '*/systemd.link.5'                  \
-                                  '*/systemd-'{hwdb,udevd.service}.8
-
-sed 's|systemd/network|udev/network|'                                 \
-    /usr/share/man/man5/systemd.link.5                                \
-  > /usr/share/man/man5/udev.link.5
-
-sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8   \
-                               > /usr/share/man/man8/udev-hwdb.8
-
-sed 's|lib.*udevd|sbin/udevd|'                                        \
-    /usr/share/man/man8/systemd-udevd.service.8                       \
-  > /usr/share/man/man8/udevd.8
-
-rm /usr/share/man/man*/systemd*</userinput></screen>
-
-    <para>Finally, unset the <envar>udev_helpers</envar> variable:</para>
-
-    <!-- remap="make" seems confusing but we don't have sth. like
-         remap="clean".  -->
-    <screen><userinput remap="install">unset udev_helpers</userinput></screen>
+    <para>Create the <filename>udev.install</filename> file to run the
+    <command>udev-hwdb update</command> on installation or upgrade:</para>
+
+<screen><userinput>cat &gt; udev.install &lt;&lt; "REALEOF"
+<literal># udev.install
+
+post_install(){
+  /usr/bin/udev-hwdb update
+}
+
+post_upgrade(){
+  /usr/bin/udev-hwdb update
+}
+</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp udev-&systemd-version;-&systemd-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/udev-&systemd-version;-&systemd-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Udev package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S udev --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/udev
+cp PKGBUILD /srv/pacman/source/LFS/udev
+cd /sources
+rm -rf udev</userinput></screen>
 
   </sect2>
 
@@ -212,10 +293,11 @@ rm /usr/share/man/man*/systemd*</userinp
     <filename class="directory">/etc/udev/hwdb.d</filename> and
     <filename class="directory">/usr/lib/udev/hwdb.d</filename> directories.
     <application>Udev</application> needs that information to be compiled
-    into a binary database <filename>/etc/udev/hwdb.bin</filename>. Create the
-    initial database:</para>
+    into a binary database <filename>/etc/udev/hwdb.bin</filename>. The
+    installation created the initial database, but shoud it need to be updated
+    for any other change, use the followoing command:</para>
 
-<screen><userinput>udev-hwdb update</userinput></screen>
+<screen><userinput role="nodump">udev-hwdb update</userinput></screen>
 
     <para>This command needs to be run each time the hardware information is
     updated.</para>
diff -Naurp lfs-git-2025-03-26/chapter08/util-linux.xml lfs-pacman-2025-03-26/chapter08/util-linux.xml
--- lfs-git-2025-03-26/chapter08/util-linux.xml	2025-03-25 18:44:40.096577260 -0500
+++ lfs-pacman-2025-03-26/chapter08/util-linux.xml	2025-03-25 22:21:39.461546462 -0500
@@ -42,14 +42,52 @@
   <sect2 role="installation">
     <title>Installation of Util-linux</title>
 
-<!--
-    <para>First, disable a problematic test:</para>
+    <para>Create the PKGBUILD for the Util-linux package with the following
+    commands:</para>
 
-    <screen><userinput remap="pre">sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am</userinput></screen>
--->
-    <para>Prepare Util-linux for compilation:</para>
-
-    <screen revision="sysv"><userinput remap="configure">./configure --bindir=/usr/bin     \
+<screen revision="sysv"><userinput>mkdir /sources/util-linux
+cd /sources/util-linux
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="util-linux"
+pkgver="&util-linux-version;"
+pkgrel="&util-linux-release;"
+pkgdesc="The Util-linux package contains miscellaneous utility programs."
+arch=('x86'
+      'x86_64')
+url="&util-linux-home;"
+license=('GPLv2')
+groups=('core')
+depends=('glibc'
+         'ncurses'
+         'readline'
+         'udev'
+         'zlib'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'file'
+             'findutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'pkgconf'
+             'sed')
+optdepends=('smartmontools')
+source=('&util-linux-url;')
+md5sums=('&util-linux-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  # The --disable and --without options prevent warnings about
+  # building components that either require packages not in LFS, or are
+  # inconsistent with programs installed by other packages.
+  ./configure --bindir=/usr/bin     \
             --libdir=/usr/lib     \
             --runstatedir=/run    \
             --sbindir=/usr/sbin   \
@@ -66,81 +104,131 @@
             --without-systemd     \
             --without-systemdsystemunitdir        \
             ADJTIME_PATH=/var/lib/hwclock/adjtime \
-            --docdir=/usr/share/doc/util-linux-&util-linux-version;</userinput></screen>
-
-      <screen revision="systemd"><userinput remap="configure">./configure --bindir=/usr/bin     \
-            --libdir=/usr/lib     \
-            --runstatedir=/run    \
-            --sbindir=/usr/sbin   \
-            --disable-chfn-chsh   \
-            --disable-login       \
-            --disable-nologin     \
-            --disable-su          \
-            --disable-setpriv     \
-            --disable-runuser     \
-            --disable-pylibmount  \
-            --disable-liblastlog2 \
-            --disable-static      \
-            --without-python      \
-            ADJTIME_PATH=/var/lib/hwclock/adjtime \
-            --docdir=/usr/share/doc/util-linux-&util-linux-version;</userinput></screen>
-
-    <para>The --disable and --without options prevent warnings about
-    building components that either require packages not in LFS, or are
-    inconsistent with programs installed by other packages.</para>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <!-- To editors:
-         Two tests need a /etc/fstab file.  They are skipped if the host
-         distro isn't using systemd as the init system, so don't remove
-         the creation of /etc/fstab unless you've tested it with such a
-         host distro (for example LFS systemd or Debian).  -->
-    <para>If desired, create a dummy <filename>/etc/fstab</filename> file
-    to satisfy two tests and run the test suite as a non-&root;
-    user:</para>
-
-    <warning><para>Running the test suite as the
-    <systemitem class="username">root</systemitem> user can be harmful to
-    your system.  To run it, the CONFIG_SCSI_DEBUG option for the kernel must
-    be available in the currently running system and must be built as a
-    module.  Building it into the kernel will prevent booting.  For complete
-    coverage, other BLFS packages must be installed.  If desired, this test can
-    be run by booting into the completed LFS system and running:</para>
-
-<screen role="nodump"><userinput>bash tests/run.sh --srcdir=$PWD --builddir=$PWD</userinput></screen>
-    </warning>
-
-<screen><userinput remap="test">touch /etc/fstab
-chown -R tester .
-su tester -c "make -k check"</userinput></screen>
-
-    <para> 
-       The <emphasis>hardlink</emphasis> tests will fail if the host's kernel
-       does not have the option <option>CONFIG_CRYPTO_USER_API_HASH</option>
-       enabled or does not have any options providing a SHA256 implementation
-       (for example, <option>CONFIG_CRYPTO_SHA256</option>, or
-       <option>CONFIG_CRYPTO_SHA256_SSSE3</option> if the CPU supports
-       Supplemental SSE3) enabled. In addition, the lsfd: inotify test will
-       fail if the kernel option <option>CONFIG_NETLINK_DIAG</option> is not
-       enabled.
-    </para>
-
-    <para>
-      Two other tests, lsfd: SOURCE column and utmp: last, are known to
-      fail in the chroot environment.
-    </para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-<!--
-  <para>Finally, install the man pages:</para>
+            --docdir=/usr/share/doc/util-linux-&util-linux-version;
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  # The hardlink tests will fail if the host's kernel does not have the option
+  # CONFIG_CRYPTO_USER_API_HASH enabled or does not have any options providing
+  # a SHA256 implementation (for example, CONFIG_CRYPTO_SHA256, or
+  # CONFIG_CRYPTO_SHA256_SSSE3 if the CPU supports Supplemental SSE3) enabled.
+  # In addition, the 'lsfd: inotify' test will fail if the kernel option
+  # CONFIG_NETLINK_DIAG is not enabled.
+  # The 'lsfd: SOURCE column' and 'utmp: last' tests are also known to fail in
+  # the chroot environment.
+  # Finally, the fstab file was put into place by the rootfs package.
+  make -k check || true
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+<screen revision="systemd"><userinput>mkdir /sources/util-linux
+cd /sources/util-linux
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="util-linux"
+pkgver="&util-linux-version;"
+pkgrel="&util-linux-release;"
+pkgdesc="The Util-linux package contains miscellaneous utility programs."
+arch=('x86'
+      'x86_64')
+url="&util-linux-home;"
+license=('GPLv2')
+groups=('core')
+depends=('glibc'
+         'ncurses'
+         'readline'
+         'systemd'
+         'zlib'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'file'
+             'findutils'
+             'gawk'
+             'gcc'
+             'gettext'
+             'grep'
+             'make'
+             'pkgconf'
+             'sed')
+optdepends=('smartmontools')
+source=('&util-linux-url;')
+md5sums=('&util-linux-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  # The --disable and --without options prevent warnings about
+  # building components that either require packages not in LFS, or are
+  # inconsistent with programs installed by other packages.
+  ./configure --bindir=/usr/bin     \
+              --libdir=/usr/lib     \
+              --runstatedir=/run    \
+              --sbindir=/usr/sbin   \
+              --disable-chfn-chsh   \
+              --disable-login       \
+              --disable-nologin     \
+              --disable-su          \
+              --disable-setpriv     \
+              --disable-runuser     \
+              --disable-pylibmount  \
+              --disable-liblastlog2 \
+              --disable-static      \
+              --without-python      \
+              ADJTIME_PATH=/var/lib/hwclock/adjtime \
+              --docdir=/usr/share/doc/util-linux-&util-linux-version;
+  make
+}
+
+check(){
+  cd ${pkgname}-${pkgver}
+  # The hardlink tests will fail if the host's kernel does not have the option
+  # CONFIG_CRYPTO_USER_API_HASH enabled or does not have any options providing
+  # a SHA256 implementation (for example, CONFIG_CRYPTO_SHA256, or
+  # CONFIG_CRYPTO_SHA256_SSSE3 if the CPU supports Supplemental SSE3) enabled.
+  # In addition, the 'lsfd: inotify' test will fail if the kernel option
+  # CONFIG_NETLINK_DIAG is not enabled.
+  # The 'lsfd: SOURCE column' and 'utmp: last' tests are also known to fail in
+  # the chroot environment.
+  # Finally, the fstab file was put into place by the rootfs package.
+  make -k check || true
+}
+
+package(){
+  cd ${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp util-linux-&util-linux-version;-&util-linux-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/util-linux-&util-linux-version;-&util-linux-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Util-linux package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S util-linux --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/util-linux
+cp PKGBUILD /srv/pacman/source/LFS/util-linux
+cd /sources
+rm -rf util-linux</userinput></screen>
 
-<screen><userinput remap="install">tar -xf ../util-linux-man-pages-&util-linux-version;.tar.xz - -directory /usr/share/man - -strip-components=1</userinput></screen>
--->
   </sect2>
 
   <sect2 id="contents-utillinux" role="content">
diff -Naurp lfs-git-2025-03-26/chapter08/vim.xml lfs-pacman-2025-03-26/chapter08/vim.xml
--- lfs-git-2025-03-26/chapter08/vim.xml	2025-03-25 18:44:40.096630630 -0500
+++ lfs-pacman-2025-03-26/chapter08/vim.xml	2025-03-25 22:21:39.461980430 -0500
@@ -49,63 +49,129 @@
   <sect2 role="installation">
     <title>Installation of Vim</title>
 
-    <para>First, change the default location of the <filename>vimrc</filename>
-    configuration file to <filename class="directory">/etc</filename>:</para>
+    <para>Create the PKGBUILD for the Vim package with the following
+    commands:</para>
 
-<screen><userinput remap="pre">echo '#define SYS_VIMRC_FILE "/etc/vimrc"' &gt;&gt; src/feature.h</userinput></screen>
+<screen><userinput>mkdir /sources/vim
+cd /sources/vim
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="vim"
+pkgver="&vim-version;"
+pkgrel="&vim-release;"
+pkgdesc="The Vim package contains a powerful text editor."
+arch=('x86'
+      'x86_64')
+url="&vim-home;"
+license=('VIM')
+groups=('core')
+depends=('acl'
+         'attr'
+         'glibc'
+         'python'
+         'ncurses'
+         'tcl'
+         'rootfs')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'grep'
+             'make'
+             'sed')
+optdepends=('xorg'
+            'gtk+2'
+            'lesstif'
+            'ruby'
+            'gpm')
+backup=('etc/vimrc')
+source=('&vim-url;')
+md5sums=('&vim-md5;')
+
+prepare(){
+  cd "${pkgname}-${pkgver}"
+
+  # Change the default location of the vimrc configuration file to /etc
+  echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
+}
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  # The test suite outputs a lot of binary data to the screen. This can cause
+  # issues with the settings of the current terminal (especially while we are
+  # overriding the TERM variable to satisfy some assumptions of the test suite).
+  # The problem can be avoided by redirecting the output to a log file as shown
+  # below. A successful test will result in the words ALL DONE in the log file
+  # at completion.
+  # The tests are also known to have timing issues if run in parrallel
+  LANG=en_US.UTF-8 make -j1 test &amp;&gt; vim-test.log || true
+  grep "ALL DONE" vim-test.log &gt; /dev/null 2&gt;&amp;1 || false
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+
+  # Create a vi compatibility link and man pages
+  ln -sv vim "${pkgdir}/usr/bin/vi"
+  for L in "${pkgdir}"/usr/share/man/{,*/}man1/vim.1; do
+      ln -sv vim.1 $(dirname $L)/vi.1
+  done
+
+  # By default, vim installs documentation in /usr/share/vim
+  install -vdm755 "${pkgdir}/usr/share/doc"
+  ln -sv ../vim/vim82/doc "${pkgdir}/usr/share/doc/${pkgname}-${pkgver}"
+
+  # Create a default vimrc
+  # Note: this will be updated manually immediately after the build
+  install -vdm755 "${pkgdir}/etc"
+  cat &gt; "${pkgdir}/etc/vimrc" &lt;&lt; "EOF"
+" Begin /etc/vimrc
 
-    <para>Prepare Vim for compilation:</para>
-
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To prepare the tests, ensure that user
-    <systemitem class="username">tester</systemitem> can write
-    to the source tree and exclude one file containing tests requiring
-    <command>curl</command> or <command>wget</command>:</para>
-
-<screen><userinput remap="test">chown -R tester .
-sed '/test_plugin_glvs/d' -i src/testdir/Make_all.mak</userinput></screen>
-
-    <para>Now run the tests as user <systemitem
-    class="username">tester</systemitem>:</para>
-
-<screen><userinput remap="test">su tester -c "TERM=xterm-256color LANG=en_US.UTF-8 make -j1 test" \
-   &amp;> vim-test.log</userinput></screen>
-
-    <para>The test suite outputs a lot of binary data to the screen.  This can
-    cause issues with the settings of the current terminal (especially while
-    we are overriding the <envar>TERM</envar> variable to satisfy some
-    assumptions of the test suite).  The problem can be
-    avoided by redirecting the output to a log file as shown above.  A
-    successful test will result in the words <computeroutput>ALL
-    DONE</computeroutput> in the log file at completion.</para>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>Many users reflexively type <command>vi</command> instead of
-    <command>vim</command>. To allow execution of <command>vim</command>
-    when users habitually enter <command>vi</command>, create a
-    symlink for both the binary and the man page in the provided
-    languages:</para>
-
-<screen><userinput remap="install">ln -sv vim /usr/bin/vi
-for L in  /usr/share/man/{,*/}man1/vim.1; do
-    ln -sv vim.1 $(dirname $L)/vi.1
-done</userinput></screen>
+" Ensure defaults are set before customizing settings, not after
+source $VIMRUNTIME/defaults.vim
+let skip_defaults_vim=1
 
-    <para>By default, Vim's documentation is installed in <filename
-    class="directory">/usr/share/vim</filename>. The following symlink
-    allows the documentation to be accessed via <filename
-    class="directory">/usr/share/doc/vim-&vim-version;</filename>, making
-    it consistent with the location of documentation for other packages:</para>
+set nocompatible
+set backspace=2
+set mouse=
+syntax on
+if (&amp;term == "xterm") || (&amp;term == "putty")
+  set background=dark
+endif
 
-<screen><userinput remap="install">ln -sv ../&vim-docdir;/doc /usr/share/doc/vim-&vim-version;</userinput></screen>
+" End /etc/vimrc
+EOF
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp vim-&vim-version;-&vim-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/vim-&vim-version;-&vim-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Vim package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S vim --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/vim
+cp PKGBUILD /srv/pacman/source/LFS/vim
+cd /sources
+rm -rf vim</userinput></screen>
 
     <para>If an X Window System is going to be installed on the LFS
     system, it may be necessary to recompile Vim after installing X. Vim
@@ -124,32 +190,8 @@ done</userinput></screen>
       <primary sortas="e-/etc/vimrc">/etc/vimrc</primary>
     </indexterm>
 
-    <para>By default, <command>vim</command> runs in vi-incompatible mode.
-    This may be new to users who have used other editors in the past. The
-    <quote>nocompatible</quote> setting is included below to highlight the
-    fact that a new behavior is being used. It also reminds those who would
-    change to <quote>compatible</quote> mode that it should be the first
-    setting in the configuration file. This is necessary because it changes
-    other settings, and overrides must come after this setting. Create a default
-    <command>vim</command> configuration file by running the following:</para>
-
-<screen><userinput>cat &gt; /etc/vimrc &lt;&lt; "EOF"
-<literal>" Begin /etc/vimrc
-
-" Ensure defaults are set before customizing settings, not after
-source $VIMRUNTIME/defaults.vim
-let skip_defaults_vim=1
-
-set nocompatible
-set backspace=2
-set mouse=
-syntax on
-if (&amp;term == "xterm") || (&amp;term == "putty")
-  set background=dark
-endif
-
-" End /etc/vimrc</literal>
-EOF</userinput></screen>
+    <para> The minimal <filename>/etc/vimrc</filename> installed above
+    introduces only a handful of configuration settings:</para>
 
     <para>The <parameter>set nocompatible</parameter> setting makes
     <command>vim</command> behave in a more useful way (the default) than the
diff -Naurp lfs-git-2025-03-26/chapter08/wheel.xml lfs-pacman-2025-03-26/chapter08/wheel.xml
--- lfs-git-2025-03-26/chapter08/wheel.xml	2025-03-25 18:44:40.096638000 -0500
+++ lfs-pacman-2025-03-26/chapter08/wheel.xml	2025-03-25 22:21:39.461586471 -0500
@@ -40,13 +40,57 @@
   <sect2 role="installation">
     <title>Installation of Wheel</title>
 
-    <para>Compile Wheel with the following command:</para>
+    <para>Create the PKGBUILD for the Wheel package with the following
+    commands:</para>
 
-<screen><userinput remap="make">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</userinput></screen>
-
-    <para>Install Wheel with the following command:</para>
-
-<screen><userinput remap="install">pip3 install --no-index --find-links dist wheel</userinput></screen>
+<screen><userinput>mkdir /sources/wheel
+cd /sources/wheel
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="wheel"
+pkgver="&wheel-version;"
+pkgrel="&wheel-release;"
+pkgdesc="The wheel module is the reference implementation of the Python wheel packaging standard."
+arch=('any')
+url="&wheel-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('python')
+makedepends=('flit-core')
+source=('&wheel-url;')
+md5sums=('&wheel-md5;')
+    
+build(){
+  cd "${pkgname}-${pkgver}"
+  pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+}
+package(){
+  cd "${pkgname}-${pkgver}"
+  pip3 install --root "${pkgdir}" --no-index --find-links dist wheel
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp wheel-&wheel-version;-&wheel-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/wheel-&wheel-version;-&wheel-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Wheel package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S wheel --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/wheel
+cp PKGBUILD /srv/pacman/source/LFS/wheel
+cd /sources
+rm -rf wheel</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/xml-parser.xml lfs-pacman-2025-03-26/chapter08/xml-parser.xml
--- lfs-git-2025-03-26/chapter08/xml-parser.xml	2025-03-25 18:44:40.096644230 -0500
+++ lfs-pacman-2025-03-26/chapter08/xml-parser.xml	2025-03-25 22:21:39.460854905 -0500
@@ -41,21 +41,62 @@
   <sect2 role="installation">
     <title>Installation of XML::Parser</title>
 
-    <para>Prepare XML::Parser for compilation:</para>
+    <para>Create the PKGBUILD for the XML::Parser package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">perl Makefile.PL</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make test</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/xml-parser
+cd /sources/xml-parser
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="xml-parser"
+pkgver="&xml-parser-version;"
+pkgrel="&xml-parser-release;"
+pkgdesc="The XML::Parser module is a Perl interface to James Clark's XML parser, Expat."
+arch=('x86'
+      'x86_64')
+url="&xml-parser-home;"
+license=('custom')
+groups=('core')
+source=('&xml-parser-url;')
+md5sums=('&xml-parser-md5;')
+
+build(){
+  cd ${_pkgname}-${pkgver}
+  perl Makefile.PL
+  make
+}
+
+check(){
+  cd ${_pkgname}-${pkgver}
+  make test
+}
+
+package(){
+  cd ${_pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp xml-parser-&xml-parser-version;-&xml-parser-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/xml-parser-&xml-parser-version;-&xml-parser-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the XML::Parser package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S xml-parser --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/xml-parser
+cp PKGBUILD /srv/pacman/source/LFS/xml-parser
+cd /sources
+rm -rf xml-parser</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/xz.xml lfs-pacman-2025-03-26/chapter08/xz.xml
--- lfs-git-2025-03-26/chapter08/xz.xml	2025-03-25 18:44:40.096650639 -0500
+++ lfs-pacman-2025-03-26/chapter08/xz.xml	2025-03-25 22:21:39.461923270 -0500
@@ -43,28 +43,76 @@
 
   <sect2 role="installation">
     <title>Installation of Xz</title>
-<!--
-    <para>Apply a patch to fix an issue in xzgrep:</para>
 
-<screen><userinput remap="pre">patch -Np1 -i ../&xz-upstream-fix-patch;</userinput></screen>
--->
-    <para>Prepare Xz for compilation with:</para>
+    <para>Create the PKGBUILD for the Xz package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/xz-&xz-version;</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/xz
+cd /sources/xz
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="xz"
+pkgver="&xz-version;"
+pkgrel="&xz-release;"
+pkgdesc="The Xz package contains programs for compressing and decompressing files. It provides capabilities for the lzma and the newer xz compression formats."
+arch=('x86'
+      'x86_64')
+url="&xz-home;"
+license=('custom'
+         'GPLv2'
+         'GPLv3'
+         'LGPLv2.1'
+         'PD')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'diffutils'
+             'gcc'
+             'make')
+source=('&xz-url;')
+md5sums=('&xz-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr    \
+              --disable-static \
+              --docdir="/usr/share/doc/${pkgname}-${pkgver}"
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp xz-&xz-version;-&xz-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/xz-&xz-version;-&xz-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the zlib package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S xz --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/xz
+cp PKGBUILD /srv/pacman/source/LFS/xz
+cd /sources
+rm -rf xz</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/zlib.xml lfs-pacman-2025-03-26/chapter08/zlib.xml
--- lfs-git-2025-03-26/chapter08/zlib.xml	2025-03-25 18:44:40.096659049 -0500
+++ lfs-pacman-2025-03-26/chapter08/zlib.xml	2025-03-25 22:21:39.461962950 -0500
@@ -41,25 +41,70 @@
   <sect2 role="installation">
     <title>Installation of Zlib</title>
 
-    <para>Prepare Zlib for compilation:</para>
+    <para>Create the PKGBUILD for the ZLib package with the following
+    commands:</para>
 
-<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
-    <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make install</userinput></screen>
-
-    <para>Remove a useless static library:</para>
-
-<screen><userinput remap="install">rm -fv /usr/lib/libz.a</userinput></screen>
+<screen><userinput>mkdir /sources/zlib
+cd /sources/zlib
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="zlib"
+pkgver="&zlib-version;"
+pkgrel="&zlib-release;"
+pkgdesc="The Zlib package contains compression and decompression routines used by some programs."
+arch=('x86'
+      'x86_64')
+url="&zlib-home;"
+license=('custom'
+         'MIT')
+groups=('core')
+depends=('glibc')
+makedepends=('bash'
+             'binutils'
+             'coreutils'
+             'gcc'
+             'make'
+             'sed')
+source=('&zlib-url;')
+md5sums=('&zlib-md5;')
+
+build(){
+  cd "${pkgname}-${pkgver}"
+  ./configure --prefix=/usr
+  make
+}
+
+check(){
+  cd "${pkgname}-${pkgver}"
+  make check
+}
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp zlib-&zlib-version;-&zlib-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/zlib-&zlib-version;-&zlib-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Zlib package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S zlib --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/zlib
+cp PKGBUILD /srv/pacman/source/LFS/zlib
+cd /sources
+rm -rf zlib</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter08/zstd.xml lfs-pacman-2025-03-26/chapter08/zstd.xml
--- lfs-git-2025-03-26/chapter08/zstd.xml	2025-03-25 18:44:40.096665219 -0500
+++ lfs-pacman-2025-03-26/chapter08/zstd.xml	2025-03-25 22:21:39.461941060 -0500
@@ -42,26 +42,71 @@
   <sect2 role="installation">
     <title>Installation of Zstd</title>
 
-    <para>Compile the package:</para>
+    <para>Create the PKGBUILD for the Zstd package with the following
+    commands:</para>
 
-<screen><userinput remap="make">make prefix=/usr</userinput></screen>
-
-    <note>
-       <para>In the test output there are several places that
-       indicate 'failed'. These are expected and only 'FAIL' is an actual
-       test failure. There should be no test failures.</para>
-    </note>
-
-    <para>To test the results, issue:</para>
-
-<screen><userinput remap="test">make check</userinput></screen>
-
-    <para>Install the package:</para>
-
-<screen><userinput remap="install">make prefix=/usr install</userinput></screen>
-
-    <para>Remove the static library:</para>
-<screen><userinput remap="install">rm -v /usr/lib/libzstd.a</userinput></screen>
+<screen><userinput>mkdir /sources/zstd
+cd /sources/zstd
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="zstd"
+pkgver="&zstd-version;"
+pkgrel="&zstd-release;"
+pkgdesc="Zstandard is a real-time compression algorithm, providing high compression ratios."
+arch=('x86'
+      'x86_64')
+url="&zstd-home;"
+groups=('core')
+license=('GPLv2')
+depends=('glibc')
+makedepends=('binutils'
+             'coreutils'
+             'gcc'
+             'gzip'
+             'lz4'
+             'make'
+             'xz'
+             'zlib')
+source=('&zstd-url;')
+md5sums=('&zstd-md5;')
+
+build(){
+  cd ${srcdir}/${pkgname}-${pkgver}
+  make prefix=/usr
+}
+
+check(){
+  cd ${srcdir}/${pkgname}-${pkgver}
+  make check
+}
+
+package(){
+  cd ${srcdir}/${pkgname}-${pkgver}
+  make prefix=/usr DESTDIR=${pkgdir} install
+  rm -v ${pkgdir}/usr/lib/libzstd.a
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp zstd-&zstd-version;-&zstd-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/zstd-&zstd-version;-&zstd-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the Zstd package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S zstd --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/zstd
+cp PKGBUILD /srv/pacman/source/LFS/zstd
+cd /sources
+rm -rf zstd</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/chapter09/bootscripts.xml lfs-pacman-2025-03-26/chapter09/bootscripts.xml
--- lfs-git-2025-03-26/chapter09/bootscripts.xml	2025-03-25 18:44:40.096685349 -0500
+++ lfs-pacman-2025-03-26/chapter09/bootscripts.xml	2025-03-25 22:21:39.462157929 -0500
@@ -43,9 +43,59 @@
   <sect2 role="installation">
     <title>Installation of LFS-Bootscripts</title>
 
-    <para>Install the package:</para>
+    <para>Create the PKGBUILD for the LFS-Bootscripts package with the following
+    commands:</para>
 
-<screen><userinput remap="install">make install</userinput></screen>
+<screen><userinput>mkdir /sources/lfs-bootscripts
+cd /sources/lfs-bootscripts
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="lfs-bootscripts"
+pkgver="&lfs-bootscripts-version;"
+pkgrel="&lfs-bootscripts-release;"
+pkgdesc="Contains a set of scripts to start/stop the LFS system at bootup/shutdown"
+arch=('any')
+url="&lfs-bootscripts-home;"
+license=('MIT')
+groups=('core')
+depends=('bash'
+         'coreutils'
+         'findutils'
+         'gawk'
+         'grep'
+         'rootfs'
+         'sed'
+         'udev')
+makedepends=('make')
+source=('&lfs-bootscripts-url;')
+md5sums=('&lfs-bootscripts-md5;')
+
+package(){
+  cd "${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp lfs-bootscripts-&lfs-bootscripts-version;-&lfs-bootscripts-release;-any.pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/lfs-bootscripts-&lfs-bootscripts-version;-&lfs-bootscripts-release;-any.pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the LFS-Bootscripts package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S lfs-bootscripts --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/lfs-bootscripts
+cp PKGBUILD /srv/pacman/source/LFS/lfs-bootscripts
+cd /sources
+rm -rf lfs-bootscripts</userinput></screen>
 
   </sect2>
 
diff -Naurp lfs-git-2025-03-26/conditional.ent lfs-pacman-2025-03-26/conditional.ent
--- lfs-git-2025-03-26/conditional.ent	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/conditional.ent	2025-03-25 22:21:39.463095205 -0500
@@ -0,0 +1,2 @@
+<!ENTITY % sysv    "INCLUDE">
+<!ENTITY % systemd "IGNORE ">
diff -Naurp lfs-git-2025-03-26/general.ent lfs-pacman-2025-03-26/general.ent
--- lfs-git-2025-03-26/general.ent	2025-03-25 18:44:40.096977858 -0500
+++ lfs-pacman-2025-03-26/general.ent	2025-03-25 22:21:39.463101325 -0500
@@ -122,6 +122,7 @@
 
 <!ENTITY gnu             "https://ftp.gnu.org/gnu/">
 <!ENTITY gnu-software    "https://www.gnu.org/software/">
+<!ENTITY gnupg-http      "https://www.gnupg.org/ftp/gcrypt">
 <!ENTITY alpha-gnu       "https://alpha.gnu.org/gnu/">
 <!ENTITY kernel          "https://www.kernel.org/pub/">
 <!ENTITY sourceforge     "https://prdownloads.sourceforge.net/">
@@ -148,3 +149,15 @@
 
 <!ENTITY % patches-entities SYSTEM "patches.ent">
 %patches-entities;
+
+<!-- repetitive blurb for building a pacman package -->
+<!ENTITY pacman-build-add "<para>Prepare the build directory for the pacman user
+                          and build the package:</para>
+
+<screen><userinput>chown -R root:pacman .
+chmod 2775 .
+chmod 664 PKGBUILD
+su pacman -c 'makepkg -L --nodeps'</userinput></screen>
+
+<para>Add the newly created package to the central package repository:</para>">
+
diff -Naurp lfs-git-2025-03-26/packages.ent lfs-pacman-2025-03-26/packages.ent
--- lfs-git-2025-03-26/packages.ent	2025-03-25 18:44:40.097099568 -0500
+++ lfs-pacman-2025-03-26/packages.ent	2025-03-25 22:21:39.459671020 -0500
@@ -13,7 +13,17 @@
      *-knl-*     Package info for Kernel stuff
 -->
 
+<!ENTITY asciidoc-version "10.2.1">
+<!ENTITY asciidoc-release "1">
+<!ENTITY asciidoc-size "228 KB">
+<!ENTITY asciidoc-url "https://files.pythonhosted.org/packages/source/a/asciidoc/asciidoc-&asciidoc-version;.tar.gz">
+<!ENTITY asciidoc-md5 "460824075b51381a4b5f478c60a18165">
+<!ENTITY asciidoc-home "https://github.com/asciidoc/">
+<!ENTITY asciidoc-fin-du "2.6 MB">
+<!ENTITY asciidoc-fin-sbu "less than 0.1 SBU">
+
 <!ENTITY acl-version "2.3.2">
+<!ENTITY acl-release "1">
 <!ENTITY acl-size "363 KB">
 <!ENTITY acl-url "&savannah;/releases/acl/acl-&acl-version;.tar.xz">
 <!ENTITY acl-md5 "590765dee95907dbc3c856f7255bd669">
@@ -22,6 +32,7 @@
 <!ENTITY acl-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY attr-version "2.5.2">
+<!ENTITY attr-release "1">
 <!ENTITY attr-size "484 KB">
 <!ENTITY attr-url "&savannah;/releases/attr/attr-&attr-version;.tar.gz">
 <!ENTITY attr-md5 "227043ec2f6ca03c0948df5517f9c927">
@@ -30,6 +41,7 @@
 <!ENTITY attr-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY autoconf-version "2.72">
+<!ENTITY autoconf-release "1">
 <!ENTITY autoconf-size "1,360 KB">
 <!ENTITY autoconf-url "&gnu;autoconf/autoconf-&autoconf-version;.tar.xz">
 <!ENTITY autoconf-md5 "1be79f7106ab6767f18391c5e22be701">
@@ -40,6 +52,7 @@
 
 <!ENTITY automake-version "1.17">
 <!ENTITY am-minor-version "1.17">
+<!ENTITY automake-release "1">
 <!ENTITY automake-size "1,614 KB">
 <!ENTITY automake-url "&gnu;automake/automake-&automake-version;.tar.xz">
 <!ENTITY automake-md5 "7ab3a02318fee6f5bd42adfc369abf10">
@@ -48,6 +61,7 @@
 <!ENTITY automake-fin-sbu "less than 0.1 SBU (about 1.1 SBU with tests)">
 
 <!ENTITY bash-version "5.2.37">
+<!ENTITY bash-release "1">
 <!ENTITY bash-size "10,868 KB">
 <!ENTITY bash-url "&gnu;bash/bash-&bash-version;.tar.gz">
 <!ENTITY bash-md5 "9c28f21ff65de72ca329c1779684a972">
@@ -58,6 +72,7 @@
 <!ENTITY bash-fin-sbu "1.4 SBU">
 
 <!ENTITY bc-version "7.0.3">
+<!ENTITY bc-release "1">
 <!ENTITY bc-size "464 KB">
 <!ENTITY bc-url "https://github.com/gavinhoward/bc/releases/download/&bc-version;/bc-&bc-version;.tar.xz">
 <!ENTITY bc-md5 "ad4db5a0eb4fdbb3f6813be4b6b3da74">
@@ -66,6 +81,7 @@
 <!ENTITY bc-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY binutils-version "2.44">
+<!ENTITY binutils-release "1">
 <!ENTITY binutils-size "26,647 KB">
 <!ENTITY binutils-url "https://sourceware.org/pub/binutils/releases/binutils-&binutils-version;.tar.xz">
 <!ENTITY binutils-md5 "49912ce774666a30806141f106124294">
@@ -79,6 +95,7 @@
 <!ENTITY libsframe-version "1.0.0">
 
 <!ENTITY bison-version "3.8.2">
+<!ENTITY bison-release "1">
 <!ENTITY bison-size "2,752 KB">
 <!ENTITY bison-url "&gnu;bison/bison-&bison-version;.tar.xz">
 <!ENTITY bison-md5 "c28f119f405a2304ff0a7ccdcc629713">
@@ -89,6 +106,7 @@
 <!ENTITY bison-fin-sbu "2.1 SBU">
 
 <!ENTITY bzip2-version "1.0.8">
+<!ENTITY bzip2-release "2">
 <!ENTITY bzip2-size "792 KB">
 <!ENTITY bzip2-url "https://www.sourceware.org/pub/bzip2/bzip2-&bzip2-version;.tar.gz">
 <!ENTITY bzip2-md5 "67e051268d0c475ea773822f7500d0e5">
@@ -97,6 +115,7 @@
 <!ENTITY bzip2-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY check-version "0.15.2">
+<!ENTITY check-release "1">
 <!ENTITY check-size "760 KB">
 <!ENTITY check-url "&github;/libcheck/check/releases/download/&check-version;/check-&check-version;.tar.gz">
 <!ENTITY check-md5 "50fcafcecde5a380415b12e9c574e0b2">
@@ -105,6 +124,7 @@
 <!ENTITY check-fin-sbu "0.1 SBU (about 2.1 SBU with tests)">
 
 <!ENTITY coreutils-version "9.6">
+<!ENTITY coreutils-release "1">
 <!ENTITY coreutils-size "5,991 KB">
 <!ENTITY coreutils-url "&gnu;coreutils/coreutils-&coreutils-version;.tar.xz">
 <!ENTITY coreutils-md5 "0ed6cc983fe02973bc98803155cc1733">
@@ -114,8 +134,28 @@
 <!ENTITY coreutils-fin-du "182 MB">
 <!ENTITY coreutils-fin-sbu "1.2 SBU">
 
+<!ENTITY cracklib-version "2.10.3">
+<!ENTITY cracklib-size "456 KB">
+<!ENTITY cracklib-url "https://github.com/cracklib/cracklib/releases/download/v&cracklib-version;/cracklib-&cracklib-version;.tar.xz">
+<!ENTITY cracklib-md5 "e8ea2b86de774fc09fdd0f2829680b19">
+<!ENTITY cracklib-home "https://github.com/cracklib/">
+<!ENTITY cracklib-fin-du "5.0 MB">
+<!ENTITY cracklib-fin-sbu "less than 0.1 SBU">
+<!ENTITY cracklib-words-url "https://github.com/cracklib/cracklib/releases/download/v&cracklib-version;/cracklib-words-&cracklib-version;.xz">
+<!ENTITY cracklib-words-md5 "f27804022dbf2682a7f7c353317f9a53">
+<!ENTITY cracklib-words-size "4 MB">
+
+<!ENTITY curl-version "8.12.1">
+<!ENTITY curl-release "1">
+<!ENTITY curl-size "2.6 MB">
+<!ENTITY curl-url "https://curl.haxx.se/download/curl-&curl-version;.tar.xz">
+<!ENTITY curl-md5 "7940975dd510399c4b27831165ab62e0">
+<!ENTITY curl-home "https://curl.haxx.se/">
+<!ENTITY curl-fin-du "53 MB">
+<!ENTITY curl-fin-sbu "0.2 SBU">
+
 <!ENTITY dbus-version "1.16.2">
-<!ENTITY dbus-size "1,090 KB">
+<!ENTITY dbus-size "1,092 KB">
 <!ENTITY dbus-url "https://dbus.freedesktop.org/releases/dbus/dbus-&dbus-version;.tar.xz">
 <!ENTITY dbus-md5 "97832e6f0a260936d28536e5349c22e5">
 <!ENTITY dbus-home "https://www.freedesktop.org/wiki/Software/dbus">
@@ -123,6 +163,7 @@
 <!ENTITY dbus-fin-sbu "0.1 SBU">
 
 <!ENTITY dejagnu-version "1.6.3">
+<!ENTITY dejagnu-release "1">
 <!ENTITY dejagnu-size "608 KB">
 <!ENTITY dejagnu-url "&gnu;dejagnu/dejagnu-&dejagnu-version;.tar.gz">
 <!ENTITY dejagnu-md5 "68c5208c58236eba447d7d6d1326b821">
@@ -131,6 +172,7 @@
 <!ENTITY dejagnu-tmp-sbu "less than 0.1 SBU">
 
 <!ENTITY diffutils-version "3.11">
+<!ENTITY diffutils-release "1">
 <!ENTITY diffutils-size "1,881 KB">
 <!ENTITY diffutils-url "&gnu;diffutils/diffutils-&diffutils-version;.tar.xz">
 <!ENTITY diffutils-md5 "75ab2bb7b5ac0e3e10cece85bd1780c2">
@@ -140,7 +182,30 @@
 <!ENTITY diffutils-fin-du "50 MB">
 <!ENTITY diffutils-fin-sbu "0.4 SBU">
 
+<!ENTITY docbook-xml-version "4.5">
+<!ENTITY docbook-xml-release "1">
+<!ENTITY docbook-xml-size "96 KB">
+<!ENTITY docbook-xml-url "http://www.docbook.org/xml/&docbook-xml-version;/docbook-xml-&docbook-xml-version;.zip">
+<!ENTITY docbook-xml-md5 "03083e288e87a7e829e437358da7ef9e">
+<!ENTITY docbook-xml-home "http://www.docbook.org/">
+<!ENTITY docbook-xml-fin-du "1.2 MB">
+<!ENTITY docbook-xml-fin-sbu "0.1 SBU">
+
+<!ENTITY docbook-xsl-nons-version "1.79.2">
+<!ENTITY docbook-xsl-nons-release "1">
+<!ENTITY docbook-xsl-nons-size "22,528 KB">
+<!ENTITY docbook-xsl-nons-url "https://github.com/docbook/xslt10-stylesheets/releases/download/release/&docbook-xsl-nons-version;/docbook-xsl-nons-&docbook-xsl-nons-version;.tar.bz2">
+<!ENTITY docbook-xsl-nons-md5 "2666d1488d6ced1551d15f31d7ed8c38">
+<!ENTITY docbook-xsl-nons-home "https://github.com/docbook/">
+<!ENTITY docbook-xsl-nons-fin-du "58 MB">
+<!ENTITY docbook-xsl-nons-fin-sbu "0.1 SBU">
+
+<!ENTITY docbook-xsl-nons-doc-url "https://github.com/docbook/xslt10-stylesheets/releases/download/release/&docbook-xsl-nons-version;/docbook-xsl-doc-&docbook-xsl-nons-version;.tar.bz2">
+<!ENTITY docbook-xsl-nons-doc-md5 "62375ca864fc198cb2b17d98209d0b8c">
+<!ENTITY docbook-xsl-nons-doc-size "522 KB">
+
 <!ENTITY e2fsprogs-version "1.47.2">
+<!ENTITY e2fsprogs-release "1">
 <!ENTITY e2fsprogs-size "9,763 KB">
 <!ENTITY e2fsprogs-url "https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v&e2fsprogs-version;/e2fsprogs-&e2fsprogs-version;.tar.gz">
 <!ENTITY e2fsprogs-md5 "752e5a3ce19aea060d8a203f2fae9baa">
@@ -148,7 +213,26 @@
 <!ENTITY e2fsprogs-fin-du "99 MB">
 <!ENTITY e2fsprogs-fin-sbu "2.4 SBU on a spinning disk, 0.5 SBU on an SSD">
 
+<!ENTITY efibootmgr-version "18">
+<!ENTITY efibootmgr-release "1">
+<!ENTITY efibootmgr-size "48 KB">
+<!ENTITY efibootmgr-url "https://github.com/rhboot/efibootmgr/archive/&efibootmgr-version;/efibootmgr-&efibootmgr-version;.tar.gz">
+<!ENTITY efibootmgr-md5 "e170147da25e1d5f72721ffc46fe4e06">
+<!ENTITY efibootmgr-home "https://github.com/rhboot/efibootmgr/">
+<!ENTITY efibootmgr-fin-du "1.1 MB">
+<!ENTITY efibootmgr-fin-sbu "less than 0.1 SBU">
+
+<!ENTITY efivar-version "39">
+<!ENTITY efivar-release "1">
+<!ENTITY efivar-size "456 KB">
+<!ENTITY efivar-url "https://github.com/rhboot/efivar/archive/&efivar-version;/efivar-&efivar-version;.tar.gz">
+<!ENTITY efivar-md5 "a8fc3e79336cd6e738ab44f9bc96a5aa">
+<!ENTITY efivar-home "https://github.com/rhboot/efivar/">
+<!ENTITY efivar-fin-du "21 MB">
+<!ENTITY efivar-fin-sbu "0.1 SBU">
+
 <!ENTITY elfutils-version "0.192"> <!-- libelf -->
+<!ENTITY elfutils-release "1">
 <!ENTITY elfutils-size "11,635 KB">
 <!ENTITY elfutils-url "https://sourceware.org/ftp/elfutils/&elfutils-version;/elfutils-&elfutils-version;.tar.bz2">
 <!ENTITY elfutils-md5 "a6bb1efc147302cfc15b5c2b827f186a">
@@ -157,6 +241,7 @@
 <!ENTITY elfutils-fin-sbu "0.3 SBU">
 
 <!ENTITY expat-version "2.7.0">
+<!ENTITY expat-release "1">
 <!ENTITY expat-size "482 KB">
 <!ENTITY expat-url "&sourceforge;expat/expat-&expat-version;.tar.xz">
 <!ENTITY expat-md5 "974e9de880e731c00112ca069062343a">
@@ -165,6 +250,7 @@
 <!ENTITY expat-fin-sbu "0.1 SBU">
 
 <!ENTITY expect-version "5.45.4">
+<!ENTITY expect-release "2">
 <!ENTITY expect-size "618 KB">
 <!ENTITY expect-url "&sourceforge;expect/expect&expect-version;.tar.gz">
 <!ENTITY expect-md5 "00fce8de158422f5ccd2666512329bd2">
@@ -172,7 +258,17 @@
 <!ENTITY expect-tmp-du "3.9 MB">
 <!ENTITY expect-tmp-sbu "0.2 SBU">
 
+<!ENTITY fakeroot-version "1.37.1">
+<!ENTITY fakeroot-release "1">
+<!ENTITY fakeroot-size "136 KB">
+<!ENTITY fakeroot-url "https://salsa.debian.org/clint/fakeroot/-/archive/upstream/&fakeroot-version;/fakeroot-upstream-&fakeroot-version;.tar.bz2">
+<!ENTITY fakeroot-md5 "9e803523bea331398eb06b795fc55472">
+<!ENTITY fakeroot-home "https://salsa.debian.org/clint/fakeroot/">
+<!ENTITY fakeroot-fin-du "4.5 MB">
+<!ENTITY fakeroot-fin-sbu "0.2 SBU">
+
 <!ENTITY file-version "5.46">
+<!ENTITY file-release "1">
 <!ENTITY file-size "1,283 KB">
 <!ENTITY file-url "https://astron.com/pub/file/file-&file-version;.tar.gz">
 <!ENTITY file-md5 "459da2d4b534801e2e2861611d823864">
@@ -183,6 +279,7 @@
 <!ENTITY file-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY findutils-version "4.10.0">
+<!ENTITY findutils-release "1">
 <!ENTITY findutils-size "2,189 KB">
 <!ENTITY findutils-url "&gnu;findutils/findutils-&findutils-version;.tar.xz">
 <!ENTITY findutils-md5 "870cfd71c07d37ebe56f9f4aaf4ad872">
@@ -193,6 +290,7 @@
 <!ENTITY findutils-fin-sbu "0.7 SBU">
 
 <!ENTITY flex-version "2.6.4">
+<!ENTITY flex-release "1">
 <!ENTITY flex-size "1,386 KB">
 <!ENTITY flex-url "&github;/westes/flex/releases/download/v&flex-version;/flex-&flex-version;.tar.gz">
 <!ENTITY flex-md5 "2882e3179748cc9f9c23ec593d6adc8d">
@@ -201,6 +299,7 @@
 <!ENTITY flex-fin-sbu "0.1 SBU">
 
 <!ENTITY flit-core-version "3.11.0">
+<!ENTITY flit-core-release "1">
 <!ENTITY flit-core-size "51 KB">
 <!ENTITY flit-core-url "&pypi-src;/f/flit-core/flit_core-&flit-core-version;.tar.gz">
 <!ENTITY flit-core-md5 "6d677b1acef1769c4c7156c7508e0dbd">
@@ -209,6 +308,7 @@
 <!ENTITY flit-core-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY gawk-version "5.3.1">
+<!ENTITY gawk-release "1">
 <!ENTITY gawk-size "3,428 KB">
 <!ENTITY gawk-url "&gnu;gawk/gawk-&gawk-version;.tar.xz">
 <!ENTITY gawk-md5 "4e9292a06b43694500e0620851762eec">
@@ -219,6 +319,7 @@
 <!ENTITY gawk-fin-sbu "0.2 SBU">
 
 <!ENTITY gcc-version "14.2.0">
+<!ENTITY gcc-release "1">
 <!ENTITY gcc-size "90,144 KB">
 <!ENTITY gcc-url "&gnu;gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.xz">
 <!ENTITY gcc-md5 "2268420ba02dc01821960e274711bde0">
@@ -238,6 +339,7 @@
 <!ENTITY libstdcpp-tmpp1-sbu "0.2 SBU">
 
 <!ENTITY gdbm-version "1.24">
+<!ENTITY gdbm-release "1">
 <!ENTITY gdbm-size "1,168 KB">
 <!ENTITY gdbm-url "&gnu;gdbm/gdbm-&gdbm-version;.tar.gz">
 <!ENTITY gdbm-md5 "c780815649e52317be48331c1773e987">
@@ -246,6 +348,7 @@
 <!ENTITY gdbm-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY gettext-version "0.24">
+<!ENTITY gettext-release "1">
 <!ENTITY gettext-size "8,120 KB">
 <!ENTITY gettext-url "&gnu;gettext/gettext-&gettext-version;.tar.xz">
 <!ENTITY gettext-md5 "87aea3013802a3c60fa3feb5c7164069">
@@ -256,6 +359,7 @@
 <!ENTITY gettext-fin-sbu "1.7 SBU">
 
 <!ENTITY glibc-version "2.41">
+<!ENTITY glibc-release "1">
 <!ENTITY glibc-size "18,892 KB">
 <!ENTITY glibc-url "&gnu;glibc/glibc-&glibc-version;.tar.xz">
 <!ENTITY glibc-md5 "19862601af60f73ac69e067d3e9267d4">
@@ -266,6 +370,7 @@
 <!ENTITY glibc-fin-sbu "12 SBU">
 
 <!ENTITY gmp-version "6.3.0">
+<!ENTITY gmp-release "1">
 <!ENTITY gmp-size "2,046 KB">
 <!ENTITY gmp-url "&gnu;gmp/gmp-&gmp-version;.tar.xz">
 <!ENTITY gmp-md5 "956dc04e864001a9c22429f761f2c283">
@@ -273,7 +378,17 @@
 <!ENTITY gmp-fin-du "54 MB">
 <!ENTITY gmp-fin-sbu "0.3 SBU">
 
+<!ENTITY gnupg-version "2.4.7">
+<!ENTITY gnupg-release "1">
+<!ENTITY gnupg-size "7.6 MB">
+<!ENTITY gnupg-url "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-&gnupg-version;.tar.bz2">
+<!ENTITY gnupg-md5 "59ec68633deefcd38a5012f39a9d9311">
+<!ENTITY gnupg-home "https://www.gnu.org/gnupg/">
+<!ENTITY gnupg-fin-du "135 MB">
+<!ENTITY gnupg-fin-sbu "0.7 SBU">
+
 <!ENTITY gperf-version "3.1">
+<!ENTITY gperf-release "1">
 <!ENTITY gperf-size "1,188 KB">
 <!ENTITY gperf-url "&gnu;gperf/gperf-&gperf-version;.tar.gz">
 <!ENTITY gperf-md5 "9e251c0a618ad0824b51117d5d9db87e">
@@ -281,7 +396,17 @@
 <!ENTITY gperf-fin-du "6.1 MB">
 <!ENTITY gperf-fin-sbu "less than 0.1 SBU">
 
+<!ENTITY gpgme-version "1.24.2">
+<!ENTITY gpgme-release "1">
+<!ENTITY gpgme-size "1.8 MB">
+<!ENTITY gpgme-url "https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-&gpgme-version;.tar.bz2">
+<!ENTITY gpgme-md5 "2e0cc1df9f3da8c2a7d7c9dc33b7f0bf">
+<!ENTITY gpgme-home "https://www.gnupg.org/gcrypt/gpgme/">
+<!ENTITY gpgme-fin-du "404 MB">
+<!ENTITY gpgme-fin-sbu "1.5 SBU">
+
 <!ENTITY grep-version "3.11">
+<!ENTITY grep-release "1">
 <!ENTITY grep-size "1,664 KB">
 <!ENTITY grep-url "&gnu;grep/grep-&grep-version;.tar.xz">
 <!ENTITY grep-md5 "7c9bbd74492131245f7cdb291fa142c0">
@@ -292,6 +417,7 @@
 <!ENTITY grep-fin-sbu "0.4 SBU">
 
 <!ENTITY groff-version "1.23.0">
+<!ENTITY groff-release "1">
 <!ENTITY groff-size "7,259 KB">
 <!ENTITY groff-url "&gnu;groff/groff-&groff-version;.tar.gz">
 <!ENTITY groff-md5 "5e4f40315a22bb8a158748e7d5094c7d">
@@ -300,14 +426,20 @@
 <!ENTITY groff-fin-sbu "0.2 SBU">
 
 <!ENTITY grub-version "2.12">
+<!ENTITY grub-release "1">
 <!ENTITY grub-size "6,524 KB">
 <!ENTITY grub-url "https://ftp.gnu.org/gnu/grub/grub-&grub-version;.tar.xz">
 <!ENTITY grub-md5 "60c564b1bdc39d8e43b3aab4bc0fb140">
 <!ENTITY grub-home "&gnu-software;grub/">
 <!ENTITY grub-fin-du "166 MB">
 <!ENTITY grub-fin-sbu "0.3 SBU">
+<!ENTITY grub-font-version "16.0.01">
+<!ENTITY grub-font-url "https://unifoundry.com/pub/unifont/unifont-&grub-font-version;/font-builds/unifont-&grub-font-version;.pcf.gz">
+<!ENTITY grub-font-md5 "007ffa7aab47ed3f270caee84d12148b">
+<!ENTITY grub-font-size "1.3 MB">
 
 <!ENTITY gzip-version "1.13">
+<!ENTITY gzip-release "1">
 <!ENTITY gzip-size "819 KB">
 <!ENTITY gzip-url "&gnu;gzip/gzip-&gzip-version;.tar.xz">
 <!ENTITY gzip-md5 "d5c9fc9441288817a4a0be2da0249e29">
@@ -317,15 +449,17 @@
 <!ENTITY gzip-fin-du "21 MB">
 <!ENTITY gzip-fin-sbu "0.3 SBU">
 
-<!ENTITY iana-etc-version "20250304">
-<!ENTITY iana-etc-size "591 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 "e01a3d742ad61738879fd5d461dd5c50">
-<!ENTITY iana-etc-home "https://www.iana.org/protocols">
-<!ENTITY iana-etc-fin-du "4.8 MB">
+<!ENTITY iana-etc-version "4.0">
+<!ENTITY iana-etc-release "3">
+<!ENTITY iana-etc-size "332 KB">
+<!ENTITY iana-etc-url "https://github.com/djlucas/iana-etc/releases/download/v&iana-etc-version;/iana-etc-&iana-etc-version;.tar.xz">
+<!ENTITY iana-etc-md5 "eccda8b61730fb53169491bdae0a77ea">
+<!ENTITY iana-etc-home "https://github.com/djlucas/iana-etc">
+<!ENTITY iana-etc-fin-du "600 KB">
 <!ENTITY iana-etc-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY inetutils-version "2.6">
+<!ENTITY inetutils-release "1">
 <!ENTITY inetutils-size "1,724 KB">
 <!ENTITY inetutils-url "&gnu;inetutils/inetutils-&inetutils-version;.tar.xz">
 <!ENTITY inetutils-md5 "401d7d07682a193960bcdecafd03de94">
@@ -334,6 +468,7 @@
 <!ENTITY inetutils-fin-sbu "0.2 SBU">
 
 <!ENTITY intltool-version "0.51.0">
+<!ENTITY intltool-release "1">
 <!ENTITY intltool-size "159 KB">
 <!ENTITY intltool-url "https://launchpad.net/intltool/trunk/&intltool-version;/+download/intltool-&intltool-version;.tar.gz">
 <!ENTITY intltool-md5 "12e517cac2b57a0121cda351570f1e63">
@@ -342,6 +477,7 @@
 <!ENTITY intltool-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY iproute2-version "6.13.0">
+<!ENTITY iproute2-release "1">
 <!ENTITY iproute2-size "906 KB">
 <!ENTITY iproute2-url "&kernel;linux/utils/net/iproute2/iproute2-&iproute2-version;.tar.xz">
 <!ENTITY iproute2-md5 "1603d25120d03feeaba9b360d03ffaec">
@@ -349,7 +485,17 @@
 <!ENTITY iproute2-fin-du "17 MB">
 <!ENTITY iproute2-fin-sbu "0.1 SBU">
 
+<!ENTITY isl-version "0.27">
+<!ENTITY isl-release "1">
+<!ENTITY isl-size "2.0 MB">
+<!ENTITY isl-url "https://libisl.sourceforge.io/isl-&isl-version;.tar.xz">
+<!ENTITY isl-md5 "11ee9d335b227ea2e8579c4ba6e56138">
+<!ENTITY isl-home "http://isl.gforge.inria.fr/">
+<!ENTITY isl-fin-du "22 MB">
+<!ENTITY isl-fin-sbu "0.1 SBU">
+
 <!ENTITY jinja2-version "3.1.6">
+<!ENTITY jinja2-release "1">
 <!ENTITY jinja2-size "240 KB">
 <!ENTITY jinja2-url "&pypi-src;/J/Jinja2/jinja2-&jinja2-version;.tar.gz">
 <!ENTITY jinja2-md5 "66d4c25ff43d1deaf9637ccda523dec8">
@@ -358,6 +504,7 @@
 <!ENTITY jinja2-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY kbd-version "2.7.1">
+<!ENTITY kbd-release "1">
 <!ENTITY kbd-size "1,438 KB">
 <!ENTITY kbd-url "https://www.kernel.org/pub/linux/utils/kbd/kbd-&kbd-version;.tar.xz">
 <!ENTITY kbd-md5 "f15673d9f748e58f82fa50cff0d0fd20">
@@ -366,6 +513,7 @@
 <!ENTITY kbd-fin-sbu "0.1 SBU">
 
 <!ENTITY kmod-version "34.1">
+<!ENTITY kmod-release "1">
 <!ENTITY kmod-size "331 KB">
 <!ENTITY kmod-url "&kernel;linux/utils/kernel/kmod/kmod-&kmod-version;.tar.xz">
 <!ENTITY kmod-md5 "bdc01ba7d330685af597c16c5f58c0e2">
@@ -374,6 +522,7 @@
 <!ENTITY kmod-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY less-version "668">
+<!ENTITY less-release "1">
 <!ENTITY less-size "635 KB">
 <!ENTITY less-url "https://www.greenwoodsoftware.com/less/less-&less-version;.tar.gz">
 <!ENTITY less-md5 "d72760386c5f80702890340d2f66c302">
@@ -382,6 +531,7 @@
 <!ENTITY less-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY lfs-bootscripts-version "20240825">      <!-- Scripts depend on this format -->
+<!ENTITY lfs-bootscripts-release "1">
 <!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB">
 <!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz">
 <!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM">
@@ -389,7 +539,28 @@
 <!ENTITY lfs-bootscripts-cfg-du "BOOTSCRIPTS-INSTALL-KB KB">
 <!ENTITY lfs-bootscripts-cfg-sbu "less than 0.1 SBU">
 
+<!ENTITY libarchive-version "3.7.8">
+<!ENTITY libarchive-release "1">
+<!ENTITY libarchive-size "5.2 MB">
+<!ENTITY libarchive-url "https://github.com/libarchive/libarchive/releases/download/v&libarchive-version;/libarchive-&libarchive-version;.tar.xz">
+<!ENTITY libarchive-md5 "ac32a73d5b7bf9556f6438b55927970f">
+<!ENTITY libarchive-home "https://github.com/libarchive/">
+<!ENTITY libarchive-fin-du "43 MB">
+<!ENTITY libarchive-fin-sbu "0.4 SBU">
+
+<!ENTITY libassuan-version "3.0.2">
+<!ENTITY libassuan-release "1">
+<!ENTITY libassuan-size "580 KB">
+<!ENTITY libassuan-url "&gnupg-http;/libassuan/libassuan-&libassuan-version;.tar.bz2">
+<!ENTITY libassuan-md5 "c6f1bf4bd2aaa79cd1635dcc070ba51a">
+<!ENTITY libassuan-home "&gnupg-http;">
+<!ENTITY libassuan-tmp-du "6.5 MB">
+<!ENTITY libassuan-tmp-sbu "0.1 SBU">
+<!ENTITY libassuan-fin-du "6.5 MB">
+<!ENTITY libassuan-fin-sbu "0.1 SBU">
+
 <!ENTITY libcap-version "2.75">
+<!ENTITY libcap-release "1">
 <!ENTITY libcap-size "194 KB">
 <!ENTITY libcap-url "&kernel;linux/libs/security/linux-privs/libcap2/libcap-&libcap-version;.tar.xz">
 <!ENTITY libcap-md5 "9406193ddb794dfbf9e71490053085f9">
@@ -398,6 +569,7 @@
 <!ENTITY libcap-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY libffi-version "3.4.7">
+<!ENTITY libffi-release "1">
 <!ENTITY libffi-size "1,362 KB">
 <!ENTITY libffi-url "https://github.com/libffi/libffi/releases/download/v&libffi-version;/libffi-&libffi-version;.tar.gz">
 <!ENTITY libffi-md5 "696a1d483a1174ce8a477575546a5284">
@@ -405,7 +577,54 @@
 <!ENTITY libffi-fin-du "11 MB">
 <!ENTITY libffi-fin-sbu "1.7 SBU">
 
+<!ENTITY libgcrypt-version "1.11.0">
+<!ENTITY libgcrypt-release "1">
+<!ENTITY libgcrypt-size "4.0 MB">
+<!ENTITY libgcrypt-url "https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-&libgcrypt-version;.tar.bz2">
+<!ENTITY libgcrypt-md5 "321c4975cfd6a496f0530b65a673f9a4">
+<!ENTITY libgcrypt-home "https://www.gnupg.org/gcrypt/">
+<!ENTITY libgcrypt-fin-du "146 MB">
+<!ENTITY libgcrypt-fin-sbu "0.6 SBU">
+
+<!ENTITY libgpg-error-version "1.51">
+<!ENTITY libgpg-error-release "1">
+<!ENTITY libgpg-error-size "1.0 MB">
+<!ENTITY libgpg-error-url "&gnupg-http;/libgpg-error/libgpg-error-&libgpg-error-version;.tar.bz2">
+<!ENTITY libgpg-error-md5 "74b73ea044685ce9fd6043a8cc885eac">
+<!ENTITY libgpg-error-home "&gnupg-http;">
+<!ENTITY libgpg-error-tmp-du "11 MB">
+<!ENTITY libgpg-error-tmp-sbu "0.3 SBU">
+<!ENTITY libgpg-error-fin-du "11 MB">
+<!ENTITY libgpg-error-fin-sbu "0.3 SBU">
+
+<!ENTITY libidn2-version "2.3.8">
+<!ENTITY libidn2-release "1">
+<!ENTITY libidn2-size "2.1 MB">
+<!ENTITY libidn2-url "&gnu;libidn/libidn2-&libidn2-version;.tar.gz">
+<!ENTITY libidn2-md5 "a8e113e040d57a523684e141970eea7a">
+<!ENTITY libidn2-home "&gnu-software;libidn2/">
+<!ENTITY libidn2-fin-du "21 MB">
+<!ENTITY libidn2-fin-sbu "0.1 SBU">
+
+<!ENTITY libksba-version "1.6.7">
+<!ENTITY libksba-release "1">
+<!ENTITY libksba-size "692 KB">
+<!ENTITY libksba-url "https://www.gnupg.org/ftp/gcrypt/libksba/libksba-&libksba-version;.tar.bz2">
+<!ENTITY libksba-md5 "7e736de467b67c7ea88de746c31ea12f">
+<!ENTITY libksba-home "https://www.gnupg.org/gcrypt/">
+<!ENTITY libksba-fin-du "9.4 MB">
+<!ENTITY libksba-fin-sbu "0.1 SBU">
+
+<!ENTITY libnsl-version "2.0.0">
+<!ENTITY libnsl-size "280 KB">
+<!ENTITY libnsl-url "https://github.com/thkukuk/libnsl/releases/download/v&libnsl-version;/libnsl-&libnsl-version;.tar.xz">
+<!ENTITY libnsl-md5 "1e8c0615071ea13202452304de1eaab9">
+<!ENTITY libnsl-home "https://github.com/thkukuk/libnsl/">
+<!ENTITY libnsl-fin-du "3,200 KB">
+<!ENTITY libnsl-fin-sbu "less than 0.1 SBU">
+
 <!ENTITY libpipeline-version "1.5.8">
+<!ENTITY libpipeline-release "1">
 <!ENTITY libpipeline-size "1046 KB">
 <!ENTITY libpipeline-url "&savannah;/releases/libpipeline/libpipeline-&libpipeline-version;.tar.gz">
 <!ENTITY libpipeline-md5 "17ac6969b2015386bcb5d278a08a40b5">
@@ -413,7 +632,42 @@
 <!ENTITY libpipeline-fin-du "11 MB">
 <!ENTITY libpipeline-fin-sbu "0.1 SBU">
 
+<!ENTITY libpsl-version "0.21.5">
+<!ENTITY libpsl-release "1">
+<!ENTITY libpsl-size "7.3 MB">
+<!ENTITY libpsl-url "https://github.com/rockdaboot/libpsl/releases/download/&libpsl-version;/libpsl-&libpsl-version;.tar.gz">
+<!ENTITY libpsl-md5 "870a798ee9860b6e77896548428dba7b">
+<!ENTITY libpsl-home "https://github.com/rockdaboot/libpsl/">
+<!ENTITY libpsl-fin-du "50 MB">
+<!ENTITY libpsl-fin-sbu "0.1 SBU">
+
+<!ENTITY libpwquality-version "1.4.4">
+<!ENTITY libpwquality-size "420 KB">
+<!ENTITY libpwquality-url "https://github.com/libpwquality/libpwquality/releases/download/libpwquality-&libpwquality-version;/libpwquality-&libpwquality-version;.tar.bz2">
+<!ENTITY libpwquality-md5 "1fe43f6641dbf1e1766e2a02cf68a9c3">
+<!ENTITY libpwquality-home "https://github.com/libpwquality/">
+<!ENTITY libpwquality-fin-du "4,100 KB">
+<!ENTITY libpwquality-fin-sbu "less than 0.1 SBU">
+
+<!ENTITY libtasn1-version "4.20.0">
+<!ENTITY libtasn1-release "1">
+<!ENTITY libtasn1-size "1.7 MB">
+<!ENTITY libtasn1-url "https://ftp.gnu.org/gnu/libtasn1/libtasn1-&libtasn1-version;.tar.gz">
+<!ENTITY libtasn1-md5 "930f71d788cf37505a0327c1b84741be">
+<!ENTITY libtasn1-home "https://www.gnu.org/libtasn/">
+<!ENTITY libtasn1-fin-du "16 MB">
+<!ENTITY libtasn1-fin-sbu "0.3 SBU">
+
+<!ENTITY libtirpc-version "1.3.6">
+<!ENTITY libtirpc-size "553 KB">
+<!ENTITY libtirpc-url "https://downloads.sourceforge.net/libtirpc/libtirpc-&libtirpc-version;.tar.bz2">
+<!ENTITY libtirpc-md5 "8de9e6af16c4bc65ba40d0924745f5b7">
+<!ENTITY libtirpc-home "https://downloads.sourceforge.net/libtirpc/">
+<!ENTITY libtirpc-fin-du "7.4 MB">
+<!ENTITY libtirpc-fin-sbu "less than 0.1 SBU">
+
 <!ENTITY libtool-version "2.5.4">
+<!ENTITY libtool-release "1">
 <!ENTITY libtool-size "1,033 KB">
 <!ENTITY libtool-url "&gnu;libtool/libtool-&libtool-version;.tar.xz">
 <!ENTITY libtool-md5 "22e0a29df8af5fdde276ea3a7d351d30">
@@ -421,7 +675,26 @@
 <!ENTITY libtool-fin-du "44 MB">
 <!ENTITY libtool-fin-sbu "0.6 SBU">
 
+<!ENTITY libunistring-version "1.3">
+<!ENTITY libunistring-release "1">
+<!ENTITY libunistring-size "2.6 MB">
+<!ENTITY libunistring-url "&gnu;libunistring/libunistring-&libunistring-version;.tar.xz">
+<!ENTITY libunistring-md5 "57dfd9e4eba93913a564aa14eab8052e">
+<!ENTITY libunistring-home "&gnu-software;libunistring/">
+<!ENTITY libunistring-fin-du "58 MB">
+<!ENTITY libunistring-fin-sbu "0.6 SBU">
+
+<!ENTITY libusb-version "1.0.28">
+<!ENTITY libusb-release "1">
+<!ENTITY libusb-size "644 KB">
+<!ENTITY libusb-url "https://github.com//libusb/libusb/releases/download/v&libusb-version;/libusb-&libusb-version;.tar.bz2">
+<!ENTITY libusb-md5 "4022135a84975b292cf48381fbc8ffd8">
+<!ENTITY libusb-home "https://github.com/libusb">
+<!ENTITY libusb-fin-du "5.7 MB">
+<!ENTITY libusb-fin-sbu "0.1 SBU">
+
 <!ENTITY libxcrypt-version "4.4.38">
+<!ENTITY libxcrypt-release "1">
 <!ENTITY libxcrypt-size "612 KB">
 <!ENTITY libxcrypt-url "&github;/besser82/libxcrypt/releases/download/v&libxcrypt-version;/libxcrypt-&libxcrypt-version;.tar.xz">
 <!ENTITY libxcrypt-md5 "1796a5d20098e9dd9e3f576803c83000">
@@ -429,6 +702,23 @@
 <!ENTITY libxcrypt-fin-du "12 MB">
 <!ENTITY libxcrypt-fin-sbu "0.1 SBU">
 
+<!ENTITY libxml2-version "2.13.6">
+<!ENTITY libxml2-release "1">
+<!ENTITY libxml2-size "2.3 MB">
+<!ENTITY libxml2-url "https://download.gnome.org/sources/libxml2/2.13/libxml2-&libxml2-version;.tar.xz">
+<!ENTITY libxml2-md5 "85dffa2387ff756bdf8b3b247594914a">
+<!ENTITY libxml2-home "http://xmlsof.org/">
+<!ENTITY libxml2-fin-du "113 MB">
+<!ENTITY libxml2-fin-sbu "0.4 SBU">
+
+<!ENTITY libxslt-version "1.1.43">
+<!ENTITY libxslt-size "1.5 MB">
+<!ENTITY libxslt-url "https://download.gnome.org/sources/libxslt/1.1/libxslt-&libxslt-version;.tar.xz">
+<!ENTITY libxslt-md5 "5dc0179c81be7a3082b43030ecfdebd4">
+<!ENTITY libxslt-home "http://xmlsoft.org/">
+<!ENTITY libxslt-fin-du "33 MB">
+<!ENTITY libxslt-fin-sbu "0.2 SBU">
+
 <!ENTITY linux-major-version "6">
 <!ENTITY linux-minor-version "13">
 <!ENTITY linux-patch-version "7">
@@ -452,6 +742,7 @@
 <!ENTITY linux-headers-tmp-sbu "less than 0.1 SBU">
 
 <!ENTITY lz4-version "1.10.0">
+<!ENTITY lz4-release "1">
 <!ENTITY lz4-size "379 KB">
 <!ENTITY lz4-url "&github;/lz4/lz4/releases/download/v&lz4-version;/lz4-&lz4-version;.tar.gz">
 <!ENTITY lz4-md5 "dead9f5f1966d9ae56e1e32761e4e675">
@@ -459,7 +750,29 @@
 <!ENTITY lz4-fin-du "4.2 MB">
 <!ENTITY lz4-fin-sbu "0.1 SBU">
 
+<!ENTITY linux-pam-version "1.5.2">
+<!ENTITY linux-pam-size "966 KB">
+<!ENTITY linux-pam-url "https://github.com/linux-pam/linux-pam/releases/download/v&linux-pam-version;/Linux-PAM-&linux-pam-version;.tar.xz">
+<!ENTITY linux-pam-md5 "895e8adfa14af334f679bbeb28503f66">
+<!ENTITY linux-pam-home "https://github.com/linux-pam/">
+<!ENTITY linux-pam-fin-du "39,000 KB">
+<!ENTITY linux-pam-fin-sbu "0.4 SBU">
+<!ENTITY linux-pam-docs-version "&linux-pam-version;">
+<!ENTITY linux-pam-docs-size "433 KB">
+<!ENTITY linux-pam-docs-url "https://github.com/linux-pam/linux-pam/releases/download/v&linux-pam-version;/Linux-PAM-&linux-pam-version;-docs.tar.xz">
+<!ENTITY linux-pam-docs-md5 "ceb3dc248cb2f49a40904b93cb91db1b">
+
+<!ENTITY lzo-version "2.10">
+<!ENTITY lzo-release "1">
+<!ENTITY lzo-size "588 KB">
+<!ENTITY lzo-url "http://www.oberhumer.com/opensource/lzo/download/lzo-&lzo-version;.tar.gz">
+<!ENTITY lzo-md5 "39d3f3f9c55c87b1e5d6888e1420f4b5">
+<!ENTITY lzo-home "https://www.oberhumer.com/opensource/lzo/">
+<!ENTITY lzo-fin-du "12 MB">
+<!ENTITY lzo-fin-sbu "0.3 SBU">
+
 <!ENTITY m4-version "1.4.19">
+<!ENTITY m4-release "1">
 <!ENTITY m4-size "1,617 KB">
 <!ENTITY m4-url "&gnu;m4/m4-&m4-version;.tar.xz">
 <!ENTITY m4-md5 "0d90823e1426f1da2fd872df0311298d">
@@ -470,6 +783,7 @@
 <!ENTITY m4-fin-sbu "0.3 SBU">
 
 <!ENTITY make-version "4.4.1">
+<!ENTITY make-release "1">
 <!ENTITY make-size "2,300 KB">
 <!ENTITY make-url "&gnu;make/make-&make-version;.tar.gz">
 <!ENTITY make-md5 "c8469a3713cbbe04d955d4ae4be23eeb">
@@ -479,7 +793,17 @@
 <!ENTITY make-fin-du "13 MB">
 <!ENTITY make-fin-sbu "0.7 SBU">
 
+<!ENTITY make-ca-version "1.10">
+<!ENTITY make-ca-release "1">
+<!ENTITY make-ca-size "32 KB">
+<!ENTITY make-ca-url "https://github.com/lfs-book/make-ca/releases/download/v&make-ca-version;/make-ca-&make-ca-version;.tar.xz">
+<!ENTITY make-ca-md5 "74f1ad16d7a086ac76e0424fd4dfe67b">
+<!ENTITY make-ca-home "https://github.com/djlucas/make-ca/">
+<!ENTITY make-ca-fin-du "6.6 MB">
+<!ENTITY make-ca-fin-sbu "0.1 SBU">
+
 <!ENTITY man-db-version "2.13.0">
+<!ENTITY man-db-release "1">
 <!ENTITY man-db-size "2,023 KB">
 <!ENTITY man-db-url "&savannah;/releases/man-db/man-db-&man-db-version;.tar.xz">
 <!ENTITY man-db-md5 "97ab5f9f32914eef2062d867381d8cee">
@@ -488,6 +812,7 @@
 <!ENTITY man-db-fin-sbu "0.3 SBU">
 
 <!ENTITY man-pages-version "6.13">
+<!ENTITY man-pages-release "1">
 <!ENTITY man-pages-size "1,839 KB">
 <!ENTITY man-pages-url "&kernel;linux/docs/man-pages/man-pages-&man-pages-version;.tar.xz">
 <!ENTITY man-pages-md5 "5349329fef307e755933266b26eac873">
@@ -496,6 +821,7 @@
 <!ENTITY man-pages-fin-sbu "0.1 SBU">
 
 <!ENTITY markupsafe-version "3.0.2">
+<!ENTITY markupsafe-release "1">
 <!ENTITY markupsafe-size "21 KB">
 <!ENTITY markupsafe-url "&pypi-src;/M/MarkupSafe/markupsafe-&markupsafe-version;.tar.gz">
 <!ENTITY markupsafe-md5 "cb0071711b573b155cc8f86e1de72167">
@@ -504,6 +830,7 @@
 <!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY meson-version "1.7.0">
+<!ENTITY meson-release "1">
 <!ENTITY meson-size "2,241 KB">
 <!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
 <!ENTITY meson-md5 "c20f3e5ebbb007352d22f4fd6ceb925c">
@@ -512,6 +839,7 @@
 <!ENTITY meson-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY mpc-version "1.3.1">
+<!ENTITY mpc-release "1">
 <!ENTITY mpc-size "756 KB">
 <!ENTITY mpc-url "https://ftp.gnu.org/gnu/mpc/mpc-&mpc-version;.tar.gz">
 <!ENTITY mpc-md5 "5c9bc658c9fd0f940e8e3e0f09530c62">
@@ -520,6 +848,7 @@
 <!ENTITY mpc-fin-sbu "0.1 SBU">
 
 <!ENTITY mpfr-version "4.2.1">
+<!ENTITY mpfr-release "1">
 <!ENTITY mpfr-size "1,459 KB">
 <!ENTITY mpfr-url "https://ftp.gnu.org/gnu/mpfr/mpfr-&mpfr-version;.tar.xz">
 <!ENTITY mpfr-md5 "523c50c6318dde6f9dc523bc0244690a">
@@ -528,6 +857,7 @@
 <!ENTITY mpfr-fin-sbu "0.2 SBU">
 
 <!ENTITY ncurses-version "6.5">
+<!ENTITY ncurses-release "1">
 <!ENTITY ncurses-size "2,156 KB">
 <!ENTITY ncurses-url "https://invisible-mirror.net/archives/ncurses/ncurses-&ncurses-version;.tar.gz">
 <!ENTITY ncurses-md5 "ac2d2629296f04c8537ca706b6977687">
@@ -537,7 +867,17 @@
 <!ENTITY ncurses-fin-du "46 MB">
 <!ENTITY ncurses-fin-sbu "0.2 SBU">
 
+<!ENTITY nettle-version "3.10.1">
+<!ENTITY nettle-release "1">
+<!ENTITY nettle-size "2.5 MB">
+<!ENTITY nettle-url "https://ftp.gnu.org/gnu/nettle/nettle-&nettle-version;.tar.gz">
+<!ENTITY nettle-md5 "c3dc1729cfa65fcabe2023dfbff60beb">
+<!ENTITY nettle-home "https://www.gnu.org/nettle/">
+<!ENTITY nettle-fin-du "100 MB">
+<!ENTITY nettle-fin-sbu "0.2 SBU">
+
 <!ENTITY ninja-version "1.12.1">
+<!ENTITY ninja-release "1">
 <!ENTITY ninja-size "235 KB">
 <!ENTITY ninja-url "&github;/ninja-build/ninja/archive/v&ninja-version;/ninja-&ninja-version;.tar.gz">
 <!ENTITY ninja-md5 "6288992b05e593a391599692e2f7e490">
@@ -545,7 +885,17 @@
 <!ENTITY ninja-fin-du "37 MB">
 <!ENTITY ninja-fin-sbu "0.2 SBU">
 
+<!ENTITY npth-version "1.8">
+<!ENTITY npth-release "1">
+<!ENTITY npth-size "312 KB">
+<!ENTITY npth-url "https://www.gnupg.org/ftp/gcrypt/npth/npth-&npth-version;.tar.bz2">
+<!ENTITY npth-md5 "cb4fc0402be5ba67544e499cb2c1a74d">
+<!ENTITY npth-home "https://www.gnupg.org/gcrypt/">
+<!ENTITY npth-fin-du "2.9 MB">
+<!ENTITY npth-fin-sbu "0.1 SBU">
+
 <!ENTITY openssl-version "3.4.1">
+<!ENTITY openssl-release "1">
 <!ENTITY openssl-size "17,917 KB">
 <!ENTITY openssl-url "&github;/openssl/openssl/releases/download/openssl-&openssl-version;/openssl-&openssl-version;.tar.gz">
 <!ENTITY openssl-md5 "fb7a747ac6793a7ad7118eaba45db379">
@@ -553,7 +903,40 @@
 <!ENTITY openssl-fin-du "920 MB">
 <!ENTITY openssl-fin-sbu "1.8 SBU">
 
+<!ENTITY p11-kit-version "0.25.5">
+<!ENTITY p11-kit-release "1">
+<!ENTITY p11-kit-size "980 KB">
+<!ENTITY p11-kit-url "https://github.com/p11-glue/p11-kit/releases/download/&p11-kit-version;/p11-kit-&p11-kit-version;.tar.xz">
+<!ENTITY p11-kit-md5 "e9c5675508fcd8be54aa4c8cb8e794fc">
+<!ENTITY p11-kit-home "https://github.com/p11-glue/p11-kit/">
+<!ENTITY p11-kit-fin-du "94 MB">
+<!ENTITY p11-kit-fin-sbu "0.7 SBU">
+
+<!ENTITY pacman-version "7.0.0">
+<!ENTITY pacman-release "1">
+<!ENTITY pacman-size "884 KB">
+<!ENTITY pacman-url "https://sources.archlinux.org/other/pacman/pacman-&pacman-version;.tar.xz">
+<!ENTITY pacman-md5 "e17ef35f24ad3b3dd3f8ee963554ba37">
+<!ENTITY pacman-home "https://sources.archlinux.org/">
+<!ENTITY pacman-fin-du "25.9 MB">
+<!ENTITY pacman-fin-sbu "0.1 SBU">
+
+<!ENTITY pacman-contrib-version "1.11.0">
+<!ENTITY pacman-contrib-release "1">
+<!ENTITY pacman-contrib-size "52 KB">
+<!ENTITY pacman-contrib-url "https://gitlab.archlinux.org/pacman/pacman-contrib/-/archive/v&pacman-contrib-version;/pacman-contrib-v&pacman-contrib-version;.tar.bz2">
+<!ENTITY pacman-contrib-md5 "c6215cec282ee72b5a27713350a2c41a">
+<!ENTITY pacman-contrib-home "https://sources.archlinux.org/">
+<!ENTITY pacman-contrib-fin-du "2.3 MB">
+<!ENTITY pacman-contrib-fin-sbu "0.1 SBU">
+
+<!ENTITY pacman-hooks-version "20210910">
+<!ENTITY pacman-hooks-size "3.2 KB">
+<!ENTITY pacman-hooks-url "https://www.linuxfromscratch.org/~dj/pacman-hooks-&pacman-hooks-version;.tar.xz">
+<!ENTITY pacman-hooks-md5 "721fd08ae68cae1a0f0f849436c51145">
+
 <!ENTITY patch-version "2.7.6">
+<!ENTITY patch-release "1">
 <!ENTITY patch-size "766 KB">
 <!ENTITY patch-url "&gnu;patch/patch-&patch-version;.tar.xz">
 <!ENTITY patch-md5 "78ad9937e4caadcba1526ef1853730d5">
@@ -568,6 +951,7 @@
 <!ENTITY perl-version-patch "1">
 <!ENTITY perl-version-min "&perl-version-major;.&perl-version-minor;">
 <!ENTITY perl-version "&perl-version-major;.&perl-version-minor;.&perl-version-patch;">
+<!ENTITY perl-release "1">
 <!ENTITY perl-size "13,605 KB">
 <!ENTITY perl-url "https://www.cpan.org/src/5.0/perl-&perl-version;.tar.xz">
 <!ENTITY perl-md5 "bab3547a5cdf2302ee0396419d74a42e">
@@ -577,7 +961,17 @@
 <!ENTITY perl-fin-du "245 MB">
 <!ENTITY perl-fin-sbu "1.3 SBU">
 
+<!ENTITY pip-version "25.0.1">
+<!ENTITY pip-release "1">
+<!ENTITY pip-size "8.9 MB">
+<!ENTITY pip-url "https://github.com/pypa/pip/archive/&pip-version;/pip-&pip-version;.tar.gz">
+<!ENTITY pip-md5 "5ceb1f1c501c5999e907c5ae853e48bc">
+<!ENTITY pip-home "https://pypi.org/project/pip/">
+<!ENTITY pip-fin-du "1.0 MB">
+<!ENTITY pip-fin-sbu "0.1 SBU">
+
 <!ENTITY pkgconf-version "2.4.3">
+<!ENTITY pkgconf-release "1">
 <!ENTITY pkgconf-size "314 KB">
 <!ENTITY pkgconf-url "https://distfiles.ariadne.space/pkgconf/pkgconf-&pkgconf-version;.tar.xz">
 <!ENTITY pkgconf-md5 "781a513f4ca3d068155482a37986d594">
@@ -585,7 +979,17 @@
 <!ENTITY pkgconf-fin-du "4.7 MB">
 <!ENTITY pkgconf-fin-sbu "less than 0.1 SBU">
 
+<!ENTITY popt-version "1.19">
+<!ENTITY popt-release "1">
+<!ENTITY popt-size "584 KB">
+<!ENTITY popt-url "https://ftp.osuosl.org/pub/rpm/popt/releases/popt-1.x/popt-&popt-version;.tar.gz">
+<!ENTITY popt-md5 "eaa2135fddb6eb03f2c87ee1823e5a78">
+<!ENTITY popt-home "https://github.com/rpm-software-management/popt">
+<!ENTITY popt-fin-du "6.9 MB">
+<!ENTITY popt-fin-sbu "less than 0.1 SBU">
+
 <!ENTITY procps-ng-version "4.0.5">
+<!ENTITY procps-ng-release "1">
 <!ENTITY procps-ng-size "1,483 KB">
 <!ENTITY procps-ng-url "https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-&procps-ng-version;.tar.xz">
 <!ENTITY procps-ng-md5 "90803e64f51f192f3325d25c3335d057">
@@ -594,6 +998,7 @@
 <!ENTITY procps-ng-fin-sbu "0.1 SBU">
 
 <!ENTITY psmisc-version "23.7">
+<!ENTITY psmisc-release "1">
 <!ENTITY psmisc-size "423 KB">
 <!ENTITY psmisc-url "https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-&psmisc-version;.tar.xz">
 <!ENTITY psmisc-md5 "53eae841735189a896d614cba440eb10">
@@ -601,11 +1006,20 @@
 <!ENTITY psmisc-fin-du "6.7 MB">
 <!ENTITY psmisc-fin-sbu "less than 0.1 SBU">
 
+<!ENTITY pth-version "2.0.7">
+<!ENTITY pth-size "652 KB">
+<!ENTITY pth-url "https://ftp.gnu.org/gnu/pth/pth-&pth-version;.tar.gz">
+<!ENTITY pth-md5 "9cb4a25331a4c4db866a31cbe507c793">
+<!ENTITY pth-home "https://www.gnu.org/pth/">
+<!ENTITY pth-fin-du "5 MB">
+<!ENTITY pth-fin-sbu "0.2 SBU">
+
 <!-- If python minor version changes, updates in python and
      meson pages will be needed: python3.6 and python3.6m -->
 
 <!ENTITY python-version "3.13.2">
 <!ENTITY python-minor "3.13">
+<!ENTITY python-release "1">
 <!ENTITY python-size "22,091 KB">
 <!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz">
 <!ENTITY python-md5 "4c2d9202ab4db02c9d0999b14655dfe5">
@@ -619,6 +1033,7 @@
 <!ENTITY python-docs-size "10,102 KB">
 
 <!ENTITY readline-version "8.2.13">
+<!ENTITY readline-release "1">
 <!ENTITY readline-soversion "8.2"><!-- used for stripping -->
 <!ENTITY readline-size "2,974 KB">
 <!ENTITY readline-url "&gnu;readline/readline-&readline-version;.tar.gz">
@@ -627,7 +1042,22 @@
 <!ENTITY readline-fin-du "16 MB">
 <!ENTITY readline-fin-sbu "less than 0.1 SBU">
 
+<!ENTITY rootfs-version "12.3">
+<!ENTITY rootfs-release "1">
+<!ENTITY rootfs-home "https://www.linuxfromscartch.org/">
+<!ENTITY rootfs-fin-du "4.8 MB">
+<!ENTITY rootfs-fin-sbu "less than 0.1 SBU">
+
+<!ENTITY rpcsvc-proto-version "1.4.3">
+<!ENTITY rpcsvc-proto-size "168 KB">
+<!ENTITY rpcsvc-proto-url "https://github.com/thkukuk/rpcsvc-proto/releases/download/v&rpcsvc-proto-version;/rpcsvc-proto-&rpcsvc-proto-version;.tar.xz">
+<!ENTITY rpcsvc-proto-md5 "5cc9a871db85e34ab68a9cecfb448a97">
+<!ENTITY rpcsvc-proto-home "https://github.com/thkukuk/rpcsvc-proto/">
+<!ENTITY rpcsvc-proto-fin-du "2.1 MB">
+<!ENTITY rpcsvc-proto-fin-sbu "less than 0.1 SBU">
+
 <!ENTITY sed-version "4.9">
+<!ENTITY sed-release "1">
 <!ENTITY sed-size "1,365 KB">
 <!ENTITY sed-url "&gnu;sed/sed-&sed-version;.tar.xz">
 <!ENTITY sed-md5 "6aac9b2dbafcd5b7a67a8a9bcb8036c3">
@@ -638,6 +1068,7 @@
 <!ENTITY sed-fin-sbu "0.3 SBU">
 
 <!ENTITY setuptools-version "76.0.0">
+<!ENTITY setuptools-release "1">
 <!ENTITY setuptools-size "1,318 KB">
 <!ENTITY setuptools-url "&pypi-src;/s/setuptools/setuptools-&setuptools-version;.tar.gz">
 <!ENTITY setuptools-md5 "a15701d19326a1d4132fce56f2861a60">
@@ -645,7 +1076,25 @@
 <!ENTITY setuptools-fin-du "26 MB">
 <!ENTITY setuptools-fin-sbu "less than 0.1 SBU">
 
+<!ENTITY setuptools-version "58.1.0">
+<!ENTITY setuptools-size "2,088 KB">
+<!ENTITY setuptools-url "https://files.pythonhosted.org/packages/59/b8/adeb445fa6c636f78c532f0dd6f847f0f90e709afa7d41396181d438be5a/setuptools-58.1.0.tar.gz">
+<!ENTITY setuptools-md5 "06125126e97d8233ba33da88c18832af">
+<!ENTITY setuptools-home "https://pypi.org/project/setuptools/">
+<!ENTITY setuptools-fin-du "1.0 MB">
+<!ENTITY setuptools-fin-sbu "0.1 SBU">
+
+<!ENTITY sgml-common-version "0.6.3">
+<!ENTITY sgml-common-release "1">
+<!ENTITY sgml-common-size "75 KB">
+<!ENTITY sgml-common-url "https://sourceware.org/ftp/docbook-tools/new-trials/SOURCES/sgml-common-&sgml-common-version;.tgz">
+<!ENTITY sgml-common-md5 "103c9828f24820df86e55e7862e28974">
+<!ENTITY sgml-common-home "https:///sourceware.org/">
+<!ENTITY sgml-common-fin-du "1.5 MB">
+<!ENTITY sgml-common-fin-sbu "0.1 SBU">
+
 <!ENTITY shadow-version "4.17.3">
+<!ENTITY shadow-release "1">
 <!ENTITY shadow-size "2,274 KB">
 <!ENTITY shadow-url "&github;/shadow-maint/shadow/releases/download/&shadow-version;/shadow-&shadow-version;.tar.xz">
 <!ENTITY shadow-md5 "0da190e53ecee76237e4c8f3f39531ed">
@@ -653,8 +1102,31 @@
 <!ENTITY shadow-fin-du "114 MB">
 <!ENTITY shadow-fin-sbu "0.1 SBU">
 
+<!ENTITY sqlite-version "3.49.1">
+<!ENTITY sqlite-release "1">
+<!ENTITY sqlite-size "3.1 MB">
+<!ENTITY sqlite-url "https://sqlite.org/2022/sqlite-autoconf-&sqlite-doc-version;.tar.gz">
+<!ENTITY sqlite-md5 "8d77d0779bcd9993eaef33431e2e0c30">
+<!ENTITY sqlite-home "https://sqlite.org/">
+<!ENTITY sqlite-fin-du "123 MB">
+<!ENTITY sqlite-fin-sbu "0.3 SBU">
+
+<!ENTITY sqlite-doc-version "3490100">
+<!ENTITY sqlite-doc-size "11 MB">
+<!ENTITY sqlite-doc-url "https://sqlite.org/2022/sqlite-doc-&sqlite-doc-version;.zip">
+<!ENTITY sqlite-doc-md5 "8d3e207489b544a8687e3faf8db26291">
+
+<!ENTITY sudo-version "1.9.16p2">
+<!ENTITY sudo-size "5.3 MB">
+<!ENTITY sudo-url "https://www.sudo.ws/dist/sudo-&sudo-version;.tar.gz">
+<!ENTITY sudo-md5 "52681ba928fb7aba46998f061d9ba85c">
+<!ENTITY sudo-home "https://www.sudo.ws/">
+<!ENTITY sudo-fin-du "53 MB">
+<!ENTITY sudo-fin-sbu "0.2 SBU">
+
 <!ENTITY sysklogd-version "2.7.1">
-<!ENTITY sysklogd-size "473 KB">
+<!ENTITY sysklogd-release "1">
+<!ENTITY sysklogd-size "472 KB">
 <!ENTITY sysklogd-url "https://github.com/troglobit/sysklogd/releases/download/v&sysklogd-version;/sysklogd-&sysklogd-version;.tar.gz">
 <!ENTITY sysklogd-md5 "f4a1554f73a267218e69e168a8cb2950">
 <!ENTITY sysklogd-home "https://www.infodrom.org/projects/sysklogd/">
@@ -666,6 +1138,7 @@
 <!-- The above entity is used whenever we move to a stable backport branch. 
      In the event of a critical problem or kernel change that is incompatible, 
      we will switch to the backport branch until the next stable release. -->
+<!ENTITY systemd-release "1">
 <!ENTITY systemd-size     "15,847 KB">
 <!ENTITY systemd-url      "&github;/systemd/systemd/archive/v&systemd-version;/systemd-&systemd-version;.tar.gz">
 <!--<!ENTITY systemd-url      "&anduin-sources;/systemd-&systemd-version;-&systemd-stable;.tar.xz">-->
@@ -680,6 +1153,7 @@
 <!ENTITY systemd-fin-sbu  "1.1 SBU">
 
 <!ENTITY sysvinit-version "3.14">
+<!ENTITY sysvinit-release "1">
 <!ENTITY sysvinit-size "236 KB">
 <!ENTITY sysvinit-url "&github;/slicer69/sysvinit/releases/download/&sysvinit-version;/sysvinit-&sysvinit-version;.tar.xz">
 <!ENTITY sysvinit-md5 "bc6890b975d19dc9db42d0c7364dd092">
@@ -688,6 +1162,7 @@
 <!ENTITY sysvinit-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY tar-version "1.35">
+<!ENTITY tar-release "1">
 <!ENTITY tar-size "2,263 KB">
 <!ENTITY tar-url "&gnu;tar/tar-&tar-version;.tar.xz">
 <!ENTITY tar-md5 "a2d8042658cfd8ea939e6d911eaf4152">
@@ -698,7 +1173,8 @@
 <!ENTITY tar-fin-sbu "0.6 SBU">
 
 <!ENTITY tcl-version "8.6.16">
-<!ENTITY tcl-major-version "8.6">
+<!ENTITY tcl-minor-version "8.6">
+<!ENTITY tcl-release "1">
 <!ENTITY tcl-size "11,406 KB">
 <!ENTITY tcl-url "https://downloads.sourceforge.net/tcl/tcl&tcl-version;-src.tar.gz">
 <!ENTITY tcl-md5 "eaef5d0a27239fb840f04af8ec608242">
@@ -710,6 +1186,7 @@
 <!ENTITY tcl-tmp-sbu "3.1 SBU">
 
 <!ENTITY texinfo-version "7.2">
+<!ENTITY texinfo-release "1">
 <!ENTITY texinfo-size "6,259 KB">
 <!ENTITY texinfo-url "&gnu;texinfo/texinfo-&texinfo-version;.tar.xz">
 <!ENTITY texinfo-md5 "11939a7624572814912a18e76c8d8972">
@@ -720,21 +1197,28 @@
 <!ENTITY texinfo-fin-sbu "0.3 SBU">
 
 <!ENTITY tzdata-version "2025a">
-<!ENTITY tzdata-size "453 KB">
+<!ENTITY tzdata-release "1">
+<!ENTITY tzdata-size "460 KB">
 <!ENTITY tzdata-url "https://www.iana.org/time-zones/repository/releases/tzdata&tzdata-version;.tar.gz">
 <!ENTITY tzdata-md5 "404229390c06b7440f5e48d12c1a3251">
+<!ENTITY tzdata-code-url "https://www.iana.org/time-zones/repository/releases/tzcode&tzdata-version;.tar.gz">
+<!ENTITY tzdata-code-md5 "c690058bd8c597041241e9edc870e127">
+<!ENTITY tzdata-code-size "1 MB">
 <!ENTITY tzdata-home "https://www.iana.org/time-zones">
+<!ENTITY tzdata-fin-du "20 MB">
+<!ENTITY tzdata-fin-sbu "0.1 SBU">
 
 <!ENTITY udev-lfs-version "udev-lfs-20230818">
-<!ENTITY udev-lfs-size    "10 KB">
-<!ENTITY udev-lfs-url     "&anduin-sources;/&udev-lfs-version;.tar.xz">
-<!ENTITY udev-lfs-md5     "acd4360d8a5c3ef320b9db88d275dae6">
-<!ENTITY udev-lfs-home    " ">
+<!ENTITY udev-lfs-size "10 KB">
+<!ENTITY udev-lfs-url "&anduin-sources;/&udev-lfs-version;.tar.xz">
+<!ENTITY udev-lfs-md5 "acd4360d8a5c3ef320b9db88d275dae6">
+<!ENTITY udev-lfs-home "https://www.linuxfromscratch.org/">
 <!ENTITY udev-fin-du "161 MB">
 <!ENTITY udev-fin-sbu "0.3 SBU">
 
 <!ENTITY util-linux-minor "2.40">
 <!ENTITY util-linux-version "2.40.4"> <!-- 2.33.x -->
+<!ENTITY util-linux-release "1">
 <!ENTITY util-linux-size "8,641 KB">
 <!ENTITY util-linux-url "&kernel;linux/utils/util-linux/v&util-linux-minor;/util-linux-&util-linux-version;.tar.xz">
 <!ENTITY util-linux-md5 "f9cbb1c8315d8ccbeb0ec36d10350304">
@@ -745,6 +1229,7 @@
 <!ENTITY util-linux-fin-sbu "0.5 SBU">
 
 <!ENTITY vim-version "9.1.1202">
+<!ENTITY vim-release "1">
 <!-- <!ENTITY vim-majmin "90"> -->
 <!ENTITY vim-docdir "vim/vim91">
 <!ENTITY vim-size "18,114 KB">
@@ -767,6 +1252,7 @@
 <!ENTITY vim-fin-sbu "3.4 SBU">
 
 <!ENTITY wheel-version "0.45.1">
+<!ENTITY wheel-release "1">
 <!ENTITY wheel-size "106 KB">
 <!ENTITY wheel-url "&pypi-src;/w/wheel/wheel-&wheel-version;.tar.gz">
 <!ENTITY wheel-md5 "dddc505d0573d03576c7c6c5a4fe0641">
@@ -775,6 +1261,7 @@
 <!ENTITY wheel-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY xml-parser-version "2.47">
+<!ENTITY xml-parser-release "1">
 <!ENTITY xml-parser-size "276 KB">
 <!ENTITY xml-parser-url "https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-&xml-parser-version;.tar.gz">
 <!ENTITY xml-parser-md5 "89a8e82cfd2ad948b349c0a69c494463">
@@ -783,6 +1270,7 @@
 <!ENTITY xml-parser-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY xz-version "5.6.4">
+<!ENTITY xz-release "1">
 <!ENTITY xz-size "1,310 KB">
 <!ENTITY xz-url "https://github.com//tukaani-project/xz/releases/download/v&xz-version;/xz-&xz-version;.tar.xz">
 <!ENTITY xz-md5 "4b1cf07d45ec7eb90a01dd3c00311a3e">
@@ -793,6 +1281,7 @@
 <!ENTITY xz-fin-sbu "0.1 SBU">
 
 <!ENTITY zlib-version "1.3.1">
+<!ENTITY zlib-release "1">
 <!ENTITY zlib-size "1,478 KB">
 <!-- DO NOT remove "fossils"!
      The upstream removes https://zlib.net/zlib-&zlib-version;.tar.xz
@@ -805,6 +1294,7 @@
 <!ENTITY zlib-fin-sbu "less than 0.1 SBU">
 
 <!ENTITY zstd-version "1.5.7">
+<!ENTITY zstd-release "1">
 <!ENTITY zstd-size "2,378 KB">
 <!ENTITY zstd-url "https://github.com/facebook/zstd/releases/download/v&zstd-version;/zstd-&zstd-version;.tar.gz">
 <!ENTITY zstd-md5 "780fc1896922b1bc52a4e90980cdda48">
diff -Naurp lfs-git-2025-03-26/patches.ent lfs-pacman-2025-03-26/patches.ent
--- lfs-git-2025-03-26/patches.ent	2025-03-25 18:44:40.097144307 -0500
+++ lfs-pacman-2025-03-26/patches.ent	2025-03-25 22:21:39.463114025 -0500
@@ -20,6 +20,10 @@
 <!ENTITY coreutils-i18n-patch-md5 "6aee45dd3e05b7658971c321d92f44b7">
 <!ENTITY coreutils-i18n-patch-size "164 KB">
 
+<!ENTITY docbook-xsl-nons-stack-fix-patch "docbook-xsl-nons-&docbook-xsl-nons-version;-stack_fix-1.patch">
+<!ENTITY docbook-xsl-nons-stack-fix-patch-md5 "8457bd6ee6b06fbc6dc540e1b096f766">
+<!ENTITY docbook-xsl-nons-stack-fix-patch-size "164 KB">
+
 <!ENTITY expect-gcc14-patch "expect-&expect-version;-gcc14-1.patch">
 <!ENTITY expect-gcc14-patch-md5 "0b8b5ac411d011263ad40b0664c669f0">
 <!ENTITY expect-gcc14-patch-size "7.8 KB">
@@ -40,6 +44,10 @@
 <!ENTITY readline-fixes-patch-md5 "9ed497b6cb8adcb8dbda9dee9ebce791">
 <!ENTITY readline-fixes-patch-size "13 KB">
 -->
+<!ENTITY sgml-common-manpage-patch "sgml-common-&sgml-common-version;-manpage-1.patch">
+<!ENTITY sgml-common-manpage-patch-md5 "645f3c898abd270a9143036824ae121a">
+<!ENTITY sgml-common-manpage-patch-size "601 B">
+
 <!ENTITY sysvinit-consolidated-patch "sysvinit-&sysvinit-version;-consolidated-1.patch">
 <!ENTITY sysvinit-consolidated-patch-md5 "3af8fd8e13cad481eeeaa48be4247445">
 <!ENTITY sysvinit-consolidated-patch-size "2.5 KB">
diff -Naurp lfs-git-2025-03-26/pbtemplate.xml lfs-pacman-2025-03-26/pbtemplate.xml
--- lfs-git-2025-03-26/pbtemplate.xml	1969-12-31 18:00:00.000000000 -0600
+++ lfs-pacman-2025-03-26/pbtemplate.xml	2025-03-25 22:21:39.462127459 -0500
@@ -0,0 +1,43 @@
+    <para>Create the PKGBUILD for the MyPackage package with the following
+    commands:</para>
+
+<screen><userinput>mkdir /sources/mypackage
+cd /sources/mypackage
+cat &gt; PKGBUILD &lt;&lt; "REALEOF"
+<literal># Maintainer: Linux From Scratch &lt;lfs-dev@lists.linuxfromscratch.org&gt;
+
+pkgname="mypackage"
+pkgver="&mypackage-version;"
+pkgrel="&mypackage-release;"
+pkgdesc=""
+arch=('x86'
+      'x86_64')
+url="&mypackage-home;"
+
+source=('&mypackage-url;')
+md5sums=('&mypackage-md5;')
+ 
+
+}</literal>
+REALEOF</userinput></screen>
+
+    &pacman-build-add;
+
+<screen><userinput>cp mypackage-&mypackage-version;-&mypackage-release;-$(uname -m).pkg.tar.xz \
+   /srv/pacman/repos/LFS/
+repo-add /srv/pacman/repos/LFS/LFS.db.tar.xz \
+         /srv/pacman/repos/LFS/mypackage-&mypackage-version;-&mypackage-release;-$(uname -m).pkg.tar.xz</userinput></screen>
+
+    <para>Update the local cache and install the MyPackage package:</para>
+
+<screen><userinput>pacman -Syu
+pacman -S mypackage --overwrite \* -dd --noconfirm</userinput></screen>
+
+    <para>Finally, copy the source files into the source repository and clean
+    up the build directory:</para>
+
+<screen><userinput>mkdir /srv/pacman/source/LFS/mypackage
+cp PKGBUILD /srv/pacman/source/LFS/mypackage
+cd /sources
+rm -rf mypackage</userinput></screen>
+
diff -Naurp lfs-git-2025-03-26/prologue/bookinfo.xml lfs-pacman-2025-03-26/prologue/bookinfo.xml
--- lfs-git-2025-03-26/prologue/bookinfo.xml	2025-03-25 18:44:40.097182617 -0500
+++ lfs-pacman-2025-03-26/prologue/bookinfo.xml	2025-03-25 22:21:39.462646967 -0500
@@ -6,7 +6,7 @@
 ]>
 
 <bookinfo>
-  <title>Linux From Scratch</title>
+  <title>Linux From Scratch (w/Pacman)</title>
   <subtitle>Version &version;</subtitle>
   <subtitle>Published &releasedate;</subtitle>
 
