commit a6ebba2e958b4f44a92b396024c64ddd17beaafa Author: Tomek Wójcik Date: Sat Oct 3 11:34:14 2026 +0200 ZiomekOS v26.9.26 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4250629 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2026-present Tomek Wójcik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..0e61578 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,31 @@ +Portions of the code in this repository contain work derived from Linux From +Scratch and Beyond Linux From Scratch projects. + +Copyright (c) 1999-2022, Gerard Beekmans + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions in any form must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Neither the name of "Linux From Scratch" nor the names of its + contributors may be used to endorse or promote products derived from + this material without specific prior written permission. + + * Any material derived from Linux From Scratch must contain a + reference to the "Linux From Scratch" project. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS +IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..31d484a --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# ZiomekOS + +![ZiomekOS Logo](resources/ziomekos/ZiomekOS.png "ZiomekOS") + +ZiomekOS is a custom operating system built on top of Linux From Scratch 12.4 +(System V). + +There's not much purpose to this project, really. I hit a writer's block in +another project and needed a distraction. I also wanted to relive the days of +daily driving Slackware. + +## Status + +At the time of writing, the OS is basically base LFS system, plus some stuff +from BLFS (mostly things needed for Xorg and ALSA) with some extra software +and tooling on top. + +The kernel is 6.16.1 (as specced in LFS book). The config was taken from +Debian 13, modded to match LFS requirements and drivers needed to boot without +initramfs. + +The bootlader is GRUB and the OS is configured with hybrid GPT+MBR to allow +running both on BIOS and UEFI systems. + +The OS boots into Xorg, using WDM. I've chosen Window Maker as the window +manager. I have a soft spot for WMaker. It used to be my main desktop back in +Linux days. Also, it introduced me to the world of NeXT and subsequently +Mac OS X :). + +Extra software on top of LFS and BLFS stuff is: WDM, Window Maker, wmclock, +Archey4 and Chocolate Doom. + +The OS was built in a Proxmox VM on my homelab's app server. It's been verified +to boot and work on my Acer Swift 14 Go laptop (UEFI) andHP8000 retro PC +(BIOS). + +## Content of this repo + +This repo contains extra code I came up with while building the OS. The +`packages/` directory contains code and resources for some of packages. +`resources/` contains non-code resources (e.g. pixmaps) used in the system. +`meta/` hosts code to generate the system's metadata by interpolating +templates. I got annoyed by having to edit multiple files when bumping version +numbers ;). + +## Screenshots + +![Boot (VM)](screenshots/01-Boot_VM.png "4c 8GB RAM VM with virtio SCSI, GPU and net") + +Boot (VM) + +![WDM](screenshots/02-WDM.png "Look at that WINGs UI :)") + +WDM + +![Desktop (VM)](screenshots/03-Desktop_VM.png "Window Maker is my fave window manager for X") + +Desktop (VM) + +![Desktop (Acer Swift 14 Go)](screenshots/04-Desktop_Swift14.png "The display is HiDPI but I could not make X use resolution other than native") + +Desktop (Acer Swift 14 Go) with glxgears (amdgpu) + +![Desktop (HP 8000)](screenshots/05-Desktop_HP8000.png "This is my Windows XP gaming box and the reason the OS is hybrid GPT+MBR") + +Desktop (HP 8000) with glxgears (nouveau) + +![Doom](screenshots/06-Doom.png "Chocolate Doom with Ultimate Doom WAD") + +Of course it runs Doom :) + +## Download + +The purpose of this thing was to build a Linux From Scratch ;). Of course +there's no images to download :D. + +## License + +Unless indicated otherwise, all the code in this repo is licensed under MIT +license. + +Portions of the code in this repository contain work derived from Linux From +Scratch and Beyond Linux From Scratch projects. See `NOTICE.txt` for info on +the license. + +Non-code resources in `resources/` are considered proprietary. + +## AI use indication + +ZiomekOS logos (both graphical and ASCII art) were created using gen AI tools. + +Some of the code was co-authored by Claude. The relevant files are tagged. diff --git a/bootscripts/Makefile b/bootscripts/Makefile new file mode 100644 index 0000000..eccd10e --- /dev/null +++ b/bootscripts/Makefile @@ -0,0 +1,62 @@ +# Largely based on BLFS Bootscripts Makefile from Linux From Scratch +SHELL=/bin/bash + +ETCDIR=/etc +LIBDIR=${DESTDIR}/lib/services +EXTDIR=${DESTDIR}${ETCDIR} +MODE=754 +DIRMODE=755 +CONFMODE=644 + +all: + @grep "^install" Makefile | cut -d ":" -f 1 + @echo "Select an appropriate install target from the above list" + +create-dirs: + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/rc{0,1,2,3,4,5,6,S}.d + install -d -m ${DIRMODE} ${EXTDIR}/rc.d/init.d + install -d -m ${DIRMODE} ${EXTDIR}/sysconfig + +create-service-dir: + install -d -m ${DIRMODE} ${LIBDIR} + +install-qemu-ga: create-dirs + install -m ${MODE} ziomekos/init.d/qemu-ga ${EXTDIR}/rc.d/init.d/ + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc0.d/K00qemu-ga + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc1.d/K00qemu-ga + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc2.d/S35qemu-ga + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc3.d/S35qemu-ga + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc4.d/S35qemu-ga + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc5.d/S35qemu-ga + ln -sf ../init.d/qemu-ga ${EXTDIR}/rc.d/rc6.d/K00qemu-ga + +install-local: create-dirs + install -m ${MODE} ziomekos/init.d/local ${EXTDIR}/rc.d/init.d/ + install -m ${DIRMODE} ${EXTDIR}/rc.local.d + ln -sf ../init.d/local ${EXTDIR}/rc.d/rc2.d/S36local + ln -sf ../init.d/local ${EXTDIR}/rc.d/rc3.d/S36local + ln -sf ../init.d/local ${EXTDIR}/rc.d/rc4.d/S36local + ln -sf ../init.d/local ${EXTDIR}/rc.d/rc5.d/S36local + +uninstall-qemu-ga: + rm -f ${EXTDIR}/rc.d/init.d/qemu-ga + rm -f ${EXTDIR}/rc.d/rc0.d/K00qemu-ga + rm -f ${EXTDIR}/rc.d/rc1.d/K00qemu-ga + rm -f ${EXTDIR}/rc.d/rc2.d/S35qemu-ga + rm -f ${EXTDIR}/rc.d/rc3.d/S35qemu-ga + rm -f ${EXTDIR}/rc.d/rc4.d/S35qemu-ga + rm -f ${EXTDIR}/rc.d/rc5.d/S35qemu-ga + rm -f ${EXTDIR}/rc.d/rc6.d/K00qemu-ga + +uninstall-local: + rm -f ${EXTDIR}/rc.d/init.d/local + rm -f ${EXTDIR}/rc.d/rc2.d/S36local + rm -f ${EXTDIR}/rc.d/rc3.d/S36local + rm -f ${EXTDIR}/rc.d/rc4.d/S36local + rm -f ${EXTDIR}/rc.d/rc5.d/S36local + +.PHONY: all create-dirs create-service-dir \ + install-qemu-ga \ + install-local \ + uninstall-qemu-ga \ + uninstall-local \ diff --git a/bootscripts/ziomekos/init.d/local b/bootscripts/ziomekos/init.d/local new file mode 100755 index 0000000..d091f4c --- /dev/null +++ b/bootscripts/ziomekos/init.d/local @@ -0,0 +1,65 @@ +#!/bin/sh +######################################################################## +# Begin local +# +# Description : Perform local setup on startup +# +# Author : Tomek Wójcik +# +# Version : ZiomekOS 26.9.26 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: local +# Required-Start: $network +# Should-Start: networkmanager wicd +# Required-Stop: $network +# Should-Stop: networkmanager wicd +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Local Setup +# Description: Local Setup +# X-LFS-Provided-By: ZiomekOS +### END INIT INFO + +. /lib/lsb/init-functions + +PARTS_DIR="/etc/rc.local.d" + +run_parts() { + local DIR=$1 + local SCRIPT RC + local RESULT=0 + + [ -d "$DIR" ] || return 0 + + for SCRIPT in "$DIR"/*; do + [ -f "$SCRIPT" ] && [ -x "$SCRIPT" ] || continue + + "$SCRIPT" + RC=$? + + if [ "$RC" -ne 0 ]; then + log_warning_msg "${SCRIPT} exited with status ${RC}" + [ "$RESULT" -eq 0 ] && RESULT=$RC + fi + done + + return "0" +} + +case "$1" in + start) + log_info_msg "Running rc.local scripts..." + evaluate_retval + run_parts $PARTS_DIR + ;; + + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + +# End local diff --git a/bootscripts/ziomekos/init.d/qemu-ga b/bootscripts/ziomekos/init.d/qemu-ga new file mode 100755 index 0000000..3837f2e --- /dev/null +++ b/bootscripts/ziomekos/init.d/qemu-ga @@ -0,0 +1,57 @@ +#!/bin/sh +######################################################################## +# Begin qemu-ga +# +# Description : Start Qemu Guest Agent +# +# Author : Tomek Wójcik +# +# Version : ZiomekOS 26.9.26 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: qemu-ga +# Required-Start: $network +# Should-Start: networkmanager wicd +# Required-Stop: $network +# Should-Stop: networkmanager wicd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Qemu Guest Agent +# Description: Qemu Guest Agent +# X-LFS-Provided-By: ZiomekOS +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start) + log_info_msg "Starting qemu-ga..." + start_daemon /usr/bin/qemu-ga -l /var/log/qemu-ga.log -d + evaluate_retval + ;; + + stop) + log_info_msg "Stopping qemu-ga..." + killproc /usr/bin/qemu-ga + evaluate_retval + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + status) + statusproc /usr/bin/qemu-ga + ;; + + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac + +# End qemu-ga diff --git a/bootscripts/ziomekos/rc.local.d/01-mount-efivars.sh b/bootscripts/ziomekos/rc.local.d/01-mount-efivars.sh new file mode 100755 index 0000000..0ca243b --- /dev/null +++ b/bootscripts/ziomekos/rc.local.d/01-mount-efivars.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env /bin/bash + +. /lib/lsb/init-functions + +if [ -d /sys/firmware/efi/efivars ]; then + log_info_msg "Mounting EFI vars fs...\n" +# mount /sys/firmware/efi/efivars +fi diff --git a/docs/BLFS-BOOK-12.4-nochunks.html b/docs/BLFS-BOOK-12.4-nochunks.html new file mode 100644 index 0000000..1b922ff --- /dev/null +++ b/docs/BLFS-BOOK-12.4-nochunks.html @@ -0,0 +1,281728 @@ + + + + + + + Beyond Linux® From Scratch (System V Edition) + + + + + + + +
+
+
+
+

+ Beyond + Linux® From Scratch (System + V Edition) +

+
+
+

+ Version 12.4 +

+
+
+
+

+ The BLFS Development Team +

+
+
+
+ +
+
+
+ +

+ Copyright © 1999-2025, The BLFS Development Team +

+

+ All rights reserved. +

+

+ This book is licensed under a Creative + Commons License. +

+

+ Computer instructions may be extracted from the book under + the MIT License. +

+

+ Linux® is a registered + trademark of Linus Torvalds. +

+
+
+
+

+ Published 2025-09-01 +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Revision History +
+ Revision 12.4 + + 2025-09-01 + + Thirty-second Release +
+ Revision 12.3 + + 2025-03-05 + + Thirty-first Release +
+ Revision 12.2 + + 2024-09-01 + + Thirtieth Release +
+ Revision 12.1 + + 2024-03-01 + + Twenty-ninth Release +
+ Revision 12.0 + + 2023-09-01 + + Twenty-eighth Release +
+ Revision 11.3 + + 2023-03-01 + + Twenty-seventh Release +
+ Revision 11.2 + + 2022-09-01 + + Twenty-sixth Release +
+ Revision 11.1 + + 2022-03-01 + + Twenty-fifth Release +
+ Revision 11.0 + + 2021-09-01 + + Twenty-fourth Release +
+ Revision 10.1 + + 2021-03-01 + + Twenty-third Release +
+ Revision 10.0 + + 2020-09-01 + + Twenty-second Release +
+ Revision 9.1 + + 2020-03-01 + + Twenty-first Release +
+ Revision 9.0 + + 2019-09-01 + + Twentieth release +
+ Revision 8.4 + + 2019-03-01 + + Nineteenth release +
+ Revision 8.3 + + 2018-09-01 + + Eighteenth release +
+ Revision 8.2 + + 2018-03-02 + + Seventeenth release +
+ Revision 8.1 + + 2017-09-01 + + Sixteenth release +
+ Revision 8.0 + + 2017-02-25 + + Fifteenth release +
+ Revision 7.10 + + 2016-09-07 + + Fourteenth release +
+ Revision 7.9 + + 2016-03-08 + + Thirteenth release +
+ Revision 7.8 + + 2015-10-01 + + Twelfth release +
+ Revision 7.7 + + 2015-03-06 + + Eleventh release +
+ Revision 7.6 + + 2014-09-23 + + Tenth release +
+ Revision 7.5 + + 2014-03-05 + + Ninth release +
+ Revision 7.4 + + 2013-09-14 + + Eighth release +
+ Revision 6.3 + + 2008-08-24 + + Seventh release +
+ Revision 6.2 + + 2007-02-14 + + Sixth release +
+ Revision 6.1 + + 2005-08-14 + + Fifth release +
+ Revision 6.0 + + 2005-04-02 + + Fourth release +
+ Revision 5.1 + + 2004-06-05 + + Third release +
+ Revision 5.0 + + 2003-11-06 + + Second release +
+ Revision 1.0 + + 2003-04-25 + + First release +
+
+
+
+

+ Abstract +

+

+ This book follows on from the Linux From Scratch book. It + introduces and guides the reader through additions to the + system including networking, graphical interfaces, sound + support, and printer and scanner support. +

+
+
+
+
+
+
+
+
+
+

+ Dedication +

+
+
+
+

+ This book is dedicated to the LFS community +

+
+
+

+ Table of Contents +

+ +
+
+
+
+

+ Preface +

+
+
+
+
+

+ Having helped out with Linux From Scratch for a short time, I + noticed that we were getting many queries as to how to do things + beyond the base LFS system. At the time, the only assistance + specifically offered relating to LFS were the LFS hints (https://www.linuxfromscratch.org/hints). + Most of the LFS hints are extremely good and well written but I + (and others) could still see a need for more comprehensive help to + go Beyond LFS — hence BLFS. +

+

+ BLFS aims to be more than the LFS-hints converted to XML although + much of our work is based around the hints and indeed some authors + write both hints and the relevant BLFS sections. We hope that we + can provide you with enough information to not only manage to build + your system up to what you want, whether it be a web server or a + multimedia desktop system, but also that you will learn a lot about + system configuration as you go. +

+

+ Thanks as ever go to everyone in the LFS/BLFS community; especially + those who have contributed instructions, written text, answered + questions and generally shouted when things were wrong! +

+

+ Finally, we encourage you to become involved in the community; ask + questions on the mailing list or news gateway and join in the fun + on #lfs and #lfs-support at Libera. You can find more details about + all of these in the Introduction section of the + book. +

+

+ Enjoy using BLFS. +

+
+
+
+

+ Mark Hymers
+ markh <at> linuxfromscratch.org
+ BLFS Editor (July 2001–March 2003) +

+
+
+
+

+ I still remember how I found the BLFS project and started using the + instructions that were completed at the time. I could not believe + how wonderful it was to get an application up and running very + quickly, with explanations as to why things were done a certain + way. Unfortunately, for me, it wasn't long before I was opening + applications that had nothing more than "To be done" on the page. I + did what most would do, I waited for someone else to do it. It + wasn't too long before I am looking through Bugzilla for something easy to do. As with any + learning experience, the definition of what was easy kept changing. +

+

+ We still encourage you to become involved as BLFS is never really + finished. Contributing or just using, we hope you enjoy your BLFS + experience. +

+
+
+
+

+ Larry Lawrence
+ larry <at> linuxfromscratch.org
+ BLFS Editor (March 2003–June 2004) +

+
+
+
+

+ The BLFS project is a natural progression of LFS. Together, these + projects provide a unique resource for the Open Source Community. + They take the mystery out of the process of building a complete, + functional software system from the source code contributed by many + talented individuals throughout the world. They truly allow users + to implement the slogan “Your distro, your + rules.” +

+

+ Our goal is to continue to provide the best resource available that + shows you how to integrate many significant Open Source + applications. Since these applications are constantly updated and + new applications are developed, this book will never be complete. + Additionally, there is always room for improvement in explaining + the nuances of how to install the different packages. To make these + improvements, we need your feedback. I encourage you to participate + on the different mailing lists, news groups, and IRC channels to + help meet these goals. +

+
+
+
+

+ Bruce Dubbs
+ bdubbs <at> linuxfromscratch.org
+ BLFS Editor (June 2004–December 2006 and February 2011–now) +

+
+
+
+

+ My introduction to the [B]LFS project was actually by accident. I + was trying to build a GNOME + environment using some how-tos and other information I found on the + web. A couple of times I ran into some build issues and Googling + pulled up some old BLFS mailing list messages. Out for curiosity, I + visited the Linux From Scratch web site and shortly thereafter was + hooked. I've not used any other Linux distribution for personal use + since. +

+

+ I can't promise anyone will feel the sense of satisfaction I felt + after building my first few systems using [B]LFS instructions, but + I sincerely hope that your BLFS experience is as rewarding for you + as it has been for me. +

+

+ The BLFS project has grown significantly the last couple of years. + There are more package instructions and related dependencies than + ever before. The project requires your input for continued success. + If you discover that you enjoy building BLFS, please consider + helping out in any way you can. BLFS requires hundreds of hours of + maintenance to keep it even semi-current. If you feel confident + enough in your editing skills, please consider joining the BLFS + team. Simply contributing to the mailing list discussions with + sound advice and/or providing patches to the book's XML will + probably result in you receiving an invitation to join the team. +

+
+
+
+

+ Randy McMurchy
+ randy <at> linuxfromscratch.org
+ BLFS Editor (December 2006–January 2011) +

+
+
+
+
+
+
+

+ Foreword +

+
+
+
+
+

+ This version of the book is intended to be used when building on + top of a system built using the LFS book. Every effort has been + made to ensure accuracy and reliability of the instructions. Many + people find that using the instructions in this book after + building the current stable or development version of LFS + provides a stable and very modern Linux system. +

+

+ Enjoy! +

+
+
+
+

+ Randy McMurchy
+ August 24th, 2008 +

+
+
+
+
+
+
+
+

+ Who Would Want to Read + this Book +

+
+
+
+
+

+ This book is mainly aimed at those who have built a system based + on the LFS book. It will also be useful for those who are using + other distributions, and for one reason or another want to + manually build software and need some assistance. Note that the + material in this book, in particular the dependency listings, + assumes that you are using a basic LFS system with every package + listed in the LFS book already installed and configured. BLFS can + be used to create a range of diverse systems and so the target + audience is probably as wide as that of the LFS book. If you + found LFS useful, you should also like this! +

+

+ Since Release 7.4, the BLFS book version has matched the LFS book + version. This book may be incompatible with a previous or later + release of the LFS book. +

+
+
+
+
+

+ Organization +

+
+
+
+
+

+ This book is divided into the following fourteen parts. +

+

+ Part I - + Introduction +

+

+ This part contains essential information which is needed to + understand the rest of the book. +

+

+ Part II + - Post LFS Configuration and Extra Software +

+

+ Here we introduce basic configuration and security issues. We + also discuss a range of text editors, file systems, and shells + which aren't covered in the main LFS book. +

+

+ Part III + - General Libraries and Utilities +

+

+ In this section we cover libraries which are often needed + throughout the book, as well as system utilities. Information on + programming (including recompiling GCC to support its full range of languages) + concludes this part. +

+

+ Part IV + - Basic Networking +

+

+ Here we explain how to connect to a network when you aren't using + the simple static IP setup presented in the main LFS book. + Networking libraries and command-line networking tools are also + covered here. +

+

+ Part V - + Servers +

+

+ Here we show you how to set up mail and other servers (such as + FTP, Apache, etc.). +

+

+ Part VI + - X + Window Managers +

+

+ This part explains how to set up a basic X Window System, along with some generic + X libraries and Window managers. +

+

+ Part VII + - KDE +

+

+ This part is for those who want to use the K Desktop Environment, or parts of it. +

+

+ Part + VIII - GNOME +

+

+ GNOME is the main alternative to + KDE in the Desktop Environment + arena. +

+

+ Part IX + - Xfce +

+

+ Xfce is a lightweight + alternative to GNOME and + KDE. +

+

+ Part X - + LXQt +

+

+ LXDE is another lightweight + alternative to GNOME and + KDE. +

+

+ Part XI + - More X Software +

+

+ Office programs and graphical web browsers are important to most + people. They, and some generic X + software, can be found in this part of the book. +

+

+ Part XII + - Multimedia +

+

+ Here we cover multimedia libraries and drivers, along with some + audio, video, and CD-writing programs. +

+

+ Part + XIII - Printing, Scanning and Typesetting (PST) +

+

+ This part covers document handling, from applications like + Ghostscript, CUPS, and DocBook, all the way to texlive. +

+

+ Appendices +

+

+ The Appendices present information which doesn't belong in the + body of book; they are included as reference material. The + glossary of acronyms is a handy feature. +

+
+
+
+
+
+

+ Part I. Introduction +

+
+
+
+
+
+
+
+

+ Chapter 1. Welcome to BLFS +

+
+
+
+
+

+ The Beyond Linux From Scratch book is designed to carry on from + where the LFS book leaves off. But unlike the LFS book, it isn't + designed to be followed straight through. Reading the Which sections of the + book? part of this chapter should help guide you through the + book. +

+

+ Please read most of this part of the book carefully as it + explains quite a few of the conventions used throughout the book. +

+
+
+
+

+ Which + Sections of the Book Do I Want? +

+
+
+
+
+

+ Unlike the Linux From Scratch book, BLFS isn't designed to be + followed in a linear manner. LFS provides instructions on how + to create a base system which can become anything from a web + server to a multimedia desktop system. BLFS attempts to guide + you in the process of going from the base system to your + intended destination. Choice is very much involved. +

+

+ Everyone who reads this book will want to read certain + sections. The Introduction, which you + are currently reading, contains generic information. Take + special note of the information in Chapter 2, + Important Information, as this contains comments about how + to unpack software, issues related to the use of different + locales, and various other considerations which apply + throughout the book. +

+

+ The part on Post + LFS Configuration and Extra Software is where most people + will want to turn next. This deals not only with configuration, + but also with Security (Chapter 4, Security), + File Systems (Chapter 5, + File Systems and Disk Management -- including GRUB for + UEFI), Text Editors (Chapter 6, Text + Editors), and Shells (Chapter 7, Shells). + Indeed, you may wish to reference some parts of this chapter + (especially the sections on Text Editors and File Systems) + while building your LFS system. +

+

+ Following these basic items, most people will want to at least + browse through the General + Libraries and Utilities part of the book. This contains + information on many items which are prerequisites for other + sections of the book, as well as some items (such as Chapter 13, + Programming) which are useful in their own right. You don't + have to install all of the libraries and packages found in this + part; each BLFS installation procedure tells you which other + packages this one depends upon. You can choose the program you + want to install, and see what it needs. (Don't forget to check + for nested dependencies!) +

+

+ Likewise, most people will probably want to look at the + Networking section. It + deals with connecting to the Internet or your LAN (Chapter 14, + Connecting to a Network) using a variety of methods such as + DHCP and PPP, and with items such as Networking Libraries + (Chapter 17, + Networking Libraries), plus various basic networking + programs and utilities. +

+

+ Once you have dealt with these basics, you may wish to + configure more advanced network services. These are dealt with + in the Servers part of the book. Those + wanting to build servers should find a good starting point + there. Note that this section also contains information on + several database packages. +

+

+ The next twelve chapters deal with desktop systems. This + portion of the book starts with a part talking about Graphical + Components. This part also deals with some generic X-based + libraries (Chapter 25, + Graphical Environment Libraries). After that, KDE, + GNOME, Xfce, and LXQt are + given their own parts, followed by one on X Software. +

+

+ The book then moves on to deal with Multimedia packages. Note + that many people may want to use the ALSA instructions from this chapter + when first starting their BLFS journey; the instructions are + placed here because it is the most logical place for them. +

+

+ The final part of the main BLFS book deals with Printing, + Scanning and Typesetting. This is useful for most people + with desktop systems, but even those who are creating dedicated + server systems may find it useful. +

+

+ We hope you enjoy using BLFS. May you realize your dream of + building the perfectly personalized Linux system! +

+
+
+
+
+

+ Conventions Used + in this Book +

+
+
+
+
+
+

+ Typographical Conventions +

+

+ To make things easy to follow, a number of conventions are + used throughout the book. Here are some examples: +

+
./configure --prefix=/usr
+
+
+

+ This form of text should be typed exactly as shown unless + otherwise noted in the surrounding text. It is also used + to identify references to specific commands. +

+
+
+
install-info: unknown option
+`--dir-file=/mnt/lfs/usr/info/dir'
+
+
+

+ This form of text (blue, fixed width font) shows screen + output, probably the result of issuing a command. +

+
+
+
/boot/grub/grub.conf
+
+
+

+ This form of text (fixed width font) is used to show + filenames. +

+
+
+
+

+ Note +

+

+ Please configure your browser to display fixed-width text + with a good monospaced font, with which you can distinguish + the glyphs of Il1 or + O0 clearly. +

+
+

+ Emphasis +

+
+
+

+ This form of text is used for several purposes, but + mainly to emphasize important points, or to give examples + of what to type. +

+
+
+

+ https://www.linuxfromscratch.org/ +

+
+
+

+ This form of text is used for hypertext links external to + the book, such as HowTos, download locations, websites, + etc. +

+
+
+

+ seamonkey-2.53.21 +

+
+
+

+ This form of text is used for links internal to the book, + such as another section describing a different package. +

+
+
+
cat > $LFS/etc/group << "EOF"
+root:x:0:
+bin:x:1:
+......
+EOF
+
+
+

+ This style is mainly used when creating configuration + files. The first command (in bold) tells the system to + create the file $LFS/etc/group from whatever is typed + on the following lines, until the sequence EOF is + encountered. Therefore, this whole section is usually + typed exactly as shown. Remember, copy and paste is your + friend! +

+
+
+

+ <REPLACED + TEXT> +

+
+
+

+ This form of text is used to encapsulate text that should + be modified, and is not to be typed as shown, or copied + and pasted. The angle brackets are not part of the + literal text; they are part of the substitution. +

+
+
+

+ root +

+
+
+

+ This form of text is used to show a specific system user + or group reference in the instructions. +

+
+
+

+   +

+
+
+

+ Conventions Used for Package Dependencies +

+

+ When new packages are created, the software's authors depend + on prior work. In order to build a package in BLFS, these + dependencies must be built before the desired package can be + compiled. For each package, prerequisites are listed in one + or more separate sections: Required, Recommended, and + Optional. +

+

+ Required Dependencies +

+

+ These dependencies are the bare minimum needed to build the + package. Packages in LFS, and the required dependencies of + these required packages, are omitted from this list. Always + remember to check for nested dependencies. If a dependency is + said to be “runtime,” it is not needed for building + the package, but only to use it after installation. +

+

+ Recommended Dependencies +

+

+ These are dependencies the BLFS editors have determined are + important to give the package reasonable capabilities. If a + recommended dependency is not said to be “runtime,” package + installation instructions assume it is installed. If it is + not installed, the instructions may require modification, to + accommodate the missing package. A recommended “runtime” + dependency does not need to be installed before building the + package, but must be built afterwards for running the package + with reasonable capabilities. +

+

+ Optional Dependencies +

+

+ These are dependencies the package may use. Integration of optional + dependencies may be automatic by the package, or additional + steps not presented by BLFS may be necessary. Optional + dependencies are sometimes listed without explicit BLFS + instructions. In this case you must determine how to perform + the installation yourself. +

+

+   +

+
+
+

+ Conventions Used for Kernel Configuration Options +

+

+ Some packages require specific kernel configuration options. + The general layout for these looks like this: +

+
Master section --->
+  Subsection --->
+    [*]     Required parameter                                        [REQU_PAR]
+    <*>     Required parameter (not as module)                   [REQU_PAR_NMOD]
+    <*/M>   Required parameter (could be a module)                [REQU_PAR_MOD]
+    <M>     Required parameter (as a module)                 [REQU_PAR_MOD_ONLY]
+    < /*/M> Optional parameter                                         [OPT_PAR]
+    < /M>   Optional parameter (as a module if enabled)       [OPT_PAR_MOD_ONLY]
+    [ ]     Incompatible parameter                                  [INCOMP_PAR]
+    < >     Incompatible parameter (even as module)             [INCOMP_PAR_MOD]
+

+ [...] on the right gives the symbolic name of the option, so + you can easily check whether it is set in your .config file. Note that the .config file contains a CONFIG_ prefix before all symbolic names. + The meaning of the various entries is: +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Master + section + + top level menu item +
+ Subsection + + submenu item +
+ Required + parameter + + the option can either be built-in, or not + selected: it must be selected +
+ Required parameter + (not as module) + + the option can be built-in, a module, or not + selected (tri-state): it must be selected as + built-in +
+ Required parameter + (could be a module) + + the option can be built-in, a module, or not + selected: it must be selected, either as built-in + or as a module +
+ Required parameter (as + a module) + + the option can be built-in, a module, or not + selected: it must be selected as a module; + selecting it as built-in may cause unwanted + effects +
+ Optional + parameter + + the option can be built-in, a module, or not + selected: it may be selected as a module or + built-in if you need it for driving the hardware + or optional kernel features +
+ Optional parameter (as + a module if enabled) + + the option can be built-in, a module, or not + selected: it may be selected as a module if you + need it for driving the hardware or optional + kernel features, but selecting it as built-in may + cause unwanted effects +
+ Incompatible + parameter + + the option can either be built-in or not + selected: it must not be selected +
+ Incompatible parameter + (even as module) + + the option can be built-in, a module, or not + selected: it must not be selected +
+
+
+
+

+ Note that, depending on other selections, the angle brackets + (<>) in the configuration menu may appear as braces + ({}) if the option cannot be unselected, or even as dashes + (-*- or -M-), when the choice is imposed. The help text + describing the option specifies the other selections on which + this option relies, and how those other selections are set. +

+

+ The letter in blue is the hotkey + for this option. If you are running make menuconfig, you can + press a key to quickly traverse all the options with this key + as the hotkey on the screen. +

+

+   +

+
+
+

+ SBU values in BLFS +

+

+ As in LFS, each package in BLFS has a build time listed in + Standard Build Units (SBUs). These times are relative to the + time it took to build binutils in LFS, and are intended to + provide some insight into how long it will take to build a + package. Most times listed are for a single processor or core + to build the package. In some cases, large, long running + builds tested on multi-core systems have SBU times listed + with comments such as '(parallelism=4)'. These values + indicate testing was done using multiple cores. Note that + while this speeds up the build on systems with the + appropriate hardware, the speedup is not linear and to some + extent depends on the individual package and the specific + hardware used. +

+

+ For packages which use ninja (i.e., anything using meson) or + rust, by default all cores are used; similar comments will be + seen on such packages even when the build time is minimal. +

+

+ Where even a parallel build takes more than 15 SBU, on + certain machines the time may be considerably greater even + when the build does not use swap. In particular, different + micro-architectures will build some files at different + relative speeds, and this can introduce delays when certain + make targets wait for another file to be created. Where a + large build uses a lot of C++ files, processors with + Simultaneous Multi Threading will share the Floating Point + Unit and can take 45% longer than when using four 'prime' + cores (measured on an intel i7 using taskset and keeping the + other cores idle). +

+

+ Some packages do not support parallel builds; for these, the + make command must specify -j1. Packages that are known to + impose such limits are so marked in the text. +

+
+
+
+
+
+

+ Book Version +

+
+
+
+
+

+ This is BLFS-BOOK version 12.4 dated September 1st, 2025. This + is the 12.4 branch of the BLFS book, currently targeting the + LFS 12.4 book. For development versions, if this version is + older than a month, it's likely that your mirror hasn't been + synchronized recently and a newer version is probably available + for download or viewing. Check one of the mirror sites at + https://www.linuxfromscratch.org/mirrors.html + for an updated version. +

+
+
+
+
+

+ Mirror Sites +

+
+
+
+
+

+ The BLFS project has a number of mirrors set up world-wide to + make it easier and more convenient for you to access the + website. Please visit the https://www.linuxfromscratch.org/mirrors.html + website for the list of current mirrors. +

+
+
+
+
+

+ Getting the Source + Packages +

+
+
+
+
+

+ Within the BLFS instructions, each package has two references + for finding the source files for the package—an HTTP link and + an FTP link (some packages may only list one of these links). + Every effort has been made to ensure that these links are + accurate. However, the World Wide Web is in continuous flux. + Packages are sometimes moved or updated and the exact URL + specified is not always available. +

+

+ To overcome this problem, the BLFS Team, with the assistance of + Oregon State University Open Source Lab, has made an HTTP/FTP + site available through world wide mirrors. See https://www.linuxfromscratch.org/blfs/download.html#sources + for a list. These sites have all the sources of the exact + versions of the packages used in BLFS. If you can't find the + BLFS package you need at the listed addresses, get it from + these sites. +

+

+ We would like to ask a favor, however. Although this is a + public resource for you to use, please do not abuse it. We have + already had one unthinking individual download over 3 GB of + data, including multiple copies of the same files that are + placed at different locations (via symlinks) to make finding + the right package easier. This person clearly did not know what + files he needed and downloaded everything. The best place to + download files is the site or sites set up by the source code + developer. Please try there first. +

+
+
+
+
+

+ Change Log +

+
+
+
+
+

+ Current release: 12.4 – September 1st, 2025 +

+
+

+ Changelog Entries: +

+
    +
  • +

    + September 1st, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Release of BLFS-12.4. +

      +
    • +
    +
    +
  • +
  • +

    + August 31st, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fix building Guile on 32-bit systems. +

      +
    • +
    • +

      + [renodr] - Update to krb5-1.22.1 (Security Update). + Fixes + #22015. +

      +
    • +
    • +

      + [renodr] - Update to Qt6 and QtWebEngine 6.9.2 + (Security Update). Fixes + #22025. +

      +
    • +
    • +

      + [renodr] - Update to udisks2-2.10.2 (Security + Update). Fixes + #22029. +

      +
    • +
    • +

      + [renodr] - Update to libreoffice-25.8.1.1. Fixes + + #22039. +

      +
    • +
    +
    +
  • +
  • +

    + August 28th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to kea-3.0.1. Fixes + #22026. +

      +
    • +
    +
    +
  • +
  • +

    + August 26th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to libreoffice-25.8.0.4. Fixes + + #22003. +

      +
    • +
    +
    +
  • +
  • +

    + August 25th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to FreeRDP-3.17.0. Fixes + + #22013. +

      +
    • +
    • +

      + [renodr] - Update to samba-4.22.4. Fixes + #22007. +

      +
    • +
    • +

      + [renodr] - Fixed building seahorse with gpgme-2.x. +

      +
    • +
    +
    +
  • +
  • +

    + August 24rd, 2025 +

    +
    +
      +
    • +

      + [xry111] - Update to unifont-16.0.04 (GRUB font + data). +

      +
    • +
    +
    +
  • +
  • +

    + August 23rd, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to postfix-3.10.4. Fixes + + #21996. +

      +
    • +
    +
    +
  • +
  • +

    + August 22nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to cdrdao-1.2.5. Fixes + #22009. +

      +
    • +
    • +

      + [bdubbs] - Update to nano-8.6. Fixes + #22004. +

      +
    • +
    • +

      + [bdubbs] - Update to nmap-7.98. Fixes + #22006. +

      +
    • +
    • +

      + [thomas] - Update to bind-9.20.12. Fixes + #22002. +

      +
    • +
    +
    +
  • +
  • +

    + August 21st, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to emacs-30.2. Fixes + #21967. +

      +
    • +
    • +

      + [bdubbs] - Update to mdadm-4.4. Fixes + #21987. +

      +
    • +
    • +

      + [bdubbs] - Update to btrfs-progs-v6.16. Fixes + + #21963. +

      +
    • +
    • +

      + [renodr] - Update to Thunderbird-140.2.0esr + (Security Update). Fixes + #21998. +

      +
    • +
    • +

      + [renodr] - Update to Firefox-140.2.0esr as well as + SpiderMonkey (Security Update). Fixes + #21990. +

      +
    • +
    • +

      + [bdubbs] - Update to ed-1.22.2. Fixes + #22001. +

      +
    • +
    +
    +
  • +
  • +

    + August 20th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to intel-microcode-20250812 + (Security Update). Fixes + #21997. +

      +
    • +
    • +

      + [renodr] - Update to mupdf-1.26.5. Fixes + #21960. +

      +
    • +
    • +

      + [bdubbs] - Update to librsvg-2.61.0. Fixes + + #21971. +

      +
    • +
    • +

      + [bdubbs] - Update to AppStream-1.0.6. Fixes + + #21968. +

      +
    • +
    • +

      + [renodr] - Update to fuse-3.17.4. Fixes + #22000. +

      +
    • +
    +
    +
  • +
  • +

    + August 19th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to cryptsetup-2.8.1. Fixes + + #21999. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.4.1. Fixes + + #21965. +

      +
    • +
    • +

      + [bdubbs] - Update to protobuf-32.0. Fixes + #21970. +

      +
    • +
    • +

      + [bdubbs] - Update to libdisplay-info-0.3.0. Fixes + + #21959. +

      +
    • +
    • +

      + [bdubbs] - Update to highway-1.3.0. Fixes + #21969. +

      +
    • +
    • +

      + [bdubbs] - Update to boost-1.89.0. Fixes + #21964. +

      +
    • +
    • +

      + [bdubbs] - Update to abseil-cpp-20250814.0. Fixes + + #21992. +

      +
    • +
    +
    +
  • +
  • +

    + August 18th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to requests-2.32.5 (Python + module). Fixes + #21995. +

      +
    • +
    • +

      + [bdubbs] - Update to clisp-2.49.95. Fixes + #21989. +

      +
    • +
    +
    +
  • +
  • +

    + August 17th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to libxfce4ui-4.20.2, + libxfce4windowing-4.20.4, xfce4-panel-4.20.5, + xfce4-session-4.20.3, xfce4-settings-4.20.2. Fixes + + #21974. +

      +
    • +
    +
    +
  • +
  • +

    + August 16th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to nss-3.115. Fixes + #21984. +

      +
    • +
    • +

      + [renodr] - Update to Python-3.13.7 (sync with LFS). + Fixes + #21972. +

      +
    • +
    • +

      + [renodr] - Update to vim-9.1.1629 (sync with LFS). + Fixes + #21980. +

      +
    • +
    • +

      + [renodr] - Performed the Python Dependency updates + for BLFS 12.4. This includes updates to + certifi-2025.1.31, charset-normalizer-3.4.3, + msgpack-1.1.1, pytz-2025.2, snowballstemmer-3.0.1, + and urllib3-2.5.0. Fixes + #21978. +

      +
    • +
    • +

      + [renodr] - Added the roman-numerals-py Python + Dependency. Fixes + #21977. +

      +
    • +
    • +

      + [renodr] - Update to pycairo-1.28.0 (Python + Module). Fixes + #21976. +

      +
    • +
    • +

      + [renodr] - Update to build-1.3.0 (Python Module). + Fixes + #21975. +

      +
    • +
    • +

      + [renodr] - Update to cython-3.1.3 (Python Module). + Fixes + #21966. +

      +
    • +
    • +

      + [renodr] - Update to sentry_sdk-2.35.0 (Python + Module). Fixes + #21720. +

      +
    • +
    • +

      + [renodr] - Update to luajit-20250816. Fixes + + #21982. +

      +
    • +
    • +

      + [renodr] - Update to x264-20250815. Fixes + #21981. +

      +
    • +
    • +

      + [renodr] - Update to postgresql-17.6 (Security + Update). fixes + #21973. +

      +
    • +
    • +

      + [renodr] - Update to ImageMagick-7.1.2-1 (Security + Update). Fixes + #21983. +

      +
    • +
    +
    +
  • +
  • +

    + August 15th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to biber-2.21. Fixes + #21843. +

      +
    • +
    • +

      + [renodr] - Update to mercurial-7.1. Fixes + #21547. +

      +
    • +
    • +

      + [zeckma] - Update to mesa-25.1.8. Fixes + #21748. +

      +
    • +
    • +

      + [renodr] - Performed the Perl Module Dependency + updates for BLFS 12.4. This includes updates to + Alien-Libxml2-0.20, + Business-ISBN-Data-20250815.001, DateTime-1.66, + DateTime-Locale-1.45, DateTime-TimeZone-2.65, + Module-Runtime, Path-Tiny-0.150, Specio-0.52, + Test-Deep-1.205, Test-File-1.995, + Test-Simple-1.302214, Text-CSV_XS-1.61, and + Tie-Cycle-1.231. Fixes + #21979. +

      +
    • +
    • +

      + [renodr] - Added the Clone::PP Perl Dependency, + needed for Specio-0.52. Part of + #21979. +

      +
    • +
    • +

      + [renodr] - Fixed starting GDM on SysV systems that + use X11 instead of Wayland, such as systems with + NVIDIA GPUs and virtual machines. +

      +
    • +
    +
    +
  • +
  • +

    + August 14th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fixed building OpenJDK with glibc-2.42. + Fixes + #21949. +

      +
    • +
    • +

      + [renodr] - Fixed building xine-lib with gcc-15. +

      +
    • +
    • +

      + [bdubbs] - Update to kde-gear-25.08.0 including + falkon, kate, and kwave. Fixes + #21554. +

      +
    • +
    +
    +
  • +
  • +

    + August 12th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to krb5-1.22. Fixes + #21942. +

      +
    • +
    +
    +
  • +
  • +

    + August 11th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to libxkbcommon-1.11.0. Fixes + + #21951. +

      +
    • +
    • +

      + [renodr] - Update to glib-2.84.4 (Security Update). + Fixes + #21958. +

      +
    • +
    +
    +
  • +
  • +

    + August 10th, 2025 +

    +
    +
      +
    • +

      + [xry111] - Update to cargo-c-0.10.15. Fixes + + #21957. +

      +
    • +
    • +

      + [bdubbs] - Update to plasma-6.4.4 including for + lxqt: kwayland, libkscreen, and layer-shell-qt. + Fixes + #21543. +

      +
    • +
    • +

      + [bdubbs] - Update to kirigami-addons-1.9.0. Fixes + + #21609. +

      +
    • +
    • +

      + [renodr] - Fix building Qemu with + pip-25.2/Python-3.13.6. Thanks goes to Joe Locash + for the report and the link to the fix. Fixes + + #21955. +

      +
    • +
    • +

      + [renodr] - Fix building libplacebo with + Python-3.13.6. Thanks goes to Joe Locash for the + report and the link to the fix. Fixes + #21953. +

      +
    • +
    • +

      + [renodr] - Update the gstreamer stack to 1.26.5. + Fixes + #21948. +

      +
    • +
    • +

      + [renodr] - Update to gtk-3.24.50. Fixes + #21947. +

      +
    • +
    • +

      + [renodr] - Update to cmake-4.1.0. Fixes + #21945. +

      +
    • +
    • +

      + [bdubbs] - Update to kf6-6.17.0 including + extra-cmake-modules, frameworks, and for lxqt: + kconfig, kidletime, kwindowsystem, and solid. Fixes + + #21556. +

      +
    • +
    • +

      + [thomas] - Update to graphviz-13.1.2. Fixes + + #21956. +

      +
    • +
    • +

      + [thomas] - Update to mariadb-11.8.3. Fixes + + #21952. +

      +
    • +
    • +

      + [xry111] - Update to + hatch_fancy_pypi_readme-25.1.0, hatch_vcs-0.5.0, + iniconfig-2.1.0, markdown-3.8.2, + meson_python-0.18.0, pluggy-1.6.0, + pyproject_metadata-0.9.1, setuptools_scm-8.3.1, + smartypants-2.0.2, and + trove_classifiers-2025.8.6.13 (Python + dependencies). Addresses + #18562. +

      +
    • +
    +
    +
  • +
  • +

    + August 8th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to Python-3.13.6 (Security + Update). Fixes + #21943. +

      +
    • +
    • +

      + [bdubbs] - Update to gcc-15.2.0. Fixes + #21950. +

      +
    • +
    • +

      + [renodr] - Update to libxmlb-0.3.23. Fixes + + #21944. +

      +
    • +
    +
    +
  • +
  • +

    + August 7th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fixed building Time with GCC-15. +

      +
    • +
    • +

      + [zeckma] - Update to seamonkey-2.53.21 (security + update). Fixes + #21935. +

      +
    • +
    • +

      + [zeckma] - Update to thunderbird-140.1.1esr. Fixes + + #21941. +

      +
    • +
    +
    +
  • +
  • +

    + August 6th, 2025 +

    +
    +
      +
    • +

      + [xry111] - Update to rustc-1.89.0. Fixes + #21946. +

      +
    • +
    • +

      + [xry111] - Update to Spidermonkey from + Firefox-140.1.0. Patch gjs to use it. Fixes + + #21772. +

      +
    • +
    • +

      + [renodr] - Update to ModemManager-1.24.2. Fixes + + #21932. +

      +
    • +
    • +

      + [renodr] - Update to gnome-maps-48.6. Fixes + + #21927. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell-48.4. Fixes + + #21926. +

      +
    • +
    • +

      + [renodr] - Update to gnome-control-center-48.4. + Fixes + #21925. +

      +
    • +
    • +

      + [renodr] - Update to gnome-online-accounts-3.54.5. + Fixes + #21916. +

      +
    • +
    • +

      + [renodr] - Backported several patches from Arch and + Fedora to fix bugs in dvd+rw-tools and simplify the + page. Fixes + #21938. +

      +
    • +
    • +

      + [renodr] - Update to libreoffice-25.2.5.2. Fixes + + #21933. +

      +
    • +
    +
    +
  • +
  • +

    + August 5th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fixed CVE-2025-8194 in Python. Fixes + + #21895. +

      +
    • +
    • +

      + [renodr] - Update to epiphany-48.5. Fixes + #21934. +

      +
    • +
    • +

      + [renodr] - Update to WebKitGTK-2.48.5 (Security + Update). Fixes + #21904. +

      +
    • +
    • +

      + [bdubbs] - Update to mpg123-1.33.2. Fixes + #21940. +

      +
    • +
    • +

      + [renodr] - Fixed building the Ruby bindings in + Subversion when using GCC-15 and Ruby-3.4. Fixes + + #21885. +

      +
    • +
    • +

      + [renodr] - Update to 7zip-25.01 (Security Update). + Fixes + #21928. +

      +
    • +
    • +

      + [bdubbs] - Update to xscreensaver-6.12. Fixes + + #21937. +

      +
    • +
    • +

      + [bdubbs] - Update to FreeRDP-3.16.0. Fixes + + #21936. +

      +
    • +
    • +

      + [bdubbs] - Update to hwdata-0.398. Fixes + #21931. +

      +
    • +
    • +

      + [bdubbs] - Update to libqalculate-5.7.0. Fixes + + #21930. +

      +
    • +
    • +

      + [bdubbs] - Update to libgcrypt-1.11.2. Fixes + + #21929. +

      +
    • +
    • +

      + [renodr] - Fixed the paths for security + certificates in the text for Configuring The Java + Environment. Fixes + #21920. +

      +
    • +
    • +

      + [bdubbs] - Update to mariadb-11.8.2. Fixes + + #21084. +

      +
    • +
    +
    +
  • +
  • +

    + August 4th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to icewm-3.8.2. Fixes + #21924. +

      +
    • +
    • +

      + [bdubbs] - Update to poppler-25.08.0. Fixes + + #21923. +

      +
    • +
    • +

      + [bdubbs] - Update to jasper-version-4.2.8. Fixes + + #21918. +

      +
    • +
    • +

      + [bdubbs] - Update to libadwaita-1.7.6. Fixes + + #21915. +

      +
    • +
    • +

      + [bdubbs] - Update to at-spi2-core-2.56.4. Fixes + + #21914. +

      +
    • +
    • +

      + [bdubbs] - Update to NetworkManager-1.54.0. Fixes + + #21913. +

      +
    • +
    +
    +
  • +
  • +

    + August 3rd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to whois-5.6.4. Fixes + #21919. +

      +
    • +
    • +

      + [bdubbs] - Update to libinput-1.29.0 (Xorg driver). + Fixes + #21912. +

      +
    • +
    • +

      + [bdubbs] - Update to php-8.4.11. Fixes + #21911. +

      +
    • +
    • +

      + [bdubbs] - Update to SPIRV-LLVM-Translator-20.1.5. + Fixes + #21910. +

      +
    • +
    +
    +
  • +
  • +

    + August 2nd, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to node.js-22.18.0. Fixes + + #21847. +

      +
    • +
    • +

      + [bdubbs] - Update to unrar-7.1.10. Fixes + #21908. +

      +
    • +
    • +

      + [bdubbs] - Update to sqlite-autoconf-3500400 + (3.50.4). Fixes + #21907. +

      +
    • +
    • +

      + [bdubbs] - Update to umockdev-0.19.3. Fixes + + #21906. +

      +
    • +
    • +

      + [bdubbs] - Update to LVM2.2.03.34. Fixes + #21905. +

      +
    • +
    +
    +
  • +
  • +

    + July 30th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to Net-DNS-1.52 (Perl module). + Fixes + #21901. +

      +
    • +
    • +

      + [bdubbs] - Update to graphviz-13.1.1. Fixes + + #21900. +

      +
    • +
    • +

      + [bdubbs] - Update to enchant-2.8.12. Fixes + + #21899. +

      +
    • +
    +
    +
  • +
  • +

    + July 29th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to mupdf-1.26.4. Fixes + #21898. +

      +
    • +
    • +

      + [bdubbs] - Update to sysstat-12.7.8. Fixes + + #21897. +

      +
    • +
    • +

      + [bdubbs] - Update to pinentry-1.3.2. Fixes + + #21896. +

      +
    • +
    +
    +
  • +
  • +

    + July 28th, 2025 +

    +
    +
      +
    • +

      + [xry111] - Update to llvm-20.1.8 and libclc-20.1.8. + Fixes + #21836. +

      +
    • +
    • +

      + [bdubbs] - Update to mpg123-1.33.1. Fixes + #21894. +

      +
    • +
    • +

      + [bdubbs] - Update to xgamma-1.0.8 (Xorg app). Fixes + + #21893. +

      +
    • +
    • +

      + [bdubbs] - Update to rpcbind-1.2.8. Fixes + #21892. +

      +
    • +
    • +

      + [renodr] - Update to OpenJDK-24.0.2 (Security + Update). Fixes + #21846. +

      +
    • +
    +
    +
  • +
  • +

    + July 27th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Added a patch to the book to backport + several fixes from the Qt 6.9 branch upstream. This + fixes crashes in Plasma 6.4, and a security + vulnerability. Fixes + #21858. +

      +
    • +
    • +

      + [renodr] - Update to intel-media-driver-25.2.6. + Fixes + #21864. +

      +
    • +
    • +

      + [renodr] - Update to intel-gmmlib-22.8.1. Fixes + + #21864. +

      +
    • +
    • +

      + [bdubbs] - Update to xdriinfo-1.0.8 (Xorg app). + Fixes + #21891. +

      +
    • +
    • +

      + [bdubbs] - Update to xdpyinfo-1.4.0 (Xorg app). + Fixes + #21890. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.3.3. Fixes + + #21889. +

      +
    • +
    • +

      + [bdubbs] - Update to sudo-1.9.17p2. Fixes + #21888. +

      +
    • +
    +
    +
  • +
  • +

    + July 26th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to inih-61. Fixes + #21887. +

      +
    • +
    • +

      + [thomas] - Update to libnvme-1.15. Fixes + #21886. +

      +
    • +
    • +

      + [bdubbs] - Update to pipewire-1.4.7. Fixes + + #21883. +

      +
    • +
    • +

      + [bdubbs] - Update to numpy-2.3.2. Fixes + #21882. +

      +
    • +
    • +

      + [bdubbs] - Update to unrar-7.1.9. Fixes + #21881. +

      +
    • +
    • +

      + [bdubbs] - Update to httpd-2.4.65 (Security + Update). Fixes + #21880. +

      +
    • +
    • +

      + [bdubbs] - Update to qemu-10.0.3. Fixes + #21879. +

      +
    • +
    • +

      + [bdubbs] - Add a patch to sharutils to fix building + with GCC-15. Fixes + #21884. +

      +
    • +
    +
    +
  • +
  • +

    + July 25th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to ed-1.22. Fixes + #21878. +

      +
    • +
    +
    +
  • +
  • +

    + July 22nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to enchant-2.8.11. Fixes + + #21877. +

      +
    • +
    • +

      + [zeckma] - Update to thunderbird-140.1.0esr + (security update). Fixes + #21876. +

      +
    • +
    • +

      + [zeckma] - Update to firefox-140.1.0esr and + spidermonkey-128.13.0esr (security update). Fixes + + #21875. +

      +
    • +
    • +

      + [renodr] - Update to fuse-3.17.3. Fixes + #21870. +

      +
    • +
    • +

      + [renodr] - Update to 7zip-25.00 (Security Update). + Fixes + #21868. +

      +
    • +
    • +

      + [bdubbs] - Update to fltk-1.4.4. Fixes + #21874. +

      +
    • +
    • +

      + [bdubbs] - Update to pixman-0.46.4. Fixes + #21873. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.3.2. Fixes + + #21872. +

      +
    • +
    +
    +
  • +
  • +

    + July 19th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update gstreamer files to version + 1.26.4. Fixes + #21863. +

      +
    • +
    • +

      + [bdubbs] - Update to nss-3.114. Fixes + #21871. +

      +
    • +
    • +

      + [bdubbs] - Update to thunar-4.20.4. Fixes + #21869. +

      +
    • +
    • +

      + [bdubbs] - Update to sqlite-autoconf-3500300 + (3.50.3). Fixes + #21867. +

      +
    • +
    +
    +
  • +
  • +

    + July 19th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to whois-5.6.3. Fixes + #21866. +

      +
    • +
    • +

      + [bdubbs] - Update to nspr-4.37. Fixes + #21865. +

      +
    • +
    • +

      + [bdubbs] - Update to curl-8.15.0. Fixes + #21861. +

      +
    • +
    • +

      + [bdubbs] - Update to wireshark-4.4.8. Fixes + + #21860. +

      +
    • +
    +
    +
  • +
  • +

    + July 18th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to audacious and + audacious-plugins 4.5. Fixes + #21854. +

      +
    • +
    • +

      + [bdubbs] - Update to neon-0.35.0. Fixes + #21856. +

      +
    • +
    • +

      + [bdubbs] - Update to Vulkan-Headers and + Vulkan-Loader 1.4.321. Fixes + #21852. +

      +
    • +
    • +

      + [bdubbs] - Update to SPIRV-Headers and SPIRV-Tools + 1.4.321.0. Fixes + #21849. +

      +
    • +
    +
    +
  • +
  • +

    + July 17th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to ruby-3.4.5 (Security Update). + Fixes + #21851. +

      +
    • +
    • +

      + [renodr] - Update to httpd-2.4.64 (Security + Update). Fixes + #21841. +

      +
    • +
    • +

      + [renodr] - Update to unbound-1.23.1 (Security + Update). Fixes + #21862. +

      +
    • +
    • +

      + [renodr] - Update to bind-9.20.11 (Security + Update). Fixes + #21857. +

      +
    • +
    • +

      + [renodr] - Update to libxml2-2.14.5 (Security + Update). Fixes + #21855. +

      +
    • +
    • +

      + [renodr] - Update to gnome-maps-48.5. Fixes + + #21853. +

      +
    • +
    • +

      + [renodr] - Update to balsa-2.6.5. Fixes + #21832. +

      +
    • +
    +
    +
  • +
  • +

    + July 16th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to gexiv2-0.14.6. Fixes + #21859. +

      +
    • +
    • +

      + [renodr] - Update to python_dbusmock-0.36.0 (Python + Module). Fixes + #21850. +

      +
    • +
    +
    +
  • +
  • +

    + July 15th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1552 (Security + update). Fixes + #21848. +

      +
    • +
    • +

      + [bdubbs] - Update to icewm-3.8.1. Fixes + #21845. +

      +
    • +
    +
    +
  • +
  • +

    + July 13th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to wayland-1.24.0. Fixes + + #21844. +

      +
    • +
    +
    +
  • +
  • +

    + July 10th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to postfix-3.10.3. Fixes + + #21842. +

      +
    • +
    • +

      + [bdubbs] - Update to IO-Socket-SSL-2.095 (Perl + Module). Fixes + #21840. +

      +
    • +
    +
    +
  • +
  • +

    + July 10th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to thunderbird-140.0.1esr. Fixes + + #21838. +

      +
    • +
    • +

      + [bdubbs] - Update to libwebp-1.6.0. Fixes + #21837. +

      +
    • +
    • +

      + [bdubbs] - Update to tcsh-6.24.16. Fixes + #21835. +

      +
    • +
    • +

      + [renodr] - Update to gnutls-3.8.10 (Security + Update). Fixes + #21834. +

      +
    • +
    • +

      + [renodr] - Update to git-2.50.1 (Security Update). + Fixes + #21829. +

      +
    • +
    +
    +
  • +
  • +

    + July 9th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to NetworkManager-1.52.1. Fixes + + #21830. +

      +
    • +
    • +

      + [renodr] - Update to opencv-4.12.0. Fixes + #21813. +

      +
    • +
    • +

      + [bdubbs] - Update to gpgme-2.0.0. Add new page, + gpgmepp-2.0.0. Fixes + #21674. +

      +
    • +
    • +

      + [bdubbs] - Update to gmime-3.2.15. Fixes + #21831. +

      +
    • +
    +
    +
  • +
  • +

    + July 8th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to Test-Differences-0.72 (Perl + module). Fixes + #21828. +

      +
    • +
    • +

      + [bdubbs] - Update to frei0r-2.3.3. Fixes + #21826. +

      +
    • +
    • +

      + [bdubbs] - Move dvd+rw-tools to anduin. Fixes + + #21827. +

      +
    • +
    +
    +
  • +
  • +

    + July 7th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to samba-4.22.3. Fixes + #21825. +

      +
    • +
    • +

      + [renodr] - Update to asymptote-3.05. Fixes + + #21821. +

      +
    • +
    • +

      + [renodr] - Update to gi_docgen-2025.4 (Python + Module). Fixes + #21817. +

      +
    • +
    +
    +
  • +
  • +

    + July 6th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to poppler-25.07.0. Fixes + + #21823. +

      +
    • +
    • +

      + [bdubbs] - Update to Net-DNS-1.51 (Perl module). + Fixes + #21824. +

      +
    • +
    +
    +
  • +
  • +

    + July 4th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libpng-1.6.50. Fixes + #21819. +

      +
    • +
    • +

      + [bdubbs] - Update to php-8.4.10 (Security update). + Fixes + #21820. +

      +
    • +
    • +

      + [zeckma] - Update to nss-3.113.1. Fixes + #21822. +

      +
    • +
    +
    +
  • +
  • +

    + July 3rd, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to Kea-3.0.0. Fixes + #21777. +

      +
    • +
    +
    +
  • +
  • +

    + July 2nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to fontconfig-2.17.1. Fixes + + #21812. +

      +
    • +
    • +

      + [bdubbs] - Update to hwdata-0.397. Fixes + #21814. +

      +
    • +
    • +

      + [bdubbs] - Update to xterm-401. Fixes + #21815. +

      +
    • +
    +
    +
  • +
  • +

    + July 2nd, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to evince-48.1. Fixes + #21800. +

      +
    • +
    • +

      + [renodr] - Update to nautilus-48.3. Fixes + #21799. +

      +
    • +
    • +

      + [renodr] - Update to mutter-48.4. Fixes + #21798. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell and + gnome-shell-extensions 48.3. Fixes + #21797. +

      +
    • +
    • +

      + [renodr] - Update to vte-0.80.3. Fixes + #21795. +

      +
    • +
    • +

      + [renodr] - Update to gnome-online-accounts-3.54.4. + Fixes + #21794. +

      +
    • +
    • +

      + [renodr] - Update to gnome-control-center-48.3. + Fixes + #21786. +

      +
    • +
    • +

      + [xry111] - Update to cargo-c-0.10.14. Fixes + + #21789. +

      +
    • +
    • +

      + [xry111] - Update to rustc-1.88.0. Fixes + #21780. +

      +
    • +
    • +

      + [xry111] - Update to llvm-20.1.7 and libclc-20.1.7. + Fixes + #21373. +

      +
    • +
    • +

      + [renodr] - Update to cryptsetup-2.8.0. Fixes + + #21768. +

      +
    • +
    • +

      + [renodr] - Update the gstreamer stack to 1.26.3 + (Security Update). Fixes + #21781. +

      +
    • +
    • +

      + [bdubbs] - Update to graphviz-13.1.0. Fixes + + #21810. +

      +
    • +
    • +

      + [bdubbs] - Update to lsof-4.99.5. Fixes + #21811. +

      +
    • +
    • +

      + [bdubbs] - Update to SPIRV-LLVM-Translator-20.1.4. + Fixes + #21808. +

      +
    • +
    • +

      + [bdubbs] - Update to taglib-2.1.1. Fixes + #21807. +

      +
    • +
    • +

      + [bdubbs] - Update to libqalculate-5.6.0. Fixes + + #21805. +

      +
    • +
    • +

      + [bdubbs] - Update to LVM2.2.03.33. Fixes + #21803. +

      +
    • +
    • +

      + [bdubbs] - Update to sudo-1.9.17p1 (Security + Update). Fixes + #21802. +

      +
    • +
    +
    +
  • +
  • +

    + July 1st, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to thunderbird-140.0esr (security + update). Fixes + #21773. +

      +
    • +
    • +

      + [bdubbs] - Update to lxqt-powermanagement-2.2.1. + Fixes + #21801. +

      +
    • +
    +
    +
  • +
  • +

    + June 29th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1497. Sync with LFS. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.18.0. Sync with LFS. +

      +
    • +
    +
    +
  • +
  • +

    + June 29th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to mupdf-1.26.3. Fixes + #21796. +

      +
    • +
    • +

      + [bdubbs] - Update to libadwaita-1.7.5. Fixes + + #21792. +

      +
    • +
    • +

      + [bdubbs] - Update to at-spi2-core-2.56.3. Fixes + + #21791. +

      +
    • +
    • +

      + [bdubbs] - Update to sqlite-autoconf-3500200 + (3.50.2). Fixes + #21790. +

      +
    • +
    • +

      + [bdubbs] - Update to libproxy-0.5.10. Fixes + + #21788. +

      +
    • +
    • +

      + [bdubbs] - Update to pipewire-1.4.6. Fixes + + #21778. +

      +
    • +
    +
    +
  • +
  • +

    + June 28th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to pango-1.56.4. Fixes + #21787. +

      +
    • +
    • +

      + [bdubbs] - Update to glslang-15.4.0. Fixes + + #21784. +

      +
    • +
    • +

      + [bdubbs] - Update to libwww-perl-6.79 (Perl module + LWP). Fixes + #21783. +

      +
    • +
    • +

      + [bdubbs] - Update to fontconfig-2.17.0. Fixes + + #21782. +

      +
    • +
    • +

      + [bdubbs] - Update to lxml-6.0.0 (Python module). + Fixes + #21779. +

      +
    • +
    • +

      + [bdubbs] - Update to nettle-3.10.2. Fixes + #21778. +

      +
    • +
    +
    +
  • +
  • +

    + June 26th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to node.js-22.17.0. Fixes + + #21771. +

      +
    • +
    • +

      + [zeckma] - Update to firefox-140.0esr (security + update). Fixes + #21766. +

      +
    • +
    • +

      + [bdubbs] - Update to xfsprogs-6.15.0. Fixes + + #21770. +

      +
    • +
    • +

      + [bdubbs] - Update to glslc from shaderc-2025.3. + Fixes + #21774. +

      +
    • +
    • +

      + [bdubbs] - Update to unrar-7.1.8. Fixes + #21776. +

      +
    • +
    +
    +
  • +
  • +

    + June 24th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to btrfs-progs-v6.15. Fixes + + #21765. +

      +
    • +
    • +

      + [bdubbs] - Update to colord-1.4.8. Fixes + #21767. +

      +
    • +
    +
    +
  • +
  • +

    + June 23rd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to icewm-3.8.0. Fixes + #21763. +

      +
    • +
    • +

      + [bdubbs] - Update to lxqt-panel-2.2.2. Fixes + + #21764. +

      +
    • +
    +
    +
  • +
  • +

    + June 22nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to lxqt-build-tools-2.2.1. Fixes + + #21762. +

      +
    • +
    • +

      + [bdubbs] - Update to sudo-1.9.17. Fixes + #21757. +

      +
    • +
    • +

      + [bdubbs] - Update to Linux-PAM-1.7.1 (Security + release). Fixes + #21738. +

      +
    • +
    • +

      + [renodr] - Update to pygments-2.19.2 (Python + Module). Fixes + #21761. +

      +
    • +
    • +

      + [renodr] - Update to numpy-2.3.1 (Python Module). + Fixes + #21760. +

      +
    • +
    • +

      + [renodr] - Update to pciutils-3.14.0. Fixes + + #21759. +

      +
    • +
    • +

      + [renodr] - Update to enchant-2.8.10. Fixes + + #21758. +

      +
    • +
    • +

      + [renodr] - Update to fetchmail-6.5.4. Fixes + + #21741. +

      +
    • +
    • +

      + [renodr] - Update to yelp-xsl-42.4 and yelp-42.3. + Fixes + #21721. +

      +
    • +
    • +

      + [renodr] - Fix a security vulnerability in udisks + that can allow for local privilege escalation. + Fixes + #21754. +

      +
    • +
    • +

      + [thomas] - Change postfix instructions to fix an + gcc-15 issue. +

      +
    • +
    • +

      + [bdubbs] - Update to ImageMagick-7.1.1-47. + Addresses + #16962. +

      +
    • +
    +
    +
  • +
  • +

    + June 21st, 2025 +

    +
    +
      +
    • +

      + [rahul] - Make firefox icon work post-launch under + wayland. +

      +
    • +
    • +

      + [bdubbs] - Update to nss-3.113. Fixes + #21755. +

      +
    • +
    • +

      + [bdubbs] - Update to LMDB_0.9.33. Fixes + #21753. +

      +
    • +
    • +

      + [bdubbs] - Update to xfburn-0.8.0. Fixes + #21752. +

      +
    • +
    • +

      + [bdubbs] - Update to pytest-8.4.1 (Python module). + Fixes + #21750. +

      +
    • +
    +
    +
  • +
  • +

    + June 20th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libblockdev-3.3.1 (Security + release). Fixes + #21745. +

      +
    • +
    • +

      + [bdubbs] - Update to enchant-2.8.9. Fixes + #21744. +

      +
    • +
    • +

      + [bdubbs] - Update to adwaita-icon-theme-48.1. Fixes + + #21743. +

      +
    • +
    • +

      + [bdubbs] - Update to nghttp2-1.66.0. Fixes + + #21742. +

      +
    • +
    • +

      + [bdubbs] - Update to abseil-cpp-20250512.1. Fixes + + #21740. +

      +
    • +
    • +

      + [zeckma] - Update to xwayland-24.1.8 (security + update). Fixes + #21747. +

      +
    • +
    • +

      + [zeckma] - Update to xorg-server-21.1.18 (security + update). Fixes + #21746. +

      +
    • +
    • +

      + [thomas] - Update to bind-9.20.10 and + bind-utils-9.20.10. Fixes + #21751. +

      +
    • +
    +
    +
  • +
  • +

    + June 19th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libogg-1.3.6. Fixes + #21735. +

      +
    • +
    • +

      + [bdubbs] - Update to git-2.50.0. Fixes + #21734. +

      +
    • +
    • +

      + [bdubbs] - Update to IO-Socket-SSL-2.094 (Perl + module). Fixes + #21733. +

      +
    • +
    • +

      + [bdubbs] - Update URL and instructions for + ntfs-3g-2022.10.3. Fixes + #21739. +

      +
    • +
    • +

      + [bdubbs] - Update to libxml2-2.14.4 (security + update). Fixes + #21732. +

      +
    • +
    +
    +
  • +
  • +

    + June 17th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to xwayland-24.1.7 (security + update). Fixes + #21737. +

      +
    • +
    • +

      + [zeckma] - Update to xorg-server-21.1.17 (security + update). Fixes + #21736. +

      +
    • +
    +
    +
  • +
  • +

    + June 16th, 2025 +

    +
    +
      +
    • +

      + [rahul] - Change ffmpeg dependencies to include + libplacebo and drop ffmpeg dependency in + libplacebo. +

      +
    • +
    • +

      + [bdubbs] - Update to graphviz-13.0.1. Fixes + + #21730. +

      +
    • +
    • +

      + [bdubbs] - Update to libwacom-2.16.1. Fixes + + #21729. +

      +
    • +
    • +

      + [bdubbs] - Update to xterm-400. Fixes + #21731. +

      +
    • +
    +
    +
  • +
  • +

    + June 15th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to glib-2.84.3. Fixes + #21725. +

      +
    • +
    • +

      + [bdubbs] - Update to cmake-4.0.3. Fixes + #21728. +

      +
    • +
    • +

      + [bdubbs] - Update to libpng-1.6.49. Fixes + #21727. +

      +
    • +
    • +

      + [bdubbs] - Update to wayland-protocols-1.45. Fixes + + #21726. +

      +
    • +
    • +

      + [bdubbs] - Update to jansson-2.14.1. Fixes + + #21723. +

      +
    • +
    • +

      + [bdubbs] - Update to inih-r60. Fixes + #21722. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.13.5. Fixes + #21716. +

      +
    • +
    +
    +
  • +
  • +

    + June 13th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to graphviz-13.0.0. Fixes + + #21703. +

      +
    • +
    • +

      + [renodr] - Update to libwacom-2.16.0. Fixes + + #21719. +

      +
    • +
    • +

      + [renodr] - Update to fetchmail-6.5.3. Fixes + + #21713. +

      +
    • +
    • +

      + [renodr] - Update to cifs-utils-7.4. Fixes + + #21712. +

      +
    • +
    • +

      + [renodr] - Update to unrar-7.1.7. Fixes + #21711. +

      +
    • +
    • +

      + [renodr] - Restore the instructions to make-ca to + use system certificates when using 'pip' instead of + bundled certificates. +

      +
    • +
    • +

      + [bdubbs] - Update to nano-8.5. Fixes + #21718. +

      +
    • +
    • +

      + [bdubbs] - Update to gtk-4.18.6. Fixes + #21710. +

      +
    • +
    +
    +
  • +
  • +

    + June 12th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to IO-Socket-SSL-2.091 (Perl + module). Fixes + #21715. +

      +
    • +
    +
    +
  • +
  • +

    + June 11th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to thunderbird-128.11.1esr + (security update). Fixes + #21714. +

      +
    • +
    +
    +
  • +
  • +

    + June 10th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to requests-2.32.4 (Python + module) (Security update). Fixes + #21709. +

      +
    • +
    • +

      + [bdubbs] - Update to cython-3.1.2 (Python module). + Fixes + #21708. +

      +
    • +
    • +

      + [bdubbs] - Update to pixman-0.46.2. Fixes + #21707. +

      +
    • +
    +
    +
  • +
  • +

    + June 9th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to konsole-25.4.2 (Security + Update). See + #21554. +

      +
    • +
    • +

      + [renodr] - Update to libdrm-2.4.125. Fixes + + #21705. +

      +
    • +
    • +

      + [renodr] - Update to rust-bindgen-0.72.0. Fixes + + #21704. +

      +
    • +
    • +

      + [renodr] - Update to gnome-maps-48.4. Fixes + + #21700. +

      +
    • +
    • +

      + [renodr] - Update to samba-4.22.2 (Security + Update). Fixes + #21691. +

      +
    • +
    • +

      + [bdubbs] - Update to lua-5.4.8. Fixes + #21706. +

      +
    • +
    • +

      + [bdubbs] - Update to mpg123-1.33.0. Fixes + #21702. +

      +
    • +
    • +

      + [bdubbs] - Update to libass-0.17.4. Fixes + #21701. +

      +
    • +
    • +

      + [bdubbs] - Update to xkeyboard-config-2.45. Fixes + + #21699. +

      +
    • +
    • +

      + [renodr] - Fix building Inkscape with + poppler-25.06.0. Fixes + #21683. +

      +
    • +
    +
    +
  • +
  • +

    + June 7th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to numpy-2.3.0. Fixes + #21698. +

      +
    • +
    +
    +
  • +
  • +

    + June 7th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libvpx-1.15.2 (Security + release). Fixes + #21695. +

      +
    • +
    • +

      + [bdubbs] - Update to sqlite-autoconf-3500100. Fixes + + #21694. +

      +
    • +
    • +

      + [bdubbs] - Update to whois-5.6.2. Fixes + #21693. +

      +
    • +
    • +

      + [zeckma] - Update to mesa-25.1.3. Fixes + #21696. +

      +
    • +
    +
    +
  • +
  • +

    + June 6th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to mesa-25.1.2. Fixes + #21548. +

      +
    • +
    • +

      + [bdubbs] - Update to File-Find-Rule-0.35 (Perl + module; security update). Fixes + #21690. +

      +
    • +
    • +

      + [bdubbs] - Update to php-8.4.8. Fixes + #21692. +

      +
    • +
    • +

      + [bdubbs] - Update to pipewire-1.4.5. Fixes + + #21686. +

      +
    • +
    • +

      + [bdubbs] - Update to wireshark-4.4.7 (Security + update). Fixes + #21685. +

      +
    • +
    • +

      + [bdubbs] - Update to mupdf-1.26.2. Fixes + #21687. +

      +
    • +
    • +

      + [bdubbs] - Update to sentry_sdk-2.29.1 (Python + module). Fixes + #21313. +

      +
    • +
    +
    +
  • +
  • +

    + June 4th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to SDL2-2.32.8. Fixes + #21681. +

      +
    • +
    • +

      + [bdubbs] - Update to curl-8.14.1 (Security Update). + Fixes + #21680. +

      +
    • +
    • +

      + [bdubbs] - Update to hwdata-0.396. Fixes + #21676. +

      +
    • +
    • +

      + [bdubbs] - Update to poppler-25.06.0 (Security + Update). Fixes + #21675. +

      +
    • +
    • +

      + [renodr] - Update to Python-3.13.4 (Security + Update). Fixes + #21677. +

      +
    • +
    • +

      + [renodr] - Update to IO-Socket-SSL-2.090 (Perl + Module). Fixes + #21678. +

      +
    • +
    • +

      + [renodr] - Update to make-ca-1.16.1. Fixes + + #21682. +

      +
    • +
    +
    +
  • +
  • +

    + June 3rd, 2025 +

    +
    +
      +
    • +

      + [renodr] - Temporarily fix building Texlive with + GCC 15 by setting the C standard to C17. Upstream + has made some progress, but there are still several + components that need to be updated to fully support + C23. +

      +
    • +
    • +

      + [renodr] - Temporarily fix building procmail with + GCC 15 by setting the C standard to C17. +

      +
    • +
    • +

      + [renodr] - Update to Qt-6.9.1 and QtWebEngine-6.9.1 + (Security Update). Fixes + #21672. +

      +
    • +
    • +

      + [renodr] - Update to mutter-48.3.1. Fixes + #21673. +

      +
    • +
    • +

      + [renodr] - Update to pytest-8.4.0 (Python Module). + Fixes + #21671. +

      +
    • +
    • +

      + [renodr] - Update to bluez-5.83. Fixes + #21670. +

      +
    • +
    • +

      + [renodr] - Fix building Guile with GCC 15. +

      +
    • +
    • +

      + [renodr] - Fix building GPM with GCC 15. +

      +
    • +
    +
    +
  • +
  • +

    + June 2nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1418. Fixes + #12241. +

      +
    • +
    • +

      + [renodr] - Update to mariadb-11.4.7 (Security + Update). Fixes + #21669. +

      +
    • +
    • +

      + [renodr] - Update to gnome-desktop-44.3. Fixes + + #21668. +

      +
    • +
    • +

      + [renodr] - Update to dhcpcd-10.2.4. Fixes + #21667. +

      +
    • +
    • +

      + [renodr] - Update to libusb-1.0.29. Fixes + #21666. +

      +
    • +
    • +

      + [renodr] - Update to libarchive-3.8.1. Fixes + + #21665. +

      +
    • +
    • +

      + [renodr] - Fix building evince with GCC 15 if + texlive is installed. +

      +
    • +
    • +

      + [renodr] - Fix building sendmail with GCC 15. +

      +
    • +
    • +

      + [renodr] - Fix building GDM with GCC 15. +

      +
    • +
    • +

      + [renodr] - Fix building cifs-utils with GCC 15. +

      +
    • +
    +
    +
  • +
  • +

    + June 1st, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to taglib-2.1. Fixes + #21664. +

      +
    • +
    • +

      + [bdubbs] - Update to SPIRV-LLVM-Translator-20.1.3. + Fixes + #21663. +

      +
    • +
    • +

      + [bdubbs] - Update to enchant-2.8.6. Fixes + #21662. +

      +
    • +
    +
    +
  • +
  • +

    + May 31st, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to gcc-15.1.0. Fixes + #21507. +

      +
    • +
    +
    +
  • +
  • +

    + May 30th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to sane-backends-1.4.0. Fixes + + #21660. +

      +
    • +
    • +

      + [renodr] - Update the gstreamer stack to 1.26.2 + (Security Update). Fixes + #21658. +

      +
    • +
    • +

      + [renodr] - Update to pipewire-1.4.4. Fixes + + #21659. +

      +
    • +
    • +

      + [bdubbs] - Update to cbindgen-0.29.0. Fixes + + #21607. +

      +
    • +
    • +

      + [renodr] - Update to sqlite-3.50.0. Fixes + #21657. +

      +
    • +
    +
    +
  • +
  • +

    + May 29th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to qemu-10.0.2. Fixes + #21647. +

      +
    • +
    • +

      + [thomas] - Update to Kea-2.6.3. Fixes + #21652. +

      +
    • +
    • +

      + [bdubbs] - Update to protobuf-31.1. Fixes + #21656. +

      +
    • +
    • +

      + [bdubbs] - Update to curl-8.14.0. Fixes + #21650. +

      +
    • +
    • +

      + [renodr] - Update to mutter-48.3. Fixes + #21646. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell and + gnome-shell-extensions 48.2. Fixes + #21645. +

      +
    • +
    • +

      + [renodr] - Update to gnome-control-center-48.2. + Fixes + #21644. +

      +
    • +
    • +

      + [renodr] - Update to nautilus-48.2. Fixes + #21638. +

      +
    • +
    • +

      + [renodr] - Update to gnome-maps-48.3. Fixes + + #21633. +

      +
    • +
    • +

      + [renodr] - Update to vte-0.80.2. Fixes + #21632. +

      +
    • +
    +
    +
  • +
  • +

    + May 28th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to gnome-user-docs-48.2. Fixes + + #21631. +

      +
    • +
    • +

      + [renodr] - Update to gnome-backgrounds-48.2.1. + Fixes + #21629. +

      +
    • +
    • +

      + [renodr] - Update to evolution and + evolution-data-server 3.56.2. Fixes + #21626. +

      +
    • +
    • +

      + [renodr] - Update to gnome-online-accounts-3.54.3. + Fixes + #21630. +

      +
    • +
    • +

      + [renodr] - Update to webkitgtk-2.48.3. Fixes + + #21653. +

      +
    • +
    • +

      + [renodr] - Update to asymptote-3.05. Fixes + + #21639. +

      +
    • +
    • +

      + [renodr] - Update to dvisvgm-3.5. Fixes + #21627. +

      +
    • +
    • +

      + [renodr] - Update to Thunderbird-128.11.0esr + (Security Update). Fixes + #21655. +

      +
    • +
    • +

      + [renodr] - Update to Firefox-128.11.0esr and + Spidermonkey (Security Update). Fixes + #21642. +

      +
    • +
    • +

      + [renodr] - Update to libadwaita-1.7.4. Fixes + + #21643. +

      +
    • +
    • +

      + [renodr] - Update to xdg-desktop-portal-1.20.3. + Fixes + #21581. +

      +
    • +
    • +

      + [renodr] - Fix building uchardet against CMake-4. +

      +
    • +
    • +

      + [thomas] - Update to nss-3.112. Fixes + #21648. +

      +
    • +
    • +

      + [thomas] - Update to libslirp-4.9.1. Fixes + + #21649. +

      +
    • +
    +
    +
  • +
  • +

    + May 27th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to stunnel-5.75. Fixes + #21641. +

      +
    • +
    +
    +
  • +
  • +

    + May 26th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to liblinear-249. Fixes + #21640. +

      +
    • +
    • +

      + [bdubbs] - Update to gexiv2-0.14.5. Fixes + #21637. +

      +
    • +
    • +

      + [bdubbs] - Update to icewm-3.7.5. Fixes + #21635. +

      +
    • +
    • +

      + [bdubbs] - Update to enchant-2.8.5. Fixes + #21635. +

      +
    • +
    • +

      + [bdubbs] - Update to doxygen-1.14.0. Fixes + + #21628. +

      +
    • +
    +
    +
  • +
  • +

    + May 24th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to lm-sensors-3-6-2. Fixes + + #21623. +

      +
    • +
    • +

      + [thomas] - Update to bind-9.20.9 and + bind-utils-9.20.9 (Security Update). Fixes + + #21613. +

      +
    • +
    • +

      + [bdubbs] - Update to libadwaita-1.7.3. Fixes + + #21625. +

      +
    • +
    • +

      + [bdubbs] - Update to python-dbusmock-0.35.0 (Python + module). Fixes + #21624. +

      +
    • +
    • +

      + [bdubbs] - Update to pipewire-1.4.3. Fixes + + #21622. +

      +
    • +
    • +

      + [bdubbs] - Update to libunwind-1.8.2. Fixes + + #21620. +

      +
    • +
    • +

      + [bdubbs] - Update to libplacebo-7.351.0. Fixes + + #21616. +

      +
    • +
    • +

      + [thomas] - Update to parole-4.20.0. Fixes + #21615. +

      +
    • +
    • +

      + [thomas] - Update to libxfce4windowing-4.20.3. + Fixes + #21614. +

      +
    • +
    • +

      + [thomas] - Update to openldap-2.6.10. Fixes + + #21621. +

      +
    • +
    +
    +
  • +
  • +

    + May 23rd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libxkbcommon-1.10.0. Fixes + + #21611. +

      +
    • +
    • +

      + [bdubbs] - Update to mupdf-1.26.1. Fixes + #21610. +

      +
    • +
    • +

      + [bdubbs] - Update to valgrind-3.25.1. Fixes + + #21608. +

      +
    • +
    • +

      + [bdubbs] - Update to libnvme-1.14. Fixes + #21606. +

      +
    • +
    • +

      + [bdubbs] - Update to glib-2.84.2. Fixes + #21604. +

      +
    • +
    • +

      + [bdubbs] - Update to bluez-5.82. Fixes + #21602. +

      +
    • +
    • +

      + [bdubbs] - Update to wireplumber-0.5.10. Fixes + + #21601. +

      +
    • +
    • +

      + [bdubbs] - Update to cython-3.1.1 (Python module). + Fixes + #21600. +

      +
    • +
    • +

      + [bdubbs] - Update to highlight-4.16. Fixes + + #21599. +

      +
    • +
    • +

      + [bdubbs] - Update to gpgme-1.24.3. Fixes + #21598. +

      +
    • +
    +
    +
  • +
  • +

    + May 22nd, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to node.js-22.16.0. Fixes + + #21612. +

      +
    • +
    +
    +
  • +
  • +

    + May 21st, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to libarchive-3.8.0 (Security + Update). Fixes + #21605. +

      +
    • +
    +
    +
  • +
  • +

    + May 20th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to asymptote-3.03. Fixes + + #21557. +

      +
    • +
    • +

      + [renodr] - Fix known issues in texlive with + xdvipdfmx, pdftex, and LuaTeX. Fixes + #21577. +

      +
    • +
    • +

      + [renodr] - Fix CVE-2025-4516 in Python (Security + Update). Fixes + #21584. +

      +
    • +
    • +

      + [zeckma] - Update to thunderbird-128.10.2esr + (security update). Fixes + #21597. +

      +
    • +
    • +

      + [thomas] - Update to gimp-3.0.4 (Security Update). + Fixes + #21603. +

      +
    • +
    +
    +
  • +
  • +

    + May 19th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to OpenJDK-24.0.1 (Security + Update). Fixes + #21296. +

      +
    • +
    • +

      + [renodr] - Update to WebKitGTK-2.48.2 (Security + Update). Fixes + #21572. +

      +
    • +
    • +

      + [renodr] - Archive libsoup2. Fixes + #21575. +

      +
    • +
    • +

      + [renodr] - Archive libgdata. It depends on + libsoup2, and is no longer maintained. +

      +
    • +
    • +

      + [renodr] - Archive uhttpmock. It's no longer needed + and was only used by libgdata, which is getting + archived next. +

      +
    • +
    • +

      + [renodr] - Archive AbiWord. It is unmaintained, and + the website is no longer available for it. +

      +
    • +
    • +

      + [renodr] - Fix several security vulnerabilities in + giflib. Fixes + #21574. +

      +
    • +
    • +

      + [renodr] - Update to libreoffice-25.2.3.2. Fixes + + #21524. +

      +
    • +
    • +

      + [bdubbs] - Update to sessreg-1.1.4, smproxy-1.0.8, + and xcursorgen-1.0.9 (Xorg apps). Fixes + #21596. +

      +
    • +
    • +

      + [bdubbs] - Update to xterm-399. Fixes + #21595. +

      +
    • +
    • +

      + [bdubbs] - Update to screengrab-3.0.0. Fixes + + #21594. +

      +
    • +
    • +

      + [bdubbs] - Update to qps-2.11.1. Fixes + #21593. +

      +
    • +
    • +

      + [bdubbs] - Update to lxqt-panel-2.2.1. Fixes + + #21592. +

      +
    • +
    • +

      + [bdubbs] - Update to numpy-2.2.6 (Python module). + Fixes + #21590. +

      +
    • +
    • +

      + [bdubbs] - Update to + plasma-wayland-protocols-1.18.0. Fixes + #21582. +

      +
    • +
    • +

      + [renodr] - Update to fop-2.11. Fixes + #21539. +

      +
    • +
    +
    +
  • +
  • +

    + May 18th, 2025 +

    +
    +
      +
    • +

      + [xry111] - Update to cargo-c-0.10.13. Fixes + + #21586. +

      +
    • +
    • +

      + [xry111] - Update to rustc-1.87.0. Fixes + #21580. +

      +
    • +
    • +

      + [zeckma] - Update to js-128.10.1 (spidermonkey) and + firefox-128.10.1 (security update). Fixes + #21588. +

      +
    • +
    • +

      + [thomas] - Update to thunar-4.20.3. Fixes + #21583. +

      +
    • +
    • +

      + [thomas] - Update to whois-5.6.1. Fixes + #21591. +

      +
    • +
    • +

      + [thomas] - Update to apr-1.7.6. Fixes + #21585. +

      +
    • +
    +
    +
  • +
  • +

    + May 17th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to screen-5.0.1 (Security + Update). Fixes + #21558. +

      +
    • +
    • +

      + [renodr] - Update to intel-microcode-20250512 + (Security Update). Fixes + #21563. +

      +
    • +
    • +

      + [zeckma] - Update to dhcpcd-10.2.3. Fixes + #21587. +

      +
    • +
    +
    +
  • +
  • +

    + May 15th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Remove the CMake 4 workaround from + Inkscape since it has been resolved in Inkscape + 1.4.2. +

      +
    • +
    • +

      + [bdubbs] - Update to lsof-4.99.4. Fixes + #21579. +

      +
    • +
    • +

      + [bdubbs] - Update to URI-5.32 (Perl module). Fixes + + #21578. +

      +
    • +
    • +

      + [zeckma] - Update to node.js-22.15.1 (security + update). Fixes + #21569. +

      +
    • +
    • +

      + [bdubbs] - Update to userspace-rcu-0.15.3 + (liburcu). Fixes + #21573. +

      +
    • +
    • +

      + [bdubbs] - Update to ruby-3.4.4. Fixes + #21571. +

      +
    • +
    • +

      + [bdubbs] - Update to protobuf-31.0. Fixes + #21570. +

      +
    • +
    • +

      + [bdubbs] - Update to abseil-cpp-20250512.0. Fixes + + #21568. +

      +
    • +
    • +

      + [bdubbs] - Update to gnupg-2.4.8. Fixes + #21567. +

      +
    • +
    +
    +
  • +
  • +

    + May 14th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to thunderbird-128.10.1esr + (security update). Fixes + #21566. +

      +
    • +
    • +

      + [bdubbs] - Update to inkscape-1.4.2. Fixes + + #21562. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.2.1. Fixes + + #21561. +

      +
    • +
    • +

      + [bdubbs] - Update to gegl-0.4.62. Fixes + #21560. +

      +
    • +
    • +

      + [bdubbs] - Update to babl-0.1.114. Fixes + #21559. +

      +
    • +
    • +

      + [bdubbs] - Update to nmap-7.97. Fixes + #21565. +

      +
    • +
    • +

      + [zeckma] - Update to libxml2-2.14.3. Fixes + + #21564. +

      +
    • +
    +
    +
  • +
  • +

    + May 13th, 2025 +

    +
    +
      +
    • +

      + [ken] - Thanks to the generosity of Bruce and + Gerard, my font analysis and comparison website has + now been archived at + typosetting.linuxfromscratch.org and the previous + site redirects there. +

      +
    • +
    +
    +
  • +
  • +

    + May 12th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libavif-1.3.0. Fixes + #21555. +

      +
    • +
    • +

      + [bdubbs] - Update to postgresql-17.5 (Security + Update). Fixes + #21553. +

      +
    • +
    • +

      + [bdubbs] - Update to php-8.4.7. Fixes + #21552. +

      +
    • +
    • +

      + [bdubbs] - Update to cython-3.1.0 (Python module). + Fixes + #21551. +

      +
    • +
    • +

      + [bdubbs] - Update to SDL2-2.32.6. Fixes + #21538. +

      +
    • +
    • +

      + [bdubbs] - Update to nss-3.111. Fixes + #21533. +

      +
    • +
    +
    +
  • +
  • +

    + May 8th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to mlt-7.32.0. Fixes + #21550. +

      +
    • +
    • +

      + [bdubbs] - Update to sqlite-autoconf-3490200 + (3.49.2). Fixes + #21549. +

      +
    • +
    • +

      + [bdubbs] - Update to hwdata-0.395. Fixes + #21546. +

      +
    • +
    • +

      + [bdubbs] - Update to libgcrypt-1.11.1. Fixes + + #21545. +

      +
    • +
    +
    +
  • +
  • +

    + May 7th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to Vulkan-Headers and + Vulkan-Loader 1.4.313. Fixes + #21544. +

      +
    • +
    • +

      + [bdubbs] - Update to nmap-7.96. Fixes + #21542. +

      +
    • +
    • +

      + [bdubbs] - Update to cmake-4.0.2. Fixes + #21541. +

      +
    • +
    • +

      + [bdubbs] - Update to libxkbcommon-1.9.2. Fixes + + #21540. +

      +
    • +
    +
    +
  • +
  • +

    + May 6th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to qterminal-2.2.1. Fixes + + #21537. +

      +
    • +
    • +

      + [bdubbs] - Update to SPIRV-Headers and SPIRV-Tools + 1.4.313.0. Fixes + #21535. +

      +
    • +
    • +

      + [bdubbs] - Update to LVM2.2.03.32. Fixes + #21534. +

      +
    • +
    • +

      + [bdubbs] - Update to whois-5.6.0. Fixes + #21536. +

      +
    • +
    +
    +
  • +
  • +

    + May 5th, 2025 +

    +
    +
      +
    • +

      + [ken] - Add Adwaita fonts. Fixes + #21304. +

      +
    • +
    • +

      + [rahul] - Update to mesa-25.0.5. Fixes + #21522. +

      +
    • +
    • +

      + [bdubbs] - Update to twm-1.0.13.1. Fixes + #21532. +

      +
    • +
    • +

      + [bdubbs] - Update to qpdf-12.2.0. Fixes + #21531. +

      +
    • +
    • +

      + [bdubbs] - Update to poppler-25.05.0. Fixes + + #21530. +

      +
    • +
    +
    +
  • +
  • +

    + May 4th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to gtk4-4.18.5. Fixes + #21529. +

      +
    • +
    • +

      + [bdubbs] - Update to fmt-11.2.0. Fixes + #21528. +

      +
    • +
    • +

      + [bdubbs] - Update to v4l-utils-1.30.1. Fixes + + #21526. +

      +
    • +
    • +

      + [bdubbs] - Update to cachecontrol-0.14.3 (Python + module). Fixes + #21523. +

      +
    • +
    • +

      + [bdubbs] - Update to libpng-1.6.48. Fixes + #21521. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.2.0. Fixes + + #21511. +

      +
    • +
    • +

      + [bdubbs] - Update to SPIRV-LLVM-Translator-20.1.2. + Fixes + #21520. +

      +
    • +
    • +

      + [bdubbs] - Update to smartmontools-7.5. Fixes + + #21519. +

      +
    • +
    • +

      + [bdubbs] - Update to pixman-0.46.0. Fixes + #21518. +

      +
    • +
    • +

      + [bdubbs] - Update to ghostscript-10.05.1 (Security + release). Fixes + #21517. +

      +
    • +
    • +

      + [bdubbs] - Update to fltk-1.4.3. Fixes + #21516. +

      +
    • +
    +
    +
  • +
  • +

    + May 2nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to xscreensaver-6.10.1. Fixes + + #21513. +

      +
    • +
    • +

      + [bdubbs] - Update to enchant-2.8.4. Fixes + #21508. +

      +
    • +
    • +

      + [bdubbs] - Update to ncftp-3.3.0. Fixes + #21505. +

      +
    • +
    • +

      + [bdubbs] - Update to libxkbcommon-1.9.1. Fixes + + #21504. +

      +
    • +
    • +

      + [bdubbs] - Update to xfce4-pulseaudio-plugin-0.5.1. + Fixes + #21496. +

      +
    • +
    • +

      + [bdubbs] - Update to unbound-1.23.0. Fixes + + #21495. +

      +
    • +
    +
    +
  • +
  • +

    + May 1st, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fix issues with GPU accelration in + Falkon causing crashes on some systems. Fixes + + #21444. +

      +
    • +
    • +

      + [renodr] - Update to kirigami-addons-1.7.0. Fixes + + #21525. +

      +
    • +
    +
    +
  • +
  • +

    + April 30th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to wayland-protocols-1.44. Fixes + + #21515. +

      +
    • +
    • +

      + [renodr] - Update to at-spi2-core-2.56.2. Fixes + + #21512. +

      +
    • +
    • +

      + [renodr] - Update to libsigsegv-2.15. Fixes + + #21510. +

      +
    • +
    • +

      + [renodr] - Update the build configuration for MuPDF + to use the system-installed copy of freeglut. Fixes + + #21506. +

      +
    • +
    • +

      + [renodr] - Update to valgrind-3.25.0. Fixes + + #21502. +

      +
    • +
    • +

      + [renodr] - Update to epiphany-48.3. Fixes + #21497. +

      +
    • +
    • +

      + [renodr] - Update to AppStream-1.0.5. Fixes + + #21493. +

      +
    • +
    • +

      + [renodr] - Update to thunderbird-128.10.0esr + (Security Update). Fixes + #21514. +

      +
    • +
    • +

      + [renodr] - Update to firefox and spidermonkey + 128.10.0esr (Security Update). Fixes + #21509. +

      +
    • +
    • +

      + [renodr] - Update the gstreamer stack to 1.26.1 + (Security Update). Fixes + #21498. +

      +
    • +
    +
    +
  • +
  • +

    + April 29th, 2025 +

    +
    +
      +
    • +

      + [rahul] - Update to qemu-10.0.0. Fixes + #21485. +

      +
    • +
    • +

      + [bdubbs] - Update to + plasma-wayland-protocols-1.17.0. Fixes + #21316. +

      +
    • +
    • +

      + [bdubbs] - Update to plasma-6.3.4. Fixes + #21230. +

      +
    • +
    • +

      + [bdubbs] - Update to kde-gear-25.04.0. Fixes + + #21201. +

      +
    • +
    • +

      + [bdubbs] - Update to kf6-6.13.0. Fixes + #21247. +

      +
    • +
    • +

      + [bdubbs] - Add libproxy-0.5.9 required by + kio-extras-25.04.0. +

      +
    • +
    +
    +
  • +
  • +

    + April 28th, 2025 +

    +
    +
      +
    • +

      + [xry111] - Update python dependencies to + attrs-25.3.0, markdown-3.8, setuptools_scm-8.3.0, + and trove-classifiers-2025.4.11.15. Addresses + + #18562. +

      +
    • +
    +
    +
  • +
  • +

    + April 27th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to glslang-15.3.0. Fixes + + #21503. +

      +
    • +
    • +

      + [thomas] - Update to libuv-1.51.0. Fixes + #21501. +

      +
    • +
    • +

      + [thomas] - Update to libgpg-error-1.55. Fixes + + #21494. +

      +
    • +
    +
    +
  • +
  • +

    + April 24th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to node.js-22.15.0. Fixes + + #21490. +

      +
    • +
    • +

      + [thomas] - Update to fuse-3.17.2. Fixes + #21489. +

      +
    • +
    • +

      + [renodr] - Update to glslc-2025.2. Fixes + #21491. +

      +
    • +
    • +

      + [renodr] - Update to epiphany-48.2. Fixes + #21488. +

      +
    • +
    +
    +
  • +
  • +

    + April 23rd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to postfix-3.10.2. Fixes + + #21487. +

      +
    • +
    • +

      + [bdubbs] - Update to lxml-5.4.0 (Python module). + Fixes + #21486. +

      +
    • +
    • +

      + [bdubbs] - Update to ghostscript-10.05.0 (Security + Update). Fixes + #21484. +

      +
    • +
    +
    +
  • +
  • +

    + April 22nd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to icewm-3.7.4. Fixes + #21482. +

      +
    • +
    • +

      + [renodr] - Update to gnome-system-monitor-48.1. + Fixes + #21435. +

      +
    • +
    • +

      + [renodr] - Update to gnome-maps-48.2. Fixes + + #21434. +

      +
    • +
    • +

      + [renodr] - Update to FreeRDP-3.15.0. Fixes + + #21452. +

      +
    • +
    • +

      + [renodr] - Update to gnome-calculator-48.1. Fixes + + #21433. +

      +
    • +
    • +

      + [renodr] - Update to asymptote-3.02. Fixes + + #21436. +

      +
    • +
    • +

      + [renodr] - Update to gnome-session-48.0. Fixes + + #21425. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell and + gnome-shell-extensions 48.1. Fixes + #21437. +

      +
    • +
    • +

      + [renodr] - Update to mutter-48.2. Fixes + #21379. +

      +
    • +
    • +

      + [renodr] - Update to gnome-control-center-48.1. + Fixes + #21451. +

      +
    • +
    • +

      + [renodr] - Update to gnome-settings-daemon-48.1. + Fixes + #21479. +

      +
    • +
    • +

      + [renodr] - Update to nautilus-48.1. Fixes + #21442. +

      +
    • +
    • +

      + [renodr] - Update to samba-4.22.1. Fixes + #21468. +

      +
    • +
    • +

      + [renodr] - Update to tinysparql-3.9.2. Fixes + + #21478. +

      +
    • +
    • +

      + [renodr] - Update to evolution-data-server and + evolution 3.56.1. Fixes + #21424. +

      +
    • +
    • +

      + [renodr] - Update to intel-media-driver-25.1.4 and + intel-gmmlib-22.7.1. Fixes + #21456. +

      +
    • +
    +
    +
  • +
  • +

    + April 21st, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to epiphany-48.1 (Security + Update). Fixes + #21483. +

      +
    • +
    • +

      + [renodr] - Disable python plugin support in libpeas + because it is incompatible with pygobject-3.52.x, + and it causes applications which utilize it to hang + indefinitely. +

      +
    • +
    • +

      + [renodr] - Fix building libportal against Qt 6.9. + Fixes + #21429. +

      +
    • +
    • +

      + [bdubbs] - Update to gdb-16.3. Fixes + #21480. +

      +
    • +
    • +

      + [bdubbs] - Update to libXft-2.3.9 (Xorg library). + Fixes + #21481. +

      +
    • +
    +
    +
  • +
  • +

    + April 20th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Remove packaging (Python module). Moved + to LFS. Addresses + #21477. +

      +
    • +
    • +

      + [bdubbs] - Update to numpy-2.2.5 (Python module). + Fixes + #21476. +

      +
    • +
    +
    +
  • +
  • +

    + April 19th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to xapian-core-1.4.29. Fixes + + #21667. +

      +
    • +
    • +

      + [bdubbs] - Update to libxml2-2.14.2 (Security + Update). Fixes + #21665. +

      +
    • +
    • +

      + [bdubbs] - Update to ModemManager-1.24.0. Fixes + + #21227. +

      +
    • +
    +
    +
  • +
  • +

    + April 18th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to mesa-25.0.4. Fixes + #21463. +

      +
    • +
    • +

      + [bdubbs] - Update to lxqt-2.2.0. Several packages + have different version numbers: + libdbusmenu-lxqt-0.3.0, libqtxdg-4.2.0, + qtxdg-tools-4.2.0, xdg-desktop-portal-lxqt-1.2.0, + lxqt-archiver-1.2.0, qps-2.11.0, and + screengrab-2.10.0. Fixes + #21469, + #21470, + #21471, + #21472, + #21473, + #21474, and + #21475. +

      +
    • +
    • +

      + [thomas] - Update to libgpg-error-1.54. Fixes + + #21466. +

      +
    • +
    • +

      + [bdubbs] - Update to wireshark-4.4.6. Fixes + + #21462. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.1.0. Fixes + + #21460. +

      +
    • +
    • +

      + [bdubbs] - Update to swig-4.3.1. Fixes + #21458. +

      +
    • +
    • +

      + [bdubbs] - Update to pipewire-1.4.2. Fixes + + #21455. +

      +
    • +
    • +

      + [bdubbs] - Update to ruby-3.4.3. Fixes + #21449. +

      +
    • +
    +
    +
  • +
  • +

    + April 16th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to bind-9.20.8. Fixes + #21461. +

      +
    • +
    • +

      + [xry111] - Update to cargo-c-0.10.12. Fixes + + #21394. +

      +
    • +
    • +

      + [xry111] - Update to rustc-1.86.0. Fixes + #21388. +

      +
    • +
    • +

      + [bdubbs] - Update to Business-ISBN-3.012 (Perl + module). Fixes + #21448. +

      +
    • +
    • +

      + [bdubbs] - Update to Business-ISMN-1.205 (Perl + module). Fixes + #21440. +

      +
    • +
    • +

      + [bdubbs] - Update to iso-codes-4.18.0. Fixes + + #21430. +

      +
    • +
    • +

      + [bdubbs] - Update to fontconfig-2.16.2. Fixes + + #21428. +

      +
    • +
    • +

      + [thomas] - Update to neon-0.34.2. Fixes + #21459. +

      +
    • +
    +
    +
  • +
  • +

    + April 15th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to libaom-3.12.1. Fixes + #21454. +

      +
    • +
    • +

      + [renodr] - Update to gnome-online-accounts-3.54.2. + Fixes + #21431. +

      +
    • +
    • +

      + [renodr] - Update to vte-0.80.1. Fixes + #21432. +

      +
    • +
    • +

      + [bdubbs] - Update to xfce4-pulseaudio-plugin-0.5.0. + Fixes + #21427. +

      +
    • +
    • +

      + [bdubbs] - Update to libadwaita-1.7.2. Fixes + + #21423. +

      +
    • +
    • +

      + [bdubbs] - Update to xterm-398. Fixes + #21422. +

      +
    • +
    • +

      + [bdubbs] - Update to libnvme-1.13. Fixes + #21421. +

      +
    • +
    • +

      + [bdubbs] - Update to cmake-4.0.1. Fixes + #21414. +

      +
    • +
    • +

      + [renodr] - Update to thunderbird-128.9.2esr + (Security Update). Fixes + #21457. +

      +
    • +
    • +

      + [thomas] - Update to xfsprogs-6.14.0. Fixes + + #21446. +

      +
    • +
    • +

      + [thomas] - Update to neon-0.34.1. Fixes + #21450. +

      +
    • +
    • +

      + [thomas] - Update to liburcu-0.15.2. Fixes + + #21447. +

      +
    • +
    +
    +
  • +
  • +

    + April 14th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to alsa-lib, alsa-ucm-conf, + alsa-utils, and alsa-tools 1.2.14. Fixes + #21453. +

      +
    • +
    • +

      + [renodr] - Fix CVE-2025-3155 in yelp. Fixes + + #21445. +

      +
    • +
    • +

      + [renodr] - Update to gnome-user-docs-48.1. Fixes + + #21426. +

      +
    • +
    • +

      + [renodr] - Update to WebKitGTK-2.48.1. Fixes + + #21385. +

      +
    • +
    • +

      + [bdubbs] - Update to openssh-10.0p1 and + ssh-askpass-10.0p1. Fixes + #21411. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.13.3 (Security + Update). Fixes + #21409. +

      +
    • +
    • +

      + [bdubbs] - Update to libcap-2.76. Fixes + #21438. +

      +
    • +
    • +

      + [renodr] - Update to gjs-1.84.2. Fixes + #21441. +

      +
    • +
    • +

      + [renodr] - Update to vorbis-tools-1.4.3. Fixes + + #21443. +

      +
    • +
    • +

      + [renodr] - Update to thunderbird-128.9.1esr + (Security Update). Fixes + #21375. +

      +
    • +
    • +

      + [renodr] - Update to firefox-128.9.0esr (Security + Update). Fixes + #21354. +

      +
    • +
    • +

      + [renodr] - Update to cups-2.4.12. Fixes + #21410. +

      +
    • +
    +
    +
  • +
  • +

    + April 11th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to php-8.4.6. Fixes + #21418. +

      +
    • +
    • +

      + [bdubbs] - Update to mako-1.3.10 (Python Module). + Fixes + #21417. +

      +
    • +
    • +

      + [bdubbs] - Update to upower-v1.90.9. Fixes + + #21416. +

      +
    • +
    • +

      + [bdubbs] - Update to boost-1.88.0. Fixes + #21415. +

      +
    • +
    • +

      + [bdubbs] - Update to ibus-1.5.32. Fixes + #21408. +

      +
    • +
    +
    +
  • +
  • +

    + April 10th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libvpx-1.15.1. Fixes + #21413. +

      +
    • +
    • +

      + [bdubbs] - Update to libqmi-1.36.0. Fixes + #21412. +

      +
    • +
    • +

      + [bdubbs] - Update to libmbim-1.32.0. Fixes + + #21407. +

      +
    • +
    • +

      + [bdubbs] - Update to libgpg-error-1.53. Fixes + + #21406. +

      +
    • +
    • +

      + [bdubbs] - Update to wayland-protocols-1.43. Fixes + + #21405. +

      +
    • +
    +
    +
  • +
  • +

    + April 9th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fix building libcdio on i686 systems. +

      +
    • +
    • +

      + [renodr] - Fix building Qt6 on i686 systems. +

      +
    • +
    +
    +
  • +
  • +

    + April 8th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to SPIRV-LLVM-Translator-20.1.1. + Fixes + #21370. +

      +
    • +
    • +

      + [renodr] - Update to exempi-2.6.6 (Security + Update). Fixes + #21376. +

      +
    • +
    • +

      + [renodr] - Update to c-ares-1.34.5 (Security + Update). Fixes + #21403. +

      +
    • +
    • +

      + [renodr] - Update to make-ca-1.16. Fixes + #21404. +

      +
    • +
    • +

      + [bdubbs] - Update to soundtouch-2.4.0. Fixes + + #21402. +

      +
    • +
    • +

      + [bdubbs] - Update to mercurial-7.0.1 (Security + Update). Fixes + #21401. +

      +
    • +
    +
    +
  • +
  • +

    + April 7th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to gtk-4.18.4. Fixes + #21398. +

      +
    • +
    • +

      + [bdubbs] - Update to qpdf-12.1.0. Fixes + #21397. +

      +
    • +
    • +

      + [bdubbs] - Update to protobuf-c-1.5.2. Fixes + + #21396. +

      +
    • +
    • +

      + [zeckma] - Update to imlib2-1.12.5. Fixes + #21399. +

      +
    • +
    +
    +
  • +
  • +

    + April 6th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to harfbuzz-11.0.1. Fixes + + #21393. +

      +
    • +
    • +

      + [bdubbs] - Update to lxml-5.3.2 (Security Update). + Fixes + #21395. +

      +
    • +
    • +

      + [thomas] - Fix building mariadb with libxml-2.14.x. +

      +
    • +
    +
    +
  • +
  • +

    + April 4th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to qcoro-0.12.0. Fixes + #21391. +

      +
    • +
    • +

      + [bdubbs] - Update to glib-2.84.1. Fixes + #21389. +

      +
    • +
    • +

      + [bdubbs] - Update to libxml2-2.14.1. Fixes + + #21390. +

      +
    • +
    +
    +
  • +
  • +

    + April 3rd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Add a patch to glslang-15.2.0 to ensure + libSPIRV.so is installed. Fixes + #21387. +

      +
    • +
    • +

      + [bdubbs] - Update to libei-1.4.1. Fixes + #21384. +

      +
    • +
    • +

      + [bdubbs] - Update to poppler-25.04.0. Fixes + + #21377. +

      +
    • +
    • +

      + [bdubbs] - Update to libreoffice-25.2.2.2 (Security + Update). Fixes + #21343. +

      +
    • +
    • +

      + [renodr] - Fix building JSON-C with CMake 4.0. +

      +
    • +
    • +

      + [zeckma] - Update to libinput-1.28.1 (Xorg driver). + Fixes + #21383. +

      +
    • +
    • +

      + [bdubbs] - Update to libxml2-2.14.0. Fixes + + #21355. +

      +
    • +
    +
    +
  • +
  • +

    + April 2nd, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fix building graphite2 with CMake 4.0. +

      +
    • +
    • +

      + [renodr] - Fix building tidy-html5 with CMake 4.0. +

      +
    • +
    • +

      + [zeckma] - Update to mesa-25.0.3. Fixes + #21386. +

      +
    • +
    • +

      + [zeckma] - Update to curl-8.13.0. Fixes + #21381. +

      +
    • +
    • +

      + [zeckma] - Update to hwdata-0.394. Fixes + #21382. +

      +
    • +
    • +

      + [thomas] - Update to nano-8.4. Fixes + #21380. +

      +
    • +
    • +

      + [bdubbs] - Update to qt6-6.9.0 and + qtwebengine-6.9.0. Fixes + #21378. +

      +
    • +
    +
    +
  • +
  • +

    + April 1st, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to mupdf-1.25.6. Fixes + #21372. +

      +
    • +
    • +

      + [bdubbs] - Update to upower-v1.90.8. Fixes + + #21371. +

      +
    • +
    • +

      + [bdubbs] - Update to mousepad-0.6.5. Fixes + + #21369. +

      +
    • +
    • +

      + [bdubbs] - Update to bluefish-2.2.17. Fixes + + #21368. +

      +
    • +
    • +

      + [bdubbs] - Update to btrfs-progs-v6.14. Fixes + + #21349. +

      +
    • +
    +
    +
  • +
  • +

    + March 31st, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to icewm-3.7.3. Fixes + #21366. +

      +
    • +
    • +

      + [bdubbs] - Update to nfs-utils-2.8.3. Fixes + + #21365. +

      +
    • +
    • +

      + [bdubbs] - Update to libarchive-3.7.9. Fixes + + #21364. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-1263. Addresses + #12241. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.17.4. Fixes + #21305. +

      +
    • +
    • +

      + [renodr] - Update to exim-4.98.2 (Security Update). + Fixes + #21336. +

      +
    • +
    +
    +
  • +
  • +

    + March 30th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Fix building mariadb with CMake 4.0. +

      +
    • +
    • +

      + [bdubbs] - Update to gtk-4.18.3. Fixes + #21363. +

      +
    • +
    • +

      + [bdubbs] - Update to inih-r59. Fixes + #21362. +

      +
    • +
    • +

      + [bdubbs] - Update to libnotify-0.8.6. Fixes + + #21361. +

      +
    • +
    • +

      + [bdubbs] - Update to at-spi2-core-2.56.1. Fixes + + #21360. +

      +
    • +
    • +

      + [bdubbs] - Update to cmake-4.0.0. Fixes + #21359. +

      +
    • +
    • +

      + [bdubbs] - Update to nss-3.110. Fixes + #21358. +

      +
    • +
    • +

      + [bdubbs] - Update to glslang-15.2.0. Fixes + + #21357. +

      +
    • +
    +
    +
  • +
  • +

    + March 28th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to mpv-0.40.0. Fixes + #21344. +

      +
    • +
    • +

      + [bdubbs] - Update to scons-4.9.1. Fixes + #21356. +

      +
    • +
    • +

      + [pierre] - Update to mercurial-7.0. Fixes + #21194. +

      +
    • +
    • +

      + [pierre] - Add build-1.2.2.post1 (Python module) + and its dependency pyproject_hooks-1.2.0. Part of + + #21194. +

      +
    • +
    • +

      + [bdubbs] - Update to jasper-4.2.5. Fixes + #21351. +

      +
    • +
    • +

      + [bdubbs] - Update to protobuf-30.2. Fixes + #21350. +

      +
    • +
    • +

      + [bdubbs] - Update to xfce4-terminal-1.1.5. Fixes + + #21346. +

      +
    • +
    +
    +
  • +
  • +

    + March 27th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to qemu-9.2.3. Fixes + #21338. +

      +
    • +
    • +

      + [bdubbs] - Update to ristretto-0.13.4. Fixes + + #21342. +

      +
    • +
    • +

      + [bdubbs] - Update to pyparsing-3.2.3 (Python + module). Fixes + #21339. +

      +
    • +
    • +

      + [bdubbs] - Update to mousepad-0.6.4. Fixes + + #21337. +

      +
    • +
    • +

      + [bdubbs] - Update to libcap-2.75. Fixes + #21173. +

      +
    • +
    • +

      + [bdubbs] - Update to qt6-6.8.3 and + qtwebengine-6.8.3. Fixes + #21341. +

      +
    • +
    • +

      + [thomas] - Upgrade to kea-2.6.2. Fixes + #21340. +

      +
    • +
    +
    +
  • +
  • +

    + March 26th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to snapshot-48.0.1. Fixes + + #21255. +

      +
    • +
    • +

      + [renodr] - Update to gnome-weather-48.0. Fixes + + #21254. +

      +
    • +
    • +

      + [renodr] - Update to gnome-terminal-3.56.0. Fixes + + #21270. +

      +
    • +
    • +

      + [renodr] - Update to gnome-system-monitor-48.0. + Fixes + #21269. +

      +
    • +
    • +

      + [renodr] - Update to gnome-maps-48.1. Fixes + + #21268. +

      +
    • +
    • +

      + [renodr] - Update to gnome-connections-48.0. Fixes + + #21347. +

      +
    • +
    • +

      + [renodr] - Update to FreeRDP-3.14.1. Fixes + + #21256. +

      +
    • +
    • +

      + [renodr] - Update to gnome-calculator-48.0.2. Fixes + + #21267. +

      +
    • +
    • +

      + [renodr] - Update to evince-48.0. Fixes + #21266. +

      +
    • +
    • +

      + [renodr] - Update to baobab-48.0. Fixes + #21252. +

      +
    • +
    +
    +
  • +
  • +

    + March 25th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to gtkmm-3.24.10. Fixes + #21334. +

      +
    • +
    • +

      + [renodr] - Update to gimp-3.0.2. Fixes + #21335. +

      +
    • +
    • +

      + [renodr] - Update to gnome-user-docs-47.5. Fixes + + #21277. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell-extensions-48.0. + Fixes + #21276. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell-48.0. Fixes + + #21276. +

      +
    • +
    • +

      + [renodr] - Update to gdm-48.0. Fixes + #21295. +

      +
    • +
    • +

      + [renodr] - Update to mutter-48.0. Fixes + #21278. +

      +
    • +
    • +

      + [bdubbs] - Update to libevdev-1.13.4. Fixes + + #21333. +

      +
    • +
    • +

      + [bdubbs] - Update to pyparsing-3.2.2 (Python + Module). Fixes + #21332. +

      +
    • +
    • +

      + [bdubbs] - Update to unrar-7.1.6. Fixes + #21331. +

      +
    • +
    • +

      + [renodr] - Update to gnome-control-center-48.0. + Fixes + #21288. +

      +
    • +
    • +

      + [bdubbs] - Update to gegl-0.4.58. Fixes + #21330. +

      +
    • +
    • +

      + [bdubbs] - Update to ed-1.21.1. Fixes + #21329. +

      +
    • +
    • +

      + [renodr] - Update to tecla-48.0.2. Fixes + #21290. +

      +
    • +
    • +

      + [renodr] - Update to gnome-settings-daemon-48.0. + Fixes + #21289. +

      +
    • +
    • +

      + [renodr] - Fix building gnome-bluetooth with + pygobject-3.52.0 and later. Thank you to Xi for the + patch and to Wayne Blaszczyk for the initial + report. +

      +
    • +
    • +

      + [renodr] - Update to nautilus-48.0. Fixes + #21279. +

      +
    • +
    • +

      + [renodr] - Update to gnome-backgrounds-48.0. Fixes + + #21251. +

      +
    • +
    +
    +
  • +
  • +

    + March 24th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to ncftp-3.2.9. Fixes + #21321. +

      +
    • +
    • +

      + [bdubbs] - Update to wayland-protocols-1.42. Fixes + + #21327. +

      +
    • +
    • +

      + [bdubbs] - Update to libinput-1.28.0. Fixes + + #21328. +

      +
    • +
    • +

      + [bdubbs] - Update to xfce4-session-4.20.2. Fixes + + #21326. +

      +
    • +
    • +

      + [bdubbs] - Update to xfce4-panel-4.20.4. Fixes + + #21325. +

      +
    • +
    • +

      + [bdubbs] - Update to libxfce4ui-4.20.1. Fixes + + #21323. +

      +
    • +
    • +

      + [bdubbs] - Update to libxfce4util-4.20.1. Fixes + + #21324. +

      +
    • +
    • +

      + [bdubbs] - Update to harfbuzz-11.0.0. Fixes + + #21320. +

      +
    • +
    • +

      + [renodr] - Update to gtkmm-4.18.0. Fixes + #21322. +

      +
    • +
    • +

      + [renodr] - Update to libwacom-2.15.0. Fixes + + #21312. +

      +
    • +
    • +

      + [renodr] - Update to cifs-utils-7.3. Fixes + + #21309. +

      +
    • +
    • +

      + [renodr] - Update to epiphany-48.0. Fixes + #21260. +

      +
    • +
    • +

      + [renodr] - Update to xdg-desktop-portal-gnome-48.0. + Fixes + #21291. +

      +
    • +
    • +

      + [renodr] - Update to xdg-desktop-portal-gtk-1.15.3. + Fixes + #21315. +

      +
    • +
    • +

      + [renodr] - Update to evolution and + evolution-data-server 3.56.0. Fixes + #21250. +

      +
    • +
    • +

      + [renodr] - Update to libshumate-1.4.0. Fixes + + #21264. +

      +
    • +
    • +

      + [renodr] - Update to gnome-online-accounts-3.54.1. + Fixes + #21263. +

      +
    • +
    • +

      + [renodr] - Update to gtksourceview5-5.16.0. Fixes + + #21262. +

      +
    • +
    +
    +
  • +
  • +

    + March 23rd, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to xarchiver-0.5.4.25. Fixes + + #21319. +

      +
    • +
    • +

      + [bdubbs] - Update to fcron-3.4.0. Fixes + #21318. +

      +
    • +
    • +

      + [bdubbs] - Update to sbc-2.1. Fixes + #21317. +

      +
    • +
    • +

      + [bdubbs] - Update to libsoup-3.6.5. Fixes + #21314. +

      +
    • +
    • +

      + [bdubbs] - Update to libidn-1.43. Fixes + #21311. +

      +
    • +
    • +

      + [bdubbs] - Update to libarchive-3.7.8 (Security + update). Fixes + #21308. +

      +
    • +
    • +

      + [bdubbs] - Update to libusb-1.0.28. Fixes + #21199. +

      +
    • +
    +
    +
  • +
  • +

    + March 21st, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to libadwaita-1.7.0. Fixes + + #21248. +

      +
    • +
    • +

      + [renodr] - Update to gcr-4.4.0.1. Fixes + #21300. +

      +
    • +
    • +

      + [renodr] - Update to libclc-20.1.1. Fixes + #21188. +

      +
    • +
    • +

      + [renodr] - Update to llvm-20.1.1. Fixes + #21192. +

      +
    • +
    • +

      + [renodr] - Update to WebKitGTK-2.48.0 (Security + Update). Fixes + #21246. +

      +
    • +
    +
    +
  • +
  • +

    + March 20th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to mesa-25.0.2. Fixes + #21310. +

      +
    • +
    • +

      + [renodr] - Update to gnome-keyring-48.0. Fixes + + #21301. +

      +
    • +
    • +

      + [renodr] - Update to libsecret-0.21.7. Fixes + + #21302. +

      +
    • +
    • +

      + [renodr] - Update to gjs-1.84.1. Fixes + #21292. +

      +
    • +
    • +

      + [renodr] - Update to gtk-4.18.2. Fixes + #21245. +

      +
    • +
    • +

      + [renodr] - Update to localsearch-3.9.0. Fixes + + #21294. +

      +
    • +
    • +

      + [renodr] - Update to tinysparql-3.9.1. Fixes + + #21293. +

      +
    • +
    • +

      + [thomas] - Update to bind-9.20.7. Fixes + #21306. +

      +
    • +
    • +

      + [thomas] - Update to vte-0.80.0. Added a page for + new dependency to 'fast_float'. Fixes + #21265. +

      +
    • +
    • +

      + [renodr] - Update to rustc-1.85.1. Fixes + #21299. +

      +
    • +
    • +

      + [renodr] - Update to libclc-20.1.0. Fixes + #21188. +

      +
    • +
    • +

      + [renodr] - Update to SPIRV-LLVM-Translator-20.1.0. + Fixes + #22159. +

      +
    • +
    • +

      + [renodr] - Update to SPIRV-Headers and SPIRV-Tools + 1.4.309.0. Fixes + #21236. +

      +
    • +
    • +

      + [renodr] - Update to Vulkan-Headers and + Vulkan-Loader 1.4.309. Fixes + #21242. +

      +
    • +
    +
    +
  • +
  • +

    + March 19th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to llvm-20.1.0. Fixes + #21192. +

      +
    • +
    • +

      + [zeckma] - Update to thunderbird-128.8.1esr. Fixes + + #21303. +

      +
    • +
    • +

      + [renodr] - Add an entry to AppStream for LFS 12.3. +

      +
    • +
    • +

      + [renodr] - Update to adwaita-icon-theme-48.0. Fixes + + #21249. +

      +
    • +
    • +

      + [bdubbs] - Update to abseil-cpp-20250127.1. Fixes + + #21297. +

      +
    • +
    • +

      + [bdubbs] - Update to pipewire-1.4.1. Fixes + + #21257. +

      +
    • +
    • +

      + [bdubbs] - Update to libei-1.4.0. Fixes + #21010. +

      +
    • +
    • +

      + [renodr] - Update to glibmm-2.66.8. Fixes + #21283. +

      +
    • +
    +
    +
  • +
  • +

    + March 18th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to librsvg-2.60.0. Fixes + + #21298. +

      +
    • +
    • +

      + [renodr] - Update to libavif-1.2.1. Fixes + #21285. +

      +
    • +
    • +

      + [renodr] - Update to at-spi2-core-2.56.0. Fixes + + #21261. +

      +
    • +
    • +

      + [renodr] - Update to dbus-1.16.2. Fixes + #21168. +

      +
    • +
    • +

      + [bdubbs] - Update to imlib2-1.12.4. Fixes + #21287. +

      +
    • +
    • +

      + [bdubbs] - Update to sentry_sdk-2.23.1 (Python + module). Fixes + #21286. +

      +
    • +
    • +

      + [bdubbs] - Update to libnvme-1.12. Fixes + #21284. +

      +
    • +
    +
    +
  • +
  • +

    + March 17th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to gimp-3.0.0. Fixes + #21281. +

      +
    • +
    • +

      + [bdubbs] - Update to mupdf-1.25.5. Fixes + #21258. +

      +
    • +
    • +

      + [bdubbs] - Update to xarchiver-0.5.4.24. Fixes + + #21280. +

      +
    • +
    • +

      + [bdubbs] - Update to pango-1.56.3. Fixes + #21275. +

      +
    • +
    • +

      + [bdubbs] - Update to pygobject-3.52.3 (Python + module). Fixes + #21274. +

      +
    • +
    • +

      + [bdubbs] - Update to numpy-2.2.4 (Python module). + Fixes + #21273. +

      +
    • +
    • +

      + [bdubbs] - Update to gegl-0.4.56. Fixes + #21272. +

      +
    • +
    • +

      + [bdubbs] - Update to babl-0.1.112. Fixes + #21271. +

      +
    • +
    • +

      + [renodr] - Fix a runtime issue in glib2 caused by + the new version of gobject-introspection. +

      +
    • +
    • +

      + [renodr] - Update to gobject-introspection-1.84.0. + Fixes + #21259. +

      +
    • +
    • +

      + [renodr] - Update to + gsettings-desktop-schemas-48.0. Fixes + #21282. +

      +
    • +
    +
    +
  • +
  • +

    + March 16th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to proftpd-1.3.9. Fixes + #21244. +

      +
    • +
    • +

      + [renodr] - Update to icu-77.1. Fixes + #21238. +

      +
    • +
    • +

      + [renodr] - Update to gutenprint-5.3.5. Fixes + + #21235. +

      +
    • +
    • +

      + [thomas] - Update to git-2.49.0. Fixes + #21243. +

      +
    • +
    +
    +
  • +
  • +

    + March 15th, 2025 +

    +
    +
      +
    • +

      + [rahul] - Update to protobuf-30.1. Fixes + #21189. +

      +
    • +
    • +

      + [pierre] - Update to libxkbcommon-1.8.1. Fixes + + #21226. +

      +
    • +
    +
    +
  • +
  • +

    + March 14th, 2025 +

    +
    +
      +
    • +

      + [rahul] - Update to nss-3.109. Fixes + #21167. +

      +
    • +
    • +

      + [rahul] - Update to nghttp2-1.65.0. Fixes + #21180. +

      +
    • +
    • +

      + [renodr] - Update to epiphany-47.4. Fixes + #21241. +

      +
    • +
    • +

      + [renodr] - Update to php-8.4.5 (Security Update). + Fixes + #21240. +

      +
    • +
    • +

      + [renodr] - Update to dbus-python-1.4.0 (Python + Module). Fixes + #21239. +

      +
    • +
    • +

      + [renodr] - Update to dbus-glib-0.114. Fixes + + #21237. +

      +
    • +
    • +

      + [renodr] - Update the gstreamer stack to 1.26.0. + Fixes + #21231. +

      +
    • +
    +
    +
  • +
  • +

    + March 13th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to pygobject3-3.52.2 (Python + module). Fixes + #21234. +

      +
    • +
    • +

      + [bdubbs] - Update to libxslt-1.1.43 (Security + Update). Fixes + #21233. +

      +
    • +
    • +

      + [bdubbs] - Update to libxmlb-0.3.22. Fixes + + #21232. +

      +
    • +
    • +

      + [bdubbs] - Update to pango-1.56.2. Fixes + #21229. +

      +
    • +
    • +

      + [bdubbs] - Update to ncftp-3.2.8. Fixes + #21228. +

      +
    • +
    • +

      + [renodr] - Update to texlive-20250308. Fixes + + #21220. +

      +
    • +
    +
    +
  • +
  • +

    + March 12th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to qpdf-12.0.0. Fixes + #21221. +

      +
    • +
    • +

      + [renodr] - Update to qca-2.3.10. Fixes + #21216. +

      +
    • +
    • +

      + [renodr] - Update to glibmm-2.84.0. Fixes + #21215. +

      +
    • +
    • +

      + [renodr] - Update to cairo-1.18.4. Fixes + #21214. +

      +
    • +
    +
    +
  • +
  • +

    + March 11th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Update to cssselect-1.3.0 (Python + Module). Fixes + #21225. +

      +
    • +
    • +

      + [bdubbs] - Update to newt-0.52.25. Fixes + #21224. +

      +
    • +
    • +

      + [bdubbs] - Update to libical-3.0.20. Fixes + + #21223. +

      +
    • +
    • +

      + [renodr] - Update to libidn2-2.3.8. Fixes + #21207. +

      +
    • +
    +
    +
  • +
  • +

    + March 10th, 2025 +

    +
    +
      +
    • +

      + [rahul] - Update to ffmpeg-7.1.1. Fixes + #21181. +

      +
    • +
    • +

      + [rahul] - Update to gtk3-3.24.49. Fixes + #21195. +

      +
    • +
    • +

      + [rahul] - Update to pipewire-1.4.0. Fixes + #21203. +

      +
    • +
    • +

      + [bdubbs] - Update to icewm-3.7.2. Fixes + #21219. +

      +
    • +
    • +

      + [bdubbs] - Update to xinit-1.4.4. Fixes + #21218. +

      +
    • +
    • +

      + [bdubbs] - Update to xauth-1.1.4 (Xorg app). Fixes + + #21212. +

      +
    • +
    • +

      + [bdubbs] - Update to libSM-1.2.6 (Xorg library). + Fixes + #21210. +

      +
    • +
    • +

      + [bdubbs] - Update to libX11-1.8.12 (Xorg library). + Fixes + #21211. +

      +
    • +
    • +

      + [bdubbs] - Update to xtrans-1.6.0 (Xorg library). + Fixes + #21213. +

      +
    • +
    • +

      + [bdubbs] - Update to pygobject3-3.52.1 (Python + module). Fixes + #21217. +

      +
    • +
    • +

      + [bdubbs] - Update to libpng-1.6.47. Fixes + #21110. +

      +
    • +
    +
    +
  • +
  • +

    + March 9th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Combine all libgedit packages into + Gedit, and update to + libgedit-gtksourceview-299.5.0, + libgedit-amtk-5.9.1, libgedit-tepl-6.13.0, and + libgedit-gfls-0.3.0. Fixes + #21205, + #21206, + #21208, and + #21209. +

      +
    • +
    +
    +
  • +
  • +

    + March 8th, 2025 +

    +
    +
      +
    • +

      + [thomas] - Update to lvm2-2.03.31. Fixes + #21158. +

      +
    • +
    +
    +
  • +
  • +

    + March 7th, 2025 +

    +
    +
      +
    • +

      + [renodr] - Update to dvisvgm-3.4.4. Fixes + #21204. +

      +
    • +
    • +

      + [renodr] - Update to FreeRDP-3.13.0. Fixes + + #21202. +

      +
    • +
    • +

      + [renodr] - Update to samba-4.22.0. Fixes + #21200. +

      +
    • +
    • +

      + [renodr] - Update to mutter-47.6. Fixes + #21190. +

      +
    • +
    • +

      + [renodr] - Update to gnome-shell-47.5. Fixes + + #21184. +

      +
    • +
    • +

      + [renodr] - Update to vala-0.56.18. Fixes + #21179. +

      +
    • +
    • +

      + [renodr] - Update to SCons-4.9.0. Fixes + #21175. +

      +
    • +
    • +

      + [renodr] - Update to shaderc-2025.1. Fixes + + #21156. +

      +
    • +
    • +

      + [renodr] - Update to ModemManager-1.22.0. Fixes + + #21129. +

      +
    • +
    • +

      + [renodr] - Update to wayland-protocols-1.41. Fixes + + #21097. +

      +
    • +
    • +

      + [renodr] - Update to Thunderbird-128.8.0esr + (Security Update). Fixes + #21193. +

      +
    • +
    • +

      + [bdubbs] - Update to glib-2.84.0. Fixes + #21198. +

      +
    • +
    • +

      + [bdubbs] - Update to poppler-25.03.0. Fixes + + #21183. +

      +
    • +
    • +

      + [bdubbs] - Update to libqalculate-5.5.2. Fixes + + #21174. +

      +
    • +
    • +

      + [bdubbs] - Update to libqmi-1.34.0. Fixes + #21166. +

      +
    • +
    • +

      + [renodr] - Update to Firefox-128.8.0esr and + Spidermonkey (Security Update). Fixes + #21182. +

      +
    • +
    • +

      + [bdubbs] - Update to libmbim-1.30.0. Fixes + + #21165. +

      +
    • +
    • +

      + [bdubbs] - Update to NetworkManager-1.52.0. Fixes + + #21164. +

      +
    • +
    +
    +
  • +
  • +

    + March 6th, 2025 +

    +
    +
      +
    • +

      + [zeckma] - Update to mesa-25.0.1. Fixes + #21119. +

      +
    • +
    • +

      + [bdubbs] - Update to hwdata-0.393. Fixes + #21187. +

      +
    • +
    • +

      + [bdubbs] - Update to cmake-3.31.6. Fixes + #21149. +

      +
    • +
    • +

      + [bdubbs] - Update to faad2-2.11.2. Fixes + #21191. +

      +
    • +
    • +

      + [bdubbs] - Update to faac-1.31.1. Fixes + #21186. +

      +
    • +
    • +

      + [bdubbs] - Update to sphinx-8.2.3 (Python module). + Fixes + #21178. +

      +
    • +
    • +

      + [bdubbs] - Update to pytest-8.3.5 (Python module). + Fixes + #21177. +

      +
    • +
    • +

      + [bdubbs] - Update to Text-CSV-2.06 (Perl module). + Fixes + #21176. +

      +
    • +
    +
    +
  • +
  • +

    + March 5th, 2025 +

    +
    +
      +
    • +

      + [bdubbs] - Release of BLFS-12.3. +

      +
    • +
    +
    +
  • +
+
+
+
+
+
+

+ Mailing Lists +

+
+
+
+
+

+ The linuxfromscratch.org server is hosting a number of mailing + lists that are used for the development of the BLFS book. These + lists include, among others, the main development and support + lists. +

+

+ For more information regarding which lists are available, how + to subscribe to them, archive locations, etc., visit https://www.linuxfromscratch.org/mail.html. +

+
+
+
+
+

+ Editor Notes +

+
+
+
+
+

+ The BLFS Project has created a Wiki for editors to comment on + pages and instructions at https://wiki.linuxfromscratch.org/blfs/wiki. +

+

+ When editor notes are + present, a link appears in the form https://wiki.linuxfromscratch.org/blfs/wiki/pkgname + right below the dependency list. The idea behind the editor + notes is to give additional information about the package + and/or its build instructions, common pitfalls or maybe even + more sophisticated configuration for special cases of use. +

+

+ The vast majority of the packages do not have editor notes. +

+
+

+ Note +

+

+ The editor notes might + be outdated. Even though the pages should be reviewed when a + package is updated, it might happen that there are notes + referring to an obsolete version and therefore, the notes + might be out of date. Always check the date of the notes and + more importantly, the version of the package the notes refer + to. +

+
+
+
+
+
+

+ Asking for Help and the + FAQ +

+
+
+
+
+

+ If you encounter a problem while using this book, and your + problem is not listed in the FAQ (https://www.linuxfromscratch.org/faq), + you will find that most of the people on Internet Relay Chat + (IRC) and on the mailing lists are willing to help you. An + overview of the LFS mailing lists can be found in Mailing + lists. To assist us in diagnosing and solving your problem, + include as much relevant information as possible in your + request for help. +

+
+

+ Things to Check Prior to Asking +

+

+ Before asking for help, you should review the following + items: +

+
+
    +
  • +

    + Is the hardware support compiled into the kernel or + available as a module to the kernel? If it is a module, + is it configured properly in modprobe.conf and has it been loaded? + You should use lsmod as the + root user to see if + it's loaded. Check the sys.log file or run modprobe <driver> + to review any error message. If it loads properly, you + may need to add the modprobe command to + your boot scripts. +

    +
  • +
  • +

    + Are your permissions properly set, especially for + devices? LFS uses groups to make these settings easier, + but it also adds the step of adding users to groups to + allow access. A simple usermod -G audio <user> + may be all that's necessary for that user to have + access to the sound system. Any question that starts + out with “It + works as root, but not as ...” requires a + thorough review of permissions prior to asking. +

    +
  • +
  • +

    + BLFS liberally uses /opt/<package>. + The main objection to this centers around the need to + expand your environment variables for each package + placed there (e.g., PATH=$PATH:/opt/kde/bin). In most + cases, the package instructions will walk you through + the changes, but some will not. The section called + “Going + Beyond BLFS” is available to help you + check. +

    +
  • +
+
+
+
+

+ Things to Mention +

+

+ Apart from a brief explanation of the problem you're having, + the essential things to include in your request are: +

+
+
    +
  • +

    + the version of the book you are using (being 12.4), +

    +
  • +
  • +

    + the package or section giving you problems, +

    +
  • +
  • +

    + the exact error message or symptom you are receiving, +

    +
  • +
  • +

    + whether you have deviated from the book or LFS at all + (packing the book instructions into a script while the + book does not tell to do so is always considered as + deviation, because there have been too many cases of + issues where people fail to notice a subtle difference + between the script and the book), +

    +
  • +
  • +

    + if you are installing a BLFS package on a non-LFS + system. +

    +
  • +
+
+

+ Note that saying that you've deviated from the book doesn't + mean that we won't help you. It'll just help us to see other + possible causes of your problem. If you've deviated from the + book, you should also tell precisely what the deviation is so + the other people can reproduce it. A script can be attached + to show what you've exactly done (especially if you already + have such a script, i.e. you've already have deviated from + the book by packing the book instructions into a script and + run it). +

+

+ Expect guidance instead of specific instructions. If you are + instructed to read something, please do so. It generally + implies that the answer was way too obvious and that the + question would not have been asked if a little research was + done prior to asking. The volunteers in the mailing list + prefer not to be used as an alternative to doing reasonable + research on your end. In addition, the quality of your + experience with BLFS is also greatly enhanced by this + research, and the quality of volunteers is enhanced because + they don't feel that their time has been abused, so they are + far more likely to participate. +

+

+ An excellent article on asking for help on the Internet in + general has been written by Eric S. Raymond. It is available + online at http://www.catb.org/~esr/faqs/smart-questions.html. + Read and follow the hints in that document and you are much + more likely to get a response to start with and also to get + the help you actually need. +

+
+
+
+
+
+

+ Credits +

+
+
+
+
+

+ Many people have contributed both directly and indirectly to + BLFS. This page lists all of those we can think of. We may well + have left people out and if you feel this is the case, drop us + a line. Many thanks to all of the LFS community for their + assistance with this project. +

+
+

+ Current Editors +

+
+
    +
  • +

    + Rahul Chandra +

    +
  • +
  • +

    + Bruce Dubbs +

    +
  • +
  • +

    + Pierre Labastie +

    +
  • +
  • +

    + Douglas Reno +

    +
  • +
  • +

    + Xi Ruoyao +

    +
  • +
  • +

    + Thomas Trepl +

    +
  • +
+
+
+
+

+ Contributors and Past Editors +

+

+ The list of contributors is far too large to provide detailed + information about the contributions for each contributor. + Over the years, the following individuals have provided + significant inputs to the book: +

+
+
    +
  • +

    + Timothy Bauscher +

    +
  • +
  • +

    + Daniel Bauman +

    +
  • +
  • +

    + Jeff Bauman +

    +
  • +
  • +

    + Andy Benton +

    +
  • +
  • +

    + Wayne Blaszczyk +

    +
  • +
  • +

    + Paul Campbell +

    +
  • +
  • +

    + Nathan Coulson +

    +
  • +
  • +

    + Jeroen Coumans +

    +
  • +
  • +

    + Guy Dalziel +

    +
  • +
  • +

    + Robert Daniels +

    +
  • +
  • +

    + Richard Downing +

    +
  • +
  • +

    + Manuel Canales Esparcia +

    +
  • +
  • +

    + Jim Gifford +

    +
  • +
  • +

    + Manfred Glombowski +

    +
  • +
  • +

    + Ag Hatzimanikas +

    +
  • +
  • +

    + Mark Hymers +

    +
  • +
  • +

    + James Iwanek +

    +
  • +
  • +

    + David Jensen +

    +
  • +
  • +

    + Jeremy Jones +

    +
  • +
  • +

    + Seth Klein +

    +
  • +
  • +

    + Alex Kloss +

    +
  • +
  • +

    + Eric Konopka +

    +
  • +
  • +

    + Larry Lawrence +

    +
  • +
  • +

    + D-J Lucas +

    +
  • +
  • +

    + Chris Lynn +

    +
  • +
  • +

    + Andrew McMurry +

    +
  • +
  • +

    + Randy McMurchy +

    +
  • +
  • +

    + Ken Moffat +

    +
  • +
  • +

    + Denis Mugnier +

    +
  • +
  • +

    + Billy O'Connor +

    +
  • +
  • +

    + Fernando de Oliveira +

    +
  • +
  • +

    + Alexander Patrakov +

    +
  • +
  • +

    + Olivier Peres +

    +
  • +
  • +

    + Andreas Pedersen +

    +
  • +
  • +

    + Henning Rohde +

    +
  • +
  • +

    + Matt Rogers +

    +
  • +
  • +

    + James Robertson +

    +
  • +
  • +

    + Henning Rohde +

    +
  • +
  • +

    + Chris Staub +

    +
  • +
  • +

    + Jesse Tie-Ten-Quee +

    +
  • +
  • +

    + Ragnar Thomsen +

    +
  • +
  • +

    + Tushar Teredesai +

    +
  • +
  • +

    + Jeremy Utley +

    +
  • +
  • +

    + Zack Winkles +

    +
  • +
  • +

    + Christian Wurst +

    +
  • +
  • +

    + Igor Živković +

    +
  • +
+
+
+
+

+ General Acknowledgments +

+
+
    +
  • +

    + Fernando Arbeiza +

    +
  • +
  • +

    + Miguel Bazdresch +

    +
  • +
  • +

    + Gerard Beekmans +

    +
  • +
  • +

    + Oliver Brakmann +

    +
  • +
  • +

    + Jeremy Byron +

    +
  • +
  • +

    + Ian Chilton +

    +
  • +
  • +

    + David Ciecierski +

    +
  • +
  • +

    + Jim Harris +

    +
  • +
  • +

    + Lee Harris +

    +
  • +
  • +

    + Marc Heerdink +

    +
  • +
  • +

    + Steffen Knollmann +

    +
  • +
  • +

    + Eric Konopka +

    +
  • +
  • +

    + Scot McPherson +

    +
  • +
  • +

    + Ted Riley +

    +
  • +
+
+
+
+
+
+
+

+ Contact + Information +

+
+
+
+
+

+ Please direct your emails to one of the BLFS mailing lists. See + Mailing + lists for more information on the available mailing lists. +

+
+
+
+
+
+

+ Chapter 2. Important Information +

+
+
+
+
+

+ This chapter is used to explain some of the policies used + throughout the book, to introduce important concepts and to + explain some issues you may see with some of the included + packages. +

+
+
+
+

+ Notes on Building + Software +

+
+
+
+
+

+ Those people who have built an LFS system may be aware of the + general principles of downloading and unpacking software. Some + of that information is repeated here for those new to building + their own software. +

+

+ Each set of installation instructions contains a URL from which + you can download the package. The patches; however, are stored + on the LFS servers and are available via HTTP. These are + referenced as needed in the installation instructions. +

+

+ While you can keep the source files anywhere you like, we + assume that you have unpacked the package and changed into the + directory created by the unpacking process (the source + directory). We also assume you have uncompressed any required + patches and they are in the directory immediately above the + source directory. +

+

+ We can not emphasize strongly enough that you should start from + a clean source tree each + time. This means that if you have had an error during + configuration or compilation, it's usually best to delete the + source tree and re-unpack it before trying again. This obviously + doesn't apply if you're an advanced user used to hacking + Makefiles and C code, but if in + doubt, start from a clean tree. +

+
+

+ Building Software as an Unprivileged (non-root) User +

+

+ The golden rule of Unix System Administration is to use your + superpowers only when necessary. Hence, BLFS recommends that + you build software as an unprivileged user and only become + the root user when installing + the software. This philosophy is followed in all the packages + in this book. Unless otherwise specified, all instructions + should be executed as an unprivileged user. The book will + advise you on instructions that need root privileges. +

+
+
+

+ Unpacking the Software +

+

+ If a file is in .tar format and + compressed, it is unpacked by running one of the following + commands: +

+
tar -xvf filename.tar.gz
+tar -xvf filename.tgz
+tar -xvf filename.tar.Z
+tar -xvf filename.tar.bz2
+
+

+ Note +

+

+ You may omit using the v + parameter in the commands shown above and below if you wish + to suppress the verbose listing of all the files in the + archive as they are extracted. This can help speed up the + extraction as well as make any errors produced during the + extraction more obvious to you. +

+
+

+ You can also use a slightly different method: +

+
bzcat filename.tar.bz2 | tar -xv
+

+ Finally, sometimes we have a compressed patch file in + .patch.gz or .patch.bz2 format. The best way to apply + the patch is piping the output of the decompressor to the + patch utility. + For example: +

+
gzip -cd ../patchname.patch.gz | patch -p1
+

+ Or for a patch compressed with bzip2: +

+
bzcat ../patchname.patch.bz2 | patch -p1
+
+
+

+ Verifying File Integrity +

+

+ Generally, to verify that the downloaded file is complete, + many package maintainers also distribute md5sums of the + files. To verify the md5sum of the downloaded files, download + both the file and the corresponding md5sum file to the same + directory (preferably from different on-line locations), and + (assuming file.md5sum is the + md5sum file downloaded) run the following command: +

+
md5sum -c file.md5sum
+

+ If there are any errors, they will be reported. Note that the + BLFS book includes md5sums for all the source files also. To + use the BLFS supplied md5sums, you can create a file.md5sum (place the md5sum data and the + exact name of the downloaded file on the same line of a file, + separated by white space) and run the command shown above. + Alternately, simply run the command shown below and compare + the output to the md5sum data shown in the BLFS book. +

+
md5sum <name_of_downloaded_file>
+

+ MD5 is not cryptographically secure, so the md5sums are only + provided for detecting unmalicious changes to the file + content. For example, an error or truncation introduced + during network transfer, or a “stealth” update to + the package from the upstream (updating the content of a + released tarball instead of making a new release properly). +

+

+ There is no “100%” secure way to make sure the + genuity of the source files. Assuming the upstream is + managing their website correctly (the private key is not + leaked and the domain is not hijacked), and the trust anchors + have been set up correctly using make-ca-1.16.1 on the + BLFS system, we can reasonably trust download URLs to the + upstream official website with + https protocol. Note that BLFS book itself is + published on a website with https, so you should already have + some confidence in https protocol or you wouldn't trust the + book content. +

+

+ If the package is downloaded from an unofficial location (for + example a local mirror), checksums generated by + cryptographically secure digest algorithms (for example + SHA256) can be used to verify the genuity of the package. + Download the checksum file from the upstream official website (or somewhere + you can trust) and + compare the checksum of the package from unofficial location + with it. For example, SHA256 checksum can be checked with the + command: +

+
+

+ Note +

+

+ If the checksum and the package are downloaded from the + same untrusted location, you won't gain security + enhancement by verifying the package with the checksum. The + attacker can fake the checksum as well as compromising the + package itself. +

+
+
sha256sum -c file.sha256sum
+

+ If GnuPG-2.4.8 is installed, you can also + verify the genuity of the package with a GPG signature. + Import the upstream GPG public key with: +

+
gpg --recv-key keyID
+

+ keyID should be + replaced with the key ID from somewhere you can trust (for example, + copy it from the upstream official website using https). Now + you can verify the signature with: +

+
gpg --recv-key file.sig file
+

+ The advantage of GnuPG + signature is, once you imported a public key which can be + trusted, you can download both the package and its signature + from the same unofficial location and verify them with the + public key. So you won't need to connect to the official + upstream website to retrieve a checksum for each new release. + You only need to update the public key if it's expired or + revoked. +

+
+
+

+ Creating Log Files During Installation +

+

+ For larger packages, it is convenient to create log files + instead of staring at the screen hoping to catch a particular + error or warning. Log files are also useful for debugging and + keeping records. The following command allows you to create + an installation log. Replace <command> with the + command you intend to execute. +

+
( <command> 2>&1 | tee compile.log && exit $PIPESTATUS )
+

+ 2>&1 redirects error + messages to the same location as standard output. The + tee command + allows viewing of the output while logging the results to a + file. The parentheses around the command run the entire + command in a subshell and finally the exit $PIPESTATUS command + ensures the result of the <command> is returned + as the result and not the result of the tee command. +

+
+
+

+ Using + Multiple Processors +

+

+ For many modern systems with multiple processors (or cores) + the compilation time for a package can be reduced by + performing a "parallel make" by either setting an environment + variable or telling the make program to simultaneously + execute multiple jobs. +

+

+ For instance, an Intel Core i9-13900K CPU contains 8 + performance (P) cores and 16 efficiency (E) cores, and the P + cores support SMT (Simultaneous MultiThreading, also known as + “Hyper-Threading”) so each P core can + run two threads simultaneously and the Linux kernel will + treat each P core as two logical cores. As a result, there + are 32 logical cores in total. To utilize all these logical + cores running make, we can set an + environment variable to tell make to run 32 jobs + simultaneously: +

+
export MAKEFLAGS='-j32'
+

+ or just building with: +

+
make -j32
+

+ If you have applied the optional sed when building + ninja in LFS, you can use: +

+
export NINJAJOBS=32
+

+ when a package uses ninja, or just: +

+
ninja -j32
+

+ If you are not sure about the number of logical cores, run + the nproc + command. +

+

+ For make, the + default number of jobs is 1. But for ninja, the default number + of jobs is N + 2 if the number of logical cores N is greater + than 2; or N + 1 if N is 1 or 2. The reason to use a number + of jobs slightly greater than the number of logical cores is + keeping all logical processors busy even if some jobs are + performing I/O operations. +

+

+ Note that the -j switches only + limits the parallel jobs started by make or ninja, but each job may + still spawn its own processes or threads. For example, some + tests of packages can spawn multiple threads for testing + thread safety properties. There is no generic way for the + building system to know the number of processes or threads + spawned by a job. So generally we should not consider the + value passed with -j a hard limit + of the number of logical cores to use. Read the + section called “Use Linux Control Group to Limit the Resource + Usage” if you want to set such a hard limit. +

+

+ Generally the number of processes should not exceed the + number of cores supported by the CPU too much. To list the + processors on your system, issue: grep processor + /proc/cpuinfo. +

+

+ In some cases, using multiple processes may result in a race + condition where the success of the build depends on the order + of the commands run by the make program. For instance, + if an executable needs File A and File B, attempting to link + the program before one of the dependent components is + available will result in a failure. This condition usually + arises because the upstream developer has not properly + designated all the prerequisites needed to accomplish a step + in the Makefile. +

+

+ If this occurs, the best way to proceed is to drop back to a + single processor build. Adding -j1 to a make command will override the + similar setting in the MAKEFLAGS + environment variable. +

+
+

+ Important +

+

+ Another problem may occur with modern CPU's, which have a + lot of cores. Each job started consumes memory, and if the + sum of the needed memory for each job exceeds the available + memory, you may encounter either an OOM (Out of Memory) + kernel interrupt or intense swapping that will slow the + build beyond reasonable limits. +

+

+ Some compilations with g++ may consume up to 2.5 + GB of memory, so to be safe, you should restrict the number + of jobs to (Total Memory in GB)/2.5, at least for big + packages such as LLVM, WebKitGtk, QtWebEngine, or + libreoffice. +

+
+
+
+

+ Use Linux + Control Group to Limit the Resource Usage +

+

+ Sometimes we want to limit the resource usage when we build a + package. For example, when we have 8 logical cores, we may + want to use only 6 cores for building the package and reserve + another 2 cores for playing a movie. The Linux kernel + provides a feature called control groups (cgroup) for such a + need. +

+

+ Enable control group in the kernel configuration, then + rebuild the kernel and reboot if necessary: +

+
General setup --->
+  [*] Control Group support --->                                       [CGROUPS]
+    [*] Memory controller                                                [MEMCG]
+    [*] Cpuset controller                                              [CPUSETS]
+

+ Ensure Sudo-1.9.17p2 is installed. To run + make -j5 with + the first 4 logical cores and 8 GB of system memory, issue: +

+
bash -e << \EOF
+  sudo mkdir /sys/fs/cgroup/$$
+  sudo sh -c \
+    "echo +memory +cpuset > /sys/fs/cgroup/cgroup.subtree_control"
+  sudo sh -c \
+    "echo 0-3 > /sys/fs/cgroup/$$/cpuset.cpus"
+  sudo sh -c \
+    "echo $(bc -e '8*2^30') > /sys/fs/cgroup/$$/memory.high"
+  (
+    sudo sh -c "echo $BASHPID > /sys/fs/cgroup/$$/cgroup.procs"
+    exec make -j5
+  )
+  sudo rmdir /sys/fs/cgroup/$$
+EOF
+

+ With 8589934592 (the output of bc -e '8*2^30', 2^30 + represents 230, i.e. a Gigabyte) in the + memory.high entry, a + soft limit of memory usage is set. If the processes in the + cgroup (make + and all the descendants of it) uses more than 8 GB of system + memory in total, the kernel will throttle down the processes + and try to reclaim the system memory from them. But they can + still use more than 8 GB of system memory. If you want to + make a hard limit instead, replace memory.high with + memory.max. But doing so + will cause the processes killed if 8 GB is not enough for + them. +

+

+ 0-3 in the + cpuset.cpus entry makes + the kernel only run the processes in the cgroup on the + logical cores with numbers 0, 1, 2, or 3. You may need to + adjust this setting based the mapping between the logical + cores and the physical cores. For example, with an Intel Core + i9-13900K CPU, the logical cores 0, 2, 4, ..., 14 are mapped + to the first threads of the eight physical P cores, the + logical cores 1, 3, 5, ..., 15 are mapped to the second + threads of the physical P cores, and the logical cores 16, + 17, ..., 31 are mapped to the 16 physical E cores. So if we + want to use four threads from four different P cores, we need + to specify 0,2,4,6 instead of + 0-3. Note that the other CPU + models may use a different mapping scheme. If you are not + sure about the mapping between the logical cores and the + physical cores, run the lscpu + --extended command which will output logical + core IDs in the CPU + column, and physical core IDs in the CORE column. +

+

+ When the nproc + or ninja + command runs in a cgroup, it will use the number of logical + cores assigned to the cgroup as the “system logical core + count.” For example, in a cgroup with logical + cores 0-3 assigned, nproc will print + 4, and ninja will run 6 (4 + 2) + jobs simultaneously if no -j + setting is explicitly given. +

+

+ Read the Documentation/admin-guide/cgroup-v2.rst + file in the Linux kernel source tree for the detailed + explanation of cgroup2 pseudo + file system entries referred in the command. +

+
+
+

+ Automated Building Procedures +

+

+ There are times when automating the building of a package can + come in handy. Everyone has their own reasons for wanting to + automate building, and everyone goes about it in their own + way. Creating Makefiles, + Bash scripts, Perl scripts or simply a list of + commands used to cut and paste are just some of the methods + you can use to automate building BLFS packages. Detailing how + and providing examples of the many ways you can automate the + building of packages is beyond the scope of this section. + This section will expose you to using file redirection and + the yes command + to help provide ideas on how to automate your builds. +

+

+ File + Redirection to Automate Input +

+

+ You will find times throughout your BLFS journey when you + will come across a package that has a command prompting you + for information. This information might be configuration + details, a directory path, or a response to a license + agreement. This can present a challenge to automate the + building of that package. Occasionally, you will be prompted + for different information in a series of questions. One + method to automate this type of scenario requires putting the + desired responses in a file and using redirection so that the + program uses the data in the file as the answers to the + questions. +

+

+ This effectively makes the test suite use the responses in + the file as the input to the questions. Occasionally you may + end up doing a bit of trial and error determining the exact + format of your input file for some things, but once figured + out and documented you can use this to automate building the + package. +

+

+ Using yes to Automate Input +

+

+ Sometimes you will only need to provide one response, or + provide the same response to many prompts. For these + instances, the yes command works really + well. The yes + command can be used to provide a response (the same one) to + one or more instances of questions. It can be used to + simulate pressing just the Enter key, entering the + Y key or + entering a string of text. Perhaps the easiest way to show + its use is in an example. +

+

+ First, create a short Bash + script by entering the following commands: +

+
cat > blfs-yes-test1 << "EOF"
+#!/bin/bash
+
+echo -n -e "\n\nPlease type something (or nothing) and press Enter ---> "
+
+read A_STRING
+
+if test "$A_STRING" = ""; then A_STRING="Just the Enter key was pressed"
+else A_STRING="You entered '$A_STRING'"
+fi
+
+echo -e "\n\n$A_STRING\n\n"
+EOF
+chmod 755 blfs-yes-test1
+

+ Now run the script by issuing ./blfs-yes-test1 from the + command line. It will wait for a response, which can be + anything (or nothing) followed by the Enter key. After entering + something, the result will be echoed to the screen. Now use + the yes command + to automate the entering of a response: +

+
yes | ./blfs-yes-test1
+

+ Notice that piping yes by itself to the script + results in y + being passed to the script. Now try it with a string of text: +

+
yes 'This is some text' | ./blfs-yes-test1
+

+ The exact string was used as the response to the script. + Finally, try it using an empty (null) string: +

+
yes '' | ./blfs-yes-test1
+

+ Notice this results in passing just the press of the + Enter key to the + script. This is useful for times when the default answer to + the prompt is sufficient. This syntax is used in the + Net-tools instructions to + accept all the defaults to the many prompts during the + configuration step. You may now remove the test script, if + desired. +

+

+ File + Redirection to Automate Output +

+

+ In order to automate the building of some packages, + especially those that require you to read a license agreement + one page at a time, requires using a method that avoids + having to press a key to display each page. Redirecting the + output to a file can be used in these instances to assist + with the automation. The previous section on this page + touched on creating log files of the build output. The + redirection method shown there used the tee command to redirect + output to a file while also displaying the output to the + screen. Here, the output will only be sent to a file. +

+

+ Again, the easiest way to demonstrate the technique is to + show an example. First, issue the command: +

+
ls -l /usr/bin | less
+

+ Of course, you'll be required to view the output one page at + a time because the less filter was used. Now + try the same command, but this time redirect the output to a + file. The special file /dev/null can be used instead of the + filename shown, but you will have no log file to examine: +

+
ls -l /usr/bin | less > redirect_test.log 2>&1
+

+ Notice that this time the command immediately returned to the + shell prompt without having to page through the output. You + may now remove the log file. +

+

+ The last example will use the yes command in combination + with output redirection to bypass having to page through the + output and then provide a y to a prompt. This + technique could be used in instances when otherwise you would + have to page through the output of a file (such as a license + agreement) and then answer the question of do you accept the above?. For this + example, another short Bash + script is required: +

+
cat > blfs-yes-test2 << "EOF"
+#!/bin/bash
+
+ls -l /usr/bin | less
+
+echo -n -e "\n\nDid you enjoy reading this? (y,n) "
+
+read A_STRING
+
+if test "$A_STRING" = "y"; then A_STRING="You entered the 'y' key"
+else A_STRING="You did NOT enter the 'y' key"
+fi
+
+echo -e "\n\n$A_STRING\n\n"
+EOF
+chmod 755 blfs-yes-test2
+

+ This script can be used to simulate a program that requires + you to read a license agreement, then respond appropriately + to accept the agreement before the program will install + anything. First, run the script without any automation + techniques by issuing ./blfs-yes-test2. +

+

+ Now issue the following command which uses two automation + techniques, making it suitable for use in an automated build + script: +

+
yes | ./blfs-yes-test2 > blfs-yes-test2.log 2>&1
+

+ If desired, issue tail + blfs-yes-test2.log to see the end of the + paged output, and confirmation that y was passed through to the + script. Once satisfied that it works as it should, you may + remove the script and log file. +

+

+ Finally, keep in mind that there are many ways to automate + and/or script the build commands. There is not a single + “correct” way to do it. Your imagination + is the only limit. +

+
+
+

+ Dependencies +

+

+ For each package described, BLFS lists the known + dependencies. These are listed under several headings, whose + meaning is as follows: +

+
+
    +
  • +

    + Required means + that the target package cannot be correctly built + without the dependency having first been installed, + except if the dependency is said to be “runtime” + which means the target package can be built but cannot + function without it. +

    +

    + Note that a target package can start to “function” in + many subtle ways: an installed configuration file can + make the init system, cron daemon, or bus daemon to run + a program automatically; another package using the + target package as a dependency can run a program from + the target package in the building system; and the + configuration sections in the BLFS book may also run a + program from a just installed package. So if you are + installing the target package without a Required (runtime) + dependency installed, You should install the dependency + as soon as possible after the installation of the + target package. +

    +
  • +
  • +

    + Recommended + means that BLFS strongly suggests this package is + installed first (except if said to be “runtime,” + see below) for a clean and trouble-free build, that + won't have issues either during the build process, or + at run-time. The instructions in the book assume these + packages are installed. In many cases, if a recommended + dependency (not just “runtime”) is not installed, the + built package may lack some important functionalities + (for example, a video player may be only able to play + audio). Sometimes, it's needed to modify the book + instructions to disable those important + functionalities. In other cases, the build system of + the package may build a copy of the dependency (often + outdated and sometimes with known security + vulnerabilities) shipped in the source tree, or may be + downloaded from the Internet during the build process. + This increases build time and disk usage. This could + potentially cause other problems. If a recommended + dependency is said to be “runtime,” it + means that BLFS strongly suggests that this dependency + is installed before using the package, for getting full + functionality. +

    +
  • +
  • +

    + Optional means + that this package might be installed for added + functionality. Often BLFS will describe the dependency + to explain the added functionality that will result. + Some optional dependencies are automatically picked up + by the target package if the dependency is installed, + while others also need additional configuration options + to be enabled when the target package is built. Such + additional options are often documented in the BLFS + book. If an optional dependency is said to be + “runtime,” it means you may + install the dependency after installing the target + package to support some optional features of the target + package if you need these features. +

    +

    + An optional dependency may be out of BLFS. If you need + such an external + optional dependency for some features you need, read + Going Beyond BLFS for the + general hint about installing an out-of-BLFS package. + Note that the BLFS editors don't test a configuration + with external packages in general, thus there is + absolutely no quality assurance for the external + dependencies listed in the book. The list of external + dependencies may be incomplete or contain some + redundant item. In the worst case, the mere existence + of an external dependency on the system can trigger a + bug in the package, causing a build or runtime failure. +

    +
  • +
+
+
+
+

+ Using the + Most Current Package Sources +

+

+ On occasion you may run into a situation in the book when a + package will not build or work properly. Though the Editors + attempt to ensure that every package in the book builds and + works properly, sometimes a package has been overlooked or + was not tested with this particular version of BLFS. +

+

+ If you discover that a package will not build or work + properly, you should see if there is a more current version + of the package. Typically this means you go to the + maintainer's web site and download the most current tarball + and attempt to build the package. If you cannot determine the + maintainer's web site by looking at the download URLs, use + Google and query the package's name. For example, in the + Google search bar type: 'package_name download' (omit the + quotes) or something similar. Sometimes typing: 'package_name + home page' will result in you finding the maintainer's web + site. +

+
+
+

+ Stripping One More + Time +

+

+ In LFS, stripping of debugging symbols was discussed a couple + of times. When building BLFS packages, there are generally no + special instructions that discuss stripping again. Stripping + can be done while installing a package, or afterwards. +

+

+ Stripping while Installing a Package +

+

+ There are several ways to strip executables installed by a + package. They depend on the build system used (see below + the section about + build systems), so only some generalities can be listed + here: +

+
+

+ Note +

+

+ The following methods using the feature of a building + system (autotools, meson, or cmake) will not strip static + libraries if any is installed. Fortunately there are not + too many static libraries in BLFS, and a static library can + always be stripped safely by running strip --strip-unneeded on + it manually. +

+
+
+
    +
  • +

    + The packages using autotools usually have an install-strip target in + their generated Makefile + files. So installing stripped executables is just a + matter of using make + install-strip instead of make install. +

    +
  • +
  • +

    + The packages using the meson build system can accept + -D strip=true + when running meson. If you've + forgot to add this option running the meson, you can also + run meson install + --strip instead of ninja install. +

    +
  • +
  • +

    + cmake + generates install/strip targets for + both the Unix + Makefiles and Ninja generators (the + default is Unix + Makefiles on linux). So just run + make + install/strip or ninja install/strip + instead of the install counterparts. +

    +
  • +
  • +

    + Removing (or not generating) debug symbols can also be + achieved by removing the -g<something> + options in C/C++ calls. How to do that is very specific + for each package. And, it does not remove unneeded + symbol table entries. So it will not be explained in + detail here. See also below the paragraphs about + optimization. +

    +
  • +
+
+

+ Stripping Installed Executables +

+

+ The strip + utility changes files in place, which may break anything + using it if it is loaded in memory. Note that if a file is in + use but just removed from the disk (i.e. not overwritten nor + modified), this is not a problem since the kernel can use + “deleted” files. Look at /proc/*/maps and it is likely that you'll + see some (deleted) + entries. The mv + just removes the destination file from the directory but does + not touch its content, so that it satisfies the condition for + the kernel to use the old (deleted) file. But this approach + can detach hard links into duplicated copies, causing a bloat + which is obviously unwanted as we are stripping to reduce + system size. If two files in a same file system share the + same inode number, they are hard links to each other and we + should reconstruct the link. The script below is just an + example. It should be run as the root user: +

+
cat > /usr/sbin/strip-all.sh << "EOF"
+#!/usr/bin/bash
+
+if [ $EUID -ne 0 ]; then
+  echo "Need to be root"
+  exit 1
+fi
+
+last_fs_inode=
+last_file=
+
+{ find /usr/lib -type f -name '*.so*' ! -name '*dbg'
+  find /usr/lib -type f -name '*.a'
+  find /usr/{bin,sbin,libexec} -type f
+} | xargs stat -c '%m %i %n' | sort | while read fs inode file; do
+       if ! readelf -h $file >/dev/null 2>&1; then continue; fi
+       if file $file | grep --quiet --invert-match 'not stripped'; then continue; fi
+
+       if [ "$fs $inode" = "$last_fs_inode" ]; then
+         ln -f $last_file $file;
+         continue;
+       fi
+
+       cp --preserve $file ${file}.tmp
+       strip --strip-debug ${file}.tmp
+       mv ${file}.tmp $file
+
+       last_fs_inode="$fs $inode"
+       last_file=$file
+done
+EOF
+chmod 744 /usr/sbin/strip-all.sh
+

+ If you install programs in other directories such as + /opt or /usr/local, you may want to strip the files + there too. Just add other directories to scan in the compound + list of find + commands between the braces. +

+

+ For more information on stripping, see + https://www.technovelty.org/linux/stripping-shared-libraries.html. +

+
+
+

+ Working with + different build systems +

+

+ There are now three different build systems in common use for + converting C or C++ source code into compiled programs or + libraries and their details (particularly, finding out about + available options and their default values) differ. It may be + easiest to understand the issues caused by some choices + (typically slow execution or unexpected use of, or omission + of, optimizations) by starting with the CFLAGS, CXXFLAGS, + and LDFLAGS environment variables. + There are also some programs which use Rust. +

+

+ Most LFS and BLFS builders are probably aware of the basics + of CFLAGS and CXXFLAGS for altering how a program is + compiled. Typically, some form of optimization is used by + upstream developers (-O2 or + -O3), sometimes with the creation + of debug symbols (-g), as + defaults. +

+

+ If there are contradictory flags (e.g. multiple different + -O values), the last value will be used. Sometimes + this means that flags specified in environment variables will + be picked up before values hardcoded in the Makefile, and + therefore ignored. For example, where a user specifies + -O2 and that is followed by + -O3 the build will use + -O3. +

+

+ There are various other things which can be passed in CFLAGS + or CXXFLAGS, such as allowing using the instruction set + extensions available with a specific microarchitecture (e.g. + -march=amdfam10 or -march=native), tune the generated code for a + specific microarchitecture (e. g. -mtune=tigerlake or -mtune=native, if -mtune= is not used, the microarchitecture + from -march= setting will be + used), or specifying a specific standard for C or C++ + (-std=c++17 for example). But one + thing which has now come to light is that programmers might + include debug assertions in their code, expecting them to be + disabled in releases by using -D + NDEBUG. Specifically, if Mesa-25.1.8 is built with these + assertions enabled, some activities such as loading levels of + games can take extremely long times, even on high-class video + cards. +

+

+ Autotools + with Make +

+

+ This combination is often described as “CMMI” (configure, + make, make install) and is used here to also cover the few + packages which have a configure script that is not generated + by autotools. +

+

+ Sometimes running ./configure + --help will produce useful options about + switches which might be used. At other times, after looking + at the output from configure you may need to look at the + details of the script to find out what it was actually + searching for. +

+

+ Many configure scripts will pick up any CFLAGS or CXXFLAGS + from the environment, but CMMI packages vary about how these + will be mixed with any flags which would otherwise be used + (variously: ignored, + used to replace the programmer's suggestion, used before the + programmer's suggestion, or used after the programmer's + suggestion). +

+

+ In most CMMI packages, running make will list each command + and run it, interspersed with any warnings. But some packages + try to be “silent” and only show which file they + are compiling or linking instead of showing the command line. + If you need to inspect the command, either because of an + error, or just to see what options and flags are being used, + adding V=1 to the make invocation + may help. +

+

+ CMake +

+

+ CMake works in a very different way, and it has two backends + which can be used on BLFS: make and ninja. The default backend + is make, but ninja can be faster on large packages with + multiple processors. To use ninja, specify -G Ninja in the cmake command. However, there + are some packages which create fatal errors in their ninja + files but build successfully using the default of Unix + Makefiles. +

+

+ The hardest part of using CMake is knowing what options you + might wish to specify. The only way to get a list of what the + package knows about is to run cmake -LAH and look at the + output for that default configuration. +

+

+ Perhaps the most-important thing about CMake is that it has a + variety of CMAKE_BUILD_TYPE values, and these affect the + flags. The default is that this is not set and no flags are + generated. Any CFLAGS or + CXXFLAGS in the environment will + be used. If the programmer has coded any debug assertions, + those will be enabled unless -D NDEBUG is used. The following + CMAKE_BUILD_TYPE values will generate the flags shown, and + these will come after + any flags in the environment and therefore take precedence. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Value + + Flags +
+ Debug + + -g +
+ Release + + -O3 -D NDEBUG +
+ RelWithDebInfo + + -O2 -g -D NDEBUG +
+ MinSizeRel + + -Os -D NDEBUG +
+
+

+ CMake tries to produce quiet builds. To see the details of + the commands which are being run, use make VERBOSE=1 or + ninja -v. +

+

+ By default, CMake treats file installation differently from + the other build systems: if a file already exists and is not + newer than a file that would overwrite it, then the file is + not installed. This may be a problem if a user wants to + record which file belongs to a package, either using + LD_PRELOAD, or by listing files + newer than a timestamp. The default can be changed by setting + the variable CMAKE_INSTALL_ALWAYS + to 1 in the environment, for example by + export'ing it. +

+

+ Meson +

+

+ Meson has some similarities to CMake, but many differences. + To get details of the defines that you may wish to change you + can look at meson_options.txt + which is usually in the top-level directory. +

+

+ If you have already configured the package by running + meson and now + wish to change one or more settings, you can either remove + the build directory, recreate it, and use the altered + options, or within the build directory run meson configure, e.g. to + set an option: +

+
meson configure -D <some_option>=true
+

+ If you do that, the file meson-private/cmd_line.txt will show the + last commands which + were used. +

+

+ Meson provides the following buildtype values, and the flags + they enable come after + any flags supplied in the environment and therefore take + precedence. +

+
+
    +
  • +

    + plain: no added flags. This is for distributors to + supply their own CFLAGS, + CXXFLAGS and LDFLAGS. There is no obvious reason to + use this in BLFS. +

    +
  • +
  • +

    + debug: -g - this is the + default if nothing is specified in either meson.build or the command line. + However it results large and slow binaries, so we + should override it in BLFS. +

    +
  • +
  • +

    + debugoptimized: -O2 -g - + this is the default specified in meson.build of some packages. +

    +
  • +
  • +

    + release: -O3 (occasionally + a package will force -O2 + here) - this is the buildtype we use for most packages + with Meson build system in BLFS. +

    +
  • +
+
+

+ The -D NDEBUG flag is implied by + the release buildtype for some packages (for example + Mesa-25.1.8). It can also be provided + explicitly by passing -D + b_ndebug=true. +

+

+ To see the details of the commands which are being run in a + package using meson, use ninja + -v. +

+

+ Rustc and Cargo +

+

+ Most released rustc programs are provided as crates (source + tarballs) which will query a server to check current versions + of dependencies and then download them as necessary. These + packages are built using cargo + --release. In theory, you can manipulate the + RUSTFLAGS to change the optimize-level (default for + --release is 3, i. e. + -Copt-level=3, like -O3) or to force it to build for the machine + it is being compiled on, using -Ctarget-cpu=native but in practice this + seems to make no significant difference. +

+

+ If you are compiling a standalone Rust program (as an + unpackaged .rs file) by running + rustc directly, + you should specify -O (the + abbreviation of -Copt-level=2) or + -Copt-level=3 otherwise it will + do an unoptimized compile and run much slower. If you are compiling + the program for debugging it, replace the -O or -Copt-level= options with -g to produce an unoptimized program with + debug info. +

+

+ Like ninja, by + default cargo + uses all logical cores. This can often be worked around, + either by exporting CARGO_BUILD_JOBS=<N> or passing + --jobs <N> to + cargo. For + compiling rustc itself, specifying --jobs <N> for + invocations of x.py (together with the + CARGO_BUILD_JOBS environment + variable, which looks like a “belt and braces” + approach but seems to be necessary) mostly works. The + exception is running the tests when building rustc, some of + them will nevertheless use all online CPUs, at least as of + rustc-1.42.0. +

+
+
+

+ Optimizing the + build +

+

+ Many people will prefer to optimize compiles as they see fit, + by providing CFLAGS or + CXXFLAGS. For an introduction to + the options available with gcc and g++ see + https://gcc.gnu.org/onlinedocs/gcc-15.2.0/gcc/Optimize-Options.html. + The same content can be also found in info gcc. +

+

+ Some packages default to -O2 -g, + others to -O3 -g, and if + CFLAGS or CXXFLAGS are supplied they might be added to + the package's defaults, replace the package's defaults, or + even be ignored. There are details on some desktop packages + which were mostly current in April 2019 at https://www.linuxfromscratch.org/~ken/tuning/ + - in particular, README.txt, + tuning-1-packages-and-notes.txt, and + tuning-notes-2B.txt. The + particular thing to remember is that if you want to try some + of the more interesting flags you may need to force verbose + builds to confirm what is being used. +

+

+ Clearly, if you are optimizing your own program you can spend + time to profile it and perhaps recode some of it if it is too + slow. But for building a whole system that approach is + impractical. In general, -O3 + usually produces faster programs than -O2. Specifying -march=native is also beneficial, but means + that you cannot move the binaries to an incompatible machine + - this can also apply to newer machines, not just to older + machines. For example programs compiled for amdfam10 run on old Phenoms, Kaveris, and + Ryzens, but programs compiled for a Kaveri will not run on a + Ryzen because certain op-codes are not present. Similarly, if + you build for a Haswell not everything will run on a + SandyBridge. +

+
+

+ Note +

+

+ Be careful that the name of a -march setting does not always match the + baseline of the microarchitecture with the same name. For + example, the Skylake-based Intel Celeron processors do not + support AVX at all, but -march=skylake assumes AVX and even AVX2. +

+
+

+ When a shared library is built by GCC, a feature named + “semantic + interposition” is enabled by default. When the + shared library refers to a symbol name with external linkage + and default visibility, if the symbol exists in both the + shared library and the main executable, semantic + interposition guarantees the symbol in the main executable is + always used. This feature was invented in an attempt to make + the behavior of linking a shared library and linking a static + library as similar as possible. Today only a small number of + packages still depend on semantic interposition, but the + feature is still on by the default of GCC, causing many + optimizations disabled for shared libraries because they + conflict with semantic interposition. The -fno-semantic-interposition option can be + passed to gcc + or g++ to + disable semantic interposition and enable more optimizations + for shared libraries. This option is used as the default of + some packages (for example Python-3.13.7), and it's also the + default of Clang. +

+

+ There are also various other options which some people claim + are beneficial. At worst, you get to recompile and test, and + then discover that in your usage the options do not provide a + benefit. +

+

+ If building Perl or Python modules, in general the + CFLAGS and CXXFLAGS used are those which were used by + those “parent” packages. +

+

+ For LDFLAGS, three options can be + used for optimization. They are quite safe to use and the + building system of some packages use some of these options as + the default. +

+

+ With -Wl,-O1, the linker will + optimize the hash table to speed up the dynamic linking. Note + that -Wl,-O1 is completely + unrelated to the compiler optimization flag -O1. +

+

+ With -Wl,--as-needed, the linker + will disregard unnecessary -lfoo options from the + command line, i. e. the shared library libfoo will only be + linked if a symbol in libfoo is really referred + from the executable or shared library being linked. This can + sometimes mitigate the “excessive dependencies to shared + libraries” issues caused by libtool. +

+

+ With -Wl,-z,pack-relative-relocs, + the linker generates a more compacted form of the relative + relocation entries for PIEs and shared libraries. It reduces + the size of the linked PIE or shared library, and speeds up + the loading of the PIE or shared library. +

+

+ The -Wl, prefix is necessary + because despite the variable is named LDFLAGS, its content is actually passed to + gcc (or + g++, + clang, etc.) + during the link stage, not directly passed to ld. +

+
+
+

+ Options for hardening + the build +

+

+ Even on desktop systems, there are still a lot of exploitable + vulnerabilities. For many of these, the attack comes via + javascript in a browser. Often, a series of vulnerabilities + are used to gain access to data (or sometimes to pwn, i.e. + own, the machine and install rootkits). Most commercial + distros will apply various hardening measures. +

+

+ In the past, there was Hardened LFS where gcc (a much older + version) was forced to use hardening (with options to turn + some of it off on a per-package basis). The current LFS and + BLFS books are carrying forward a part of its spirit by + enabling PIE (-fPIE -pie) and SSP + (-fstack-protector-strong) as the + defaults for GCC and clang. And, the linker (ld) has also enabled + -Wl,-z,relro which makes a part + of the Global Offset Table (GOT) immutable, by default since + Binutils 2.27. What is being covered here is different - + first you have to make sure that the package is indeed using + your added flags and not over-riding them. +

+

+ For hardening options which are reasonably cheap, there is + some discussion in the 'tuning' link above (occasionally, one + or more of these options might be inappropriate for a + package). These options are -D + _FORTIFY_SOURCE=2 (or -D + _FORTIFY_SOURCE=3 which is more secure but with a + larger performance overhead) and (for C++) -D _GLIBCXX_ASSERTIONS. On modern machines + these should only have a little impact on how fast things + run, and often they will not be noticeable. +

+

+ The main distros use much more, such as: +

+
+
    +
  • +

    + -Wl,-z,now: disables lazy + binding to enhance -Wl,-z,relro, so the entire GOT can be made + immutable. +

    +
  • +
  • +

    + -fstack-clash-protection: + prevents the attacker from using an offset large enough + and not adequately checked to jump over the stack guard + page placed by the kernel and the stack canary placed + by -fstack-protector=strong, and modify + the stack from a heap address, or vice versa. +

    +
  • +
  • +

    + -ftrivial-auto-var-init=zero: + initializes some variables by filling zero bytes if + they are not initialized by other means. +

    +
  • +
  • +

    + -fcf-protection=full: + utilizes Intel and AMD CET technology to limit the + target addresses of control-flow transfer instructions. + To make it really effective for a package, all packages + providing a shared library for the package to use must + be built with this option, as well as that package + itself, Glibc must be configured with the --enable-cet option enabled, and the + system must run on Intel Tiger Lake or newer, or AMD + Zen 3 or newer. If the criteria is not met the program + compiled with this option will still run, but not + really protected by CET. +

    +
  • +
+
+

+ In GCC 14, the option -fhardened + is a shorthand to enable all the hardening options mentioned + above. It sets -D + _FORTIFY_SOURCE=3 instead of -D + _FORTIFY_SOURCE=2. +

+

+ You may also encounter the so-called “userspace + retpoline” (-mindirect-branch=thunk etc.) which is the + equivalent of the spectre mitigations applied to the linux + kernel in late 2018. The kernel mitigations caused a lot of + complaints about lost performance, if you have a production + server you might wish to consider testing that, along with + the other available options, to see if performance is still + sufficient. +

+

+ Whilst gcc has many hardening options, clang/LLVM's strengths + lie elsewhere. Some options which gcc provides are said to be + less effective in clang/LLVM. +

+
+
+
+
+
+

+ The /usr Versus + /usr/local Debate +

+
+
+
+
+

+ Should I install XXX in /usr or /usr/local? +

+

+ This is a question without an obvious answer for an LFS based + system. +

+

+ In traditional Unix systems, /usr + usually contains files that come with the system distribution, + and the /usr/local tree is free + for the local administrator to manage. The only really hard and + fast rule is that Unix distributions should not touch + /usr/local, except perhaps to + create the basic directories within it. +

+

+ With Linux distributions like Red Hat, Debian, etc., a possible + rule is that /usr is managed by + the distribution's package system and /usr/local is not. This way the package + manager's database knows about every file within /usr. +

+

+ LFS users build their own system and so deciding where the + system ends and local files begin is not straightforward. So + the choice should be made in order to make things easier to + administer. There are several reasons for dividing files + between /usr and /usr/local. +

+
+
    +
  • +

    + On a network of several machines all running LFS, or + mixed LFS and other Linux distributions, /usr/local could be used to hold + packages that are common between all the computers in the + network. It can be NFS mounted or mirrored from a single + server. Here local indicates local to the site. +

    +
  • +
  • +

    + On a network of several computers all running an + identical LFS system, /usr/local could hold packages that are + different between the machines. In this case local refers + to the individual computers. +

    +
  • +
  • +

    + Even on a single computer, /usr/local can be useful if you have + several distributions installed simultaneously, and want + a place to put packages that will be the same on all of + them. +

    +
  • +
  • +

    + Or you might regularly rebuild your LFS, but want a place + to put files that you don't want to rebuild each time. + This way you can wipe the LFS file system and start from + a clean partition every time without losing everything. +

    +
  • +
+
+

+ Some people ask why not use your own directory tree, e.g., + /usr/site, rather than + /usr/local? +

+

+ There is nothing stopping you, many sites do make their own + trees, however it makes installing new software more difficult. + Automatic installers often look for dependencies in + /usr and /usr/local, and if the file it is looking for + is in /usr/site instead, the + installer will probably fail unless you specifically tell it + where to look. +

+

+ What is the BLFS position on + this? +

+

+ All of the BLFS instructions install programs in /usr with optional instructions to install + into /opt for some specific + packages. +

+
+
+
+
+

+ Optional Patches +

+
+
+
+
+

+ As you follow the various sections in the book, you will + observe that the book occasionally includes patches that are + required for a successful and secure installation of the + packages. The general policy of the book is to include patches + that fall in one of the following criteria: +

+
+
    +
  • +

    + Fixes a compilation problem. +

    +
  • +
  • +

    + Fixes a security problem. +

    +
  • +
  • +

    + Fixes a broken functionality. +

    +
  • +
+
+

+ In short, the book only includes patches that are either + required or recommended. There is a Patches + subproject which hosts various patches (including the + patches referenced in the books) to enable you to configure + your LFS the way you like it. +

+
+
+
+
+

+ BLFS Boot + Scripts +

+
+
+
+
+

+ The BLFS Bootscripts package contains the init scripts that are + used throughout the book. It is assumed that you will be using + the BLFS Bootscripts package in conjunction with a compatible + LFS-Bootscripts package. Refer to ../../../../lfs/view/12.4/chapter09/bootscripts.html + for more information on the LFS-Bootscripts package. +

+ +

+ The BLFS Bootscripts package will be used throughout the BLFS + book for startup scripts. Unlike LFS, each init script has a + separate install target in the BLFS Bootscripts package. It is + recommended you keep the package source directory around until + completion of your BLFS system. When a script is requested from + BLFS Bootscripts, simply change to the directory and as the + root user, execute the given + make install-<init-script> + command. This command installs the init script to its proper + location (along with any auxiliary configuration scripts) and + also creates the appropriate symlinks to start and stop the + service at the appropriate run-level. +

+
+

+ Note +

+

+ You should review each bootscript before installation to + ascertain that it satisfies your need. Also verify that the + start and stop symlinks it creates match your preferences. +

+
+
+

+ Note +

+

+ From time to time the bootscripts are updated to accommodate + new packages or to make minor corrections. All versions of + the bootscripts are located at https://anduin.linuxfromscratch.org/BLFS/blfs-bootscripts/. +

+
+
+
+
+
+

+ About Libtool Archive + (.la) files +

+
+
+
+
+
+

+ Files with a .la extension +

+

+ In LFS and BLFS, many packages use an internally shipped + libtool copy to build on a variety of Unix platforms. This + includes platforms such as AIX, Solaris, IRIX, HP-UX, and + Cygwin as well as Linux. The origins of this tool are quite + dated. It was intended to manage libraries on systems with + less advanced capabilities than a modern Linux system. +

+

+ On a Linux system, libtool specific files are generally + unneeded. Normally libraries are specified in the build + process during the link phase. Since a linux system uses the + + Executable and Linkable Format (ELF) for executables and + dynamic libraries, information needed to complete the task is + embedded in the files. Both the linker and the program loader + can query the appropriate files and properly link or execute + the program. +

+

+ Static libraries are rarely used in LFS and BLFS. And, + nowadays most packages store the information needed for + linking against a static library into a .pc file, instead of + relying on libtool. A pkg-config --static --libs + command will output the sufficient flags for the linker to + link against a static library without any libtool magic. +

+

+ The problem is that libtool usually creates one or more text + files for package libraries called libtool archives. These + small files have a ".la" extension and contain information + that is similar to that embedded in the libraries or + pkg-config files. When building a package that uses libtool, + the process automatically looks for these files. Sometimes a + .la file can contains the name or path of a static library + used during build but not installed, then the build process + will break because the .la file refers to something + nonexistent on the system. Similarly, if a package is updated + and no longer uses the .la file, then the build process can + break with the old .la files. +

+

+ The solution is to remove the .la files. However there is a + catch. Some packages, such as ImageMagick-7.1.2-1, use a libtool + function, lt_dlopen, to load libraries as needed during + execution and resolve their dependencies at run time. In this + case, the .la files should remain. +

+

+ The script below, removes all unneeded .la files and saves + them in a directory, /var/local/la-files by default, not in + the normal library path. It also searches all pkg-config + files (.pc) for embedded references to .la files and fixes + them to be conventional library references needed when an + application or library is built. It can be run as needed to + clean up the directories that may be causing problems. +

+
cat > /usr/sbin/remove-la-files.sh << "EOF"
+#!/bin/bash
+
+# /usr/sbin/remove-la-files.sh
+# Written for Beyond Linux From Scratch
+# by Bruce Dubbs <bdubbs@linuxfromscratch.org>
+
+# Make sure we are running with root privs
+if test "${EUID}" -ne 0; then
+    echo "Error: $(basename ${0}) must be run as the root user! Exiting..."
+    exit 1
+fi
+
+# Make sure PKG_CONFIG_PATH is set if discarded by sudo
+source /etc/profile
+
+OLD_LA_DIR=/var/local/la-files
+
+mkdir -p $OLD_LA_DIR
+
+# Only search directories in /opt, but not symlinks to directories
+OPTDIRS=$(find /opt -mindepth 1 -maxdepth 1 -type d)
+
+# Move any found .la files to a directory out of the way
+find /usr/lib $OPTDIRS -name "*.la" ! -path "/usr/lib/ImageMagick*" \
+  -exec mv -fv {} $OLD_LA_DIR \;
+###############
+
+# Fix any .pc files that may have .la references
+
+STD_PC_PATH='/usr/lib/pkgconfig
+             /usr/share/pkgconfig
+             /usr/local/lib/pkgconfig
+             /usr/local/share/pkgconfig'
+
+# For each directory that can have .pc files
+for d in $(echo $PKG_CONFIG_PATH | tr : ' ') $STD_PC_PATH; do
+
+  # For each pc file
+  for pc in $d/*.pc ; do
+    if [ $pc == "$d/*.pc" ]; then continue; fi
+
+    # Check each word in a line with a .la reference
+    for word in $(grep '\.la' $pc); do
+      if $(echo $word | grep -q '.la$' ); then
+        mkdir -p $d/la-backup
+        cp -fv  $pc $d/la-backup
+
+        basename=$(basename $word )
+        libref=$(echo $basename|sed -e 's/^lib/-l/' -e 's/\.la$//')
+
+        # Fix the .pc file
+        sed -i "s:$word:$libref:" $pc
+      fi
+    done
+  done
+done
+
+EOF
+
+chmod +x /usr/sbin/remove-la-files.sh
+
+
+
+
+
+

+ Libraries: Static or + shared? +

+
+
+
+
+
+

+ Libraries: Static or shared? +

+

+ The original libraries were simply an archive of routines + from which the required routines were extracted and linked + into the executable program. These are described as static + libraries, with names of the form libfoo.a on UNIX-like operating systems. On + some old operating systems they are the only type available. +

+

+ On almost all Linux platforms there are also “shared” (or + equivalently “dynamic”) libraries (with names of the + form libfoo.so) – one copy of + the library is loaded into virtual memory, and shared by all + the programs which call any of its functions. This is space + efficient. +

+

+ In the past, essential programs such as a shell were often + linked statically so that some form of minimal recovery + system would exist even if shared libraries, such as + libc.so, became damaged (e.g. + moved to lost+found after + fsck following + an unclean shutdown). Nowadays, most people use an + alternative system install or a USB stick if they have to + recover. Journaling filesystems also reduce the likelihood of + this sort of problem. +

+

+ Within the book, there are various places where configure + switches such as --disable-static are employed, + and other places where the possibility of using system + versions of libraries instead of the versions included within + another package is discussed. The main reason for this is to + simplify updates of libraries. +

+

+ If a package is linked to a dynamic library, updating to a + newer library version is automatic once the newer library is + installed and the program is (re)started (provided the + library major version is unchanged, e.g. going from + libfoo.so.2.0 to libfoo.so.2.1. Going to libfoo.so.3 will require recompilation – + ldd can be used + to find which programs use the old version). If a program is + linked to a static library, the program always has to be + recompiled. If you know which programs are linked to a + particular static library, this is merely an annoyance. But + usually you will not + know which programs to recompile. +

+

+ One way to identify when a static library is used, is to deal + with it at the end of the installation of every package. + Write a script to find all the static libraries in + /usr/lib or wherever you are + installing to, and either move them to another directory so + that they are no longer found by the linker, or rename them + so that libfoo.a becomes e.g. + libfoo.a.hidden. The static + library can then be temporarily restored if it is ever + needed, and the package needing it can be identified. This + shouldn't be done blindly since many libraries only exist in + a static version. For example, some libraries from the + glibc and gcc packages should always be present on + the system (libc_nonshared.a, libg.a, + libpthread_nonshared.a, libssp_nonshared.a, + libsupc++.a as of glibc-2.36 and gcc-12.2). +

+

+ If you use this approach, you may discover that more packages + than you were expecting use a static library. That was the + case with nettle-2.4 in its + default static-only configuration: It was required by + GnuTLS-3.0.19, but also + linked into package(s) which used GnuTLS, such as glib-networking-2.32.3. +

+

+ Many packages put some of their common functions into a + static library which is only used by the programs within the + package and, crucially, the library is not installed as a standalone + library. These internal libraries are not a problem – if the + package has to be rebuilt to fix a bug or vulnerability, + nothing else is linked to them. +

+

+ When BLFS mentions system libraries, it means shared versions + of libraries. Some packages such as Firefox-140.2.0 and + ghostscript-10.05.1 bundle many + other libraries in their build tree. The version they ship is + often older than the version used in the system, so it may + contain bugs – sometimes developers go to the trouble of + fixing bugs in their included libraries, other times they do + not. +

+

+ Sometimes, deciding to use system libraries is an easy + decision. Other times it may require you to alter the system + version (e.g. for libpng-1.6.50 if used for Firefox-140.2.0). Occasionally, a + package ships an old library and can no longer link to the + current version, but can link to an older version. In this + case, BLFS will usually just use the shipped version. + Sometimes the included library is no longer developed + separately, or its upstream is now the same as the package's + upstream and you have no other packages which will use it. In + those cases, you'll be lead to use the included library even + if you usually prefer to use system libraries. +

+
+
+
+
+
+

+ Locale + Related Issues +

+
+
+
+
+

+ This page contains information about locale related problems + and issues. In the following paragraphs you'll find a generic + overview of things that can come up when configuring your + system for various locales. Many (but not all) existing locale + related problems can be classified and fall under one of the + headings below. The severity ratings below use the following + criteria: +

+
+
    +
  • +

    + Critical: The program doesn't perform its main function. + The fix would be very intrusive, it's better to search + for a replacement. +

    +
  • +
  • +

    + High: Part of the functionality that the program provides + is not usable. If that functionality is required, it's + better to search for a replacement. +

    +
  • +
  • +

    + Low: The program works in all typical use cases, but + lacks some functionality normally provided by its + equivalents. +

    +
  • +
+
+

+ If there is a known workaround for a specific package, it will + appear on that package's page. +

+
+

+ The Needed Encoding is Not a + Valid Option in the Program +

+

+ Severity: Critical +

+

+ Some programs require the user to specify the character + encoding for their input or output data and present only a + limited choice of encodings. This is the case for the + -X option in Enscript-1.6.6, + the -input-charset option in + unpatched Cdrtools-3.02a09, and the character + sets offered for display in the menu of Links-2.30. If the required + encoding is not in the list, the program usually becomes + completely unusable. For non-interactive programs, it may be + possible to work around this by converting the document to a + supported input character set before submitting to the + program. +

+

+ A solution to this type of problem is to implement the + necessary support for the missing encoding as a patch to the + original program or to find a replacement. +

+
+
+

+ The Program Assumes the + Locale-Based Encoding of External Documents +

+

+ Severity: High for non-text documents, low for text documents +

+

+ Some programs, nano-8.6 or JOE-4.6 for example, assume that documents are + always in the encoding implied by the current locale. While + this assumption may be valid for the user-created documents, + it is not safe for external ones. When this assumption fails, + non-ASCII characters are displayed incorrectly, and the + document may become unreadable. +

+

+ If the external document is entirely text based, it can be + converted to the current locale encoding using the + iconv program. +

+

+ For documents that are not text-based, this is not possible. + In fact, the assumption made in the program may be completely + invalid for documents where the Microsoft Windows operating + system has set de facto standards. An example of this problem + is ID3v1 tags in MP3 files. For these cases, the only + solution is to find a replacement program that doesn't have + the issue (e.g., one that will allow you to specify the + assumed document encoding). +

+

+ Among BLFS packages, this problem applies to nano-8.6, JOE-4.6, and all media + players except Audacious-4.5. +

+

+ Another problem in this category is when someone cannot read + the documents you've sent them because their operating system + is set up to handle character encodings differently. This can + happen often when the other person is using Microsoft + Windows, which only provides one character encoding for a + given country. For example, this causes problems with UTF-8 + encoded TeX documents created in Linux. On Windows, most + applications will assume that these documents have been + created using the default Windows 8-bit encoding. +

+

+ In extreme cases, Windows encoding compatibility issues may + be solved only by running Windows programs under Wine. +

+
+
+

+ The Program Uses or + Creates Filenames in the Wrong Encoding +

+

+ Severity: Critical +

+

+ The POSIX standard mandates that the filename encoding is the + encoding implied by the current LC_CTYPE locale category. + This information is well-hidden on the page which specifies + the behavior of Tar and + Cpio programs. Some programs + get it wrong by default (or simply don't have enough + information to get it right). The result is that they create + filenames which are not subsequently shown correctly by + ls, or they + refuse to accept filenames that ls shows properly. For the + GLib-2.84.4 library, the problem can be + corrected by setting the G_FILENAME_ENCODING environment variable to + the special "@locale" value. Glib2 based programs that don't respect + that environment variable are buggy. +

+

+ The .zip format has this + problem because it does not save the encoding for the names + of the archived files. When unzip (actually, a symlink + to bsdunzip + from libarchive-3.8.1) extracts it, by + default the names are assumed to be encoded as CP850, the + Windows code page for Western European languages. But the + names may be actually encoded in a different way if it + contains non-Latin characters (for example, CP936 for + Simplified Chinese). Then without manually specifying the + encoding, those non-Latin characters will be turned into + unreadable sequences by bsdunzip. +

+

+ The general rule for avoiding this class of problems is to + avoid installing broken programs. If this is impossible, the + convmv command-line tool + can be used to fix filenames created by these broken + programs, or intentionally mangle the existing filenames to + meet the broken expectations of such programs. +

+

+ In other cases, a similar problem is caused by importing + filenames from a system using a different locale with a tool + that is not locale-aware (e.g., OpenSSH-10.0p1). In + order to avoid mangling non-ASCII characters when + transferring files to a system with a different locale, any + of the following methods can be used: +

+
+
    +
  • +

    + Transfer anyway, fix the damage with convmv. +

    +
  • +
  • +

    + On the sending side, create a tar archive with the + --format=posix + switch passed to tar (this will be the + default in a future version of tar). +

    +
  • +
  • +

    + Mail the files as attachments. Mail clients specify the + encoding of attached filenames. +

    +
  • +
  • +

    + Write the files to a removable disk formatted with a + FAT or FAT32 filesystem. +

    +
  • +
  • +

    + Transfer the files using Samba. +

    +
  • +
  • +

    + Transfer the files via FTP using RFC2640-aware server + (this currently means only wu-ftpd, which has bad + security history) and client (e.g., lftp). +

    +
  • +
+
+

+ The last four methods work because the filenames are + automatically converted from the sender's locale to UNICODE + and stored or sent in this form. They are then transparently + converted from UNICODE to the recipient's locale encoding. +

+
+
+

+ The Program Breaks + Multibyte Characters or Doesn't Count Character Cells + Correctly +

+

+ Severity: High or critical +

+

+ Many programs were written in an older era where multibyte + locales were not common. Such programs assume that C "char" + data type, which is one byte, can be used to store single + characters. Further, they assume that any sequence of + characters is a valid string and that every character + occupies a single character cell. Such assumptions completely + break in UTF-8 locales. The visible manifestation is that the + program truncates strings prematurely (i.e., at 80 bytes + instead of 80 characters). Terminal-based programs don't + place the cursor correctly on the screen, don't react to the + "Backspace" key by erasing one character, and leave junk + characters around when updating the screen, usually turning + the screen into a complete mess. +

+

+ Fixing this kind of problems is a tedious task from a + programmer's point of view, like all other cases of + retrofitting new concepts into the old flawed design. In this + case, one has to redesign all data structures in order to + accommodate to the fact that a complete character may span a + variable number of "char"s (or switch to wchar_t and convert + as needed). Also, for every call to the "strlen" and similar + functions, find out whether a number of bytes, a number of + characters, or the width of the string was really meant. + Sometimes it is faster to write a program with the same + functionality from scratch. +

+

+ Among BLFS packages, this problem applies to xine-ui-0.99.14 + and all the shells. +

+
+
+
+
+
+

+ Going Beyond BLFS +

+
+
+
+
+

+ The packages that are installed in this book are only the tip + of the iceberg. We hope that the experience you gained with the + LFS book and the BLFS book will give you the background needed + to compile, install and configure packages that are not + included in this book. +

+

+ When you want to install a package to a location other than + /, or /usr, you are installing outside the default + environment settings on most machines. The following examples + should assist you in determining how to correct this situation. + The examples cover the complete range of settings that may need + updating, but they are not all needed in every situation. +

+
+
    +
  • +

    + Expand the PATH to include + $PREFIX/bin. +

    +
  • +
  • +

    + Expand the PATH for + root to include + $PREFIX/sbin. +

    +
  • +
  • +

    + Add $PREFIX/lib to + /etc/ld.so.conf or expand + LD_LIBRARY_PATH to include it. + Before using the latter option, check out http://xahlee.info/UnixResource_dir/_/ldpath.html. + If you modify /etc/ld.so.conf, remember to update + /etc/ld.so.cache by + executing ldconfig as the + root user. +

    +
  • +
  • +

    + Add $PREFIX/man to + /etc/man_db.conf. +

    +
  • +
  • +

    + Add $PREFIX/info to + INFOPATH. +

    +
  • +
  • +

    + Add $PREFIX/lib/pkgconfig + to PKG_CONFIG_PATH. Some + packages are now installing .pc files in $PREFIX/share/pkgconfig, so you may + have to include this directory also. +

    +
  • +
  • +

    + Add $PREFIX/include to + CPPFLAGS when compiling + packages that depend on the package you installed. +

    +
  • +
  • +

    + Add $PREFIX/lib to + LDFLAGS when compiling + packages that depend on a library installed by the + package. +

    +
  • +
+
+

+ If you are in search of a package that is not in the book, the + following are different ways you can search for the desired + package. +

+
+ +
+

+ Some general hints on handling new packages: +

+
+
    +
  • +

    + Many of the newer packages follow the ./configure && make && + make install process. Help on the options + accepted by configure can be obtained via the command + ./configure + --help. +

    +
  • +
  • +

    + Most of the packages contain documentation on compiling + and installing the package. Some of the documents are + excellent, some not so excellent. Check out the homepage + of the package for any additional and updated hints for + compiling and configuring the package. +

    +
  • +
  • +

    + If you are having a problem compiling the package, try + searching the LFS archives at https://www.linuxfromscratch.org/search.html + for the error or if that fails, try searching Google. + Often, a distribution will have already solved the + problem (many of them use development versions of + packages, so they see the changes sooner than those of us + who normally use stable released versions). But be + cautious - all builders tend to carry patches which are + no longer necessary, and to have fixes which are only + required because of their particular choices in how they + build a package. You may have to search deeply to find a + fix for the package version you are trying to use, or + even to find the package (names are sometimes not what + you might expect, e.g. ghostscript often has a prefix or a + suffix in its name), but the following notes might help, + particularly for those who, like the editors, are trying + to build the latest versions and encountering problems: +

    +
    +
      +
    • +

      + Arch https://www.archlinux.org/packages/ + - enter the package name in the 'Keywords' box, + select the package name, select the 'Source Files' + field, and then select the PKGBUILD entry to see how they + build this package. +

      +
    • +
    • +

      + Debian http://ftp.debian.org/debian/pool + (use your country's version if there is one) - the + source will be in .tar.gz tarballs (either the + original upstream .orig source, or else a + dfsg containing those + parts which comply with Debian's free software + guidelines) accompanied by versioned .diff.gz or + .tar.gz additions. These additions often show how + the package is built, and may contain patches. In + the .diff.gz versions, any patches create files in + debian/patches. +

      +
    • +
    • +

      + Fedora package source gets reorganized from time to + time. At the moment the package source for rpms is + at https://src.fedoraproject.org/projects/rpms/%2A + and from there you can try putting a package name + in the search box. If the package is found you can + look at the files (specfile to control the build, + various patches) or the commits. If that fails, you + can download an srpm (source rpm) and using + rpmextract (see + the Tip at the bottom of the page). For rpms go to + https://dl.fedoraproject.org/pub/fedora/linux/ + and then choose which repo you wish to look at - + development/rawhide is the latest development, or + choose releases for what was shipped in a release, + updates for updates to a release, or + updates/testing for the latest updates which might + work or might have problems. +

      +
    • +
    • +

      + Gentoo - First use a search engine to find an + ebuild which looks as if it will fix the problem, + or search at https://packages.gentoo.org/ + - use the search field. Note where the package + lives in the portage hierarchy, e.g. app-something/. In general you + can treat the ebuild as a sort of pseudo-code / + shell combination with some functions you can + hazard a guess at, such as dodoc. If the fix + is just a sed, try it. + However, in most cases the fix will use a patch. To + find the patch, use a gentoo-portage mirror: Two + links to mirrors in the U.S.A. which seem to + usually be up to date are https://mirror.rackspace.com/gentoo-portage/ + and https://mirror.steadfast.net/gentoo-portage/. + Navigate down the tree to the package, then to the + files/ directory to + look for the patch. Sometimes a portage mirror has + not yet been updated, particularly for a recent new + patch. In a few cases, gentoo batch the patches + into a tarball and the ebuild will have a link in + the form + https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz + here, look for PATCH_DEV and PATCH_VER in the build + and format the full URL in your browser or for + wget. Remember the '~' before the developer's ID + and note that trying to search the earlier levels + of the URL in a browser may drop you at + www.gentoo.org or return 403 (forbidden). +

      +
    • +
    • +

      + openSUSE provide a rolling release, some package + versions are in + https://download.opensuse.org/source/tumbleweed/repo/oss/src/ + but others are in ../update/openSUSE-current/src - + the source only seems to be available in source + rpms. +

      +
    • +
    • +

      + Slackware - the official package browser is + currently broken. The site at https://slackbuilds.org/ + has current and previous versions in their + unofficial repository with links to homepages, + downloads, and some individual files, particularly + the .SlackBuild + files. +

      +
    • +
    • +

      + Ubuntu http://ftp.ubuntu.com/ubuntu/pool/ + - see the Debian notes above. +

      +
    • +
    +
    +

    + If everything else fails, try the blfs-support + mailing-list. +

    +
  • +
+
+
+

+ Tip +

+

+ If you have found a package that is only available in + .deb or .rpm format, there are different methods of + extracting them. +

+

+ .deb files are just archives + that are created and extracted by ar. It can be extracted by running: + ar x + $PACKAGE.deb. It will extract many files; + however, the important one is data.tar.gz. It contains all the files that + would typically be installed from it. +

+

+ For .rpm files, you can install + rpmextract + (see the + PKGBUILD for how they install the package) and use + rpmextract.sh + from the package to extract the file. It will extract to + multiple directories, such as app and usr. + You can also use File-Roller-44.5 or ark-25.08.0 for the + extraction. +

+
+
+
+
+
+
+
+

+ Part II. Post LFS + Configuration and Extra Software +

+
+
+
+
+
+
+
+

+ Chapter 3. After LFS + Configuration Issues +

+
+
+
+
+

+ The intention of LFS is to provide a basic system which you can + build upon. There are several things about tidying up the system + which many people wonder about once they have done the base + install. We hope to cover these issues in this chapter. +

+

+ Most people coming from non-Unix like backgrounds to Linux find + the concept of text-only configuration files slightly strange. In + Linux, just about all configuration is done via the manipulation + of text files. The majority of these files can be found in the + /etc hierarchy. There are often + graphical configuration programs available for different + subsystems but most are simply pretty front ends to the process + of editing a text file. The advantage of text-only configuration + is that you can edit parameters using your favorite text editor, + whether that be vim, emacs, or any other editor. +

+

+ The first task is making a recovery boot device in Creating a Custom Boot Device + because it's the most critical need. Hardware issues relevant to + firmware and other devices is addressed next. The system is then + configured to ease addition of new users, because this can affect + the choices you make in the two subsequent topics—The Bash Shell Startup Files + and The vimrc Files. +

+

+ The remaining topics, Customizing your Logon + with /etc/issue and Random + number generation are then addressed, in that order. They + don't have much interaction with the other topics in this + chapter. +

+
+
+
+

+ Creating a Custom Boot Device +

+
+
+
+
+
+

+ Decent Rescue Boot Device Needs +

+

+ This section is really about creating a rescue device. As the name + rescue implies, the + host system has a problem, often lost partition information + or corrupted file systems, that prevents it from booting + and/or operating normally. For this reason, you must not depend on resources from + the host being "rescued". To presume that any given partition + or hard drive will be + available is a risky presumption. +

+

+ In a modern system, there are many devices that can be used + as a rescue device: floppy, cdrom, usb drive, or even a + network card. Which one you use depends on your hardware and + your BIOS. In the past, a rescue device was thought to be a + floppy disk. Today, many systems do not even have a floppy + drive. +

+

+ Building a complete rescue device is a challenging task. In + many ways, it is equivalent to building an entire LFS system. + In addition, it would be a repetition of information already + available. For these reasons, the procedures for a rescue + device image are not presented here. +

+
+
+

+ Creating a Rescue Floppy +

+

+ The software of today's systems has grown large. Linux 2.6 no + longer supports booting directly from a floppy. In spite of + this, there are solutions available using older versions of + Linux. One of the best is Tom's Root/Boot Disk available at + http://www.toms.net/rb/. This + will provide a minimal Linux system on a single floppy disk + and provides the ability to customize the contents of your + disk if necessary. +

+
+
+

+ Creating a Bootable CD-ROM +

+

+ There are several sources that can be used for a rescue + CD-ROM. Just about any commercial distribution's installation + CD-ROMs or DVDs will work. These include RedHat, Ubuntu, and + SuSE. One very popular option is Knoppix. +

+

+ Also, the LFS Community has developed its own LiveCD + available at https://www.linuxfromscratch.org/livecd/. + This LiveCD, is no longer capable of building an entire + LFS/BLFS system, but is still a good rescue CD-ROM. If you + download the ISO image, use xorriso to copy the + image to a CD-ROM. +

+

+ The instructions for using GRUB2 to make a custom rescue + CD-ROM are also available in LFS Chapter + 10. +

+
+
+

+ Creating a Bootable USB Drive +

+

+ A USB Pen drive, sometimes called a Thumb drive, is + recognized by Linux as a SCSI device. Using one of these + devices as a rescue device has the advantage that it is + usually large enough to hold more than a minimal boot image. + You can save critical data to the drive as well as use it to + diagnose and recover a damaged system. Booting such a drive + requires BIOS support, but building the system consists of + formatting the drive, adding GRUB as well as the Linux kernel and + supporting files. +

+
+
+
+
+
+

+ About Console Fonts +

+
+
+
+
+

+ An LFS system can be used without a graphical desktop, and + unless or until you install a graphical + environment you will have to work in the console. Most, if + not all, PCs boot with an 8x16 font - whatever the actual + screen size. There are a few things you can do to alter the + display on the console. Most of them involve changing the font, + but the first alters the commandline used by grub. +

+
+

+ Setting a smaller + screen resolution in grub +

+

+ Modern screens often have a lot more pixels than the screens + used in the past. If your screen is 1600 pixels wide, an 8x16 + font will give you 200 columns of text - unless your monitor + is enormous, the text will be tiny. One of the ways to work + around this is to tell GRUB and the kernel to use a smaller + resolution, such as 1024x768 or 800x600 or even 640x480. Even + if your screen does not have a 4:3 aspect ratio, this should + work. +

+

+ If you've followed the LFS book to configure your kernel with + SimpleDRM enabled and the kernel driver dedicated for your + GPU (for example i915 or AMDGPU) is built as a kernel module, + before the dedicated driver is loaded, the SimpleDRM driver + will be used for displaying. The SimpleDRM driver itself + cannot change the resolution, so you need to tell GRUB to set + the suitable resolution before loading the kernel by + modifying the set + gfxpayload=1024x768x32 line in the + grub.cfg file. +

+

+ When the dedicated GPU driver starts to work (once the kernel + or the module is loaded depending on if you've built it as a + part of the kernel image or a module), it takes the display + control away from the SimpleDRM driver and changes the + display resolution. To make it use the resolution you want, + again edit the grub.cfg file to + insert a video= parameter into + the kernel command line, for example root=/dev/sda2 video=DP-1:800x600 ro. Note + that it's necessary to explicitly specify the output name + like DP-1 here: a video= parameter without an output name is + only recognized by GRUB (as a deprecated alias of + set gfxpayload=) and completely + ignored by the kernel. The content of /sys/class/drm/ can be helpful for figuring + out the output name, for example the card1-DP-1 subdirectory indicates an output + named DP-1. To align the output + name with your monitor, install the libdisplay-info-0.3.0 package and + run the di-edid-decode + /sys/class/drm/card<card + ID>-<output + name>/edid command to show the + info (including the model name and the supported resolutions) + about the the monitor connected on the output. +

+

+ If you decide that you wish to do this, you can then (as the + root user) edit /boot/grub/grub.cfg. +

+
+
+

+ Using the standard psf + fonts +

+

+ In LFS the kbd package is + used. The fonts it provides are PC Screen Fonts, usually + called PSF, and they were installed into /usr/share/consolefonts. Where these + include a unicode mapping table, the file suffix is often + changed to .psfu although + packages such as terminus-font (see below) do not add the + 'u'. These fonts are usually compressed with gzip to save + space, but that is not essential. +

+

+ The initial PC text screens had 8 colours, or 16 colours if + the bright versions of the original 8 colours were used. A + PSF font can include up to 256 characters (technically, + glyphs) while allowing 16 colours, or up to 512 characters + (in which case, the bright colours will not be available). + Clearly, these console fonts cannot be used to display CJK + text - that would need thousands of available glyphs. +

+

+ Some fonts in kbd can cover + more than 512 codepoints ('characters'), with varying degrees + of fidelity: unicode contains several whitespace codepoints + which can all be mapped to a space, varieties of dashes can + be mapped to a minus sign, smart quotes can map to the + regular ASCII quotes rather than to whatever is used for + "codepoint not present or invalid", and those cyrillic or + greek letters which look like latin letters can be mapped + onto them, so 'A' can also do duty for cyrillic A and greek + Alpha, and 'P' can also do duty for cyrillic ER and greek + RHO. Unfortunately, where a font has been created from a BDF + file (the method in terminus and Debian's console-setup + ) such mapping of additional codepoints onto an existing + glyph is not always done, although the terminus ter-vXXn + fonts do this well. +

+

+ There are over 120 combinations of font and size in + kbd: often a font is + provided at several character sizes, and sometimes varieties + cover different subsets of unicode. Most are 8 pixels wide, + in heights from 8 to 16 pixels, but there are a few which are + 9 pixels wide, some others which are 12x22, and even one + (latarcyrheb-sun32.psfu) which + has been scaled up to 16x32. Using a bigger font is another + way of making text on a large screen easier to read. +

+
+
+

+ Testing + different fonts +

+

+ You can test fonts as a normal user. If you have a font which + has not been installed, you can load it with : +

+
setfont /path/to/yourfont.ext
+

+ For the fonts already installed you only need the name, so + using gr737a-9x16.psfu.gz as an + example: +

+
setfont gr737a-9x16
+

+ To see the glyphs in the font, use: +

+
showconsolefont
+

+ If the font looks as if it might be useful, you can then go + on to test it more thoroughly. +

+

+ When you find a font which you wish to use, as the + root user) edit /etc/sysconfig/console + as described in LFS section 9.6.5 ../../../../lfs/view/12.4/chapter09/usage.html. + . +

+

+ For fonts not supplied with the kbd package you will need to optionally + compress it / them with gzip and then install it / + them as the root user. +

+
+
+

+ Editing fonts using + psf-tools +

+

+ Although some console fonts are created from BDF files, which + is a text format with hex values for the pixels in each row + of the character, there are more-modern tools available for + editing psf fonts. The psftools package + allows you to dump a font to a text representation with a + dash for a pixel which is off (black) and a hash for a pixel + which is on (white). You can then edit the text file to add + more characters, or reshape them, or map extra codepoints + onto them, and then create a new psf font with your changes. +

+
+
+

+ Using fonts + from Terminus-font +

+

+ The Terminus Font + package provides fixed-width bitmap fonts designed for long + (8 hours and more per day) work with computers. Under + 'Character variants' on that page is a list of patches (in + the alt/ directory). If you are + using a graphical browser to look at that page, you can see + what the patches do, e.g. 'll2' makes 'l' more visibly + different from 'i' and '1'. +

+

+ By default terminus-fonts + will try to create several types of font, and it will fail if + bdftopcf from + Xorg Applications has not been + installed. The configure script is only really useful if you + go on to install all + the fonts (console and X11 bitmap) to the correct + directories, as in a distro. To build only the PSF fonts and + their dependencies, run: +

+
make psf
+

+ This will create more than 240 ter-*.psf fonts. The 'b' + suffix indicates bright, 'n' indicates normal. You can then + test them to see if any fit your requirements. Unless you are + creating a distro, there seems little point in installing + them all. +

+

+ As an example, to install the last of these fonts, you can + gzip it and then as the root + user: +

+
install -v -m644 ter-v32n.psf.gz /usr/share/consolefonts
+
+
+
+
+
+

+ About + Firmware +

+
+
+
+
+

+ On some recent PCs it can be necessary, or desirable, to load + firmware to make them work at their best. The kernel or kernel + drivers look for firmware images in /lib/firmware. But in LFS /lib is a symlink to usr/lib, so the directory containing the + firmware files is actually /usr/lib/firmware. +

+

+ Currently, most firmware can be found at a git repository which can be + viewed in the browser with the URL + https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain. + For convenience, the LFS Project has created a mirror, updated + daily, where these firmware files can be accessed via + wget or a web + browser at https://anduin.linuxfromscratch.org/BLFS/linux-firmware/. +

+

+ To get the firmware, point a browser to one of the above + repositories and then download the item(s) which you need. If + you want all these firmware files (for example you are + distributing the system onto multiple hardware systems), either + install git-2.50.1 and clone + https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git, + or open this URL in a browser and download the latest snapshot + listed in the Tag table. +

+
+

+ Important +

+

+ Note that some required + firmware files (and directories) are actually symlinks to + other files (or directories). Those symlinks are not stored + in the Git repository, instead they are documented in the + WHENCE file. Each line + beginning with Link: describes a + symlink. If you are downloading an item you need and it's + such a symlink (or in a directory which is such a symlink), + you need to create the symlink manually and download the + target. On the other hand, if you want all the firmware + files, use the ./copy-firmware.sh + /usr/lib/firmware command which will copy the + firmware files and create all the symlinks in the + WHENCE file, instead of a plain + copy command like cp -r * + /usr/lib/firmware/. +

+
+

+ For some other firmware, particularly for Intel microcode and + certain wifi devices, the needed firmware is not available in + the above repository. Some of this will be addressed below, but + a search of the Internet for needed firmware is sometimes + necessary. +

+

+ Firmware files are conventionally referred to as blobs because + you cannot determine what they will do. Note that firmware is + distributed under various different licenses which do not + permit disassembly or reverse-engineering. +

+

+ Firmware for PCs falls into four categories: +

+
+
    +
  • +

    + Updates to the CPU to work around errata, usually + referred to as microcode. +

    +
  • +
  • +

    + Firmware for video controllers. On x86 machines this is + required for ATI devices (Radeon and AMDGPU chips) and + may be useful for Intel (Skylake and later) and NVIDIA + (Kepler and later) GPUs. +

    +

    + ATI Radeon and AMDGPU devices all require firmware to be + able to use KMS (kernel modesetting - the preferred + option) as well as for Xorg. +

    +

    + Intel integrated GPUs from Skylake onwards can use + firmware for GuC (the Graphics microcontroller), and also + for the HuC (HEVC/H265 microcontroller which offloads to + the GPU) and the DMC (Display Microcontroller) to provide + additional low-power states. The GuC and HuC have had a + chequered history in the kernel and updated firmware may + be disabled by default, depending on your kernel version. + Further details may be found at 01.org + and Arch + linux. +

    +

    + NVIDIA GPUs from Kepler onwards require signed firmware, + otherwise the nouveau driver is unable to provide + hardware acceleration. NVIDIA has now released firmware + up to Ada Lovelace (GeForce 40 series) to linux-firmware. +

    +
  • +
  • +

    + Firmware updates for wired network ports. Most of them + work even without the updates, but they will probably + work better with the updated firmware. For some modern + laptops, firmware for both wired ethernet (e.g. rtl_nic) + and also for bluetooth devices (e.g. qca) is required before the wired + network can be used. +

    +
  • +
  • +

    + Firmware for other devices, such as wireless NICs. These + devices are not required for the PC to boot, but need the + firmware before these devices can be used. +

    +
  • +
+
+
+

+ Note +

+

+ Although not needed to load a firmware blob, the following + tools may be useful for determining, obtaining, or preparing + the needed firmware in order to load it into the system: + cpio-2.15, + git-2.50.1, pciutils-3.14.0, and Wget-1.25.0 +

+
+
+

+ Microcode + updates for CPUs +

+

+ In general, microcode can be loaded by the BIOS or UEFI, and + it might be updated by upgrading to a newer version of those. + On linux, you can also load the microcode from the kernel if + you are using an AMD family 10h or later processor (first + introduced late 2007), or an Intel processor from 1998 and + later (Pentium4, Core, etc), if updated microcode has been + released. These updates only last until the machine is + powered off, so they need to be applied on every boot. +

+
+

+ Note +

+

+ In some rare cases a microcode update from the kernel can + be ineffective. For example, despite + intel-microcode-20241029 contains the Raptor Lake microcode + revision 0x12b which is intended to fix a notorious + excessive voltage issue causing stability issues and even + permanent CPU damages, when the kernel boots it's already + + too late for the microcode to fix the issue. The only + way to fix this issue is updating the BIOS. +

+
+

+ Intel provide updates of their microcode for Skylake and + later processors as new vulnerabilities come to light, and + have in the past provided updates for processors from + SandyBridge onwards, although those are no-longer supported + for new fixes. New versions of AMD firmware are rare and + usually only apply to a few models, although motherboard + manufacturers get AGESA (AMD Generic Encapsulated Software + Architecture) updates to change BIOS values, e.g. to support + more memory variants, new vulnerability fixes or newer CPUs. +

+

+ There were two ways of loading the microcode, described as + 'early' and 'late'. Early loading happens before userspace + has been started, late loading happens after userspace has + started. However, late loading is known to be problematic and + not supported anymore (see the kernel commit + x86/microcode: Taint and warn on late loading). Indeed, + early loading is needed to work around one particular erratum + in early Intel Haswell processors which had TSX enabled. (See + + Intel Disables TSX Instructions: Erratum Found in Haswell, + Haswell-E/EP, Broadwell-Y.) Without this update glibc can + do the wrong thing in uncommon situations. +

+

+ In previous versions of this book, late loading of microcode + to see if it gets applied was recommended, followed by using + an initrd to force early loading. But now that the contents + of the Intel microcode tarball is documented, and AMD + microcode can be read by a Python script to determine which + machines it covers, there is no real reason to use late + loading. +

+

+ It might be still possible to manually force late loading of + microcode. But it may cause kernel malfunction and you should + take the risk yourself. You will need to reconfigure your + kernel for late loading, but early loading is always + supported by Linux kernel version 6.6 or later on a x86 (no + matter 32-bit or 64-bit) system. The instructions here will + show you how to create an initrd for early loading. It is + also possible to build the same microcode bin file into the + kernel, which allows early loading but requires the kernel to + be recompiled to update the microcode. +

+

+ To confirm what processor(s) you have (if more than one, they + will be identical) look in /proc/cpuinfo. Determine the + decimal values of the cpu family, model and stepping by + running the following command (it will also report the + current microcode version): +

+
head -n7 /proc/cpuinfo
+

+ Convert the cpu family, model and stepping to pairs of + hexadecimal digits, and remember the value of the + “microcode” field. You can now check if + there is any microcode available. +

+

+ If you are creating an initrd to update firmware for + different machines, as a distro would do, go down to 'Early + loading of microcode' and cat all the Intel blobs to + GenuineIntel.bin or cat all the AMD blobs to + AuthenticAMD.bin. This creates a larger initrd - for all + Intel machines in the 20200609 update the size was 3.0 MB + compared to typically 24 KB for one machine. +

+
+
+
+
+

+ Intel Microcode for the CPU +

+
+
+
+

+ The first step is to get the most recent version of the + Intel microcode. This must be done by navigating to + + https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/ + and downloading the latest file there. As of this writing + the most secure version of the microcode is + microcode-20250812. Extract this file in the normal way, + the microcode is in the intel-ucode directory, containing various + blobs with names in the form XX-YY-ZZ. There are also + various other files, and a release note. +

+

+ In the past, intel did not provide any details of which + blobs had changed versions, but now the release note + details this. You can compare the microcode version in + /proc/cpuinfo with the + version for your CPU model in the releasenote to know if + there is an update. +

+

+ The recent firmware for older processors is provided to + deal with vulnerabilities which have now been made public, + and for some of these such as Microarchitectural Data + Sampling (MDS) you might wish to increase the protection by + disabling hyperthreading, or alternatively to disable the + kernel's default mitigation because of its impact on + compile times. Please read the online documentation at + + https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/index.html. +

+

+ For an Tigerlake mobile (described as Intel(R) Core(TM) + i5-11300H CPU) the relevant values are cpu family 6, model + 140, stepping 1 so in this case the required identification + is 06-8c-01. The releasenote says the latest microcode for + it is versioned 0xb8. If the value of the “microcode” field + in /proc/cpuinfo is 0xb8 or + greater, it indicates the microcode update is already + applied by the BIOS. Otherwise, proceed to the section called “Early + loading of microcode”. +

+
+
+
+
+
+

+ AMD + Microcode for the CPU +

+
+
+
+

+ Begin by downloading a container of firmware for your CPU + family from + https://anduin.linuxfromscratch.org/BLFS/linux-firmware/amd-ucode/. + The family is always specified in hex. Families 10h to 14h + (16 to 20) are in microcode_amd.bin. Families 15h, 16h, 17h + (Zen, Zen+, Zen2) and 19h (Zen3) have their own containers, + but very few machines are likely to get updated microcode. + Instead, AMD provide an updated AGESA to the motherboard + makers, who may provide an updated BIOS using this. There + is a Python3 script at + https://github.com/AMDESE/amd_ucode_info/blob/master/amd_ucode_info.py. + Download that script and run it against the bin file to + check which processors have updates. +

+

+ For the very old Athlon(tm) II X2 in these examples the + values were cpu family 16, model 5, stepping 3 giving an + identification of Family=0x10 Model=0x05 Stepping=0x03. One + line of the amd_ucode_info.py script + output describes the microcode version for it: +

+
Family=0x10 Model=0x05 Stepping=0x03: Patch=0x010000c8 Length=960 bytes
+

+ If the value of the “microcode” field in /proc/cpuinfo is 0x10000c8 or greater, it + indicates the BIOS has already applied the microcode + update. Otherwise, proceed to the + section called “Early loading of microcode”. +

+
+
+
+
+
+

+ Early loading of microcode +

+
+
+
+

+ If you have established that updated microcode is available + for your system, it is time to prepare it for early + loading. This requires an additional package, cpio-2.15 and the + creation of an initrd which will need to be added to + grub.cfg. +

+

+ It does not matter where you prepare the initrd, and once + it is working you can apply the same initrd to later LFS + systems or newer kernels on this same machine, at least + until any newer microcode is released. Use the following + commands: +

+
mkdir -p initrd/kernel/x86/microcode
+cd initrd
+

+ For an AMD machine, use the following command (replace + <MYCONTAINER> with the name of the container for your + CPU's family): +

+
cp -v ../<MYCONTAINER> kernel/x86/microcode/AuthenticAMD.bin
+

+ Or for an Intel machine copy the appropriate blob using + this command: +

+
cp -v ../intel-ucode/<XX-YY-ZZ> kernel/x86/microcode/GenuineIntel.bin
+

+ Now prepare the initrd: +

+
find . | cpio -o -H newc > /boot/microcode.img
+

+ You now need to add a new entry to /boot/grub/grub.cfg and + here you should add a new line after the linux line within + the stanza. If /boot is a separate mountpoint: +

+
initrd /microcode.img
+

+ or this if it is not: +

+
initrd /boot/microcode.img
+

+ If you are already booting with an initrd (see the + section called “About initramfs”), you should run + mkinitramfs + again after putting the appropriate blob or container into + /usr/lib/firmware. More + precisely, put an intel blob in a /usr/lib/firmware/intel-ucode directory + or an AMD container in a /usr/lib/firmware/amd-ucode directory + before running mkinitramfs. + Alternatively, you can have both initrd on the same line, + such as initrd + /microcode.img /other-initrd.img (adapt + that as above if /boot is not a separate mountpoint). +

+

+ You can now reboot with the added initrd, and then use the + following command to check that the early load worked: +

+
dmesg | grep -e 'microcode' -e 'Linux version' -e 'Command line'
+

+ If you updated to address vulnerabilities, you can look at + the output of the lscpu command to see what + is now reported. +

+

+ The places and times where early loading happens are very + different in AMD and Intel machines. First, an example of + an Intel (Tigerlake mobile) with early loading: +

+
[    0.000000] Linux version 6.10.4 (xry111@stargazer) (gcc (GCC) 14.2.0, GNU ld (GNU Binutils) 2.43) #4 SMP PREEMPT_DYNAMIC Tue Aug 15 18:04:11 CST 2024
+[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.10.0 root=PARTUUID=<CLASSIFIED> ro
+[    0.585605] microcode: Current revision: 0x000000b8
+[    0.585611] microcode: Updated early from: 0x00000086
+

+ A historic AMD example: +

+
[    0.000000] Linux version 4.15.3 (ken@testserver) (gcc version 7.3.0 (GCC))
+               #2 SMP Sun Feb 18 02:32:03 GMT 2018
+[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.15.3-sda5 root=/dev/sda5 ro
+[    0.307619] microcode: microcode updated early to new patch_level=0x010000c8
+[    0.307678] microcode: CPU0: patch_level=0x010000c8
+[    0.307723] microcode: CPU1: patch_level=0x010000c8
+[    0.307795] microcode: Microcode Update Driver: v2.2.
+
+
+
+

+ Firmware for + Video Cards +

+
+
+
+
+

+ Firmware for ATI Radeon + video chips +

+
+
+
+

+ Early radeon devices only needed a single 2K blob of + firmware. Recent devices need several different blobs, and + some of them are much bigger. The total size of the radeon + firmware directory is over 500K — on a large modern system + you can probably spare the space, but it is still redundant + to install all the unused files each time you build a + system. +

+

+ A better approach is to install pciutils-3.14.0 and + then use lspci to identify which + VGA controller is installed. +

+

+ With that information, check the RadeonFeature page of the + Xorg wiki for Decoder + ring for engineering vs marketing names to identify the + family (you may need to know this for the Xorg driver in + BLFS — Southern Islands and Sea Islands use the radeonsi + driver) and the specific model. +

+

+ Now that you know which controller you are using, consult + the Radeon + page of the Gentoo wiki which has a table listing the + required firmware blobs for the various chipsets. Note that + Southern Islands and Sea Islands chips use different + firmware for kernel 3.17 and later compared to earlier + kernels. Identify and download the required blobs then + install them: +

+
mkdir -pv /usr/lib/firmware/radeon
+cp -v <YOUR_BLOBS> /usr/lib/firmware/radeon
+

+ Building the kernel amdgpu driver as a module is + recommended because the firmware files need to be + accessible at the time it is loaded. If you are building it + as a part of the kernel image for any reason, you need to + either include the firmware files in the initramfs (read + the section called “About initramfs” + for details), or include them in the kernel image itself + (read the + section called “Include Firmware Blobs in the Kernel + Image” for details). +

+
+
+
+
+
+

+ Firmware for AMD/ATI + amdgpu video chips +

+
+
+
+

+ All video controllers using the amdgpu kernel driver + require firmware, whether you will be using the xorg amdgpu + driver, the xserver's modesetting driver, or just kernel + modesetting to get a console framebuffer larger than 80x25. +

+

+ Install pciutils-3.14.0 and use that to check + the model name (look for 'VGA compatible controller:'). If + you have an APU (Accelerated Processing Unit, i.e. CPU and + video on the same chip) that will probably tell you the + name. If you have a separate amdgpu video card you will + need to search to determine which name it uses (e.g. a card + described as Advanced Micro Devices, Inc. [AMD/ATI] Baffin + [Radeon RX 550 640SP / RX 560/560X] needs Polaris11 + firmware. There is a table of "Family, Chipset name, + Product name and Firmware" at the end of the Kernel + sections in AMDGPU + page of the Gentoo wiki. +

+

+ Once you have identified the firmware name, install all the + relevant files for it. For example, the Baffin card + mentioned above has 21 different polaris11* files, APUs + such as renoir and picasso have at least 12 files and might + gain more in future updates (e.g. the raven APU now has a + 13th file, raven_ta.bin). +

+
mkdir -pv /usr/lib/firmware/amdgpu
+cp -v <YOUR_BLOBS> /usr/lib/firmware/amdgpu
+

+ If disk space is not a problem, you could install all the + current amdgpu firmware files and not worry about exactly + which chipset is installed. +

+

+ Building the kernel amdgpu driver as a module is + recommended because the firmware files need to be + accessible at the time it is loaded. If you are building it + as a part of the kernel image for any reason, you need to + either include the firmware files in the initramfs (read + the section called “About initramfs” + for details), or include them in the kernel image itself + (read the + section called “Include Firmware Blobs in the Kernel + Image” for details). +

+
+
+
+
+
+

+ Firmware for NVIDIA video + chips +

+
+
+
+

+ Some NVIDIA GPUs from Kepler onwards (including all NVIDIA + GeForce RTX GPUs and GTX 9xx series onwards) require + firmware signed by NVIDIA to work. For the Nouveau driver, + NVIDIA has released the signed firmware files in the + nvidia/ directory of + linux-firmware. Read the + CodeNames page of the Nouveau wiki to figure out the + code name of your NVIDIA GPU (for example, the code name of + GeForce RTX 5080 is GB203). The directory for the firmware + files you need is named as the result converting the code + name to lower case (gb203 for + the example). The directory (or some of its contents) may + be actually a symlink to another directory (or some files + in another directory) and you'll then need to create the symlink + and download its target yourself (for example, + gb207 is a symlink to + gb202). +

+

+ If you can find the directory for your GPU in neither the + linux-firmware tree nor the WHENCE file (as a symlink), it means + either your GPU does not need any firmware, or it's newer + than Blackwell (RTX 50xx series) and the firmware for it + isn't released yet (as at mid 2025). +

+

+ For the NVIDIA GPUs from Tesla to Kepler, the Nouveau + driver requires some extra firmware to support video + decoding acceleration. These firmware files are not + released by NVIDIA but they can be extracted from the + NVIDIA binary driver. For more exact information about + which chips need extracted firmware, see the + VideoAcceleration of the Nouveau wiki. To extract and + install these firmware files, issue: +

+
wget https://anduin.linuxfromscratch.org/BLFS/nvidia-firmware/extract_firmware.py
+wget https://us.download.nvidia.com/XFree86/Linux-x86/340.32/NVIDIA-Linux-x86-340.32.run
+sh NVIDIA-Linux-x86-340.32.run --extract-only
+python3 extract_firmware.py
+mkdir -p /usr/lib/firmware/nouveau
+cp -d nv* vuc-* /usr/lib/firmware/nouveau/
+
+
+
+

+ Firmware for + Network Interfaces +

+

+ The kernel likes to load firmware for some network drivers, + particularly those from Realtek (the /usr/lib/linux-firmware/rtl_nic/ + directory), but they generally appear to work without it. + Therefore, you can boot the kernel, check dmesg for messages + about this missing firmware, and if necessary download the + firmware and put it in the specified directory in + /usr/lib/firmware so that it + will be found on subsequent boots. Note that with current + kernels this works whether or not the driver is compiled in + or built as a module, there is no need to build this firmware + into the kernel. Here is an example where the R8169 driver + has been compiled in but the firmware was not made available. + Once the firmware had been provided, there was no mention of + it on later boots. +

+
dmesg | grep firmware | grep r8169
+[    7.018028] r8169 0000:01:00.0: Direct firmware load for rtl_nic/rtl8168g-2.fw failed with error -2
+[    7.018036] r8169 0000:01:00.0 eth0: unable to load firmware patch rtl_nic/rtl8168g-2.fw (-2)
+
+
+

+ Firmware for + Regulatory Database of Wireless Devices +

+

+ Different countries have different regulations on the radio + spectrum usage of wireless devices. You can install a + firmware to make the wireless devices obey local spectrum + regulations, so you won't be inquired by local authority or + find your wireless NIC jamming the frequencies of other + devices (for example, remote controllers). The regulatory + database firmware can be downloaded from https://kernel.org/pub/software/network/wireless-regdb/. + To install it, simply extract regulatory.db and regulatory.db.p7s from the tarball into + /usr/lib/firmware. Note that + either the cfg80211 driver needs + to be selected as a module for the regulatory.* files to be loaded, or those + files need to be included as firmware into the kernel, as + explained above in the section called “Firmware + for Video Cards”. +

+

+ The access point (AP) would send a country code to your + wireless NIC, and wpa_supplicant-2.11 would + tell the kernel to load the regulation of this country from + regulatory.db, and enforce it. + Note that several AP don't send this country code, so you may + be locked to a rather restricted usage (specially if you want + to use your interface as an AP). +

+
+
+

+ Sound Open Firmware +

+

+ Some systems (especially laptops with a recent Intel CPU) + utilize a DSP shipped with the CPU for connection with the + audio codec. The Sound Open Firmware must be loaded onto the + DSP to make it functional. These firmware files can be + downloaded from https://github.com/thesofproject/sof-bin/releases. + Extract the tarball and changing into the extracted + directory, then as the root + user install the firmware: +

+
install -vdm755 /usr/lib/firmware/intel &&
+cp -rv sof* /usr/lib/firmware/intel/
+

+ alsa-lib-1.2.14 needs Use Case Manager + configuration files for the systems using Sound Open Firmware + as well. Read the alsa-lib-1.2.14 page for the + instructions to install them. Once the firmware is loaded + (you may need a reboot so the kernel will load them) and the + UCM configuration files are installed, following the section called “Configuring + ALSA Utilities” to set up your sound card for ALSA + properly. +

+
+
+

+ Firmware for + Other Devices +

+

+ Identifying the correct firmware will typically require you + to install pciutils-3.14.0, and then use + lspci to + identify the device. You should then search online to check + which module it uses, which firmware, and where to obtain the + firmware — not all of it is in linux-firmware. +

+

+ If possible, you should begin by using a wired connection + when you first boot your LFS system. To use a wireless + connection you will need to use a network tools such as + iw-6.9, + Wireless Tools-29, or wpa_supplicant-2.11. +

+

+ Firmware may also be needed for other devices such as some + SCSI controllers, bluetooth adaptors, or TV recorders. The + same principles apply. +

+
+
+

+ Include Firmware Blobs in the + Kernel Image +

+

+ Some drivers, notably the drivers for ATI or AMD GPU, + requires the firmware files accessible at the time it is + loaded. The easiest method to handle these drivers is + building them as a kernel module. An alternative method is + creating an initramfs (read the section called “About + initramfs” for details) including the firmware files. If + you don't want to use either methods, you may include the + firmware files in the kernel image itself. Install the needed + firmware files into /usr/lib/firmware first, then set the + following kernel configuration and rebuild the kernel: +

+
Device Drivers --->
+  Generic Driver Options --->
+    Firmware loader --->
+      <*>                   Firmware loading facility                [FW_LOADER]
+      (xx/aa.bin xx/bb.bin)   Build named firmware blobs into the kernel binary
+                                                           ...  [EXTRA_FIRMWARE]
+      # This is the default, you can change it to "/usr/lib/firmware"
+      # if you want:
+      (/lib/firmware)           Firmware blobs root directory
+                                                       ...  [EXTRA_FIRMWARE_DIR]
+

+ Replace xx/aa.bin + xx/bb.bin with a whitespace-separated list of + paths to the needed firmware files, relative to /usr/lib/firmware. A method easier than + manually typing the list (it may be long) is running the + following command: +

+
echo CONFIG_EXTRA_FIRMWARE='"'$({ cd /usr/lib/firmware; echo amdgpu/* })'"' >> .config
+make oldconfig
+

+ Replace amdgpu/* + with a shell pattern matching the needed firmware files. +

+
+

+ Warning +

+

+ Do not distribute a kernel image containing the firmware to + others or you may violate the GPL. +

+
+
+
+
+
+
+

+ About + Devices +

+
+
+
+
+

+ Although most devices needed by packages in BLFS and beyond are + set up properly by udev using + the default rules installed by LFS in /etc/udev/rules.d, there are cases where the + rules must be modified or augmented. +

+
+

+ Multiple Sound Cards +

+

+ If there are multiple sound cards in a system, the "default" + sound card becomes random. The method to establish sound card + order depends on whether the drivers are modules or not. If + the sound card drivers are compiled into the kernel, control + is via kernel command line parameters in /boot/grub/grub.cfg. For example, if a + system has both an FM801 card and a SoundBlaster PCI card, + the following can be appended to the command line: +

+
snd-fm801.index=0 snd-ens1371.index=1
+

+ If the sound card drivers are built as modules, the order can + be established in the /etc/modprobe.conf file with: +

+
options snd-fm801 index=0
+options snd-ens1371 index=1
+
+
+

+ USB + Device Issues +

+

+ USB devices usually have two kinds of device nodes associated + with them. +

+

+ The first kind is created by device-specific drivers (e.g., + usb_storage/sd_mod or usblp) in the kernel. For example, a + USB mass storage device would be /dev/sdb, and a USB printer + would be /dev/usb/lp0. These device nodes exist only when the + device-specific driver is loaded. +

+

+ The second kind of device nodes (/dev/bus/usb/BBB/DDD, where + BBB is the bus number and DDD is the device number) are + created even if the device doesn't have a kernel driver. By + using these "raw" USB device nodes, an application can + exchange arbitrary USB packets with the device, i.e., bypass + the possibly-existing kernel driver. +

+

+ Access to raw USB device nodes is needed when a userspace + program is acting as a device driver. However, for the + program to open the device successfully, the permissions have + to be set correctly. By default, due to security concerns, + all raw USB devices are owned by user root and group root, + and have 0664 permissions (the read access is needed, e.g., + for lsusb to work and for programs to access USB hubs). + Packages (such as SANE and libgphoto2) containing userspace + USB device drivers also ship udev rules that change the + permissions of the controlled raw USB devices. That is, rules + installed by SANE change permissions for known scanners, but + not printers. If a package maintainer forgot to write a rule + for your device, report a bug to both BLFS (if the package is + there) and upstream, and you will need to write your own + rule. +

+

+ Before Linux-2.6.15, raw USB device access was performed not + with /dev/bus/usb/BBB/DDD device nodes, but with + /proc/bus/usb/BBB/DDD pseudofiles. Some applications still + use only this deprecated technique and can't use the new + device nodes. They cannot work with Linux kernel version 3.5 + or newer. If you need to run such an application, contact the + developer of it for a fix. +

+
+
+

+ Udev Device Attributes +

+

+ Fine-tuning of device attributes such as group name and + permissions is possible by creating extra udev rules, matching on something like + this. The vendor and product can be found by searching the + /sys/devices directory entries + or using udevadm + info after the device has been attached. See + the documentation in the current udev directory of /usr/share/doc for details. +

+
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="05d8", SYSFS{idProduct}=="4002", \
+  GROUP:="scanner", MODE:="0660"
+
+

+ Note +

+

+ The above line is used for descriptive purposes only. The + scanner udev rules are put + into place when installing SANE-1.4.0. +

+
+
+
+

+ Devices for Servers +

+

+ In some cases, it makes sense to disable udev completely and create static + devices. Servers are one example of this situation. Does a + server need the capability of handling dynamic devices? Only + the system administrator can answer that question, but in + many cases the answer will be no. +

+

+ If dynamic devices are not desired, then static devices must + be created on the system. In the default configuration, the + /etc/rc.d/rcS.d/S10udev boot + script mounts a tmpfs + partition over the /dev + directory. This problem can be overcome by mounting the root + partition temporarily: +

+
+

+ Warning +

+

+ If the instructions below are not followed carefully, your + system could become unbootable. +

+
+
mount --bind / /mnt
+cp -a /dev/* /mnt/dev
+rm /etc/rc.d/rcS.d/{S10udev,S50udev_retry}
+umount /mnt
+

+ At this point, the system will use static devices upon the + next reboot. Create any desired additional devices using + mknod. +

+

+ If you want to restore the dynamic devices, recreate the + /etc/rc.d/rcS.d/{S10udev,S50udev_retry} + symbolic links and reboot again. Static devices do not need + to be removed (console and null are always needed) because + they are covered by the tmpfs + partition. Disk usage for devices is negligible (about 20–30 + bytes per entry). +

+
+
+

+ Devices for DVD Drives +

+

+ If the initial boot process does not set up the /dev/dvd device properly, it can be + installed using the following modification to the default + udev rules. As the root user, + run: +

+
sed '1d;/SYMLINK.*cdrom/ a\
+KERNEL=="sr0", ENV{ID_CDROM_DVD}=="1", SYMLINK+="dvd", OPTIONS+="link_priority=-100"' \
+/lib/udev/rules.d/60-cdrom_id.rules > /etc/udev/rules.d/60-cdrom_id.rules
+
+
+
+
+
+

+ Configuring for Adding Users +

+
+
+
+
+

+ Together, the /usr/sbin/useradd command and + /etc/skel directory (both are + easy to set up and use) provide a way to assure new users are + added to your LFS system with the same beginning settings for + things such as the PATH, keyboard + processing and other environmental variables. Using these two + facilities makes it easier to assure this initial state for + each new user added to the system. +

+

+ The /etc/skel directory holds + copies of various initialization and other files that may be + copied to the new user's home directory when the /usr/sbin/useradd program + adds the new user. +

+
+ Useradd +
+

+ The useradd + program uses a collection of default values kept in + /etc/default/useradd. This file + is created in a base LFS installation by the Shadow package. If it has been removed or + renamed, the useradd program uses some + internal defaults. You can see the default values by running + /usr/sbin/useradd + -D. +

+

+ To change these values, simply modify the /etc/default/useradd file as the root user. An alternative to directly + modifying the file is to run useradd as the root user while supplying the desired + modifications on the command line. Information on how to do + this can be found in the useradd man page. +

+
+ /etc/skel +
+

+ To get started, create an /etc/skel directory and make sure it is + writable only by the system administrator, usually root. Creating the directory as + root is the best way to go. +

+

+ The mode of any files from this part of the book that you put + in /etc/skel should be writable + only by the owner. Also, since there is no telling what kind of + sensitive information a user may eventually place in their copy + of these files, you should make them unreadable by "group" and + "other". +

+

+ You can also put other files in /etc/skel and different permissions may be + needed for them. +

+

+ Decide which initialization files should be provided in every + (or most) new user's home directory. The decisions you make + will affect what you do in the next two sections, The Bash Shell Startup Files + and The vimrc Files. Some + or all of those files will be useful for root, any already-existing users, and new + users. +

+

+ The files from those sections that you might want to place in + /etc/skel include .inputrc, .bash_profile, .bashrc, .bash_logout, .dircolors, and .vimrc. If you are unsure which of these + should be placed there, just continue to the following + sections, read each section and any references provided, and + then make your decision. +

+

+ You will run a slightly modified set of commands for files + which are placed in /etc/skel. + Each section will remind you of this. In brief, the book's + commands have been written for files not added to /etc/skel and instead just sends the results + to the user's home directory. If the file is going to be in + /etc/skel, change the book's + command(s) to send output there instead and then just copy the + file from /etc/skel to the + appropriate directories, like /etc, ~ or the + home directory of any other user already in the system. +

+
+ When + Adding a User +
+

+ When adding a new user with useradd, use the -m parameter, which tells useradd to create the user's + home directory and copy files from /etc/skel (can be overridden) to the new + user's home directory. For example (perform as the root user): +

+
useradd -m <newuser>
+

+ If you are sharing a /home or + /usr/src with another Linux + distro (for example, the host distro used for building LFS), + you can create a user with the same UID (and, same primary + group GID) to keep the file ownership consistent across the + systems. First, on the other + distro, get the UID of the user and the GID of the + user's primary group: +

+
getent passwd <username> | cut -d ':' -f 3,4
+

+ The command should output the UID and GID, separated by a + colon. Now on the BLFS system, create the primary group and the + user: +

+
groupadd -g <GID> <username> &&
+useradd -u <UID> -g <username> <username>
+
+
+
+
+

+ About System Users and Groups +

+
+
+
+
+

+ Throughout BLFS, many packages install programs that run as + daemons or in some way should have a user or group name + assigned. Generally these names are used to map a user ID (uid) + or group ID (gid) for system use. Generally the specific uid or + gid numbers used by these applications are not significant. The + exception of course, is that root has a uid and gid of 0 (zero) that is + indeed special. The uid values are stored in /etc/passwd and the gid values are found in + /etc/group. +

+

+ Customarily, Unix systems classify users and groups into two + categories: system users and regular users. The system users + and groups are given low numbers and regular users and groups + have numeric values greater than all the system values. The + cutoff for these numbers is found in two parameters in the + /etc/login.defs configuration + file. The default UID_MIN value is 1000 and the default GID_MIN + value is 1000. If a specific uid or gid value is not specified + when creating a user with useradd or a group with + groupadd the + values assigned will always be above these cutoff values. +

+

+ Additionally, the + Linux Standard Base recommends that system uid and gid + values should be below 100. +

+

+ Below is a table of suggested uid/gid values used in BLFS + beyond those defined in a base LFS installation. These can be + changed as desired, but provide a suggested set of consistent + values. +

+
+ +

+ Table 3.1. UID/GID Suggested + Values +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Name + + uid + + gid +
+ bin + + 1 +
+ lp + + 9 +
+ adm + + 16 +
+ atd + + 17 + + 17 +
+ messagebus + + 18 + + 18 +
+ lpadmin + +   + + 19 +
+ named + + 20 + + 20 +
+ gdm + + 21 + + 21 +
+ fcron + + 22 + + 22 +
+ systemd-journal + + 23 + + 23 +
+ apache + + 25 + + 25 +
+ smmsp + + 26 + + 26 +
+ polkitd + + 27 + + 27 +
+ rpc + + 28 + + 28 +
+ exim + + 31 + + 31 +
+ postfix + + 32 + + 32 +
+ postdrop + + 33 +
+ sendmail + + 34 +
+ mail + + 34 +
+ vmailman + + 35 + + 35 +
+ news + + 36 + + 36 +
+ kdm + + 37 + + 37 +
+ fetchmail + + 38 +
+ mariadb + + 40 + + 40 +
+ postgres + + 41 + + 41 +
+ dovecot + + 42 + + 42 +
+ dovenull + + 43 + + 43 +
+ ftp + + 45 + + 45 +
+ proftpd + + 46 + + 46 +
+ vsftpd + + 47 + + 47 +
+ rsyncd + + 48 + + 48 +
+ sshd + + 50 + + 50 +
+ stunnel + + 51 + + 51 +
+ dhcpcd + + 52 + + 52 +
+ svn + + 56 + + 56 +
+ svntest + + 57 +
+ git + + 58 + + 58 +
+ games + + 60 + + 60 +
+ kvm + + 61 +
+ wireshark + + 62 +
+ sddm + + 64 + + 64 +
+ lightdm + + 65 + + 65 +
+ scanner + + 70 +
+ colord + + 71 + + 71 +
+ systemd-journal-gateway + + 73 + + 73 +
+ systemd-journal-remote + + 74 + + 74 +
+ systemd-journal-upload + + 75 + + 75 +
+ systemd-network + + 76 + + 76 +
+ systemd-resolve + + 77 + + 77 +
+ systemd-timesync + + 78 + + 78 +
+ systemd-coredump + + 79 + + 79 +
+ uuidd + + 80 + + 80 +
+ systemd-oom + + 81 + + 81 +
+ ldap + + 83 + + 83 +
+ avahi + + 84 + + 84 +
+ avahi-autoipd + + 85 + + 85 +
+ netdev + + 86 +
+ ntp + + 87 + + 87 +
+ unbound + + 88 + + 88 +
+ plugdev + + 90 +
+ wheel + + 97 +
+ anonymous + + 98 +
+ nobody + + 65534 +
+ nogroup + + 65534 +
+
+

+
+
+
+
+

+ The Bash Shell Startup Files +

+
+
+
+
+

+ The shell program /bin/bash + (hereafter referred to as just "the shell") uses a collection + of startup files to help create an environment. Each file has a + specific use and may affect login and interactive environments + differently. The files in the /etc directory generally provide global + settings. If an equivalent file exists in your home directory + it may override the global settings. +

+

+ An interactive login shell is started after a successful login, + using /bin/login, by reading the + /etc/passwd file. This shell + invocation normally reads /etc/profile and its private equivalent + ~/.bash_profile (or ~/.profile if called as /bin/sh) upon startup. +

+

+ An interactive non-login shell is normally started at the + command-line using a shell program (e.g., [prompt]$/bin/bash) or by the + /bin/su command. + An interactive non-login shell is also started with a terminal + program such as xterm or konsole from within a + graphical environment. This type of shell invocation normally + copies the parent environment and then reads the user's + ~/.bashrc file for additional + startup configuration instructions. +

+

+ A non-interactive shell is usually present when a shell script + is running. It is non-interactive because it is processing a + script and not waiting for user input between commands. For + these shell invocations, only the environment inherited from + the parent shell is used. +

+

+ The file ~/.bash_logout is not + used for an invocation of the shell. It is read and executed + when a user exits from an interactive login shell. +

+

+ Many distributions use /etc/bashrc for system wide initialization of + non-login shells. This file is usually called from the user's + ~/.bashrc file and is not built + directly into bash itself. This convention + is followed in this section. +

+

+ For more information see info + bash -- Nodes: + Bash Startup Files and Interactive Shells. +

+
+

+ Note +

+

+ Most of the instructions below are used to create files + located in the /etc directory + structure which requires you to execute the commands as the + root user. If you elect to + create the files in user's home directories instead, you + should run the commands as an unprivileged user. +

+
+

+ Editor Notes: + https://wiki.linuxfromscratch.org/blfs/wiki/bash-shell-startup-files +

+
+

+ /etc/profile +

+

+ Here is a base /etc/profile. + This file starts by setting up some helper functions and some + basic parameters. It specifies some bash history parameters + and, for security purposes, disables keeping a permanent + history file for the root + user. It then calls small, single purpose scripts in the + /etc/profile.d directory to + provide most of the initialization. +

+
cat > /etc/profile << "EOF"
+# Begin /etc/profile
+# Written for Beyond Linux From Scratch
+# by James Robertson <jameswrobertson@earthlink.net>
+# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
+
+# 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="&:[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
+
+
+
+
+

+ The + /etc/profile.d Directory +

+
+
+
+

+ Now create the /etc/profile.d + directory, where the individual initialization scripts are + placed: +

+
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
+
+
+
+
+
+

+ /etc/profile.d/bash_completion.sh +

+
+
+
+
+

+ Note +

+

+ Using the bash completion script below is controversial. + Not all users like it. It adds many (usually over 1000) + lines to the bash environment and makes it difficult to + use the 'set' command to examine simple environment + variables. Omitting this script does not interfere with + the ability of bash to use the tab key for file name + completion. +

+
+

+ This script imports bash completion scripts, installed by + many other BLFS packages, to allow TAB command line + completion. +

+
cat > /etc/profile.d/bash_completion.sh << "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" ] && \
+            . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
+       if shopt -q progcomp && [ -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
+

+ Make sure that the directory exists: +

+
install --directory --mode=0755 --owner=root --group=root /etc/bash_completion.d
+

+ For a more complete installation, see + https://wiki.linuxfromscratch.org/blfs/wiki/bash-shell-startup-files#bash-completions. +

+
+
+
+
+
+

+ /etc/profile.d/dircolors.sh +

+
+
+
+

+ This script uses the ~/.dircolors and /etc/dircolors files to control the + colors of file names in a directory listing. They control + colorized output of things like ls --color. The + explanation of how to initialize these files is at the end + of this section. +

+
cat > /etc/profile.d/dircolors.sh << "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
+
+
+
+
+
+

+ /etc/profile.d/extrapaths.sh +

+
+
+
+

+ This script adds some useful paths to the PATH and can be used to customize other PATH + related environment variables (e.g. LD_LIBRARY_PATH, etc) + that may be needed for all users. +

+
cat > /etc/profile.d/extrapaths.sh << "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
+
+

+ Note +

+

+ The man + program automatically deduces the search path for man + pages by examining the content of the PATH variable, see manpath(5) + for details. Setting the MANPATH variable may override the + automatic deduction, so the BLFS editors do not recommend + setting it. If you must set it for any reason, it's + better to start its value with a colon (:), for example MANPATH=:/opt/somepkg/share/man:/opt/otherpkg/share/man + so the paths listed in the MANPATH variable will be appended to the + automatically deduced value instead of overriding it. +

+
+
+
+
+
+
+

+ /etc/profile.d/readline.sh +

+
+
+
+

+ This script sets up the default inputrc configuration file. If the user + does not have individual settings, it uses the global file. +

+
cat > /etc/profile.d/readline.sh << "EOF"
+# Set up the INPUTRC environment variable.
+if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
+        INPUTRC=/etc/inputrc
+fi
+export INPUTRC
+EOF
+
+
+
+
+
+

+ /etc/profile.d/umask.sh +

+
+
+
+

+ Setting the umask value is important + for security. Here the default group write permissions are + turned off for system users and when the user name and + group name are not the same. +

+
cat > /etc/profile.d/umask.sh << "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
+
+
+
+
+
+

+ /etc/profile.d/i18n.sh +

+
+
+
+

+ This script sets an environment variable necessary for + native language support. A full discussion on determining + this variable can be found on the Configuring + the System Locale page. +

+
cat > /etc/profile.d/i18n.sh << "EOF"
+# Set up i18n variables
+for i in $(locale); do
+  unset ${i%=*}
+done
+
+if [[ "$TERM" = linux ]]; then
+  export LANG=C.UTF-8
+else
+  export LANG=<ll>_<CC>.<charmap><@modifiers>
+fi
+EOF
+
+
+
+
+
+

+ Other Initialization Values +

+
+
+
+

+ Other initialization can easily be added to the + profile by adding additional + scripts to the /etc/profile.d + directory. +

+
+
+
+

+ /etc/bashrc +

+

+ Here is a base /etc/bashrc. + Comments in the file should explain everything you need. +

+
cat > /etc/bashrc << "EOF"
+# Begin /etc/bashrc
+# Written for Beyond Linux From Scratch
+# by James Robertson <jameswrobertson@earthlink.net>
+# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
+
+# 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.]
+
+NORMAL="\[\e[0m\]"
+RED="\[\e[1;31m\]"
+GREEN="\[\e[1;32m\]"
+if [[ $EUID == 0 ]] ; then
+  PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
+else
+  PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
+fi
+
+unset RED GREEN NORMAL
+
+# GnuPG wants this or it'll fail with pinentry-curses under some
+# circumstances (for example signing a Git commit)
+tty -s && export GPG_TTY=$(tty)
+
+# End /etc/bashrc
+EOF
+

+ For more information on the escape sequences you can use for + your prompt (i.e., the PS1 + environment variable) see info + bash -- Node: + Printing a Prompt. +

+
+
+

+ ~/.bash_profile +

+

+ Here is a base ~/.bash_profile. + If you want each new user to have this file automatically, + just change the output of the command to /etc/skel/.bash_profile and check the + permissions after the command is run. You can then copy + /etc/skel/.bash_profile to the + home directories of already existing users, including + root, and set the owner and + group appropriately. +

+
cat > ~/.bash_profile << "EOF"
+# Begin ~/.bash_profile
+# Written for Beyond Linux From Scratch
+# by James Robertson <jameswrobertson@earthlink.net>
+# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
+
+# 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
+
+
+

+ ~/.profile +

+

+ Here is a base ~/.profile. The + comments and instructions for using /etc/skel for .bash_profile above also apply here. Only + the target file names are different. +

+
cat > ~/.profile << "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=<ll>_<CC>.<charmap><@modifiers>
+
+# End ~/.profile
+EOF
+
+
+

+ ~/.bashrc +

+

+ Here is a base ~/.bashrc. +

+
cat > ~/.bashrc << "EOF"
+# Begin ~/.bashrc
+# Written for Beyond Linux From Scratch
+# by James Robertson <jameswrobertson@earthlink.net>
+
+# 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=<ll>_<CC>.<charmap><@modifiers>
+
+# End ~/.bashrc
+EOF
+
+
+

+ ~/.bash_logout +

+

+ This is an empty ~/.bash_logout + that can be used as a template. You will notice that the base + ~/.bash_logout does not include + a clear + command. This is because the clear is handled in the + /etc/issue file. +

+
cat > ~/.bash_logout << "EOF"
+# Begin ~/.bash_logout
+# Written for Beyond Linux From Scratch
+# by James Robertson <jameswrobertson@earthlink.net>
+
+# Personal items to perform on logout.
+
+# End ~/.bash_logout
+EOF
+
+
+

+ /etc/dircolors +

+

+ If you want to use the dircolors capability, then run the + following command. The /etc/skel setup steps shown above also can + be used here to provide a ~/.dircolors file when a new user is set + up. As before, just change the output file name on the + following command and assure the permissions, owner, and + group are correct on the files created and/or copied. +

+
dircolors -p > /etc/dircolors
+

+ If you wish to customize the colors used for different file + types, you can edit the /etc/dircolors file. The instructions for + setting the colors are embedded in the file. +

+

+ Finally, Ian Macdonald has written an excellent collection of + tips and tricks to enhance your shell environment. You can + read it online at https://caliban.org/bash/index.shtml. +

+
+
+
+
+
+

+ The /etc/vimrc and ~/.vimrc + Files +

+
+
+
+
+

+ The LFS book installs Vim as + its text editor. At this point it should be noted that there + are a lot of different + editing applications out there including Emacs, nano, Joe + and many more. Anyone who has been around the Internet + (especially usenet) for a short time will certainly have + observed at least one flame war, usually involving Vim and Emacs users! +

+

+ The LFS book creates a basic vimrc file. In this section you'll find an + attempt to enhance this file. At startup, vim reads the global + configuration file (/etc/vimrc) + as well as a user-specific file (~/.vimrc). Either or both can be tailored to + suit the needs of your particular system. +

+

+ Here is a slightly expanded .vimrc that you can put in ~/.vimrc to provide user specific effects. Of + course, if you put it into /etc/skel/.vimrc instead, it will be made + available to users you add to the system later. You can also + copy the file from /etc/skel/.vimrc to the home directory of + users already on the system, such as root. Be sure to set permissions, owner, + and group if you do copy anything directly from /etc/skel. +

+
" Begin .vimrc
+
+set columns=80
+set wrapmargin=8
+set ruler
+
+" End .vimrc
+

+ Note that the comment tags are " instead of the more usual # or + //. This is correct, the syntax for vimrc is slightly unusual. +

+

+ Below you'll find a quick explanation of what each of the + options in this example file means here: +

+
+
    +
  • +

    + set columns=80: This simply + sets the number of columns used on the screen. +

    +
  • +
  • +

    + set wrapmargin=8: This is the + number of characters from the right window border where + wrapping starts. +

    +
  • +
  • +

    + set ruler: This makes + vim show + the current row and column at the bottom right of the + screen. +

    +
  • +
+
+

+ More information on the many vim options can be found by + reading the help inside vim itself. Do this by typing + :help in vim to get the general help, + or by typing :help + usr_toc.txt to view the User Manual Table of Contents. +

+
+
+
+
+

+ Customizing your Logon with + /etc/issue +

+
+
+
+
+

+ When you first boot up your new LFS system, the logon screen + will be nice and plain (as it should be in a bare-bones + system). Many people however, will want their system to display + some information in the logon message. This can be accomplished + using the file /etc/issue. +

+

+ The /etc/issue file is a plain + text file which will also accept certain escape sequences (see + below) in order to insert information about the system. There + is also the file issue.net which + can be used when logging on remotely. ssh however, will only use it + if you set the option in the configuration file and will + not interpret the escape + sequences shown below. +

+

+ One of the most common things which people want to do is clear + the screen at each logon. The easiest way of doing that is to + put a "clear" escape sequence into /etc/issue. A simple way of doing this is to + issue the command clear > + /etc/issue. This will insert the relevant + escape code into the start of the /etc/issue file. Note that if you do this, + when you edit the file, you should leave the characters + (normally '^[[H^[[2J') on the first line alone. +

+
+

+ Note +

+

+ Terminal escape sequences are special codes recognized by the + terminal. The ^[ represents an ASCII ESC character. The + sequence ESC [ H puts the cursor in the upper left hand + corner of the screen and ESC 2 J erases the screen. For more + information on terminal escape sequences see https://invisible-mirror.net/xterm/ctlseqs/ctlseqs.html +

+
+

+ The following sequences are recognized by agetty (the program which + usually parses /etc/issue). This + information is from man + agetty where you can find extra information + about the logon process. +

+

+ The issue file can contain + certain character sequences to display various information. All + issue sequences consist of a + backslash (\) immediately followed by one of the letters + explained below (so \d in + /etc/issue would insert the + current date). +

+
b   Insert the baudrate of the current line.
+d   Insert the current date.
+s   Insert the system name, the name of the operating system.
+l   Insert the name of the current tty line.
+m   Insert the architecture identifier of the machine, e.g., i686.
+n   Insert the nodename of the machine, also known as the hostname.
+o   Insert the domainname of the machine.
+r   Insert the release number of the kernel, e.g., 2.6.11.12.
+t   Insert the current time.
+u   Insert the number of current users logged in.
+U   Insert the string "1 user" or "<n> users" where <n> is the
+    number of current users logged in.
+v   Insert the version of the OS, e.g., the build-date etc.
+
+
+
+
+

+ Random Number Generation +

+
+
+
+
+

+ The Linux kernel supplies a random number generator which is + accessed through /dev/random and + /dev/urandom. Programs that + utilize the random and urandom devices, such as OpenSSH, will benefit from these + instructions. +

+

+ When a Linux system starts up without much operator + interaction, the entropy pool (data used to compute a random + number) may be in a fairly predictable state. This creates the + real possibility that the number generated at startup may + always be the same. In order to counteract this effect, you + should carry the entropy pool information across your + shut-downs and start-ups. +

+

+ Install the /etc/rc.d/init.d/random init script included + with the blfs-bootscripts-20250225 package. +

+
make install-random
+
+
+
+
+
+

+ Chapter 4. Security +

+
+
+
+
+

+ Security takes many forms in a computing environment. After some + initial discussion, this chapter gives examples of three + different types of security: access, prevention and detection. +

+

+ Access for users is usually handled by login or an application + designed to handle the login function. In this chapter, we show + how to enhance login by setting policies with + PAM modules. Access via networks + can also be secured by policies set by iptables, commonly referred to as a + firewall. The Network Security Services (NSS) and Netscape + Portable Runtime (NSPR) libraries can be installed and shared + among the many applications requiring them. For applications that + don't offer the best security, you can use the Stunnel package to wrap an application + daemon inside an SSL tunnel. +

+

+ Prevention of breaches, like a trojan, are assisted by + applications like GnuPG, + specifically the ability to confirm signed packages, which + recognizes modifications of the tarball after the packager + creates it. +

+

+ Finally, we touch on detection with a package that stores + "signatures" of critical files (defined by the administrator) and + then regenerates those "signatures" and compares for files that + have been changed. +

+
+
+
+

+ Vulnerabilities +

+
+
+
+
+
+

+ About vulnerabilities +

+

+ All software has bugs. Sometimes, a bug can be exploited, for + example to allow users to gain enhanced privileges (perhaps + gaining a root shell, or simply accessing or deleting other + user's files), or to allow a remote site to crash an + application (denial of service), or for theft of data. These + bugs are labelled as vulnerabilities. +

+

+ The main place where vulnerabilities get logged is cve.mitre.org. + Unfortunately, many vulnerability numbers (CVE-yyyy-nnnn) are + initially only labelled as "reserved" when distributions + start issuing fixes. Also, some vulnerabilities apply to + particular combinations of configure options, or only + apply to old versions of packages which have long since been + updated in BLFS. +

+

+ BLFS differs from distributions—there is no BLFS security + team, and the editors only become aware of vulnerabilities + after they are public knowledge. Sometimes, a package with a + vulnerability will not be updated in the book for a long + time. Issues can be logged in the Trac system, which might + speed up resolution. +

+

+ The normal way for BLFS to fix a vulnerability is, ideally, + to update the book to a new fixed release of the package. + Sometimes that happens even before the vulnerability is + public knowledge, so there is no guarantee that it will be + shown as a vulnerability fix in the Changelog. Alternatively, + a sed command, + or a patch taken from a distribution, may be appropriate. +

+

+ The bottom line is that you are responsible for your own + security, and for assessing the potential impact of any + problems. +

+

+ The editors now issue Security Advisories for packages in + BLFS (and LFS), which can be found at BLFS + Security Advisories, and grade the severity according to + what upstream reports, or to what is shown at nvd.nist.gov if that + has details. +

+

+ To keep track of what is being discovered, you may wish to + follow the security announcements of one or more + distributions. For example, Debian has Debian security. + Fedora's links on security are at the Fedora + wiki. Details of Gentoo linux security announcements are + discussed at Gentoo security. Finally, + the Slackware archives of security announcements are at + Slackware security. +

+

+ The most general English source is perhaps the Full + Disclosure Mailing List, but please read the comment on + that page. If you use other languages you may prefer other + sites such as heise.de (German) or + cert.hr + (Croatian). These are not linux-specific. There is also a + daily update at lwn.net for subscribers (free access to the + data after 2 weeks, but their vulnerabilities database at + lwn.net/Alerts is + unrestricted). +

+

+ For some packages, subscribing to their 'announce' lists will + provide prompt news of newer versions. +

+
+
+
+
+
+

+ make-ca-1.16.1 +

+
+
+
+
+
+

+ Introduction to make-ca +

+

+ 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. +

+

+ 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 + + here. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ This package ships a CA certificate for validating the + identity of https://hg-edge.mozilla.org/. + If the trust chain of this website has been changed after + the release of make-ca-1.16.1, it may fail to get the + revision of certdata.txt from + server. Use an updated make-ca release at the + release page if this issue happens. +

+
+

+ make-ca Dependencies +

+
+ Required +
+

+ p11-kit-0.25.5 (runtime, built after + libtasn1-4.20.0, required in the + following instructions to generate certificate stores from + trust anchors, and each time make-ca is run) +

+
+ Optional (runtime) +
+

+ nss-3.115 + (to generate a shared NSSDB) +

+
+
+

+ Installation of make-ca and Generation of the CA-certificates + stores +

+

+ The make-ca script will + download and process the certificates included in the + certdata.txt file for use as + trust anchors for the p11-kit-0.25.5 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 /etc/ssl/local 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 + /etc/ssl/local prior to any + updates, preserving custom trust values that differ from + Mozilla when using the trust utility from + p11-kit to operate on the + trust store. +

+

+ To install the various certificate stores, first install the + make-ca script into the + correct location. As the root + user: +

+
make install &&
+install -vdm755 /etc/ssl/local
+
+

+ Important +

+

+ Technically, this package is already installed at this + point. But most packages listing make-ca as a dependency actually + require the system certificate store set up by this + package, rather than the make-ca program itself. + So the instructions for using make-ca for setting up + the system certificate store are included in this section. + You should make sure the required runtime dependency for + make-ca is satisfied now, + and continue to follow the instructions. +

+
+

+ As the root user, download + the certificate source and prepare for system use with the + following command: +

+
+

+ Note +

+

+ If running the script a second time with the same version + of certdata.txt, for + instance, to update the stores when make-ca is upgraded, or to add + additional stores as the requisite software is installed, + replace the -g + switch with the -r + switch in the command line. If packaging, run make-ca --help to see all + available command line options. +

+
+
/usr/sbin/make-ca -g
+

+ You should periodically update the store with the above + command, either manually, or via a cron + job. If you've installed + Fcron-3.4.0 and completed the section on + periodic jobs, execute the following commands, as the + root user, to create a weekly cron job: +

+
cat > /etc/cron.weekly/update-pki.sh << "EOF" &&
+#!/bin/bash
+/usr/sbin/make-ca -g
+EOF
+chmod 754 /etc/cron.weekly/update-pki.sh
+
+
+

+ Configuring + make-ca +

+

+ For most users, no additional configuration is necessary, + however, the default certdata.txt 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-3.115. Additional upstream downloads are + available at the links included in /etc/make-ca/make-ca.conf.dist. Simply copy + the file to /etc/make-ca.conf + and edit as appropriate. +

+

+ About Trust Arguments +

+

+ There are three trust types that are recognized by the + make-ca script, SSL/TLS, + S/Mime, and code signing. For OpenSSL, these are serverAuth, emailProtection, and codeSigning respectively. If + one of the three trust arguments is omitted, the certificate + is neither trusted, nor rejected for that role. Clients that + use OpenSSL or NSS encountering this certificate will + present a warning to the user. Clients using GnuTLS without p11-kit support are not aware of trusted + certificates. To include this CA into the ca-bundle.crt, email-ca-bundle.crt, or objsign-ca-bundle.crt files (the + GnuTLS legacy bundles), it + must have the appropriate trust arguments. +

+

+ Adding Additional CA Certificates +

+

+ The /etc/ssl/local directory is + available to add additional CA certificates to the system + trust store. This directory is also used to store + certificates that were added to or modified in the system + trust store by p11-kit-0.25.5 so that trust values are + maintained across upgrades. Files in this directory must be + in the OpenSSL trusted + certificate format. Certificates imported using the + trust utility + from p11-kit-0.25.5 will utilize the x509 + Extended Key Usage values to assign default trust values for + the system anchors. +

+

+ If you need to override trust values, or otherwise need to + create an OpenSSL trusted + certificate manually from a regular PEM encoded file, you + need to add trust arguments to the openssl command, and create + a new certificate. For example, using the CAcert roots, if you want + to trust both for all three roles, the following commands + will create appropriate OpenSSL trusted certificates (run as + the root user after Wget-1.25.0 is + installed): +

+
wget http://www.cacert.org/certs/root.crt &&
+wget http://www.cacert.org/certs/class3.crt &&
+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 &&
+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 &&
+/usr/sbin/make-ca -r
+

+ Overriding Mozilla Trust +

+

+ 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 /etc/ssl/local + with different trust arguments. For example, if you'd like to + distrust the "Makebelieve_CA_Root" file, run the following + commands: +

+
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 &&
+/usr/sbin/make-ca -r
+
+
+

+ Using + make-ca with Python3 +

+

+ When Python3 was installed + in LFS, it included the pip3 + module with vendored certificates from the Certifi module. That was necessary, but + it means that whenever pip3 is used it can + reference those certificates, primarily when creating a + virtual environment or when installing a module with all its + wheel dependencies in one go. +

+

+ It is generally considered that the System Administrator + should be in charge of which certificates are available. Now + that make-ca-1.16.1 and p11-kit-0.25.5 have + been installed and make-ca + has been configured, it is possible to make pip3 use the system + certificates. +

+

+ The vendored certificates installed in LFS are a snapshot + from when the pulled-in version of Certifi was created. If you regularly + update the system certificates, the vendored version will + become out of date. +

+

+ To use the system certificates in Python3, you should set _PIP_STANDALONE_CERT to point to them, e.g for + the bash shell: +

+
export _PIP_STANDALONE_CERT=/etc/pki/tls/certs/ca-bundle.crt
+
+

+ Warning +

+

+ If you have created virtual environments, for example when + testing modules, and those include the Requests and Certifi modules in ~/.local/lib/python3.13/, then those + local modules will be used instead of the system + certificates unless you remove the local modules. +

+
+

+ To use the system certificates in Python3 with the BLFS profiles, add the + following variable to your system or personal profiles: +

+
mkdir -pv /etc/profile.d &&
+cat > /etc/profile.d/pythoncerts.sh << "EOF"
+# Begin /etc/profile.d/pythoncerts.sh
+
+export _PIP_STANDALONE_CERT=/etc/pki/tls/certs/ca-bundle.crt
+
+# End /etc/profile.d/pythoncerts.sh
+EOF
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + make-ca +
+
+ Installed Directories: + /etc/ssl/{certs,local} and + /etc/pki/{nssdb,anchors,tls/{certs,java}} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ make-ca +

+
+

+ is a shell script that adapts a current version of + certdata.txt, and + prepares it for use as the system trust store +

+
+
+
+
+
+
+
+

+ CrackLib-2.10.3 +

+
+
+
+
+
+

+ Introduction to CrackLib +

+

+ The CrackLib package + contains a library used to enforce strong passwords by + comparing user selected passwords to words in chosen word + lists. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+

+ Recommended word list for English-speaking countries: +

+ +
+

+ There are additional word lists available for download, e.g., + from https://www.skullsecurity.org/wiki/Passwords. + CrackLib can utilize as + many, or as few word lists you choose to install. +

+
+

+ Important +

+

+ Users tend to base their passwords on regular words of the + spoken language, and crackers know that. CrackLib is intended to filter out + such bad passwords at the source using a dictionary created + from word lists. To accomplish this, the word list(s) for + use with CrackLib must be + an exhaustive list of words and word-based keystroke + combinations likely to be chosen by users of the system as + (guessable) passwords. +

+

+ The default word list recommended above for downloading + mostly satisfies this role in English-speaking countries. + In other situations, it may be necessary to download (or + even create) additional word lists. +

+

+ Note that word lists suitable for spell-checking are not + usable as CrackLib word + lists in countries with non-Latin based alphabets, because + of “word-based + keystroke combinations” that make bad + passwords. +

+
+
+
+

+ Installation of CrackLib +

+

+ Install CrackLib by running + the following commands: +

+
CPPFLAGS+=' -I /usr/include/python3.13' \
+./configure --prefix=/usr               \
+            --disable-static            \
+            --with-default-dict=/usr/lib/cracklib/pw_dict &&
+make
+

+ Now, as the root user: +

+
make install
+

+ Issue the following commands as the root user to install the recommended word + list and create the CrackLib + dictionary. Other word lists (text based, one word per line) + can also be used by simply installing them into /usr/share/dict and adding them to the + create-cracklib-dict + command. +

+
xzcat ../cracklib-words-2.10.3.xz \
+                       > /usr/share/dict/cracklib-words       &&
+ln -v -sf cracklib-words /usr/share/dict/words                &&
+echo $(hostname) >>      /usr/share/dict/cracklib-extra-words &&
+install -v -m755 -d      /usr/lib/cracklib                    &&
+
+create-cracklib-dict     /usr/share/dict/cracklib-words \
+                         /usr/share/dict/cracklib-extra-words
+

+ If desired, check the proper operation of the library as an + unprivileged user by issuing the following command: +

+
make test
+

+ If desired, test the Python module with: +

+
python3 -c 'import cracklib; cracklib.test()'
+
+

+ Important +

+

+ If you are installing CrackLib after your LFS system has + been completed and you have the Shadow package installed, you must + reinstall Shadow-4.18.0 if you wish to provide + strong password support on your system. If you are now + going to install the Linux-PAM-1.7.1 package, you + may disregard this note as Shadow will be reinstalled after the + Linux-PAM installation. +

+
+
+
+

+ Command Explanations +

+

+ CPPFLAGS+=' -I + /usr/include/python3.13': This environment variable is + needed to allow the package to find the Python-3.13 include files. +

+

+ --with-default-dict=/usr/lib/cracklib/pw_dict: + This parameter forces the installation of the CrackLib dictionary to the /lib hierarchy. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ sed ... + ./python/test_cracklib.py: This command + updates the build procedure for the Python module for + Python-3.13 and later.. +

+

+ install -v -m644 -D + ...: This command creates the /usr/share/dict directory (if it doesn't + already exist) and installs the compressed word list there. +

+

+ ln -v -s cracklib-words + /usr/share/dict/words: The word list is + linked to /usr/share/dict/words + as historically, words is the + primary word list in the /usr/share/dict directory. Omit this + command if you already have a /usr/share/dict/words file installed on + your system. +

+

+ echo $(hostname) + >>...: The value of hostname is echoed to a + file called cracklib-extra-words. 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. +

+

+ create-cracklib-dict + ...: This command creates the CrackLib dictionary from the word lists. + Modify the command to add any additional word lists you have + installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cracklib-check, cracklib-format, + cracklib-packer, cracklib-unpacker, cracklib-update, and + create-cracklib-dict +
+
+ Installed Libraries: + libcrack.so and _cracklib.so + (Python module) +
+
+ Installed Directories: + /usr/lib/cracklib, /usr/share/dict, + and /usr/share/cracklib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cracklib-check +

+
+

+ is used to determine if a password is strong +

+
+

+ cracklib-format +

+
+

+ is used to format text files (lowercases all words, + removes control characters and sorts the lists) +

+
+

+ cracklib-packer +

+
+

+ creates a database with words read from standard + input +

+
+

+ cracklib-unpacker +

+
+

+ displays on standard output the database specified +

+
+

+ create-cracklib-dict +

+
+

+ is used to create the CrackLib dictionary from the + given word list(s) +

+
+

+ libcrack.so +

+
+

+ provides a fast dictionary lookup method for strong + password enforcement +

+
+
+
+
+
+
+
+

+ cryptsetup-2.8.1 +

+
+
+
+
+
+

+ Introduction to cryptsetup +

+

+ cryptsetup is used to set up transparent encryption of block + devices using the kernel crypto API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ cryptsetup Dependencies +

+
+ Required +
+

+ JSON-C-0.18, LVM2-2.03.34, and popt-1.19 +

+
+ Optional +
+

+ asciidoctor-2.0.23, libpwquality-1.4.5, argon2, + libssh, + mbedtls, and + passwdqc +

+
+
+

+ Kernel + Configuration +

+

+ Encrypted block devices require kernel support. To use it, + the appropriate kernel configuration parameters need to be + set: +

+
Device Drivers --->
+  [*] Multiple devices driver support (RAID and LVM) --->                   [MD]
+    <*/M> Device mapper support                                     [BLK_DEV_DM]
+    <*/M>   Crypt target support                                      [DM_CRYPT]
+
+-*- Cryptographic API --->                                              [CRYPTO]
+  Block ciphers --->
+    <*/M> AES (Advanced Encryption Standard)                        [CRYPTO_AES]
+    # For tests:
+    <*/M> Twofish                                               [CRYPTO_TWOFISH]
+  Length-preserving ciphers and modes --->
+    <*/M> XTS (XOR Encrypt XOR with ciphertext stealing)            [CRYPTO_XTS]
+  Hashes, digests, and MACs --->
+    <*/M> SHA-224 and SHA-256                                    [CRYPTO_SHA256]
+  Userspace interface --->
+    <*/M> Symmetric key cipher algorithms             [CRYPTO_USER_API_SKCIPHER]
+
+
+

+ Installation of cryptsetup +

+

+ Install cryptsetup by + running the following commands: +

+
./configure --prefix=/usr       \
+            --disable-ssh-token \
+            --disable-asciidoc  &&
+make
+

+ To test the result, issue as the root user: make check. Some tests will + fail if appropriate kernel configuration options are not set. + Some additional options that may be needed for tests are: +

+
CONFIG_SCSI_LOWLEVEL,
+CONFIG_SCSI_DEBUG,
+CONFIG_BLK_DEV_DM_BUILTIN,
+CONFIG_CRC_T10DIF,
+CONFIG_CRYPTO_USER,
+CONFIG_CRYPTO_CRYPTD,
+CONFIG_CRYPTO_LRW,
+CONFIG_CRYPTO_XTS,
+CONFIG_CRYPTO_ESSIV,
+CONFIG_CRYPTO_AES_TI,
+CONFIG_CRYPTO_AES_NI_INTEL,
+CONFIG_CRYPTO_BLOWFISH,
+CONFIG_CRYPTO_CAST5,
+CONFIG_CRYPTO_SERPENT,
+CONFIG_CRYPTO_SERPENT_SSE2_X86_64,
+CONFIG_CRYPTO_SERPENT_AVX_X86_64,
+CONFIG_CRYPTO_SERPENT_AVX2_X86_64, and
+CONFIG_CRYPTO_TWOFISH_X86_64
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-ssh-token: + This switch is required if the optional libssh dependency is + not installed. +

+

+ --disable-asciidoc: + This switch disables regeneration of the man pages. Remove + this switch if you have asciidoctor-2.0.23 installed + and wish to regenerate the man pages. Note that even if this + switch is used, the pre-generated man pages are shipped in + the tarball and they'll still be installed. +

+
+
+

+ Configuring cryptsetup +

+

+ Because of the number of possible configurations, setup of + encrypted volumes is beyond the scope of the BLFS book. + Please see the configuration guide in the cryptsetup + + FAQ. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cryptsetup, integritysetup, and + veritysetup +
+
+ Installed Libraries: + libcryptsetup.so +
+
+ Installed Directories: + /usr/lib/cryptsetup +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ cryptsetup +

+
+

+ is used to setup dm-crypt managed device-mapper + mappings +

+
+

+ integritysetup +

+
+

+ is a tool to manage dm-integrity (block level + integrity) volumes +

+
+

+ veritysetup +

+
+

+ is used to configure dm-verity managed + device-mapper mappings. The Device-mapper verity + target provides read-only transparent integrity + checking of block devices using the kernel crypto + API +

+
+
+
+
+
+
+
+

+ Cyrus SASL-2.1.28 +

+
+
+
+
+
+

+ Introduction to Cyrus SASL +

+

+ The Cyrus SASL package + contains a Simple Authentication and Security Layer + implementation, a method for adding authentication support to + connection-based protocols. To use SASL, a protocol includes + a command for identifying and authenticating a user to a + server and for optionally negotiating protection of + subsequent protocol interactions. If its use is negotiated, a + security layer is inserted between the protocol and the + connection. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Cyrus SASL Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Linux-PAM-1.7.1, MIT Kerberos + V5-1.22.1, MariaDB-11.8.3 or MySQL, OpenLDAP-2.6.10, + PostgreSQL-17.6, sphinx-8.2.3, SQLite-3.50.4, + Berkeley DB (deprecated), krb4, + Dmalloc, and + Pod::POM::View::Restructured +

+
+
+

+ Installation of Cyrus SASL +

+
+

+ Note +

+

+ This package does not support parallel build. +

+
+

+ First, fix a the package to be compatible with gcc-15: +

+
patch -Np1 -i ../cyrus-sasl-2.1.28-gcc15_fixes-1.patch &&
+autoreconf -fiv
+

+ Also, fix a problem revealed by gcc-14 and later: +

+
sed '/saslint/a #include <time.h>'       -i lib/saslutil.c &&
+sed '/plugin_common/a #include <time.h>' -i plugins/cram.c
+

+ Install Cyrus SASL by + running the following commands: +

+
./configure --prefix=/usr                       \
+            --sysconfdir=/etc                   \
+            --enable-auth-sasldb                \
+            --with-dblib=lmdb                   \
+            --with-dbpath=/var/lib/sasl/sasldb2 \
+            --with-sphinx-build=no              \
+            --with-saslauthd=/var/run/saslauthd &&
+make -j1
+

+ This package does not come with a test suite. If you are + planning on using the GSSAPI authentication mechanism, test + it after installing the package using the sample server and + client programs which were built in the preceding step. + Instructions for performing the tests can be found at + + https://www.linuxfromscratch.org/hints/downloads/files/cyrus-sasl.txt. +

+

+ Now, as the root user: +

+
make install &&
+install -v -dm755                          /usr/share/doc/cyrus-sasl-2.1.28/html &&
+install -v -m644  saslauthd/LDAP_SASLAUTHD /usr/share/doc/cyrus-sasl-2.1.28      &&
+install -v -m644  doc/legacy/*.html        /usr/share/doc/cyrus-sasl-2.1.28/html &&
+install -v -dm700 /var/lib/sasl
+
+
+

+ Command Explanations +

+

+ --with-dbpath=/var/lib/sasl/sasldb2: + This switch forces the sasldb database to be + created in /var/lib/sasl + instead of /etc. +

+

+ --with-saslauthd=/var/run/saslauthd: + This switch forces saslauthd to use the FHS + compliant directory /var/run/saslauthd for variable run-time + data. +

+

+ --enable-auth-sasldb: + This switch enables SASLDB authentication backend. +

+

+ --with-dblib=gdbm: This switch + forces GDBM to be used + instead of LMDB. +

+

+ --with-ldap: This switch enables + the OpenLDAP support. +

+

+ --enable-ldapdb: This switch + enables the LDAPDB authentication backend. +

+

+ --enable-login: This option + enables unsupported LOGIN authentication. +

+

+ --enable-ntlm: This option + enables unsupported NTLM authentication. +

+

+ install -v -m644 + ...: These commands install documentation + which is not installed by the make install command. +

+

+ install -v -m700 -d + /var/lib/sasl: This directory must exist when + starting saslauthd or using the + sasldb plugin. If you're not going to be running the daemon + or using the plugins, you may omit the creation of this + directory. +

+
+
+

+ Configuring Cyrus SASL +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/saslauthd.conf (for + saslauthd + LDAP configuration) and /etc/sasl2/Appname.conf (where "Appname" + is the application defined name of the application) +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ See https://www.cyrusimap.org/sasl/sasl/sysadmin.html + for information on what to include in the application + configuration files. +

+

+ See file:///usr/share/doc/cyrus-sasl-2.1.28/LDAP_SASLAUTHD + for configuring saslauthd with + OpenLDAP. +

+

+ See https://www.cyrusimap.org/sasl/sasl/gssapi.html#gssapi + for configuring saslauthd with + Kerberos. +

+
+
+
+
+
+

+ Init + Script +

+
+
+
+

+ If you need to run the saslauthd daemon at + system startup, install the /etc/rc.d/init.d/saslauthd init script + included in the blfs-bootscripts-20250225 package + using the following command: +

+
make install-saslauthd
+
+

+ Note +

+

+ You'll need to modify /etc/sysconfig/saslauthd and modify the + AUTHMECH parameter with your + desired authentication mechanism. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pluginviewer, saslauthd, + sasldblistusers2, saslpasswd2, and testsaslauthd +
+
+ Installed Library: + libsasl2.so +
+
+ Installed Directories: + /usr/include/sasl, /usr/lib/sasl2, + /usr/share/doc/cyrus-sasl-2.1.28 and /var/lib/sasl +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ pluginviewer +

+
+

+ is used to list loadable SASL plugins and their + properties +

+
+

+ saslauthd +

+
+

+ is the SASL authentication server +

+
+

+ sasldblistusers2 +

+
+

+ is used to list the users in the SASL password + database sasldb2 +

+
+

+ saslpasswd2 +

+
+

+ is used to set and delete a user's SASL password + and mechanism specific secrets in the SASL password + database sasldb2 +

+
+

+ testsaslauthd +

+
+

+ is a test utility for the SASL authentication + server +

+
+

+ libsasl2.so +

+
+

+ is a general purpose authentication library for + server and client applications +

+
+
+
+
+
+
+
+

+ GnuPG-2.4.8 +

+
+
+
+
+
+

+ Introduction to GnuPG +

+

+ The GnuPG package is GNU's + tool for secure communication and data storage. It can be + used to encrypt data and to create digital signatures. It + includes an advanced key management facility and is compliant + with the proposed OpenPGP Internet standard as described in + RFC2440 and the S/MIME standard as described by several RFCs. + GnuPG 2 is the stable version of GnuPG integrating support + for OpenPGP and S/MIME. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.4.8.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: a165b60aeaac0bb4d251117a45199c5f +

    +
  • +
  • +

    + Download size: 7.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 136 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (with tests; both using + parallelism=4) +

    +
  • +
+
+

+ GnuPG 2 Dependencies +

+
+ Required +
+

+ libassuan-3.0.2, libgcrypt-1.11.2, + libksba-1.6.7, npth-1.8, and OpenLDAP-2.6.10 +

+
+ Recommended +
+ +
+ Optional +
+

+ cURL-8.15.0, Fuse-3.17.4, ImageMagick-7.1.2-1 (for the + convert + utility, used for generating the documentation), libusb-1.0.29, an MTA, + SQLite-3.50.4, texlive-20250308 (or install-tl-unx), fig2dev (for generating + documentation), and GNU adns +

+
+
+

+ Installation of GnuPG +

+

+ Install GnuPG by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+../configure --prefix=/usr        \
+             --localstatedir=/var \
+             --sysconfdir=/etc    \
+             --docdir=/usr/share/doc/gnupg-2.4.8 &&
+make &&
+
+makeinfo --html --no-split -I doc -o doc/gnupg_nochunks.html ../doc/gnupg.texi &&
+makeinfo --plaintext       -I doc -o doc/gnupg.txt           ../doc/gnupg.texi &&
+make -C doc html
+

+ If you have texlive-20250308 installed and + you wish to create documentation in the pdf format, issue the + following command: +

+
make -C doc pdf
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -m755 -d /usr/share/doc/gnupg-2.4.8/html            &&
+install -v -m644    doc/gnupg_nochunks.html \
+                    /usr/share/doc/gnupg-2.4.8/html/gnupg.html &&
+install -v -m644    ../doc/*.texi doc/gnupg.txt \
+                    /usr/share/doc/gnupg-2.4.8 &&
+install -v -m644    doc/gnupg.html/* \
+                    /usr/share/doc/gnupg-2.4.8/html
+

+ If you created the pdf format of the documentation, install + them using the following command as the root user: +

+
install -v -m644 doc/gnupg.pdf \
+                 /usr/share/doc/gnupg-2.4.8
+
+
+

+ Command Explanations +

+

+ mkdir build && cd + build: the Gnupg2 developers recommend to + build the package in a dedicated directory. +

+

+ --docdir=/usr/share/doc/gnupg-2.4.8: + This switch changes the default docdir to /usr/share/doc/gnupg-2.4.8. +

+

+ --enable-all-tests: This switch + allows more tests to be run with make check. +

+

+ --enable-g13: This switch enables + building the g13 program. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + addgnupghome, applygnupgdefaults, + dirmngr, dirmngr-client, g13 (optional), gpg-agent, + gpg-card, gpg-connect-agent, gpg, gpgconf, gpgparsemail, + gpgscm, gpgsm, gpgsplit, gpgtar, gpgv, gpg-wks-client, + gpg-wks-server, kbxutil, and watchgnupg +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/gnupg-2.4.8 and + /usr/share/gnupg +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addgnupghome +

+
+

+ is used to create and populate a user's + ~/.gnupg directories +

+
+

+ applygnupgdefaults +

+
+

+ is a wrapper script used to run gpgconf with the + --apply-defaults + parameter on all user's GnuPG home directories +

+
+

+ dirmngr +

+
+

+ is a tool that takes care of accessing the OpenPGP + keyservers +

+
+

+ dirmngr-client +

+
+

+ is a tool to contact a running dirmngr and test + whether a certificate has been revoked +

+
+

+ g13 +

+
+

+ is a tool to create, mount or unmount an encrypted + file system container (optional) +

+
+

+ gpg-agent +

+
+

+ is a daemon used to manage secret (private) keys + independently from any protocol. It is used as a + backend for gpg and + gpgsm + as well as for a couple of other utilities +

+
+

+ gpg-card +

+
+

+ is a tool to manage smart cards and tokens +

+
+

+ gpg-connect-agent +

+
+

+ is a utility used to communicate with a running + gpg-agent +

+
+

+ gpg +

+
+

+ is the OpenPGP part of the GNU Privacy Guard + (GnuPG). It is a tool used to provide digital + encryption and signing services using the OpenPGP + standard +

+
+

+ gpgconf +

+
+

+ is a utility used to automatically and reasonably + safely query and modify configuration files in the + ~/.gnupg home + directory. It is designed not to be invoked + manually by the user, but automatically by + graphical user interfaces +

+
+

+ gpgparsemail +

+
+

+ is a utility currently only useful for debugging. + Run it with --help for usage + information +

+
+

+ gpgscm +

+
+

+ executes the given scheme program or spawns an + interactive shell +

+
+

+ gpgsm +

+
+

+ is a tool similar to gpg used to + provide digital encryption and signing services on + X.509 certificates and the CMS protocol. It is + mainly used as a backend for S/MIME mail processing +

+
+

+ gpgsplit +

+
+

+ splits an OpenPGP message into packets +

+
+

+ gpgtar +

+
+

+ is a tool to encrypt or sign files into an archive +

+
+

+ gpgv +

+
+

+ is a verify only version of gpg +

+
+

+ gpg-wks-client +

+
+

+ is a client for the Web + Key Service protocol +

+
+

+ gpg-wks-server +

+
+

+ provides a server for the Web Key Service protocol +

+
+

+ kbxutil +

+
+

+ is used to list, export and import Keybox data +

+
+

+ watchgnupg +

+
+

+ is used to listen to a Unix Domain socket created + by any of the GnuPG tools +

+
+
+
+
+
+
+
+

+ GnuTLS-3.8.10 +

+
+
+
+
+
+

+ Introduction to GnuTLS +

+

+ The GnuTLS package contains + libraries and userspace tools which provide a secure layer + over a reliable transport layer. Currently the GnuTLS library implements the proposed + standards by the IETF's TLS working group. Quoting from the + TLS 1.3 protocol + specification : +

+

+ “ TLS allows + client/server applications to communicate over the Internet + in a way that is designed to prevent eavesdropping, + tampering, and message forgery. ” +

+

+ GnuTLS provides support for + TLS 1.3, TLS 1.2, TLS 1.1, TLS 1.0, and (optionally) SSL 3.0 + protocols. It also supports TLS extensions, including server + name and max record size. Additionally, the library supports + authentication using the SRP protocol, X.509 certificates, + and OpenPGP keys, along with support for the TLS + Pre-Shared-Keys (PSK) extension, the Inner Application + (TLS/IA) extension, and X.509 and OpenPGP certificate + handling. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/gnutls-3.8.10.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 803c6f5c9cbe55c64fbb46690d329a77 +

    +
  • +
  • +

    + Download size: 6.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 178 MB (add 111 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.6 SBU (add 1.4 SBU for tests; + both using parallelism=8) +

    +
  • +
+
+

+ GnuTLS Dependencies +

+
+ Required +
+

+ Nettle-3.10.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Brotli-1.1.0, Doxygen-1.14.0, + GTK-Doc-1.34.0, libidn-1.43 or libidn2-2.3.8, libseccomp-2.6.0, + Net-tools-2.10 (used during the test + suite), texlive-20250308 or install-tl-unx, Unbound-1.23.1 (to + build the DANE library), Valgrind-3.25.1 (used during the + test suite), autogen, cmocka and datefudge + (used during the test suite if the DANE library is built), + leancrypto, + and Trousers + (Trusted Platform Module support) +

+
+

+ Note +

+

+ Note that if you do not install libtasn1-4.20.0, a + version shipped in the GnuTLS tarball will be used instead. +

+
+
+
+

+ Installation of GnuTLS +

+

+ Install GnuTLS by running + the following commands: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/gnutls-3.8.10 \
+            --with-default-trust-store-pkcs11="pkcs11:" &&
+make
+

+ To test the results, now issue: make check. +

+

+ Now, install the package as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-default-trust-store-pkcs11="pkcs11:": + This switch tells gnutls to use the PKCS #11 trust store as + the default trust. Omit this switch if p11-kit-0.25.5 is not + installed. +

+

+ --with-default-trust-store-file=/etc/pki/tls/certs/ca-bundle.crt: + This switch tells configure where to find the + legacy CA certificate bundle and to use it instead of PKCS + #11 module by default. Use this if p11-kit-0.25.5 is not + installed. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+

+ --enable-openssl-compatibility: + Use this switch if you wish to build the OpenSSL + compatibility library. +

+

+ --without-p11-kit: Use this + switch if you have not installed p11-kit-0.25.5. +

+

+ --with-included-unistring: This + switch uses the bundled version of libunistring, instead of + the system one. Use this switch if you have not installed + libunistring-1.3. +

+

+ --disable-dsa: This switch + completely disables DSA algorithm support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + certtool, danetool, gnutls-cli, + gnutls-cli-debug, gnutls-serv, ocsptool, p11tool, + psktool, and srptool +
+
+ Installed Libraries: + libgnutls.so, libgnutls-dane.so, + libgnutlsxx.so, and libgnutls-openssl.so + (optional) +
+
+ Installed Directories: + /usr/include/gnutls and + /usr/share/doc/gnutls-3.8.10 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ certtool +

+
+

+ is used to generate X.509 certificates, certificate + requests, and private keys +

+
+

+ danetool +

+
+

+ is a tool used to generate and check DNS resource + records for the DANE protocol +

+
+

+ gnutls-cli +

+
+

+ is a simple client program to set up a TLS + connection to some other computer +

+
+

+ gnutls-cli-debug +

+
+

+ is a simple client program to set up a TLS + connection to some other computer and produces very + verbose progress results +

+
+

+ gnutls-serv +

+
+

+ is a simple server program that listens to incoming + TLS connections +

+
+

+ ocsptool +

+
+

+ is a program that can parse and print information + about OCSP requests/responses, generate requests + and verify responses +

+
+

+ p11tool +

+
+

+ is a program that allows handling data from PKCS + #11 smart cards and security modules +

+
+

+ psktool +

+
+

+ is a simple program that generates random keys for + use with TLS-PSK +

+
+

+ srptool +

+
+

+ is a simple program that emulates the programs in + the Stanford SRP (Secure Remote Password) libraries + using GnuTLS +

+
+

+ libgnutls.so +

+
+

+ contains the core API functions and X.509 + certificate API functions +

+
+
+
+
+
+
+
+

+ gpgme-2.0.0 +

+
+
+
+
+
+

+ Introduction to gpgme +

+

+ The gpgme 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 GnuPG or GpgSM + easier for applications. gpgme provides a high-level crypto API + for encryption, decryption, signing, signature verification + and key management. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-2.0.0.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 60f6871b948060572c7d952e39b42bd8 +

    +
  • +
  • +

    + Download size: 1.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 24 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests and + parallelism=4) +

    +
  • +
+
+

+ gpgme Dependencies +

+
+ Required +
+

+ libassuan-3.0.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of gpgme +

+

+ Install gpgme by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+../configure --prefix=/usr       \
+             --disable-static    &&
+make
+

+ To test the results, you should have GnuPG-2.4.8 installed. If + so, run: +

+
make -k check
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-gpg-test: Use this + switch if GnuPG-2.4.8 is not installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gpgme-json, and gpgme-tool +
+
+ Installed Libraries: + libgpgme.so +
+
+ Installed Directory: + /usr/share/common-lisp/source/gpgme +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ gpgme-json +

+
+

+ outputs gpgme + commands in JSON format +

+
+

+ gpgme-tool +

+
+

+ is an assuan server exposing gpgme operations, such as + printing fingerprints and keyids with keyservers +

+
+

+ libgpgme.so +

+
+

+ contains the gpgme + API functions +

+
+
+
+
+
+
+
+

+ gpgmepp-2.0.0 +

+
+
+
+
+
+

+ Introduction to gpgmepp +

+

+ The gpgmepp package provides + a C++ wrapper to gpgme-2.0.0. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gpgmepp Dependencies +

+
+ Required +
+

+ gpgme-2.0.0 +

+
+
+

+ Installation of gpgmepp +

+

+ Install gpgmepp by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libgpgmepp.so +
+
+ Installed Directory: + /usr/lib/cmake/Gpgmepp and + /usr/include/gpgme++ +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgpgmepp.so +

+
+

+ contains the C++ gpgme API functions +

+
+
+
+
+
+
+
+

+ iptables-1.8.11 +

+
+
+
+
+
+

+ Introduction to iptables +

+

+ iptables is a userspace + command line program used to configure the Linux 2.4 and + later kernel packet filtering ruleset. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ iptables Dependencies +

+
+ Optional +
+

+ libpcap-1.10.5 (required for BPF + compiler or nfsynproxy support), bpf-utils + (required for Berkeley Packet Filter support), libnfnetlink + (required for connlabel support), libnetfilter_conntrack + (required for connlabel support), and nftables +

+
+
+

+ Kernel + Configuration +

+

+ A firewall in Linux is accomplished through the netfilter + interface. To use iptables + to configure netfilter, the following kernel configuration + parameters are required: +

+
[*] Networking support --->                                                [NET]
+  Networking options --->
+    [*] Network packet filtering framework (Netfilter) --->          [NETFILTER]
+      [*] Advanced netfilter configuration                  [NETFILTER_ADVANCED]
+      Core Netfilter Configuration --->
+        <*/M> Netfilter connection tracking support               [NF_CONNTRACK]
+        <*/M> Netfilter Xtables support (required for ip_tables)
+                                                        ...  [NETFILTER_XTABLES]
+        <*/M>   LOG target support                     [NETFILTER_XT_TARGET_LOG]
+      IP: Netfilter Configuration --->
+        <*/M> IP tables support (required for filtering/masq/NAT)
+                                                           ...  [IP_NF_IPTABLES]
+

+ Include any connection tracking protocols that will be used, + as well as any protocols that you wish to use for match + support under the "Core Netfilter Configuration" section. The + above options are enough for running Creating a + Personal Firewall With iptables below. +

+
+
+

+ Installation of iptables +

+
+

+ Note +

+

+ The installation below does not include building some + specialized extension libraries which require the raw + headers in the Linux + source code. If you wish to build the additional extensions + (if you aren't sure, then you probably don't), you can look + at the INSTALL file to see an + example of how to change the KERNEL_DIR= parameter to + point at the Linux source + code. Note that if you upgrade the kernel version, you may + also need to recompile iptables and that the BLFS team has + not tested using the raw kernel headers. +

+
+

+ Install iptables by running + the following commands: +

+
./configure --prefix=/usr      \
+            --disable-nftables \
+            --enable-libipq    &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-nftables: + This switch disables building nftables compatibility. +

+

+ --enable-libipq: This + switch enables building of libipq.so which can be used by some + packages outside of BLFS. +

+

+ --enable-nfsynproxy: This switch + enables installation of nfsynproxy SYNPROXY configuration tool. +

+
+
+

+ Configuring iptables +

+
+

+ Note +

+

+ In the following example configurations, LAN1 is used for the + internal LAN interface, and WAN1 is used for the + external interface connected to the Internet. You will need + to replace these values with appropriate interface names + for your system. +

+
+
+
+
+
+

+ Personal Firewall +

+
+
+
+

+ A Personal Firewall is designed to let you access all the + services offered on the Internet while keeping your + computer secure and your data private. +

+

+ Below is a slightly modified version of Rusty Russell's + recommendation from the + Linux 2.4 Packet Filtering HOWTO. It is still + applicable to the Linux 6.x kernels. +

+
cat > /etc/rc.d/rc.iptables << "EOF"
+#!/bin/sh
+
+# Begin rc.iptables
+
+# Insert connection-tracking modules
+# (not needed if built into the kernel)
+modprobe nf_conntrack
+modprobe xt_LOG
+
+# Enable broadcast echo Protection
+echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
+
+# Disable Source Routed Packets
+echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
+echo 0 > /proc/sys/net/ipv4/conf/default/accept_source_route
+
+# Enable TCP SYN Cookie Protection
+echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+
+# Disable ICMP Redirect Acceptance
+echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects
+
+# Do not send Redirect Messages
+echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
+echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
+
+# Drop Spoofed Packets coming in on an interface, where responses
+# would result in the reply going out a different interface.
+echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
+echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
+
+# Log packets with impossible addresses.
+echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
+echo 1 > /proc/sys/net/ipv4/conf/default/log_martians
+
+# be verbose on dynamic ip-addresses  (not needed in case of static IP)
+echo 2 > /proc/sys/net/ipv4/ip_dynaddr
+
+# disable Explicit Congestion Notification
+# too many routers are still ignorant
+echo 0 > /proc/sys/net/ipv4/tcp_ecn
+
+# Set a known state
+iptables -P INPUT   DROP
+iptables -P FORWARD DROP
+iptables -P OUTPUT  DROP
+
+# These lines are here in case rules are already in place and the
+# script is ever rerun on the fly. We want to remove all rules and
+# pre-existing user defined chains before we implement new rules.
+iptables -F
+iptables -X
+iptables -Z
+
+iptables -t nat -F
+
+# Allow local-only connections
+iptables -A INPUT  -i lo -j ACCEPT
+
+# Free output on any interface to any ip for any service
+# (equal to -P ACCEPT)
+iptables -A OUTPUT -j ACCEPT
+
+# Permit answers on already established connections
+# and permit new connections related to established ones
+# (e.g. port mode ftp)
+iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
+
+# Drop any incoming MULTICAST or BROADCAST packet before logging:
+# The box outputs several of them when using netbios or mDNS, and those
+# appear immediately as incoming, which clutters the log.
+iptables -A INPUT -m addrtype --dst-type BROADCAST,MULTICAST -j DROP
+
+# Log everything else.
+iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT "
+
+# End $rc_base/rc.iptables
+EOF
+chmod 700 /etc/rc.d/rc.iptables
+

+ This script is quite simple, it drops all traffic coming + into your computer that wasn't initiated from your + computer, but as long as you are simply surfing the + Internet you are unlikely to exceed its limits. +

+

+ If you frequently encounter certain delays at accessing FTP + servers, take a look at BusyBox with iptables example number 4. +

+

+ Even if you have daemons or services running on your + system, these will be inaccessible everywhere but from your + computer itself. If you want to allow access to services on + your machine, such as ssh or ping, take a look at + Creating a BusyBox With iptables. +

+
+
+
+
+
+

+ Masquerading Router +

+
+
+
+

+ A Network Firewall has two interfaces, one connected to an + intranet, in this example LAN1, and one connected to + the Internet, here WAN1. To provide the + maximum security for the firewall itself, make sure that + there are no unnecessary servers running on it such as + X11. As a general + principle, the firewall itself should not access any + untrusted service (think of a remote server giving answers + that makes a daemon on your system crash, or even worse, + that implements a worm via a buffer-overflow). +

+
cat > /etc/rc.d/rc.iptables << "EOF"
+#!/bin/sh
+
+# Begin rc.iptables
+
+echo
+echo "You're using the example configuration for a setup of a firewall"
+echo "from Beyond Linux From Scratch."
+echo "This example is far from being complete, it is only meant"
+echo "to be a reference."
+echo "Firewall security is a complex issue, that exceeds the scope"
+echo "of the configuration rules below."
+echo "You can find additional information"
+echo "about firewalls in Chapter 4 of the BLFS book."
+echo "https://www.linuxfromscratch.org/blfs"
+echo
+
+# Insert iptables modules (not needed if built into the kernel).
+
+modprobe nf_conntrack
+modprobe nf_conntrack_ftp
+modprobe xt_conntrack
+modprobe xt_LOG
+modprobe xt_state
+
+# Enable broadcast echo Protection
+echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
+
+# Disable Source Routed Packets
+echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
+
+# Enable TCP SYN Cookie Protection
+echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+
+# Disable ICMP Redirect Acceptance
+echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
+
+# Don't send Redirect Messages
+echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
+
+# Drop Spoofed Packets coming in on an interface where responses
+# would result in the reply going out a different interface.
+echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
+
+# Log packets with impossible addresses.
+echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
+
+# Be verbose on dynamic ip-addresses  (not needed in case of static IP)
+echo 2 > /proc/sys/net/ipv4/ip_dynaddr
+
+# Disable Explicit Congestion Notification
+# Too many routers are still ignorant
+echo 0 > /proc/sys/net/ipv4/tcp_ecn
+
+# Set a known state
+iptables -P INPUT   DROP
+iptables -P FORWARD DROP
+iptables -P OUTPUT  DROP
+
+# These lines are here in case rules are already in place and the
+# script is ever rerun on the fly. We want to remove all rules and
+# pre-existing user defined chains before we implement new rules.
+iptables -F
+iptables -X
+iptables -Z
+
+iptables -t nat -F
+
+# Allow local connections
+iptables -A INPUT  -i lo -j ACCEPT
+iptables -A OUTPUT -o lo -j ACCEPT
+
+# Allow forwarding if the initiated on the intranet
+iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
+iptables -A FORWARD ! -i WAN1 -m conntrack --ctstate NEW       -j ACCEPT
+
+# Do masquerading
+# (not needed if intranet is not using private ip-addresses)
+iptables -t nat -A POSTROUTING -o WAN1 -j MASQUERADE
+
+# Log everything for debugging
+# (last of all rules, but before policy rules)
+iptables -A INPUT   -j LOG --log-prefix "FIREWALL:INPUT "
+iptables -A FORWARD -j LOG --log-prefix "FIREWALL:FORWARD "
+iptables -A OUTPUT  -j LOG --log-prefix "FIREWALL:OUTPUT "
+
+# Enable IP Forwarding
+echo 1 > /proc/sys/net/ipv4/ip_forward
+EOF
+chmod 700 /etc/rc.d/rc.iptables
+

+ With this script your intranet should be reasonably secure + against external attacks. No one should be able to setup a + new connection to any internal service and, if it's + masqueraded, makes your intranet invisible to the Internet. + Furthermore, your firewall should be relatively safe + because there are no services running that a cracker could + attack. +

+
+
+
+
+
+

+ BusyBox +

+
+
+
+

+ This scenario isn't too different from the Creating a Masquerading Router With + iptables, but additionally offers some services to your + intranet. Examples of this can be when you want to + administer your firewall from another host on your intranet + or use it as a proxy or a name server. +

+
+

+ Note +

+

+ Outlining specifically how to protect a server that + offers services on the Internet goes far beyond the scope + of this document. See the references in the + section called “Extra Information” for more + information. +

+
+

+ Be cautious. Every service you have enabled makes your + setup more complex and your firewall less secure. You are + exposed to the risks of misconfigured services or running a + service with an exploitable bug. A firewall should + generally not run any extra services. See the introduction + to the Creating a Masquerading Router With + iptables for some more details. +

+

+ If you want to add services such as internal Samba or name + servers that do not need to access the Internet themselves, + the additional statements are quite simple and should still + be acceptable from a security standpoint. Just add the + following lines into the script before the logging rules. +

+
iptables -A INPUT  -i ! WAN1  -j ACCEPT
+iptables -A OUTPUT -o ! WAN1  -j ACCEPT
+

+ If daemons, such as squid, have to access the Internet + themselves, you could open OUTPUT generally and restrict + INPUT. +

+
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
+iptables -A OUTPUT -j ACCEPT
+

+ However, it is generally not advisable to leave OUTPUT + unrestricted. You lose any control over trojans who would + like to "call home", and a bit of redundancy in case you've + (mis-)configured a service so that it broadcasts its + existence to the world. +

+

+ To accomplish this, you should restrict INPUT and OUTPUT on + all ports except those that it's absolutely necessary to + have open. Which ports you have to open depends on your + needs: mostly you will find them by looking for failed + accesses in your log files. +

+
+

+ Have a Look at the Following Examples: +

+
    +
  • +

    + Squid is caching the web: +

    +
    iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
    +iptables -A INPUT  -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED \
    +  -j ACCEPT
    +
  • +
  • +

    + Your caching name server (e.g., named) does its + lookups via UDP: +

    +
    iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
    +
  • +
  • +

    + You want to be able to ping your computer to ensure + it's still alive: +

    +
    iptables -A INPUT  -p icmp -m icmp --icmp-type echo-request -j ACCEPT
    +iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply   -j ACCEPT
    +
  • +
  • +

    + If you + are frequently accessing FTP servers or enjoy + chatting, you might notice delays because some + implementations of these daemons query an identd + daemon on your system to obtain usernames. Although + there's really little harm in this, having an identd + running is not recommended because many security + experts feel the service gives out too much + additional information. +

    +

    + To avoid these delays you could reject the requests + with a 'tcp-reset' response: +

    +
    iptables -A INPUT  -p tcp --dport 113 -j REJECT --reject-with tcp-reset
    +
  • +
  • +

    + To log and drop invalid packets (packets that came in + after netfilter's timeout or some types of network + scans) insert these rules at the top of the chain: +

    +
    iptables -I INPUT 0 -p tcp -m conntrack --ctstate INVALID \
    +  -j LOG --log-prefix "FIREWALL:INVALID "
    +iptables -I INPUT 1 -p tcp -m conntrack --ctstate INVALID -j DROP
    +
  • +
  • +

    + Anything coming from the outside should not have a + private address, this is a common attack called + IP-spoofing: +

    +
    iptables -A INPUT -i WAN1 -s 10.0.0.0/8     -j DROP
    +iptables -A INPUT -i WAN1 -s 172.16.0.0/12  -j DROP
    +iptables -A INPUT -i WAN1 -s 192.168.0.0/16 -j DROP
    +

    + There are other addresses that you may also want to + drop: 0.0.0.0/8, 127.0.0.0/8, 224.0.0.0/3 (multicast + and experimental), 169.254.0.0/16 (Link Local + Networks), and 192.0.2.0/24 (IANA defined test + network). +

    +
  • +
  • +

    + If your firewall is a DHCP client, you need to allow + those packets: +

    +
    iptables -A INPUT  -i WAN1 -p udp -s 0.0.0.0 --sport 67 \
    +   -d 255.255.255.255 --dport 68 -j ACCEPT
    +
  • +
  • +

    + To simplify debugging and be fair to anyone who'd + like to access a service you have disabled, purposely + or by mistake, you could REJECT those packets that + are dropped. +

    +

    + Obviously this must be done directly after logging as + the very last lines before the packets are dropped by + policy: +

    +
    iptables -A INPUT -j REJECT
    +
  • +
+
+

+ These are only examples to show you some of the + capabilities of the firewall code in Linux. Have a look at + the man page of iptables. There you will find much more + information. The port numbers needed for this can be found + in /etc/services, in case you + didn't find them by trial and error in your log file. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To set up the iptables firewall at boot, install the + /etc/rc.d/init.d/iptables + init script included in the blfs-bootscripts-20250225 package. +

+
make install-iptables
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ip6tables, ip6tables-apply, + ip6tables-legacy, ip6tables-legacy-restore, + ip6tables-legacy-save, ip6tables-restore, ip6tables-save, + iptables, iptables-apply, iptables-legacy, + iptables-legacy-restore, iptables-legacy-apply, + iptables-restore, iptables-save, iptables-xml, nfsynproxy + (optional), and xtables-multi +
+
+ Installed Libraries: + libip4tc.so, libip6tc.so, + libipq.so, libiptc.so, and libxtables.so +
+
+ Installed Directories: + /lib/xtables and + /usr/include/libiptc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ iptables +

+
+

+ is used to set up, maintain, and inspect the tables + of IP packet filter rules in the Linux kernel +

+
+

+ iptables-apply +

+
+

+ is a safer way to update iptables remotely +

+
+

+ iptables-legacy +

+
+

+ is used to interact with iptables using the legacy + command set +

+
+

+ iptables-legacy-restore +

+
+

+ is used to restore a set of legacy iptables rules +

+
+

+ iptables-legacy-save +

+
+

+ is used to save a set of legacy iptables rules +

+
+

+ iptables-restore +

+
+

+ is used to restore IP Tables from data specified on + STDIN. Use I/O redirection provided by your shell + to read from a file +

+
+

+ iptables-save +

+
+

+ is used to dump the contents of an IP Table in + easily parseable format to STDOUT. Use + I/O-redirection provided by your shell to write to + a file +

+
+

+ iptables-xml +

+
+

+ is used to convert the output of iptables-save to + an XML format. Using the iptables.xslt stylesheet converts + the XML back to the format of iptables-restore +

+
+

+ ip6tables* +

+
+

+ are a set of commands for IPV6 that parallel the + iptables commands above +

+
+

+ nfsynproxy +

+
+

+ (optional) configuration tool. SYNPROXY target + makes handling of large SYN floods possible without + the large performance penalties imposed by the + connection tracking in such cases +

+
+

+ xtables-multi +

+
+

+ is a binary that behaves according to the name it + is called by +

+
+
+
+
+
+
+
+

+ Setting Up a + Network Firewall +

+
+
+
+
+
+

+ Introduction to Firewall + Creation +

+

+ The purpose of a firewall is to protect a computer or a + network against malicious access. In a perfect world every + daemon or service, on every machine, is perfectly configured + and immune to security flaws, and all users are trusted + implicitly to use the equipment as intended. However, this is + rarely, if ever, the case. Daemons may be misconfigured, or + updates may not have been applied for known exploits against + essential services. Additionally, you may wish to choose + which services are accessible by certain machines or users, + or you may wish to limit which machines or applications are + allowed external access. Alternatively, you simply may not + trust some of your applications or users. For these reasons, + a carefully designed firewall should be an essential part of + system security. +

+

+ While a firewall can greatly limit the scope of the above + issues, do not assume that having a firewall makes careful + configuration redundant, or that any negligent + misconfiguration is harmless. A firewall does not prevent the + exploitation of any service you offer outside of it. Despite + having a firewall, you need to keep applications and daemons + properly configured and up to date. +

+
+
+

+ Meaning of the Word "Firewall" +

+

+ The word firewall can have several different meanings. +

+
+
+
+
+

+ Personal Firewall +

+
+
+
+

+ This is a hardware device or software program, intended to + secure a home or desktop computer connected to the + Internet. This type of firewall is highly relevant for + users who do not know how their computers might be accessed + via the Internet or how to disable that access, especially + if they are always online and connected via broadband + links. +

+

+ An example configuration for a personal firewall is + provided at Creating a Personal Firewall With + iptables. +

+
+
+
+
+
+

+ Masquerading Router +

+
+
+
+

+ This is a system placed between the Internet and an + intranet. To minimize the risk of compromising the firewall + itself, it should generally have only one role—that of + protecting the intranet. Although not completely risk-free, + the tasks of doing the routing and IP masquerading + (rewriting IP headers of the packets it routes from clients + with private IP addresses onto the Internet so that they + seem to come from the firewall itself) are commonly + considered relatively secure. +

+

+ An example configuration for a masquerading firewall is + provided at Creating a Masquerading Router + With iptables. +

+
+
+
+
+
+

+ BusyBox +

+
+
+
+

+ This is often an old computer you may have retired and + nearly forgotten, performing masquerading or routing + functions, but offering non-firewall services such as a + web-cache or mail. This may be used for home networks, but + is not to be considered as secure as a firewall only + machine because the combination of server and + router/firewall on one machine raises the complexity of the + setup. +

+

+ An example configuration for a BusyBox is provided at + Creating a BusyBox With iptables. +

+
+
+
+
+
+

+ Firewall with a + Demilitarized Zone +

+
+
+
+

+ This type of firewall performs masquerading or routing, but + grants public access to some branch of your network that is + physically separated from your regular intranet and is + essentially a separate network with direct Internet access. + The servers on this network are those which must be easily + accessible from both the Internet and intranet. The + firewall protects both networks. This type of firewall has + a minimum of three network interfaces. +

+
+
+
+
+
+

+ Packetfilter +

+
+
+
+

+ This type of firewall does routing or masquerading but does + not maintain a state table of ongoing communication + streams. It is fast but quite limited in its ability to + block undesired packets without blocking desired packets. +

+
+
+
+

+ Conclusion +

+
+

+ Caution +

+

+ The example configurations provided for iptables-1.8.11 are not intended to + be a complete guide to securing systems. Firewalling is a + complex issue that requires careful configuration. The + configurations provided by BLFS are intended only to give + examples of how a firewall works. They are not intended to + fit any particular configuration and may not provide + complete protection from an attack. +

+
+

+ BLFS provides a utility to manage the kernel Netfilter + interface, iptables-1.8.11. It has been around + since early 2.4 kernels, and has been the standard since. + This is likely the set of tools that will be most familiar to + existing admins. Other tools have been developed more + recently, see the list of further readings below for more + details. Here you will find a list of URLs that contain + comprehensive information about building firewalls and + further securing your system. +

+
+ +
+
+
+
+

+ libcap-2.76 with + PAM +

+
+
+
+
+
+

+ Introduction to libcap with PAM +

+

+ The libcap package was + installed in LFS, but if Linux-PAM support is desired, the PAM + module must be built (after installation of Linux-PAM). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libcap Dependencies +

+
+ Required +
+

+ Linux-PAM-1.7.1 +

+
+
+

+ Installation of libcap +

+
+

+ Note +

+

+ If you are upgrading libcap from a previous version, use + the instructions in LFS + libcap page to upgrade libcap. If Linux-PAM-1.7.1 + has been built, the PAM module will automatically be built + too. +

+
+

+ Install libcap by running + the following commands: +

+
make -C pam_cap
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -v -m755 pam_cap/pam_cap.so      /usr/lib/security &&
+install -v -m644 pam_cap/capability.conf /etc/security
+
+
+

+ Configuring Libcap +

+

+ In order to allow Linux-PAM + to grant privileges based on POSIX capabilities, you need to + add the libcap module to the beginning of the /etc/pam.d/system-auth file. Make the + required edits with the following commands: +

+
mv -v /etc/pam.d/system-auth{,.bak} &&
+cat > /etc/pam.d/system-auth << "EOF" &&
+# Begin /etc/pam.d/system-auth
+
+auth      optional    pam_cap.so
+EOF
+tail -n +3 /etc/pam.d/system-auth.bak >> /etc/pam.d/system-auth
+

+ Additionally, you'll need to modify the /etc/security/capability.conf file to grant + necessary privileges to users, and utilize the setcap utility to set + capabilities on specific utilities as needed. See + man 8 setcap + and man 3 + cap_from_text for additional information. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + pam_cap.so +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ Linux-PAM-1.7.1 +

+
+
+
+
+
+

+ Introduction to Linux PAM +

+

+ The Linux PAM package + contains Pluggable Authentication Modules used by the local + system administrator to control how application programs + authenticate users. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+

+ Optional Documentation +

+ +
+

+ Linux PAM Dependencies +

+
+ Optional +
+

+ libnsl-2.0.1, libtirpc-1.3.6, + rpcsvc-proto-1.4.4, + Berkeley DB (deprecated), libaudit, + and libeconf +

+
+ Optional (To build the Documentation + and Man Pages) +
+

+ docbook-xml-5.0, docbook-xsl-ns-1.79.2, fop-2.11 (for the PDF + format), libxslt-1.1.43, and Lynx-2.9.2 (for the plain + text format) +

+
+

+ Note +

+

+ Shadow-4.18.0 must be reinstalled and reconfigured after + installing and configuring Linux + PAM. +

+ +
+
+
+

+ Kernel + Configuration +

+

+ For the PAM module pam_loginuid.so (referred by the PAM + configuration file system-session if elogind-255.17 is built later) to + work, a kernel configuration parameter need to be set or the + module will just do nothing: +

+
General setup --->
+  [*] Auditing support                                                   [AUDIT]
+
+
+

+ Installation of Linux PAM +

+

+ If you've installed docbook-xml-5.0, docbook-xsl-ns-1.79.2, libxslt-1.1.43, and Lynx-2.9.2 and you wish + to generate the plain text format of the documentations, + modify meson.build to use + Lynx-2.9.2 instead of W3m or Elinks that + BLFS does not provide: +

+
sed -e "s/'elinks'/'lynx'/"                       \
+    -e "s/'-no-numbering', '-no-references'/      \
+          '-force-html', '-nonumbers', '-stdin'/" \
+    -i meson.build
+

+ Compile and link Linux PAM + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..        \
+  --prefix=/usr       \
+  --buildtype=release \
+  -D docdir=/usr/share/doc/Linux-PAM-1.7.1 &&
+
+ninja
+

+ To test the results, a suitable /etc/pam.d/other configuration file must + exist. +

+
+

+ Reinstallation or Upgrade of Linux PAM +

+

+ If you have a system with Linux PAM installed and working, + be careful when modifying the files in /etc/pam.d, since your system may become + totally unusable. If you want to run the tests, you do not + need to create another /etc/pam.d/other file. The existing file + can be used for the tests. +

+

+ You should also be aware that ninja install overwrites + the configuration files in /etc/security as well as /etc/environment. If you have modified + those files, be sure to back them up. +

+
+

+ For a first-time installation, create a configuration file by + issuing the following commands as the root user: +

+
install -v -m755 -d /etc/pam.d &&
+
+cat > /etc/pam.d/other << "EOF"
+auth     required       pam_deny.so
+account  required       pam_deny.so
+password required       pam_deny.so
+session  required       pam_deny.so
+EOF
+

+ Now run the tests by issuing ninja test. Be sure the + tests produced no errors before continuing the installation. +

+

+ For a first-time installation, remove the configuration file + created earlier by issuing the following command as the + root user: +

+
rm -fv /etc/pam.d/other
+

+ Now, as the root user: +

+
ninja install &&
+chmod -v 4755 /usr/sbin/unix_chkpwd
+

+ Now remove an unneeded directory as root: +

+
rm -rf /usr/lib/systemd
+

+ If you do not have the optional dependencies installed to + build the documentation and downloaded the optional pre-built + documentation, again as the root user: +

+
tar -C / -xvf ../../Linux-PAM-1.7.1-docs.tar.xz
+
+
+

+ Configuring Linux-PAM +

+
+
+
+
+

+ Configuration Files +

+
+
+
+

+ /etc/security/* and + /etc/pam.d/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Configuration information is placed in /etc/pam.d/. Here is a sample file: +

+
# Begin /etc/pam.d/other
+
+auth            required        pam_unix.so     nullok
+account         required        pam_unix.so
+session         required        pam_unix.so
+password        required        pam_unix.so     nullok
+
+# End /etc/pam.d/other
+

+ Now create some generic configuration files. As the + root user: +

+
install -vdm755 /etc/pam.d &&
+cat > /etc/pam.d/system-account << "EOF" &&
+# Begin /etc/pam.d/system-account
+
+account   required    pam_unix.so
+
+# End /etc/pam.d/system-account
+EOF
+
+cat > /etc/pam.d/system-auth << "EOF" &&
+# Begin /etc/pam.d/system-auth
+
+auth      required    pam_unix.so
+
+# End /etc/pam.d/system-auth
+EOF
+
+cat > /etc/pam.d/system-session << "EOF" &&
+# Begin /etc/pam.d/system-session
+
+session   required    pam_unix.so
+
+# End /etc/pam.d/system-session
+EOF
+
+cat > /etc/pam.d/system-password << "EOF"
+# Begin /etc/pam.d/system-password
+
+# 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
+
+

+ If you wish to enable strong password support, install + libpwquality-1.4.5, and follow the + instructions on that page to configure the pam_pwquality + PAM module with strong password support. +

+

+ Next, add a restrictive /etc/pam.d/other configuration file. With + this file, programs that are PAM aware will not run unless + a configuration file specifically for that application + exists. +

+
cat > /etc/pam.d/other << "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
+

+ The PAM man page + (man pam) + provides a good starting point to learn about the several + fields, and allowable entries. The Linux-PAM System + Administrators' Guide at /usr/share/doc/Linux-PAM-1.7.0/Linux-PAM_SAG.txt + is recommended for additional information. +

+
+

+ Important +

+

+ You should now reinstall the Shadow-4.18.0 + package . +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + faillock, mkhomedir_helper, + pam_namespace_helper, pam_timestamp_check, + pwhistory_helper, unix_chkpwd and unix_update +
+
+ Installed Libraries: + libpam.so, libpamc.so and + libpam_misc.so +
+
+ Installed Directories: + /etc/security, /usr/lib/security, + /usr/include/security and + /usr/share/doc/Linux-PAM-1.7.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ faillock +

+
+

+ displays and modifies the authentication failure + record files +

+
+

+ mkhomedir_helper +

+
+

+ is a helper binary that creates home directories +

+
+

+ pam_namespace_helper +

+
+

+ is a helper program used to configure a private + namespace for a user session +

+
+

+ pwhistory_helper +

+
+

+ is a helper program that transfers password hashes + from passwd or shadow to opasswd +

+
+

+ pam_timestamp_check +

+
+

+ is used to check if the default timestamp is valid +

+
+

+ unix_chkpwd +

+
+

+ is a helper binary that verifies the password of + the current user +

+
+

+ unix_update +

+
+

+ is a helper binary that updates the password of a + given user +

+
+

+ libpam.so +

+
+

+ provides the interfaces between applications and + the PAM modules +

+
+
+
+
+
+
+
+

+ liboauth-1.0.3 +

+
+
+
+
+
+

+ Introduction to liboauth +

+

+ liboauth is a collection of + POSIX-C functions implementing the OAuth Core RFC 5849 + standard. Liboauth provides functions to escape and encode + parameters according to OAuth specification and offers + high-level functionality to sign requests or verify OAuth + signatures as well as perform HTTP requests. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ liboauth Dependencies +

+
+ Required +
+

+ cURL-8.15.0 +

+
+ Optional +
+

+ nss-3.115 + and Doxygen-1.14.0 (to build documentation) +

+
+
+

+ Installation of liboauth +

+

+ Apply a patch for the current version of openssl: +

+
patch -Np1 -i ../liboauth-1.0.3-openssl-1.1.0-3.patch
+

+ Install liboauth by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you wish to build the documentation (needs Doxygen-1.14.0), + issue: +

+
make dox
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you have previously built the documentation, install it by + running the following commands as the root user: +

+
install -v -dm755 /usr/share/doc/liboauth-1.0.3 &&
+cp -rv doc/html/* /usr/share/doc/liboauth-1.0.3
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-nss: Use this switch if + you want to use Mozilla NSS instead of OpenSSL. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + liboauth.so +
+
+ Installed Directories: + /usr/share/doc/liboauth-1.0.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ liboauth.so +

+
+

+ provides functions to escape and encode strings + according to OAuth specifications and offers + high-level functionality built on top to sign + requests or verify signatures using either NSS or + OpenSSL for calculating the hash/signatures +

+
+
+
+
+
+
+
+

+ libpwquality-1.4.5 +

+
+
+
+
+
+

+ Introduction to libpwquality +

+

+ The libpwquality 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libpwquality Dependencies +

+
+ Required +
+

+ CrackLib-2.10.3 +

+
+ Recommended +
+ +
+
+

+ Installation of libpwquality +

+

+ Install libpwquality by + running the following commands: +

+
./configure --prefix=/usr                      \
+            --disable-static                   \
+            --with-securedir=/usr/lib/security \
+            --disable-python-bindings          &&
+make &&
+pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD/python
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+pip3 install --no-index --find-links dist --no-user pwquality
+
+
+

+ Command Explanations +

+

+ --disable-python-bindings: This + parameter disables building Python bindings with the + deprecated python3 setup.py + build command. The explicit instruction to + build the Python 3 binding with the pip3 wheel command is + provided. +

+
+
+

+ Configuring libpwquality +

+

+ libpwquality is intended to + be a functional replacement for the now-obsolete pam_cracklib.so PAM module. To configure + the system to use the pam_pwquality module, execute the following + commands as the root user: +

+
mv /etc/pam.d/system-password{,.orig} &&
+cat > /etc/pam.d/system-password << "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
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pwscore and pwmake +
+
+ Installed Libraries: + pam_pwquality.so and + libpwquality.so +
+
+ Installed Directories: + /usr/lib/python3.11/site-packages/pwquality-1.4.5.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ pwmake +

+
+

+ is a simple configurable tool for generating random + and relatively easily pronounceable passwords +

+
+

+ pwscore +

+
+

+ is a simple tool for checking quality of a password +

+
+

+ libpwquality.so +

+
+

+ contains API functions for checking the password + quality +

+
+

+ pam_pwquality.so +

+
+

+ is a Linux PAM + module used to perform password quality checking +

+
+
+
+
+
+
+
+

+ MIT Kerberos V5-1.22.1 +

+
+
+
+
+
+

+ Introduction to MIT Kerberos V5 +

+

+ MIT Kerberos V5 is a free + implementation of Kerberos 5. Kerberos is a network + authentication protocol. It centralizes the authentication + database and uses kerberized applications to work with + servers or services that support Kerberos allowing single + logins and encrypted communication over internal networks or + the Internet. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://kerberos.org/dist/krb5/1.22/krb5-1.22.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 8f841cea186ef6856ea6c2a063091861 +

    +
  • +
  • +

    + Download size: 8.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 135 MB (add 15 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (Using parallelism=4; add + 3.8 SBU for tests) +

    +
  • +
+
+

+ MIT + Kerberos V5 Dependencies +

+
+ Optional +
+

+ BIND Utilities-9.20.12, + CrackLib-2.10.3 (/usr/share/dict/words referred by some + tests), keyutils-1.6.3, OpenLDAP-2.6.10, + Valgrind-3.25.1 (used during the test + suite), yasm-1.3.0, libedit, cmocka, kdcproxy, pyrad, and + resolv_wrapper +

+
+

+ Note +

+

+ Some sort of time synchronization facility on your system + (like ntp-4.2.8p18) is required since Kerberos + won't authenticate if there is a time difference between a + kerberized client and the KDC server. +

+
+
+
+

+ Installation of MIT Kerberos V5 +

+

+ Build MIT Kerberos V5 by + running the following commands: +

+
cd src &&
+sed -i -e '/eq 0/{N;s/12 //}' plugins/kdb/db2/libdb2/test/run.test &&
+
+./configure --prefix=/usr            \
+            --sysconfdir=/etc        \
+            --localstatedir=/var/lib \
+            --runstatedir=/run       \
+            --with-system-et         \
+            --with-system-ss         \
+            --with-system-verto=no   \
+            --enable-dns-for-realm   \
+            --disable-rpath          &&
+make
+

+ To test the build, issue: make + -j1 -k check. Some tests may fail with the + latest version of dejagnu and glibc. Some tests may hang for + a long time and fail if the system is not connected to a + network. One test, t_kadm5srv, + is known to fail. If keyutils-1.6.3 is installed but + Keyutils Kernel Configuration is + not satisfied, some tests will fail complaining keyctl failed with code 1. +

+

+ Now, as the root user: +

+
make install &&
+cp -vfr ../doc -T /usr/share/doc/krb5-1.22.1
+
+
+

+ Command Explanations +

+

+ The sed command + removes a test that is known to fail. +

+

+ --localstatedir=/var/lib: This + option is used so that the Kerberos variable runtime data is + located in /var/lib instead of + /usr/var. +

+

+ --runstatedir=/run: + This option is used so that the Kerberos runtime state + information is located in /run + instead of the deprecated /var/run. +

+

+ --with-system-et: + This switch causes the build to use the system-installed + versions of the error-table support software. +

+

+ --with-system-ss: + This switch causes the build to use the system-installed + versions of the subsystem command-line interface software. +

+

+ --with-system-verto=no: This + switch fixes a bug in the package where the build system does + not recognize its own verto library if this package has been + installed before. This is not a problem if you are + reinstalling the same version, but can be problematic if you + are updating because the old version of the verto library + will be used instead of installing the newer version. +

+

+ --enable-dns-for-realm: This + switch allows realms to be resolved using the DNS server. +

+

+ --disable-rpath: This + switch prevents hard coding library search paths (rpath) into + the binary executable files and 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. +

+

+ --with-ldap: Use this switch if + you want to compile the OpenLDAP database backend module. +

+
+
+

+ Configuring MIT Kerberos V5 +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/krb5.conf and + /var/lib/krb5kdc/kdc.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+
+
+
+
+
+ Kerberos Configuration +
+
+
+
+
+

+ Tip +

+

+ You should consider installing some sort of password + checking dictionary so that you can configure the + installation to only accept strong passwords. A + suitable dictionary to use is installed in the + CrackLib-2.10.3 instructions. + Note that only one file can be used, but you can + concatenate many files into one. The configuration file + shown below assumes you have installed a dictionary to + /usr/share/dict/words. +

+
+

+ Create the Kerberos configuration file with the following + commands issued by the root user: +

+
cat > /etc/krb5.conf << "EOF"
+# Begin /etc/krb5.conf
+
+[libdefaults]
+    default_realm = <EXAMPLE.ORG>
+    encrypt = true
+
+[realms]
+    <EXAMPLE.ORG> = {
+        kdc = <belgarath.example.org>
+        admin_server = <belgarath.example.org>
+        dict_file = /usr/share/dict/words
+    }
+
+[domain_realm]
+    .<example.org> = <EXAMPLE.ORG>
+
+[logging]
+    kdc = SYSLOG:INFO:AUTH
+    admin_server = SYSLOG:INFO:AUTH
+    default = SYSLOG:DEBUG:DAEMON
+
+# End /etc/krb5.conf
+EOF
+

+ You will need to substitute your domain and proper + hostname for the occurrences of the <belgarath> and + <example.org> + names. +

+

+ default_realm should be the + name of your domain changed to ALL CAPS. This isn't + required, but both Heimdal and MIT recommend it. +

+

+ encrypt = true provides + encryption of all traffic between kerberized clients and + servers. It's not necessary and can be left off. If you + leave it off, you can encrypt all traffic from the client + to the server using a switch on the client program + instead. +

+

+ The [realms] parameters tell + the client programs where to look for the KDC + authentication services. +

+

+ The [domain_realm] section + maps a domain to a realm. +

+

+ Next, create the KDC database: +

+
kdb5_util create -r <EXAMPLE.ORG> -s
+

+ Now, you should populate the database with principals + (users). For now, just use your regular login name or + root. +

+
kadmin.local
+kadmin.local: add_policy dict-only
+kadmin.local: addprinc -policy dict-only <loginname>
+

+ The KDC server and any machine running kerberized server + daemons must have a host key installed: +

+
kadmin.local: addprinc -randkey host/<belgarath.example.org>
+

+ After choosing the defaults when prompted, you will have + to export the data to a keytab file: +

+
kadmin.local: ktadd host/<belgarath.example.org>
+

+ This should have created a file in /etc named krb5.keytab (Kerberos 5). This file + should have 600 (root rw + only) permissions. Keeping the keytab files from public + access is crucial to the overall security of the Kerberos + installation. +

+

+ Exit the kadmin program (use + quit or + exit) and + return back to the shell prompt. Start the KDC daemon + manually, just to test out the installation: +

+
/usr/sbin/krb5kdc
+

+ Attempt to get a ticket with the following command: +

+
kinit <loginname>
+

+ You will be prompted for the password you created. After + you get your ticket, you can list it with the following + command: +

+
klist
+

+ Information about the ticket should be displayed on the + screen. +

+

+ To test the functionality of the keytab file, issue the + following command as the root user: +

+
ktutil
+ktutil: rkt /etc/krb5.keytab
+ktutil: l
+

+ This should dump a list of the host principal, along with + the encryption methods used to access the principal. +

+

+ Create an empty ACL file that can be modified later: +

+
touch /var/lib/krb5kdc/kadm5.acl
+

+ At this point, if everything has been successful so far, + you can feel fairly confident in the installation and + configuration of the package. +

+
+
+
+
+
+
+ Additional Information +
+
+
+
+

+ For additional information consult the + documentation for krb5-1.22.1 on which the above + instructions are based. +

+
+
+
+
+
+
+

+ Init + Script +

+
+
+
+

+ If you want to start Kerberos services at boot, install the + /etc/rc.d/init.d/krb5 init + script included in the blfs-bootscripts-20250225 + package using the following command: +

+
make install-krb5
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gss-client, gss-server, k5srvutil, + kadmin, kadmin.local, kadmind, kdb5_ldap_util (optional), + kdb5_util, kdestroy, kinit, klist, kpasswd, kprop, + kpropd, kproplog, krb5-config, krb5-send-pr, krb5kdc, + ksu, kswitch, ktutil, kvno, sclient, sim_client, + sim_server, sserver, uuclient, and uuserver +
+
+ Installed Libraries: + libgssapi_krb5.so, libgssrpc.so, + libk5crypto.so, libkadm5clnt_mit.so, libkadm5clnt.so, + libkadm5srv_mit.so, libkadm5srv.so, libkdb_ldap.so + (optional), libkdb5.so, libkrad.so, libkrb5.so, + libkrb5support.so, libverto.so, and some plugins under + the /usr/lib/krb5 tree +
+
+ Installed Directories: + /usr/include/{gssapi,gssrpc,kadm5,krb5}, + /usr/lib/krb5, + /usr/share/{doc/krb5-1.22.1,examples/krb5}, + /var/lib/krb5kdc, and /run/krb5kdc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gss-client +

+
+

+ is a GSSAPI test client +

+
+

+ gss-server +

+
+

+ is a GSSAPI test server +

+
+

+ k5srvutil +

+
+

+ is a host keytable manipulation utility +

+
+

+ kadmin +

+
+

+ is a utility used to make modifications to the + Kerberos database +

+
+

+ kadmin.local +

+
+

+ is a utility similar to kadmin, but if + the database is db2, the local client kadmin.local, is + intended to run directly on the master KDC without + Kerberos authentication +

+
+

+ kadmind +

+
+

+ is a server for administrative access to a Kerberos + database +

+
+

+ kdb5_ldap_util + (optional) +

+
+

+ allows an administrator to manage realms, Kerberos + services and ticket policies +

+
+

+ kdb5_util +

+
+

+ is the KDC database utility +

+
+

+ kdestroy +

+
+

+ removes the current set of tickets +

+
+

+ kinit +

+
+

+ is used to authenticate to the Kerberos server as a + principal and acquire a ticket granting ticket that + can later be used to obtain tickets for other + services +

+
+

+ klist +

+
+

+ reads and displays the current tickets in the + credential cache +

+
+

+ kpasswd +

+
+

+ is a program for changing Kerberos 5 passwords +

+
+

+ kprop +

+
+

+ takes a principal database in a specified format + and converts it into a stream of database records +

+
+

+ kpropd +

+
+

+ receives a database sent by kprop and writes + it as a local database +

+
+

+ kproplog +

+
+

+ displays the contents of the KDC database update + log to standard output +

+
+

+ krb5-config +

+
+

+ provides information about how to link programs + against the Kerberos + 5 libraries +

+
+

+ krb5kdc +

+
+

+ is the Kerberos 5 + server +

+
+

+ krb5-send-pr +

+
+

+ sends a problem report (PR) to a central support + site +

+
+

+ ksu +

+
+

+ is the super user program using the Kerberos + protocol. It requires a properly configured + /etc/shells and + ~/.k5login containing + principals authorized to become super users +

+
+

+ kswitch +

+
+

+ makes the specified credential cache the primary + cache for the collection, if a cache collection is + available +

+
+

+ ktutil +

+
+

+ is a program for managing Kerberos keytabs +

+
+

+ kvno +

+
+

+ prints keyversion numbers of Kerberos principals +

+
+

+ sclient +

+
+

+ is used to contact a sample server and authenticate + to it using Kerberos 5 tickets, and then display + the server's response +

+
+

+ sim_client +

+
+

+ is a simple UDP-based sample client program for + demonstration purposes +

+
+

+ sim_server +

+
+

+ is a simple UDP-based server application for + demonstration purposes +

+
+

+ sserver +

+
+

+ is a sample Kerberos 5 server +

+
+

+ uuclient +

+
+

+ is another sample client +

+
+

+ uuserver +

+
+

+ is another sample server +

+
+

+ libgssapi_krb5.so +

+
+

+ contains the Generic Security Service Application + Programming Interface (GSSAPI) functions which + provide security services to callers in a generic + fashion, supportable with a range of underlying + mechanisms and technologies and hence allowing + source-level portability of applications to + different environments +

+
+

+ libkadm5clnt.so +

+
+

+ contains the administrative authentication and + password checking functions required by Kerberos 5 + client-side programs +

+
+

+ libkadm5srv.so +

+
+

+ contains the administrative authentication and + password checking functions required by Kerberos 5 + servers +

+
+

+ libkdb5.so +

+
+

+ is a Kerberos 5 authentication/authorization + database access library +

+
+

+ libkrad.so +

+
+

+ contains the internal support library for RADIUS + functionality +

+
+

+ libkrb5.so +

+
+

+ is an all-purpose Kerberos 5 library +

+
+
+
+
+
+
+
+

+ Nettle-3.10.2 +

+
+
+
+
+
+

+ Introduction to Nettle +

+

+ The Nettle package contains + a low-level cryptographic library that is designed to fit + easily in many contexts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/nettle/nettle-3.10.2.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: b28bcbf6f045ff007940a9401673600d +

    +
  • +
  • +

    + Download size: 2.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 102 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests; both using + parallelism=4) +

    +
  • +
+
+

+ Nettle Dependencies +

+
+ Optional +
+

+ Valgrind-3.25.1 (optional for the + tests) +

+
+
+

+ Installation of Nettle +

+

+ Install Nettle by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+chmod   -v   755 /usr/lib/lib{hogweed,nettle}.so &&
+install -v -m755 -d /usr/share/doc/nettle-3.10.2 &&
+install -v -m644 nettle.{html,pdf} /usr/share/doc/nettle-3.10.2
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + nettle-hash, nettle-lfib-stream, + nettle-pbkdf2, pkcs1-conv and sexp-conv +
+
+ Installed Libraries: + libhogweed.so and + libnettle.so +
+
+ Installed Directory: + /usr/include/nettle and + /usr/share/doc/nettle-3.10.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ nettle-hash +

+
+

+ calculates a hash value using a specified algorithm +

+
+

+ nettle-lfib-stream +

+
+

+ 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 +

+
+

+ nettle-pbkdf2 +

+
+

+ 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. +

+
+

+ pkcs1-conv +

+
+

+ converts private and public RSA keys from PKCS #1 + format to sexp format +

+
+

+ sexp-conv +

+
+

+ converts an s-expression to a different encoding +

+
+
+
+
+
+
+
+

+ NSS-3.115 +

+
+
+
+
+
+

+ Introduction to NSS +

+

+ The Network Security Services (NSS) package is a set of libraries + designed to support cross-platform development of + security-enabled client and server applications. Applications + built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS + #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and + other security standards. This is useful for implementing SSL + and S/MIME or other Internet security standards into an + application. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ NSS + Dependencies +

+
+ Required +
+

+ NSPR-4.37 +

+
+ Recommended +
+ +
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/nss +

+
+
+

+ Installation of NSS +

+

+ Install NSS by running the + following commands: +

+
patch -Np1 -i ../nss-standalone-1.patch &&
+
+cd nss &&
+
+make BUILD_OPT=1                      \
+  NSPR_INCLUDE_DIR=/usr/include/nspr  \
+  USE_SYSTEM_ZLIB=1                   \
+  ZLIB_LIBS=-lz                       \
+  NSS_ENABLE_WERROR=0                 \
+  $([ $(uname -m) = x86_64 ] && echo USE_64=1) \
+  $([ -f /usr/include/sqlite3.h ] && echo NSS_USE_SYSTEM_SQLITE=1)
+

+ To run the tests, execute the following commands: +

+
cd tests &&
+HOST=localhost DOMSUF=localdomain ./all.sh
+cd ../
+
+

+ Note +

+

+ Some information about the tests: +

+
+
    +
  • +

    + HOST=localhost and DOMSUF=localdomain are required. + Without these variables, a FQDN is required to be + specified and this generic way should work for + everyone, provided localhost.localdomain is defined + in /etc/hosts, as done in + the LFS book. +

    +
  • +
  • +

    + The tests take a long time to run. If desired there + is information in the all.sh script about running + subsets of the total test suite. +

    +
  • +
  • +

    + When interrupting the tests, the test suite fails to + spin down test servers that are run. This leads to an + infinite loop in the tests where the test suite tries + to kill a server that doesn't exist anymore because + it pulls the wrong PID. +

    +
  • +
  • +

    + Test suite results (in HTML format!) can be found at + ../../test_results/security/localhost.1/results.html +

    +
  • +
  • +

    + A few tests might fail on some Intel machines for + unknown reasons. +

    +
  • +
+
+
+

+ Now, as the root user: +

+
cd ../dist                                                          &&
+
+install -v -m755 Linux*/lib/*.so              /usr/lib              &&
+install -v -m644 Linux*/lib/{*.chk,libcrmf.a} /usr/lib              &&
+
+install -v -m755 -d                           /usr/include/nss      &&
+cp -v -RL {public,private}/nss/*              /usr/include/nss      &&
+
+install -v -m755 Linux*/bin/{certutil,nss-config,pk12util} /usr/bin &&
+
+install -v -m644 Linux*/lib/pkgconfig/nss.pc  /usr/lib/pkgconfig
+
+
+

+ Command Explanations +

+

+ BUILD_OPT=1: This + option is passed to make so that the build is + performed with no debugging symbols built into the binaries + and the default compiler optimizations are used. +

+

+ NSPR_INCLUDE_DIR=/usr/include/nspr: + This option sets the location of the nspr headers. +

+

+ USE_SYSTEM_ZLIB=1: + This option is passed to make to ensure that the + libssl3.so library is linked to + the system installed zlib + instead of the in-tree version. +

+

+ ZLIB_LIBS=-lz: This + option provides the linker flags needed to link to the system + zlib. +

+

+ $([ $(uname -m) = x86_64 ] + && echo USE_64=1): The USE_64=1 option is required on x86_64, otherwise + make will try + (and fail) to create 32-bit objects. The [ $(uname -m) = + x86_64 ] test ensures it has no effect on a 32 bit system. +

+

+ ([ -f /usr/include/sqlite3.h ] + && echo NSS_USE_SYSTEM_SQLITE=1): + This tests if sqlite is + installed and if so it echos the option + NSS_USE_SYSTEM_SQLITE=1 to make so that libsoftokn3.so will link against the system + version of sqlite. +

+

+ NSS_DISABLE_GTESTS=1: If you + don't need to run NSS test suite, append this option to + make command, + to prevent the compilation of tests and save some build time. +

+
+
+

+ Configuring NSS +

+

+ If p11-kit-0.25.5 is installed, the + p11-kit trust module + (/usr/lib/pkcs11/p11-kit-trust.so) can be + used as a drop-in replacement for /usr/lib/libnssckbi.so to transparently + make the system CAs available to NSS aware applications, rather than the + static library provided by /usr/lib/libnssckbi.so. As the root user, execute the following command: +

+
ln -sfv ./pkcs11/p11-kit-trust.so /usr/lib/libnssckbi.so
+

+ Additionally, for dependent applications that do not use the + internal database (/usr/lib/libnssckbi.so), the /usr/sbin/make-ca script included on the + make-ca-1.16.1 page can generate a + system wide NSS DB with the -n switch, or by modifying the + /etc/make-ca/make-ca.conf file. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + certutil, nss-config, and + pk12util +
+
+ Installed Libraries: + libcrmf.a, libfreebl3.so, + libfreeblpriv3.so, libnss3.so, libnssckbi.so, + libnssckbi-testlib.so, libnssdbm3.so, libnsssysinit.so, + libnssutil3.so, libpkcs11testmodule.so, libsmime3.so, + libsoftokn3.so, and libssl3.so +
+
+ Installed Directories: + /usr/include/nss +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ certutil +

+
+

+ is the Mozilla Certificate Database Tool. It is a + command-line utility that can create and modify the + Netscape Communicator cert8.db and key3.db database + files. It can also list, generate, modify, or + delete certificates within the cert8.db file and + create or change the password, generate new public + and private key pairs, display the contents of the + key database, or delete key pairs within the + key3.db file +

+
+

+ nss-config +

+
+

+ is used to determine the NSS library settings of + the installed NSS libraries +

+
+

+ pk12util +

+
+

+ is a tool for importing certificates and keys from + pkcs #12 files into NSS or exporting them. It can + also list certificates and keys in such files +

+
+
+
+
+
+
+
+

+ OpenSSH-10.0p1 +

+
+
+
+
+
+

+ Introduction to OpenSSH +

+

+ The OpenSSH package contains + ssh clients and + the sshd + daemon. This is useful for encrypting authentication and + subsequent traffic over a network. The ssh and scp commands are secure + implementations of telnet and rcp respectively. +

+
+

+ Note +

+

+ This package reports version OpenSSH_10.0p2 even though the + source package is openssh-10.0p1. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 689148621a2eaa734497b12bed1c5202 +

    +
  • +
  • +

    + Download size: 1.9 MB +

    +
  • +
  • +

    + Estimated disk space required: 50 MB (add 22 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (Using parallelism=4; + running the tests takes about 15 minutes, irrespective + of processor speed) +

    +
  • +
+
+

+ OpenSSH Dependencies +

+
+ Optional +
+

+ GDB-16.3 + (for tests), Linux-PAM-1.7.1 (PAM configuration + files from Shadow-4.18.0 are used to create openssh + ones), Xorg Applications (or Xorg build + environment, see Command Explanations), MIT Kerberos + V5-1.22.1, Which-2.23 (for tests), + libedit, LibreSSL + Portable, OpenSC, and + libsectok +

+
+ Optional Runtime (Used only to + gather entropy) +
+

+ Net-tools-2.10, and Sysstat-12.7.8 +

+
+
+

+ Installation of OpenSSH +

+

+ OpenSSH runs as two + processes when connecting to other computers. The first + process is a privileged process and controls the issuance of + privileges as necessary. The second process communicates with + the network. Additional installation steps are necessary to + set up the proper environment, which are performed by issuing + the following commands as the root user: +

+
install -v -g sys -m700 -d /var/lib/sshd &&
+
+groupadd -g 50 sshd        &&
+useradd  -c 'sshd PrivSep' \
+         -d /var/lib/sshd  \
+         -g sshd           \
+         -s /bin/false     \
+         -u 50 sshd
+

+ Install OpenSSH by running + the following commands: +

+
./configure --prefix=/usr                            \
+            --sysconfdir=/etc/ssh                    \
+            --with-privsep-path=/var/lib/sshd        \
+            --with-default-path=/usr/bin             \
+            --with-superuser-path=/usr/sbin:/usr/bin \
+            --with-pid-dir=/run                      &&
+make
+

+ To test the results, issue: make -j1 tests. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m755    contrib/ssh-copy-id /usr/bin     &&
+
+install -v -m644    contrib/ssh-copy-id.1 \
+                    /usr/share/man/man1              &&
+install -v -m755 -d /usr/share/doc/openssh-10.0p1     &&
+install -v -m644    INSTALL LICENCE OVERVIEW README* \
+                    /usr/share/doc/openssh-10.0p1
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc/ssh: This + prevents the configuration files from being installed in + /usr/etc. +

+

+ --with-default-path=/usr/bin + and --with-superuser-path=/usr/sbin:/usr/bin: + These set PATH consistent with LFS + and BLFS Shadow package. +

+

+ --with-pid-dir=/run: + This prevents OpenSSH from + referring to deprecated /var/run. +

+

+ --with-pam: This parameter + enables Linux-PAM support in + the build. +

+

+ --with-xauth=$XORG_PREFIX/bin/xauth: Set the + default location for the xauth binary for X + authentication. The environment variable XORG_PREFIX should be set following Xorg build + environment. This can also be controlled from + sshd_config with the + XAuthLocation keyword. You can omit this switch if + Xorg is already installed. +

+

+ --with-kerberos5=/usr: This + option is used to include Kerberos 5 support in the build. +

+

+ --with-libedit: This option + enables line editing and history features for sftp. +

+
+
+

+ Configuring OpenSSH +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.ssh/*, /etc/ssh/ssh_config, and /etc/ssh/sshd_config +

+

+ There are no required changes to any of these files. + However, you may wish to view the /etc/ssh/ files and make any changes + appropriate for the security of your system. One + recommended change is that you disable root login via ssh. Execute the + following command as the root user to disable root login via ssh: +

+
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
+

+ If you want to be able to log in without typing in your + password, first create ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub + with ssh-keygen and then copy + ~/.ssh/id_rsa.pub to ~/.ssh/authorized_keys on the remote + computer that you want to log into. You'll need to change + REMOTE_USERNAME and REMOTE_HOSTNAME for the username and + hostname of the remote computer and you'll also need to + enter your password for the ssh-copy-id command to succeed: +

+
ssh-keygen &&
+ssh-copy-id -i ~/.ssh/id_ed25519.pub REMOTE_USERNAME@REMOTE_HOSTNAME
+

+ Once you've got passwordless logins working it's actually + more secure than logging in with a password (as the private + key is much longer than most people's passwords). If you + would like to now disable password logins, as the + root user: +

+
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config &&
+echo "KbdInteractiveAuthentication no" >> /etc/ssh/sshd_config
+

+ If you added Linux-PAM + support and you want ssh to use it then you will need to + add a configuration file for sshd and enable use of LinuxPAM. Note, ssh only uses PAM to + check passwords, if you've disabled password logins these + commands are not needed. If you want to use PAM, issue the + following commands as the root user: +

+
sed 's@d/login@d/sshd@g' /etc/pam.d/login > /etc/pam.d/sshd &&
+chmod 644 /etc/pam.d/sshd &&
+echo "UsePAM yes" >> /etc/ssh/sshd_config
+

+ Additional configuration information can be found in the + man pages for sshd, ssh and ssh-agent. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To start the SSH server at system boot, install the + /etc/rc.d/init.d/sshd init + script included in the blfs-bootscripts-20250225 + package. +

+
+

+ Note +

+

+ Changing the setting of ListenAddress in /etc/sshd/sshd_config is unsupported + with the BLFS sshd bootscript. +

+
+
make install-sshd
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + scp, sftp, ssh, ssh-add, ssh-agent, + ssh-copy-id, ssh-keygen, ssh-keyscan, and sshd +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/ssh, + /usr/share/doc/openssh-10.0p1, and /var/lib/sshd +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ scp +

+
+

+ is a file copy program that acts like rcp except it + uses an encrypted protocol +

+
+

+ sftp +

+
+

+ is an FTP-like program that works over the SSH1 and + SSH2 protocols +

+
+

+ ssh +

+
+

+ is an rlogin/rsh-like + client program except it uses an encrypted protocol +

+
+

+ sshd +

+
+

+ is a daemon that listens for ssh login + requests +

+
+

+ ssh-add +

+
+

+ is a tool which adds keys to the ssh-agent +

+
+

+ ssh-agent +

+
+

+ is an authentication agent that can store private + keys +

+
+

+ ssh-copy-id +

+
+

+ is a script that enables logins on remote machines + using local keys +

+
+

+ ssh-keygen +

+
+

+ is a key generation tool +

+
+

+ ssh-keyscan +

+
+

+ is a utility for gathering public host keys from a + number of hosts +

+
+
+
+
+
+
+
+

+ p11-kit-0.25.5 +

+
+
+
+
+
+

+ Introduction to p11-kit +

+

+ The p11-kit package provides + a way to load and enumerate PKCS #11 (a Cryptographic Token + Interface Standard) modules. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ p11-kit Dependencies +

+
+ Recommended +
+ +
+ Recommended (runtime) +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0, libxslt-1.1.43, and + nss-3.115 + (runtime) +

+
+
+

+ Installation of p11-kit +

+

+ Prepare the distribution specific anchor hook: +

+
sed '20,$ d' -i trust/trust-extract-compat &&
+
+cat >> trust/trust-extract-compat << "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
+

+ Install p11-kit by running + the following commands: +

+
mkdir p11-build &&
+cd    p11-build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D trust_paths=/etc/pki/anchors &&
+ninja
+

+ To test the results, issue: LC_ALL=C ninja test. +

+

+ Now, as the root user: +

+
ninja install &&
+ln -sfv /usr/libexec/p11-kit/trust-extract-compat \
+        /usr/bin/update-ca-certificates
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + trust_paths=/etc/pki/anchors: this switch sets + the location of trusted certificates used by libp11-kit.so. +

+

+ -D hash_impl=freebl: Use this + switch if you want to use the Freebl library from + NSS for SHA1 and MD5 + hashing. +

+

+ -D gtk_doc=true: Use this switch + if you have installed GTK-Doc-1.34.0 and libxslt-1.1.43 and wish + to rebuild the documentation and generate manual pages. +

+
+
+

+ Configuring p11-kit +

+

+ The p11-kit trust module + (/usr/lib/pkcs11/p11-kit-trust.so) can be + used as a drop-in replacement for /usr/lib/libnssckbi.so to transparently + make the system CAs available to NSS aware applications, rather than the + static list provided by /usr/lib/libnssckbi.so. As the root user, execute the following + commands: +

+
ln -sfv ./pkcs11/p11-kit-trust.so /usr/lib/libnssckbi.so
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + p11-kit, trust, and + update-ca-certificates +
+
+ Installed Libraries: + libp11-kit.so and + p11-kit-proxy.so +
+
+ Installed Directories: + /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 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ p11-kit +

+
+

+ is a command line tool that can be used to perform + operations on PKCS#11 modules configured on the + system +

+
+

+ trust +

+
+

+ is a command line tool to examine and modify the + shared trust policy store +

+
+

+ update-ca-certificates +

+
+

+ 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 on BLFS + using the --force and + --get flags + to make-ca and + should likely not be used for automated updates +

+
+

+ libp11-kit.so +

+
+

+ contains functions used to coordinate + initialization and finalization of any PKCS#11 + module +

+
+

+ p11-kit-proxy.so +

+
+

+ is the PKCS#11 proxy module +

+
+
+
+
+
+
+
+

+ Polkit-126 +

+
+
+
+
+
+

+ Introduction to Polkit +

+

+ Polkit is a toolkit for + defining and handling authorizations. It is used for allowing + unprivileged processes to communicate with privileged + processes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Polkit Dependencies +

+
+ Required +
+

+ duktape-2.7.0 and GLib-2.84.4 (GObject + Introspection recommended) +

+
+ Recommended +
+ +
+

+ Note +

+

+ Since elogind uses PAM + to register user sessions, it is a good idea to build + Polkit with PAM support so + elogind can track + Polkit sessions. +

+
+
+ Optional +
+

+ GTK-Doc-1.34.0 and dbusmock-0.36.0 (required for tests) +

+
+ Optional + Runtime Dependencies +
+

+ One polkit authentication agent for using polkit in the + graphical environment: polkit-kde-agent in Plasma-6.4.4 + for KDE, the agent built in gnome-shell-48.4 + for GNOME3, polkit-gnome-0.105 for XFCE, and + lxqt-policykit-2.2.0 for LXQt +

+
+

+ Note +

+

+ If libxslt-1.1.43 is installed, then + docbook-xml-4.5 and docbook-xsl-nons-1.79.2 are + required. If you have installed libxslt-1.1.43, but + you do not want to install any of the DocBook packages + mentioned, you will need to use -D + man=false in the instructions below. +

+
+
+
+

+ Kernel Configuration +

+

+ Some tests need user namespace support. If you are going to + run the test suite, enable the support and recompile the + kernel if necessary: +

+
General setup --->
+  -*- Namespaces support --->                                       [NAMESPACES]
+    [*] User namespace                                                 [USER_NS]
+
+
+

+ Installation of Polkit +

+

+ There should be a dedicated user and group to take control of + the polkitd + daemon after it is started. Issue the following commands as + the root user: +

+
groupadd -fg 27 polkitd &&
+useradd -c "PolicyKit Daemon Owner" -d /etc/polkit-1 -u 27 \
+        -g polkitd -s /bin/false polkitd
+

+ Install Polkit by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                     \
+      --prefix=/usr                \
+      --buildtype=release          \
+      -D man=true                  \
+      -D session_tracking=elogind  \
+      -D systemdsystemunitdir=/tmp \
+      -D tests=true
+

+ Build the package: +

+
ninja
+

+ To test the results, first ensure that the system + D-Bus daemon is running, and + both D-Bus Python-1.4.0 and dbusmock-0.36.0 are installed. Then run + ninja test. +

+

+ Now, as the root user: +

+
ninja install
+

+ Remove some files that aren't useful on a SysV system as the + root user: +

+
rm -v /tmp/*.service                 &&
+rm -rf /usr/lib/{sysusers,tmpfiles}.d 
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D tests=true: This + switch allows to run the test suite of this package. As + Polkit is used for + authorizations, its integrity can affect system security. So + it's recommended to run the test suite building this package. +

+

+ -D os_type=lfs: Use this switch + if you did not create the /etc/lfs-release file or distribution auto + detection will fail and you will be unable to use + Polkit. +

+

+ -D authfw=shadow: This switch + enables the package to use the Shadow rather than the Linux PAM Authentication framework. Use + it if you have not installed Linux + PAM. +

+

+ -D introspection=false: Use this + option if you are certain that you do not need + gobject-introspection files for polkit, or do not have + installed GLib-2.84.4 with GObject Introspection. +

+

+ -D man=false: Use this option to + disable generating and installing manual pages. This is + useful if libxslt is not installed. +

+

+ -D examples=true: Use this option + to build the example programs. +

+

+ -D gtk_doc=true: Use this option + to enable building and installing the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pkaction, pkcheck, pkexec, + pkttyagent, and polkitd +
+
+ Installed Libraries: + libpolkit-agent-1.so and + libpolkit-gobject-1.so +
+
+ Installed Directories: + /etc/polkit-1, + /usr/include/polkit-1, /usr/lib/polkit-1, + /usr/share/gtk-doc/html/polkit-1, and + /usr/share/polkit-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ pkaction +

+
+

+ is used to obtain information about registered + PolicyKit actions +

+
+

+ pkcheck +

+
+

+ is used to check whether a process is authorized + for action +

+
+

+ pkexec +

+
+

+ allows an authorized user to execute a command as + another user +

+
+

+ pkttyagent +

+
+

+ is used to start a textual authentication agent for + the subject +

+
+

+ polkitd +

+
+

+ provides the org.freedesktop.PolicyKit1 + D-Bus service on + the system message bus +

+
+

+ libpolkit-agent-1.so +

+
+

+ contains the Polkit authentication agent + API functions +

+
+

+ libpolkit-gobject-1.so +

+
+

+ contains the Polkit authorization API + functions +

+
+
+
+
+
+
+
+

+ polkit-gnome-0.105 +

+
+
+
+
+
+

+ Introduction to Polkit GNOME +

+

+ The Polkit GNOME package + provides an Authentication Agent for Polkit that integrates well with the + GNOME Desktop environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Polkit GNOME Dependencies +

+
+ Required +
+

+ AccountsService-23.13.9, + GTK-3.24.50, and Polkit-126 +

+
+
+

+ Installation of Polkit GNOME +

+

+ First, apply some fixes that allow for the proper user icon + to be used, as well as some security fixes: +

+
patch -Np1 -i ../polkit-gnome-0.105-consolidated_fixes-1.patch
+

+ Install Polkit GNOME by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuring Polkit GNOME +

+
+
+
+
+

+ Automatic Startup +

+
+
+
+

+ For the authentication framework to work, polkit-gnome-authentication-agent-1 + needs to be started. However, make install did not + install a startup file for the Polkit GNOME so you have to create it + by yourself. +

+

+ Issue the following commands as the root user to create a startup file for + Polkit GNOME: +

+
mkdir -p /etc/xdg/autostart &&
+cat > /etc/xdg/autostart/polkit-gnome-authentication-agent-1.desktop << "EOF"
+[Desktop Entry]
+Name=PolicyKit Authentication Agent
+Comment=PolicyKit Authentication Agent
+Exec=/usr/libexec/polkit-gnome-authentication-agent-1
+Terminal=false
+Type=Application
+Categories=
+NoDisplay=true
+OnlyShowIn=GNOME;XFCE;Unity;
+AutostartCondition=GNOME3 unless-session gnome
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + polkit-gnome-authentication-agent-1 +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ polkit-gnome-authentication-agent-1 +

+
+

+ is the Polkit + authentication agent +

+
+
+
+
+
+
+
+

+ Shadow-4.18.0 +

+
+
+
+
+
+

+ Introduction to Shadow +

+

+ Shadow was indeed installed + in LFS and there is no reason to reinstall it unless you + installed Linux-PAM after + your LFS system was completed. With Linux-PAM installed, reinstalling + Shadow will allow programs + such as login + and su to + utilize PAM. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Shadow Dependencies +

+
+ Required +
+

+ Linux-PAM-1.7.1 +

+
+ Optional +
+

+ libbsd and + tcb +

+
+
+

+ Installation of Shadow +

+
+

+ Important +

+

+ The installation commands shown below are for installations + where Linux-PAM has been + installed and Shadow is + being reinstalled to support the Linux-PAM installation. +

+
+

+ Reinstall Shadow by running + the following commands: +

+
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 / /'   {} \; &&
+
+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                                   &&
+
+./configure --sysconfdir=/etc   \
+            --disable-static    \
+            --without-libbsd    \
+            --with-{b,yes}crypt &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make exec_prefix=/usr pamddir= install
+

+ The man pages were installed in LFS, but if reinstallation is + desired, run (as the root + user): +

+
make -C man install-man
+
+
+

+ Command Explanations +

+

+ sed -i 's/groups$(EXEEXT) //' + src/Makefile.in: This sed is used to suppress + the installation of the groups program as the + version from the Coreutils + package installed during LFS is preferred. +

+

+ find man -name Makefile.in + -exec ... {} \;: The first command is used to + suppress the installation of the groups man pages so the + existing ones installed from the Coreutils package are not replaced. The + two other commands prevent installation of manual pages that + are already installed by Man-pages in LFS. +

+

+ 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: Instead of using the default + 'DES' method, this command modifies the installation to use + the much more secure 'YESCRYPT' method of hashing passwords, + which also allows passwords longer than eight characters. The + command also changes the obsolete /var/spool/mail location for user mailboxes + that Shadow uses by default + to the /var/mail location. It + also changes the default path to be consistent with that set + in LFS. +

+

+ --without-libbsd: + Prevents looking for the readpassphrase function, + which can be found only in libbsd, which we do not have in BLFS. An + internal implementation of readpassphrase is used + instead. +

+

+ pamddir=: Prevents + installation of the shipped PAM configuration files into + /etc/pam.d. The shipped + configuration does not work with the BLFS PAM configuration + and we will create these configuration files explicitly. +

+
+
+

+ Configuring Linux-PAM to Work with Shadow +

+
+

+ Note +

+

+ The rest of this page is devoted to configuring + Shadow to work properly + with Linux-PAM. +

+
+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/pam.d/* or alternatively + /etc/pam.conf, /etc/login.defs and /etc/security/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Configuring your system to use Linux-PAM can be a complex task. The + information below will provide a basic setup so that + Shadow's login and + password functionality will work effectively with + Linux-PAM. Review the + information and links on the Linux-PAM-1.7.1 + page for further configuration information. For information + specific to integrating Shadow, Linux-PAM and libpwquality, you can visit the + following link: +

+ +
+
+
+
+
+ Configuring /etc/login.defs +
+
+
+
+

+ The login + program currently performs many functions which + Linux-PAM modules should + now handle. The following sed command will + comment out the appropriate lines in /etc/login.defs, and stop login from performing + these functions (a backup file named /etc/login.defs.orig is also created to + preserve the original file's contents). Issue the + following commands as the root user: +

+
install -v -m644 /etc/login.defs /etc/login.defs.orig &&
+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            \
+                PASS_CHANGE_TRIES        \
+                PASS_ALWAYS_WARN         \
+                CHFN_AUTH ENCRYPT_METHOD \
+                ENVIRON_FILE
+do
+    sed -i "s/^${FUNCTION}/# &/" /etc/login.defs
+done
+
+
+
+
+
+
+ Configuring the + /etc/pam.d/ Files +
+
+
+
+

+ As mentioned previously in the Linux-PAM instructions, Linux-PAM has two supported methods + for configuration. The commands below assume that you've + chosen to use a directory based configuration, where each + program has its own configuration file. You can + optionally use a single /etc/pam.conf configuration file by + using the text from the files below, and supplying the + program name as an additional first field for each line. +

+

+ As the root user, create + the following Linux-PAM + configuration files in the /etc/pam.d/ directory (or add the + contents to the /etc/pam.conf file) using the following + commands: +

+
+
+
+
+
+
+ 'login' +
+
+
+
+
cat > /etc/pam.d/login << "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 > /etc/pam.d/passwd << "EOF"
+# Begin /etc/pam.d/passwd
+
+password  include     system-password
+
+# End /etc/pam.d/passwd
+EOF
+
+
+
+
+
+
+ 'su' +
+
+
+
+
cat > /etc/pam.d/su << "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 > /etc/pam.d/chpasswd << "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/ /etc/pam.d/chpasswd >/etc/pam.d/newusers
+
+
+
+
+
+
+ 'chage' +
+
+
+
+
cat > /etc/pam.d/chage << "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
+
+
+
+
+
+
+ Other shadow utilities +
+
+
+
+
for PROGRAM in chfn chgpasswd chsh groupadd groupdel \
+               groupmems groupmod useradd userdel usermod
+do
+    install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
+    sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
+done
+
+

+ Warning +

+

+ At this point, you should do a simple test to see if + Shadow is working as + expected. Open another terminal and log in as + root, and then run + login and + login as another user. If you do not see any errors, + then all is well and you should proceed with the rest + of the configuration. If you did receive errors, stop + now and double check the above configuration files + manually. Any error is the sign of an error in the + above procedure. You can also run the test suite from + the Linux-PAM package + to assist you in determining the problem. If you cannot + find and fix the error, you should recompile + Shadow adding the + --without-libpam switch to + the configure command in + the above instructions (also move the /etc/login.defs.orig backup file to + /etc/login.defs). If you + fail to do this and the errors remain, you will be + unable to log into your system. +

+
+
+
+
+
+
+
+ Configuring Login Access +
+
+
+
+

+ Instead of using the /etc/login.access file for controlling + access to the system, Linux-PAM uses the pam_access.so module along with the + /etc/security/access.conf + file. Rename the /etc/login.access file using the + following command: +

+
if [ -f /etc/login.access ]; then mv -v /etc/login.access{,.NOUSE}; fi
+
+
+
+
+
+
+ Configuring Resource Limits +
+
+
+
+

+ Instead of using the /etc/limits file for limiting usage of + system resources, Linux-PAM uses the pam_limits.so module along with the + /etc/security/limits.conf + file. Rename the /etc/limits file using the following + command: +

+
if [ -f /etc/limits ]; then mv -v /etc/limits{,.NOUSE}; fi
+
+

+ Caution +

+

+ Be sure to test the login capabilities of the system + before logging out. Errors in the configuration can + cause a permanent lockout requiring a boot from an + external source to correct the problem. +

+
+
+
+
+
+

+ Contents +

+

+ A list of the installed files, along with their short + descriptions can be found at + ../../../../lfs/view/12.4/chapter08/shadow.html#contents-shadow. +

+
+
+
+
+
+

+ ssh-askpass-10.0p1 +

+
+
+
+
+
+

+ Introduction to ssh-askpass +

+

+ The ssh-askpass is a generic + executable name for many packages, with similar names, that + provide a interactive X service to grab password for packages + requiring administrative privileges to be run. It prompts the + user with a window box where the necessary password can be + inserted. Here, we choose Damien Miller's package distributed + in the OpenSSH tarball. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ssh-askpass Dependencies +

+
+ Required +
+

+ GTK-3.24.50, Sudo-1.9.17p2 (runtime), Xorg + Libraries, and a + graphical environment (runtime) +

+
+
+

+ Installation of ssh-askpass +

+

+ Install ssh-askpass by + running the following commands: +

+
cd contrib &&
+make gnome-ssh-askpass3
+

+ Now, as the root user: +

+
install -v -d -m755                    /usr/libexec/openssh/contrib  &&
+install -v -m755    gnome-ssh-askpass3 /usr/libexec/openssh/contrib  &&
+ln -sv -f contrib/gnome-ssh-askpass3   /usr/libexec/openssh/ssh-askpass
+

+ The use of /usr/libexec/openssh/contrib and a symlink is + justified by the eventual necessity of a different program + for that service. +

+
+
+

+ Configuring ssh-askpass +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ As the root user, configure + Sudo-1.9.17p2 to use ssh-askpass: +

+
cat >> /etc/sudo.conf << "EOF" &&
+# Path to askpass helper program
+Path askpass /usr/libexec/openssh/ssh-askpass
+EOF
+chmod -v 0644 /etc/sudo.conf
+

+ If a given graphical <application> requires + administrative privileges, use sudo -A + <application> from an x-terminal, + from a Window Manager menu and/or replace + "Exec=<application> ..." by "Exec=sudo -A + <application> ..." in the <application>.desktop + file. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-ssh-askpass3, ssh-askpass + (symlink to gnome-ssh-askpass3) +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/libexec/openssh/contrib +
+
+
+
+
+
+
+
+

+ stunnel-5.75 +

+
+
+
+
+
+

+ Introduction to stunnel +

+

+ The stunnel package contains + a program that allows you to encrypt arbitrary TCP + connections inside SSL (Secure Sockets Layer) so you can + easily communicate with clients over secure channels. + stunnel can also be used to + tunnel PPP over network sockets without changes to the server + package source code. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ stunnel Dependencies +

+
+ Optional +
+

+ libnsl-2.0.1, netcat (required for + tests), tcpwrappers, + and TOR +

+
+
+

+ Installation of stunnel +

+

+ The stunnel + daemon will be run in a chroot jail by an + unprivileged user. Create the new user and group using the + following commands as the root user: +

+
groupadd -g 51 stunnel &&
+useradd -c "stunnel Daemon" -d /var/lib/stunnel \
+        -g stunnel -s /bin/false -u 51 stunnel
+
+

+ Note +

+

+ A signed SSL Certificate and a Private Key is necessary to + run the stunnel daemon. After the + package is installed, there are instructions to generate + them. However, if you own or have already created a signed + SSL Certificate you wish to use, copy it to /etc/stunnel/stunnel.pem before starting + the build (ensure only root + has read and write access). The .pem file must be formatted as shown + below: +

+
-----BEGIN PRIVATE KEY-----
+<many encrypted lines of private key>
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+<many encrypted lines of certificate>
+-----END CERTIFICATE-----
+-----BEGIN DH PARAMETERS-----
+<encrypted lines of dh parms>
+-----END DH PARAMETERS-----
+
+

+ Install stunnel by running + the following commands: +

+
./configure --prefix=/usr        \
+            --sysconfdir=/etc    \
+            --localstatedir=/var \
+            --disable-systemd    &&
+make
+

+ If you have installed the optional netcat application, the + regression tests can be run with make check. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc/stunnel-5.75 install
+

+ If you do not already have a signed SSL Certificate and + Private Key, create the stunnel.pem file in the /etc/stunnel directory using the command + below. You will be prompted to enter the necessary + information. Ensure you reply to the +

+
Common Name (FQDN of your server) [localhost]:
+

+ prompt with the name or IP address you will be using to + access the service(s). +

+

+ To generate a certificate, as the root user, issue: +

+
make cert
+
+
+

+ Command Explanations +

+

+ --disable-systemd: + This switch disables systemd socket activation support which + is not available in BLFS. +

+

+ make docdir=... + install: This command installs the package + and changes the documentation installation directory to + standard naming conventions. +

+
+
+

+ Configuring stunnel +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/stunnel/stunnel.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ As the root user, create + the directory used for the .pid file created when the stunnel daemon starts: +

+
install -v -m750 -o stunnel -g stunnel -d /var/lib/stunnel/run &&
+chown stunnel:stunnel /var/lib/stunnel
+

+ Next, create a basic /etc/stunnel/stunnel.conf configuration + file using the following commands as the root user: +

+
cat > /etc/stunnel/stunnel.conf << "EOF"
+; File: /etc/stunnel/stunnel.conf
+
+; Note: The pid and output locations are relative to the chroot location.
+
+pid    = /run/stunnel.pid
+chroot = /var/lib/stunnel
+client = no
+setuid = stunnel
+setgid = stunnel
+cert   = /etc/stunnel/stunnel.pem
+
+;debug = 7
+;output = stunnel.log
+
+;[https]
+;accept  = 443
+;connect = 80
+;; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SSL
+;; Microsoft implementations do not use SSL close-notify alert and thus
+;; they are vulnerable to truncation attacks
+;TIMEOUTclose = 0
+
+EOF
+

+ Finally, add the service(s) you wish to encrypt to the + configuration file. The format is as follows: +

+
[<service>]
+accept  = <hostname:portnumber>
+connect = <hostname:portnumber>
+

+ For a full explanation of the commands and syntax used in + the configuration file, issue man stunnel. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To automatically start the stunnel daemon when the + system is booted, install the /etc/rc.d/init.d/stunnel bootscript from + the blfs-bootscripts-20250225 package. +

+
make install-stunnel
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + stunnel and stunnel3 +
+
+ Installed Library: + libstunnel.so +
+
+ Installed Directories: + /{etc,lib,var/lib}/stunnel and + /usr/share/doc/stunnel-5.75 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ stunnel +

+
+

+ is a program designed to work as an SSL encryption + wrapper between remote clients and local or remote + servers +

+
+

+ stunnel3 +

+
+

+ is a Perl wrapper + script to use stunnel 3.x + syntax with stunnel 4.05 or + later +

+
+

+ libstunnel.so +

+
+

+ contains the API functions required by stunnel +

+
+
+
+
+
+
+
+

+ Sudo-1.9.17p2 +

+
+
+
+
+
+

+ Introduction to Sudo +

+

+ The Sudo package allows a + system administrator to give certain users (or groups of + users) the ability to run some (or all) commands as + root or another user while + logging the commands and arguments. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.sudo.ws/dist/sudo-1.9.17p2.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: dcbf46f739ae06b076e1a11cbb271a10 +

    +
  • +
  • +

    + Download size: 5.2 MB +

    +
  • +
  • +

    + Estimated disk space required: 54 MB (add 10 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with parallelism=4; add + 0.1 SBU for tests) +

    +
  • +
+
+

+ Sudo + Dependencies +

+
+ Optional +
+

+ Linux-PAM-1.7.1, MIT Kerberos + V5-1.22.1, OpenLDAP-2.6.10, MTA (that + provides a sendmail command), + AFS, + libaudit, + Opie, and + Sssd +

+
+
+

+ Installation of Sudo +

+

+ Install Sudo by running the + following commands: +

+
./configure --prefix=/usr         \
+            --libexecdir=/usr/lib \
+            --with-secure-path    \
+            --with-env-editor     \
+            --docdir=/usr/share/doc/sudo-1.9.17p2 \
+            --with-passprompt="[sudo] password for %p: " &&
+make
+

+ To test the results, issue: env + LC_ALL=C make check |& tee + make-check.log. Check the results with + grep failed + make-check.log. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --libexecdir=/usr/lib: This + switch controls where private programs are installed. + Everything in that directory is a library, so they belong + under /usr/lib instead of + /usr/libexec. +

+

+ --with-secure-path: + This switch transparently adds /sbin and /usr/sbin directories to the PATH environment variable. +

+

+ --with-env-editor: + This switch enables use of the environment variable EDITOR + for visudo. +

+

+ --with-passprompt: + This switch sets the password prompt. The %p will be expanded to the name + of the user whose password is being requested. +

+

+ --without-pam: This switch avoids + building Linux-PAM support + when Linux-PAM is installed + on the system. +

+

+ --with-all-insults: This switch + includes all the sudo insult sets. Insults are printed if the + user types a bad password, and if enabled in /etc/sudoers. Use --with-insults to have them enabled by + default. Various sets of insults can be selected with some + other switches. +

+
+

+ Note +

+

+ There are many options to sudo's configure command. Check + the configure + --help output for a complete list. +

+
+
+
+

+ Configuring Sudo +

+
+
+
+
+

+ Config + File +

+
+
+
+

+ /etc/sudoers +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The sudoers file can be quite + complicated. It is composed of two types of entries: + aliases (basically variables) and user specifications + (which specify who may run what). The installation installs + a default configuration that has no privileges installed + for any user. +

+

+ A couple of common configuration changes are to set the + path for the super user and to allow members of the wheel + group to execute all commands after providing their own + credentials. Use the following commands to create the + /etc/sudoers.d/00-sudo + configuration file as the root user: +

+
cat > /etc/sudoers.d/00-sudo << "EOF"
+Defaults secure_path="/usr/sbin:/usr/bin"
+%wheel ALL=(ALL) ALL
+EOF
+
+

+ Note +

+

+ In very simple installations where there is only one + user, it may be easier to just edit the /etc/sudoers file directly. In that + case, the secure_path entry + may not be needed and using sudo -E ... can import + the non-privileged user's full environment into the + privileged session. +

+

+ The files in the /etc/sudoers.d directory are parsed in + sorted lexical order. Be careful that entries in an added + file do not overwrite previous entries. +

+
+

+ For details, see man + sudoers. +

+
+

+ Note +

+

+ The Sudo developers + highly recommend using the visudo program to edit + the sudoers file. This will + provide basic sanity checking like syntax parsing and + file permission to avoid some possible mistakes that + could lead to a vulnerable configuration. +

+
+

+ If PAM is installed on the + system, Sudo is built with + PAM support. In that case, + issue the following command as the root user to create the PAM configuration file: +

+
cat > /etc/pam.d/sudo << "EOF"
+# Begin /etc/pam.d/sudo
+
+# include the default auth settings
+auth      include     system-auth
+
+# include the default account settings
+account   include     system-account
+
+# Set default environment variables for the service user
+session   required    pam_env.so
+
+# include system session defaults
+session   include     system-session
+
+# End /etc/pam.d/sudo
+EOF
+chmod 644 /etc/pam.d/sudo
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cvtsudoers, sudo, sudo_logsrvd, + sudo_sendlog, sudoedit (symlink), sudoreplay, and + visudo +
+
+ Installed Libraries: + audit_json.so, group_file.so, + libsudo_util.so, sudoers.so, sudo_intercept.so, + sudo_noexec.so, and system_group.so +
+
+ Installed Directories: + /etc/sudoers.d, /usr/lib/sudo, + /usr/share/doc/sudo-1.9.17p2, and /var/lib/sudo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cvtsudoers +

+
+

+ converts between sudoers file formats +

+
+

+ sudo +

+
+

+ executes a command as another user as permitted by + the /etc/sudoers + configuration file +

+
+

+ sudo_logsrvd +

+
+

+ is a sudo event and I/O log server +

+
+

+ sudo_sendlog +

+
+

+ sends sudo I/O logs to the log server +

+
+

+ sudoedit +

+
+

+ is a symlink to sudo that implies + the -e option to invoke + an editor as another user +

+
+

+ sudoreplay +

+
+

+ is used to play back or list the output logs + created by sudo +

+
+

+ visudo +

+
+

+ allows for safer editing of the sudoers file +

+
+
+
+
+
+
+
+

+ Tripwire-2.4.3.7 +

+
+
+
+
+
+

+ Introduction to Tripwire +

+

+ The Tripwire package + contains programs used to verify the integrity of the files + on a given system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Tripwire Dependencies +

+
+ Optional +
+

+ An MTA +

+
+
+

+ Installation of Tripwire +

+

+ Compile Tripwire by running + the following commands: +

+
sed -e '/^CLOBBER/s/false/true/'         \
+    -e 's|TWDB="${prefix}|TWDB="/var|'   \
+    -e '/TWMAN/ s|${prefix}|/usr/share|' \
+    -e '/TWDOCS/s|${prefix}/doc/tripwire|/usr/share/doc/tripwire-2.4.3.7|' \
+    -i installer/install.cfg                               &&
+
+find . -name Makefile.am | xargs                           \
+    sed -i 's/^[[:alpha:]_]*_HEADERS.*=/noinst_HEADERS =/' &&
+
+sed '/dist/d' -i man/man?/Makefile.am                      &&
+autoreconf -fi                                             &&
+
+./configure --prefix=/usr --sysconfdir=/etc/tripwire       &&
+make CPPFLAGS=-std=c++11
+
+

+ Note +

+

+ The default configuration is to use a local MTA. If you + don't have an MTA installed and have no wish to install + one, modify install/install.cfg to use an SMTP server + instead. Otherwise the install will fail. +

+
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+cp -v policy/*.txt /usr/share/doc/tripwire-2.4.3.7
+
+

+ Note +

+

+ During make + install, several questions are asked, + including passwords. If you want to make a script, you have + to apply a sed before + running make + install: +

+
sed -i -e 's@installer/install.sh@& -n -s <site-password> -l <local-password>@' Makefile
+

+ Of course, you should do this with dummy passwords and + change them later. +

+

+ Another issue when scripting is that the installer exits + when the standard input is not a terminal. You may disable + this behavior with the following sed: +

+
sed '/-t 0/,+3d' -i installer/install.sh
+
+
+
+

+ Command Explanations +

+

+ sed ... + installer/install.cfg: This command tells the + package to install the program database and reports in + /var/lib/tripwire and sets the + proper location for man pages and documentation. +

+

+ find ..., + sed ..., and + autoreconf -fi: + The build system is unusable as is, and has to be modified + for the build to succeed. +

+

+ CPPFLAGS=-std=c++11: + Setting the C++ preprocessor flags to version 11 is necessary + to prevent a conflict with the default version which is c++17 + in recent version of gcc. +

+

+ make install: + This command creates the Tripwire security keys as well as + installing the binaries. There are two keys: a site key and a + local key which are stored in /etc/tripwire/. +

+

+ cp -v policy/*.txt + /usr/doc/tripwire-2.4.3.7: This command + installs the tripwire sample + policy files with the other tripwire documentation. +

+
+
+

+ Configuring Tripwire +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/tripwire/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Tripwire uses a policy + file to determine which files are integrity checked. The + default policy file (/etc/tripwire/twpol.txt) is for a default + installation and will need to be updated for your system. +

+

+ Policy files should be tailored to each individual + distribution and/or installation. Some example policy files + can be found in /usr/share/doc/tripwire/. +

+

+ If desired, copy the policy file you'd like to try into + /etc/tripwire/ instead of + using the default policy file, twpol.txt. It is, however, recommended + that you edit your policy file. Get ideas from the examples + above and read /usr/share/doc/tripwire/policyguide.txt + for additional information. twpol.txt is a good policy file for + learning about Tripwire as + it will note any changes to the file system and can even be + used as an annoying way of keeping track of changes for + uninstallation of software. +

+

+ After your policy file has been edited to your satisfaction + you may begin the configuration steps (perform as the + root) user: +

+
twadmin --create-polfile --site-keyfile /etc/tripwire/site.key \
+    /etc/tripwire/twpol.txt &&
+tripwire --init
+

+ Depending on your system and the contents of the policy + file, the initialization phase above can take a relatively + long time. +

+
+
+
+
+
+

+ Usage Information +

+
+
+
+

+ Tripwire will identify + file changes in the critical system files specified in the + policy file. Using Tripwire while making frequent changes + to these directories will flag all these changes. It is + most useful after a system has reached a configuration that + the user considers stable. +

+

+ To use Tripwire after + creating a policy file to run a report, use the following + command: +

+
tripwire --check > /etc/tripwire/report.txt
+

+ View the output to check the integrity of your files. An + automatic integrity report can be produced by using a cron + facility to schedule the runs. +

+

+ Reports are stored in binary and, if desired, encrypted. + View reports, as the root + user, with: +

+
twprint --print-report -r /var/lib/tripwire/report/<report-name.twr>
+

+ After you run an integrity check, you should examine the + report (or email) and then modify the Tripwire database to reflect the + changed files on your system. This is so that Tripwire will not continually notify + you hat files you intentionally changed are a security + violation. To do this you must first ls -l + /var/lib/tripwire/report/ and note the name + of the newest file which starts with your system name as + presented by the command uname -n and ends in + .twr. These files were + created during report creation and the most current one is + needed to update the Tripwire database of your system. As + the root user, type in the + following command making the appropriate report name: +

+
tripwire --update --twrfile /var/lib/tripwire/report/<report-name.twr>
+

+ You will be placed into Vim with a copy of the report in front + of you. If all the changes were good, then just type + :wq and after + entering your local key, the database will be updated. If + there are files which you still want to be warned about, + remove the 'x' before the filename in the report and type + :wq. +

+
+
+
+
+
+

+ Changing the Policy File +

+
+
+
+

+ If you are unhappy with your policy file and would like to + modify it or use a new one, modify the policy file and then + execute the following commands as the root user: +

+
twadmin --create-polfile /etc/tripwire/twpol.txt &&
+tripwire --init
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + siggen, tripwire, twadmin, and + twprint +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/tripwire, /var/lib/tripwire, + and /usr/share/doc/tripwire-2.4.3.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ siggen +

+
+

+ is a signature gathering utility that displays the + hash function values for the specified files +

+
+

+ tripwire +

+
+

+ is the main file integrity checking program +

+
+

+ twadmin +

+
+

+ administrative and utility tool used to perform + certain administrative functions related to + Tripwire files and + configuration options +

+
+

+ twprint +

+
+

+ prints Tripwire + database and report files in clear text format +

+
+
+
+
+
+
+
+
+

+ Chapter 5. File Systems + and Disk Management +

+
+
+
+
+

+ Journaling file systems reduce the time needed to recover a file + system that was not unmounted properly. While this can be + extremely important in reducing downtime for servers, it has also + become popular for desktop environments. This chapter contains + other journaling file systems you can use instead of the default + LFS extended file system (ext2/3/4). It also provides + introductory material on managing disk arrays. +

+
+
+
+

+ About initramfs +

+
+
+
+
+

+ The only purpose of an initramfs is to mount the root + filesystem. The initramfs is a complete set of directories that + you would find on a normal root filesystem. It is bundled into + a single cpio archive and compressed with one of several + compression algorithms. +

+

+ At boot time, the boot loader loads the kernel and the + initramfs image into memory and starts the kernel. The kernel + checks for the presence of the initramfs and, if found, mounts + it as / and runs /init. The init program is typically a shell + script. Note that the boot process takes longer, possibly + significantly longer, if an initramfs is used. +

+

+ For most distributions, kernel modules are the biggest reason + to have an initramfs. In a general distribution, there are many + unknowns such as file system types and disk layouts. In a way, + this is the opposite of LFS where the system capabilities and + layout are known and a custom kernel is normally built. In this + situation, an initramfs is rarely needed. +

+

+ There are only four primary reasons to have an initramfs in the + LFS environment: loading the rootfs from a network, loading it + from an LVM logical volume, having an encrypted rootfs where a + password is required, or for the convenience of specifying the + rootfs as a LABEL or UUID. Anything else usually means that the + kernel was not configured properly. +

+
+

+ Building + an initramfs +

+

+ If you do decide to build an initramfs, the following scripts + will provide a basis to do it. The scripts will allow + specifying a rootfs via partition UUID or partition LABEL or + a rootfs on an LVM logical volume. They do not support an + encrypted root file system or mounting the rootfs over a + network card. For a more complete capability see the LFS + Hints or dracut. +

+

+ To install these scripts, run the following commands as the + root user: +

+
cat > /usr/sbin/mkinitramfs << "EOF"
+#!/bin/bash
+# This file based in part on the mkinitramfs script for the LFS LiveCD
+# written by Alexander E. Patrakov and Jeremy Huntwork.
+
+copy()
+{
+  local file
+
+  if [ "$2" = "lib" ]; then
+    file=$(PATH=/usr/lib type -p $1)
+  else
+    file=$(type -p $1)
+  fi
+
+  if [ -n "$file" ] ; then
+    cp $file $WDIR/usr/$2
+  else
+    echo "Missing required file: $1 for directory $2"
+    rm -rf $WDIR
+    exit 1
+  fi
+}
+
+if [ -z $1 ] ; then
+  INITRAMFS_FILE=initrd.img-no-kmods
+else
+  KERNEL_VERSION=$1
+  INITRAMFS_FILE=initrd.img-$KERNEL_VERSION
+fi
+
+if [ -n "$KERNEL_VERSION" ] && [ ! -d "/usr/lib/modules/$1" ] ; then
+  echo "No modules directory named $1"
+  exit 1
+fi
+
+printf "Creating $INITRAMFS_FILE... "
+
+binfiles="sh cat cp dd killall ls mkdir mknod mount "
+binfiles="$binfiles umount sed sleep ln rm uname"
+binfiles="$binfiles readlink basename"
+
+# Systemd installs udevadm in /bin. Other udev implementations have it in /sbin
+if [ -x /usr/bin/udevadm ] ; then binfiles="$binfiles udevadm"; fi
+
+sbinfiles="modprobe blkid switch_root"
+
+# Optional files and locations
+for f in mdadm mdmon udevd udevadm; do
+  if [ -x /usr/sbin/$f ] ; then sbinfiles="$sbinfiles $f"; fi
+done
+
+# Add lvm if present (cannot be done with the others because it
+# also needs dmsetup
+if [ -x /usr/sbin/lvm ] ; then sbinfiles="$sbinfiles lvm dmsetup"; fi
+
+unsorted=$(mktemp /tmp/unsorted.XXXXXXXXXX)
+
+DATADIR=/usr/share/mkinitramfs
+INITIN=init.in
+
+# Create a temporary working directory
+WDIR=$(mktemp -d /tmp/initrd-work.XXXXXXXXXX)
+
+# Create base directory structure
+mkdir -p $WDIR/{dev,run,sys,proc,usr/{bin,lib/{firmware,modules},sbin}}
+mkdir -p $WDIR/etc/{modprobe.d,udev/rules.d}
+touch $WDIR/etc/modprobe.d/modprobe.conf
+ln -s usr/bin  $WDIR/bin
+ln -s usr/lib  $WDIR/lib
+ln -s usr/sbin $WDIR/sbin
+ln -s lib      $WDIR/lib64
+
+# Create necessary device nodes
+mknod -m 640 $WDIR/dev/console c 5 1
+mknod -m 664 $WDIR/dev/null    c 1 3
+
+# Install the udev configuration files
+if [ -f /etc/udev/udev.conf ]; then
+  cp /etc/udev/udev.conf $WDIR/etc/udev/udev.conf
+fi
+
+for file in $(find /etc/udev/rules.d/ -type f) ; do
+  cp $file $WDIR/etc/udev/rules.d
+done
+
+# Install any firmware present
+cp -a /usr/lib/firmware $WDIR/usr/lib
+
+# Copy the RAID configuration file if present
+if [ -f /etc/mdadm.conf ] ; then
+  cp /etc/mdadm.conf $WDIR/etc
+fi
+
+# Install the init file
+install -m0755 $DATADIR/$INITIN $WDIR/init
+
+if [  -n "$KERNEL_VERSION" ] ; then
+  if [ -x /usr/bin/kmod ] ; then
+    binfiles="$binfiles kmod"
+  else
+    binfiles="$binfiles lsmod"
+    sbinfiles="$sbinfiles insmod"
+  fi
+fi
+
+# Install basic binaries
+for f in $binfiles ; do
+  ldd /usr/bin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
+  copy /usr/bin/$f bin
+done
+
+for f in $sbinfiles ; do
+  ldd /usr/sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
+  copy $f sbin
+done
+
+# Add udevd libraries if not in /usr/sbin
+if [ -x /usr/lib/udev/udevd ] ; then
+  ldd /usr/lib/udev/udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted
+elif [ -x /usr/lib/systemd/systemd-udevd ] ; then
+  ldd /usr/lib/systemd/systemd-udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted
+fi
+
+# Add module symlinks if appropriate
+if [ -n "$KERNEL_VERSION" ] && [ -x /usr/bin/kmod ] ; then
+  ln -s kmod $WDIR/usr/bin/lsmod
+  ln -s kmod $WDIR/usr/bin/insmod
+fi
+
+# Add lvm symlinks if appropriate
+# Also copy the lvm.conf file
+if  [ -x /usr/sbin/lvm ] ; then
+  ln -s lvm $WDIR/usr/sbin/lvchange
+  ln -s lvm $WDIR/usr/sbin/lvrename
+  ln -s lvm $WDIR/usr/sbin/lvextend
+  ln -s lvm $WDIR/usr/sbin/lvcreate
+  ln -s lvm $WDIR/usr/sbin/lvdisplay
+  ln -s lvm $WDIR/usr/sbin/lvscan
+
+  ln -s lvm $WDIR/usr/sbin/pvchange
+  ln -s lvm $WDIR/usr/sbin/pvck
+  ln -s lvm $WDIR/usr/sbin/pvcreate
+  ln -s lvm $WDIR/usr/sbin/pvdisplay
+  ln -s lvm $WDIR/usr/sbin/pvscan
+
+  ln -s lvm $WDIR/usr/sbin/vgchange
+  ln -s lvm $WDIR/usr/sbin/vgcreate
+  ln -s lvm $WDIR/usr/sbin/vgscan
+  ln -s lvm $WDIR/usr/sbin/vgrename
+  ln -s lvm $WDIR/usr/sbin/vgck
+  # Conf file(s)
+  cp -a /etc/lvm $WDIR/etc
+fi
+
+# Install libraries
+sort $unsorted | uniq | while read library ; do
+# linux-vdso and linux-gate are pseudo libraries and do not correspond to a file
+# libsystemd-shared is in /lib/systemd, so it is not found by copy, and
+# it is copied below anyway
+  if [[ "$library" == linux-vdso.so.1 ]] ||
+     [[ "$library" == linux-gate.so.1 ]] ||
+     [[ "$library" == libsystemd-shared* ]]; then
+    continue
+  fi
+
+  copy $library lib
+done
+
+if [ -d /usr/lib/udev ]; then
+  cp -a /usr/lib/udev $WDIR/usr/lib
+fi
+if [ -d /usr/lib/systemd ]; then
+  cp -a /usr/lib/systemd $WDIR/usr/lib
+fi
+if [ -d /usr/lib/elogind ]; then
+  cp -a /usr/lib/elogind $WDIR/usr/lib
+fi
+
+# Install the kernel modules if requested
+if [ -n "$KERNEL_VERSION" ]; then
+  find \
+     /usr/lib/modules/$KERNEL_VERSION/kernel/{crypto,fs,lib}                      \
+     /usr/lib/modules/$KERNEL_VERSION/kernel/drivers/{block,ata,nvme,md,firewire} \
+     /usr/lib/modules/$KERNEL_VERSION/kernel/drivers/{scsi,message,pcmcia,virtio} \
+     /usr/lib/modules/$KERNEL_VERSION/kernel/drivers/usb/{host,storage}           \
+     -type f 2> /dev/null | cpio --make-directories -p --quiet $WDIR
+
+  cp /usr/lib/modules/$KERNEL_VERSION/modules.{builtin,order} \
+            $WDIR/usr/lib/modules/$KERNEL_VERSION
+  if [ -f /usr/lib/modules/$KERNEL_VERSION/modules.builtin.modinfo ]; then
+    cp /usr/lib/modules/$KERNEL_VERSION/modules.builtin.modinfo \
+            $WDIR/usr/lib/modules/$KERNEL_VERSION
+  fi
+
+  depmod -b $WDIR $KERNEL_VERSION
+fi
+
+( cd $WDIR ; find . | cpio -o -H newc --quiet | gzip -9 ) > $INITRAMFS_FILE
+
+# Prepare early loading of microcode if available
+if ls /usr/lib/firmware/intel-ucode/* >/dev/null 2>&1 ||
+   ls /usr/lib/firmware/amd-ucode/*   >/dev/null 2>&1; then
+
+# first empty WDIR to reuse it
+  rm -r $WDIR/*
+
+  DSTDIR=$WDIR/kernel/x86/microcode
+  mkdir -p $DSTDIR
+
+  if [ -d /usr/lib/firmware/amd-ucode ]; then
+    cat /usr/lib/firmware/amd-ucode/microcode_amd*.bin > $DSTDIR/AuthenticAMD.bin
+  fi
+
+  if [ -d /usr/lib/firmware/intel-ucode ]; then
+    cat /usr/lib/firmware/intel-ucode/* > $DSTDIR/GenuineIntel.bin
+  fi
+
+  ( cd $WDIR; find . | cpio -o -H newc --quiet ) > microcode.img
+  cat microcode.img $INITRAMFS_FILE > tmpfile
+  mv tmpfile $INITRAMFS_FILE
+  rm microcode.img
+fi
+
+# Remove the temporary directories and files
+rm -rf $WDIR $unsorted
+printf "done.\n"
+
+EOF
+
+chmod 0755 /usr/sbin/mkinitramfs
+
mkdir -p /usr/share/mkinitramfs &&
+cat > /usr/share/mkinitramfs/init.in << "EOF"
+#!/bin/sh
+
+PATH=/usr/bin:/usr/sbin
+export PATH
+
+problem()
+{
+   printf "Encountered a problem!\n\nDropping you to a shell.\n\n"
+   sh
+}
+
+no_device()
+{
+   printf "The device %s, which is supposed to contain the\n" $1
+   printf "root file system, does not exist.\n"
+   printf "Please fix this problem and exit this shell.\n\n"
+}
+
+no_mount()
+{
+   printf "Could not mount device %s\n" $1
+   printf "Sleeping forever. Please reboot and fix the kernel command line.\n\n"
+   printf "Maybe the device is formatted with an unsupported file system?\n\n"
+   printf "Or maybe filesystem type autodetection went wrong, in which case\n"
+   printf "you should add the rootfstype=... parameter to the kernel command line.\n\n"
+   printf "Available partitions:\n"
+}
+
+do_mount_root()
+{
+   mkdir /.root
+   [ -n "$rootflags" ] && rootflags="$rootflags,"
+   rootflags="$rootflags$ro"
+
+   case "$root" in
+      /dev/*    ) device=$root ;;
+      UUID=*    ) eval $root; device="/dev/disk/by-uuid/$UUID" ;;
+      PARTUUID=*) eval $root; device="/dev/disk/by-partuuid/$PARTUUID" ;;
+      LABEL=*   ) eval $root; device="/dev/disk/by-label/$LABEL" ;;
+      ""        ) echo "No root device specified." ; problem ;;
+   esac
+
+   while [ ! -b "$device" ] ; do
+       no_device $device
+       problem
+   done
+
+   if ! mount -n -t "$rootfstype" -o "$rootflags" "$device" /.root ; then
+       no_mount $device
+       cat /proc/partitions
+       while true ; do sleep 10000 ; done
+   else
+       echo "Successfully mounted device $root"
+   fi
+}
+
+do_try_resume()
+{
+   case "$resume" in
+      UUID=* ) eval $resume; resume="/dev/disk/by-uuid/$UUID"  ;;
+      LABEL=*) eval $resume; resume="/dev/disk/by-label/$LABEL" ;;
+   esac
+
+   if $noresume || ! [ -b "$resume" ]; then return; fi
+
+   ls -lH "$resume" | ( read x x x x maj min x
+       echo -n ${maj%,}:$min > /sys/power/resume )
+}
+
+init=/sbin/init
+root=
+rootdelay=
+rootfstype=auto
+ro="ro"
+rootflags=
+device=
+resume=
+noresume=false
+
+mount -n -t devtmpfs devtmpfs /dev
+mount -n -t proc     proc     /proc
+mount -n -t sysfs    sysfs    /sys
+mount -n -t tmpfs    tmpfs    /run
+
+read -r cmdline < /proc/cmdline
+
+for param in $cmdline ; do
+  case $param in
+    init=*      ) init=${param#init=}             ;;
+    root=*      ) root=${param#root=}             ;;
+    rootdelay=* ) rootdelay=${param#rootdelay=}   ;;
+    rootfstype=*) rootfstype=${param#rootfstype=} ;;
+    rootflags=* ) rootflags=${param#rootflags=}   ;;
+    resume=*    ) resume=${param#resume=}         ;;
+    noresume    ) noresume=true                   ;;
+    ro          ) ro="ro"                         ;;
+    rw          ) ro="rw"                         ;;
+  esac
+done
+
+# udevd location depends on version
+if [ -x /sbin/udevd ]; then
+  UDEVD=/sbin/udevd
+elif [ -x /lib/udev/udevd ]; then
+  UDEVD=/lib/udev/udevd
+elif [ -x /lib/systemd/systemd-udevd ]; then
+  UDEVD=/lib/systemd/systemd-udevd
+else
+  echo "Cannot find udevd nor systemd-udevd"
+  problem
+fi
+
+${UDEVD} --daemon --resolve-names=never
+udevadm trigger
+udevadm settle
+
+if [ -f /etc/mdadm.conf ] ; then mdadm -As                       ; fi
+if [ -x /sbin/vgchange  ] ; then /sbin/vgchange -a y > /dev/null ; fi
+if [ -n "$rootdelay"    ] ; then sleep "$rootdelay"              ; fi
+
+do_try_resume # This function will not return if resuming from disk
+do_mount_root
+
+killall -w ${UDEVD##*/}
+
+exec switch_root /.root "$init" "$@"
+
+EOF
+
+
+

+ Using + an initramfs +

+

+ Required Runtime Dependency +

+

+ cpio-2.15 +

+

+ Other Runtime Dependencies +

+

+ LVM2-2.03.34 and/or mdadm-4.4 must be installed + before generating the initramfs, if the system partition uses + them. +

+

+ To build an initramfs, run the following as the root user: +

+
mkinitramfs [KERNEL VERSION]
+

+ The optional argument is the directory where the appropriate + kernel modules are located. This must be a subdirectory of + /lib/modules. If no modules are + specified, then the initramfs is named initrd.img-no-kmods. If a kernel + version is specified, the initrd is named initrd.img-$KERNEL_VERSION and is + only appropriate for the specific kernel specified. The + output file will be placed in the current directory. +

+

+ If early loading of microcode is needed (see the + section called “Microcode updates for CPUs”), you can + install the appropriate blob or container in /lib/firmware. It will be automatically + added to the initrd when running mkinitramfs. +

+

+ After generating the initrd, copy it to the /boot directory. +

+

+ Now edit /boot/grub/grub.cfg + and add a new menuentry. Below are several examples. +

+
# Generic initramfs and root fs identified by UUID
+menuentry "LFS Dev (LFS-7.0-Feb14) initrd, Linux 3.0.4"
+{
+  linux  /vmlinuz-3.0.4-lfs-20120214 root=UUID=54b934a9-302d-415e-ac11-4988408eb0a8 ro
+  initrd /initrd.img-no-kmods
+}
+
# Generic initramfs and root fs on LVM partition
+menuentry "LFS Dev (LFS-7.0-Feb18) initrd lvm, Linux 3.0.4"
+{
+  linux  /vmlinuz-3.0.4-lfs-20120218 root=/dev/mapper/myroot ro
+  initrd /initrd.img-no-kmods
+}
+
# Specific initramfs and root fs identified by LABEL
+menuentry "LFS Dev (LFS-7.1-Feb20) initrd label, Linux 3.2.6"
+{
+  linux  /vmlinuz-3.2.6-lfs71-120220 root=LABEL=lfs71 ro
+  initrd /initrd.img-3.2.6-lfs71-120220
+}
+

+ Finally, reboot the system and select the desired system. +

+
+
+
+
+
+

+ btrfs-progs-6.16 +

+
+
+
+
+
+

+ Introduction to btrfs-progs +

+

+ The btrfs-progs package + contains administration and debugging tools for the B-tree + file system (btrfs). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Btrfs-progs Dependencies +

+
+ Required +
+

+ LZO-2.10 +

+
+ Optional +
+

+ LVM2-2.03.34 (dmsetup is used in tests), + sphinx-8.2.3 and sphinx_rtd_theme-3.0.2 (required + to build documentation), and + reiserfsprogs (for tests). +

+
+
+

+ Kernel Configuration +

+

+ Enable the following option in the kernel configuration and + recompile the kernel: +

+
File systems --->
+  <*/M> Btrfs filesystem support                                      [BTRFS_FS]
+

+ In addition to the above and to the options required for + LVM2-2.03.34, the following options must + be set for running tests. The options marked as empty should + not be selected + because they are for developers and make some tests fail. +

+
File systems --->
+  <*/M> Btrfs filesystem support                                      [BTRFS_FS]
+  [*]     Btrfs POSIX Access Control Lists                  [BTRFS_FS_POSIX_ACL]
+  [ ]     Btrfs will run sanity tests upon loading   [BTRFS_FS_RUN_SANITY_TESTS]
+  [ ]     Btrfs debugging support                                  [BTRFS_DEBUG]
+  [ ]     Btrfs assert support                                    [BTRFS_ASSERT]
+  [ ]     Btrfs with the ref verify tool compiled in       [BTRFS_FS_REF_VERIFY]
+
+
+

+ Installation of btrfs-progs +

+

+ Install btrfs-progs by + running the following commands: +

+
./configure --prefix=/usr           \
+            --disable-static        \
+            --disable-documentation &&
+make
+
+

+ Note +

+

+ Some tests require grep built with perl regular + expressions. To obtain this, rebuild grep with the LFS + Chapter 8 instructions after installing pcre2-10.45. +

+
+

+ Before running tests, build a support program: +

+
make fssum
+

+ Now remove one test known to fail. As root: +

+
rm -rf tests/misc-tests/041-subvolume-delete-during-send
+

+ To test the results, issue (as the root user): +

+
pushd tests
+   ./fsck-tests.sh
+   ./mkfs-tests.sh
+   ./cli-tests.sh
+   ./convert-tests.sh
+   ./misc-tests.sh
+   ./fuzz-tests.sh
+popd
+
+

+ Note +

+

+ If the above mentioned kernel options are not enabled, some + tests fail, and prevent all the remaining tests from + running because the test disk image is not cleanly + unmounted. Also make sure that the btrfs kernel module is + loaded. +

+
+

+ Install the package as the root user: +

+
make install
+

+ If you have passed --disable-documentation to + configure and + you need the manual pages, install them by running, as the + root user: +

+
for i in 5 8; do
+   install Documentation/*.$i /usr/share/man/man$i
+done
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-documentation: This + switch disables rebuilding the manual pages, because it + requires sphinx-8.2.3. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + btrfs, btrfs-convert, + btrfs-find-root, btrfs-image, btrfs-map-logical, + btrfs-select-super, btrfsck (link to btrfs), btrfstune, + fsck.btrfs, and mkfs.btrfs +
+
+ Installed Libraries: + libbtrfs.so and + libbtrfsutil.so +
+
+ Installed Directories: + /usr/include/btrfs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ btrfs +

+
+

+ is the main interface into btrfs filesystem + operations +

+
+

+ btrfs-convert +

+
+

+ converts from an ext2/3/4 or reiserfs filesystem to + btrfs +

+
+

+ btrfs-find-root +

+
+

+ is a filter to find btrfs root +

+
+

+ btrfs-map-logical +

+
+

+ maps btrfs logical extent to physical extent +

+
+

+ btrfs-select-super +

+
+

+ overwrites the primary superblock with a backup + copy +

+
+

+ btrfstune +

+
+

+ tunes various filesystem parameters +

+
+

+ fsck.btrfs +

+
+

+ does nothing, but is present for consistency with + fstab +

+
+

+ mkfs.btrfs +

+
+

+ creates a btrfs file system +

+
+
+
+
+
+
+
+

+ dosfstools-4.2 +

+
+
+
+
+
+

+ Introduction to dosfstools +

+

+ The dosfstools package + contains various utilities for use with the FAT family of + file systems. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Kernel + Configuration +

+

+ Enable the following option in the kernel configuration and + recompile the kernel if you need to mount a FAT-family + filesystem: +

+
File systems --->
+  DOS/FAT/EXFAT/NT Filesystems --->
+    < /*/M> MSDOS fs support                                          [MSDOS_FS]
+    <*/M>   VFAT (Windows-95) fs support                               [VFAT_FS]
+

+ Note that CONFIG_MSDOS_FS + deliberately does not support long file names. CONFIG_VFAT_FS should be used instead unless + you really want to enforce the DOS-style “8.3” file names. +

+

+ You can mount a FAT-family filesystem once the kernel + supports it. If you don't need to create, check, or relabel a + FAT-family system, you may skip this package. +

+
+
+

+ Installation of dosfstools +

+

+ Install dosfstools by + running the following commands: +

+
./configure --prefix=/usr            \
+            --enable-compat-symlinks \
+            --mandir=/usr/share/man  \
+            --docdir=/usr/share/doc/dosfstools-4.2 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-compat-symlinks: This + switch creates the dosfsck, + dosfslabel, fsck.msdos, fsck.vfat, mkdosfs, mkfs.msdos, and mkfs.vfat symlinks required by some + programs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fatlabel, fsck.fat, and + mkfs.fat +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ fatlabel +

+
+

+ sets or gets a MS-DOS filesystem label from a given + device +

+
+

+ fsck.fat +

+
+

+ checks and repairs MS-DOS filesystems +

+
+

+ mkfs.fat +

+
+

+ creates an MS-DOS filesystem under Linux +

+
+
+
+
+
+
+
+

+ Fuse-3.17.4 +

+
+
+
+
+
+

+ Introduction to Fuse +

+

+ FUSE (Filesystem in + Userspace) is a simple interface for userspace programs to + export a virtual filesystem to the Linux kernel. Fuse also aims to provide a secure + method for non privileged users to create and mount their own + filesystem implementations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Fuse + Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 (to rebuild the API + documentation), pytest-8.4.1 (required for tests), and + looseversion + (for tests) +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
File systems --->
+  <*/M> FUSE (Filesystem in Userspace) support                         [FUSE_FS]
+

+ Character devices in userspace should be enabled too for + running the tests: +

+
File systems --->
+  <*/M> FUSE (Filesystem in Userspace) support                         [FUSE_FS]
+  <*/M>   Character device in Userspace support                           [CUSE]
+
+
+

+ Installation of Fuse +

+

+ Install Fuse by running the + following commands: +

+
sed -i '/^udev/,$ s/^/#/' util/meson.build &&
+
+mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ The API documentation is included in the package, but if you + have Doxygen-1.14.0 installed and wish to + rebuild it, issue: +

+
pushd .. &&
+  doxygen doc/Doxyfile &&
+popd
+

+ To test the results, issue the following commands (as the + root user): +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install looseversion                      &&
+python3 -m pytest
+deactivate
+

+ The pytest-8.4.1 Python module is required for + the tests. One test named test_cuse will fail if the CONFIG_CUSE configuration item + was not enabled when the kernel was built. One test, + test/util.py, will output a + warning due to the usage of an unknown mark in pytest. +

+

+ Now, as the root user: +

+
ninja install                  &&
+chmod u+s /usr/bin/fusermount3 &&
+
+cd ..                          &&
+cp -Rv doc/html -T /usr/share/doc/fuse-3.17.4 &&
+install -v -m644   doc/{README.NFS,kernel.txt} \
+                   /usr/share/doc/fuse-3.17.4
+
+
+

+ Command Explanations +

+

+ sed ... + util/meson.build: This command disables the + installation of a boot script and udev rule that are not + needed. +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+
+
+

+ Configuring fuse +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ Some options regarding mount policy can be set in the file + /etc/fuse.conf. To install + the file run the following command as the root user: +

+
cat > /etc/fuse.conf << "EOF"
+# Set the maximum number of FUSE mounts allowed to non-root users.
+# The default is 1000.
+#
+#mount_max = 1000
+
+# Allow non-root users to specify the 'allow_other' or 'allow_root'
+# mount options.
+#
+#user_allow_other
+EOF
+

+ Additional information about the meaning of the + configuration options are found in the man page. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fusermount3 and mount.fuse3 +
+
+ Installed Libraries: + libfuse3.so +
+
+ Installed Directory: + /usr/include/fuse3 and + /usr/share/doc/fuse-3.17.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ fusermount3 +

+
+

+ is a suid root program to mount and unmount Fuse + filesystems +

+
+

+ mount.fuse3 +

+
+

+ is the command mount calls to + mount a Fuse filesystem +

+
+

+ libfuse3.so +

+
+

+ contains the FUSE + API functions +

+
+
+
+
+
+
+
+

+ jfsutils-1.1.15 +

+
+
+
+
+
+

+ Introduction to jfsutils +

+

+ The jfsutils package + contains administration and debugging tools for the jfs file + system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+
+
+

+ Kernel + Configuration +

+

+ Enable the following option in the kernel configuration and + recompile the kernel: +

+
File systems --->
+  <*/M> JFS filesystem support                                          [JFS_FS]
+
+
+

+ Installation of jfsutils +

+

+ First, fix some issues exposed by GCC 10 and later: +

+
patch -Np1 -i ../jfsutils-1.1.15-gcc10_fix-1.patch
+

+ Install jfsutils by running + the following commands: +

+
sed -i "/unistd.h/a#include <sys/types.h>"    fscklog/extract.c &&
+sed -i "/ioctl.h/a#include <sys/sysmacros.h>" libfs/devices.c   &&
+
+./configure &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed ...: Fixes + building with glibc 2.28. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fsck.jfs, jfs_debugfs, jfs_fsck, + jfs_fscklog, jfs_logdump, jfs_mkfs, jfs_tune, + mkfs.jfs +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fsck.jfs +

+
+

+ is used to replay the JFS transaction log, check a + JFS formatted device for errors, and fix any errors + found +

+
+

+ jfs_fsck +

+
+

+ is a hard link to fsck.jfs +

+
+

+ mkfs.jfs +

+
+

+ constructs an JFS file system +

+
+

+ jfs_mkfs +

+
+

+ is a hard link to mkfs.jfs +

+
+

+ jfs_debugfs +

+
+

+ is a program which can be used to perform various + low-level actions on a JFS formatted device +

+
+

+ jfs_fscklog +

+
+

+ extracts a JFS fsck service log into a file and/or + formats and displays the extracted file +

+
+

+ jfs_logdump +

+
+

+ dumps the contents of the journal log from the + specified JFS formatted device into output file + ./jfslog.dmp +

+
+

+ jfs_tune +

+
+

+ adjusts tunable file system parameters on JFS file + systems +

+
+
+
+
+
+
+
+

+ LVM2-2.03.34 +

+
+
+
+
+
+

+ Introduction to LVM2 +

+

+ The LVM2 package is a set of + tools that manage logical partitions. It allows spanning of + file systems across multiple physical disks and disk + partitions and provides for dynamic growing or shrinking of + logical partitions, mirroring and low storage footprint + snapshots. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://sourceware.org/ftp/lvm2/LVM2.2.03.34.tgz +

    +
  • +
  • +

    + Download MD5 sum: 947741079e22a35d76aefa99861b406a +

    +
  • +
  • +

    + Download size: 2.8 MB +

    +
  • +
  • +

    + Estimated disk space required: 41 MB (add 20 MB for + tests; transient files can grow up to around 300 MB in + the /tmp directory during tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (add 9 to 48 SBU for + tests, depending on disk speed and whether ram block + device is enabled in the kernel) +

    +
  • +
+
+

+ LVM2 + Dependencies +

+
+ Required +
+

+ libaio-0.3.113 +

+
+ Optional +
+

+ libnvme-1.15, mdadm-4.4, Valgrind-3.25.1, + Which-2.23, xfsprogs-6.15.0 + (latter four may be used, but are not required, for tests), + + reiserfsprogs, thin-provisioning-tools, + and vdo +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel: +

+
+

+ Note +

+

+ There are several other Device Mapper options in the kernel + beyond those listed below. In order to get reasonable + results if running the regression tests, all must be + enabled either internally or as a module. The tests will + all time out if Magic SysRq key is not enabled. +

+
+
Device Drivers --->
+  [*] Block devices --->                                               [BLK_DEV]
+    <*/M> RAM block device support                                 [BLK_DEV_RAM]
+  [*] Multiple devices driver support (RAID and LVM) --->                   [MD]
+    <*/M> Device mapper support                                     [BLK_DEV_DM]
+    <*/M>   Crypt target support                                      [DM_CRYPT]
+    <*/M>   Snapshot target                                        [DM_SNAPSHOT]
+    <*/M>   Thin provisioning target                      [DM_THIN_PROVISIONING]
+    <*/M>   Cache target (EXPERIMENTAL)                               [DM_CACHE]
+    <*/M>   Mirror target                                            [DM_MIRROR]
+    <*/M>   Zero target                                                [DM_ZERO]
+    <*/M>   I/O delaying target                                       [DM_DELAY]
+
+Kernel hacking --->
+  Generic Kernel Debugging Instruments --->
+    [*] Magic SysRq key                                            [MAGIC_SYSRQ]
+
+
+

+ Installation of LVM2 +

+

+ Install LVM2 by running the + following commands: +

+
PATH+=:/usr/sbin                \
+./configure --prefix=/usr       \
+            --enable-cmdlib     \
+            --enable-pkgconfig  \
+            --enable-udev_sync  &&
+make
+

+ The tests use udev for + logical volume synchronization, so the LVM udev rules and + some utilities need to be installed before running the tests. + If you are installing LVM2 + for the first time, and do not want to install the full + package before running the tests, the minimal set of + utilities can be installed by running the following + instructions as the root + user: +

+
make -C tools install_tools_dynamic &&
+make -C udev  install               &&
+make -C libdm install
+

+ To test the results, issue, as the root user: +

+
LC_ALL=en_US.UTF-8 make check_local
+

+ Some tests may hang. In this case they can be skipped by + adding S=<testname> to the + make command. + Other targets are available and can be listed with + make -C test + help. The test timings are very dependent on + the speed of the disk(s), and on the number of enabled kernel + options. +

+

+ The tests do not implement the “expected fail” + possibility, and a small number of test failures is expected + by upstream. More failures may happen because some kernel + options are missing. For example, the lack of the + dm-delay device mapper + target explains some failures. Some tests may fail if there + is insufficient free space available in the partition with + the /tmp directory. At least one test fails if 16 TB is not + available. Some tests are flagged “warned” if + thin-provisioning-tools + are not installed. A workaround is to add the following flags + to configure: +

+
     --with-thin-check=    \
+     --with-thin-dump=     \
+     --with-thin-repair=   \
+     --with-thin-restore=  \
+     --with-cache-check=   \
+     --with-cache-dump=    \
+     --with-cache-repair=  \
+     --with-cache-restore= \
+

+ Some tests may hang. They can be removed if necessary, for + example: rm + test/shell/lvconvert-raid-reshape.sh. The + tests generate a lot of kernel messages, which may clutter + your terminal. You can disable them by issuing dmesg -D before running the + tests (do not forget to issue dmesg -E when tests are + done). +

+
+

+ Note +

+

+ The checks create device nodes in the /tmp directory. The + tests will fail if /tmp is mounted with the nodev option. +

+
+

+ Now, as the root user: +

+
make install
+rm -fv /usr/lib/udev/rules.d/69-dm-lvm.rules
+
+
+

+ Command Explanations +

+

+ PATH+=:/usr/sbin: The path + must contain /usr/sbin for + proper system tool detection by the configure script. This + instruction ensures that PATH is properly set even if you + build as an unprivileged user. +

+

+ --enable-cmdlib: This + switch enables building of the shared command library. It is + required when building the event daemon. +

+

+ --enable-pkgconfig: + This switch enables installation of pkg-config support files. +

+

+ --enable-udev_sync: + This switch enables synchronisation with Udev processing. +

+

+ --enable-dmeventd: This switch + enables building of the Device + Mapper event daemon. +

+

+ rm + .../69-dm-lvm.rules: Under certain + circumstances, this udev rule calls systemd-run, which is not + available on sysv. It performs actions that are done by + another boot script anyway, so it is not needed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + blkdeactivate, dmeventd (optional), + dmsetup, fsadm, lvm, lvmdump, and lvm_import_vdo. There + are also numerous symbolic links to lvm that implement + specific functionalities +
+
+ Installed Libraries: + libdevmapper.so and liblvm2cmd.so; + optional: libdevmapper-event.so, + libdevmapper-event-lvm2.so, + libdevmapper-event-lvm2mirror.so, + libdevmapper-event-lvm2raid.so, + libdevmapper-event-lvm2snapshot.so, + libdevmapper-event-lvm2thin.so, and + libdevmapper-event-lvm2vdo.so +
+
+ Installed Directories: + /etc/lvm and /usr/lib/device-mapper + (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ blkdeactivate +

+
+

+ is a utility to deactivate block devices +

+
+

+ dmeventd +

+
+

+ (optional) is the Device Mapper event daemon +

+
+

+ dmsetup +

+
+

+ is a low level logical volume management tool +

+
+

+ fsadm +

+
+

+ is a utility used to resize or check filesystem on + a device +

+
+

+ lvm +

+
+

+ provides the command-line tools for LVM2. Commands are implemented + via symbolic links to this program to manage + physical devices (pv*), volume groups (vg*) and + logical volumes (lv*) +

+
+

+ lvmdump +

+
+

+ is a tool used to dump various information + concerning LVM2 +

+
+

+ vgimportclone +

+
+

+ is used to import a duplicated VG (e.g. hardware + snapshot) +

+
+

+ libdevmapper.so +

+
+

+ contains the Device + Mapper API functions +

+
+
+
+
+
+
+
+

+ About Logical Volume + Management (LVM) +

+
+
+
+
+

+ LVM manages disk drives. It allows multiple drives and + partitions to be combined into larger volume groups, assists in making + backups through a snapshot, and allows for dynamic + volume resizing. It can also provide mirroring similar to a + RAID 1 array. +

+

+ A complete discussion of LVM is beyond the scope of this + introduction, but basic concepts are presented below. +

+

+ To run any of the commands presented here, the LVM2-2.03.34 package must + be installed. All commands must be run as the root user. +

+

+ Management of disks with lvm is accomplished using the + following concepts: +

+
+
+
+ physical volumes +
+
+

+ These are physical disks or partitions such as /dev/sda3 + or /dev/sdb. +

+
+
+ volume groups +
+
+

+ These are named groups of physical volumes that can be + manipulated by the administrator. The number of physical + volumes that make up a volume group is arbitrary. + Physical volumes can be dynamically added or removed from + a volume group. +

+
+
+ logical volumes +
+
+

+ Volume groups may be subdivided into logical volumes. + Each logical volume can then be individually formatted as + if it were a regular Linux partition. Logical volumes may + be dynamically resized by the administrator according to + need. +

+
+
+
+

+ To give a concrete example, suppose that you have two 2 TB + disks. Also suppose a really large amount of space is required + for a very large database, mounted on /srv/mysql. This is what the initial set of + partitions would look like: +

+
Partition  Use    Size      Partition Type
+/dev/sda1  /boot  100MB     83 (Linux)
+/dev/sda2  /       10GB     83 (Linux)
+/dev/sda3  swap     2GB     82 (Swap)
+/dev/sda4  LVM    remainder 8e (LVM)
+/dev/sdb1  swap     2GB     82 (Swap)
+/dev/sdb2  LVM    remainder 8e (LVM)
+

+ First initialize the physical volumes: +

+
pvcreate /dev/sda4 /dev/sdb2
+
+

+ Note +

+

+ A full disk can be used as part of a physical volume, but + beware that the pvcreate command will + destroy any partition information on that disk. +

+
+

+ Next create a volume group named lfs-lvm: +

+
vgcreate lfs-lvm /dev/sda4  /dev/sdb2
+

+ The status of the volume group can be checked by running the + command vgscan. + Now create the logical volumes. Since there is about 3900 GB + available, leave about 900 GB free for expansion. Note that the + logical volume named mysql is larger than any physical + disk. +

+
lvcreate --name mysql --size 2500G lfs-lvm
+lvcreate --name home  --size  500G lfs-lvm
+

+ Finally the logical volumes can be formatted and mounted. In + this example, the jfs file system (jfsutils-1.1.15) is + used for demonstration purposes. +

+
mkfs -t ext4 /dev/lfs-lvm/home
+mkfs -t jfs  /dev/lfs-lvm/mysql
+mount /dev/lfs-lvm/home /home
+mkdir -p /srv/mysql
+mount /dev/lfs-lvm/mysql /srv/mysql
+

+ It may be needed to activate those logical volumes, for them to + appear in /dev. They can all be + activated at the same time by issuing, as the root user: +

+
vgchange -a y
+

+ The LFS boot scripts automatically make these logical volumes + available to the system in the udev script. Edit the + /etc/fstab file as required to + automatically mount them. +

+

+ A LVM logical volume can host a root filesystem, but requires + the use of an initramfs (initial RAM file system). The + initramfs proposed in the section called “About initramfs” + allows to pass the lvm volume in the root= switch of the kernel + command line. +

+

+ For more information about LVM, see the LVM HOWTO and the lvm + man pages. A good in-depth + guide is available from RedHat®, although it + makes sometimes reference to proprietary tools. +

+
+
+
+
+

+ About RAID +

+
+
+
+
+

+ The storage technology known as RAID (Redundant Array of + Independent Disks) combines multiple physical disks into a + logical unit. The drives can generally be combined to provide + data redundancy or to extend the size of logical units beyond + the capability of the physical disks or both. The technology + also allows for providing hardware maintenance without powering + down the system. +

+

+ The types of RAID organization are described in the + RAID Wiki. +

+

+ Note that while RAID provides protection against disk failures, + it is not a substitute for backups. A file deleted is still + deleted on all the disks of a RAID array. Modern backups are + generally done via rsync-3.4.1. +

+

+ There are three major types of RAID implementation: Hardware + RAID, BIOS-based RAID, and Software RAID. +

+
+

+ Hardware RAID +

+

+ Hardware based RAID provides capability through proprietary + hardware and data layouts. The control and configuration is + generally done via firmware in conjunction with executable + programs made available by the device manufacturer. The + capabilities are generally supplied via a PCI card, although + there are some instances of RAID components integrated in to + the motherboard. Hardware RAID may also be available in a + stand-alone enclosure. +

+

+ One advantage of hardware-based RAID is that the drives are + offered to the operating system as a logical drive and no + operating system dependent configuration is needed. +

+

+ Disadvantages include difficulties in transferring drives + from one system to another, updating firmware, or replacing + failed RAID hardware. +

+
+
+

+ BIOS-based RAID +

+

+ Some computers offer a hardware-like RAID implementation in + the system BIOS. Sometime this is referred to as 'fake' RAID + as the capabilities are generally incorporated into firmware + without any hardware acceleration. +

+

+ The advantages and disadvantages of BIOS-based RAID are + generally the same as hardware RAID with the additional + disadvantage that there is no hardware acceleration. +

+

+ In some cases, BIOS-based RAID firmware is enabled by default + (e.g. some DELL systems). If software RAID is desired, this + option must be explicitly disabled in the BIOS. +

+
+
+

+ Software RAID +

+

+ Software based RAID is the most flexible form of RAID. It is + easy to install and update and provides full capability on + all or part of any drives available to the system. In BLFS, + the RAID software is found in mdadm-4.4. +

+

+ Configuring a RAID device is straightforward using + mdadm. Generally devices are + created in the /dev directory + as /dev/mdx where x is an integer. +

+

+ The first step in creating a RAID array is to use + partitioning software such as fdisk or parted-3.6 to define + the partitions needed for the array. Usually, there will be + one partition on each drive participating in the RAID array, + but that is not strictly necessary. For this example, there + will be four disk drives: /dev/sda, /dev/sdb, /dev/sdc, and /dev/sdd. They will be partitioned as + follows: +

+
Partition Size     Type                Use
+sda1:     100 MB   fd Linux raid auto  /boot    (RAID 1) /dev/md0
+sda2:      10 GB   fd Linux raid auto  /        (RAID 1) /dev/md1
+sda3:       2 GB   83 Linux swap       swap
+sda4      300 GB   fd Linux raid auto  /home    (RAID 5) /dev/md2
+
+sdb1:     100 MB   fd Linux raid auto  /boot    (RAID 1) /dev/md0
+sdb2:      10 GB   fd Linux raid auto  /        (RAID 1) /dev/md1
+sdb3:       2 GB   83 Linux swap       swap
+sdb4      300 GB   fd Linux raid auto  /home    (RAID 5) /dev/md2
+
+sdc1:      12 GB   fd Linux raid auto  /usr/src (RAID 0) /dev/md3
+sdc2:     300 GB   fd Linux raid auto  /home    (RAID 5) /dev/md2
+
+sdd1:      12 GB   fd Linux raid auto  /usr/src (RAID 0) /dev/md3
+sdd2:     300 GB   fd Linux raid auto  /home    (RAID 5) /dev/md2 
+

+ In this arrangement, a separate boot partition is created as + the first small RAID array and a root filesystem as the + secong RAID array, both mirrored. The third partition is a + large (about 1TB) array for the /home directory. This provides an ability + to stripe data across multiple devices, improving speed for + both reading and writing large files. Finally, a fourth array + is created that concatenates two partitions into a larger + device. +

+
+

+ Note +

+

+ All mdadm commands must be + run as the root user. +

+
+

+ To create these RAID arrays the commands are: +

+
/sbin/mdadm -Cv /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
+/sbin/mdadm -Cv /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
+/sbin/mdadm -Cv /dev/md3 --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1
+/sbin/mdadm -Cv /dev/md2 --level=5 --raid-devices=4 \
+        /dev/sda4 /dev/sdb4 /dev/sdc2 /dev/sdd2 
+

+ The devices created can be examined by device. For example, + to see the details of /dev/md1, + use /sbin/mdadm --detail + /dev/md1: +

+
        Version : 1.2
+  Creation Time : Tue Feb  7 17:08:45 2012
+     Raid Level : raid1
+     Array Size : 10484664 (10.00 GiB 10.74 GB)
+  Used Dev Size : 10484664 (10.00 GiB 10.74 GB)
+   Raid Devices : 2
+  Total Devices : 2
+    Persistence : Superblock is persistent
+
+    Update Time : Tue Feb  7 23:11:53 2012
+          State : clean
+ Active Devices : 2
+Working Devices : 2
+ Failed Devices : 0
+  Spare Devices : 0
+
+           Name : core2-blfs:0  (local to host core2-blfs)
+           UUID : fcb944a4:9054aeb2:d987d8fe:a89121f8
+         Events : 17
+
+    Number   Major   Minor   RaidDevice State
+       0       8        1        0      active sync   /dev/sda1
+       1       8       17        1      active sync   /dev/sdb1
+

+ From this point, the partitions can be formatted with the + filesystem of choice (e.g. ext3, ext4, xfsprogs-6.15.0, + etc). The formatted partitions can then be mounted. The + /etc/fstab file can use the + devices created for mounting at boot time and the linux + command line in /boot/grub/grub.cfg can specify + root=/dev/md1. +

+
+

+ Note +

+

+ The swap devices should be specified in the /etc/fstab file as normal. The kernel + normally stripes swap data across multiple swap files and + should not be made part of a RAID array. +

+
+

+ For further options and management details of RAID devices, + refer to man + mdadm. +

+

+ Additional details for monitoring RAID arrays and dealing + with problems can be found at the Linux + RAID Wiki. +

+
+
+
+
+
+

+ mdadm-4.4 +

+
+
+
+
+
+

+ Introduction to mdadm +

+

+ The mdadm package contains + administration tools for software RAID. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ mdadm Dependencies +

+
+ Optional +
+

+ An MTA +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel, if necessary. Only the RAID types + desired are required. +

+
Device Drivers --->
+  [*] Multiple devices driver support (RAID and LVM) --->                   [MD]
+    <*/M>   RAID support                                            [BLK_DEV_MD]
+    [*]       Autodetect RAID arrays during kernel boot          [MD_AUTODETECT]
+    # Only the RAID types desired are required:
+    < /*/M> RAID-0 (striping) mode                                    [MD_RAID0]
+    < /*/M> RAID-1 (mirroring) mode                                   [MD_RAID1]
+    < /*/M> RAID-10 (mirrored striping) mode                         [MD_RAID10]
+    < /*/M> RAID-4/RAID-5/RAID-6 mode                               [MD_RAID456]
+
+
+

+ Installation of mdadm +

+

+ Fix a build error introduced by gcc-15: +

+
sed -e "s/__u8 signature\[4\]/& __attribute__ ((nonstring))/" \
+    -i platform-intel.h
+

+ Build mdadm by running the + following command: +

+
make
+

+ This package does not come with a working test suite. +

+

+ Now, as the root user: +

+
make BINDIR=/usr/sbin install
+
+
+

+ Command Explanations +

+

+ make + everything: This optional target creates + extra programs, particularly a statically-linked version of + mdadm. This + needs to be manually installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mdadm and mdmon +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ mdadm +

+
+

+ manages MD devices aka Linux Software RAID +

+
+

+ mdmon +

+
+

+ monitors MD external metadata arrays +

+
+
+
+
+
+
+
+

+ ntfs-3g-2022.10.3 +

+
+
+
+
+
+

+ Introduction to Ntfs-3g +

+
+

+ Note +

+

+ A new + read-write driver for NTFS, called NTFS3, has been added + into the Linux kernel since the 5.15 release. The + performance of NTFS3 is much better than ntfs-3g. To enable + NTFS3, enable the following options in the kernel + configuration and recompile the kernel if necessary: +

+
File systems --->
+  DOS/FAT/EXFAT/NT Filesystems --->
+    <*/M> NTFS Read-Write file system support                         [NTFS3_FS]
+    # This makes the kernel use NTFS3 when the userspace requests the old
+    # read-only NTFS driver:
+    <*/M> NTFS file system support                                     [NTFS_FS]
+

+ With the kernel support available, ntfs-3g is only needed + if you need the utilities from it (for example, to create + or check NTFS filesystems). +

+
+

+ The Ntfs-3g package contains + a stable, read-write open source driver for NTFS partitions. + NTFS partitions are used by most Microsoft operating systems. + Ntfs-3g allows you to mount NTFS partitions in read-write + mode from your Linux system. It uses the FUSE kernel module + to be able to implement NTFS support in userspace. The + package also contains various utilities useful for + manipulating NTFS partitions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Ntfs-3g Dependencies +

+
+ Optional +
+

+ fuse 2.x (this + disables user mounts) +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
File systems --->
+  <*/M> FUSE (Filesystem in Userspace) support                         [FUSE_FS]
+

+ Note that it is only needed for mounting NTFS partitions with + ntfs-3g. If you will use the in-kernel NTFS3 driver for + mounting NTFS partitions (as the BLFS editors recommend) + instead, you can skip this configuration item. +

+
+
+

+ Installation of Ntfs-3g +

+

+ Install Ntfs-3g by running + the following commands: +

+
./autogen.sh &&
+
+./configure --prefix=/usr        \
+            --disable-static     \
+            --with-fuse=internal \
+            --docdir=/usr/share/doc/ntfs-3g-2022.10.3 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ It's recommended to use the in-kernel NTFS3 driver for + mounting NTFS filesystems, instead of ntfs-3g (see the note + at the start of this page). However, if you want to use + ntfs-3g to mount the NTFS filesystems anyway, create a + symlink for the mount command: +

+
ln -svf ../bin/ntfs-3g /usr/sbin/mount.ntfs &&
+ln -svf ntfs-3g.8 /usr/share/man/man8/mount.ntfs.8
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-fuse=internal: + This switch dynamically forces ntfs-3g to use an internal copy of the + fuse-2.x library. This is + required if you wish to allow users to mount NTFS partitions. +

+

+ --disable-ntfsprogs: Disables + installation of various utilities used to manipulate NTFS + partitions. +

+

+ chmod -v 4755 + /usr/bin/ntfs-3g: Making mount.ntfs setuid + root allows non root users to mount NTFS partitions. +

+
+
+

+ Using Ntfs-3g +

+

+ To mount a Windows partition at boot time, put a line like + this in /etc/fstab: +

+
/dev/sda1 /mnt/windows auto defaults 0 0
+

+ To allow users to mount a usb stick with an NTFS filesystem + on it, put a line similar to this (change sdc1 to whatever a + usb stick would be on your system) in /etc/fstab: +

+
/dev/sdc1 /mnt/usb auto user,noauto,umask=0,utf8 0 0
+

+ In order for a user to be able to mount the usb stick, they + will need to be able to write to /mnt/usb, so as the root user: +

+
chmod -v 777 /mnt/usb
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lowntfs-3g, mkfs.ntfs, mkntfs, + mount.lowntfs-3g, mount.ntfs, mount.ntfs-3g, ntfs-3g, + ntfs-3g.probe, ntfscat, ntfsclone, ntfscluster, ntfscmp, + ntfscp, ntfsfix, ntfsinfo, ntfslabel, ntfsls, ntfsresize + and ntfsundelete +
+
+ Installed Library: + libntfs-3g.so +
+
+ Installed Directories: + /usr/include/ntfs-3g and + /usr/share/doc/ntfs-3g +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ lowntfs-3g +

+
+

+ is similar to ntfs-3g but uses the Fuse low-level + interface +

+
+

+ mkfs.ntfs +

+
+

+ is a symlink to mkntfs +

+
+

+ mkntfs +

+
+

+ creates an NTFS file system +

+
+

+ mount.lowntfs-3g +

+
+

+ is a symlink to lowntfs-3g +

+
+

+ mount.ntfs +

+
+

+ mounts an NTFS filesystem +

+
+

+ mount.ntfs-3g +

+
+

+ is a symbolic link to ntfs-3g +

+
+

+ ntfs-3g +

+
+

+ is an NTFS driver, which can create, remove, + rename, move files, directories, hard links, and + streams. It can also read and write files, + including streams, sparse files and transparently + compressed files. It can also handle special files + like symbolic links, devices, and FIFOs; moreover + it provides standard management of file ownership + and permissions, including POSIX ACLs +

+
+

+ ntfs-3g.probe +

+
+

+ tests if an NTFS volume is mountable read only or + read-write, and exits with a status value + accordingly. The volume can be a block device or + image file +

+
+

+ ntfscluster +

+
+

+ identifies files in a specified region of an NTFS + volume +

+
+

+ ntfscp +

+
+

+ copies a file to an NTFS volume +

+
+

+ ntfsfix +

+
+

+ fixes common errors and forces Windows to check an + NTFS partition +

+
+

+ ntfsls +

+
+

+ lists directory contents on an NTFS filesystem +

+
+

+ ntfscat +

+
+

+ prints NTFS files and streams on the standard + output +

+
+

+ ntfsclone +

+
+

+ clones an NTFS filesystem +

+
+

+ ntfscmp +

+
+

+ compares two NTFS filesystems and shows the + differences +

+
+

+ ntfsinfo +

+
+

+ dumps a file's attributes +

+
+

+ ntfslabel +

+
+

+ displays or changes the label on an ntfs file + system +

+
+

+ ntfsresize +

+
+

+ resizes an NTFS filesystem without data loss +

+
+

+ ntfsundelete +

+
+

+ recovers a deleted file from an NTFS volume +

+
+

+ libntfs-3g.so +

+
+

+ contains the Ntfs-3g API functions +

+
+
+
+
+
+
+
+

+ gptfdisk-1.0.10 +

+
+
+
+
+
+

+ Introduction to gptfdisk +

+

+ The gptfdisk package is a + set of programs for creation and maintenance of GUID + Partition Table (GPT) disk drives. A GPT partitioned disk is + required for drives greater than 2 TB and is a modern + replacement for legacy PC-BIOS partitioned disk drives that + use a Master Boot Record (MBR). The main program, + gdisk, has an + interface similar to the classic fdisk program. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ gptfdisk Dependencies +

+
+ Required +
+

+ popt-1.19 +

+
+ Optional +
+

+ ICU-77.1 +

+
+
+

+ Installation of gptfdisk +

+

+ The gptfdisk package comes + with a rudimentary Makefile. + First we update it to provide a simple build and install + interface and fix the location of a header file and fix some + minor location issues. Install gptfdisk by running the following + commands: +

+
patch -Np1 -i ../gptfdisk-1.0.10-convenience-1.patch &&
+sed -i 's|ncursesw/||' gptcurses.cc &&
+sed -i 's|sbin|usr/sbin|' Makefile  &&
+
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ patch -Np1 ...: + This patch modifies the Makefile file so that it provides an + “install” target. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cgdisk, gdisk, fixparts, and + sgdisk +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ cgdisk +

+
+

+ is an ncurses-based tool for manipulating GPT + partitions +

+
+

+ gdisk +

+
+

+ is an interactive text-mode tool for manipulating + GPT partitions +

+
+

+ fixparts +

+
+

+ repairs mis-formatted MBR based disk partitions +

+
+

+ sgdisk +

+
+

+ is a partition manipulation program for GPT + partitions similar to sfdisk +

+
+
+
+
+
+
+
+

+ parted-3.6 +

+
+
+
+
+
+

+ Introduction to parted +

+

+ The Parted package is a disk + partitioning and partition resizing tool. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/parted/parted-3.6.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 93d2d8f22baebc5eb65b85da05a79e4e +

    +
  • +
  • +

    + Download size: 1.8 MB +

    +
  • +
  • +

    + Estimated disk space required: 29 MB (additional 3 MB + for the tests and additional 2 MB for optional PDF and + Postscript documentation) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (additional 3.6 SBU for + the tests) +

    +
  • +
+
+

+ Parted Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ dosfstools-4.2, texlive-20250308 (or install-tl-unx), and Digest::CRC + (for tests) +

+
+
+

+ Optional + Kernel Configuration for Tests +

+

+ About 20 % more tests are run if the following kernel module + is built: +

+
Device Drivers --->
+  SCSI device support --->
+    [*] SCSI low-level drivers --->                              [SCSI_LOWLEVEL]
+      <M> SCSI debugging host and device simulator                  [SCSI_DEBUG]
+
+
+

+ Installation of parted +

+

+ First, make the package compatible with gcc-15: +

+
sed -i 's/do_version ()/do_version (PedDevice** dev, PedDisk** diskp)/' parted/parted.c
+

+ Install Parted by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make &&
+
+make -C doc html                                       &&
+makeinfo --html      -o doc/html       doc/parted.texi &&
+makeinfo --plaintext -o doc/parted.txt doc/parted.texi
+

+ If you have texlive-20250308 installed and + wish to create PDF and Postscript documentation issue the + following commands: +

+
cp build-aux/texinfo.tex doc               &&
+texi2pdf -o doc/parted.pdf doc/parted.texi &&
+texi2dvi -o doc/parted.dvi doc/parted.texi &&
+dvips    -o doc/parted.ps  doc/parted.dvi
+

+ To test the results, issue, as the root user: +

+
make check
+
+

+ Note +

+

+ Many tests are skipped if not run as the root user. +

+
+

+ Now, as the root user: +

+
make install &&
+install -v -m755 -d /usr/share/doc/parted-3.6/html &&
+install -v -m644    doc/html/* \
+                    /usr/share/doc/parted-3.6/html &&
+install -v -m644    doc/{FAT,API,parted.{txt,html}} \
+                    /usr/share/doc/parted-3.6
+

+ Install the optional PDF and Postscript documentation by + issuing the following command as the root user: +

+
install -v -m644 doc/FAT doc/API doc/parted.{pdf,ps,dvi} \
+                    /usr/share/doc/parted-3.6
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-device-mapper: This + option disables device mapper support. Add this parameter if + you have not installed LVM2. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + parted and partprobe +
+
+ Installed Libraries: + libparted.so and + libparted-fs-resize.so +
+
+ Installed Directories: + /usr/include/parted and + /usr/share/doc/parted-3.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ parted +

+
+

+ is a partition manipulation program +

+
+

+ partprobe +

+
+

+ informs the OS of partition table changes +

+
+

+ libparted.so +

+
+

+ contains the Parted API functions +

+
+
+
+
+
+
+
+

+ smartmontools-7.5 +

+
+
+
+
+
+

+ Introduction to smartmontools +

+

+ The smartmontools package + contains utility programs (smartctl, smartd) to + control/monitor storage systems using the Self-Monitoring, + Analysis and Reporting Technology System (S.M.A.R.T.) built + into most modern ATA and SCSI disks. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ smartmontools Dependencies +

+
+ Optional (runtime) +
+

+ cURL-8.15.0 or Lynx-2.9.2 or Wget-1.25.0 (download tools), + and GnuPG-2.4.8 (encrypted hard disks) +

+
+
+

+ Installation of smartmontools +

+

+ Install smartmontools by + running the following commands: +

+
./configure --prefix=/usr           \
+            --sysconfdir=/etc       \
+            --with-initscriptdir=no \
+            --with-libsystemd=no    \
+            --docdir=/usr/share/doc/smartmontools-7.5 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-initscriptdir=no: This + switch suppresses the default initialization script. See + below for the BLFS script. +

+

+ --with-libsystemd=no: + This switch disables support for the sd-notify notification + system provided by systemd. +

+
+
+

+ Configuring smartmontools +

+
+
+
+
+

+ Config File +

+
+
+
+

+ /etc/smartd.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ See the embedded comments in /etc/smartd.conf for detailed + instructions on customizing the smartd daemon. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ If you want the smartd + daemon to start automatically when the system is booted, + install the /etc/rc.d/init.d/smartd init script + included in the blfs-bootscripts-20250225 package. +

+
make install-smartd
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + smartctl, smartd, and + update-smart-drivedb +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/smartmontools, + /usr/share/doc/smartmontools-7.5, and + /etc/smartd_warning.d +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ smartctl +

+
+

+ is the control and monitor utility for SMART Disks +

+
+

+ smartd +

+
+

+ is the SMART disk monitoring daemon +

+
+

+ update-smart-drivedb +

+
+

+ is the update tool for the smartmontools drive + database +

+
+
+
+
+
+
+
+

+ sshfs-3.7.3 +

+
+
+
+
+
+

+ Introduction to Sshfs +

+

+ The Sshfs package contains a + filesystem client based on the SSH File Transfer Protocol. + This is useful for mounting a remote computer that you have + ssh access to as a local filesystem. This allows you to drag + and drop files or run shell commands on the remote files as + if they were on your local computer. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Sshfs Dependencies +

+
+ Required +
+

+ Fuse-3.17.4, GLib-2.84.4, and OpenSSH-10.0p1. +

+
+ Optional +
+

+ docutils-0.21.2 (required to build the + man page) +

+
+
+

+ Installation of Sshfs +

+

+ Install Sshfs by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Using Sshfs +

+

+ To mount an ssh server you need to be able to log into the + server. For example, to mount your remote home folder to the + local ~/examplepath (the directory must exist and you must + have permissions to write to it): +

+
sshfs example.com:/home/userid ~/examplepath
+

+ When you've finished work and want to unmount it again: +

+
fusermount3 -u ~/example
+

+ You can also mount an sshfs + filesystem at boot by adding an entry similar to the + following in the /etc/fstab + file: +

+
userid@example.com:/path /media/path fuse.sshfs _netdev,IdentityFile=/home/userid/.ssh/id_rsa 0 0
+

+ See man 1 sshfs + and man 8 + mount.fuse3 for all available mount options. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + sshfs +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ sshfs +

+
+

+ mounts an ssh server as a + local file system +

+
+
+
+
+
+
+
+

+ xfsprogs-6.15.0 +

+
+
+
+
+
+

+ Introduction to xfsprogs +

+

+ The xfsprogs package + contains administration and debugging tools for the XFS file + system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xfsprogs Dependencies +

+
+ Required +
+

+ inih-61 and + liburcu-0.15.3 +

+
+ Optional +
+

+ ICU-77.1 + (for unicode name scanning in xfs_scrub) +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel: +

+
File systems --->
+  <*/M> XFS filesystem support                                          [XFS_FS]
+
+
+

+ Installation of xfsprogs +

+

+ Install xfsprogs by running + the following commands: +

+
make DEBUG=-DNDEBUG     \
+     INSTALL_USER=root  \
+     INSTALL_GROUP=root \
+     LOCAL_CONFIGURE_OPTIONS="--localstatedir=/var"
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PKG_DOC_DIR=/usr/share/doc/xfsprogs-6.15.0 install     &&
+make PKG_DOC_DIR=/usr/share/doc/xfsprogs-6.15.0 install-dev &&
+
+rm -rfv /usr/lib/libhandle.{a,la}
+
+
+

+ Command Explanations +

+

+ sed ... static long + filesize...: That sed fixes an issue which + appears when building on 32 bit systems, only. There is a + mismatch in prototype and function header which results in + error on that architecture. +

+

+ DEBUG=-DNDEBUG: Turns + off debugging symbols. +

+

+ INSTALL_USER=root + INSTALL_GROUP=root: + This sets the owner and group of the installed files. +

+

+ LOCAL_CONFIGURE_OPTIONS="--localstatedir=/var": + This sets the state directory to /var, preventing /usr/var + from being created. +

+

+ OPTIMIZER="...": Adding this + parameter to the end of the make command overrides the + default optimization settings. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fsck.xfs, mkfs.xfs, xfs_admin, + xfs_bmap, xfs_copy, xfs_db, xfs_estimate, xfs_freeze, + xfs_fsr, xfs_growfs, xfs_info, xfs_io, xfs_logprint, + xfs_mdrestore, xfs_metadump, xfs_mkfile, xfs_ncheck, + xfs_property, xfs_protofile, xfs_quota, xfs_repair, + xfs_rtcp, xfs_scrub, xfs_scrub_all, and + xfs_spaceman +
+
+ Installed Libraries: + libhandle.so +
+
+ Installed Directories: + /usr/include/xfs, + /usr/lib/xfsprogs, /usr/share/xfsprogs, and + /usr/share/doc/xfsprogs-6.15.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fsck.xfs +

+
+

+ simply exits with a zero status, since XFS + partitions are checked at mount time +

+
+

+ mkfs.xfs +

+
+

+ constructs an XFS file system +

+
+

+ xfs_admin +

+
+

+ changes the parameters of an XFS file system +

+
+

+ xfs_bmap +

+
+

+ prints block mapping for an XFS file +

+
+

+ xfs_copy +

+
+

+ copies the contents of an XFS file system to one or + more targets in parallel +

+
+

+ xfs_estimate +

+
+

+ for each directory argument, estimates the space + that directory would take if it were copied to an + XFS filesystem (does not cross mount points) +

+
+

+ xfs_db +

+
+

+ is used to debug an XFS file system +

+
+

+ xfs_freeze +

+
+

+ suspends access to an XFS file system +

+
+

+ xfs_fsr +

+
+

+ applicable only to XFS filesystems, improves the + organization of mounted filesystems, the + reorganization algorithm operates on one file at a + time, compacting or otherwise improving the layout + of the file extents (contiguous blocks of file + data) +

+
+

+ xfs_growfs +

+
+

+ expands an XFS file system +

+
+

+ xfs_info +

+
+

+ is equivalent to invoking xfs_growfs, but + specifying that no change to the file system is to + be made +

+
+

+ xfs_io +

+
+

+ is a debugging tool like xfs_db, but is + aimed at examining the regular file I/O path rather + than the raw XFS volume itself +

+
+

+ xfs_logprint +

+
+

+ prints the log of an XFS file system +

+
+

+ xfs_mdrestore +

+
+

+ restores an XFS metadump image to a filesystem + image +

+
+

+ xfs_metadump +

+
+

+ copies XFS filesystem metadata to a file +

+
+

+ xfs_mkfile +

+
+

+ creates an XFS file, padded with zeroes by default +

+
+

+ xfs_ncheck +

+
+

+ generates pathnames from inode numbers for an XFS + file system +

+
+

+ xfs_property +

+
+

+ examines and edits properties about a XFS + filesystem +

+
+

+ xfs_protofile +

+
+

+ creates a protofile for use with mkfs.xfs +

+
+

+ xfs_quota +

+
+

+ is a utility for reporting and editing various + aspects of filesystem quotas +

+
+

+ xfs_repair +

+
+

+ repairs corrupt or damaged XFS file systems +

+
+

+ xfs_rtcp +

+
+

+ copies a file to the real-time partition on an XFS + file system +

+
+

+ xfs_scrub +

+
+

+ checks and repairs the contents of a mounted XFS + file system +

+
+

+ xfs_scrub_all +

+
+

+ scrubs all mounted XFS file systems +

+
+

+ xfs_spaceman +

+
+

+ reports and controls free space usage in an XFS + file system +

+
+

+ libhandle.so +

+
+

+ contains XFS-specific functions that provide a way + to perform certain filesystem operations without + using a file descriptor to access filesystem + objects +

+
+
+
+
+
+
+
+

+ Packages for UEFI Boot +

+
+
+
+
+
+
+
+

+ efivar-39 +

+
+
+
+
+
+

+ Introduction to efivar +

+

+ The efivar package provides + tools and libraries to manipulate EFI variables. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ efivar Dependencies +

+
+ Optional +
+

+ mandoc + (for the man page of efisecdb) +

+
+
+

+ Installation of efivar +

+
+

+ Note +

+

+ This package cannot function properly on a 32-bit system + with a 64-bit UEFI implementation. Don't install this + package (or efibootmgr) on 32-bit system unless you are + absolutely sure you have a 32-bit UEFI implementation, + which is very rare in practice. +

+
+

+ Build efivar with the + following commands: +

+
make ENABLE_DOCS=0
+

+ The test suite of this package is dangerous. Running it may + trigger firmware bugs and make your system unusable without + using some special hardware to reprogram the firmware. +

+

+ Now, as the root user: +

+
make install ENABLE_DOCS=0 LIBDIR=/usr/lib
+

+ To avoid a hard dependency on mandoc we used ENABLE_DOCS=0, but it causes + all the man pages skipped from the installation even though + most of them actually does not need mandoc. Still as the + root user, install these man + pages: +

+
install -vm644 docs/efivar.1 /usr/share/man/man1 &&
+install -vm644 docs/*.3      /usr/share/man/man3
+
+
+

+ Command Explanations +

+

+ ENABLE_DOCS=0: + Disable the generation of man pages, in order to allow + building this package without mandoc installed. +

+

+ LIBDIR=/usr/lib: This + option overrides the default library directory of the package + (/usr/lib64, which is not used + by LFS). +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + efisecdb and efivar +
+
+ Installed Libraries: + libefiboot.so, libefisec.so, and + libefivar.so +
+
+ Installed Directories: + /usr/include/efivar +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ efisecdb +

+
+

+ is a utility for managing UEFI signature lists +

+
+

+ efivar +

+
+

+ is a tool to manipulate UEFI variables +

+
+

+ libefiboot.so +

+
+

+ is a library used by efibootmgr +

+
+

+ libefisec.so +

+
+

+ is a library for managing UEFI signature lists +

+
+

+ libefivar.so +

+
+

+ is a library for the manipulation of EFI variables +

+
+
+
+
+
+
+
+

+ efibootmgr-18 +

+
+
+
+
+
+

+ Introduction to efibootmgr +

+

+ The efibootmgr package + provides tools and libraries to manipulate EFI variables. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ efibootmgr Dependencies +

+
+ Required +
+

+ efivar-39 and popt-1.19 +

+
+
+

+ Installation of efibootmgr +

+

+ Build efibootmgr with the + following commands: +

+
make EFIDIR=LFS EFI_LOADER=grubx64.efi
+

+ This package does not have a test suite. +

+

+ Now, as the root user: +

+
make install EFIDIR=LFS
+
+
+

+ Command Explanations +

+

+ EFIDIR=LFS: This + option specifies the distro's subdirectory name under + /boot/efi/EFI. The building + system of this package needs it to be set explicitly. +

+

+ EFI_LOADER=grubx64.efi: This + option specifies the name of the default EFI boot loader. It + is set to match the EFI boot loader provided by GRUB. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + efibootdump and efibootmgr +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ efibootdump +

+
+

+ is a tool to display individual UEFI boot options, + from a file or an UEFI variable +

+
+

+ efibootmgr +

+
+

+ is a tool to manipulate the UEFI Boot Manager +

+
+
+
+
+
+
+
+

+ GRUB-2.12 for EFI +

+
+
+
+
+
+

+ Introduction to GRUB +

+

+ The GRUB package provides + GRand Unified Bootloader. In this page it will be built with + UEFI support, which is not enabled for GRUB built in LFS. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 60c564b1bdc39d8e43b3aab4bc0fb140 +

    +
  • +
  • +

    + Download size: 29 MB +

    +
  • +
  • +

    + Estimated disk space required: 174 MB (with optional + dependencies and download) +

    +
  • +
  • +

    + Estimated build time: 0.6 SBU +

    +
  • +
+
+

+ Additional Downloads +

+
+

+ Optional Unicode font data for the GRUB menu (only + useful if FreeType is installed) +

+ +
+

+ GRUB + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ FreeType-2.13.3, Fuse-3.17.4, and LVM2-2.03.34 +

+

+ If you are building GRUB for a 32-bit LFS system to boot it + on a 64-bit UEFI firmware, rebuild GCC-15.2.0 with the --enable-targets=all switch + appended to the ../configure command. +

+
+
+

+ Installation of GRUB +

+

+ First, install font data as the root user if you've downloaded it and + you've installed the optional dependency FreeType-2.13.3: +

+
mkdir -pv /usr/share/fonts/unifont &&
+gunzip -c ../unifont-16.0.04.pcf.gz > /usr/share/fonts/unifont/unifont.pcf
+
+

+ Warning +

+

+ Unset any environment variables which may affect the build: +

+
unset {C,CPP,CXX,LD}FLAGS
+

+ Don't try “tuning” this package with custom + compilation flags: this package is a bootloader, with + low-level operations in the source code which is likely to + be broken by some aggressive optimizations. +

+
+

+ Add a file missing from the release tarball: +

+
echo depends bli part_gpt > grub-core/extra_deps.lst
+

+ Build GRUB with the + following commands: +

+
./configure --prefix=/usr        \
+            --sysconfdir=/etc    \
+            --disable-efiemu     \
+            --with-platform=efi  \
+            --target=x86_64      \
+            --disable-werror     &&
+make
+

+ This package does not have a test suite providing meaningful + results. +

+

+ Now, if you've skipped the LFS GRUB package, as the + root user install GRUB and + skip the remaining instructions in this section: +

+
make install &&
+mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
+

+ If you've not skipped LFS GRUB package, as the root user, only install the components + not installed from the LFS GRUB package instead: +

+
make -C grub-core install
+

+ If you've installed the optional font data and FreeType-2.13.3, install the + grub-mkfont + program and the font data files (without the font data files + GRUB can still function normally, but the boot menu will be + displayed using a coarse font or in a smaller region on the + screen). +

+
install -vm755 grub-mkfont /usr/bin/ &&
+install -vm644 ascii.h widthspec.h *.pf2 /usr/share/grub/
+

+ If both Fuse-3.17.4 and LVM2-2.03.34 are installed, + also install the grub-mount program: +

+
install -vm755 grub-mount /usr/bin/
+
+
+

+ Command Explanations +

+

+ --with-platform=efi: + Ensures building GRUB with EFI enabled. +

+

+ --target=x86_64: + 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. +

+

+ --target=i386: 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 --target=x86_64 if you are + absolutely sure + that LFS is running on such a system. +

+
+
+

+ Configuring GRUB +

+

+ Using GRUB to make the LFS system bootable on UEFI platform + will be discussed in Using + GRUB to Set Up the Boot Process with UEFI. +

+
+
+

+ Contents +

+

+ A list of the installed files, along with their short + descriptions can be found at + ../../../../lfs/view/12.4/chapter08/grub.html#contents-gRUB. +

+

+ Listed below are the newly installed programs along with + short descriptions. +

+
+
+
+ Installed Programs: + grub-mkfont and grub-mount + (optional) +
+
+ Installed Directories: + /usr/lib/grub/x86_64-efi +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ grub-mkfont +

+
+

+ converts common font file formats into PF2 +

+
+

+ grub-mount +

+
+

+ is a debug tool for filesystem driver +

+
+
+
+
+
+
+
+

+ Using GRUB to Set + Up the Boot Process with UEFI +

+
+
+
+
+
+

+ Turn Off Secure Boot +

+

+ BLFS does not have the essential packages to support Secure + Boot. To set up the boot process with GRUB and UEFI in BLFS, + Secure Boot must be turned off from the configuration + interface of the firmware. Read the documentation provided by + the manufacturer of your system to find out how. +

+
+
+

+ Kernel + Configuration for UEFI support +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
Processor type and features --->
+  [*] EFI runtime service support                                          [EFI]
+  [*]   EFI stub support                                              [EFI_STUB]
+
+-*- Enable the block layer --->                                          [BLOCK]
+  Partition Types --->
+    [ /*] Advanced partition selection                      [PARTITION_ADVANCED]
+    [*]     EFI GUID Partition support                           [EFI_PARTITION]
+
+File systems --->
+  DOS/FAT/EXFAT/NT Filesystems --->
+    <*/M> VFAT (Windows-95) fs support                                 [VFAT_FS]
+  Pseudo filesystems --->
+    <*/M> EFI Variable filesystem                                    [EFIVAR_FS]
+  -*- Native language support --->                                         [NLS]
+    <*/M> Codepage 437 (United States, Canada)                [NLS_CODEPAGE_437]
+    <*/M> NLS ISO 8859-1  (Latin 1; Western European Languages)  [NLS_ISO8859_1]
+
+

+ The meaning of the configuration options: +

+
+
+ CONFIG_PARTITION_ADVANCED +
+
+

+ If it's not enabled, CONFIG_EFI_PARTITION will + be enabled automatically. But when it's enabled, you + must set CONFIG_EFI_PARTITION to + enabled as well. +

+
+
+
+
+
+

+ Create an Emergency Boot Disk +

+

+ Ensure that an emergency boot disk is ready to “rescue” the system + in case the system becomes un-bootable. To make an emergency + boot disk with GRUB for an EFI based system, find a spare USB + flash drive and create a vfat + file system on it. Install dosfstools-4.2 first, then as the + root user: +

+
+

+ Warning +

+

+ The following command will erase all directories and files + in the partition. Make sure your USB flash drive contains + no data which will be needed, and change sdx1 to the device node + corresponding to the first partition of the USB flash + drive. Be careful not to overwrite your hard drive with a + typo! +

+
+
mkfs.vfat /dev/sdx1
+

+ Still as the root user, use + the fdisk + utility to set the first partition of the USB flash drive to + be an “EFI + system” partition (change sdx to the device node + corresponding to your USB flash drive): +

+
fdisk /dev/sdx
+
+Welcome to fdisk (util-linux 2.39.1).
+Changes will remain in memory only, until you decide to write them.
+Be careful before using the write command.
+
+
+Command (m for help): t
+Partition number (1-9, default 9): 1
+Partition type or alias (type L to list all): uefi
+Changed type of partition 'Linux filesystem' to 'EFI System'.
+
+Command (m for help): w
+The partition table has been altered.
+Syncing disks.
+

+ Still as the root user, + create a mount point for the EFI partition on the USB flash + drive and mount it: +

+
mount --mkdir -v -t vfat /dev/sdx1 -o codepage=437,iocharset=iso8859-1 \
+      /mnt/rescue
+

+ Install GRUB for EFI on the partition: +

+
grub-install --target=x86_64-efi --removable \
+             --efi-directory=/mnt/rescue --boot-directory=/mnt/rescue
+

+ Unmount the partition: +

+
umount /mnt/rescue
+

+ Now the USB flash drive can be used as an emergency boot disk + on any x86-64 UEFI platform. To learn how to select this + flash drive as the boot device, read the manual of your + motherboard or laptop. It will boot the system and show the + GRUB shell. Then you can type commands to boot your operating + system from the hard drive. +

+
+
+

+ Find or Create the EFI System Partition +

+

+ On EFI based systems, the bootloaders are installed in a + special FAT32 partition called an EFI System Partition (ESP). If + your system supports EFI, and a recent version of some Linux + distribution or Windows is pre-installed, it's likely that + the ESP has already been created. As the root user, list all the partitions on + your hard drive (replace sda with the device + corresponding to the appropriate hard drive): +

+
fdisk -l /dev/sda
+

+ The “Type” column of the ESP should be + EFI System. +

+

+ If the system or the hard drive is new, or it's the first + installation of a UEFI-booted OS on the system, the ESP may + not exist. In that case, install dosfstools-4.2 + first. Then create a new partition, make a vfat file system on it, and set the + partition type to “EFI system.” See the instructions for + the emergency boot device above as a reference. +

+
+

+ Warning +

+

+ Some (old) UEFI implementations may require the ESP to be + the first partition on the disk. +

+
+

+ Now, as the root user, create + the mount point for the ESP, and mount it (replace + sda1 with the + device node corresponding to the ESP): +

+
mount --mkdir -v -t vfat /dev/sda1 -o codepage=437,iocharset=iso8859-1 \
+      /boot/efi
+

+ If you want to mount the ESP automatically during system + boot, as the root user, add + an entry for the ESP into /etc/fstab: +

+
cat >> /etc/fstab << EOF
+/dev/sda1 /boot/efi vfat codepage=437,iocharset=iso8859-1 0 1
+EOF
+
+
+

+ Minimal Boot Configuration with GRUB and EFI +

+

+ On UEFI based systems, GRUB works by installing an EFI + application (a special kind of executable) into the ESP. The + EFI firmware will search boot loaders in EFI applications + from boot entries recorded in EFI variables, and additionally + a hardcoded path EFI/BOOT/BOOTX64.EFI. Normally, a boot + loader should be installed into a custom path and the path + should be recorded in the EFI variables. The use of the + hardcoded path should be avoided if possible. However, in + some cases we have to use the hardcoded path: +

+
+
    +
  • +

    + The system is not booted with EFI yet, making EFI + variables inaccessible. +

    +
  • +
  • +

    + The EFI firmware is 64-bit but the LFS system is + 32-bit, making EFI variables inaccessible because the + kernel cannot invoke EFI runtime services with a + different virtual address length. +

    +
  • +
  • +

    + LFS is built for a Live USB, so we cannot rely on EFI + variables, which are stored in NVRAM or EEPROM on the + local machine. +

    +
  • +
  • +

    + You are unable or unwilling to install the efibootmgr for manipulating boot + entries in EFI variables. +

    +
  • +
+
+

+ In these cases, follow these instructions to install the GRUB + EFI application into the hardcoded path and make a minimal + boot configuration. Otherwise it's better to skip ahead and + set up the boot configuration normally. +

+

+ To install GRUB with the EFI application in the hardcoded + path EFI/BOOT/BOOTX64.EFI, + first ensure the boot partition is mounted at /boot and the ESP is mounted at + /boot/efi. Then, as the + root user, run the command: +

+
+

+ Note +

+

+ This command will overwrite /boot/efi/EFI/BOOT/BOOTX64.EFI. It may + break a bootloader already installed there. Back it up if + you are not sure. +

+
+
grub-install --target=x86_64-efi --removable
+

+ This command will install the GRUB EFI application into the + hardcoded path /boot/efi/EFI/BOOT/BOOTX64.EFI, so the EFI + firmware can find and load it. The remaining GRUB files are + installed in the /boot/grub + directory and will be loaded by BOOTX64.EFI during system boot. +

+
+

+ Note +

+

+ The EFI firmware usually prefers the EFI applications with + a path stored in EFI variables to the EFI application at + the hardcoded path. So you may need to invoke the boot + selection menu or firmware setting interface to select the + newly installed GRUB manually on the next boot. Read the + manual of your motherboard or laptop to learn how. +

+
+

+ If you've followed the instructions in this section and set + up a minimal boot configuration, now skip ahead to + “Creating the GRUB + Configuration File.” +

+
+
+

+ Mount the EFI Variable File System +

+

+ The installation of GRUB on a UEFI platform requires that the + EFI Variable file system, efivarfs, is mounted. As the root user, mount it if it's not already + mounted: +

+
mountpoint /sys/firmware/efi/efivars || mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
+

+ Now add an entry for the efivarfs in /etc/fstab so it will be mounted + automatically during system boot: +

+
cat >> /etc/fstab << EOF
+efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0
+EOF
+
+

+ Warning +

+

+ If the system is not booted with UEFI, the directory + /sys/firmware/efi will be + missing. In this case you should boot the system in UEFI + mode with the emergency boot disk or using a minimal boot + configuration created as above, then mount efivarfs and continue. +

+
+
+
+

+ Setting Up the Configuration +

+

+ On UEFI based systems, GRUB works by installing an EFI + application (a special kind of executable) into /boot/efi/EFI/[id]/grubx64.efi, where + /boot/efi is the mount point of + the ESP, and [id] is replaced + with an identifier specified in the grub-install command line. + GRUB will create an entry in the EFI variables containing the + path EFI/[id]/grubx64.efi so the + EFI firmware can find grubx64.efi and load it. +

+

+ grubx64.efi is very lightweight + (136 KB with GRUB-2.06) so it will not use much space in the + ESP. A typical ESP size is 100 MB (for Windows boot manager, + which uses about 50 MB in the ESP). Once grubx64.efi has been loaded by the + firmware, it will load GRUB modules from the boot partition. + The default location is /boot/grub. +

+

+ As the root user, install the + GRUB files into /boot/efi/EFI/LFS/grubx64.efi and + /boot/grub. Then set up the + boot entry in the EFI variables: +

+
grub-install --bootloader-id=LFS --recheck
+

+ If the installation is successful, the output should be: +

+
Installing for x86_64-efi platform.
+Installation finished. No error reported.
+

+ Issue the efibootmgr | cut -f + 1 command to recheck the EFI boot + configuration. An example of the output is: +

+
BootCurrent: 0000
+Timeout: 1 seconds
+BootOrder: 0005,0000,0002,0001,0003,0004
+Boot0000* ARCH
+Boot0001* UEFI:CD/DVD Drive
+Boot0002* Windows Boot Manager
+Boot0003* UEFI:Removable Device
+Boot0004* UEFI:Network Device
+Boot0005* LFS
+

+ Note that 0005 is the first in + the BootOrder, and Boot0005 is LFS. This means that on the next boot, the + version of GRUB installed by LFS will be used to boot the + system. +

+
+
+

+ Creating the GRUB Configuration File +

+

+ Generate /boot/grub/grub.cfg to + configure the boot menu of GRUB: +

+
cat > /boot/grub/grub.cfg << EOF
+# Begin /boot/grub/grub.cfg
+set default=0
+set timeout=5
+
+insmod part_gpt
+insmod ext2
+set root=(hd0,2)
+
+insmod efi_gop
+insmod efi_uga
+if loadfont /boot/grub/fonts/unicode.pf2; then
+  terminal_output gfxterm
+fi
+
+menuentry "GNU/Linux, Linux 6.16.1-lfs-12.4" {
+  linux   /boot/vmlinuz-6.16.1-lfs-12.4 root=/dev/sda2 ro
+}
+
+menuentry "Firmware Setup" {
+  fwsetup
+}
+EOF
+

+ Refer to the LFS + book for the basic knowledge about the grub.cfg file. (hd0,2), sda2, + and 6.16.1-lfs-12.4 must match + your configuration. +

+

+ The insmod + efi_gop and insmod efi_uga directives + load two modules for EFI-based video support. On most systems + the efi_gop module is enough. + The efi_uga module is only + useful for legacy systems, but it's harmless to load it + anyway. The video support is needed for the terminal_output gfxterm + directive to really work. +

+

+ The terminal_output + gfxterm directive changes the display + resolution of the GRUB menu to match your display device. It + will break the rendering if the unicode.pf2 font data file is not loaded, + so it's guarded by a if directive. +

+
+

+ Note +

+

+ From GRUB's perspective, the files are relative to the + partitions used. If you used a separate /boot partition, + remove /boot from the above paths (to kernel and to + unicode.pf2). You will also + need to change the "set root" line to point to the boot + partition. +

+
+

+ The Firmware Setup entry can be + used to enter the configuration interface provided by the + firmware (sometimes called “BIOS configuration”). +

+
+
+

+ Dual-booting with Windows +

+

+ Add a menu entry for Windows into grub.cfg: +

+
cat >> /boot/grub/grub.cfg << EOF
+# Begin Windows addition
+
+menuentry "Windows 11" {
+  insmod fat
+  insmod chain
+  set root=(hd0,1)
+  chainloader /EFI/Microsoft/Boot/bootmgfw.efi
+}
+EOF
+

+ (hd0,1) should be replaced with + the GRUB designated name for the ESP. The chainloader directive can be used to tell + GRUB to run another EFI executable, in this case the Windows + Boot Manager. You may put more usable tools in EFI executable + format (for example, an EFI shell) into the ESP and create + GRUB entries for them, as well. +

+
+
+
+
+
+
+

+ Chapter 6. Text Editors +

+
+
+
+
+

+ This chapter is referenced in the LFS book for those wishing to + use other editors on their LFS system. You're also shown how some + LFS installed programs benefit from being recompiled after GUI + libraries have been installed. +

+
+
+
+

+ Bluefish-2.2.17 +

+
+
+
+
+
+

+ Introduction to Bluefish +

+

+ Bluefish is a GTK+ text editor targeted towards + programmers and web designers, with many options to write + websites, scripts and programming code. Bluefish supports many programming and + markup languages, and it focuses on editing dynamic and + interactive websites. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Bluefish Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ enchant-2.8.12 (for spell checking), + Gucharmap-16.0.2, and Jing +

+
+
+

+ Installation of Bluefish +

+

+ First, disable a plugin requiring functions removed in + libxml-2.13.0 or later: +

+
sed '/infbrowser/d' -i src/Makefile.am &&
+autoreconf
+

+ Install Bluefish by running + the following commands: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/bluefish-2.2.17 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/icon-theme.cache + and /usr/share/applications/mimeinfo.cache. + To perform the update you must have desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -t -f --include-image-data /usr/share/icons/hicolor &&
+update-desktop-database
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + bluefish +
+
+ Installed Libraries: + several under + /usr/lib/bluefish/ +
+
+ Installed Directories: + /usr/lib/bluefish, + /usr/share/bluefish, /usr/share/doc/bluefish-2.2.17, and + /usr/share/xml/bluefish +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ bluefish +

+
+

+ is a GTK+ text + editor for markup and programming +

+
+
+
+
+
+
+
+

+ Ed-1.22.2 +

+
+
+
+
+
+

+ Introduction to Ed +

+

+ Ed is a line-oriented text + editor. It is used to create, display, modify and otherwise + manipulate text files, both interactively and via shell + scripts. Ed isn't something which many people use. It's + described here because it can be used by the patch program if + you encounter an ed-based patch file. This happens rarely + because diff-based patches are preferred these days. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/ed/ed-1.22.2.tar.lz +

    +
  • +
  • +

    + Download MD5 sum: 6a181e2fbc6a920aa72c471e8b431bd9 +

    +
  • +
  • +

    + Download size: 72 KB +

    +
  • +
  • +

    + Estimated disk space required: 1.0 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ Ed + Dependencies +

+
+ Required to uncompress the tarball +
+

+ libarchive-3.8.1 (for bsdtar) +

+
+
+

+ Installation of Ed +

+

+ Install Ed by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ed and red +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ ed +

+
+

+ is a line-oriented text editor +

+
+

+ red +

+
+

+ is a restricted ed—it can only + edit files in the current directory and cannot + execute shell commands +

+
+
+
+
+
+
+
+

+ Emacs-30.2 +

+
+
+
+
+
+

+ Introduction to Emacs +

+

+ The Emacs package contains + an extensible, customizable, self-documenting real-time + display editor. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/emacs/emacs-30.2.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 0adba4843ac864ba8c3c9b2a7deea176 +

    +
  • +
  • +

    + Download size: 53 MB +

    +
  • +
  • +

    + Estimated disk space required: 556 MB +

    +
  • +
  • +

    + Estimated build time: 0.6 SBU (Using parallelism=4) +

    +
  • +
+
+

+ Emacs Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ a graphical + environment, alsa-lib-1.2.14, Cairo-1.18.4, dbus-1.16.2, + GLib-2.84.4 (with GObject Introspection), + gsettings-desktop-schemas-48.0, + GPM-1.20.7, GTK-3.24.50, ImageMagick-7.1.2-1, Little + CMS-2.17, libjpeg-turbo-3.0.1, libpng-1.6.50, librsvg-2.61.0, + libseccomp-2.6.0, libwebp-1.6.0, + libxml2-2.14.5, MIT Kerberos + V5-1.22.1, SQLite-3.50.4, Valgrind-3.25.1, + intlfonts, libungif, + libotf, and m17n-lib - to + correctly display such complex scripts as Indic and Khmer, + and also for scripts that require Arabic shaping support + (Arabic and Farsi), mailutils, and libXaw3d +

+
+
+

+ Installation of Emacs +

+

+ Install Emacs by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. If make + succeeds, you can test the result by running src/emacs -Q, which is the + program that will be installed, with its auxiliary files. + This should start and display the application opening screen. +

+

+ Now, as the root user: +

+
make install &&
+chown -v -R root:root /usr/share/emacs/30.2 &&
+rm -vf /usr/lib/systemd/user/emacs.service
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + you can improve system performance and memory usage by + updating /usr/share/icons/hicolor/index.theme. To + perform the update you must have GTK-3.24.50 installed and + issue the following command as the root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor
+
+
+
+

+ Command Explanations +

+

+ --with-imagemagick: Use this if + you have installed ImageMagick-7.1.2-1 and wish to + link against it. +

+

+ --with-gif=no: Use this if you + have not installed giflib-5.2.2 or libungif. +

+

+ --with-tiff=no: Use this if you + have not installed libtiff-4.7.0. +

+

+ --with-gnutls=no: Use this if you + have not installed GnuTLS-3.8.10. +

+

+ --without-harfbuzz: Use this if + you have not installed harfBuzz-11.4.1. +

+

+ --with-json=no: Use this if you + have not installed jansson-2.14.1. +

+

+ --with-kerberos5: Use this option + if you have installed MIT Kerberos V5-1.22.1 and need + to use it for authentication in Emacs' built-in email client. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ctags, ebrowse, emacs (symlink), + emacs-30.2, emacsclient, and etags +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/libexec/emacs and + /usr/share/emacs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ctags +

+
+

+ creates cross-reference tagfile database files for + source code +

+
+

+ ebrowse +

+
+

+ permits browsing of C++ class hierarchies from + within emacs +

+
+

+ emacs +

+
+

+ is an editor +

+
+

+ emacsclient +

+
+

+ attaches an emacs session to + an already running emacsserver + instance +

+
+

+ etags +

+
+

+ is another program to generate source code + cross-reference tagfiles +

+
+
+
+
+
+
+
+

+ Gedit-48.1 +

+
+
+
+
+
+

+ Introduction to Gedit +

+

+ The Gedit package contains a + lightweight UTF-8 text editor for the GNOME Desktop. It needs a group of + packages to be installed before Gedit itself. This page will install all + of them. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+

+ Gedit requires several + libraries: +

+
+ +
+

+ Gedit Dependencies +

+
+ Required +
+

+ gsettings-desktop-schemas-48.0, + GTK-3.24.50, itstool-2.0.7, libhandy-1.8.3, libpeas-1.36.0, and + libxml2-2.14.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for documentation), + Vala-0.56.18, Valgrind-3.25.1, and + zeitgeist +

+
+
+

+ Installation of Gedit +

+

+ The first task is to install the needed libraries. Since all + the packages have the same build instructions, they can be + built in one go using a loop. +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ All of the packages come with a test suite. If you wish to + execute them, either comment out the rm -rf ... below, so that, + after all the packages are installed, you can come back to + the corresponding directory and run ninja test, or do + individual builds, running the tests for each of the + packages. Alternatively, you can uncomment the line + #ninja test + ..., and at the end, check the test results + with: +

+
grep -A5 Ok: *test.log
+

+ Libgedit-amtk's + test-action-map test is known to fail. +

+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ The order of builds is important. Install Gedit dependencies by running the + following commands: +

+
for package in \
+   libgedit-amtk-5.9.1.tar.bz2            \
+   libgedit-gtksourceview-299.5.0.tar.bz2 \
+   libgedit-gfls-0.3.0.tar.bz2            \
+   libgedit-tepl-6.13.0.tar.bz2
+do
+  packagedir=${package%.tar*}
+
+  echo "Building $packagedir"
+  tar -xf ../$package
+  pushd $packagedir
+    cd build
+
+    meson setup ..            \
+          --prefix=/usr       \
+          --buildtype=release \
+          -D gtk_doc=false
+    ninja
+
+    #ninja test 2>&1 | tee ../../$packagedir-test.log
+
+    as_root ninja install
+  popd
+
+  rm -rf $packagedir
+done
+

+ Finally, exit the shell that was started earlier: +

+
exit
+

+ Now install gedit itself by + running the following commands: +

+
cd build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gtk_doc=false    &&
+ninja
+

+ To test the results, run ninja + test. +

+

+ Now as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=false: + This switch disables generating the API documentation. Omit + this switch if you have GTK-Doc-1.34.0 installed and wish + to generate the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gedit +
+
+ Installed Libraries: + libgedit-48.so, libgedit-amtk-5.so, + libgedit-gfls-1.so, libgedit-gtksourceview-300.so, and + libgedit-tepl-6.so +
+
+ Installed Directories: + /usr/include/gedit-48, + /usr/include/libgedit-amtk-5, + /usr/include/libgedit-gfls-1, + /usr/include/libgedit-gtksourceview-300, + /usr/include/libgedit-tepl-6, + /usr/share/gtk-doc/html/libgedit-amtk-5.0, + /usr/share/libgedit-gtksourceview-300, and + /usr/{lib,share,share/help/*}/gedit +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gedit +

+
+

+ is a lightweight text editor integrated with the + GNOME Desktop +

+
+

+ libgedit-48.so +

+
+

+ contains all the functions used by the main + Gedit application +

+
+

+ libgedit-amtk-5.so +

+
+

+ provides a basic GTKUIManager replacement API based + on GAction +

+
+

+ libgedit-gfls-1.so +

+
+

+ provides functions for loading and saving files +

+
+

+ libgedit-gtksourceview-300.so +

+
+

+ contains convenience functions for text editing +

+
+

+ libgedit-tepl-6.so +

+
+

+ is a text editor framework for GTK text editors and IDEs +

+
+
+
+
+
+
+
+

+ JOE-4.6 +

+
+
+
+
+
+

+ Introduction to JOE +

+

+ JOE (Joe's own editor) is a + small text editor capable of emulating WordStar, Pico, and Emacs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of JOE +

+

+ Install JOE by running the + following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/joe-4.6 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+
+install -vm 755 joe/util/{stringify,termidx,uniproc} /usr/bin
+
+
+

+ Configuring JOE +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/joe/jmacsrc, + /etc/joe/joerc, /etc/joe/jpicorc, /etc/joe/jstarrc, /etc/joe/rjoerc, and ~/.joerc +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + jmacs, joe, jpico, jstar, rjoe, + stringify, termidx, and uniproc +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/joe, /usr/share/joe, and + /usr/share/doc/joe-4.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ jmacs +

+
+

+ is a symbolic link to joe used to + launch Emacs + emulation mode +

+
+

+ joe +

+
+

+ is a small text editor capable of emulating + WordStar, Pico, + and Emacs +

+
+

+ jpico +

+
+

+ is a symbolic link to joe used to + launch Pico + emulation mode +

+
+

+ jstar +

+
+

+ is a symbolic link to joe used to + launch WordStar emulation mode +

+
+

+ rjoe +

+
+

+ is a symbolic link to joe that + restricts JOE to + editing only files which are specified on the + command-line +

+
+

+ stringify +

+
+

+ is a program used by joe to convert rc + and .jsf files into a C file (see + /usr/share/doc/joe-4.6/util/README) +

+
+

+ termidx +

+
+

+ is a program used by joe to generate + the termcap index file (see + /usr/share/doc/joe-4.6/util/README) +

+
+

+ uniproc +

+
+

+ is a program used by joe to generate + joe's unicode database file unicat.c from + Blocks.txt CaseFolding.txt EastAsianWidth.txt and + UnicodeData.txt (find them at + /usr/share/doc/joe-4.6/util; see + usr/share/doc/joe-4.6/util/README) +

+
+
+
+
+
+
+
+

+ kate-25.08.0 +

+
+
+
+
+
+

+ Introduction to Kate +

+

+ The Kate package contains an + advanced KF6 based graphical text editor. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Kate + Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 +

+
+
+

+ Installation of Kate +

+

+ Install Kate by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX  \
+      -D CMAKE_BUILD_TYPE=Release          \
+      -D BUILD_TESTING=OFF                 \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kate and kwrite +
+
+ Installed Libraries: + Several plugins under + $KF6_PREFIX/lib/plugins +
+
+ Installed Directories: + $KF6_PREFIX/lib/plugins/ktexteditor, + $KF6_PREFIX/lib/plugins/plasma/dataengine, + $KF6_PREFIX/share/doc/HTML/*/{kate,katepart,kwrite}, + $KF6_PREFIX/share/{kateproject,katexmltools}, and + $KF6_PREFIX/share/plasma/plasmoids/org.kde.plasma.katesessions +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ kate +

+
+

+ is an advanced text editor for kde +

+
+

+ kwrite +

+
+

+ is a text editor for KDE, that is a light version + of kate +

+
+
+
+
+
+
+
+

+ mousepad-0.6.5 +

+
+
+
+
+
+

+ Introduction to Mousepad +

+

+ Mousepad is a simple GTK + text editor for the Xfce + desktop environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Mousepad Dependencies +

+
+ Required +
+

+ gtksourceview4-4.8.4 and libxfce4ui-4.20.2 +

+
+ Recommended +
+ +
+
+

+ Installation of Mousepad +

+

+ Install Mousepad by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release &&
+
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D gspell-plugin=no: Use this + option to disable building the gspell-1.14.0 plugin if you have + not installed gspell. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + mousepad +
+
+ Installed Libraries: + libmousepad.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ mousepad +

+
+

+ is a simple GTK text editor +

+
+
+
+
+
+
+
+

+ Nano-8.6 +

+
+
+
+
+
+

+ Introduction to Nano +

+

+ The Nano package contains a + small, simple text editor which aims to replace Pico, the default editor in the + Pine package. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.nano-editor.org/dist/v8/nano-8.6.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 3b5a70dd65ddee4bd848b620c1638526 +

    +
  • +
  • +

    + Download size: 1.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 24 MB +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU +

    +
  • +
+
+
+
+

+ Installation of Nano +

+

+ Install Nano by running the + following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --enable-utf8     \
+            --docdir=/usr/share/doc/nano-8.6 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m644 doc/{nano.html,sample.nanorc} /usr/share/doc/nano-8.6
+
+
+

+ Command Explanations +

+

+ --enable-utf8: This + switch enables unicode support in Nano. +

+
+
+

+ Configuring nano +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/nanorc and ~/.nanorc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Example configuration (create as a system-wide /etc/nanorc or a personal ~/.nanorc file) +

+
set autoindent
+set constantshow
+set fill 72
+set historylog
+set multibuffer
+set nohelp
+set positionlog
+set quickblank
+set regexp
+

+ Check the sample.nanorc file + in the installed documentation directory. It includes color + configurations and has some documentation included in the + comments. +

+

+ Syntax highlighting is provided for several file types, in + /usr/share/nano/ directory. + E.g., for shell scripts, you can insert include /usr/share/nano/sh.nanorc in the + personal or global configuration file. If you wish + highlighting for all supported files, use include /usr/share/nano/*.nanorc. This + include does not descend into the extra directory. Move required files one + level up. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + nano and rnano (symlink) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/nano and + /usr/share/doc/nano-8.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ nano +

+
+

+ is a small, simple text editor which aims to + replace Pico, the + default editor in the Pine package +

+
+

+ rnano +

+
+

+ is a restricted mode for nano +

+
+
+
+
+
+
+
+

+ Vim-9.1.1629 +

+
+
+
+
+
+

+ Introduction to Vim +

+

+ The Vim package, which is an + abbreviation for VI IMproved, contains a vi clone with extra + features as compared to the original vi. +

+

+ The default LFS instructions install vim as a part of the base system. If you + would prefer to link vim + against X, you should + recompile vim to enable GUI + mode. There is no need for special instructions since + X support is automatically + detected. +

+
+

+ Note +

+

+ The version of vim changes daily. To get the latest + version, go to https://github.com/vim/vim/releases. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/vim/vim/archive/v9.1.1629/vim-9.1.1629.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 4f856c3233c1c4570bc17572e4f9e8e4 +

    +
  • +
  • +

    + Download size: 18 MB +

    +
  • +
  • +

    + Estimated disk space required: 147 MB (add 75 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (with parallelism=4; add + 14 SBU for tests) +

    +
  • +
+
+

+ Vim + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ cURL-8.15.0 (or Wget-1.25.0, required by some + tests), GPM-1.20.7, Lua-5.4.8, Ruby-3.4.5, and rsync-3.4.1 +

+
+
+

+ Installation of Vim +

+
+

+ Note +

+

+ If you recompile Vim to + link against X and your + X libraries are not on the + root partition, you will no longer have vim for use in + emergencies. You may choose to install an additional + editor, not link Vim + against X, or move the + current vim + executable to the /bin + directory under a different name such as vi. +

+
+

+ Install Vim by running the + following commands: +

+
+

+ Note +

+

+ If you intend to run the tests and have not installed Xorg + in /usr, append LDFLAGS='-L$XORG_PREFIX/lib' to the + configure line below. +

+
+
echo '#define SYS_VIMRC_FILE  "/etc/vimrc"' >>  src/feature.h &&
+echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h &&
+
+./configure --prefix=/usr        \
+            --with-features=huge \
+            --enable-gui=gtk3    \
+            --with-tlib=ncursesw &&
+make
+
+

+ Note +

+

+ If the global configuration file /etc/vimrc references the VIMRUNTIME environment variable, some tests + may complain about being unable to find the corresponding + directory and wait for user input. If this is the case, + this file should be saved and removed before running the + tests. Or if bubblewrap-0.11.0 is installed, + it's also possible to create a lightweight container + environment where this file is hidden and run the tests in + the container. +

+
+

+ To test the results, issue: make -j1 test. Test + failures, if any, will produce the file test.log in src/testdir. The remaining tests will still + be executed. If all goes well, the log will report + ALL DONE. Some tests labelled as + “flaky” + may fail occasionally and can be ignored. The tests are known + to fail if the output is redirected to a file, and also if + they are run in a 'screen' session. +

+
+

+ Note +

+

+ If running the tests with bubblewrap-0.11.0 and /etc/vimrc hidden, use bwrap --dev-bind / / --dev-bind /dev/null + /etc/vimrc make -j1 test. +

+
+
+

+ Note +

+

+ Some color tests expect to be executed under the + xterm + terminal emulator. +

+
+

+ Now, as the root user: +

+
make install
+

+ By default, Vim's documentation is installed in /usr/share/vim. The following symlink + allows the documentation to be accessed via /usr/share/doc/vim-9.1.1629, making it + consistent with the location of documentation for other + packages: +

+
ln -snfv ../vim/vim91/doc /usr/share/doc/vim-9.1.1629
+

+ If you wish to + update the runtime files, issue the following command + (requires rsync-3.4.1) to download it: +

+
rsync -avzcP --exclude="/dos/" --exclude="/spell/" \
+    ftp.nluug.nl::Vim/runtime/ ./runtime/
+

+ And then install the updated runtime files and regenerate the + tags file, as the root user issue: +

+
make -C src installruntime &&
+vim -c ":helptags /usr/share/doc/vim-9.1.1629" -c ":q"
+
+
+

+ Command Explanations +

+

+ --with-features=huge: + This switch enables all the additional features available in + Vim, including support for + multibyte characters. +

+

+ --with-tlib=ncursesw: + This switch forces Vim to link against the libncursesw library. +

+

+ --enable-gui=no: This will + prevent compilation of the GUI. Vim will still link against X, so that some features such as the + client-server model or the x11-selection (clipboard) are + still available. +

+

+ --without-x: If you prefer not to + link Vim against + X, use this switch. +

+

+ --enable-luainterp, --enable-perlinterp, --enable-python3interp=dynamic, --enable-tclinterp --with-tclsh=tclsh, + --enable-rubyinterp: These + options include the Lua, Perl, Python3, Tcl, or Ruby + interpreters that allow using other application code in + vim scripts. All the + --enable-* options can accept + =dynamic to dynamically load the + interpreter when needed. This is required for Python 3 to prevent segmentation faults. + For tcl, it is necessary to + indicate the name of the tclsh executable, since + configure only + searches versioned names with old versions. +

+
+
+

+ Configuring Vim +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/vimrc and ~/.vimrc +

+
+
+
+
+
+

+ Configuration + Information +

+
+
+
+

+ Vim has an integrated + spell checker which you can enable by issuing the following + in a vim window: +

+
:setlocal spell spelllang=ru
+

+ This setting will enable spell checking for the Russian + language for the current session. +

+

+ By default, Vim only + installs spell files for the English language. If a spell + file is not available for a language, then Vim will call the $VIMRUNTIME/plugin/spellfile.vim plugin + and will try to obtain the *.spl and optionally *.sug from + the vim ftp server, by using the $VIMRUNTIME/plugin/netrwPlugin.vim + plugin. +

+

+ Alternatively you can manually download the *.spl and *.sug + files from: ftp://ftp.vim.org/pub/vim/runtime/spell/ + and save them to ~/.vim/spell + or in /usr/share/vim/vim91/spell/. +

+

+ To find out what's new in Vim-9.1.1629 issue the following + command: +

+
:help version-9.1.1629
+

+ For additional information on setting up Vim configuration files, see The vimrc Files and + https://vim.fandom.com/wiki/Example_vimrc. +

+
+
+
+

+ Contents +

+

+ A list of the reinstalled files, along with their short + descriptions can be found in the LFS + Vim Installation Instructions. +

+
+
+
+ Installed Programs: + gview, gvim, gvimdiff, gvimtutor, + rgview, and rgvim +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/vim +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gview +

+
+

+ starts gvim in read-only + mode +

+
+

+ gvim +

+
+

+ is the editor that runs under X and includes a GUI +

+
+

+ gvimdiff +

+
+

+ edits two or three versions of a file with + gvim + and shows the differences +

+
+

+ gvimtutor +

+
+

+ teaches the basic keys and commands of gvim +

+
+

+ rgview +

+
+

+ is a restricted version of gview +

+
+

+ rgvim +

+
+

+ is a restricted version of gvim +

+
+
+
+
+
+
+
+
+

+ Chapter 7. Shells +

+
+
+
+
+

+ We are all familiar with the Bourne Again SHell, but there are + two other user interfaces that are considered useful modern + shells – the Berkeley Unix C shell and the Korn shell. This + chapter installs packages compatible with these additional shell + types. +

+
+
+
+

+ Dash-0.5.12 +

+
+
+
+
+
+

+ Introduction to Dash +

+

+ Dash is a POSIX compliant + shell. It can be installed as /bin/sh or as the default shell + for either root or a second + user with a userid of 0. It depends on fewer libraries than + the Bash shell and is + therefore less likely to be affected by an upgrade problem or + disk failure. Dash is also + useful for checking that a script is completely compatible + with POSIX syntax. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Dash + Dependencies +

+
+ Optional +
+

+ libedit (command line + editor library) +

+
+
+

+ Installation of Dash +

+

+ Install Dash by running the + following commands: +

+
./configure --bindir=/bin --mandir=/usr/share/man &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you would like to make dash the default + sh, recreate + the /bin/sh symlink as the + root user: +

+
+

+ Note +

+

+ If you create the symbolic link from dash to sh, you will need to + reset the link to bash to build LFS. +

+
+
ln -svf dash /bin/sh
+
+
+

+ Command Explanations +

+

+ --bindir=/bin: This + parameter places the dash binary into the root + filesystem. +

+

+ --with-libedit: To compile + Dash with libedit support. +

+
+
+

+ Configuring Dash +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ Dash sources /etc/profile and ~/.profile +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Update /etc/shells to include + the Dash shell by issuing + the following command as the root user: +

+
cat >> /etc/shells << "EOF"
+/bin/dash
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + dash +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Description +

+ + + + + + + + + + + +
+

+ dash +

+
+

+ is a POSIX compliant shell +

+
+
+
+
+
+
+
+

+ Tcsh-6.24.16 +

+
+
+
+
+
+

+ Introduction to Tcsh +

+

+ The Tcsh package contains + “an enhanced but + completely compatible version of the Berkeley Unix C shell + (csh).” This + is useful as an alternative shell for those who prefer C + syntax to that of the bash shell, and also + because some programs require the C shell in order to perform + installation tasks. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://astron.com/pub/tcsh/tcsh-6.24.16.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 448f53f12544abb627c9f078373b8ff5 +

    +
  • +
  • +

    + Download size: 936 KB +

    +
  • +
  • +

    + Estimated disk space required: 11 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests) +

    +
  • +
+
+
+
+

+ Installation of Tcsh +

+

+ Install Tcsh by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install install.man &&
+
+ln -v -sf tcsh   /bin/csh &&
+ln -v -sf tcsh.1 /usr/share/man/man1/csh.1
+
+
+

+ Command Explanations +

+

+ ln -v -sf tcsh + /bin/csh: The FHS states that if there is a + C shell installed, there + should be a symlink from /bin/csh to it. This creates that symlink. +

+
+
+

+ Configuring Tcsh +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ There are numerous configuration files for the C shell. + Examples of these are /etc/csh.cshrc, /etc/csh.login, /etc/csh.logout, ~/.tcshrc, ~/.cshrc, ~/.history, ~/.cshdirs, ~/.login, and ~/.logout. More information on these + files can be found in the tcsh(1) man + page. +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Update /etc/shells to include + the C shell program names (as the root user): +

+
cat >> /etc/shells << "EOF"
+/bin/tcsh
+/bin/csh
+EOF
+

+ The following ~/.cshrc + provides two alternative colour prompts and coloured + ls output. If + you prefer a global modification, issue the command as the + root user, replacing + ~/.cshrc by /etc/csh.cshrc. +

+
cat > ~/.cshrc << "EOF"
+# Original at:
+# https://www.cs.umd.edu/~srhuang/teaching/code_snippets/prompt_color.tcsh.html
+
+# Modified by the BLFS Development Team.
+
+# Add these lines to your ~/.cshrc (or to /etc/csh.cshrc).
+
+# Colors!
+set     red="%{\033[1;31m%}"
+set   green="%{\033[0;32m%}"
+set  yellow="%{\033[1;33m%}"
+set    blue="%{\033[1;34m%}"
+set magenta="%{\033[1;35m%}"
+set    cyan="%{\033[1;36m%}"
+set   white="%{\033[0;37m%}"
+set     end="%{\033[0m%}" # This is needed at the end...
+
+# Setting the actual prompt.  Two separate versions for you to try, pick
+# whichever one you like better, and change the colors as you want.
+# Just don't mess with the ${end} guy in either line...  Comment out or
+# delete the prompt you don't use.
+
+set prompt="${green}%n${blue}@%m ${white}%~ ${green}%%${end} "
+set prompt="[${green}%n${blue}@%m ${white}%~ ]${end} "
+
+# This was not in the original URL above
+# Provides coloured ls
+alias ls ls --color=always
+
+# Clean up after ourselves...
+unset red green yellow blue magenta cyan yellow white end
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + tcsh +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ tcsh +

+
+

+ is an enhanced but completely compatible version of + the Berkeley Unix C shell, csh. It is usable + as both an interactive shell and a script processor +

+
+
+
+
+
+
+
+

+ zsh-5.9 +

+
+
+
+
+
+

+ Introduction to zsh +

+

+ The zsh package contains a + command interpreter (shell) usable as an interactive login + shell and as a shell script command processor. Of the + standard shells, zsh most + closely resembles ksh but + includes many enhancements. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.zsh.org/pub/zsh-5.9.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 182e37ca3fe3fa6a44f69ad462c5c30e +

    +
  • +
  • +

    + Download size: 3.2 MB +

    +
  • +
  • +

    + Estimated disk space required: 48 MB (includes + documentation and tests) +

    +
  • +
  • +

    + Estimated build time: 1.6 SBU (Using parallelism=4; + includes documentation and tests) +

    +
  • +
+
+
+

+ Note +

+

+ When there is a new zsh + release, the old files shown above are moved to a new + server directory: https://www.zsh.org/pub/old/. +

+
+

+ zsh + Dependencies +

+
+ Optional +
+

+ Valgrind-3.25.1 and yodl +

+
+
+

+ Installation of zsh +

+

+ Adapt the documentation build system for texinfo-7.0 or + later: +

+
sed -e 's/set_from_init_file/texinfo_&/' \
+    -i Doc/Makefile.in
+

+ Some programs shipped in the building system for detecting + system features use pre-C99 syntax rejected by GCC-14.1 and + later. Fix them because Zsh will be configured incorrectly + and fail to build otherwise: +

+
sed -e 's/^main/int &/'      \
+    -e 's/exit(/return(/'    \
+    -i aczsh.m4 configure.ac &&
+
+sed -e 's/test = /&(char**)/' \
+    -i configure.ac           &&
+
+autoconf
+

+ The documentation files contain references to zsh + configuration files in /etc, + but we'll use /etc/zsh to hold + these configuration files instead. The build system will + update those references if the yodl package is available, but it's out + of the scope of BLFS. As a result, we need to fix the + references manually: +

+
sed -e 's|/etc/z|/etc/zsh/z|g' \
+    -i Doc/*.*
+

+ Install zsh by running the + following commands: +

+
./configure --prefix=/usr            \
+            --sysconfdir=/etc/zsh    \
+            --enable-etcdir=/etc/zsh \
+            --enable-cap             \
+            --enable-gdbm            &&
+make                                 &&
+
+makeinfo  Doc/zsh.texi --html      -o Doc/html &&
+makeinfo  Doc/zsh.texi --plaintext -o zsh.txt  &&
+makeinfo  Doc/zsh.texi --html --no-split --no-headers -o zsh.html
+

+ If you have texlive-20250308 installed, you + can build the documentation in PDF format by issuing the + following command: +

+
texi2pdf  Doc/zsh.texi -o Doc/zsh.pdf
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install                                                    &&
+make infodir=/usr/share/info install.info                       &&
+make htmldir=/usr/share/doc/zsh-5.9/html install.html           &&
+install -v -m644 zsh.{html,txt} Etc/FAQ /usr/share/doc/zsh-5.9
+

+ If you built the PDF format of the documentation, install it + by issuing the following command as the root user: +

+
install -v -m644 Doc/zsh.pdf /usr/share/doc/zsh-5.9
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc/zsh + and --enable-etcdir=/etc/zsh: These + parameters are used so that all the zsh configuration files are consolidated + into the /etc/zsh directory. + Omit these parameters if you wish to retain historical + compatibility by having all the files located in the + /etc directory. +

+

+ --enable-cap: This + option enables POSIX capabilities. +

+

+ --enable-gdbm: This + option enables the use of the GDBM library. +

+
+
+

+ Configuring zsh +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ There are a whole host of configuration files for + zsh including /etc/zsh/zshenv, /etc/zsh/zprofile, /etc/zsh/zshrc, /etc/zsh/zlogin and /etc/zsh/zlogout. You can find more + information on these in the zsh(1) and + related manual pages. +

+

+ The first time zsh is executed, you will be prompted by + messages asking several questions. The answers will be used + to create a ~/.zshrc file. If + you wish to run these questions again, run zsh + /usr/share/zsh/5.9/functions/zsh-newuser-install + -f. +

+

+ There are several built-in advanced prompts. In the + zsh shell, + start advanced prompt support with autoload -U promptinit, + then promptinit. Available + prompt names are listed with prompt -l. Select a + particular one with prompt + <prompt-name>. + Display all available prompts with prompt -p. Except for the + list and display commands above, you can insert the other + ones in ~/.zshrc to be + automatically executed when the shell starts, with the + prompt you chose. +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Update /etc/shells to include + the zsh shell program + names (as the root user): +

+
cat >> /etc/shells << "EOF"
+/bin/zsh
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + zsh and zsh-5.9 (hardlinked to each + other) +
+
+ Installed Libraries: + Numerous plugin helper modules + under /usr/lib/zsh/5.9/ +
+
+ Installed Directories: + /usr/{lib,share}/zsh and + /usr/share/doc/zsh-5.9 +
+
+
+
+

+ Short Description +

+ + + + + + + + + + + +
+

+ zsh +

+
+

+ is a shell which has command-line editing, built-in + spelling correction, programmable command + completion, shell functions (with autoloading), a + history mechanism, and a host of other features +

+
+
+
+
+
+
+
+
+

+ Chapter 8. Virtualization +

+
+
+
+
+

+ Virtualization allows running a complete operating system, or + virtual machine (VM), within another operating environment as a + task. There are several commercial and open source environments + that either emulate another processor or utilize the hardware + virtualization features of the host processor. +

+
+
+
+

+ qemu-10.0.3 +

+
+
+
+
+
+

+ Introduction to qemu +

+

+ qemu is a full + virtualization solution for Linux on x86 hardware containing + virtualization extensions (Intel VT or AMD-V). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://download.qemu.org/qemu-10.0.3.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 4a244f485c9d7ac3d40f958f13eae298 +

    +
  • +
  • +

    + Download size: 129 MB +

    +
  • +
  • +

    + Estimated disk space required: 2.4 GB (490 MB + installed) +

    +
  • +
  • +

    + Estimated build time: 1.3 SBU (add 0.8 SBU for tests, + both using parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ Qemu + Dependencies +

+
+ Required +
+

+ GLib-2.84.4 and Pixman-0.46.4 +

+
+ Recommended +
+ +
+

+ Note +

+

+ If dtc-1.7.2 is not installed, the building + system will attempt to download a copy of dtc source code + from the Internet. +

+
+
+ Optional +
+

+ pipewire-1.4.7 or PulseAudio-17.0 + (can be used instead of alsa-lib), BlueZ-5.83, cURL-8.15.0, Cyrus + SASL-2.1.28, Fuse-3.17.4, GnuTLS-3.8.10, GTK-3.24.50, keyutils-1.6.3, libaio-0.3.113, + libusb-1.0.29, libgcrypt-1.11.2, + libjpeg-turbo-3.0.1, libseccomp-2.6.0, libssh2-1.11.1, + libpng-1.6.50, libtasn1-4.20.0, + Linux-PAM-1.7.1, LZO-2.10, Nettle-3.10.2, Mesa-25.1.8, + VTE-0.80.3, capstone, ceph, + daxctl, + JACK, + glusterfs, + libbpf, libcacard, + libcap-ng, + libdw, libiscsi, + libnfs, libpmem, + libssh, + libu2f-emu, + lzfse, netmap, + numactl, rdma-core, + SELinux, + snappy, spice, + usbredir, + and VDE +

+
+ Optional (Runtime) +
+

+ elogind-255.17 +

+
+ Optional (for building the + documentation) +
+

+ sphinx_rtd_theme-3.0.2 +

+
+

+ Note +

+

+ This optional dependencies list is not comprehensive. See + the output of ./configure + --help for a more complete list. +

+
+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/qemu +

+
+
+

+ KVM Prerequisites +

+

+ Before building qemu, check + to see if your processor supports Virtualization Technology + (VT): +

+
grep -E '^flags.*(vmx|svm)' /proc/cpuinfo
+

+ If you get any output, you have VT technology (vmx for Intel + processors and svm for AMD processors). You then need to go + into your system BIOS and ensure it is enabled. After + enabling, reboot back to your LFS instance. +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
[*] Virtualization --->                                         [VIRTUALIZATION]
+  <*/M>   Kernel-based Virtual Machine (KVM) support                       [KVM]
+  # Enable the option for your CPU:
+  < /*/M>   KVM for Intel (and compatible) processors support        [KVM_INTEL]
+  < /*/M> KVM for AMD processors support                               [KVM_AMD]
+

+ The Intel or AMD settings are not both required, but the one + matching your system processor is required. +

+

+ To use the “bridge” network device, as explained + below, check that bridge-utils-1.7.1 is installed and + the following options in the kernel configuration are + enabled: +

+
[*] Networking support --->                                                [NET]
+  Networking options --->
+    <*/M> 802.1d Ethernet Bridging                                      [BRIDGE]
+
+Device Drivers --->
+  [*] Network device support --->                                   [NETDEVICES]
+    [*]   Network core driver support                                 [NET_CORE]
+    <*/M>   Universal TUN/TAP device driver support                        [TUN]
+
+
+

+ Installation of qemu +

+

+ The udev rule of LFS only allows the root user, the users owning a local login + session supported by the optional runtime dependency + elogind-255.17 , or the users in + the kvm group to use the KVM + device. As the root user, add + any non-root users that might + use the KVM device either without elogind-255.17 installed or + remotely (via a SSH connection) to the kvm group: +

+
usermod -a -G kvm <username>
+

+ Fix an incompatibility with pip-25.2 and later: +

+
patch -Np1 -i ../qemu-10.0.3-python_fixes-1.patch
+

+ Install qemu by running the + following commands: +

+
+

+ Note +

+

+ Qemu is capable of running many targets. The build process + is also capable of building multiple targets at one time in + a comma delimited list assigned to --target-list. Run ./configure --help to get + a complete list of available targets. +

+
+
if [ $(uname -m) = i686 ]; then
+   QEMU_ARCH=i386-softmmu
+else
+   QEMU_ARCH=x86_64-softmmu
+fi
+
+
+mkdir -vp build &&
+cd        build &&
+
+../configure --prefix=/usr            \
+             --sysconfdir=/etc        \
+             --localstatedir=/var     \
+             --target-list=$QEMU_ARCH \
+             --audio-drv-list=alsa    \
+             --disable-pa             \
+             --enable-slirp           \
+             --docdir=/usr/share/doc/qemu-10.0.3 &&
+
+unset QEMU_ARCH &&
+
+make
+

+ qemu uses ninja as a subprocess when + building. To run the tests, issue: ninja test. Three tests are + known to fail due to some indent change in the shell output + message with bash-5.3 or newer. +

+

+ Now, as the root user: +

+
make install
+

+ Change the permissions and ownership of a helper script, + which is needed when using the “bridge” network + device (see below). Again as the root user, issue: +

+
+

+ Note +

+

+ You need to add any users who might use the “bridge” network + device into the kvm group + even if elogind-255.17 + is installed. +

+
+
chgrp kvm  /usr/libexec/qemu-bridge-helper &&
+chmod 4750 /usr/libexec/qemu-bridge-helper
+
+

+ Note +

+

+ For convenience you may want to create a symbolic link to + run the installed program. For instance (as the + root user): +

+
ln -sv qemu-system-`uname -m` /usr/bin/qemu
+
+
+
+

+ Command Explanations +

+

+ --audio-drv-list=alsa: This + switch sets the audio driver to ALSA. See below for enabling + other audio drivers. +

+

+ --disable-pa: even if + pa is not in + --audio-drv-list + list, the pulseaudio driver is built, unless disabled by this + parameter. +

+

+ --enable-slirp: This + switch forces the build system to check for libslirp-4.9.1. + Remove it if you don't need the -netdev + user support. +

+

+ --audio-drv-list=pa + --disable-alsa: This switch sets the audio driver to + pulseaudio. For other drivers see the --audio-drv-list + choices in the output of ./configure --help. The + default audio driver is OSS. To enable support for both alsa + and pulseaudio, use --audio-drv-list=alsa,pa. +

+
+
+

+ Using Qemu +

+

+ Since using qemu means using a virtual computer, the steps to + set up the virtual machine are in close analogy with those to + set up a real computer. You'll need to make decisions about + CPU, memory, disk, USB devices, network card(s), screen size, + etc. Once the “hardware” is decided, you'll have for + example to choose how to connect the machine to internet, + and/or to install an OS. In the following section, we show + basic ways of performing those steps. However, qemu is much + more powerful than this, and it is strongly advised to read + the qemu documentation in /usr/share/doc/qemu-10.0.3/qemu-doc.html. +

+
+

+ Note +

+

+ It is standard practice to name the computer running qemu + “host” and the emulated machine + running under qemu the “guest.” We'll use these notations in + the following text. +

+
+
+

+ Note +

+

+ The following instructions assume the optional symbolic + link, qemu, has been created. + Additionally, qemu should be run in a + graphical environment. It is also possible to use qemu + “headless” or through SSH. See the + documentation for the various possibilities. +

+
+

+ Disk +

+

+ A virtual disk may be set up in the following way: +

+
VDISK_SIZE=50G
+VDISK_FILENAME=vdisk.img
+qemu-img create -f qcow2 $VDISK_FILENAME $VDISK_SIZE
+

+ The virtual disk size and filename should be adjusted as + desired. The actual size of the file will be less than + specified, but will expand as needed, so it is safe to put a + high value. +

+

+ Operating System +

+

+ To install an operating system, download an iso image from + your preferred Linux distribution. For the purposes of this + example, we'll use Fedora-16-x86_64-Live-LXDE.iso in the + current directory. Run the following: +

+
qemu -enable-kvm                           \
+     -drive file=$VDISK_FILENAME           \
+     -cdrom Fedora-16-x86_64-Live-LXDE.iso \
+     -boot d                               \
+     -m 1G
+

+ Follow the normal installation procedures for the chosen + distribution. The -boot option specifies the boot + order of drives as a string of drive letters. Valid drive + letters are: a, b (floppy 1 and 2), c (first hard disk), and + d (first CD-ROM). The -m option is the amount of + memory to use for the virtual machine. The choice depends on + the load of the host. Modern distributions should be + comfortable with 4GB. The -enable-kvm option allows + hardware acceleration. Without this switch, the emulation is + much slower. +

+

+ Defining the virtual hardware +

+

+ The virtual machine hardware is defined by the qemu command + line. An example command is given below: +

+
qemu -enable-kvm                  \
+     -smp 4                       \
+     -cpu host                    \
+     -m 1G                        \
+     -drive file=$VDISK_FILENAME  \
+     -cdrom grub-img.iso          \
+     -boot order=c,once=d,menu=on \
+     -net nic,netdev=net0         \
+     -netdev user,id=net0         \
+     -device ac97                 \
+     -vga std                     \
+     -serial mon:stdio            \
+     -name "fedora-16"
+

+ Meaning of the command line options +

+

+ -enable-kvm: enable + full KVM virtualization support. On some hardware, it may be + necessary to add the undocumented -machine smm=off option in order to enable + KVM. +

+

+ -smp <N>: + enable symmetric multiprocessing with <N> CPUs. +

+

+ -cpu <model>: + simulate CPU <model>. the list of supported models can + be obtained with -cpu help. +

+

+ -drive + file=<filename>: defines a virtual disk + whose image is stored in <filename>. +

+

+ -cdrom grub-img.iso: + defines an ISO formatted file to use as a cdrom. Here we use + a grub rescue disk, which may become handy if something goes + wrong at boot time. +

+

+ -boot + order=c,once=d,menu=on: defines the boot order + for the virtual BIOS. +

+

+ -net + nic,netdev=<netid>: defines a network card + connected to the network device with id <netid>. +

+

+ -netdev + user,id=<netid>: defines the network + “user” + device. This is a virtual local network with addresses + 10.0.2.0/24, where the host has address 10.0.2.2 and acts as + a gateway to internet, and with a name server at address + 10.0.2.3, and an smb server at address 10.0.2.4. A builtin + DHCP server can allocate addresses between 10.0.2.15 and + 10.0.2.31. +

+

+ -soundhw + <model>: defines the soundcard model. The + list may be obtained with -soundhw + help. +

+

+ -vga <type>: + defines the type of VGA card to emulate. For -vga std, if you are building a + Linux kernel for the guest, it's recommended to enable + CONFIG_DRM_BOCHS (as a part of + the kernel or a kernel module) to drive all the features of + the emulated VGA card, and CONFIG_FB to display the Linux console on it. + The other <type> values are + not tested by the editors and may require additional + dependencies. +

+

+ -serial mon:stdio: + sends the serial port of the guest (/dev/ttyS0 on linux guests), multiplexed + with the qemu monitor, to the standard input and output of + the qemu process. +

+

+ -name <name>: + sets the name of the guest. This name is displayed in the + guest window caption. It may be useful if you run several + guests at the same time. +

+

+ -drive + if=pflash,format=raw,readonly=on,file=/usr/share/qemu/edk2-x86_64-code.fd: + Load a pre-built EDK2 UEFI firmware, instead of the default + PC BIOS. Use this option if you want to boot the guest OS + with UEFI. +

+

+ -drive + file=<filename>,if=virtio: provides a Virtio + interface to the guest kernel for accessing the disk image, + instead of simulating a real disk hardware. This can improve + disk I/O performance, but it requires a Virtio driver in + guest kernel. Use it instead of a plain -drive if the guest kernel supports Virtio. + To build a Linux kernel with Virtio support for the guest, + use make defconfig && + make kvm_guest.config to create an initial + kernel configuration with the Virtio drives enabled, then + make your customization. And, if the guest kernel is Linux, + the virtual disks using Virtio interface will be named + vdx in the devtmpfs, instead of + sdx. +

+

+ -net + nic,netdev=net0,model=virtio-net-pci: provides a + Virtio interface to the guest kernel for accessing the + network interface, instead of simulating a real network + interface card. This can improve network I/O performance, but + it requires a Virtio driver in guest kernel. Use it instead + of a plain -net if the guest + kernel supports Virtio. +

+

+ Controlling the Emulated Display +

+

+ To set the resolution of the emulated display for a Xorg + server running in the guest Linux system, read the section called “Fine + Tuning Display Settings”. +

+

+ Networking +

+

+ The above solution for networking allows the guest to access + the local network through the host (and possibly to access + internet through the local routers), but the converse is not + true. Not even the host can access the guest, unless port + forwarding is enabled. And in the case several guests are + running, they cannot communicate with each other. Other + network devices can be used for this purpose. For example, + there is the “socket” device, which allows several + guests to share a common virtual network. In the following + section, we describe in more details how to set up the + “bridge” device, which allows the guests + to appear as if connected to the local network. All the + commands below should be run as the root user. +

+

+ Set up bridging with bridge-utils-1.7.1. Only the + physical interface(s) should be set up at boot. The virtual + interface(s) will be added as needed when qemu is started. +

+

+ Set up a required configuration file: +

+
install -vdm 755 /etc/qemu &&
+echo allow br0 > /etc/qemu/bridge.conf
+

+ In the qemu command line above, replace the switch -netdev user,... with + -netdev bridge,.... +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + elf2dmp, qemu (symlink), qemu-edid, + qemu-ga, qemu-img, qemu-io, qemu-keymap, qemu-nbd, + qemu-pr-helper, qemu-storage-daemon, + qemu-system-<arch>, and qemu-vmsr-helper +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/share/qemu and + /usr/share/doc/qemu-10.0.3 (optional) +
+
+
+
+

+ Short Description +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ elf2dmp +

+
+

+ converts files from elf to dmp format +

+
+

+ qemu-edid +

+
+

+ is a test tool for the qemu EDID generator +

+
+

+ qemu-ga +

+
+

+ implements support for QMP (QEMU Monitor Protocol) + commands and events that terminate and originate + respectively within the guest using an agent built + as part of QEMU +

+
+

+ qemu-img +

+
+

+ provides commands to manage QEMU disk images +

+
+

+ qemu-io +

+
+

+ is a diagnostic and manipulation program for + (virtual) memory media. It is still at an early + stage of development +

+
+

+ qemu-keymap +

+
+

+ generates qemu reverse keymaps from xkb keymaps, + which can be used with the qemu "-k" command line + switch +

+
+

+ qemu-nbd +

+
+

+ exports Qemu disk images using the QEMU Disk + Network Block Device (NBD) protocol +

+
+

+ qemu-pr-helper +

+
+

+ implements the persistent reservation helper for + QEMU +

+
+

+ qemu-storage-daemon +

+
+

+ allows a user to modify disk images using the QEMU + Monitor Protocol (QMP) without running a VM +

+
+

+ qemu-system-x86_64 +

+
+

+ is the QEMU PC System emulator +

+
+

+ qemu-vmsr-helper +

+
+

+ is a virtual RAPL MSR helper for qemu +

+
+
+
+
+
+
+
+
+
+

+ Part III. General + Libraries and Utilities +

+
+
+
+
+
+
+
+

+ Chapter 9. General Libraries +

+
+
+
+
+

+ Libraries contain code which is often required by more than one + program. This has the advantage that each program doesn't need to + duplicate code (and risk introducing bugs), it just has to call + functions from the libraries installed on the system. The most + obvious example of a set of libraries is Glibc which is installed during the LFS + book. This contains all of the C + library functions which programs use. +

+

+ There are two types of libraries: static and shared. Shared + libraries (usually libXXX.so) are + loaded into memory from the shared copy at runtime (hence the + name). Static libraries ( libXXX.a) + are actually linked into the program executable file itself, thus + making the program file larger. Quite often, you will find both + static and shared copies of the same library on your system. +

+

+ Generally, you only need to install libraries when you are + installing software that needs the functionality they supply. In + the BLFS book, each package is presented with a list of (known) + dependencies. Thus, you can figure out which libraries you need + to have before installing that program. If you are installing + something without using BLFS instructions, usually the + README or INSTALL file will contain details of the + program's requirements. +

+

+ There are certain libraries which nearly everyone will need at some point. In + this chapter these and some others are listed and it is explained + why you may want to install them. +

+
+
+
+

+ Abseil-cpp-20250814.0 +

+
+
+
+
+
+

+ Introduction to Abseil-cpp +

+

+ The Abseil-cpp package + contains a series of libraries designed to augment the C++ + standard library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Abseil-cpp Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of Abseil-cpp +

+

+ Install Abseil-cpp by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D ABSL_PROPAGATE_CXX_STD=ON \
+      -D BUILD_SHARED_LIBS=ON      \
+      -G Ninja ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + ABSL_PROPAGATE_CXX_STD=ON: This parameter enables + propagating C++ features to targets that link to this + package's libraries. +

+

+ -D + BUILD_SHARED_LIBS=ON: This parameter builds + shared versions of the libraries provided by this package + instead of static libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libabsl_bad_any_cast_impl.so, + libabsl_bad_optional_access.so, + libabsl_bad_variant_access.so, libabsl_base.so, + libabsl_city.so, libabsl_civil_time.so, + libabsl_cord_internal.so, libabsl_cord.so, + libabsl_cordz_functions.so, libabsl_cordz_handle.so, + libabsl_cordz_info.so, libabsl_cordz_sample_token.so, + libabsl_crc32c.so, libabsl_crc_cord_state.so, + libabsl_crc_cpu_detect.so, libabsl_crc_internal.so, + libabsl_debugging_internal.so, + libabsl_decode_rust_punycode.so, + libabsl_demangle_internal.so, libabsl_demangle_rust.so, + libabsl_die_if_null.so, libabsl_examine_stack.so, + libabsl_exponential_biased.so, + libabsl_failure_signal_handler.so, + libabsl_flags_commandlineflag_internal.so, + libabsl_flags_commandlineflag.so, + libabsl_flags_config.so, libabsl_flags_internal.so, + libabsl_flags_marshalling.so, libabsl_flags_parse.so, + libabsl_flags_private_handle_accessor.so, + libabsl_flags_program_name.so, + libabsl_flags_reflection.so, + libabsl_flags_usage_internal.so, libabsl_flags_usage.so, + libabsl_graphcycles_internal.so, libabsl_hash.so, + libabsl_hashtablez_sampler.so, libabsl_int128.so, + libabsl_kernel_timeout_internal.so, + libabsl_leak_check.so, libabsl_log_entry.so, + libabsl_log_flags.so, libabsl_log_globals.so, + libabsl_log_initalize.so, + libabsl_log_internal_check_op.so, + libabsl_log_internal_conditions.so, + libabsl_log_internal_fnmatch.so, + libabsl_log_internal_format.so, + libabsl_log_internal_globals.so, + libabsl_log_internal_log_sink_set.so, + libabsl_log_internal_message.so, + libabsl_log_internal_nullguard.so, + libabsl_log_internal_proto.so, libabsl_log_severity.so, + libabsl_log_sink.so, libabsl_low_level_hash.so, + libabsl_malloc_internal.so, libabsl_periodic_sampler.so, + libabsl_poison.so, libabsl_random_distributions.so, + libabsl_random_internal_distribution_test_util.so, + libabsl_random_internal_platform.so, + libabsl_random_internal_pool_urbg.so, + libabsl_random_internal_randen_hwaes_impl.so, + libabsl_random_internal_randen_hwaes.so, + libabsl_random_internal_randen_slow.so, + libabsl_random_internal_randen.so, + libabsl_random_internal_seed_material.so, + libabsl_random_seed_gen_exception.so, + libabsl_random_seed_sequences.so, + libabsl_raw_hash_set.so, libabsl_raw_logging_internal.so, + libabsl_scoped_set_env.so, libabsl_spinlock_wait.so, + libabsl_stacktrace.so, libabsl_statusor.so, + libabsl_status.so, libabsl_strerror.so, + libabsl_str_format_internal.so, + libabsl_strings_internal.so, libabsl_strings.so, + libabsl_string_view.so, libabsl_symbolize.so, + libabsl_synchronization.so, libabsl_throw_delegate.so, + libabsl_time.so, libabsl_time_zone.so, + libabsl_utf8_for_code_point.so, and + libabsl_vlog_config_internal.so +
+
+ Installed Directories: + /usr/include/absl, + /usr/lib/cmake/absl +
+
+
+
+
+
+
+
+

+ AppStream-1.0.6 +

+
+
+
+
+
+

+ Introduction to AppStream +

+

+ The AppStream package + contains a library and tool that is useful for retrieving + software metadata and making it easily accessible to programs + which need it. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ AppStream Dependencies +

+
+ Required +
+

+ cURL-8.15.0, elogind-255.17, itstool-2.0.7, + libxml2-2.14.5, libxmlb-0.3.23, + libxslt-1.1.43, and libyaml-0.2.5 +

+
+ Optional +
+

+ Gi-DocGen-2025.4, Qt-6.9.2, DAPS, and + libstemmer +

+
+
+

+ Installation of AppStream +

+

+ Install AppStream by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D apidocs=false    \
+            -D stemming=false   .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install &&
+mv -v /usr/share/doc/appstream{,-1.0.6}
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D apidocs=false: + This switch disables building the API documentation. Remove + it if you have Gi-DocGen-2025.4 installed and wish to + regenerate the API documentation. When the API documentation + is not regenerated, a pre-built copy is installed anyway. +

+

+ -D stemming=false: + This switch disables stemming support. Remove this switch if + you have libstemmer + installed and want faster searches. +

+

+ -D qt=true: Use this option if + you have Qt-6.9.2 installed and you want to build + support for Qt6 applications into this package. +

+
+
+

+ Configuring AppStream +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /usr/share/metainfo/org.linuxfromscratch.lfs.xml +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ AppStream expects an + operating system metainfo file describing the GNU/Linux + distribution. As the root + user, create the file describing LFS: +

+
install -vdm755 /usr/share/metainfo &&
+cat > /usr/share/metainfo/org.linuxfromscratch.lfs.xml << EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="operating-system">
+  <id>org.linuxfromscratch.lfs</id>
+  <name>Linux From Scratch</name>
+  <summary>A customized Linux system built entirely from source</summary>
+  <description>
+    <p>
+      Linux From Scratch (LFS) is a project that provides you with
+      step-by-step instructions for building your own customized Linux
+      system entirely from source.
+    </p>
+  </description>
+  <url type="homepage">https://www.linuxfromscratch.org/lfs/</url>
+  <metadata_license>MIT</metadata_license>
+  <developer id='linuxfromscratch.org'>
+    <name>The Linux From Scratch Editors</name>
+  </developer>
+
+  <releases>
+    <release version="12.4" type="release" date="2025-09-01">
+      <description>
+        <p>Now contains Binutils 2.45, GCC-15.2.0, Glibc-2.42,
+        Linux kernel 6.16, and twelve security updates.</p>
+      </description>
+    </release>
+
+    <release version="12.3" type="stable" date="2025-03-05">
+      <description>
+        <p>Now contains Binutils 2.44, GCC-14.2.0, Glibc-2.41, and
+        Linux Kernel 6.13, and three security updates.</p>
+      </description>
+    </release>
+  </releases>
+</component>
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + appstreamcli +
+
+ Installed Libraries: + libappstream.so and + libAppStreamQt.so (if Qt6 support is enabled) +
+
+ Installed Directories: + /usr/include/appstream, + /usr/include/AppStreamQt (if Qt6 support is enabled), + /usr/lib/cmake/AppStreamQt (if Qt6 support is enabled), + /usr/share/doc/appstream-1.0.6, and + /usr/share/installed-tests/appstream +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ appstreamcli +

+
+

+ queries information from AppStream metadata and + from the AppStream component index +

+
+

+ libappstream.so +

+
+

+ contains functions that handle AppStream metadata + queries and request information from the AppStream + component index +

+
+

+ libAppStreamQt.so +

+
+

+ contains functions that allow Qt6 applications to + handle AppStream metadata queries and allows them + to request information from the AppStream component + index +

+
+
+
+
+
+
+
+

+ appstream-glib-0.8.3 +

+
+
+
+
+
+

+ Introduction to appstream-glib +

+

+ The appstream-glib provides + GObjects and helper methods to make it easy to read and write + AppStream metadata. It also provides a simple DOM (Document + Object Model) implementation that makes it easy to edit nodes + and convert to and from the standardized XML representation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ appstream-glib Dependencies +

+
+ Required +
+

+ cURL-8.15.0, gdk-pixbuf-2.42.12, GTK-3.24.50, and + libarchive-3.8.1 +

+
+ Optional +
+

+ docbook-xml-4.5, docbook-xsl-nons-1.79.2, + GTK-Doc-1.34.0, libxslt-1.1.43, and + libyaml-0.2.5 +

+
+
+

+ Installation of appstream-glib +

+

+ Install appstream-glib by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D rpm=false        &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + appstream-builder, + appstream-compose, and appstream-util +
+
+ Installed Libraries: + libappstream-glib.so +
+
+ Installed Directories: + /usr/include/libappstream-glib, + /usr/lib/asb-plugins-5, and + /usr/share/installed-tests/appstream-glib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ appstream-builder +

+
+

+ builds AppStream metadata +

+
+

+ appdata-compose +

+
+

+ generates AppStream metadata +

+
+

+ appstream-util +

+
+

+ Is a management tool for appstream-builder +

+
+

+ libappstream-glib.so +

+
+

+ contains the API functions +

+
+
+
+
+
+
+
+

+ Apr-1.7.6 +

+
+
+
+
+
+

+ Introduction to Apr +

+

+ The Apache Portable Runtime (APR) is a supporting library for + the Apache web server. It provides a set of application + programming interfaces (APIs) that map to the underlying + Operating System (OS). Where the OS doesn't support a + particular function, APR will provide an emulation. Thus + programmers can use the APR to make a program portable across + different platforms. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://archive.apache.org/dist/apr/apr-1.7.6.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 2ebb58910e426e5a83af97bc94cae66d +

    +
  • +
  • +

    + Download size: 879 KB +

    +
  • +
  • +

    + Estimated disk space required: 11 MB (additional 4 MB + for the tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (add 1.7 SBU for tests) +

    +
  • +
+
+
+
+

+ Installation of Apr +

+

+ Install Apr by running the + following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-installbuilddir=/usr/share/apr-1/build &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + apr-1-config +
+
+ Installed Library: + libapr-1.so +
+
+ Installed Directories: + /usr/include/apr-1 and + /usr/share/apr-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ apr-1-config +

+
+

+ is a shell script used to retrieve information + about the apr library in the system. It is + typically used to compile and link against the + library +

+
+

+ libapr-1.so +

+
+

+ is the Apache Portable Runtime library +

+
+
+
+
+
+
+
+

+ Apr-Util-1.6.3 +

+
+
+
+
+
+

+ Introduction to Apr Util +

+

+ The Apache Portable Runtime Utility Library provides a + predictable and consistent interface to underlying client + library interfaces. This application programming interface + assures predictable if not identical behavior regardless of + which libraries are available on a given platform. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://archive.apache.org/dist/apr/apr-util-1.6.3.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: b6e8c9b31d938fe5797ceb0d1ff2eb69 +

    +
  • +
  • +

    + Download size: 423 KB +

    +
  • +
  • +

    + Estimated disk space required: 7.6 MB (add 1.4 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (add 0.3 SBU + for tests) +

    +
  • +
+
+

+ Apr + Util Dependencies +

+
+ Required +
+

+ Apr-1.7.6 +

+
+ Optional +
+

+ FreeTDS, + MariaDB-11.8.3 or MySQL, OpenLDAP-2.6.10, + PostgreSQL-17.6, SQLite-3.50.4, unixODBC-2.3.12, and + Berkeley DB (deprecated) +

+
+
+

+ Installation of Apr Util +

+

+ Install Apr Util by running + the following commands: +

+
./configure --prefix=/usr       \
+            --with-apr=/usr     \
+            --with-gdbm=/usr    \
+            --with-openssl=/usr \
+            --with-crypto &&
+make
+

+ To test the results, issue: make -j1 test. One test, + testdbm, is known to fail. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-gdbm=/usr: + This switch enables the apr_dbm_gdbm-1.so plugin. +

+

+ --with-openssl=/usr + --with-crypto: These + switches enable the apr_crypto_openssl-1.so plugin. +

+

+ --with-berkeley-db=/usr: If you + have installed + Berkeley DB (deprecated), use this switch to compile the + apr_dbm_db-1.so plugin. +

+

+ --with-ldap: If you have + installed OpenLDAP-2.6.10, use this switch to + compile the apr_ldap.so plugin. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + apu-1-config +
+
+ Installed Library: + libaprutil-1.so +
+
+ Installed Directory: + /usr/lib/apr-util-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ apu-1-config +

+
+

+ is an APR-util script designed to allow easy + command line access to APR-util configuration + parameters +

+
+

+ libaprutil-1.so +

+
+

+ contains functions that provide a predictable and + consistent interface to underlying client library + interfaces +

+
+
+
+
+
+
+
+

+ Aspell-0.60.8.1 +

+
+
+
+
+
+

+ Introduction to Aspell +

+

+ The Aspell package contains + an interactive spell checking program and the Aspell libraries. Aspell can either be used as a library + or as an independent spell checker. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/aspell/aspell-0.60.8.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 187bd142f522ada555c7aa6b9cbf56e6 +

    +
  • +
  • +

    + Download size: 3.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 41 MB (Additional 8 MB + for EN dictionary) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU +

    +
  • +
+
+

+ Additional Downloads +

+

+ You'll need to download at least one dictionary. The English + dictionary is given as an example below. Dictionaries in many + other languages can be found at https://ftp.gnu.org/gnu/aspell/dict. +

+ +

+ Aspell Dependencies +

+
+ Required +
+

+ Which-2.23 (for the + dictionaries) +

+
+
+

+ Installation of Aspell +

+

+ First, fix a problem when building with gcc-15: +

+
sed -e 's/; i.*size)/, e = end(); i != e; ++i, ++size_)/' \
+    -i modules/speller/default/vector_hash-t.hpp
+

+ Install Aspell by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+ln -svfn aspell-0.60 /usr/lib/aspell &&
+
+install -v -m755 -d /usr/share/doc/aspell-0.60.8.1/aspell{,-dev}.html &&
+
+install -v -m644 manual/aspell.html/* \
+    /usr/share/doc/aspell-0.60.8.1/aspell.html &&
+
+install -v -m644 manual/aspell-dev.html/* \
+    /usr/share/doc/aspell-0.60.8.1/aspell-dev.html
+

+ If you do not plan to install Ispell, then copy the wrapper script + ispell: +

+
install -v -m 755 scripts/ispell /usr/bin/
+

+ If you do not plan to install Spell, then copy the wrapper script + spell: +

+
install -v -m 755 scripts/spell /usr/bin/
+
+
+

+ Command Explanations +

+

+ ln -svfn aspell-0.60 + /usr/lib/aspell: This command is useful for + configuration of other applications, such as enchant-2.8.12. +

+
+
+

+ Configuring Aspell +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ After Aspell is installed, + you must set up at least one dictionary. Install the + English dictionary by running the following commands: +

+
tar xf ../aspell6-en-2020.12.07-0.tar.bz2 &&
+cd aspell6-en-2020.12.07-0                &&
+
+./configure &&
+make
+

+ Now, as the root user: +

+
make install
+

+ Other dictionaries can be installed with the same + instructions. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + aspell, aspell-import, precat, + preunzip, prezip, prezip-bin, pspell-config, + run-with-aspell, word-list-compress and optionally, + ispell and spell. +
+
+ Installed Libraries: + libaspell.so and + libpspell.so +
+
+ Installed Directories: + /usr/include/pspell and + /usr/lib/aspell-0.60 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ aspell +

+
+

+ is a utility that can function as an ispell -a + replacement, as an independent spell checker, as a + test utility to test out Aspell features, and as a + utility for managing dictionaries +

+
+

+ ispell +

+
+

+ is a wrapper around aspell to invoke + it in ispell compatible + mode +

+
+

+ spell +

+
+

+ is a wrapper around aspell to invoke + it in spell compatible + mode +

+
+

+ aspell-import +

+
+

+ imports old personal dictionaries into Aspell +

+
+

+ precat +

+
+

+ decompresses a prezipped file to + stdout +

+
+

+ preunzip +

+
+

+ decompresses a prezipped file +

+
+

+ prezip +

+
+

+ is a prefix delta compressor, used to compress + sorted word lists or other similar text files +

+
+

+ prezip-bin +

+
+

+ is called by the various wrapper scripts to perform + the actual compressing and decompressing +

+
+

+ pspell-config +

+
+

+ displays information about the libpspell installation, mostly + for use in build scripts +

+
+

+ run-with-aspell +

+
+

+ is a script to help use Aspell as an ispell + replacement +

+
+

+ word-list-compress +

+
+

+ compresses or decompresses sorted word lists for + use with the Aspell spell checker +

+
+

+ libaspell.so +

+
+

+ contains spell checking API functions +

+
+

+ libpspell.so +

+
+

+ is an interface to the libaspell library. All the spell + checking functionality is now in libaspell but this library is + included for backward compatibility +

+
+
+
+
+
+
+
+

+ boost-1.89.0 +

+
+
+
+
+
+

+ Introduction to Boost +

+

+ Boost provides a set of free + peer-reviewed portable C++ source libraries. It includes + libraries for linear algebra, pseudorandom number generation, + multithreading, image processing, regular expressions and + unit testing. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ This package will extract to the boost-1.89.0/ directory. +

+
+

+ Package Information +

+
+ +
+

+ Boost Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ ICU-77.1, + NumPy-2.3.2, and Open MPI +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/boost +

+
+
+

+ Installation of Boost +

+

+ First, fix a build issue which occurs in the stacktrace + library. This issue is specific to i686 systems. +

+
case $(uname -m) in
+   i?86)
+      sed -e "s/defined(__MINGW32__)/& || defined(__i386__)/" \
+          -i ./libs/stacktrace/src/exception_headers.h ;;
+esac
+

+ This package can be built with several jobs running in + parallel. In the instructions below, all available logical + cores are used. Replace $(nproc) with the number of + logical cores you want to use if you don't want to use all. + Install Boost by running the + following commands: +

+
./bootstrap.sh --prefix=/usr --with-python=python3 &&
+./b2 stage -j$(nproc) threading=multi link=shared
+

+ To run Boost.Build's regression tests, issue pushd tools/build/test; python3 + test_all.py; popd. +

+
+

+ Note +

+

+ Boost installs many versioned directories in + /usr/lib/cmake. If a new version of Boost is installed over a previous + version, the older cmake directories need to be explicitly + removed. To do this, run as the root user: +

+
rm -rf /usr/lib/cmake/[Bb]oost*
+

+ before installing the new version. +

+
+

+ Now, as the root user: +

+
./b2 install threading=multi link=shared
+
+
+

+ Command Explanations +

+

+ threading=multi: This + parameter ensures that Boost + is built with multithreading support. +

+

+ link=shared: This + parameter ensures that only shared libraries are created, + except for libboost_exception and libboost_test_exec_monitor + which are created as static. Most people will not need the + static libraries, and most programs using Boost only use the headers. Omit this + parameter if you do need static libraries. +

+

+ --with-python=python3: This + switch ensures Python3 is used if Python2 is installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libboost_atomic.so, + libboost_charconv.so, libboost_chrono.so, + libboost_container.so, libboost_context.so, + libboost_contract.so, libboost_coroutine.so, + libboost_date_time.so, libboost_exception.a, + libboost_fiber.so, libboost_filesystem.so, + libboost_graph.so, libboost_iostreams.so, + libboost_json.so, libboost_locale.so, + libboost_log_setup.so, libboost_log.so, + libboost_math_c99.so, libboost_math_c99f.so, + libboost_math_c99l.so, libboost_math_tr1.so, + libboost_math_tr1f.so, libboost_math_tr1l.so, + libboost_nowide.so, libboost_numpy313.so, + libboost_prg_exec_monitor.so, + libboost_process_monitor.so, libboost_program_options.so, + libboost_python313.so, libboost_random.so, + libboost_regex.so, libboost_serialization.so, + libboost_stacktrace_addr2line.so, + libboost_stacktrace_basic.so, + libboost_stacktrace_from_exception.so, + libboost_stacktrace_noop.so, libboost_system.so, + libboost_test_exec_monitor.a, libboost_thread.so, + libboost_timer.so, libboost_type_erasure.so, + libboost_unit_test_framework.so, libboost_url.so, + libboost_wave.so, and libboost_wserialization.so +
+
+ Installed Directory: + /usr/include/boost and + /usr/share/boost_predef +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libboost_*.so +

+
+

+ contains libraries that provide a variety of + functions, including wrappers for NumPy, linear + algebra, pseudorandom number generation, + multithreading, image processing, regular + expressions, unit testing, locales, JSON, logging, + graphing, and debugging +

+
+
+
+
+
+
+
+

+ brotli-1.1.0 +

+
+
+
+
+
+

+ Introduction to Brotli +

+

+ Brotli provides a + general-purpose lossless compression algorithm that + compresses data using a combination of a modern variant of + the LZ77 algorithm, Huffman coding and 2nd order context + modeling. Its libraries are particularly used for WOFF2 fonts + on webpages. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Brotli Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ pytest-8.4.1 (for testing Python3 + bindings) +

+
+
+

+ Installation of Brotli +

+

+ Install brotli by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..  &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+

+ If desired, build the Python3 bindings: +

+
cd .. &&
+sed "/c\/.*\.[ch]'/d;\
+     /include_dirs=\[/\
+     i libraries=['brotlicommon','brotlidec','brotlienc']," \
+    -i setup.py &&
+pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Install the Python3 bindings + as the root user: +

+
pip3 install --no-index --find-links dist --no-user Brotli
+

+ To test the Python3 binding, + issue: pytest. +

+
+
+

+ Command Explanations +

+

+ sed ... -i + setup.py: Stop setup.py from rebuilding the entire package + all over again, use the already installed libraries for the + Python3 binding instead. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + brotli +
+
+ Installed Libraries: + libbrotlicommon.so, + libbrotlidec.so, and libbrotlienc.so +
+
+ Installed Directories: + /usr/include/brotli and + /usr/lib/python3.13/site-packages/Brotli-1.1.0.dist-info + (if you built and installed the Python3 bindings) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ brotli +

+
+

+ can compress or decompress files, or test the + integrity of compressed files +

+
+

+ libbrotlicommon{-static.a,.so} +

+
+

+ is the Brotli common dictionary library +

+
+

+ libbrotlidec{-static.a,.so} +

+
+

+ is the Brotli decoder library +

+
+

+ libbrotlienc{-static.a,.so} +

+
+

+ is the Brotli common encoder library +

+
+
+
+
+
+
+
+

+ CLucene-2.3.3.4 +

+
+
+
+
+
+

+ Introduction to CLucene +

+

+ CLucene is a C++ version of + Lucene, a high performance text search engine. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ CLucene Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+
+

+ Installation of CLucene +

+

+ Install CLucene by running + the following commands: +

+
patch -Np1 -i ../clucene-2.3.3.4-contribs_lib-1.patch &&
+
+sed -i '/Misc.h/a #include <ctime>' src/core/CLucene/document/DateTools.cpp &&
+
+mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -D BUILD_CONTRIBS_LIB=ON            \
+      -W no-dev ..                        &&
+make
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -D + BUILD_CONTRIBS_LIB=ON: This cmake variable + enables building the CLucene contribs library necessary for + running applications that use language specific text + analyzers like LibreOffice for example. +

+

+ -W no-dev: This + parameter silences several warnings only intended for project + developers. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libclucene-contribs-lib.so, + libclucene-core.so, and libclucene-shared.so +
+
+ Installed Directories: + /usr/include/CLucene and + /usr/lib/CLuceneConfig.cmake +
+
+
+
+
+
+
+
+

+ dbus-glib-0.114 +

+
+
+
+
+
+

+ Introduction to D-Bus GLib +

+

+ The D-Bus GLib package + contains GLib interfaces to + the D-Bus API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ D-Bus GLib Dependencies +

+
+ Required +
+

+ dbus-1.16.2 and GLib-2.84.4 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of D-Bus GLib +

+

+ Install D-Bus GLib by + running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static &&
+make
+

+ To test the results, issue: make check. Note that more + comprehensive tests can be run by following the same method + used in D-Bus instructions, + which requires building the package twice. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + dbus-binding-tool +
+
+ Installed Library: + libdbus-glib-1.so +
+
+ Installed Directories: + /usr/share/gtk-doc/html/dbus-glib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ dbus-binding-tool +

+
+

+ is a tool used to interface with the D-Bus API +

+
+

+ libdbus-glib-1.so +

+
+

+ contains GLib + interface functions to the D-Bus API +

+
+
+
+
+
+
+
+

+ Double-conversion-3.3.1 +

+
+
+
+
+
+

+ Introduction to Double-conversion +

+

+ The Double-conversion + package contains a library that facilitates binary-to-decimal + and decimal-to-binary routines for IEEE doubles. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Double-conversion Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of Double-conversion +

+

+ Install Double-conversion by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -D BUILD_SHARED_LIBS=ON             \
+      -D BUILD_TESTING=ON                 \
+      ..                                  &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -D + BUILD_SHARED_LIBS=ON: This switch forces cmake to + build a shared version of the library instead of the static + version. +

+

+ -D BUILD_TESTING=ON: + This switch builds the test programs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libdouble-conversion.so +
+
+ Installed Directories: + /usr/include/double-conversion +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libdouble-conversion.so +

+
+

+ provides binary-to-decimal and decimal-to-binary + routines for IEEE doubles +

+
+
+
+
+
+
+
+

+ duktape-2.7.0 +

+
+
+
+
+
+

+ Introduction to duktape +

+

+ duktape is an embeddable + Javascript engine, with a focus on portability and compact + footprint. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://duktape.org/duktape-2.7.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: b3200b02ab80125b694bae887d7c1ca6 +

    +
  • +
  • +

    + Download size: 1003 KB +

    +
  • +
  • +

    + Estimated disk space required: 25 MB +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU +

    +
  • +
+
+
+
+

+ Installation of duktape +

+

+ Install duktape by running + the following commands: +

+
sed -i 's/-Os/-O2/' Makefile.sharedlibrary
+make -f Makefile.sharedlibrary INSTALL_PREFIX=/usr
+

+ Now, as the root user: +

+
make -f Makefile.sharedlibrary INSTALL_PREFIX=/usr install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libduktape.so and + libduktaped.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libduktape.so +

+
+

+ is an embeddable Javascript engine +

+
+

+ libduktaped.so +

+
+

+ is a debug version of libduktape.so +

+
+
+
+
+
+
+
+

+ enchant-2.8.12 +

+
+
+
+
+
+

+ Introduction to enchant +

+

+ The enchant package provides + a generic interface into various existing spell checking + libraries. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ enchant Dependencies +

+
+ Required +
+

+ Aspell-0.60.8.1, GLib-2.84.4, and Vala-0.56.18 +

+
+ Optional +
+

+ dbus-glib-0.114, Doxygen-1.14.0, + Hspell, Hunspell, Nuspell, + Voikko, and unittest-cpp + (required for tests) +

+
+
+

+ Installation of enchant +

+

+ Install enchant by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/enchant-2.8.12 &&
+make
+

+ To run tests, unittest-cpp must be installed and the + --enable-relocatable option + passed to configure above. If these conditions are present, + the tests may be run with make + check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Configuring enchant +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.enchant and /usr/share/enchant/enchant.ordering +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ You can test your installation and configuration by + creating a test file and running the following commands + (you can replace the en_GB dictionary by any other + downloaded when installing Aspell-0.60.8.1): +

+
cat > /tmp/test-enchant.txt << "EOF"
+Tel me more abot linux
+Ther ar so many commads
+EOF
+
+enchant-2 -d en_GB -l /tmp/test-enchant.txt &&
+enchant-2 -d en_GB -a /tmp/test-enchant.txt
+

+ You will see a list of the misspelled words followed by a + list of alternatives for them. +

+

+ See more details in the enchant manual page. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + enchant-2 and + enchant-lsmod-2 +
+
+ Installed Libraries: + libenchant-2.so +
+
+ Installed Directories: + /usr/include/enchant-2, + /usr/lib/enchant-2, /usr/share/enchant, and + /usr/share/doc/enchant-2.8.12 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ enchant-2 +

+
+

+ is a spellchecker +

+
+

+ enchant-lsmod-2 +

+
+

+ lists available backends, languages, and + dictionaries +

+
+

+ libenchant-2.so +

+
+

+ contains spell checking interface API functions +

+
+
+
+
+
+
+
+

+ Exempi-2.6.6 +

+
+
+
+
+
+

+ Introduction to Exempi +

+

+ Exempi is an implementation + of XMP (Adobe's Extensible Metadata Platform). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://libopenraw.freedesktop.org/download/exempi-2.6.6.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: f955e63dbd7b91c016f802c678e0e773 +

    +
  • +
  • +

    + Download size: 2.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 319 MB (add 245 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (add 0.5 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ Exempi Dependencies +

+
+ Required +
+

+ Boost-1.89.0 +

+
+ Optional +
+

+ Valgrind-3.25.1 +

+
+
+

+ Installation of Exempi +

+

+ If you intend to run the regression tests, first remove a + test that depends on a proprietary Adobe SDK: +

+
sed -i -r '/^\s?testadobesdk/d' exempi/Makefile.am &&
+autoreconf -fiv
+

+ Install Exempi by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + exempi +
+
+ Installed Library: + libexempi.so +
+
+ Installed Directory: + /usr/include/exempi-2.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ exempi +

+
+

+ is a command line tool to manipulate XMP metadata +

+
+

+ libexempi.so +

+
+

+ is a library used to parse XMP metadata +

+
+
+
+
+
+
+
+

+ fast_float-8.0.2 +

+
+
+
+
+
+

+ Introduction to Fast_float +

+

+ Fast_float provides a set of + C++ header files for efficient string to float operations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Fast_float Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ git-2.50.1 + (for downloading some tests) +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of Fast_float +

+

+ Install fast_float by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -G Ninja ..
+
+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: cmake .. -D FASTFLOAT_TEST=ON -D + CMAKE_POLICY_VERSION_MINIMUM=3.5 && ninja && + ninja test. Note that it'll download some + test files from the Internet, and those files would be + installed if the test suite had run before ninja install. So don't run + the test suite before installation. +

+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows testing this package with cmake-4.0 or newer. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/fast_float and + /usr/share/cmake/FastFloat +
+
+
+
+
+
+
+
+

+ fftw-3.3.10 +

+
+
+
+
+
+

+ Introduction to fftw +

+

+ FFTW is a C subroutine library for computing the discrete + Fourier transform (DFT) in one or more dimensions, of + arbitrary input size, and of both real and complex data (as + well as of even/odd data, i.e. the discrete cosine/sine + transforms or DCT/DST). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.fftw.org/fftw-3.3.10.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 8ccbf6a5ea78a16dbc3e1306e234cc5c +

    +
  • +
  • +

    + Download size: 4.0 MB +

    +
  • +
  • +

    + Estimated disk space required: 59 MB +

    +
  • +
  • +

    + Estimated build time: 1.6 SBU (add 3.4 SBU for tests, + both using parallelism=4) +

    +
  • +
+
+
+
+

+ Installation of fftw +

+
+

+ Note +

+

+ We build fftw three times for different libraries in + different numerical precisions: the default double + precision floating point, the older 32-bit (single + precision) version named float which sacrifices precision + for speed, and the long double which offers increased + precision at the cost of slower execution. +

+
+

+ The first build is for double precision arithmetic. Install + fftw by running the + following commands: +

+
./configure --prefix=/usr    \
+            --enable-shared  \
+            --disable-static \
+            --enable-threads \
+            --enable-sse2    \
+            --enable-avx     \
+            --enable-avx2    &&
+make
+

+ To test the results, issue: make check. On 32-bit + systems, the tests can take substantially longer than they + would on 64-bit machines. +

+

+ Now, as the root user: +

+
make install
+

+ Now build single precision: +

+
make clean &&
+
+./configure --prefix=/usr    \
+            --enable-shared  \
+            --disable-static \
+            --enable-threads \
+            --enable-sse2    \
+            --enable-avx     \
+            --enable-avx2    \
+            --enable-float   &&
+make
+

+ As the root user: +

+
make install
+

+ Finally, build long double precision: +

+
make clean &&
+
+./configure --prefix=/usr    \
+            --enable-shared  \
+            --disable-static \
+            --enable-threads \
+            --enable-long-double &&
+make
+

+ As the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-shared + --disable-static: Use + shared libs instead of static libs. +

+

+ --enable-threads: + This enables libfftw3_threads.so to be compiled. It is + used by e.g. the gimp plugin + from G'MIC. +

+

+ --enable-{sse2,avx,avx2}: These + enables building the optimized routines using SSE2, AVX, and + AVX2 instructions. FFTW will check if these routines can be + really used on the current CPU when the FFTW library is + loaded, so a FFTW build with these routines enabled can still + run on a CPU without SSE2, AVX, or AVX2. These options are + not compatible with --enable-long-double. +

+

+ --enable-float: This + enables building the library that uses single precision + floating point arithmetic. It is faster but less precise than + the default double precision library. The library will be + called libfftw3f.so needed by + PulseAudio-17.0. +

+

+ --enable-long-double: + This enables building the library that uses higher precision + long-double floating point arithmetic. The library will be + called libfftw3l.so. +

+

+ --enable-avx512: This enables + building the optimized routines using AVX512F instructions. + FFTW will check if these routines can be really used on the + current CPU when the FFTW library is loaded, so a FFTW build + with these routines enabled can still run on a CPU without + AVX512F. Use this option if the FFTW build will be used on a + CPU with AVX512F. This option is not compatible with + --enable-long-double. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fftw-wisdom and + fftw-wisdom-to-conf +
+
+ Installed Libraries: + libfftw3.so, libfftw3_threads.so, + libfftw3f.so, libfftw3f_threads.so, libfftw3l.so and + libfftw3l_threads.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fftw-wisdom +

+
+

+ is a utility to generate FFTW wisdom files, which + contain saved information about how to optimally + compute (Fourier) transforms of various sizes +

+
+

+ fftw-wisdom-to-conf +

+
+

+ is a utility to generate C configuration routines + from FFTW wisdom files, where the latter contain + saved information about how to optimally compute + (Fourier) transforms of various sizes +

+
+

+ libfftw3.so +

+
+

+ is the Fast Fourier Transform library +

+
+

+ libfftw3_threads.so +

+
+

+ is the threaded Fast Fourier Transform library +

+
+

+ libfftw3f.so +

+
+

+ is the single-precision Fast Fourier Transform + library, described as “float” + for historic reasons +

+
+

+ libfftw3f_threads.so +

+
+

+ is the threaded single-precision Fast Fourier + Transform library +

+
+

+ libfftw3l.so +

+
+

+ is the long double Fast Fourier Transform library +

+
+

+ libfftw3l_threads.so +

+
+

+ is the threaded long double Fast Fourier Transform + library +

+
+
+
+
+
+
+
+

+ fmt-11.2.0 +

+
+
+
+
+
+

+ Introduction to fmt +

+

+ The fmt package is an + open-source formatting library providing a fast and safe + alternative to C stdio and C++ iostreams. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of fmt +

+

+ Install fmt by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr     \
+      -D CMAKE_INSTALL_LIBDIR=/usr/lib \
+      -D BUILD_SHARED_LIBS=ON          \
+      -D FMT_TEST=OFF                  \
+      -G Ninja ..                      &&
+ninja
+

+ If you have enabled tests, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D FMT_TEST=OFF: This + switch initializes the package tests. Set to ON if you wish + to run tests. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libfmt.so +
+
+ Installed Directories: + /usr/include/fmt and + /usr/lib/cmake/fmt +
+
+
+
+
+
+
+
+

+ GLib-2.84.4 +

+
+
+
+
+
+

+ Introduction to GLib +

+

+ The GLib package contains + low-level libraries useful for providing data structure + handling for C, portability wrappers and interfaces for + runtime functionality such as an event loop, threads, dynamic + loading and an object system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/glib/2.84/glib-2.84.4.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 5655d0ff809b98dd77c02490609fadde +

    +
  • +
  • +

    + Download size: 5.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 203 MB (add 13 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (add 0.5 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+

+ GObject Introspection + (Recommended) +

+
+ +
+

+ Patch for Log Level Selection + (Optional) +

+ +

+ GLib + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Cairo-1.18.4 (for some GObject + Introspection tests), dbus-1.16.2 (for some tests), Fuse-3.17.4 and + bindfs (both + needed for one test), GDB-16.3 (for bindings), Gjs-1.84.2 (for some GObject + Introspection tests), GTK-Doc-1.34.0 (for GObject + Introspection documentation), docbook-xml-4.5, docbook-xsl-nons-1.79.2, + Gi-DocGen-2025.4 (to build API + documentation), glib-networking-2.80.1 + (for some tests, but this is a circular dependency), + Mako-1.3.10 and Markdown-3.8.2 (both + for g-ir-doc-tool), and + sysprof +

+
+ Additional Runtime Dependencies +
+ +
+
+

+ Installation of GLib +

+

+ If desired, apply the optional patch. In many cases, + applications that use this library, either directly or + indirectly via other libraries such as GTK-3.24.50, output numerous + warnings when run from the command line. This patch enables + the use of an environment variable, GLIB_LOG_LEVEL, that suppresses unwanted + messages. The value of the variable is a digit that + corresponds to: +

+ + + + + + + + + + + + + + + + +
+ 1 Alert +
+ 2 Critical +
+ 3 Error +
+ 4 Warning +
+ 5 Notice +
+

+ For instance export + GLIB_LOG_LEVEL=4 will skip output of Warning + and Notice messages (and Info/Debug messages if they are + turned on). If GLIB_LOG_LEVEL is + not defined, normal message output will not be affected. +

+
patch -Np1 -i ../glib-skip_warnings-1.patch
+
+

+ Warning +

+

+ If a previous version of glib is installed, move the + headers out of the way so that later packages do not + encounter conflicts: +

+
if [ -e /usr/include/glib-2.0 ]; then
+    rm -rf /usr/include/glib-2.0.old &&
+    mv -vf /usr/include/glib-2.0{,.old}
+fi
+
+

+ Install GLib by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                  \
+      --prefix=/usr             \
+      --buildtype=release       \
+      -D introspection=disabled \
+      -D glib_debug=disabled    \
+      -D man-pages=enabled      \
+      -D sysprof=disabled       &&
+ninja
+

+ The GLib test suite requires + desktop-file-utils for some + tests. However, desktop-file-utils requires GLib in order to compile; therefore, you + must first install GLib and + then run the test suite. +

+

+ As the root user, install + this package for the first time to allow building GObject + Introspection: +

+
ninja install
+

+ Build GObject Introspection: +

+
tar xf ../../gobject-introspection-1.84.0.tar.xz &&
+
+meson setup gobject-introspection-1.84.0 gi-build \
+            --prefix=/usr --buildtype=release     &&
+ninja -C gi-build
+

+ To test the results of GObject Introspection, issue: + ninja -C gi-build + test. +

+

+ As the root user, install + GObject Introspection for generating the introspection data + of GLib libraries (required by various packages using Glib, + especially some GNOME packages): +

+
ninja -C gi-build install
+

+ Now generate the introspection data: +

+
meson configure -D introspection=enabled &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/docs_dir =/s|$| / 'glib-' + meson.project_version()|" \
+    -i ../docs/reference/meson.build                        &&
+meson configure -D documentation=true                       &&
+ninja
+
+

+ Warning +

+

+ Do not run the test suite as root or some tests will fail + unexpectedly and leave some non-FHS-compliant directories + in the /usr hierarchy. +

+
+

+ To test the results, issue: LC_ALL=C ninja test as a + non-root user. +

+

+ As the root user, install + this package again for the introspection data (and + optionally, the documentation): +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D man-pages=enabled: + This switch causes the build to create and install the + package man pages. +

+

+ -D + glib_debug=disabled: This switch causes the build + to not include some expensive checks for debugging in the + built programs and libraries. +

+

+ -D sysprof=disabled: + This switch disables the tracing support for sysprof. Remove + this option if you want the tracing support. Note that if + sysprof is not installed, removing this option will cause the + build system to download a copy of sysprof from the Internet. +

+
+
+

+ Contents +

+

+ GLib + Contents +

+
+
+
+ Installed Programs: + gapplication, gdbus, gdbus-codegen, + gi-compile-repository, gi-decompile-typelib, + gi-inspect-typelib gio, gio-querymodules, + glib-compile-resources, glib-compile-schemas, + glib-genmarshal, glib-gettextize, glib-mkenums, + gobject-query, gresource, gsettings, gtester, and + gtester-report +
+
+ Installed Libraries: + libgio-2.0.so, + libgirepository-2.0.so, libglib-2.0.so, + libgmodule-2.0.so, libgobject-2.0.so, and + libgthread-2.0.so +
+
+ Installed Directories: + /usr/include/gio-unix-2.0, + /usr/include/glib-2.0, /usr/lib/gio, /usr/lib/glib-2.0, + /usr/share/glib-2.0, and /usr/share/doc/glib-2.84.4 + (optional) +
+
+
+

+ GObject Introspection Contents +

+
+
+
+ Installed Program: + g-ir-annotation-tool, + g-ir-compiler, g-ir-doc-tool (optional), g-ir-generate, + g-ir-inspect, and g-ir-scanner +
+
+ Installed Libraries: + libgirepository-1.0.so and + _giscanner.cpython-313-<arch>-linux-gnu.so +
+
+ Installed Directories: + /usr/include/gobject-introspection-1.0, + /usr/lib/girepository-1.0, + /usr/lib/gobject-introspection, /usr/share/gir-1.0, and + /usr/share/gobject-introspection-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gapplication +

+
+

+ can be used to start applications and to send + messages to already-running instances of other + applications +

+
+

+ gdbus +

+
+

+ is a simple tool used for working with D-Bus objects +

+
+

+ gdbus-codegen +

+
+

+ is used to generate code and/or documentation for + one or more D-Bus + interfaces +

+
+

+ gi-compile-repository +

+
+

+ converts one or more GIR files into one or more + typelib files +

+
+

+ gi-decompile-typelib +

+
+

+ is a GIR decompiler that uses the repository API +

+
+

+ gi-inspect-typelib +

+
+

+ is a utility that gives information about a GI + typelib +

+
+

+ gio +

+
+

+ is a utility that makes many GIO features available from + the command line +

+
+

+ gio-querymodules +

+
+

+ is used to create a giomodule.cache file in the + listed directories. This file lists the implemented + extension points for each module that has been + found +

+
+

+ glib-compile-resources +

+
+

+ is used to read the resource description from a + file and the files that it references to create a + binary resource bundle that is suitable for use + with the GResource API +

+
+

+ glib-compile-schemas +

+
+

+ is used to compile all the GSettings XML schema + files in a directory into a binary file with the + name gschemas.compiled that can be + used by GSettings +

+
+

+ glib-genmarshal +

+
+

+ is a C code marshaller generation utility for GLib + closures +

+
+

+ glib-gettextize +

+
+

+ is a variant of the gettext internationalization + utility +

+
+

+ glib-mkenums +

+
+

+ is a C language enum description generation utility +

+
+

+ gobject-query +

+
+

+ is a small utility that draws a tree of types +

+
+

+ gresource +

+
+

+ offers a simple command line interface to GResource +

+
+

+ gsettings +

+
+

+ offers a simple command line interface to GSettings +

+
+

+ gtester +

+
+

+ is a test running utility +

+
+

+ gtester-report +

+
+

+ is a test report formatting utility +

+
+

+ libgio-2.0.so +

+
+

+ is a library providing useful classes for general + purpose I/O, networking, IPC, settings, and other + high level application functionality +

+
+

+ libgirepository-2.0.so +

+
+

+ is a library providing access to typelibs and + introspection data which describes C APIs +

+
+

+ libglib-2.0.so +

+
+

+ is a general-purpose, portable utility library, + which provides many useful data types, macros, type + conversions, string utilities, file utilities, a + mainloop abstraction, and so on +

+
+

+ libgmodule-2.0.so +

+
+

+ provides portable API for dynamically loading + modules +

+
+

+ libgobject-2.0.so +

+
+

+ provides the GLib base type system and object class +

+
+

+ libgthread-2.0.so +

+
+

+ is a skeleton library for backwards compatibility; + it used to be the GLib thread library but the + functionalities has been merged info libglib-2.0 +

+
+

+ g-ir-annotation-tool +

+
+

+ creates or extracts annotation data from GI + typelibs +

+
+

+ g-ir-compiler +

+
+

+ is a counterpart of gi-compile-repository + for the old libgirepository-1.0 API +

+
+

+ g-ir-doc-tool +

+
+

+ generates Mallard files that can be viewed with + yelp + or rendered to HTML with yelp-build from + yelp-tools +

+
+

+ g-ir-inspect +

+
+

+ is a counterpart of gi-inspect-typelib + for the old libgirepository-1.0 API +

+
+

+ g-ir-generate +

+
+

+ is a counterpart of gi-decompile-typelib + for the old libgirepository-1.0 API +

+
+

+ g-ir-scanner +

+
+

+ is a tool which generates GIR XML files by parsing + headers and introspecting GObject based libraries +

+
+

+ libgirepository-1.0.so +

+
+

+ is a counterpart of libgirepository-2.0 with the + old 1.0 API +

+
+
+
+
+
+
+
+

+ GLibmm-2.66.8 +

+
+
+
+
+
+

+ Introduction to GLibmm +

+

+ The GLibmm package is a set + of C++ bindings for GLib. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GLibmm Dependencies +

+
+ Required +
+

+ GLib-2.84.4 and libsigc++-2.12.1 +

+
+ Optional +
+

+ Doxygen-1.14.0, glib-networking-2.80.1 (for + tests), GnuTLS-3.8.10 (for tests), libxslt-1.1.43, and mm-common +

+
+
+

+ Installation of GLibmm +

+

+ Install GLibmm by running + the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgiomm-2.4.so, libglibmm-2.4.so + and libglibmm_generate_extra_defs-2.4.so +
+
+ Installed Directories: + /usr/lib/g{io,lib}mm-2.4 and + /usr/include/g{io,lib}mm-2.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgiomm-2.4.so +

+
+

+ contains the GIO API classes +

+
+

+ libglibmm-2.4.so +

+
+

+ contains the GLib + API classes +

+
+
+
+
+
+
+
+

+ GLibmm-2.84.0 +

+
+
+
+
+
+

+ Introduction to GLibmm +

+

+ The GLibmm package is a set + of C++ bindings for GLib. + This version is part of a new API for supporting gtkmm-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GLibmm Dependencies +

+
+ Required +
+

+ GLib-2.84.4 and libsigc++-3.6.0 +

+
+ Optional +
+

+ Doxygen-1.14.0, glib-networking-2.80.1 (for + tests), GnuTLS-3.8.10 (for tests), libxslt-1.1.43, and mm-common +

+
+
+

+ Installation of GLibmm +

+

+ Install GLibmm by running + the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgiomm-2.68.so, + libglibmm-2.68.so, and + libglibmm_generate_extra_defs-2.68.so +
+
+ Installed Directories: + /usr/lib/g{io,lib}mm-2.68 and + /usr/include/g{io,lib}mm-2.68 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgiomm-2.68.so +

+
+

+ contains the GIO API classes +

+
+

+ libglibmm-2.68.so +

+
+

+ contains the GLib + API classes +

+
+
+
+
+
+
+
+

+ GMime-3.2.15 +

+
+
+
+
+
+

+ Introduction to GMime +

+

+ The GMime package contains a + set of utilities for parsing and creating messages using the + Multipurpose Internet Mail Extension (MIME) as defined by the + applicable RFCs. See the GMime web site + for the RFCs resourced. This is useful as it provides an API + which adheres to the MIME specification as closely as + possible while also providing programmers with an extremely + easy to use interface to the API functions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GMime Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) and libgpg-error-1.55 +

+
+ Optional +
+

+ DocBook-utils-0.6.14, gpgme-2.0.0, + GTK-Doc-1.34.0, libnsl-2.0.1, Vala-0.56.18, + and Gtk# + (requires Mono) +

+
+
+

+ Installation of GMime +

+

+ Install GMime by running the + following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. Two tests, + test-pgp and test-pgpmime, are known to fail. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgmime-3.0.so +
+
+ Installed Directories: + /usr/include/gmime-3.0 and + /usr/share/gtk-doc/html/gmime-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgmime-3.0.so +

+
+

+ contains API functions used by programs that need + to comply to the MIME standards +

+
+
+
+
+
+
+
+

+ gmmlib-22.8.1 +

+
+
+
+
+
+

+ Introduction to gmmlib +

+

+ The gmmlib package contains + the Intel Graphics Memory Management Library, which provides + device specific memory and buffer management functions for + the Intel Media Driver for VAAPI and the Intel Graphics + Computer Runtime for OpenCL (TM). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ On GitHub we've forked the upstream repository into our own + lfs-book namespace and + recreated a tag for the release. This is done to ensure the + downloaded tarball file name to be correct and consistent + (i.e. it shouldn't change when using the browser instead of + a tool like wget). Our tag and the + upstream release tag are on the same commit, so we've not + introduced any change to the tarball content except the + name of its top-level directory (that Git does not track). +

+
+

+ gmmlib Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of gmmlib +

+

+ Install gmmlib by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D BUILD_TYPE=Release        \
+      -G Ninja                     \
+      -W no-dev ..                 &&
+ninja
+

+ The test suite is normally run by ninja unless -D + RUN_TEST_SUITE=NO is passed to cmake. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libigdgmm.so +
+
+ Installed Directories: + /usr/include/igdgmm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libigdgmm.so +

+
+

+ contains functions that provide Memory Management + functions for Intel Graphics Drivers +

+
+
+
+
+
+
+
+

+ gsl-2.8 +

+
+
+
+
+
+

+ Introduction to Gsl +

+

+ The GNU Scientific Library (GSL) is a numerical library for C + and C++ programmers. It provides a wide range of mathematical + routines such as random number generators, special functions + and least-squares fitting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/gsl/gsl-2.8.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 182ec03204f164e67238c9116591a37d +

    +
  • +
  • +

    + Download size: 8.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 223 MB (with tests, + without docs) +

    +
  • +
  • +

    + Estimated build time: 1.0 SBU (Using parallelism=4; + with tests, without docs) +

    +
  • +
+
+

+ Gsl + Dependencies +

+
+ Optional +
+

+ sphinx_rtd_theme-3.0.2 +

+
+
+

+ Installation of Gsl +

+

+ Install Gsl by running the + following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you have sphinx_rtd_theme-3.0.2 + installed, build the documentation with: +

+
make html
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the documentation, install it (as root) with: +

+
mkdir                   /usr/share/doc/gsl-2.8 &&
+cp -R doc/_build/html/* /usr/share/doc/gsl-2.8
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gsl-config, gsl-histogram, and + gsl-randist +
+
+ Installed Libraries: + libgslcblas.so and libgsl.so +
+
+ Installed Directory: + /usr/include/gsl and + /usr/share/doc/gsl-2.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gsl-config +

+
+

+ is a shell script to get the version number and + compiler flags of the installed Gsl library +

+
+

+ gsl-histogram +

+
+

+ is a demonstration program for the GNU Scientific + Library that computes a histogram from data taken + from stdin +

+
+

+ gsl-randist +

+
+

+ is a demonstration program for the GNU Scientific + Library that generates random samples from various + distributions +

+
+

+ libgslcblas.so +

+
+

+ contains functions that implement a C interface to + Basic Linear Algebra Subprograms +

+
+

+ libgsl.so +

+
+

+ contains functions that provide a collection of + numerical routines for scientific computing +

+
+
+
+
+
+
+
+

+ gspell-1.14.0 +

+
+
+
+
+
+

+ Introduction to gspell +

+

+ The gspell package provides + a flexible API to add spell checking to a GTK+ application. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gspell Dependencies +

+
+ Required +
+

+ enchant-2.8.12, ICU-77.1, and GTK-3.24.50 +

+
+ Optional +
+

+ GLib-2.84.4 (with GObject Introspection), + GTK-Doc-1.34.0, Vala-0.56.18, Valgrind-3.25.1, and Hunspell (for tests) +

+
+
+

+ Installation of gspell +

+

+ Install gspell by running + the following commands: +

+
mkdir gspell-build &&
+cd    gspell-build &&
+
+meson setup --prefix=/usr --buildtype=release -D gtk_doc=false .. &&
+ninja
+

+ To test the results, issue: ninja test. The tests must + be run in an X session. One test, test-checker, is known to + fail if the external package Hunspell is not installed. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D gtk_doc=false: + Prevents building the documentation. Remove this if you have + GTK-Doc installed and wish + to build the documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gspell-app1 +
+
+ Installed Libraries: + libgspell-1.so +
+
+ Installed Directories: + /usr/include/gspell-1 and + /usr/share/gtk-doc/html/gspell-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gspell-app1 +

+
+

+ checks the spelling of a text entered in a window +

+
+

+ libgspell-1.so +

+
+

+ is the gspell API + library +

+
+
+
+
+
+
+
+

+ highway-1.3.0 +

+
+
+
+
+
+

+ Introduction to highway +

+

+ The highway package contains + a C++ library that provides portable SIMD/vector intrinsics. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ highway Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of highway +

+

+ Install highway by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_TESTING=OFF         \
+      -D BUILD_SHARED_LIBS=ON      \
+      -G Ninja ..                  &&
+ninja
+

+ This package does come with a test suite, but it requires + gtest, which is + not in BLFS. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D BUILD_TESTING=OFF: + This parameter disables the test suite from being built + because gtest is not part + of BLFS. Without this parameter, CMake will download this + package during the configuration process. If you wish to run + the tests, install gtest and then + remove this parameter. +

+

+ -D + BUILD_SHARED_LIBS=ON: This parameter enables + building shared versions of the libraries instead of static + versions. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libhwy.so, libhwy_contrib.so, and + libhwy_test.so +
+
+ Installed Directories: + /usr/include/hwy and + /usr/lib/cmake/hwy +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libhwy.so +

+
+

+ contains functions that provide portable + SIMD/vector intrinsics +

+
+

+ libhwy_contrib.so +

+
+

+ contains several additions to Highway, including a + series of dot product, image, math, and sort + routines +

+
+

+ libhwy_test.so +

+
+

+ contains test helpers for Highway +

+
+
+
+
+
+
+
+

+ icu-77.1 +

+
+
+
+
+
+

+ Introduction to ICU +

+

+ The International Components for + Unicode (ICU) package is a mature, widely used set of + C/C++ libraries providing Unicode and Globalization support + for software applications. ICU is widely portable and gives + applications the same results on all platforms. +

+
+

+ Warning +

+

+ Upgrading this package to a new major version (for example, + from 72.1 to 77.1) will require rebuilding many other + packages. If some packages that use the libraries built by + icu4c-77 are rebuilt, they will use the new libraries while + current packages will use the previous libraries. If the + Linux application loader (/usr/lib/ld-linux-x86-64.so.2) determines + that both the old and new libraries are needed, and a + symbol (name of data or function) exists in both versions + of the library, all references to the symbol will be + resolved to the version appearing earlier in the + breadth-first sequence of the dependency graph. This may + result in the application failing if the definition of the + data or the behavior of the function referred by the symbol + differs between two versions. To avoid the issue, users + will need to rebuild every package linked to an ICU library + as soon as possible once ICU is updated to a new major + version. +

+

+ To determine what external libraries are needed (directly + or indirectly) by an application or a library, run: +

+
ldd <application or library> 
+

+ or to see only programs and libraries that directly use a + library: +

+
readelf -d  <application or library> | grep NEEDED
+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ICU + Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 (for documentation) +

+
+
+

+ Installation of ICU +

+
+

+ Note +

+

+ This package expands to the directory icu. +

+
+

+ A part of a test cannot be run on i686. Avoid executing it when building for + that platform: +

+
case $(uname -m) in
+  i?86) sed -e "s/U_PLATFORM_IS_LINUX_BASED/__X86_64__ \&\& &/" \
+            -i source/test/intltest/ustrtest.cpp ;;
+esac
+

+ Install ICU by running the + following commands: +

+
cd source                 &&
+./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. One test + (intltest) still fails for unknown reasons on i686 checking some thai conversions. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + derb, escapesrc, genbrk, genccode, + gencfu, gencmn, gencnval, gendict, gennorm2, genrb, + gensprep, icu-config, icuexportdata, icuinfo, icupkg, + makeconv, pkgdata, and uconv +
+
+ Installed Libraries: + libicudata.so, libicui18n.so, + libicuio.so, libicutest.so, libicutu.so, and + libicuuc.so +
+
+ Installed Directories: + /usr/include/unicode, /usr/lib/icu, + and /usr/share/icu +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ derb +

+
+

+ disassembles a resource bundle +

+
+

+ escapesrc +

+
+

+ converts “\u” escaped characters into + unicode characters +

+
+

+ genbrk +

+
+

+ compiles ICU break iteration rules source files + into binary data files +

+
+

+ genccode +

+
+

+ generates C or platform specific assembly code from + an ICU data file +

+
+

+ gencfu +

+
+

+ reads in Unicode confusable character definitions + and writes out the binary data +

+
+

+ gencmn +

+
+

+ generates an ICU memory-mappable data file +

+
+

+ gencnval +

+
+

+ compiles the converter's aliases file +

+
+

+ gendict +

+
+

+ compiles word lists into ICU string trie + dictionaries +

+
+

+ gennorm2 +

+
+

+ builds binary data files with Unicode normalization + data +

+
+

+ genrb +

+
+

+ compiles a resource bundle +

+
+

+ gensprep +

+
+

+ compiles StringPrep data from filtered RFC 3454 + files +

+
+

+ icu-config +

+
+

+ outputs ICU build options +

+
+

+ icuinfo +

+
+

+ outputs configuration information about the current + ICU +

+
+

+ icupkg +

+
+

+ extracts or modifies an ICU .dat archive +

+
+

+ makeconv +

+
+

+ compiles a converter table +

+
+

+ pkgdata +

+
+

+ packages data for use by ICU +

+
+

+ uconv +

+
+

+ converts data from one encoding to another +

+
+

+ libicudata.so +

+
+

+ is the data library +

+
+

+ libicui18n.so +

+
+

+ is the internationalization (i18n) library +

+
+

+ libicuio.so +

+
+

+ is the ICU I/O (unicode stdio) library +

+
+

+ libicutest.so +

+
+

+ is the test library +

+
+

+ libicutu.so +

+
+

+ is the tool utility library +

+
+

+ libicuuc.so +

+
+

+ is the common library +

+
+
+
+
+
+
+
+

+ inih-61 +

+
+
+
+
+
+

+ Introduction to inih +

+

+ This package is a simple .INI file parser written in C. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of inih +

+

+ Install inih by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + with_test_suite=true: Enable building the test + suite. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libinih.so and + libINIReader.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libinih.so +

+
+

+ is the inih main library +

+
+

+ libINIReader.so +

+
+

+ is the inih parser library +

+
+
+
+
+
+
+
+

+ Jansson-2.14.1 +

+
+
+
+
+
+

+ Introduction to Jansson +

+

+ The Jansson package contains + a library used to encode, decode, and manipulate JSON data. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Jansson +

+

+ Install jansson by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libjansson.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libjansson.so +

+
+

+ contains an API for encoding, decoding, and + manipulating JSON data +

+
+
+
+
+
+
+
+

+ JSON-C-0.18 +

+
+
+
+
+
+

+ Introduction to JSON-C +

+

+ The JSON-C implements a + reference counting object model that allows you to easily + construct JSON objects in C, output them as JSON formatted + strings and parse JSON formatted strings back into the C + representation of JSON objects. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ JSON-C Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional (for documentation) +
+

+ Doxygen-1.14.0 and Graphviz-13.1.2 (for + dot tool) +

+
+
+

+ Installation of JSON-C +

+

+ First, fix building this package with CMake-4.0: +

+
sed -i 's/VERSION 2.8/VERSION 4.0/' apps/CMakeLists.txt  &&
+sed -i 's/VERSION 3.9/VERSION 4.0/' tests/CMakeLists.txt
+

+ Install JSON-C by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_STATIC_LIBS=OFF     \
+      .. &&
+make
+

+ If you have installed Doxygen-1.14.0 and Graphviz-13.1.2, you + can build the documentation by running the following command: +

+
doxygen doc/Doxyfile
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the documentation, install it by running the + following commands as the root user: +

+
install -d -vm755 /usr/share/doc/json-c-0.18 &&
+install -v -m644 doc/html/* /usr/share/doc/json-c-0.18
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply a higher level of compiler optimizations. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libjson-c.so +
+
+ Installed Directories: + /usr/include/json-c +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libjson-c.so +

+
+

+ contains the JSON-C API functions +

+
+
+
+
+
+
+
+

+ JSON-GLib-1.10.6 +

+
+
+
+
+
+

+ Introduction to JSON GLib +

+

+ The JSON GLib package is a + library providing serialization and deserialization support + for the JavaScript Object Notation (JSON) format described by + RFC 4627. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ JSON-GLib Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection required + if building GNOME) +

+
+ Optional +
+

+ docutils-0.21.2 and Gi-DocGen-2025.4 +

+
+
+

+ Installation of JSON GLib +

+

+ Install JSON GLib by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ If docutils-0.21.2 is installed, build the + man pages: +

+
meson configure -D man=true &&
+ninja
+

+ If Gi-DocGen-2025.4 is installed, build + the API documentation: +

+
sed "/json_docdir =/s|$| / 'json-glib-1.10.6'|" -i ../doc/meson.build &&
+meson configure -D documentation=enabled &&
+ninja
+

+ To test the results, issue: ninja test. One test, node, + is known to fail. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=disabled: Add this + option if you have GTK-Doc-1.34.0 installed and do not wish + to generate the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + json-glib-format and + json-glib-validate +
+
+ Installed Library: + libjson-glib-1.0.so +
+
+ Installed Directories: + /usr/{include,libexec,share{,/installed-tests}/json-glib-1.0} + and /usr/share/gtk-doc/html/json-glib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ json-glib-format +

+
+

+ is a simple command line interface to format JSON + data +

+
+

+ json-glib-validate +

+
+

+ is a simple command line interface to validate JSON + data +

+
+

+ libjson-glib-1.0.so +

+
+

+ contains the JSON + GLib API functions +

+
+
+
+
+
+
+
+

+ keyutils-1.6.3 +

+
+
+
+
+
+

+ Introduction to keyutils +

+

+ Keyutils is a set of + utilities for managing the key retention facility in the + kernel, which can be used by filesystems, block devices and + more to gain and retain the authorization and encryption keys + required to perform secure operations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Keyutils Dependencies +

+
+ Optional +
+

+ lsb-tools-0.12 (referred by the test + suite) +

+
+
+

+ Kernel Configuration +

+

+ If running the test suite, some tests needs the following + kernel features enabled: +

+
Security options --->
+  [*] Enable access key retention support                                 [KEYS]
+  [*]   Large payload keys                                            [BIG_KEYS]
+  [*]   Diffie-Hellman operations on retained keys           [KEY_DH_OPERATIONS]
+
+-*- Cryptographic API --->                                              [CRYPTO]
+  Public-key cryptography --->
+    <*/M> RSA (Rivest-Shamir-Adleman)                               [CRYPTO_RSA]
+  Hashes, digests, and MACs --->
+    <*/M> SHA-1                                                    [CRYPTO_SHA1]
+  [*] Asymmetric (public-key cryptographic) key type --->  [ASYMMETRIC_KEY_TYPE]
+    <*> Asymmetric public-key crypto algorithm subtype
+                                            ...  [ASYMMETRIC_PUBLIC_KEY_SUBTYPE]
+    # If not built into the kernel, [SYSTEM_TRUSTED_KEYRING] won't show up;
+    # building as a module won't work:
+    <*>   X.509 certificate parser                     [X509_CERTIFICATE_PARSER]
+  Certificates for signature checking --->
+    [*] Provide system-wide ring of trusted keys        [SYSTEM_TRUSTED_KEYRING]
+    [*]   Provide a keyring to which extra trustable keys may be added
+                                                ...  [SECONDARY_TRUSTED_KEYRING]
+    [*] Provide system-wide ring of blacklisted keys  [SYSTEM_BLACKLIST_KEYRING]
+
+
+

+ Installation of keyutils +

+

+ Install keyutils by running + the following commands: +

+
make
+

+ Now, as the root user: +

+
make NO_ARLIB=1 LIBDIR=/usr/lib BINDIR=/usr/bin SBINDIR=/usr/sbin install
+

+ The test suite can only run after installing this package. To + test the results, issue, as the root user: +

+
make -k test
+

+ If lsb-tools-0.12 is not installed, the + test suite will output some lines complaining the + lsb_release + command not available but it won't affect the test result. +

+
+
+

+ Command Explanations +

+

+ NO_ARLIB=1: This make + flag disables installing the static library. +

+
+
+

+ Configuring keyutils +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/request-key.conf and + /etc/request-key.d/* +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + keyctl, key.dns_resolver, and + request-key +
+
+ Installed Library: + libkeyutils.so +
+
+ Installed Directory: + /etc/keyutils, /etc/request-key.d, + and /usr/share/keyutils +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ keyctl +

+
+

+ controls the key management facility with a variety + of subcommands +

+
+

+ key.dns_resolver +

+
+

+ is invoked by request-key on + behalf of the kernel when kernel services (such as + NFS, CIFS and AFS) need to perform a hostname + lookup and the kernel does not have the key cached. + It is not ordinarily intended to be called directly +

+
+

+ request-key +

+
+

+ is invoked by the kernel when the kernel is asked + for a key that it doesn't have immediately + available. The kernel creates a temporary key and + then calls out to this program to instantiate it. + It is not intended to be called directly +

+
+

+ libkeyutils.so +

+
+

+ contains the keyutils library API instantiation +

+
+
+
+
+
+
+
+

+ libaio-0.3.113 +

+
+
+
+
+
+

+ Introduction to libaio +

+

+ The libaio package is an + asynchronous I/O facility ("async I/O", or "aio") that has a + richer API and capability set than the simple POSIX async I/O + facility. This library, libaio, provides the Linux-native API + for async I/O. The POSIX async I/O facility requires this + library in order to provide kernel-accelerated async I/O + capabilities, as do applications which require the + Linux-native async I/O API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of libaio +

+

+ First, disable the installation of the static library: +

+
sed -i '/install.*libaio.a/s/^/#/' src/Makefile
+

+ Next, fix an issue in the test suite: +

+
case "$(uname -m)" in
+  i?86) sed -e "s/off_t/off64_t/" -i harness/cases/23.t ;;
+esac
+

+ Build libaio by running the + following command: +

+
make
+

+ To test the results, issue: make partcheck. +

+

+ Now, install the package as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libaio.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libaio.so +

+
+

+ is the libaio library +

+
+
+
+
+
+
+
+

+ libarchive-3.8.1 +

+
+
+
+
+
+

+ Introduction to libarchive +

+

+ The libarchive library + provides a single interface for reading/writing various + compression formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libarchive Dependencies +

+
+ Optional +
+

+ libxml2-2.14.5, LZO-2.10, Nettle-3.10.2, and + pcre2-10.45 +

+
+
+

+ Installation of libarchive +

+

+ Install libarchive by + running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ Still as the root user, + create a symlink so we can use bsdunzip as unzip, instead of relying + on the unmaintained Unzip package: +

+
ln -sfv bsdunzip /usr/bin/unzip
+
+

+ Note +

+

+ As discussed in + Wrong Filename Encoding, if the Zip archive to be + extracted contains any file with a name containing any + non-Latin characters, you need to manually specify the + encoding of those characters or they will be turned into + unreadable sequences in the extracted file name. For + example, if a Zip archive created with WinZip, archive.zip, contains a file named with + Simplified Chinese characters, the encoding should be CP936 + and the -I cp936 + option should be used. I.e. the command to extract the + archive should be unzip -I + cp936 archive.zip. +

+
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --without-xml2: This switch sets + expat for xar archive format support instead of preferred + libxml2 if both packages are installed. +

+

+ --with-nettle: This switch sets + Nettle for crypto support instead of OpenSSL. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bsdcat, bsdcpio, bsdtar, and + bsdunzip +
+
+ Installed Libraries: + libarchive.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bsdcat +

+
+

+ expands files to standard output +

+
+

+ bsdcpio +

+
+

+ is a tool similar to cpio +

+
+

+ bsdtar +

+
+

+ is a tool similar to GNU tar +

+
+

+ bsdunzip +

+
+

+ is a tool similar to Info-ZIP unzip +

+
+

+ libarchive.so +

+
+

+ is a library that can create and read several + streaming archive formats +

+
+
+
+
+
+
+
+

+ libassuan-3.0.2 +

+
+
+
+
+
+

+ Introduction to libassuan +

+

+ The libassuan package + contains an inter process communication library used by some + of the other GnuPG related + packages. libassuan's + primary use is to allow a client to interact with a + non-persistent server. libassuan is not, however, limited to + use with GnuPG servers and + clients. It was designed to be flexible enough to meet the + demands of many transaction based environments with + non-persistent servers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-3.0.2.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: c6f1bf4bd2aaa79cd1635dcc070ba51a +

    +
  • +
  • +

    + Download size: 580 KB +

    +
  • +
  • +

    + Estimated disk space required: 6.5 MB (with tests, add + 3.4 MB for pdf documentation) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (with tests and html + documentation) +

    +
  • +
+
+

+ libassuan Dependencies +

+
+ Required +
+

+ libgpg-error-1.55 +

+
+ Optional +
+

+ texlive-20250308 (or install-tl-unx) +

+
+
+

+ Installation of libassuan +

+

+ Install libassuan by running + the following commands: +

+
./configure --prefix=/usr &&
+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
+
+

+ The above commands build the documentation in html and + plaintext formats. If you wish to build alternate formats of + the documentation, you must have texlive-20250308 installed and + issue the following commands: +

+
make -C doc pdf ps
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -dm755   /usr/share/doc/libassuan-3.0.2/html &&
+install -v -m644 doc/assuan.html/* \
+                    /usr/share/doc/libassuan-3.0.2/html &&
+install -v -m644 doc/assuan_nochunks.html \
+                    /usr/share/doc/libassuan-3.0.2      &&
+install -v -m644 doc/assuan.{txt,texi} \
+                    /usr/share/doc/libassuan-3.0.2
+

+ If you built alternate formats of the documentation, install + them by running the following commands as the root user: +

+
install -v -m644  doc/assuan.{pdf,ps,dvi} \
+                  /usr/share/doc/libassuan-3.0.2
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + libassuan.so +
+
+ Installed Directory: + /usr/share/doc/libassuan-3.0.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libassuan.so +

+
+

+ is an inter process communication library which + implements the Assuan protocol +

+
+
+
+
+
+
+
+

+ libatasmart-0.19 +

+
+
+
+
+
+

+ Introduction to libatasmart +

+

+ The libatasmart package is a + disk reporting library. It only supports a subset of the ATA + S.M.A.R.T. functionality. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://0pointer.de/public/libatasmart-0.19.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 53afe2b155c36f658e121fe6def33e77 +

    +
  • +
  • +

    + Download size: 248 KB +

    +
  • +
  • +

    + Estimated disk space required: 3 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libatasmart +

+
+
+

+ Installation of libatasmart +

+

+ Install libatasmart by + running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc/libatasmart-0.19 install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + skdump and sktest +
+
+ Installed Library: + libatasmart.so +
+
+ Installed Directory: + /usr/share/doc/libatasmart-0.19 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ skdump +

+
+

+ is a utility that reports on the status of the disk +

+
+

+ sktest +

+
+

+ is a utility to issue disk tests +

+
+

+ libatasmart.so +

+
+

+ contains the ATA S.M.A.R.T API functions +

+
+
+
+
+
+
+
+

+ libatomic_ops-7.8.2 +

+
+
+
+
+
+

+ Introduction to libatomic_ops +

+

+ libatomic_ops provides + implementations for atomic memory update operations on a + number of architectures. This allows direct use of these in + reasonably portable code. Unlike earlier similar packages, + this one explicitly considers memory barrier semantics, and + allows the construction of code that involves minimum + overhead across a variety of architectures. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of libatomic_ops +

+

+ Install libatomic_ops by + running the following commands: +

+
./configure --prefix=/usr    \
+            --enable-shared  \
+            --disable-static \
+            --docdir=/usr/share/doc/libatomic_ops-7.8.2 &&
+make
+

+ To check the results, issue make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-shared: This + switch enables building of the libatomic_ops shared libraries. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libatomic_ops.so and + libatomic_ops_gpl.so +
+
+ Installed Directory: + /usr/include/libatomic_ops and + /usr/share/doc/libatomic_ops-7.8.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libatomic_ops.so +

+
+

+ contains functions for atomic memory operations +

+
+
+
+
+
+
+
+

+ libblockdev-3.3.1 +

+
+
+
+
+
+

+ Introduction to libblockdev +

+

+ libblockdev is a C library supporting GObject Introspection + for manipulation of block devices. It has a plugin-based + architecture where each technology (like LVM, Btrfs, MD RAID, + Swap,...) is implemented in a separate plugin, possibly with + multiple implementations (e.g. using LVM CLI or the new LVM + DBus API). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libblockdev Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection required + for GNOME) +

+
+ Recommended +
+ +
+ Optional +
+

+ btrfs-progs-6.16, GTK-Doc-1.34.0, + JSON-GLib-1.10.6, mdadm-4.4, parted-3.6, + smartmontools-7.5, volume_key, + ndctl, and targetcli (for + tests) +

+
+
+

+ Installation of libblockdev +

+

+ Install libblockdev by + running the following commands: +

+
./configure --prefix=/usr      \
+            --sysconfdir=/etc  \
+            --with-python3     \
+            --without-escrow   \
+            --without-gtk-doc  \
+            --without-lvm      \
+            --without-lvm_dbus \
+            --without-nvdimm   \
+            --without-tools    \
+            --without-smartmontools &&
+make
+

+ The test suite requires targetcli, which is not a part of BLFS. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --without-escrow: + This switch allows building libblockdev without volume_key + installed. +

+

+ --without-lvm + --without-lvm_dbus + --without-tools: The + combination of these switches allows building libblockdev without parted-3.6 installed. + Remove it if you've installed parted-3.6 and wish to build the + lvm-cache-stats + or vfat-resize + utilities, or wish libblockdev to support logical volumes. +

+

+ --without-smartmontools: This + switch allows building libblockdev without JSON-GLib-1.10.6 or smartmontools-7.5 installed. Remove + it if you have both packages installed. +

+

+ --without-btrfs --without-mdraid + --without-tools: The combination of these switches + allows building libblockdev + without libbytesize-2.11 installed. The + --without-mdraid option will + break UDisks-2.10.2, so don't use it unless you + really know what you are doing. +

+

+ --without-crypto: This switch + allows building libblockdev + without cryptsetup-2.8.1 or keyutils-1.6.3 + installed. This switch will break UDisks-2.10.2, so don't + use it unless you really know what you are doing. +

+

+ --without-dm --without-lvm + --without-lvm_dbus --without-mpath: The combination of + these switches allows building libblockdev without LVM2-2.03.34 installed. + The --without-dm and --without-mpath options are not in the + instructions provided by the book because LVM2-2.03.34 is + required for cryptsetup-2.8.1 and cryptsetup-2.8.1 is a recommended + dependency of libblockdev + anyway. +

+

+ --without-nvme: This switch + allows building libblockdev + without libnvme-1.15 installed. This switch will + break UDisks-2.10.2, so don't use it unless you + really know what you are doing. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lvm-cache-stats and vfat-resize + (both optional) +
+
+ Installed Libraries: + libbd_btrfs.so, libbd_crypto.so, + libbd_dm.so, libbd_fs.so, libbd_loop.so, libbd_lvm.so + (optional), libbd_lvm-dbus.so (optional), + libbd_mdraid.so, libbd_mpath.so, libbd_nvme.so, + libbd_part.so, libbd_swap.so, libbd_utils.so, and + libblockdev.so +
+
+ Installed Directories: + /etc/libblockdev, + /usr/include/blockdev, and + /usr/share/gtk-doc/html/libblockdev (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lvm-cache-stats +

+
+

+ prints statistics on caches on LVM Logical Volumes +

+
+

+ vfat-resize +

+
+

+ resizes vfat file + systems +

+
+
+
+
+
+
+
+

+ libbytesize-2.11 +

+
+
+
+
+
+

+ Introduction to libbytesize +

+

+ The libbytesize package is a + library which facilitates the common operations with sizes in + bytes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libbytesize Dependencies +

+
+ Required +
+

+ pcre2-10.45 and Pygments-2.19.2 +

+
+ Optional +
+

+ GTK-Doc-1.34.0, pocketlint + (python module for one test), and polib (python module + for one test) +

+
+
+

+ Installation of libbytesize +

+

+ Install libbytesize by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ If you have the optional python modules installed, the + regression tests can be run with: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bscalc +
+
+ Installed Library: + libbytesize.so +
+
+ Installed Directories: + /usr/include/bytesize and + /usr/lib/python3.13/site-packages/bytesize +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ bscalc +

+
+

+ converts from a larger unit, such as MB or TB, back + to a value in bytes +

+
+

+ libbytesize.so +

+
+

+ contains functions used to handle common read/write + operations with sizes in bytes +

+
+
+
+
+
+
+
+

+ libclc-20.1.8 +

+
+
+
+
+
+

+ Introduction to libclc +

+

+ The libclc package contains + an implementation of the library requirements of the OpenCL C + programming language, as specified by the OpenCL 1.1 + Specification. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libclc Dependencies +

+
+ Required +
+

+ SPIRV-LLVM-Translator-20.1.5 +

+
+
+

+ Installation of libclc +

+

+ Install libclc by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -G Ninja ..                  &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/clc and + /usr/share/clc +
+
+
+
+
+
+
+
+

+ libcloudproviders-0.3.6 +

+
+
+
+
+
+

+ Introduction to libcloudproviders +

+

+ The libcloudproviders + package contains a library which provides a DBus API that + allows cloud storage sync clients to expose their services. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libcloudproviders Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) + and Vala-0.56.18 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of libcloudproviders +

+

+ Install libcloudproviders by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D enable-gtk-doc: Use this + switch if you have GTK-Doc-1.34.0 installed and wish to + generate the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libcloudproviders.so +
+
+ Installed Directories: + /usr/include/cloudproviders +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libcloudproviders.so +

+
+

+ contains functions that provide a DBus API to allow + cloud storage sync clients to expose their services +

+
+
+
+
+
+
+
+

+ libdaemon-0.14 +

+
+
+
+
+
+

+ Introduction to libdaemon +

+

+ The libdaemon package is a + lightweight C library that eases the writing of UNIX daemons. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libdaemon Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 and Lynx-2.9.2 +

+
+
+

+ Installation of libdaemon +

+

+ Install libdaemon by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you have Doxygen + installed and wish to build the API documentation, issue the + following command: +

+
make -C doc doxygen
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc/libdaemon-0.14 install
+

+ If you built the API documentation, install it using the + following commands as the root user: +

+
install -v -m755 -d /usr/share/doc/libdaemon-0.14/reference/html &&
+install -v -m644 doc/reference/html/* /usr/share/doc/libdaemon-0.14/reference/html &&
+install -v -m644 doc/reference/man/man3/* /usr/share/man/man3
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libdaemon.so +
+
+ Installed Directories: + /usr/include/libdaemon and + /usr/share/doc/libdaemon-0.14 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libdaemon.so +

+
+

+ contains the libdaemon API functions +

+
+
+
+
+
+
+
+

+ libdisplay-info-0.3.0 +

+
+
+
+
+
+

+ Introduction to libdisplay-info +

+

+ The libdisplay-info package + provides a set of high-level and low-level functions to + access detailed Extended Display Identification Data (EDID) + information. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libdisplay-info Dependencies +

+
+ Required +
+

+ hwdata-0.398 +

+
+
+

+ Installation of libdisplay-info +

+

+ Install libdisplay-info by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, run ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + di-edid-decode +
+
+ Installed Library: + libdisplay-info.so +
+
+ Installed Directories: + /usr/include/libdisplay-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ di-edid-decode +

+
+

+ parses EDID file and prints information from the + file in human-readable form +

+
+

+ libdisplay-info.so +

+
+

+ is a library for handling EDID and DisplayID +

+
+
+
+
+
+
+
+

+ libgcrypt-1.11.2 +

+
+
+
+
+
+

+ Introduction to libgcrypt +

+

+ The libgcrypt package + contains a general purpose crypto library based on the code + used in GnuPG. The library + provides a high level interface to cryptographic building + blocks using an extendable and flexible API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libgcrypt Dependencies +

+
+ Required +
+

+ libgpg-error-1.55 +

+
+ Optional +
+

+ texlive-20250308 (or install-tl-unx) +

+
+
+

+ Installation of libgcrypt +

+

+ Install libgcrypt by running + the following commands: +

+
./configure --prefix=/usr &&
+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
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+install -v -dm755   /usr/share/doc/libgcrypt-1.11.2 &&
+install -v -m644    README doc/{README.apichanges,fips*,libgcrypt*} \
+                    /usr/share/doc/libgcrypt-1.11.2 &&
+
+install -v -dm755   /usr/share/doc/libgcrypt-1.11.2/html &&
+install -v -m644 doc/gcrypt.html/* \
+                    /usr/share/doc/libgcrypt-1.11.2/html &&
+install -v -m644 doc/gcrypt_nochunks.html \
+                    /usr/share/doc/libgcrypt-1.11.2      &&
+install -v -m644 doc/gcrypt.{txt,texi} \
+                    /usr/share/doc/libgcrypt-1.11.2
+
+
+

+ Command Explanations +

+

+ --with-capabilities: This option + enables libcap2 support. Note that this breaks cryptsetup-2.8.1 +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dumpsexp, hmac256, and + mpicalc +
+
+ Installed Library: + libgcrypt.so +
+
+ Installed Directory: + /usr/share/doc/libgcrypt-1.11.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ dumpsexp +

+
+

+ is a debug tool for S-expressions +

+
+

+ hmac256 +

+
+

+ is a standalone HMAC-SHA-256 implementation used to + compute an HMAC-SHA-256 authentication code +

+
+

+ mpicalc +

+
+

+ is a RPN (Reverse Polish Notation) calculator +

+
+

+ libgcrypt.so +

+
+

+ contains the cryptographic API functions +

+
+
+
+
+
+
+
+

+ libgpg-error-1.55 +

+
+
+
+
+
+

+ Introduction to libgpg-error +

+

+ The libgpg-error package + contains a library that defines common error values for all + GnuPG components. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of libgpg-error +

+

+ Install libgpg-error by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m644 -D README /usr/share/doc/libgpg-error-1.55/README
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gpg-error, gpgrt-config, and + yat2m +
+
+ Installed Library: + libgpg-error.so +
+
+ Installed Directories: + /usr/share/common-lisp/source/gpg-error, + /usr/share/libgpg-error, and + /usr/share/doc/libgpg-error-1.55 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ gpg-error +

+
+

+ is used to determine libgpg-error error codes +

+
+

+ gpgrt-config +

+
+

+ is a pkg-config style + tool for querying the information about installed + version of libgpg-error +

+
+

+ yat2m +

+
+

+ extracts man pages from a Texinfo source +

+
+

+ libgpg-error.so +

+
+

+ contains the libgpg-error API functions +

+
+
+
+
+
+
+
+

+ libgsf-1.14.53 +

+
+
+
+
+
+

+ Introduction to libgsf +

+

+ The libgsf package contains + a library used for providing an extensible input/output + abstraction layer for structured file formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libgsf Dependencies +

+
+ Required +
+

+ GLib-2.84.4 and libxml2-2.14.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ 7zip-25.01 (for tests), GTK-Doc-1.34.0, + Valgrind-3.25.1 (for tests), and + + unzip (for tests) +

+
+
+

+ Installation of libgsf +

+

+ Install libgsf by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. Two tests + related to Valgrind-3.25.1 are known to fail. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gsf, gsf-office-thumbnailer, and + gsf-vba-dump +
+
+ Installed Library: + libgsf-1.so +
+
+ Installed Directories: + /usr/include/libgsf-1, + /usr/share/gtk-doc/html/gsf and + /usr/share/thumbnailers +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ gsf +

+
+

+ is a simple archive utility, somewhat similar to + tar(1) +

+
+

+ gsf-office-thumbnailer +

+
+

+ is used internally by GNOME applications such as + Nautilus to + generate thumbnails of several types of office + application files +

+
+

+ gsf-vba-dump +

+
+

+ is used to extract Visual Basic for Applications + macros from files +

+
+

+ libgsf-1.so +

+
+

+ contains the libgsf API functions +

+
+
+
+
+
+
+
+

+ libgudev-238 +

+
+
+
+
+
+

+ Introduction to libgudev +

+

+ The libgudev package + contains GObject bindings for libudev. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection required + for GNOME) +

+
+ Optional +
+

+ GTK-Doc-1.34.0 and umockdev-0.19.3 (for + testing) +

+
+
+

+ Installation of libgudev +

+

+ Install libgudev by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this option + if GTK-Doc is installed and you wish to build and install the + API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libgudev-1.0.so +
+
+ Installed Directories: + /usr/include/gudev-1.0 and + /usr/share/gtk-doc/html/gudev +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgudev-1.0.so +

+
+

+ is a GObject-based wrapper library for libudev +

+
+
+
+
+
+
+
+

+ libgusb-0.4.9 +

+
+
+
+
+
+

+ Introduction to libgusb +

+

+ The libgusb package contains + the GObject wrappers for libusb-1.0 that makes it easy to do + asynchronous control, bulk and interrupt transfers with + proper cancellation and integration into a mainloop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libgusb Dependencies +

+
+ Required +
+

+ JSON-GLib-1.10.6 and libusb-1.0.29 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 and umockdev-0.19.3 + (for full test coverage) +

+
+
+

+ Installation of libgusb +

+

+ Install libgusb by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D docs=false       &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed -E "/output|install_dir/s/('libgusb)'/\1-0.4.9'/" \
+    -i ../docs/meson.build                            &&
+meson configure -D docs=true                          &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D docs=false: Allow + building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gusbcmd +
+
+ Installed Library: + libgusb.so +
+
+ Installed Directories: + /usr/include/gusb-1 and + /usr/share/doc/libgusb-0.4.9 (if gi-docgen is + used) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gusbcmd +

+
+

+ is a debugging tool for the libgusb library +

+
+

+ libgusb.so +

+
+

+ contains the libgusb API functions +

+
+
+
+
+
+
+
+

+ libical-3.0.20 +

+
+
+
+
+
+

+ Introduction to libical +

+

+ The libical package contains + an implementation of the iCalendar protocols and data + formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libical Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 (for the API + documentation), Graphviz-13.1.2 (for the API + documentation), GTK-Doc-1.34.0 (for the API + documentation), ICU-77.1, PyGObject-3.52.3 (for some + tests), and + Berkeley DB (deprecated) +

+
+
+

+ Installation of libical +

+

+ Install libical by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr  \
+      -D CMAKE_BUILD_TYPE=Release   \
+      -D SHARED_ONLY=yes            \
+      -D ICAL_BUILD_DOCS=false      \
+      -D GOBJECT_INTROSPECTION=true \
+      -D ICAL_GLIB_VAPI=true        \
+      .. &&
+make -j1
+

+ If you have Doxygen-1.14.0, Graphviz-13.1.2, and + GTK-Doc-1.34.0 installed and wish to + build the API documentation, you should remove the -D ICAL_BUILD_DOCS=false switch + and issue: +

+
make docs
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+

+ If you have built the API documentation, install by issuing, + as root user: +

+
install -vdm755 /usr/share/doc/libical-3.0.20/html &&
+cp -vr apidocs/html/* /usr/share/doc/libical-3.0.20/html
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply higher level of the compiler optimizations. +

+

+ -D SHARED_ONLY=yes: + This switch is used in order to only build the shared + libraries. +

+

+ -D + ICAL_BUILD_DOCS=false: This switch prevents + building the GTK + documentation. Remove if you want to build the documentation. +

+

+ -D + GOBJECT_INTROSPECTION=true: This switch is used + to generate GObject metadata bindings. +

+

+ -D + ICAL_GLIB_VAPI=true: This switch is used in order + to build bindings for Vala-0.56.18. +

+

+ -D USE_BUILTIN_TZDATA=yes: This + switch is used in order to build using your own timezone + data. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libical_cxx.so, libical.so, + libical-glib.so, libicalss_cxx.so, libicalss.so, and + libicalvcal.so +
+
+ Installed Directory: + /usr/include/libical, + /usr/include/libical-glib, /usr/lib/cmake/LibIcal, + /usr/libexec/libical, + /usr/share/gtk-doc/html/libical-glib (optional), and + /usr/share/doc/libical-3.0.20/html +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libical.so +

+
+

+ contains the libical API functions +

+
+

+ libical_cxx.so +

+
+

+ contains the libical C++ bindings +

+
+

+ libical-glib.so +

+
+

+ contains the libical glib bindings +

+
+

+ libicalss.so +

+
+

+ is a library that allows you to store iCal + component data to disk in a variety of ways +

+
+

+ libicalss_cxx.so +

+
+

+ contains the libicalss C++ bindings +

+
+

+ libicalvcal.so +

+
+

+ is a vCard/vCalendar C interface +

+
+
+
+
+
+
+
+

+ libidn-1.43 +

+
+
+
+
+
+

+ Introduction to libidn +

+

+ libidn is a package designed + for internationalized string handling based on the Stringprep, + Punycode and + IDNA + specifications defined by the Internet Engineering Task Force + (IETF) Internationalized Domain Names (IDN) working group, + used for internationalized domain names. This is useful for + converting data from the system's native representation into + UTF-8, transforming Unicode strings into ASCII strings, + allowing applications to use certain ASCII name labels + (beginning with a special prefix) to represent non-ASCII name + labels, and converting entire domain names to and from the + ASCII Compatible Encoding (ACE) form. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/libidn/libidn-1.43.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 4a32cafa4e9de86943fbae9a75c41f01 +

    +
  • +
  • +

    + Download size: 2.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 20 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests) +

    +
  • +
+
+

+ libidn Dependencies +

+
+ Optional +
+

+ Emacs-30.2, GTK-Doc-1.34.0, OpenJDK-24.0.2, + Valgrind-3.25.1, and Mono +

+
+
+

+ Installation of libidn +

+

+ Install libidn by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, run: +

+
pushd tests  &&
+  make check &&
+popd 
+

+ Now, as the root user: +

+
make install &&
+
+find doc -name "Makefile*" -delete            &&
+rm -rf -v doc/{gdoc,idn.1,stamp-vti,man,texi} &&
+mkdir -v       /usr/share/doc/libidn-1.43     &&
+cp -r -v doc/* /usr/share/doc/libidn-1.43
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+

+ --enable-java: Use this switch to + enable building the Java implementation of libidn. Note that OpenJDK-24.0.2 must be + installed to use this option. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + idn +
+
+ Installed Library: + libidn.so +
+
+ Installed Directories: + /usr/share/doc/libidn-1.43 and + /usr/share/gtk-doc/html/libidn +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ idn +

+
+

+ is a command line interface to the + internationalized domain name library +

+
+

+ libidn.so +

+
+

+ contains a generic Stringprep implementation that + does Unicode 3.2 NFKC normalization, mapping and + prohibition of characters, and bidirectional + character handling. Profiles for Nameprep, iSCSI, + SASL and XMPP are included as well as support for + Punycode and ASCII Compatible Encoding (ACE) via + IDNA. A mechanism to define Top-Level Domain (TLD) + specific validation tables, and to compare strings + against those tables, as well as default tables for + some TLDs are included +

+
+
+
+
+
+
+
+

+ libidn2-2.3.8 +

+
+
+
+
+
+

+ Introduction to libidn2 +

+

+ libidn2 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/libidn/libidn2-2.3.8.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: a8e113e040d57a523684e141970eea7a +

    +
  • +
  • +

    + Download size: 2.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 21 MB (add 3 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (add 0.6 SBU for tests) +

    +
  • +
+
+

+ libidn2 Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ git-2.50.1 + and GTK-Doc-1.34.0 +

+
+
+

+ Installation of libidn2 +

+

+ Install libidn2 by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + idn2 +
+
+ Installed Library: + libidn2.so +
+
+ Installed Directory: + /usr/share/gtk-doc/html/libidn2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ idn2 +

+
+

+ is a command line interface to the + internationalized domain library +

+
+

+ libidn2.so +

+
+

+ contains a generic Stringprep implementation used + for internationalized string handling +

+
+
+
+
+
+
+
+

+ libksba-1.6.7 +

+
+
+
+
+
+

+ Introduction to Libksba +

+

+ The Libksba 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 Libgcrypt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Libksba Dependencies +

+
+ Required +
+

+ libgpg-error-1.55 +

+
+ Optional +
+

+ Valgrind-3.25.1 +

+
+
+

+ Installation of Libksba +

+

+ Install Libksba by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + libksba.so +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libksba.so +

+
+

+ contains the cryptographic API functions +

+
+
+
+
+
+
+
+

+ liblinear-249 +

+
+
+
+
+
+

+ Introduction to liblinear +

+

+ This package provides a library for learning linear + classifiers for large scale applications. It supports Support + Vector Machines (SVM) with L2 and L1 loss, logistic + regression, multi class classification and also Linear + Programming Machines (L1-regularized SVMs). Its computational + complexity scales linearly with the number of training + examples making it one of the fastest SVM solvers around. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ After updating this package from liblinear-247 or earlier, you need to + reinstall Nmap-7.98 in order to link to the new + library. +

+
+

+ Package Information +

+
+ +
+
+
+

+ Installation of liblinear +

+

+ Install liblinear by running + the following commands: +

+
make lib
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -vm644 linear.h /usr/include &&
+install -vm755 liblinear.so.6 /usr/lib &&
+ln -sfv liblinear.so.6 /usr/lib/liblinear.so
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + liblinear.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ liblinear.so +

+
+

+ is a large linear classification library +

+
+
+
+
+
+
+
+

+ libmbim-1.32.0 +

+
+
+
+
+
+

+ Introduction to libmbim +

+

+ The libmbim package contains + a GLib-based library for talking to WWAN modems and devices + which speak the Mobile Interface Broadband Model (MBIM) + protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libmbim Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0, bash-completion, + and help2man +

+
+
+

+ Installation of libmbim +

+

+ Install libmbim by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                 \
+      --prefix=/usr            \
+      --buildtype=release      \
+      -D bash_completion=false \
+      -D man=false             &&
+
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + bash_completion=false: Use this option if the + external bash-completion + package is not installed. +

+

+ -D man=false: Use + this option if the external help2man + package is not installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mbimcli and mbim-network +
+
+ Installed Libraries: + libmbim-glib.so +
+
+ Installed Directories: + /usr/include/libmbim-glib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ mbimcli +

+
+

+ is a utility used to control MBIM devices +

+
+

+ mbim-network +

+
+

+ is a utility used for simple network management of + MBIM devices +

+
+

+ libmbim-glib.so +

+
+

+ contains API functions for talking to WWAN modems + and devices which speak the Mobile Interface + Broadband Model (MBIM) protocol +

+
+
+
+
+
+
+
+

+ libnvme-1.15 +

+
+
+
+
+
+

+ Introduction to libnvme +

+

+ The libnvme package is a + library which provides type definitions for NVMe + specification structures, enumerations, and bit fields, + helper functions to construct, dispatch, and decode commands + and payloads, and utilities to connect, scan, and manage NVMe + devices on a Linux system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libnvme Dependencies +

+
+ Optional +
+

+ dbus-1.16.2, JSON-C-0.18, keyutils-1.6.3, and SWIG-4.3.1 +

+
+
+

+ Installation of libnvme +

+

+ Install libnvme by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D libdbus=auto .. &&
+ninja
+

+ To run the tests, issue: ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libnvme.so and libnvme-mi.so +
+
+ Installed Directories: + /usr/include/nvme +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libnvme.so +

+
+

+ contains functions used to handle operations + relating to NVMe devices. +

+
+
+
+
+
+
+
+

+ libpaper-2.2.6 +

+
+
+
+
+
+

+ Introduction to libpaper +

+

+ This package is intended to provide a simple way for + applications to take actions based on a system or + user-specified paper size. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of libpaper +

+

+ Install libpaper by running + the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --docdir=/usr/share/doc/libpaper-2.2.6 &&
+make
+

+ The test suite of this package does not work with a + configuration using the standard installation location. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Configuring libpaper +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The paper size is automatically determined from the system + locale; see LC_PAPER in + locale(7). If + you want to override it, create a papersize file in the user configuration + directory. For example: +

+
mkdir -pv ~/.config &&
+echo "a4" > ~/.config/papersize
+

+ If you want to override the paper size globally (for all + users), set up the PAPERSIZE + environment variable. For example: +

+
echo "PAPERSIZE=a4" > /etc/profile.d/libpaper.sh
+

+ You may use a different paper size, such as letter. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + paper and paperconf +
+
+ Installed Library: + libpaper.so +
+
+ Installed Directories: + /usr/share/doc/libpaper-2.2.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ paper +

+
+

+ prints paper configuration information +

+
+

+ paperconf +

+
+

+ prints paper configuration information in a + compatibility mode +

+
+

+ libpaper.so +

+
+

+ contains functions for interrogating the paper + library +

+
+
+
+
+
+
+
+

+ libportal-0.9.1 +

+
+
+
+
+
+

+ Introduction to libportal +

+

+ The libportal package + provides a library that contains GIO-style async APIs for + most Flatpak portals. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ libportal Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+ Recommended +
+ +
+ Recommended (Runtime) +
+

+ To make this package really useful, install xdg-desktop-portal-1.20.3, + xdg-desktop-portal-gtk-1.15.3, + xdg-desktop-portal-gnome-48.0 + (if running a GNOME desktop environment), and xdg-desktop-portal-lxqt-1.2.0 + (if running a LXQt desktop environment). They are not needed + if only using this package to satisfy a build dependency. +

+
+ Optional +
+

+ Gi-DocGen-2025.4 (for documentation), + dbusmock-0.36.0 and pytest-8.4.1 (for + testing), Qt-6.9.2, and Vala-0.56.18 +

+
+
+

+ Installation of libportal +

+
+

+ Warning +

+

+ If a previous version of libportal is installed, move the + headers out of the way so that later packages do not + encounter conflicts (as the root user): +

+
if [ -e /usr/include/libportal ]; then
+    rm -rf /usr/include/libportal.old &&
+    mv -vf /usr/include/libportal{,.old}
+fi
+
+

+ First, apply a patch to fix building against Qt 6.9 and + later: +

+
patch -Np1 -i ../libportal-0.9.1-qt6.9_fixes-1.patch
+

+ Install libportal by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D vapi=false       \
+            -D docs=false       \
+            .. &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed -i "/output/s/-1/-0.9.1/" ../doc/meson.build &&
+meson configure -D docs=true                     &&
+ninja
+

+ To test the results, issue: ninja test. Note that + additional dbus-daemon + processes may need to be killed after the tests are run. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D vapi=false: This + parameter disables using Vala-0.56.18. Remove this parameter if you + have it installed. +

+

+ -D docs=false: Allow + building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libportal.so, libportal-gtk3.so, + libportal-gtk4.so, and libportal-qt6.so +
+
+ Installed Directories: + /usr/include/libportal and + /usr/share/gtk-doc/html/libportal +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ libportal.so +

+
+

+ provides GIO-style async APIs for most Flatpak + portals +

+
+

+ libportal-gtk3.so +

+
+

+ provides GTK+-3 specific functions for interacting + with Flatpak portals +

+
+

+ libportal-gtk4.so +

+
+

+ provides GTK-4 specific functions for interacting + with Flatpak portals +

+
+

+ libportal-qt6.so +

+
+

+ provides Qt6-specific functions for interacting + with Flatpak portals +

+
+
+
+
+
+
+
+

+ libproxy-0.5.10 +

+
+
+
+
+
+

+ Introduction to libproxy +

+

+ The libproxy package is a + library that provides automatic proxy configuration + management. This is useful in standardizing a way of dealing + with proxy settings across all scenarios. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libproxy Dependencies +

+
+ Recommended +
+ +
+
+

+ Installation of libproxy +

+

+ Install libproxy by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..        \
+      --prefix=/usr   \
+      -D release=true &&
+
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + proxy +
+
+ Installed Libraries: + libproxy.so and + libpxbackend-1.0.so +
+
+ Installed Directories: + /usr/include/libproxy, + /usr/lib/libproxy, and /usr/share/doc/libproxy-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ proxy +

+
+

+ displays the proxy server that should be used to + reach a given network resource +

+
+

+ libproxy.so +

+
+

+ provides a standard method of performing automatic + proxy configuration +

+
+
+
+
+
+
+
+

+ libptytty-2.0 +

+
+
+
+
+
+

+ Introduction to libptytty +

+

+ The libptytty package + provides a library that allows for OS independent and secure + pty/tty and utmp/wtmp/lastlog handling. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libptytty Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of libptytty +

+

+ Install libptytty by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr     \
+      -D CMAKE_BUILD_TYPE=Release      \
+      -D PT_UTMP_FILE:STRING=/run/utmp \
+      .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libptytty.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libptytty.so +

+
+

+ provides for OS independent and secure pty/tty and + utmp/wtmp/lastlog handling +

+
+
+
+
+
+
+
+

+ libqalculate-5.7.0 +

+
+
+
+
+
+

+ Introduction to libqalculate +

+

+ The libqalculate package + contains a library that provides functions for a + multi-purpose calculator. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libqalculate Dependencies +

+
+ Required +
+

+ cURL-8.15.0, ICU-77.1, and libxml2-2.14.5 +

+
+ Optional +
+

+ Doxygen-1.14.0 and gnuplot +

+
+
+

+ Installation of libqalculate +

+

+ Install libqalculate by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libqalculate-5.7.0 &&
+make
+

+ To test the results, issue: make check. One set of + tests, strings.batch, fails, but the log does not say why. + Removing src/strings.batch allows all other tests to pass. +

+

+ Now, as the root user: +

+
make install
+

+ The libtool archive file from this package is referring to + the libraries from ICU-77.1. Such a reference may cause packages + depending on this package to be unnecessary linked against + the ICU libraries and increase the burden to rebuild packages + if ICU is updated to a new major version. As we've explained + in Libtool archive (.la) + files, these libtool archive files are unneeded anyway. + So as the root user, remove + the libtool archive file now: +

+
rm -v /usr/lib/libqalculate.la
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + qalc +
+
+ Installed Library: + libqalculate.so +
+
+ Installed Directories: + /usr/include/libqalculate, + /usr/share/doc/libqalculate-5.7.0, and + /usr/share/qalculate +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ qalc +

+
+

+ is a powerful and easy to use command line + calculator +

+
+

+ libqalculate.so +

+
+

+ contains the libqalculate API functions +

+
+
+
+
+
+
+
+

+ libqmi-1.36.0 +

+
+
+
+
+
+

+ Introduction to libqmi +

+

+ The libqmi package contains + a GLib-based library for talking to WWAN modems and devices + which speak the Qualcomm MSM Interface (QMI) protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libqmi Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) and libgudev-238 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0, help2man, and + + libqrtr-glib +

+
+
+

+ Installation of libqmi +

+

+ Install libqmi by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                 \
+      --prefix=/usr            \
+      --buildtype=release      \
+      -D bash_completion=false \
+      -D qrtr=false            \
+      -D man=false             &&
+
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + bash_completion=false: Use this option if the + external bash-completion + package is not installed. +

+

+ -D man=false: Use + this option if the external help2man + package is not installed. +

+

+ -D qrtr=false: This + switch disables support for the QRTR protocol which needs the + external + libqrtr-glib package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + qmicli, qmi-firmware-update, and + qmi-network +
+
+ Installed Libraries: + libqmi-glib.so +
+
+ Installed Directories: + /usr/include/libqmi-glib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ qmicli +

+
+

+ is a utility used to control QMI devices +

+
+

+ qmi-firmware-update +

+
+

+ is a utility used to perform firmware updates on + QMI devices +

+
+

+ qmi-network +

+
+

+ is a utility used for simple network management of + QMI devices +

+
+

+ libqmi-glib.so +

+
+

+ contains API functions for talking to WWAN modems + and devices which speak the Qualcomm MSM Interface + (QMI) protocol +

+
+
+
+
+
+
+
+

+ libseccomp-2.6.0 +

+
+
+
+
+
+

+ Introduction to libseccomp +

+

+ The libseccomp package + provides an easy to use and platform independent interface to + the Linux kernel's syscall + filtering mechanism. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libseccomp Dependencies +

+
+ Optional +
+

+ Which-2.23 (needed for + tests), Valgrind-3.25.1, cython-3.1.3 (for python + bindings), and LCOV +

+
+
+

+ Installation of libseccomp +

+

+ Install libseccomp by + running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-python: this switch is + needed to build python bindings if cython-3.1.3 is installed. + The option --disable-static must + not be given if this option is used. And you must run + sed 's/env python/&3/' -i + tests/regression if this option is used and + you want to run the test suite. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + scmp_sys_resolver +
+
+ Installed Library: + libseccomp.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ scmp_sys_resolver +

+
+

+ is used to resolve system calls for applications +

+
+

+ libseccomp.so +

+
+

+ contains API functions for translating syscalls +

+
+
+
+
+
+
+
+

+ libsigc++-2.12.1 +

+
+
+
+
+
+

+ Introduction to libsigc++ +

+

+ The libsigc++ package + implements a typesafe callback system for standard C++. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsigc++ Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ DocBook-utils-0.6.14, docbook-xml-5.0, Doxygen-1.14.0, + fop-2.11, + and mm-common +

+
+
+

+ Installation of libsigc++ +

+

+ Install libsigc++ by running + the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D build-documentation=true: Use + this switch if Doxygen-1.14.0 is installed and you wish + to build and install the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libsigc-2.0.so +
+
+ Installed Directories: + /usr/{include,lib}/sigc++-2.0 and + /usr/share/{devhelp/books,doc}/libsigc++-2.0 (if the + documentation is enabled) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libsigc-2.0.so +

+
+

+ provides a typesafe callback system for standard + C++ +

+
+
+
+
+
+
+
+

+ libsigc++-3.6.0 +

+
+
+
+
+
+

+ Introduction to libsigc++ +

+

+ The libsigc++ package + implements a typesafe callback system for standard C++. This + version is part of a new API for supporting gtkmm-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsigc++ Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ DocBook-utils-0.6.14, docbook-xml-5.0, Doxygen-1.14.0, + fop-2.11, + and mm-common +

+
+
+

+ Installation of libsigc++ +

+

+ Install libsigc++ by running + the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D build-documentation=true: Use + this switch if Doxygen-1.14.0 is installed and you wish + to build and install the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libsigc-3.0.so +
+
+ Installed Directories: + /usr/{include,lib}/sigc++-3.0 and + /usr/share/{devhelp/books,doc}/libsigc++-3.0 (if the + documentation is enabled) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libsigc-3.0.so +

+
+

+ provides a typesafe callback system for standard + C++ +

+
+
+
+
+
+
+
+

+ libsigsegv-2.15 +

+
+
+
+
+
+

+ Introduction to libsigsegv +

+

+ libsigsegv is a library for handling page faults in user + mode. A page fault occurs when a program tries to access to a + region of memory that is currently not available. Catching + and handling a page fault is a useful technique for + implementing pageable virtual memory, memory-mapped access to + persistent databases, generational garbage collectors, stack + overflow handlers, and distributed shared memory. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.15.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: c2885785b3e5d1c94b1adb22b3002ccc +

    +
  • +
  • +

    + Download size: 484 KB +

    +
  • +
  • +

    + Estimated disk space required: 3.7 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with tests) +

    +
  • +
+
+
+
+

+ Installation of libsigsegv +

+

+ Install libsigsegv by + running the following commands: +

+
./configure --prefix=/usr   \
+            --enable-shared \
+            --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-shared: This + switch ensures that shared libraries are compiled. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libsigsegv.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libsigsegv.so +

+
+

+ is a library for handling page faults in user mode +

+
+
+
+
+
+
+
+

+ libssh2-1.11.1 +

+
+
+
+
+
+

+ Introduction to libssh2 +

+

+ Libssh2 package is a + client-side C library implementing the SSH2 protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.libssh2.org/download/libssh2-1.11.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 38857d10b5c5deb198d6989dacace2e6 +

    +
  • +
  • +

    + Download size: 1.0 MB +

    +
  • +
  • +

    + Estimated disk space required: 15 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests) +

    +
  • +
+
+

+ libssh2 Dependencies +

+
+ Optional +
+

+ CMake-4.1.0 (can be used instead of the + configure + script), libgcrypt-1.11.2 (can be used instead + of OpenSSL), OpenSSH-10.0p1 (for some tests), and + Docker + (for some tests) +

+
+
+

+ Installation of libssh2 +

+

+ Install libssh2 by running + the following commands: +

+
./configure --prefix=/usr          \
+            --disable-docker-tests \
+            --disable-static       &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-docker-tests: Disable + the tests requiring Docker, which is beyond the scope of + BLFS. Remove this switch if you've installed Docker and you + wish to run the test suite. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libssh2.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libssh2.so +

+
+

+ contains functions to use the SSH2 protocol +

+
+
+
+
+
+
+
+

+ libstatgrab-0.92.1 +

+
+
+
+
+
+

+ Introduction to libstatgrab +

+

+ This is a library that provides cross platform access to + statistics about the system on which it's run. It's written + in C and presents a selection of useful interfaces which can + be used to access key system statistics. The current list of + statistics includes CPU usage, memory utilisation, disk + usage, process counts, network traffic, disk I/O, and more. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libstatgrab Dependencies +

+
+ Optional +
+

+ log4cplus-2.1.2 +

+
+
+

+ Installation of libstatgrab +

+

+ Install libstatgrab by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libstatgrab-0.92.1 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + saidar, statgrab, + statgrab-make-mrtg-config, and + statgrab-make-mrtg-index +
+
+ Installed Library: + libstatgrab.so +
+
+ Installed Directories: + /usr/share/doc/libstatgrab-0.92.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ saidar +

+
+

+ is a curses-based tool for viewing system + statistics +

+
+

+ statgrab +

+
+

+ is a sysctl-style interface to system statistics +

+
+

+ statgrab-make-mrtg-config +

+
+

+ generates MRTG configuration +

+
+

+ statgrab-make-mrtg-index +

+
+

+ generates an XHTML index page from MRTG + configuration files or stdin +

+
+

+ libstatgrab.so +

+
+

+ contains the libstatgrab API functions +

+
+
+
+
+
+
+
+

+ libtasn1-4.20.0 +

+
+
+
+
+
+

+ Introduction to libtasn1 +

+

+ libtasn1 is a highly + portable C library that encodes and decodes DER/BER data + following an ASN.1 schema. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.20.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 930f71d788cf37505a0327c1b84741be +

    +
  • +
  • +

    + Download size: 1.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 16 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (with tests) +

    +
  • +
+
+

+ libtasn1 Dependencies +

+
+ Optional +
+

+ GTK-Doc-1.34.0 and Valgrind-3.25.1 +

+
+
+

+ Installation of libtasn1 +

+

+ Install libtasn1 by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you did not pass the --enable-gtk-doc parameter to the + configure + script, you can install the API documentation using the + following command as the root + user: +

+
make -C doc/reference install-data-local
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: This parameter + is normally used if GTK-Doc + is installed and you wish to rebuild and install the API + documentation. It is broken for this package due to the use + of a long deprecated gtk-doc program that is no longer + available. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + asn1Coding, asn1Decoding and + asn1Parser +
+
+ Installed Library: + libtasn1.so +
+
+ Installed Directory: + /usr/share/gtk-doc/html/libtasn1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ asn1Coding +

+
+

+ is an ASN.1 DER encoder +

+
+

+ asn1Decoding +

+
+

+ is an ASN.1 DER decoder +

+
+

+ asn1Parser +

+
+

+ is an ASN.1 syntax tree generator for libtasn1 +

+
+

+ libtasn1.so +

+
+

+ is a library for Abstract Syntax Notation One + (ASN.1) and Distinguish Encoding Rules (DER) + manipulation +

+
+
+
+
+
+
+
+

+ libunistring-1.3 +

+
+
+
+
+
+

+ Introduction to libunistring +

+

+ libunistring is a library + that provides functions for manipulating Unicode strings and + for manipulating C strings according to the Unicode standard. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/libunistring/libunistring-1.3.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 57dfd9e4eba93913a564aa14eab8052e +

    +
  • +
  • +

    + Download size: 2.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 58 MB (add 46 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.6 SBU (add 0.3 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ libunistring Dependencies +

+
+ Optional +
+

+ texlive-20250308 (or install-tl-unx) (to rebuild the + documentation) +

+
+
+

+ Installation of libunistring +

+

+ Install libunistring by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libunistring-1.3 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libunistring.so +
+
+ Installed Directory: + /usr/include/unistring and + /usr/share/doc/libunistring-1.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libunistring.so +

+
+

+ provides the unicode string library API +

+
+
+
+
+
+
+
+

+ libunwind-1.8.2 +

+
+
+
+
+
+

+ Introduction to libunwind +

+

+ The libunwind package + contains a portable and efficient C programming interface + (API) to determine the call-chain of a program. The API + additionally provides the means to manipulate the preserved + (callee-saved) state of each call-frame and to resume + execution at any point in the call-chain (non-local goto). + The API supports both local (same-process) and remote + (across-process) operation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libunwind Dependencies +

+
+ Optional +
+

+ texlive-20250308 (for + latex2man) +

+
+
+

+ Installation of libunwind +

+

+ First, fix a problem when building with gcc-15: +

+
sed -i '/func.s/s/s//' tests/Gtest-nomalloc.c
+

+ Install libunwind by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libunwind.so, + libunwind-coredump.so, libunwind-generic.so (symlink to + libunwind-x86_64.so), libunwind-ptrace.so, + libunwind-setjmp.so, and libunwind-x86_64.so + (libunwind-x86.so on i686) +
+
+ Installed Directories: + /usr/libexec/libunwind +
+
+
+
+
+
+
+
+

+ liburcu-0.15.3 +

+
+
+
+
+
+

+ Introduction to liburcu +

+

+ The userspace-rcu package + provides a set of userspace RCU (read-copy-update) libraries. + These data synchronization libraries provide read-side access + which scales linearly with the number of cores. It does so by + allowing multiples copies of a given data structure to live + at the same time, and by monitoring the data structure + accesses to detect grace periods after which memory + reclamation is possible. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of liburcu +

+

+ Install liburcu by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/liburcu-0.15.3 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + liburcu.so, liburcu-bp.so, + liburcu-cds.so, liburcu-common.so, liburcu-mb.so, + liburcu-memb.so, liburcu-qsbr.so, and + liburcu-signal.so +
+
+ Installed Directories: + /usr/include/urcu and + /usr/share/doc/liburcu-0.15.3 +
+
+
+
+
+
+
+
+

+ libusb-1.0.29 +

+
+
+
+
+
+

+ Introduction to libusb +

+

+ The libusb package contains + a library used by some applications for USB device access. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libusb Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Configuring Libusb +

+

+ 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: +

+
Device Drivers --->
+  [*] USB support --->                                             [USB_SUPPORT]
+    <*/M>   Support for Host-side USB                                      [USB]
+    [*]     PCI based USB host interface                               [USB_PCI]
+    # These are most common USB controller drivers for PC-like systems.
+    # For modern systems often [USB_XHCI_HCD] is the only one needed
+    # even if the system has USB 2.0 ports:
+    < /*/M> xHCI HCD (USB 3.0) support                            [USB_XHCI_HCD]
+    < /*/M> EHCI HCD (USB 2.0) support                            [USB_EHCI_HCD]
+    < /*/M> OHCI HCD (USB 1.1) support                            [USB_OHCI_HCD]
+

+ For more details on setting up USB devices, see the section called “USB Device + Issues”. +

+
+
+

+ Installation of libusb +

+

+ Install libusb by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If Doxygen is installed and + you wish to build the API documentation, issue the following + commands: +

+
pushd doc                &&
+  doxygen -u doxygen.cfg &&
+  make docs              &&
+popd
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the API documentation, install it using the + following commands as the root user: +

+
install -v -d -m755 /usr/share/doc/libusb-1.0.29/apidocs &&
+install -v -m644    doc/api-1.0/* \
+                    /usr/share/doc/libusb-1.0.29/apidocs
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libusb-1.0.so +
+
+ Installed Directories: + /usr/include/libusb-1.0 and + /usr/share/doc/libusb-1.0.29 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libusb-1.0.so +

+
+

+ contains API functions used for accessing USB + hardware +

+
+
+
+
+
+
+
+

+ libuv-1.51.0 +

+
+
+
+
+
+

+ Introduction to libuv +

+

+ The libuv package is a + multi-platform support library with a focus on asynchronous + I/O. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://dist.libuv.org/dist/v1.51.0/libuv-v1.51.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 5e0109e19c3fed3a8cbecb958de39afa +

    +
  • +
  • +

    + Download size: 1.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 31 MB (with tests and + man page) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (with tests and man page) +

    +
  • +
+
+

+ libuv Dependencies +

+
+ Optional +
+

+ sphinx-8.2.3 +

+
+
+

+ Installation of libuv +

+

+ Install libuv by running the + following commands: +

+
+

+ Caution +

+

+ The sh + autogen.sh command below fails if the + ACLOCAL environment variable is set as specified in + Xorg-7. If it is used, ACLOCAL + needs to be unset for this package and then reset for other + packages. +

+
+
sh autogen.sh                              &&
+./configure --prefix=/usr --disable-static &&
+make 
+

+ If you installed the optional sphinx-8.2.3 python module, create + the man page: +

+
make man -C docs
+

+ If you want to run the tests, run: make check as a non-root + user. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the man page, install it as the root user: +

+
install -Dm644 docs/build/man/libuv.1 /usr/share/man/man1
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libuv.so +
+
+ Installed Directory: + /usr/include/uv +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libuv.so +

+
+

+ contains API functions for asynchronous I/O + operations +

+
+
+
+
+
+
+
+

+ libxkbcommon-1.11.0 +

+
+
+
+
+
+

+ Introduction to libxkbcommon +

+

+ libxkbcommon is a keymap + compiler and support library which processes a reduced subset + of keymaps as defined by the XKB specification. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ On GitHub we've forked the upstream repository into our own + lfs-book namespace and + recreated a tag for the release. This is done to ensure the + downloaded tarball file name to be correct and consistent + (i.e. it shouldn't change when using the browser instead of + a tool like wget). Our tag and the + upstream release tag are on the same commit, so we've not + introduced any change to the tarball content except the + name of its top-level directory (that Git does not track). +

+
+

+ libxkbcommon Dependencies +

+
+ Required +
+

+ xkeyboard-config-2.45 (runtime) +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 (for generating the + documentation) and Xvfb (from Xorg-Server-21.1.18 or Xwayland-24.1.8) +

+
+
+

+ Installation of libxkbcommon +

+

+ Install libxkbcommon by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..             \
+      --prefix=/usr        \
+      --buildtype=release  \
+      -D enable-docs=false &&
+ninja
+

+ To test the results, ensure Xvfb and xkeyboard-config-2.45 are + available, then issue: ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D enable-docs=true: + This switch enables documentation generation. Doxygen-1.14.0 is + required. +

+

+ mv -v + /usr/share/doc/libxkbcommon{,-1.11.0}: If you + built the documentation, use this command to install it in a + versioned directory. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xkbcli +
+
+ Installed Libraries: + libxkbcommon.so, + libxkbcommon-x11.so, and libxkbregistry.so +
+
+ Installed Directories: + /usr/include/xkbcommon, + /usr/libexec/xkbcommon, and (optionally) + /usr/share/doc/libxkbcommon-1.11.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ xkbcli +

+
+

+ provides a debugger and compiler for XKB keymaps +

+
+

+ libxkbcommon.so +

+
+

+ contains the libxkbcommon API functions +

+
+

+ libxkbcommon-x11.so +

+
+

+ contains the libxkbcommon X11 specific API + functions +

+
+

+ libxkbregistry.so +

+
+

+ contains a list of available XKB models, layouts, + and variants for a given ruleset +

+
+
+
+
+
+
+
+

+ libxml2-2.14.5 +

+
+
+
+
+
+

+ Introduction to libxml2 +

+

+ The libxml2 package contains + libraries and utilities used for parsing XML files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ libxml2 Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Valgrind-3.25.1 (may be used in the + tests) +

+
+
+

+ Installation of libxml2 +

+

+ Install libxml2 by running + the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --with-history    \
+            --with-icu        \
+            PYTHON=/usr/bin/python3 \
+            --docdir=/usr/share/doc/libxml2-2.14.5 &&
+make
+

+ If you downloaded the test suite, issue the following + command: +

+
tar xf ../xmlts20130923.tar.gz
+

+ To test the results, issue: make check > check.log. + This command will print several lines of error messages like + “Failed to parse + xstc/...” because some test files are + missing and these messages can be safely ignored. A summary + of the results can be obtained with grep -E '^Total|expected|Ran' + check.log. If Valgrind-3.25.1 is + installed and you want to check for memory leaks, replace + check with + check-valgrind. +

+
+

+ Note +

+

+ The tests use http://localhost/ to test parsing + of external entities. If the machine where you run the + tests serves as a web site, the tests may hang, depending + on the content of the file served. It is therefore + recommended to shut down the server during the tests, as + the root user: +

+
/etc/init.d/httpd stop
+
+

+ Now, as the root user: +

+
make install
+

+ Finally, prevent some packages from unnecessarily linking to + ICU using the following commands as the root user: +

+
rm -vf /usr/lib/libxml2.la &&
+sed '/libs=/s/xml2.*/xml2"/' -i /usr/bin/xml2-config
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-history: This + switch enables Readline + support when running xmlcatalog or xmllint in shell mode. +

+

+ --with-icu: This + switch enables support for ICU, which provides additional Unicode + support. This is needed for some packages in BLFS, such as + for QtWebEngine. +

+

+ PYTHON=/usr/bin/python3: Allows + building the libxml2 module with Python3 instead of Python2. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xml2-config, xmlcatalog, and + xmllint +
+
+ Installed Libraries: + libxml2.so +
+
+ Installed Directories: + /usr/include/libxml2, + /usr/lib/cmake/libxml2, /usr/share/doc/libxml2-2.14.5, + and /usr/share/gtk-doc/html/libxml2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ xml2-config +

+
+

+ determines the compile and linker flags that should + be used to compile and link programs that use + libxml2 +

+
+

+ xmlcatalog +

+
+

+ is used to monitor and manipulate XML and SGML + catalogs +

+
+

+ xmllint +

+
+

+ parses XML files and outputs reports (based upon + options) to detect errors in XML coding +

+
+

+ libxml2.so +

+
+

+ provides functions for programs to parse files that + use the XML format +

+
+
+
+
+
+
+
+

+ libxmlb-0.3.23 +

+
+
+
+
+
+

+ Introduction to libxmlb +

+

+ The libxmlb package contains + a library and a tool which help create and query binary XML + blobs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxmlb Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) +

+
+ Optional +
+

+ GTK-Doc-1.34.0 and libstemmer +

+
+
+

+ Installation of libxmlb +

+

+ Install libxmlb by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D gtkdoc=false .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtkdoc=false: This + switch disables building the API documentation. Remove it if + you have GTK-Doc-1.34.0 installed and wish to + build the API documentation. +

+

+ -D introspection=false: Use this + switch if you have not built GLib-2.84.4 with GObject + Introspection. +

+

+ -D stemmer=true: Use this switch + if you have libstemmer + installed and wish to build stemmer support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xb-tool +
+
+ Installed Libraries: + libxmlb.so +
+
+ Installed Directories: + /usr/include/libxmlb-2, + /usr/libexec/installed-tests/libxmlb, and + /usr/share/gtk-doc/html/libxmlb (if gtk-doc was + enabled) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xb-tool +

+
+

+ is a tool used to create, dump, or query a binary + XML blob +

+
+

+ libxmlb.so +

+
+

+ contains functions that allow for creating and + querying binary XML blobs +

+
+
+
+
+
+
+
+

+ libxslt-1.1.43 +

+
+
+
+
+
+

+ Introduction to libxslt +

+

+ The libxslt package contains + XSLT libraries used for extending libxml2 libraries to support XSLT files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxslt Dependencies +

+
+ Required +
+

+ libxml2-2.14.5 +

+
+ Recommended (at runtime) +
+ +
+

+ Note +

+

+ Although it is not a direct dependency, many applications + using libxslt will expect + docbook-xml-4.5 and docbook-xsl-nons-1.79.2 to be + present. +

+
+
+ Optional +
+

+ libgcrypt-1.11.2 (only needed for the + deprecated EXSLT crypto extension, see Command Explanations) +

+
+
+

+ Installation of libxslt +

+

+ Install libxslt by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libxslt-1.1.43 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-crypto: Enable the + non-standard and deprecated EXSLT crypto extension feature. + It needs libgcrypt-1.11.2 and the upstream will + remove it in the future. +

+

+ --with-debug: Enables thorough + diagnostics with the -v, + --verbose of xsltproc. Use it if you + plan to debug XSLT stylesheets. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xslt-config and xsltproc +
+
+ Installed Libraries: + libexslt.so, libxslt.so and + optionally, libxsltmod.so Python module +
+
+ Installed Directories: + /usr/include/libexslt, + /usr/include/libxslt, /usr/lib/cmake/libxslt, + /usr/lib/libxslt-plugins, + /usr/share/gtk-doc/lib{xslt,exslt}, + /usr/share/doc/libxslt-1.1.43, and + /usr/share/doc/libxslt-python-1.1.43 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ xslt-config +

+
+

+ is used to find out the pre-processor, linking and + compiling flags necessary to use the libxslt libraries in 3rd-party + programs +

+
+

+ xsltproc +

+
+

+ is used to apply XSLT stylesheets to XML documents +

+
+

+ libexslt.so +

+
+

+ is used to provide extensions to XSLT functions +

+
+

+ libxslt.so +

+
+

+ provides extensions to the libxml2 libraries to parse files + that use the XSLT format +

+
+
+
+
+
+
+
+

+ libwacom-2.16.1 +

+
+
+
+
+
+

+ Introduction to libwacom +

+

+ The libwacom package + contains a library used to identify graphics tablets from + Wacom or various other vendors and their model-specific + features. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libwacom Dependencies +

+
+ Required +
+

+ libevdev-1.13.4 and libgudev-238 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0, git-2.50.1, librsvg-2.61.0, + Valgrind-3.25.1 (optional for some + tests), and pytest-8.4.1 with python-libevdev and + pyudev +

+
+
+

+ Installation of libwacom +

+

+ Install libwacom by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D tests=disabled    &&
+ninja
+

+ To test the results, issue: ninja test. To run + additional tests, install pytest-8.4.1, python-libevdev, and + pyudev, then remove the "-D tests=disabled" option from the + meson line above. +

+

+ If upgrading from a previous version of libwacom, remove the + old device database installation to prevent a potential + duplicated match of devices in case some old database files + are not overwritten: +

+
rm -rf /usr/share/libwacom
+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D tests=disabled: + This parameter disables some of the more advanced tests + because they require pytest-8.4.1 and other two Python modules + beyond the scope of BLFS to work properly. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + libwacom-list-devices, + libwacom-list-local-devices, libwacom-show-stylus, and + libwacom-update-db +
+
+ Installed Libraries: + libwacom.so +
+
+ Installed Directories: + /usr/include/libwacom-1.0 and + /usr/share/libwacom +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libwacom-list-devices +

+
+

+ lists all tablet devices that are supported by + libwacom +

+
+

+ libwacom-list-local-devices +

+
+

+ lists tablet devices that are connected to the + system +

+
+

+ libwacom-show-stylus +

+
+

+ lists tablet stylus IDs +

+
+

+ libwacom-update-db +

+
+

+ updates the system according to the current set of + tablet data files +

+
+

+ libwacom.so +

+
+

+ contains functions used for accessing Wacom + information +

+
+
+
+
+
+
+
+

+ libyaml-0.2.5 +

+
+
+
+
+
+

+ Introduction to libyaml +

+

+ The yaml package contains a + C library for parsing and emitting YAML (YAML Ain't Markup + Language) code. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libyaml Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of libyaml +

+

+ Install libyaml by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libyaml.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libyaml.so +

+
+

+ contains API functions for parsing and emitting + YAML code +

+
+
+
+
+
+
+
+

+ log4cplus-2.1.2 +

+
+
+
+
+
+

+ Introduction to log4cplus +

+

+ log4cplus is an easy to use + C++20 logging API providing thread-safe, flexible, and + arbitrarily granular control over log management and + configuration. It is modeled after the Java log4j API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of log4cplus +

+

+ Build log4cplus by running + the following command: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, install the package as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + log4cplus.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ log4cplus.so +

+
+

+ is the log4cplus library +

+
+
+
+
+
+
+
+

+ LZO-2.10 +

+
+
+
+
+
+

+ Introduction to LZO +

+

+ LZO is a data compression + library which is suitable for data decompression and + compression in real-time. This means it favors speed over + compression ratio. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of LZO +

+

+ Install LZO by running the + following commands: +

+
./configure --prefix=/usr    \
+            --enable-shared  \
+            --disable-static \
+            --docdir=/usr/share/doc/lzo-2.10 &&
+make
+

+ To test the results, issue: make check. All the checks + should pass. Now issue make + test to run the full suite of tests. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + liblzo2.so +
+
+ Installed Directories: + /usr/include/lzo and + /usr/share/doc/lzo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ liblzo2.so +

+
+

+ is a data compression and decompression library +

+
+
+
+
+
+
+
+

+ mtdev-1.1.7 +

+
+
+
+
+
+

+ Introduction to mtdev +

+

+ The mtdev package contains + Multitouch Protocol Translation Library which is used to + transform all variants of kernel MT (Multitouch) events to + the slotted type B protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://bitmath.org/code/mtdev/mtdev-1.1.7.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 483ed7fdf7c1e7b7375c05a62848cce7 +

    +
  • +
  • +

    + Download size: 296 KB +

    +
  • +
  • +

    + Estimated disk space required: 2.5 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+
+
+

+ Installation of mtdev +

+

+ Install mtdev by running the + following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + mtdev-test +
+
+ Installed Library: + libmtdev.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ mtdev-test +

+
+

+ is a tool to test libmtdev +

+
+

+ libmtdev.so +

+
+

+ contains Multitouch Protocol Translation API + functions +

+
+
+
+
+
+
+
+

+ Node.js-22.18.0 +

+
+
+
+
+
+

+ Introduction to Node.js +

+

+ Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://nodejs.org/dist/v22.18.0/node-v22.18.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: c465f337ce708750125ee9f3b907cbf1 +

    +
  • +
  • +

    + Download size: 47 MB +

    +
  • +
  • +

    + Estimated disk space required: 1.3 GB (add 46 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 11 SBU (add 2.5 SBU for tests: + both using parallelism=8 and 8 CPUs online, parts of + the tests will use all online CPUs) +

    +
  • +
+
+

+ Node.js Dependencies +

+
+ Required +
+

+ Which-2.23 +

+
+ Recommended +
+ +
+ Optional +
+

+ http-parser and + npm (an + internal copy of npm will be installed if + not present) +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of Node.js +

+

+ Build Node.js by running the + following commands: +

+
./configure --prefix=/usr          \
+            --shared-brotli        \
+            --shared-cares         \
+            --shared-libuv         \
+            --shared-openssl       \
+            --shared-nghttp2       \
+            --shared-zlib          \
+            --with-intl=system-icu &&
+make
+

+ To test the results, issue: make test-only. Out of over + 4400 tests, 3 in the 'parallel' test suite are known to fail. +

+

+ Now, as the root user: +

+
make install &&
+ln -sf node /usr/share/doc/node-22.18.0
+
+
+

+ Command Explanations +

+

+ --with-intl=system-icu: use the + system version of icu. Other + values are full-icu (to build a + local, full icu library) and + small-icu (to build a local, + minimal icu library). +

+

+ --shared-{brotli,cares,libuv,nghttp2,openssl,zlib}: + use the system installed libraries instead of local copies. +

+

+ --without-npm: do not build + npm (use if you'd like to + build a separate npm later). +

+

+ --shared-http-parser: use the + system installed library instead of a local copy. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + corepack, node, npm, and npx +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/include/node, + /usr/lib/node_modules/{corepack,npm}, + /usr/share/doc/{node,node-22.18.0}, and + /usr/share/systemtap/tapset +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ corepack +

+
+

+ is an experimental tool to help with managing + versions of package managers. +

+
+

+ node +

+
+

+ is the server-side JavaScript runtime +

+
+

+ npm +

+
+

+ is the Node.js + package manager +

+
+

+ npx +

+
+

+ is short for npm + exec, which allows running commands + from NPM packages +

+
+

+ /usr/lib/node_modules/npm/ +

+
+

+ is the installation root for Node.js executables + and libraries +

+
+
+
+
+
+
+
+

+ npth-1.8 +

+
+
+
+
+
+

+ Introduction to NPth +

+

+ The NPth 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.gnupg.org/ftp/gcrypt/npth/npth-1.8.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: cb4fc0402be5ba67544e499cb2c1a74d +

    +
  • +
  • +

    + Download size: 312 KB +

    +
  • +
  • +

    + Estimated disk space required: 2.9 MB (with checks) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with checks) +

    +
  • +
+
+
+
+

+ Installation of NPth +

+

+ Install NPth by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + npth-config +
+
+ Installed Library: + libnpth.so +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ npth-config +

+
+

+ 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 +

+
+

+ libnpth.so +

+
+

+ contains the API functions used by the New Portable + Threads Library +

+
+
+
+
+
+
+
+

+ NSPR-4.37 +

+
+
+
+
+
+

+ Introduction to NSPR +

+

+ Netscape Portable Runtime + (NSPR) provides a platform-neutral API for system level and + libc like functions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of NSPR +

+

+ Install NSPR by running the + following commands: +

+
cd nspr &&
+
+sed -i '/^RELEASE/s|^|#|' pr/src/misc/Makefile.in &&
+sed -i 's|$(LIBRARY) ||'  config/rules.mk         &&
+
+./configure --prefix=/usr   \
+            --with-mozilla  \
+            --with-pthreads \
+            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&
+make
+

+ The test suite is designed for testing changes to nss or nspr + and is not particularly useful for checking a released + version (e.g. it needs to be run on a non-optimized build + with both nss and nspr directories existing alongside each + other). For further details, see the Editor Notes for nss at + https://wiki.linuxfromscratch.org/blfs/wiki/nss +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -ri '/^RELEASE/s/^/#/' + pr/src/misc/Makefile.in: This sed disables + installing two unneeded scripts. +

+

+ sed -i 's#$(LIBRARY) ##' + config/rules.mk: This sed disables installing + the static libraries. +

+

+ --with-mozilla: This + parameter adds Mozilla support to the libraries (required if + you want to build any other Mozilla products and link them to + these libraries). +

+

+ --with-pthreads: This + parameter forces use of the system pthread library. +

+

+ --enable-64bit: The + --enable-64bit parameter is required on an x86_64 system to + prevent configure failing with a + claim that this is a system without pthread support. The [ + $(uname -m) = x86_64 ] test ensures it has no effect on a 32 + bit system. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + nspr-config +
+
+ Installed Libraries: + libnspr4.so, libplc4.so, and + libplds4.so +
+
+ Installed Directories: + /usr/include/nspr +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ nspr-config +

+
+

+ provides compiler and linker options to other + packages that use NSPR +

+
+

+ libnspr4.so +

+
+

+ contains functions that provide platform + independence for non-GUI operating system + facilities such as threads, thread synchronization, + normal file and network I/O, interval timing and + calendar time, basic memory management and shared + library linking +

+
+

+ libplc4.so +

+
+

+ contains functions that implement many of the + features offered by libnspr4 +

+
+

+ libplds4.so +

+
+

+ contains functions that provide data structures +

+
+
+
+
+
+
+
+

+ PCRE2-10.45 +

+
+
+
+
+
+

+ Introduction to PCRE2 +

+

+ The PCRE2 package contains a + new generation of the Perl + Compatible Regular Expression libraries. These are + useful for implementing regular expression pattern matching + using the same syntax and semantics as Perl. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ PCRE2 Dependencies +

+
+ Optional +
+

+ Valgrind-3.25.1 and libedit +

+
+
+

+ Installation of PCRE2 +

+

+ Install PCRE2 by running the + following commands: +

+
./configure --prefix=/usr                       \
+            --docdir=/usr/share/doc/pcre2-10.45 \
+            --enable-unicode                    \
+            --enable-jit                        \
+            --enable-pcre2-16                   \
+            --enable-pcre2-32                   \
+            --enable-pcre2grep-libz             \
+            --enable-pcre2grep-libbz2           \
+            --enable-pcre2test-libreadline      \
+            --disable-static                    &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-unicode: + This switch enables Unicode support and includes the + functions for handling UTF-8/16/32 character strings in the + library. +

+

+ --enable-pcre2-16: + This switch enables 16 bit character support. +

+

+ --enable-pcre2-32: + This switch enables 32 bit character support. +

+

+ --enable-pcre2grep-libz: This + switch adds support for reading .gz compressed files to + pcre2grep. +

+

+ --enable-pcre2grep-libbz2: This + switch adds support for reading .bz2 compressed files to + pcre2grep. +

+

+ --enable-pcre2test-libreadline: + This switch adds line editing and history features to the + pcre2test program. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-jit: this + option enables Just-in-time compiling, which can greatly + speed up pattern matching. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pcre2-config, pcre2grep, and + pcre2test. +
+
+ Installed Libraries: + libpcre2-8.so, libpcre2-16.so, + libpcre2-32.so, and libpcre2-posix.so +
+
+ Installed Directory: + /usr/share/doc/pcre2-10.45 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ pcre2grep +

+
+

+ is a version of grep that understands + Perl compatible regular + expressions. +

+
+

+ pcre2test +

+
+

+ can test a Perl + compatible regular expression. +

+
+

+ pcre2-config +

+
+

+ outputs compilation information to programs linking + against the PCRE2 + libraries +

+
+
+
+
+
+
+
+

+ Popt-1.19 +

+
+
+
+
+
+

+ Introduction to Popt +

+

+ The popt package contains + the popt libraries which are + used by some programs to parse command-line options. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ popt + Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 (for generating + documentation) +

+
+
+

+ Installation of Popt +

+

+ Install popt by running the + following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you have Doxygen-1.14.0 installed and wish to + build the API documentation, issue: +

+
sed -i 's@\./@src/@' Doxyfile &&
+doxygen
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the API documentation, install it using the + following commands issued by the root user: +

+
install -v -m755 -d /usr/share/doc/popt-1.19 &&
+install -v -m644 doxygen/html/* /usr/share/doc/popt-1.19
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libpopt.so +
+
+ Installed Directories: + /usr/share/doc/popt-1.19 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpopt.so +

+
+

+ is used to parse command-line options +

+
+
+
+
+
+
+
+

+ Protobuf-32.0 +

+
+
+
+
+
+

+ Introduction to Protobuf +

+

+ The Protobuf package + contains utilities and libraries for using data in Google's + data interchange format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Protobuf Dependencies +

+
+ Required +
+

+ Abseil-cpp-20250814.0 and + CMake-4.1.0 +

+
+ Optional +
+

+ gtest (for tests) +

+
+
+

+ Installation of Protobuf +

+

+ Install Protobuf by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr      \
+      -D CMAKE_BUILD_TYPE=Release       \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON    \
+      -D protobuf_BUILD_TESTS=OFF       \
+      -D protobuf_BUILD_SHARED_LIBS=ON  \
+      -G Ninja ..                       &&
+ninja
+

+ This package does come with a test suite, but it requires + gtest, which is + not part of BLFS. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + protobuf_BUILD_TESTS=OFF: This parameter prevents + the tests from being built because gtest is not part + of BLFS. +

+

+ -D + protobuf_BUILD_SHARED_LIBS=ON: This parameter + enables building shared versions of the libraries provided by + this package instead of static versions. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + protoc (a symlink to + protoc-32.0.0), protoc-32.0.0, protoc-gen-upb (a symlink + to protoc-gen-upb-32.0.0), and protoc-gen-upbdefs (a + symlink to protoc-gen-upbdefs-32.0.0) +
+
+ Installed Libraries: + libprotobuf.so, + libprotobuf-lite.so, libprotoc.so, libupb.a, + libutf8_range.so, and libutf8_validity.so +
+
+ Installed Directories: + /usr/include/google, + /usr/include/upb, /usr/lib/cmake/protobuf, and + /usr/lib/cmake/utf8_range +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ protoc +

+
+

+ parses protocol buffer files and generates output + for several programming languages and formats +

+
+

+ libprotobuf.so +

+
+

+ contains functions for utilizing data in Google's + data interchange format +

+
+

+ libprotobuf-lite.so +

+
+

+ contains a simpler version of the functions for + utilizing data in Google's data interchange format +

+
+

+ libprotoc.so +

+
+

+ contains functions used by protoc at runtime for + outputting data for several programming languages + and formats +

+
+

+ libupb.a +

+
+

+ is a small protobuf implementation written in C +

+
+

+ libutf8_range.so +

+
+

+ contains functions that allow a program to + determine whether a sequence of characters is a + valid UTF-8 sequence +

+
+

+ libutf8_validity.so +

+
+

+ contains functions that allow a program to + determine whether a sequence of bytes is a valid + UTF-8 sequence, and to find what the longest valid + prefix of the sequence is +

+
+
+
+
+
+
+
+

+ Protobuf-c-1.5.2 +

+
+
+
+
+
+

+ Introduction to Protobuf-c +

+

+ The Protobuf-c package + contains an implementation of the Google Protocol Buffers + data serialization format in C. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Protobuf-c Dependencies +

+
+ Required +
+

+ Protobuf-32.0 +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of Protobuf-c +

+

+ Install Protobuf-c by + running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make -j1
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + protoc-gen-c and protoc-c + (symlinked to protoc-gen-c) +
+
+ Installed Libraries: + libprotobuf-c.so +
+
+ Installed Directories: + /usr/include/google and + /usr/include/protobuf-c +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ protoc-c +

+
+

+ generates C descriptor code from a .proto file +

+
+

+ libprotobuf-c.so +

+
+

+ contains a C implementation of the Google Protocol + Buffers data serialization format +

+
+
+
+
+
+
+
+

+ Qca-2.3.10 +

+
+
+
+
+
+

+ Introduction to Qca +

+

+ Qca aims to provide a + straightforward and cross-platform crypto API, using + Qt datatypes and + conventions. Qca separates + the API from the implementation, using plugins known as + Providers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.kde.org/stable/qca/2.3.10/qca-2.3.10.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: c3ed3262c83c43bdeb610836769b1534 +

    +
  • +
  • +

    + Download size: 748 KB +

    +
  • +
  • +

    + Estimated disk space required: 56 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (using parallelism=4; + with tests) +

    +
  • +
+
+

+ Qca + Dependencies +

+
+ Required +
+

+ make-ca-1.16.1, CMake-4.1.0, Qt-6.9.2, and Which-2.23 +

+
+ Optional +
+

+ Cyrus SASL-2.1.28, GnuPG-2.4.8, libgcrypt-1.11.2, libgpg-error-1.55, nss-3.115, NSPR-4.37, p11-kit-0.25.5, + Doxygen-1.14.0, and Botan +

+
+
+

+ Installation of Qca +

+

+ Fix the location of the CA certificates: +

+
sed -i 's@cert.pem@certs/ca-bundle.crt@' CMakeLists.txt
+

+ Install Qca by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$QT6DIR            \
+      -D CMAKE_BUILD_TYPE=Release                \
+      -D QT6=ON                                  \
+      -D QCA_INSTALL_IN_QT_PREFIX=ON             \
+      -D QCA_MAN_INSTALL_DIR:PATH=/usr/share/man \
+      .. &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply a higher level of compiler optimizations. +

+

+ -D QT6=ON: Ensure the + packages is built with Qt-6.9.2. +

+

+ -D + QCA_MAN_INSTALL_DIR:PATH=/usr/share/man: Install + the qca man page in the normal location. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mozcerts-qt6 and qcatool-qt6 +
+
+ Installed Libraries: + libqca-qt6.so, + libqca-cyrus-sasl.so, libqca-gcrypt.so, libqca-gnupg.so, + libqca-logger.so, libqca-nss.so, libqca-ossl.so, and + libqca-softstore.so +
+
+ Installed Directories: + $QT6DIR/include/Qca-qt6, + $QT6DIR/lib/cmake/Qca-qt6, and $QT6DIR/lib/qca-qt6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ mozcerts-qt6 +

+
+

+ is a command line tool for converting certdata.txt + into outfile.pem files +

+
+

+ qcatool-qt6 +

+
+

+ is a command line tool for performing various + cryptographic operations with Qca +

+
+

+ libqca-qt6.so +

+
+

+ is the Qt Cryptography Architecture (Qca) library +

+
+
+
+
+
+
+
+

+ qcoro-0.12.0 +

+
+
+
+
+
+

+ Introduction to qcoro +

+

+ This package provides a set of tools to make use of C++20 + coroutines with Qt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ qcoro Dependencies +

+
+ Required +
+

+ Qt-6.9.2 +

+
+
+

+ Installation of qcoro +

+

+ Install qcoro by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$QT6DIR \
+      -D CMAKE_BUILD_TYPE=Release     \
+      -D BUILD_TESTING=OFF            \
+      -D QCORO_BUILD_EXAMPLES=OFF     \
+      -D BUILD_SHARED_LIBS=ON         \
+       ..                             &&
+make
+

+ To test this package, remove the 'BUILD_TESTING=OFF' + parameter above and run: +

+
make test
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply a higher level of compiler optimizations. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libQCoro6Core.so, libQCoro6DBus.so, + libQCoro6Network.so, libQCoro6Qml.so, libQCoro6Quick.so, + and libQCoro6WebSockets.so +
+
+ Installed Directories: + Nine directories in + $QT6DIR/lib/cmake/ and $QT6DIR/include/qcoro6 +
+
+
+
+
+
+
+
+

+ SpiderMonkey + from firefox-140.2.0 +

+
+
+
+
+
+

+ Introduction to SpiderMonkey +

+

+ SpiderMonkey is Mozilla's + JavaScript and WebAssembly Engine, written in C++ and Rust. + In BLFS, the source code of SpiderMonkey is taken from + Firefox. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://archive.mozilla.org/pub/firefox/releases/140.2.0esr/source/firefox-140.2.0esr.source.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 64773387a541a2ed5c1ce9f247469ba3 +

    +
  • +
  • +

    + Download size: 602 MB +

    +
  • +
  • +

    + Estimated disk space required: 4.7 GB (48 MB installed + after removing 38 MB static lib; add 30 MB for the main + tests and 27 MB for the jit tests) +

    +
  • +
  • +

    + Estimated build time: 1.8 SBU (with parallelism=4; add + 0.5 SBU for the main tests and 2.1 SBU for the jit + tests) +

    +
  • +
+
+

+ SpiderMonkey Dependencies +

+
+ Required +
+

+ Cbindgen-0.29.0, ICU-77.1, Which-2.23 +

+
+ Recommended +
+ +
+

+ Important +

+

+ If you are building this package on a 32-bit system, and + Clang is not installed or you're overriding the default + compiler choice with the environment variable CXX, please read the Command Explanations + section first. +

+
+
+
+

+ Installation of SpiderMonkey +

+
+

+ Note +

+

+ Unlike most other packages in BLFS, the instructions below + require you to untar firefox-140.2.0esr.tar.xz and change into + the firefox-140.2.0 + directory. +

+

+ Extracting the tarball will reset the permissions of the + current directory to 0755 if you have permission to do + that. If you do this in a directory where the sticky bit is + set, such as /tmp it will end + with error messages: +

+
+

+ tar: .: Cannot utime: Operation not permitted
+ + tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
+ + tar: Exiting with failure status due to previous errors
+

+
+

+ This does finish with non-zero status, but it does + NOT mean there is a + real problem. Do not untar as the root user in a directory where the + sticky bit is set - that will unset it. +

+
+

+ Install SpiderMonkey by + running the following commands: +

+
+

+ Note +

+

+ If you are compiling this package in chroot you must ensure + that /dev/shm is mounted. If + you do not do this, the Python configuration will fail with a + traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py. + As the root user, run: +

+
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
+

+ Compiling the C++ code respects $MAKEFLAGS and defaults to + 'j1', the rust code will use all processors. +

+
+
mkdir obj &&
+cd    obj &&
+
+../js/src/configure --prefix=/usr            \
+                    --disable-debug-symbols  \
+                    --disable-jemalloc       \
+                    --enable-readline        \
+                    --enable-rust-simd       \
+                    --with-intl-api          \
+                    --with-system-icu        \
+                    --with-system-zlib       &&
+make
+

+ To run the SpiderMonkey test suite, issue: +

+
make -C js/src check-jstests \
+     JSTESTS_EXTRA_ARGS="--timeout 300 --wpt=disabled" | tee jstest.log
+

+ Because we are building with system ICU, 24 tests (out of a + total of more than 50,000) are known to fail. The list of + failed tests can be extracted via grep 'UNEXPECTED-FAIL' + jstest.log. Pass the -c option to grep if you only want the + total number of failed tests. +

+

+ The test suite is executed with all CPU cores available: even + in a cgroup with less cores assigned, it still attempts to + spawn as many testing jobs as the number of all cores in the system; + fortunately the kernel still won't run these jobs on cores + not assigned to the cgroup so the CPU usage is still + controlled. +

+

+ To run the JIT test suite, issue the following command: +

+
make -C js/src check-jit-test
+

+ Like the SpiderMonkey test suite, the number of test jobs is + same as the number of all CPU cores in the system even if a + cgroup is used. To make things worse, some test cases can use + up to 4 GB of system memory, so the peak memory usage may be + very large if your CPU have multiple cores. Running the JIT + test suite without enough memory may invoke the kernel OOM + killer and cause stability issues. If you don't have enough + system memory available, append JITTEST_EXTRA_ARGS=-jN to the command and + replace N with the + number of test jobs your available system memory can hold. + For example, if you have 15 GB system memory available and 4 + CPU cores, append JITTEST_EXTRA_ARGS=-j3 to run the test suite + with 3 parallel jobs so the memory usage won't exceed 12 GB. +

+
+

+ Caution +

+

+ An issue in the installation process causes any running + program which links to SpiderMonkey shared library (for + example, GNOME Shell) to crash if SpiderMonkey is + reinstalled, or upgraded or downgraded without a change of + the major version number (140 in 140.2.0). To work around + this issue, remove the old version of the SpiderMonkey + shared library before installation: +

+
rm -fv /usr/lib/libmozjs-140.so
+
+

+ Now, as the root user: +

+
make install &&
+rm -v /usr/lib/libjs_static.ajs &&
+sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js140-config
+

+ Still as the root user, fix + an issue with one of the installed headers: +

+
sed '$i#define XP_UNIX' -i /usr/include/mozjs-140/js-config.h
+
+
+

+ Command Explanations +

+

+ --disable-debug-symbols: Don't + generate debug symbols since they are very large and most + users won't need it. Remove it if you want to debug + SpiderMonkey. +

+

+ --disable-jemalloc: + This switch disables the internal memory allocator used in + SpiderMonkey. jemalloc is only intended for the Firefox + browser environment. For other applications using + SpiderMonkey, the application may crash as items allocated in + the jemalloc allocator are freed on the system (glibc) + allocator. +

+

+ --enable-readline: + This switch enables Readline support in the SpiderMonkey + command line interface. +

+

+ --enable-rust-simd: + This switch enables SIMD optimization in the shipped + encoding_rs crate. +

+

+ --with-intl-api: This + enables the internationalization functions required by + Gjs. +

+

+ --with-system-*: + These parameters allow the build system to use system + versions of the above libraries. These are required for + stability. +

+

+ rm -v + /usr/lib/libjs_static.ajs: Remove a large + static library which is not used by any BLFS package. +

+

+ sed -i '/@NSPR_CFLAGS@/d' + /usr/bin/js140-config: Prevent js140-config from using + buggy CFLAGS. +

+

+ CC=gcc + CXX=g++: BLFS used to prefer to use gcc and g++ + instead of upstream's defaults of the clang programs. With the release of + gcc-12 the build takes longer with gcc and g++, primarily + because of extra warnings, and is bigger. Pass these + environment variables to the configure script if you wish to + continue to use gcc, g++ (by exporting them and unset them + after the installation, or simply prepending them before the + ../js/src/configure + command). If you are building on a 32-bit system, also see + below. +

+

+ CXXFLAGS="-msse2 + -mfpmath=sse": Use SSE2 instead of 387 for + double-precision floating-point operations. It's needed by + GCC to satisfy the expectations of upstream (Mozilla) + developers with floating-point arithmetic. Use it if you are + building this package on a 32-bit system with GCC (if Clang + is not installed or GCC is explicitly specified). Note that + this will cause SpiderMonkey to crash on a processor without + SSE2 capability. If you are running the system on such an old + processor, Clang is strictly needed. This setting is not + needed on 64-bit systems because all 64-bit x86 processors + support SSE2 and the 64-bit compilers (both Clang and GCC) + use SSE2 by default. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + js140 and js140-config +
+
+ Installed Libraries: + libmozjs-140.so +
+
+ Installed Directories: + /usr/include/mozjs-140 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ js140 +

+
+

+ provides a command line interface to the + JavaScript engine +

+
+

+ js140-config +

+
+

+ is used to find the SpiderMonkey compiler and + linker flags +

+
+

+ + libmozjs-140.so +

+
+

+ contains the Mozilla JavaScript API functions +

+
+
+
+
+
+
+
+

+ SPIRV-Headers-1.4.321.0 +

+
+
+
+
+
+

+ Introduction to SPIRV-Headers +

+

+ The SPIRV-Headers package + contains headers that allow for applications to use the + SPIR-V language and instruction set with Vulkan. SPIR-V is a + binary intermediate language for representing graphical + shader stages and compute kernels for multiple Khronos APIs, + including OpenGL and Vulkan. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ SPIRV-Headers Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of SPIRV-Headers +

+

+ Install SPIRV-Headers by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr -G Ninja .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/spirv and + /usr/share/cmake/SPIRV-Headers +
+
+
+
+
+
+
+
+

+ SPIRV-Tools-1.4.321.0 +

+
+
+
+
+
+

+ Introduction to SPIRV-Tools +

+

+ The SPIRV-Tools package + contains libraries and utilities for processing SPIR-V + modules. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ SPIRV-Tools Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and SPIRV-Headers-1.4.321.0 +

+
+
+

+ Installation of SPIRV-Tools +

+

+ Install SPIRV-Tools by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr     \
+      -D CMAKE_BUILD_TYPE=Release      \
+      -D SPIRV_WERROR=OFF              \
+      -D BUILD_SHARED_LIBS=ON          \
+      -D SPIRV_TOOLS_BUILD_STATIC=OFF  \
+      -D SPIRV-Headers_SOURCE_DIR=/usr \
+      -G Ninja .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D SPIRV_WERROR=OFF: + This switch stops the build system from treating warnings as + errors. +

+

+ -D + BUILD_SHARED_LIBS=ON: This switch forces the + build system to install shared libraries instead of static + libraries. +

+

+ -D + SPIRV_TOOLS_BUILD_STATIC=OFF: This switch + disables building static versions of the libraries. +

+

+ -D + SPIRV-Headers_SOURCE_DIR: This switch tells the + build system that SPIRV-Headers-1.4.321.0 + is installed in /usr. This is needed since the build system + tries to use a copy at external/spirv-headers in the source + directory by default and the copy is not shipped (i.e. you + need to manually extract SPIRV-Headers-1.4.321.0 there + if you want to build with the copy). +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + spirv-as, spirv-cfg, spirv-dis, + spirv-lesspipe.sh, spirv-link, spirv-lint, spirv-objdump, + spirv-opt, spirv-reduce, and spirv-val +
+
+ Installed Libraries: + libSPIRV-Tools-diff.so, + libSPIRV-Tools-link.so, libSPIRV-Tools-lint.so, + libSPIRV-Tools-opt.so, libSPIRV-Tools-reduce.so, + libSPIRV-Tools-shared.so, and libSPIRV-Tools.so +
+
+ Installed Directories: + /usr/include/spirv-tools and + /usr/lib/cmake/SPIRV-Tools +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ spirv-as +

+
+

+ creates a SPIR-V binary module from SPIR-V assembly + text +

+
+

+ spirv-cfg +

+
+

+ shows the control flow graph in "dot" format +

+
+

+ spirv-dis +

+
+

+ disassembles a SPIR-V binary module +

+
+

+ spirv-lesspipe.sh +

+
+

+ automatically disassembles a .SPV file for 'less' +

+
+

+ spirv-link +

+
+

+ links SPIR-V binary files together +

+
+

+ spirv-lint +

+
+

+ checks a SPIR-V binary module for errors +

+
+

+ spirv-objdump +

+
+

+ dumps information from a SPIR-V binary +

+
+

+ spirv-opt +

+
+

+ performs optimizations on SPIR-V binary files +

+
+

+ spirv-reduce +

+
+

+ reduces a SPIR-V binary file +

+
+

+ spirv-val +

+
+

+ validates a SPIR-V binary file +

+
+

+ libSPIRV-Tools.so +

+
+

+ contains functions for processing SPIR-V modules +

+
+
+
+
+
+
+
+

+ SPIRV-LLVM-Translator-20.1.5 +

+
+
+
+
+
+

+ Introduction to SPIRV-LLVM-Translator +

+

+ The SPIRV-LLVM-Translator + package contains a library and utility for converting between + LLVM IR and SPIR-V code. This package currently only supports + the OpenCL/Compute version of SPIR-V. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ SPIRV-LLVM-Translator Dependencies +

+
+ Required +
+

+ libxml2-2.14.5, LLVM-20.1.8, and SPIRV-Tools-1.4.321.0 +

+
+
+

+ Installation of SPIRV-LLVM-Translator +

+

+ Install SPIRV-LLVM-Translator by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr                   \
+      -D CMAKE_BUILD_TYPE=Release                    \
+      -D BUILD_SHARED_LIBS=ON                        \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON                 \
+      -D LLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=/usr \
+      -G Ninja ..                                    &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + BUILD_SHARED_LIBS=ON: This parameter forces + building shared versions of the libraries. +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + LLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=/usr: This + parameter allows the build system to use the version of + SPIRV-Headers that should have been installed as a dependency + of SPIRV-Tools, instead of redownloading an unnecessary copy + of the headers. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + llvm-spirv +
+
+ Installed Libraries: + libLLVMSPIRVLib.so +
+
+ Installed Directories: + /usr/include/LLVMSPIRVLib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ llvm-spirv +

+
+

+ converts between LLVM IR and SPIR-V code +

+
+

+ libLLVMSPIRVLib.so +

+
+

+ contains functions that convert between LLVM IR and + SPIR-V code +

+
+
+
+
+
+
+
+

+ Talloc-2.4.3 +

+
+
+
+
+
+

+ Introduction to Talloc +

+

+ Talloc provides a + hierarchical, reference counted memory pool system with + destructors. It is the core memory allocator used in + Samba. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.samba.org/ftp/talloc/talloc-2.4.3.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: a51e4220fda52f4ae39413ed7e281f38 +

    +
  • +
  • +

    + Download size: 672 KB +

    +
  • +
  • +

    + Estimated disk space required: 10 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (with tests) +

    +
  • +
+
+

+ Talloc Dependencies +

+
+ Optional +
+

+ docbook-xml-4.5, docbook-xsl-nons-1.79.2 and + libxslt-1.1.43 (To generate man pages), + GDB-16.3, + git-2.50.1, libnsl-2.0.1, libtirpc-1.3.6, + Valgrind-3.25.1, and xfsprogs-6.15.0 +

+
+
+

+ Installation of Talloc +

+

+ Install Talloc by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To check the results, issue make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libpytalloc-util.cpython-313-<arch>-linux-gnu.so, + libtalloc.so, and + talloc.cpython-313-<arch>-linux-gnu.so (Python 3 + Module) +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libtalloc.so +

+
+

+ contains a replacement for the Glibc malloc function +

+
+
+
+
+
+
+
+

+ Uchardet-0.0.8 +

+
+
+
+
+
+

+ Introduction to Uchardet +

+

+ The Uchardet package + contains an encoding detector library which takes a sequence + of bytes in an unknown character encoding and attempts to + determine the encoding of the text. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Uchardet Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of Uchardet +

+

+ Install Uchardet by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D BUILD_STATIC=OFF                 \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -W no-dev ..                        &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D BUILD_STATIC=OFF: + This switch disables building the static version of the + library. +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + uchardet +
+
+ Installed Libraries: + libuchardet.so +
+
+ Installed Directories: + /usr/include/uchardet +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ uchardet +

+
+

+ detects what character set is used inside of a file +

+
+

+ libuchardet.so +

+
+

+ provides an API for detecting the encoding of text + in a file +

+
+
+
+
+
+
+
+

+ Umockdev-0.19.3 +

+
+
+
+
+
+

+ Introduction to Umockdev +

+

+ The Umockdev package + contains a framework that allows a developer to mock devices + for use in unit testing. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Umockdev Dependencies +

+
+ Required +
+

+ libgudev-238, libpcap-1.10.5, and + Vala-0.56.18 +

+
+ Optional +
+

+ GTK-Doc-1.34.0, Valgrind-3.25.1 (for + tests), and libgphoto2 (for tests) +

+
+
+

+ Installation of Umockdev +

+

+ Install Umockdev by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue as the root user: ninja test. One test needs + to be run in an X session. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D gtk_doc=true: Use this switch + if you have GTK-Doc-1.34.0 installed and wish to + rebuild and install the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + umockdev-record, umockdev-run, and + umockdev-wrapper +
+
+ Installed Libraries: + libumockdev-preload.so and + libumockdev.so +
+
+ Installed Directories: + /usr/include/umockdev-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ umockdev-record +

+
+

+ records Linux devices and their ancestors from + sysfs/udev or records ioctls for a device +

+
+

+ umockdev-run +

+
+

+ runs a program under an umockdev testbed +

+
+

+ umockdev-wrapper +

+
+

+ wraps a program around libumockdev-preload.so.0 through + LD_PRELOAD +

+
+

+ libumockdev.so +

+
+

+ provides API functions that allow mocking hardware + devices for unit testing +

+
+
+
+
+
+
+
+

+ utfcpp-4.0.6 +

+
+
+
+
+
+

+ Introduction to utfcpp +

+

+ The utfcpp package contains + a set of include files to provide UTF-8 with C++ in a + Portable Way. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ utfcpp Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of utfcpp +

+

+ Install utfcpp by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr ..
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/utf8cpp and + /usr/share/utf8cpp +
+
+
+
+
+
+
+
+

+ Wayland-1.24.0 +

+
+
+
+
+
+

+ Introduction to Wayland +

+

+ Wayland is a project to + define a protocol for a compositor to talk to its clients as + well as a library implementation of the protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Wayland Dependencies +

+
+ Required +
+

+ libxml2-2.14.5 +

+
+ Optional +
+

+ Doxygen-1.14.0, Graphviz-13.1.2 and + xmlto-0.0.29 (to build the API + documentation) and docbook-xml-4.5, docbook-xsl-nons-1.79.2 and + libxslt-1.1.43 (to build the manual + pages) +

+
+
+

+ Installation of Wayland +

+

+ Install Wayland by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D documentation=false &&
+ninja
+

+ To test the results, issue: env + -u XDG_RUNTIME_DIR ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + documentation=false: This switch is used to + disable building of the API documentation. Remove it if you + have installed optional dependencies. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + wayland-scanner +
+
+ Installed Libraries: + libwayland-client.so, + libwayland-cursor.so, libwayland-egl.so, and + libwayland-server.so +
+
+ Installed Directories: + /usr/share/wayland +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ wayland-scanner +

+
+

+ is a tool to generate proxy methods in + wayland-client-protocol.h and + wayland-server-protocol.h +

+
+

+ libwayland-client.so +

+
+

+ contains API functions for writing Wayland applications +

+
+

+ libwayland-cursor.so +

+
+

+ contains API functions for managing cursors in + Wayland + applications +

+
+

+ libwayland-egl.so +

+
+

+ contains API functions for handling OpenGL calls in + Wayland + applications +

+
+

+ libwayland-server.so +

+
+

+ contains API functions for writing Wayland compositors +

+
+
+
+
+
+
+
+

+ Wayland-Protocols-1.45 +

+
+
+
+
+
+

+ Introduction to Wayland-Protocols +

+

+ The Wayland-Protocols + package contains additional Wayland protocols that add + functionality outside of protocols already in the Wayland + core. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Wayland-protocols Dependencies +

+
+ Required +
+

+ Wayland-1.24.0 +

+
+
+

+ Installation of Wayland-protocols +

+

+ Install Wayland-protocols by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/wayland-protocols +
+
+
+
+
+
+
+
+

+ wv-1.2.9 +

+
+
+
+
+
+

+ Introduction to wv +

+

+ The wv package contains + tools for reading information from an MS Word document. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ wv + Dependencies +

+
+ Required +
+

+ libgsf-1.14.53 and libpng-1.6.50 +

+
+ Optional +
+

+ libwmf +

+
+
+

+ Installation of wv +

+

+ Install wv by running the + following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not have a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + wvSummary and several other wv* + programs which are deprecated in favour of abiword: see + https://wvware.sourceforge.net/ +
+
+ Installed Library: + libwv-1.2.so +
+
+ Installed Directory: + /usr/share/wv +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ wvSummary +

+
+

+ displays the summary information from an MS Word + document +

+
+

+ libwv-1.2.so +

+
+

+ provides functions to access MS Word documents +

+
+
+
+
+
+
+
+

+ Xapian-1.4.29 +

+
+
+
+
+
+

+ Introduction to xapian +

+

+ Xapian is an open source search engine library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://oligarchy.co.uk/xapian/1.4.29/xapian-core-1.4.29.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 17dc9532463bd49695385a5aed1d8da7 +

    +
  • +
  • +

    + Download size: 3.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 146 MB (add 168 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (add 9.1 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ Xapian Dependencies +

+
+ Optional +
+

+ Valgrind-3.25.1 (for tests) +

+
+
+

+ Installation of Xapian +

+

+ Install Xapian by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/xapian-core-1.4.29 &&
+make
+

+ To run the test suite, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + copydatabase, quest, simpleexpand, + simpleindex, simplesearch, xapian-check, xapian-compact, + xapian-config, xapian-delve, xapian-metadata, xapian-pos, + xapian-progsrv, xapian-replicate, xapian-replicate-server + and xapian-tcpsrv +
+
+ Installed Libraries: + libxapian.so +
+
+ Installed Directories: + /usr/include/xapian, + /usr/lib/cmake/xapian, /usr/share/doc/xapian-core-1.4.29, + and /usr/share/xapian-core +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ copydatabase +

+
+

+ performs a document-by-document copy of one or more + Xapian databases +

+
+

+ quest +

+
+

+ is a command line tool to search through a database +

+
+

+ simpleexpand +

+
+

+ is a simple example program demonstrating query + expansion +

+
+

+ simpleindex +

+
+

+ indexes each paragraph of a text file as a + Xapian document +

+
+

+ simplesearch +

+
+

+ is a simple command line search utility +

+
+

+ xapian-check +

+
+

+ checks the consistency of a database or table +

+
+

+ xapian-compact +

+
+

+ compacts a database, or merges and compacts several + databases +

+
+

+ xapian-config +

+
+

+ reports information about the installed version of + xapian +

+
+

+ xapian-delve +

+
+

+ inspects the contents of a Xapian database +

+
+

+ xapian-metadata +

+
+

+ reads and writes user metadata +

+
+

+ xapian-pos +

+
+

+ inspects the contents of a flint table for + development or debugging +

+
+

+ xapian-progsrv +

+
+

+ is a remote server for use with ProgClient +

+
+

+ xapian-replicate +

+
+

+ replicates a database from a master server to a + local copy +

+
+

+ xapian-replicate-server +

+
+

+ services database replication requests from clients +

+
+

+ xapian-tcpsrv +

+
+

+ is the TCP daemon for use with Xapian's remote backend +

+
+
+
+
+
+
+
+
+

+ Chapter 10. Graphics and + Font Libraries +

+
+
+
+
+

+ Depending on what your system will be used for, you may or may + not require the graphics and font libraries. Most desktop + machines will want them for use with graphical applications. Most + servers on the other hand, will not require them. +

+
+
+
+

+ AAlib-1.4rc5 +

+
+
+
+
+
+

+ Introduction to AAlib +

+

+ AAlib is a library to render + any graphic into ASCII Art. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ AAlib Dependencies +

+
+ Optional +
+

+ Xorg + Libraries, Xorg Fonts (runtime), slang-2.3.3, and GPM-1.20.7 +

+
+
+

+ Installation of AAlib +

+

+ Fix a minor problem with the included m4 file: +

+
sed -i -e '/AM_PATH_AALIB,/s/AM_PATH_AALIB/[&]/' aalib.m4
+

+ Change the default X11 font from Xorg Legacy Fonts to + Xorg + Fonts: +

+
sed -e 's/8x13bold/-*-luxi mono-bold-r-normal--13-120-*-*-m-*-*-*/' \
+    -i src/aax.c
+

+ Fix an overuse of some ncurses internal data structures to + allow building this package with ncurses-6.5 or later: +

+
sed 's/stdscr->_max\([xy]\) + 1/getmax\1(stdscr)/' \
+    -i src/aacurses.c
+

+ To allow building this package with GCC-14 or later, add some + missing #include directives and + fix a bad return statement to + make the code C99-compatible. Then regenerate the + configure + script to ensure the C code for probing system features is + C99-compatible as well: +

+
sed -i '1i#include <stdlib.h>'                            \
+    src/aa{fire,info,lib,linuxkbd,savefont,test,regist}.c &&
+sed -i '1i#include <string.h>'                            \
+    src/aa{kbdreg,moureg,test,regist}.c                   &&
+sed -i '/X11_KBDDRIVER/a#include <X11/Xutil.h>'           \
+    src/aaxkbd.c                                          &&
+sed -i '/rawmode_init/,/^}/s/return;/return 0;/'          \
+    src/aalinuxkbd.c                                      &&
+autoconf
+

+ Install AAlib by running the + following commands: +

+
./configure --prefix=/usr             \
+            --infodir=/usr/share/info \
+            --mandir=/usr/share/man   \
+            --with-ncurses=/usr       \
+            --disable-static          &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + aafire, aainfo, aalib-config, + aasavefont, and aatest +
+
+ Installed Library: + libaa.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ aafire +

+
+

+ is a demo of AAlib, rendering an animated + fire in ASCII Art +

+
+

+ aainfo +

+
+

+ provides information for your current settings + related to AAlib +

+
+

+ aalib-config +

+
+

+ provides configuration info for AAlib +

+
+

+ aasavefont +

+
+

+ saves a font to a file +

+
+

+ aatest +

+
+

+ shows the abilities of AAlib in a little test +

+
+

+ libaa.so +

+
+

+ is a collection of routines to render any graphical + input in portable format to ASCII Art. It can be + used through many programs and has a very well + documented API, so you can easily put it into your + own programs +

+
+
+
+
+
+
+
+

+ babl-0.1.114 +

+
+
+
+
+
+

+ Introduction to Babl +

+

+ The Babl package is a + dynamic, any to any, pixel format translation library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gimp.org/pub/babl/0.1/babl-0.1.114.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: be5ed13a156e0a666695b44892422129 +

    +
  • +
  • +

    + Download size: 316 KB +

    +
  • +
  • +

    + Estimated disk space required: 14 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (Using parallelism=4; + with tests) +

    +
  • +
+
+

+ Babl + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Little + CMS-2.17 and w3m +

+
+
+

+ Installation of Babl +

+

+ Install Babl by running the + following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja 
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install &&
+
+install -v -m755 -d                         /usr/share/gtk-doc/html/babl/graphics &&
+install -v -m644 docs/*.{css,html}          /usr/share/gtk-doc/html/babl          &&
+install -v -m644 docs/graphics/*.{html,svg} /usr/share/gtk-doc/html/babl/graphics
+
+
+

+ Command Explanations +

+

+ install -v -m755 -d + /usr/share/gtk-doc/html/babl/graphics: This + and the subsequent commands install the library html + documentation under /usr/share/gtk-doc/html where other gtk + packages put the programmer-oriented documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libbabl-0.1.so and libraries in + /usr/lib/babl-0.1 +
+
+ Installed Directories: + /usr/{include,lib}/babl-0.1 and + /usr/share/gtk-doc/html/babl +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libbabl-0.1.so +

+
+

+ contains functions to access BablFishes to convert + between formats +

+
+
+
+
+
+
+
+

+ Exiv2-0.28.5 +

+
+
+
+
+
+

+ Introduction to Exiv2 +

+

+ Exiv2 contains a C++ library + and a command line utility for managing image and video + metadata. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Exiv2 dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ libssh +

+
+ Optional for documentation +
+

+ Doxygen-1.14.0, Graphviz-13.1.2, and + libxslt-1.1.43 +

+
+
+

+ Installation of Exiv2 +

+

+ Install Exiv2 by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr   \
+      -D CMAKE_BUILD_TYPE=Release    \
+      -D EXIV2_ENABLE_VIDEO=yes      \
+      -D EXIV2_ENABLE_WEBREADY=yes   \
+      -D EXIV2_ENABLE_CURL=yes       \
+      -D EXIV2_BUILD_SAMPLES=no      \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON \
+      -G Ninja ..                    &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + EXIV2_ENABLE_VIDEO=yes: This switch enables + managing video metadata. +

+

+ -D + EXIV2_ENABLE_WEBREADY=yes: This switch enables + managing web image metadata. +

+

+ -D + EXIV2_BUILD_SAMPLES=no: This switch is necessary + to suppress building and installing sample programs. If the + sample programs are built, 34 additional programs are + installed in /usr/bin. +

+

+ -D + EXIV2_ENABLE_CURL=yes: This switch is necessary + to enable network/http capabilities. +

+

+ -D EXIV2_ENABLE_INIH=no: Use this + switch if you have not installed inih-61. +

+

+ -D EXIV2_ENABLE_BROTLI=no: Use + this switch if you have not installed Brotli-1.1.0. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + exiv2 +
+
+ Installed Library: + libexiv2.so +
+
+ Installed Directories: + /usr/include/exiv2 and + /usr/lib/cmake/exiv2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ exiv2 +

+
+

+ is a utility used to dump Exif data +

+
+
+
+
+
+
+
+

+ FreeType-2.13.3 +

+
+
+
+
+
+

+ Introduction to FreeType2 +

+

+ The FreeType2 package + contains a library which allows applications to properly + render TrueType fonts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.sourceforge.net/freetype/freetype-2.13.3.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: f3b4432c4212064c00500e1ad63fbc64 +

    +
  • +
  • +

    + Download size: 2.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 33 MB (with additional + documentation) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with additional + documentation) +

    +
  • +
+
+

+ Additional Downloads +

+
+

+ Additional Documentation +

+ +
+

+ FreeType2 Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Brotli-1.1.0 and librsvg-2.61.0 +

+
+ Optional (for documentation) +
+

+ docwriter +

+
+
+

+ Installation of FreeType2 +

+

+ If you downloaded the additional documentation, unpack it + into the source tree using the following command: +

+
tar -xf ../freetype-doc-2.13.3.tar.xz --strip-components=2 -C docs
+

+ Install FreeType2 by running + the following commands: +

+
sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg &&
+
+sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" \
+    -i include/freetype/config/ftoption.h  &&
+
+./configure --prefix=/usr --enable-freetype-config --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you downloaded the optional documentation, install it as + the root user: +

+
cp -v -R docs -T /usr/share/doc/freetype-2.13.3 &&
+rm -v /usr/share/doc/freetype-2.13.3/freetype-config.1
+
+
+

+ Command Explanations +

+

+ sed -ri ...: + First command enables GX/AAT and OpenType table validation + and second command enables Subpixel Rendering. Note that + Subpixel Rendering may have patent issues. Be sure to read + the 'Other patent issues' part + of https://freetype.org/patents.html + before enabling this option. +

+

+ --enable-freetype-config: This + switch ensure that the man page for freetype-config is + installed. +

+

+ --without-harfbuzz: If + harfbuzz is installed prior + to freetype without + freetype support, use this + switch to avoid a build failure. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + freetype-config +
+
+ Installed Library: + libfreetype.so +
+
+ Installed Directories: + /usr/include/freetype2 and + /usr/share/doc/freetype-2.13.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ freetype-config +

+
+

+ is used to get FreeType compilation and + linking information +

+
+

+ libfreetype.so +

+
+

+ contains functions for rendering various font + types, such as TrueType and Type1 +

+
+
+
+
+
+
+
+

+ Fontconfig-2.17.1 +

+
+
+
+
+
+

+ Introduction to Fontconfig +

+

+ The Fontconfig package + contains a library and support programs used for configuring + and customizing font access. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Fontconfig Dependencies +

+
+ Required +
+

+ FreeType-2.13.3 +

+
+ Optional +
+

+ bubblewrap-0.11.0 (used by some + tests), cURL-8.15.0 and libarchive-3.8.1 + (both used by some tests for downloading and extracting test + files), JSON-C-0.18, DocBook-utils-0.6.14 and libxml2-2.14.5, texlive-20250308 (or install-tl-unx) +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+

+ Note +

+

+ If you have DocBook Utils + installed and you remove the --disable-docs parameter from + the configure + command below, you must also have SGMLSpm-1.1 and + texlive-20250308 installed, + or the Fontconfig build + will fail. +

+
+
+
+

+ Installation of Fontconfig +

+

+ Install Fontconfig by + running the following commands: +

+
./configure --prefix=/usr        \
+            --sysconfdir=/etc    \
+            --localstatedir=/var \
+            --disable-docs       \
+            --docdir=/usr/share/doc/fontconfig-2.17.1 &&
+make
+

+ To test the results, issue: make check. One test is + known to fail if the kernel does not support user namespaces. + Some tests will download some font files via Internet. +

+

+ Now, as the root user: +

+
make install
+

+ If you did not remove the --disable-docs parameter from + the configure + command, you can install the pre-generated documentation by + using the following commands as the root user: +

+
install -v -dm755 \
+        /usr/share/{man/man{1,3,5},doc/fontconfig-2.17.1} &&
+install -v -m644 fc-*/*.1         /usr/share/man/man1 &&
+install -v -m644 doc/*.3          /usr/share/man/man3 &&
+install -v -m644 doc/fonts-conf.5 /usr/share/man/man5 &&
+install -v -m644 doc/*.{pdf,sgml,txt,html} \
+                                  /usr/share/doc/fontconfig-2.17.1
+
+
+

+ Command Explanations +

+

+ --disable-docs: This + switch avoids building the documentation (the release tarball + includes pre-generated documentation). +

+
+
+

+ Configuring Fontconfig +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/fonts/*, /etc/fonts/conf.d/* + and /usr/share/fontconfig/conf.avail/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The main configuration file for Fontconfig is /etc/fonts/fonts.conf. Generally you do + not want to edit this file. It will also read /etc/fonts/local.conf and any files in + /etc/fonts/conf.d. To put a + new font directory in the configuration, create (or update) + the /etc/fonts/local.conf + file with your local information or add a new file in + /etc/fonts/conf.d. The + default location of fonts in Fontconfig is: +

+
+
    +
  • +

    + /usr/share/fonts +

    +
  • +
  • +

    + ~/.local/share/fonts +

    +
  • +
  • +

    + ~/.fonts (this is now + deprecated, but for the moment it still + works) +

    +
  • +
+
+

+ Fontconfig also ships many + example configuration files in the /usr/share/fontconfig/conf.avail + directory. Symlinking specific files to /etc/fonts/conf.d will enable them. The + default setup is generally good enough for most users. See + /etc/fonts/conf.d/README for + a description of the configuration files. +

+

+ More information about configuring Fontconfig can be found in the user's + manual in + file:///usr/share/doc/fontconfig-2.17.1/fontconfig-user.html. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fc-cache, fc-cat, fc-conflist, + fc-list, fc-match, fc-pattern, fc-query, fc-scan, and + fc-validate +
+
+ Installed Library: + libfontconfig.so +
+
+ Installed Directories: + /etc/fonts, + /usr/include/fontconfig, + /usr/share/doc/fontconfig-2.17.1, /usr/share/fontconfig, + /usr/share/xml/fontconfig, and + /var/cache/fontconfig +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fc-cache +

+
+

+ is used to create font information caches +

+
+

+ fc-cat +

+
+

+ is used to read font information caches +

+
+

+ fc-conflist +

+
+

+ shows the ruleset files' information on the system +

+
+

+ fc-list +

+
+

+ is used to create font lists +

+
+

+ fc-match +

+
+

+ is used to match available fonts, or find fonts + that match a given pattern +

+
+

+ fc-pattern +

+
+

+ is used to parse pattern (empty pattern by default) + and show the parsed result +

+
+

+ fc-query +

+
+

+ is used to query fonts files and print resulting + patterns +

+
+

+ fc-scan +

+
+

+ is used to scan font files and directories, and + print resulting patterns +

+
+

+ fc-validate +

+
+

+ is used to validate font files +

+
+

+ libfontconfig.so +

+
+

+ contains functions used by the Fontconfig programs and also + by other programs to configure or customize font + access +

+
+
+
+
+
+
+
+

+ FriBidi-1.0.16 +

+
+
+
+
+
+

+ Introduction to FriBidi +

+

+ The FriBidi package is an + implementation of the Unicode Bidirectional + Algorithm (BIDI). This is useful for supporting Arabic + and Hebrew alphabets in other packages. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ FriBidi Dependencies +

+
+ Optional +
+

+ c2man (to build + man pages) +

+
+
+

+ Installation of FriBidi +

+

+ Install FriBidi by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + fribidi +
+
+ Installed Library: + libfribidi.so +
+
+ Installed Directory: + /usr/include/fribidi +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ fribidi +

+
+

+ is a command-line interface to the libfribidi library and can be + used to convert a logical string to visual output +

+
+

+ libfribidi.so +

+
+

+ contains functions used to implement the Unicode + Bidirectional Algorithm +

+
+
+
+
+
+
+
+

+ gegl-0.4.62 +

+
+
+
+
+
+

+ Introduction to gegl +

+

+ This package provides the GEneric Graphics Library, which is + a graph based image processing format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gimp.org/pub/gegl/0.4/gegl-0.4.62.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 0077654104c84fd54b4b48b92271131c +

    +
  • +
  • +

    + Download size: 5.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 124 MB (Add 4 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (add 0.1 SBU for tests, + both with parallelism=4) +

    +
  • +
+
+

+ gegl + Dependencies +

+
+ Required +
+

+ babl-0.1.114 and JSON-GLib-1.10.6 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoc-10.2.1, Cairo-1.18.4, FFmpeg-7.1.1 + (currently broken), gdk-pixbuf-2.42.12, gexiv2-0.14.6, + GTK-Doc-1.34.0, jasper-4.2.8, Little + CMS-2.17, libraw-0.21.4, librsvg-2.61.0, + libspiro-20220722, libtiff-4.7.0, + libwebp-1.6.0, luajit-20250816, + Pango-1.56.4, Poppler-25.08.0, + Ruby-3.4.5, SDL2-2.32.8, v4l-utils-1.30.1, + Vala-0.56.18, lensfun, libnsgif, + libumfpack, + maxflow, MRG, + OpenCL, OpenEXR, poly2tri-c, + source-highlight, + and w3m +

+
+
+

+ Installation of gegl +

+

+ If you are installing over a previous version of gegl, one of the modules will need to be + removed. As the root user, + run the following command to remove it: +

+
rm -f /usr/lib/gegl-0.4/vector-fill.so
+

+ Install gegl by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To run the tests, issue: ninja + test. Fourteen tests are known to fail in the + gegl:ff-load-save portion of + the test suite due to incompatibilities with recent versions + of ffmpeg. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D docs=true: Use this switch to + build and install the documentation (requires GTK-Doc-1.34.0). +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gegl and gegl-imgcmp +
+
+ Installed Libraries: + libgegl-0.4.so, libgegl-npd-0.4.so, + and modules in /usr/lib/gegl-0.4 +
+
+ Installed Directories: + /usr/lib/gegl-0.4 and + /usr/include/gegl-0.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ gegl +

+
+

+ is a commandline tool for interfacing with the gegl + library +

+
+

+ gegl-imgcmp +

+
+

+ is a simple image difference detection tool for use + in regression testing +

+
+

+ libgegl-0.4.so +

+
+

+ provides infrastructure to do demand based cached + non destructive image editing on larger than RAM + buffers +

+
+

+ libgegl-npd-0.4.so +

+
+

+ is the GEGL N-point image deformation library +

+
+
+
+
+
+
+
+

+ giflib-5.2.2 +

+
+
+
+
+
+

+ Introduction to giflib +

+

+ The giflib package contains + libraries for reading and writing GIFs as well as programs + for converting and working with GIF files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ giflib Dependencies +

+
+ Optional +
+

+ xmlto-0.0.29 (required if you run + make after + make clean) + [1] +

+
+
+

+ Installation of giflib +

+

+ First, prevent the build process from installing XML files + instead of man pages: +

+
patch -Np1 -i ../giflib-5.2.2-upstream_fixes-1.patch
+

+ Next, fix several security vulnerabilities in the 'gif2rgb' + utility: +

+
patch -Np1 -i ../giflib-5.2.2-security_fixes-1.patch
+

+ Next, remove an unnecessary dependency on ImageMagick-7.1.2-1 by moving a + file into an expected location: +

+
cp pic/gifgrid.gif doc/giflib-logo.gif
+

+ Install giflib by running + the following commands: +

+
make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make PREFIX=/usr install &&
+
+rm -fv /usr/lib/libgif.a &&
+
+find doc \( -name Makefile\* -o -name \*.1 \
+         -o -name \*.xml \) -exec rm -v {} \; &&
+
+install -v -dm755 /usr/share/doc/giflib-5.2.2 &&
+cp -v -R doc/* /usr/share/doc/giflib-5.2.2
+
+
+

+ Command Explanations +

+

+ rm -fv + /usr/lib/libgif.a: This command removes a + static library which is not used by any BLFS package. +

+

+ find doc ... -exec rm -v {} + \;: This command removes Makefiles, man and xml files from the + documentation directory that would otherwise be installed by + the commands that follow. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gif2rgb, gifbuild, gifclrmp, + giffix, giftext, and giftool +
+
+ Installed Library: + libgif.so +
+
+ Installed Directory: + /usr/share/doc/giflib-5.2.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gif2rgb +

+
+

+ converts images saved as GIF to 24-bit RGB images +

+
+

+ gifbuild +

+
+

+ dumps GIF data in a textual format, or undumps it + to a GIF +

+
+

+ gifclrmp +

+
+

+ modifies GIF image colormaps +

+
+

+ giffix +

+
+

+ clumsily attempts to fix truncated GIF images +

+
+

+ giftext +

+
+

+ prints (text only) general information about a GIF + file +

+
+

+ giftool +

+
+

+ is a GIF transformation tool +

+
+

+ libgif.so +

+
+

+ contains API functions required by the giflib programs and any other + programs needing library functionality to read, + write and manipulate GIF images +

+
+
+
+
+
+
+
+

+ [1] Pre-built documentation is present in + this tarball. make will detect that + documentation already exists in the distribution if + make clean + was not run, and will not require the xmlto-0.0.29 dependency. + However, running make + clean will result in the pre-built + documentation being deleted, thus requiring xmlto to build the + documentation if make is run afterwards. +

+
+
+
+
+
+
+

+ Glad-2.0.8 +

+
+
+
+
+
+

+ Introduction to Glad +

+

+ The Glad package contains a + generator for loading Vulkan, OpenGL, EGL, GLES, and GLX + contexts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Glad + Dependencies +

+
+ Optional (required to run the tests) +
+

+ pytest-8.4.1, rustc-1.89.0, Xorg Libraries, + glfw, and + WINE +

+
+
+

+ Installation of Glad +

+

+ Install Glad by running the + following commands: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package comes with a test suite, but it cannot be run + without installing the external dependencies listed above. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user glad2
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + glad +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/python3.13/site-packages/glad and + /usr/lib/python3.13/site-packages/glad2-2.0.8.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ glad +

+
+

+ generates loaders for Vulkan, OpenGL, EGL, GLES, + and GLX contexts +

+
+
+
+
+
+
+
+

+ GLM-1.0.1 +

+
+
+
+
+
+

+ Introduction to GLM +

+

+ OpenGL Mathematics (GLM) is + a header-only C++ mathematics library for graphics software + based on the OpenGL Shading Language (GLSL) specifications. + An extension system provides extended capabilities such as + matrix transformations and quaternions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of GLM +

+
+

+ Note +

+

+ This package is unusual as it includes its functionality in + header files. We just copy them into position. +

+
+

+ As the root user: +

+
cp -r glm /usr/include/ &&
+cp -r doc /usr/share/doc/glm-1.0.1
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/include/glm and + /usr/share/doc/glm-1.0.1 +
+
+
+
+
+
+
+
+

+ Graphite2-1.3.14 +

+
+
+
+
+
+

+ Introduction to Graphite2 +

+

+ Graphite2 is a rendering + engine for graphite fonts. These are TrueType fonts with + additional tables containing smart rendering information and + were originally developed to support complex non-Roman + writing systems. They may contain rules for e.g. ligatures, + glyph substitution, kerning, justification - this can make + them useful even on text written in Roman writing systems + such as English. Note that firefox by default provides an internal + copy of the graphite engine and cannot use a system version + (although it can now be patched to use it), but it too should + benefit from the availability of graphite fonts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Graphite2 Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ FreeType-2.13.3, + silgraphite to build the comparerender test and + benchmarking tool, and if that is present, and harfBuzz-11.4.1 to add more + functionality to it (this is a circular dependency, you would + need to first build graphite2 without harfbuzz). +

+

+ To build the documentation: asciidoc-10.2.1, Doxygen-1.14.0, + texlive-20250308 (or install-tl-unx), and dblatex (for PDF + docs) +

+

+ To execute the test suite you will need FontTools + (Python 3 module), otherwise, the "cmp" tests fail. +

+
+ Optional (at runtime) +
+

+ You will need at least one suitable + graphite font for the package to be useful. +

+
+
+

+ Installation of Graphite2 +

+

+ Some tests fail if FontTools + (Python 3 module) is not installed. These tests can be + removed with: +

+
sed -i '/cmptest/d' tests/CMakeLists.txt
+

+ Fix building this package with CMake 4.0 by updating its + syntax to conform to newer versions of CMake: +

+
sed -i '/cmake_policy(SET CMP0012 NEW)/d' CMakeLists.txt &&
+sed -i 's/PythonInterp/Python3/' CMakeLists.txt          &&
+find . -name CMakeLists.txt | xargs sed -i 's/VERSION 2.8.0 FATAL_ERROR/VERSION 4.0.0/'
+

+ Now fix a problem when building with gcc-15: +

+
sed -i '/Font.h/i #include <cstdint>' tests/featuremap/featuremaptest.cpp
+

+ Install Graphite2 by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr .. &&
+make
+

+ If you wish to build the documentation, issue: +

+
make docs
+

+ To test the results, issue: make test. One test named + nametabletest is known to fail. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the documentation, install, as the root user: +

+
install -v -d -m755 /usr/share/doc/graphite2-1.3.14 &&
+
+cp      -v -f    doc/{GTF,manual}.html \
+                    /usr/share/doc/graphite2-1.3.14 &&
+cp      -v -f    doc/{GTF,manual}.pdf \
+                    /usr/share/doc/graphite2-1.3.14
+
+
+

+ Command Explanations +

+

+ -D CMAKE_VERBOSE_MAKEFILE=ON: + This switch turns on build verbose mode. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gr2fonttest, and optionally + comparerender +
+
+ Installed Libraries: + libgraphite2.so +
+
+ Installed Directories: + /usr/{include,share}/graphite2 and + optionally /usr/share/doc/graphite2-1.3.14 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ comparerender +

+
+

+ is a test and benchmarking tool +

+
+

+ gr2fonttest +

+
+

+ is a diagnostic console tool for graphite fonts +

+
+

+ libgraphite2.so +

+
+

+ is a rendering engine for graphite fonts +

+
+
+
+
+
+
+
+

+ harfBuzz-11.4.1 +

+
+
+
+
+
+

+ Introduction to Harfbuzz +

+

+ The HarfBuzz package + contains an OpenType text shaping engine. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ HarfBuzz Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Cairo-1.18.4 (circular: build cairo and + all its recommended dependencies, including harfbuzz, first, + then rebuild harfbuzz if the cairo backend is needed), + git-2.50.1, GTK-Doc-1.34.0, FontTools + (Python 3 module, for the test suite), ragel, and + wasm-micro-runtime +

+
+

+ Warning +

+

+ Recommended dependencies are not strictly required to build + the package. However, you might not get expected results at + runtime if you don't install them. Please do not report + bugs with this package if you have not installed the + recommended dependencies. +

+
+
+
+

+ Installation of HarfBuzz +

+

+ Install HarfBuzz by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..             \
+      --prefix=/usr        \
+      --buildtype=release  \
+      -D graphite2=enabled &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D graphite2=enabled: + This switch enables Graphite2 support, which is required for + building texlive-20250308 or LibreOffice-25.8.1.1 with system + harfbuzz. +

+

+ -D docs=disabled: If GTK-Doc-1.34.0 is installed, the + documentation is built and installed. This switch prevents + that. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + hb-info, hb-ot-shape-closure, + hb-shape, hb-subset, and hb-view (only if Cairo is + installed) +
+
+ Installed Libraries: + libharfbuzz.so, + libharfbuzz-cairo.so (only if Cairo is installed), + libharfbuzz-gobject.so, libharfbuzz-icu.so, and + libharfbuzz-subset.so +
+
+ Installed Directories: + /usr/include/harbuzz, + /usr/lib/cmake/harfbuzz, and + /usr/share/gtk-doc/html/harfbuzz (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ hb-info +

+
+

+ is used for gathering information about fonts + installed on the system +

+
+

+ hb-ot-shape-closure +

+
+

+ gives the set of characters contained in a string, + represented as single characters and/or single + character names. Example: hb-ot-shape-closure + /usr/share/fonts/dejavu/DejaVuSans.ttf "Hello + World." +

+
+

+ hb-shape +

+
+

+ is used for the conversion of text strings into + positioned glyphs +

+
+

+ hb-subset +

+
+

+ is used to create subsets of fonts, and display + text using them +

+
+

+ hb-view +

+
+

+ displays a graphical view of a string shape using a + particular font as a set of glyphs. The output + format is automatically defined by the file + extension, the supported ones being + ansi/png/svg/pdf/ps/eps. For example: hb-view --output-file=hello.png + /usr/share/fonts/dejavu/DejaVuSans.ttf "Hello + World." +

+
+

+ libharfbuzz.so +

+
+

+ is the HarfBuzz text shaping library +

+
+

+ libharfbuzz-cairo.so +

+
+

+ provides Cairo integration for the Harfbuzz text + shaping library +

+
+

+ libharfbuzz-gobject.so +

+
+

+ provides GObject integration for the HarfBuzz text + shaping library +

+
+

+ libharfbuzz-icu.so +

+
+

+ provides ICU integration for the HarfBuzz text + shaping library +

+
+

+ libharfbuzz-subset.so +

+
+

+ provides API functions for performing subsetting + operations on font files +

+
+
+
+
+
+
+
+

+ jasper-4.2.8 +

+
+
+
+
+
+

+ Introduction to jasper +

+

+ The jasper Project is an + open-source initiative to provide a free software-based + reference implementation of the JPEG-2000 codec. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ jasper Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ Freeglut-3.6.0 (required for + jiv), Doxygen-1.14.0 (needed for generating + html documentation), and texlive-20250308 (needed + to regenerate the pdf documentation) +

+
+
+

+ Installation of jasper +

+

+ Install jasper by running + the following commands: +

+
mkdir BUILD &&
+cd    BUILD &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr    \
+      -D CMAKE_BUILD_TYPE=Release     \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON  \
+      -D JAS_ENABLE_DOC=NO            \
+      -D ALLOW_IN_SOURCE_BUILD=YES    \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/jasper-4.2.8 \
+      ..  &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D JAS_ENABLE_DOC=NO: + This option disables rebuilding the pdf documentation if + texlive-20250308 is installed. +

+

+ -D + ALLOW_IN_SOURCE_BUILD=YES: This switch allows + building from within the source tree. In our case, this is + needed to allow us to build inside of the BUILD directory + instead of needing to create another directory outside of the + source tree. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + imgcmp, imginfo, jasper, and + jiv +
+
+ Installed Library: + libjasper.so +
+
+ Installed Directories: + /usr/include/jasper and + /usr/share/doc/jasper-4.2.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ imgcmp +

+
+

+ compares two images of the same geometry +

+
+

+ imginfo +

+
+

+ displays information about an image +

+
+

+ jasper +

+
+

+ converts images between formats (BMP, JPS, JPC, + JPG, PGX, PNM, MIF, and RAS) +

+
+

+ jiv +

+
+

+ displays images +

+
+

+ libjasper.so +

+
+

+ is a library used by programs for reading and + writing JPEG2000 format files +

+
+
+
+
+
+
+
+

+ Little CMS-2.17 +

+
+
+
+
+
+

+ Introduction to Little CMS2 +

+

+ The Little Color Management System is a small-footprint color + management engine, with special focus on accuracy and + performance. It uses the International Color Consortium + standard (ICC), which is the modern standard for color + management. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Little CMS2 Dependencies +

+
+ Optional +
+

+ libjpeg-turbo-3.0.1 and libtiff-4.7.0 +

+
+
+

+ Installation of Little CMS2 +

+

+ Install Little CMS2 by + running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + jpgicc, linkicc, psicc, tificc, and + transicc +
+
+ Installed Library: + liblcms2.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ jpgicc +

+
+

+ is the Little CMS ICC profile applier for JPEG +

+
+

+ linkicc +

+
+

+ is the Little CMS ICC device link generator +

+
+

+ psicc +

+
+

+ is the Little CMS ICC PostScript generator +

+
+

+ tificc +

+
+

+ is the Little CMS ICC tiff generator +

+
+

+ transicc +

+
+

+ is the Little CMS ColorSpace conversion calculator +

+
+

+ liblcms2.so +

+
+

+ contains functions that implement the lcms2 API +

+
+
+
+
+
+
+
+

+ libavif-1.3.0 +

+
+
+
+
+
+

+ Introduction to libavif +

+

+ The libavif package contains + a library used for encoding and decoding AVIF files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libavif Dependencies +

+
+ Required +
+

+ libaom-3.12.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ gtest, libdav1d, + libyuv, + rav1e, and svt-av1 +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of libavif +

+

+ Install libavif by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D AVIF_CODEC_AOM=SYSTEM     \
+      -D AVIF_BUILD_GDK_PIXBUF=ON  \
+      -D AVIF_LIBYUV=OFF           \
+      -G Ninja .. &&
+ninja
+

+ To test the package (note that it will cause the build system + to download a copy of gtest and build + the test suite with the copy), issue: +

+
cmake .. -D AVIF_GTEST=LOCAL -D AVIF_BUILD_TESTS=ON &&
+ninja && ninja test
+

+ Now, as the root user: +

+
ninja install
+

+ The AV1 format needs to be added to the loaders cache. As the + root user: +

+
gdk-pixbuf-query-loaders --update-cache
+
+
+

+ Command Explanations +

+

+ -D + AVIF_CODEC_AOM=SYSTEM: This switch enables using + the AOM codec. This package is useless without at least one + codec built in. +

+

+ -D + AVIF_BUILD_GDK_PIXBUF=ON: This switch builds the + AVIF loader for applications which use gdk-pixbuf. Remove it + if you have not installed gdk-pixbuf-2.42.12. +

+

+ -D AVIF_LIBYUV=OFF: Use this + switch if you have not installed libyuv. +

+

+ -D AVIF_CODEC_DAV1D=SYSTEM: Use + this switch if you have installed libdav1d and + wish to use it as a codec. +

+

+ -D AVIF_CODEC_RAV1E=SYSTEM: Use + this switch if you have installed rav1e and wish to use it + as a codec. +

+

+ -D AVIF_CODEC_SVT=SYSTEM: Use + this switch if you have installed svt-av1 and + wish to use it as a codec. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libavif.so and + libpixbbufloader-avif.so (in + /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders) +
+
+ Installed Directories: + /usr/include/avif and + /usr/lib/cmake/libavif +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libavif.so +

+
+

+ contains functions that provide a portable C + implementation of the AV1 Image Format +

+
+

+ libpixbufloader-avif.so +

+
+

+ allows applications which use gdk-pixbuf to read + AVIF images +

+
+
+
+
+
+
+
+

+ libexif-0.6.25 +

+
+
+
+
+
+

+ Introduction to libexif +

+

+ The libexif package contains + a library for parsing, editing, and saving EXIF data. Most + digital cameras produce EXIF files, which are JPEG files with + extra tags that contain information about the image. All EXIF + tags described in EXIF standard 2.1 are supported. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libexif Dependencies +

+
+ Optional (to Build Documentation) +
+

+ Doxygen-1.14.0 and Graphviz-13.1.2 +

+
+
+

+ Installation of libexif +

+

+ Install libexif by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-doc-dir=/usr/share/doc/libexif-0.6.25 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ Documentation was built and installed if you have the + dependencies shown above installed. If you don't have the + dependencies installed, there is a compressed tarball in the + source tree doc directory that + can be unpacked into /usr/share/doc/libexif-0.6.25. +

+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libexif.so +
+
+ Installed Directories: + /usr/include/libexif and + /usr/share/doc/libexif-0.6.25 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libexif.so +

+
+

+ contains functions used for parsing, editing, and + saving EXIF data +

+
+
+
+
+
+
+
+

+ libgxps-0.3.2 +

+
+
+
+
+
+

+ Introduction to libgxps +

+

+ The libgxps package provides + an interface to manipulate XPS documents. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Libgxps Dependencies +

+
+ Required +
+

+ GTK-3.24.50, Little CMS-2.17, libarchive-3.8.1, libjpeg-turbo-3.0.1, libtiff-4.7.0, and libxslt-1.1.43 +

+
+ Optional +
+

+ git-2.50.1 + and GTK-Doc-1.34.0 +

+
+
+

+ Installation of Libgxps +

+

+ Install Libgxps by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xpstojpeg, xpstopdf, xpstopng, + xpstops, and xpstosvg +
+
+ Installed Library: + libgxps.so +
+
+ Installed Directories: + /usr/include/libgxps +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ xpstojpeg +

+
+

+ converts XPS documents to a JPEG image +

+
+

+ xpstopdf +

+
+

+ converts XPS documents to PDF format +

+
+

+ xpstopng +

+
+

+ converts XPS documents to a PNG image +

+
+

+ xpstops +

+
+

+ converts XPS documents to PostScript +

+
+

+ xpstosvg +

+
+

+ converts XPS documents to SVG images +

+
+

+ libgxps.so +

+
+

+ contains API functions for manipulating XPS + documents +

+
+
+
+
+
+
+
+

+ libjpeg-turbo-3.0.1 +

+
+
+
+
+
+

+ Introduction to libjpeg-turbo +

+

+ libjpeg-turbo is a fork of + the original IJG libjpeg + which uses SIMD to accelerate baseline JPEG compression and + decompression. libjpeg is a + library that implements JPEG image encoding, decoding and + transcoding. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libjpeg-turbo Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+
+

+ Installation of libjpeg-turbo +

+

+ Install libjpeg-turbo by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=RELEASE         \
+      -D ENABLE_STATIC=FALSE              \
+      -D CMAKE_INSTALL_DEFAULT_LIBDIR=lib \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON      \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/libjpeg-turbo-3.0.1 \
+      .. &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D WITH_JPEG8=ON: This switch + enables compatibility with libjpeg version 8. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cjpeg, djpeg, jpegtran, rdjpgcom, + tjbench, and wrjpgcom +
+
+ Installed Libraries: + libjpeg.so and + libturbojpeg.so +
+
+ Installed Directories: + /usr/share/doc/libjpeg-turbo-3.0.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cjpeg +

+
+

+ compresses image files to produce a JPEG/JFIF file + on the standard output. Currently supported input + file formats are: PPM (PBMPLUS color format), PGM + (PBMPLUS gray-scale format), BMP, and Targa +

+
+

+ djpeg +

+
+

+ decompresses image files from JPEG/JFIF format to + either PPM (PBMPLUS color format), PGM (PBMPLUS + gray-scale format), BMP, or Targa format +

+
+

+ jpegtran +

+
+

+ is used for lossless transformation of JPEG files +

+
+

+ rdjpgcom +

+
+

+ displays text comments from within a JPEG file +

+
+

+ tjbench +

+
+

+ is used to benchmark the performance of + libjpeg-turbo +

+
+

+ wrjpgcom +

+
+

+ inserts text comments into a JPEG file +

+
+

+ libjpeg.so +

+
+

+ contains functions used for reading and writing + JPEG images +

+
+
+
+
+
+
+
+

+ libjxl-0.11.1 +

+
+
+
+
+
+

+ Introduction to libjxl +

+

+ The libjxl package contains + the reference implementation of the JPEG XL image format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libjxl Dependencies +

+
+ Required +
+

+ Brotli-1.1.0, CMake-4.1.0, giflib-5.2.2, + highway-1.3.0, Little CMS-2.17, + libjpeg-turbo-3.0.1, and libpng-1.6.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoc-10.2.1 (for man pages), + Doxygen-1.14.0 and Graphviz-13.1.2 (for + documentation), Java-24.0.2 (for the JAR), libavif-1.3.0, + libwebp-1.6.0, gtest, OpenEXR, + sjpeg, and + skcms +

+
+
+

+ Installation of libjxl +

+

+ Install libjxl by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr             \
+      -D CMAKE_BUILD_TYPE=Release              \
+      -D BUILD_TESTING=OFF                     \
+      -D BUILD_SHARED_LIBS=ON                  \
+      -D JPEGXL_ENABLE_SKCMS=OFF               \
+      -D JPEGXL_ENABLE_SJPEG=OFF               \
+      -D JPEGXL_ENABLE_PLUGINS=ON              \
+      -D JPEGXL_INSTALL_JARDIR=/usr/share/java \
+      -G Ninja ..                              &&
+ninja
+

+ This package does come with a test suite, but it requires + gtest, which is + not in BLFS. +

+

+ Now, as the root user: +

+
ninja install &&
+gdk-pixbuf-query-loaders --update-cache
+
+
+

+ Command Explanations +

+

+ gdk-pixbuf-query-loaders + --update-cache: This command regenerates the + GDK Pixbuf loader cache so + that it is aware of the JPEG-XL loader. +

+

+ -D BUILD_TESTING=OFF: + This parameter disables the tests because they require + gtest, which is + not in BLFS. If you wish to run the tests and have gtest + installed, remove this parameter. +

+

+ -D + BUILD_SHARED_LIBS=ON: This parameter enables + building shared versions of the libraries instead of static + ones. +

+

+ -D + JPEGXL_ENABLE_SKCMS=OFF: This parameter disables + building support for Skia's skcms since it is not necessary for BLFS + purposes and requires skcms. +

+

+ -D + JPEGXL_ENABLE_SJPEG=OFF: This parameter disables + support for SimpleJPEG since it is not necessary for BLFS + purposes and requires sjpeg. +

+

+ -D + JPEGXL_ENABLE_PLUGINS=ON: This parameter enables + Plugin support, which creates plugins for gdk-pixbuf-2.42.12 if the package is + installed. +

+

+ -D + JPEGXL_INSTALL_JARDIR=/usr/share/java: This + parameter places the JAR file for JPEG XL support in the + correct directory if Java-24.0.2 is installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + benchmark_xl, cjxl, djxl, and + jxlinfo +
+
+ Installed Libraries: + libjxl.so, libjxl_cms.so, + libjxl_extras_codec.so, libjxl_jni.so, libjxl_threads.so, + and libpixbufloader-jxl.so (in + /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders) +
+
+ Installed Directories: + /usr/include/jxl +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ benchmark_xl +

+
+

+ runs performance benchmarks against libjxl +

+
+

+ cjxl +

+
+

+ compresses images into JPEG XL format +

+
+

+ djxl +

+
+

+ decompresses images from JPEG XL format into other + formats +

+
+

+ jxlinfo +

+
+

+ displays information about JPEG XL images +

+
+

+ libjxl.so +

+
+

+ contains the reference implementation of the JPEG + XL standard +

+
+

+ libjxl_cms.so +

+
+

+ contains support for Little CMS in libjxl +

+
+

+ libjxl_extras_codec.so +

+
+

+ contains additional codec support for JPEG XL + images +

+
+

+ libjxl_jni.so +

+
+

+ contains a Java interface to support JPEG XL on + systems where Java-24.0.2 was installed at + build time +

+
+

+ libjxl_threads.so +

+
+

+ contains threading functions for JPEG XL +

+
+

+ libpixbufloader-jxl.so +

+
+

+ contains a loader for gdk-pixbuf to allow it to + load JPEG XL images +

+
+
+
+
+
+
+
+

+ libmng-2.0.3 +

+
+
+
+
+
+

+ Introduction to libmng +

+

+ The libmng libraries are + used by programs wanting to read and write Multiple-image + Network Graphics (MNG) files which are the animation + equivalents to PNG files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libmng Dependencies +

+
+ Required +
+

+ libjpeg-turbo-3.0.1 and Little + CMS-2.17 +

+
+
+

+ Installation of libmng +

+

+ Install libmng by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -m755 -d        /usr/share/doc/libmng-2.0.3 &&
+install -v -m644 doc/*.txt /usr/share/doc/libmng-2.0.3
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libmng.so +
+
+ Installed Directory: + /usr/share/doc/libmng-2.0.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmng.so +

+
+

+ provides functions for programs wishing to read and + write MNG files which are animation files without + the patent problems associated with certain other + formats +

+
+
+
+
+
+
+
+

+ libmypaint-1.6.1 +

+
+
+
+
+
+

+ Introduction to libmypaint +

+

+ The libmypaint package, + a.k.a. "brushlib", is a library for making brushstrokes which + is used by MyPaint and other projects. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libmypaint Dependencies +

+
+ Required +
+

+ JSON-C-0.18 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 (to create XML docs), + gegl (0.3 versions + only) and gperftools +

+
+
+

+ Installation of libmypaint +

+

+ Install libmypaint by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None. +
+
+ Installed Libraries: + libmypaint.so (and optionally + libmypaint-gegl.so which is not used by any packages in + this book). +
+
+ Installed Directory: + /usr/include/libmypaint +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmypaint.so +

+
+

+ contains functions for making brushstrokes +

+
+
+
+
+
+
+
+

+ libpng-1.6.50 +

+
+
+
+
+
+

+ Introduction to libpng +

+

+ The libpng package contains + libraries used by other programs for reading and writing PNG + files. The PNG format was designed as a replacement for GIF + and, to a lesser extent, TIFF, with many improvements and + extensions and lack of patent problems. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+
+
+

+ Installation of libpng +

+

+ If you want to patch libpng to support apng files, apply it + here: +

+
gzip -cd ../libpng-1.6.47-apng.patch.gz | patch -p1
+

+ Install libpng by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+mkdir -v /usr/share/doc/libpng-1.6.50 &&
+cp -v README libpng-manual.txt /usr/share/doc/libpng-1.6.50
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + libpng-config (symlink), + libpng16-config, pngfix and png-fix-itxt +
+
+ Installed Libraries: + libpng.so +
+
+ Installed Directories: + /usr/include/libpng16 and + /usr/share/doc/libpng-1.6.50 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ pngfix +

+
+

+ tests, optimizes and optionally fixes the zlib + header in PNG files. Optionally, when fixing, + strips ancillary chunks from the file +

+
+

+ png-fix-itxt +

+
+

+ fixes PNG files that have an incorrect length field + in the iTXt chunks +

+
+

+ libpng-config +

+
+

+ is a shell script that provides configuration + information for applications wanting to use + libpng +

+
+

+ libpng.so +

+
+

+ contain routines used to create and manipulate PNG + format graphics files +

+
+
+
+
+
+
+
+

+ libqrencode-4.1.1 +

+
+
+
+
+
+

+ Introduction to libqrencode +

+

+ The libqrencode package + provides a fast and compact library for encoding data in a QR + Code symbol, a 2D symbology that can be scanned by handheld + terminals such as a mobile phone with a CCD sensor. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libqrencode Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 for generating + documentation, and SDL2-2.32.8 for tests +

+
+
+

+ Installation of libqrencode +

+

+ Install libqrencode by + running the following commands: +

+
sh autogen.sh             &&
+./configure --prefix=/usr &&
+make
+

+ If you have installed Doxygen-1.14.0, you can build the + documentation by issuing: +

+
doxygen
+

+ The tests must be run after installing the package. +

+

+ Now, as the root user: +

+
make install
+

+ If you have built the optional documentation, install it as + the root user: +

+
install -vdm 755 /usr/share/doc/libqrencode-4.1.1 &&
+mv html/*        /usr/share/doc/libqrencode-4.1.1
+

+ To test the results, if you have passed the --with-tests option to configure, issue: + make check. +

+
+
+

+ Command Explanations +

+

+ --with-tests: This option allows + building the test programs. It requires SDL2-2.32.8. +

+

+ --without-tools: This option + prevents building the qrencode executable, + removing the need for libpng-1.6.50. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + qrencode +
+
+ Installed Library: + libqrencode.so +
+
+ Installed Directory: + /usr/share/doc/qrencode-4.1.1 + (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ qrencode +

+
+

+ encodes input data in a QR Code and saves it as a + PNG or EPS image +

+
+

+ libqrencode.so +

+
+

+ contains functions for encoding data in a QR code + symbol +

+
+
+
+
+
+
+
+

+ libraw-0.21.4 +

+
+
+
+
+
+

+ Introduction to libraw +

+

+ Libraw is a library for + reading RAW files obtained from digital cameras (CRW/CR2, + NEF, RAF, DNG, and others). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.libraw.org/data/LibRaw-0.21.4.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 26e046621c38c10f56c195dfd29a5661 +

    +
  • +
  • +

    + Download size: 1.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 27 MB +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (Using parallelism=4) +

    +
  • +
+
+

+ libraw Dependencies +

+
+ Recommended +
+ +
+
+

+ Installation of libraw +

+

+ Install libraw by running + the following commands: +

+
./configure --prefix=/usr    \
+            --enable-jpeg    \
+            --enable-jasper  \
+            --enable-lcms    \
+            --disable-static \
+            --docdir=/usr/share/doc/libraw-0.21.4 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-jpeg: This + switch enables support for JPEG images. Remove it if you + don't have libjpeg-turbo-3.0.1 installed. +

+

+ --enable-jasper: This + switch enables support for JPEG2000 images. Remove it if you + don't have jasper-4.2.8 installed. +

+

+ --enable-lcms: This + switch enables support for color management. Remove it if you + don't have Little CMS-2.17 installed. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+

+ Note +

+

+ All of the installed programs are examples of using libraw. +

+
+
+
+
+ Installed Programs: + 4channels, dcraw_emu, dcraw_half, + half_mt, mem_image, multirender_test, + postprocessing_benchmark, raw-identify, simple_dcraw, and + unprocessed_raw +
+
+ Installed Library: + libraw.so and libraw_r.so +
+
+ Installed Directories: + /usr/include/libraw and + /usr/share/doc/libraw-0.21.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ 4channels +

+
+

+ generates four TIFF files from RAW data, with one + file per channel +

+
+

+ dcraw_half +

+
+

+ emulates running "dcraw -h" (see DCRAW + manpage) +

+
+

+ mem_image +

+
+

+ emulates running "dcraw [-4] [-6] [-e]" (see + DCRAW + manpage) +

+
+

+ postprocessing_benchmark +

+
+

+ creates eight different renderings from one source + file. The first and fourth one should be identical +

+
+

+ simple_dcraw +

+
+

+ emulates running "dcraw [-D] [-T] [-v] [-e] [-4]" + (see DCRAW + manpage) +

+
+

+ dcraw_emu +

+
+

+ is an almost complete dcraw emulator (see DCRAW + manpage) +

+
+

+ half_mt +

+
+

+ emulates running "dcraw -h [-w] [-a] [-v]" (see + DCRAW + manpage) +

+
+

+ multirender_test +

+
+

+ creates eight different renderings from one source + file. The first and fourth one should be identical +

+
+

+ raw-identify +

+
+

+ emulates running "dcraw -i [-v]" (see DCRAW + manpage) +

+
+

+ unprocessed_raw +

+
+

+ generates an unprocessed raw image (with masked + pixels and without black subtraction) +

+
+

+ libraw.so +

+
+

+ contains functions used for parsing, editing, and + saving RAW image data. +

+
+
+
+
+
+
+
+

+ librsvg-2.61.0 +

+
+
+
+
+
+

+ Introduction to librsvg +

+

+ The librsvg package contains + a library and tools used to manipulate, convert and view + Scalable Vector Graphic (SVG) images. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/librsvg/2.61/librsvg-2.61.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 7ed4ffdee87e0d7f356fedfea77744ca +

    +
  • +
  • +

    + Download size: 6.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 1.1 GB (17 MB installed; + add 385 MB for tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (add 0.3 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ librsvg Dependencies +

+
+ Required +
+

+ Cairo-1.18.4, cargo-c-0.10.15, + gdk-pixbuf-2.42.12, and Pango-1.56.4 +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+ Recommended +
+ +
+ Optional +
+

+ docutils-0.21.2 (for man pages), + Gi-DocGen-2025.4 (for documentation), + and Xorg Fonts (for tests) +

+
+
+

+ Installation of librsvg +

+

+ First, fix the installation path of the API documentation: +

+
sed -e "/OUTDIR/s|,| / 'librsvg-2.61.0', '--no-namespace-dir',|" \
+    -e '/output/s|Rsvg-2.0|librsvg-2.61.0|'                      \
+    -i doc/meson.build
+

+ Install librsvg by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: +

+
ninja test
+

+ One test, Rust tests (rsvg), is known to fail. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + rsvg-convert +
+
+ Installed Library: + librsvg-2.so and + libpixbufloader-svg.so (installed in + /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders) +
+
+ Installed Directories: + /usr/include/librsvg-2.0 and + /usr/share/doc/librsvg-2.61.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ rsvg-convert +

+
+

+ is used to convert images into PNG, PDF, PS, SVG + and other formats +

+
+

+ librsvg-2.so +

+
+

+ provides the functions to render Scalable Vector + Graphics +

+
+

+ libpixbufloader-svg.so +

+
+

+ is the Gdk Pixbuf + plugin that allows GTK+ applications to render + Scalable Vector Graphics images +

+
+
+
+
+
+
+
+

+ Libspiro-20220722 +

+
+
+
+
+
+

+ Introduction to libspiro +

+

+ Libspiro will take an array + of spiro control points and convert them into a series of + bezier splines which can then be used in the myriad of ways + the world has come to use beziers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of libspiro +

+

+ Install libspiro by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libspiro.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libspiro.so +

+
+

+ is a shareable library that can be used by programs + to do the Spiro computations for you +

+
+
+
+
+
+
+
+

+ libtiff-4.7.0 +

+
+
+
+
+
+

+ Introduction to libtiff +

+

+ The libtiff package contains + the TIFF libraries and associated utilities. The libraries + are used by many programs for reading and writing TIFF files + and the utilities are used for general work with TIFF files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://download.osgeo.org/libtiff/tiff-4.7.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 3a0fa4a270a4a192b08913f88d0cfbdd +

    +
  • +
  • +

    + Download size: 3.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 60 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests) +

    +
  • +
+
+

+ libtiff Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Freeglut-3.6.0 (required for + tiffgt), + libjpeg-turbo-3.0.1, sphinx-8.2.3, + libwebp-1.6.0, JBIG-KIT, and + + LERC +

+
+
+

+ Installation of libtiff +

+

+ Install libtiff by running + the following commands: +

+
mkdir -p libtiff-build &&
+cd       libtiff-build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr ..     \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -G Ninja                            \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/libtiff-4.7.0 &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fax2ps, fax2tiff, pal2rgb, + ppm2tiff, raw2tiff, tiff2bw, tiff2pdf, tiff2ps, + tiff2rgba, tiffcmp, tiffcp, tiffcrop, tiffdither, + tiffdump, tiffgt, tiffinfo, tiffmedian, tiffset, and + tiffsplit +
+
+ Installed Libraries: + libtiff.so and libtiffxx.so +
+
+ Installed Directory: + /usr/lib/cmake/tiff and + /usr/share/doc/tiff-4.7.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fax2ps +

+
+

+ converts a TIFF facsimile to compressed PostScript + file +

+
+

+ fax2tiff +

+
+

+ creates a TIFF Class F fax file from raw fax data +

+
+

+ pal2rgb +

+
+

+ converts a palette color TIFF image to a full color + image +

+
+

+ ppm2tiff +

+
+

+ creates a TIFF file from a PPM image file +

+
+

+ raw2tiff +

+
+

+ converts a raw byte sequence into TIFF +

+
+

+ tiff2bw +

+
+

+ converts a color TIFF image to grayscale +

+
+

+ tiff2pdf +

+
+

+ converts a TIFF image to a PDF document +

+
+

+ tiff2ps +

+
+

+ converts a TIFF image to a PostScript file +

+
+

+ tiff2rgba +

+
+

+ converts a wide variety of TIFF images into an RGBA + TIFF image +

+
+

+ tiffcmp +

+
+

+ compares two TIFF files +

+
+

+ tiffcp +

+
+

+ copies (and possibly converts) a TIFF file +

+
+

+ tiffcrop +

+
+

+ selects, copies, crops, converts, extracts and/or + processes one or more TIFF files +

+
+

+ tiffdither +

+
+

+ converts a grayscale image to bilevel using + dithering +

+
+

+ tiffdump +

+
+

+ prints verbatim information about TIFF files +

+
+

+ tiffgt +

+
+

+ displays an image stored in a TIFF file +

+
+

+ tiffinfo +

+
+

+ prints information about TIFF files +

+
+

+ tiffmedian +

+
+

+ applies the median cut algorithm to data in a TIFF + file +

+
+

+ tiffset +

+
+

+ sets the value of a TIFF header to a specified + value +

+
+

+ tiffsplit +

+
+

+ splits a multi-image TIFF into single-image TIFF + files +

+
+

+ libtiff.so +

+
+

+ contains the API functions used by the libtiff programs as well as + other programs to read and write TIFF files +

+
+

+ libtiffxx.so +

+
+

+ contains the C++ API functions used by programs to + read and write TIFF files +

+
+
+
+
+
+
+
+

+ libwebp-1.6.0 +

+
+
+
+
+
+

+ Introduction to libwebp +

+

+ The libwebp package contains + a library and support programs to encode and decode images in + WebP format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libwebp Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Freeglut-3.6.0 and giflib-5.2.2 +

+
+
+

+ Installation of libwebp +

+

+ Install libwebp by running + the following commands: +

+
./configure --prefix=/usr           \
+            --enable-libwebpmux     \
+            --enable-libwebpdemux   \
+            --enable-libwebpdecoder \
+            --enable-libwebpextras  \
+            --enable-swap-16bit-csp \
+            --disable-static        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-swap-16bit-csp: This + switch enables byte swap for 16 bit colorspaces. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cwebp, dwebp, gif2webp, img2webp, + vwebp, webpinfo, and webpmux +
+
+ Installed Library: + libsharpyuv.so, libwebpdecoder.so, + libwebpdemux.so, libwebpmux.so, and libwebp.so +
+
+ Installed Directory: + /usr/include/webp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cwebp +

+
+

+ compresses an image using the WebP format +

+
+

+ dwebp +

+
+

+ decompresses WebP files into PNG, PAM, PPM or PGM + images +

+
+

+ gif2webp +

+
+

+ converts a GIF image to a WebP image +

+
+

+ img2webp +

+
+

+ creates an animated WebP file from a sequence of + input images +

+
+

+ vwebp +

+
+

+ decompresses a WebP file and displays it in a + window +

+
+

+ webpinfo +

+
+

+ prints out the cunk level structure of WebP files + along with performing basic integrity checks +

+
+

+ webpmux +

+
+

+ creates animated WebP files from non-animated WebP + images, extracts frames from animated WebP images, + and manages XMP/EXIF metadata and the ICC profile +

+
+

+ libwebp.so +

+
+

+ contains the API functions for WebP encoding and + decoding +

+
+
+
+
+
+
+
+

+ mypaint-brushes-1.3.1 +

+
+
+
+
+
+

+ Introduction to mypaint-brushes +

+

+ The mypaint-brushes package + contains brushes used by packages which use libmypaint. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ mypaint-brushes Dependencies +

+
+ Required at runtime +
+

+ libmypaint-1.6.1 +

+
+
+

+ Installation of mypaint-brushes +

+

+ Install mypaint-brushes by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None. +
+
+ Installed Libraries: + None. +
+
+ Installed Directories: + /usr/share/mypaint-data. +
+
+
+
+
+
+
+
+

+ newt-0.52.25 +

+
+
+
+
+
+

+ Introduction to newt +

+

+ Newt is a programming + library for color text mode, widget based user interfaces. It + can be used to add stacked windows, entry widgets, + checkboxes, radio buttons, labels, plain text fields, + scrollbars, etc., to text mode user interfaces. Newt is based on the S-Lang library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://releases.pagure.org/newt/newt-0.52.25.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: cca66ed1d8774fb9e3f6a33525de416d +

    +
  • +
  • +

    + Download size: 176 KB +

    +
  • +
  • +

    + Estimated disk space required: 3.0 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ Newt + Dependencies +

+
+ Required +
+

+ popt-1.19 + and slang-2.3.3 +

+
+ Recommended +
+ +
+
+

+ Installation of newt +

+

+ Install newt by running the + following command: +

+
sed -e '/install -m 644 $(LIBNEWT)/ s/^/#/' \
+    -e '/$(LIBNEWT):/,/rv/ s/^/#/'          \
+    -e 's/$(LIBNEWT)/$(LIBNEWTSH)/g'        \
+    -i Makefile.in                          &&
+
+./configure --prefix=/usr      \
+            --with-gpm-support \
+            --with-python=python3.13 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -e ... -i + Makefile.in: Disables installation of a + static library. +

+

+ --with-gpm-support: + This switch enables mouse support for newt applications + through GPM. +

+

+ --with-python=python3.13: By + giving explicitly the name of the directory where python + modules reside, this switch prevents building the python2 + module. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + whiptail +
+
+ Installed Library: + libnewt.so, whiptcl.so, and + /usr/lib/python3.13/site-packages/_snack.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ whiptail +

+
+

+ displays dialog boxes from shell scripts +

+
+

+ libnewt.so +

+
+

+ is the library for color text mode, widget based + user interfaces +

+
+
+
+
+
+
+
+

+ opencv-4.12.0 +

+
+
+
+
+
+

+ Introduction to opencv +

+

+ The opencv package contains + graphics libraries mainly aimed at real-time computer vision. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+
+

+ Note +

+

+ One additional file that starts with "ippicv" (integrated + performance primitives) will be automatically downloaded + during the cmake portion of the build procedure. This + download is specific to the system architecture. +

+
+

+ opencv Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and libarchive-3.8.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ apache-ant-1.10.15, Doxygen-1.14.0, + Java-24.0.2, NumPy-2.3.2, Protobuf-32.0, + ATLAS, blas, + Cuda, Eigen, + OpenEXR, + GDAL, + lapack, libdc1394, + Threading Building + Blocks (TBB), and VTK - The Visualization Toolkit, +

+
+
+

+ Installation of opencv +

+

+ If you downloaded the optional modules, unpack them now: +

+
tar -xf ../opencv_contrib-4.12.0.tar.gz
+

+ Install opencv by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D ENABLE_CXX11=ON                  \
+      -D BUILD_PERF_TESTS=OFF             \
+      -D WITH_XINE=ON                     \
+      -D BUILD_TESTS=OFF                  \
+      -D ENABLE_PRECOMPILED_HEADERS=OFF   \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON      \
+      -D BUILD_WITH_DEBUG_INFO=OFF        \
+      -D OPENCV_GENERATE_PKGCONFIG=ON     \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -W no-dev  ..                       &&
+make
+

+ The package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D WITH_XINE=ON: This + switch instructs the make procedure to use xine-lib-1.2.13. +

+

+ -D + ENABLE_PRECOMPILED_HEADERS=OFF: This switch is + needed for compatibility with gcc-6.1 and later. +

+

+ -D + OPENCV_GENERATE_PKGCONFIG=ON: This switch tells + the build system to generate a pkg-config file for other + packages to detect and link to the libraries installed by + this package. +

+

+ -D + OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.12.0/modules: + instructs the build system to build additional modules. Some + packages in BLFS (such as gst-plugins-bad-1.26.5) need + these modules to build components that use OpenCV. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + opencv_annotation, + opencv_interactive-calibration, opencv_model_diagnostics, + opencv_version, opencv_visualisation, + opencv_waldboost_detector, and + setup_vars_opencv4.sh +
+
+ Installed Libraries: + libopencv_aruco.so, + libopencv_bgsegm.so, libopencv_bioinspired.so, + libopencv_calib3d.so, libopencv_ccalib.so, + libopencv_core.so, libopencv_datasets.so, + libopencv_dnn_objdetect.so, libopencv_dnn.so, + libopencv_dnn_superres.so, libopencv_dpm.so, + libopencv_face.so, libopencv_features2d.so, + libopencv_flann.so, libopencv_freetype.so, + libopencv_gapi.so, libopencv_hfs.so, + libopencv_highgui.so, libopencv_imgcodecs.so, + libopencv_img_hash.so, libopencv_imgproc.so, + libopencv_intensity_transform.so, + libopencv_line_descriptor.so, libopencv_mcc.so, + libopencv_ml.so, libopencv_objdetect.so, + libopencv_optflow.so, libopencv_phase_unwrapping.so, + libopencv_photo.so, libopencv_plot.so, + libopencv_quality.so, libopencv_rapid.so, + libopencv_reg.so, libopencv_rgbd.so, + libopencv_saliency.so, libopencv_shape.so, + libopencv_signal.so, libopencv_stereo.so, + libopencv_stitching.so, libopencv_structured_light.so, + libopencv_superres.so, libopencv_surface_matching.so, + libopencv_text.so, libopenct_tracking.so, + libopencv_video.so, libopencv_videoio.so, + libopencv_videostage.so, libopencv_wechat_qrcode.so, + libopencv_xfeatures2d.so, libopencv_ximgproc.so, + libopencv_xobjdetect.so, and libopencv_xphoto.so +
+
+ Installed Directories: + /usr/include/opencv4, + /usr/lib/cmake/opencv4, + /usr/lib/python3.13/site-packages/cv2, + /usr/share/licenses/opencv4, /usr/share/opencv4, and + /usr/share/java/opencv4 +
+
+
+
+
+
+
+
+

+ OpenJPEG-2.5.3 +

+
+
+
+
+
+

+ Introduction to OpenJPEG +

+

+ OpenJPEG is an open-source + implementation of the JPEG-2000 standard. OpenJPEG fully + respects the JPEG-2000 specifications and can + compress/decompress lossless 16-bit images. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ OpenJPEG Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ git-2.50.1 + (for tests), Little CMS-2.17, libpng-1.6.50, libtiff-4.7.0, and Doxygen-1.14.0 (to + build the API documentation) +

+
+
+

+ Installation of OpenJPEG +

+

+ Install OpenJPEG by running + the following commands: +

+
mkdir -v build &&
+cd       build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      -D BUILD_STATIC_LIBS=OFF ..  &&
+make
+

+ If you wish to run the tests, some additional files are + required. Download these files and run the tests using the + following commands, but note that 8 tests are known to fail: +

+
git clone https://github.com/uclouvain/openjpeg-data.git --depth 1 &&
+OPJ_DATA_ROOT=$PWD/openjpeg-data cmake -D BUILD_TESTING=ON ..      &&
+make                                                               &&
+make test
+

+ Now, as the root user: +

+
make install &&
+cp -rv ../doc/man -T /usr/share/man
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + opj_compress, opj_decompress, and + opj_dump +
+
+ Installed Libraries: + libopenjp2.so +
+
+ Installed Directories: + /usr/include/openjpeg-2.5 and + /usr/lib/openjpeg-2.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ opj_compress +

+
+

+ converts various image formats to the jpeg2000 + format +

+
+

+ opj_decompress +

+
+

+ converts jpeg2000 images to other image types +

+
+

+ opj_dump +

+
+

+ reads in a jpeg2000 image and dumps the contents to + stdout +

+
+
+
+
+
+
+
+

+ Pixman-0.46.4 +

+
+
+
+
+
+

+ Introduction to Pixman +

+

+ The Pixman package contains + a library that provides low-level pixel manipulation features + such as image compositing and trapezoid rasterization. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.cairographics.org/releases/pixman-0.46.4.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: c08173c8e1d2cc79428d931c13ffda59 +

    +
  • +
  • +

    + Download size: 808 KB +

    +
  • +
  • +

    + Estimated disk space required: 28 MB (With tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (Using parallelism=4; + with tests) +

    +
  • +
+
+

+ Pixman Dependencies +

+
+ Optional +
+

+ libpng-1.6.50 and GTK-3.24.50 (for tests and + demos) +

+
+
+

+ Installation of Pixman +

+

+ Install Pixman by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libpixman-1.so +
+
+ Installed Directory: + /usr/include/pixman-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpixman-1.so +

+
+

+ contains functions that provide low-level pixel + manipulation features +

+
+
+
+
+
+
+
+

+ Poppler-25.08.0 +

+
+
+
+
+
+

+ Introduction to Poppler +

+

+ The Poppler package contains + a PDF rendering library and command line tools used to + manipulate PDF files. This is useful for providing PDF + rendering functionality as a shared library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://poppler.freedesktop.org/poppler-25.08.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 580516efcd6b6d9f06961c6c2ff334da +

    +
  • +
  • +

    + Download size: 1.9 MB +

    +
  • +
  • +

    + Estimated disk space required: 79 MB (with Qt6 library + and tests) +

    +
  • +
  • +

    + Estimated build time: 1.0 SBU (with parallelism=4, + tests, and Qt6 library) +

    +
  • +
+
+

+ Additional Downloads +

+
+

+ Poppler Encoding Data +

+ +
+

+ The additional package consists of encoding files for use + with Poppler. The encoding + files are optional and Poppler will automatically read them if + they are present. When installed, they enable Poppler to render CJK and Cyrillic + properly. +

+

+ Poppler Dependencies +

+
+ Required +
+

+ CMake-4.1.0, Fontconfig-2.17.1, and GLib-2.84.4 + (with GObject Introspection) +

+
+ Recommended +
+ +
+ Optional +
+

+ cURL-8.15.0, gdk-pixbuf-2.42.12, git-2.50.1 (for + downloading test files), GTK-Doc-1.34.0 and GTK-3.24.50 +

+
+
+

+ Installation of Poppler +

+

+ Now, install Poppler by + running the following commands: +

+
mkdir build                         &&
+cd    build                         &&
+
+cmake -D CMAKE_BUILD_TYPE=Release   \
+      -D CMAKE_INSTALL_PREFIX=/usr  \
+      -D TESTDATADIR=$PWD/testfiles \
+      -D ENABLE_QT5=OFF             \
+      -D ENABLE_UNSTABLE_API_ABI_HEADERS=ON \
+      -G Ninja ..                   &&
+ninja
+

+ In order to run the test suite, some testcases are needed and + can be obtained only from a git repository. The command to + download them is: git clone + --depth 1 https://gitlab.freedesktop.org/poppler/test.git + testfiles. Then issue: LC_ALL=en_US.UTF-8 ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+

+ To install the documentation, run the following commands as + root: +

+
install -v -m755 -d           /usr/share/doc/poppler-25.08.0 &&
+cp -vr ../glib/reference/html /usr/share/doc/poppler-25.08.0
+

+ Poppler Data +

+

+ If you downloaded the additional encoding data package, + install it by issuing the following commands: +

+
tar -xf ../../poppler-data-0.4.12.tar.gz &&
+cd poppler-data-0.4.12
+

+ Now, as the root user: +

+
make prefix=/usr install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply a higher level of compiler optimizations. +

+

+ -D + TESTDATADIR=$PWD/testfiles: Tells the test + programs where the auxiliary files are located. +

+

+ -D ENABLE_QT5=OFF: + This switch is needed to prevent an error when Qt5 is not + installed. +

+

+ -D + ENABLE_UNSTABLE_API_ABI_HEADERS=ON: Installs some + old Xpdf headers required by + certain programs. +

+

+ -D ENABLE_GTK_DOC=ON: Use this + parameter if GTK-Doc is installed and you wish to rebuild and + install the API documentation. +

+

+ -D ENABLE_QT6=OFF: Use this + parameter if Qt-6.9.2 is not installed. +

+

+ -D ENABLE_BOOST=OFF: Use this + parameter if you have not installed boost (the Splash backend for Qt6 + recommends boost). +

+

+ -D ENABLE_NSS3=OFF: Use this + parameter if you have not installed nss. +

+

+ -D ENABLE_GPGME=OFF: Use this + parameter if you have not installed gpgme. +

+

+ -D ENABLE_LIBTIFF=OFF: Use this + parameter if you have not installed libtiff. +

+

+ LC_ALL=en_US.UTF-8 ninja + test: Runs the test suite. The environment + variable LC_ALL=en_US.UTF-8 is only needed if the default + locale does not include UTF-8. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pdfattach, pdfdetach, pdffonts, + pdfimages, pdfinfo, pdfseparate, pdfsig, pdftocairo, + pdftohtml, pdftoppm, pdftops, pdftotext, and + pdfunite +
+
+ Installed Libraries: + libpoppler.so, libpoppler-cpp.so, + libpoppler-glib.so, and (optionally) + libpoppler-qt6.so +
+
+ Installed Directories: + /usr/include/poppler, + /usr/share/poppler, and + /usr/share/doc/poppler-25.08.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ pdfattach +

+
+

+ adds a new embedded file to an existing PDF file +

+
+

+ pdfdetach +

+
+

+ lists or extracts embedded files from PDF files +

+
+

+ pdffonts +

+
+

+ lists the fonts used in a PDF file along with + various information for each font +

+
+

+ pdfimages +

+
+

+ saves images from a PDF file as PPM, PBM, or JPEG + files +

+
+

+ pdfinfo +

+
+

+ prints the contents of the 'Info' dictionary (plus + some other useful information) from a PDF file +

+
+

+ pdfseparate +

+
+

+ extracts single pages from a PDF file +

+
+

+ pdfsig +

+
+

+ verifies the digital signatures in a PDF document +

+
+

+ pdftocairo +

+
+

+ converts a PDF file to one of several formats (PNG, + JPEG, PDF, PS, EPS, SVG) using the cairo output + device of the poppler library +

+
+

+ pdftohtml +

+
+

+ converts a PDF file to HTML +

+
+

+ pdftoppm +

+
+

+ converts PDF files to PBM, PGM and PPM formats +

+
+

+ pdftops +

+
+

+ converts PDF files to Postscript format +

+
+

+ pdftotext +

+
+

+ converts PDF files to plain text +

+
+

+ pdfunite +

+
+

+ merges several PDF files, in the order of their + occurrence on the command line, to one PDF output + file +

+
+

+ libpoppler.so +

+
+

+ contains the API functions to render PDF files +

+
+

+ libpoppler-cpp.so +

+
+

+ is a C++ backend for rendering PDF files +

+
+

+ libpoppler-glib.so +

+
+

+ is a wrapper library used to interface the PDF + rendering functions with GTK+ +

+
+

+ libpoppler-qt6.so +

+
+

+ is a wrapper library used to interface the PDF + rendering functions with Qt6 +

+
+
+
+
+
+
+
+

+ Potrace-1.16 +

+
+
+
+
+
+

+ Introduction to Potrace +

+

+ Potrace™ is a tool for + transforming a bitmap (PBM, PGM, PPM, or BMP format) into one + of several vector file formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.sourceforge.net/potrace/potrace-1.16.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 5f0bd87ddd9a620b0c4e65652ef93d69 +

    +
  • +
  • +

    + Download size: 644 KB +

    +
  • +
  • +

    + Estimated disk space required: 7.1 MB (including tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (including + tests) +

    +
  • +
+
+

+ Potrace Dependencies +

+
+ Recommended +
+ +
+
+

+ Installation of Potrace +

+

+ Install Potrace by running + the following commands: +

+
./configure --prefix=/usr                        \
+            --disable-static                     \
+            --docdir=/usr/share/doc/potrace-1.16 \
+            --enable-a4                          \
+            --enable-metric                      \
+            --with-libpotrace                    &&
+make
+

+ To run the test suite, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-a4: Use A4 + as the default paper size. +

+

+ --enable-metric: Use + metric units (centimeters) as default +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-libpotrace: + Install the library and headers. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mkbitmap, potrace +
+
+ Installed Libraries: + libpotrace.so +
+
+ Installed Directories: + /usr/share/doc/potrace-1.16 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ mkbitmap +

+
+

+ transforms images into bitmaps with scaling and + filtering +

+
+

+ potrace +

+
+

+ transforms bitmaps into vector graphics +

+
+

+ libpotrace.so +

+
+

+ is a library for transforming bitmaps into vector + graphics +

+
+
+
+
+
+
+
+

+ Qpdf-12.2.0 +

+
+
+
+
+
+

+ Introduction to Qpdf +

+

+ The Qpdf package contains + command-line programs and a library that does structural, + content-preserving transformations on PDF files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Qpdf + Dependencies +

+
+ Required +
+

+ libjpeg-turbo-3.0.1 +

+
+ Optional +
+

+ ghostscript-10.05.1, GnuTLS-3.8.10, libtiff-4.7.0, sphinx-8.2.3 + with sphinx_rtd_theme-3.0.2, and + texlive-20250308 or install-tl-unx +

+
+
+

+ Installation of Qpdf +

+

+ Install Qpdf by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_STATIC_LIBS=OFF     \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/qpdf-12.2.0 \
+      .. &&
+make
+

+ To test the results, issue: ctest. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fix-qdf, qpdf, and + zlib-flate +
+
+ Installed Library: + libqpdf.so +
+
+ Installed Directories: + /usr/lib/cmake/qpdf, + /usr/include/qpdf, and /usr/share/doc/qpdf-12.2.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ fix-qdf +

+
+

+ is used to repair PDF files in QDF form after + editing +

+
+

+ qpdf +

+
+

+ is used to convert one PDF file to another + equivalent PDF file +

+
+

+ zlib-flate +

+
+

+ is a raw zlib compression program +

+
+

+ libqpdf.so +

+
+

+ contains the Qpdf + API functions +

+
+
+
+
+
+
+
+

+ sassc-3.6.2 +

+
+
+
+
+
+

+ Introduction to sassc +

+

+ SassC is a wrapper around libsass, a CSS pre-processor + language. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+
+
+

+ Installation of sassc +

+

+ First, build the library: +

+
tar -xf ../libsass-3.6.6.tar.gz &&
+pushd libsass-3.6.6 &&
+
+autoreconf -fi &&
+
+./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ Build the command line wrapper: +

+
popd &&
+autoreconf -fi &&
+
+./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sassc +
+
+ Installed Libraries: + libsass.so +
+
+ Installed Directories: + /usr/include/sass +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ sassc +

+
+

+ provides a command line interface to the libsass + library +

+
+
+
+
+
+
+
+

+ webp-pixbuf-loader-0.2.7 +

+
+
+
+
+
+

+ Introduction to webp-pixbuf-loader +

+

+ The webp-pixbuf-loader + package contains a library that allows gdk-pixbuf to load and + process webp images. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ webp-pixbuf-loader Dependencies +

+
+ Required +
+

+ gdk-pixbuf-2.42.12 and libwebp-1.6.0 +

+
+
+

+ Installation of webp-pixbuf-loader +

+

+ Install webp-pixbuf-loader + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+

+ The webp format needs to be added to the loaders cache: +

+
gdk-pixbuf-query-loaders --update-cache
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ gdk-pixbuf-query-loaders + --update-cache: This command updates the + gdk-pixbuf loader cache so that it knows the webp loader has + been installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libpixbufloader-webp.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpixbufloader-webp.so +

+
+

+ contains functions that allow gdk-pixbuf to load + webp images +

+
+
+
+
+
+
+
+

+ woff2-1.0.2 +

+
+
+
+
+
+

+ Introduction to WOFF2 +

+

+ WOFF2 is a library for + converting fonts from the TTF format to the WOFF 2.0 format. + It also allows decompression from WOFF 2.0 to TTF. The WOFF + 2.0 format uses the Brotli compression algorithm to compress + fonts suitable for downloading in CSS @font-face rules. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ WOFF2 Dependencies +

+
+ Required +
+

+ Brotli-1.1.0 and CMake-4.1.0 +

+
+
+

+ Installation of WOFF2 +

+

+ First, fix a problem when building with gcc-15: +

+
sed -i '/output.h/i #include <cstdint>' src/woff2_out.cc
+

+ Install WOFF2 by running the + following commands: +

+
mkdir out                                 &&
+cd    out                                 &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON ..   &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libwoff2common.so, libwoff2dec.so + and libwoff2enc.so +
+
+ Installed Directory: + /usr/include/woff2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libwoff2common.so +

+
+

+ provides shared data used by the libwoff2dec and + libwoff2enc libraries +

+
+

+ libwoff2dec.so +

+
+

+ is the WOFF2 decoder library +

+
+

+ libwoff2enc.so +

+
+

+ is the WOFF2 encoder library +

+
+
+
+
+
+
+
+

+ zxing-cpp-2.3.0 +

+
+
+
+
+
+

+ Introduction to zxing-cpp +

+

+ The zxing-cpp package + provides an open-source, multi-format linear/matrix barcode + image processing library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ zxing-cpp dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ googletest +

+
+
+

+ Installation of zxing-cpp +

+

+ Install zxing-cpp by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D ZXING_EXAMPLES=OFF        \
+      -W no-dev ..                 &&
+make
+

+ Tests require an external package. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libZXing.so +
+
+ Installed Directories: + /usr/include/ZXing and + /usr/lib/cmake/ZXing +
+
+
+
+
+
+
+
+
+

+ [1] Pre-built documentation is present in + this tarball. make will detect that + documentation already exists in the distribution if + make clean was + not run, and will not require the xmlto-0.0.29 dependency. + However, running make + clean will result in the pre-built + documentation being deleted, thus requiring xmlto to build the + documentation if make is run afterwards. +

+
+
+
+
+
+
+

+ Chapter 11. General + Utilities +

+
+
+
+
+

+ This chapter contains various utilities that do not fit + conveniently into other chapters. Programs include some + documentation generators, several utilities for manipulating text + and graphics, programs for listing files, a program for entering + PIN numbers and pass-phrases, and a connection manager. +

+
+
+
+

+ Asciidoctor-2.0.23 +

+
+
+
+
+
+

+ Introduction to Asciidoctor +

+

+ Asciidoctor is a fast, open source text processor and + publishing toolchain for converting AsciiDoc content to + HTML5, DocBook, PDF, and other formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Asciidoctor Dependencies +

+
+ Required +
+

+ Ruby-3.4.5 +

+
+
+

+ Installation of Asciidoctor +

+
+

+ Note +

+

+ When building this package, the following message may + appear: +

+
fatal: not a git repository (or any of the parent directories): .git
+

+ . This is normal, and the package will continue building + past this point. +

+
+

+ Build the Ruby gem: +

+
gem build asciidoctor.gemspec
+

+ The test suite needs many Ruby gems beyond the scope of BLFS. +

+

+ Now, as the root user: +

+
gem install asciidoctor-2.0.23.gem &&
+install -vm644 man/asciidoctor.1 /usr/share/man/man1
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + asciidoctor +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/ruby/gems/3.4.0/gems/asciidoctor-2.0.23 + and + /usr/lib/ruby/gems/3.4.0/doc/asciidoctor-2.0.23 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ asciidoctor +

+
+

+ converts AsciiDoc source files to HTML, DocBook, + and other formats +

+
+
+
+
+
+
+
+

+ Bogofilter-1.2.5 +

+
+
+
+
+
+

+ Introduction to Bogofilter +

+

+ The Bogofilter application + is a mail filter that classifies mail as spam or ham + (non-spam) by a statistical analysis of the message's header + and content (body). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Bogofilter Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ lmdb-0.9.33, xmlto-0.0.29, + Berkeley DB (deprecated), QDBM and TokyoCabinet +

+
+

+ Note +

+

+ If you do not install the recommended gsl-2.8 package then a + statically linked shipped version will be used instead. +

+
+
+
+

+ Installation of Bogofilter +

+
+

+ Note +

+

+ If you plan to change the version of your database library + on an existing installation, or to change to a different + database, read the warning at the top of the RELEASE.NOTES + file. +

+
+

+ Install Bogofilter by + running the following commands: +

+
./configure --prefix=/usr                \
+            --sysconfdir=/etc/bogofilter \
+            --with-database=sqlite3      &&
+make
+

+ To test the results, issue make + check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-database=sqlite3: This + switch makes Bogofilter use SQLite-3.50.4 as the database, + instead of Berkeley DB. +

+

+ --with-database={lmdb,qdbm,tokyocabinet}: + This switch also allows to use lmdb, qdbm, or tokyocabinet as + the database. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bf_compact, bf_copy, bf_tar, + bogofilter, bogolexer, bogotune, bogoupgrade and + bogoutil +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/bogofilter +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bf_compact +

+
+

+ creates a more compact bogofilter working directory + with a dump/load cycle +

+
+

+ bf_copy +

+
+

+ copies a bogofilter working directory to another + directory +

+
+

+ bf_tar +

+
+

+ bundles a bogofilter working directory in tar + format and copies it to standard output +

+
+

+ bogofilter +

+
+

+ is a fast Bayesian spam filter +

+
+

+ bogolexer +

+
+

+ is used to separate messages into tokens and to + test new versions of the lexer.l code +

+
+

+ bogotune +

+
+

+ attempts to find optimum parameter settings for + bogofilter +

+
+

+ bogoupgrade +

+
+

+ upgrades the bogofilter database to the current + version +

+
+

+ bogoutil +

+
+

+ dumps, loads, and maintains bogofilter database + files +

+
+
+
+
+
+
+
+

+ Compface-1.5.2 +

+
+
+
+
+
+

+ Introduction to Compface +

+

+ Compface provides utilities + and a library to convert from/to X-Face format, a 48x48 + bitmap format used to carry thumbnails of email authors in a + mail header. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Compface +

+

+ First, fix the configure script so that it's C99 compatible: +

+
autoreconf
+

+ Next, fix a build failure that occurs with GCC 14: +

+
sed -e '/compface.h/a #include <unistd.h>' \
+    -i cmain.c                             \
+    -i uncmain.c
+

+ Install Compface by running + the following commands: +

+
./configure --prefix=/usr --mandir=/usr/share/man &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -m755 -v xbm2xface.pl /usr/bin
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + compface, uncompface and + xbm2xface.pl +
+
+ Installed Library: + libcompface.a +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ compface +

+
+

+ is a filter for generating highly compressed + representations of 48x48x1 face image files +

+
+

+ uncompface +

+
+

+ is an inverse filter which performs an inverse + transformation with no loss of data +

+
+

+ xbm2xface.pl +

+
+

+ is a script to generate xfaces +

+
+

+ libcompface.a +

+
+

+ allows the compression and decompression algorithms + to be used in other programs such as MTAs +

+
+
+
+
+
+
+
+

+ desktop-file-utils-0.28 +

+
+
+
+
+
+

+ Introduction to Desktop File Utils +

+

+ The Desktop File Utils + package contains command line utilities for working with + + Desktop entries. These utilities are used by Desktop + Environments and other applications to manipulate the + MIME-types application databases and help adhere to the + Desktop Entry Specification. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Desktop File Utils Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+ Optional +
+

+ Emacs-30.2 +

+
+
+

+ Installation of Desktop File Utils +

+
+

+ Warning +

+

+ If you are upgrading from a previous version of + desktop-file-utils that used the Autotools method of + installing and configuring the package, you must remove the + desktop-file-edit symlink by using the following commands. +

+
+
rm -fv /usr/bin/desktop-file-edit
+

+ Install Desktop File Utils + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Configuring Desktop File Utils +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The + XDG Base Directory specification defines the standard + locations for applications to place data and configuration + files. These files can be used, for instance, to define the + menu structure and menu items in a desktop environment. +

+

+ The default location for configuration files to be + installed is /etc/xdg, and + the default locations for data files are /usr/local/share and /usr/share. These locations can be + extended with the environment variables XDG_CONFIG_DIRS and XDG_DATA_DIRS, respectively. The + GNOME, KDE and XFCE environments respect these + settings. +

+

+ When a package installs a .desktop file to a location in one of the + base data directories, the database that maps MIME-types to + available applications can be updated. For instance, the + cache file at /usr/share/applications/mimeinfo.cache + can be rebuilt by executing the following command as the + root user: +

+
install -vdm755 /usr/share/applications &&
+update-desktop-database /usr/share/applications
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + desktop-file-edit, + desktop-file-install, desktop-file-validate and + update-desktop-database +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ desktop-file-edit +

+
+

+ is used to modify an existing desktop file entry +

+
+

+ desktop-file-install +

+
+

+ is used to install a new desktop file entry. It is + also used to rebuild or modify the MIME-types + application database +

+
+

+ desktop-file-validate +

+
+

+ is used to verify the integrity of a desktop file +

+
+

+ update-desktop-database +

+
+

+ is used to update the MIME-types application + database +

+
+
+
+
+
+
+
+

+ dos2unix-7.5.2 +

+
+
+
+
+
+

+ Introduction to dos2unix +

+

+ The dos2unix package + contains an any-to-any text format converter. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of dos2unix +

+

+ Build dos2unix by running + the following commands: +

+
make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + dos2unix, mac2unix, unix2dos, and + unix2mac +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/dos2unix-7.5.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ dos2unix +

+
+

+ converts plain text files in DOS format to Unix + format +

+
+

+ mac2unix +

+
+

+ converts plain text files in Mac format to Unix + format +

+
+

+ unix2dos +

+
+

+ converts plain text files in Unix format to DOS + format +

+
+

+ unix2mac +

+
+

+ converts plain text files in Unix format to Mac + format +

+
+
+
+
+
+
+
+

+ glslc from shaderc-2025.3 +

+
+
+
+
+
+

+ Introduction to glslc +

+

+ The glslc program is + Google's command line compiler for OpenGL Shading + Language/High Level Shading Language (GLSL/HLSL) to Standard + Portable Intermediate Representation (SPIR-V). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Glslc Dependencies +

+
+ Required +
+

+ CMake-4.1.0, Glslang-15.4.0, and + SPIRV-Tools-1.4.321.0 +

+
+
+

+ Installation of glslc +

+

+ First, allow building with system Glslang-15.4.0 and + SPIRV-Tools-1.4.321.0: +

+
sed '/build-version/d'   -i glslc/CMakeLists.txt            &&
+sed '/third_party/d'     -i CMakeLists.txt                  &&
+sed 's|SPIRV|glslang/&|' -i libshaderc_util/src/compiler.cc &&
+
+echo '"2025.3"' > glslc/src/build-version.inc
+

+ Now install glslc by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D SHADERC_SKIP_TESTS=ON     \
+      -G Ninja ..
+ninja
+

+ Now, as the root user: +

+
install -vm755 glslc/glslc /usr/bin
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + glslc +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ glslc +

+
+

+ compiles OpenGL Shading Language/High Level Shading + Language (GLSL/HLSL) shaders to SPIR-V +

+
+
+
+
+
+
+
+

+ Graphviz-13.1.2 +

+
+
+
+
+
+

+ Introduction to Graphviz +

+

+ The Graphviz package + contains graph visualization software. Graph visualization is + a way of representing structural information as diagrams of + abstract graphs and networks. Graphviz has several main graph layout + programs. It also has web and interactive graphical + interfaces, auxiliary tools, libraries, and language + bindings. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Graphviz Dependencies +

+
+

+ Note +

+

+ Basic usage of Graphviz + does not require any libraries out of what is found in the + LFS book. Its “core” rendering engine is able to + generate several graphic formats, such as Postscript, SVG, + VML, .fig, and Tk. Those formats can be converted to almost + any other format using tools from packages such as + ImageMagick-7.1.2-1. The + dependencies below add the ability to generate graph images + in bitmap format, to display the graph image on screen, to + edit a graph by viewing the resulting image directly, or to + view large graphs. Since Graphviz is a dependency of several + other packages in this book, it is suggested that you first + build it without any dependencies, and then rebuild it when + you have built enough packages to suit your needs. +

+
+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended, for needed bitmap + outputs +
+ +
+ Optional, for additional bitmap + outputs +
+

+ AAlib-1.4rc5 (for outputting images in + ASCII art), Cups-2.4.12 (for formatting graphs for + printing), Qt-6.9.2, and WebKitGTK-2.48.5 +

+

+ Adding GTK+-2 + with libjpeg-turbo-3.0.1 adds support + for JPEG, BMP, TIF, and ICO formats, and allows displaying + the image in a GTK+ window +

+

+ GD Library + may be used instead of Pango. It adds the ability to generate + images in GIF, VRML, and GD formats, but Pango provides better outputs for the + other formats, and is needed for displaying images +

+

+ Other formats may be added with libwebp-1.6.0, DevIL, + libLASi, and + glitz +

+
+ Optional (to load graphics that may + be displayed inside the nodes of a graph) +
+

+ libgs.so from ghostscript-10.05.1, librsvg-2.61.0, and Poppler-25.08.0 +

+
+ Optional (to build more tools) +
+

+ libANN and Freeglut-3.6.0 (with GtkGLExt and + libGTS for building the + smyrna large + graph viewer, which is considered experimental) +

+
+ Optional (to build language + bindings) +
+

+ SWIG-4.3.1 (SWIG must be installed or no bindings + will be built), GCC-15.2.0 (for the go compiler), Guile-3.0.10, + OpenJDK-24.0.2, Lua-5.4.8, PHP-8.4.11, Ruby-3.4.5, Tk-8.6.16, and + R +

+
+ Optional (building tools) +
+

+ Criterion + (framework for tests) and + Electric Fence +

+
+ Optional (for building the pdf + documentation) +
+

+ ghostscript-10.05.1 (for the + ps2pdf command) +

+
+
+

+ Installation of Graphviz +

+

+ Install Graphviz by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr   \
+      -D CMAKE_BUILD_TYPE=Release    \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON \
+      ..                             &&
+
+sed -i '/GZIP/s/:.*$/=/' CMakeCache.txt &&
+
+make
+

+ This package does not come with a test suite that provides + meaningful results. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ sed ... + CMakeCache.txt: This command is needed to + prevent compressing the packages's man pages. +

+
+
+

+ Configuring Graphviz +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ There are no specific configuration requirements for + Graphviz. You may consider + installing the additional plugins and tools available from + the download page at https://graphviz.org/download/source/ + for additional capabilities. If additional plugins are + installed, you can run dot + -c (as the root user) to update the config file in /usr/lib/graphviz. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + acyclic, bcomps, ccomps, circo, + cluster, dijkstra, dot, dot2gxl, dot_builtins, + dot_sandbox, edgepaint, fdp, gc, gml2gv, graphml2gv, + gv2gml, gv2gxl, gvcolor, gvedit, gvgen, gvmap, gvmap.sh, + gvpack, gvpr, gxl2dot, gxl2gv, mm2gv, neato, nop, osage, + patchwork, prune, sccmap, sfdp, tred, twopi, unflatten, + and vimdot +
+
+ Installed Libraries: + libcdt.so, libcgraph.so, libgvc.so, + libgvpr.so, libpathplan.so, libxdot.so, and several + plugins in /usr/lib/graphviz/. +
+
+ Installed Directories: + /usr/include/graphviz, + /usr/lib/graphviz, /usr/lib/cmake/graphviz, and + /usr/share/graphviz +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ acyclic +

+
+

+ is a filter that takes a directed graph as input + and outputs a copy of the graph with sufficient + edges reversed to make the graph acyclic +

+
+

+ bcomps +

+
+

+ decomposes graphs into their biconnected + components, printing the components to standard + output +

+
+

+ ccomps +

+
+

+ decomposes graphs into their connected components, + printing the components to standard output +

+
+

+ circo +

+
+

+ draws graphs using a circular layout +

+
+

+ cluster +

+
+

+ takes a graph in DOT format as input, finds node + clusters, and then augments the graph with this + information +

+
+

+ dijkstra +

+
+

+ reads a stream of graphs and for each computes the + distance of every node from sourcenode +

+
+

+ dot +

+
+

+ draws directed graphs. It works well on DAGs and + other graphs that can be drawn as hierarchies. It + reads attributed graph files and writes drawings. + By default, the output format dot is the input file + with layout coordinates appended +

+
+

+ dot2gxl +

+
+

+ converts between graphs represented in GXL and in + the DOT language. Unless a conversion type is + specified using a flag, gxl2dot will + deduce the type of conversion from the suffix of + the input file, a .dot suffix causing a conversion + from DOT to GXL, and a .gxl suffix causing a conversion + from GXL to DOT +

+
+

+ dot_sandbox +

+
+

+ is a wrapper around graphviz. It aims to provide a + safe environment for the processing of untrusted + input graphs and command line options. +

+
+

+ edgepaint +

+
+

+ performs edge coloring to disambiguate crossing + edges +

+
+

+ fdp +

+
+

+ draws undirected graphs using a “spring” + model. It relies on a force-directed approach in + the spirit of Fruchterman and Reingold +

+
+

+ gml2gv +

+
+

+ converts a graph specified in the GML format to a + graph in the GV (formerly DOT) format +

+
+

+ graphml2gv +

+
+

+ converts a graph specified in the GRAPHML format to + a graph in the GV (formerly DOT) format +

+
+

+ gv2gml +

+
+

+ converts a graph specified in the GV format to a + graph in the GML format +

+
+

+ gv2gxl +

+
+

+ converts a graph specified in the GV format to a + graph in the GXL format +

+
+

+ gvcolor +

+
+

+ is a filter that sets node colors from initial seed + values. Colors flow along edges from tail to head, + and are averaged (as HSB vectors) at nodes +

+
+

+ gvedit +

+
+

+ provides a simple graph editor and viewer. It + allows many graphs to be viewed at the same time. + The text of each graph is displayed in its own text + window +

+
+

+ gvgen +

+
+

+ generates a variety of simple, regularly-structured + abstract graphs +

+
+

+ gvmap +

+
+

+ takes as input a graph in DOT format, finds node + clusters and produces a rendering of the graph as a + geographic-style map, with clusters highlighted, in + xdot format +

+
+

+ gvmap.sh +

+
+

+ is a pipeline for running gvmap +

+
+

+ gvpack +

+
+

+ reads in a stream of graphs, combines the graphs + into a single layout, and produces a single graph + serving as the union of the input graphs +

+
+

+ gvpr +

+
+

+ is a graph stream editor inspired by awk. It copies + input graphs to its output, possibly transforming + their structure and attributes, creating new + graphs, or printing arbitrary information +

+
+

+ gxl2dot +

+
+

+ converts between graphs represented in GXL and in + the DOT language. Unless a conversion type is + specified using a flag, gxl2dot will + deduce the type of conversion from the suffix of + the input file, a .dot suffix causing a conversion + from DOT to GXL, and a .gxl suffix causing a conversion + from GXL to DOT +

+
+

+ gxl2gv +

+
+

+ converts between graphs represented in GXL and in + the GV language +

+
+

+ lefty +

+
+

+ is a two-view graphics editor for technical + pictures +

+
+

+ lneato +

+
+

+ is a graph editor for the X Window System. It may + be run as a standalone editor, or as a front end + for applications that use graphs. It can control + multiple windows viewing different graphs +

+
+

+ mm2gv +

+
+

+ converts a sparse matrix of the Matrix Market + format to a graph in the GV (formerly DOT) format +

+
+

+ neato +

+
+

+ draws undirected graphs using “spring” + models. Input files must be formatted in the + dot + attributed graph language. By default, the output + of neato is the + input graph with layout coordinates appended +

+
+

+ nop +

+
+

+ reads a stream of graphs and prints each in + pretty-printed (canonical) format on stdout. If no + files are given, it reads from stdin +

+
+

+ osage +

+
+

+ draws clustered graphs. It takes any graph in DOT + format as input +

+
+

+ patchwork +

+
+

+ draws clustered graphs using a squarified treemap + layout. It takes any graph in DOT format as input +

+
+

+ prune +

+
+

+ reads directed graphs in the same format used by + dot + and removes subgraphs rooted at nodes specified on + the command line via options +

+
+

+ sccmap +

+
+

+ decomposes digraphs into strongly connected + components and an auxiliary map of the relationship + between components. In this map, each component is + collapsed into a node. The resulting graphs are + printed to stdout +

+
+

+ sfdp +

+
+

+ draws undirected graphs using the “spring” + model, but it uses a multi-scale approach to + produce layouts of large graphs in a reasonably + short time +

+
+

+ tred +

+
+

+ computes the transitive reduction of directed + graphs, and prints the resulting graphs to standard + output. This removes edges implied by transitivity. + Nodes and subgraphs are not otherwise affected +

+
+

+ twopi +

+
+

+ draws graphs using a radial layout. Basically, one + node is chosen as the center and put at the origin. + The remaining nodes are placed on a sequence of + concentric circles centered about the origin, each + a fixed radial distance from the previous circle +

+
+

+ unflatten +

+
+

+ is a preprocessor to dot that is used + to improve the aspect ratio of graphs having many + leaves or disconnected nodes. The usual layout for + such a graph is generally very wide or tall +

+
+

+ vimdot +

+
+

+ is a simple script which launches the gvim or + vim + editor along with a GUI window showing the + dot + output of the edited file +

+
+

+ libcdt.so +

+
+

+ manages run-time dictionaries using standard + container data types: unordered set/multiset, + ordered set/multiset, list, stack, and queue +

+
+

+ libcgraph.so +

+
+

+ supports graph programming by maintaining graphs in + memory and reading and writing graph files. Graphs + are composed of nodes, edges, and nested subgraphs +

+
+

+ libgvc.so +

+
+

+ provides a context for applications wishing to + manipulate and render graphs. It provides command + line parsing interfaces, common rendering code, and + a plugin mechanism for renderers +

+
+

+ libpathplan.so +

+
+

+ contains functions to find the shortest path + between two points in a simple polygon +

+
+

+ libxdot.so +

+
+

+ provides support for parsing and deparsing + graphical operations specified by the xdot language +

+
+
+
+
+
+
+
+

+ GTK-Doc-1.34.0 +

+
+
+
+
+
+

+ Introduction to GTK-Doc +

+

+ The GTK-Doc package contains + a code documenter. This is useful for extracting specially + formatted comments from the code to create API documentation. + This package is optional; if it is not installed, + packages will not build the documentation. This does not mean + that you will not have any documentation. If GTK-Doc is not available, the install + process will copy any pre-built documentation to your system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GTK-Doc Dependencies +

+
+ Required +
+

+ docbook-xml-4.5, docbook-xsl-nons-1.79.2, + GLib-2.84.4, itstool-2.0.7, libxslt-1.1.43, and Pygments-2.19.2 +

+
+ Optional +
+

+ For tests: dblatex or + fop-2.11 + (XML PDF support), Which-2.23, and Python + modules lxml-6.0.0, parameterized, + and yelp-tools +

+
+

+ Note +

+

+ The optional python modules above can be easily installed + with the pip3 + command. +

+
+
+
+

+ Installation of GTK-Doc +

+

+ Install GTK-Doc by running + the following commands: +

+
mkdir -p build &&
+cd       build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ The test suite will hang if the package (or a previous + version) is not already installed. +

+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: ninja test. Some tests will + fail depending on optionally installed packages. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gtkdocize, gtkdoc-check, + gtkdoc-depscan, gtkdoc-fixxref, gtkdoc-mkdb, + gtkdoc-mkhtml, gtkdoc-mkhtml2, gtkdoc-mkman, + gtkdoc-mkpdf, gtkdoc-rebase, gtkdoc-scan, and + gtkdoc-scangobj +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/gtk-doc and + /usr/share/cmake/GtkDoc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gtkdoc* +

+
+

+ these are all shell, or Python scripts used by package + Makefile scripts to + generate documentation for the package being built +

+
+
+
+
+
+
+
+

+ Highlight-4.16 +

+
+
+
+
+
+

+ Introduction to Highlight +

+

+ Highlight is a utility that + converts source code to formatted text with syntax + highlighting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): http://www.andre-simon.de/zip/highlight-4.16.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 56530aebcc69edbde9ea1a8b9e95d919 +

    +
  • +
  • +

    + Download size: 1.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 24 MB (with gui) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (Using parallelism=4; + with gui) +

    +
  • +
+
+

+ Highlight Dependencies +

+
+ Required +
+

+ Boost-1.89.0 and Lua-5.4.8 +

+
+ Optional +
+

+ Qt-6.9.2 (to + build the GUI front-end) +

+
+
+

+ Installation of Highlight +

+

+ For consistency, do not compress man pages. +

+
sed -i '/GZIP/s/^/#/' makefile
+

+ To build Highlight run the + following command: +

+
make
+

+ To build the qt6 GUI + front-end, run the following command: +

+
make doc_dir=/usr/share/doc/highlight-4.16/ gui
+

+ This package does not come with a test suite. +

+

+ To install Highlight, run + the following command as the root user: +

+
make doc_dir=/usr/share/doc/highlight-4.16/ install
+

+ To install the GUI program, run the following command as the + root user: +

+
make install-gui
+
+
+

+ Command Explanations +

+

+ doc_dir=/usr/share/doc/highlight-4.16/: + installs the highlight documentation into a versioned + directory. This parameter is also needed for make gui, because its value + would be hardcoded into the gui executable. Note that the + trailing “/” is necessary. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + highlight and highlight-gui + (optional) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/highlight, + /usr/share/doc/highlight-4.16, and + /usr/share/highlight +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ highlight +

+
+

+ is a universal source code to formatted text + converter +

+
+

+ highlight-gui +

+
+

+ is the qt6 + interface to highlight. +

+
+
+
+
+
+
+
+

+ ibus-1.5.32 +

+
+
+
+
+
+

+ Introduction to ibus +

+

+ ibus is an Intelligent Input + Bus. It is a new input framework for the Linux OS. It + provides a fully featured and user friendly input method user + interface. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/ibus/ibus/archive/1.5.32/ibus-1.5.32.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 0a5b8f8a2b593846038be558ef53b971 +

    +
  • +
  • +

    + Download size: 1.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 57 MB (add 1 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (Using parallelism=4; add + 1.4 SBU for tests) +

    +
  • +
+
+

+ Additional Downloads +

+
+ +
+

+ ibus + Dependencies +

+
+ Required +
+

+ ISO Codes-4.18.0, libarchive-3.8.1 (for extracting the + Unicode Character Database), and Vala-0.56.18 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for generating API + documentation), D-Bus Python-1.4.0 and PyGObject-3.52.3 (both to build the + Python support library), libxkbcommon-1.11.0, + Wayland-1.24.0 (both to build the + Wayland support programs), EmojiOne, and libdbusmenu +

+
+
+

+ Installation of ibus +

+

+ First, install the Unicode Character Database as the + root user: +

+
mkdir -p               /usr/share/unicode/ucd &&
+unzip -o ../UCD.zip -d /usr/share/unicode/ucd
+

+ Fix an issue with deprecated schema entries: +

+
sed -e 's@/desktop/ibus@/org/freedesktop/ibus@g' \
+    -i data/dconf/org.freedesktop.ibus.gschema.xml
+

+ If GTK-Doc-1.34.0 is not installed, remove + the references to it: +

+
if ! [ -e /usr/bin/gtkdocize ]; then
+  sed '/docs/d;/GTK_DOC/d' -i Makefile.am configure.ac
+fi
+

+ Install ibus by running the + following commands: +

+
SAVE_DIST_FILES=1 NOCONFIGURE=1 ./autogen.sh &&
+
+PYTHON=python3                     \
+./configure --prefix=/usr          \
+            --sysconfdir=/etc      \
+            --disable-python2      \
+            --disable-appindicator \
+            --disable-emoji-dict   \
+            --disable-gtk2         \
+            --disable-systemd-services &&
+make
+

+ To test the results, issue: make -k check. The test + named ibus-compose fails because it uses some locales not + installed in LFS. The xkb-latin-layouts test is also known to + fail on some systems. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-appindicator: This + switch disables use of libdbusmenu. Omit if you installed the + optional dependency. +

+

+ --disable-emoji-dict: + This switch disables the use of emoticon dictionaries. Omit + if you installed the optional package. +

+

+ --disable-gtk2: This + switch removes the dependency on GTK+-2. +

+

+ --disable-gtk4: This switch + disables building the GTK 4 + immodule. Use it if you don't want to install GTK 4. +

+

+ --enable-python-library: This + switch enables building the Python support library. Use it if you + have installed the optional Python modules. +

+

+ --enable-wayland: This switch + enables building the Wayland + support programs. It's automatically enabled if both + libxkbcommon-1.11.0 and Wayland-1.24.0 are installed. +

+

+ NOCONFIGURE=1: Prevent + autogen.sh from + running the generated configure script. We'll run + the script manually instead of relying on autogen.sh to run it, + because autogen.sh would set + -fsanitize=address + -fsanitize=leak in CFLAGS + running configure, but those + compiler options are not suitable for productive use and they + may also cause a build failure. +

+

+ PYTHON=python3: This environment + variable makes the configure script look for + Python 3. Use it if you want + to build the Python 3 + support library. +

+

+ SAVE_DIST_FILES=1: This + environment variable makes the autogen.sh script save some + pre-generated header files instead of overwriting them when + it is run. This prevents build failures when generating + ibusemojigen.h. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Configuring Ibus +

+

+ If GTK+-3 is installed and --disable-gtk3 is not used, the ibus IM + module for GTK+-3 will be installed. As the root user, update a cache file of GTK+-3 + so the GTK-based applications can find the newly installed IM + module and use ibus as an input method: +

+
gtk-query-immodules-3.0 --update-cache
+

+ The command above updates the cache file for GTK+-3. GTK-4 + does not require a cache file for IM modules. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ibus, ibus-daemon, and + ibus-setup +
+
+ Installed Library: + libibus-1.0.so and im-ibus.so + (GTK+ Immodule) +
+
+ Installed Directories: + /etc/dconf/db/ibus.d, + /usr/include/ibus-1.0, /usr/share/gtk-doc/html/ibus, and + /usr/share/ibus +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ ibus-daemon +

+
+

+ is the Intelligent Input Bus Daemon +

+
+

+ ibus-setup +

+
+

+ is the GTK+ + program used to configure the ibus-daemon +

+
+

+ libibus-1.0.so +

+
+

+ contains the ibus + API functions +

+
+
+
+
+
+
+
+

+ ImageMagick-7.1.2-1 +

+
+
+
+
+
+

+ Introduction to ImageMagick +

+

+ ImageMagick is a collection + of tools and libraries to read, write, and manipulate an + image in various image formats. Image processing operations + are available from the command line. Bindings for Perl and + C++ are also available. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.imagemagick.org/archive/releases/ImageMagick-7.1.2-1.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: beddceb1c2036007b72671fc1039c5f8 +

    +
  • +
  • +

    + Download size: 10 MB +

    +
  • +
  • +

    + Estimated disk space required: 191 MB, 45 MB installed + (with typical dependencies; add 26 MB for checks) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (with typical + dependencies; add 0.5 SBU for checks, both using + parallelism=4) +

    +
  • +
+
+
+

+ Note +

+

+ The ImageMagick source + releases are updated frequently and the version shown above + may no longer be available from the download locations. You + can download a more recent version and use the existing + BLFS instructions to install it. Chances are that it will + work just fine, but this has not been tested by the BLFS + team. If the package version shown above is not available + from the locations shown above, you can download it from + the BLFS package server at Oregon State University: + + https://ftp.osuosl.org/pub/blfs/conglomeration/ImageMagick/. +

+
+

+ ImageMagick Dependencies +

+
+ Recommended +
+ +

+ The optional dependencies listed below should be installed if + you need support for the specific format or the conversion + tool the dependency provides. Additional information about + the dependencies can be found in the Install-unix.txt file located in the source + tree as well as issuing the ./configure --help command. + A summary of this information, as well as some additional + notes can be viewed on-line at https://imagemagick.org/script/install-source.php. +

+
+ Optional System Utilities +
+

+ 7zip-25.01 (LZMA), Clang from LLVM-20.1.8, + Cups-2.4.12, cURL-8.15.0, FFmpeg-7.1.1, fftw-3.3.10, + SANE-1.4.0, Wget-1.25.0, xdg-utils-1.2.1, + xterm-401, Dmalloc, + Electric Fence and PGP or GnuPG-2.4.8 (you'll + have to do some hacking to use GnuPG), Profiles +

+
+ Optional Graphics Libraries +
+

+ jasper-4.2.8, Little CMS-2.17, + libgxps-0.3.2, libjpeg-turbo-3.0.1, libjxl-0.11.1, libpng-1.6.50, libraw-0.21.4 + (for dng files, needs the thread-safe libraw_r), librsvg-2.61.0, libtiff-4.7.0, libwebp-1.6.0, OpenJPEG-2.5.3, + Pango-1.56.4, DjVuLibre, FlashPIX + (libfpx), FLIF, + JBIG-KIT, + libheif with + libde265 (both + needed if converting macOS heic images), libraqm, + Liquid + Rescale, OpenEXR, and RALCGM + (or ralcgm) +

+
+ Optional Graphics Utilities +
+

+ Dejavu fonts, ghostscript-10.05.1, + Gimp-3.0.4, Graphviz-13.1.2, Inkscape-1.4.2, + Blender, + corefonts, GhostPCL, + Gnuplot, + POV-Ray, + and Radiance +

+
+ Optional Conversion Tools +
+

+ Enscript-1.6.6, Potrace-1.16, texlive-20250308 (or install-tl-unx) AutoTrace, GeoExpress Command + Line Utilities, AKA MrSID Utilities (binary package), + hp2xx, libwmf, + UniConvertor, and Utah + Raster Toolkit (or URT-3.1b) +

+
+
+

+ Installation of ImageMagick +

+

+ Install ImageMagick by + running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --enable-hdri     \
+            --with-modules    \
+            --with-perl       \
+            --disable-static  &&
+make
+

+ Now, as the root user: +

+
make DOCUMENTATION_PATH=/usr/share/doc/imagemagick-7.1.2 install
+

+ To test the installation, issue: make check. Note that the + EPS, PS, and PDF tests require a working Ghostscript. One test in 'make check' + needs “Helvetica” from “Ghostscript Standard + Fonts,” which are optionally installed in + ghostscript-10.05.1 - that test, + and one other, might fail, but all the validation can still + pass. +

+
+
+

+ Command Explanations +

+

+ --enable-hdri: + Enables building of a high dynamic range version of + ImageMagick. +

+

+ --with-modules: + Enables support for dynamically loadable modules. +

+

+ --with-perl: Enables + building and installing of PerlMagick. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-fftw: Enables support for + the FFTW shared library. +

+

+ --with-rsvg: Enables support for + the librsvg library. +

+

+ --with-autotrace: Enables support + for the Autotrace library. +

+

+ --with-wmf: Enables support for + the libwmf library. +

+

+ --with-gvc: Enables support for + GraphViz. +

+

+ --with-security-policy=open|limited|secure|websafe: + If you wish to enforce a policy other than the default 'open' + see www/security-policy.html in + the source for details. +

+

+ --with-windows-font-dir= <Some/Directory>: + This option specifies the directory where the Windows + CoreFonts are installed. +

+

+ --with-dejavu-font-dir= <Some/Directory>: + This option specifies the directory where the DejaVu fonts + are installed. +

+

+ The options and parameters listed above are the only ones you + should have to pass to the configure script to + activate all the delegate dependencies. All other + dependencies will be automatically detected and utilized in + the build if they are installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + magick, Magick++-config, + MagickCore-config, and MagickWand-config. (animate, + compare, composite, conjure, convert, display, identify, + import, magick-script, mogrify, montage, and stream are + all symbolic links to magick) +
+
+ Installed Libraries: + libMagickCore-7.Q16HDRI.so, + libMagickWand-7.Q16HDRI.so and + libMagick++-7.Q16HDRI.so +
+
+ Installed Directories: + /etc/ImageMagick-7, + /usr/include/ImageMagick-7, /usr/lib/ImageMagick-7.1.2, + /usr/lib/perl5/site_perl/5.42/{,auto}/Image/Magick, + /usr/share/doc/ImageMagick-7.1.2, and + /usr/share/ImageMagick-7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ animate +

+
+

+ animates a sequence of images +

+
+

+ compare +

+
+

+ compares an image to a reconstructed image +

+
+

+ composite +

+
+

+ composites various images into the given base image +

+
+

+ conjure +

+
+

+ processes a MSL script to create an image +

+
+

+ convert +

+
+

+ converts image(s) from one format to another +

+
+

+ display +

+
+

+ displays an image +

+
+

+ identify +

+
+

+ describes the format and characteristics of an + image file +

+
+

+ import +

+
+

+ captures an X window +

+
+

+ magick +

+
+

+ converts between image formats as well as resizes + an image, blurs, crops, despeckles, dithers, draws + on, flips, joins, re-samples, and much more +

+
+

+ Magick{++,Core,Wand}-config +

+
+

+ shows information about the installed versions of + the ImageMagick + libraries +

+
+

+ mogrify +

+
+

+ transforms an image +

+
+

+ montage +

+
+

+ composites various images into a new image +

+
+

+ stream +

+
+

+ streams one or more pixel components of an image or + portion of the image to your choice of storage + formats +

+
+

+ Image::Magick +

+
+

+ allows for reading, manipulating, and writing a + large number of image file formats using the + ImageMagick + library. Run make in the + PerlMagick/demo + directory of the package source tree after the + package is installed to see a nice demo of the + module's capabilities +

+
+

+ libMagickCore-7.Q16HDRI.so +

+
+

+ provides the C API for ImageMagick +

+
+

+ libMagickWand-7.Q16HDRI.so +

+
+

+ is the recommended C API for ImageMagick. Unlike + the MagickCore API it uses only a few opaque types +

+
+

+ libMagick++-7.Q16HDRI.so +

+
+

+ provides the C++ API for ImageMagick +

+
+
+
+
+
+
+
+

+ ISO Codes-4.18.0 +

+
+
+
+
+
+

+ Introduction to ISO Codes +

+

+ The ISO Codes package + contains a list of country, language and currency names and + it is used as a central database for accessing this data. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of ISO Codes +

+

+ Install ISO Codes by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install LN_S='ln -sfn'
+
+
+

+ Command Explanations +

+

+ LN_S='ln -sfn': This + override ensures the installed symlinks correctly recreated + in case we are upgrading or reinstalling the package. It's + unneeded but harmless when installing the package onto the + system for the first time. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/iso-codes, + /usr/share/xml/iso-codes +
+
+
+
+
+
+
+
+

+ lsof-4.99.5 +

+
+
+
+
+
+

+ Introduction to lsof +

+

+ The lsof package is useful + to LiSt Open Files for a given running application or + process. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lsof + Dependencies +

+
+ Required +
+

+ libtirpc-1.3.6 +

+
+ Optional +
+

+ Nmap-7.98 + (with a symbolic link nc pointing to ncat in /usr/bin; used in tests) +

+
+
+

+ Kernel + Configuration +

+

+ To run the tests, the following option should be enabled in + the kernel configuration: +

+
General setup --->
+  [*] POSIX Message Queues                                        [POSIX_MQUEUE]
+
+
+

+ Installation of lsof +

+

+ Install lsof by running the + following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ The tests should be run as the root user. They require that the POSIX + message queues are enabled in the kernel, and that Nmap-7.98 be + installed with a symbolic link /usr/bin/nc pointing to ncat. +

+
make check
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + lsof +
+
+ Installed Libraries: + liblsof.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lsof +

+
+

+ lists open files for running processes +

+
+

+ liblsof.so +

+
+

+ contains an interface for applications to list open + files +

+
+
+
+
+
+
+
+

+ pinentry-1.3.2 +

+
+
+
+
+
+

+ Introduction to PIN-Entry +

+

+ The PIN-Entry package + contains a collection of simple PIN or pass-phrase entry + dialogs which utilize the Assuan protocol as described by the + Ägypten project. + PIN-Entry programs are + usually invoked by the gpg-agent daemon, but can + be run from the command line as well. There are programs for + various text-based and GUI environments, including interfaces + designed for Ncurses + (text-based), and for the common GTK and Qt toolkits. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ PIN-Entry Dependencies +

+
+ Required +
+

+ libassuan-3.0.2 and libgpg-error-1.55 +

+
+ Optional +
+

+ Emacs-30.2, FLTK-1.4.4, Gcr-4.4.0.1 (or Gcr-3.41.2), + KDE + Frameworks-6.17.0, libsecret-0.21.7, and efl +

+
+
+

+ Installation of PIN-Entry +

+

+ First, make configure consistent with + fltk-1.4.1: +

+
sed -i "/FLTK 1/s/3/4/" configure   &&
+sed -i '14456 s/1.3/1.4/' configure
+

+ Install PIN-Entry by running + the following commands: +

+
./configure --prefix=/usr          \
+            --enable-pinentry-tty  &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-inside-emacs=yes/no: + Default is no. +

+

+ --enable-pinentry-qt=yes/no: + Default is yes. +

+

+ --enable-pinentry-gnome3=yes/no: + Default is yes. This option uses Gcr-4.4.0.1 (or Gcr-3.41.2 if the former is not + installed) for the pinentry dialog. +

+

+ --enable-pinentry-tty: Default + is 'maybe'. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pinentry (symlink), + pinentry-curses, pinentry-emacs, pinentry-fltk, + pinentry-gnome3, pinentry-qt, and pinentry-tty +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ pinentry +

+
+

+ is a symbolic link to the default PIN-Entry program +

+
+

+ pinentry-curses +

+
+

+ is an Ncurses + text-based PIN-Entry helper program +

+
+

+ pinentry-emacs +

+
+

+ is an Emacs + version of the PIN-Entry helper program +

+
+

+ pinentry-fltk +

+
+

+ is a FLTK + PIN-Entry helper + program +

+
+

+ pinentry-gnome3 +

+
+

+ is a GNOME-3 + PIN-Entry helper + program +

+
+

+ pinentry-qt +

+
+

+ is a Qt4 or 5 + PIN-Entry helper + program +

+
+

+ pinentry-tty +

+
+

+ is a tty + PIN-Entry helper + program +

+
+
+
+
+
+
+
+

+ Screen-5.0.1 +

+
+
+
+
+
+

+ Introduction to Screen +

+

+ Screen is a terminal + multiplexor that runs several separate processes, typically + interactive shells, on a single physical character-based + terminal. Each virtual terminal emulates a DEC VT100 plus + several ANSI X3.64 and ISO 2022 functions and also provides + configurable input and output translation, serial port + support, configurable logging, multi-user support, and many + character encodings, including UTF-8. Screen sessions can be + detached and resumed later on a different terminal. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/screen/screen-5.0.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: fb5e5dfc9353225c2d6929777344b1a6 +

    +
  • +
  • +

    + Download size: 880 KB +

    +
  • +
  • +

    + Estimated disk space required: 8.9 MB +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU +

    +
  • +
+
+

+ Screen Dependencies +

+
+ Optional +
+

+ Linux-PAM-1.7.1 +

+
+
+

+ Installation of Screen +

+

+ Fix an issue causing the info page fail to build: +

+
sed 's/\([a-z]\)@opensuse/\1@@opensuse/' -i doc/screen.texinfo
+

+ Install Screen by running + the following commands: +

+
./configure --prefix=/usr                   \
+            --infodir=/usr/share/info       \
+            --mandir=/usr/share/man         \
+            --disable-pam                   \
+            --enable-socket-dir=/run/screen \
+            --with-pty-group=5              \
+            --with-system_screenrc=/etc/screenrc &&
+
+sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -m 644 etc/etcscreenrc /etc/screenrc
+
+
+

+ Command Explanations +

+

+ --disable-pam: This + option removes a build dependency on Linux-PAM. Remove this + option if you want PAM support. +

+

+ --enable-socket-dir=/run/screen: + This option places the per-user sockets in a standard + location. +

+

+ --with-system_screenrc=/etc/screenrc: + This option places the global screenrc file in /etc. +

+

+ --with-pty-group=5: + This option sets the gid to the value used by LFS. +

+

+ sed -i -e + "s%/usr/local/etc/screenrc%/etc/screenrc%" + {etc,doc}/*: This command corrects the + configuration and documentation files to the location that is + used here for the global screenrc file. +

+
+
+

+ Configuring Screen +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/screenrc and + ~/.screenrc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ You may want to look at the example configuration file that + was installed and customize it for your needs. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + screen (symlink) and + screen-5.0.1 +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/screen and + /run/screen +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ screen +

+
+

+ is a terminal multiplexor with VT100/ANSI terminal + emulation +

+
+
+
+
+
+
+
+

+ shared-mime-info-2.4 +

+
+
+
+
+
+

+ Introduction to Shared Mime Info +

+

+ The Shared Mime Info package + contains a MIME database. This allows central updates of MIME + information for all supporting applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ Shared Mime Info Dependencies +

+
+ Required +
+

+ GLib-2.84.4 and libxml2-2.14.5 +

+
+ Optional +
+

+ xmlto-0.0.29 +

+
+
+

+ Installation of Shared Mime Info +

+

+ Install Shared Mime Info by + running the following commands: +

+

+ If you wish to run the test suite, you must first extract the + xdgmime tarball into the + current directory, and compile it so that meson can find it: +

+
tar -xf ../xdgmime.tar.xz &&
+make -C xdgmime
+

+ Now build the package: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D update-mimedb=true .. &&
+ninja
+

+ If you have followed the instructions above to build + xdgmime, to test the result + issue ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + update-mimedb=true: This parameter tells the + build system to run update-mime-database during + installation. Otherwise, this must be done manually in order + to be able to use the MIME database. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + update-mime-database +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/mime +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ update-mime-database +

+
+

+ assists in adding MIME data to the database +

+
+
+
+
+
+
+
+

+ Sharutils-4.15.2 +

+
+
+
+
+
+

+ Introduction to Sharutils +

+

+ The Sharutils package + contains utilities that can create 'shell' archives. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/sharutils/sharutils-4.15.2.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 5975ce21da36491d7aa6dc2b0d9788e0 +

    +
  • +
  • +

    + Download size: 1.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 22 MB (with the test + suite) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (with the test suite) +

    +
  • +
+
+

+ Additional Downloads +

+ +
+
+

+ Installation of Sharutils +

+

+ First, fix issues exposed by current GCC versions: +

+
patch -Np1 -i ../sharutils-4.15.2-consolidated-1.patch
+

+ Install Sharutils by running + the following commands: +

+
autoreconf -fiv                                         &&
+./configure --prefix=/usr --disable-dependency-tracking &&
+make
+

+ To test the results, issue make + check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-dependency-tracking: + This switch is used to disable unneeded code in the build + system. +

+

+ --with-openssl: This + optional switch is used to enable incorporation of integrity + checks into the package's executable programs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + shar, unshar, uudecode, and + uuencode +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ shar +

+
+

+ creates "shell archives" (or shar files) which are + in text format and can be mailed +

+
+

+ unshar +

+
+

+ unpacks a shar file +

+
+

+ uudecode +

+
+

+ reads a file (or by default the standard input) and + writes an encoded version to the standard output. + The encoding uses only printing ASCII characters +

+
+

+ uuencode +

+
+

+ reads a file (or by default the standard input) and + decodes the uuencoded version to the standard + output +

+
+
+
+
+
+
+
+

+ tidy-html5-5.8.0 +

+
+
+
+
+
+

+ Introduction to Tidy HTML5 +

+

+ The Tidy HTML5 package + contains a command line tool and libraries used to read HTML, + XHTML and XML files and write cleaned up markup. It detects + and corrects many common coding errors and strives to produce + visually equivalent markup that is both W3C compliant and + compatible with most browsers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Tidy + HTML5 Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+
+

+ Installation of Tidy HTML5 +

+

+ First, fix a build failure that occurs when using CMake 4.0 + and later: +

+
patch -Np1 -i ../tidy-html5-5.8.0-cmake4_fixes-1.patch
+

+ Install Tidy HTML5 by + running the following commands: +

+
cd build/cmake &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_TAB2SPACE=ON        \
+      ../..    &&
+
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+rm -fv /usr/lib/libtidy.a &&
+install -v -m755 tab2space /usr/bin
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + build the release library without any debug `assert` in the + code. +

+

+ -D + BUILD_TAB2SPACE=ON: This switch is used to enable + building the tab2space utility. +

+
+
+

+ Configuring Tidy HTML5 +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ The absolute path of the file specified in HTML_TIDY. +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The default configuration options can be set in the file + defined in HTML_TIDY. Additional + configuration options can be passed to tidy via command line + parameters or the -config + <file> parameter. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + tab2space and tidy +
+
+ Installed Library: + libtidy.so +
+
+ Installed Directory: + /usr/share/doc/tidy-5.8.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ tab2space +

+
+

+ is a utility to expand tabs and ensure consistent + line endings +

+
+

+ tidy +

+
+

+ validates, corrects, and pretty-prints HTML files +

+
+

+ libtidy.so +

+
+

+ library provides the Tidy + HTML5 API functions to tidy and can also + be called by other programs +

+
+
+
+
+
+
+
+

+ Time-1.9 +

+
+
+
+
+
+

+ Introduction to Time +

+

+ The time utility is a + program that measures many of the CPU resources, such as time + and memory, that other programs use. The GNU version can + format the output in arbitrary ways by using a printf-style + format string to include various resource measurements. +

+

+ Although the shell has a builtin command providing similar + functionalities, this utility is required by the LSB. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/time/time-1.9.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: d2356e0fe1c0b85285d83c6b2ad51b5f +

    +
  • +
  • +

    + Download size: 584 KB +

    +
  • +
  • +

    + Estimated disk space required: 4.0 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (with tests) +

    +
  • +
+
+
+
+

+ Installation of Time +

+

+ First, fix compiling this package with GCC-15: +

+
sed -i 's/sighandler interrupt_signal/__sighandler_t interrupt_signal/' src/time.c
+

+ Install Time by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + time +
+
+ Installed Library: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ time +

+
+

+ reports various statistics about an executed + command +

+
+
+
+
+
+
+
+

+ tree-2.2.1 +

+
+
+
+
+
+

+ Introduction to tree +

+

+ The tree application is + useful to display a dictionary tree's contents, including + files, directories, and links. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of tree +

+

+ Install tree by running the + following commands: +

+
make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr MANDIR=/usr/share/man install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + tree +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ tree +

+
+

+ displays a directory tree in a terminal +

+
+
+
+
+
+
+
+

+ unixODBC-2.3.12 +

+
+
+
+
+
+

+ Introduction to unixODBC +

+

+ The unixODBC package is an + Open Source ODBC (Open DataBase Connectivity) sub-system and + an ODBC SDK for Linux, Mac OSX, and UNIX. ODBC is an open + specification for providing application developers with a + predictable API with which to access data sources. Data + sources include optional SQL Servers and any data source with + an ODBC Driver. unixODBC + contains the following components used to assist with the + manipulation of ODBC data sources: a driver manager, an + installer library and command line tool, command line tools + to help install a driver and work with SQL, drivers and + driver setup libraries. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ unixODBC Dependencies +

+
+ Optional +
+

+ Mini SQL +

+
+
+

+ Installation of unixODBC +

+

+ Install unixODBC by running + the following commands: +

+
./configure --prefix=/usr \
+            --sysconfdir=/etc/unixODBC &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+
+find doc -name "Makefile*" -delete                &&
+chmod 644 doc/{lst,ProgrammerManual/Tutorial}/*   &&
+
+install -v -m755 -d /usr/share/doc/unixODBC-2.3.12 &&
+cp      -v -R doc/* /usr/share/doc/unixODBC-2.3.12
+
+
+

+ Command Explanations +

+

+ --enable-drivers: This parameter + enables building the drivers that were installed by default + in previous versions. +

+

+ --enable-drivers-conf: This + parameter enables building the driver configuration libraries + that were installed by default in previous versions. +

+
+
+

+ Configuring unixODBC +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/unixODBC/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The files in /etc/unixODBC + are meant to be configured by the system administrator (or + the ODBC site administrator if appropriate privileges are + granted to /etc/unixODBC). + These files are not meant to be directly edited. The ODBC + installer library is responsible for reading and writing + the unixODBC config files. +

+

+ Unfortunately, there are not many man, or any info pages for the + various programs available in the unixODBC package. Along with the + information in the “Short Descriptions” below and the + documentation installed in /usr/share/doc/unixODBC-2.3.12, there are + many README files throughout + the source tree where the use and functionality of the + programs can be found. Additionally, you can use the + parameter -? for syntax and + usage information. Lastly, the unixODBC web site at http://www.unixodbc.org/ has + very good information. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dltest, isql, iusql, odbc_config, + odbcinst, and slencheck +
+
+ Installed Libraries: + libodbc.so, libodbccr.so, and + libodbcinst.so +
+
+ Installed Directories: + /etc/unixODBC and + /usr/share/doc/unixODBC-2.3.12 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ dltest +

+
+

+ is a utility used to check a shared library to see + if it can be loaded and if a given symbol exists in + it +

+
+

+ isql +

+
+

+ is a utility which can be used to submit SQL to a + data source and to format/output results. It can be + used in batch or interactive mode +

+
+

+ iusql +

+
+

+ provides the same functionality as the isql program +

+
+

+ odbc_config +

+
+

+ is used to find out details about the installation + of the unixODBC + package +

+
+

+ odbcinst +

+
+

+ is a utility created for install script/RPM + writers. It is a command line interface to key + functionality in the libodbcinst library. It does not + copy any files (i.e., libraries) but it will modify + the ODBC System Information for the user +

+
+

+ slencheck +

+
+

+ is a utility which attempts to check whether an + ODBC driver was built with 32-bit or 64-bit SQLLEN + types +

+
+
+
+
+
+
+
+

+ xdg-dbus-proxy-0.1.6 +

+
+
+
+
+
+

+ Introduction to xdg-dbus-proxy +

+

+ The xdg-dbus-proxy package + contains a filtering proxy for D-Bus connections. This is + useful for forwarding data in and out of a sandbox. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdg-dbus-proxy Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+
+

+ Installation of xdg-dbus-proxy +

+

+ Install xdg-dbus-proxy by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xdg-dbus-proxy +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xdg-dbus-proxy +

+
+

+ is a filtering proxy for D-Bus connections +

+
+
+
+
+
+
+
+

+ Xdg-user-dirs-0.18 +

+
+
+
+
+
+

+ Introduction to Xdg-user-dirs +

+

+ Xdg-user-dirs is a tool to + help manage “well + known” user directories like the desktop folder + and the music folder. It also handles localization (i.e. + translation) of the filenames. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xdg-user-dirs Dependencies +

+
+ Optional +
+

+ docbook-xml-4.5, docbook-xsl-nons-1.79.2, and + libxslt-1.1.43 (all three for building + the man pages) +

+
+
+

+ Installation of Xdg-user-dirs +

+

+ Install xdg-user-dirs by + running the following commands: +

+
./configure --prefix=/usr           \
+            --sysconfdir=/etc       \
+            --disable-documentation &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-documentation: + Disable the installation of the man pages. Remove this switch + if you've installed the optional dependencies and you wish to + install the man pages of this package. +

+
+
+

+ Configuring Xdg-user-dirs +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.config/user-dirs.dirs, + /etc/xdg/user-dirs.conf, and + /etc/xdg/user-dirs.defaults. + Those default locations can be overridden by XDG_CONFIG_HOME and XDG_CONFIG_DIRS +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xdg-user-dir and + xdg-user-dirs-update +
+
+ Installed Library: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xdg-user-dir +

+
+

+ looks up the current path for one of the XDG user + directories +

+
+

+ xdg-user-dirs-update +

+
+

+ creates localized versions of the user directories +

+
+
+
+
+
+
+
+
+

+ Chapter 12. System Utilities +

+
+
+
+
+

+ This chapter contains mainly hardware utilities. It also contains + some applications used by other applications in the book for + installation or configuration purposes. +

+
+
+
+

+ 7zip-25.01 +

+
+
+
+
+
+

+ Introduction to 7zip +

+

+ 7zip is a file archiver that + archives with high compression ratios. It handles 7z, ZIP, + GZIP, Brotli, BZIP2, XZ, TAR, APM, ARJ, CAB, CHM, CPIO, + CramFS, DEB, DMG, FAT, HFS, ISO, Lizard, LZ5, LZFSE, LZH, + LZMA, LZMA2, MBR, MSI, MSLZ, NSIS, NTFS, RAR, RPM, SquashFS, + UDF, VHD, WIM, XAR, Z, and Zstd formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ 7zip + Dependencies +

+
+ Optional +
+

+ UASM +

+
+
+

+ Installation of 7zip +

+

+ Install 7zip by running the + following commands: +

+
(for i in Bundles/{Alone,Alone7z,Format7zF,SFXCon} UI/Console; do
+    make -C CPP/7zip/$i -f ../../cmpl_gcc.mak || exit
+done)
+

+ This package does not have a test suite. +

+

+ Now, as the root user: +

+
install -vDm755 CPP/7zip/Bundles/Alone{/b/g/7za,7z/b/g/7zr} \
+                CPP/7zip/Bundles/Format7zF/b/g/7z.so        \
+                CPP/7zip/UI/Console/b/g/7z                  \
+                -t /usr/lib/7zip/                           &&
+
+install -vm755 CPP/7zip/Bundles/SFXCon/b/g/7zCon \
+               /usr/lib/7zip/7zCon.sfx           &&
+
+(for i in 7z 7za 7zr; do
+    cat > /usr/bin/$i << EOF || exit
+#!/bin/sh
+exec /usr/lib/7zip/$i "\$@"
+EOF
+    chmod 755 /usr/bin/$i || exit
+done) &&
+
+cp -rv DOC -T /usr/share/doc/7zip-25.01
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + 7z, 7za, and 7zr +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/lib/7zip and + /usr/share/doc/7zip-25.01 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ 7z +

+
+

+ is a file archiver utility +

+
+

+ 7za +

+
+

+ is a stand-alone executable handling less archive + formats than 7z +

+
+

+ 7zr +

+
+

+ is a minimal version of 7za that handles + only 7z archives +

+
+
+
+
+
+
+
+

+ AccountsService-23.13.9 +

+
+
+
+
+
+

+ Introduction to AccountsService +

+

+ The AccountsService package + provides a set of D-Bus + interfaces for querying and manipulating user account + information and an implementation of those interfaces based + on the usermod(8), + useradd(8), and + userdel(8) + commands. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ AccountsService Dependencies +

+
+ Required +
+

+ Polkit-126 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 and xmlto-0.0.29 +

+
+ Optional (for tests) +
+

+ dbusmock-0.36.0 and PyGObject-3.52.3 +

+
+
+

+ Installation of AccountsService +

+

+ First, rename a directory whose presence prevents the build + system from running if dbusmock-0.36.0 is not installed: +

+
mv tests/dbusmock{,-tests}
+

+ Then fix a test script so that the new directory is found, + and adapt it for Python 3.12.0 or later: +

+
sed -e '/accounts_service\.py/s/dbusmock/dbusmock-tests/' \
+    -e 's/assertEquals/assertEqual/'                      \
+    -i tests/test-libaccountsservice.py
+

+ Fix one test that fails if the en_IE.UTF-8 locale is not installed: +

+
sed -i '/^SIMULATED_SYSTEM_LOCALE/s/en_IE.UTF-8/en_HK.iso88591/' tests/test-daemon.py
+

+ Install AccountsService by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..             \
+      --prefix=/usr        \
+      --buildtype=release  \
+      -D admin_group=adm   \
+      -D elogind=true      \
+      -D systemdsystemunitdir=no
+

+ Now adapt the shipped mocklibc copy to allow building the + test suite with GCC 14 or later: +

+
grep 'print_indent'     ../subprojects/mocklibc-1.0/src/netgroup.c \
+     | sed 's/ {/;/' >> ../subprojects/mocklibc-1.0/src/netgroup.h &&
+sed -i '1i#include <stdio.h>'                                      \
+    ../subprojects/mocklibc-1.0/src/netgroup.h
+

+ Build the package: +

+
ninja
+

+ To test the package, issue ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D admin_group=adm: + This switch sets the group for administrator accounts. +

+

+ -D docbook=true: This switch + enables building the D-Bus interface API documentation (needs + xmlto-0.0.29). +

+

+ -D gtk_doc=true: This switch + enables building the libaccountsservice API documentation + (needs GTK-Doc-1.34.0). +

+

+ -D vapi=false: This switch + disables building the vala bindings. Use it if you have not + installed Vala-0.56.18. +

+
+
+

+ Configuring AccountsService +

+

+ To allow users in the adm group to be listed as + Administrators, execute the following commands as the + root user: +

+
cat > /etc/polkit-1/rules.d/40-adm.rules << "EOF"
+polkit.addAdminRule(function(action, subject) {
+   return ["unix-group:adm"];
+   });
+EOF
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + accounts-daemon (in /usr/libexec) +
+
+ Installed Libraries: + libaccountsservice.so +
+
+ Installed Directories: + /usr/include/accountsservice-1.0, + /usr/share/accountsservice, + /usr/share/gtk-doc/html/libaccountsservice (optional), + and /var/lib/AccountsService +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ accounts-daemon +

+
+

+ is the AccountsService daemon +

+
+

+ libaccountsservice.so +

+
+

+ contains the AccountsService API functions +

+
+
+
+
+
+
+
+

+ acpid-2.0.34 +

+
+
+
+
+
+

+ Introduction to acpid +

+

+ The acpid (Advanced + Configuration and Power Interface event daemon) is a + completely flexible, totally extensible daemon for delivering + ACPI events. It listens on netlink interface and when an + event occurs, executes programs to handle the event. The + programs it executes are configured through a set of + configuration files, which can be dropped into place by + packages or by the user. +

+
+

+ Note +

+

+ Some other packages may handle some ACPI events as well and + they may conflict with this package. For example, + elogind-255.17 (read the + documentation for Handle*= in + logind.conf(5) + for details) and UPower-1.90.9 (used by many desktop + environments such as GNOME, KDE, and XFCE for handling ACPI + events). If you've installed such a package and it's enough + for your use case, this package is probably not needed. If + you really need this package, you must be careful + configuring it and the other packages handling ACPI events + to avoid conflicts. Notably, elogind-255.17 handles some + ACPI events by default, so the handling of these events by + elogind-255.17 should be + disabled first if handling these events with acpid (again, + read logind.conf(5) + for details). +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of acpid +

+

+ Install acpid by running the + following commands: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/acpid-2.0.34 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install                         &&
+install -v -m755 -d /etc/acpi/events &&
+cp -r samples /usr/share/doc/acpid-2.0.34
+
+
+

+ Configuring acpid +

+

+ acpid is configured by user + defined events. Place event files under /etc/acpi/events directory. If an event + occurs, acpid + recurses through the event files in order to see if the regex + defined after "event" matches. If they do, action is + executed. +

+

+ The following brief example will suspend the system when the + laptop lid is closed (it requires + pm-utils-1.4.1). The example also + disables the default handling of the lid close event by + elogind-255.17 when the system is + on battery and not connected to any external monitor, in + order to avoid a conflict: +

+
cat > /etc/acpi/events/lid << "EOF"
+event=button/lid
+action=/etc/acpi/lid.sh
+EOF
+
+cat > /etc/acpi/lid.sh << "EOF"
+#!/bin/sh
+/bin/grep -q open /proc/acpi/button/lid/LID/state && exit 0
+/usr/sbin/pm-suspend
+EOF
+chmod +x /etc/acpi/lid.sh
+
+mkdir -pv /etc/elogind/logind.conf.d
+echo HandleLidSwitch=ignore > /etc/elogind/logind.conf.d/acpi.conf
+

+ Unfortunately, not every computer labels ACPI events in the + same way (for example, the lid may be recognized as + LID0 instead of LID). To determine how your buttons are + recognized, use the acpi_listen tool. Also, + look in the samples directory + under /usr/share/doc/acpid-2.0.34 for more + examples. +

+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically start acpid when the system is + rebooted, install the /etc/rc.d/init.d/acpid boot script from + the blfs-bootscripts-20250225 package. +

+
make install-acpid
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + acpid, acpi_listen, and + kacpimon +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/acpi and + /usr/share/doc/acpid-2.0.34 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ acpid +

+
+

+ is a program that listens for ACPI events and + executes the rules that match the received event +

+
+

+ acpi_listen +

+
+

+ is a simple tool which connects to acpid and listens + for events +

+
+

+ kacpimon +

+
+

+ is a monitor program that connects to three sources + of ACPI events (events file, netlink and input + layer) and then reports on what it sees while it is + connected +

+
+
+
+
+
+
+
+

+ at-3.2.5 +

+
+
+
+
+
+

+ Introduction to at +

+

+ The at package provides + delayed job execution and batch processing. It is required + for Linux Standards Base (LSB) conformance. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ at + Dependencies +

+
+ Required +
+

+ An MTA +

+
+ Optional +
+

+ Linux-PAM-1.7.1 +

+
+
+

+ Installation of at +

+

+ Before building at, as the + root user you should create + the group and user atd which + will run the atd daemon: +

+
groupadd -g 17 atd                                                  &&
+useradd -d /dev/null -c "atd daemon" -g atd -s /bin/false -u 17 atd
+

+ Install at with the + following commands: +

+
./configure --with-daemon_username=atd        \
+            --with-daemon_groupname=atd       \
+            --with-jobdir=/var/spool/atjobs   \
+            --with-atspool=/var/spool/atspool \
+            SENDMAIL=/usr/sbin/sendmail       &&
+make -j1
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install docdir=/usr/share/doc/at-3.2.5 \
+             atdocdir=/usr/share/doc/at-3.2.5
+
+
+

+ Configuring at +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/at.allow and + /etc/at.deny determines who + can submit jobs via at or batch. +

+
+
+
+
+
+

+ Linux PAM Configuration +

+
+
+
+

+ If At has been built with + Linux PAM support, you + need to create a PAM + configuration file, to get it working correctly with BLFS. +

+

+ Issue the following commands as the root user to create the configuration + file for Linux PAM: +

+
cat > /etc/pam.d/atd << "EOF"
+# Begin /etc/pam.d/atd
+
+auth     required pam_unix.so
+account  required pam_unix.so
+password required pam_unix.so
+session  required pam_unix.so
+
+# End /etc/pam.d/atd
+EOF
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ Install the /etc/init.d/atd + init script from the blfs-bootscripts-20250225 + package. +

+
make install-atd
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + at, atd, atq (symlink), atrm + (symlink), atrun, and batch +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/at-3.2.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ at +

+
+

+ queues, examines or deletes jobs for later + execution +

+
+

+ atd +

+
+

+ is the daemon that runs jobs queued for later + execution +

+
+

+ atq +

+
+

+ lists the user's pending jobs, or all jobs, if + superuser +

+
+

+ atrm +

+
+

+ deletes jobs, identified by their job number +

+
+

+ atrun +

+
+

+ runs jobs queued for later execution +

+
+

+ batch +

+
+

+ is a script that executes commands when system load + levels permit +

+
+
+
+
+
+
+
+

+ autofs-5.1.9 +

+
+
+
+
+
+

+ Introduction to Autofs +

+

+ Autofs controls the + operation of the automount daemons. The automount daemons + automatically mount filesystems when they are accessed and + unmount them after a period of inactivity. This is done based + on a set of pre-configured maps. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Autofs Dependencies +

+
+ Required +
+

+ libtirpc-1.3.6 and rpcsvc-proto-1.4.4 +

+
+ Optional +
+

+ nfs-utils-2.8.3, libnsl-2.0.1, libxml2-2.14.5, MIT Kerberos + V5-1.22.1, OpenLDAP-2.6.10 (client only), and + Cyrus SASL-2.1.28 +

+
+
+

+ Kernel + Configuration +

+

+ Verify that automounter kernel support has been enabled: +

+
File systems --->
+  <*/M> Kernel automounter support (supports v3, v4 and v5)          [AUTOFS_FS]
+

+ Optionally, enable the following options in the kernel + configuration: +

+
File systems --->
+  [*] Network File Systems --->                            [NETWORK_FILESYSTEMS]
+    <*/M> NFS client support                                            [NFS_FS]
+    <*/M> SMB3 and CIFS support (advanced network filesystem)             [CIFS]
+

+ Recompile and install the new kernel, if necessary. +

+
+
+

+ Installation of Autofs +

+

+ Install Autofs by running + the following commands: +

+
./configure --prefix=/usr             \
+            --with-mapdir=/etc/autofs \
+            --with-libtirpc           \
+            --without-openldap        \
+            --mandir=/usr/share/man   &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Caution +

+

+ If autofs is already + installed on your system, be sure to backup your + configuration files. They'll be overwritten by the + following command. +

+
+

+ Install the default configuration files, still as the + root user: +

+
make install_samples
+
+
+

+ Command Explanations +

+

+ --with-libtirpc: This + switch forces the package to use libtirpc for RPC + functionality instead of relying on implementation from + Glibc, which was removed in LFS 8.1. +

+

+ --without-openldap: + This switch disables openldap if found. If openldap is + desired, omit this switch. Note that openldap support in + autofs requires MIT Kerberos V5-1.22.1. +

+
+
+

+ Configuring Autofs +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/sysconfig/autofs.conf, + /etc/autofs/auto.master, + /etc/autofs/auto.misc, and + /etc/autofs/auto.net +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The installation process creates auto.master, auto.misc, auto.smb, and auto.net. Replace the auto.master file with the following + commands as the root user: +

+
mv /etc/autofs/auto.master /etc/autofs/auto.master.bak &&
+cat > /etc/autofs/auto.master << "EOF"
+# Begin /etc/autofs/auto.master
+
+/media/auto  /etc/autofs/auto.misc  --ghost
+#/home        /etc/autofs/auto.home
+
+# End /etc/autofs/auto.master
+EOF
+

+ This file creates a new media directory, /media/auto that will overlay any + existing directory of the same name. In this example, the + file, /etc/autofs/auto.misc, + has a line: +

+
cd   -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
+

+ that will mount a cdrom as /media/auto/cd if that directory is + accessed. The --ghost option + tells the automounter to create “ghost” versions + (i.e. empty directories) of all the mount points listed in + the configuration file regardless whether any of the file + systems are actually mounted or not. This is very + convenient and highly recommended, because it will show you + the available auto-mountable file systems as existing + directories, even when their file systems aren't currently + mounted. Without the --ghost + option, you'll have to remember the names of the + directories. As soon as you try to access one of them, the + directory will be created and the file system will be + mounted. When the file system gets unmounted again, the + directory is destroyed too, unless the --ghost option was given. +

+
+

+ Note +

+

+ An alternative method would be to specify another + automount location such as /var/lib/auto/cdrom and create a + symbolic link from /media/cdrom to the automount location. +

+
+

+ The auto.misc file must be + configured to your working hardware. The loaded + configuration file should load your cdrom if /dev/cdrom is active or it can be edited + to match your device setup. Examples for floppies are + available in the file and easily activated. Documentation + for this file is available using the man 5 autofs command. +

+

+ In the second line, if enabled, a user's home directory + would be mounted via NFS upon login. The /etc/home.auto would need to exist and + have an entry similar to: +

+
joe  example.org:/export/home/joe
+

+ where the directory /export/home/joe is exported via NFS from + the system example.org. NFS shares are covered on the next + page. +

+

+ This package could also be used to mount SMB shares, + however that feature is not configured in these + instructions. For additional configuration information, see + the man pages for auto.master(5). + There are also web resources such as this AUTOFS HOWTO + available. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ autofs installs its own + boot script, but it has no capability for logging or visual + conformance with other BLFS scripts. It will be replaced by + an enhanced version. +

+

+ Install the /etc/init.d/autofs mount script included + with the blfs-bootscripts-20250225 package. +

+
make install-autofs
+

+ The time-out variable is set in /etc/sysconfig/autofs.conf. The installed + file sets a default of 60 seconds of inactivity before + unmounting the device. A much shorter time may be necessary + to protect buffer writing to a floppy if users tend to + remove the media prior to the timeout setting. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + automount +
+
+ Installed Libraries: + libautofs.so. lookup_dir.so, + lookup_file.so, lookup_files.so (symlink to + lookup_file.so), lookup_hosts.so, lookup_ldap.so + (optional), lookup_multi.so, lookup_nis.so (symlink to + lookup_yp.so), lookup_program.so, lookup_userhome.so, + lookup_yp.so, mount_afs.so, mount_autofs.so, + mount_bind.so, mount_changer.so, mount_ext2.so, + mount_ext3.so (symlink to mount_ext2.so), mount_ext4.so + (symlink to mount_ext2.so), mount_generic.so, + mount_nfs.so, mount_nfs4.so (symlink to mount_nfs.so), + parse_amd.so, and parse_sun.so +
+
+ Installed Directories: + /usr/lib/autofs and + /etc/autofs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ automount +

+
+

+ is the daemon that performs the mounting when a + request is made for the device +

+
+
+
+
+
+
+
+

+ BlueZ-5.83 +

+
+
+
+
+
+

+ Introduction to BlueZ +

+

+ The BlueZ package contains + the Bluetooth protocol stack for Linux. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.kernel.org/pub/linux/bluetooth/bluez-5.83.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 59cf5b86dd008180503a159109bbfb9a +

    +
  • +
  • +

    + Download size: 2.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 95 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (using parallelism=4; + with tests) +

    +
  • +
+
+

+ BlueZ Dependencies +

+
+ Required +
+

+ dbus-1.16.2, GLib-2.84.4, and libical-3.0.20 +

+
+ Optional +
+

+ docutils-0.21.2 (to generate man pages) +

+
+
+

+ Kernel + Configuration +

+

+ If you are building this package to use bluetooth devices + (rather than as a build dependency), enable the following + options in the kernel configuration, also the options in the + “Cryptographic + API” section if you intend to run the tests, + and recompile the kernel if necessary: +

+
General setup --->
+  # If it is disabled, [TIMERFD] and [EVENTFD] will be hidden and
+  # enabled implicitly.  We DO NOT recommend to enable [EXPERT]
+  # unless you are really an expert user:
+  [ /*] Configure standard kernel features (expert users) --->          [EXPERT]
+    [*] Enable timerfd() system call                                   [TIMERFD]
+    [*] Enable eventfd() system call                                   [EVENTFD]
+
+[*] Networking support --->                                                [NET]
+  <*/M> Bluetooth subsystem support --->                                    [BT]
+    [*]   Bluetooth Classic (BR/EDR) features                         [BT_BREDR]
+    <*/M>   RFCOMM protocol support                                  [BT_RFCOMM]
+    [*]       RFCOMM TTY support                                 [BT_RFCOMM_TTY]
+    <*/M>   BNEP protocol support                                      [BT_BNEP]
+    [*]       Multicast filter support                       [BT_BNEP_MC_FILTER]
+    [*]       Protocol filter support                     [BT_BNEP_PROTO_FILTER]
+    <*/M>   HIDP protocol support                                      [BT_HIDP]
+    Bluetooth device drivers --->
+      # Select the appropriate drivers for your bluetooth hardware.
+      # There are more vendor-specific drivers not listed here:
+      < /*/M> HCI USB driver                                       [BT_HCIBTUSB]
+      < /*/M> HCI SDIO driver                                     [BT_HCIBTSDIO]
+      < /*/M> HCI UART driver                                       [BT_HCIUART]
+  <*/M> RF switch subsystem support --->                                [RFKILL]
+
+-*- Cryptographic API --->                                              [CRYPTO]
+  Crypto core or helper --->
+    <*/M> Userspace cryptographic algorithm configuration          [CRYPTO_USER]
+  Block ciphers --->
+    <*/M> AES (Advanced Encryption Standard)                        [CRYPTO_AES]
+  AEAD (authenticated encryption with associated data) ciphers --->
+    <*/M> CCM (Counter with Cipher Block Chaining-MAC)              [CRYPTO_CCM]
+  Hashes, digests, and MACs --->
+    <*/M> CMAC (Cipher-based MAC)                                  [CRYPTO_CMAC]
+  Userspace interface --->
+    <*/M> Hash algorithms                                 [CRYPTO_USER_API_HASH]
+    <*/M> Symmetric key cipher algorithms             [CRYPTO_USER_API_SKCIPHER]
+    <*/M> AEAD cipher algorithms                          [CRYPTO_USER_API_AEAD]
+
+
+

+ Installation of BlueZ +

+

+ Install BlueZ by running the + following commands: +

+
./configure --prefix=/usr         \
+            --sysconfdir=/etc     \
+            --localstatedir=/var  \
+            --enable-library      \
+            --disable-manpages    \
+            --disable-systemd     &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin
+

+ Install the main configuration file as the root user: +

+
install -v -dm755 /etc/bluetooth &&
+install -v -m644 src/main.conf /etc/bluetooth/main.conf
+

+ If desired, install the API documentation as the root user: +

+
install -v -dm755 /usr/share/doc/bluez-5.83 &&
+install -v -m644 doc/*.txt /usr/share/doc/bluez-5.83
+

+ Install a missing D-Bus service as the root user: +

+
install -m644 ./obexd/src/org.bluez.obex.service /usr/share/dbus-1/services
+
+
+

+ Command Explanations +

+

+ --disable-manpages: + This switch disables generating the manual pages because of + the reliance on 'rst2man' in docutils. Remove this switch if + you have docutils-0.21.2 installed and wish to + generate the manual pages. +

+

+ --enable-library: + This switch enables building the BlueZ 4 compatibility library which is + required by some applications. +

+

+ --disable-systemd: + This switch is needed because systemd is not part of LFS/BLFS. If you + are using systemd, remove this switch. +

+

+ ln -svf + ../libexec/bluetooth/bluetoothd /usr/sbin: + This command makes access to the bluetooth daemon more + convenient. +

+
+
+

+ Configuring BlueZ +

+
+
+
+
+

+ Configuration Files +

+
+
+
+

+ /etc/bluetooth/main.conf is + installed automatically during the install. Additionally, + there are three supplementary configuration files. + /etc/sysconfig/bluetooth is installed as a part of the boot + script below. In addition, you optionally can install the + following, as the root + user: +

+
cat > /etc/bluetooth/rfcomm.conf << "EOF"
+# Start rfcomm.conf
+# Set up the RFCOMM configuration of the Bluetooth subsystem in the Linux kernel.
+# Use one line per command
+# See the rfcomm man page for options
+
+
+# End of rfcomm.conf
+EOF
+
cat > /etc/bluetooth/uart.conf << "EOF"
+# Start uart.conf
+# Attach serial devices via UART HCI to BlueZ stack
+# Use one line per device
+# See the hciattach man page for options
+
+# End of uart.conf
+EOF
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically start the bluetoothd daemon when + the system is rebooted, install the /etc/rc.d/init.d/bluetooth bootscript + from the blfs-bootscripts-20250225 package. +

+
make install-bluetooth
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bluemoon, bluetoothctl, bluetoothd + (symlink), btattach, btmon, hex2hcd, l2ping, l2test, + mpris-proxy, and rctest +
+
+ Installed Library: + libbluetooth.so +
+
+ Installed Directories: + /etc/bluetooth, + /usr/{include,libexec}/bluetooth, and + /usr/share/doc/bluez-5.83 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bluemoon +

+
+

+ is a Bluetooth configuration utility +

+
+

+ bluetoothctl +

+
+

+ is the interactive Bluetooth control program +

+
+

+ bluetoothd +

+
+

+ is the Bluetooth daemon +

+
+

+ btmon +

+
+

+ provides access to the Bluetooth subsystem monitor + infrastructure for reading HCI traces +

+
+

+ hex2hcd +

+
+

+ is used to convert a file needed by Broadcom + devices to hcd (Broadcom bluetooth firmware) format +

+
+

+ l2ping +

+
+

+ is used to send a L2CAP echo request to the + Bluetooth MAC address given in dotted hex notation +

+
+

+ l2test +

+
+

+ is a L2CAP testing program +

+
+

+ rctest +

+
+

+ is used to test RFCOMM communications on the + Bluetooth stack +

+
+

+ libbluetooth.so +

+
+

+ contains the BlueZ + 4 API functions +

+
+
+
+
+
+
+
+

+ Bubblewrap-0.11.0 +

+
+
+
+
+
+

+ Introduction to Bubblewrap +

+

+ Bubblewrap is a setuid + implementation of user namespaces, or sandboxing, that + provides access to a subset of kernel user namespace + features. Bubblewrap allows user owned processes to run in an + isolated environment with limited access to the underlying + filesystem. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Bubblewrap Dependencies +

+
+ Optional +
+

+ libxslt-1.1.43 (to generate manual + pages), libseccomp-2.6.0 (built with python + bindings, for tests), bash-completion, + and SELinux +

+
+
+

+ Kernel + Configuration +

+

+ When this package began, upstream expected it could be + installed suid-root. That was a long time ago, suid-root is + generally considered a bad idea. As well as the default + namespaces, this package requires the optional User namespace + to be enabled. If that has not yet been enabled, select the + following option in the kernel configuration and recompile + the kernel: +

+
General setup --->
+  -*- Namespaces support --->                                       [NAMESPACES]
+    [*] User namespace                                                 [USER_NS]
+
+
+

+ Installation of Bubblewrap +

+

+ Install Bubblewrap by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ Next, if you desire to run the test suite, fix an issue + caused by the merged-/usr configuration in LFS: +

+
sed 's@symlink usr/lib64@ro-bind-try /lib64@' -i ../tests/libtest.sh
+

+ To test the results, issue (as a user other than the + root user): ninja test +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + bwrap +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ bwrap +

+
+

+ generates a sandbox for a program to run in +

+
+
+
+
+
+
+
+

+ Colord-1.4.8 +

+
+
+
+
+
+

+ Introduction to Colord +

+

+ Colord is a system service + that makes it easy to manage, install, and generate color + profiles. It is used mainly by GNOME Color Manager for system + integration and use when no users are logged in. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Colord Dependencies +

+
+ Required +
+

+ dbus-1.16.2, GLib-2.84.4 (GObject Introspection + recommended), Little CMS-2.17, libgudev-238, libgusb-0.4.9, Polkit-126, and SQLite-3.50.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ gnome-desktop-44.3 and colord-gtk-0.3.1 (to build the example + tools), docbook-xml-5.0, docbook-xsl-ns-1.79.2, and + libxslt-1.1.43 (to build the man pages), + GTK-Doc-1.34.0, SANE-1.4.0, ArgyllCMS, and + Bash + Completion +

+
+
+

+ Installation of Colord +

+

+ There should be a dedicated user and group to take control of + the colord daemon after it has started. Issue the following + commands as the root user: +

+
groupadd -g 71 colord &&
+useradd -c "Color Daemon Owner" -d /var/lib/colord -u 71 \
+        -g colord -s /bin/false colord
+

+ Install Colord by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                  \
+      --prefix=/usr             \
+      --buildtype=release       \
+      -D daemon_user=colord     \
+      -D vapi=true              \
+      -D systemd=false          \
+      -D libcolordcompat=true   \
+      -D argyllcms_sensor=false \
+      -D bash_completion=false  \
+      -D docs=false             \
+      -D man=false              &&
+ninja
+

+ If docbook-xml-5.0, docbook-xsl-ns-1.79.2, and + libxslt-1.1.43 are installed, build the + man pages: +

+
sed -e '/class="manual"/i<refmiscinfo class="source">colord</refmiscinfo>' \
+    -i ../man/*.xml &&
+meson configure -D man=true &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: ninja test. One test, + colord-self-test-daemon, will + fail if the package is already installed. The test suite must + be run with the system-wide D-Bus Daemon running. +

+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + daemon_user=colord: This switch is used so the + colord daemon will run as an unprivileged user instead of the + root user. +

+

+ -D vapi=true: This + switch enables building the Vala bindings. Remove if you don't have + Vala-0.56.18 installed. +

+

+ -D systemd=false: + This switch disables support for systemd login in Colord applications. +

+

+ -D + libcolordcompat=true: This switch enables + building a compatibility library for older packages that use + Colord. +

+

+ -D + argyllcms_sensor=false: This switch disables the + ArgLLCMS sensor driver. Omit if you have ArgyllCMS installed and + wish to use it. +

+

+ -D + bash_completion=false: This switch disables Bash + Completion support for Colord applications. +

+

+ -D docs=false: This + switch disables building of documentation. Omit if you have + GTK-Doc-1.34.0 available. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cd-create-profile, cd-fix-profile, + cd-iccdump, cd-it8, and colormgr +
+
+ Installed Libraries: + libcolord.so, libcolordcompat.so, + libcolordprivate.so, and libcolorhug.so +
+
+ Installed Directories: + /usr/include/colord-1, + /usr/lib/colord-{plugins,sensors}, /usr/share/color{d}, + /usr/share/gtk-doc/html/colord, and + /var/lib/colord +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cd-create-profile +

+
+

+ is the Color Manager Profile Creation Tool +

+
+

+ cd-fix-profile +

+
+

+ is a tool used to fix metadata in ICC profiles +

+
+

+ cd-iccdump +

+
+

+ dumps the contents of an ICC profile as human + readable text +

+
+

+ cd-it8 +

+
+

+ is the Color Manager Testing Tool +

+
+

+ colormgr +

+
+

+ is a text-mode program that allows you to interact + with colord on the command line +

+
+

+ libcolord.so +

+
+

+ contains the Colord API functions +

+
+

+ libcolordcompat.so +

+
+

+ contains legacy API functions for compatibility + with older applications +

+
+

+ libcolordprivate.so +

+
+

+ contains internal API functions for the programs + included with Colord +

+
+

+ libcolorhug.so +

+
+

+ contains a simple display hardware colorimiter +

+
+
+
+
+
+
+
+

+ cpio-2.15 +

+
+
+
+
+
+

+ Introduction to cpio +

+

+ The cpio package contains + tools for archiving. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 3394d444ca1905ea56c94b628b706a0b +

    +
  • +
  • +

    + Download size: 1.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 21 MB (with tests and + docs) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (with tests and docs) +

    +
  • +
+
+

+ CPIO + Dependencies +

+
+ Optional +
+

+ texlive-20250308 (or install-tl-unx) +

+
+
+

+ Installation of cpio +

+

+ Add a workaround for an issue shown by gcc15: +

+
sed -e "/^extern int (\*xstat)/s/()/(const char * restrict,  struct stat * restrict)/" \
+    -i src/extern.h
+sed -e "/^int (\*xstat)/s/()/(const char * restrict,  struct stat * restrict)/" \
+    -i src/global.c
+

+ Install cpio by running the + following commands: +

+
./configure --prefix=/usr \
+            --enable-mt   \
+            --with-rmt=/usr/libexec/rmt &&
+make &&
+makeinfo --html            -o doc/html      doc/cpio.texi &&
+makeinfo --html --no-split -o doc/cpio.html doc/cpio.texi &&
+makeinfo --plaintext       -o doc/cpio.txt  doc/cpio.texi
+

+ If you have texlive-20250308 installed and + wish to create PDF or Postscript documentation, issue one or + both of the following commands: +

+
make -C doc pdf &&
+make -C doc ps
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m755 -d /usr/share/doc/cpio-2.15/html &&
+install -v -m644    doc/html/* \
+                    /usr/share/doc/cpio-2.15/html &&
+install -v -m644    doc/cpio.{html,txt} \
+                    /usr/share/doc/cpio-2.15
+

+ If you built PDF or Postscript documentation, install it by + issuing the following commands as the root user: +

+
install -v -m644 doc/cpio.{pdf,ps,dvi} \
+                 /usr/share/doc/cpio-2.15
+
+
+

+ Command Explanations +

+

+ --enable-mt: This + parameter forces the building and installation of the + mt program. +

+

+ --with-rmt=/usr/libexec/rmt: + This parameter inhibits building the rmt program as it is + already installed by the Tar + package in LFS. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cpio and mt +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/cpio-2.15 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ cpio +

+
+

+ copies files to and from archives +

+
+

+ mt +

+
+

+ controls magnetic tape drive operations +

+
+
+
+
+
+
+
+

+ cups-pk-helper-0.2.7 +

+
+
+
+
+
+

+ Introduction to cups-pk-helper +

+

+ The cups-pk-helper package + contains a PolicyKit helper + used to configure Cups with + fine-grained privileges. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ cups-pk-helper Dependencies +

+
+ Required +
+

+ Cups-2.4.12 and Polkit-126 +

+
+
+

+ Installation of cups-pk-helper +

+

+ Install cups-pk-helper by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cups-pk-helper-mechanism (library + executable) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ dbus-1.16.2 +

+
+
+
+
+
+

+ Introduction to D-Bus +

+

+ D-Bus is a message bus + system, a simple way for applications to talk to one another. + D-Bus supplies both a system + daemon (for events such as “new hardware device added” or + “printer queue + changed”) and a per-user-login-session daemon + (for general IPC needs among user applications). Also, the + message bus is built on top of a general one-to-one message + passing framework, which can be used by any two applications + to communicate directly (without going through the message + bus daemon). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 97832e6f0a260936d28536e5349c22e5 +

    +
  • +
  • +

    + Download size: 1.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 25 MB (add 6 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (add 0.4 SBU for tests) +

    +
  • +
+
+

+ D-Bus Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ For the tests: D-Bus Python-1.4.0, PyGObject-3.52.3, and Valgrind-3.25.1; + for documentation: Doxygen-1.14.0, xmlto-0.0.29, Ducktype, + and Yelp + Tools +

+
+
+

+ Installation of D-Bus +

+

+ Install D-Bus by running the + following commands (you may wish to review the + meson_options.txt file first and add any additional desired + options to the meson setup line below): +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr          \
+            --buildtype=release    \
+            --wrap-mode=nofallback \
+            -D systemd=disabled    \
+            .. &&
+ninja
+

+ See below for test instructions. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you are using a DESTDIR install, dbus-daemon-launch-helper + needs to be fixed afterwards. Issue, as root user: +

+
chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &&
+chmod -v      4750       /usr/libexec/dbus-daemon-launch-helper
+

+ If you are still building your system in chroot or you did + not start the daemon yet, but you want to compile some + packages that require D-Bus, + generate the D-Bus UUID to + avoid warnings when compiling some packages with the + following command as the root + user: +

+
dbus-uuidgen --ensure
+

+ If using elogind-255.17, create a symlink to the + /var/lib/dbus/machine-id file: +

+
ln -sfv /var/lib/dbus/machine-id /etc
+

+ Finally, still as the root + user, rename the documentation directory (it only exists if + the optional dependencies are satisfied for at least one + documentation format) to make it versioned: +

+
if [ -e /usr/share/doc/dbus ]; then
+  rm -rf /usr/share/doc/dbus-1.16.2    &&
+  mv -v  /usr/share/doc/dbus{,-1.16.2}
+fi
+

+ Many tests are disabled unless both D-Bus + Python-1.4.0 and PyGObject-3.52.3 have been + installed. They must be run as an unprivileged user from a + local session with bus address. To run the standard tests + issue ninja + test. +

+

+ If you want to run the unit regression tests, meson requires + additional parameters which expose additional functionality + in the binaries that are not intended to be used in a + production build of D-Bus. + If you would like to run the tests, issue the following + commands (for the tests, you don't need to build the docs): +

+
meson configure -D asserts=true -D intrusive_tests=true &&
+ninja test
+
+
+

+ Command Explanations +

+

+ --wrap-mode=nofallback: This + switch prevents meson from using subproject + fallbacks for any dependency declarations in the build files, + preventing it from downloading any optional dependencies + which are not installed on the system. +

+

+ -D systemd=disabled: + Don't install systemd support files even if libsystemd exists (i.e. the elogind-255.17 package is installed). +

+

+ -D + intrusive_tests=true: Builds extra parts of the + code to support all tests. Do not use on a production build. +

+

+ -D asserts=true: + Enables debugging code to run assertions for statements + normally assumed to be true. This prevents a warning that + '-D asserts=true' on + its own is only useful for profiling and might not give true + results for all tests, but adds its own NOTE that this should + not be used in a production build. +

+
+
+

+ Configuring D-Bus +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/dbus-1/session.conf, + /etc/dbus-1/system.conf and + /etc/dbus-1/system.d/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The configuration files listed above should probably not be + modified. If changes are required, you should create + /etc/dbus-1/session-local.conf and/or + /etc/dbus-1/system-local.conf + and make any desired changes to these files. +

+

+ If any packages install a D-Bus .service file outside of the standard + /usr/share/dbus-1/services + directory, that directory should be added to the local + session configuration. For instance, /usr/local/share/dbus-1/services can be + added by performing the following commands as the + root user: +

+
cat > /etc/dbus-1/session-local.conf << "EOF"
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+  <!-- Search for .service files in /usr/local -->
+  <servicedir>/usr/local/share/dbus-1/services</servicedir>
+
+</busconfig>
+EOF
+
+
+
+
+
+

+ D-Bus + Session Daemon +

+
+
+
+

+ To automatically start dbus-daemon when the + system is rebooted, install the /etc/rc.d/init.d/dbus bootscript from the + blfs-bootscripts-20250225 package. +

+
make install-dbus
+

+ If this is the first time to install D-Bus on the system and you are not + operating in a chroot environment, you can immediately + start dbus-daemon without + rebooting the system: +

+
/etc/init.d/dbus start
+

+ Note that this boot script only starts the system-wide + D-Bus daemon. Each user + requiring access to D-Bus + services will also need to run a session daemon as well. + There are many methods you can use to start a session + daemon using the dbus-launch command. + Review the dbus-launch man page for + details about the available parameters and options. Here + are some suggestions and examples: +

+
+
    +
  • +

    + Add dbus-launch to the + line in the ~/.xinitrc + file that starts your graphical desktop environment. +

    +
  • +
  • +

    + If you use gdm or some other + display manager that calls the ~/.xsession file, you can add + dbus-launch to the + line in your ~/.xsession file that starts your + graphical desktop environment. The syntax would be + similar to the example in the ~/.xinitrc file. +

    +
  • +
  • +

    + The examples shown previously use dbus-launch to + specify a program to be run. This has the benefit + (when also using the --exit-with-x11 + parameter) of stopping the session daemon when the + specified program is stopped. You can also start the + session daemon in your system or personal startup + scripts by adding the following lines: +

    +
    # Start the D-Bus session daemon
    +eval `dbus-launch`
    +export DBUS_SESSION_BUS_ADDRESS
    +

    + This method will not stop the session daemon when you + exit your shell, therefore you should add the + following line to your ~/.bash_logout file: +

    +
    # Kill the D-Bus session daemon
    +kill $DBUS_SESSION_BUS_PID
    +
  • +
+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dbus-cleanup-sockets, dbus-daemon, + dbus-launch, dbus-monitor, dbus-run-session, dbus-send, + dbus-test-tool, dbus-update-activation-environment, and + dbus-uuidgen +
+
+ Installed Library: + libdbus-1.so +
+
+ Installed Directories: + /etc/dbus-1, + /usr/{include,lib}/dbus-1.0, /usr/lib/cmake/DBus1, + /usr/share/dbus-1, /usr/share/xml/dbus-1, + /usr/share/doc/dbus-1.16.2, and + /var/{lib,run}/dbus +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ dbus-cleanup-sockets +

+
+

+ is used to clean up leftover sockets in a directory +

+
+

+ dbus-daemon +

+
+

+ is the D-Bus + message bus daemon +

+
+

+ dbus-launch +

+
+

+ is used to start dbus-daemon from + a shell script. It would normally be called from a + user's login scripts +

+
+

+ dbus-monitor +

+
+

+ is used to monitor messages going through a + D-Bus message bus +

+
+

+ dbus-run-session +

+
+

+ starts a process as a new D-Bus session +

+
+

+ dbus-send +

+
+

+ is used to send a message to a D-Bus message bus +

+
+

+ dbus-test-tool +

+
+

+ is a D-Bus traffic + generator and test tool; it is a multi-purpose tool + for debugging and profiling D-Bus +

+
+

+ dbus-update-activation-environment +

+
+

+ is used to update the environment used for + D-Bus session + services; it updates the list of environment + variables used by dbus-daemon + --session when it activates session + services without using systemd +

+
+

+ dbus-uuidgen +

+
+

+ is used to generate a universally unique ID +

+
+

+ libdbus-1.so +

+
+

+ contains the API functions used by the D-Bus message daemon. + D-Bus is first a + library that provides one-to-one communication + between any two applications; dbus-daemon is an + application that uses this library to implement a + message bus daemon +

+
+
+
+
+
+
+
+

+ elogind-255.17 +

+
+
+
+
+
+

+ Introduction to elogind +

+

+ elogind is the systemd project's "logind", extracted to + be a standalone daemon. It integrates with Linux-PAM-1.7.1 + to track all the users logged in to a system, and whether + they are logged in graphically, on the console, or remotely. + Elogind exposes this + information via the standard org.freedesktop.login1 + D-Bus interface, and also + through the file system using systemd's standard /run/systemd layout. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ elogind Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ lxml-6.0.0, zsh-5.9, Valgrind-3.25.1 (needed for + tests), audit-userspace, + bash-completion, + + kexec, and SELinux +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Logind +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
File systems --->
+  [*] Inotify support for userspace                               [INOTIFY_USER]
+  Pseudo filesystems --->
+    [*] Tmpfs virtual memory file system support (former shm fs)         [TMPFS]
+    [*]   Tmpfs POSIX Access Control Lists                     [TMPFS_POSIX_ACL]
+

+ In addition, some tests need the userspace cryptographic + kernel API, which is enabled with: +

+
-*- Cryptographic API --->                                              [CRYPTO]
+  Crypto core or helper --->
+    <*/M> Userspace cryptographic algorithm configuration          [CRYPTO_USER]
+  Userspace interface --->
+    <*/M> Hash algorithms                                 [CRYPTO_USER_API_HASH]
+
+
+

+ Installation of elogind +

+

+ Install elogind by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                               \
+      --prefix=/usr                          \
+      --buildtype=release                    \
+      -D man=auto                            \
+      -D docdir=/usr/share/doc/elogind-255.17 \
+      -D cgroup-controller=elogind           \
+      -D dev-kvm-mode=0660                   \
+      -D dbuspolicydir=/etc/dbus-1/system.d &&
+ninja
+

+ To test the results, issue: ninja test. A few tests are + skipped if not run with root + privileges. Three tests, test-login, dbus-docs-fresh, and check-version-history, are known to fail. +

+

+ Now, as the root user: +

+
ninja install                                           &&
+ln -sfv  libelogind.pc /usr/lib/pkgconfig/libsystemd.pc &&
+ln -sfvn elogind /usr/include/systemd
+
+
+

+ Command Explanations +

+

+ -D + docdir=/usr/share/doc/elogind-255.17: This is + needed to install documentation in a versioned directory. +

+

+ -D + cgroup-controller=elogind: This switch is + necessary to build this package when the kernel is not built + with CONFIG_CGROUPS enabled. Note + that elogind strictly needs + a kernel with CONFIG_CGROUPS + enabled at runtime, but this switch will allow building the + package first. +

+

+ -D + dbuspolicydir=/etc/dbus-1/system.d: This switch + sets the location of the D-Bus policy directory. +

+

+ -D dev-kvm-mode=0660: + The LFS udev rule sets the mode of /dev/kvm to 0660. This option ensures the + elogind udev rules consistent with the LFS configuration. +

+

+ -D man=auto: The + default value of this switch is false. Setting it to auto allows building and + installing the man pages if the recommended dependencies are + installed. +

+

+ -D html=auto: The default value + of this switch is false. Setting it to auto allows building and + installing the html documentation if the recommended + dependencies are installed. +

+

+ -D + default-kill-user-processes=false: Determines whether + the processes of a user should be killed when the user logs + out. The default is true, but this defeats the + traditional use of screen or tmux. This can also be + changed in the configuration file (see below). +

+

+ ln -s ...: + These commands install symlinks so that software packages can + find the systemd-compatible library and headers. +

+
+
+

+ Configuring elogind +

+
+
+
+
+

+ Config File +

+
+
+
+

+ /etc/elogind/logind.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The installed file /etc/elogind/logind.conf contains all the + possible options with their defaults, commented out. You + may wish to disable automatically killing user processes + when the user logs out, by running, as the root user: +

+
sed -e '/\[Login\]/a KillUserProcesses=no' \
+    -i /etc/elogind/logind.conf
+

+ Each user will need to register a user session using + Linux-PAM at login. The + /etc/pam.d/system-session + file needs to be modified and a new file must be created in + order for elogind to work + correctly. Run the following commands as the root user: +

+
cat >> /etc/pam.d/system-session << "EOF" &&
+# Begin elogind addition
+
+session  required    pam_loginuid.so
+session  optional    pam_elogind.so
+
+# End elogind addition
+EOF
+cat > /etc/pam.d/elogind-user << "EOF"
+# Begin /etc/pam.d/elogind-user
+
+account  required    pam_access.so
+account  include     system-account
+
+session  required    pam_env.so
+session  required    pam_limits.so
+session  required    pam_unix.so
+session  required    pam_loginuid.so
+session  optional    pam_keyinit.so force revoke
+session  optional    pam_elogind.so
+
+auth     required    pam_deny.so
+password required    pam_deny.so
+
+# End /etc/pam.d/elogind-user
+EOF
+
+

+ Note +

+

+ After completion of elogind, you should check that it + functions properly. First ensure that dbus is running. It may be easiest + to do this by rebooting the system. After logging in + again, run the command loginctl. The result + should indicate that a SESSION and a SEAT have been + created. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + busctl, elogind-inhibit, and + loginctl +
+
+ Installed Library: + libelogind.so +
+
+ Installed Directories: + /usr/lib/elogind, /etc/elogind, + /usr/include/elogind, and + /usr/share/doc/elogind-255.17 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ busctl +

+
+

+ is used to introspect and monitor the D-Bus bus +

+
+

+ elogind-inhibit +

+
+

+ is used to execute a program with a shutdown, sleep + or idle inhibitor lock taken +

+
+

+ loginctl +

+
+

+ is used to introspect and control the state of the + elogind Login Manager +

+
+

+ libelogind.so +

+
+

+ is the main elogind utility library +

+
+
+
+
+
+
+
+

+ blocaled-0.7 +

+
+
+
+
+
+

+ Introduction to blocaled +

+

+ blocaled is an + implementation of the org.freedesktop.locale1 D-Bus + protocol, which normally comes with systemd. It is needed by the + GNOME desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ blocaled Dependencies +

+
+ Required +
+

+ Polkit-126 and libdaemon-0.14 +

+
+
+

+ Installation of blocaled +

+

+ Install blocaled by running + the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuring blocaled +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/blocaled.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ /etc/blocaled.conf contains + the location of the settings files used by blocaled. The defaults are suitable + for BLFS. Information about the entries is available as + comments in the file. +

+

+ The org.freedesktop.locale1 protocol + is unable to export locale variables. Locale settings are + stored by default in /etc/locale.conf. We need to retrieve + them in the bash profile. As the root user, issue: +

+
cat > /etc/profile.d/i18n.sh << "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
+

+ Then the /etc/locale file + should be generated, as the root user: +

+
cat > /etc/locale.conf << EOF
+# Begin /etc/locale.conf
+
+LANG=$LANG
+
+# End /etc/locale.conf
+EOF
+

+ If you plan to run an X (or Wayland) Window system, you may + want to set up your X keyboard. The best way to do it is to + retrieve the settings from /etc/sysconfig/console, and feed them to + the blocaled daemon. As + the root user: +

+
source /etc/sysconfig/console &&
+KEYMAP=${KEYMAP:-us}          &&
+
+gdbus call --system                                             \
+           --dest org.freedesktop.locale1                       \
+           --object-path /org/freedesktop/locale1               \
+           --method org.freedesktop.locale1.SetVConsoleKeyboard \
+           "$KEYMAP" "$KEYMAP_CORRECTIONS" true true
+

+ This should create or modify the Xorg configuration + file[2] to match the keyboard settings set + in KEYMAP. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + blocaled (in /usr/libexec) +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/blocaled +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ blocaled +

+
+

+ is the daemon implementing the org.freedesktop.locale1 + D-Bus protocol +

+
+
+
+
+
+
+
+

+ [2] The default Xorg configuration file is + /etc/X11/xorg.conf.d/30-keyboard.conf. +

+
+
+
+
+
+
+

+ Fcron-3.4.0 +

+
+
+
+
+
+

+ Introduction to Fcron +

+

+ The Fcron package contains a + periodical command scheduler which aims at replacing + Vixie Cron. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): http://fcron.free.fr/archives/fcron-3.4.0.src.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 5732a766df42a090749c0c96a6afd42b +

    +
  • +
  • +

    + Download size: 608 KB +

    +
  • +
  • +

    + Estimated disk space required: 4.2 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ Fcron Dependencies +

+
+ Optional +
+

+ An MTA, + text + editor (default is vi from the Vim-9.1.1629 package), + Linux-PAM-1.7.1, and DocBook-utils-0.6.14 +

+
+
+

+ Installation of Fcron +

+

+ Fcron uses the cron facility of + syslog to log + all messages. Since LFS does not set up this facility in + /etc/syslog.conf, it needs to + be done prior to installing Fcron. This command will append the + necessary line to the current /etc/syslog.conf (perform as the + root user): +

+
cat >> /etc/syslog.conf << "EOF"
+# Begin fcron addition to /etc/syslog.conf
+
+cron.* -/var/log/cron.log
+
+# End fcron addition
+EOF
+

+ The configuration file has been modified, so reloading the + sysklogd daemon + will activate the changes (again as the root user). +

+
/etc/rc.d/init.d/sysklogd reload
+

+ For security reasons, an unprivileged user and group for + Fcron should be created + (perform as the root user): +

+
groupadd -g 22 fcron &&
+useradd -d /dev/null -c "Fcron User" -g fcron -s /bin/false -u 22 fcron
+

+ Now fix some locations hard coded in the documentation: +

+
find doc -type f -exec sed -i 's:/usr/local::g' {} \;
+

+ Install Fcron by running the + following commands: +

+
./configure --prefix=/usr          \
+            --sysconfdir=/etc      \
+            --localstatedir=/var   \
+            --without-sendmail     \
+            --with-boot-install=no \
+            --with-systemdsystemunitdir=no &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ DESTDIR install must be done as root user. Furthermore, if PAM + configuration files should be installed in /etc/pam.d, you have to create this + directory in the DESTDIR before doing the install. +

+
+
+

+ Command Explanations +

+

+ --without-sendmail: + By default, Fcron will + attempt to use the sendmail command from an + MTA package + to email you the results of the fcron script. This switch + is used to disable default email notification. Omit the + switch to enable the default. Alternatively, you can use the + --with-sendmail=</path/to/MTA + command> to use a different mailer + command. +

+

+ --with-boot-install=no: This + prevents installation of the bootscript included with the + package. +

+

+ --with-systemdsystemunitdir=no: + This prevents building the systemd units, which are not needed for + a SYS V system. +

+

+ --with-editor=</path/to/editor>: + This switch allows you to set the default text editor. +

+

+ --with-dsssl-dir=</path/to/dsssl-stylesheets>: + May be used if you have DocBook-utils-0.6.14 + installed. Currently, the dsssl stylesheets are located at + /usr/share/sgml/docbook/dsssl-stylesheets-1.79. +

+
+
+

+ Configuring Fcron +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/fcron.conf, /etc/fcron.allow, and /etc/fcron.deny +

+
+
+
+
+
+

+ Configuration + Information +

+
+
+
+

+ There are no required changes in any of the config files. + Configuration information can be found in the man page for + fcron.conf. +

+

+ fcron scripts + are written using fcrontab. Refer to the + fcrontab man + page for proper parameters to address your situation. +

+

+ If Linux-PAM is installed, two PAM + configuration files are installed in etc/pam.d. Alternatively if etc/pam.d is not used, the installation + will append two configuration sections to the existing + /etc/pam.conf file. You + should ensure the files match your preferences. Modify them + as required to suit your needs. +

+
+ Periodic Jobs +
+

+ If you would like to set up a periodic hierarchy for the + root user, first issue the following commands (as the + root user) to create the + /usr/bin/run-parts script: +

+
cat > /usr/bin/run-parts << "EOF" &&
+#!/bin/sh
+# run-parts:  Runs all the scripts found in a directory.
+# from Slackware, by Patrick J. Volkerding with ideas borrowed
+# from the Red Hat and Debian versions of this utility.
+
+# keep going when something fails
+set +e
+
+if [ $# -lt 1 ]; then
+  echo "Usage: run-parts <directory>"
+  exit 1
+fi
+
+if [ ! -d $1 ]; then
+  echo "Not a directory: $1"
+  echo "Usage: run-parts <directory>"
+  exit 1
+fi
+
+# There are several types of files that we would like to
+# ignore automatically, as they are likely to be backups
+# of other scripts:
+IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp"
+
+# Main loop:
+for SCRIPT in $1/* ; do
+  # If this is not a regular file, skip it:
+  if [ ! -f $SCRIPT ]; then
+    continue
+  fi
+  # Determine if this file should be skipped by suffix:
+  SKIP=false
+  for SUFFIX in $IGNORE_SUFFIXES ; do
+    if [ ! "$(basename $SCRIPT $SUFFIX)" = "$(basename $SCRIPT)" ]; then
+      SKIP=true
+      break
+    fi
+  done
+  if [ "$SKIP" = "true" ]; then
+    continue
+  fi
+  # If we've made it this far, then run the script if it's executable:
+  if [ -x $SCRIPT ]; then
+    $SCRIPT || echo "$SCRIPT failed."
+  fi
+done
+
+exit 0
+EOF
+chmod -v 755 /usr/bin/run-parts
+

+ Next, create the directory layout for the periodic jobs + (again as the root user): +

+
install -vdm754 /etc/cron.{hourly,daily,weekly,monthly}
+

+ Finally, add the run-parts to the system + fcrontab (while still the root user): +

+
cat > /var/spool/fcron/systab.orig << "EOF"
+&bootrun 01 * * * * root run-parts /etc/cron.hourly
+&bootrun 02 4 * * * root run-parts /etc/cron.daily
+&bootrun 22 4 * * 0 root run-parts /etc/cron.weekly
+&bootrun 42 4 1 * * root run-parts /etc/cron.monthly
+EOF
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/fcron init script from + the blfs-bootscripts-20250225 package. +

+
make install-fcron
+

+ Finally, again as the root + user, start fcron and generate the /var/spool/fcron/systab file: +

+
/etc/rc.d/init.d/fcron start &&
+fcrontab -z -u systab
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fcron, fcrondyn, fcronsighup, and + fcrontab +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/fcron-3.4.0 and + /var/spool/fcron +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ fcron +

+
+

+ is the scheduling daemon +

+
+

+ fcrondyn +

+
+

+ is a user tool intended to interact with a running + fcron + daemon +

+
+

+ fcronsighup +

+
+

+ instructs fcron to reread + the Fcron tables +

+
+

+ fcrontab +

+
+

+ is a program used to install, edit, list and remove + the tables used by fcron +

+
+
+
+
+
+
+
+

+ GPM-1.20.7 +

+
+
+
+
+
+

+ Introduction to GPM +

+

+ The GPM (General Purpose + Mouse daemon) package contains a mouse server for the console + and xterm. It + not only provides cut and paste support generally, but its + library component is used by various software such as + Links to provide mouse + support to the application. It is useful on desktops, + especially if following (Beyond) Linux From Scratch + instructions; it's often much easier (and less error prone) + to cut and paste between two console windows than to type + everything by hand! +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ GPM + Dependencies +

+
+ Optional +
+

+ texlive-20250308 (for + documentation) +

+
+
+

+ Kernel Configuration +

+

+ Enable the following option in the kernel configuration and + recompile the kernel if necessary: +

+
Device Drivers --->
+  Input device support --->
+    -*-   Generic input layer (needed for keyboard, mouse, ...)          [INPUT]
+    <*/M>   Mouse interface                                     [INPUT_MOUSEDEV]
+
+
+

+ Installation of GPM +

+

+ Install GPM by running the + following commands: +

+
patch -Np1 -i ../gpm-1.20.7-consolidated-1.patch                &&
+patch -Np1 -i ../gpm-1.20.7-gcc15_fixes-1.patch                 &&
+./autogen.sh                                                    &&
+./configure --prefix=/usr --sysconfdir=/etc ac_cv_path_emacs=no &&
+make
+

+ If texlive-20250308 is installed, + build the GPM manual as dvi, ps, and pdf formats: +

+
make -C doc gpm.{dvi,ps} &&
+dvipdfm doc/gpm.dvi -o doc/gpm.pdf
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install                                          &&
+
+install-info --dir-file=/usr/share/info/dir           \
+             /usr/share/info/gpm.info                 &&
+
+rm -fv /usr/lib/libgpm.a                              &&
+ln -sfv libgpm.so.2.1.0 /usr/lib/libgpm.so            &&
+install -v -m644 conf/gpm-root.conf /etc              &&
+
+install -v -m755 -d /usr/share/doc/gpm-1.20.7/support &&
+install -v -m644    doc/support/*                     \
+                    /usr/share/doc/gpm-1.20.7/support &&
+install -v -m644    doc/{FAQ,HACK_GPM,README*}        \
+                    /usr/share/doc/gpm-1.20.7
+

+ If texlive-20250308 is installed + and you've built GPM manual as dvi, ps, and pdf formats, + install them as the root + user: +

+
install -vm644 doc/gpm.{dvi,ps,pdf} /usr/share/doc/gpm-1.20.7
+
+
+

+ Command Explanations +

+

+ ./autogen.sh: + This command creates the missing configure script. +

+

+ ac_cv_path_emacs=no: + This variable works around an issue causing the package fail + to build with Emacs-30.2 installed. It also suppresses the + installations of some “Emacs support files” shipped with GPM. + These files are quite outdated and they should be superseded + with Emacs-30.2 built-in GPM support. If you need + to use Emacs-30.2 in Linux console with mouse + support, you should install (or reinstall) Emacs-30.2 after GPM. +

+

+ install-info + ...: This package installs a .info file, but does not update the system + dir file. This command makes + the update. +

+

+ ln -v -sfn libgpm.so.2.1.0 + /usr/lib/libgpm.so: This command is used to + create (or update) the .so + symlink to the library. +

+
+
+

+ Configuring GPM +

+
+
+
+
+

+ Boot Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/gpm init script included + in the blfs-bootscripts-20250225 package. +

+
make install-gpm
+
+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/gpm-root.conf and + ~/.gpm-root: The default and + individual user gpm-root configuration + files. +

+

+ /etc/sysconfig/mouse: This + file contains the name of your mouse device and the + protocol it uses. To create this file, run the following as + the root user: +

+
cat > /etc/sysconfig/mouse << "EOF"
+# Begin /etc/sysconfig/mouse
+
+MDEVICE="<yourdevice>"
+PROTOCOL="<yourprotocol>"
+GPMOPTS="<additional options>"
+
+# End /etc/sysconfig/mouse
+EOF
+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Examples of values to set MDEVICE, PROTOCOL, and GPMOPTS to are: +

+
MDEVICE="/dev/input/mice"
+PROTOCOL="imps2"
+GPMOPTS=""
+

+ A list of which protocol values are known can be found by + running gpm -m [device] -t + -help. The MDEVICE setting depends on which type of + mouse you have. For example, /dev/ttyS0 for a serial mouse (on Windows + this is COM1), /dev/input/mice is often used for USB + mice and /dev/psaux for PS2 + mice. GPMOPTS is the 'catch all' + for any additional options that are needed for your + hardware. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + disable-paste, display-buttons, + display-coords, get-versions, gpm, gpm-root, hltest, mev, + and mouse-test +
+
+ Installed Library: + libgpm.so +
+
+ Installed Directory: + /usr/share/doc/gpm-1.20.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ disable-paste +

+
+

+ is a security mechanism used to disable the paste + buffer +

+
+

+ display-buttons +

+
+

+ is a simple program that reports the mouse buttons + being pressed and released +

+
+

+ display-coords +

+
+

+ is a simple program that reports the mouse + coordinates +

+
+

+ get-versions +

+
+

+ is used to report the GPM library and server + versions +

+
+

+ gpm +

+
+

+ is a cut and paste utility and mouse server for + virtual consoles +

+
+

+ gpm-root +

+
+

+ is a default handler for gpm. It is used + to draw menus on the root window +

+
+

+ hltest +

+
+

+ is a simple sample application using the high-level + library, meant to be read by programmers trying to + use the high-level library +

+
+

+ mev +

+
+

+ is a program to report mouse events +

+
+

+ mouse-test +

+
+

+ is a tool for determining the mouse type and device + it's attached to +

+
+

+ libgpm.so +

+
+

+ contains the API functions to access the + GPM daemon +

+
+
+
+
+
+
+
+

+ hwdata-0.398 +

+
+
+
+
+
+

+ Introduction to hwdata +

+

+ The hwdata package contains + current PCI and vendor id data. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of hwdata +

+

+ Install hwdata by running + the following commands: +

+
./configure --prefix=/usr --disable-blacklist
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/hwdata +
+
+
+
+
+
+
+
+

+ LSB-Tools-0.12 +

+
+
+
+
+
+

+ Introduction to LSB-Tools +

+

+ The LSB-Tools package + includes tools for Linux Standards Base (LSB) conformance. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of LSB-Tools +

+

+ Install LSB-Tools by running + the following commands: +

+
make
+

+ Now, as the root user: +

+
make install
+

+ Remove a file that should not be installed as the + root user: +

+
rm /usr/sbin/lsbinstall
+
+
+

+ Configuration Information +

+

+ The configuration for this package was done in LFS. + The file /etc/lsb-release + should already exist. Be sure that the DISTRIB_CODENAME entry + has been set properly. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lsb_release , + install_initd, and remove_initd +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/lib/python3.13/site-packages/lsbtools +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ lsb_release +

+
+

+ is a script to give LSB data +

+
+

+ install_initd +

+
+

+ is a script to activate SysV startup scripts +

+
+

+ remove_initd +

+
+

+ is a script to deactivate SysV startup scripts +

+
+
+
+
+
+
+
+

+ Logrotate-3.22.0 +

+
+
+
+
+
+

+ Introduction to Logrotate +

+

+ The logrotate package allows + automatic rotation, compression, removal, and mailing of log + files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Logrotate Dependencies +

+
+ Required +
+

+ popt-1.19 +

+
+ Recommended +
+ +
+ Optional +
+

+ An MTA + (runtime) +

+
+
+

+ Installation of Logrotate +

+

+ Install logrotate by running + the following command: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make test. Two tests fail + if an MTA is not installed. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuring Logrotate +

+

+ Logrotate needs a + configuration file, which must be passed as an argument to + the command when executed. Create the file as the + root user: +

+
cat > /etc/logrotate.conf << EOF
+# Begin /etc/logrotate.conf
+
+# Rotate log files weekly
+weekly
+
+# Don't mail logs to anybody
+nomail
+
+# If the log file is empty, it will not be rotated
+notifempty
+
+# Number of backups that will be kept
+# This will keep the 2 newest backups only
+rotate 2
+
+# Create new empty files after rotating old ones
+# This will create empty log files, with owner
+# set to root, group set to sys, and permissions 664
+create 0664 root sys
+
+# Compress the backups with gzip
+compress
+
+# No packages own lastlog or wtmp -- rotate them here
+/var/log/wtmp {
+    monthly
+    create 0664 root utmp
+    rotate 1
+}
+
+/var/log/lastlog {
+    monthly
+    rotate 1
+}
+
+# Some packages drop log rotation info in this directory
+# so we include any file in it.
+include /etc/logrotate.d
+
+# End /etc/logrotate.conf
+EOF
+
+chmod -v 0644 /etc/logrotate.conf
+

+ Now create the /etc/logrotate.d + directory as the root user: +

+
mkdir -p /etc/logrotate.d
+

+ At this point additional log rotation commands can be + entered, typically in the /etc/logrotate.d directory. For example: +

+
cat > /etc/logrotate.d/sys.log << EOF
+/var/log/sys.log {
+   # If the log file is larger than 100kb, rotate it
+   size   100k
+   rotate 5
+   weekly
+   postrotate
+      /bin/killall -HUP syslogd
+   endscript
+}
+EOF
+
+chmod -v 0644 /etc/logrotate.d/sys.log
+

+ You can designate multiple files in one entry: +

+
cat > /etc/logrotate.d/example.log << EOF
+file1
+file2
+file3 {
+   ...
+   postrotate
+    ...
+   endscript
+}
+EOF
+
+chmod -v 0644 /etc/logrotate.d/example.log
+

+ You can use in the same line the list of files: file1 file2 + file3. See the logrotate man page or + https://www.techrepublic.com/article/manage-linux-log-files-with-logrotate/ + for more examples. +

+

+ The command logrotate + /etc/logrotate.conf can be run manually, + however, the command should be run daily. Other useful + commands are logrotate -d + /etc/logrotate.conf for debugging purposes + and logrotate -f + /etc/logrotate.conf forcing the logrotate + commands to be run immediately. Combining the previous + options -df, you can debug the + effect of the force command. When debugging, the commands are + only simulated and are not actually run. As a result, errors + about files not existing will eventually appear because the + files are not actually created. +

+

+ To run the logrotate command daily, + if you've installed Fcron-3.4.0 and + completed the section on periodic jobs, execute the + following commands, as the root user, to create a daily cron job: +

+
cat > /etc/cron.daily/logrotate.sh << "EOF" &&
+#!/bin/bash
+/usr/sbin/logrotate /etc/logrotate.conf
+EOF
+chmod 754 /etc/cron.daily/logrotate.sh
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + logrotate +
+
+ Installed Library: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ logrotate +

+
+

+ performs the log maintenance functions defined in + the configuration files +

+
+
+
+
+
+
+
+

+ MC-4.8.33 +

+
+
+
+
+
+

+ Introduction to MC +

+

+ MC (Midnight Commander) is a + text-mode full-screen file manager and visual shell. It + provides a clear, user-friendly, and somewhat protected + interface to a Unix system while making many frequent file + operations more efficient and preserving the full power of + the command prompt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): http://ftp.midnight-commander.org/mc-4.8.33.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: b3596c1f092b9822a6cd9c9a1aef8dde +

    +
  • +
  • +

    + Download size: 2.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 71 MB (add 97 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (using parallelism=4; add + 0.1 SBU for tests) +

    +
  • +
+
+

+ MC + Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0, GPM-1.20.7, Graphviz-13.1.2, + libarchive-3.8.1, libssh2-1.11.1, + pcre2-10.45, Ruby-3.4.5, a graphical + environment, and Zip-3.0 +

+
+
+

+ Installation of MC +

+

+ Install MC by running the + following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --enable-charset  &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc: + This switch places the global configuration directory in + /etc. +

+

+ --enable-charset: + This switch adds support to mcedit for editing files in + encodings different from the one implied by the current + locale. +

+

+ --with-screen=ncurses: Use this + if you don't have slang-2.3.3 installed. +

+

+ --with-search-engine=pcre2: Use + this switch if you would prefer to use pcre2-10.45 instead of GLib + for the built-in search engine. +

+
+
+

+ Configuring MC +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.config/mc/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The ~/.config/mc directory + and its contents are created when you start mc for the first time. + Then you can edit the main ~/.config/mc/ini configuration file + manually or through the MC + shell. Consult the mc(1) man page for + details. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mc and the symlinks mcdiff, mcedit + and mcview +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/mc and + /usr/{libexec,share}/mc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ mc +

+
+

+ is a visual shell +

+
+

+ mcdiff +

+
+

+ is an internal visual diff tool +

+
+

+ mcedit +

+
+

+ is an internal file editor +

+
+

+ mcview +

+
+

+ is an internal file viewer +

+
+
+
+
+
+
+
+

+ ModemManager-1.24.2 +

+
+
+
+
+
+

+ Introduction to ModemManager +

+

+ ModemManager provides a + unified high level API for communicating with mobile + broadband modems, regardless of the protocol used to + communicate with the actual device. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ModemManager Dependencies +

+
+ Required +
+

+ libgudev-238 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/ModemManager +

+
+
+

+ Installation of ModemManager +

+

+ Install ModemManager by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                 \
+      --prefix=/usr            \
+      --buildtype=release      \
+      -D bash_completion=false \
+      -D qrtr=false            \
+      -D systemdsystemunitdir=no &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + bash_completion=false: Use this option if the + external bash-completion + package is not installed. +

+

+ -D qrtr=false: This + switch disables support for the QRTR protocol which needs the + external + libqrtr-glib package. +

+

+ -D + systemdsystemunitdir=no: This switch prevents + meson from looking for the + systemd units directory and failing since it is not available + on SysV systems. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mmcli and ModemManager +
+
+ Installed Libraries: + libmm-glib.so +
+
+ Installed Directories: + /etc/ModemManager, + /usr/include/libmm-glib, /usr/include/ModemManager, + /usr/lib/ModemManager, /usr/share/ModemManager, + /usr/share/gtk-doc/html/libmm-glib (optional), and + /usr/share/gtk-doc/html/ModemManager (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ mmcli +

+
+

+ is a utility used to control and monitor the + ModemManager +

+
+

+ ModemManager +

+
+

+ is a D-Bus service + used to communicate with modems +

+
+

+ libmm-glib.so +

+
+

+ contains API functions for communicating with + mobile broadband modems, regardless of the protocol + used to communicate with the actual device +

+
+
+
+
+
+
+
+

+ notification-daemon-3.20.0 +

+
+
+
+
+
+

+ Introduction to Notification Daemon +

+

+ The Notification Daemon + package contains a daemon that displays passive pop-up + notifications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Notification Daemon Dependencies +

+
+ Required +
+

+ GTK-3.24.50 and libcanberra-0.30 + (Built with GTK-3.24.50 support). +

+
+
+

+ Installation of Notification Daemon +

+

+ Install Notification Daemon + by running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ You can test the notification daemon with the command + notify-send: +

+
pgrep -l notification-da &&
+notify-send -i info Information "Hi ${USER}, This is a Test"
+

+ The command pgrep -l + notification-da is added to assure that it is + the daemon of this package that is running, not another one, + e.g. the daemon from xfce4-notifyd-0.9.7. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + none +
+
+ Installed Libraries: + none +
+
+ Installed Directory: + none +
+
+
+
+
+
+
+
+

+ Pax-20240817 +

+
+
+
+
+
+

+ Introduction to Pax +

+

+ pax is an archiving utility + created by POSIX and defined by the POSIX.1-2001 standard. + Rather than sort out the incompatible options that have crept + up between tar and + cpio, along with their + implementations across various versions of UNIX, the IEEE + designed a new archive utility. The name “pax” is an acronym + for portable archive exchange. Furthermore, “pax” means + “peace” + in Latin, so its name implies that it shall create peace + between the tar and + cpio format supporters. The + command invocation and command structure is somewhat a + unification of both tar and + cpio. +

+

+ pax has been required to be + present in LSB conformant systems since LSB version 3.0. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Pax +

+

+ Install pax by running the following commands:. +

+
+

+ Note +

+

+ This package expands to the directory pax. +

+
+
bash Build.sh
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
+

+ Note +

+

+ This package also creates hard links from pax to the programs + cpio and + tar in the + build directory. The LFS editors do not recommend that they + be installed as they will overwrite the GNU versions of + these programs. +

+
+
install -v pax /usr/bin &&
+install -v -m644 pax.1 /usr/share/man/man1
+
+
+

+ Contents +

+
+
+
+ Installed Program: + pax +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pax +

+
+

+ copies files to and from archives in several + formats +

+
+
+
+
+
+
+
+

+ pm-utils-1.4.1 +

+
+
+
+
+
+

+ Introduction to Power Management Utilities +

+

+ The Power Management + Utilities provide simple shell command line tools to + suspend and hibernate the computer. They can be used to run + user supplied scripts on suspend and resume. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Power Management Utilities + Dependencies +

+
+ Optional +
+

+ xmlto-0.0.29 (to generate man pages) +

+
+ Optional (runtime) +
+

+ Hdparm-9.65, Wireless + Tools-29, ethtool, + and vbetool +

+
+
+

+ Kernel + Configuration +

+

+ If needed, enable the following options in the kernel + configuration and recompile the kernel: +

+
Power management and ACPI options --->
+  [*] Suspend to RAM and standby                                       [SUSPEND]
+  [*] Hibernation (aka 'suspend to disk')                          [HIBERNATION]
+

+ Suspend to RAM allows the system to enter sleep states in + which main memory is powered and thus its contents are + preserved. The method cuts power to most parts of the machine + aside from the RAM. Because of the large power savings, it is + advisable for laptops to automatically enter this mode when + the computer is running on batteries and the lid is closed + (or the user is inactive for some time). +

+

+ Suspend to disk (Hibernation) saves the machine's state into + swap space and completely powers off the machine. When the + machine is powered on, the state is restored. Until then, + there is zero power consumption. Suspend to RAM and + hibernation are normally appropriate for portable devices + such as laptops, but can be used on workstations. The + capability is not really appropriate for servers. +

+

+ To use hibernation, the kernel parameter + resume=/dev/<swap_partition> has to be used on the + kernel command line (in grub.cfg). The swap partition should + be at least the size of the physical RAM on the system. +

+
+
+

+ Installation of Power Management Utilities +

+

+ First, fix several bugs and a couple of incompatibilities + with newer kernels: +

+
patch -Np1 -i ../pm-utils-1.4.1-bugfixes-1.patch
+

+ Install Power Management + Utilities by running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/pm-utils-1.4.1 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you don't have xmlto-0.0.29 installed, copy pregenerated + man pages, as the root user: +

+
install -v -m644 man/*.1 /usr/share/man/man1 &&
+install -v -m644 man/*.8 /usr/share/man/man8 &&
+ln -sv pm-action.8 /usr/share/man/man8/pm-suspend.8 &&
+ln -sv pm-action.8 /usr/share/man/man8/pm-hibernate.8 &&
+ln -sv pm-action.8 /usr/share/man/man8/pm-suspend-hybrid.8
+
+
+

+ Configuring Power Management Utilities +

+

+ Suspend or resume functionality can be easily modified by + installing files into the /etc/pm/sleep.d directory. These files, + known as hooks, are run when the system is put into a sleep + state or resumed. Default hooks are located in /usr/lib/pm-utils/sleep.d, and user hooks + should be put in /etc/pm/sleep.d. See the pm-action(8) + man page for more information. +

+

+ In order to use hibernation with GRUB and a swap partition, you need to + add kernel parameter resume=swap_partition (e.g. + resume=/dev/sda1) to the kernel + line in the /boot/grub/grub.cfg + configuration file. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + on_ac_power, pm-hibernate, + pm-is-supported, pm-powersave, pm-suspend and + pm-suspend-hybrid +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/pm, /usr/lib/pm-utils and + /usr/share/doc/pm-utils-1.4.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ on_ac_power +

+
+

+ is a script that determines whether the system is + running on AC power (rather than a battery) +

+
+

+ pm-hibernate +

+
+

+ is a symlink to pm-action script that puts the + computer into hibernate mode (the system is fully + powered off and system state is saved to disk) +

+
+

+ pm-is-supported +

+
+

+ is a script that checks whether power management + features such as suspend and hibernate are + supported +

+
+

+ pm-powersave +

+
+

+ is a script that puts the computer into powersaving + (low power) mode +

+
+

+ pm-suspend +

+
+

+ is a symlink to pm-action script that puts the + computer into suspend mode (most devices are shut + down and system state is saved in RAM) +

+
+

+ pm-suspend-hybrid +

+
+

+ is a symlink to pm-action script that puts the + computer into hybrid-suspend mode (the system does + everything it needs to hibernate, but suspends + instead of shutting down) +

+
+
+
+
+
+
+
+

+ Power-profiles-daemon-0.30 +

+
+
+
+
+
+

+ Introduction to Power-profiles-daemon +

+

+ The Power-profiles-daemon + package provides a program that allows modification of the + system power/behavior state. This is used on many laptops and + can be used by a Desktop Environment to activate power saving + or performance CPU governors through dbus. On other systems, + Power-profiles-daemon can be used as a streamlined way to set + the CPU governor in order to increase system performance at + the cost of energy usage. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Power-profiles-daemon Dependencies +

+
+ Required +
+

+ Polkit-126, PyGObject-3.52.3 + (pycairo is not + needed), and UPower-1.90.9 +

+
+ Optional +
+

+ GTK-Doc-1.34.0, The rest are for the + tests, dbusmock-0.36.0, umockdev-0.19.3, + isort, and mccabe +

+
+
+

+ Kernel Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
Power management and ACPI options --->
+  CPU Frequency scaling --->
+    -*-   CPU Frequency scaling                                       [CPU_FREQ]
+    -*-     'performance' governor                    [CPU_FREQ_GOV_PERFORMANCE]
+    <*/M>   'powersave' governor                        [CPU_FREQ_GOV_POWERSAVE]
+    # Select if CPU is Intel:
+    [ /*]   Intel P state control                             [X86_INTEL_PSTATE]
+    # Select if CPU is AMD:
+    [ /*]   AMD Processor P-State driver                        [X86_AMD_PSTATE]
+
+Device Drivers --->
+  # Some drivers under this submenu provide "platform profile" support
+  # and power-profiles-daemon can take advantage from platform profiles;
+  # select a driver if suitable for your platform:
+  [ /*] X86 Platform Specific Device Drivers --->         [X86_PLATFORM_DEVICES]
+

+ Select the appropriate sub-options that appear when the above + options are selected. As much as possible, the layout should + be the same as in kernel configuration menus. +

+
+
+

+ Installation of Power-profiles-daemon +

+

+ Install Power-profiles-daemon by running the + following commands: +

+
mkdir build &&
+cd build &&
+
+meson setup                        \
+      --prefix=/usr                \
+      --buildtype=release          \
+      -D gtk_doc=false             \
+      -D tests=false               \
+      -D systemdsystemunitdir=/tmp \
+      .. &&
+ninja
+

+ If you have installed the external dependencies, to test the + results issue: ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+

+ Now, clean up an unneeded systemd unit installed into /tmp: +

+
+rm -fv /tmp/power-profiles-daemon.service
+
+

+ Create a directory required for persistent power states after + reboot: +

+
+install -vdm755 /var/lib/power-profiles-daemon
+
+
+
+

+ Command Explanations +

+

+ -D gtk_doc=false: + Prevents building the documentation. Remove this if you have + GTK-Doc installed and wish + to build the documentation. +

+

+ -D tests=false: + Prevents building the tests because they cannot be run within + the boundaries of BLFS. Remove this if you have installed the + external dependencies and wish to run the tests. +

+

+ -D + systemdsystemunitdir=/tmp: Removes the dependency + on systemd. +

+
+
+

+ Configuring Power-profiles-daemon +

+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically start the power-profiles-daemon + when the system is rebooted, install the /etc/rc.d/init.d/power-profiles-daemon + bootscript from the blfs-bootscripts-20250225 as + the root user: +

+
make install-power-profiles-daemon
+
+
+
+
+
+

+ Select a Power Profile +

+
+
+
+

+ To list all supported power profiles, issue: +

+
powerprofilesctl
+

+ To activate a power profile (for example performance), issue: +

+
powerprofilesctl set performance
+

+ Some desktop environments (for example GNOME and KDE) also + provide a graphical interface to interact with power-profiles-daemon and + activate a power profile. +

+

+ The activated power profile is automatically stored in + /var/lib/power-profiles-daemon/state.ini + and power-profiles-daemon + will read it out and activate it again on the next boot if + the bootscript is installed as + above. +

+
+

+ Caution +

+

+ On some older systems power-profiles-daemon will appear + to install and indicate correct values, but will not + actually work. To check this, run cat + /sys/devices/system/cpu/cpufreq/policy0/scaling_driver. + If the result is not "intel_pstate" but instead + "intel_cpufreq" (or similar on AMD systems), then power + changes must be made manually. +

+

+ To change power states manually, first check to see what + governors are available with: cat + /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors. + Then set the desired governor as the root user with: +

+
gov=performance
+for CPUFREQ in /sys/devices/system/cpu/cpufreq/policy*/scaling_governor; do
+  echo -n ${gov} > ${CPUFREQ}"
+done
+

+ If you are setting the scaling_governor to "performance", + be careful about heat and battery issues with extended + use. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + powerprofilesctl +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ powerprofilesctl +

+
+

+ This allows the user to set the power governor of + the CPU. +

+
+
+
+
+
+
+
+

+ Raptor-2.0.16 +

+
+
+
+
+
+

+ Introduction to Raptor +

+

+ Raptor is a C library that + provides a set of parsers and serializers that generate + Resource Description Framework (RDF) triples. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.librdf.org/source/raptor2-2.0.16.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 0a71f13b6eaa0a04bf411083d89d7bc2 +

    +
  • +
  • +

    + Download size: 1.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 25 MB (additional 2 MB + for the tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (additional 0.3 SBU for + the tests) +

    +
  • +
+
+

+ Raptor Dependencies +

+
+ Required +
+

+ cURL-8.15.0 and libxslt-1.1.43 +

+
+ Optional +
+

+ GTK-Doc-1.34.0, ICU-77.1 and libyajl +

+
+
+

+ Installation of Raptor +

+

+ First, fix an incompatibility with libxml2-2.11.x: +

+
sed -i 's/20627/20627 \&\& LIBXML_VERSION < 21100/' src/raptor_libxml.c
+

+ Install Raptor by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. Several of the + XML tests may fail. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-icu-config=/usr/bin/icu-config: Use + this switch if you have installed ICU-77.1 and wish to build Raptor with its support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + rapper +
+
+ Installed Libraries: + libraptor2.so +
+
+ Installed Directories: + /usr/include/raptor2 and + /usr/share/gtk-doc/html/raptor2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ rapper +

+
+

+ is a RDF parsing and serializing utility +

+
+

+ libraptor2.so +

+
+

+ contains the Raptor API functions +

+
+
+
+
+
+
+
+

+ Rasqal-0.9.33 +

+
+
+
+
+
+

+ Introduction to Rasqal +

+

+ Rasqal is a C library that + handles Resource Description Framework (RDF) query language + syntaxes, query construction, and execution of queries + returning results as bindings, boolean, RDF graphs/triples or + syntaxes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.librdf.org/source/rasqal-0.9.33.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 1f5def51ca0026cd192958ef07228b52 +

    +
  • +
  • +

    + Download size: 1.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 22 MB (additional 4 MB + for the tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (additional 0.7 SBU for + the tests) +

    +
  • +
+
+

+ Rasqal Dependencies +

+
+ Required +
+

+ Raptor-2.0.16 +

+
+ Optional +
+

+ libgcrypt-1.11.2 +

+
+
+

+ Installation of Rasqal +

+

+ Install Rasqal by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + rasqal-config and roqet +
+
+ Installed Library: + librasqal.so +
+
+ Installed Directories: + /usr/include/rasqal and + /usr/share/gtk-doc/html/rasqal +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ rasqal-config +

+
+

+ is a utility for retrieving the installation + options of Rasqal +

+
+

+ roqet +

+
+

+ is an RDF query utility +

+
+
+
+
+
+
+
+

+ Redland-1.0.17 +

+
+
+
+
+
+

+ Introduction to Redland +

+

+ Redland is a set of free + software C libraries that provide support for the Resource + Description Framework (RDF). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Redland Dependencies +

+
+ Required +
+

+ Rasqal-0.9.33 +

+
+ Optional +
+

+ SQLite-3.50.4, MariaDB-11.8.3 or + MySQL, + PostgreSQL-17.6, + Berkeley DB (deprecated) libiodbc, + virtuoso, + and 3store +

+
+
+

+ Installation of Redland +

+

+ Install Redland by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue make + check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + rdfproc, redland-config and + redland-db-upgrade +
+
+ Installed Libraries: + librdf.so and + /usr/lib/redland/librdf_storage_*.so +
+
+ Installed Directories: + /usr/lib/redland, + /usr/share/gtk-doc/html/redland and + /usr/share/redland +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ rdfproc +

+
+

+ is the Redland RDF processor utility +

+
+

+ redland-config +

+
+

+ is a script to get information about the installed + version of Redland +

+
+

+ redland-db-upgrade +

+
+

+ upgrades older Redland databases to 0.9.12 format +

+
+
+
+
+
+
+
+

+ Sysstat-12.7.8 +

+
+
+
+
+
+

+ Introduction to Sysstat +

+

+ The Sysstat package contains + utilities to monitor system performance and usage activity. + Sysstat contains the + sar utility, + common to many commercial Unixes, and tools you can schedule + via cron to collect and historize performance and activity + data. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Sysstat Dependencies +

+ +
+
+

+ Installation of Sysstat +

+

+ Install Sysstat by running + the following commands: +

+
sa_lib_dir=/usr/lib/sa    \
+sa_dir=/var/log/sa        \
+conf_dir=/etc/sysstat     \
+./configure --prefix=/usr \
+            --disable-file-attr &&
+make
+

+ This package does not come with a working test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sa_lib_dir: This environment + variable specifies the location of the package-specific + library directory. +

+

+ sa_dir: This environment variable + specifies the location of the directory containing the data + files. +

+

+ conf_dir: This environment + variable specifies the location of the system configuration + directory. +

+

+ --disable-file-attr: + Do not set attributes on files being installed. This + parameter causes the installation to ignore the man group + variable resulting in the man files having root: root ownership. +

+
+

+ Note +

+

+ Run ./configure + --help to see other influential environment + variables you can pass to configure. You may want + to use the history and + compressafter variables to + customize the amount of data files kept on the system. +

+
+
+
+

+ Configuring Sysstat +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/sysconfig/sysstat and + /etc/sysconfig/sysstat.ioconf +

+
+
+
+
+
+

+ Cron Information +

+
+
+
+

+ To begin gathering Sysstat + history information, you must add to, or create a + privileged user's crontab. The history data location is + /var/log/sa. The user running + Sysstat utilities via cron + must have write access to this location. +

+

+ Below is an example of what to install in the crontab. + Adjust the parameters to suit your needs. Use man sa1 and man sa2 for information + about the commands. +

+
# 8am-7pm activity reports every 10 minutes during weekdays
+0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &
+
+# 7pm-8am activity reports every hour during weekdays
+0 19-7 * * 1-5 /usr/lib/sa/sa1 &
+
+# Activity reports every hour on Saturday and Sunday
+0 * * * 0,6 /usr/lib/sa/sa1 &
+
+# Daily summary prepared at 19:05
+5 19 * * * /usr/lib/sa/sa2 -A &
+

+ Ensure you submit the revised crontab to the cron daemon. +

+
+
+
+
+
+

+ System + Startup Information +

+
+
+
+

+ At system startup, a LINUX RESTART message must be inserted + in the daily data file to reinitialize the kernel counters. + This can be automated by installing the /etc/rc.d/init.d/sysstat init script + included in the blfs-bootscripts-20250225 package + using the following command as the root user: +

+
make install-sysstat
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cifsiostat, iostat, mpstat, + pidstat, sadf, sar, and tapestat +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/sa, + /usr/share/doc/sysstat-12.7.8 and /var/log/sa +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cifsiostat +

+
+

+ displays statistics about read and write operations + on CIFS filesystems +

+
+

+ iostat +

+
+

+ reports CPU statistics and input/output statistics + for devices and partitions +

+
+

+ mpstat +

+
+

+ writes activities for each available processor +

+
+

+ pidstat +

+
+

+ is used for monitoring individual tasks currently + being managed by the Linux kernel +

+
+

+ sadf +

+
+

+ is used for displaying the contents of data files + created by the sar command. But + unlike sar, sadf can write + its data in many different formats +

+
+

+ sar +

+
+

+ is used for displaying the contents of elected + cumulative activity counters in the operating + system +

+
+

+ tapestat +

+
+

+ is used for monitoring the activity of tape drives + connected to a system +

+
+
+
+
+
+
+
+

+ UDisks-2.10.2 +

+
+
+
+
+
+

+ Introduction to UDisks +

+

+ The UDisks package provides + a daemon, tools and libraries to access and manipulate disks + and storage devices. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ UDisks Dependencies +

+
+ Required +
+

+ libatasmart-0.19, libblockdev-3.3.1, libgudev-238, and + Polkit-126 +

+
+ Recommended +
+ +
+ Optional (Required if building + GNOME) +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+ Optional +
+

+ D-Bus Python-1.4.0 (for the + integration tests), GTK-Doc-1.34.0, libxslt-1.1.43 (for the + man pages), LVM2-2.03.34, PyGObject-3.52.3 + (for the integration tests), exFAT, and libiscsi +

+
+ Optional Runtime Dependencies +
+

+ btrfs-progs-6.16, dbus-1.16.2, dosfstools-4.2, + gptfdisk-1.0.10, mdadm-4.4, and xfsprogs-6.15.0 +

+
+
+

+ Installation of UDisks +

+

+ Install UDisks by running + the following commands: +

+
./configure --prefix=/usr        \
+            --sysconfdir=/etc    \
+            --localstatedir=/var \
+            --disable-static     \
+            --enable-available-modules &&
+make
+

+ To test the results, issue: make check. A more thorough + test can be run with make + ci. You must first create the directories + /var/run/udisks2 and + /var/lib/udisks2, and the + optional python modules should be present. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+

+ --enable-available-modules: + This switch enables additional UDisks2 functionalities if libblockdev-3.3.1 has been built with + optional dependencies. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + udisksctl and umount.udisks2 +
+
+ Installed Library: + libudisks2.so +
+
+ Installed Directories: + /etc/udisks2, /usr/include/udisks2, + /usr/libexec/udisks2, /usr/share/gtk-doc/html/udisks2, + and /var/lib/udisks2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ udisksctl +

+
+

+ is a command-line program used to interact with the + udisksd daemon +

+
+

+ umount.udisks2 +

+
+

+ is a command-line program used to unmount file + systems that have been mounted by the UDisks daemon +

+
+

+ libudisks2.so +

+
+

+ contains the UDisks API functions +

+
+
+
+
+
+
+
+

+ UnRar-7.1.10 +

+
+
+
+
+
+

+ Introduction to UnRar +

+

+ The UnRar package contains a + RAR extraction utility used for + extracting files from RAR + archives. RAR archives are + usually created with WinRAR, + primarily in a Windows environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.rarlab.com/rar/unrarsrc-7.1.10.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: d9c51328fcb5d8c31d097b2baaaced00 +

    +
  • +
  • +

    + Download size: 264 KB +

    +
  • +
  • +

    + Estimated disk space required: 2.7 MB +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU +

    +
  • +
+
+
+
+

+ Installation of UnRar +

+
+

+ Note +

+

+ This package extracts the tarball to the unversioned + directory unrar and not the + expected directory unrar-7.1.10. +

+
+

+ Install UnRar by running the + following commands: +

+
make -f makefile
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -v -m755 unrar /usr/bin
+
+
+

+ Contents +

+
+
+
+ Installed Program: + unrar +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ unrar +

+
+

+ uncompresses a RAR + archive +

+
+
+
+
+
+
+
+

+ UPower-1.90.9 +

+
+
+
+
+
+

+ Introduction to UPower +

+

+ The UPower package provides + an interface for enumerating power devices, listening to + device events, and querying history and statistics. Any + application or service on the system can access the + org.freedesktop.UPower service via the system message bus. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ UPower Dependencies +

+
+ Required +
+

+ libgudev-238 and libusb-1.0.29 +

+
+ Optional (Required if building + GNOME) +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+ Optional +
+

+ GTK-Doc-1.34.0, libxslt-1.1.43, + docbook-xsl-nons-1.79.2, + PyGObject-3.52.3, dbusmock-0.36.0, umockdev-0.19.3 (for + part of the test suite), and libimobiledevice +

+
+
+

+ Installation of UPower +

+

+ Install UPower by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                   \
+      --prefix=/usr              \
+      --buildtype=release        \
+      -D gtk-doc=false           \
+      -D man=false               \
+      -D systemdsystemunitdir=no \
+      -D udevrulesdir=/usr/lib/udev/rules.d &&
+ninja
+

+ To test the results, issue: LC_ALL=C ninja test. The + test suite should be run from a local GUI session started + with dbus-launch. On 32-bit machines, one test will fail due + to rounding errors: Tests.test_battery_energy_charge_mixed. On + some systems, two tests relating to the headphone hotplug + feature are known to fail. Those can be safely ignored since + the functionality still works. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D gtk-doc=false: + Prevents building the documentation. Remove this if you have + GTK-Doc installed and wish + to build the documentation. +

+

+ -D man=false: + Prevents building the manual pages. Remove this if you have + libxslt-1.1.43 and docbook-xsl-nons-1.79.2 + installed and wish to build the manual pages. +

+

+ -D + systemdsystemunitdir=no: Removes the dependency + on systemd. +

+

+ -D + udevrulesdir=/usr/lib/udev/rules.d: Tells the + build system where to install udev rules because the information is + missing in /usr/lib/pkgconfig/libudev.pc +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + upower +
+
+ Installed Libraries: + libupower-glib.so +
+
+ Installed Directories: + /etc/UPower, + /usr/include/libupower-glib, and /var/lib/upower +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ upower +

+
+

+ is the UPower + command line tool +

+
+

+ libupower-glib.so +

+
+

+ contains the UPower API functions +

+
+
+
+
+
+
+
+

+ Which-2.23 and Alternatives +

+
+
+
+
+

+ The presence or absence of the which program in the main LFS + book is probably one of the most contentious issues on the + mailing lists. It has resulted in at least one flame war in the + past. To hopefully put an end to this once and for all, + presented here are two options for equipping your system with + which. The + question of which “which” is for + you to decide. +

+
+

+ Introduction to GNU Which +

+

+ The first option is to install the actual GNU which package. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/which/which-2.23.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 1963b85914132d78373f02a84cdb3c86 +

    +
  • +
  • +

    + Download size: 197 KB +

    +
  • +
  • +

    + Estimated disk space required: 1.2 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+
+
+

+ Installation of Which +

+

+ Install which by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + which +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ which +

+
+

+ shows the full path of (shell) commands installed + in your PATH +

+
+
+
+
+

+ The 'which' Script +

+

+ The second option (for those who don't want to install the + package) is to create a simple script (execute as the + root user): +

+
cat > /usr/bin/which << "EOF"
+#!/bin/bash
+type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
+EOF
+chmod -v 755 /usr/bin/which
+chown -v root:root /usr/bin/which
+

+ This should work OK and is probably the easiest solution for + most cases, but is not the most comprehensive implementation. +

+
+
+
+
+
+

+ xdotool-3.20211022.1 +

+
+
+
+
+
+

+ Introduction to xdotool +

+

+ The xdotool package provides + the capabilities to simulate keyboard input and mouse + activity, move and resize windows, etc. It does this using + X11’s XTEST extension and other Xlib functions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdotool Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+
+

+ Installation of xdotool +

+

+ Install xdotool by running + the following commands: +

+
make WITHOUT_RPATH_FIX=1
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr INSTALLMAN=/usr/share/man install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xdotool +
+
+ Installed Libraries: + libxdo.so +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ Zip-3.0 +

+
+
+
+
+
+

+ Introduction to Zip +

+

+ The Zip package contains + Zip utilities. These are + useful for compressing files into ZIP archives. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Zip +

+

+ Install Zip by running the + following commands: +

+
make -f unix/Makefile generic CC="gcc -std=gnu89"
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make prefix=/usr MANDIR=/usr/share/man/man1 -f unix/Makefile install
+
+
+

+ Command Explanations +

+

+ CC="gcc -std=gnu89": + This parameter overrides the CC + variable that is set to cc in the unix/Makefile file. On LFS cc is a symlink to + gcc, and it + uses -std=gnu17 (ISO 9899:2017 + with GNU extensions) as the default but Zip is a “legacy” package + where some grammar constructs are invalid in ISO 9899:1999 + and newer standards. +

+

+ prefix=/usr: This + parameter overrides the prefix + variable that is set to /usr/local in the unix/Makefile file. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + zip, zipcloak, zipnote, and + zipsplit +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ zip +

+
+

+ compresses files into a ZIP archive +

+
+

+ zipcloak +

+
+

+ is a utility to encrypt and decrypt a ZIP archive +

+
+

+ zipnote +

+
+

+ reads or writes comments stored in a ZIP file +

+
+

+ zipsplit +

+
+

+ is a utility to split ZIP files into smaller files +

+
+
+
+
+
+
+
+

+ Hardware Utilities +

+
+
+
+
+
+
+
+

+ Hdparm-9.65 +

+
+
+
+
+
+

+ Introduction to Hdparm +

+

+ The Hdparm package contains + a utility that is useful for obtaining information about, and + controlling ATA/IDE controllers and hard drives. It allows to + increase performance and sometimes to increase stability. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Warning +

+

+ As well as being useful, incorrect usage of Hdparm can destroy your information + and in rare cases, drives. Use with caution and make sure + you know what you are doing. If in doubt, it is recommended + that you leave the default kernel parameters alone. +

+
+

+ Package Information +

+
+ +
+
+
+

+ Installation of Hdparm +

+

+ Build Hdparm by running the + following command: +

+
make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make binprefix=/usr install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + hdparm +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ hdparm +

+
+

+ provides a command-line interface to various hard + disk ioctls supported by the stock Linux ATA/IDE + device driver subsystem +

+
+
+
+
+
+
+
+

+ lm-sensors-3-6-2 +

+
+
+
+
+
+

+ Introduction to lm-sensors +

+

+ The lm-sensors package + provides userspace support for the hardware monitoring + drivers in the Linux kernel. This is useful for monitoring + the temperature of the CPU and adjusting the performance of + some hardware (such as cooling fans). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lm-sensors Dependencies +

+
+ Required +
+

+ Which-2.23 +

+
+ Optional +
+

+ RRDtool (required to + build the sensord program) and + dmidecode (runtime) +

+
+
+

+ Kernel + Configuration +

+

+ The following configuration options attempt to cover the most + common hardware monitoring devices in a typical desktop or + laptop system. View the help of each (by pressing the + H button with + the option focused in the make + menuconfig) to know if you need it. There are + many platform-specific hardware monitoring devices so it's + impossible to list the configuration for all of them here. + You may investigate the content of /sys/class/hwmon within a “mainstream” distro + running on the system to know which drivers you need. +

+
Power management and ACPI options --->
+  [*] ACPI (Advanced Configuration and Power Interface) Support --->      [ACPI]
+    < /*/M> Battery                                               [ACPI_BATTERY]
+    < /*/M> Thermal Zone                                          [ACPI_THERMAL]
+
+Device Drivers --->
+  NVME Support --->
+    < /*> NVM Express block device                                [BLK_DEV_NVME]
+    # Set [HWMON] to <*> (not <M>!) or it will not show up:
+    [ /*] NVMe hardware monitoring                                  [NVME_HWMON]
+  <*/M> Hardware Monitoring support --->                                 [HWMON]
+    < /*/M> AMD Athlon64/FX or Opteron temperature sensor       [SENSORS_K8TEMP]
+    < /*/M> AMD Family 10h+ temperature sensor                 [SENSORS_K10TEMP]
+    < /*/M> AMD Family 15h processor power                [SENSORS_FAM15H_POWER]
+    < /*/M> Intel Core/Core2/Atom temperature sensor          [SENSORS_CORETEMP]
+

+ Recompile your kernel and reboot into the new kernel. +

+
+
+

+ Installation of lm-sensors +

+

+ Install lm-sensors by + running the following commands: +

+
make PREFIX=/usr        \
+     BUILD_STATIC_LIB=0 \
+     MANDIR=/usr/share/man
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr        \
+     BUILD_STATIC_LIB=0 \
+     MANDIR=/usr/share/man install &&
+
+install -v -m755 -d /usr/share/doc/lm-sensors-3-6-2 &&
+cp -rv              README INSTALL doc/* \
+                    /usr/share/doc/lm-sensors-3-6-2
+
+
+

+ Command Explanations +

+

+ BUILD_STATIC_LIB=0: + This parameter disables compiling and installing the static + version of libsensors. +

+

+ PROG_EXTRA=sensord: This + parameter enables compiling sensord, a daemon that can + monitor your system at regular intervals. Compiling + sensord + requires RRDtool. Be sure to + install RRDtool in /usr by + running make + prefix=/usr when building it. Otherwise, + lm-sensors will not find it easily. +

+
+
+

+ Configuring lm-sensors +

+
+
+
+
+

+ Config File +

+
+
+
+

+ /etc/sensors3.conf +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fancontrol, isadump, isaset, + pwmconfig, sensors, sensors-conf-convert, sensors-detect, + and optionally, sensord +
+
+ Installed Library: + libsensors.so +
+
+ Installed Directories: + /etc/sensors.d, + /usr/include/sensors and + /usr/share/doc/lm-sensors-3-6-2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fancontrol +

+
+

+ is a shell script for use with lm-sensors. It reads its + configuration from a file (/etc/sensors3.conf by + default), then calculates fan speeds from + temperatures and sets the corresponding PWM outputs + to the computed values +

+
+

+ isadump +

+
+

+ is a small helper program to examine registers + visible through the ISA bus. It is intended to + probe any chip that lives on the ISA bus working + with an address register and a data register + (I2C-like access) or a flat range (of up to 256 + bytes) +

+
+

+ isaset +

+
+

+ is a small helper program to set registers visible + through the ISA bus +

+
+

+ pwmconfig +

+
+

+ tests the pulse width modulation (PWM) outputs of + sensors and configures fancontrol +

+
+

+ sensors +

+
+

+ prints the current readings of all sensor chips +

+
+

+ sensors-conf-convert +

+
+

+ is a Perl script + to convert lm-sensors version 2 + configuration files to work with version 3 +

+
+

+ sensors-detect +

+
+

+ is a Perl script + that will walk you through the process of scanning + your system for various hardware monitoring chips + (sensors) supported by libsensors, or more generally by + the lm-sensors + tool suite +

+
+

+ sensord +

+
+

+ (optional) is a daemon that can be used to + periodically log sensor readings +

+
+

+ libsensors.so +

+
+

+ contains the lm-sensors API functions +

+
+
+
+
+
+
+
+

+ pciutils-3.14.0 +

+
+
+
+
+
+

+ Introduction to PCI Utils +

+

+ The PCI Utils package + contains a set of programs for listing PCI devices, + inspecting their status and setting their configuration + registers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ pciutils Dependencies +

+
+ Recommended +
+ +
+
+

+ Installation of PCI Utils +

+

+ Prevent the installation of the pci.ids file to avoid a conflict with the + hwdata-0.398 package: +

+
sed -r '/INSTALL/{/PCI_IDS|update-pciids /d; s/update-pciids.8//}' \
+    -i Makefile
+

+ Install PCI Utils by running + the following commands: +

+
make PREFIX=/usr                \
+     SHAREDIR=/usr/share/hwdata \
+     SHARED=yes
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr                \
+     SHAREDIR=/usr/share/hwdata \
+     SHARED=yes                 \
+     install install-lib        &&
+
+chmod -v 755 /usr/lib/libpci.so
+

+ Next, install the hwdata-0.398 package for the pci.ids file. +

+
+
+

+ Command Explanations +

+

+ SHARED=yes: This + parameter enables building of the shared library instead of + the static one. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lspci, pcilmr, and setpci +
+
+ Installed Library: + libpci.so +
+
+ Installed Directory: + /usr/include/pci +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ lspci +

+
+

+ is a utility for displaying information about all + PCI buses in the system and all devices connected + to them +

+
+

+ pcilmr +

+
+

+ is a utility for managing PCIe links +

+
+

+ setpci +

+
+

+ is a utility for querying and configuring PCI + devices +

+
+

+ libpci.so +

+
+

+ is a library that allows applications to access the + PCI subsystem +

+
+
+
+
+
+
+
+

+ sg3_utils-1.48 +

+
+
+
+
+
+

+ Introduction to sg3_utils +

+

+ The sg3_utils package + contains low level utilities for devices that use a SCSI + command set. Apart from SCSI parallel interface (SPI) + devices, the SCSI command set is used by ATAPI devices + (CD/DVDs and tapes), USB mass storage devices, Fibre Channel + disks, IEEE 1394 storage devices (that use the "SBP" + protocol), SAS, iSCSI and FCoE devices (amongst others). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://sg.danny.cz/sg/p/sg3_utils-1.48.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 0024393d2d2942cc081ce613d98db68a +

    +
  • +
  • +

    + Download size: 1.2 MB +

    +
  • +
  • +

    + Estimated disk space required: 27 MB +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU +

    +
  • +
+
+
+
+

+ Installation of sg3_utils +

+

+ Install sg3_utils by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + rescan-scsi-bus.sh, + scsi_logging_level, scsi_mandat, scsi_readcap, + scsi_ready, scsi_satl, scsi_start, scsi_stop, + scsi_temperature, sg_bg_ctl, sg_compare_and_write, + sg_copy_results, sg_dd, sg_decode_sense, sg_emc_trespass, + sg_format, sg_get_config, sg_get_lba_status, sg_ident, + sg_inq, sg_logs, sg_luns, sg_map, sg_map26, sg_modes, + sg_opcodes, sg_persist, sg_prevent, sg_raw, sg_rbuf, + sg_rdac, sg_read, sg_read_attr, sg_read_block_limits, + sg_read_buffer, sg_read_long, sg_readcap, sg_reassign, + sg_referrals, sg_rep_pip, sg_rep_zones, sg_requests, + sg_reset, sg_reset_wp, sg_rmsn, sg_rtpg, sg_safte, + sg_sanitize, sg_sat_identify, sg_sat_phy_event, + sg_sat_read_gplog, sg_sat_set_features, sg_scan, sg_seek, + sg_senddiag, sg_ses, sg_ses_microcode, sg_start, sg_stpg, + sg_stream_ctl, sg_sync, sg_test_rwbuf, sg_timestamp, + sg_turs, sg_unmap, sg_verify, sg_vpd, sg_wr_mode, + sg_write_buffer, sg_write_long, sg_write_same, + sg_write_verify, sg_write_x, sg_xcopy, sg_zone, sginfo, + sgm_dd, and sgp_dd +
+
+ Installed Library: + libsgutils2.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ rescan-scsi-bus.sh +

+
+

+ adds or removes SCSI devices without having to + reboot +

+
+

+ scsi_logging_level +

+
+

+ accesses Linux SCSI logging level information +

+
+

+ scsi_mandat +

+
+

+ checks SCSI device support for mandatory commands +

+
+

+ scsi_readcap +

+
+

+ does the SCSI READ CAPACITY command on disks +

+
+

+ scsi_ready +

+
+

+ does the SCSI TEST UNIT READY on devices +

+
+

+ scsi_satl +

+
+

+ checks for SCSI to ATA Translation (SAT) device + support +

+
+

+ scsi_start +

+
+

+ starts one or more SCSI disks +

+
+

+ scsi_stop +

+
+

+ stops one or more SCSI disks +

+
+

+ scsi_temperature +

+
+

+ fetches the temperature of a SCSI device +

+
+

+ sg_bg_ctl +

+
+

+ performs a SCSI BACKGROUND CONTROL command on a + device to perform "advanced background operations" +

+
+

+ sg_compare_and_write +

+
+

+ sends the SCSI COMPARE AND WRITE command to device +

+
+

+ sg_copy_results +

+
+

+ sends the SCSI RECEIVE COPY RESULTS command (XCOPY + related) +

+
+

+ sg_dd +

+
+

+ copies data to and from files and devices. + Specialised for devices that understand the SCSI + command set +

+
+

+ sg_decode_sense +

+
+

+ takes SCSI sense data in binary or as a sequence of + ASCII hexadecimal bytes and decodes it +

+
+

+ sg_emc_trespass +

+
+

+ changes ownership of a LUN from another + Service-Processor to this one +

+
+

+ sg_format +

+
+

+ formats or resizes a SCSI disk (perhaps changes its + block size) +

+
+

+ sg_get_config +

+
+

+ sends a SCSI GET CONFIGURATION command (MMC-4 +) +

+
+

+ sg_get_elem_status +

+
+

+ sends a SCSI GET PHYSICAL ELEMENT STATUS command to + a device +

+
+

+ sg_get_lba_status +

+
+

+ sends the SCSI GET LBA STATUS command +

+
+

+ sg_ident +

+
+

+ sends a SCSI REPORT or SET IDENTIFYING INFORMATION + command +

+
+

+ sginfo +

+
+

+ access mode page information for a SCSI (or ATAPI) + device +

+
+

+ sg_inq +

+
+

+ sends a SCSI INQUIRY or ATA IDENTIFY (PACKET) + DEVICE command and outputs the response +

+
+

+ sg_logs +

+
+

+ access log pages with SCSI LOG SENSE command +

+
+

+ sg_luns +

+
+

+ sends the SCSI REPORT LUNS command +

+
+

+ sg_map +

+
+

+ displays mapping between linux sg and other SCSI + devices +

+
+

+ sg_map26 +

+
+

+ maps a special file to a SCSI generic (sg) device + (or vice versa) +

+
+

+ sgm_dd +

+
+

+ copies data to and from files and devices. + Specialized for devices that understand the SCSI + command set and does memory mapped transfers from + sg devices +

+
+

+ sg_modes +

+
+

+ reads mode pages with the SCSI MODE SENSE command +

+
+

+ sg_opcodes +

+
+

+ reports information on supported SCSI commands or + task management functions +

+
+

+ sgp_dd +

+
+

+ copies data to and from files and devices. + Specialized for devices that understand the SCSI + command set +

+
+

+ sg_persist +

+
+

+ sends a SCSI PERSISTENT RESERVE (IN or OUT) command + to manipulate registrations and reservations +

+
+

+ sg_prevent +

+
+

+ sends a SCSI PREVENT ALLOW MEDIUM REMOVAL command +

+
+

+ sg_raw +

+
+

+ sends an arbitrary SCSI command to a device +

+
+

+ sg_rbuf +

+
+

+ reads data using the SCSI READ BUFFER command +

+
+

+ sg_rdac +

+
+

+ displays or modifies the RDAC Redundant Controller + Page +

+
+

+ sg_read +

+
+

+ reads blocks of data continually from the same + offset +

+
+

+ sg_read_attr +

+
+

+ performs a SCSI READ ATTRIBUTE command on a device +

+
+

+ sg_read_block_limits +

+
+

+ sends a SCSI READ BLOCK LIMITS command +

+
+

+ sg_read_buffer +

+
+

+ sends a SCSI READ BUFFER command +

+
+

+ sg_readcap +

+
+

+ sends a SCSI READ CAPACITY command +

+
+

+ sg_read_long +

+
+

+ sends a SCSI READ LONG command +

+
+

+ sg_reassign +

+
+

+ sends a SCSI REASSIGN BLOCKS command +

+
+

+ sg_referrals +

+
+

+ sends a SCSI REPORT REFERRALS command +

+
+

+ sg_rep_pip +

+
+

+ sends a SCSI REPORT PROVISIONING INITIALIZATION + PATTERN command +

+
+

+ sg_rep_zones +

+
+

+ sends a SCSI REPORT ZONES command +

+
+

+ sg_requests +

+
+

+ sends one or more SCSI REQUEST SENSE commands +

+
+

+ sg_reset +

+
+

+ sends a SCSI device, target, bus or host reset; or + checks reset state +

+
+

+ sg_reset_wp +

+
+

+ sends a SCSI RESET WRITE POINTER command +

+
+

+ sg_rmsn +

+
+

+ sends a SCSI READ MEDIA SERIAL NUMBER command +

+
+

+ sg_rtpg +

+
+

+ sends a SCSI REPORT TARGET PORT GROUPS command +

+
+

+ sg_safte +

+
+

+ fetches status information from a SCSI Accessed + Fault-Tolerant Enclosure (SAF-TE) device +

+
+

+ sg_sanitize +

+
+

+ sends a SCSI SANITIZE command +

+
+

+ sg_sat_identify +

+
+

+ sends an ATA IDENTIFY (PACKET) DEVICE command via a + SCSI to ATA Translation (SAT) layer +

+
+

+ sg_sat_phy_event +

+
+

+ sends an ATA READ LOG EXT command via a SAT pass + through to fetch log page 11h which contains SATA + phy event counters +

+
+

+ sg_sat_read_gplog +

+
+

+ sends an ATA READ LOG EXT command via a SCSI to ATA + Translation (SAT) layer +

+
+

+ sg_sat_set_features +

+
+

+ sends an ATA SET FEATURES command via a SCSI to ATA + Translation (SAT) layer +

+
+

+ sg_scan +

+
+

+ does a scan of sg devices (or given SCSI/ATAPI/ATA + devices) and prints the results +

+
+

+ sg_seek +

+
+

+ performs a SCSI SEEK or PRE-FETCH command on a + device and it's cache +

+
+

+ sg_senddiag +

+
+

+ performs a SCSI SEND DIAGNOSTIC command +

+
+

+ sg_ses +

+
+

+ sends controls and fetches the current status from + a SCSI Enclosure Services (SES) device +

+
+

+ sg_ses_microcode +

+
+

+ sends microcode to a SCSI enclosure +

+
+

+ sg_start +

+
+

+ sends a SCSI START STOP UNIT command to start, + stop, load or eject medium +

+
+

+ sg_stpg +

+
+

+ sends a SCSI SET TARGET PORT GROUPS command +

+
+

+ sg_stream_ctl +

+
+

+ performs a SCSI STREAM CONTROL or GET STREAM STATUS + command on a device to open or close an I/O stream +

+
+

+ sg_sync +

+
+

+ sends a SCSI command to synchronize the cache +

+
+

+ sg_test_rwbuf +

+
+

+ tests the SCSI host adapter by issuing write and + read operations on a device's buffer and + calculating checksums +

+
+

+ sg_timestamp +

+
+

+ reports or sets the timestamp on a SCSI device +

+
+

+ sg_turs +

+
+

+ sends one or more SCSI TEST UNIT READY commands +

+
+

+ sg_unmap +

+
+

+ sends a SCSI UNMAP command +

+
+

+ sg_verify +

+
+

+ invokes SCSI VERIFY command(s) on a block device +

+
+

+ sg_vpd +

+
+

+ fetches Vital Product Data (VPD) pages using a SCSI + INQUIRY command +

+
+

+ sg_write_buffer +

+
+

+ sends a SCSI WRITE BUFFER command +

+
+

+ sg_write_long +

+
+

+ sends a SCSI WRITE LONG command +

+
+

+ sg_write_same +

+
+

+ sends a SCSI WRITE SAME command +

+
+

+ sg_write_verify +

+
+

+ sends a SCSI WRITE AND VERIFY command +

+
+

+ sg_write_x +

+
+

+ performs SCSI WRITE commands on a device +

+
+

+ sg_wr_mode +

+
+

+ writes mode pages +

+
+

+ sg_xcopy +

+
+

+ copies data to and from files and devices using + SCSI EXTENDED COPY (XCOPY) +

+
+

+ sg_zone +

+
+

+ performs SCSI ZONE commands on a device, such as + OPEN, CLOSE, FINISH or SEQUENTIALIZE +

+
+

+ libsgutils2.so +

+
+

+ contains the sg3_utils API functions +

+
+
+
+
+
+
+
+

+ sysmond-1.0.0 +

+
+
+
+
+
+

+ Introduction to sysmond +

+

+ The sysmond package + (pronounced sys-mon-d) is the daemon portion of the + sysmond/sysmon3 client/server application that monitors + system values including CPU usage, memory usage, and system + temperatures in a compact screen window. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Kernel + Configuration +

+

+ There are many different hardware devices that sense + temperatures. The temperature readings are updated by kernel + drivers that support specific devices. To determine what + devices are present on a system the lm-sensors-3-6-2 + package has a Perl script, sensors-detect that can + look for specific devices that are in the current system. +

+

+ After sensor devices are known, the appropriate kernel driver + must be enabled. In many cases, but not all, the appropriate + drivers are selected by default. The kernel configuration + parameters are located at: +

+
Device Drivers --->                                    
+  Networking options --->
+    [*] Hardware Monitoring support --->        [CONFIG_HWMON]
+

+ In most cases at least Intel Core/Core2/Atom temperature + sensor (SENSORS_CORETEMP) should be enabled for Intel based + systems or CONFIG_SENSORS_K10TEMP (AMD) should be enabled for + AMD based systems. +

+
+
+

+ Installation of sysmond +

+

+ Install sysmond by running + the following commands: +

+
make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuring sysmond +

+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/sysmond init script + included in the blfs-bootscripts-20250225 package. +

+
make install-sysmond
+
+
+
+
+
+

+ Config File +

+
+
+
+

+ By default the configuration file is /etc/sysmond.conf but it can be changed + by passing --config-file <filename> on the command + line. Initially all of the configuration items are + commented out and the defaults specified there are used. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sysmond +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ sysmon3-3.0.1 +

+
+
+
+
+
+

+ Introduction to sysmon3 +

+

+ The sysmon3 package + (pronounced sys-mon-3) is the client portion of the + sysmond/sysmon3 client/server application that monitors + system values including CPU usage, memory usage, and system + temperatures in a compact screen window. Multiple instances + of sysmon3 can be run on a + system to monitor values on different systems. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ sysmon3 Dependencies +

+
+ Required +
+

+ Qt-6.9.2 (or + qt5) +

+
+ Required at runtime +
+

+ sysmond-1.0.0 (runtime on the system to + be monitored) +

+
+
+

+ Installation of sysmon3 +

+

+ Install sysmon3 by running + the following commands: +

+
qmake sysmon3.pro &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -vm755 sysmon3 /usr/bin
+
+
+

+ Configuring sysmon3 +

+
+
+
+
+

+ Configuration Files +

+
+
+
+

+ $HOME/.config/LinuxFromScratch/<monitored + system>.conf +

+

+ The configuration files are created at run time for each + system being monitored. They are not normally updated + manually, but are managed by the program's configuration + widgets. +

+

+ When first run, the program asks for the system to be + monitored. After testing that communication to the server + is satisfactory and the server name is saved, the main + window will start. After initial setup, the setup widget + can be bypassed by passing the server name as an argument + to the program. +

+

+ The program is designed to take up minimal screen space so + by default it does not have a frame. The frame can be + toggled on and off with Ctrl-F. This can be useful for + placing the window in the desired location. After initial + placement, the location is saved in the configuration file + for the next time the program is started. +

+

+ A short operation menu is brought up with a right mouse + click on the main window. Configuration widgets are brought + up with F1. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sysmon3 +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $HOME/.config/LinuxFromScratch/ +
+
+
+
+
+
+
+
+

+ usbutils-018 +

+
+
+
+
+
+

+ Introduction to USB Utils +

+

+ The USB Utils package + contains utilities used to display information about USB + buses in the system and the devices connected to them. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ USB + Utils Dependencies +

+
+ Required +
+

+ libusb-1.0.29 +

+
+ Recommended +
+ +
+
+

+ Installation of USB Utils +

+

+ Install USB Utils by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release &&
+
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ For the usb.ids data file, + install the hwdata-0.398 package. +

+

+ The script lsusb.py displays + information in a more easily readable form than lsusb. To find the options, + use lsusb.py + -h. One form of use recommended by the + developer is lsusb.py + -ciu. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lsusb, lsusb.py, usb-devices, and + usbhid-dump +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ lsusb +

+
+

+ is a utility for displaying information about all + USB buses in the system and all devices connected + to them, but not in human friendly form +

+
+

+ lsusb.py +

+
+

+ displays information about all USB buses in the + system and all devices connected to them in + reasonable human friendly form +

+
+

+ usb-devices +

+
+

+ is a shell script that displays details of USB + buses and devices connected to them. It is designed + to be used if /proc/bus/usb/devices is not + available on your system +

+
+

+ usbhid-dump +

+
+

+ is used to dump report descriptors and streams from + HID (human interface device) interfaces of USB + devices +

+
+
+
+
+
+
+
+
+

+ [2] The default Xorg configuration file is + /etc/X11/xorg.conf.d/30-keyboard.conf. +

+
+
+
+
+
+
+

+ Chapter 13. Programming +

+
+
+
+
+

+ A base LFS system can be used as a development platform, however + the base system only includes language support for C, C++, + Perl, and Python. This chapter provides instructions + to build many popular programming environments to greatly expand + your system's development capabilities. +

+
+
+
+

+ cargo-c-0.10.15 +

+
+
+
+
+
+

+ Introduction to cargo-c +

+

+ The cargo-c package creates + a cargo subcommand to build and install C-ABI compatible + dynamic and static libraries. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ cargo-c Dependencies +

+
+ Required +
+

+ rustc-1.89.0 +

+
+ Recommended +
+ +
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+
+

+ Installation of cargo-c +

+

+ First, download a file to ensure that cargo uses the dependency + versions specified by the upstream developers when this + cargo-c version (0.10.15) was released. Without this, the + latest versions of the dependencies would be used and they + might cause breakages: +

+
curl -fLO https://github.com/lu-zero/cargo-c/releases/download/v0.10.15/Cargo.lock
+
+

+ Note +

+

+ Normally we would put such a download into an “Additional + Downloads” section. But in this case we + cannot tell the package name and version from the file name + Cargo.lock, so it's better + not to put the ambiguously-named file outside the + cargo-c-0.10.15 directory. We + use curl here + because the cURL-8.15.0 package should have been + installed as a required dependency of rustc-1.89.0. +

+

+ The md5sum of the file should be 57fab87782a5f9ef46fcbddc44d425b1. +

+
+

+ Install cargo-c by running + the following commands: +

+
[ ! -e /usr/include/libssh2.h ] || export LIBSSH2_SYS_USE_PKG_CONFIG=1    &&
+[ ! -e /usr/include/sqlite3.h ] || export LIBSQLITE3_SYS_USE_PKG_CONFIG=1 &&
+
+cargo build --release
+

+ To test the results, issue: cargo test --release. +

+

+ Now, as the root user: +

+
install -vm755 target/release/cargo-{capi,cbuild,cinstall,ctest} /usr/bin/
+

+ Finally, unset the exported environment variables: +

+
unset LIB{SSH2,SQLITE3}_SYS_USE_PKG_CONFIG
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cargo-capi, cargo-cbuild, + cargo-cinstall, and cargo-ctest +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ Cbindgen-0.29.0 +

+
+
+
+
+
+

+ Introduction to Cbindgen +

+

+ Cbindgen can be used to + generate C bindings for Rust + code. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ cbindgen Dependencies +

+
+ Required +
+

+ rustc-1.89.0 +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+
+

+ Installation of cbindgen +

+

+ Install cbindgen by running + the following commands: +

+
cargo build --release
+

+ To test the results, issue: cargo test --release. Three + tests in profile.rs are known + to fail because they expect some Rust unstable features + disabled in the BLFS rustc-1.89.0 configuration. +

+

+ Now, as the root user: +

+
install -Dm755 target/release/cbindgen /usr/bin/
+
+
+

+ Contents +

+
+
+
+ Installed Program: + cbindgen +
+
+ Installed Library: + none +
+
+ Installed Directory: + none +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ cbindgen +

+
+

+ generates C bindings for Rust code +

+
+
+
+
+
+
+
+

+ Clisp-2.49.95 +

+
+
+
+
+
+

+ Introduction to Clisp +

+

+ GNU Clisp is a Common Lisp + implementation which includes an interpreter, compiler, + debugger, and many extensions. +

+
+

+ Note +

+

+ This package has not had a 'stable' release since 2010. The + package here was created from the upstream git + repository in order to enable it to be built with + gcc-15. The most recent commit was May 2025. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://anduin.linuxfromscratch.org/BLFS/clisp/clisp-2.49.95.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: e3b3ba6b3432280e4d4a766404f02d6f +

    +
  • +
  • +

    + Download size: 7.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 146 MB (with tests; 34 + MB installed) +

    +
  • +
  • +

    + Estimated build time: 0.6 SBU (Using parallelism=4; add + 0.3 SBU for tests) +

    +
  • +
+
+

+ Clisp Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ libnsl-2.0.1 and libffcall +

+
+
+

+ Installation of Clisp +

+

+ Install Clisp by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+../configure --srcdir=../  \
+             --prefix=/usr \
+             --docdir=/usr/share/doc/clisp-2.49.95 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --docdir=/usr/share/doc/clisp-2.49.95: + this switch forces the HTML documentation to be installed + into a versioned directory. +

+

+ --with-libffcall-prefix=/usr: use + this to tell configure that you have + installed the optional libffcall + package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + clisp and clisp-link +
+
+ Installed Libraries: + various static libraries in + /usr/lib/clisp-2.49.95+/base/ +
+
+ Installed Directories: + /usr/lib/clisp-2.49.95+, + /usr/share/doc/clisp-2.49.95, and + /usr/share/emacs/site-lisp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ clisp +

+
+

+ is an ANSI Common Lisp compiler, interpreter, and + debugger +

+
+

+ clisp-link +

+
+

+ is used to link an external module to clisp +

+
+
+
+
+
+
+
+

+ CMake-4.1.0 +

+
+
+
+
+
+

+ Introduction to CMake +

+

+ The CMake package contains a + modern toolset used for generating Makefiles. It is a + successor of the auto-generated configure script and aims + to be platform- and compiler-independent. A significant user + of CMake is KDE since version 4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://cmake.org/files/v4.1/cmake-4.1.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 80ae27faba5068c8ec12c77bf00e6db3 +

    +
  • +
  • +

    + Download size: 11 MB +

    +
  • +
  • +

    + Estimated disk space required: 621 MB (add 1.4 GB for + tests) +

    +
  • +
  • +

    + Estimated build time: 2.6 SBU (add 4.3 SBU for tests, + both using parallelism=4) +

    +
  • +
+
+

+ CMake Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ GCC-15.2.0 + (for gfortran), git-2.50.1 (for use during tests), mercurial-7.1 (for use during tests), + OpenJDK-24.0.2 (for use during tests), + Qt-6.9.2 + (for the Qt-based GUI), sphinx-8.2.3 (for building documents), + Subversion-1.14.5 (for testing), + cppdap, jsoncpp, + and rhash +

+
+
+

+ Installation of CMake +

+

+ Install CMake by running the + following commands: +

+
sed -i '/"lib64"/s/64//' Modules/GNUInstallDirs.cmake &&
+
+./bootstrap --prefix=/usr        \
+            --system-libs        \
+            --mandir=/share/man  \
+            --no-system-jsoncpp  \
+            --no-system-cppdap   \
+            --no-system-librhash \
+            --docdir=/share/doc/cmake-4.1.0 &&
+make
+

+ To test the results, issue: bin/ctest -j$(nproc). + Replace $(nproc) + with an integer between 1 and the number of system logical + cores if you don't want to use all. +

+

+ If you want to investigate a problem with a given + "problem1-test", use bin/ctest + -R "problem1-test" and, to omit it, use + bin/ctest -E + "problem1-test". These options can be used + together: bin/ctest -R + "problem1-test" -E "problem2-test". Option + -N can be used to display all + available tests, and you can run bin/ctest for a sub-set of + tests by using separated by spaces names or numbers as + options. Option --help can be + used to show all options. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed ... + Modules/GNUInstallDirs.cmake: This command + disables applications using cmake from attempting to install + files in /usr/lib64/. +

+

+ --system-libs: This + switch forces the build system to link against the system + installed version for all needed libraries but those + explicitly specified via a --no-system-* option. +

+

+ --no-system-jsoncpp + and --no-system-cppdap: These + switches remove the JSON-C++ + library from the list of system libraries. A bundled version + of that library is used instead. +

+

+ --no-system-librhash: + This switch removes the librhash library from the list of system + libraries used. A bundled version of that library is used + instead. +

+

+ --no-system-{curl,libarchive,libuv,nghttp2}: + Use the corresponding option in the list for the bootstrap if one of the + recommended dependencies is not installed. A bundled version + of the dependency will be used instead. +

+

+ --qt-gui: This switch enables + building the Qt-based GUI + for CMake. +

+

+ --parallel=: This switch enables + performing the CMake + bootstrap with multiple jobs at one time. It's not needed if + the MAKEFLAGS variable has been + already set for using multiple processors following Using Multiple Processors. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ccmake, cmake, cmake-gui + (optional), cpack, and ctest +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/cmake-4.1 and + /usr/share/doc/cmake-4.1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ccmake +

+
+

+ is a curses based interactive frontend to + cmake +

+
+

+ cmake +

+
+

+ is the makefile generator +

+
+

+ cmake-gui +

+
+

+ (optional) is the Qt-based frontend to + cmake +

+
+

+ cpack +

+
+

+ is the CMake + packaging program +

+
+

+ ctest +

+
+

+ is a testing utility for cmake-generated build + trees +

+
+
+
+
+
+
+
+

+ Doxygen-1.14.0 +

+
+
+
+
+
+

+ Introduction to Doxygen +

+

+ The Doxygen package contains + a documentation system for C++, C, Java, Objective-C, Corba + IDL and to some extent PHP, C# and D. It is useful for + generating HTML documentation and/or an off-line reference + manual from a set of documented source files. There is also + support for generating output in RTF, PostScript, hyperlinked + PDF, compressed HTML, and Unix man pages. The documentation + is extracted directly from the sources, which makes it much + easier to keep the documentation consistent with the source + code. +

+

+ You can also configure Doxygen to extract the code structure + from undocumented source files. This is very useful to + quickly find your way in large source distributions. Used + along with Graphviz, you can + also visualize the relations between the various elements by + means of include dependency graphs, inheritance diagrams, and + collaboration diagrams, which are all generated + automatically. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://doxygen.nl/files/doxygen-1.14.0.src.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: a86f6c0203e51a57fbcaf98830d1be16 +

    +
  • +
  • +

    + Download size: 8.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 256 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 1.3 SBU (with tests; both using + parallelism=4) +

    +
  • +
+
+

+ Doxygen Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and git-2.50.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ Graphviz-13.1.2, ghostscript-10.05.1, + libxml2-2.14.5 (required for the tests), + LLVM-20.1.8 (with clang), texlive-20250308 (or install-tl-unx), xapian-1.4.29 (for + doxyindexer), and javacc +

+
+
+

+ Installation of Doxygen +

+

+ First, fix up some python scripts: +

+
grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'
+

+ Install Doxygen by running + the following commands: +

+
mkdir -v build &&
+cd       build &&
+
+cmake -G "Unix Makefiles"          \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      -D build_wizard=ON           \
+      -D force_qt=Qt6              \
+      -W no-dev .. &&
+make
+

+ To test the results, issue: make tests. One test, + 012_cite.dox, is known to fail if texlive-20250308 or install-tl-unx is not installed. +

+

+ If you wish to generate the package documentation, you must + have Python, TeX Live (for HTML docs) and + Ghostscript (for PDF docs) + installed, then issue the following command: +

+
cmake  -D build_doc=ON \
+       -D DOC_INSTALL_DIR=share/doc/doxygen-1.14.0 \
+       .. &&
+make docs
+

+ Now, as the root user: +

+
make install &&
+install -vm644 ../doc/*.1 /usr/share/man/man1
+

+ If you have generated the package documentation, then the man + pages are automatically installed, and you do not need to run + the last install + ... command. +

+
+
+

+ Command Explanations +

+

+ -D build_wizard=OFF: Use this + switch if Qt6 is not + installed. +

+

+ -D build_search=ON: Use this + switch if xapian is + installed and you wish to build external search tools + (doxysearch.cgi + and doxyindexer). +

+

+ -D force_qt6=ON: Use this switch + to build doxywizard with Qt6 even if + Qt5 is installed. +

+

+ -D use_libclang=ON: Use this + switch if llvm with + clang are installed, to add + support for libclang parsing. +

+
+
+

+ Configuring Doxygen +

+

+ There is no real configuration necessary for the Doxygen package although three + additional packages are required if you wish to use extended + capabilities. If you require formulas to create PDF + documentation, then you must have texlive-20250308 installed. If + you require formulas to convert PostScript files to bitmaps, + then you must have ghostscript-10.05.1 installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + doxygen and optionally, doxywizard, + doxyindexer and doxysearch.cgi +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/doc/doxygen-1.14.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ doxygen +

+
+

+ is a command-line based utility used to generate + template configuration files and then generate + documentation from these templates. Use + doxygen + --help for an explanation of the + command-line parameters +

+
+

+ doxywizard +

+
+

+ is a GUI front-end for configuring and running + doxygen +

+
+

+ doxyindexer +

+
+

+ generates a search index called doxysearch.db from one or more + search data files produced by doxygen. See, + e.g. https://javacc.github.io/javacc/ +

+
+

+ doxysearch.cgi +

+
+

+ is a CGI program to search the data indexed by + doxyindexer +

+
+
+
+
+
+
+
+

+ dtc-1.7.2 +

+
+
+
+
+
+

+ Introduction to Dtc +

+

+ The dtc package contains the + Device Tree Compiler for working with device tree source and + binary files and also libfdt, a utility library for reading + and manipulating device trees in the binary format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Dtc + Dependencies +

+
+ Optional +
+

+ libyaml-0.2.5, SWIG-4.3.1, and texlive-20250308 +

+
+
+

+ Installation of Dtc +

+

+ Install dtc by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D python=disabled  &&
+ninja
+

+ To test the results, issue: CC='gcc -Wl,-z,noexecstack' meson test + -v. +

+

+ Now, as the root user: +

+
ninja install
+

+ Still as the root user, + remove the useless static library: +

+
rm /usr/lib/libfdt.a
+

+ If you have texlive-20250308 installed, you + can build the PDF format of the documentation by issuing the + following command: +

+
pushd ../Documentation
+  latexmk -bibtex --pdf dtc-paper &&
+  latexmk -bibtex --pdf dtc-paper -c
+popd
+

+ To install the documentation, as the root user issue the following command: +

+
cp -R ../Documentation -T /usr/share/doc/dtc-1.7.2
+

+ If you have installed SWIG-4.3.1 and you wish to install the + Python 3 bindings of this package, build the Python 3 module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir ..
+

+ As the root user, install the + Python 3 module: +

+
pip3 install --no-index --find-links dist --no-user libfdt
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D python=disabled: + This switch prevents building the Python 3 binding with the + deprecated method (running setup.py directly). We will + build the Python 3 binding with the pip3 wheel command + separately if wanted. +

+

+ CC='gcc -Wl,-z,noexecstack': This + variable prevents marking the shared libraries in the test + suite as requiring executable stack. Glibc 2.41 or later has + stopped allowing dlopening such + a shared library so the test suite would fail. But those + shared libraries don't really need an executable stack, so we + can use -Wl,-z,noexecstack to fix up + the test suite. It's needed in the CC environment for the meson test because those + shared libraries are built by a test script instead of the + meson/ninja building system, and + the test script does not recognize other “common” + environment variables like LDFLAGS. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + convert-dtsv0, dtc, dtdiff, + fdtdump, fdtget, fdtoverlay, and fdtput +
+
+ Installed Library: + libfdt.so +
+
+ Installed Directory: + /usr/lib/python3.13/site-packages/libfdt-1.7.2.dist-info + and /usr/share/doc/dtc-1.7.2 (optionally) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ convert-dtsv0 +

+
+

+ converts device tree v0 source to device tree v1 +

+
+

+ dtc +

+
+

+ compiles device tree source (dts) to device tree + binary blob (dtb), or de-compiles dtb to dts +

+
+

+ dtdiff +

+
+

+ compares two different device trees +

+
+

+ fdtdump +

+
+

+ prints a readable version of a flat device-tree + file +

+
+

+ fdtget +

+
+

+ reads values from device-tree +

+
+

+ fdtoverlay +

+
+

+ applies a number of overlays to a base device tree + blob +

+
+

+ fdtput +

+
+

+ writes a property value to a device tree +

+
+

+ libfdt.so +

+
+

+ is a utility library for reading and manipulating + device trees in the binary format +

+
+
+
+
+
+
+
+

+ GCC-15.2.0 +

+
+
+
+
+
+

+ Introduction to GCC +

+

+ The GCC package contains the + GNU Compiler Collection. This page describes the installation + of compilers for the following languages: C, C++, Fortran, + Objective C, Objective C++, Go, and Modula2. Since C and C++ + are installed in LFS, this page is either for upgrading C and + C++, or for installing additional compilers. +

+
+

+ Note +

+

+ Additional languages, among which COBOL, D, and Ada, are + available in the collection. COBOL is currently only + supported on x86-64 systems. D and Ada have a binary + bootstrap requirement for the first installation, so their + installation is not described here. To install D or Ada, + you can proceed along the same lines as below after + installing the corresponding compiler from a binary + package. Finally add ada or + d or cobol to the --enable-languages line as + desired. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Caution +

+

+ If you are upgrading GCC + from any other version prior to 15.2.0, then you must be + careful compiling 3rd party kernel modules. You should + ensure that the kernel and all its native modules are also + compiled using the same version of GCC that you use to build the 3rd + party module. This issue does not affect native kernel (and + kernel modules) updates, as the instructions below are a + complete reinstallation of GCC. If you have existing 3rd party + modules installed, ensure they are recompiled using the + updated version of GCC. +

+
+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/gcc/gcc-15.2.0/gcc-15.2.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: b861b092bf1af683c46a8aa2e689a6fd +

    +
  • +
  • +

    + Download size: 96 MB +

    +
  • +
  • +

    + Estimated disk space required: 12 GB (3.8 GB installed + with all listed languages; add 2 GB for tests) +

    +
  • +
  • +

    + Estimated build time: 16 SBU (add 33 SBU for tests; + both with parallelism=8) +

    +
  • +
+
+

+ GCC + Dependencies +

+
+ Optional +
+

+ GDB-16.3, + Graphviz-13.1.2 (some tests use it if + installed; note that if it's installed but not built with + libpng-1.6.50 these tests will fail), + Valgrind-3.25.1 (for tests), and + ISL + (to enable graphite optimization) +

+
+
+

+ Installation of GCC +

+
+

+ Important +

+

+ Even if you specify only languages other than C and C++ to + the ./configure command + below, the installation process will overwrite your + existing GCC C and C++ + compilers and libraries. Running the full suite of tests is + recommended. +

+

+ Do not continue with the make + install command until you are confident the + build was successful. You can compare your test results + with those found at https://gcc.gnu.org/ml/gcc-testresults/. + You may also want to refer to the information found in the + GCC section of Chapter 8 + in the LFS book (../../../../lfs/view/12.4/chapter08/gcc.html). +

+
+

+ The instructions below are intentionally performing a + “bootstrap” process. Bootstrapping is + needed for robustness and is highly recommended when + upgrading the compilers version. To disable bootstrap anyway, + add --disable-bootstrap to the + ./configure + options below. +

+

+ Install GCC by running the + following commands: +

+
case $(uname -m) in
+  x86_64)
+    sed -i.orig '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
+  ;;
+esac
+
+mkdir build               &&
+cd    build               &&
+
+../configure              \
+    --prefix=/usr         \
+    --disable-multilib    \
+    --with-system-zlib    \
+    --enable-default-pie  \
+    --enable-default-ssp  \
+    --enable-host-pie     \
+    --disable-fixincludes \
+    --enable-languages=c,c++,fortran,go,objc,obj-c++,m2 &&
+make
+

+ If you have installed additional packages such as + valgrind and gdb, the gcc part of the test suite will run more + tests than in LFS. Some of those will report FAIL and others + XPASS (pass when expected to FAIL). As of gcc-15.2.0, about + 69 FAILs occur in the “guality” suite, as well as + miscellaneous failures throughout the rest of the test suite. + If all the compilers above are built, there will be about 107 + unexpected failures out of over 610,000 tests. To run the + tests, issue: +

+
make -k check
+

+ The tests are very long, and the results may be hard to find + in the logs, specially if you use parallel jobs with make. + You can get a summary of the tests with: +

+
../contrib/test_summary
+

+ Now, as the root user: +

+
make install &&
+
+mkdir -pv /usr/share/gdb/auto-load/usr/lib              &&
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &&
+
+chown -v -R root:root \
+    /usr/lib/gcc/*linux-gnu/15.2.0/include{,-fixed}     &&
+
+ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/15.2.0/liblto_plugin.so \
+        /usr/lib/bfd-plugins/
+
+

+ Important +

+

+ Now you should upgrade readline to 8.3-rc1 or newer + following the LFS book, or packages using readline may fail + to build. +

+
+
+
+

+ Command Explanations +

+

+ mkdir build; cd + build: The GCC documentation recommends building + the package in a dedicated build directory. +

+

+ --disable-multilib: + This parameter ensures that files are created for the + specific architecture of your computer. +

+

+ --with-system-zlib: + Uses the system zlib instead + of the bundled one. zlib is + used for compressing and decompressing GCC's intermediate language in LTO (Link + Time Optimization) object files. +

+

+ --enable-default-pie: + Makes the -fpie option the + default when compiling programs. Together with the ASLR feature enabled in the kernel, + this defeats some kind of attacks based on known memory + layouts. +

+

+ --enable-default-ssp: + Makes the -fstack-protector-strong option the default + when compiling programs. SSP is a + technique preventing alteration of the program flow by + corrupting the parameter stack. +

+

+ --enable-host-pie: + Makes the compiler executables PIE (Position Independent + Executable). This can be used to enhance protection against + ROP (Return Oriented Programming) attacks, and can be viewed + as part of a wider trend to harden binaries. +

+

+ --enable-languages=c,c++,fortran,go,objc,obj-c++,m2: + This command identifies which languages to build. You may + modify this command to remove undesired languages. GCC also + supports Ada and D, but building GCC with Ada (or D) support + needs an existing Ada (or D) compiler. So they are not + enabled here. +

+

+ make -k check: + This command runs the test suite without stopping if any + errors are encountered. +

+

+ ../contrib/test_summary: + This command will produce a summary of the test suite + results. You can append | grep + -A7 Summ to the command to produce an even + more condensed version of the summary. You may also wish to + redirect the output to a file for review and comparison later + on. +

+

+ mv -v /usr/lib/*gdb.py + ...: The installation stage puts some files + used by gdb under the + /usr/lib directory. This + generates spurious error messages when performing + ldconfig. This + command moves the files to another location. +

+

+ chown -v -R root:root + /usr/lib/gcc/*linux-gnu/...: If the package + is built by a user other than root, the ownership of the + installed include directory + (and its content) will be incorrect. This command changes the + ownership to the root user + and group. +

+

+ --enable-host-shared + --enable-languages=jit: Build libgccjit, a library for embedding GCC + inside programs and libraries for generating machine code. + Despite “JIT” (just-in-time) in the name, the + library can be used for AOT (ahead-of-time) compilation as + well. --enable-host-shared is + needed for building libgccjit, but it significantly slows + down GCC. So libgccjit should + be built and installed separately, not as a part of the + “main” + GCC installation. If you need this library, configure GCC + with these two options and install the library by running + make -C gcc jit.install-common + jit.install-info as the root user. This library is not used by + any BLFS package, nor tested by the BLFS developers. +

+
+
+

+ Contents +

+

+ Some program and library names and descriptions are not + listed here, but can be found at LFS + section for GCC as they were initially installed during + the building of LFS. +

+
+
+
+ Installed Programs: + gccgo, gfortran, gm2, go, and + gofmt, hard-linked to architecture specific names +
+
+ Installed Libraries: + libgfortran.{so,a}, libgm2.{so,a} + libgo.{so,a}, libgobegin.a, libgolibbegin.a, + libobjc.{so,a}, and numerous other run-time libraries and + executables +
+
+ Installed Directories: + /usr/lib/go +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gccgo +

+
+

+ is a GCC-based compiler for the Go language +

+
+

+ gm2 +

+
+

+ is a GCC-based compiler for the Modula-2 language +

+
+

+ go +

+
+

+ is a tool for managing Go source code +

+
+

+ gofmt +

+
+

+ is a tool for formatting Go source code +

+
+

+ gfortran +

+
+

+ is a GCC-based compiler for the Fortran language +

+
+
+
+
+
+
+
+

+ GC-8.2.8 +

+
+
+
+
+
+

+ Introduction to GC +

+

+ The GC package contains the + Boehm-Demers-Weiser conservative garbage collector, which can + be used as a garbage collecting replacement for the C malloc + function or C++ new operator. It allows you to allocate + memory basically as you normally would, without explicitly + deallocating memory that is no longer useful. The collector + automatically recycles memory when it determines that it can + no longer be otherwise accessed. The collector is also used + by a number of programming language implementations that + either use C as intermediate code, want to facilitate easier + interoperation with C libraries, or just prefer the simple + collector interface. Alternatively, the garbage collector may + be used as a leak detector for C or C++ programs, though that + is not its primary goal. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+ Optional +
+

+ libatomic_ops-7.8.2 +

+
+
+

+ Installation of GC +

+

+ Install GC by running the + following commands: +

+
./configure --prefix=/usr      \
+            --enable-cplusplus \
+            --disable-static   \
+            --docdir=/usr/share/doc/gc-8.2.8 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m644 doc/gc.man /usr/share/man/man3/gc_malloc.3
+
+
+

+ Command Explanations +

+

+ --docdir=/usr/share/doc/gc-8.2.8: + This option is used so the package will install the + documentation in a versioned directory. +

+

+ --enable-cplusplus: + This parameter enables the building and installing of the C++ + library along with the standard C library. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libcord.so, libgc.so, libgccpp.so, + and libgctba.so +
+
+ Installed Directories: + /usr/include/gc and + /usr/share/doc/gc-8.2.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ libcord.so +

+
+

+ contains a tree-based string library +

+
+

+ libgc.so +

+
+

+ contains a C interface to the conservative garbage + collector, primarily designed to replace the C + malloc function +

+
+

+ libgccpp.so +

+
+

+ contains a C++ interface to the conservative + garbage collector +

+
+

+ libgctba.so +

+
+

+ contains a C++ interface to throw bad allocations +

+
+
+
+
+
+
+
+

+ GDB-16.3 +

+
+
+
+
+
+

+ Introduction to GDB +

+

+ GDB, the GNU Project + debugger, allows you to see what is going on “inside” another + program while it executes -- or what another program was + doing at the moment it crashed. Note that GDB is most effective when tracing + programs and libraries that were built with debugging symbols + and not stripped. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/gdb/gdb-16.3.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: f7a7e2d0a6d28622ac69a3623b23876b +

    +
  • +
  • +

    + Download size: 23 MB +

    +
  • +
  • +

    + Estimated disk space required: 853 MB (add 825 MB for + docs; add 860 MB for tests) +

    +
  • +
  • +

    + Estimated build time: 1.1 SBU (add 1.0 SBU for docs; + add 3.5 SBU tests; all using parallelism=8) +

    +
  • +
+
+

+ GDB + Dependencies +

+
+ Recommended Runtime Dependency +
+ +
+ Optional +
+

+ Doxygen-1.14.0, GCC-15.2.0 (ada, gfortran, and + go are used for tests), Guile-3.0.10, rustc-1.89.0 (used for some tests), + Valgrind-3.25.1, and SystemTap + (run-time, used for tests) +

+
+
+

+ Installation of GDB +

+

+ Install GDB by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+../configure --prefix=/usr          \
+             --with-system-readline \
+             --with-system-zlib     \
+             --with-python=/usr/bin/python3 &&
+make
+

+ Optionally, to build the API documentation using Doxygen-1.14.0, run: +

+
make -C gdb/doc doxy
+

+ Running the tests is not recommended. The results vary a lot + depending on the system architecture and what optional + dependencies are installed and what version of gcc is being + used. On one system tested, there were 140 unexpected + failures (out of over 108,000 tests) and on another system + there were "only" 14 unexpected failures. The time to run the + tests varies from approximately 3 SBU to over 15 SBU when + using -j8. This depends on number of tests that time out as + well as other factors. +

+
+

+ Tip +

+

+ With a plain make + check, there are many warning messages + about a missing global configuration file. These can be + avoided by running touch + global.exp and prepending the make check command with + DEJAGNU=$PWD/global.exp. + In addition the tests can be speeded up considerably by + using the make option "-j<N>" + where <N> is the number of cores on your system. At + times though, using parallelism may result in strange + failures. +

+
+

+ To test the results anyway, issue: +

+
pushd gdb/testsuite &&
+make  site.exp      &&
+echo  "set gdb_test_timeout 30" >> site.exp &&
+make check 2>1 | tee gdb-check.log
+popd
+

+ See gdb/testsuite/README and TestingGDB. + There are many additional problems with the test suite: +

+
+
    +
  • +

    + Clean directories are needed if re-running the tests. + For that reason, make a copy of the compiled source + code directory before the tests in case you need to run + the tests again. +

    +
  • +
  • +

    + Results can also depend on installed compilers. +

    +
  • +
  • +

    + On some AMD-based systems, over 200 additional tests + may fail due to a difference in the threading + implementation on those CPUs. +

    +
  • +
  • +

    + For gdb-16.1, using an Intel Xeon E5-1650 v3, there + were 14 unexpected failures out of over 120,000 tests. +

    +
  • +
  • +

    + Four tests in the gdb.base/step-over-syscall.exp suite + are known to fail due to changes in Linux 6.13 and + glibc-2.41. +

    +
  • +
+
+

+ Now, as the root user: +

+
make -C gdb install &&
+make -C gdbserver install
+

+ If you have built the API documentation, it is now in + gdb/doc/doxy. You can install it (as the root user): +

+
install -d /usr/share/doc/gdb-16.3 &&
+rm -rf gdb/doc/doxy/xml &&
+cp -Rv gdb/doc/doxy /usr/share/doc/gdb-16.3
+
+
+

+ Command Explanations +

+

+ --with-system-readline: This + switch forces GDB to use the + copy of Readline installed + in LFS. +

+

+ --with-system-zlib: + This switch forces GDB to + use the copy of Zlib + installed in LFS. +

+

+ --with-python=/usr/bin/python3: + This switch forces GDB to + use Python 3. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gcore, gdb, gdbserver, + gdb-add-index, and gstack +
+
+ Installed Library: + libinproctrace.so +
+
+ Installed Directories: + /usr/{include,share}/gdb and + /usr/share/doc/gdb-16.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gcore +

+
+

+ generates a core dump of a running program +

+
+

+ gdb +

+
+

+ is the GNU Debugger +

+
+

+ gdbserver +

+
+

+ is a remote server for the GNU debugger (it allows + programs to be debugged from a different machine) +

+
+

+ gdb-add-index +

+
+

+ Allows adding index files to ELF binaries. This + speeds up gdb start on + large programs. +

+
+

+ gstack +

+
+

+ prints a stack trace from a program which is + currently running +

+
+

+ libinproctrace.so +

+
+

+ contains functions for the in-process tracing + agent. The agent allows for installing fast + tracepoints, listing static tracepoint markers, + probing static tracepoints markers, and starting + trace monitoring. +

+
+
+
+
+
+
+
+

+ Git-2.50.1 +

+
+
+
+
+
+

+ Introduction to Git +

+

+ Git is a free and open + source, distributed version control system designed to handle + everything from small to very large projects with speed and + efficiency. Every Git clone + is a full-fledged repository with complete history and full + revision tracking capabilities, not dependent on network + access or a central server. Branching and merging are fast + and easy to do. Git is used + for version control of files, much like tools such as + mercurial-7.1, Bazaar, Subversion-1.14.5, CVS, Perforce, and Team Foundation Server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.kernel.org/pub/software/scm/git/git-2.50.1.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 2cb96fae126d66f8ff23a68f8dd5d748 +

    +
  • +
  • +

    + Download size: 7.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 453MB (with downloaded + documentation; add 19 MB for building docs; add 21 MB + for tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (with parallelism=4; add + 1.0 SBU for building docs, and up to 7 SBU (disk speed + dependent) for tests) +

    +
  • +
+
+

+ Additional Downloads +

+
+ +
+

+ Git + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Apache-2.4.65 (for some tests), Fcron-3.4.0 + (runtime, for scheduling git + maintenance jobs), GnuPG-2.4.8 (runtime, may + be used to sign Git commits + or tags, or verify the signatures of them), OpenSSH-10.0p1 + (runtime, needed to use Git + over ssh), pcre2-10.45, Subversion-1.14.5 + with Perl bindings (runtime, for git svn), Tk-8.6.16 (gitk, a simple + Git repository viewer, uses + Tk at runtime), Valgrind-3.25.1, Authen::SASL + (runtime, for git + send-email), and + IO-Socket-SSL-2.095 (runtime, for + git send-email + to connect to a SMTP server with SSL encryption) +

+
+ Optional (to create the man pages, + html docs and other docs) +
+

+ xmlto-0.0.29 and asciidoc-10.2.1, and + also dblatex (for the PDF + version of the user manual), and docbook2x to create + info pages +

+
+
+

+ Installation of Git +

+

+ Install Git by running the + following commands: +

+
./configure --prefix=/usr \
+            --with-gitconfig=/etc/gitconfig \
+            --with-python=python3 &&
+make
+

+ You can build the man pages and/or html docs, or use + downloaded ones. If you choose to build them, use the next + two instructions. +

+

+ If you have installed asciidoc-10.2.1 you can create the html + version of the man pages and other docs: +

+
make html
+

+ If you have installed asciidoc-10.2.1 and xmlto-0.0.29 you can + create the man pages: +

+
make man
+

+ The test suite can be run in parallel mode. To run the test + suite, issue: GIT_UNZIP=nonexist make test -k |& tee + test.log. The GIT_UNZIP setting prevents the test suite from + using unzip, we + need it because in BLFS unzip is a symlink to + bsdunzip which + does not satisfy the assumption of some tests cases. If any + test case fails, the list of failed tests can be shown via + grep '^not ok' test.log | grep + -v TODO. +

+

+ Now, as the root user: +

+
make perllibdir=/usr/lib/perl5/5.42/site_perl install
+

+ If + you created the man pages and/or html docs +

+

+ Install the man pages as the root user: +

+
make install-man
+

+ Install the html docs as the root user: +

+
make htmldir=/usr/share/doc/git-2.50.1 install-html
+

+ If + you downloaded the man pages and/or html docs +

+

+ If you downloaded the man pages untar them as the + root user: +

+
tar -xf ../git-manpages-2.50.1.tar.xz \
+    -C /usr/share/man --no-same-owner --no-overwrite-dir
+

+ If you downloaded the html docs untar them as the + root user: +

+
mkdir -vp   /usr/share/doc/git-2.50.1 &&
+tar   -xf   ../git-htmldocs-2.50.1.tar.xz \
+      -C    /usr/share/doc/git-2.50.1 --no-same-owner --no-overwrite-dir &&
+
+find        /usr/share/doc/git-2.50.1 -type d -exec chmod 755 {} \; &&
+find        /usr/share/doc/git-2.50.1 -type f -exec chmod 644 {} \;
+

+ Reorganize text and html in the + html-docs (both methods) +

+

+ For both methods, the html-docs include a lot of plain text + files. Reorganize the files as the root user: +

+
mkdir -vp /usr/share/doc/git-2.50.1/man-pages/{html,text}         &&
+mv        /usr/share/doc/git-2.50.1/{git*.adoc,man-pages/text}     &&
+mv        /usr/share/doc/git-2.50.1/{git*.,index.,man-pages/}html &&
+
+mkdir -vp /usr/share/doc/git-2.50.1/technical/{html,text}         &&
+mv        /usr/share/doc/git-2.50.1/technical/{*.adoc,text}        &&
+mv        /usr/share/doc/git-2.50.1/technical/{*.,}html           &&
+
+mkdir -vp /usr/share/doc/git-2.50.1/howto/{html,text}             &&
+mv        /usr/share/doc/git-2.50.1/howto/{*.adoc,text}            &&
+mv        /usr/share/doc/git-2.50.1/howto/{*.,}html               &&
+
+sed -i '/^<a href=/s|howto/|&html/|' /usr/share/doc/git-2.50.1/howto-index.html &&
+sed -i '/^\* link:/s|howto/|&html/|' /usr/share/doc/git-2.50.1/howto-index.adoc
+
+
+

+ Command Explanations +

+

+ --with-gitconfig=/etc/gitconfig: + This sets /etc/gitconfig as the + file that stores the default, system wide, Git settings. +

+

+ --with-python=python3: Use this + switch to use Python 3, + instead of the EOL'ed Python + 2. Python is used for the git p4 interface to + Perforce repositories, and also used in some tests. +

+

+ --with-libpcre2: Use this switch + if PCRE2 is installed. +

+

+ tar -xf + ../git-manpages-2.50.1.tar.gz -C /usr/share/man + --no-same-owner: This untars git-manpages-2.50.1.tar.gz. The + -C option makes tar change + directory to /usr/share/man + before it starts to decompress the docs. The --no-same-owner option stops tar from + preserving the user and group details of the files. This is + useful as that user or group may not exist on your system; + this could (potentially) be a security risk. +

+

+ mv /usr/share/doc/git-2.50.1 + ...: These commands move some of the files + into subfolders to make it easier to sort through the docs + and find what you're looking for. +

+

+ find ... chmod + ...: These commands correct the permissions + in the shipped documentation tar file. +

+
+
+

+ Configuring Git +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.gitconfig and /etc/gitconfig +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + git, git-receive-pack, + git-upload-archive, and git-upload-pack (hardlinked to + each other), git-cvsserver, git-shell, gitk, and + scalar +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/libexec/git-core, + /usr/lib/perl5/5.42/site_perl/Git, and + /usr/share/{doc/git-2.50.1,git-core,git-gui,gitk,gitweb} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ git +

+
+

+ is the stupid content tracker +

+
+

+ git-cvsserver +

+
+

+ is a CVS server emulator for Git +

+
+

+ gitk +

+
+

+ is a graphical Git + repository browser (needs Tk-8.6.16) +

+
+

+ git-receive-pack +

+
+

+ is invoked by git + send-pack and updates the + repository with the information fed from the remote + end +

+
+

+ git-shell +

+
+

+ is a login shell for SSH accounts to provide + restricted Git access +

+
+

+ git-upload-archive +

+
+

+ is invoked by git + archive --remote and sends a + generated archive to the other end over the git + protocol +

+
+

+ git-upload-pack +

+
+

+ is invoked by git + fetch-pack, it discovers what + objects the other side is missing, and sends them + after packing +

+
+

+ scalar +

+
+

+ is a repository management tool that optimizes Git + for use in large repositories +

+
+
+
+
+
+
+
+

+ Running a Git Server +

+
+
+
+
+
+

+ Introduction +

+

+ This section will describe how to set up, administer and + secure a git server. + Git has many options + available. For more detailed documentation see https://git-scm.com/book/en/v2. +

+

+ Server Dependencies +

+
+ Required +
+

+ git-2.50.1 + and OpenSSH-10.0p1 +

+
+
+

+ Setting up a Git Server +

+

+ The following instructions will install a git server. It will be set up to use + OpenSSH as the secure remote + access method. +

+

+ Configuration of the server consists of the following steps: +

+
+
+
+
+

+ 1. Set Up Users, Groups, and + Permissions +

+
+
+
+

+ You will need to be user root for the initial portion of + configuration. Create the git user and group and set and unusable + password hash with the following commands: +

+
groupadd -g 58 git &&
+useradd -c "git Owner" -d /home/git -m -g git -s /usr/bin/git-shell -u 58 git &&
+sed -i '/^git:/s/^git:[^:]:/git:NP:/' /etc/shadow
+

+ Putting in an unusable password hash (replacing the + ! by NP) unlocks the account but it cannot be + used to login via password authentication. That is required + by sshd to work properly. + Next, create some files and directories in the home + directory of the git user allowing access to the git + repository using ssh keys. +

+
install -o git -g git -dm0700 /home/git/.ssh &&
+install -o git -g git -m0600 /dev/null /home/git/.ssh/authorized_keys
+

+ For any developer who should have access to the repository + add his/her public ssh key to /home/git/.ssh/authorized_keys. First, + prepend some options to prevent users from using the + connection to git for port forwarding to other machines the + git server might reach. +

+
echo -n "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " >> /home/git/.ssh/authorized_keys &&
+cat <user-ssh-key> >> /home/git/.ssh/authorized_keys
+

+ It is also useful to set the default name of the initial + branch of new repositories by modifying the git + configuration. As the root + user, run: +

+
git config --system init.defaultBranch trunk
+

+ Finally add the /usr/bin/git-shell entry to the + /etc/shells configuration + file. This shell has been set in the git user profile and is to make sure + that only git related actions can be executed: +

+
echo "/usr/bin/git-shell" >> /etc/shells
+
+
+
+
+
+

+ 2. Create a git repository +

+
+
+
+

+ The repository can be anywhere on the filesystem. It is + important that the git user has read/write access to that + location. We use /srv/git as + base directory. Create a new git repository with the following + commands (as the root + user): +

+
+

+ Note +

+

+ In all the instructions below, we use project1 as an example + repository name. You should name your repository as a + short descriptive name for your specific project. +

+
+
install -o git -g git -m755 -d /srv/git/project1.git &&
+cd /srv/git/project1.git                             &&
+git init --bare                                      &&
+chown -R git:git .
+
+
+
+
+
+

+ 3. Populate the repository + from a client system +

+
+
+
+
+

+ Note +

+

+ All the instructions in this section and the next should + be done on a user system, not the server system. +

+
+

+ Now that the repository is created, it can be used by the + developers to put some files into it. Once the ssh key of + the user is imported to git's authorized_keys file, the user can + interact with the repository. +

+

+ A minimal configuration should be available on the + developer's system specifying its user name and the email + address. Create this minimal config file on client side: +

+
cat > ~/.gitconfig <<EOF
+[user]
+        name = <users-name>
+        email = <users-email-address>
+EOF
+

+ On the developer's machine, set up some files to be pushed + to the repository as the initial content: +

+
+

+ Note +

+

+ The gitserver term + used below should be the host name (or ip address) of the + git server. +

+
+
mkdir myproject
+cd myproject
+git init --initial-branch=trunk
+git remote add origin git@gitserver:/srv/git/project1.git
+cat >README <<EOF
+This is the README file
+EOF
+git add README
+git commit -m 'Initial creation of README'
+git push --set-upstream origin trunk
+

+ The initial content is now pushed to the server and is + available for other users. On the current machine, the + argument --set-upstream origin + trunk is now no longer required as the local + repository is now connected to the remote repository. + Subsequent pushes can be performed as +

+
git push
+

+ Other developers can now clone the repository and do + modifications to the content (as long as their ssh keys has + been installed): +

+
git clone git@gitserver:/srv/git/project1.git
+cd project1
+vi README
+git commit -am 'Fix for README file'
+git push
+
+

+ Note +

+

+ This is a very basic server setup based on OpenSSH access. All developers are + using the git user to + perform actions on the repository and the changes users + are committing can be distinguished as the local user + name (see ~/.gitconfig) is + recorded in the changesets. +

+
+

+ Access is restricted by the public keys added to git's + authorized_keys file and + there is no option for the public to export/clone the + repository. To enable this, continue with step 4 to set up + the git server for public read-only access. +

+

+ In the URL used to clone the project, the absolute path + (here /srv/git/project1.git) + has to be specified as the repository is not in git's home + directory but in /srv/git. To + get rid of the need to expose the structure of the server + installation, a symlink can be added in git's home + directory for each project like this: +

+
ln -svf /srv/git/project1.git /home/git/
+

+ Now, the repository can be cloned using +

+
git clone git@gitserver:project1.git
+
+
+
+
+
+

+ 4. + Configure the Server +

+
+
+
+

+ The setup described above makes a repository available for + authenticated users (via providing the ssh public key + file). There is also a simple way to publish the repository + to unauthenticated users — of course without write access. +

+

+ The combination of access via ssh (for authenticated users) + and the export of repositories to unauthenticated users via + the daemon is in most cases enough for a development site. +

+
+

+ Note +

+

+ The daemon will be reachable at port 9418 by default. Make sure that your + firewall setup allows access to that port. +

+
+

+ To start the server at boot time, install the git-daemon + bootscript included in the blfs-bootscripts-20250225 package: +

+
make install-git-daemon
+

+ In order to allow git to + export a repository, a file named git-daemon-export-ok is required in each + repository directory on the server. The file needs no + content, just its existence enables, its absence disables + the export of that repository. +

+
touch /srv/git/project1.git/git-daemon-export-ok
+

+ The script to start the git daemon uses some default values + internally. Most important is the path to the repository + directory which is set to /srv/git. In case you have for whatever + reason created the repository in a different location, + you'll need to tell the boot script where the repository is + to be found. This can be achieved by creating a + configuration file named /etc/sysconfig/git-daemon. This + configuration file will be imported if it exists, meaning + it is optional. The file can look like: +

+
+# Begin /etc/sysconfig/git-daemon
+
+# Specify the location of the git repository
+GIT_BASE_DIR="/srv/git/"
+
+# Directories added to whitelist
+DFT_REPO_DIR="$GIT_BASE_DIR"
+
+# Add extra options which will appended to the 'git daemon'
+# command executed in the boot script
+GIT_DAEMON_OPTS=""
+
+# End /etc/sysconfig/git-daemon
+
+

+ There are only three options to set in the configuration + file: +

+
+
    +
  • +

    + GIT_BASE_DIR=<dirname> +

    +

    + Specify the location of the git repositories. + Relative paths used when accessing the daemon will + translated relative to this directory. +

    +
  • +
  • +

    + DFT_REPO_DIR=<dirname> +

    +

    + This directory is added to the white list of allowed + directories. This variable can hold multiple + directory names but is usually set equal to + GIT_BASE_DIR. +

    +
  • +
  • +

    + GIT_DAEMON_OPTS=<options> +

    +

    + In case special options to the git daemon command + are needed, they have to be specified in this + setting. One example might be to adjust the port + number where daemon is listening. In this case, add + --port=<port + number> to this variable. For more + information about which options can be set, take a + look at the output of git daemon --help. +

    +
  • +
+
+

+ After starting the daemon, unauthenticated users can clone + exported repositories by using +

+
git clone git://gitserver/project1.git
+

+ As the base directory is /srv/git by default (or set to a custom + value in the configuration), git interprets the incoming path + (/project1.git) relative to that base directory so that the + repository in /srv/git/project1.git is served. +

+
+
+
+
+
+
+

+ Guile-3.0.10 +

+
+
+
+
+
+

+ Introduction to Guile +

+

+ The Guile package contains + the GNU Project's extension language library. Guile also contains a stand alone + Scheme interpreter. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 375f8a423a23d229552512113aa4a954 +

    +
  • +
  • +

    + Download size: 5.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 184 MB (add 4 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 4.5 SBU (Using parallelism=4; add + 0.3 SBU for tests) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ Guile Dependencies +

+
+ Required +
+

+ GC-8.2.8 and + libunistring-1.3 +

+
+ Optional +
+

+ Emacs-30.2 and GDB-16.3 (run-time only dependencies). +

+
+
+

+ Installation of Guile +

+

+ First, if you are on a 32-bit system, fix a build failure: +

+
case $(uname -m) in
+    i?86) patch -Np1 -i ../guile-3.0.10-32bit_fixes-1.patch ;;
+esac
+

+ Install Guile by running the + following commands: +

+
CC="gcc -std=gnu17"          \
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/guile-3.0.10 &&
+make      &&
+make html &&
+
+makeinfo --plaintext -o doc/r5rs/r5rs.txt doc/r5rs/r5rs.texi &&
+makeinfo --plaintext -o doc/ref/guile.txt doc/ref/guile.texi
+

+ To test the results, issue: ./check-guile. On an i686 + system, as many as 10 tests will fail in the numbers.test test suite due to minor + floating-point rounding errors. +

+

+ Now, as the root user: +

+
make install      &&
+make install-html &&
+
+mkdir -p                       /usr/share/gdb/auto-load/usr/lib &&
+mv /usr/lib/libguile-*-gdb.scm /usr/share/gdb/auto-load/usr/lib &&
+mv /usr/share/doc/guile-3.0.10/{guile.html,ref} &&
+mv /usr/share/doc/guile-3.0.10/r5rs{.html,}     &&
+
+find examples -name "Makefile*" -delete         &&
+cp -vR examples   /usr/share/doc/guile-3.0.10   &&
+
+for DIRNAME in r5rs ref; do
+  install -v -m644  doc/${DIRNAME}/*.txt \
+                    /usr/share/doc/guile-3.0.10/${DIRNAME}
+done &&
+unset DIRNAME
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + guild, guile, guile-config, + guile-snarf and guile-tools +
+
+ Installed Libraries: + libguile-3.0.so and + guile-readline.so +
+
+ Installed Directories: + /usr/include/guile, /usr/lib/guile, + /usr/share/doc/guile-3.0.10 and /usr/share/guile +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ guile +

+
+

+ is a stand-alone Scheme interpreter for + Guile +

+
+

+ guile-config +

+
+

+ is a Guile script + which provides the information necessary to link + your programs against the Guile library, in much the + same way PkgConfig does +

+
+

+ guile-snarf +

+
+

+ is a script to parse declarations in your + C code for + Scheme visible + C functions +

+
+

+ guild +

+
+

+ is a wrapper program installed along with + guile, which + knows where a particular module is installed and + calls it, passing its arguments to the program +

+
+

+ guile-tools +

+
+

+ is a symlink to guild +

+
+
+
+
+
+
+
+

+ LLVM-20.1.8 +

+
+
+
+
+
+

+ Introduction to LLVM +

+

+ The LLVM package contains a + collection of modular and reusable compiler and toolchain + technologies. The Low Level Virtual Machine (LLVM) Core + libraries provide a modern source and target-independent + optimizer, along with code generation support for many + popular CPUs (as well as some less common ones!). These + libraries are built around a well specified code + representation known as the LLVM intermediate representation + ("LLVM IR"). +

+

+ Clang provides new C, C++, + Objective C and Objective C++ front-ends for LLVM and is required by some desktop + packages such as firefox and + for rust if that is built + using the system LLVM. +

+

+ The Compiler RT package + provides runtime sanitizer and profiling libraries for + developers who use Clang and + LLVM. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+

+ Cmake modules for + LLVM +

+
+ +
+

+ Third-party dependencies for + LLVM build system +

+
+ +
+

+ Recommended Download +

+

+ Clang +

+
+ +
+

+ Optional Download +

+

+ Compiler RT +

+
+ +
+

+ LLVM + Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ Doxygen-1.14.0, git-2.50.1, Graphviz-13.1.2, + libunwind-1.8.2, libxml2-2.14.5, + psutil-7.0.0 (for tests), Pygments-2.19.2, + PyYAML-6.0.2 (for tests), rsync-3.4.1 (for + tests), sphinx-8.2.3, texlive-20250308 (or install-tl-unx), Valgrind-3.25.1, + Zip-3.0, + myst-parser (for + building documentation), OCaml, and Z3 +

+
+
+

+ Installation of LLVM +

+

+ Two additional tarballs llvm-cmake-20.1.8.src.tar.xz and + llvm-third-party-20.1.8.src.tar.xz are + needed by LLVM building system. The upstream expects them + extracted at the same level as the llvm-20.1.8.src.tar.xz tarball, and the + extracted directories renamed to cmake and third-party. Extract them and modify the + build system to avoid creating ambiguously-named directories + outside the llvm-20.1.8.src + hierarchy: +

+
tar -xf ../llvm-cmake-20.1.8.src.tar.xz                              &&
+tar -xf ../llvm-third-party-20.1.8.src.tar.xz                        &&
+sed '/LLVM_COMMON_CMAKE_UTILS/s@../cmake@cmake-20.1.8.src@'          \
+    -i CMakeLists.txt                                                &&
+sed '/LLVM_THIRD_PARTY_DIR/s@../third-party@third-party-20.1.8.src@' \
+    -i cmake/modules/HandleLLVMOptions.cmake
+
+

+ Note +

+

+ These two tarballs extract into directories named + cmake-20.1.8.src and + third-party-20.1.8.src, i.e. + the directory names lack the llvm- prefix. +

+
+

+ Install clang into the + source tree by running the following commands: +

+
tar -xf ../clang-20.1.8.src.tar.xz -C tools &&
+mv tools/clang-20.1.8.src tools/clang
+

+ If you have downloaded compiler-rt, install it into the source + tree by running the following commands: +

+
tar -xf ../compiler-rt-20.1.8.src.tar.xz -C projects    &&
+mv projects/compiler-rt-20.1.8.src projects/compiler-rt
+

+ There are many Python scripts in this package which use + /usr/bin/env + python to access the system Python which on + LFS is Python-3.13.7. Use the following command + to fix these scripts: +

+
grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'
+

+ Ensure installing the FileCheck program which is + needed by the test suite of some packages (for example + rustc-1.89.0): +

+
sed 's/utility/tool/' -i utils/FileCheck/CMakeLists.txt
+

+ Install LLVM by running the + following commands: +

+
mkdir -v build &&
+cd       build &&
+
+CC=gcc CXX=g++                               \
+cmake -D CMAKE_INSTALL_PREFIX=/usr           \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON         \
+      -D LLVM_ENABLE_FFI=ON                  \
+      -D CMAKE_BUILD_TYPE=Release            \
+      -D LLVM_BUILD_LLVM_DYLIB=ON            \
+      -D LLVM_LINK_LLVM_DYLIB=ON             \
+      -D LLVM_ENABLE_RTTI=ON                 \
+      -D LLVM_TARGETS_TO_BUILD="host;AMDGPU" \
+      -D LLVM_BINUTILS_INCDIR=/usr/include   \
+      -D LLVM_INCLUDE_BENCHMARKS=OFF         \
+      -D CLANG_DEFAULT_PIE_ON_LINUX=ON       \
+      -D CLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang \
+      -W no-dev -G Ninja ..                  &&
+ninja
+

+ If you wish to run the test suite and you've downloaded + compiler-rt, work around an issue causing test failures when + building LLVM with GCC and -D + CLANG_CONFIG_FILE_SYSTEM_DIR and prevent some + test suite from using ld.gold that the LFS + Binutils package no longer provides: +

+
sed -e 's/config.has_no_default_config_flag/True/' \
+    -e 's/"-fuse-ld=gold"//'                       \
+    -i ../projects/compiler-rt/test/lit.common.cfg.py
+

+ LLVM test suite can produce many core dump files. They will + occupy a large amount of disk space, and the core dump + process can significantly slow down the testing. To test the + results with core dump disabled, issue: +

+
sh -c 'ulimit -c 0 && ninja check-all'
+

+ If -jN (N replaced with a number) + is passed to ninja, the tests will be + built with N logical cores, but run using all available + logical cores. Run the test command in a cgroup ( read + the + section called “Use Linux Control Group to Limit the Resource + Usage” for details) to limit the number of logical cores + for running the tests. 23 cfi tests are known to fail because + their assumption about the linker is not true with the BFD + linker and we've had to stop them from using the removed Gold + linker. One test named DataFlowSanitizer-x86_64 :: atomic.cpp is + known to fail with gcc-15.1 or newer. One test named + SanitizerCommon-asan-x86_64-Linux :: + onprint.cpp is known to fail because the unwinder in + the sanitizer depends on the frame pointer that the default + configuration of Glibc does not enable. One test named + Linux/clone_setns.cpp will fail + if CONFIG_USER_NS is not enabled + in kernel configuration. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + LLVM_ENABLE_FFI=ON: This switch allows + LLVM to use libffi. +

+

+ -D + LLVM_BUILD_LLVM_DYLIB=ON: This switch builds the + libraries as static and links all of them into an unique + shared one. This is the recommended way of building a shared + library. +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch enables + compiler optimizations in order to speed up the code and + reduce its size. It also disables some compile checks which + are not necessary on a production system. +

+

+ -D + LLVM_TARGETS_TO_BUILD="host;AMDGPU": This switch + enables building for the same target as the host, and also + for the r600 AMD GPU used by the Mesa r600 and radeonsi + drivers. The default is all of the targets. You can use a + semicolon separated list. Valid targets are: host, AArch64, + AMDGPU, ARM, AVR, BPF, Hexagon, Lanai, LoongArch, Mips, + MSP430, NVPTX, PowerPC, RISCV, Sparc, SystemZ, VE, + WebAssembly, X86, XCore, or all. +

+

+ -D + LLVM_LINK_LLVM_DYLIB=ON: Used in conjunction with + -D + LLVM_BUILD_LLVM_DYLIB=ON, this switch enables + linking the tools against the shared library instead of the + static ones. It slightly reduces their size and also ensures + that llvm-config will correctly use libLLVM-20.so. +

+

+ -D + LLVM_ENABLE_RTTI=ON: This switch is used to build + LLVM with run-time type information. This is required for + building Mesa-25.1.8. +

+

+ -D + LLVM_BINUTILS_INCDIR=/usr/include: This switch is + used to tell the build system the location of binutils + headers, which were installed in LFS. This allows the + building of LLVMgold.so, which + is needed for building programs with clang and Link Time + Optimization (LTO). +

+

+ -D + LLVM_INCLUDE_BENCHMARKS=OFF: is used to disable + generation build targets for the LLVM benchmarks. This option + requires additional code that is not currently available. +

+

+ -D + CLANG_DEFAULT_PIE_ON_LINUX=ON: makes -fpie option the default when compiling + programs. Together with the ASLR + feature enabled in the kernel, this defeats some kind of + attacks based on known memory layouts. +

+

+ -D + CLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang: makes + clang and + clang++ search + /etc/clang for configuration + files. +

+

+ -D BUILD_SHARED_LIBS=ON: if used + instead of -D + LLVM_BUILD_LLVM_DYLIB=ON and -D LLVM_LINK_LLVM_DYLIB=ON, + builds all the LLVM + libraries (about 60) as shared libraries instead of static. +

+

+ -D LLVM_ENABLE_DOXYGEN=ON -D + LLVM_ENABLE_DOCS=ON: Enables the generation of + browsable HTML documentation if you have installed Doxygen-1.14.0. The documentation will + be built at the end of the build process. +

+
+
+

+ Configuring LLVM +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If you've built Clang, as the root user create two configuration + files to make SSP enabled by + default for clang and clang++, so the default + configuration of their SSP feature will be consistent with + GCC-15.2.0: +

+
mkdir -pv /etc/clang &&
+for i in clang clang++; do
+  echo -fstack-protector-strong > /etc/clang/$i.cfg
+done
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + amdgpu-arch, analyze-build, + bugpoint, c-index-test, clang, clang++ (symlinks to + clang-20), clang-20, clang-check, clang-cl, clang-cpp + (last two symlinks to clang), clang-extdef-mapping, + clang-format, clang-installapi, clang-linker-wrapper, + clang-nvlink-wrapper, clang-offload-bundler, + clang-offload-packager, clang-refactor, clang-repl, + clang-scan-deps, clang-sycl-linker, clang-tblgen, + diagtool, dsymutil, FileCheck, git-clang-format, + hmaptool, intercept-build, llc, lli, llvm-addr2line + (symlink to llvm-symbolizer), llvm-ar, llvm-as, + llvm-bcanalyzer, llvm-bitcode-strip (symlink to + llvm-objcopy), llvm-cat, llvm-cfi-verify, llvm-cgdata, + llvm-config, llvm-cov, llvm-c-test, llvm-ctxprog-util, + llvm-cvtres, llvm-cxxdump, llvm-cxxfilt, llvm-cxxmap, + llvm-debuginfo-analyzer, llvm-debuginfod, + llvm-debuginfod-find, llvm-diff, llvm-dis, llvm-dlltool + (symlink to llvm-ar), llvm-dwarfdump, llvm-dwarfutil, + llvm-dwp, llvm-exegesis, llvm-extract, llvm-gsymutil, + llvm-ifs, llvm-install-name-tool (symlink to + llvm-objcopy), llvm-jitlink, llvm-lib (symlink to + llvm-ar), llvm-libtool-darwin, llvm-link, llvm-lipo, + llvm-lto, llvm-lto2, llvm-mc, llvm-mca, llvm-ml, + llvm-modextract, llvm-mt, llvm-nm, llvm-objcopy, + llvm-objdump, llvm-opt-report, llvm-otool (symlink to + llv-objdump), llvm-pdbutil, llvm-profdata, llvm-profgen, + llvm-ranlib (symlink to llvm-ar), llvm-rc, llvm-readelf + (symlink to llvm-readobj), llvm-readobj, llvm-readtapi, + llvm-reduce, llvm-remarkutil, llvm-rtdyld, llvm-sim, + llvm-size, llvm-split, llvm-stress, llvm-strings, + llvm-strip (symlink to llvm-objcopy), llvm-symbolizer, + llvm-tblgen, llvm-tli-checker, llvm-undname, llvm-windres + (symlink to llvm-rc), llvm-xray, nvptx-arch, opt, sancov, + sanstats, scan-build, scan-build-py, scan-view, and + verify-uselistorder +
+
+ Installed Libraries: + libLLVM.so, libLLVM*.a (107 + libraries), libLTO.so, libRemarks.so, libclang.so, + libclang-cpp.so, libclang*.a (43 libraries), and + LLVMgold.so +
+
+ Installed Directories: + /usr/include/{clang,clang-c,llvm,llvm-c}, + /usr/lib/{clang,cmake/{clang,llvm},libear,libscanbuild}, + /usr/share/{clang,opt-viewer,scan-build,scan-view}, and + /etc/clang +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ amdgpu-arch +

+
+

+ lists AMD GPUs installed; at runtime it needs + libhsa-runtime64.so + which is not a part of BLFS +

+
+

+ analyze-build +

+
+

+ is a static analysis tool +

+
+

+ bugpoint +

+
+

+ is the automatic test case reduction tool +

+
+

+ c-index-test +

+
+

+ is used to test the libclang API and demonstrate + its usage +

+
+

+ clang +

+
+

+ is the Clang C, + C++, and Objective-C compiler +

+
+

+ clang-check +

+
+

+ is a tool to perform static code analysis and + display Abstract Syntax Trees (AST) +

+
+

+ clang-extdef-mapping +

+
+

+ is a tool to collect the USR name and location of + external definitions in a source file +

+
+

+ clang-format +

+
+

+ is a tool to format + C/C++/Java/JavaScript/Objective-C/Protobuf code +

+
+

+ clang-linker-wrapper +

+
+

+ is a wrapper utility over the host linker +

+
+

+ clang-offload-bundler +

+
+

+ is a tool to bundle/unbundle OpenMP offloaded files + associated with a common source file +

+
+

+ clang-offload-packager +

+
+

+ is a tool to bundle several object files into a + single binary, which can then be used to create a + fatbinary containing offloading code +

+
+

+ clang-refactor +

+
+

+ is a Clang-based refactoring tool for C, C++ and + Objective-C +

+
+

+ clang-scan-deps +

+
+

+ is a tool to scan for dependencies in a source file +

+
+

+ clang-tblgen +

+
+

+ is a program that translates compiler-related + target description (.td) files into C++ code and + other output formats +

+
+

+ diagtool +

+
+

+ is a combination of tools for dealing with + diagnostics in clang +

+
+

+ FileCheck +

+
+

+ is a tool that reads two files (one from standard + input, and one specified on the command line) and + uses one to verify the other. +

+
+

+ dsymutil +

+
+

+ is a tool used to manipulate archived DWARF debug + symbol files, compatible with the Darwin command + dsymutil +

+
+

+ git-clang-format +

+
+

+ runs clang-format on git generated patches + (requires git-2.50.1) +

+
+

+ hmaptool +

+
+

+ is a Python tool to dump and construct header maps +

+
+

+ intercept-build +

+
+

+ generates a database of build commands for a + project +

+
+

+ llc +

+
+

+ is the LLVM static + compiler +

+
+

+ lli +

+
+

+ is used to directly execute programs from + LLVM bitcode +

+
+

+ llvm-addr2line +

+
+

+ is a tool used to convert addresses into file names + and line numbers +

+
+

+ llvm-ar +

+
+

+ is the LLVM + archiver +

+
+

+ llvm-as +

+
+

+ is the LLVM + assembler +

+
+

+ llvm-bcanalyzer +

+
+

+ is the LLVM + bitcode analyzer +

+
+

+ llvm-bitcode-strip +

+
+

+ strips LLVM bitcode from an object +

+
+

+ llvm-cat +

+
+

+ is a tool to concatenate llvm modules +

+
+

+ llvm-cfi-verify +

+
+

+ identifies whether Control Flow Integrity protects + all indirect control flow instructions in the + provided object file, DSO, or binary +

+
+

+ llvm-config +

+
+

+ Prints LLVM + compilation options +

+
+

+ llvm-cov +

+
+

+ is used to emit coverage information +

+
+

+ llvm-c-test +

+
+

+ is a bytecode disassembler +

+
+

+ llvm-cvtres +

+
+

+ is a tool to convert Microsoft resource files to + COFF +

+
+

+ llvm-cxxdump +

+
+

+ is used as a C++ ABI Data Dumper +

+
+

+ llvm-cxxfilt +

+
+

+ is used to demangle C++ symbols in llvm code +

+
+

+ llvm-cxxmap +

+
+

+ is used to remap C++ mangled symbols +

+
+

+ llvm-debuginfo-analyzer +

+
+

+ prints a logical representation of low-level debug + information +

+
+

+ llvm-debuginfod +

+
+

+ is a service providing debug information over an + HTTP API for analyzing stripped binaries +

+
+

+ llvm-debuginfod-find +

+
+

+ is an interface to the llvm-debuginfod + daemon for finding debuginfod artifacts +

+
+

+ llvm-diff +

+
+

+ is the LLVM + structural 'diff' +

+
+

+ llvm-dis +

+
+

+ is the LLVM + disassembler +

+
+

+ llvm-dwarfdump +

+
+

+ prints the content of DWARF sections in object + files +

+
+

+ llvm-dwarfutil +

+
+

+ is a tool to copy and manipulate debug info +

+
+

+ llvm-dwp +

+
+

+ merges split DWARF files +

+
+

+ llvm-elfabi +

+
+

+ is used to read information about an ELF binary's + ABI +

+
+

+ llvm-exegesis +

+
+

+ is a benchmarking tool that uses information + available in LLVM to measure host machine + instruction characteristics like latency or port + decomposition +

+
+

+ llvm-extract +

+
+

+ is used to extract a function from an LLVM module +

+
+

+ llvm-gsymutil +

+
+

+ is used to process GSYM Symbolication Format files + which convert memory addresses to function name and + source file line. These files are smaller than + DWARF or Breakpad files +

+
+

+ llvm-ifs +

+
+

+ is used to merge interface stubs with object files +

+
+

+ llvm-install-name-tool +

+
+

+ is used to rewrite load commands into MachO binary + format +

+
+

+ llvm-jitlink +

+
+

+ is used to parse relocatable object files to make + their contents executable in a target process +

+
+

+ llvm-libtool-darwin +

+
+

+ provides basic libtool functionality on + Darwin-based systems. This is mostly useful if you + are generating binaries for macOS systems +

+
+

+ llvm-link +

+
+

+ is the LLVM linker +

+
+

+ llvm-lipo +

+
+

+ is used to create universal binaries from MachO + files +

+
+

+ llvm-lto +

+
+

+ is the LLVM LTO + (link time optimization) linker +

+
+

+ llvm-lto2 +

+
+

+ is a test harness for the resolution based LTO + interface +

+
+

+ llvm-mc +

+
+

+ is a standalone machine code assembler/disassembler +

+
+

+ llvm-mca +

+
+

+ is a performance analysis tool to statically + measure the performance of machine code +

+
+

+ llvm-ml +

+
+

+ is a playground for machine code provided by LLVM +

+
+

+ llvm-modextract +

+
+

+ is a tool to extract one module from multimodule + bitcode files +

+
+

+ llvm-mt +

+
+

+ is a tool to generate signed files and catalogs + from a side-by-side assembly manifest (used for + Microsoft SDK) +

+
+

+ llvm-nm +

+
+

+ is used to list LLVM bitcode and object file's + symbol table +

+
+

+ llvm-objcopy +

+
+

+ is LLVM's version of an objcopy tool +

+
+

+ llvm-objdump +

+
+

+ is an LLVM object + file dumper +

+
+

+ llvm-opt-report +

+
+

+ is a tool to generate an optimization report from + YAML optimization record files +

+
+

+ llvm-pdbutil +

+
+

+ is a PDB (Program Database) dumper. PDB is a + Microsoft format +

+
+

+ llvm-profdata +

+
+

+ is a small tool to manipulate and print profile + data files +

+
+

+ llvm-profgen +

+
+

+ generates LLVM SPGO profiling information +

+
+

+ llvm-ranlib +

+
+

+ is used to generate an index for a LLVM archive +

+
+

+ llvm-rc +

+
+

+ is a platform-independent tool to compile resource + scripts into binary resource files +

+
+

+ llvm-readobj +

+
+

+ displays low-level format-specific information + about object files +

+
+

+ llvm-readtapi +

+
+

+ is the LLVM TAPI file reader and transformer +

+
+

+ llvm-reduce +

+
+

+ is used to automatically reduce testcases when + running a test suite +

+
+

+ llvm-remarkutil +

+
+

+ converts remark files between bitstream and YAML; + or prints function instruction count information in + remark files +

+
+

+ llvm-rtdyld +

+
+

+ is the LLVM MC-JIT + tool +

+
+

+ llvm-size +

+
+

+ is the LLVM object + size dumper +

+
+

+ llvm-split +

+
+

+ is the LLVM module + splitter +

+
+

+ llvm-stress +

+
+

+ is used to generate random .ll files +

+
+

+ llvm-strings +

+
+

+ print strings found in a binary (object file, + executable, or archive library) +

+
+

+ llvm-symbolizer +

+
+

+ converts addresses into source code locations +

+
+

+ llvm-tblgen +

+
+

+ is the LLVM Target + Description To C++ Code Generator +

+
+

+ llvm-tli-checker +

+
+

+ is the LLVM + TargetLibraryInfo versus SDK checker +

+
+

+ llvm-undname +

+
+

+ is a tool to demangle names +

+
+

+ llvm-xray +

+
+

+ is an implementation of Google's XRay function call + tracing system +

+
+

+ nvptx-arch +

+
+

+ lists NVIDIA GPUs installed; at runtime it needs + libcuda.so which is + not a part of BLFS +

+
+

+ opt +

+
+

+ is the LLVM + optimizer +

+
+

+ sancov +

+
+

+ is the sanitizer coverage processing tool +

+
+

+ sanstats +

+
+

+ is the sanitizer statistics processing tool +

+
+

+ scan-build +

+
+

+ is a Perl script + that invokes the Clang static analyzer +

+
+

+ scan-build-py +

+
+

+ is a Python script + that invokes the Clang static analyzer +

+
+

+ scan-view +

+
+

+ is a viewer for Clang static analyzer results +

+
+

+ verify-uselistorder +

+
+

+ is the LLVM tool + to verify use-list order +

+
+
+
+
+
+
+
+

+ Lua-5.4.8 +

+
+
+
+
+
+

+ Introduction to Lua +

+

+ Lua is a powerful + light-weight programming language designed for extending + applications. It is also frequently used as a + general-purpose, stand-alone language. Lua is implemented as a small library of + C functions, written in ANSI C, and compiles unmodified in + all known platforms. The implementation goals are simplicity, + efficiency, portability, and low embedding cost. The result + is a fast language engine with small footprint, making it + ideal in embedded systems too. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.lua.org/ftp/lua-5.4.8.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 81cf5265b8634967d8a7480d238168ce +

    +
  • +
  • +

    + Download size: 368 KB +

    +
  • +
  • +

    + Estimated disk space required: 3.7 MB (with Basic + tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with Basic + tests) +

    +
  • +
+
+

+ Additional Downloads +

+
+ +
+
+
+

+ Installation of Lua +

+

+ Some packages check for the pkg-config file for Lua, which is created with: +

+
cat > lua.pc << "EOF"
+V=5.4
+R=5.4.8
+
+prefix=/usr
+INSTALL_BIN=${prefix}/bin
+INSTALL_INC=${prefix}/include
+INSTALL_LIB=${prefix}/lib
+INSTALL_MAN=${prefix}/share/man/man1
+INSTALL_LMOD=${prefix}/share/lua/${V}
+INSTALL_CMOD=${prefix}/lib/lua/${V}
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${R}
+Requires:
+Libs: -L${libdir} -llua -lm -ldl
+Cflags: -I${includedir}
+EOF
+

+ Install Lua by running the + following commands: +

+
patch -Np1 -i ../lua-5.4.8-shared_library-1.patch &&
+make linux
+

+ To test the results, issue: make test. “This will run the interpreter + and print its version.” More comprehensive + tests can be performed if you downloaded the "Test suite" + tarball. Those tests need to be executed after the package is + installed, thus we defer to the description below. +

+

+ Now, as the root user: +

+
make INSTALL_TOP=/usr                \
+     INSTALL_DATA="cp -d"            \
+     INSTALL_MAN=/usr/share/man/man1 \
+     TO_LIB="liblua.so liblua.so.5.4 liblua.so.5.4.8" \
+     install &&
+
+mkdir -pv                      /usr/share/doc/lua-5.4.8 &&
+cp -v doc/*.{html,css,gif,png} /usr/share/doc/lua-5.4.8 &&
+
+install -v -m644 -D lua.pc /usr/lib/pkgconfig/lua.pc
+

+ Here we describe only the "Basic tests". Untar the tarball + and change to the lua-5.4.8-tests directory, then issue + lua -e "_U=true" + all.lua. If the tests finish without error, + you will see a message containing the string "final OK". +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lua and luac +
+
+ Installed Library: + liblua.so +
+
+ Installed Directories: + /usr/{lib,share}/lua and + /usr/share/doc/lua-5.4.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ lua +

+
+

+ is the standalone Lua interpreter +

+
+

+ luac +

+
+

+ is the Lua compiler +

+
+

+ liblua.so +

+
+

+ contains the Lua + API functions +

+
+
+
+
+
+
+
+

+ luajit-20250816 +

+
+
+
+
+
+

+ Introduction to luajit +

+

+ The luajit package contains + a Just-In-Time compiler for Lua. It is often used as + scripting middleware, and it is high performance while also + having a low memory footprint. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of luajit +

+

+ Install luajit by running + the following commands: +

+
make PREFIX=/usr amalg
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr install &&
+rm -v /usr/lib/libluajit-5.1.a
+
+
+

+ Command Explanations +

+

+ amalg: This ensures + an amalgamated build, i.e. the LuaJIT core is compiled as one + huge C file, allowing GCC to generate faster and shorter + code. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + luajit (symlink to + luajit-2.1.ROLLING) and luajit-2.1.ROLLING +
+
+ Installed Libraries: + libluajit-5.1.so +
+
+ Installed Directories: + /usr/include/luajit-2.1 and + /usr/share/luajit-2.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ luajit +

+
+

+ provides a Just-In-Time compiler for Lua +

+
+

+ libluajit-5.1.so +

+
+

+ contains an API for the Just-In-Time compiler for + Lua +

+
+
+
+
+
+
+
+

+ Mercurial-7.1 +

+
+
+
+
+
+

+ Introduction to Mercurial +

+

+ Mercurial is a distributed + source control management tool similar to Git and Bazaar. Mercurial is written in Python and is used by projects such as + Mozilla for Firefox and Thunderbird. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.mercurial-scm.org/release/mercurial-7.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 885a2a5ff89e78f066ec80b1ede5b314 +

    +
  • +
  • +

    + Download size: 8.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 125 MB (with docs, add + 32 MB for tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (with docs; add 23 SBU + for tests; both using parallelism=4) +

    +
  • +
+
+

+ Mercurial Dependencies +

+
+ Optional +
+

+ build-1.3.0, docutils-0.21.2 + (required to build the documentation), git-2.50.1, OpenSSH-10.0p1 + (runtime, to access ssh://... repositories), Pygments-2.19.2, + rustc-1.89.0 (see rust/README.rst and rust/rhg/README.md), Subversion-1.14.5 + (with Python bindings), CVS, pyflakes, and + re2 +

+
+
+

+ Installation of Mercurial +

+

+ Mercurial is built and + installed in a single command as the root user: +

+
make PREFIX=/usr install
+

+ The documentation is built by the above command (in man and + html formats), but only the manual pages are installed. If + you wish to install the html documentation, issue as the + root user: +

+
mkdir /usr/share/doc/mercurial-7.1 &&
+cp -R doc/html /usr/share/doc/mercurial-7.1
+

+ If you wish to run the tests, the rust tests must be removed + as they are currently broken due to syntax errors. To do + this, issue: +

+
sed -i '151,154d' Makefile
+

+ To run the test suite, issue: +

+
TESTFLAGS="-j<N> --with-hg /usr/bin/hg" make check
+

+ where <N> is + an integer between one and the number of ( processor X + threads ), inclusive (default is the total number of + processors as returned by nproc). Tests may fail + because some error messages have changed in Python or some + deprecation warnings are printed that were not present when + the test was designed. +

+

+ In order to investigate any apparently failing tests, you may + use the run-tests.py script in the + tests directory. To see the + almost forty switches, some of them very useful, issue + tests/run-tests.py + --help. Running the following commands, you + will execute only the tests that failed before: +

+
pushd tests  &&
+  rm -rf tmp &&
+  ./run-tests.py --with-hg /usr/bin/hg test-import.t
+popd
+

+ An interesting switch is --time, + which will generate a table of all the executed tests and + their respective start, end, user, system and real times once + the tests are complete. Note that these switches may be used + with make check + by including them in the TESTFLAGS + environment variable. +

+

+ After installation, two very quick and simple tests should + run correctly. The first one needs some configuration: +

+
cat >> ~/.hgrc << "EOF"
+[ui]
+username = <user_name> <user@mail>
+EOF
+

+ where you must replace <user_name> and + <your@mail> (mail is optional and can be omitted). With + the user identity defined, run hg debuginstall and several + lines will be displayed, the last one reading "no problems + detected". Another quick and simple test is just hg, which should output + basic commands that can be used with hg. +

+
+
+

+ Configuring Mercurial +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/mercurial/hgrc and + ~/.hgrc +

+

+ The great majority of extensions are disabled by default. + Run hg help + extensions if you need to enable any, e.g. + when investigating test failures. This will output a list + of enabled and disabled extensions, as well as more + information such as how to enable or disable extensions + using configuration files. +

+

+ If you have installed make-ca-1.16.1 and want + Mercurial to use the + certificates, as the root + user, issue: +

+
install -v -d -m755 /etc/mercurial &&
+cat > /etc/mercurial/hgrc << "EOF"
+[web]
+cacerts = /etc/pki/tls/certs/ca-bundle.crt
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + hg +
+
+ Installed Libraries: + several internal modules under + /usr/lib/python3.13/site-packages/mercurial +
+
+ Installed Directories: + /etc/mercurial, + /usr/lib/python3.13/site-packages/hgdemandimport, + /usr/lib/python3.13/site-packages/hgext, + /usr/lib/python3.13/site-packages/hgext3rd, + /usr/lib/python3.13/site-packages/mercurial, + /usr/lib/python3.13/site-packages/mercurial-7.1.dist-info, + and /usr/share/doc/mercurial-7.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ hg +

+
+

+ is the mercurial version control system +

+
+
+
+
+
+
+
+

+ NASM-2.16.03 +

+
+
+
+
+
+

+ Introduction to NASM +

+

+ NASM (Netwide Assembler) is + an 80x86 assembler designed for portability and modularity. + It includes a disassembler as well. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ NASM + Dependencies +

+
+ Optional (for generating + documentation): +
+

+ asciidoc-10.2.1 and xmlto-0.0.29 +

+
+
+

+ Installation of NASM +

+

+ If you downloaded the optional documentation, put it into the + source tree: +

+
tar -xf ../nasm-2.16.03-xdoc.tar.xz --strip-components=1
+

+ Install NASM by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you downloaded the optional documentation, install it with + the following instructions as the root user: +

+
install -m755 -d         /usr/share/doc/nasm-2.16.03/html  &&
+cp -v doc/html/*.html    /usr/share/doc/nasm-2.16.03/html  &&
+cp -v doc/*.{txt,ps,pdf} /usr/share/doc/nasm-2.16.03
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + nasm and ndisasm +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/doc/nasm-2.16.03 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ nasm +

+
+

+ is a portable 80x86 assembler +

+
+

+ ndisasm +

+
+

+ is an 80x86 binary file disassembler +

+
+
+
+
+
+
+
+

+ Patchelf-0.18.0 +

+
+
+
+
+
+

+ Introduction to Patchelf +

+

+ The patchelf package + contains a small utility to modify the dynamic linker and + RPATH of ELF executables. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Patchelf +

+

+ Install patchelf by running + the following commands: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/patchelf-0.18.0 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + patchelf +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ patchelf +

+
+

+ is a simple utility for modifying existing ELF + executables and libraries; it can change the + dynamic loader ("ELF interpreter") of executables + and change the RPATH of executables and libraries. +

+
+
+
+
+
+
+
+

+ Perl Modules +

+
+
+
+
+
+

+ Introduction to Perl Modules +

+

+ The Perl module packages + (also referred to as Distributions, because each can contain + multiple modules) add useful objects to the Perl language. The packages listed on + this page are required or recommended for other packages in + the book. If they have dependent modules, those are either on + this page or else on the next page (Perl Module + Dependencies). +

+

+ In many cases, only the required or recommended dependencies + are listed - there might be other modules which allow more + tests to be run, but omitting them will still allow the tests + to PASS. +

+

+ For a few modules, the BLFS editors have determined that + other modules still listed as prerequisites are not required, + and omitted them. +

+

+ Where an alphabetically-earlier dependency of the same module + pulls in a dependency, it is not mentioned for the later + dependencies of the same module. You should build the listed + dependencies in order. +

+

+ It is generally worth running the tests for perl modules, + they often can show problems such as missing dependencies + which are required to use the module. Here, the editors have + attempted to separate those dependencies which are only + required for running test suites, but they will not be + mentioned for a module where one of its dependencies uses + that module for its own test suite. That is to say, if you + intend to run the test suites, please run them for each + dependency of the module. +

+

+ It is possible to automatically install the current versions + of a module and all + missing or too-old dependencies recommended by upstream using + CPAN. See CPAN automated + install of perl modules at the end of this page. +

+

+ Most of these modules only install files below /usr/lib/perl5/site_perl/5.xx.y and those + will not be documented. One or two install programs (mostly, + perl scripts), or a library, into /usr/bin/ or /usr/lib/ and these are documented. +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/perl-modules +

+ +
+
+

+ Archive::Zip-1.68 +

+
+
+
+
+

+ Introduction to Archive::Zip +

+
+
+
+

+ The Archive::Zip module allows a Perl program to create, + manipulate, read, and write Zip archive files. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Archive::Zip Dependencies +
+
+ Recommended (for the test suite) +
+

+ libarchive-3.8.1 +

+
+
+
+
+
+

+ Installation of Archive::Zip +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + crc32 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ crc32 +

+
+

+ computes and prints to stdout the CRC-32 values + of the given files +

+
+
+
+
+
+

+ autovivification-0.18 +

+
+
+
+
+

+ Introduction to the + autovivification module +

+
+
+
+

+ This module allows you disable autovivification (the + automatic creation and population of new arrays and hashes + whenever undefined variables are dereferenced), and + optionally throw a warning or an error when it would have + occurred. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + autovivification +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Business::ISBN-3.012 +

+
+
+
+
+

+ Introduction to + Business::ISBN +

+
+
+
+

+ The Business::ISBN module provides functions for working + with International Standard Book Numbers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Business::ISBN Dependencies +
+
+ Required +
+

+ Business-ISBN-Data-20250815.001 +

+
+
+
+
+
+

+ Installation of + Business::ISBN +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Business::ISMN-1.205 +

+
+
+
+
+

+ Introduction to + Business::ISMN +

+
+
+
+

+ The Business::ISMN module provides functions for working + with International Standard Music Numbers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Business::ISMN Dependencies +
+
+ Required +
+

+ Tie-Cycle-1.231 +

+
+
+
+
+
+

+ Installation of + Business::ISMN +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Business::ISSN-1.008 +

+
+
+
+
+

+ Introduction to + Business::ISSN +

+
+
+
+

+ The Business::ISSN module provides functions for working + with International Standard Serial Numbers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Business::ISSN +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Class::Accessor-0.51 +

+
+
+
+
+

+ Introduction to + Class::Accessor +

+
+
+
+

+ Class::Accessor generates accessors/mutators for your + class. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Class::Accessor +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Data::Compare-1.29 +

+
+
+
+
+

+ Introduction to + Data::Compare +

+
+
+
+

+ The Data::Compare module compares two perl data structures. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Data::Compare Dependencies +
+
+ Required +
+

+ Clone-0.47 and File-Find-Rule-0.35 +

+
+
+
+
+
+

+ Installation of + Data::Compare +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Data::Dump-1.25 +

+
+
+
+
+

+ Introduction to Data::Dump +

+
+
+
+

+ Data::Dump provides pretty printing of data structures. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Data::Dump +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Data::Uniqid-0.12 +

+
+
+
+
+

+ Introduction to Data::Uniqid +

+
+
+
+

+ Data::Uniqid provides three simple routines for generating + unique IDs. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Data::Uniqid +

+
+
+
+

+ Although the final test fails and reports an Error, the + test suite returns a status of 0. The error can safely be + ignored. +

+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ DateTime::Calendar::Julian-0.107 +

+
+
+
+
+

+ Introduction to + DateTime::Calendar::Julian +

+
+
+
+

+ DateTime::Calendar::Julian implements the Julian Calendar. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ DateTime::Calendar::Julian + Dependencies +
+
+ Required +
+

+ DateTime-1.66 +

+
+
+
+
+
+

+ Installation of + DateTime::Calendar::Julian +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ DateTime::Format::Builder-0.83 +

+
+
+
+
+

+ Introduction to + DateTime::Format::Builder +

+
+
+
+

+ DateTime::Format::Builder creates DateTime parser classes + and objects. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ DateTime::Format::Builder + Dependencies +
+
+ Required +
+

+ DateTime-Format-Strptime-1.79 + and Params-Validate-1.31 +

+
+
+
+
+
+

+ Installation of + DateTime::Format::Builder +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Encode::EUCJPASCII-0.03 +

+
+
+
+
+

+ Introduction to + Encode::EUCJPASCII +

+
+
+
+

+ Encode::EUCJPASCII provides an eucJP-open (Extended Unix + Code, Japanese) mapping. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Encode::EUCJPASCII +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Encode::HanExtra-0.23 +

+
+
+
+
+

+ Introduction to + Encode::HanExtra +

+
+
+
+

+ The Encode::HanExtra module provides extra sets of Chinese + Encodings which are not included in the core Encode module + because of size issues. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Encode::HanExtra +

+
+
+
+

+ This module uses the 'unsafe' build and installation + instructions (In perl-5.26.0 the use of the current + directory in @INC was removed + for security reasons and this module has not been updated) + : +

+
PERL_USE_UNSAFE_INC=1 perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Encode::JIS2K-0.05 +

+
+
+
+
+

+ Introduction to + Encode::JIS2K +

+
+
+
+

+ The Encode::JIS2K module provides JIS X 0212 (aka JIS 2000) + Encodings. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Encode::JIS2K +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::FcntlLock-0.22 +

+
+
+
+
+

+ Introduction to + File::FcntlLock +

+
+
+
+

+ File::FcntlLock is a module to do file locking in an object + oriented fashion using the fcntl(2) system + call. This allows locks on parts of a file as well as on + the whole file and overcomes some known problems with + flock(2), on + which which Perl's flock() + function is based per default. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + File::FcntlLock +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::Slurper-0.014 +

+
+
+
+
+

+ Introduction to + File::Slurper +

+
+
+
+

+ File::Slurper is a simple, sane and efficient module to + slurp a file. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ File::Slurper Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + File::Slurper +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::Which-1.27 +

+
+
+
+
+

+ Introduction to File::Which +

+
+
+
+

+ File::Which provides a portable implementation of the + 'which' utility. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of File::Which +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTML::Parser-3.83 +

+
+
+
+
+

+ Introduction to HTML::Parser +

+
+
+
+

+ The HTML::Parser distribution is a collection of modules + that parse and extract information from HTML documents. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTML::Parser Dependencies +
+
+ Required +
+

+ HTML-Tagset-3.24 and HTTP-Message-7.00 (strictly + speaking, not required for building, but its module + HTTP::Headers is required for tests and a run-time + requirement for HTML::HeadParser from this distribution). +

+
+
+
+
+
+

+ Installation of HTML::Parser +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTTP::Daemon-6.16 +

+
+
+
+
+

+ Introduction to HTTP::Daemon +

+
+
+
+

+ Instances of the HTTP::Daemon class are HTTP/1.1 servers + that listen on a socket for incoming requests. The + HTTP::Daemon is a subclass of IO::Socket::INET, so you can + perform socket operations directly on it too. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTTP::Daemon Dependencies +
+
+ Required +
+

+ HTTP-Message-7.00 +

+
+

+ Note +

+

+ Makefile.PL and running the tests will complain that + Module::Build::Tiny is missing, but that is only needed + for Build.PL which is used + if the system lacks a C compiler. +

+
+
+
+
+
+
+

+ Installation of HTTP::Daemon +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ IO::Socket::SSL-2.095 +

+
+
+
+
+

+ Introduction to + IO::Socket::SSL +

+
+
+
+

+ IO::Socket::SSL makes using SSL/TLS much easier by wrapping + the necessary functionality into the familiar IO::Socket + interface and providing secure defaults whenever possible. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ IO::Socket::SSL Dependencies +
+
+ Required +
+

+ make-ca-1.16.1 and Net-SSLeay-1.94 +

+
+ Recommended +
+ +
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set + up with make-ca-1.16.1 before testing this + package. +

+
+
+
+
+
+
+

+ Installation of + IO::Socket::SSL +

+
+
+
+

+ This module uses a variant of the standard build and + installation instructions: +

+
yes | perl Makefile.PL &&
+make                   &&
+make test
+

+ One test, Client non-SSL + connection, is known to fail. +

+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ yes: Perl + will ask if you wish to run external tests, which will + 'fail soft' if there are network problems. The default is + 'y', which will allow you to script the build. +

+
+
+
+

+ IO::String-1.08 +

+
+
+
+
+

+ Introduction to IO::String +

+
+
+
+

+ IO::String - Emulate file interface for in-core strings. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of IO::String +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ IPC::Run3-0.049 +

+
+
+
+
+

+ Introduction to IPC::Run3 +

+
+
+
+

+ IPC::Run3 is used to run a subprocess with input/output + redirection. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of IPC::Run3 +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Lingua::Translit-0.29 +

+
+
+
+
+

+ Introduction to + Lingua::Translit +

+
+
+
+

+ Lingua::Translit and its translit program + transliterate text between writing systems. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Lingua::Translit +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + translit +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ translit +

+
+

+ transliterates text between writing systems using + various standards +

+
+
+
+
+
+

+ LWP + (libwww-perl-6.79) +

+
+
+
+
+

+ Introduction to LWP - The + World-wide Web library for Perl +

+
+
+
+

+ The libwww-perl collection is a set of Perl modules which + provides a simple and consistent application programming + interface (API) to the World-Wide Web. The main focus of + the library is to provide classes and functions that allow + you to write WWW clients. The library also contains modules + that are of more general use and even classes that help you + implement simple HTTP servers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ libwww-perl Dependencies +
+
+ Required +
+

+ File-Listing-6.16, HTTP-CookieJar-0.014, HTTP-Cookies-6.11, HTTP-Daemon-6.16, HTTP-Negotiate-6.01, HTML-Parser-3.83, Net-HTTP-6.23, Try-Tiny-0.32 + and WWW-RobotRules-6.02 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of libwww-perl +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+

+ After installing this package, if you want HTTPS protocol + support install LWP-Protocol-https-6.14. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + lwp-download, lwp-dump, + lwp-mirror, lwp-request +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ lwp-download +

+
+

+ is a script to fetch a large file from the web +

+
+

+ lwp-dump +

+
+

+ is used to see what headers and content is + returned for a URL +

+
+

+ lwp-mirror +

+
+

+ is a simple mirror utility +

+
+

+ lwp-request +

+
+

+ is a simple command line user agent +

+
+
+
+
+
+

+ List::AllUtils-0.19 +

+
+
+
+
+

+ Introduction to + List::AllUtils +

+
+
+
+

+ The List::Allutils module combines List::Util and + List::MoreUtils in one bite-sized package. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ List::AllUtils Dependencies +
+
+ Required +
+

+ List-SomeUtils-0.59 and + List-UtilsBy-0.12 +

+
+
+
+
+
+

+ Installation of + List::AllUtils +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ List::MoreUtils-0.430 +

+
+
+
+
+

+ Introduction to + List::MoreUtils +

+
+
+
+

+ List::MoreUtils provides the stuff missing in List::Util. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ List::MoreUtils Dependencies +
+
+ Required +
+

+ Exporter-Tiny-1.006002 and + List-MoreUtils-XS-0.430 +

+
+
+
+
+
+

+ Installation of + List::MoreUtils +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Log::Log4perl-1.57 +

+
+
+
+
+

+ Introduction to + Log::Log4perl +

+
+
+
+

+ Log::Log4perl provides a Log4j implementation for + perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Log::Log4perl +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + l4p-templ +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ l4p-templ +

+
+

+ prints out the text of a template Log4perl + configuration for starting a new Log4perl + configuration file +

+
+
+
+
+
+

+ LWP::Protocol::https-6.14 +

+
+
+
+
+

+ Introduction to + LWP::Protocol::https +

+
+
+
+

+ LWP::Protocol::https provides https support for + LWP::UserAgent (i.e. libwww-perl-6.79). Once the + module is installed LWP is able to access sites using HTTP + over SSL/TLS. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ LWP::Protocol::https Dependencies +
+
+ Required +
+

+ IO-Socket-SSL-2.095, libwww-perl-6.79, and + make-ca-1.16.1 with /etc/pki/tls/certs/ca-bundle.crt. +

+
+
+
+
+
+

+ Installation of + LWP::Protocol::https +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Module::Build-0.4234 +

+
+
+
+
+

+ Introduction to + Module::Build +

+
+
+
+

+ Module::Build allows perl modules to be built without a + make command + being present. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Module::Build +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+

+ Note that this module can also be built using Build.PL +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + config_data +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ config_data +

+
+

+ is used to query or change the configuration of + perl modules +

+
+
+
+
+
+

+ Net::DNS-1.52 +

+
+
+
+
+

+ Introduction to Net::DNS +

+
+
+
+

+ Net::DNS is a DNS resolver implemented in Perl. It can be used to perform nearly + any type of DNS query from a Perl script. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Net::DNS +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Parse::RecDescent-1.967015 +

+
+
+
+
+

+ Introduction to + Parse::RecDescent +

+
+
+
+

+ Parse::RecDescent incrementally generates top-down + recursive-descent text parsers from simple yacc-like + grammar specifications. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Parse::RecDescent +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Parse::Yapp-1.21 +

+
+
+
+
+

+ Introduction to Parse::Yapp +

+
+
+
+

+ Parse::Yapp is a Perl extension for generating and using + LALR parsers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Parse::Yapp +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + yapp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ yapp +

+
+

+ is a frontend to the Parse::Yapp module, which + lets you create a Perl OO parser from an input + grammar file +

+
+
+
+
+
+

+ PerlIO::utf8_strict-0.010 +

+
+
+
+
+

+ Introduction to + PerlIO::utf8_strict +

+
+
+
+

+ PerlIO::utf8_strict provides a fast and correct UTF-8 + PerlIO layer. Unlike Perl's default :utf8 layer it checks + the input for correctness. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ PerlIO::utf8_strict Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + PerlIO::utf8_strict +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Regexp::Common-2024080801 +

+
+
+
+
+

+ Introduction to + Regexp::Common +

+
+
+
+

+ Regexp::Common provides commonly requested regular + expressions. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Regexp::Common +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ SGMLSpm-1.1 +

+
+
+
+
+

+ Introduction to SGMLSpm +

+
+
+
+

+ The SGMLSpm module is a Perl library used for parsing the + output from James Clark's SGMLS and NSGMLS parsers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of SGMLSpm +

+
+
+
+

+ Before beginning the build, issue the following command to + prevent an error: +

+
chmod -v 644 MYMETA.yml
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+

+ After the package has been installed, run the following + command as the root user: +

+
ln -sv sgmlspl.pl /usr/bin/sgmlspl
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + sgmlspl.pl, sgmlspl +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ sgmlspl.pl +

+
+

+ is an SGML processor +

+
+

+ sgmlspl +

+
+

+ is a symbolic link used during the install of + DocBook-utils-0.6.14 +

+
+
+
+
+
+

+ Sort::Key-1.33 +

+
+
+
+
+

+ Introduction to Sort::Key +

+
+
+
+

+ Sort::Key provides a set of functions to sort lists of + values by some calculated key value. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Sort::Key +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Command-0.11 +

+
+
+
+
+

+ Introduction to + Test::Command +

+
+
+
+

+ Test::Command tests the exit status, STDOUT, or STDERR, of + an external command. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Test::Command +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Differences-0.72 +

+
+
+
+
+

+ Introduction to + Test::Differences +

+
+
+
+

+ Test::Differences tests strings and data structures and + shows the differences if they do not match. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test::Differences Dependencies +
+
+ Required +
+

+ Text-Diff-1.45 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Test::Differences +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Text::BibTeX-0.91 +

+
+
+
+
+

+ Introduction to Text::BibTeX +

+
+
+
+

+ Text::BibTeX provides an interface to read and parse + BibTeX files. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Text::BibTeX Dependencies +
+
+ Required +
+

+ Config-AutoConf-0.320 and + ExtUtils-LibBuilder-0.09 +

+
+
+
+
+
+

+ Installation of Text::BibTeX +

+
+
+
+

+ This module is built using Build.PL: +

+
perl Build.PL &&
+./Build       &&
+./Build test
+

+ Now, as the root user: +

+
./Build install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + biblex, bibparse, + dumpnames +
+
+ Installed Libraries: + libbtparse.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ biblex +

+
+

+ performs lexical analysis on a BibTeX file +

+
+

+ bibparse +

+
+

+ parses a series of BibTeX files with command line + options to control the string post-processing + behavior +

+
+

+ dumpnames +

+
+

+ parses a BibTeX file, splitting 'author' and + 'editor' fields into lists of names, and then + dumps everything to stdout +

+
+

+ libbtparse.so +

+
+

+ is a library for parsing and processing BibTeX + data files +

+
+
+
+
+
+

+ Text::CSV-2.06 +

+
+
+
+
+

+ Introduction to Text::CSV +

+
+
+
+

+ Text::CSV is a comma-separated values manipulator, using XS + (eXternal Subroutine - for subroutines written in C or C++) + or pure perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Text::CSV Dependencies +
+
+ Recommended +
+ +
+
+
+
+
+

+ Installation of Text::CSV +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Text::Roman-3.5 +

+
+
+
+
+

+ Introduction to Text::Roman +

+
+
+
+

+ Text::Roman allows conversion between Roman and Arabic + algorisms (number systems, e.g. MCMXLV and 1945). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Text::Roman +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Unicode::Collate-1.31 +

+
+
+
+
+

+ Introduction to + Unicode::Collate +

+
+
+
+

+ Unicode::Collate provides a Unicode collation algorithm. +

+
+

+ Note +

+

+ This is a core module. If you are using perl-5.28.0 or later, its version is + good enough for biber-2.21 and you do not need to + reinstall this module. +

+
+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Unicode::Collate +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Unicode::LineBreak-2019.001 +

+
+
+
+
+

+ Introduction to + Unicode::LineBreak +

+
+
+
+

+ Unicode::LineBreak provides a UAX #14 Unicode Line Breaking + Algorithm. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Unicode::LineBreak Dependencies +
+
+ Required +
+

+ MIME-Charset-1.013.1 and + Wget-1.25.0 (to download two files from + unicode.org in the test suite) +

+
+ Optional +
+ +
+
+
+
+
+

+ Installation of + Unicode::LineBreak +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ URI-5.32 +

+
+
+
+
+

+ Introduction to URI +

+
+
+
+

+ This module implements the URI class. Objects of this class + represent "Uniform Resource Identifier references" as + specified in RFC 2396 (and updated by RFC 2732). A Uniform + Resource Identifier is a compact string of characters that + identifies an abstract or physical resource. A Uniform + Resource Identifier can be further classified as either a + Uniform Resource Locator (URL) or a Uniform Resource Name + (URN). The distinction between URL and URN does not matter + to the URI class interface. A "URI-reference" is a URI that + may have additional information attached in the form of a + fragment identifier. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ URI Dependencies +
+
+ Required +
+

+ MIME-Base32-1.303 +

+
+ Recommended (required for the test + suite) +
+ +
+ Optional +
+

+ Business-ISBN-3.012 +

+
+
+
+
+
+

+ Installation of URI +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::LibXML::Simple-1.01 +

+
+
+
+
+

+ Introduction to + XML::LibXML::Simple +

+
+
+
+

+ The XML::LibXML::Simple module is a rewrite of XML::Simple + to use the XML::LibXML parser for XML structures, instead + of the plain Perl or SAX + parsers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ XML::LibXML::Simple Dependencies +
+
+ Required +
+

+ XML-LibXML-2.0210 +

+
+
+
+
+
+

+ Installation of + XML::LibXML::Simple +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::LibXSLT-2.003000 +

+
+
+
+
+

+ Introduction to XML::LibXSLT +

+
+
+
+

+ XML-LibXSLT provides an interface to libxslt-1.1.43 +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ XML::LibXSLT Dependencies +
+
+ Required +
+

+ libxslt-1.1.43 and XML-LibXML-2.0210 +

+
+
+
+
+
+

+ Installation of XML::LibXSLT +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::Simple-2.25 +

+
+
+
+
+

+ Introduction to XML::Simple +

+
+
+
+

+ XML::Simple provides an easy API to read and write XML + (especially config files). It is deprecated and its use is + discouraged. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ XML::Simple Dependencies +
+
+ Optional +
+

+ XML-SAX-1.02 (for an alternative parser + which will be used if available, otherwise XML::Parser (which was installed in + LFS) will be used) +

+
+
+
+
+
+

+ Installation of XML::Simple +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::Writer-0.900 +

+
+
+
+
+

+ Introduction to XML::Writer +

+
+
+
+

+ XML::Writer provides a Perl extension for writing XML + documents. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of XML::Writer +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ CPAN + automated install of perl modules +

+
+
+
+
+

+ Automatic Installation of + Perl Modules. +

+
+
+
+

+ There is an alternate way of installing the modules using + the cpan + shell install + command. The command automatically downloads the latest + source from the CPAN archive for the module and any missing + prerequisite modules listed by upstream. Then for each + module it extracts it, runs the compilation, the tests and + installs it. +

+

+ You still need to install any non-perl dependencies before + running the automated installation method. You may wish to + clean out the build/ + directory after installing, to free up the space. If any + post-install actions such as creating a symlink are + mentioned, you should also do those. +

+

+ The first time you run cpan, you'll be prompted + to enter some information regarding download locations and + methods. This information is retained in files located in + ~/.cpan. +

+

+ In particular, you may wish to configure it so that + Sudo-1.9.17p2 is used for the installs, + allowing you to build and test as a regular user. The + following examples have not used that approach. +

+

+ Start the cpan shell by issuing + 'cpan' as the + root user. Any module may + now be installed from the cpan>  prompt with the + command: +

+
install <Module::Name>
+

+ For additional commands and help, issue 'help' from the + cpan>  prompt. +

+

+ Alternatively, for scripted or non-interactive + installations, use the following syntax as the root user to install one or more + modules: +

+
cpan -i <Module1::Name> <Module2::Name>
+

+ Review the cpan.1 man page + for additional parameters you can pass to cpan on the command line. +

+
+
+
+
+
+
+

+ Perl Module + Dependencies +

+
+
+
+
+
+

+ Perl Modules which are only required by other modules +

+

+ The modules on the previous page are referenced from other + pages in BLFS, but these modules are only in the book as + dependencies of those modules. If you use the CPAN install + method, you do not need to read this page. +

+

+ The BLFS editors pay much less attention to these modules, + and the versions will not be regularly reviewed. In all + cases, only the required or recommended dependencies are + listed - there might be other modules which allow more tests + to be run, but omitting them will still allow the tests to + PASS. +

+
+

+ Note +

+

+ The links on this page (to metacpan.org) should go to + "known good" versions, for which their dependencies are + correct. If you wish to use a later version, please check + the Changes file at https://metacpan.org - sometimes added + dependencies are listed, other times not. Some of these + modules have very frequent updates, often bringing + different dependencies. The linked metacpan.org versions + below were known to work with the module versions in BLFS + when last reviewed. +

+

+ However, if you notice that the Changes file for a newer + version than is in the current development book reports a + fix for a security issue, please report this to either the + blfs-dev or the blfs-support list. +

+

+ Similarly, if you discover that an updated module on the + previous page needs an extra dependency, please report + this. +

+
+
+ +
+
+
+

+ Algorithm::Diff-1.201 +

+
+
+
+
+

+ Introduction to + Algorithm::Diff +

+
+
+
+

+ Algorithm::Diff computes 'intelligent' differences between + two files or lists. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Algorithm::Diff +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Alien::Build-2.84 +

+
+
+
+
+

+ Introduction to Alien::Build +

+
+
+
+

+ Alien::Build provides tools for building external + (non-CPAN) dependencies for CPAN. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Alien::Build Dependencies +
+
+ Required +
+

+ Capture-Tiny-0.50, File-Which-1.27, FFI-CheckLib-0.31 and File-chdir-0.1011 +

+
+
+
+
+
+

+ Installation of Alien::Build +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Alien::Build::Plugin::Download::GitLab-0.01 +

+
+
+
+
+

+ Introduction to + Alien::Build::Plugin::Download::GitLab +

+
+
+
+

+ Alien::Build::Plugin::Download::GitLab allows Alien::Build + to download from GitLab (in practice, this does not + download if the required library is already installed on + the system). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Alien::Build::Plugin::Download::GitLab + Dependencies +
+
+ Required +
+

+ Alien-Build-2.84 and URI-5.32 +

+
+
+
+
+
+

+ Installation of + Alien::Build::Plugin::Download::GitLab +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Alien::Libxml2-0.20 +

+
+
+
+
+

+ Introduction to + Alien::Libxml2 +

+
+
+
+

+ Alien::Libxml2 is designed to allow modules to install the + C libxml2 library on your system. In BLFS, it uses + pkg-config to + find how to link to the installed libxml2-2.14.5. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Alien::Libxml2 Dependencies +
+
+ Required +
+

+ Alien-Build-Plugin-Download-GitLab-0.01, + libxml2-2.14.5, and Path-Tiny-0.150 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Alien::Libxml2 +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ B::COW-0.007 +

+
+
+
+
+

+ Introduction to B::COW +

+
+
+
+

+ B::COW provides additional helpers for the B core module to + check Copy On Write. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of B::COW +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ B::Hooks::EndOfScope-0.28 +

+
+
+
+
+

+ Introduction to + B::Hooks::EndOfScope +

+
+
+
+

+ B::Hooks::EndOfScope allows you to execute code when Perl + finishes compiling the surrounding scope. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ B::Hooks::EndOfScope Dependencies +
+
+ Required +
+

+ Module-Implementation-0.09, + Sub-Exporter-Progressive-0.001013 + and Variable-Magic-0.64 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + B::Hooks::EndOfScope +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Business::ISBN::Data-20250815.001 +

+
+
+
+
+

+ Introduction to + Business-ISBN-Data +

+
+
+
+

+ Business-ISBN-Data is a data pack for Business::ISBN. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Business-ISBN-Data +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Capture::Tiny-0.50 +

+
+
+
+
+

+ Introduction to + Capture::Tiny +

+
+
+
+

+ The Capture::Tiny module captures STDOUT and STDERR from + Perl, XS (eXternal Subroutine, i.e. written in C or C++) or + external programs. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Capture::Tiny +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Class::Data::Inheritable-0.10 +

+
+
+
+
+

+ Introduction to + Class::Data::Inheritable +

+
+
+
+

+ Class::Data::Inheritable is for creating accessor/mutators + to class data. That is, if you want to store something + about your class as a whole (instead of about a single + object). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Class::Data::Inheritable +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Class::Inspector-1.36 +

+
+
+
+
+

+ Introduction to + Class::Inspector +

+
+
+
+

+ Class::Inspector allows you to get information about a + loaded class. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Class::Inspector +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Class::Singleton-1.6 +

+
+
+
+
+

+ Introduction to + Class::Singleton +

+
+
+
+

+ A Singleton describes an object class that can have only + one instance in any system, such as a print spooler. This + module implements a Singleton class from which other + classes can be derived. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Class::Singleton +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Class:Tiny-1.008 +

+
+
+
+
+

+ Introduction to Class:Tiny +

+
+
+
+

+ Class:Tiny offers a minimalist class construction kit. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Class:Tiny +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Clone-0.47 +

+
+
+
+
+

+ Introduction to Clone +

+
+
+
+

+ Clone recursively copies perl datatypes. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Clone Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of Clone +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Clone::PP-1.08 +

+
+
+
+
+

+ Introduction to Clone::PP +

+
+
+
+

+ Clone:PP recursively copies Perl datatypes, allowing for a + deep copy of a given Perl data structure. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Fu::Bar +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Config::AutoConf-0.320 +

+
+
+
+
+

+ Introduction to + Config::AutoConf +

+
+
+
+

+ The Config::AutoConf module implements some of the AutoConf + macros (detecting a command, detecting a library, etc.) in + pure perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Config::AutoConf Dependencies +
+
+ Required +
+

+ Capture-Tiny-0.50 and File-Slurper-0.014 +

+
+
+
+
+
+

+ Installation of + Config::AutoConf +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ CPAN::Meta::Check-0.018 +

+
+
+
+
+

+ Introduction to + CPAN::Meta::Check +

+
+
+
+

+ CPAN::Meta::Check verifies if requirements described in a + CPAN::Meta object are present. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + CPAN::Meta::Check +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ DateTime-1.66 +

+
+
+
+
+

+ Introduction to DateTime +

+
+
+
+

+ DateTime is a date and time object for perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ DateTime Dependencies +
+
+ Required +
+

+ DateTime-Locale-1.45 and + DateTime-TimeZone-2.65 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of DateTime +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ DateTime::Format::Strptime-1.79 +

+
+
+
+
+

+ Introduction to + DateTime::Format::Strptime +

+
+
+
+

+ DateTime::Format::Strptime implements most of strptime(3), + i.e. it takes a string and a pattern and returns a DateTime + object. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ DateTime::Format::Strptime + Dependencies +
+
+ Required +
+

+ DateTime-1.66 +

+
+
+
+
+
+

+ Installation of + DateTime::Format::Strptime +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ DateTime::Locale-1.45 +

+
+
+
+
+

+ Introduction to + DateTime::Locale +

+
+
+
+

+ DateTime::Locale provides localization support for + DateTime-1.66. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ DateTime::Locale Dependencies +
+
+ Required +
+

+ Dist-CheckConflicts-0.11, + File-ShareDir-1.118, namespace-autoclean-0.31 + and Params-ValidationCompiler-0.31 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + DateTime::Locale +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ DateTime::TimeZone-2.65 +

+
+
+
+
+

+ Introduction to + DateTime::TimeZone +

+
+
+
+

+ This class is the base class for all time zone objects. A + time zone is represented internally as a set of + observances, each of which describes the offset from GMT + for a given time period. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ DateTime::TimeZone Dependencies +
+
+ Required +
+

+ Class-Singleton-1.6, Module-Runtime-0.018, and + Params-ValidationCompiler-0.31 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + DateTime::TimeZone +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Devel::StackTrace-2.05 +

+
+
+
+
+

+ Introduction to + Devel::StackTrace +

+
+
+
+

+ Devel::StackTrace provides an object representing a stack + trace. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Devel::StackTrace +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Dist::CheckConflicts-0.11 +

+
+
+
+
+

+ Introduction to + Dist::CheckConflicts +

+
+
+
+

+ Dist::CheckConflicts declares version conflicts for a + distribution, to support post-install updates of dependent + distributions. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Dist::CheckConflicts Dependencies +
+
+ Required +
+

+ Module-Runtime-0.018 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Dist::CheckConflicts +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Encode::Locale-1.05 +

+
+
+
+
+

+ Introduction to + Encode::Locale +

+
+
+
+

+ Encode::Locale determines the locale encoding. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Encode::Locale +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Eval::Closure-0.14 +

+
+
+
+
+

+ Introduction to + Eval::Closure +

+
+
+
+

+ Eval::Closure safely and cleanly creates closures via + string eval. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Eval::Closure Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Eval::Closure +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Exception::Class-1.45 +

+
+
+
+
+

+ Introduction to + Exception::Class +

+
+
+
+

+ Exception::Class allows you to declare real exception + classes in Perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Exception::Class Dependencies +
+
+ Required +
+

+ Class-Data-Inheritable-0.10 + and Devel-StackTrace-2.05 +

+
+
+
+
+
+

+ Installation of + Exception::Class +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Exporter::Tiny-1.006002 +

+
+
+
+
+

+ Introduction to + Exporter::Tiny +

+
+
+
+

+ Exporter::Tiny is an exporter with the features of + Sub::Exporter but only core dependencies. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Exporter::Tiny +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ ExtUtils::LibBuilder-0.09 +

+
+
+
+
+

+ Introduction to + ExtUtils::LibBuilder +

+
+
+
+

+ ExtUtils::LibBuilder is a tool to build C libraries. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ ExtUtils::LibBuilder Dependencies +
+
+ Required +
+

+ Module-Build-0.4234 +

+
+
+
+
+
+

+ Installation of + ExtUtils::LibBuilder +

+
+
+
+

+ This module is built using Build.PL: +

+
perl Build.PL &&
+./Build       &&
+./Build test
+

+ Now, as the root user: +

+
./Build install
+
+
+
+

+ FFI::CheckLib-0.31 +

+
+
+
+
+

+ Introduction to + FFI::CheckLib +

+
+
+
+

+ FFI::CheckLib checks whether a particular dynamic library + is available for FFI (Foreign Function Interface) to use. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ FFI::CheckLib Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + FFI::CheckLib +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::chdir-0.1011 +

+
+
+
+
+

+ Introduction to File::chdir +

+
+
+
+

+ File::chdir provides a more sensible way to change + directories. +

+

+ Perl's chdir() has the unfortunate problem of being very, + very, very global. If any part of your program calls + chdir() or if any library you use calls chdir(), it changes + the current working directory for the *whole* program. + File::chdir gives you an alternative, $CWD and @CWD. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of File::chdir +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::Copy::Recursive-0.45 +

+
+
+
+
+

+ Introduction to + File::Copy::Recursive +

+
+
+
+

+ This module copies and moves directories recursively (or + single files), to an optional depth and attempts to + preserve each file or directory's mode. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ File::Copy::Recursive Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + File::Copy::Recursive +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::Find::Rule-0.35 +

+
+
+
+
+

+ Introduction to + File::Find::Rule +

+
+
+
+

+ File::Find::Rule is a friendlier interface to File::Find. + It allows you to build rules which specify the desired + files and directories. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ File::Find::Rule Dependencies +
+
+ Required +
+

+ Number-Compare-0.03 and + Text-Glob-0.11 +

+
+
+
+
+
+

+ Installation of + File::Find::Rule +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + findrule +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ findrule +

+
+

+ is a command line wrapper to File::Find::Rule +

+
+
+
+
+
+

+ File::Listing-6.16 +

+
+
+
+
+

+ Introduction to + File::Listing +

+
+
+
+

+ File::Listing parses a directory listing. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ File::Listing Dependencies +
+
+ Required +
+

+ HTTP-Date-6.06 +

+
+
+
+
+
+

+ Installation of + File::Listing +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::ShareDir-1.118 +

+
+
+
+
+

+ Introduction to + File::ShareDir +

+
+
+
+

+ File::ShareDir allows you to access data files which have + been installed by File::ShareDir::Install. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ File::ShareDir Dependencies +
+
+ Required +
+

+ Class-Inspector-1.36 and + File-ShareDir-Install-0.14 +

+
+
+
+
+
+

+ Installation of + File::ShareDir +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ File::ShareDir::Install-0.14 +

+
+
+
+
+

+ Introduction to + File::ShareDir::Install +

+
+
+
+

+ File::ShareDir::Install allows you to install read-only + data files from a distribution. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + File::ShareDir::Install +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTML::Tagset-3.24 +

+
+
+
+
+

+ Introduction to HTML::Tagset +

+
+
+
+

+ HTML::Tagset provides several data tables useful in parsing + HTML. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of HTML::Tagset +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTTP::CookieJar-0.014 +

+
+
+
+
+

+ Introduction to + HTTP::CookieJar +

+
+
+
+

+ HTTP::CookieJar provides a minimalist HTTP user agent + cookie jar. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTTP::CookieJar Dependencies +
+
+ Required +
+

+ HTTP-Date-6.06 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + HTTP::CookieJar +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTTP::Cookies-6.11 +

+
+
+
+
+

+ Introduction to + HTTP::Cookies +

+
+
+
+

+ HTTP::Cookies provides a class for objects that represent a + "cookie jar" -- that is, a database of all the HTTP cookies + that a given LWP::UserAgent (from libwww-perl-6.79) object knows + about. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTTP::Cookies Dependencies +
+
+ Required +
+

+ HTTP-Message-7.00 +

+
+
+
+
+
+

+ Installation of + HTTP::Cookies +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTTP::Date-6.06 +

+
+
+
+
+

+ Introduction to HTTP::Date +

+
+
+
+

+ HTTP::Date provides functions to deal with the date formats + used by the HTTP protocol and also with some other date + formats. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTTP::Date Dependencies +
+
+ Recommended +
+ +
+
+
+
+
+

+ Installation of HTTP::Date +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTTP::Message-7.00 +

+
+
+
+
+

+ Introduction to + HTTP::Message +

+
+
+
+

+ HTTP::Message provides a base class for HTTP style message + objects. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTTP::Message Dependencies +
+
+ Required +
+

+ Clone-0.47, Encode-Locale-1.05, HTTP-Date-6.06, IO-HTML-1.004, + LWP-MediaTypes-6.04, and + URI-5.32 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + HTTP::Message +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ HTTP::Negotiate-6.01 +

+
+
+
+
+

+ Introduction to + HTTP::Negotiate +

+
+
+
+

+ HTTP::Negotiate provides a complete implementation of the + HTTP content negotiation algorithm. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ HTTP::Negotiate Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + HTTP::Negotiate +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ IO::HTML-1.004 +

+
+
+
+
+

+ Introduction to IO::HTML +

+
+
+
+

+ IO::HTML opens an HTML file with automatic character set + detection. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of IO::HTML +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ IPC::System::Simple-1.30 +

+
+
+
+
+

+ Introduction to + IPC::System::Simple +

+
+
+
+

+ IPC::System::Simple takes the hard work out of calling + external commands and producing detailed diagnostics. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + IPC::System::Simple +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ List::MoreUtils::XS-0.430 +

+
+
+
+
+

+ Introduction to + List::MoreUtils::XS +

+
+
+
+

+ List::MoreUtils::XS is a compiled backend for + List::MoreUtils +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + List::MoreUtils::XS +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ List::SomeUtils-0.59 +

+
+
+
+
+

+ Introduction to + List::SomeUtils +

+
+
+
+

+ List::SomeUtils provides the stuff missing in List::Util. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ List::SomeUtils Dependencies +
+
+ Required +
+

+ Module-Implementation-0.09 + and List-SomeUtils-XS-0.58 +

+
+
+
+
+
+

+ Installation of + List::SomeUtils +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ List::SomeUtils::XS-0.58 +

+
+
+
+
+

+ Introduction to + List::SomeUtils::XS +

+
+
+
+

+ List::SomeUtils::XS is a (faster) XS (eXternal Subroutine) + implementation for List::SomeUtils. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ List::SomeUtils::XS Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + List::SomeUtils::XS +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ List::UtilsBy-0.12 +

+
+
+
+
+

+ Introduction to + List::UtilsBy +

+
+
+
+

+ List::UtilsBy provides a number of higher-order list + utility functions. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + List::UtilsBy +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ LWP::MediaTypes-6.04 +

+
+
+
+
+

+ Introduction to + LWP::MediaTypes +

+
+
+
+

+ LWP::MediaTypes guesses the media type (i.e. the MIME Type) + for a file or URL. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ LWP::MediaTypes Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + LWP::MediaTypes +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ MIME::Base32-1.303 +

+
+
+
+
+

+ Introduction to MIME::Base32 +

+
+
+
+

+ MIME::Base32 is for Encoding/Decoding data. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of MIME::Base32 +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ MIME::Charset-1.013.1 +

+
+
+
+
+

+ Introduction to + MIME::Charset +

+
+
+
+

+ MIME::Charset provides information about character sets + used for MIME messages on the internet, such as their + encodings. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ MIME::Charset Dependencies +
+
+ Recommended +
+ +
+
+
+
+
+

+ Installation of + MIME::Charset +

+
+
+
+

+ This module uses a variant of the standard build and + installation instructions: +

+
yes '' | perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ yes |: Perl + will ask if you wish to install a further module for + handling legacy Japanese encodings, and another which it + would use for translating documentation to Japanese. The + default option is 'n', using 'yes' allows you to script the + build. +

+
+
+
+

+ Module::Implementation-0.09 +

+
+
+
+
+

+ Introduction to + Module::Implementation +

+
+
+
+

+ Module::Implementation loads one of several alternate + underlying implementations of a module (e.g. eXternal + Subroutine or pure Perl, or an implementation for a given + OS). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Module::Implementation + Dependencies +
+
+ Required +
+

+ Module-Runtime-0.018 and + Try-Tiny-0.32 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Module::Implementation +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Module::Runtime-0.018 +

+
+
+
+
+

+ Introduction to + Module::Runtime +

+
+
+
+

+ Module::Runtime provides functions to deal with runtime + handling of Perl modules. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Module::Runtime +

+
+
+
+

+ Although Module::Build is still listed as a prerequisite, + it is no-longer necessary on systems with a working + make. +

+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ MRO::Compat-0.15 +

+
+
+
+
+

+ Introduction to MRO::Compat +

+
+
+
+

+ The "mro" namespace provides several utilities for dealing + with method resolution order and method caching in general + in Perl 5.9.5 and higher. This module provides those + interfaces for earlier versions of Perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of MRO::Compat +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ namespace::autoclean-0.31 +

+
+
+
+
+

+ Introduction to + namespace::autoclean +

+
+
+
+

+ This module is very similar to namespace::clean, except it + will clean all imported functions, no matter if you + imported them before or after you used the pragma. It will + also not touch anything that looks like a method. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ namespace::autoclean Dependencies +
+
+ Required +
+

+ namespace-clean-0.27 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + namespace::autoclean +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ namespace::clean-0.27 +

+
+
+
+
+

+ Introduction to + namespace::clean +

+
+
+
+

+ This package allows you to keep imports and functions out + of your namespace. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ namespace::clean Dependencies +
+
+ Required +
+

+ B-Hooks-EndOfScope-0.28 and + Package-Stash-0.40 +

+
+
+
+
+
+

+ Installation of + namespace::clean +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Net::HTTP-6.23 +

+
+
+
+
+

+ Introduction to Net::HTTP +

+
+
+
+

+ The Net::HTTP class is a low level HTTP client. An instance + of the class represents a connection to an HTTP server. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Net::HTTP Dependencies +
+
+ Required +
+

+ URI-5.32 +

+
+
+
+
+
+

+ Installation of Net::HTTP +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Net::SSLeay-1.94 +

+
+
+
+
+

+ Introduction to Net::SSLeay +

+
+
+
+

+ Net::SSLeay is a Perl extension for using OpenSSL. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Net::SSLeay +

+
+
+
+
+

+ Note +

+

+ One test named 32_x509_get_cert_info.t is known to + fail with OpenSSL-3.4.0 or later. If enabling the + external tests, one test in t/external/15_altnames.t may + fail. +

+
+

+ This module uses a variant of the standard build and + installation instructions: +

+
yes '' | perl Makefile.PL &&
+make                      &&
+make test || true
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ yes '': Perl + will ask if you wish to run external tests, which will fail + if you do not have network connectivity. The default is + 'n', specifying this allows you to script the build. +

+

+ || true: When + running a script which exits on error, this prevents + stopping because of the known test failure. +

+
+
+
+

+ Number::Compare-0.03 +

+
+
+
+
+

+ Introduction to + Number::Compare +

+
+
+
+

+ Number::Compare compiles a simple comparison to an + anonymous subroutine, which you can call with a value to be + tested against. It understands IEC standard magnitudes (k, + ki, m, mi, g, gi). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Number::Compare +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Package::Stash-0.40 +

+
+
+
+
+

+ Introduction to + Package::Stash +

+
+
+
+

+ Manipulating stashes (Perl's symbol tables) is occasionally + necessary, but incredibly messy, and easy to get wrong. + This module hides all of that behind a simple API. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Package::Stash Dependencies +
+
+ Required +
+

+ Dist-CheckConflicts-0.11 + and Module-Implementation-0.09 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Package::Stash +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Params::Validate-1.31 +

+
+
+
+
+

+ Introduction to + Params::Validate +

+
+
+
+

+ Params::Validate allows you to validate method or function + call parameters to an arbitrary level of specificity. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Params::Validate Dependencies +
+
+ Required +
+

+ Module-Build-0.4234 and + Module-Implementation-0.09 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Params::Validate +

+
+
+
+

+ This module is built using Build.PL: +

+
perl Build.PL &&
+./Build       &&
+./Build test
+

+ Now, as the root user: +

+
./Build install
+
+
+
+

+ Params::ValidationCompiler-0.31 +

+
+
+
+
+

+ Introduction to + Params::ValidationCompiler +

+
+
+
+

+ Params::ValidationCompiler builds an optimized subroutine + parameter validator. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Params::ValidationCompiler + Dependencies +
+
+ Required +
+

+ Exception-Class-1.45 and + Specio-0.52 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Params::ValidationCompiler +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Path::Tiny-0.150 +

+
+
+
+
+

+ Introduction to Path::Tiny +

+
+
+
+

+ Path::Tiny provides a small fast utility for working with + file paths. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Path::Tiny +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Role::Tiny-2.002004 +

+
+
+
+
+

+ Introduction to Role::Tiny +

+
+
+
+

+ Role::Tiny is a minimalist role composition tool. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Role::Tiny +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Scope::Guard-0.21 +

+
+
+
+
+

+ Introduction to Scope::Guard +

+
+
+
+

+ Scope::Guard provides a convenient way to perform cleanup + or other forms of resource management at the end of a + scope. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Scope::Guard +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Specio-0.52 +

+
+
+
+
+

+ Introduction to Specio +

+
+
+
+

+ Specio provides classes for representing type constraints + and coercion, along with syntax sugar for declaring them. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Specio Dependencies +
+
+ Required +
+

+ Devel-StackTrace-2.05, + Eval-Closure-0.14, Module-Runtime-0.018, Role-Tiny-2.002004, Sub-Quote-2.006008, and Try-Tiny-0.32 +

+
+ Recommended (required for the test + suite) +
+ +
+ Optional +
+

+ namespace-autoclean-0.31 + (for the test suite) +

+
+
+
+
+
+

+ Installation of Specio +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Sub::Exporter::Progressive-0.001013 +

+
+
+
+
+

+ Introduction to + Sub::Exporter::Progressive +

+
+
+
+

+ Sub::Exporter::Progressive is a wrapper for Sub::Exporter. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Sub::Exporter::Progressive +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Sub::Quote-2.006008 +

+
+
+
+
+

+ Introduction to Sub::Quote +

+
+
+
+

+ Sub::Quote provides ways to generate subroutines from + strings. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Sub::Quote +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Sub::Uplevel-0.2800 +

+
+
+
+
+

+ Introduction to Sub::Uplevel +

+
+
+
+

+ Sub::Uplevel allows you to fool a caller that it is running + in a higher stack frame. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Sub::Uplevel +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Term::Table-0.024 +

+
+
+
+
+

+ Introduction to Term::Table +

+
+
+
+

+ Term::Table formats a header and rows into a table. This is + used by some failing tests to provide diagnostics about + what has gone wrong. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Term::Table Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of Term::Table +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Deep-1.205 +

+
+
+
+
+

+ Introduction to Test::Deep +

+
+
+
+

+ Test::Deep gives you very flexible ways to check that the + result you got is the result you were expecting. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Test::Deep +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Exception-0.43 +

+
+
+
+
+

+ Introduction to + Test::Exception +

+
+
+
+

+ Test::Exception provides convenience methods for testing + exception based code. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test::Exception Dependencies +
+
+ Required +
+

+ Sub-Uplevel-0.2800 +

+
+
+
+
+
+

+ Installation of + Test::Exception +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Fatal-0.017 +

+
+
+
+
+

+ Introduction to Test::Fatal +

+
+
+
+

+ The Test::Fatal module provides simple helpers for testing + code which throws exceptions. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test::Fatal Dependencies +
+
+ Required +
+

+ Try-Tiny-0.32 +

+
+
+
+
+
+

+ Installation of Test::Fatal +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::File-1.995 +

+
+
+
+
+

+ Introduction to Test::File +

+
+
+
+

+ Test::File provides a collection of test utilities for file + attributes. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test::File Dependencies +
+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of Test::File +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::File::ShareDir-1.001002 +

+
+
+
+
+

+ Introduction to + Test::File::ShareDir +

+
+
+
+

+ Test::File::ShareDir is some low level plumbing to enable a + distribution to perform tests while consuming its own share + directories in a manner similar to how they will be once + installed. This allows File-ShareDir-1.118 to see the + latest version of content instead of whatever is installed + on the target system where you are testing. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test::File::ShareDir Dependencies +
+
+ Required +
+

+ Class-Tiny-1.008, File-Copy-Recursive-0.45, + File-ShareDir-1.118, Path-Tiny-0.150, and Scope-Guard-0.21 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Test::File::ShareDir +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::LeakTrace-0.17 +

+
+
+
+
+

+ Introduction to + Test::LeakTrace +

+
+
+
+

+ Test::LeakTrace traces memory leaks. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Test::LeakTrace +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Needs-0.002010 +

+
+
+
+
+

+ Introduction to Test::Needs +

+
+
+
+

+ Test::Needs skips tests if a requested module is not + present. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Test::Needs +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Requires-0.11 +

+
+
+
+
+

+ Introduction to + Test::Requires +

+
+
+
+

+ The Test::Requires module checks if another (optional) + module can be loaded, and if not it skips all the current + tests. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Test::Requires +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::RequiresInternet-0.05 +

+
+
+
+
+

+ Introduction to + Test::RequiresInternet +

+
+
+
+

+ Test::RequiresInternet is intended to easily test network + connectivity before functional tests begin to connect to + non-local Internet resources. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Test::RequiresInternet +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Simple-1.302214 +

+
+
+
+
+

+ Introduction to Test::Simple +

+
+
+
+

+ Test::Simple contains basic utilities for writing tests. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test::Simple Dependencies +
+
+ Required +
+

+ Term-Table-0.024 +

+
+
+
+
+
+

+ Installation of Test::Simple +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::utf8-1.03 +

+
+
+
+
+

+ Introduction to Test::utf8 +

+
+
+
+

+ Test::utf8 is a collection of tests useful for dealing with + utf8 strings in Perl. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Test::utf8 +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Warnings-0.038 +

+
+
+
+
+

+ Introduction to + Test::Warnings +

+
+
+
+

+ Test::Warnings tests for warnings and the lack of them. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Test::Warnings +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test::Without::Module-0.23 +

+
+
+
+
+

+ Introduction to + Test::Without::Module +

+
+
+
+

+ This module allows you to deliberately hide modules from a + program even though they are installed. This is mostly + useful for testing modules that have a fallback when a + certain dependency module is not installed. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Test::Without::Module +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Test2::Plugin::NoWarnings-0.10 +

+
+
+
+
+

+ Introduction to + Test2::Plugin::NoWarnings +

+
+
+
+

+ Test2::Plugin::NoWarnings causes tests to fail if there are + any warnings while they run. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Test2::Plugin::NoWarnings + Dependencies +
+
+ Required +
+

+ Test-Simple-1.302214 +

+
+ Recommended (required for the test + suite) +
+ +
+
+
+
+
+

+ Installation of + Test2::Plugin::NoWarnings +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Text::CSV_XS-1.61 +

+
+
+
+
+

+ Introduction to Text::CSV_XS +

+
+
+
+

+ Text::CSV_XS provides facilities for the composition and + decomposition of comma-separated values. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Text::CSV_XS +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Text::Diff-1.45 +

+
+
+
+
+

+ Introduction to Text::Diff +

+
+
+
+

+ Text::Diff performs diffs on files and record sets. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Text::Diff Dependencies +
+
+ Required +
+

+ Algorithm-Diff-1.201 +

+
+
+
+
+
+

+ Installation of Text::Diff +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Text::Glob-0.11 +

+
+
+
+
+

+ Introduction to Text::Glob +

+
+
+
+

+ Text::Glob implements glob(3) style + matching that can be used to match against text, rather + than fetching names from a filesystem. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Text::Glob +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Tie::Cycle-1.231 +

+
+
+
+
+

+ Introduction to Tie::Cycle +

+
+
+
+

+ You use Tie::Cycle to go through a list over and over + again. Once you get to the end of the list, you go back to + the beginning. You don't have to worry about any of this + since the magic of tie does that for you. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Tie::Cycle +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ TimeDate-2.33 +

+
+
+
+
+

+ Introduction to TimeDate +

+
+
+
+

+ TimeDate provides miscellaneous timezone manipulation + routines. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of TimeDate +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Try::Tiny-0.32 +

+
+
+
+
+

+ Introduction to Try::Tiny +

+
+
+
+

+ Try::Tiny provides try and catch to expect and + handle exceptional conditions, avoiding quirks in + Perl and common mistakes. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Try::Tiny Dependencies +
+
+ Optional (can be used by the test + suite) +
+

+ Capture-Tiny-0.50 +

+
+
+
+
+
+

+ Installation of Try::Tiny +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ Variable::Magic-0.64 +

+
+
+
+
+

+ Introduction to + Variable::Magic +

+
+
+
+

+ Magic is Perl's way of enhancing variables. With this + module, you can add your own magic to any variable. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Variable::Magic +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ WWW::RobotRules-6.02 +

+
+
+
+
+

+ Introduction to + WWW::RobotRules +

+
+
+
+

+ WWW::RobotRules parses robots.txt files, creating a + WWW::RobotRules object with methods to check if access to a + given URL is prohibited. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ WWW::RobotRules Dependencies +
+
+ Required (runtime) +
+

+ libwww-perl-6.79 (install this + module first and install that later) +

+
+
+
+
+
+

+ Installation of + WWW::RobotRules +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::LibXML-2.0210 +

+
+
+
+
+

+ Introduction to XML::LibXML +

+
+
+
+

+ XML::LibXML is a perl binding for libxml2-2.14.5. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Additional Download +
+ +
+ XML::LibXML Dependencies +
+
+ Required +
+

+ Alien-Libxml2-0.20 and XML-SAX-1.02 +

+
+
+
+
+
+

+ Installation of XML::LibXML +

+
+
+
+

+ First, apply a patch to fix issues with the testsuite when + compiled against libxml2-2.13: +

+
patch -Np1 -i ../XML-LibXML-2.0210-testsuite_fixes-1.patch
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::NamespaceSupport-1.12 +

+
+
+
+
+

+ Introduction to + XML::NamespaceSupport +

+
+
+
+

+ XML::NamespaceSupport offers a simple way to process + namespaced XML names from within any application that may + need them. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + XML::NamespaceSupport +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+

+ XML::SAX-1.02 +

+
+
+
+
+

+ Introduction to XML::SAX +

+
+
+
+

+ XML::SAX is a SAX parser access API for Perl. It includes + classes and APIs required for implementing SAX drivers, + along with a factory class for returning any SAX parser + installed on the user's system. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ XML::SAX Dependencies +
+
+ Required +
+

+ libxml2-2.14.5, XML-NamespaceSupport-1.12, + and XML-SAX-Base-1.09 +

+
+
+
+
+
+

+ Installation of XML::SAX +

+
+
+
+

+ This module uses a variant of the standard build and + installation instructions: +

+
yes | perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ yes: Perl + will ask if you want it to alter ParserDetails.ini and then + wait for a response. The default is 'y'. Using 'yes' allows + you to script this. +

+
+
+
+

+ XML::SAX::Base-1.09 +

+
+
+
+
+

+ Introduction to + XML::SAX::Base +

+
+
+
+

+ This module has a very simple task - to be a base class for + PerlSAX drivers and filters. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + XML::SAX-Base +

+
+
+
+

+ This module uses the standard build and installation + instructions: +

+
perl Makefile.PL &&
+make             &&
+make test
+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+
+

+ PHP-8.4.11 +

+
+
+
+
+
+

+ Introduction to PHP +

+

+ PHP is the PHP Hypertext + Preprocessor. Primarily used in dynamic web sites, it allows + for programming code to be directly embedded into the HTML + markup. It is also useful as a general purpose scripting + language. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.php.net/distributions/php-8.4.11.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: d08a7fbf770f2b9218a18eb70b2e9717 +

    +
  • +
  • +

    + Download size: 13 MB +

    +
  • +
  • +

    + Estimated disk space required: 395 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (add 2.6 SBU for tests; + both with parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+
+ +
+

+ PHP + Dependencies +

+
+ Recommended +
+ +
+ Optional System Utilities and + Libraries +
+

+ Aspell-0.60.8.1, enchant-2.8.12, + libxslt-1.1.43, an MTA (that + provides a sendmail command), + pcre2-10.45, AppArmor, Dmalloc, Net-SNMP, + oniguruma, OSSP mm, + re2c, and + XMLRPC-EPI +

+
+ Optional Graphics Utilities and + Libraries +
+

+ FreeType-2.13.3, libexif-0.6.25, + libjpeg-turbo-3.0.1, libpng-1.6.50, libtiff-4.7.0, libwebp-1.6.0, a graphical + environment, + FDF Toolkit, GD, and t1lib +

+
+ Optional Web Utilities +
+

+ cURL-8.15.0, tidy-html5-5.8.0, + Caudium, + Hyperwave, and WDDX +

+
+ Optional Data Management Utilities + and Libraries +
+

+ lmdb-0.9.33, MariaDB-11.8.3 or + MySQL, + OpenLDAP-2.6.10, PostgreSQL-17.6, + SQLite-3.50.4, unixODBC-2.3.12, + + Berkeley DB (deprecated) + Adabas, Birdstep, cdb, DBMaker, + Empress, + FrontBase, + IBM DB2, + libiodbc, + Mini SQL, + Monetra, + and QDBM +

+

+ PHP also provides support + for many commercial database tools such as Oracle, SAP and ODBC + Router. +

+
+ Optional Security/Encryption + Utilities and Libraries +
+

+ Cyrus SASL-2.1.28, libmcrypt, and + mhash +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/php +

+
+
+

+ Installation of PHP +

+

+ You can use PHP for + server-side scripting, command-line scripting or client-side + GUI applications. This book provides instructions for setting + up PHP for server-side + scripting as it is the most common form. +

+
+

+ Note +

+

+ PHP has many more + configure + options that will enable support for various things. You + can use ./configure + --help to see a full list of the available + options. Also, use of the PHP web site is highly + recommended, as their online docs are very good. An example + of a configure command that + utilizes many of the most common dependencies can be found + at + https://anduin.linuxfromscratch.org/BLFS/files/php_configure.txt. +

+

+ If, for whatever reason, you don't have libxml2-2.14.5 + installed, you need to add --disable-libxml to the configure command in the + instructions below. Note that this will prevent the + pear command + from being built. +

+
+

+ Install PHP by running the + following commands: +

+
./configure --prefix=/usr                \
+            --sysconfdir=/etc            \
+            --localstatedir=/var         \
+            --datadir=/usr/share/php     \
+            --mandir=/usr/share/man      \
+            --without-pear               \
+            --enable-fpm                 \
+            --with-fpm-user=apache       \
+            --with-fpm-group=apache      \
+            --with-config-file-path=/etc \
+            --with-zlib                  \
+            --enable-bcmath              \
+            --with-bz2                   \
+            --enable-calendar            \
+            --enable-dba=shared          \
+            --with-gdbm                  \
+            --with-gmp                   \
+            --enable-ftp                 \
+            --with-gettext               \
+            --enable-mbstring            \
+            --disable-mbregex            \
+            --with-readline              &&
+make
+

+ To test the results, issue: make test. Several tests + (out of over 20000) may fail, in which case you are asked + whether you want to send the report to the PHP developers. If + you want to automate the test, you may prefix the command + with yes "n" | + . +

+

+ Now, as the root user: +

+
make install                                     &&
+install -v -m644 php.ini-production /etc/php.ini &&
+
+install -v -m755 -d /usr/share/doc/php-8.4.11 &&
+install -v -m644    CODING_STANDARDS* EXTENSIONS NEWS README* UPGRADING* \
+                    /usr/share/doc/php-8.4.11
+

+ The default configuration files for the fastCGI process + manager are installed only if they do not already exist on + the system. If this is the first installation, they should be + renamed, as the root user: +

+
if [ -f /etc/php-fpm.conf.default ]; then
+  mv -v /etc/php-fpm.conf{.default,} &&
+  mv -v /etc/php-fpm.d/www.conf{.default,}
+fi
+

+ The pre-built HTML documentation is packaged in two forms: a + tarball containing many individual files, useful for quick + loading into your browser, and one large individual file, + which is useful for using the search utility of your browser. + If you downloaded either, or both, of the documentation + files, issue the following commands as the root user to install them (note these + instructions assume English docs, modify the tarball names + below if necessary). +

+

+ For the “Single + HTML” file: +

+
install -v -m644 ../php_manual_en.html.gz \
+    /usr/share/doc/php-8.4.11 &&
+gunzip -v /usr/share/doc/php-8.4.11/php_manual_en.html.gz
+

+ For the “Many HTML + files” tarball: +

+
tar -xvf ../php_manual_en.tar.gz \
+    -C /usr/share/doc/php-8.4.11 --no-same-owner
+

+ The bundled pear is not installed because of a bug which + might pollute the filesystem with several hidden files and + directories. If pear is needed, execute the following + commands to install it: +

+
wget https://pear.php.net/go-pear.phar
+php ./go-pear.phar
+
+
+

+ Command Explanations +

+

+ --datadir=/usr/share/php: This + works around a bug in the build machinery, which installs + some data to a wrong location. +

+

+ --enable-fpm: This + parameter allows building the fastCGI Process Manager. +

+

+ --without-pear: This + switch disables installation of bundled pear software. +

+

+ --with-config-file-path=/etc: + This parameter makes PHP + look for the php.ini + configuration file in /etc. +

+

+ --with-zlib: This + parameter adds support for Zlib compression. +

+

+ --enable-bcmath: + Enables bc + style precision math functions. +

+

+ --with-bz2: Adds + support for Bzip2 + compression functions. +

+

+ --enable-calendar: + This parameter provides support for calendar conversion. +

+

+ --enable-dba=shared: + This parameter enables support for database (dbm-style) + abstraction layer functions. +

+

+ --enable-ftp: This + parameter enables FTP functions. +

+

+ --with-gettext: + Enables functions that use Gettext text translation. +

+

+ --enable-mbstring: + This parameter enables multibyte string support. +

+

+ --with-readline: This + parameter enables command line Readline support. +

+

+ --disable-libxml: This option + allows building PHP without libxml2 installed. +

+

+ --with-apxs2: Instead of building + the fastCGI process manager, it is possible to build an + apache module. This has some + performance penalty for heavy loaded servers, but may be + easier to set up. This switch is incompatible with the + --enable-fpm and + --with-fpm-... + switches. +

+

+ --with-mysqli=shared: This option + includes MySQLi support. +

+

+ --with-mysql-sock=/run/mysqld/mysqld.sock: + Location of the MySQL unix socket pointer. +

+

+ --with-pdo-mysql=shared: This + option includes PDO: MySQL support. +

+

+ --with-tidy=shared: This option + includes tidy library support. +

+
+
+

+ Configuring PHP +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/php.ini, /etc/pear.conf, /etc/php-fpm.conf, and /etc/php-fpm.d/www.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The file used as the default /etc/php.ini configuration file is + recommended by the PHP + development team. This file modifies the default behavior + of PHP. If no /etc/php.ini is used, all configuration + settings fall to the defaults. You should review the + comments in this file and ensure the changes are acceptable + in your particular environment. +

+

+ The fastCGI process manager uses the configuration file + /etc/php-fpm.conf. The + default file shipped with PHP includes all the /etc/php-fpm.d/*.conf in turn. There is a + shipped /etc/php-fpm.d/www.conf file, that + contains the parameters related to the interaction with the + Apache Web server. +

+

+ You may have noticed the following from the output of the + make install + command: +

+
You may want to add: /usr/lib/php to your php.ini include_path
+

+ If desired, add the entry using the following command as + the root user: +

+
sed -i 's@php/includes"@&\ninclude_path = ".:/usr/lib/php"@' \
+    /etc/php.ini
+

+ To enable fastCGI support in the Apache web server, two LoadModule + directives must be added to the httpd.conf file. They are commented out, + so just issue the following command as root user: +

+
sed -i -e '/proxy_module/s/^#//'      \
+       -e '/proxy_fcgi_module/s/^#//' \
+       /etc/httpd/httpd.conf
+

+ Those modules accept various ProxyPass directives. One + possibility is (as the root + user): +

+
echo \
+'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \
+/etc/httpd/httpd.conf
+

+ Additionally, it may be useful to add an entry for + index.php to the + DirectoryIndex directive of the httpd.conf file. Lastly, adding a line to + set up the .phps extension to + show highlighted PHP + source may be desirable: +

+
AddType application/x-httpd-php-source .phps
+

+ You'll need to restart the Apache web server after making any + modifications to the httpd.conf file. +

+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically start the php-fpm daemon when the + system is rebooted, install the /etc/rc.d/init.d/php bootscript from the + blfs-bootscripts-20250225 package + as the root user: +

+
make install-php
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + phar (symlink), phar.phar, php, + php-cgi, php-config, php-fpm, phpdbg, and phpize +
+
+ Installed Libraries: + dba.so and opcache.so in + /usr/lib/php/extensions/no-debug-non-zts-20230831 +
+
+ Installed Directories: + /etc/php-fpm.d, + /usr/{include,lib,share}/php, and + /usr/share/doc/php-8.4.11 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ php +

+
+

+ is a command line interface that enables you to + parse and execute PHP code +

+
+

+ pear +

+
+

+ is the PHP Extension and Application Repository + (PEAR) package manager. This isn't installed by + default +

+
+

+ php-fpm +

+
+

+ is the fastCGI process manager for PHP +

+
+

+ phpdbg +

+
+

+ is the interactive PHP debugger +

+
+
+
+
+
+
+
+

+ Python-3.13.7 +

+
+
+
+
+
+

+ Introduction to Python 3 +

+

+ The Python 3 package + contains the Python + development environment. This is useful for object-oriented + programming, writing scripts, prototyping large programs or + developing entire applications. +

+
+

+ Note +

+

+ Python 3 was installed in + LFS. The only reason to rebuild it here is if optional + modules are needed, or to upgrade this package. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ If upgrading to a new Python-3 minor version (for example, + from Python-3.11.x to Python-3.12.0), you will need to + reinstall any Python3 modules you have installed. You + should also reinstall packages that generate Python3 + modules including GLib-2.84.4 (with GObject Introspection), + libxml2-2.14.5, opencv-4.12.0, + FontForge-20230101, gnome-tweaks-46.1, Samba-4.22.4, and + Graphviz-13.1.2 (if swig is + installed). +

+

+ Before you upgrade, you can get a list of modules installed + with pip3 + list. The list may be incomplete as some + Python modules are not installed with pip3, for example the + cracklib module installed by + CrackLib-2.10.3. Use ls /usr/lib/python3.minor/site-packages + for a comprehensive list. +

+

+ The Python modules from LFS will also have to be + reinstalled: flit-core, + packaging, + wheel, + setuptools, + meson, + MarkupSafe, + and Jinja2. +

+
+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 256cdb3bbf45cdce7499e52ba6c36ea3 +

    +
  • +
  • +

    + Download size: 22 MB +

    +
  • +
  • +

    + Estimated disk space required: 379 MB (add 59 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 1.5 SBU (add 2.8 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ Additional Optional Download +

+
+ +
+

+ Python 3 Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ BlueZ-5.83, GDB-16.3 (required for some tests), + Valgrind-3.25.1, and libmpdec +

+
+ Optional (For Additional Modules) +
+

+ libnsl-2.0.1, Tk-8.6.16, and + Berkeley DB (deprecated) +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Python3 +

+
+
+

+ Installation of Python 3 +

+

+ Install Python 3 by running + the following commands: +

+
./configure --prefix=/usr          \
+            --enable-shared        \
+            --with-system-expat    \
+            --enable-optimizations \
+            --without-static-libpython &&
+make
+

+ 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: +

+
make test TESTOPTS="--timeout 120"
+

+ 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. +

+

+ Of over 44,000 tests, the following tests are known to fail: + test_idle, test_importlib, test_tkinter, and test_zipfile. +

+

+ Now, as the root user: +

+
make install
+

+ If upgrading and the documentation has been downloaded, + optionally install it as the root user: +

+
install -v -dm755 /usr/share/doc/python-3.13.7/html
+
+tar --strip-components=1  \
+    --no-same-owner       \
+    --no-same-permissions \
+    -C /usr/share/doc/python-3.13.7/html \
+    -xvf ../python-3.13.7-docs-html.tar.bz2
+
+
+

+ Command Explanations +

+

+ CXX="/usr/bin/g++" ./configure + ...: Avoid an annoying message during + configuration. +

+

+ --with-system-expat: + This switch enables linking against the system version of + Expat. +

+

+ --enable-optimizations: This + switch enables stable, but expensive, optimizations. +

+

+ --with-lto: This optional switch + enables thick Link Time Optimization. Unusually, it creates a + much larger /usr/lib/python3.13/config-3.13-<arch>-linux-gnu/libpython3.13.a + with a small increase in the time to compile Python. Run-time results do not appear + to show any benefit from doing this. +

+
+
+

+ Configuring Python 3 +

+

+ In order for python3 to find the + installed documentation, create the following version + independent symlink: +

+
ln -svfn python-3.13.7 /usr/share/doc/python-3
+

+ and add the following environment variable to the individual + user's or system's profile: +

+
export PYTHONDOCS=/usr/share/doc/python-3/html
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + idle3 (symlink) and idle3.13, pip3 + and pip3.13, pydoc3 (symlink) and pydoc3.13, python3 + (symlink) and python3.13, and python3-config (symlink) + and python3.13-config +
+
+ Installed Libraries: + libpython3.13.so and + libpython3.so +
+
+ Installed Directories: + /usr/include/python3.13, + /usr/lib/python3.13, and + /usr/share/doc/python-3.13.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ idle3 +

+
+

+ is a wrapper script that opens a Python aware GUI editor. For + this script to run, you must have installed + Tk before Python + so that the Tkinter Python module is built +

+
+

+ pydoc3 +

+
+

+ is the Python + documentation tool +

+
+

+ python3 +

+
+

+ is an interpreted, interactive, object-oriented + programming language +

+
+

+ python3.13 +

+
+

+ is a version-specific name for the python program +

+
+
+
+
+
+
+
+

+ Python-3.11.1 +

+
+
+
+
+
+

+ Introduction to Python 3.11 +

+

+ The Python 3.11 package + contains an older version of the Python development environment. This is + only needed for + building seamonkey-2.53.21 because its build + system has not been updated to support Python-3.13.7. +

+
+

+ Note +

+

+ Do NOT install this package if you are not installing + Seamonkey. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Python 3.11 Dependencies +

+
+ Recommended +
+ +
+
+

+ Installation of Python 3.11 +

+

+ Install Python 3.11 by + running the following commands: +

+
./configure --prefix=/opt/python3.11 \
+            --disable-shared         \
+            --with-system-expat      \
+            --without-static-libpython &&
+make
+

+ Since this package is only used in very limited situations, + tests are not recommended. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ CXX="/usr/bin/g++" ./configure + ...: Avoid an annoying message during + configuration. +

+

+ --prefix=/opt/python3.11: This + installs python 3.11 into /opt in order to avoid conflicts + with the system version of python, and allows for easy + removal/isolation once programs update to python3.12 or + later. +

+

+ --disable-shared: + This switch disables building shared libraries. Since all the + packages that need python-3.11 have built in modules and + don't directly link to python, it is safe to turn off shared + library support. +

+

+ --with-system-expat: + This switch enables linking against the system version of + Expat. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + python3.11 +
+
+ Installed Libraries: + libpython3.11.a +
+
+ Installed Directories: + /opt/python3.11/include/python3.11, + and /opt/python3.11/lib/python3.11, +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ python3.11 +

+
+

+ is a version-specific name for the python program +

+
+
+
+
+
+
+
+

+ Python + Modules +

+
+
+
+
+
+

+ Introduction to Python Modules +

+

+ The Python module packages + add useful objects to the Python language. Modules utilized by + packages throughout BLFS are listed here, along with their + dependencies. +

+
+

+ Note +

+

+ If you want to run tests, several of the following modules + depend on the sqlite3 core + python module that has not been built in LFS. It is + therefore recommended to rebuild Python after installing + the recommended dependency listed in Python-3.13.7. +

+
+
+

+ Important +

+

+ In BLFS, we normally build and install Python 3 modules + with pip3. + Please take care that the pip3 install commands in + the book should be run as root unless it's for a Python virtual + environment. Running pip3 + install as a non-root user may seem to work fine, but it + will cause the installed module to be inaccessible by other + users. +

+

+ pip3 install + will not reinstall an already installed module by default. + For using the pip3 + install command to upgrade a module (for + example, from meson-0.61.3 to meson-0.62.0), insert + --upgrade into the + command line. If it's really necessary to downgrade a + module or reinstall the same version for some reason, + insert --force-reinstall into the + command line. +

+

+ If you have installed make-ca-1.16.1 before and have + copied files from /etc/profile.d to a new system, you must + install make-ca first prior to installing any Python + modules from this page. +

+
+
+ +
+
+
+

+ Asciidoc-10.2.1 +

+
+
+
+
+

+ Introduction to Asciidoc + Module +

+
+
+
+

+ The Asciidoc 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. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Asciidoc Dependencies +
+
+ Optional (runtime) +
+

+ docbook-xsl-nons-1.79.2, + fop-2.11, + libxslt-1.1.43, Lynx-2.9.2, dblatex, + and W3m +

+
+
+
+
+
+

+ Installation of Asciidoc +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user asciidoc
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + a2x and asciidoc +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/asciidoc + and + /usr/lib/python3.13/site-packages/asciidoc-10.2.1.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + +
+

+ a2x +

+
+

+ is a toolchain manager for AsciiDoc (converts + Asciidoc text files to other file formats) +

+
+

+ asciidoc +

+
+

+ converts an AsciiDoc text file to HTML or DocBook +

+
+
+
+
+
+

+ build-1.3.0 +

+
+
+
+
+

+ Introduction to build +

+
+
+
+

+ build is a Python build + frontend implementing the PEP-517 resolution. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ build Dependencies +
+
+ Required +
+

+ pyproject_hooks-1.2.0 +

+
+ Optional (for tests) +
+

+ pytest-8.4.1, Python-3.13.7 (rebuilt + with SQLite-3.50.4), filelock, + pytest-cov, + pytest-mock, + pytest-rerunfailures, + pytest-xdist, + and uv +

+
+
+
+
+
+

+ Installation of build +

+
+
+
+

+ Build the package with: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the package run the following as the + root user: +

+
pip3 install --no-index --find-links dist --no-user build
+

+ Assuming pytest-8.4.1 is installed and Python-3.13.7 has been rebuilt with + SQLite-3.50.4, but the other optional + dependencies are not, the installation can be tested with + the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install --group test                      &&
+python3 -m pytest
+deactivate
+

+ One test in test_projectbuilder.py is known to fail + due to a conflict with the system copy of flit_core. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + pyproject-build +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/build and + /usr/lib/python3.13/site-packages/build-1.3.0.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ pyproject-build +

+
+

+ is a simple Python build frontend +

+
+
+
+
+
+

+ cachecontrol-0.14.3 +

+
+
+
+
+

+ Introduction to cachecontrol + Module +

+
+
+
+

+ CacheControl is a port of + the caching algorithms in httplib2 for use with requests + session object. It was written because httplib2's better + support for caching is often mitigated by its lack of + thread safety. The same is true of requests in terms of + caching. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ CacheControl Dependencies +
+
+ Required +
+

+ msgpack-1.1.1 and requests-2.32.5 +

+
+
+
+
+
+

+ Installation of CacheControl +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user cachecontrol
+

+ This module does not have a working test suite. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + doesitcache +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/CacheControl-0.14.3.dist-info + and + /usr/lib/python3.13/site-packages/cachecontrol +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ doesitcache +

+
+

+ is an undocumented command line script. +

+
+
+
+
+
+

+ CSSSelect-1.3.0 +

+
+
+
+
+

+ Introduction to CSSSelect + Module +

+
+
+
+

+ CSSSelect provides CSS + selectors for Python. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ CSSSelect Dependencies +
+
+ Required +
+

+ setuptools_scm-8.3.1 +

+
+ Optional (for testing) +
+

+ lxml-6.0.0 and pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of CSSSelect +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user cssselect
+

+ To test the installation issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/cssselect +
+
+
+
+
+
+

+ Cython-3.1.3 +

+
+
+
+
+

+ Introduction to Cython + Module +

+
+
+
+

+ The Cython package + provides a compiler for writing C extensions for the Python + language. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Cython +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user Cython
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + cygdb, cython, and + cythonize +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/Cython, + /usr/lib/python3.13/site-packages/Cython-3.1.3.dist-info, + and /usr/lib/python3.13/site-packages/pyximport +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + + + + + +
+

+ cygdb +

+
+

+ is the Cython debugger +

+
+

+ cython +

+
+

+ is a compiler for code written in the Cython + language. It outputs a C/C++ program which can be + compiled with a C/C++ compiler +

+
+

+ cythonize +

+
+

+ is a compiler for code written in the Cython + language. It outputs an extension module which is + directly importable from Python +

+
+
+
+
+
+

+ dbusmock-0.36.0 +

+
+
+
+
+

+ Introduction to dbusmock +

+
+
+
+

+ dbusmock is a Python + library useful for writing tests for software which talks + to D-Bus services. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ dbusmock Dependencies +
+
+ Required +
+

+ D-Bus Python-1.4.0 +

+
+ Optional +
+

+ pytest-8.4.1 (required to run the test + suite), PyGObject-3.52.3 (required to run + the test suite), BlueZ-5.83 (optional for the test suite), + and UPower-1.90.9 (optional for the test + suite; if not installed one test will fail) +

+
+
+
+
+
+

+ Installation of dbusmock +

+
+
+
+

+ Build the package with: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the package run the following as the + root user: +

+
pip3 install --no-index --find-links dist --no-user python-dbusmock
+

+ To test the results, issue: LC_ALL=C pytest +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/dbusmock + and + /usr/lib/python3.13/site-packages/python_dbusmock-0.36.0.dist-info +
+
+
+
+
+
+

+ D-Bus Python-1.4.0 +

+
+
+
+
+

+ Introduction to D-Bus Python + Module +

+
+
+
+

+ D-Bus Python provides + Python bindings to the + D-Bus API interface. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ D-Bus Python Dependencies +
+
+ Required +
+

+ dbus-1.16.2, GLib-2.84.4, meson_python-0.18.0, and + patchelf-0.18.0 +

+
+ Optional +
+

+ PyGObject-3.52.3 (for tests) +

+
+
+
+
+
+

+ Installation of D-Bus Python +

+
+
+
+

+ Build the D-Bus Python module by running the following + command: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now install the module as the root user: +

+
pip3 install --no-index --find-links dist --no-user dbus-python
+

+ To test the result, issue: DBUS_TOP_SRCDIR=$PWD PYTHON=python3 + dbus-run-session test/run-test.sh. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/dbus and + /usr/lib/python3.13/site-packages/dbus_python-1.4.0.egg-info +
+
+
+
+
+
+

+ docutils-0.21.2 +

+
+
+
+
+

+ Introduction to docutils +

+
+
+
+

+ docutils is a set of + Python modules and + programs for processing plaintext docs into formats such as + HTML, XML, or LaTeX. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of docutils +

+
+
+
+

+ First, remove some files installed in a previous version + that are no longer valid. As the root user: +

+
for f in /usr/bin/rst*.py; do
+  rm -fv /usr/bin/$(basename $f .py)
+done
+

+ To build the Python 3 + applications, run the following command: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the Python + applications run the following as the root user: +

+
pip3 install --no-index --find-links dist --no-user docutils
+

+ To test the installation, issue: test/alltests.py. Two + tests in the test_parser + suite are known to fail. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + docutils, rst2html4, rst2html5, + rst2html, rst2latex, rst2man, rst2odt_prepstyles, + rst2odt, rst2pseudoxml, rst2s5, rst2xetex, rst2xml, and + rstpep2html +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/docutils{,-0.21.2.dist-info} +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ docutils +

+
+

+ converts documents into various formats +

+
+

+ rst2html +

+
+

+ generates (X)HTML documents from standalone + reStructuredText sources +

+
+

+ rst2html4 +

+
+

+ generates (X)HTML documents from standalone + reStructuredText sources +

+
+

+ rst2html5 +

+
+

+ generates HTML5 documents from standalone + reStructuredText sources +

+
+

+ rst2latex +

+
+

+ generates LaTeX documents from standalone + reStructuredText sources +

+
+

+ rst2man +

+
+

+ generates plain unix manual documents from + standalone reStructuredText sources +

+
+

+ rst2odt +

+
+

+ generates OpenDocument/OpenOffice/ODF documents + from standalone reStructuredText sources +

+
+

+ rst2odt_prepstyles +

+
+

+ Fix a word-processor-generated styles.odt for + odtwriter use +

+
+

+ rst2pseudoxml +

+
+

+ generates pseudo-XML from standalone + reStructuredText sources (for testing purposes) +

+
+

+ rst2s5 +

+
+

+ generates S5 (X)HTML slideshow from standalone + reStructuredText sources +

+
+

+ rst2xetex +

+
+

+ generates LaTeX documents from standalone + reStructuredText sources for compilation with the + Unicode-aware TeX variants XeLaTeX or LuaLaTeX +

+
+

+ rst2xml +

+
+

+ generates Docutils-native XML from standalone + reStructuredText sources +

+
+

+ rstpep2html +

+
+

+ generates (X)HTML from reStructuredText-format + PEP files +

+
+
+
+
+
+

+ Doxypypy-0.8.8.7 +

+
+
+
+
+

+ Introduction to Doxypypy + Module +

+
+
+
+

+ The Doxypypy package is a + doxygen filter for python. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Doxypypy Dependencies +
+
+ Required +
+

+ chardet-5.2.0 and Doxygen-1.14.0 (at + run time) +

+
+
+
+
+
+

+ Installation of Doxypypy +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user doxypypy
+

+ This package does not come with a working test suite. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + doxypypy +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/doxypypy + and + /usr/lib/python3.13/site-packages/doxypypy-0.8.8.7.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ doxypypy +

+
+

+ filters Python code for use with Doxygen, using a + syntax-aware approach. +

+
+
+
+
+
+

+ Doxyqml-0.5.3 +

+
+
+
+
+

+ Introduction to Doxyqml + Module +

+
+
+
+

+ The Doxyqml package allows + using Doxygen to document QML classes. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Doxyqml Dependencies +
+
+ Required (Run Time) +
+

+ Doxygen-1.14.0 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Doxyqml +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user doxyqml
+

+ To test the installation, issue: +

+
python3 tests/functional/tests.py &&
+python3 tests/unit/tests.py
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + doxyqml +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/doxyqml and + /usr/lib/python3.13/site-packages/doxyqml-0.5.3.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ doxyqml +

+
+

+ is a Doxygen input filter for QML files. +

+
+
+
+
+
+

+ Gi-DocGen-2025.4 +

+
+
+
+
+

+ Introduction to Gi-DocGen + Module +

+
+
+
+

+ Gi-DocGen is a document + generator for GObject-based libraries. GObject is the base + type system of the GNOME project. Gi-DocGen reuses the + introspection data generated by GObject-based libraries to + generate the API reference of these libraries, as well as + other ancillary documentation. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Gi-DocGen Dependencies +
+
+ Required +
+

+ Markdown-3.8.2, Pygments-2.19.2, + and typogrify-2.1.0 +

+
+ Optional +
+

+ Graphviz-13.1.2 (runtime, for + visualizing class hierarchy graphs) and pytest-8.4.1 (for + testing) +

+
+
+
+
+
+

+ Installation of gi-docgen +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user gi-docgen
+

+ To test the installation, issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + gi-docgen +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/gidocgen + and + /usr/lib/python3.13/site-packages/gi_docgen-2025.4.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gi-docgen +

+
+

+ manages documentation for libgobject based + libraries. +

+
+
+
+
+
+

+ html5lib-1.1 +

+
+
+
+
+

+ Introduction to html5lib + Module +

+
+
+
+

+ html5lib provides a + pure-python library for parsing HTML. It is designed to + conform to the WHATWG HTML specification. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ html5lib Dependencies +
+
+ Required +
+

+ six-1.17.0 and webencodings-0.5.1 +

+
+
+
+
+
+

+ Installation of html5lib +

+
+
+
+

+ To build the Python 3 + module, run: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the module, issue the following command as the + root user: +

+
pip3 install --no-index --find-links dist --no-user html5lib
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/html5lib + and + /usr/lib/python3.13/site-packages/html5lib-1.1.dist-info +
+
+
+
+
+
+

+ lxml-6.0.0 +

+
+
+
+
+

+ Introduction to lxml Module +

+
+
+
+

+ lxml provides Python bindings for libxslt-1.1.43 + and libxml2-2.14.5. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ lxml Dependencies +
+
+ Required +
+

+ libxslt-1.1.43 +

+
+
+
+
+
+

+ Installation of lxml +

+
+
+
+

+ To build the Python 3 + module, run: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the module, issue the following command as the + root user: +

+
pip3 install --no-index --find-links dist --no-user lxml
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/lxml and + /usr/lib/python3.13/site-packages/lxml-6.0.0.dist-info +
+
+
+
+
+
+

+ Mako-1.3.10 +

+
+
+
+
+

+ Introduction to Mako Module +

+
+
+
+

+ Mako is a Python module that implements + hyperfast and lightweight templating for the Python platform. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+

+ Note +

+

+ The tarball name has changed from Mako to mako, but still + installs the module as Mako. +

+
+
+ Mako Dependencies +
+
+ Optional (for Testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Mako +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Install the module as the root user: +

+
pip3 install --no-index --find-links dist --no-user Mako
+

+ To test the installation, issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + mako-render +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/mako and + /usr/lib/python3.13/site-packages/Mako-1.3.10.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ mako-render +

+
+

+ renders a template +

+
+
+
+
+
+

+ NumPy-2.3.2 +

+
+
+
+
+

+ Introduction to NumPy Module +

+
+
+
+

+ NumPy is the fundamental + package for scientific computing with Python. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ NumPy Dependencies +
+
+ Required +
+

+ cython-3.1.3, meson_python-0.18.0, and + pyproject-metadata-0.9.1 +

+
+ Optional +
+

+ fortran from GCC-15.2.0, lapack and cblas, and + openblas +

+
+ Optional (for testing) +
+

+ attrs-25.3.0, pytest-8.4.1, pytz-2025.2, + and hypothesis +

+
+
+
+
+
+

+ Installation of NumPy +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir -C setup-args=-Dallow-noblas=true $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user numpy
+

+ The installation can be tested with the following commands: +

+
mkdir -p test                                  &&
+cd       test                                  &&
+python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install hypothesis                        &&
+python3 -c "import numpy, sys; sys.exit(numpy.test() is False)"
+deactivate
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + f2py, f2py3 and f2py3.13 (3 + copies of the same script) +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/numpy +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ f2py +

+
+

+ is the Fortran to Python interface generator + utility. +

+
+
+
+
+
+

+ ply-3.11 +

+
+
+
+
+

+ Introduction to ply Module +

+
+
+
+

+ The ply package is a 100% + Python implementation of the common parsing tools 'lex' and + 'yacc'. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of ply +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user ply
+

+ This package does not come with a working test suite. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/ply and + /usr/lib/python3.13/site-packages/ply-3.11.dist-info +
+
+
+
+
+
+

+ psutil-7.0.0 +

+
+
+
+
+

+ Introduction to psutil + Module +

+
+
+
+

+ psutil (process and system utilities) is a cross-platform + library for retrieving information on running processes and + system utilization (CPU, memory, disks, network, sensors) + in Python. It is useful mainly for system monitoring, + profiling and limiting process resources and management of + running processes. It implements many functionalities + offered by classic UNIX command line tools such as ps, top, + iotop, lsof, netstat, ifconfig, free and others. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Packaging Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1, requests-2.32.5, + and pypinfo +

+
+
+
+
+
+

+ Installation of psutil +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user psutil
+

+ To test the results, issue: make test. +

+

+ Two tests, TestSystemAPIs::test_disk_usage and + TestNetAPIs::test_net_if_addrs, are known + to fail. One test named TestAvailProcessAPIs::test_io_counters is + known to fail if the kernel does not have CONFIG_TASK_IO_ACCOUNTING enabled. + TestExampleScripts.test_who is + known to fail if the login manager does not write into + /run/utmp (note that due to + the potential year 2037 problem, Shadow has already stopped + writing into it). TestInternalScripts.test_import_all is + known to fail if requests-2.32.5 is not installed. + TestInternalScripts::test_import_all is + known to fail if the external module pyinfo is not + installed. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/psutil-7.0.0.dist-info +
+
+
+
+
+
+

+ Py3c-1.4 +

+
+
+
+
+

+ Introduction to Py3c +

+
+
+
+

+ Py3c helps you port C + extensions to Python 3. It provides a detailed guide, and a + set of macros to make porting easy and reduce boilerplate. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Py3c +

+
+
+
+

+ The Py3c package is a + headers-only package and because of that, no configuration + and compilation is required. +

+

+ To test the package, issue: +

+
make test-python3 &&
+make test-python3-cpp
+

+ To install the Python 3 + module, run the following command as the root user: +

+
make prefix=/usr install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/include/py3c +
+
+
+
+
+
+

+ PyAtSpi2-2.46.1 +

+
+
+
+
+

+ Introduction to PyAtSpi2 +

+
+
+
+

+ The PyAtSpi2 package + contains Python bindings + for the core components of the GNOME Accessibility. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ PyAtSpi2 Dependencies +
+
+ Required +
+

+ PyGObject-3.52.3 +

+
+ Recommended +
+ +
+
+
+
+
+

+ Installation of PyAtSpi2 +

+
+
+
+

+ To build PyAtSpi2 as a + Python 3 module, run the + following commands: +

+
./configure --prefix=/usr --with-python=/usr/bin/python3
+

+ This package does not come with a test suite. +

+

+ To install the Python 3 + module, run the following command as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pyatspi +
+
+
+
+
+
+

+ PyCairo-1.28.0 +

+
+
+
+
+

+ Introduction to PyCairo + Module +

+
+
+
+

+ PyCairo provides Python + bindings to Cairo. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ PyCairo Dependencies +
+
+ Required +
+

+ Cairo-1.18.4 +

+
+ Optional +
+

+ pytest-8.4.1 (for tests) +

+
+
+
+
+
+

+ Installation of PyCairo +

+
+
+
+

+ Install PyCairo by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To run the tests, this package requires the optional pytest + module. If it is installed, run the tests by running + ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Program: + None +
+
+ Installed Library: + None +
+
+ Installed + Directories: /usr/include/pycairo, + /usr/lib/python3.13/site-packages/cairo, and + /usr/lib/python3.13/site-packages/pycairo-1.28.0.egg-info +
+
+
+
+
+
+

+ pygdbmi-0.11.0.0 +

+
+
+
+
+

+ Introduction to pygdbmi + Module +

+
+
+
+

+ GDB/MI is a line based machine oriented text interface to + GDB and is activated by specifying using the --interpreter + command line option (see Mode Options). It is specifically + intended to support the development of systems which use + the debugger as just one small component of a larger + system. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of pygdbmi +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pygdbmi
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pygdbmi-0.11.0.0.dist-info +
+
+
+
+
+
+

+ Pygments-2.19.2 +

+
+
+
+
+

+ Introduction to Pygments + Module +

+
+
+
+

+ Pygments is a general + syntax highlighter written in Python, for more than 300 languages. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+

+ Pygments Dependencies +

+
+ Required +
+

+ hatchling-1.27.0 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 and wcag-contrast-ratio +

+
+
+
+
+
+

+ Installation of Pygments +

+
+
+
+

+ Build the Python 3 module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the package run the following as the + root user: +

+
pip3 install --no-index --find-links dist --no-user Pygments
+

+ To test the installation, make sure pytest-8.4.1 is + installed and run: +

+
python3 -m venv --system-site-packages testenv &&
+testenv/bin/pip3 install wcag-contrast-ratio   &&
+testenv/bin/python -m pytest
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + pygmentize +
+
+ Installed Library: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pygments + and + /usr/lib/python3.13/site-packages/Pygments-2.19.2.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pygmentize +

+
+

+ highlights an input file and writes the result to + an output file +

+
+
+
+
+
+

+ PyGObject-3.52.3 +

+
+
+
+
+

+ Introduction to PyGObject3 + Module +

+
+
+
+

+ PyGObject3 provides + Python bindings to the + GObject class from GLib. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ PyGObject3 Dependencies +
+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+ Recommended +
+ +
+ Optional (for the tests) +
+

+ GTK-4.18.6, pep8, pyflakes, and + pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of PyGObject3 +

+
+
+
+

+ First, remove two faulty tests: +

+
mv -v tests/test_gdbus.py{,.nouse}         &&
+mv -v tests/test_overrides_gtk.py{,.nouse}
+

+ Install pygobject3 by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. An already + active graphical session with a bus address is necessary to + run the tests. Another round of tests may report ERROR if + GTK-4.18.6 is not installed. +

+

+ Now, as the root user: +

+
ninja install
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ --buildtype=release: Specify + a buildtype suitable for stable releases of the package, as + the default may produce unoptimized binaries. +

+

+ -D pycairo=disabled: use this + switch if you do not have PyCairo-1.28.0 installed. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + /usr/lib/python3.13/site-packages/gi/_gi{,_cairo}.cpython-313-<arch>-linux-gnu.so +
+
+ Installed + Directories: /usr/include/pygobject-3.0 and + /usr/lib/python3.13/site-packages/{gi,pygtkcompat} +
+
+
+
+
+
+

+ pyparsing-3.2.3 +

+
+
+
+
+

+ Introduction to pyparsing + Module +

+
+
+
+

+ The pyparsing module is an + alternative approach to creating and executing simple + grammars, vs. the traditional lex/yacc approach, or the use + of regular expressions. It provides a library of classes + that client code uses to construct the grammar directly in + Python code. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ pyparsing Dependencies +
+
+ Optional +
+

+ railroad-diagrams + (also needed for tests) +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of pyparsing +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pyparsing
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependency is not, the installation can be tested + with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install railroad-diagrams matplotlib      &&
+python3 /usr/bin/pytest
+deactivate
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pyparsing + and + /usr/lib/python3.13/site-packages/pyparsing-3.2.3.dist-info +
+
+
+
+
+
+

+ pySerial-3.5 +

+
+
+
+
+

+ Introduction to pySerial + Module +

+
+
+
+

+ The pySerial module + encapsulates access to the serial port. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ pySerial Dependencies +
+
+ Required +
+

+ setuptools_scm-8.3.1 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of pySerial +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pyserial
+

+ To test the installation issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + pyserial-miniterm and + pyserial-ports +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pyserial-3.5.dist-info + and /usr/lib/python3.13/site-packages/serial +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + +
+

+ pyserial-miniterm +

+
+

+ is a console application that provides a small + terminal application. It may inherit terminal + features from the terminal in which it is run. +

+
+

+ pyserial-ports +

+
+

+ lists available ports. +

+
+
+
+
+
+

+ Pytest-8.4.1 +

+
+
+
+
+

+ Introduction to Pytest + Module +

+
+
+
+

+ The Pytest framework makes + it easy to write small, readable tests, and can scale to + support complex functional testing for applications and + libraries. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Pytest Dependencies +
+
+ Required +
+

+ iniconfig-2.1.0 and pluggy-1.6.0 +

+
+ Recommended +
+ +
+ Optional (for testing) +
+

+ attrs-25.3.0, Pygments-2.19.2, + requests-2.32.5, argcomplete, + hypothesis, + mock, and xmlschema +

+
+
+
+
+
+

+ Installation of Pytest +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pytest
+

+ The installation can be tested with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install pytest[dev] xmlschema hypothesis  &&
+python3 /usr/bin/pytest
+deactivate
+

+ One test, testing/acceptance_test.py, is known to + fail. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + pytest and py.test (different + files but with same content) +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/_pytest, + /usr/lib/python3.13/site-packages/pytest, and + /usr/lib/python3.13/site-packages/pytest-8.4.1.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ pytest +

+
+

+ sets up, manages, and/or runs tests in python + module source directories +

+
+
+
+
+
+

+ PyXDG-0.28 +

+
+
+
+
+

+ Introduction to PyXDG Module +

+
+
+
+

+ PyXDG is a Python library to access + freedesktop.org standards. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of PyXDG +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Install the module as the root user: +

+
pip3 install --no-index --find-links dist --no-user pyxdg
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Directory: + /usr/lib/python3.13/site-packages/xdg and + /usr/lib/python3.13/site-packages/pyxdg-0.28.dist-info +
+
+
+
+
+
+

+ PyYAML-6.0.2 +

+
+
+
+
+

+ Introduction to PyYAML + Module +

+
+
+
+

+ PyYAML is a Python module that implements the next + generation YAML parser and emitter. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ PyYAML Dependencies +
+
+ Required +
+

+ cython-3.1.3 and libyaml-0.2.5 +

+
+ Optional +
+

+ pytest-8.4.1 (for testing) +

+
+
+
+
+
+

+ Installation of PyYAML +

+
+
+
+

+ Build PyYAML with the following command: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, install the module as the root user: +

+
pip3 install --no-index --find-links dist --no-user PyYAML
+

+ To test the results, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/PyYAML-0.2.5.dist-info +
+
+
+
+
+
+

+ Recommonmark-0.7.1 +

+
+
+
+
+

+ Introduction to Recommonmark + Module +

+
+
+
+

+ Recommonmark is a + docutils-compatibility bridge to CommonMark. It allows + writing CommonMark inside of Docutils and Sphinx projects. + Recommonmark is now + deprecated in favor of MyST-Parser. + Unfortunately, libinput-1.29.0 depends on this + module. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Recommonmark Dependencies +
+
+ Required +
+

+ commonmark-0.9.1 and sphinx-8.2.3 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Recommonmark +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user recommonmark
+

+ Recommonmark is now + deprecated in favor of MyST-Parser. + For this reason, a lot of tests have to be disabled because + they do not pass with recent versions of Sphinx. The installation can be + partially tested with the following command: +

+
pytest -k 'not (test_integration or test_code or test_headings or test_image or test_links or test_lists)'
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + cm2html, cm2latex, cm2man, + cm2pseudoxml, cm2xetex, and cm2xml +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/recommonmark + and + /usr/lib/python3.13/site-packages/recommonmark-0.7.1.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cm2html +

+
+

+ generates a html document from markdown sources +

+
+

+ cm2latex +

+
+

+ generates a latex document from markdown sources +

+
+

+ cm2man +

+
+

+ generates a manpage from markdown sources +

+
+

+ cm2pseudoxml +

+
+

+ generates a pseudo-XML document from markdown + sources +

+
+

+ cm2xetex +

+
+

+ generates a xetex document from markdown sources +

+
+

+ cm2xml +

+
+

+ generates an XML document from markdown sources +

+
+
+
+
+
+

+ Requests-2.32.5 +

+
+
+
+
+

+ Introduction to Requests + Module +

+
+
+
+

+ The Requests package is an + elegant and simple HTTP library for Python, built for human + beings. It allows sending HTTP/1.1 requests extremely + easily. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Additional Download +
+ +
+ Requests Dependencies +
+
+ Required +
+

+ charset-normalizer-3.4.3, + idna-3.10, and urllib3-2.5.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ PySocks (also + needed for testing) +

+
+ Optional (for testing) +
+

+ pytest-8.4.1, Flask<2, httpbin, MarkupSafe<2.1, + pytest-mock, + pytest-httpbin, + sphinx<5, + trustme, and + Werkzeug<2 +

+
+
+
+
+
+

+ Installation of Requests +

+
+
+
+

+ First apply a patch so that the same environment variable + already used to point to system certificates in + Python3 following the + installation of make-ca + can also be used by this module: +

+
patch -Np1 -i ../requests-use_system_certs-1.patch
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user requests
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependencies are not, the installation can be + tested with the following commands: +

+
+

+ Note +

+

+ Some of the setup instructions below may indicate an + error due to dependent module versions, but these errors + do not affect the test results. +

+
+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install --force-reinstall sphinx\<5       &&
+pip3 install pytest-mock    \
+             werkzeug\<2    \
+             flask\<2       \
+             pytest-httpbin \
+             pysocks        \
+             trustme                           &&
+pip3 install --force-reinstall Markupsafe\<2.1 &&
+python3 /usr/bin/pytest tests
+deactivate
+
+

+ Note +

+

+ See make-ca-1.16.1 for how to set the + environment variable, and for how local copies of the + Certifi and Requests modules installed in a virtual + environment will + override the system certificates. +

+
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/requests + and + /usr/lib/python3.13/site-packages/requests-2.32.5.dist-info +
+
+
+
+
+
+

+ Scour-0.38.2 +

+
+
+
+
+

+ Introduction to Scour Module +

+
+
+
+

+ Scour is an SVG (Scalable + Vector Graphics) optimizer/cleaner that reduces their size + by optimizing structure and removing unnecessary data. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Scour Dependencies +
+
+ Required +
+

+ six-1.17.0 +

+
+ Optional (required for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of scour +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ To install the module, run the following command as the + root user: +

+
pip3 install --no-index --find-links dist --no-user scour
+

+ To test the results, issue: pytest +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + scour +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/scour and + /usr/lib/python3.13/site-packages/scour-0.38.2.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ scour +

+
+

+ is a program to optimize and clean SVG files +

+
+
+
+
+
+

+ sentry-sdk-2.35.0 +

+
+
+
+
+

+ Introduction to sentry-sdk + Module +

+
+
+
+

+ The sentry-sdk module is + the official Python SDK for Sentry.io. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ sentry-sdk Dependencies +
+
+ Required +
+

+ certifi-2025.8.3 and urllib3-2.5.0 +

+
+
+
+
+
+

+ Installation of sentry-sdk +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sentry-sdk
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sentry_sdk-2.35.0.dist-info + and /usr/lib/python3.13/site-packages/sentry_sdk +
+
+
+
+
+
+

+ six-1.17.0 +

+
+
+
+
+

+ Introduction to Six Module +

+
+
+
+

+ Six is a Python 2 to 3 compatibility library. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Six +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user six
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/six-1.17.0.dist-info +
+
+
+
+
+
+

+ Sphinx-8.2.3 +

+
+
+
+
+

+ Introduction to Sphinx + Module +

+
+
+
+

+ The Sphinx package is a + set of tools for translating some structured text formats + into pretty documentation in various formats. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinx Dependencies +
+
+ Required +
+

+ alabaster-1.0.0, babel-2.17.0, + docutils-0.21.2, imagesize-1.4.1, Pygments-2.19.2, requests-2.32.5, roman-numerals-py-3.1.0, + snowballstemmer-3.0.1, + sphinxcontrib-applehelp-2.0.0, + sphinxcontrib-devhelp-2.0.0, + sphinxcontrib-htmlhelp-2.1.0, + sphinxcontrib-jsmath-1.0.1, + sphinxcontrib-qthelp-2.0.0, + and sphinxcontrib-serializinghtml-2.0.0 +

+
+ Optional (for tests) +
+

+ cython-3.1.3, html5lib-1.1, + pytest-8.4.1, texlive-20250308, defusedxml, and + typing_extensions +

+
+
+
+
+
+

+ Installation of Sphinx +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinx
+

+ Assuming cython-3.1.3 and pytest-8.4.1 are + installed, but the other optional dependencies are not, the + installation can be tested with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install sphinx[test]                      &&
+python3 -m pytest
+deactivate
+

+ One test, test_ext_math.py::test_imgmath_numfig_html, is + known to fail. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + sphinx-apidoc, sphinx-autogen, + sphinx-build, and sphinx-quickstart +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinx and + /usr/lib/python3.13/site-packages/sphinx-8.2.3.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ sphinx-apidoc +

+
+

+ creates an reST file from python modules and + packages +

+
+

+ sphinx-autogen +

+
+

+ generates ReStructuredText from special + directives contained in given input files +

+
+

+ sphinx-build +

+
+

+ generates documentation in various formats from + ReStructuredText source files +

+
+

+ sphinx-quickstart +

+
+

+ generates required files for a sphinx project +

+
+
+
+
+
+

+ Sphinx_rtd_theme-3.0.2 +

+
+
+
+
+

+ Introduction to + Sphinx_rtd_theme Module +

+
+
+
+

+ The sphinx_rtd_theme + module is a Sphinx theme designed to provide a great reader + experience for documentation users on both desktop and + mobile devices. This theme is used primarily on Read the + Docs but can work with any Sphinx project. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinx_rtd_theme Dependencies +
+
+ Required +
+

+ sphinx-8.2.3 and sphinxcontrib-jquery-4.1 +

+
+ Optional (for tests) +
+

+ pytest-8.4.1 and readthedocs-sphinx-ext +

+
+
+
+
+
+

+ Installation of + Sphinx_rtd_theme +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinx_rtd_theme
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependency is not, the installation can be tested + with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install readthedocs-sphinx-ext            &&
+python3 /usr/bin/pytest
+deactivate
+

+ Several tests return warnings because they use a deprecated + sphinx API. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinx_rtd_theme + and + /usr/lib/python3.13/site-packages/sphinx_rtd_theme-3.0.2.dist-info +
+
+
+
+
+
+
+
+
+

+ Python Dependencies +

+
+
+
+
+
+

+ Introduction to Python Dependencies +

+

+ Python modules listed in Python Modules + have dependencies that are not referenced by other packages + in BLFS. These dependencies are listed here. They will not + get updated on regular basis, unless a more recent version is + needed. +

+
+

+ Important +

+

+ In BLFS, we normally build and install Python 3 modules + with pip3. + Please take care that the pip3 install commands in + the book should be run as root unless it's for a Python virtual + environment. Running pip3 + install as a non-root user may seem to work fine, but it + will cause the installed module to be inaccessible by other + users. +

+

+ pip3 install + will not reinstall an already installed module by default. + For using the pip3 + install command to upgrade a module (for + example, from meson-0.61.3 to meson-0.62.0), insert + --upgrade into the + command line. If it's really necessary to downgrade a + module or reinstall the same version for some reason, + insert --force-reinstall into the + command line. +

+
+ +
+
+

+ Alabaster-1.0.0 +

+
+
+
+
+

+ Introduction to Alabaster + Module +

+
+
+
+

+ The Alabaster package is a + theme for the sphinx + documentation system. Although developed separately, it is + the default theme for sphinx. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of Alabaster +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user alabaster
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/alabaster + and + /usr/lib/python3.13/site-packages/alabaster-1.0.0.dist-info +
+
+
+
+
+
+

+ Attrs-25.3.0 +

+
+
+
+
+

+ Introduction to Attrs Module +

+
+
+
+

+ The Attrs package is a + python module that allows for writing attributes without + extra boilerplate. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Attrs Dependencies +
+
+ Required +
+

+ hatch-fancy-pypi-readme-25.1.0 + and hatch_vcs-0.5.0 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1, cloudpickle, + hypothesis, + Pympler, mypy, + pytest-mypy-plugins, + pytest-xdist[psutil], + and zope.interface +

+
+
+
+
+
+

+ Installation of Attrs +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user attrs
+

+ To test the installation, run: +

+
python3 -m venv --system-site-packages testenv           &&
+testenv/bin/pip3 install 'attrs[tests]'                  &&
+PATH=$PWD/testenv/bin:$PATH testenv/bin/python -m pytest
+

+ Three tests related to Mypy are known to fail. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/attr, + /usr/lib/python3.13/site-packages/attrs, and + /usr/lib/python3.13/site-packages/attrs-25.3.0.dist-info +
+
+
+
+
+
+

+ babel-2.17.0 +

+
+
+
+
+

+ Introduction to Babel Module +

+
+
+
+

+ The Babel package is an + integrated collection of utilities that assist in + internationalizing and localizing Python applications, with + an emphasis on web-based applications. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Babel Dependencies +
+
+ Required +
+

+ pytz-2025.2 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1, Python-3.13.7 (with + the sqlite module), freezegun, and + pytest-cov +

+
+
+
+
+
+

+ Installation of Babel +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user Babel
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependencies are not, the installation can be + tested with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install pytest-cov freezegun              &&
+python3 /usr/bin/pytest
+deactivate
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + pybabel +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/babel and + /usr/lib/python3.13/site-packages/Babel-2.17.0.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ pybabel +

+
+

+ is a command-line interface for working with + message catalogs +

+
+
+
+
+
+

+ certifi-2025.8.3 +

+
+
+
+
+

+ Introduction to Certifi + Module +

+
+
+
+

+ The certifi module + provides Mozilla’s carefully curated collection of Root + Certificates for validating the trustworthiness of SSL + certificates while verifying the identity of TLS hosts. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of certifi +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user certifi
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/certifi and + /usr/lib/python3.13/site-packages/certifi-2025.8.3.dist-info +
+
+
+
+
+
+

+ Chardet-5.2.0 +

+
+
+
+
+

+ Introduction to chardet + Module +

+
+
+
+

+ Chardet is a universal + character encoding detector. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Chardet Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Chardet +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user chardet
+

+ To test the installation issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + chardetect +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/chardet and + /usr/lib/python3.13/site-packages/chardet-5.2.0.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ chardetect +

+
+

+ is a Universal Character Encoding Detector +

+
+
+
+
+
+

+ Charset-normalizer-3.4.3 +

+
+
+
+
+

+ Introduction to + charset-normalizer Module +

+
+
+
+

+ The charset-normalizer + library helps with reading text from an unknown character + encoding. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Charset-normalizer Dependencies +
+
+ Required +
+

+ setuptools_scm-8.3.1 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1, Python-3.13.7 (rebuilt + after installing SQLite-3.50.4), and pytest-cov +

+
+
+
+
+
+

+ Installation of + Charset-normalizer +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user charset-normalizer
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependencies are not, the installation can be + tested with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install pytest-cov                        &&
+python3 /usr/bin/pytest
+deactivate
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + normalizer +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/charset_normalizer + and + /usr/lib/python3.13/site-packages/charset_normalizer-3.4.3.dist-info +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ normalizer +

+
+

+ is a Universal Charset Detector (discovers + originating encoding and normalizes text to + unicode) +

+
+
+
+
+
+

+ Commonmark-0.9.1 +

+
+
+
+
+

+ Introduction to Commonmark + Module +

+
+
+
+

+ Commonmark Python parser + for the CommonMark Markdown specification. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Commonmark Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1, flake8, and + hypothesis +

+
+
+
+
+
+

+ Installation of Commonmark +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user commonmark
+

+ Assuming pytest-8.4.1 is installed and the other + optional dependency is not, the installation can be tested + with: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install hypothesis                        &&
+python3 /usr/bin/pytest commonmark/tests/unit_tests.py
+python3 commonmark/tests/run_spec_tests.py
+deactivate
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + cmark +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/commonmark + and + /usr/lib/python3.13/site-packages/commonmark-0.9.1.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ cmark +

+
+

+ processes Markdown according to the CommonMark + specification +

+
+
+
+
+
+

+ Editables-0.5 +

+
+
+
+
+

+ Introduction to Editables + Module +

+
+
+
+

+ Editables is python + library for creating “editable wheels.” +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Editables Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Editables +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user editables
+

+ To test the installation, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/editables + and + /usr/lib/python3.13/site-packages/editables-0.5.dist-info +
+
+
+
+
+
+

+ Hatchling-1.27.0 +

+
+
+
+
+

+ Introduction to Hatchling + Module +

+
+
+
+

+ Hatchling is an + extensible, standards compliant build backend for python + modules. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Hatchling Dependencies +
+
+ Required +
+

+ editables-0.5, pathspec-0.12.1, + pluggy-1.6.0, and trove-classifiers-2025.8.6.13 +

+
+
+
+
+
+

+ Installation of Hatchling +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a working test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user hatchling
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + hatchling +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/hatchling + and + /usr/lib/python3.13/site-packages/hatchling-1.27.0.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ hatchling +

+
+

+ is a python module builder +

+
+
+
+
+
+

+ Hatch-Fancy-Pypi-Readme-25.1.0 +

+
+
+
+
+

+ Introduction to + Hatch-Fancy-Pypi-Readme Module +

+
+
+
+

+ Hatch-Fancy-Pypi-Readme is + a hatch plugin filling the readme field into the metadata + of a Python module from markup language documentation files + of the module. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Hatch-Fancy-Pypi-Readme + Dependencies +
+
+ Required +
+

+ hatchling-1.27.0 +

+
+ Optional (for testing) +
+

+ build-1.3.0 and pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of + Hatch-Fancy-Pypi-Readme +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user hatch-fancy-pypi-readme
+

+ To test the installation, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/hatch_fancy_pypi_readme + and + /usr/lib/python3.13/site-packages/hatch_fancy_pypi_readme-25.1.0.dist-info +
+
+
+
+
+
+

+ Hatch_vcs-0.5.0 +

+
+
+
+
+

+ Introduction to Hatch-vcs + Module +

+
+
+
+

+ Hatch_vcs is a Hatch + plugin for versioning with several Version Control Systems + ( VCS ). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Hatch_vcs Dependencies +
+
+ Required +
+

+ hatchling-1.27.0 and setuptools_scm-8.3.1 +

+
+ Optional (for testing) +
+

+ git-2.50.1 and pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Hatch_vcs +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user hatch_vcs
+

+ To test the installation, issue (HOME= prevents the .gitconfig file in the home directory + from interfering the tests): HOME= pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/hatch_vcs + and + /usr/lib/python3.13/site-packages/hatch_vcs-0.5.0.dist-info +
+
+
+
+
+
+

+ Idna-3.10 +

+
+
+
+
+

+ Introduction to Idna Module +

+
+
+
+

+ The Idna module provides + support for the Internationalized Domain Names in + Applications (IDNA) protocol as specified in RFC 5891. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Idna Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Idna +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user idna
+

+ To test the installation, run pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/idna and + /usr/lib/python3.13/site-packages/idna-3.10.dist-info +
+
+
+
+
+
+

+ Imagesize-1.4.1 +

+
+
+
+
+

+ Introduction to Imagesize + Module +

+
+
+
+

+ The imagesize package + analyzes image file headers and returns the image size and + DPI. It works with JPEG/JPEG + 2000/PNG/GIF/TIFF/SVG/Netpbm/WebP formats. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Imagesize Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 and requests-2.32.5 +

+
+
+
+
+
+

+ Installation of Imagesize +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user imagesize
+

+ The tests for this package are known to be broken. To test + the installation anyway, run pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/imagesize + and + /usr/lib/python3.13/site-packages/imagesize-1.4.1.dist-info +
+
+
+
+
+
+

+ Iniconfig-2.1.0 +

+
+
+
+
+

+ Introduction to Iniconfig + Module +

+
+
+
+

+ Iniconfig is a small and + simple INI-file parser module. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Iniconfig Dependencies +
+
+ Required +
+

+ hatch_vcs-0.5.0 +

+
+
+
+
+
+

+ Installation of Iniconfig +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user iniconfig
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/iniconfig + and + /usr/lib/python3.13/site-packages/iniconfig-2.1.0.dist-info +
+
+
+
+
+
+

+ Markdown-3.8.2 +

+
+
+
+
+

+ Introduction to Markdown + Module +

+
+
+
+

+ Markdown is a Python + parser for John Gruber's Markdown specification. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Markdown Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1, PyYAML-6.0.2, and + coverage +

+
+
+
+
+
+

+ Installation of Markdown +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user Markdown
+

+ Assuming pytest-8.4.1 and PyYAML-6.0.2 are + installed and the other optional dependency is not, the + installation can be tested with: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install coverage                          &&
+python3 /usr/bin/pytest --ignore=tests/test_syntax/extensions/test_md_in_html.py
+deactivate
+

+ Two tests in the tests/test_syntax/blocks/test_html_blocks.py + file are known to fail due to changes in Python-3.13.6 and + later's HTML Parser module. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + markdown_py +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/markdown + and + /usr/lib/python3.13/site-packages/Markdown-3.8.2.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ markdown_py +

+
+

+ converts markdown files to (x)html +

+
+
+
+
+
+

+ Meson_python-0.18.0 +

+
+
+
+
+

+ Introduction to Meson_python + Module +

+
+
+
+

+ The Meson_python module + contains a Python build backend (PEP 517) for Meson + projects. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Meson_python Dependencies +
+
+ Required +
+

+ pyproject-metadata-0.9.1 +

+
+ Recommended (Runtime) +
+

+ patchelf-0.18.0 +

+
+ Optional (for testing) +
+

+ build-1.3.0, cython-3.1.3, git-2.50.1, + pytest-8.4.1, Python-3.13.7 (rebuilt + after installing SQLite-3.50.4), and pytest-mock +

+
+
+
+
+
+

+ Installation of Meson_python +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user meson_python
+

+ To test the installation, make sure git-2.50.1, patchelf-0.18.0, and pytest-8.4.1 are + installed, and Python-3.13.7 has been rebuilt after + installing SQLite-3.50.4, then issue (HOME= prevents the .gitconfig file in the home directory + from interfering the tests): +

+
python3 -m venv --system-site-packages testenv &&
+testenv/bin/pip3 install 'meson_python[test]'  &&
+HOME= testenv/bin/python -m pytest
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/meson_python + and + /usr/lib/python3.13/site-packages/meson_python-0.18.0.dist-info +
+
+
+
+
+
+

+ Msgpack-1.1.1 +

+
+
+
+
+

+ Introduction to Msgpack + Module +

+
+
+
+

+ Msgpack is an efficient + binary serialization format. It lets you exchange data + among multiple languages like JSON. But it's faster and + smaller. This package provides CPython bindings for reading + and writing Msgpack data. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Msgpack Dependencies +
+
+ Required +
+

+ cython-3.1.3 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Msgpack +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user msgpack
+

+ To test the installation issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/msgpack-1.1.1.dist-info + and /usr/lib/python3.13/site-packages/msgpack +
+
+
+
+
+
+

+ Pathspec-0.12.1 +

+
+
+
+
+

+ Introduction to Pathspec + Module +

+
+
+
+

+ Pathspec is a utility + library for pattern matching of file paths. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Pathspec Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Pathspec +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pathspec
+

+ To test the installation, issue pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pathspec + and + /usr/lib/python3.13/site-packages/pathspec-0.12.1.dist-info +
+
+
+
+
+
+

+ Pluggy-1.6.0 +

+
+
+
+
+

+ Introduction to Pluggy + Module +

+
+
+
+

+ The Pluggy package gives + users the ability to extend or modify the behaviour of a + host program by installing a plugin for that program. The + plugin code will run as part of normal program execution, + changing or enhancing certain aspects of it. In essence, + pluggy enables function + hooking so a user can build “pluggable” + systems. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Pluggy Dependencies +
+
+ Recommended +
+ +
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Pluggy +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pluggy
+

+ To test the installation, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pluggy and + /usr/lib/python3.13/site-packages/pluggy-1.6.0.dist-info +
+
+
+
+
+
+

+ Pyproject_Hooks-1.2.0 +

+
+
+
+
+

+ Introduction to + Pyproject_Hooks Module +

+
+
+
+

+ Pyproject_Hooks is a + low-level library for calling build-backends in + pyproject.toml-based + projects. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Pyproject_Hooks Dependencies +
+
+ Optional (for tests) +
+

+ pytest-8.4.1 and testpath +

+
+
+
+
+
+

+ Installation of + Pyproject_Hooks +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pyproject_hooks
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependency is not, the installation can be tested + with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install testpath                          &&
+python3 -m pytest
+deactivate
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pyproject_hooks + and + /usr/lib/python3.13/site-packages/pyproject_hooks-1.2.0.dist-info +
+
+
+
+
+
+

+ Pyproject-Metadata-0.9.1 +

+
+
+
+
+

+ Introduction to + Pyproject-Metadata Module +

+
+
+
+

+ The Pyproject-Metadata + module contains a data class for PEP 621 metadata with + support for “core + metadata” (PEP 643) generation. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Pyproject-Metadata Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of + Pyproject-Metadata +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pyproject-metadata
+

+ To test the installation, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pyproject_metadata + and + /usr/lib/python3.13/site-packages/pyproject_metadata-0.9.1.dist-info +
+
+
+
+
+
+

+ Pytz-2025.2 +

+
+
+
+
+

+ Introduction to Pytz Module +

+
+
+
+

+ The Pytz library brings + the IANA tz database into Python. It allows accurate and + cross-platform timezone calculations. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Pytz dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Pytz +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user pytz
+

+ To test the installation, run pytest. A few warnings + are issued. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/pytz and + /usr/lib/python3.13/site-packages/pytz-2025.2.dist-info +
+
+
+
+
+
+

+ Roman-numerals-py-3.1.0 +

+
+
+
+
+

+ Introduction to + Roman-numerals-py Module +

+
+
+
+

+ Roman-numerals-py is a + python library for manipulating well-formed Roman numerals. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Roman-numerals-py Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of + Roman-numerals-py +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user roman-numerals-py
+

+ To test the installation, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/roman_numerals + and + /usr/lib/python3.13/site-packages/roman_numerals_py-3.1.0.dist-info +
+
+
+
+
+
+

+ Setuptools_scm-8.3.1 +

+
+
+
+
+

+ Introduction to + Setuptools_scm Module +

+
+
+
+

+ The Setuptools_scm package + is used to extract Python package versions from git or hg + metadata instead of declaring them. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Setuptools_scm Dependencies +
+
+ Optional (for testing) +
+

+ build-1.3.0, git-2.50.1, mercurial-7.1, + pytest-8.4.1, and Sudo-1.9.17p2 +

+
+
+
+
+
+

+ Installation of + Setuptools_scm +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user setuptools_scm
+

+ To test the installation, make sure pytest-8.4.1 and the + other optional dependencies are installed and run + (HOME= prevents the + .gitconfig file in the home + directory from interfering the tests): +

+
TZ=UTC HOME= pytest
+

+ If git-2.50.1 and/or mercurial-7.1 are + not installed, the tests depending on the missing one(s) + will be skipped. Some tests may invoke Sudo-1.9.17p2 and + request a password. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/setuptools_scm + and + /usr/lib/python3.13/site-packages/setuptools_scm-8.3.1.dist-info +
+
+
+
+
+
+

+ Smartypants-2.0.2 +

+
+
+
+
+

+ Introduction to Smartypants + Module +

+
+
+
+

+ Smartypants translates + plain ASCII punctuation characters into “smart” + typographic punctuation HTML entities. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Smartypants Dependencies +
+
+ Optional (for testing) +
+

+ docutils-0.21.2, Pygments-2.19.2, and pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of Smartypants +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a working test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user smartypants
+

+ To test the results, issue: +

+
cp /usr/bin/smartypants . &&
+pytest
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + smartypants +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/smartypants-2.0.2.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ smartypants +

+
+

+ translates ASCII punctuation to HTML punctuation. +

+
+
+
+
+
+

+ Snowballstemmer-3.0.1 +

+
+
+
+
+

+ Introduction to + Snowballstemmer Module +

+
+
+
+

+ The Snowballstemmer + package is a small string processing language for creating + stemming algorithms for use in Information Retrieval, plus + a collection of stemming algorithms implemented using it. + Stemming maps different forms of the same word to a common + “stem” — for example, the English + stemmer maps connection, connections, connective, connected, and connecting to connect. Running a search for + connected would also + find documents which only have the other forms. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of + Snowballstemmer +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user snowballstemmer
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/snowballstemmer + and + /usr/lib/python3.13/site-packages/snowballstemmer-3.0.1.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-applehelp-2.0.0 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-applehelp Module +

+
+
+
+

+ The Sphinxcontrib-applehelp package is a + Sphinx extension which + outputs Apple help books. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-applehelp + Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 and sphinx-8.2.3 (circular + dependency) +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-applehelp +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-applehelp
+

+ To test the installation, run pytest. Several warnings + may be issued, due to the use of deprecated functions. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_applehelp-2.0.0.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-devhelp-2.0.0 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-devhelp Module +

+
+
+
+

+ The Sphinxcontrib-devhelp + package is a Sphinx + extension which outputs Devhelp + documents. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-devhelp Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 and sphinx-8.2.3 (circular + dependency) +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-devhelp +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-devhelp
+

+ To test the installation, run pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_devhelp-2.0.0.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-htmlhelp-2.1.0 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-htmlhelp Module +

+
+
+
+

+ The Sphinxcontrib-htmlhelp + package is a Sphinx + extension which renders HTML help files. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-htmlhelp + Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1, sphinx-8.2.3 (circular + dependency), and html5lib-1.1 +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-htmlhelp +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-htmlhelp
+

+ If the optional dependencies are installed, the package can + be tested with: +

+
pytest
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_htmlhelp-2.1.0.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-jquery-4.1 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-jquery Module +

+
+
+
+

+ The Sphinxcontrib-jquery + package is a Sphinx + extension which includes jQuery on newer Sphinx releases. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-jquery Dependencies +
+
+ Required +
+

+ sphinx-8.2.3 +

+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-jquery +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-jquery
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_jquery-4.1.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-jsmath-1.0.1 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-jsmath Module +

+
+
+
+

+ The Sphinxcontrib-jsmath + package is a Sphinx + extension which renders display math in HTML via + JavaScript. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-jsmath Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 and sphinx-8.2.3 (circular + dependency) +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-jsmath +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-jsmath
+

+ The installation can be tested with the following commands: +

+
sed -i 's/text()/read_&/' tests/test_jsmath.py &&
+pytest
+

+ the sed ... + command is needed because of a change in Sphinx API for versions greater than + 5.0. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-qthelp-2.0.0 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-qthelp Module +

+
+
+
+

+ The Sphinxcontrib-qthelp + package is a Sphinx + extension which outputs QtHelp documents. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-qthelp Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1, sphinx-8.2.3 (circular + dependency), and defusedxml +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-qthelp +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-qthelp
+

+ The installation can be tested with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+testenv/bin/pip3 install defusedxml            &&
+testenv/bin/python -m pytest
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_qthelp-2.0.0.dist-info +
+
+
+
+
+
+

+ Sphinxcontrib-serializinghtml-2.0.0 +

+
+
+
+
+

+ Introduction to + Sphinxcontrib-serializinghtml Module +

+
+
+
+

+ The Sphinxcontrib-serializinghtml package + is a Sphinx extension + which outputs “serialized” HTML files (json and + pickle). +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Sphinxcontrib-serializinghtml + Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 and sphinx-8.2.3 (circular + dependency) +

+
+
+
+
+
+

+ Installation of + Sphinxcontrib-serializinghtml +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user sphinxcontrib-serializinghtml
+

+ To test the installation, first install sphinx-8.2.3, then + run pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/sphinxcontrib + and + /usr/lib/python3.13/site-packages/sphinxcontrib_serializinghtml-2.0.0.dist-info +
+
+
+
+
+
+

+ Trove-Classifiers-2025.8.6.13 +

+
+
+
+
+

+ Introduction to + Trove-Classifiers Module +

+
+
+
+

+ Trove-Classifiers is a + Python library to encompass all valid PyPI classifiers used + to categorize projects and releases per PEP 301, for + example Topic :: System :: + Filesystems and Development + Status :: 6 - Mature. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Trove-Classifiers Dependencies +
+
+ Optional (for testing) +
+

+ pytest-8.4.1 +

+
+
+
+
+
+

+ Installation of + Trove-Classifiers +

+
+
+
+

+ First, hard code the package version into setup.py to work around an issue causing + the generated wheel to contain an incorrect version string + when the calver module is + not installed: +

+
sed -i '/calver/s/^/#/;$iversion="2025.8.6.13"' setup.py
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user trove-classifiers
+

+ To test the installation, issue: pytest. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/trove_classifiers + and + /usr/lib/python3.13/site-packages/trove_classifiers-2025.8.6.13.dist-info +
+
+
+
+
+
+

+ Typogrify-2.1.0 +

+
+
+
+
+

+ Introduction to Typogrify + Module +

+
+
+
+

+ Typogrify provides filters + to enhance web typography, including support for Django and + Jinja templates. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Typogrify Dependencies +
+
+ Required +
+

+ hatchling-1.27.0 and smartypants-2.0.2 +

+
+
+
+
+
+

+ Installation of Typogrify +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user typogrify
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/typogrify + and + /usr/lib/python3.13/site-packages/typogrify-2.1.0.dist-info +
+
+
+
+
+
+

+ Urllib3-2.5.0 +

+
+
+
+
+

+ Introduction to Urllib3 + Module +

+
+
+
+

+ The Urllib3 module is a + powerful, user-friendly HTTP client for Python. It brings + many critical features that are missing from the Python + standard libraries. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Urllib3 Dependencies +
+
+ Required +
+

+ hatch_vcs-0.5.0 +

+
+ Optional (for tests) +
+

+ pytest-8.4.1, httpx, hypercorn, + mock, PySocks, + pytest-timeout, + python-dateutil, + quart, quart-trio, + tornado, trio, and + trustme +

+
+
+
+
+
+

+ Installation of Urllib3 +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user urllib3
+

+ Assuming pytest-8.4.1 is installed, but the other + optional dependencies are not, the installation can be + tested with the following commands: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install trustme         \
+             tornado         \
+             python-dateutil \
+             mock            \
+             pysocks         \
+             pytest-timeout  \
+             trio            \
+             hypercorn       \
+             quart           \
+             quart_trio      \
+             httpx           &&
+python3 /usr/bin/pytest
+deactivate
+

+ As many as 34 failures are known to occur due to slight + behavior changes in the external Python modules above, when + combined with Python 3.13.7. +

+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/urllib3 and + /usr/lib/python3.13/site-packages/urllib3-2.5.0.dist-info +
+
+
+
+
+
+

+ webencodings-0.5.1 +

+
+
+
+
+

+ Introduction to Webencodings + Module +

+
+
+
+

+ The webencodings module is + a Python implementation of the WHATWG Encoding + standard. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+
+
+
+
+

+ Installation of webencodings +

+
+
+
+

+ Build the module: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ Now, as the root user: +

+
pip3 install --no-index --find-links dist --no-user webencodings
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -w dist: builds the + appropriate "wheel" for this module in the directory + dist. +

+

+ --no-build-isolation: tells + pip3 to run the build in the system environment instead of + creating a temporary build environment. +

+

+ --no-deps: prevents + pip3 from building wheels for the project's dependencies. +

+

+ --no-index: ignores + the package index (only looking at --find-links URLs + instead). +

+

+ --find-links dist: + looks for links to archives such as wheel (.whl) files in + the directory dist. +

+

+ --no-cache-dir: + Disables the cache to prevent a warning when installing as + the root user. +

+

+ --no-user: Prevent + mistakenly running the install command as a non-root user. +

+

+ --upgrade: Upgrade the package + to the newest available version. This option is used with + the install command if a version of the package is already + installed. +

+

+ --force-reinstall: Reinstall + the package even if it is up-to-date. This option is used + with the install command if reinstalling the package or + reverting to an earlier version of the package. +

+

+ --no-deps: Do not install + package dependencies. This option may be needed with the + --upgrade or --force-reinstall options. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed + Directories: /usr/lib/python3.13/site-packages/webencodings + and + /usr/lib/python3.13/site-packages/webencodings-0.5.1.dist-info +
+
+
+
+
+
+
+
+
+

+ Ruby-3.4.5 +

+
+
+
+
+
+

+ Introduction to Ruby +

+

+ The Ruby package contains + the Ruby development + environment. This is useful for object-oriented scripting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.5.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 7c46a4fbece1073bbef0d7d61bc030cc +

    +
  • +
  • +

    + Download size: 16 MB +

    +
  • +
  • +

    + Estimated disk space required: 1.5 GB (with C API docs + and tests) +

    +
  • +
  • +

    + Estimated build time: 1.6 SBU (with C API docs; add 0.2 + SBU for tests; all with using parallelism=4) +

    +
  • +
+
+

+ Ruby + Dependencies +

+
+ Required +
+

+ libyaml-0.2.5 +

+
+ Optional +
+

+ Doxygen-1.14.0, Graphviz-13.1.2, + rustc-1.89.0, Tk-8.6.16, Valgrind-3.25.1, + + Berkeley DB (deprecated) and DTrace +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of Ruby +

+
+

+ Note +

+

+ If you have installed a package that provides a ruby gem, + such as asciidoctor-2.0.23, you must + reinstall those packages when upgrading to a new minor + version of Ruby. +

+
+

+ Install Ruby by running the + following command: +

+
./configure --prefix=/usr         \
+            --disable-rpath       \
+            --enable-shared       \
+            --without-valgrind    \
+            --without-baseruby    \
+            ac_cv_func_qsort_r=no \
+            --docdir=/usr/share/doc/ruby-3.4.5 &&
+make
+

+ Optionally, build the CAPI documents by running the following + commands: +

+
make capi
+

+ To test the results, issue: make -k check. If the + environment has variables related to proxy settings + (all_proxy, ALL_PROXY, http_proxy, and etc.) set, the test suite will + bail out early with messages like net/ftp is not found. Make sure that + you unset these variables for the test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ If you have Ruby-On-Rails applications installed and did an + upgrade of Ruby by + installing this package, you might need to run an update + there, too (as the root + user): +

+
cd /path/to/web/app
+bundle update rake
+

+ and restart the webserver which serves the application. +

+
+
+
+

+ Command Explanations +

+

+ --disable-rpath: This + switch disables embedding /usr/lib as a library search path into the + ruby program. + Doing so is not needed (because /usr/lib is a system library path) and it + may cause the test suite running with the system libruby.so instead of the just built one + when Ruby has been installed. +

+

+ --enable-shared: This + switch enables building the libruby shared library. +

+

+ --without-baseruby: + This switch prevents using the system ruby if it is already + installed. The build system will use the newly built version + instead. +

+

+ ac_cv_func_qsort_r=no: This + switch prevents using the qsort_r function from Glibc. Ruby makes + some aggressive optimization assuming some implementation + details of the sorting algorithm, but the assumption is not + true with the Glibc implementation. With this switch Ruby + will use its own sort implementation instead. +

+

+ --disable-install-doc: This + switch disables building and installing rdoc indexes and C + API documents. +

+

+ --disable-install-rdoc: This + switch disables building and installing rdoc indexes. +

+

+ --disable-install-capi: This + switch disables building and installing C API documents. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bundle, bundler, erb, gem, irb, + racc, rake, rbs, rdbg, rdoc, ri, ruby, and + typeprof +
+
+ Installed Libraries: + libruby.so +
+
+ Installed Directories: + /usr/include/ruby-3.4.0, + /usr/lib/ruby, /usr/share/doc/ruby-3.4.5 and + /usr/share/ri +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bundle +

+
+

+ creates bundles of Ruby Gems +

+
+

+ bundler +

+
+

+ manages an application's dependencies throughout + it's lifecycle +

+
+

+ erb +

+
+

+ is a command line front-end for eRuby, which + provides a templating system for Ruby +

+
+

+ gem +

+
+

+ is the command for RubyGems, which is a + sophisticated package manager for Ruby. This is similar to + Python's 'pip' command +

+
+

+ irb +

+
+

+ is the interactive interface for Ruby +

+
+

+ rake +

+
+

+ is a make-like build utility for Ruby +

+
+

+ rdbg +

+
+

+ is an interactive debugger for Ruby +

+
+

+ rdoc +

+
+

+ generates Ruby + documentation +

+
+

+ ri +

+
+

+ displays documentation from a database on + Ruby classes, + modules, and methods +

+
+

+ ruby +

+
+

+ is an interpreted scripting language for quick and + easy object-oriented programming +

+
+

+ libruby.so +

+
+

+ contains the API functions required by Ruby +

+
+
+
+
+
+
+
+

+ Rustc-1.89.0 +

+
+
+
+
+
+

+ Introduction to Rust +

+

+ The Rust programming + language is designed to be a safe, concurrent, practical + language. +

+

+ As with many other programming languages, rustc (the rust + compiler) needs a binary from which to bootstrap. It will + download a stage0 binary at the start of the build, so you + cannot compile it without an Internet connection. +

+
+

+ Note +

+

+ Although BLFS usually installs in /usr, when you later upgrade to a newer + version of rust the old + libraries in /usr/lib/rustlib + will remain, with various hashes in their names, but will + not be usable and will waste space. The editors recommend + placing the files in the /opt + directory. In particular, if you have reason to rebuild + with a modified configuration (e.g. using the shipped LLVM + after building with shared LLVM, perhaps to compile crates + for architectures which the BLFS LLVM build does not + support) it is possible for the install to leave a broken + cargo + program. In such a situation, either remove the existing + installation first, or use a different prefix such as + /opt/rustc-1.89.0-build2. +

+

+ If you prefer, you can of course change the prefix to + /usr. +

+
+

+ The current rustbuild + build-system will use all processors, although it does not + scale well and often falls back to just using one core while + waiting for a library to compile. However it can be mostly + limited to a specified number of processors by a combination + of adding the switch --jobs + <N> (e.g. '--jobs 4' to limit to 4 processors) + on each invocation of ./x.py and using an environment variable + CARGO_BUILD_JOBS=<N>. At the + moment this is not effective when some of the rustc tests are + run. +

+

+ The current version of rust's num_cpus crate now recognizes + that cgroups can be used to restrict which processors it is + allowed to use. So if your machine lacks DRAM (typically, + less than 2 GB DRAM per core) that might be an alternative to + taking CPUs offline. Read the + section called “Use Linux Control Group to Limit the Resource + Usage” for how to use a cgroup. +

+

+ At the moment Rust does not + provide any guarantees of a stable ABI. +

+
+

+ Note +

+

+ Rustc defaults to building for ALL supported architectures, + using a shipped copy of LLVM. In BLFS the build is only for + the X86 architecture. If you intend to develop rust crates, + this build may not be good enough for your purposes. +

+

+ The build times of this version when repeated on the same + machine are often reasonably consistent, but as with all + compilations using rustc there can be some + very slow outliers. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://static.rust-lang.org/dist/rustc-1.89.0-src.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 982f087479302e6d91432efc81852b00 +

    +
  • +
  • +

    + Download size: 256 MB +

    +
  • +
  • +

    + Estimated disk space required: 9.4 GB (252 MB + installed); add 7.4 GB if running the tests +

    +
  • +
  • +

    + Estimated build time: 9.0 SBU (including download time; + add 15 SBU for tests, both using parallelism=8) +

    +
  • +
+
+

+ Rust + Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and cURL-8.15.0 +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+ Recommended +
+ +
+

+ Note +

+

+ If a recommended dependency is not installed, a shipped + copy in the Rustc source tarball will be built and used. +

+
+
+ Optional +
+

+ GDB-16.3 + (used by the test suite if it is present), git-2.50.1 (required by + the test suite), + cranelift, jemalloc, libgccjit (read command + explanation in GCC-15.2.0), and libgit2 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/rust +

+
+
+

+ Installation of Rust +

+

+ To install into the /opt + directory, remove any existing /opt/rustc symlink and create a new + directory (i.e. with a different name if trying a modified + build of the same version). As the root user: +

+
mkdir -pv /opt/rustc-1.89.0      &&
+ln -svfn rustc-1.89.0 /opt/rustc
+
+

+ Note +

+

+ If multiple versions of Rust are installed in /opt, changing to another version only + requires changing the /opt/rustc symbolic link and then running + ldconfig. +

+
+

+ Create a suitable bootstrap.toml file which will configure + the build. +

+
cat << EOF > bootstrap.toml
+# See bootstrap.toml.example for more possible options,
+# and see src/bootstrap/defaults/bootstrap.dist.toml for a few options
+# automatically set when building from a release tarball
+# (unfortunately, we have to override many of them).
+
+# Tell x.py the editors have reviewed the content of this file
+# and updated it to follow the major changes of the building system,
+# so x.py will not warn us to do such a review.
+change-id = 142379
+
+[llvm]
+# When using system llvm prefer shared libraries
+link-shared = true
+
+# If building the shipped LLVM source, only enable the x86 target
+# instead of all the targets supported by LLVM.
+targets = "X86"
+
+[build]
+description = "for BLFS 12.4"
+
+# Omit docs to save time and space (default is to build them).
+docs = false
+
+# Do not query new versions of dependencies online.
+locked-deps = true
+
+# Specify which extended tools (those from the default install).
+tools = ["cargo", "clippy", "rustdoc", "rustfmt"]
+
+[install]
+prefix = "/opt/rustc-1.89.0"
+docdir = "share/doc/rustc-1.89.0"
+
+[rust]
+channel = "stable"
+
+# Enable the same optimizations as the official upstream build.
+lto = "thin"
+codegen-units = 1
+
+# Don't build lld which does not belong to this package and seems not
+# so useful for BLFS.  Even if it turns out to be really useful we'd build
+# it as a part of the LLVM package instead.
+lld = false
+
+# Don't build llvm-bitcode-linker which is only useful for the NVPTX
+# backend that we don't enable.
+llvm-bitcode-linker = false
+
+[target.x86_64-unknown-linux-gnu]
+llvm-config = "/usr/bin/llvm-config"
+
+[target.i686-unknown-linux-gnu]
+llvm-config = "/usr/bin/llvm-config"
+EOF
+

+ Compile Rust by running the + following commands: +

+
[ ! -e /usr/include/libssh2.h ] || export LIBSSH2_SYS_USE_PKG_CONFIG=1
+[ ! -e /usr/include/sqlite3.h ] || export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
+./x.py build
+
+

+ Note +

+

+ The test suite will generate some messages in the + system log for traps on invalid + opcodes, and for segmentation faults. In themselves these + are nothing to worry about, just a way for the test to be + terminated. +

+
+

+ To run the tests (again using all available CPUs) issue: +

+
./x.py test --verbose --no-fail-fast | tee rustc-testlog
+

+ Eight tests in the ui test suite are known to fail with + description set in the + build section of the + bootstrap.toml file. Four tests + in the bootstrap test suite are known to fail because they + expect to run in the Rust Git repository. The test named + tests/run-make/musl-default-linking is + known to fail because we've not enabled the AArch64 target in + LLVM-20.1.8. The test named tests/run-make/linker-warning is known to + fail due to some reason unknown yet. +

+

+ As with all large test suites, some tests might fail on some + machines - if the number of additional failures is low, check + the log for 'failures:' and review lines above that, + particularly the 'stderr:' lines. Any mention of SIGSEGV or + signal 11 in a failing test is a cause for concern. +

+
+

+ Note +

+

+ If you've stripped /usr/lib/libc.a with strip --strip-unneeded, + all statically-linked Rust programs will crash with SIGSEGV + on start-up, causing several tests (for example + tests/ui/process/nofile-limit.rs) + to fail with SIGSEGV. +

+

+ We are still investigating the root cause of this issue, + but for now we've replaced --strip-unneeded with + --strip-debug in + both the LFS book and the section called + “Stripping One More Time” to work around the problem. + If you hit this issue, rebuild Glibc and replace the + /usr/lib/libc.a file with the + unstripped libc.a from the + fresh build. +

+
+

+ If you get any other + failing test which reports an issue number then you should + search for that issue. For example, when rustc >= 1.41.1 + was built with a version of sysllvm before 10.0 the test for + issue 69225 failed https://github.com/rust-lang/rust/issues/69225 + and that should be regarded as a critical failure (they + released 1.41.1 because of it). Most other failures will not + be critical. +

+

+ Therefore, you should determine the number of failures. The + number of tests which passed and failed can be found by + running: +

+
grep '^test result:' rustc-testlog |
+ awk '{sum1 += $4; sum2 += $6} END { print sum1 " passed; " sum2 " failed" }'
+

+ The other available fields are $8 for those which were + ignored (i.e. skipped), $10 for 'measured' and $12 for + 'filtered out' but both those last two are probably zero. +

+

+ Now, as the root user, + install the package: +

+
+

+ Note +

+

+ If sudo or + su is invoked + for switching to the root + user, ensure LIBSSH2_SYS_USE_PKG_CONFIG and LIBSQLITE3_SYS_USE_PKG_CONFIG are correctly + passed or the following command may rebuild cargo with shipped copies + of libssh2 and sqlite. For sudo, use the + --preserve-env=LIB{SSH2,SQLITE3}_SYS_USE_PKG_CONFIG + option. For su, do not use the - or --login + options. +

+
+
./x.py install
+

+ Still as the root user, fix + the installation of documentation, symlink a Zsh completion file into the correct + location, and move a Bash + completion file into the location recommended by the + Bash completion maintainers: +

+
rm -fv /opt/rustc-1.89.0/share/doc/rustc-1.89.0/*.old   &&
+install -vm644 README.md                                \
+               /opt/rustc-1.89.0/share/doc/rustc-1.89.0 &&
+
+install -vdm755 /usr/share/zsh/site-functions      &&
+ln -sfv /opt/rustc/share/zsh/site-functions/_cargo \
+        /usr/share/zsh/site-functions
+
+mv -v /etc/bash_completion.d/cargo /usr/share/bash-completion/completions
+

+ Finally, unset the exported environment variables: +

+
unset LIB{SSH2,SQLITE3}_SYS_USE_PKG_CONFIG
+
+
+

+ Command Explanations +

+

+ ln -svfn rustc-1.89.0 + /opt/rustc: if this is not the first use of + the /opt/rustc symlink, + overwrite it by forcing, and use the '-n' flag to avoid + getting confusing results from e.g. ls -l. +

+

+ tools = ["cargo", "clippy", "rustdoc", + "rustfmt"]: only build the tools from the 'default' + profile in binary command rustup which are + recommended for most users. The other tools are unlikely to + be useful unless using (old) code analyzers or editing the + standard library. +

+

+ channel = "stable": this ensures + only stable features can be used, the default in bootstrap.toml is to use development + features, which is not appropriate for a released version. +

+

+ [target.x86_64-unknown-linux-gnu]: the + syntax of bootstrap.toml + requires an llvm-config entry + for each target for which system-llvm is to be used. Change + the target to [target.i686-unknown-linux-gnu] if you are + building on 32-bit x86. This whole section should be omitted + if you wish to build against the shipped llvm, but the + resulting build will be larger and take longer. +

+

+ export + LIBSSH2_SYS_USE_PKG_CONFIG=1: Allow + cargo to link + to system libssh2. +

+

+ export + LIBSQLITE3_SYS_USE_PKG_CONFIG=1: Allow + cargo to link + to system sqlite. +

+

+ --verbose: this + switch can sometimes provide more information about a test + which fails. +

+

+ --no-fail-fast: this + switch ensures that the test suite will not stop at the first + error. +

+
+
+

+ Configuring Rust +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If you installed rustc in + /opt, you need to update the + following configuration files so that rustc is correctly found by other + packages and system processes. +

+

+ As the root user, create + the /etc/profile.d/rustc.sh + file: +

+
cat > /etc/profile.d/rustc.sh << "EOF"
+# Begin /etc/profile.d/rustc.sh
+
+pathprepend /opt/rustc/bin           PATH
+
+# End /etc/profile.d/rustc.sh
+EOF
+

+ Immediately after installation, update the current PATH for + your current shell as a normal user: +

+
source /etc/profile.d/rustc.sh
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cargo-clippy, cargo-fmt, cargo, + clippy-driver, rust-gdb, rust-gdbgui, rust-lldb, rustc, + rustdoc, and rustfmt +
+
+ Installed Libraries: + librustc-driver-<16-byte-hash>.so, + libstd-<16-byte-hash>.so, and + libtest-<16-byte-hash>.so +
+
+ Installed Directories: + ~/.cargo, /opt/rustc, symbolic link + to /opt/rustc-1.89.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cargo-clippy +

+
+

+ provides lint checks for a cargo package +

+
+

+ cargo-fmt +

+
+

+ formats all bin and lib files of the current crate + using rustfmt +

+
+

+ cargo +

+
+

+ is the Package Manager for Rust +

+
+

+ clippy-driver +

+
+

+ provides lint checks for Rust +

+
+

+ rust-gdb +

+
+

+ is a wrapper script for gdb, pulling in Python + pretty-printing modules installed in /opt/rustc-1.89.0/lib/rustlib/etc +

+
+

+ rust-gdbgui +

+
+

+ is a wrapper script for a graphical front end to + gdb that runs in a browser +

+
+

+ rust-lldb +

+
+

+ is a wrapper script for LLDB (the LLVM debugger) + pulling in the Python pretty-printing modules +

+
+

+ rustc +

+
+

+ is the rust compiler +

+
+

+ rustdoc +

+
+

+ generates documentation from rust source code +

+
+

+ rustfmt +

+
+

+ formats rust code +

+
+

+ libstd-<16-byte-hash>.so +

+
+

+ is the Rust Standard Library, the foundation of + portable Rust software +

+
+
+
+
+
+
+
+

+ rust-bindgen-0.72.0 +

+
+
+
+
+
+

+ Introduction to rust-bindgen +

+

+ The rust-bindgen package + contains a utility that generates Rust bindings from C/C++ + headers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ rust-bindgen Dependencies +

+
+ Required +
+

+ rustc-1.89.0 and LLVM-20.1.8 (with Clang, + runtime) +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+
+

+ Installation of rust-bindgen +

+

+ Install rust-bindgen by + running the following commands: +

+
cargo build --release
+

+ To test the results, issue: cargo test --release. +

+

+ Now, as the root user: +

+
install -v -m755 target/release/bindgen /usr/bin
+

+ Still as the root user, + install the Bash and Zsh completion support files: +

+
bindgen --generate-shell-completions bash \
+    > /usr/share/bash-completion/completions/bindgen
+bindgen --generate-shell-completions zsh  \
+    > /usr/share/zsh/site-functions/_bindgen
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bindgen +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ bindgen +

+
+

+ generates bindings for Rust from C/C++ headers +

+
+
+
+
+
+
+
+

+ SCons-4.9.1 +

+
+
+
+
+
+

+ Introduction to SCons +

+

+ SCons is a tool for building + software (and other files) implemented in Python. +

+
+

+ Note +

+

+ When expanding the tarball the package expands to + scons-4.9.1, not the expected SCons-4.9.1. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of SCons +

+

+ Build the package: +

+
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+

+ As the root user, install the + package: +

+
pip3 install --no-index --find-links dist --no-user SCons &&
+install -v -m664 *.1 /usr/share/man/man1
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + scons, scons-configure-cache, and + sconsign +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/lib/python3.13/site-packages/SCons{,-4.9.1.dist-info} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ scons +

+
+

+ is a software construction tool +

+
+

+ scons-configure-cache +

+
+

+ shows or converts the configuration of an + SCons cache + directory +

+
+

+ sconsign +

+
+

+ prints SCons + .sconsign file + information +

+
+
+
+
+
+
+
+

+ slang-2.3.3 +

+
+
+
+
+
+

+ Introduction to slang +

+

+ S-Lang (slang) is an + interpreted language that may be embedded into an application + to make the application extensible. It provides facilities + required by interactive applications such as display/screen + management, keyboard input and keymaps. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.jedsoft.org/releases/slang/slang-2.3.3.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 69015c8300088373eb65ffcc6ed4db8c +

    +
  • +
  • +

    + Download size: 1.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 22 MB (add 15 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (add 0.5 SBU for tests) +

    +
  • +
+
+

+ Slang Dependencies +

+
+ Optional +
+

+ libpng-1.6.50 and Oniguruma +

+
+
+

+ Installation of Slang +

+
+

+ Note +

+

+ This package does not support parallel build. +

+
+

+ Install slang by running the + following commands: +

+
./configure --prefix=/usr       \
+            --sysconfdir=/etc   \
+            --with-readline=gnu &&
+make -j1 RPATH=
+

+ To test the results, issue: LC_ALL=C make check. +

+

+ Now, as the root user: +

+
make install_doc_dir=/usr/share/doc/slang-2.3.3   \
+     SLSH_DOC_DIR=/usr/share/doc/slang-2.3.3/slsh \
+     RPATH= install
+
+
+

+ Command Explanations +

+

+ --with-readline=gnu: + This parameter sets GNU Readline to be used by the parser + interface instead of the slang internal version. +

+

+ RPATH=: This + overridden make + variable prevents hard coding library search paths (rpath) + into the binary executable files and 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. +

+

+ install_doc_dir=/usr/share/doc/slang-2.3.3 + SLSH_DOC_DIR=/usr/share/doc/slang-2.3.3/slsh: + These overridden make variables ensure + installing this package with a versioned documentation + installation directory. +

+
+
+

+ Configuring slang +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ ~/.slshrc and /etc/slsh.rc +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + slsh +
+
+ Installed Libraries: + libslang.so and numerous support + modules +
+
+ Installed Directories: + /usr/lib/slang, + /usr/share/doc/slang-2.3.3 and /usr/share/slsh +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ slsh +

+
+

+ is a simple program for interpreting slang scripts. It supports + dynamic loading of slang modules and includes a + Readline interface + for interactive use +

+
+
+
+
+
+
+
+

+ Subversion-1.14.5 +

+
+
+
+
+
+

+ Introduction to Subversion +

+

+ Subversion is a version + control system that is designed to be a compelling + replacement for CVS in the + open source community. It extends and enhances CVS' feature set, while maintaining a + similar interface for those already familiar with + CVS. These instructions + install the client and server software used to manipulate a + Subversion repository. + Creation of a repository is covered at Running a + Subversion Server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://archive.apache.org/dist/subversion/subversion-1.14.5.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: af6001dc7af2f1242a4f72e8a5c565d2 +

    +
  • +
  • +

    + Download size: 8.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 260 MB (add 189 MB for + bindings, 54 MB for docs, 1.3 GB for tests) +

    +
  • +
  • +

    + Estimated build time: 1.5 SBU (Using parallelism=4; add + 2.0 SBU for bindings, 30 SBU for tests) +

    +
  • +
+
+

+ Subversion Dependencies +

+
+ Required +
+

+ Apr-Util-1.6.3 and SQLite-3.50.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ Apache-2.4.65, Boost-1.89.0, Cyrus + SASL-2.1.28, dbus-1.16.2, Doxygen-1.14.0 (for + generating HTML documentation), gnome-keyring-48.0, libsecret-0.21.7, Py3c-1.4 (for the python + bindings, and tests), Python-3.13.7 (with sqlite support for + the tests), Ruby-3.4.5, SWIG-4.3.1, and UTF8proc +

+
+ Optional (for the Java Bindings) +
+

+ One of OpenJDK-24.0.2, Dante or Jikes, JUnit 4 (to test + the Java bindings) and apache-ant-1.10.15. +

+
+
+

+ Installation of Subversion +

+

+ Install Subversion by + running the following commands: +

+
./configure --prefix=/usr            \
+            --disable-static         \
+            --with-apache-libexecdir \
+            --with-utf8proc=internal &&
+make
+

+ If you have Doxygen-1.14.0 installed and you wish to + build the API documentation, issue: +

+
doxygen doc/doxygen.conf
+

+ If you wish to build the Java bindings pass the --enable-javahl parameter to the configure command. In + addition, if you want to run the Java test suite, you have to + specify the location of the JUnit file by adding --with-junit=<path to junit jar> (for + instance --with-junit=/usr/local/java/lib/junit-4.13.jar) + to configure. + The JUnit jar file is no longer included in apache-ant-1.10.15 and must be + downloaded separately. To build the Java bindings, issue the + following command: +

+
make -j1 javahl
+

+ If you are going to compile the Ruby bindings, set the C standard to + prevent the build from failing: +

+
sed -i 's/Wno-int-to-pointer-cast/std=gnu17/' Makefile
+

+ If you want to compile Perl, + Python, or Ruby bindings, issue any of the + following command: +

+
make swig-pl # for Perl
+make swig-py \
+     swig_pydir=/usr/lib/python3.13/site-packages/libsvn \
+     swig_pydir_extra=/usr/lib/python3.13/site-packages/svn # for Python
+make swig-rb # for Ruby
+

+ To test the results, issue: make check. +

+

+ To test the results of any of the SWIG bindings, you can use any of the + following commands: make + check-swig-pl, make check-swig-py, or + make + check-swig-rb. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -m755 -d /usr/share/doc/subversion-1.14.5 &&
+cp      -v -R doc/* /usr/share/doc/subversion-1.14.5
+

+ If you built the Java bindings, issue the following command + as the root user to install + them: +

+
make install-javahl
+

+ If you built the Perl, + Python, or Ruby bindings, issue any of the + following commands as the root user to install them: +

+
make install-swig-pl
+make install-swig-py \
+      swig_pydir=/usr/lib/python3.13/site-packages/libsvn \
+      swig_pydir_extra=/usr/lib/python3.13/site-packages/svn
+make install-swig-rb
+

+ The java bindings need to be installed in order for the tests + to run, since the tests attempt to look for them in + CLASSPATH. To test the results of the Java bindings build, + issue LANG=C make + check-javahl. +

+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-apache-libexecdir: If + Apache-2.4.65 is installed, the shared + Apache modules are built. + This switch allows to have those modules installed to + Apache's configured module + dir instead of /usr/libexec. It + has no effect if Apache is + not installed. +

+

+ --with-utf8proc=internal: + Remove these switches if you have installed the optional + dependencies. +

+

+ --enable-javahl: enables + compilation of Java high level bindings. Running make javahl is necessary to + do the compilation. +

+

+ --with-junit=<location of the junit + jar file>: gives the location of the junit jar, + otherwise the javahl tests cannot be run. +

+

+ --disable-gmock: Do not use the + Googlemock testing framework. +

+
+
+

+ Configuring Subversion +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.subversion/config and + /etc/subversion/config +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ /etc/subversion/config is the + Subversion system-wide + configuration file. This file is used to specify defaults + for different svn commands. +

+

+ ~/.subversion/config is the + user's personal configuration file. It is used to override + the system-wide defaults set in /etc/subversion/config. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + svn, svnadmin, svnbench, + svndumpfilter, svnfsfs, svnlook, svnmucc, svnrdump, + svnserve, svnsync, and svnversion +
+
+ Installed Libraries: + libsvn_*-1.so and optionally, a + Java library, the mod_dav_svn.so and mod_authz_svn.so + Apache HTTP DSO modules + and various Perl, + Python and Ruby modules. +
+
+ Installed Directories: + /usr/include/subversion-1, + /usr/lib/perl5/site_perl/5.42/{,auto/}SVN, + /usr/lib/python3.13/site-packages/{libsvn,svn}, + /usr/lib/ruby/site_ruby/<x.y.z>/{,<arch-linux>-linux/}svn, + /usr/lib/svn-javahl, and + /usr/share/doc/subversion-1.14.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ svn +

+
+

+ is a command-line client program used to access + Subversion + repositories +

+
+

+ svnadmin +

+
+

+ is a tool for creating, tweaking or repairing a + Subversion + repository +

+
+

+ svnbench +

+
+

+ is a benchmarking tool +

+
+

+ svndumpfilter +

+
+

+ is a program for filtering Subversion repository dumpfile + format streams +

+
+

+ svnfsfs +

+
+

+ is the FSFS (FileSystem atop of the FileSystem - + Subversion + filesystem implementation) repository manipulation + tool +

+
+

+ svnlook +

+
+

+ is a tool for inspecting a Subversion repository +

+
+

+ svnmucc +

+
+

+ is a Multiple URL Command Client for Subversion +

+
+

+ svnrdump +

+
+

+ is a tool for dumping or loading a remote + Subversion + repository +

+
+

+ svnserve +

+
+

+ is a custom standalone server program, able to run + as a daemon process or invoked by SSH +

+
+

+ svnsync +

+
+

+ is a Subversion + repository synchronisation tool +

+
+

+ svnversion +

+
+

+ is used to report the version number and state of a + working Subversion + repository copy +

+
+

+ libsvn_*-1.so +

+
+

+ are the support libraries used by the Subversion programs +

+
+

+ mod_authz_svn.so +

+
+

+ is a plug-in module for the Apache HTTP server, used to + authenticate users to a Subversion repository over the + Internet or an intranet +

+
+

+ mod_dav_svn.so +

+
+

+ is a plug-in module for the Apache HTTP server, used to + make a Subversion + repository available to others over the Internet or + an intranet +

+
+
+
+
+
+
+
+

+ Running a Subversion + Server +

+
+
+
+
+
+

+ Running a Subversion Server +

+

+ This section will describe how to set up, administer and + secure a Subversion server. +

+

+ Subversion Server Dependencies +

+
+ Required +
+

+ Subversion-1.14.5 and OpenSSH-10.0p1 +

+
+
+

+ Setting up a Subversion Server. +

+

+ The following instructions will install a Subversion server, which will be set up + to use OpenSSH as the secure + remote access method, with svnserve available for + anonymous access. +

+

+ Configuration of the Subversion server consists of the + following steps: +

+
+
+
+
+

+ 1. Set Uup Users, Groups, + and Permissions +

+
+
+
+

+ You'll need to be user root + for the initial portion of configuration. Create the + svn user and group with the + following commands: +

+
groupadd -g 56 svn &&
+useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn
+

+ If you plan to have multiple repositories, you should have + a group dedicated to each repository for ease of + administration. Create the svntest group for the test repository + and add the svn user to + that group with the following commands: +

+
groupadd -g 57 svntest &&
+usermod -G svntest -a svn
+

+ Additionally you should set umask 002 while working + with a repository so that all new files will be writable by + owner and group. This is made mandatory by creating a + wrapper script for svn and svnserve: +

+
mv /usr/bin/svn /usr/bin/svn.orig &&
+mv /usr/bin/svnserve /usr/bin/svnserve.orig &&
+cat >> /usr/bin/svn << "EOF"
+#!/bin/sh
+umask 002
+/usr/bin/svn.orig "$@"
+EOF
+cat >> /usr/bin/svnserve << "EOF"
+#!/bin/sh
+umask 002
+/usr/bin/svnserve.orig "$@"
+EOF
+chmod 0755 /usr/bin/svn{,serve}
+
+

+ Note +

+

+ If you use Apache for + working with the repository over HTTP, even for anonymous + access, you should wrap /usr/sbin/httpd in a + similar script. +

+
+
+
+
+
+
+

+ 2. Create a Subversion + repository. +

+
+
+
+

+ There are several ways to set up a subversion repository. + It is recommended to have a look at the + SVN Book corresponding chapter. A basic repository can + be set up with the instructions below. +

+

+ Create a new Subversion + repository with the following commands (as the root user): +

+
install -v -m 0755 -d /srv/svn &&
+install -v -m 0755 -o svn -g svn -d /srv/svn/repositories &&
+svnadmin create /srv/svn/repositories/svntest
+

+ Now that the repository is created, it should be populated + with something useful. You'll need to have a predefined + directory layout set up exactly as you want your repository + to look. For example, here is a sample BLFS layout setup + with a root of svntest/. + You'll need to set up a directory tree similar to the + following: +

+
svntest/            # The name of the repository
+   trunk/           # Contains the existing source tree
+      BOOK/
+      bootscripts/
+      edguide/
+      patches/
+      scripts/
+   branches/        # Needed for additional branches
+   tags/            # Needed for tagging release points
+

+ Once you've created your directory layout as shown above, + you are ready to do the initial import: +

+
svn import -m "Initial import." \
+    </path/to/source/tree>      \
+    file:///srv/svn/repositories/svntest
+

+ Now change owner and group information on the repository, + and add an unprivileged user to the svn and svntest groups: +

+
chown -R svn:svntest /srv/svn/repositories/svntest    &&
+chmod -R g+w         /srv/svn/repositories/svntest    &&
+chmod g+s            /srv/svn/repositories/svntest/db &&
+usermod -G svn,svntest -a <username>
+

+ svntest is the group + assigned to the svntest repository. As mentioned earlier, + this eases administration of multiple repositories when + using OpenSSH for + authentication. Going forward, you'll need to add your + unprivileged user, and any additional users that you wish + to have write access to the repository, to the svn and svntest groups. +

+

+ In addition, you'll notice that the new repository's + db directory is set-groupID. + If the reasoning is not immediately obvious, when using any + external authentication method (such as ssh), the sticky bit is + set so that all new files will be owned by the user, but + group of svntest. Anyone in + the svntest group can + create files, but still give the entire group write access + to those files. This avoids locking out other users from + the repository. +

+

+ Now, return to an unprivileged user account, and take a + look at the new repository using svnlook: +

+
svnlook tree /srv/svn/repositories/svntest/
+
+

+ Note +

+

+ You may need to log out and back in again to refresh your + group memberships. su + <username> + should work as well. +

+
+
+
+
+
+
+

+ 3. Configure the Server +

+
+
+
+

+ As mentioned previously, these instructions will configure + the server to use only ssh for write access to + the repository and to provide anonymous access using + svnserve. + There are several other ways to provide access to the + repository. These additional configurations are best + explained at https://svnbook.red-bean.com/. +

+

+ Access configuration needs to be done for each repository. + Create the svnserve.conf file + for the svntest repository using the following commands: +

+
cp /srv/svn/repositories/svntest/conf/svnserve.conf \
+   /srv/svn/repositories/svntest/conf/svnserve.conf.default &&
+
+cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
+[general]
+anon-access = read
+auth-access = write
+EOF
+

+ There is not a lot to the configuration file at all. You'll + notice that only the general section is required. Take a + look at the svnserve.conf.default file for + information on using svnserve's built-in + authentication method. +

+
+
+
+
+
+

+ 4. + Starting the Server +

+
+
+
+

+ To start the server at boot time, install the svn + bootscript included in the blfs-bootscripts-20250225 package: +

+
make install-svn
+
+
+
+
+
+
+

+ SWIG-4.3.1 +

+
+
+
+
+
+

+ Introduction to SWIG +

+

+ SWIG (Simplified Wrapper and + Interface Generator) is a compiler that integrates + C and C++ with languages including + Perl, Python, Tcl, Ruby, PHP, Java, JavaScript, C#, D, + Go, Lua, Octave, R, Racket, Scilab, Scheme, and Ocaml. SWIG can also export its parse tree into + Lisp s-expressions and + XML. +

+

+ SWIG reads annotated + C/C++ header files and + creates wrapper code (glue code) in order to make the + corresponding C/C++ + libraries available to the listed languages, or to extend + C/C++ programs with a + scripting language. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.sourceforge.net/swig/swig-4.3.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 4929864e1b040a51370160d17669d6f1 +

    +
  • +
  • +

    + Download size: 8.2 MB +

    +
  • +
  • +

    + Estimated disk space required: 90 MB (2.2 GB with + tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (add 8.4 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ SWIG + Dependencies +

+
+ Required +
+

+ pcre2-10.45 +

+
+ Optional +
+

+ Boost-1.89.0 for tests, and any of the + languages mentioned in the introduction, as run-time + dependencies +

+
+
+

+ Installation of SWIG +

+

+ Install SWIG by running the + following commands: +

+
./configure --prefix=/usr                      \
+            --without-javascript               \
+            --without-maximum-compile-warnings &&
+make
+

+ To test the results, issue: make JSCXX=g++ TCL_INCLUDE= -k + check. The unsetting of the variable + TCL_INCLUDE is necessary since it + is not correctly set by configure. The tests are only + executed for the languages installed on your machine, so the + disk space and SBU values given for the tests may vary, and + should be considered as mere orders of magnitude. According + to SWIG's documentation, the + failure of some tests should not be considered harmful. The + go tests are buggy and may generate a lot of meaningless + output. +

+

+ Now, as the root user: +

+
make install &&
+cp -v -R Doc -T /usr/share/doc/swig-4.3.1
+
+
+

+ Command Explanations +

+

+ --without-maximum-compile-warnings: + disables compiler ansi conformance enforcement, which + triggers errors in the Lua + headers (starting with Lua 5.3). +

+

+ --without-<language>: + allows disabling the building of tests and examples for + <language>, but all the languages capabilities of + SWIG are always built. This + switch is used for JavaScript because the SWIG + implementation is incomplete and a lot of tests fail due to + API changes in Node-20. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + swig and ccache-swig +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/share/doc/swig-4.3.1 and + /usr/share/swig +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ swig +

+
+

+ takes an interface file containing C/C++ + declarations and SWIG special instructions, and + generates the corresponding wrapper code needed to + build extension modules +

+
+

+ ccache-swig +

+
+

+ is a compiler cache, which speeds up re-compilation + of C/C++/SWIG code +

+
+
+
+
+
+
+
+

+ Tk-8.6.16 +

+
+
+
+
+
+

+ Introduction to Tk +

+

+ The Tk package contains a + TCL GUI Toolkit. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Tk + Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+
+

+ Installation of Tk +

+

+ Install Tk by running the + following commands: +

+
cd unix &&
+./configure --prefix=/usr \
+            --mandir=/usr/share/man \
+            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&
+
+make &&
+
+sed -e "s@^\(TK_SRC_DIR='\).*@\1/usr/include'@" \
+    -e "/TK_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" \
+    -i tkConfig.sh
+

+ Running the tests is not recommended. Failures will be + reported during the tests, depending on the screen + resolution/capabilities, fonts installed and other X related + parameters, but the end report can show 0 failures. Some + tests will steal focus and some might crash your X Server. To + test the results anyway, issue: make test. Ensure you run + it from an X Window display device with the GLX extensions + loaded, but even so, tests might hang. +

+

+ Now, as the root user: +

+
make install &&
+make install-private-headers &&
+ln -v -sf wish8.6 /usr/bin/wish &&
+chmod -v 755 /usr/lib/libtk8.6.so
+
+
+

+ Command Explanations +

+

+ --enable-64bit: This + switch is used to enable 64 bit support in Tk on 64 bit operating systems. +

+

+ make + install-private-headers: This command is used + to install the Tk library + interface headers used by other packages if they link to the + Tk library. +

+

+ ln -v -sf wish8.6 + /usr/bin/wish: This command is used to create + a compatibility symbolic link to the wish8.6 file as many + packages expect a file named wish. +

+

+ sed -e ... + tkConfig.sh: The Tk package expects that its source tree + is preserved so that packages depending on it for their + compilation can utilize it. This sed removes the references + to the build directory and replaces them with saner + system-wide locations. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + wish and wish8.6 +
+
+ Installed Libraries: + libtk8.6.so and + libtkstub8.6.a +
+
+ Installed Directory: + /usr/lib/tk8.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ wish +

+
+

+ is a symlink to the wish8.6 program +

+
+

+ wish8.6 +

+
+

+ is a simple shell containing the Tk toolkit that creates a main + window and then processes Tcl commands +

+
+

+ libtk8.6.so +

+
+

+ contains the API functions required by Tk +

+
+
+
+
+
+
+
+

+ unifdef-2.12 +

+
+
+
+
+
+

+ Introduction to unifdef +

+

+ The unifdef package contains + a utility that is useful for removing preprocessor + conditionals from code. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://dotat.at/prog/unifdef/unifdef-2.12.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: b225312c110cd2600ca7166bd0419751 +

    +
  • +
  • +

    + Download size: 88 KB +

    +
  • +
  • +

    + Estimated disk space required: 1.9 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+
+
+

+ Installation of unifdef +

+

+ First, fix a problem when building with gcc-15: +

+
sed -i 's/constexpr/unifdef_&/g' unifdef.c
+

+ Now fix a problem if reinstalling the package: +

+
sed -i 's/ln -s/ln -sf/' Makefile
+

+ Install unifdef by running + the following commands: +

+
make
+

+ To test the results, issue: make test. +

+

+ Finally, finish the installation as the root user: +

+
make prefix=/usr install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + unifdef and unifdefall +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ unifdef +

+
+

+ removes preprocessor conditionals from code +

+
+

+ unifdefall +

+
+

+ removes preprocessor conditionals from code across + a whole tree +

+
+
+
+
+
+
+
+

+ Vala-0.56.18 +

+
+
+
+
+
+

+ Introduction to Vala +

+

+ Vala is a new programming + language that aims to bring modern programming language + features to GNOME developers + without imposing any additional runtime requirements and + without using a different ABI compared to applications and + libraries written in C. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/vala/0.56/vala-0.56.18.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 14238ac89810b932db9fd75999739494 +

    +
  • +
  • +

    + Download size: 3.8 MB +

    +
  • +
  • +

    + Estimated disk space required: 160 MB (add 19 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (add 1.0 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ Vala + Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection required + for the tests) +

+
+ Recommended +
+ +
+ Optional +
+

+ dbus-1.16.2 (Required for the tests), + libxslt-1.1.43 (Required for generating + the documentation), help2man, + jing, and + weasyprint +

+
+
+

+ Installation of Vala +

+

+ Install Vala by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ bootstrap: This make target forces the + building system to build the package twice and use the + vala executable + produced in the first build to regenerate the .c files from the .vala files if needed. If a vala executable is not + installed yet and you've modified any .vala files in the source tree, run + make bootstrap + instead of make. +

+

+ --disable-valadoc: This option is + required if Graphviz-13.1.2 is not installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + vala, vala-0.56, valac, valadoc, + vala-gen-introspect, and vapigen (symlinks); valac-0.56, + valadoc-0.56, vala-gen-introspect-0.56, and + vapigen-0.56 +
+
+ Installed Library: + libvala-0.56.so and + libvaladoc-0.56.so +
+
+ Installed Directories: + /usr/include/vala-0.56, + /usr/include/valadoc-0.56, /usr/lib/vala-0.56, + /usr/lib/valadoc-0.56, /usr/share/vala, + /usr/share/vala-0.56, /usr/share/valadoc-0.56, and + /usr/share/devhelp/books/vala-0.56 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ valac +

+
+

+ is a compiler that translates Vala source code into C source + and header files +

+
+

+ valadoc +

+
+

+ is a documentation generator for generating API + documentation from Vala source code based on + libvala +

+
+

+ vala-gen-introspect +

+
+

+ generates a GI file for GObject and GLib based packages +

+
+

+ vapigen +

+
+

+ is a utility which generates Vala API (VAPI) files from GI + files +

+
+

+ libvala-0.56.so +

+
+

+ contains the Vala + API functions +

+
+
+
+
+
+
+
+

+ Valgrind-3.25.1 +

+
+
+
+
+
+

+ Introduction to Valgrind +

+

+ Valgrind is an + instrumentation framework for building dynamic analysis + tools. There are Valgrind tools that can automatically detect + many memory management and threading bugs, and profile + programs in detail. Valgrind can also be used to build new + tools. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://sourceware.org/pub/valgrind/valgrind-3.25.1.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 2b424c9a43aa9bf2840d4989b01ea6e7 +

    +
  • +
  • +

    + Download size: 16 MB +

    +
  • +
  • +

    + Estimated disk space required: 419 MB (add 86 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (add 5.7 SBU for tests; + both using parallelism=4) +

    +
  • +
+
+

+ Valgrind Dependencies +

+
+ Optional +
+

+ docbook-xml-4.5 (for tests), GDB-16.3 (for tests), + libaio-0.3.113, LLVM-20.1.8 (with Clang), and + Which-2.23 (for tests) +

+
+
+

+ Installation of Valgrind +

+

+ Install Valgrind by running + the following commands: +

+
sed -i 's|/doc/valgrind||' docs/Makefile.in &&
+
+./configure --prefix=/usr \
+            --datadir=/usr/share/doc/valgrind-3.25.1 &&
+make
+

+ To test the results, issue: make regtest. The tests may + hang forever if GDB-16.3 is not installed. Some tests are + known to hang also, depending on the version of glibc. A few + tests can fail in various suites. Problematic tests can be + disabled by changing the prereq: line in the + corresponding .vgtest file to + prereq: + false. For example: +

+
sed -e 's@prereq:.*@prereq: false@' \
+    -i {helgrind,drd}/tests/pth_cond_destroy_busy.vgtest
+

+ An additional test suite is now available that tests Valgrind + with every system call provided by the kernel. The test suite + is designed to test not only glibc and the kernel's + conformance to standards, but also Valgrind's ability to + handle different system calls. The test suite does require an + internet connection to download the tests, and it takes a + long time to run (an additional 20 SBUs and 1.3GB of disk + space.) If you wish to run this test suite, issue the + following command: make + ltpchecks. Note that the output will show + several failures where Valgrind does not currently support + certain system calls, but the logs for the test suite can be + found in the auxprogs/auxchecks/ltp-full-20250130/valgrind-ltp-logs + directory. +

+
+

+ Note +

+

+ The OpenMP tests are + skipped if libgomp has been compiled with --enable-linux-futex (the default). If + needed, just recompile the libgomp library from the gcc + build tree, passing --disable-linux-futex to configure, storing + the library to some place and changing the link from + /usr/lib/libgomp.so.1 to + point to the new library. +

+
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -i ... + docs/Makefile.in : This sed provides for + installing the documentation in a versioned directory. +

+

+ --enable-lto=yes: This option + allows building Valgrind with LTO (link time optimization). + This produces a smaller/faster Valgrind (up to 10%), but + build time increases to about 5.5 SBU. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + callgrind_annotate, + callgrind_control, cg_annotate, cg_diff, cg_merge, + ms_print, valgrind, valgrind-di-server, + valgrind-listener, and vgdb +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/valgrind, + /usr/libexec/valgrind, /usr/include/valgrind, and + /usr/share/doc/valgrind-3.25.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ valgrind +

+
+

+ is a program for debugging and profiling Linux + executables +

+
+

+ callgrind_annotate +

+
+

+ takes an output file produced by the Valgrind tool Callgrind and + prints the information in an easy-to-read form +

+
+

+ callgrind_control +

+
+

+ controls programs being run by the Valgrind tool Callgrind +

+
+

+ cg_annotate +

+
+

+ is a post-processing tool for the Valgrind tool Cachegrind +

+
+

+ cg_diff +

+
+

+ compares two Cachegrind output files +

+
+

+ cg_merge +

+
+

+ merges multiple Cachegrind output files into one +

+
+

+ ms_print +

+
+

+ takes an output file produced by the Valgrind tool Massif and + prints the information in an easy-to-read form +

+
+

+ valgrind-di-server +

+
+

+ is a server that reads debuginfo from objects + stored on a different machine +

+
+

+ valgrind-listener +

+
+

+ listens on a socket for Valgrind commentary +

+
+

+ vgdb +

+
+

+ is an intermediary between Valgrind and GDB or a + shell +

+
+
+
+
+
+
+
+

+ yasm-1.3.0 +

+
+
+
+
+
+

+ Introduction to yasm +

+

+ Yasm is a complete rewrite + of the NASM-2.16.03 assembler. It supports the + x86 and AMD64 instruction sets, accepts NASM and GAS + assembler syntaxes and outputs binary, ELF32 and ELF64 object + formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: fc9e586751ff789b34b1f21d572d96af +

    +
  • +
  • +

    + Download size: 1.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 27 MB (additional 12 MB + for the tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (additional 0.1 SBU for + the tests) +

    +
  • +
+
+

+ yasm + Dependencies +

+
+ Optional +
+

+ cython-3.1.3 and Python2 +

+
+
+

+ Installation of yasm +

+

+ First, fix a problem when building with gcc-15: +

+
sed -e 's/def __cplusplus/ defined(__cplusplus) || __STDC_VERSION__ >= 202311L/' \
+    -i libyasm/bitvect.h
+

+ Install yasm by running the + following commands: +

+
sed -i 's#) ytasm.*#)#' Makefile.in &&
+
+./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make -j1 check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -i 's#) ytasm.*#)#' + Makefile.in: This sed prevents it compiling 2 + programs (vsyasm and ytasm) that are only of use on Microsoft + Windows. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + yasm +
+
+ Installed Library: + libyasm.a +
+
+ Installed Directory: + /usr/include/libyasm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ yasm +

+
+

+ is a portable, retargetable assembler that supports + the x86 and AMD64 instruction sets, accepts NASM + and GAS assembler syntaxes and outputs binaries in + ELF32 and ELF64 object formats +

+
+

+ libyasm.a +

+
+

+ provides all of the core functionality of + yasm, + for manipulating machine instructions and object + file constructs +

+
+
+
+
+
+
+
+

+ Java +

+
+
+
+
+
+
+
+

+ Java-24.0.2 +

+
+
+
+
+
+

+ About Java +

+

+ Java is different from most of the packages in LFS and BLFS. + It is a programming language that works with files of + bytecode to obtain instructions and executes them in a Java + Virtual Machine (JVM). An introductory java program looks + like: +

+
public class HelloWorld
+{
+    public static void main(String[] args)
+    {
+        System.out.println("Hello, World");
+    }
+}
+

+ This program is saved as HelloWorld.java. The file name, + HelloWorld, must match + the class name. It is then converted into byte code with + javac + HelloWorld.java. The output file is + HelloWorld.class. The program + is executed with java + HelloWorld. This creates a JVM and runs the + code. The 'class' extension must not be specified. +

+

+ Several class files can be combined into one file with the + jar command. + This is similar to the standard tar command. For instance, + the command jar cf myjar.jar + *.class will combine all class files in a + directory into one jar file. These act as library files. +

+

+ The JVM can search for and use classes in jar files + automatically. It uses the CLASSPATH environment variable to search for + jar files. This is a standard list of colon-separated + directory names similar to the PATH environment variable. +

+
+
+

+ Binary JDK Information +

+

+ Creating a JVM from source requires a set of circular + dependencies. The first thing that's needed is a set of + programs called a Java Development Kit (JDK). This set of + programs includes java, javac, jar, and several others. It + also includes several base jar files. +

+

+ To start, we set up a binary installation of the JDK created + by the BLFS editors. It is installed in the /opt directory to allow for multiple + installations, including a source based version. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Binary Package Information +

+
+ +
+
+ +
+

+ Java + Binary Runtime Dependencies +

+

+ alsa-lib-1.2.14, Cups-2.4.12, giflib-5.2.2, + Little + CMS-2.17, and Xorg Libraries +

+
+
+

+ Installation of the Java BinaryJDK +

+

+ Begin by extracting the appropriate binary tarball for your + architecture and changing to the extracted directory. Install + the binary OpenJDK with the + following commands as the root user: +

+
install -vdm755 /opt/OpenJDK-24.0.2-bin &&
+mv -v * /opt/OpenJDK-24.0.2-bin         &&
+chown -R root:root /opt/OpenJDK-24.0.2-bin
+

+ The binary version is now installed. You may create a symlink + to that version by issuing, as the root user: +

+
ln -sfn OpenJDK-24.0.2-bin /opt/jdk
+

+ You may now proceed to Configuring the Java + environment, where the instructions assume that the above + link exists. +

+
+
+
+
+
+

+ OpenJDK-24.0.2 +

+
+
+
+
+
+

+ Introduction to OpenJDK +

+

+ OpenJDK is an open-source + implementation of Oracle's Java Standard Edition platform. + OpenJDK is useful for + developing Java programs, + and provides a complete runtime environment to run + Java programs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ OpenJDK is GPL'd code, with a special exception made for + non-free projects to use these classes in their proprietary + products. In similar fashion to the LGPL, which allows + non-free programs to link to libraries provided by free + software, the GNU General Public + License, version 2, with the Classpath Exception allows + third party programs to use classes provided by free software + without the requirement that the third party software also be + free. As with the LGPL, any modifications made to the free + software portions of a third party application, must also be + made freely available. +

+
+

+ Note +

+

+ The OpenJDK source + includes a very thorough, open source test suite using the + JTreg test harness. The + testing instructions below allow testing the just built JDK + for reasonable compatibility with the proprietary Oracle + JDK. However, in order for an independent implementation to + claim compatibility, it must pass a proprietary + JCK/TCK test suite. No + claims of compatibility, or even partial compatibility, may + be made without passing an approved test suite. +

+

+ Oracle does provide free community access, on a + case-by-case basis, to a closed toolkit to ensure 100% + compatibility with its proprietary JDK. Neither the binary + version provided on the Java-24.0.2 page nor the JVM built with + the instructions below have been tested against the + + TCK. Any version that is built using the instructions + given, cannot claim to be compatible with the proprietary + JDK, without the user applying for, and completing the + compatibility tests themselves. +

+

+ With that in mind, the binaries produced using this build + method are regularly tested against the TCK by the members + listed on the site above. In addition to the community + license above, an educational, non-commercial license for + the TCK can be obtained here. +

+
+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/openjdk/jdk24u/archive/jdk-24.0.2-ga.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 160e4f0de98c13fddba4f1dc0bad3615 +

    +
  • +
  • +

    + Download Size: 115 MB +

    +
  • +
  • +

    + Estimated disk space required: 3.8 GB (add 630 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 4.3 SBU with 4 jobs (add 35 SBU + for tests with 4 jobs) +

    +
  • +
+
+

+ Additional Downloads +

+

+ Optional test + harness +

+
+ +
+

+ OpenJDK Dependencies +

+
+ Required Dependencies +
+

+ An existing binary (Java-24.0.2 or an earlier built version of + this package. The instructions below assume that you are + using Configuring the Java + environment), alsa-lib-1.2.14, cpio-2.15, Cups-2.4.12, libarchive-3.8.1, Which-2.23, Xorg Libraries, + and Zip-3.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ git-2.50.1, Graphviz-13.1.2, mercurial-7.1, + ccache, + pandoc, and + pigz +

+
+
+

+ Installation of OpenJDK +

+

+ If you have downloaded the optional test harness, unpack it + now: +

+
tar -xf ../jtreg-7.5.1+1.tar.gz
+

+ Fix a build failure caused by glibc-2.42: +

+
find src -name *.*pp -exec sed -i 's/uabs(/g_uabs(/' {} \;
+
+

+ Note +

+

+ Before proceeding, you should ensure that your environment + PATH variable contains the + location of the Java compiler used for bootstrapping + OpenJDK. This is the only + requirement for the environment. Modern Java installations + do not need JAVA_HOME and + CLASSPATH is not used here. + Furthermore, OpenJDK developers recommend unsetting + JAVA_HOME and CLASSPATH. +

+

+ The build system does not allow the -j switch in MAKEFLAGS. See the command explanation for + --with-jobs= for more + information on customizing parallelization. +

+
+

+ Configure and build the package with the following commands: +

+
export MAKEFLAGS_HOLD=$MAKEFLAGS           &&
+unset  JAVA_HOME                           &&
+unset  CLASSPATH                           &&
+unset  MAKEFLAGS                           &&
+bash configure --enable-unlimited-crypto    \
+               --disable-warnings-as-errors \
+               --with-stdc++lib=dynamic     \
+               --with-giflib=system         \
+               --with-harfbuzz=system       \
+               --with-jtreg=$PWD/jtreg      \
+               --with-lcms=system           \
+               --with-libjpeg=system        \
+               --with-libpng=system         \
+               --with-zlib=system           \
+               --with-version-build="12"     \
+               --with-version-pre=""        \
+               --with-version-opt=""        \
+               --with-jobs=$(nproc)         \
+               --with-cacerts-file=/etc/pki/tls/java/cacerts &&
+make images
+

+ To test the results, you will need to execute the jtreg + program. You can set the number of concurrent tests by adding + the -conc:<X> value + in the below command (tests will run sequentially otherwise): +

+
export JT_JAVA=$(echo $PWD/build/*/jdk) &&
+jtreg/bin/jtreg -jdk:$JT_JAVA -automatic -ignore:quiet -v1 \
+    test/jdk:tier1 test/langtools:tier1 &&
+unset JT_JAVA
+

+ For more control over the test suite, review the + documentation available in jtreg/doc/jtreg/usage.txt. To review the + results, see the files JTreport/test_{jdk,langtools}/text/stats.txt + and JTreport/test_{jdk,langtools}/text/summary.txt. + You should expect to see around 80 failures and 10 errors. +

+

+ Install the package with the following commands as the + root user: +

+
install -vdm755 /opt/jdk-24.0.2+12             &&
+cp -Rv build/*/images/jdk/* /opt/jdk-24.0.2+12 &&
+chown -R root:root /opt/jdk-24.0.2+12          &&
+for s in 16 24 32 48; do
+  install -vDm644 src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
+                  /usr/share/icons/hicolor/${s}x${s}/apps/java.png
+done
+
+

+ Note +

+

+ If you only wish to install the Java Runtime Environment, + you can substitute build/*/images/jre in the above + cp command. +

+
+

+ There will be plenty of binaries with debug info that take up + over half of the installed size. If you don't care about + debugging, you can remove the info: +

+
find /opt/jdk-24.0.2+12 -name *.debuginfo -delete
+

+ Restore the MAKEFLAGS variable: +

+
export MAKEFLAGS=$MAKEFLAGS_HOLD &&
+unset  MAKEFLAGS_HOLD
+

+ There are now two OpenJDK + SDKs installed in /opt. You + should decide on which one you would like to use as the + default. Normally, you would opt for the just installed + OpenJDK. If so, do the + following as the root user: +

+
ln -v -nsf jdk-24.0.2+12 /opt/jdk
+

+ If desired, you can create .desktop files to add entries in + the menu for java and jconsole. The needed icons + have already been installed. As the root user: +

+
mkdir -pv /usr/share/applications &&
+
+cat > /usr/share/applications/openjdk-java.desktop << "EOF" &&
+[Desktop Entry]
+Name=OpenJDK Java 24.0.2 Runtime
+Comment=OpenJDK Java 24.0.2 Runtime
+Exec=/opt/jdk/bin/java -jar
+Terminal=false
+Type=Application
+Icon=java
+MimeType=application/x-java-archive;application/java-archive;application/x-jar;
+NoDisplay=true
+EOF
+cat > /usr/share/applications/openjdk-jconsole.desktop << "EOF"
+[Desktop Entry]
+Name=OpenJDK Java 24.0.2 Console
+Comment=OpenJDK Java 24.0.2 Console
+Keywords=java;console;monitoring
+Exec=/opt/jdk/bin/jconsole
+Terminal=false
+Type=Application
+Icon=java
+Categories=Application;System;
+EOF
+
+
+

+ Command Explanations +

+

+ bash + configure...: the top level configure is a wrapper around the autotools + one. It is not executable and must be run through + bash. +

+

+ --enable-unlimited-crypto: + Because of limitations on the usage of cryptography in some + countries, there is the possibility to limit the size of + encryption keys and the use of some algorithms in a policy + file. This switch allows to ship a policy file with no + restriction. It is the responsibility of the user to ensure + proper adherence to the law. +

+

+ --disable-warnings-as-errors: + This switch disables use of -Werror in the build. +

+

+ --with-stdc++lib=dynamic: This + switch forces the build system to link to libstdc++.so (dynamic) instead of + libstdc++.a (static). +

+

+ --with-jobs=$(nproc): The + -j passed to make + does not work with make as invoked here. By default, the + build system will use the number of CPUs - 1. +

+

+ --with-jtreg=$PWD/jtreg: This + switch tells configure where to find jtreg. Omit if you have + not downloaded the optional test suite. +

+

+ --with-{giflib,harfbuzz,lcms,libjpeg,libpng,zlib}=system: + These switches force the build system to use the system + libraries instead of the bundled versions. +

+

+ --with-version-build: + Currently, the build system does not include the build number + in the version string. It has to be specified here. +

+

+ --with-version-pre: + This switch allows you to prefix the version string with a + custom string. +

+

+ --with-version-opt: + This switch allows you to add an optional build description + to the version string. +

+

+ --with-cacerts-file=/etc/pki/tls/java/cacerts: + Specifies where to find a cacerts file, /etc/pki/tls/java/ on a BLFS system. + Otherwise, an empty one is created. You can use the + /usr/sbin/make-ca + --force command to generate it, once you have + installed the Java binaries. +

+

+ --with-boot-jdk: This switch + provides the location of the temporary JDK. It is normally not needed if + java is found + in the PATH. +

+
+
+

+ Configuring + OpenJDK +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Normally, the Java environment has been configured after + installing the binary version, and can be used with the + just built package as well. Review Configuring the Java + environment in case you want to modify something. +

+

+ To test if the man pages are correctly installed, issue + source + /etc/profile and man java to display the + respective man page. +

+
+
+
+
+
+

+ Setting up the JRE + Certificate Authority Certificates (cacerts) file +

+
+
+
+

+ If you have run the instructions on the make-ca-1.16.1 + page, you only need to create a symlink in the default + location for the cacerts + file. As user root: +

+
ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts
+

+ To check the installation, issue: +

+
cd /opt/jdk
+bin/keytool -list -cacerts
+

+ At the prompt Enter keystore + password:, enter changeit (the default) or + just press the “Enter” key. If the cacerts file was installed correctly, you + will see a list of the certificates with related + information for each one. If not, you need to reinstall + them. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + jar, jarsigner, java, javac, + javadoc, javap, jcmd, jconsole, jdb, jdeprscan, jdeps, + jfr, jhsdb, jimage, jinfo, jlink, jmap, jmod, + jnativescan, jpackage, jps, jrunscript, jshell, jstack, + jstat, jstatd, jwebserver, keytool, rmiregistry, and + serialver +
+
+ Installed Libraries: + 37 libraries in + /opt/jdk-24.0.2+12/lib/ +
+
+ Installed Directory: + /opt/jdk-24.0.2+12 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ jar +

+
+

+ combines multiple files into a single jar archive +

+
+

+ jarsigner +

+
+

+ signs jar files and verifies the signatures and + integrity of a signed jar file +

+
+

+ java +

+
+

+ launches a Java application by starting a Java + runtime environment, loading a specified class and + invoking its main method +

+
+

+ javac +

+
+

+ reads class and interface definitions, written in + the Java programming language, and compiles them + into bytecode class files +

+
+

+ javadoc +

+
+

+ parses the declarations and documentation comments + in a set of Java source files and produces a + corresponding set of HTML pages describing the + classes, interfaces, constructors, methods, and + fields +

+
+

+ javap +

+
+

+ disassembles a Java class file +

+
+

+ jcmd +

+
+

+ is a utility to send diagnostic command requests to + a running Java Virtual Machine +

+
+

+ jconsole +

+
+

+ is a graphical console tool to monitor and manage + both local and remote Java applications and virtual + machines +

+
+

+ jdb +

+
+

+ is a simple command-line debugger for Java classes +

+
+

+ jdeprscan +

+
+

+ scans class or jar files for uses of deprecated API + elements +

+
+

+ jdeps +

+
+

+ shows the package-level or class-level dependencies + of Java class files +

+
+

+ jfr +

+
+

+ is a tool for working with “Flight + Recorder” files +

+
+

+ jhsdb +

+
+

+ is a tool to analyze the content of a core dump + from a crashed Java Virtual Machine (JVM) +

+
+

+ jimage +

+
+

+ is used to list, extract, verify, or get + information about modules in jimage format +

+
+

+ jinfo +

+
+

+ prints Java configuration information for a given + Java process, core file, or a remote debug server +

+
+

+ jlink +

+
+

+ is used to assemble and optimize a set of modules + and their dependencies into a custom runtime image +

+
+

+ jmap +

+
+

+ prints shared object memory maps or heap memory + details of a given process, core file, or a remote + debug server +

+
+

+ jmod +

+
+

+ creates JMOD files and lists the content of + existing JMOD files +

+
+

+ jnativescan +

+
+

+ finds methods that access native functionality when + run. This will include restricted method calls and + 'native' method declarations +

+
+

+ jpackage +

+
+

+ generates java application packages and images +

+
+

+ jps +

+
+

+ lists the instrumented JVMs on the target system +

+
+

+ jrunscript +

+
+

+ is a command line script shell +

+
+

+ jshell +

+
+

+ is an interactive tool for learning the Java + programming language and prototyping Java code +

+
+

+ jstack +

+
+

+ prints Java stack traces of Java threads for a + given Java process, core file, or a remote debug + server +

+
+

+ jstat +

+
+

+ displays performance statistics for an instrumented + JVM +

+
+

+ jstatd +

+
+

+ is an RMI server application that monitors for the + creation and termination of instrumented JVMs +

+
+

+ jwebserver +

+
+

+ provides a minimal HTTP server, designed to be used + for prototyping, testing, and debugging +

+
+

+ keytool +

+
+

+ is a key and certificate management utility +

+
+

+ rmiregistry +

+
+

+ creates and starts a remote object registry on the + specified port on the current host +

+
+

+ serialver +

+
+

+ returns the serialVersionUID for one or more + classes in a form suitable for copying into an + evolving class +

+
+
+
+
+
+
+
+

+ Configuring the Java + environment +

+
+
+
+
+
+

+ Setting up the + environment +

+

+ After the package installation is complete, the next step is + to make sure that the system can properly find the files. If + you set up your login scripts as recommended in The Bash Shell Startup + Files, update the environment by creating the + openjdk.sh script, as the + root user: +

+
cat > /etc/profile.d/openjdk.sh << "EOF"
+# Begin /etc/profile.d/openjdk.sh
+
+# Set JAVA_HOME directory
+JAVA_HOME=/opt/jdk
+
+# Adjust PATH
+pathappend $JAVA_HOME/bin
+
+# Auto Java CLASSPATH: Copy jar files to, or create symlinks in, the
+# /usr/share/java directory.
+
+AUTO_CLASSPATH_DIR=/usr/share/java
+
+pathprepend . CLASSPATH
+
+for dir in `find ${AUTO_CLASSPATH_DIR} -type d 2>/dev/null`; do
+    pathappend $dir CLASSPATH
+done
+
+for jar in `find ${AUTO_CLASSPATH_DIR} -name "*.jar" 2>/dev/null`; do
+    pathappend $jar CLASSPATH
+done
+
+export JAVA_HOME
+
+# By default, Java creates several files in a directory named
+# /tmp/hsperfdata_[username]. This directory contains files that are used for
+# performance monitoring and profiling, but aren't normally needed on a BLFS
+# system. This environment variable disables that feature.
+_JAVA_OPTIONS="-XX:-UsePerfData"
+
+export _JAVA_OPTIONS
+
+unset AUTO_CLASSPATH_DIR dir jar _JAVA_OPTIONS
+
+# End /etc/profile.d/openjdk.sh
+EOF
+

+ If Sudo-1.9.17p2 is installed, the super + user should have access to the above variables. Execute the + following commands as the root user: +

+
cat > /etc/sudoers.d/java << "EOF"
+Defaults env_keep += JAVA_HOME
+Defaults env_keep += CLASSPATH
+Defaults env_keep += _JAVA_OPTIONS
+EOF
+

+ To use mandb to + include the OpenJDK man pages in its database, issue, as the + root user: +

+
cat >> /etc/man_db.conf << "EOF" &&
+# Begin Java addition
+MANDATORY_MANPATH     /opt/jdk/man
+MANPATH_MAP           /opt/jdk/bin     /opt/jdk/man
+MANDB_MAP             /opt/jdk/man     /var/cache/man/jdk
+# End Java addition
+EOF
+
+mkdir -p /var/cache/man &&
+mandb -c /opt/jdk/man
+
+
+

+ Setting up the + Certificate Authority Certificates for Java +

+

+ OpenJDK uses its own format + for the CA certificates. The Java security modules use + $JAVA_HOME/lib/security/cacerts by default. In order + to keep all the certificates in one place, we use + /etc/pki/tls/java/cacerts. The + instructions on the make-ca-1.16.1 page previously created + the file located in /etc/pki/tls/java. Set up a symlink in the + default location as the root + user: +

+
ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts
+

+ Use the following command to check if the cacerts file has been successfully + installed: +

+
/opt/jdk/bin/keytool -list -cacerts
+

+ At the prompt Enter keystore + password:, enter changeit (the default) or + just press the “Enter” key. If the cacerts file was installed correctly, you + will see a list of the certificates with related information + for each one. If not, you need to reinstall them. +

+

+ If you later install a new JVM, you just have to create the + symlink in the default location to be able to use the + cacerts. +

+
+
+
+
+
+

+ apache-ant-1.10.15 +

+
+
+
+
+
+

+ Introduction to Apache Ant +

+

+ The Apache Ant package is a + Java-based build tool. In + theory, it is like the make command, but without + make's + wrinkles. Ant is different. + Instead of a model that is extended with shell-based + commands, Ant is extended + using Java classes. Instead + of writing shell commands, the configuration files are + XML-based, calling out a target tree that executes various + tasks. Each task is run by an object that implements a + particular task interface. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Apache Ant Dependencies +

+
+ Required +
+

+ A JDK (Java Binary or OpenJDK-24.0.2) + and GLib-2.84.4 +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+
+

+ Installation of Apache Ant +

+

+ Build a limited bootstrap version of Apache Ant using the following command: +

+
./bootstrap.sh
+

+ Download the runtime dependencies using the fetch.xml ant build script: +

+
bootstrap/bin/ant -f fetch.xml -Ddest=optional
+

+ Build Apache Ant by running + the following command: +

+
./build.sh -Ddist.dir=$PWD/ant-1.10.15 dist
+

+ Install, as the root user: +

+
cp -rv ant-1.10.15 /opt/            &&
+chown -R root:root /opt/ant-1.10.15 &&
+ln -sfv ant-1.10.15 /opt/ant
+
+
+

+ Command Explanations +

+

+ bootstrap/bin/ant -f fetch.xml + -Ddest=optional: Downloads the missing + dependencies to the user's home directory, and copies them + into the source tree (in the lib/optional directory, where ant picks them up at build + time). +

+

+ ./build.sh + -Ddist.dir=$PWD/ant-1.10.15 dist: This + command builds, tests, then installs the package into a + temporary directory. +

+
+
+

+ Configuring Apache Ant +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/ant/ant.conf, + ~/.ant/ant.conf, and + ~/.antrc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Some packages will require ant to be in the search + path and the ANT_HOME + environment variable defined. Satisfy these requirements by + issuing, as the root user: +

+
cat > /etc/profile.d/ant.sh << EOF
+# Begin /etc/profile.d/ant.sh
+
+pathappend /opt/ant/bin
+export ANT_HOME=/opt/ant
+
+# End /etc/profile.d/ant.sh
+EOF
+

+ The above instructions assume you have configured your + system as described in The Bash Shell Startup + Files. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ant, antRun, antRun.pl, + complete-ant-cmd.pl, runant.pl, and runant.py +
+
+ Installed Libraries: + Numerous ant*.jar and dependent libraries in + $ANT_HOME/lib +
+
+ Installed Directories: + /opt/ant-1.10.15 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ant +

+
+

+ is a Java based + build tool used by many packages instead of the + conventional make program +

+
+

+ antRun +

+
+

+ is a support script used to start ant build scripts + in a given directory +

+
+

+ antRun.pl +

+
+

+ is a Perl script + that provides similar functionality offered by the + antRun script +

+
+

+ complete-ant-cmd.pl +

+
+

+ is a Perl script + that allows Bash + to complete an ant command-line +

+
+

+ runant.pl +

+
+

+ is a Perl wrapper + script used to invoke ant +

+
+

+ runant.py +

+
+

+ is a Python + wrapper script used to invoke ant +

+
+

+ ant*.jar +

+
+

+ files are the Apache + Ant Java + class libraries +

+
+
+
+
+
+
+
+
+
+

+ Part IV. Networking +

+
+
+
+
+
+
+
+

+ Chapter 14. Connecting to a + Network +

+
+
+
+
+

+ The LFS book covers setting up networking by connecting to a LAN + with a static IP address. There are other methods used to obtain + an IP address and connect to a LAN and other networks (such as + the Internet). The most popular methods (DHCP and PPP) are + covered in this chapter. +

+

+ DHCP stands for Dynamic Host Configuration Protocol. It is a + protocol used by many sites to automatically provide information + such as IP addresses, subnet masks and routing information to + computers. If your network uses DHCP, you will need a DHCP client + in order to connect to it. +

+
+
+
+

+ dhcpcd-10.2.4 +

+
+
+
+
+
+

+ Introduction to dhcpcd +

+

+ dhcpcd is an implementation + of the DHCP client specified in RFC2131. A DHCP client is + useful for connecting your computer to a network which uses + DHCP to assign network addresses. dhcpcd strives to be a + fully featured, yet very lightweight DHCP client. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ dhcpcd Dependencies +

+
+ Optional +
+

+ LLVM-20.1.8 (with Clang), ntp-4.2.8p18, chronyd, and + ypbind +

+
+
+

+ Privilege + separation +

+

+ Recent releases of dhcpcd + optionally support privilege separation. As the practical + security benefits of this are unclear for a program like + dhcpcd and the setup is more + complicated, the book currently defaults to disable it. +

+

+ If you however would like to use privilege separation, + additional installation steps are necessary to set up the + proper environment. Issue the following commands as the + root user: +

+
install  -v -m700 -d /var/lib/dhcpcd &&
+
+groupadd -g 52 dhcpcd        &&
+useradd  -c 'dhcpcd PrivSep' \
+         -d /var/lib/dhcpcd  \
+         -g dhcpcd           \
+         -s /bin/false       \
+         -u 52 dhcpcd &&
+chown    -v dhcpcd:dhcpcd /var/lib/dhcpcd 
+
+
+

+ Installation of dhcpcd +

+

+ Build dhcpcd without + privilege separation by running the following command: +

+
./configure --prefix=/usr                \
+            --sysconfdir=/etc            \
+            --libexecdir=/usr/lib/dhcpcd \
+            --dbdir=/var/lib/dhcpcd      \
+            --runstatedir=/run           \
+            --disable-privsep         &&
+make
+

+ Alternatively, build dhcpcd + with privilege separation by running the following commands: +

+
./configure --prefix=/usr                \
+            --sysconfdir=/etc            \
+            --libexecdir=/usr/lib/dhcpcd \
+            --dbdir=/var/lib/dhcpcd      \
+            --runstatedir=/run           \
+            --privsepuser=dhcpcd         &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --libexecdir=/usr/lib/dhcpcd: + This switch sets a better location for the dhcpcd internal + libraries. +

+

+ --dbdir=/var/lib/dhcpcd: This + switch adjusts the database directory because the default + directory, /var/db, is not + FHS-compliant. +

+

+ --runstatedir=/run: + This switch sets the runtime state directory because the + default /var/run is a symbolic + link to /run, and using + /var/run is deprecated. +

+

+ --disable-privsep: + This switch disables privilege separation, which is the + default in dhcpcd. This switch is not used in the build + configuration where privilege separation is used. +

+

+ --privsepuser=dhcpcd: + This switch sets the privilege separation user in the build + configuration where privilege escalation is used. +

+

+ --with-hook=...: You can + optionally install more hooks, for example to install some + configuration files such as ntp.conf. A set of hooks can be found in + the dhcpcd-hooks directory in + the build tree. +

+
+
+

+ Configuring dhcpcd +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/dhcpcd.conf +

+
+
+
+
+
+

+ General + Configuration Information +

+
+
+
+

+ To configure dhcpcd, you need to first + install the network service script, /usr/lib/services/dhcpcd included in the + blfs-bootscripts-20250225 package + (as the root user): +

+
make install-service-dhcpcd
+
+

+ Note +

+

+ The + default for dhcpcd is to set the + hostname and mtu. It also overwrites /etc/resolv.conf and /etc/ntp.conf. These modifications to + system files are done by hooks which are stored in + /usr/lib/dhcpcd/dhcpcd-hooks. You can + change this behavior by removing or adding hooks from/to + that directory. The execution of hooks can be disabled by + using the --nohook + (-C) command line option or + by the nohook option in the + /etc/dhcpcd.conf file. +

+
+

+ Finally, + as the root user, create + the /etc/sysconfig/ifconfig.eth0 + configuration file using the following commands. Adjust + appropriately for additional interfaces: +

+
cat > /etc/sysconfig/ifconfig.eth0 << "EOF"
+ONBOOT="yes"
+IFACE="eth0"
+SERVICE="dhcpcd"
+DHCP_START="-b -q -h $HOSTNAME <insert appropriate start options here>"
+DHCP_STOP="-k <insert additional stop options here>"
+EOF
+

+ For more information on the appropriate DHCP_START and DHCP_STOP values, examine the man page for + dhcpcd. +

+
+
+
+
+
+

+ Configuration Information: fixed + ip +

+
+
+
+

+ Although + not usual, it is possible that you need to configure + dhcpcd to use a fixed ip. + Here, we give an example. As the root user, create the /etc/sysconfig/ifconfig.eth0 + configuration file using the following commands. Adjust + appropriately for additional interfaces and for the actual + ip and router you need: +

+
cat > /etc/sysconfig/ifconfig.eth0 << "EOF"
+ONBOOT="yes"
+IFACE="eth0"
+SERVICE="dhcpcd"
+DHCP_START="-b -q -S ip_address=192.168.0.10/24 -S routers=192.168.0.1"
+DHCP_STOP="-k"
+EOF
+

+ You can either use DNS servers in /etc/resolv.conf from another system, + your preferred servers, or just the example /etc/resolv.conf.head file below as is: +

+
cat > /etc/resolv.conf.head << "EOF"
+# OpenDNS servers
+nameserver 208.67.222.222
+nameserver 208.67.220.220
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + dhcpcd +
+
+ Installed Library: + /usr/lib/dhcpcd/dev/udev.so +
+
+ Installed Directory: + /{usr,var}/lib/dhcpcd and + /usr/share/dhcpcd +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ dhcpcd +

+
+

+ is an implementation of the DHCP client specified + in RFC2131 +

+
+

+ udev.so +

+
+

+ adds udev support for interface arrival and + departure; this is because udev likes to rename the + interface, which it can't do if dhcpcd grabs it + first +

+
+
+
+
+
+
+
+
+

+ Chapter 15. Networking Programs +

+
+
+
+
+

+ These applications are generally client applications used to + access the appropriate server across the building or across the + world. Tcpwrappers and + portmap are support programs for + daemons that you may have running on your machine. +

+
+
+
+

+ bridge-utils-1.7.1 +

+
+
+
+
+
+

+ Introduction to bridge-utils +

+

+ The bridge-utils package + contains a utility needed to create and manage bridge + devices. This is useful in setting up networks for a hosted + virtual machine (VM). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ bridge-utils Dependencies +

+
+ Optional (to run tests) +
+

+ Net-tools-2.10 +

+
+
+

+ Kernel Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
[*] Networking support --->                                                [NET]
+  Networking options --->
+    <*/M> 802.1d Ethernet Bridging                                      [BRIDGE]
+
+
+

+ Installation of bridge-utils +

+

+ Install bridge-utils by + running the following commands: +

+
autoconf                  &&
+./configure --prefix=/usr &&
+make
+

+ Testing the results requires running the six shell scripts in + the tools/ directory. Two of + the tests require two ethernet ports. Some tests will not + preserve the current network configuration. See tests/README for details. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuring bridge-utils +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ To automate bridge creation and configuration, install the + /usr/lib/services/bridge + service script included in the blfs-bootscripts-20250225 package. +

+
make install-service-bridge
+
+

+ Note +

+

+ The bridge script depends + on the commands /sbin/ifup and + /sbin/ifdown and the + service script ipv4-static from the + LFS bootscripts + dated January 27, 2012 or later. +

+
+

+ The following configuration file will create a bridge + device at boot time and attach the eth0 device to it. If + more than one device is desired, use a space separated list + of INTERFACE_COMPONENTS. This configuration is useful when + planning to run a virtual machine such as kvm/qemu. +

+

+ Other SERVICE combinations are + possible, for example, SERVICE="bridge + dhcp". In that case, the address parameters are not + needed, but do not interfere if present. The bridge service + may also be used alone, but will require additional + subsequent configuration. +

+
+

+ Caution +

+

+ Do not run a parallel configuration for a device in the + INTERFACE_COMPONENTS list. For instance, in the example + below, do not configure /etc/sysconfig/ifconfig.eth0 to run at + boot time. The command ifdown br0 followed by + command ifup + eth0 will work, but don't try to have + both up at the same time. +

+
+
cat > /etc/sysconfig/ifconfig.br0 << "EOF"
+ONBOOT=yes
+IFACE=br0
+VIRTINT=yes
+SERVICE="bridge ipv4-static"  # Space separated
+IP=192.168.1.32
+GATEWAY=192.168.1.1
+PREFIX=24
+BROADCAST=192.168.1.255
+CHECK_LINK=no                 # Don't check before bridge is created
+STP=no                        # Spanning tree protocol, default no
+INTERFACE_COMPONENTS="eth0"   # Add to IFACE, space separated devices
+IP_FORWARD=true
+EOF
+

+ All addresses should be changed to meet your circumstance. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + brctl +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ brctl +

+
+

+ is a program used to set up, maintain, and inspect + the ethernet bridge configuration in the linux + kernel +

+
+
+
+
+
+
+
+

+ cifs-utils-7.4 +

+
+
+
+
+
+

+ Introduction to cifs-utils +

+

+ The cifs-utils package + provides a means for mounting SMB/CIFS shares on a Linux + system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ cifs-utils Dependencies +

+
+ Required +
+

+ Talloc-2.4.3 +

+
+ Recommended +
+ +
+ Optional +
+

+ docutils-0.21.2 (to create the man + pages), keyutils-1.6.3 (required to build PAM + module), Linux-PAM-1.7.1, Samba-4.22.4, and libcap-2.76 with PAM or libcap-ng +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
File systems --->
+  [*] Network File Systems --->                            [NETWORK_FILESYSTEMS]
+    <*/M> SMB3 and CIFS support (advanced network filesystem)             [CIFS]
+

+ Depending on your server configuration, additional kernel + options may be required. +

+
+
+

+ Installation of cifs-utils +

+

+ First, make the build system compatible with GCC-15: +

+
autoreconf -fiv
+

+ Install cifs-utils by + running the following commands: +

+
./configure --prefix=/usr \
+            --disable-pam \
+            --disable-systemd &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-pam: Do not + build PAM support. Remove it and use --with-pamdir (see below), if Linux-PAM-1.7.1 + is installed and you wish PAM support. +

+

+ --disable-systemd: + Disable systemd specific behavior for mount.cifs. +

+

+ --with-pamdir=/usr/lib/security: + Install the PAM module in /usr/lib/security. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cifs.idmap, cifs.upcall, cifscreds, + getcifsacl, mount.cifs, mount.smb3, setcifsacl, + smb2-quota, and smbinfo +
+
+ Installed Library: + /usr/lib/cifs-utils/idmapwb.so and + optionally PAM module + /usr/lib/security/pam_cifscreds.so +
+
+ Installed Directory: + /usr/lib/cifs-utils +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cifs.idmap +

+
+

+ is a userspace helper program for the linux CIFS + client filesystem. There are a number of activities + that the kernel cannot easily do itself. This + program is a callout program that does these things + for the kernel and then returns the result. It is + not intended to be run from the command-line +

+
+

+ cifs.upcall +

+
+

+ is a userspace helper program for the linux CIFS + client filesystem. It is intended to be run when + the kernel calls request-key for a particular key + type. It is not intended to be run from the + command-line +

+
+

+ cifscreds +

+
+

+ is a tool for managing credentials (username and + password) for the purpose of establishing sessions + in multiuser mounts +

+
+

+ getcifsacl +

+
+

+ is a userspace helper to display an ACL in a + security descriptor for Common Internet File System + (CIFS) +

+
+

+ mount.cifs +

+
+

+ mounts a Linux CIFS filesystem. It is usually + invoked indirectly by the mount(8) + command when using the -t + cifs option +

+
+

+ mount.smb3 +

+
+

+ mounts a SMB3-based filesystem. It is usually + invoked indirectly by the mount(8) + command when using the -t + smb3 option +

+
+

+ setcifsacl +

+
+

+ is intended to alter an ACL of a security + descriptor for a file system object +

+
+

+ smb3-quota +

+
+

+ displays quota information for a SMB filesystem +

+
+

+ smbinfo +

+
+

+ displays SMB-specific file information, such as + security descriptors and quotas +

+
+
+
+
+
+
+
+

+ NcFTP-3.3.0 +

+
+
+
+
+
+

+ Introduction to NcFTP +

+

+ The NcFTP package contains a + powerful and flexible interface to the Internet standard File + Transfer Protocol. It is intended to replace or supplement + the stock ftp + program. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of NcFTP +

+

+ To install NcFTP, run the + following commands: +

+
CC=/usr/bin/gcc \
+./configure --prefix=/usr --sysconfdir=/etc &&
+make -C libncftp shared &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make -C libncftp soinstall &&
+make install
+
+
+

+ Command Explanations +

+

+ CC=/usr/bin/gcc. This environment + variable ensures that gcc is used if LLVM-20.1.8 is + installed. +

+

+ make -C ... && make + ...: These commands make and install the + dynamic library libncftp which + is then used to link against when compiling the main program. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ncftp, ncftpbatch, ncftpget, + ncftpls, ncftpput, and ncftpspooler +
+
+ Installed Library: + libncftp.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ncftp +

+
+

+ is a browser program for File Transfer Protocol +

+
+

+ ncftpbatch +

+
+

+ is an individual batch FTP job processor +

+
+

+ ncftpget +

+
+

+ is an internet file transfer program for scripts + used to retrieve files +

+
+

+ ncftpls +

+
+

+ is an internet file transfer program for scripts + used to list files +

+
+

+ ncftpput +

+
+

+ is an internet file transfer program for scripts + used to transfer files +

+
+

+ ncftpspooler +

+
+

+ is a global batch FTP job processor daemon +

+
+
+
+
+
+
+
+

+ Net-tools-2.10 +

+
+
+
+
+
+

+ Introduction to Net-tools +

+

+ The Net-tools package is a + collection of programs for controlling the network subsystem + of the Linux kernel. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Net-tools +

+

+ The instructions below + automate the configuration process by piping yes to the make command. If you wish + to run the interactive configuration process (by changing the + instruction to just make), but you are not sure + how to answer all the questions, then just accept the + defaults. This will be just fine in the majority of cases. + What you're asked here is a bunch of questions about which + network protocols you've enabled in your kernel. The default + answers will enable the tools from this package to work with + the most common protocols: TCP, PPP, and several others. You + still need to actually enable these protocols in the + kernel—what you do here is merely tell the package to include + support for those protocols in its programs, but it's up to + the kernel to make the protocols available. +

+
+

+ Note +

+

+ This package has several unneeded protocols and hardware + device specific functions that are obsolete. To only build + the minimum needed for your system, skip the yes command and answer + each question interactively. The minimum needed options are + 'UNIX protocol family' and 'INET (TCP/IP) protocol family'. +

+
+

+ For this package, we use the DESTDIR method of installation + in order to easily remove files from the build that overwrite + those that we want to keep or are not appropriate for our + system. +

+

+ Install Net-tools by running + the following commands: +

+
export BINDIR='/usr/bin' SBINDIR='/usr/bin' &&
+yes "" | make -j1                           &&
+make DESTDIR=$PWD/install -j1 install       &&
+rm    install/usr/bin/{nis,yp}domainname    &&
+rm    install/usr/bin/{hostname,dnsdomainname,domainname,ifconfig} &&
+rm -r install/usr/share/man/man1            &&
+rm    install/usr/share/man/man8/ifconfig.8 &&
+unset BINDIR SBINDIR
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
chown -R root:root install &&
+cp -a install/* /
+
+
+

+ Command Explanations +

+

+ export BINDIR='/usr/bin' + SBINDIR='/usr/bin': Ensure the executables + are installed in the correct location. +

+

+ yes "" | make : + Piping yes to + make config + skips the interactive configuration and accepts the defaults. +

+

+ rm ...: Remove + unneeded programs and man pages. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + arp, ipmaddr, iptunnel, mii-tool, + nameif, netstat, plipconfig, rarp, route, and + slattach +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ arp +

+
+

+ is used to manipulate the kernel's ARP cache, + usually to add or delete an entry, or to dump the + entire cache +

+
+

+ ipmaddr +

+
+

+ adds, deletes and shows an interface's multicast + addresses +

+
+

+ iptunnel +

+
+

+ adds, changes, deletes and shows an interface's + tunnels +

+
+

+ mii-tool +

+
+

+ checks or sets the status of a network interface's + Media Independent Interface (MII) unit +

+
+

+ nameif +

+
+

+ names network interfaces based on MAC addresses +

+
+

+ netstat +

+
+

+ is used to report network connections, routing + tables, and interface statistics +

+
+

+ plipconfig +

+
+

+ is used to fine tune the PLIP device parameters, to + improve its performance +

+
+

+ rarp +

+
+

+ is used to manipulate the kernel's RARP table +

+
+

+ route +

+
+

+ is used to manipulate the IP routing table +

+
+

+ slattach +

+
+

+ attaches a network interface to a serial line. This + allows you to use normal terminal lines for + point-to-point links to others computers +

+
+
+
+
+
+
+
+

+ NFS-Utils-2.8.3 +

+
+
+
+
+
+

+ Introduction to NFS Utilities +

+

+ The NFS Utilities package + contains the userspace server and client tools necessary to + use the kernel's NFS abilities. NFS is a protocol that allows + sharing file systems over the network. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ NFS + Utilities Dependencies +

+
+ Required +
+

+ libevent-2.1.12, libnl-3.11.0, libtirpc-1.3.6, libxml2-2.14.5, + rpcsvc-proto-1.4.4, and SQLite-3.50.4 +

+
+ Optional +
+

+ Cyrus SASL-2.1.28 (for SASL + authentication), libnsl-2.0.1 (for NIS client support), + LVM2-2.03.34 (libdevmapper for NFSv4 + support), OpenLDAP-2.6.10 (for LDAP + authentication), MIT Kerberos V5-1.22.1 or + libgssapi, + and librpcsecgss + (for GSS and RPC security support), and libcap-2.76 with + PAM +

+
+ Required (runtime) +
+

+ rpcbind-1.2.8 +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration + (choose client and/or server support as appropriate) and + recompile the kernel if necessary: +

+
File systems --->
+  [*] Network File Systems --->                            [NETWORK_FILESYSTEMS]
+    <*/M> NFS client support                                            [NFS_FS]
+    <*/M> NFS server support                                              [NFSD]
+

+ Select the appropriate sub-options that appear when the above + options are selected. +

+
+

+ Note +

+

+ In BLFS we assume that nfs v3 will be used. If the + server offers nfs v4 + (for linux, CONFIG_NFSD_V4) then auto-negotiation for v3 + will fail and you will need to add nfsver=3 to the mount options. This also + applies if that option is enabled in the client's kernel, for example in + a distro trying to mount from a BLFS v3 server. +

+

+ Even if neither end of the connection supports nfs v4, + adding nfsver=3 is still + beneficial because it prevents an error message "NFS: bad + mount option value specified: minorversion=1" being logged + on every mount. +

+
+
+
+

+ Installation of NFS Utilities +

+

+ Install NFS Utilities by + running the following commands: +

+
./configure --prefix=/usr       \
+            --sysconfdir=/etc   \
+            --sbindir=/usr/sbin \
+            --disable-nfsv4     \
+            --disable-gss       \
+            LIBS="-lsqlite3 -levent_core" &&
+make
+

+ Now, as the root user: +

+
make install                       &&
+chmod u+w,go+r /usr/sbin/mount.nfs &&
+chown nobody:nogroup /var/lib/nfs
+

+ The tests for this package require that the package be + installed. In addition, the rpc.statd daemon must not be + running and the tests need to be run as the root user. +

+

+ To test the results, issue, as root: +

+
make check
+
+
+

+ Command Explanations +

+

+ --disable-gss: + Disables GSSAPI support in this package. If you need to use + it, make sure that MIT Kerberos V5-1.22.1 is + installed, and that you have GSSAPI support enabled in + libtirpc-1.3.6 as well. +

+

+ LIBS="-lsqlite3 + -levent_core": is required for the fsidd program. +

+

+ chown nobody:nogroup + /var/lib/nfs: The rpc.statd program uses the + ownership of this directory to set it's UID and GID. This + command sets those to unprivileged entries. +

+
+
+

+ Configuring NFS Utilities +

+
+
+
+
+

+ Server Configuration +

+
+
+
+

+ /etc/exports contains the + exported directories on NFS servers. Refer to the + exports.5 manual page for the + syntax of this file. Also refer to the "NFS HowTo" + available at https://nfs.sourceforge.net/nfs-howto/ + for information on how to configure the servers and clients + in a secure manner. For example, for sharing the + /home directory over the + local network, the following line may be added: +

+
cat >> /etc/exports << EOF
+/home 192.168.0.0/24(rw,subtree_check,anonuid=99,anongid=99)
+EOF
+
+

+ Note +

+

+ Be sure to replace the directory, network address. and + prefix above to match your network. The only space in the + line above should be between the directory and the + network address. +

+
+
+
+
+
+
+ Boot Script +
+
+
+
+

+ Install the /etc/rc.d/init.d/nfs-server init + script included in the blfs-bootscripts-20250225 package + to start the server at boot. +

+
make install-nfs-server
+

+ Now create the /etc/sysconfig/nfs-server configuration + file: +

+
cat > /etc/sysconfig/nfs-server << "EOF"
+PORT="2049"
+PROCESSES="8"
+KILLDELAY="10"
+EOF
+
+

+ Note +

+

+ The above parameters may be optionally placed in + /etc/sysconfig/rc.site. +

+
+
+
+
+
+
+
+

+ Client Configuration +

+
+
+
+

+ /etc/fstab contains the + directories that are to be mounted on the client. + Alternately the partitions can be mounted by using the + mount command + with the proper options. To mount the /home and /usr partitions, add the following to the + /etc/fstab: +

+
<server-name>:/home  /home nfs   rw,_netdev 0 0
+<server-name>:/usr   /usr  nfs   ro,_netdev 0 0
+

+ The options which can be used are specified in man 5 nfs . If both the + client and server are running recent versions of linux, + most of the options will be negotiated (but see the Note + above on nfsver=3). You can specify either rw or ro, + _netdev if the filesystem is + to be automatically mounted at boot, or noauto (and perhaps user) for other filesystems. +

+

+ If the fileserver is not running a recent version of linux, + you may need to specify other options. +

+
+
+
+
+
+ Boot Script +
+
+
+
+
+

+ Note +

+

+ The following boot script + is not required if the nfs-server script is installed. +

+
+

+ Install the /etc/rc.d/init.d/nfs-client init + script included in the blfs-bootscripts-20250225 package + to start the client services at boot. +

+
make install-nfs-client
+

+ To automatically mount nfs filesystems, clients will also + need to install the netfs + bootscript as described in Configuring for + Network Filesystems. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + exportfs, fsidd, mountstats, + mount.nfs, mount.nfs4 (link to mount.nfs), nfsconf, + nfsdclnts, nfsiostat, nfsstat, rpc.mountd, rpc.nfsd, + rpc.statd, rpcdebug, showmount, sm-notify, start-statd, + umount.nfs (link to mount.nfs), and umount.nfs4 (link to + mount.nfs) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /var/lib/nfs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ exportfs +

+
+

+ maintains a list of NFS exported file systems +

+
+

+ fsidd +

+
+

+ offers a local UNIX domain socket interface for all + NFS userspace to query the reexport database +

+
+

+ mountstats +

+
+

+ displays NFS client per-mount statistics +

+
+

+ mount.nfs +

+
+

+ is used to mount a network share using NFS +

+
+

+ mount.nfs4 +

+
+

+ is used to mount a network share using NFSv4 +

+
+

+ nfsconf +

+
+

+ can be used to test for and retrieve configuration + settings from a range of nfs-utils configuration + files +

+
+

+ nfsdclnts +

+
+

+ prints information about NFS clients +

+
+

+ nfsiostat +

+
+

+ reports input/output statistics for network + filesystems +

+
+

+ nfsstat +

+
+

+ displays statistics kept about NFS client and + server activity +

+
+

+ rpc.mountd +

+
+

+ implements the NFS mount protocol on an NFS server +

+
+

+ rpc.nfsd +

+
+

+ implements the user level part of the NFS service + on the server +

+
+

+ rpc.statd +

+
+

+ is used by the NFS file locking service. Run on + both sides, client as well as server, when you want + file locking enabled +

+
+

+ rpcdebug +

+
+

+ sets or clears the kernel's NFS client and server + debug flags +

+
+

+ showmount +

+
+

+ displays mount information for an NFS server +

+
+

+ sm-notify +

+
+

+ is used to send Network Status Monitor reboot + messages +

+
+

+ start-statd +

+
+

+ is a script called by nfsmount when mounting a + filesystem with locking enabled, if statd does not + appear to be running. It can be customised with + whatever flags are appropriate for the site +

+
+

+ umount.nfs +

+
+

+ is used to unmount a network share using NFS +

+
+

+ umount.nfs4 +

+
+

+ is used to unmount a network share using NFSv4 +

+
+
+
+
+
+
+
+

+ Configuring for Network + Filesystems +

+
+
+
+
+

+ While LFS is capable of mounting network file systems such as + NFS, these are not mounted by the mountfs init script. Network file systems + must be mounted after the networking is activated and unmounted + before the network goes down. The netfs bootscript was written to handle both + boot-time mounting of network filesystems, if the entry in + /etc/fstab contains the + _netdev option, and unmounting of + all network filesystems before the network is brought down. +

+

+ As the root user, install the + /etc/rc.d/init.d/netfs bootscript + included with the blfs-bootscripts-20250225 package. +

+
make install-netfs
+
+
+
+
+

+ ntp-4.2.8p18 +

+
+
+
+
+
+

+ Introduction to ntp +

+

+ The ntp package contains a + client and server to keep the time synchronized between + various computers over a network. This package is the + official reference implementation of the NTP protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ntp + Dependencies +

+
+ Required +
+

+ IO-Socket-SSL-2.095 +

+
+ Optional +
+

+ libcap-2.76 with PAM, libevent-2.1.12, libedit, and + libopts from + AutoGen +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/ntp +

+
+
+

+ Installation of ntp +

+

+ There should be a dedicated user and group to take control of + the ntpd daemon + after it is started. Issue the following commands as the + root user: +

+
groupadd -g 87 ntp &&
+useradd -c "Network Time Protocol" -d /var/lib/ntp -u 87 \
+        -g ntp -s /bin/false ntp
+

+ Fix an type issue by executing +

+
sed -e "s;pthread_detach(NULL);pthread_detach(0);" \
+    -i configure \
+       sntp/configure
+

+ Install ntp by running the + following commands: +

+
./configure --prefix=/usr      \
+            --bindir=/usr/sbin \
+            --sysconfdir=/etc  \
+            --enable-linuxcaps \
+            --with-lineeditlibs=readline \
+            --docdir=/usr/share/doc/ntp-4.2.8p18 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+install -v -o ntp -g ntp -d /var/lib/ntp
+
+
+

+ Command Explanations +

+

+ --bindir=/usr/sbin: + This parameter places the administrative programs in + /usr/sbin. +

+

+ --enable-linuxcaps: + ntpd is run as user ntp, so use Linux capabilities for + non-root clock control. +

+

+ --with-lineeditlibs=readline: + This switch enables Readline + support for ntpdc and ntpq programs. If omitted, + libedit will be used if + installed, otherwise no readline capabilities will be + compiled. +

+
+
+

+ Configuring ntp +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/ntp.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The following configuration file first defines various ntp + servers with open access from different continents. Second, + it creates a drift file where ntpd stores the frequency + offset and a pid file to store the ntpd process ID. Since + the documentation included with the package is sparse, + visit the ntp website at https://www.ntp.org/ and + https://www.ntppool.org/ for + more information. +

+
cat > /etc/ntp.conf << "EOF"
+# Asia
+server 0.asia.pool.ntp.org
+
+# Australia
+server 0.oceania.pool.ntp.org
+
+# Europe
+server 0.europe.pool.ntp.org
+
+# North America
+server 0.north-america.pool.ntp.org
+
+# South America
+server 2.south-america.pool.ntp.org
+
+driftfile /var/lib/ntp/ntp.drift
+pidfile   /run/ntpd.pid
+EOF
+

+ You may wish to add a “Security session.” For explanations, + see + https://www.eecis.udel.edu/~mills/ntp/html/accopt.html#restrict. +

+
cat >> /etc/ntp.conf << "EOF"
+# Security session
+restrict    default limited kod nomodify notrap nopeer noquery
+restrict -6 default limited kod nomodify notrap nopeer noquery
+
+restrict 127.0.0.1
+restrict ::1
+EOF
+
+
+
+
+
+

+ Synchronizing + the Time +

+
+
+
+

+ There are two options. Option one is to run ntpd continuously and + allow it to synchronize the time in a gradual manner. The + other option is to run ntpd periodically (using + cron) and update the time each time ntpd is scheduled. +

+

+ If you choose Option one, then install the /etc/rc.d/init.d/ntp + init script included in the blfs-bootscripts-20250225 package. +

+
make install-ntpd
+

+ If you prefer to run ntpd periodically, add + the following command to root's crontab: +

+
ntpd -q
+

+ Execute the following command if you would like to set the + hardware clock to the current system time at shutdown and + reboot: +

+
ln -v -sf ../init.d/setclock /etc/rc.d/rc0.d/K46setclock &&
+ln -v -sf ../init.d/setclock /etc/rc.d/rc6.d/K46setclock
+

+ The other way around is already set up by LFS. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + calc_tickadj, ntp-keygen, ntp-wait, + ntpd, ntpdate, ntpdc, ntpq, ntptime, ntptrace, sntp, + tickadj, and update-leap +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/ntp, + /usr/share/doc/ntp-4.2.8 and /var/lib/ntp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ calc_tickadj +

+
+

+ calculates optimal value for tick given ntp drift + file +

+
+

+ ntp-keygen +

+
+

+ generates cryptographic data files used by the + NTPv4 authentication and identification schemes +

+
+

+ ntp-wait +

+
+

+ is useful at boot time, to delay the boot sequence + until ntpd has set the + time +

+
+

+ ntpd +

+
+

+ is a ntp daemon that runs in the background and + keeps the date and time synchronized based on + response from configured ntp servers. It also + functions as a ntp server +

+
+

+ ntpdate +

+
+

+ is a client program that sets the date and time + based on the response from an ntp server. This + command is deprecated +

+
+

+ ntpdc +

+
+

+ is used to query the ntp daemon about its current + state and to request changes in that state +

+
+

+ ntpq +

+
+

+ is a utility program used to monitor ntpd operations + and determine performance +

+
+

+ ntptime +

+
+

+ reads and displays time-related kernel variables +

+
+

+ ntptrace +

+
+

+ traces a chain of ntp servers back to the primary + source +

+
+

+ sntp +

+
+

+ is a Simple Network Time Protocol (SNTP) client +

+
+

+ tickadj +

+
+

+ reads, and optionally modifies, several + timekeeping-related variables in older kernels that + do not have support for precision timekeeping +

+
+

+ update-leap +

+
+

+ is a script to verify and, if necessary, update the + leap-second definition file. +

+
+

+ Note +

+

+ In November 2022, at the 27th General Conference + on Weights and Measures, it was decided to + abandon the leap second. In addition this script + hardcodes a URL for an update file that no longer + exists. The last time a leap second was declared + was January 2017. This script will probably be + removed in a future release. +

+
+
+
+
+
+
+
+
+

+ rpcbind-1.2.8 +

+
+
+
+
+
+

+ Introduction to rpcbind +

+

+ The rpcbind program is a + replacement for portmap. It + is required for import or export of Network File System (NFS) + shared directories. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ rpcbind Dependencies +

+
+ Required +
+

+ libtirpc-1.3.6 +

+
+
+

+ Installation of rpcbind +

+

+ In order to get rpcbind to + work properly, first fix the package to use correct service + name: +

+
sed -i "/servname/s:rpcbind:sunrpc:" src/rpcbind.c
+

+ Install rpcbind by running + the following commands: +

+
./configure --prefix=/usr                                  \
+            --bindir=/usr/sbin                             \
+            --with-rpcuser=root                            \
+            --enable-warmstarts                            \
+            --without-systemdsystemunitdir                 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-rpcuser=root: This + works around an error in the configure script. +

+

+ --without-systemdsystemunitdir: + This version of BLFS does not support systemd. +

+
+
+

+ Configuring rpcbind +

+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/rpcbind init + script included in the blfs-bootscripts-20250225 package. +

+
make install-rpcbind
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + rpcbind and rpcinfo +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ rpcbind +

+
+

+ is a server that converts RPC program numbers into + universal addresses. It must be running on the host + to be able to make RPC calls on a server on that + machine +

+
+

+ rpcinfo +

+
+

+ makes an RPC call to an RPC server and reports data + according to the requested options +

+
+
+
+
+
+
+
+

+ rsync-3.4.1 +

+
+
+
+
+
+

+ Introduction to rsync +

+

+ The rsync package contains + the rsync + utility. This is useful for synchronizing large file archives + over a network. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.samba.org/ftp/rsync/src/rsync-3.4.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 04ce67866db04fd7a1cde0b78168406e +

    +
  • +
  • +

    + Download size: 1.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 11 MB (with tests; add + 24 MB for HTML API documentation) +

    +
  • +
  • +

    + Estimated build time: 0.6 SBU (with tests) +

    +
  • +
+
+

+ rsync Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 and xxhash +

+
+
+

+ Installation of rsync +

+

+ For security reasons, running the rsync server as an unprivileged user and + group is encouraged. If you intend to run rsync as a daemon, create + the rsyncd user and group + with the following commands issued by the root user: +

+
groupadd -g 48 rsyncd &&
+useradd -c "rsyncd Daemon" -m -d /home/rsync -g rsyncd \
+    -s /bin/false -u 48 rsyncd
+

+ Install rsync by running the + following commands: +

+
./configure --prefix=/usr    \
+            --disable-xxhash \
+            --without-included-zlib &&
+make
+

+ If you have Doxygen-1.14.0 installed and wish to + build HTML API documentation, issue: +

+
doxygen
+

+ To run the tests, fix one test and then run the test suite: +

+
sed -i '/typedef/d' wildtest.c &&
+make check
+

+ Now, as the root user: +

+
make install
+

+ If you built the documentation, install it using the + following commands as the root user: +

+
install -v -m755 -d          /usr/share/doc/rsync-3.4.1/api &&
+install -v -m644 dox/html/*  /usr/share/doc/rsync-3.4.1/api
+
+
+

+ Command Explanations +

+

+ --disable-xxhash: + This switch disables advanced xxhash checksum support. Remove + this switch if you have installed xxhash. +

+

+ --without-included-zlib: This + switch enables compilation with the system-installed zlib + library. +

+
+
+

+ Configuring rsync +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/rsyncd.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ For client access to remote files, you may need to install + the OpenSSH-10.0p1 package to connect to + the remote server. +

+

+ This is a simple download-only configuration to set up + running rsync + as a server. See the rsyncd.conf(5) + man-page for additional options (i.e., user + authentication). +

+
cat > /etc/rsyncd.conf << "EOF"
+# This is a basic rsync configuration file
+# It exports a single module without user authentication.
+
+motd file = /home/rsync/welcome.msg
+use chroot = yes
+
+[localhost]
+    path = /home/rsync
+    comment = Default rsync module
+    read only = yes
+    list = yes
+    uid = rsyncd
+    gid = rsyncd
+
+EOF
+

+ You can find additional configuration information and + general documentation about rsync at https://rsync.samba.org/documentation.html. +

+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ Note that you only need to start the rsync server if you want to provide an + rsync archive on your + local machine. You don't need this script to run the rsync client. +

+

+ Install the /etc/rc.d/init.d/rsyncd init + script included in the blfs-bootscripts-20250225 package. +

+
make install-rsyncd
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + rsync and rsync-ssl +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + Optionally, + /usr/share/doc/rsync-3.4.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ rsync +

+
+

+ is a replacement for rcp (and + scp) + that has many more features. It uses the + “rsync + algorithm” which provides a very fast + method of syncing remote files. It does this by + sending just the differences in the files across + the link, without requiring that both sets of files + are present at one end of the link beforehand +

+
+

+ rsync-ssl +

+
+

+ is a helper script used when connecting to an rsync + daemon that has SSL support built in +

+
+
+
+
+
+
+
+

+ Samba-4.22.4 +

+
+
+
+
+
+

+ Introduction to Samba +

+

+ The Samba package provides + file and print services to SMB/CIFS clients and Windows + networking to Linux clients. Samba can also be configured as a + Windows Domain Controller replacement, a file/print server + acting as a member of a Windows Active Directory domain and a + NetBIOS (RFC1001/1002) nameserver (which among other things + provides LAN browsing support). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.samba.org/pub/samba/stable/samba-4.22.4.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 08cffdd420609c1b4933fe4f0a8d8496 +

    +
  • +
  • +

    + Download size: 41 MB +

    +
  • +
  • +

    + Estimated disk space required: 687 MB (add 64 MB for + quicktest) +

    +
  • +
  • +

    + Estimated build time: 2.1 SBU (using parallelism=4; add + 0.4 SBU for quicktest) +

    +
  • +
+
+

+ Samba Dependencies +

+
+ Required +
+

+ GnuTLS-3.8.10, libtirpc-1.3.6, + Parse-Yapp-1.21, and rpcsvc-proto-1.4.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ Avahi-0.8, BIND-9.20.12, Cups-2.4.12, Cyrus + SASL-2.1.28, GDB-16.3, git-2.50.1, GnuPG-2.4.8 (required for ADS and the + test suite), libaio-0.3.113, libarchive-3.8.1 + (for tar in smbclient), libcap-2.76 with PAM, + libgcrypt-1.11.2, libnsl-2.0.1, + libunwind-1.8.2, Markdown-3.8.2, + nss-3.115, + popt-1.19, + Talloc-2.4.3 (used by the test suite), + Vala-0.56.18, Valgrind-3.25.1 + (optionally used by the test suite), xfsprogs-6.15.0, + cmocka, + cryptography, + ctdb + (included), cwrap, dnspython, + FAM, Gamin, GlusterFS, + Heimdal (included), + iso8601, ldb (included), + OpenAFS, + poetry-core + (required for ADS), pyasn1, tevent + (included), tdb (included), and tracker-2 +

+
+ Optional (for the Developer Test + Suite) +
+

+ Install in listed order: six-1.17.0, pytest-8.4.1, argparse, + testtools, + testscenarios, + and python-subunit +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/samba4 +

+
+
+

+ Installation of Samba +

+

+ To support the test suite, set up a Python virtual + environment for some Python modules out of the scope of BLFS: +

+
python3 -m venv --system-site-packages pyvenv         &&
+./pyvenv/bin/pip3 install cryptography pyasn1 iso8601
+

+ Install Samba by running the + following commands: +

+
PYTHON=$PWD/pyvenv/bin/python3             \
+PATH=$PWD/pyvenv/bin:$PATH                 \
+./configure                                \
+    --prefix=/usr                          \
+    --sysconfdir=/etc                      \
+    --localstatedir=/var                   \
+    --with-piddir=/run/samba               \
+    --with-pammodulesdir=/usr/lib/security \
+    --enable-fhs                           \
+    --without-ad-dc                        \
+    --without-systemd                      \
+    --with-system-mitkrb5                  \
+    --enable-selftest                      \
+    --disable-rpath-install                &&
+make
+

+ To test the results, issue: PATH=$PWD/pyvenv/bin:$PATH make + quicktest. The test suite will produce lines + that look like failures, but these are innocuous. The last + few lines of output should report "ALL OK" for a good test run. A + summary of any failures can be found in ./st/summary. +

+
+

+ Note +

+

+ Additionally, developer test suites are available. If + you've installed the optional python modules above in the + Python virtual environment for building this package, you + can run these tests with make + test. It is not recommended for the average + builder at around 290 SBU and over a gigabyte of disk + space, and you should expect ~73 errors and ~30 failures + from the 3000+ tests. +

+
+

+ Fix hard coded paths to Python 3 interpreter: +

+
sed '1s@^.*$@#!/usr/bin/python3@' \
+    -i ./bin/default/source4/scripting/bin/*.inst
+

+ If upgrading from an old version of samba, as the + root user, remove the old + Python support files to prevent some issues: +

+
rm -rf /usr/lib/python3.13/site-packages/samba
+

+ Still as the root user, + install the package: +

+
make install &&
+
+install -v -m644 examples/smb.conf.default /etc/samba &&
+
+sed -e "s;log file =.*;log file = /var/log/samba/%m.log;"   \
+    -e "s;path = /usr/spool/samba;path = /var/spool/samba;" \
+    -i /etc/samba/smb.conf.default &&
+
+mkdir -pv /etc/openldap/schema &&
+
+install -v -m644    examples/LDAP/README \
+                    /etc/openldap/schema/README.samba &&
+
+install -v -m644    examples/LDAP/samba* \
+                    /etc/openldap/schema &&
+
+install -v -m755    examples/LDAP/{get*,ol*} \
+                    /etc/openldap/schema
+
+
+

+ Command Explanations +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+

+ --enable-fhs: Assigns + all other file paths in a manner compliant with the + Filesystem Hierarchy Standard (FHS). +

+

+ --without-systemd: + Disable systemd integration, + since it is not built in the System V version of LFS/BLFS. +

+

+ --with-shared-modules='!vfs_snapper': Disable + the vfs_snapper module if you want to build samba without + dbus support, for setups + without graphical user interfaces. +

+

+ --without-ad-dc: + Disables Active Directory Domain Controller functionality. + See + Set up a Samba Active Directory Domain Controller for + detailed information. Remove this switch if you've installed + the Python modules needed for ADS support. Note that BLFS + does not provide a samba bootscript or systemd unit for an + Active Directory domain controller. +

+

+ --with-system-mitkrb5: Enables + building with the system version of Kerberos. This mitigates + security vulnerabilities and reduces build time. Remove this + if you do not have MIT Kerberos V5-1.22.1 + installed. +

+

+ --disable-rpath-install: + Removes the library installation path from embedded shared + library search paths in the installed binary executable files + and shared libraries. When this package is installed into the + standard location the library installation path is + /usr/lib. It's always searched + by the dynamic linker, so there is no need to embed it into + installed files. +

+

+ --with-selftest-prefix=SELFTEST_PREFIX: This + option specifies the test suite work directory + (default=./st). +

+

+ install -v -m644 + examples/LDAP/* /etc/openldap/schema: These + commands are used to copy sample Samba schemas to the + OpenLDAP schema directory. +

+

+ install -v -m644 + ../examples/smb.conf.default /etc/samba: This + copies a default smb.conf file + into /etc/samba. This sample + configuration will not work until you copy it to /etc/samba/smb.conf and make the + appropriate changes for your installation. See the + configuration section for minimum values which must be set. +

+
+
+

+ Configuring Samba +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/samba/smb.conf +

+
+
+
+
+
+

+ Printing to SMB Clients +

+
+
+
+

+ If you use CUPS for print + services, and you wish to print to a printer attached to an + SMB client, you need to create an SMB backend device. To + create the device, issue the following command as the + root user: +

+
install -dvm 755 /usr/lib/cups/backend &&
+ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb
+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Due to the complexity and the many various uses for + Samba, complete + configuration for all the package's capabilities is well + beyond the scope of the BLFS book. This section provides + instructions to configure the /etc/samba/smb.conf file for two common + scenarios. The complete contents of /etc/samba/smb.conf will depend on the + purpose of Samba + installation. +

+
+

+ Note +

+

+ You may find it easier to copy the configuration + parameters shown below into an empty /etc/samba/smb.conf file instead of + copying and editing the default file as mentioned in the + “Command + Explanations” section. How you create/edit + the /etc/samba/smb.conf + file will be left up to you. Do ensure the file is only + writable by the root user + (mode 644). +

+
+
+
+
+
+
+ Scenario 1: Minimal + Standalone Client-Only Installation +
+
+
+
+

+ Choose this variant if you only want to transfer files + using smbclient, mount + Windows shares and print to Windows printers, and don't + want to share your files and printers to Windows + machines. +

+

+ A /etc/samba/smb.conf file + with the following three parameters is sufficient: +

+
[global]
+    workgroup = WORKGROUP
+    dos charset = cp850
+    unix charset = ISO-8859-1
+

+ The values in this example specify that the computer + belongs to a Windows workgroup named WORKGROUP, uses + the cp850 character + set on the wire when talking to MS-DOS and MS Windows 9x, + and that the filenames are stored in the ISO-8859-1 + encoding on the disk. Adjust these values appropriately + for your installation. The unix + charset value must be the same as the output of + locale + charmap when executed with the + LANG variable set to your + preferred locale, otherwise the ls command may not + display correct filenames of downloaded files. +

+

+ There is no need to run any Samba servers in this scenario, thus + you don't need to install the provided bootscripts. +

+
+
+
+
+
+
+ Scenario 2: Standalone + File/Print Server +
+
+
+
+

+ Choose this variant if you want to share your files and + printers to Windows machines in your workgroup in + addition to the capabilities described in Scenario 1. +

+

+ In this case, the /etc/samba/smb.conf.default file may be + a good template to start from. Also, you should add the + “dos + charset” and “unix charset” + parameters to the “[global]” section as described in + Scenario 1 in order to prevent filename corruption. For + security reasons, you may wish to define path = + /home/alice/shared-files, assuming your user + name is alice + and you only want to share the files in that directory, + instead of your entire home. Then, replace homes by shared-files and change + also the “comment” if used the + configuration file below or the /etc/samba/smb.conf.default to create + yours. +

+

+ The following configuration file creates a separate share + for each user's home directory and also makes all + printers available to Windows machines: +

+
[global]
+    workgroup = WORKGROUP
+    dos charset = cp850
+    unix charset = ISO-8859-1
+
+[homes]
+    comment = Home Directories
+    browseable = no
+    writable = yes
+
+[printers]
+    comment = All Printers
+    path = /var/spool/samba
+    browseable = no
+    guest ok = no
+    printable = yes
+

+ Other parameters you may wish to customize in the + “[global]” section include: +

+
    server string =
+    security =
+    hosts allow =
+    load printers =
+    log file =
+    max log size =
+    socket options =
+    local master =
+

+ Reference the comments in the /etc/samba/smb.conf.default file for + information regarding these parameters. +

+

+ Since the smbd and nmbd daemons are needed + in this case, install the samba bootscript. Be sure to run smbpasswd (with the + -a option to add users) to + enable and set passwords for all accounts that need + Samba access. Using the + default Samba passdb + backend, any user you attempt to add will also be + required to exist in the /etc/passwd file. +

+
+
+
+
+
+
+ Advanced Requirements +
+
+
+
+

+ More complex scenarios involving domain control or + membership are possible. Such setups are advanced topics + and cannot be adequately covered in BLFS. Many complete + books have been written on these topics alone. Note that + in some domain membership scenarios, the winbindd daemon and the + corresponding bootscript are + needed. +

+
+
+
+
+
+
+ Guest account +
+
+
+
+

+ The default Samba + installation uses the nobody user for guest access to the + server. This can be overridden by setting the + guest account = parameter in + the /etc/samba/smb.conf + file. If you utilize the guest + account = parameter, ensure this user exists in + the /etc/passwd file. +

+
+
+
+
+
+
+ Boot + Script +
+
+
+
+

+ For your convenience, boot scripts have been provided for + Samba. There are two + included in the blfs-bootscripts-20250225 + package. The first, samba, + will start the smbd and nmbd daemons needed to + provide SMB/CIFS services. The second script, + winbind, starts the + winbindd + daemon, used for providing Windows domain services to + Linux clients. +

+
make install-samba
+
make install-winbindd
+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cifsdd, dbwrap_tool, dumpmscat, + eventlogadm, gentest, ldbadd, ldbdel, ldbedit, ldbmodify, + ldbrename, ldbsearch, locktest, masktest, mdsearch, + mvxattr, ndrdump, net, nmbd, nmblookup, ntlm_auth, + oLschema2ldif, pdbedit, profiles, regdiff, regpatch, + regshell, regtree, rpcclient, samba-log-parser, + samba-gpupdate, samba-regedit, samba-tool, sharesec, + smbcacls, smbclient, smbcontrol, smbcquotas, smbd, + smbget, smbpasswd, smbspool, smbstatus, smbtar, + smbtorture, smbtree, tdbbackup, tdbdump, tdbrestore, + tdbtool, testparm, wbinfo, and winbindd +
+
+ Installed Libraries: + libdcerpc-binding.so, + libdcerpc-samr.so, libdcerpc-server-core.so, + libdcerpc.so, libndr-krb5pac.so, libndr-nbt.so, + libndr.so, libndr-standard.so, libnetapi.so, + libnss_winbind.so, libnss_wins.so, + libsamba-credentials.so, libsamba-errors.so, + libsamba-hostconfig.so, libsamba-passdb.so, + libsamba-policy.cpython-311-x86_64-linux-gnu.so, + libsamba-util.so, libsamdb.so, libsmbclient.so, + libsmbconf.so, libsmbldap.so, libtevent-util.so, + libwbclient.so, and filesystem and support modules under + /usr/lib/{python3.13,samba} +
+
+ Installed Directories: + /etc/samba, /run/samba, + /usr/include/samba-4.0, + /usr/lib/python3.13/site-packages/samba, + /usr/{lib,libexec,share}/samba, and + /var/{cache,lib,lock,log,run}/samba +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cifsdd +

+
+

+ is the dd command for SMB +

+
+

+ dbwrap_tool +

+
+

+ is used to read and manipulate TDB/CTDB databases + using the dbwrap interface +

+
+

+ dumpmscat +

+
+

+ dumps the content of MS catalog files +

+
+

+ eventlogadm +

+
+

+ is used to write records to eventlogs from STDIN, + add the specified source and DLL eventlog registry + entries and display the active eventlog names (from + smb.conf) +

+
+

+ gentest +

+
+

+ is used to run random generic SMB operations + against two SMB servers and show the differences in + behavior +

+
+

+ ldbadd +

+
+

+ is a command-line utility for adding records to an + LDB database +

+
+

+ ldbdel +

+
+

+ is a command-line utility for deleting LDB database + records +

+
+

+ ldbedit +

+
+

+ allows you to edit LDB databases using your + preferred editor +

+
+

+ ldbmodify +

+
+

+ allows you to modify records in an LDB database +

+
+

+ ldbrename +

+
+

+ allows you to rename LDB databases +

+
+

+ ldbsearch +

+
+

+ searches an LDB database for records matching a + specified expression +

+
+

+ locktest +

+
+

+ is used to find differences in locking between two + SMB servers +

+
+

+ masktest +

+
+

+ is used to find differences in wildcard matching + between Samba's implementation and that of a remote + server +

+
+

+ mdsearch +

+
+

+ runs Spotlight + searches against a SMB server +

+
+

+ mvxattr +

+
+

+ is used to recursively rename extended attributes +

+
+

+ ndrdump +

+
+

+ is a DCE/RPC Packet Parser and Dumper +

+
+

+ net +

+
+

+ is a tool for administration of Samba and remote CIFS servers, + similar to the net utility for + DOS/Windows +

+
+

+ nmbd +

+
+

+ is the Samba + NetBIOS name server +

+
+

+ nmblookup +

+
+

+ is used to query NetBIOS names and map them to IP + addresses +

+
+

+ ntlm_auth +

+
+

+ is a tool to allow external access to Winbind's + NTLM authentication function +

+
+

+ oLschema2ldif +

+
+

+ converts LDAP schema's to LDB-compatible LDIF +

+
+

+ pdbedit +

+
+

+ is a tool used to manage the SAM database +

+
+

+ profiles +

+
+

+ is a utility that reports and changes SIDs in + Windows registry files +

+
+

+ regdiff +

+
+

+ is a Diff program for Windows registry files +

+
+

+ regpatch +

+
+

+ applies registry patches to registry files +

+
+

+ regshell +

+
+

+ is a Windows registry file browser using readline +

+
+

+ regtree +

+
+

+ is a text-mode registry viewer +

+
+

+ rpcclient +

+
+

+ is used to execute MS-RPC client side functions +

+
+

+ samba-log-parser +

+
+

+ parses winbind logs generated by Samba +

+
+

+ samba-gpupdate +

+
+

+ allows you to edit Microsoft Group Policy Objects + (GPOs) +

+
+

+ samba-regedit +

+
+

+ is a ncurses based tool to manage the Samba + registry +

+
+

+ samba-tool +

+
+

+ is the main Samba administration tool +

+
+

+ sharesec +

+
+

+ manipulates share ACL permissions on SMB file + shares +

+
+

+ smbcacls +

+
+

+ is used to manipulate Windows NT access control + lists +

+
+

+ smbclient +

+
+

+ is a SMB/CIFS access utility, similar to FTP +

+
+

+ smbcontrol +

+
+

+ is used to control running smbd, + nmbd + and winbindd daemons +

+
+

+ smbcquotas +

+
+

+ is used to manipulate Windows NT quotas on SMB file + shares +

+
+

+ smbd +

+
+

+ is the main Samba + daemon which provides SMB/CIFS services to clients +

+
+

+ smbget +

+
+

+ is a simple utility with wget-like + semantics, that can download files from SMB + servers. You can specify the files you would like + to download on the command-line +

+
+

+ smbpasswd +

+
+

+ changes a user's Samba password +

+
+

+ smbspool +

+
+

+ sends a print job to a SMB printer +

+
+

+ smbstatus +

+
+

+ reports current Samba connections +

+
+

+ smbtar +

+
+

+ is a shell script used for backing up SMB/CIFS + shares directly to Linux tape drives or to a file +

+
+

+ smbtorture +

+
+

+ is a test suite that runs several tests against a + SMB server +

+
+

+ smbtree +

+
+

+ is a text-based SMB network browser +

+
+

+ tdbbackup +

+
+

+ is a tool for backing up or validating the + integrity of Samba + .tdb files +

+
+

+ tdbdump +

+
+

+ is a tool used to print the contents of a + Samba .tdb file +

+
+

+ tdbrestore +

+
+

+ is a tool for creating a Samba .tdb file out of a ntdbdump +

+
+

+ tdbtool +

+
+

+ is a tool which allows simple database manipulation + from the command line +

+
+

+ testparm +

+
+

+ checks a smb.conf + file for proper syntax +

+
+

+ wbinfo +

+
+

+ queries a running winbindd daemon +

+
+

+ winbindd +

+
+

+ resolves names from Windows NT servers +

+
+

+ libnss_winbind.so +

+
+

+ provides Name Service Switch API functions for + resolving names from NT servers +

+
+

+ libnss_wins.so +

+
+

+ provides API functions for Samba's implementation + of the Windows Internet Naming Service +

+
+

+ libnetapi.so +

+
+

+ provides API functions for the administration tools + used for Samba and remote CIFS servers +

+
+

+ libsmbclient.so +

+
+

+ provides API functions for the Samba SMB client + tools +

+
+

+ libwbclient.so +

+
+

+ provides API functions for Windows domain client + services +

+
+
+
+
+
+
+
+

+ Wget-1.25.0 +

+
+
+
+
+
+

+ Introduction to Wget +

+

+ The Wget package contains a + utility useful for non-interactive downloading of files from + the Web. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.gnu.org/gnu/wget/wget-1.25.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: c70ba58b36f944e8ba1d655ace552881 +

    +
  • +
  • +

    + Download size: 5.0 MB +

    +
  • +
  • +

    + Estimated disk space required: 38 MB (add 27 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (add 0.4 SBU for tests) +

    +
  • +
+
+

+ Wget + Dependencies +

+
+ Recommended +
+ +
+ Recommended at runtime +
+ +
+ Optional +
+

+ GnuTLS-3.8.10, HTTP-Daemon-6.16 (for the test + suite), IO-Socket-SSL-2.095 (for the test + suite), libidn2-2.3.8, libproxy-0.5.10, + pcre2-10.45, and Valgrind-3.25.1 (for + the test suite) +

+
+
+

+ Installation of Wget +

+

+ Install Wget by running the + following commands: +

+
./configure --prefix=/usr      \
+            --sysconfdir=/etc  \
+            --with-ssl=openssl &&
+make
+

+ To test the results, issue: make check. +

+

+ Some tests may fail when Valgrind tests are enabled. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc: + This relocates the configuration file from /usr/etc to /etc. +

+

+ --with-ssl=openssl: + This allows the program to use openssl instead of GnuTLS-3.8.10. +

+

+ --enable-libproxy: This switch + allows wget to use libproxy for proxy configuration. Use it + if you have the libproxy-0.5.10 package installed and + wish to use a proxy server. +

+

+ --enable-valgrind-tests: This + allows the tests to be run under valgrind. +

+
+
+

+ Configuring Wget +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/wgetrc and ~/.wgetrc +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + wget +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ wget +

+
+

+ retrieves files from the Web using the HTTP, HTTPS + and FTP protocols. It is designed to be + non-interactive, for background or unattended + operations +

+
+
+
+
+
+
+
+

+ Configuring the Linux Kernel for + Wireless +

+
+
+
+
+

+ Before using any userspace tools for connecting to a wireless + AP, the Linux kernel must be configured to drive the wireless + NIC properly. Enable the following options in the kernel + configuration as well as specific device drivers for your + hardware and recompile the kernel if necessary: +

+
[*] Networking support --->                                                [NET]
+  [*] Wireless --->                                                   [WIRELESS]
+    <*/M>   cfg80211 - wireless configuration API                     [CFG80211]
+    < /*/M>   Generic IEEE 802.11 Networking Stack (mac80211)         [MAC80211]
+
+Device Drivers --->
+  [*] Network device support --->                                   [NETDEVICES]
+    [*] Wireless LAN --->                                                 [WLAN]
+

+ Open the “Wireless + LAN” submenu and select the options that support + your hardware. lspci from pciutils-3.14.0 or + lsusb from + usbutils-018 can be used to view your + hardware configuration. Note that many (though not all) options + for the wireless NICs depend on CONFIG_MAC80211. After the + correct drivers are loaded, the interface will appear in + /sys/class/net, or in the output + of the ip link + command. +

+

+ Many wireless NIC drivers require firmware. If you've enabled + the correct driver in the kernel configuration but it fails to + load (with messages like Direct + firmware load for <filename> failed with + error -2, it means that you need to install the firmware + or the wireless NIC won't work. Read About Firmware + for more details. +

+
+
+
+
+

+ iw-6.9 +

+
+
+
+
+
+

+ Introduction to iw +

+

+ iw is a new nl80211 based + CLI configuration utility for wireless devices. It supports + all new drivers that have been added to the kernel recently. + The old tool iwconfig, which + uses Wireless Extensions interface, is deprecated and it's + strongly recommended to switch to iw and nl80211. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ iw + Dependencies +

+
+ Required +
+

+ libnl-3.11.0 +

+
+ Required (Runtime) +
+

+ Configuring the + Linux Kernel for Wireless +

+
+
+

+ Kernel Configuration +

+

+ To use iw, the kernel must + have the appropriate drivers and other support available. + Read Configuring the + Linux Kernel for Wireless for details. +

+
+
+

+ Installation of iw +

+

+ To install iw, use the + following commands: +

+
sed -i "/INSTALL.*gz/s/.gz//" Makefile &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed ...: + Install uncompressed manual pages in accordance with other + man pages. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + iw +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ iw +

+
+

+ shows / manipulates wireless devices and their + configuration +

+
+
+
+
+
+
+
+

+ Wireless + Tools-29 +

+
+
+
+
+
+

+ Introduction to Wireless Tools +

+

+ The Wireless Extension (WE) is a generic API in the Linux + kernel allowing a driver to expose configuration and + statistics specific to common Wireless LANs to userspace. A + single set of tools can support all the variations of + Wireless LANs, regardless of their type, as long as the + driver supports Wireless Extensions. WE parameters may also + be changed on the fly without restarting the driver (or + Linux). +

+

+ The Wireless Tools (WT) + package is a set of tools allowing manipulation of the + Wireless Extensions. They use a textual interface to support + the full Wireless Extension. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Wireless Tools Dependencies +

+
+ Required (Runtime) +
+

+ Configuring the + Linux Kernel for Wireless +

+
+
+

+ Kernel Configuration +

+

+ To use Wireless Tools, the + kernel must have the appropriate drivers and other support + available. Besides the configurations mentioned by Configuring the + Linux Kernel for Wireless, it's also needed to enable the + following options in the kernel configuration: +

+
[*] Networking support --->                                                [NET]
+  [*] Wireless --->                                                   [WIRELESS]
+    <*/M> cfg80211 - wireless configuration API                       [CFG80211]
+    [*]     cfg80211 wireless extensions compatibility           [CFG80211_WEXT]
+
+
+

+ Installation of Wireless Tools +

+

+ First, apply a patch that fixes a problem when numerous + networks are available: +

+
patch -Np1 -i ../wireless_tools-29-fix_iwlist_scanning-1.patch
+

+ To install Wireless Tools, + use the following commands: +

+
make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr INSTALL_MAN=/usr/share/man install
+
+
+

+ Command Explanations +

+

+ INSTALL_MAN=/usr/share/man: + Install manual pages in /usr/share/man instead of /usr/man. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ifrename, iwconfig, iwevent, + iwgetid, iwlist, iwpriv, and iwspy +
+
+ Installed Library: + libiw.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ifrename +

+
+

+ renames network interfaces based on various static + criteria +

+
+

+ iwconfig +

+
+

+ configures a wireless network interface +

+
+

+ iwevent +

+
+

+ displays wireless events generated by drivers and + setting changes +

+
+

+ iwgetid +

+
+

+ reports ESSID, NWID or AP/Cell Address of wireless + networks +

+
+

+ iwlist +

+
+

+ gets detailed wireless information from a wireless + interface +

+
+

+ iwpriv +

+
+

+ configures optional (private) parameters of a + wireless network interface +

+
+

+ iwspy +

+
+

+ gets wireless statistics from specific node +

+
+

+ libiw.so +

+
+

+ contains functions required by the wireless + programs and provides an API for other programs +

+
+
+
+
+
+
+
+

+ wpa_supplicant-2.11 +

+
+
+
+
+
+

+ Introduction to WPA Supplicant +

+

+ WPA Supplicant is a Wi-Fi + Protected Access (WPA) client and IEEE 802.1X supplicant. It + implements WPA key negotiation with a WPA Authenticator and + Extensible Authentication Protocol (EAP) authentication with + an Authentication Server. In addition, it controls the + roaming and IEEE 802.11 authentication/association of the + wireless LAN driver. This is useful for connecting to a + password protected wireless access point. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://w1.fi/releases/wpa_supplicant-2.11.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 72a4a00eddb7a499a58113c3361ab094 +

    +
  • +
  • +

    + Download size: 3.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 35 MB +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU +

    +
  • +
+
+

+ WPA + Supplicant Dependencies +

+
+ Required (Runtime) +
+

+ Configuring the + Linux Kernel for Wireless +

+
+ Recommended +
+ +
+ Optional +
+

+ dbus-1.16.2 and libxml2-2.14.5 +

+
+
+

+ Kernel Configuration +

+

+ To use wpa_supplicant, the + kernel must have the appropriate drivers and other support + available. Read Configuring + the Linux Kernel for Wireless for details. +

+
+
+

+ Installation of WPA Supplicant +

+

+ First you will need to create an initial configuration file + for the build process. You can read wpa_supplicant/README and wpa_supplicant/defconfig for the + explanation of the following options as well as other options + that can be used. Create a build configuration file that + should work for standard WiFi setups by running the following + command: +

+
cat > wpa_supplicant/.config << "EOF"
+CONFIG_BACKEND=file
+CONFIG_CTRL_IFACE=y
+CONFIG_DEBUG_FILE=y
+CONFIG_DEBUG_SYSLOG=y
+CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
+CONFIG_DRIVER_NL80211=y
+CONFIG_DRIVER_WEXT=y
+CONFIG_DRIVER_WIRED=y
+CONFIG_EAP_GTC=y
+CONFIG_EAP_LEAP=y
+CONFIG_EAP_MD5=y
+CONFIG_EAP_MSCHAPV2=y
+CONFIG_EAP_OTP=y
+CONFIG_EAP_PEAP=y
+CONFIG_EAP_TLS=y
+CONFIG_EAP_TTLS=y
+CONFIG_IEEE8021X_EAPOL=y
+CONFIG_IPV6=y
+CONFIG_LIBNL32=y
+CONFIG_PEERKEY=y
+CONFIG_PKCS12=y
+CONFIG_READLINE=y
+CONFIG_SMARTCARD=y
+CONFIG_WPS=y
+CFLAGS += -I/usr/include/libnl3
+EOF
+

+ If you wish to use WPA + Supplicant with NetworkManager-1.54.0, + make sure that you have installed + dbus-1.16.2, then add the following + options to the WPA + Supplicant build configuration file by running the + following command: +

+
cat >> wpa_supplicant/.config << "EOF"
+CONFIG_CTRL_IFACE_DBUS=y
+CONFIG_CTRL_IFACE_DBUS_NEW=y
+CONFIG_CTRL_IFACE_DBUS_INTRO=y
+EOF
+

+ Install WPA Supplicant by + running the following commands: +

+
cd wpa_supplicant &&
+make BINDIR=/usr/sbin LIBDIR=/usr/lib
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -v -m755 wpa_{cli,passphrase,supplicant} /usr/sbin/ &&
+install -v -m644 doc/docbook/wpa_supplicant.conf.5 /usr/share/man/man5/ &&
+install -v -m644 doc/docbook/wpa_{cli,passphrase,supplicant}.8 /usr/share/man/man8/
+

+ If you have built WPA + Supplicant with D-Bus + support, you will need to install D-Bus configuration files. Install them + by running the following commands as the root user: +

+
install -v -m644 dbus/fi.w1.wpa_supplicant1.service \
+                 /usr/share/dbus-1/system-services/ &&
+install -v -d -m755 /etc/dbus-1/system.d &&
+install -v -m644 dbus/dbus-wpa_supplicant.conf \
+                 /etc/dbus-1/system.d/wpa_supplicant.conf
+
+

+ Note +

+

+ You will need to restart the system D-Bus daemon before you can use the + WPA Supplicant + D-Bus interface. +

+
+
+
+

+ Configuring wpa_supplicant +

+
+

+ Important +

+

+ If you are using WPA Supplicant with NetworkManager-1.54.0 (or + anything communicating with WPA Supplicant via D-Bus), this + section should be skipped. Running a D-Bus connected WPA + Supplicant instance and another WPA supplicant instance + configured following this section simultaneously can cause + subtle issues. +

+
+
+
+
+
+

+ Config File +

+
+
+
+

+ /etc/sysconfig/wpa_supplicant-*.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ To connect to an access point that uses a password, you + need to put the pre-shared key in /etc/sysconfig/wpa_supplicant-wifi0.conf. + SSID is the string that the access point/router transmits + to identify itself. Run the following command as the + root user: +

+
wpa_passphrase SSID | sed '/^\t#/d' > /etc/sysconfig/wpa_supplicant-wifi0.conf
+

+ The wpa_supplicant command + will ask you to input the password of the access point. +

+

+ /etc/sysconfig/wpa_supplicant-wifi0.conf + can hold the details of several access points. When + wpa_supplicant is + started, it will scan for the SSIDs it can see and choose + the appropriate password to connect. +

+

+ If you want to connect to an access point that isn't + password protected, put an entry like this in /etc/sysconfig/wpa_supplicant-wifi0.conf. + Replace "Some-SSID" with the SSID of the access + point/router. +

+
network={
+  ssid="Some-SSID"
+  key_mgmt=NONE
+}
+

+ Connecting to a new access point that is not in the + configuration file can be accomplished manually via the + command line, but it must be done via a privileged user. To + do that, add the following to the configuration file: +

+
ctrl_interface=DIR=/run/wpa_supplicant GROUP=<privileged group>
+update_config=1
+

+ Replace the <privileged group> above with a system + group where members have the ability to connect to a + wireless access point. +

+

+ There are many options that you could use to tweak how you + connect to each access point. They are described in some + detail in the wpa_supplicant/wpa_supplicant.conf file + in the source tree. +

+
+
+
+
+
+

+ Connecting to an Access + Point +

+
+
+
+

+ If you want to + configure network interfaces at boot using wpa_supplicant, you need + to install the /lib/services/wpa script included in + blfs-bootscripts-20250225 package: +

+
make install-service-wpa
+

+ If your router/access point uses DHCP to allocate IP + addresses, you can install dhcpcd-10.2.4 and use it to + automatically obtain network addresses. Create the + /etc/sysconfig/ifconfig-wifi0 by running the + following command as the root user: +

+
cat > /etc/sysconfig/ifconfig.wifi0 << "EOF"
+ONBOOT="yes"
+IFACE="wlan0"
+SERVICE="wpa"
+
+# Additional arguments to wpa_supplicant
+WPA_ARGS=""
+
+WPA_SERVICE="dhcpcd"
+DHCP_START="-b -q <insert appropriate start options here>"
+DHCP_STOP="-k <insert additional stop options here>"
+EOF
+

+ Alternatively, if you use static addresses on your local + network, then create the /etc/sysconfig/ifconfig-wifi0 by running the + following command as the root user: +

+
cat > /etc/sysconfig/ifconfig.wifi0 << "EOF"
+ONBOOT="yes"
+IFACE="wlan0"
+SERVICE="wpa"
+
+# Additional arguments to wpa_supplicant
+WPA_ARGS=""
+
+WPA_SERVICE="ipv4-static"
+IP="192.168.1.1"
+GATEWAY="192.168.1.2"
+PREFIX="24"
+BROADCAST="192.168.1.255"
+EOF
+

+ You can connect to the wireless access point by running the + following command as the root user: +

+
ifup wifi0
+

+ Replace wlan0 + with the correct wireless interface and wifi0 with desired name for + the configuration file. Please note that wpa_supplicant-*.conf and ifconfig.* configuration files need to + have identical names, ie both contain wifi0 in their name. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + wpa_supplicant, wpa_passphrase and + wpa_cli +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ wpa_supplicant +

+
+

+ is a daemon that can connect to a password + protected wireless access point +

+
+

+ wpa_passphrase +

+
+

+ takes an SSID and a password and generates a simple + configuration that wpa_supplicant + can understand +

+
+

+ wpa_cli +

+
+

+ is a command line interface used to control a + running wpa_supplicant + daemon +

+
+
+
+
+
+
+
+
+

+ Chapter 16. Networking Utilities +

+
+
+
+
+

+ This chapter contains some tools that come in handy when the + network needs investigating. +

+
+
+
+

+ Avahi-0.8 +

+
+
+
+
+
+

+ Introduction to Avahi +

+

+ The Avahi package is a + system which facilitates service discovery on a local + network. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Avahi Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) +

+
+ Recommended +
+ +
+ Optional +
+

+ D-Bus Python-1.4.0, libevent-2.1.12, + Doxygen-1.14.0, GTK+-2 + (deprecated), and xmltoman + (for generating documentation) +

+
+
+

+ Installation of Avahi +

+

+ There should be a dedicated user and group to take control of + the avahi-daemon daemon after + it is started. Issue the following commands as the + root user: +

+
groupadd -fg 84 avahi &&
+useradd -c "Avahi Daemon Owner" -d /run/avahi-daemon -u 84 \
+        -g avahi -s /bin/false avahi
+

+ There should also be a dedicated privileged access group for + Avahi clients. Issue the + following command as the root + user: +

+
groupadd -fg 86 netdev
+

+ Fix a regression that results in a race condition when IPv6 + is in use and multiple network adapters are present on the + system: +

+
patch -Np1 -i ../avahi-0.8-ipv6_race_condition_fix-1.patch
+

+ Fix a security vulnerability in avahi-daemon: +

+
sed -i '426a if (events & AVAHI_WATCH_HUP) { \
+client_free(c); \
+return; \
+}' avahi-daemon/simple-protocol.c
+

+ Install Avahi by running the + following commands: +

+
./configure \
+    --prefix=/usr                  \
+    --sysconfdir=/etc              \
+    --localstatedir=/var           \
+    --disable-static               \
+    --disable-libevent             \
+    --disable-mono                 \
+    --disable-monodoc              \
+    --disable-python               \
+    --disable-qt3                  \
+    --disable-qt4                  \
+    --disable-qt5                  \
+    --enable-core-docs             \
+    --with-distro=none             \
+    --with-systemdsystemunitdir=no \
+    --with-dbus-system-address='unix:path=/run/dbus/system_bus_socket' &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-libevent: + This parameter disables the use of libevent-2.1.12. + Remove if you have it installed. +

+

+ --disable-mono: This + parameter disables the Mono + bindings. +

+

+ --disable-monodoc: + This parameter disables documentation for the Mono bindings. +

+

+ --disable-python: + This parameter disables the scripts that depend on + Python. It also allows a + regular install to complete successfully. +

+

+ --disable-qt3: This + parameter disables the attempt to build the obsolete + Qt3 portions of the package. +

+

+ --disable-qt4: This + parameter disables the attempt to build the obsolete + Qt4Core portions of the + package. +

+

+ --enable-core-docs: + This parameter enables the building of documentation. +

+

+ --with-distro=none: + There is an obsolete boot script in the distribution for LFS. + This option disables it. +

+

+ --with-systemdsystemunitdir=no: + Without it, the daemon fails to start in BLFS, which does not + support systemd. +

+

+ --with-dbus-system-address=: + This option prevents the package from referring to the + deprecated /var/run directory. +

+

+ --disable-dbus: This parameter + disables the use of D-Bus. +

+

+ --disable-gtk: This parameter + disables the use of GTK+2. +

+

+ --disable-gtk3: This parameter + disables the use of GTK+3. +

+

+ --disable-qt5: This parameter + disables the use of Qt5, and + allows building without it. +

+

+ --disable-libdaemon: This + parameter disables the use of libdaemon. If you use this option, + avahi-daemon + won't be built. +

+

+ --enable-tests: This option + enables the building of tests and examples. +

+

+ --enable-compat-howl: This option + enables the compatibility layer for HOWL. +

+

+ --enable-compat-libdns_sd: This + option enables the compatibility layer for libdns_sd. +

+
+
+

+ Configuring avahi +

+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically start the avahi-daemon when the + system is rebooted, install the /etc/rc.d/init.d/avahi bootscript from + the blfs-bootscripts-20250225 package. +

+
make install-avahi
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + avahi-autoipd, avahi-browse, + avahi-browse-domains, avahi-daemon, + avahi-discover-standalone, avahi-dnsconfd, avahi-publish, + avahi-publish-address, avahi-publish-service, + avahi-resolve, avahi-resolve-address, + avahi-resolve-host-name, avahi-set-host-name, bshell, + bssh, and bvnc +
+
+ Installed Libraries: + libavahi-client.so, + libavahi-common.so, libavahi-core.so, libavahi-glib.so, + libavahi-gobject.so, libavahi-libevent.so + libavahi-ui-gtk3.so, libavahi-ui.so, libdns_sd.so, and + libhowl.so +
+
+ Installed Directories: + /etc/avahi/services, + /usr/include/{avahi-client,avahi-common, + avahi-compat-howl, avahi-compat-libdns_sd, avahi-core, + avahi-glib, avahi-gobject, avahi-libevent, avahi-ui}, + /usr/lib/avahi, /usr/share/avahi +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ avahi-autoipd +

+
+

+ is a IPv4LL network address configuration daemon +

+
+

+ avahi-browse +

+
+

+ browses for mDNS/DNS-SD services using the + Avahi daemon +

+
+

+ avahi-browse-domains +

+
+

+ browses for mDNS/DNS-SD services using the + Avahi daemon +

+
+

+ avahi-daemon +

+
+

+ is the Avahi + mDNS/DNS-SD daemon +

+
+

+ avahi-discover-standalone +

+
+

+ browses for mDNS/DNS-SD services using the + Avahi daemon +

+
+

+ avahi-dnsconfd +

+
+

+ is a Unicast DNS server from mDNS/DNS-SD + configuration daemon +

+
+

+ avahi-publish +

+
+

+ registers a mDNS/DNS-SD service or host name or + address mapping using the Avahi daemon +

+
+

+ avahi-publish-address +

+
+

+ registers a mDNS/DNS-SD service or host name or + address mapping using the Avahi daemon +

+
+

+ avahi-publish-service +

+
+

+ registers a mDNS/DNS-SD service or host name or + address mapping using the Avahi daemon +

+
+

+ avahi-resolve +

+
+

+ resolves one or more mDNS/DNS host name(s) to IP + address(es) (and vice versa) using the Avahi daemon +

+
+

+ avahi-resolve-address +

+
+

+ resolves one or more mDNS/DNS host name(s) to IP + address(es) (and vice versa) using the Avahi daemon +

+
+

+ avahi-resolve-host-name +

+
+

+ resolves one or more mDNS/DNS host name(s) to IP + address(es) (and vice versa) using the Avahi daemon +

+
+

+ avahi-set-host-name +

+
+

+ changes the mDNS host name +

+
+

+ bssh +

+
+

+ browses for SSH servers on the local network +

+
+

+ bvnc +

+
+

+ browses for VNC servers on the local network +

+
+
+
+
+
+
+
+

+ BIND + Utilities-9.20.12 +

+
+
+
+
+
+

+ Introduction to BIND Utilities +

+

+ BIND Utilities is not a + separate package, it is a collection of the client side + programs that are included with BIND-9.20.12. The BIND package includes the client side + programs nslookup, dig and host. If you install + BIND server, these programs + will be installed automatically. This section is for those + users who don't need the complete BIND server, but need these client side + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ BIND + Utilities Dependencies +

+
+ Required +
+

+ liburcu-0.15.3 and libuv-1.51.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ libcap-2.76 with PAM, libxml2-2.14.5, and sphinx-8.2.3 +

+
+
+

+ Installation of BIND Utilities +

+

+ Install BIND Utilities by + running the following commands: +

+
./configure --prefix=/usr &&
+make -C lib/isc      &&
+make -C lib/dns      &&
+make -C lib/ns       &&
+make -C lib/isccfg   &&
+make -C lib/isccc    &&
+make -C bin/dig      &&
+make -C bin/nsupdate &&
+make -C bin/rndc     &&
+make -C doc
+

+ This portion of the package does not come with a test suite. +

+

+ Now, as the root user: +

+
make -C lib/isc      install &&
+make -C lib/dns      install &&
+make -C lib/ns       install &&
+make -C lib/isccfg   install &&
+make -C lib/isccc    install &&
+make -C bin/dig      install &&
+make -C bin/nsupdate install &&
+make -C bin/rndc     install &&
+cp -v doc/man/{dig.1,host.1,nslookup.1,nsupdate.1} /usr/share/man/man1 &&
+cp -v doc/man/rndc.8 /usr/share/man/man8
+
+
+

+ Command Explanations +

+

+ --disable-doh: Use this option if + you have not installed nghttp2-1.66.0 and you don't need DNS + over HTTPS support. +

+

+ make -C + lib/...: These commands build the libraries + that are needed for the client programs. +

+

+ make -C + bin/...: This command builds the client + programs. +

+

+ make -C doc: + This command builds the manual pages if the optional Python + module sphinx-8.2.3 is installed. +

+

+ Use cp -v doc/man/... + /usr/share/man/man... to install the manual + pages if they have been built. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dig, host, nslookup, nsupdate and + rndc +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+

+ Short Descriptions +

+

+ See the program descriptions in the BIND-9.20.12 section. +

+
+
+
+
+
+

+ NetworkManager-1.54.0 +

+
+
+
+
+
+

+ Introduction to NetworkManager +

+

+ NetworkManager is a set of + co-operative tools that make networking simple and + straightforward. Whether you use WiFi, wired, 3G, or + Bluetooth, NetworkManager allows you to quickly move from one + network to another: Once a network has been configured and + joined once, it can be detected and re-joined automatically + the next time it's available. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ NetworkManager Dependencies +

+
+ Required +
+

+ libndp-1.9 +

+
+ Recommended +
+ +
+ Optional +
+

+ BlueZ-5.83, D-Bus + Python-1.4.0 (for the test suite), GnuTLS-3.8.10 (can be + used instead of nss-3.115), GTK-Doc-1.34.0, jansson-2.14.1, + libnvme-1.15, ModemManager-1.24.2, UPower-1.90.9, Valgrind-3.25.1, + dnsmasq, + firewalld, + libaudit, + libteam, + mobile-broadband-provider-info, PPP, and RP-PPPoE +

+
+
+

+ Kernel Configuration +

+

+ If you wish to run the tests, check that at least the + following options are enabled in the kernel configuration. + Those options have been determined to be necessary, but may + not be sufficient. Recompile the kernel if necessary: +

+
[*] Networking support --->                                                [NET]
+  Networking options --->
+    [*]   TCP/IP networking                                               [INET]
+    <*/M>   IP: tunneling                                             [NET_IPIP]
+    <*/M>   IP: GRE demultiplexer                              [NET_IPGRE_DEMUX]
+    <*/M>   IP: GRE tunnels over IP                                  [NET_IPGRE]
+    <*>     The IPv6 protocol --->                                        [IPV6]
+      <*/M>   IPv6: IPv6-in-IPv4 tunnel (SIT driver)                  [IPV6_SIT]
+      <*/M>   IPv6: GRE tunnel                                        [IPV6_GRE]
+      [*]     IPv6: Multiple Routing Tables               [IPV6_MULTIPLE_TABLES]
+    [*]     MPTCP: Multipath TCP                                         [MPTCP]
+    [*]       MPTCP: IPv6 support for Multipath TCP                 [MPTCP_IPV6]
+    <*/M> 802.1Q/802.1ad VLAN Support                               [VLAN_8021Q]
+    [*]   QoS and/or fair queueing --->                              [NET_SCHED]
+      <*> Stochastic Fairness Queueing (SFQ)                       [NET_SCH_SFQ]
+      <*> Token Bucket Filter (TBF)                                [NET_SCH_TBF]
+      <*> Fair Queue Controlled Delay AQM (FQ_CODEL)          [NET_SCH_FQ_CODEL]
+      <*> Ingress/classifier-action Qdisc                      [NET_SCH_INGRESS]
+
+Device Drivers --->
+  [*] Network device support --->                                   [NETDEVICES]
+    [*]   Network core driver support                                 [NET_CORE]
+    <*/M>   Bonding driver support                                     [BONDING]
+    <*/M>   Dummy net driver support                                     [DUMMY]
+    <*/M>   Ethernet team driver support --->                         [NET_TEAM]
+    <*/M>   MAC-VLAN support                                           [MACVLAN]
+    <*/M>     MAC-VLAN based tap driver                                [MACVTAP]
+    <*/M>   IP-VLAN support                                             [IPVLAN]
+    <*/M>   Virtual eXtensible Local Area Network (VXLAN)                [VXLAN]
+    <*/M>   Virtual ethernet pair device                                  [VETH]
+    <*/M>   Virtual Routing and Forwarding (Lite)                      [NET_VRF]
+
+
+

+ Installation of NetworkManager +

+

+ Fix the python scripts so that they use Python 3: +

+
grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'
+

+ Install NetworkManager by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                    \
+      --prefix=/usr               \
+      --buildtype=release         \
+      -D libaudit=no              \
+      -D nmtui=true               \
+      -D ovs=false                \
+      -D ppp=false                \
+      -D nbft=false               \
+      -D selinux=false            \
+      -D session_tracking=elogind \
+      -D modem_manager=false      \
+      -D systemdsystemunitdir=no  \
+      -D systemd_journal=false    \
+      -D nm_cloud_setup=false     \
+      -D qt=false                 &&
+ninja
+

+ An already active graphical session with a bus address is + necessary to run the tests. To test the results, issue + ninja test. +

+

+ A few tests may fail, depending on enabled kernel options. +

+

+ Now, as the root user: +

+
ninja install &&
+mv -v /usr/share/doc/NetworkManager{,-1.54.0}
+

+ If you have not passed the -D + docs=true option to meson, you can install the + pregenerated manual pages with (as the root user): +

+
for file in $(echo ../man/*.[1578]); do
+    section=${file##*.} &&
+    install -vdm 755 /usr/share/man/man$section
+    install -vm 644 $file /usr/share/man/man$section/
+done
+

+ If you have not used -D + docs=true, the pregenerated HTML documentation can + also be installed with (as the root user): +

+
cp -Rv ../docs/{api,libnm} /usr/share/doc/NetworkManager-1.54.0
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D docs=true: Use this switch to + enable building man pages and documentation if GTK-Doc-1.34.0 is installed. +

+

+ -D nmtui=true: This + switch enables building nmtui. +

+

+ -D + systemdsystemunitdir=no and -D systemd_journal=false: + systemd is not used for sysv init systems, so prevent + installing units and using the systemd journal. +

+

+ -D ovs=false: This + switch disable the Open vSwitch integration because it needs + jansson-2.14.1. Remove it if you have + jansson-2.14.1 installed on your system. +

+

+ -D + modem_manager=false: This switch is required if + ModemManager is not + installed. Omit this switch if you have built ModemManager and mobile-broadband-provider-info. +

+

+ -D nbft=false: This + switch is required if libnvme-1.15 is not installed, and + disabled NBFT support in the initrd generator. Note that BLFS + does not use the initrd generator provided from + NetworkManager by default. +

+

+ -D + session_tracking=elogind: This switch is used to + set elogind as + the default program for session tracking. +

+

+ -D ppp=false: This + switch disables PPP support + in NetworkManager since the + programs necessary for it are not installed. Remove this + switch if you need PPP support and have PPP installed. +

+

+ -D libaudit=no and + -D selinux=false: + This switch disables support for libaudit and SELinux since + they are not used in BLFS. +

+

+ -D qt=false: This + switch disables the Qt 5 + examples. +

+

+ -D + nm_cloud_setup=false: Use this switch if you have + not installed jansson-2.14.1. This disables + nm-cloud-setup which is used to automatically configure the + network in a public cloud environment within a VM. +

+

+ -D crypto=gnutls: Use this switch + if you have GnuTLS installed and want to use it for + certificate and key operations in NetworkManager, instead of + using NSS (the default). +

+

+ -D crypto=null: Use this switch + if neither NSS nor GnuTLS is installed but you want to build + NetworkManager anyway. This switch will make NetworkManager + lack some features (for example 802.1X). +

+
+
+

+ Configuring NetworkManager +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/NetworkManager/NetworkManager.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ For NetworkManager to + work, at least a minimal configuration file must be + present. Such a file is not installed with make install. Issue the + following command as the root user to create a minimal + NetworkManager.conf file: +

+
cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
+[main]
+plugins=keyfile
+EOF
+

+ This file should not be modified directly by users of the + system. Instead, system specific changes should be made + using configuration files in the /etc/NetworkManager/conf.d directory. +

+

+ To allow polkit to manage authorizations, add the following + configuration file: +

+
cat > /etc/NetworkManager/conf.d/polkit.conf << "EOF"
+[main]
+auth-polkit=true
+EOF
+

+ To use something other than the built-in dhcp client + (recommended if using only nmcli), use the following + configuration (valid values include either dhcpcd or + internal): +

+
cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
+[main]
+dhcp=dhcpcd
+EOF
+

+ To prevent NetworkManager + from updating the /etc/resolv.conf file, add the following + configuration file: +

+
cat > /etc/NetworkManager/conf.d/no-dns-update.conf << "EOF"
+[main]
+dns=none
+EOF
+

+ For additional configuration options, see man 5 + NetworkManager.conf. +

+

+ To allow regular users to configure network connections, + you should add them to the netdev group, and create a polkit rule that grants access. Run + the following commands as the root user: +

+
groupadd -fg 86 netdev &&
+/usr/sbin/usermod -a -G netdev <username>
+
+cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"
+polkit.addRule(function(action, subject) {
+    if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) {
+        return polkit.Result.YES;
+    }
+});
+EOF
+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To automatically start the NetworkManager daemon + when the system is rebooted, install the /etc/rc.d/init.d/networkmanagerbootscript + from the blfs-bootscripts-20250225 package. +

+
+

+ Note +

+

+ If using Network Manager + to manage an interface, any previous configuration for + that interface should be removed, and the interface + brought down prior to starting Network Manager. +

+

+ The easiest way to do this is to remove S20network from + /etc/rc.d/rc3.d/ and + /etc/rc.d/rc5.d/. +

+

+ Also, if using dhcpcd-10.2.4, be careful about + timing issues if setting up network applications such as + ntpd, nfs, or sshd. It takes several seconds for dhcpcd + to initialize the network interface and if these + applications start before the network interface is + completely initialized, these applications may have to be + started manually. +

+
+
make install-networkmanager
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + NetworkManager, nmcli, nm-online, + nmtui, and, symlinked to nmtui: nmtui-connect, + nmtui-edit, and nmtui-hostname +
+
+ Installed Libraries: + libnm.so and several modules under + /usr/lib/NetworkManager +
+
+ Installed Directories: + /etc/NetworkManager, + /usr/include/libnm, /usr/lib/NetworkManager, + /usr/share/doc/NetworkManager-1.54.0, + /usr/share/gtk-doc/html/{libnm,NetworkManager} (if the + documentation is built), and + /var/lib/NetworkManager +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ nmcli +

+
+

+ is a command-line tool for controlling NetworkManager and getting its + status +

+
+

+ nm-online +

+
+

+ is a utility to determine whether you are online +

+
+

+ nmtui +

+
+

+ is an interactive ncurses-based user interface for + nmcli +

+
+

+ nmtui-connect +

+
+

+ is an interactive ncurses-based user interface to + activate/deactivate connections +

+
+

+ nmtui-edit +

+
+

+ is an interactive ncurses-based user interface to + edit connections +

+
+

+ nmtui-hostname +

+
+

+ is an interactive ncurses-based user interface to + edit the hostname +

+
+

+ NetworkManager +

+
+

+ is the network management daemon +

+
+

+ libnm.so +

+
+

+ contains functions used by NetworkManager +

+
+
+
+
+
+
+
+

+ network-manager-applet-1.34.0 +

+
+
+
+
+
+

+ Introduction to NetworkManager Applet +

+

+ The NetworkManager Applet + provides a tool and a panel applet used to configure wired + and wireless network connections through GUI. It's designed + for use with any desktop environment that uses GTK+, such as Xfce and LXDE. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ NetworkManager Applet Dependencies +

+
+ Required +
+

+ GTK-3.24.50, libnma-1.10.6, and libsecret-0.21.7 +

+
+ Recommended +
+ +
+ Required (Runtime) +
+

+ Since this package uses Polkit-126 for authorization, one Polkit Authentication + Agent should be running when the functionality of this + package is used. +

+
+ Optional +
+

+ gnome-bluetooth-47.1, jansson-2.14.1, and libindicator +

+
+
+

+ Installation of NetworkManager Applet +

+

+ Install NetworkManager + Applet by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D appindicator=no  \
+      -D selinux=false    \
+      -D team=false       &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D appindicator=no: + This switch disables AppIndicator support in + network-manager-applet because it requires libindicator, + which is not in BLFS. The build will fail without this + option. +

+

+ -D selinux=false: + This switch forcibly disables SELinux support since it is not + currently in BLFS and the build will fail without it. +

+

+ -D team=false: This + switch disables the team configuration editor since it + requires jansson-2.14.1. If you have Jansson + installed, remove this option or set it to true. +

+

+ -D wwan=false: This switch + disables WWAN support. Use this if you do not have ModemManager-1.24.2 installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + nm-applet and + nm-connection-editor +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ nm-connection-editor +

+
+

+ allows users to view and edit network connection + settings +

+
+
+
+
+
+
+
+

+ Nmap-7.98 +

+
+
+
+
+
+

+ Introduction to Nmap +

+

+ Nmap is a utility for + network exploration and security auditing. It supports ping + scanning, port scanning and TCP/IP fingerprinting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://nmap.org/dist/nmap-7.98.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 4d6b817ed0739141656e06a74bac5e57 +

    +
  • +
  • +

    + Download size: 12 MB +

    +
  • +
  • +

    + Estimated disk space required: 118 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (Using parallelism=4; + with tests) +

    +
  • +
+
+

+ Nmap + Dependencies +

+
+ Required +
+

+ build-1.3.0 +

+
+ Recommended +
+
+

+ Note +

+

+ If the PyGObject3 module + is not installed, you'd have to skip the command making the + build system use the LFS Setuptools installation and then an + Internet connection would be needed. The other packages are + recommended because if they're not installed, the build + process will compile and link against its own (often older) + version. +

+
+ +
+ Optional +
+

+ libdnet and setuptools-gettext + (currently useless) +

+
+
+

+ Installation of Nmap +

+

+ Make the build system use the Setuptools Python module from LFS + instead of downloading a copy from the Internet, and install + the Python wheels already created when running the + make instead of + rebuilding them again on make + install: +

+
sed -ri Makefile.in \
+    -e 's#-m build#& --no-isolation#'  \
+    -e '/pip install/s#(ZENMAP|NDIFF)DIR\)/#&dist/*.whl#'
+

+ Remove a useless dependency on setuptools-gettext: +

+
sed 's/, "setuptools-gettext"//' -i zenmap/pyproject.toml
+

+ Install Nmap by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ If you wish to run the test suite, run the following command: +

+
sed -e '/import imp/d'                \
+    -e 's/^ndiff = .*$/import ndiff/' \
+    -i ndiff/ndifftest.py
+

+ Tests need a graphical session and to be run as the + root user. To test the + results, issue: +

+
make check
+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ncat, ndiff, nmap, nping, zenmap, + and 2 symlinks to zenmap: nmapfe and xnmap +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/python3.13/site-packages/{radialnet,zenmapCore,zenmapGUI,zenmap-7.98.dist-info}, + and /usr/share/{ncat,nmap,zenmap} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ncat +

+
+

+ is a utility for reading and writing data across + networks from the command line +

+
+

+ ndiff +

+
+

+ is a tool to aid in the comparison of Nmap scans +

+
+

+ nmap +

+
+

+ is a utility for network exploration and security + auditing. It supports ping scanning, port scanning + and TCP/IP fingerprinting +

+
+

+ nping +

+
+

+ is an open-source tool for network packet + generation, response analysis and response time + measurement +

+
+

+ uninstall_ndiff +

+
+

+ is a Python script to uninstall ndiff +

+
+

+ uninstall_zenmap +

+
+

+ is a Python script to uninstall zenmap +

+
+

+ zenmap +

+
+

+ is a Python based graphical nmap frontend viewer +

+
+
+
+
+
+
+
+

+ Traceroute-2.1.6 +

+
+
+
+
+
+

+ Introduction to Traceroute +

+

+ The Traceroute package + contains a program which is used to display the network route + that packets take to reach a specified host. This is a + standard network troubleshooting tool. If you find yourself + unable to connect to another system, traceroute can help + pinpoint the problem. +

+
+

+ Note +

+

+ This package overwrites the version of traceroute that was + installed in the inetutils package in LFS. This version is + more powerful and allows many more options than the + standard version. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Traceroute +

+

+ Install Traceroute by + running the following commands: +

+
make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make prefix=/usr install                                 &&
+ln -sv -f traceroute /usr/bin/traceroute6                &&
+ln -sv -f traceroute.8 /usr/share/man/man8/traceroute6.8 &&
+rm -fv /usr/share/man/man1/traceroute.1
+

+ The traceroute.1 file that was installed in LFS by inetutils + is no longer relevant. This package overwrites that version + of traceroute and installs the man page in man chapter 8. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + traceroute and traceroute6 + (symlink) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ traceroute +

+
+

+ does basically what it says: it traces the route + your packets take from the host you are working on + to another host on a network, showing all the + intermediate hops (gateways) along the way +

+
+

+ traceroute6 +

+
+

+ is equivalent to traceroute -6 +

+
+
+
+
+
+
+
+

+ Whois-5.6.4 +

+
+
+
+
+
+

+ Introduction to Whois +

+

+ Whois is a client-side + application which queries the whois directory service for + information pertaining to a particular domain name. This + package will install two programs by default: whois and mkpasswd. The mkpasswd command is also + installed by the expect package in LFS. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Whois Dependencies +

+
+ Optional +
+

+ libidn-1.43 or libidn2-2.3.8 +

+
+
+

+ Installation of Whois +

+

+ Build the application with: +

+
make
+

+ You can install the whois program, the + mkpasswd + program, and the locale files independently. Control your + choice of what is installed with the following commands + issued as the root user: +

+
+

+ Note +

+

+ Installing this version of mkpasswd will overwrite + the same command installed in LFS. +

+
+
make prefix=/usr install-whois
+make prefix=/usr install-mkpasswd
+make prefix=/usr install-pos
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + whois and mkpasswd +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ whois +

+
+

+ is a client-side application which queries the + whois directory service for information pertaining + to a particular domain name +

+
+

+ mkpasswd +

+
+

+ generates a new password, and optionally applies it + to a user +

+
+
+
+
+
+
+
+

+ Wireshark-4.4.8 +

+
+
+
+
+
+

+ Introduction to Wireshark +

+

+ The Wireshark package + contains a network protocol analyzer, also known as a + “sniffer.” This is useful for analyzing + data captured “off + the wire” from a live network connection, or + data read from a capture file. +

+

+ Wireshark provides both a + graphical and a TTY-mode front-end for examining captured + network packets from over 500 protocols, as well as the + capability to read capture files from many other popular + network analyzers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ Wireshark dependencies +

+
+ Required +
+

+ CMake-4.1.0, c-ares-1.34.5, GLib-2.84.4, libgcrypt-1.11.2, Qt-6.9.2, and Speex-1.2.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoctor-2.0.23, Brotli-1.1.0, + Cups-2.4.12, Doxygen-1.14.0, + git-2.50.1, GnuTLS-3.8.10, libnl-3.11.0, + libxslt-1.1.43, libxml2-2.14.5, + Lua-5.4.8, + MIT Kerberos V5-1.22.1, + nghttp2-1.66.0, SBC-2.1, Vulkan-Headers-1.4.321, + BCG729, + libilbc, libsmi, + libssh, + MaxMindDB, + Minizip, + nghttp3, Snappy, + and Spandsp +

+
+
+

+ Kernel + Configuration +

+

+ The kernel must have the Packet protocol enabled for + Wireshark to capture live + packets from the network: +

+
[*] Networking support --->                                                [NET]
+  Networking options --->
+    <*/M> Packet socket                                                 [PACKET]
+

+ If built as a module, the name is af_packet.ko. +

+
+
+

+ Installation of Wireshark +

+

+ Wireshark is a very large + and complex application. These instructions provide + additional security measures to ensure that only trusted + users are allowed to view network traffic. First, set up a + system group for wireshark. As the root user: +

+
groupadd -g 62 wireshark
+

+ Continue to install Wireshark by running the following + commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/wireshark-4.4.8 \
+      -G Ninja \
+      .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install &&
+
+install -v -m755 -d /usr/share/doc/wireshark-4.4.8 &&
+install -v -m644    ../README.linux ../doc/README.* ../doc/randpkt.txt \
+                    /usr/share/doc/wireshark-4.4.8 &&
+
+pushd /usr/share/doc/wireshark-4.4.8 &&
+   for FILENAME in ../../wireshark/*.html; do
+      ln -s -v -f $FILENAME .
+   done &&
+popd
+unset FILENAME
+

+ If you downloaded any of the documentation files from the + page listed in the 'Additional Downloads', install them by + issuing the following commands as the root user: +

+
install -v -m644 <Downloaded_Files> \
+                 /usr/share/doc/wireshark-4.4.8
+

+ Now, set ownership and permissions of sensitive applications + to only allow authorized users. As the root user: +

+
chown -v root:wireshark /usr/bin/tshark &&
+chmod -v 6550 /usr/bin/tshark
+

+ Finally, add any users to the wireshark group (as + root user): +

+
usermod -a -G wireshark <username>
+

+ If you are installing wireshark for the first time, it will + be necessary to logout of your session and login again. This + will put wireshark in your groups, because otherwise + Wireshark will not function properly. +

+
+
+

+ Configuring Wireshark +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/wireshark.conf and + ~/.config/wireshark/* (unless + there is already ~/.wireshark/* in the system) +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Though the default configuration parameters are very sane, + reference the configuration section of the Wireshark + User's Guide for configuration information. Most of + Wireshark 's configuration + can be accomplished using the menu options of the + wireshark + graphical interfaces. +

+
+

+ Note +

+

+ If you want to look at packets, make sure you don't + filter them out with iptables-1.8.11. If you want + to exclude certain classes of packets, it is more + efficient to do it with iptables than it is with + Wireshark. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + capinfos, dumpcap, captype, + editcap, idl2wrs, mergecap, randpkt, rawshark, + reordercap, sharkd, text2pcap, tshark, and + wireshark +
+
+ Installed Libraries: + libwireshark.so, libwiretap.so, + libwsutil.so, and numerous modules under + /usr/lib/wireshark/plugins +
+
+ Installed Directories: + /usr/{lib,share}/wireshark and + /usr/share/doc/wireshark-4.4.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ capinfos +

+
+

+ reads a saved capture file and returns any or all + of several statistics about that file. It is able + to detect and read any capture supported by the + Wireshark package +

+
+

+ captype +

+
+

+ prints the file types of capture files +

+
+

+ editcap +

+
+

+ edits and/or translates the format of capture + files. It knows how to read libpcap capture files, + including those of tcpdump, + Wireshark and + other tools that write captures in that format +

+
+

+ idl2wrs +

+
+

+ is a program that takes a user specified CORBA IDL + file and generates “C” + source code for a Wireshark “plugin.” + It relies on two Python programs wireshark_be.py + and wireshark_gen.py, + which are not installed by default. They have to be + copied manually from the tools directory to the + $PYTHONPATH/site-packages/ + directory +

+
+

+ mergecap +

+
+

+ combines multiple saved capture files into a single + output file +

+
+

+ randpkt +

+
+

+ creates random-packet capture files +

+
+

+ rawshark +

+
+

+ dumps and analyzes raw libpcap data +

+
+

+ reordercap +

+
+

+ reorders timestamps of input file frames into an + output file +

+
+

+ sharkd +

+
+

+ is a daemon that listens on UNIX sockets +

+
+

+ text2pcap +

+
+

+ reads in an ASCII hex dump and writes the data + described into a libpcap-style capture file +

+
+

+ tshark +

+
+

+ is a TTY-mode network protocol analyzer. It lets + you capture packet data from a live network or read + packets from a previously saved capture file +

+
+

+ wireshark +

+
+

+ is the Qt GUI network protocol analyzer. It lets + you interactively browse packet data from a live + network or from a previously saved capture file +

+
+

+ libwireshark.so +

+
+

+ contains functions used by the Wireshark programs to perform + filtering and packet capturing +

+
+

+ libwiretap.so +

+
+

+ is a library being developed as a future + replacement for libpcap, the current standard + Unix library for packet capturing. For more + information, see the README file in the source + wiretap directory +

+
+
+
+
+
+
+
+
+

+ Chapter 17. Networking + Libraries +

+
+
+
+
+

+ These applications are support libraries for other applications + in the book. It is unlikely that you would just install these + libraries, you will generally find that you will be referred to + this chapter to satisfy a dependency of other applications. +

+
+
+
+

+ c-ares-1.34.5 +

+
+
+
+
+
+

+ Introduction to c-ares +

+

+ c-ares is a C library for + asynchronous DNS requests. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ c-ares Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of c-ares +

+

+ Install c-ares by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake  -D CMAKE_INSTALL_PREFIX=/usr .. &&
+make
+

+ This package does not include a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + adig and ahost +
+
+ Installed Libraries: + libcares.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ adig +

+
+

+ queries information from DNS servers +

+
+

+ ahost +

+
+

+ prints the A or AAAA record associated with a + hostname or IP address +

+
+

+ libcares.so +

+
+

+ is a C library for asynchronous DNS requests +

+
+
+
+
+
+
+
+

+ cURL-8.15.0 +

+
+
+
+
+
+

+ Introduction to cURL +

+

+ The cURL package contains a + utility and a library used for transferring files with URL + syntax to any of the following protocols: DICT, FILE, FTP, + FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, + MQTT, POP3, POP3S, RTSP, SMB, SMBS, SMTP, SMPTS, TELNET, and + TFTP. Its ability to both download and upload files can be + incorporated into other programs to support functions like + streaming media. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://curl.se/download/curl-8.15.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: b8872bb6cc5d18d03bea8ff5090b2b81 +

    +
  • +
  • +

    + Download size: 2.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 49 MB (add 68 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (add 4.5 SBU for tests + (without valgrind, add 16 SBU with valgrind) all using + parallelism=4) +

    +
  • +
+
+

+ cURL + Dependencies +

+
+ Recommended +
+ +
+

+ Note +

+

+ While there is an option to build the package without + libpsl, both the upstream developers and the BLFS editors + alike highly recommend not disabling support for libpsl due + to severe security implications. +

+
+
+ Recommended at runtime +
+ +
+ Optional +
+

+ Brotli-1.1.0, c-ares-1.34.5, GnuTLS-3.8.10, libidn2-2.3.8, libssh2-1.11.1, MIT Kerberos + V5-1.22.1, nghttp2-1.66.0, OpenLDAP-2.6.10, + Samba-4.22.4 (runtime, for NTLM + authentication), gsasl, + impacket, libmetalink, + librtmp, ngtcp2, + quiche, and + SPNEGO +

+
+ Optional if Running the Test Suite +
+

+ Apache-2.4.65 and stunnel-5.75 (for the + HTTPS and FTPS tests), OpenSSH-10.0p1, and Valgrind-3.25.1 + (this will slow the tests down and may cause failures) +

+
+
+

+ Installation of cURL +

+

+ Install cURL by running the + following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-openssl   \
+            --with-ca-path=/etc/ssl/certs &&
+make
+

+ To run the test suite, issue: make test. Some tests are + flaky, so if some tests have failed it's possible to run a + test again with: (cd tests; + ./runtests.pl <test + ID>) (the ID of failed tests + are shown in the “These test cases + failed:” message). If you run the tests + after the package has been installed, some tests may fail + because the man pages were deleted by the 'find' command in + the installation instructions below. +

+

+ Now, as the root user: +

+
make install &&
+
+rm -rf docs/examples/.deps &&
+
+find docs \( -name Makefile\* -o  \
+             -name \*.1       -o  \
+             -name \*.3       -o  \
+             -name CMakeLists.txt \) -delete &&
+
+cp -v -R docs -T /usr/share/doc/curl-8.15.0
+

+ To run some simple verification tests on the newly installed + curl, issue the + following commands: curl + --trace-ascii debugdump.txt + https://www.example.com/ and curl --trace-ascii d.txt --trace-time + https://example.com/. Inspect the locally + created trace files debugdump.txt and d.txt, which contains version information, + downloaded files information, etc. One file has the time for + each action logged. +

+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-ca-path=/etc/ssl/certs: + This switch sets the location of the BLFS Certificate + Authority store. +

+

+ --with-openssl: This + parameter chooses OpenSSL as + SSL/TLS implementation. This option is not needed if + --with-gnutls is selected + instead. +

+

+ --with-gssapi: This parameter + adds Kerberos 5 support to + libcurl. +

+

+ --with-gnutls: Use this switch to + build with GnuTLS support + instead of OpenSSL for + SSL/TLS. +

+

+ --with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt: + Use this switch instead of --with-ca-path if building with + GnuTLS support instead of + OpenSSL for SSL/TLS. +

+

+ --with-libssh2: This parameter + adds SSH support to cURL. + This is disabled by default. +

+

+ --enable-ares: This parameter + adds support for DNS resolution through the c-ares library. +

+

+ find docs ... -exec rm {} + \;: This command removes Makefiles and man files from the + documentation directory that would otherwise be installed by + the commands that follow. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + curl and curl-config +
+
+ Installed Library: + libcurl.so +
+
+ Installed Directories: + /usr/include/curl and + /usr/share/doc/curl-8.15.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ curl +

+
+

+ is a command line tool for transferring files with + URL syntax +

+
+

+ curl-config +

+
+

+ prints information about the last compile, like + libraries linked to and prefix setting +

+
+

+ libcurl.so +

+
+

+ provides the API functions required by curl and other + programs +

+
+
+
+
+
+
+
+

+ GeoClue-2.7.2 +

+
+
+
+
+
+

+ Introduction to GeoClue +

+

+ GeoClue is a modular + geoinformation service built on top of the D-Bus messaging system. The goal of the + GeoClue project is to make + creating location-aware applications as simple as possible. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GeoClue Dependencies +

+
+ Required +
+

+ JSON-GLib-1.10.6 and libsoup-3.6.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of GeoClue +

+

+ Install GeoClue by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk-doc=false    \
+            ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D 3g-source=false: This switch + disables the 3G backend. Use it if you have not installed the + ModemManager package. +

+

+ -D modem-gps-source=false: This + switch disables the modem GPS backend. Use it if you have not + installed the ModemManager + package. +

+

+ -D cdma-source=false: This switch + disables the CDMA source backend. Use it if you have not + installed the ModemManager + package. +

+

+ -D nmea-source=false: This switch + disables the NMEA source. Use it if you have not installed + the Avahi package. +

+

+ -D demo-agent=false: This switch + disables the demo. Use it if you have not installed the + libnotify package. +

+
+
+

+ Configuring GeoClue +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/geoclue/conf.d/90-lfs-google.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ In March of 2024, Mozilla announced the shutdown of the + Mozilla Location Service. Geoclue uses this service for + determining a user's location when requested by other + applications. The only supported alternative by upstream is + to use Google's Geolocation Service. +

+

+ To use Google's Geolocation Service, an API key must be + used, and a configuration file must be created. + This API key is only intended + for use with LFS. Please do not use this API key if you are + building for another distro or distributing binary copies. + If you need an API key, you can request one at https://www.chromium.org/developers/how-tos/api-keys. +

+

+ Create the configuration needed for using Google's + Geolocation Service as the root user: +

+
cat > /etc/geoclue/conf.d/90-lfs-google.conf << "EOF"
+# Begin /etc/geoclue/conf.d/90-lfs-google.conf
+
+# This configuration applies for the WiFi source.
+[wifi]
+
+# Set the URL to Google's Geolocation Service.
+url=https://www.googleapis.com/geolocation/v1/geolocate?key=AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ
+
+# End /etc/geoclue/conf.d/90-lfs-google.conf
+EOF
+

+ If you do not wish to request your location from a + Geolocation service, you can hardcode your location in + /etc/geolocation using the + format described in geoclue(5). +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgeoclue-2.so +
+
+ Installed Directories: + /etc/geoclue, + /usr/include/libgeoclue-2.0, /usr/libexec/geoclue-2.0, + and /usr/share/gtk-doc/html/{geoclue,libgeoclue} +
+
+
+
+
+
+
+
+

+ glib-networking-2.80.1 +

+
+
+
+
+
+

+ Introduction to GLib Networking +

+

+ The GLib Networking package + contains Network related gio modules for GLib. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GLib + Networking Dependencies +

+
+ Required +
+

+ GLib-2.84.4 and GnuTLS-3.8.10 +

+
+ Recommended +
+ +
+ Optional +
+

+ libproxy-0.5.10 +

+
+
+

+ Installation of GLib Networking +

+

+ Install GLib Networking by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup             \
+   --prefix=/usr        \
+   --buildtype=release  \
+   -D libproxy=disabled \
+   .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D libproxy=disabled: + This switch disables libproxy support. If you wish to build + with libproxy to allow this package to retrieve proxy + settings via it's API, remove this switch. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libgiognomeproxy.so and + libgiognutls.so (GIO Modules installed in /usr/lib/gio/modules) +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ kdsoap-2.2.0 +

+
+
+
+
+
+

+ Introduction to kdsoap +

+

+ The kdsoap is Qt-based + client-side and server-side SOAP component. It can be used to + create client applications for web services and also provides + the means to create web services without the need for any + further component such as a dedicated web server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ kdsoap Dependencies +

+
+ Required +
+

+ Qt-6.9.2 +

+
+
+

+ Installation of kdsoap +

+

+ Install kdsoap by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D KDSoap_QT6=ON             \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/kdsoap-2.2.0 \
+      .. &&
+make
+

+ The package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kdwsdl2cpp-qt6 +
+
+ Installed Libraries: + libkdsoap-qt6.so and + libkdsoap-server-qt6.so +
+
+ Installed Directories: + /usr/lib/cmake/KDSoap-Qt6, + /usr/share/doc/kdsoap-2.2.0-qt6, + /usr/include/KDSoapClient-Qt6. and + /usr/include/KDSoapServer-Qt6 +
+
+
+
+
+
+
+
+

+ kdsoap-ws-discovery-client-0.4.0 +

+
+
+
+
+
+

+ Introduction to kdsoap-ws-discovery-client +

+

+ The kdsoap-ws-discovery-client package + contains a library that provides support for the WS-Discovery + protocol, a recent protocol used to discover services + available on a local network. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ kdsoap-ws-discovery-client + Dependencies +

+
+ Required +
+

+ Doxygen-1.14.0, extra-cmake-modules-6.17.0, + and kdsoap-2.2.0 +

+
+
+

+ Installation of kdsoap-ws-discovery-client +

+

+ Install kdsoap-ws-discovery-client by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr    \
+      -D CMAKE_BUILD_TYPE=Release     \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON  \
+      -D QT_MAJOR_VERSION=6           \
+      -W no-dev .. &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install &&
+mv -v /usr/share/doc/KDSoapWSDiscoveryClient{,-0.4.0}
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ mv -v + /usr/share/doc/KDSoapWSDiscoveryClient[...]:: + This command moves the documentation to a versioned + directory. +

+

+ -D + QT_MAJOR_VERSION=6: This parameter tells the + build system to build the Qt6 version of this package instead + of the Qt5 version. +

+

+ -D BUILD_QCH=ON: This option + tells the build system to create documentation that can be + used with QtCreator, QtAssistant, or KDevelop. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libKDSoapWSDiscoveryClient.so +
+
+ Installed Directories: + /usr/include/KDSoapWSDiscoveryClient, + /usr/lib/cmake/KDSoapWSDiscoveryClient, and + /usr/share/doc/KDSoapWSDiscoveryClient-0.4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libKDSoapWSDiscoveryClient.so +

+
+

+ provides an implementation of the WS-Discovery + protocol using KDSoap +

+
+
+
+
+
+
+
+

+ ldns-1.8.4 +

+
+
+
+
+
+

+ Introduction to ldns +

+

+ ldns is a fast DNS library + with the goal to simplify DNS programming and to allow + developers to easily create software conforming to current + RFCs and Internet drafts. This packages also includes the + drill tool. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ldns + Dependencies +

+
+ Optional +
+

+ make-ca-1.16.1 and libpcap-1.10.5 (for + example programs), SWIG-4.3.1 (for Python bindings), and + Doxygen-1.14.0 (for html documentation) +

+
+
+

+ Installation of ldns +

+

+ Install ldns by running the + following commands: +

+

+./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --with-drill      &&
+make
+

+ If you have Doxygen-1.14.0 installed and want to + build html documentation, run the following command: +

+
make doc
+

+ This package does not come with a working test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you built html documentation, install it by running the + following commands as the root user: +

+
install -v -m755 -d /usr/share/doc/ldns-1.8.4 &&
+install -v -m644 doc/html/* /usr/share/doc/ldns-1.8.4
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-drill: This + option enables building of the drill tool (used for + obtaining debug information from DNS(SEC)) +

+

+ --disable-dane-ta-usage: This + option disables DANE-TA (DNS-Based Authentication of Named + Entities) support. It is only needed if OpenSSL-1.1.0 or + later is not installed. +

+

+ --with-examples: This option + enables building of the example programs. +

+

+ --with-pyldns: This option + enables building of the Python bindings. If you use this + option, you will need to add PYTHON=/usr/bin/python3 to the + configure line as well. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + drill and ldns-config +
+
+ Installed Library: + libldns.so +
+
+ Installed Directories: + /usr/include/ldns and + /usr/share/doc/ldns-1.8.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ drill +

+
+

+ is a tool like dig from + BIND Utilities-9.20.12 + designed to get all sorts of information out of the + DNS +

+
+

+ ldns-config +

+
+

+ shows compiler and linker flags for ldns usage +

+
+

+ libldns.so +

+
+

+ provides the ldns + API functions to programs +

+
+
+
+
+
+
+
+

+ libevent-2.1.12 +

+
+
+
+
+
+

+ Introduction to libevent +

+

+ libevent is an asynchronous + event notification software library. The libevent API provides a mechanism to + execute a callback function when a specific event occurs on a + file descriptor or after a timeout has been reached. + Furthermore, libevent also + supports callbacks due to signals or regular timeouts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libevent Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 (for API documentation) +

+
+
+

+ Installation of libevent +

+

+ First, fix an issue that prevents event_rpcgen.py from + working: +

+
sed -i 's/python/&3/' event_rpcgen.py
+

+ Install libevent by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you have Doxygen-1.14.0 installed and wish to + build API documentation, issue : +

+
doxygen Doxyfile
+

+ To test the results, issue: make verify. Six tests in + every suite related to regress_ssl.c and regress_http.c are known to fail due to + incompatibilities with OpenSSL-3. Some tests that are related + to regress_dns.c are also known + to fail intermittently due to insufficient test timeouts. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the API documentation, install it by issuing the + following commands as the root user: +

+
install -v -m755 -d /usr/share/doc/libevent-2.1.12/api &&
+cp      -v -R       doxygen/html/* \
+                    /usr/share/doc/libevent-2.1.12/api
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + event_rpcgen.py +
+
+ Installed Libraries: + libevent_core.so, + libevent_extra.so, libevent_openssl.so, + libevent_pthreads.so and libevent.so +
+
+ Installed Directory: + /usr/include/event2 and + /usr/share/doc/libevent-2.1.12 +
+
+
+
+
+
+
+
+

+ libmnl-1.0.5 +

+
+
+
+
+
+

+ Introduction to libmnl +

+

+ The libmnl library provides + a minimalistic userspace library oriented to Netlink + developers. There are a lot of common tasks in the parsing, + validating, and constructing of both the Netlink header and + TLVs that are repetitive and easy to get wrong. This library + aims to provide simple helpers that allow you to re-use code + and to avoid re-inventing the wheel. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libnma Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of libmnl +

+

+ Install libmnl by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Library: + libmnl.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmnl.so +

+
+

+ provides functions for parsing, validating, + constructing of both the Netlink header and TLVs +

+
+
+
+
+
+
+
+

+ libndp-1.9 +

+
+
+
+
+
+

+ Introduction to libndp +

+

+ The libndp package provides + a wrapper for IPv6 Neighbor Discovery Protocol. It also + provides a tool named ndptool for sending and receiving NDP + messages. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): http://libndp.org/files/libndp-1.9.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 9d486750569e7025e5d0afdcc509b93c +

    +
  • +
  • +

    + Download size: 368 KB +

    +
  • +
  • +

    + Estimated disk space required: 2.5 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+
+
+

+ Installation of libndp +

+

+ Install libndp by running + the following command: +

+
./configure --prefix=/usr        \
+            --sysconfdir=/etc    \
+            --localstatedir=/var \
+            --disable-static     &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + ndptool +
+
+ Installed Library: + libndp.so +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ ndptool +

+
+

+ is a tool for sending and receiving NDP messages +

+
+

+ libndp.so +

+
+

+ provides a wrapper for the IPv6 Neighbor Discovery + Protocol +

+
+
+
+
+
+
+
+

+ libnl-3.11.0 +

+
+
+
+
+
+

+ Introduction to libnl +

+

+ The libnl suite is a + collection of libraries providing APIs to netlink protocol + based Linux kernel interfaces. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Optional Download +

+
+ +
+
+
+

+ Installation of libnl +

+

+ Install libnl by running the + following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  &&
+make
+
+

+ Note +

+

+ If the make + command was executed with multiple parallel jobs enabled, + it might disrupt the terminal mode and cause some + “amusing” visual effects. In the worst + case, this issue may cause keyboard inputs not displayed on + the screen at all (but you can still run any command if you + can type it correctly). Run the reset command to fix such + an issue. +

+
+

+ If you wish to run the tests, check that the following + options are enabled in the kernel configuration and recompile + the kernel if necessary. Some of them may not be strictly + needed, but they should support a complete test coverage. +

+
General setup --->
+  -*- Namespaces support --->                                       [NAMESPACES]
+    [*] User namespace                                                 [USER_NS]
+    [*] Network namespace                                               [NET_NS]
+
+[*] Networking support --->                                                [NET]
+  Networking options --->
+    [*]   TCP/IP networking                                               [INET]
+    [*]     IP: advanced router                             [IP_ADVANCED_ROUTER]
+    [*]       IP: policy routing                            [IP_MULTIPLE_TABLES]
+    <*/M>   IP: tunneling                                             [NET_IPIP]
+    <*/M>   IP: GRE demultiplexer                              [NET_IPGRE_DEMUX]
+    <*/M>   IP: GRE tunnels over IP                                  [NET_IPGRE]
+    <*/M>   Virtual (secure) IP: tunneling                           [NET_IPVTI]
+    <*>     The IPv6 protocol --->                                        [IPV6]
+      <*/M>   IPv6: IPv6-in-IPv4 tunnel (SIT driver)                  [IPV6_SIT]
+      <*/M>   IPv6: IP-in-IPv6 tunnel (RFC2473)                    [IPV6_TUNNEL]
+      [*]     IPv6: Multiple Routing Tables               [IPV6_MULTIPLE_TABLES]
+    [*]   Network packet filtering framework (Netfilter) --->        [NETFILTER]
+      Core Netfilter Configuration --->
+        <*/M> Netfilter nf_tables support                            [NF_TABLES]
+        [*]     Netfilter nf_tables netdev tables support     [NF_TABLES_NETDEV]
+        {*/M}   Netfilter packet duplication support             [NF_DUP_NETDEV]
+        <*/M>   Netfilter nf_tables netdev packet forwarding support
+                                                           ...  [NFT_FWD_NETDEV]
+    <*/M> 802.1d Ethernet Bridging                                      [BRIDGE]
+    <*/M> 802.1Q/802.1ad VLAN Support                               [VLAN_8021Q]
+    -*-   L3 Master device support                           [NET_L3_MASTER_DEV]
+
+Device Drivers --->
+  [*] Network device support --->                                   [NETDEVICES]
+    [*]   Network core driver support                                 [NET_CORE]
+    <*/M>   Bonding driver support                                     [BONDING]
+    <*/M>   Dummy net driver support                                     [DUMMY]
+    <*/M>   Intermediate Functional Block support                          [IFB]
+    <*/M>   MAC-VLAN support                                           [MACVLAN]
+    <*/M>     MAC-VLAN based tap driver                                [MACVTAP]
+    <*/M>   IP-VLAN support                                             [IPVLAN]
+    <*/M>   Virtual eXtensible Local Area Network (VXLAN)                [VXLAN]
+    <*/M>   IEEE 802.1AE MAC-level encryption (MACsec)                  [MACSEC]
+    <*/M>   Virtual ethernet pair device                                  [VETH]
+    <*/M>   Virtual Routing and Forwarding (Lite)                      [NET_VRF]
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you wish to install the API documentation, as the + root user: +

+
mkdir -vp /usr/share/doc/libnl-3.11.0 &&
+tar -xf ../libnl-doc-3.11.0.tar.gz --strip-components=1 --no-same-owner \
+    -C  /usr/share/doc/libnl-3.11.0
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-cli: Use this parameter + if you don't want to install cli tools provided by the + package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + genl-ctrl-list, + idiag-socket-details, nl-class-add, nl-class-delete, + nl-classid-lookup, nl-class-list, nl-cls-add, + nl-cls-delete, nl-cls-list, nl-link-list, + nl-pktloc-lookup, nl-qdisc-add, nl-qdisc-delete, + nl-qdisc-list, and 48 other helper programs with nl- and + nf- prefixes +
+
+ Installed Libraries: + libnl-3.so, libnl-cli-3.so, + libnl-genl-3.so, libnl-idiag-3.so, libnl-nf-3.so, + libnl-route-3.so, libnl-xfrm-3.so, and cli modules under + /usr/lib/libnl/cli tree +
+
+ Installed Directories: + /etc/libnl, /usr/include/libnl3, + /usr/lib/libnl, and /usr/share/doc/libnl-3.11.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ genl-ctrl-list +

+
+

+ queries the Generic Netlink controller in the + kernel and prints a list of all registered Generic + Netlink families including the version of the + interface that has been registered +

+
+

+ nl-class-add +

+
+

+ adds, updates, or replaces Traffic Classes +

+
+

+ nl-class-delete +

+
+

+ deletes Traffic Classes +

+
+

+ nl-classid-lookup +

+
+

+ is used to resolve qdisc/class names to classid + values and vice versa +

+
+

+ nl-class-list +

+
+

+ lists Traffic Classes +

+
+

+ nl-cls-add +

+
+

+ adds a classifier +

+
+

+ nl-cls-delete +

+
+

+ deletes a classifier +

+
+

+ nl-cls-list +

+
+

+ lists classifiers +

+
+

+ nl-link-list +

+
+

+ dumps link attributes +

+
+

+ nl-pktloc-lookup +

+
+

+ allows the lookup of packet location definitions +

+
+

+ nl-qdisc-add +

+
+

+ adds queueing disciplines (qdiscs) in the kernel +

+
+

+ nl-qdisc-delete +

+
+

+ deletes queueing disciplines (qdiscs) in the kernel +

+
+

+ nl-qdisc-list +

+
+

+ lists queueing disciplines (qdiscs) in the kernel +

+
+

+ libnl*-3.so +

+
+

+ These libraries contain API functions used to + access Netlink interfaces in Linux kernel +

+
+
+
+
+
+
+
+

+ libnma-1.10.6 +

+
+
+
+
+
+

+ Introduction to libnma +

+

+ The libnma package contains + an implementation of the NetworkManager GUI functions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libnma Dependencies +

+
+ Required +
+

+ Gcr-3.41.2, GTK-3.24.50, ISO Codes-4.18.0, + and NetworkManager-1.54.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ + mobile-broadband-provider-info +

+
+
+

+ Installation of libnma +

+

+ Install libnma by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gtk_doc=false    \
+      -D libnma_gtk4=true \
+      -D mobile_broadband_provider_info=false &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=false: + This parameter disables generating API documentation using + gtk-doc. If you have GTK-Doc-1.34.0 installed and wish to + generate the API documentation, omit this switch. +

+

+ -D libnma_gtk4=true: + This parameter builds the GTK-4 version of libnma. It is + needed by gnome-control-center-48.4. +

+

+ -D + mobile_broadband_provider_info=false: This switch + disables WWAN support because mobile-broadband-provider-info + is not in BLFS. Omit this switch if you have it installed and + wish to enable WWAN support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libnma.so and libnma-gtk4.so +
+
+ Installed Directories: + /usr/include/libnma +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libnma.so +

+
+

+ contains the NetworkManager GUI library +

+
+

+ libnma-gtk4.so +

+
+

+ contains the GTK-4 version of the NetworkManager GUI library +

+
+
+
+
+
+
+
+

+ libnsl-2.0.1 +

+
+
+
+
+
+

+ Introduction to libnsl +

+

+ The libnsl package contains + the public client interface for NIS(YP). It replaces the NIS + library that used to be in glibc. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libnsl Dependencies +

+
+ Required +
+

+ libtirpc-1.3.6 +

+
+
+

+ Installation of libnsl +

+

+ Install libnsl by running + the following commands: +

+
./configure --sysconfdir=/etc --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libnsl.so +
+
+ Installed Directories: + /usr/include/rpcsvc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libnsl.so +

+
+

+ provides the NIS (YP) API functions required by + other programs +

+
+
+
+
+
+
+
+

+ libpcap-1.10.5 +

+
+
+
+
+
+

+ Introduction to libpcap +

+

+ libpcap provides functions + for user-level packet capture, used in low-level network + monitoring. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libpcap Dependencies +

+
+ Optional +
+

+ BlueZ-5.83, libnl-3.11.0, libusb-1.0.29, Software + distribution for the DAG, and Septel range of passive network + monitoring cards. +

+
+
+

+ Installation of libpcap +

+

+ Install libpcap by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ If you want to disable installing the static library, use + this sed: +

+
sed -i '/INSTALL_DATA.*libpcap.a\|RANLIB.*libpcap.a/ s/^/#/' Makefile
+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + pcap-config +
+
+ Installed Libraries: + libpcap.so +
+
+ Installed Directory: + /usr/include/pcap +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ pcap-config +

+
+

+ provides configuration information for libpcap +

+
+

+ libpcap.{a,so} +

+
+

+ are libraries used for user-level packet capture +

+
+
+
+
+
+
+
+

+ libpsl-0.21.5 +

+
+
+
+
+
+

+ Introduction to libpsl +

+

+ The libpsl 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libpsl Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for documentation), + ICU-77.1 + (may be used instead of libidn2), libidn-1.43 (may be used + instead of libidn2), Valgrind-3.25.1 (for tests) +

+
+
+

+ Installation of libpsl +

+

+ Install libpsl by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release &&
+
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + psl +
+
+ Installed Library: + libpsl.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ psl +

+
+

+ queries the Public Suffix List +

+
+

+ libpsl.so +

+
+

+ contains a library used to access the Public Suffix + List +

+
+
+
+
+
+
+
+

+ libslirp-4.9.1 +

+
+
+
+
+
+

+ Introduction to libslirp +

+

+ Libslirp is a user-mode + networking library used by virtual machines, containers or + various tools. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libslirp Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+
+

+ Installation of Libslirp +

+

+ Install libslirp by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+
+ninja
+

+ To test the results, issue: ninja test +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + libslirp.so +
+
+ Installed Directory: + /usr/include/slirp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libclirp.so +

+
+

+ contains user-mode TCP-IP emulation functions +

+
+
+
+
+
+
+
+

+ libsoup-3.6.5 +

+
+
+
+
+
+

+ Introduction to libsoup3 +

+

+ The libsoup3 is a HTTP + client/server library for GNOME. It uses GObject and the GLib main + loop to integrate with GNOME + applications and it also has an asynchronous API for use in + threaded applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsoup3 Dependencies +

+
+ Required +
+

+ glib-networking-2.80.1, + libpsl-0.21.5, libxml2-2.14.5, + nghttp2-1.66.0, and SQLite-3.50.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ Apache-2.4.65 (required to run the test + suite), Brotli-1.1.0, cURL-8.15.0 (required to run the test + suite), Gi-DocGen-2025.4, MIT Kerberos + V5-1.22.1 (required to run the test suite), PHP-8.4.11 compiled + with XMLRPC-EPI support (only used for the XMLRPC regression + tests), Samba-4.22.4 (ntlm_auth is required to run + the test suite), sysprof, and + wstest +

+
+
+

+ Installation of libsoup3 +

+

+ Fix the installation path of API documentation: +

+
sed 's/apiversion/soup_version/' -i docs/reference/meson.build
+

+ Install libsoup3 by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr          \
+            --buildtype=release    \
+            --wrap-mode=nofallback \
+            ..                     &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --wrap-mode=nofallback: This + switch prevents meson from using subproject + fallbacks for any dependency declarations in the build files, + preventing it from downloading any optional dependencies + which are not installed on the system. +

+

+ -D docs=enabled: If Gi-DocGen-2025.4 is installed, the API + documentation will be built and installed no matter if this + option is used or not. This option causes the meson command to fail if + Gi-DocGen-2025.4 is not installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libsoup-3.0.so +
+
+ Installed Directories: + /usr/include/libsoup-3.0, + /usr/share/doc/libsoup-3.6.5 (only installed if gi-docgen + is available) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libsoup-3.0.so +

+
+

+ provides functions for asynchronous HTTP + connections +

+
+
+
+
+
+
+
+

+ libtirpc-1.3.6 +

+
+
+
+
+
+

+ Introduction to libtirpc +

+

+ The libtirpc 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ libtirpc Dependencies +

+
+ Optional +
+

+ MIT Kerberos V5-1.22.1 for + GSSAPI support +

+
+
+

+ Installation of libtirpc +

+
+

+ Note +

+

+ If updating this package, you will also need to update any + existing version of rpcbind-1.2.8 +

+
+

+ First, apply a patch to make the package compatible with + gcc-15: +

+
patch -Np1 -i ../libtirpc-1.3.6-gcc15_fixes-1.patch
+

+ Install libtirpc by running + the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --disable-gssapi  &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-gssapi: + This switch is needed if no GSSAPI providers are installed, + such as MIT Kerberos V5-1.22.1. Remove + this switch if you have installed MIT Kerberos + V5-1.22.1 and you need to use the GSSAPI support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libtirpc.so +
+
+ Installed Directory: + /usr/include/tirpc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libtirpc.so +

+
+

+ provides the Remote Procedure Call (RPC) API + functions required by other programs +

+
+
+
+
+
+
+
+

+ neon-0.35.0 +

+
+
+
+
+
+

+ Introduction to neon +

+

+ neon is an HTTP and WebDAV + client library, with a C interface. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://notroj.github.io/neon/neon-0.35.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 6fa30b9c2720b70761a2d1eb50e76471 +

    +
  • +
  • +

    + Download size: 928 KB +

    +
  • +
  • +

    + Estimated disk space required: 7.1 MB (additional 321 + MB for tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (add 0.4 SBU + for tests) +

    +
  • +
+
+

+ neon + Dependencies +

+
+ Optional +
+

+ GnuTLS-3.8.10, libproxy-0.5.10, + libxml2-2.14.5, MIT Kerberos + V5-1.22.1, nss-3.115 (for some tests), xmlto-0.0.29 (to + regenerate the documentation), and PaKChoiS +

+
+
+

+ Installation of neon +

+

+ Install neon by running the + following commands: +

+
./configure --prefix=/usr    \
+            --with-ssl       \
+            --enable-shared  \
+            --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ If you wish to regenerate the documentation, issue: +

+
make docs
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-ssl: This + switch enables SSL support using OpenSSL. GnuTLS can be used instead, by passing + --with-ssl=gnutls and + --with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt + to the configure script. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-libproxy: This switch + enables support for using libproxy to retrieve proxy server + information. Use this switch if you have libproxy-0.5.10 + installed and wish to use it. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + neon-config +
+
+ Installed Library: + libneon.so +
+
+ Installed Directories: + /usr/include/neon and + /usr/share/doc/neon-0.35.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ neon-config +

+
+

+ is a script that provides information about an + installed copy of the neon library +

+
+

+ libneon.so +

+
+

+ is used as a high-level interface to common HTTP + and WebDAV methods +

+
+
+
+
+
+
+
+

+ nghttp2-1.66.0 +

+
+
+
+
+
+

+ Introduction to nghttp2 +

+

+ nghttp2 is an implementation + of HTTP/2 and its header compression algorithm, HPACK. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ nghttp2 Dependencies +

+
+ Recommended +
+

+ libxml2-2.14.5 +

+
+ Optional +
+

+ The following are only used if building the full package + instead of only the main libraries: Boost-1.89.0, c-ares-1.34.5, cython-3.1.3, jansson-2.14.1, libevent-2.1.12, + sphinx-8.2.3, jemalloc, libev, + mruby, and + Spdylay. +

+
+
+

+ Installation of nghttp2 +

+

+ Install nghttp2 by running + the following commands: +

+
./configure --prefix=/usr     \
+            --disable-static  \
+            --enable-lib-only \
+            --docdir=/usr/share/doc/nghttp2-1.66.0 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-lib-only: + only build libnghttp2. Omit this switch if you'd like to + build the example applications, Python bindings, or the C++ + asio library. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libnghttp2.so +
+
+ Installed Directories: + /usr/include/nghttp2, + /usr/share/nghttp2, and + /usr/share/doc/nghttp2-1.66.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libnghttp2.so +

+
+

+ an implementation of the Hypertext Transfer + Protocol version 2 in C +

+
+
+
+
+
+
+
+

+ rpcsvc-proto-1.4.4 +

+
+
+
+
+
+

+ Introduction to rpcsvc-proto +

+

+ The rpcsvc-proto package + contains the rcpsvc protocol files and headers, formerly + included with glibc, that are not included in replacement + libtirpc-1.3.6, along with the rpcgen + program. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of rpcsvc-proto +

+

+ Install rpcsvc-proto by + running the following commands: +

+
./configure --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + rpcgen +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/rpcsvc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ rpcgen +

+
+

+ Generates C code to implement the RPC protocol +

+
+
+
+
+
+
+
+

+ Serf-1.3.10 +

+
+
+
+
+
+

+ Introduction to Serf +

+

+ The Serf package contains a + C-based HTTP client library built upon the Apache Portable + Runtime (APR) library. It multiplexes connections, running + the read/write communication asynchronously. Memory copies + and transformations are kept to a minimum to provide high + performance operation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Serf + Dependencies +

+
+ Required +
+

+ Apr-Util-1.6.3 and SCons-4.9.1 +

+
+ Optional +
+

+ MIT Kerberos V5-1.22.1 (for + GSSAPI support) +

+
+
+

+ Installation of Serf +

+

+ Install Serf by running the + following commands: +

+
sed -i "/Append/s:RPATH=libdir,::"          SConstruct &&
+sed -i "/Default/s:lib_static,::"           SConstruct &&
+sed -i "/Alias/s:install_static,::"         SConstruct &&
+
+scons PREFIX=/usr
+

+ This package does not come with a functional test suite. +

+

+ Now, as the root user: +

+
scons PREFIX=/usr install
+
+
+

+ Command Explanations +

+

+ sed -i "...": + The first command removes the runtime path from a shared + library and the next two commands disable building and + installing of the static library. +

+

+ GSSAPI=/usr: Use this switch if + you have installed a GSSAPI library and you want serf to use it. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libserf-1.so +
+
+ Installed Directory: + /usr/include/serf-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libserf-1.so +

+
+

+ contains the Serf + API functions +

+
+
+
+
+
+
+
+
+

+ Chapter 18. Text Web + Browsers +

+
+
+
+
+

+ People who are new to Unix-based systems tend to ask the question + "Why on earth would I want a text-mode browser? I'm going to + compile X and use Firefox/Falkon/Whatever!". Those who have been + around systems for a while know that when (not if) you manage to + mess up your graphical browser install and you need to look up + some information on the web, a console based browser will save + you. Also, there are quite a few people who prefer to use one of + these browsers as their primary method of browsing; either to + avoid the clutter and bandwidth which accompanies images or + because they may use a text-to-speech synthesizer which can read + the page to them (of use for instance to partially sighted or + blind users). In this chapter you will find installation + instructions for two console web browsers: +

+
+
+
+

+ Links-2.30 +

+
+
+
+
+
+

+ Introduction to Links +

+

+ Links is a text and graphics + mode WWW browser. It includes support for rendering tables + and frames, features background downloads, can display colors + and has many other features. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Links Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Graphics mode requires at least one of GPM-1.20.7 (mouse support to be + used with a framebuffer-based console), SVGAlib, DirectFB, + and a graphical + environment +

+

+ For decoding various image formats Links can utilize libavif-1.3.0, libpng-1.6.50, libjpeg-turbo-3.0.1, librsvg-2.61.0, and libtiff-4.7.0 +

+

+ For decompressing web pages that are compressed with Brotli, + Links can utilize Brotli-1.1.0 +

+
+
+

+ Installation of Links +

+

+ Install Links by running the + following commands: +

+
./configure --prefix=/usr --mandir=/usr/share/man &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -d -m755 /usr/share/doc/links-2.30 &&
+install -v -m644 doc/links_cal/* KEYS BRAILLE_HOWTO \
+    /usr/share/doc/links-2.30
+
+
+

+ Command Explanations +

+

+ --enable-graphics: This switch + enables support for graphics mode. +

+
+
+

+ Configuring Links +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ ~/.links/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Links stores its + configuration in per-user files in the ~/.links directory. These files are + created automatically when links is run for the + first time. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + links +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/links-2.30 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ links +

+
+

+ is a text and graphics mode WWW browser +

+
+
+
+
+
+
+
+

+ Lynx-2.9.2 +

+
+
+
+
+
+

+ Introduction to Lynx +

+

+ Lynx is a text based web + browser. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+ Optional +
+

+ GnuTLS-3.8.10 (experimental, to replace + openssl), libarchive-3.8.1, Zip-3.0, an MTA (that + provides a sendmail command), and + Sharutils-4.15.2 (for the uudecode program) +

+
+
+

+ Installation of Lynx +

+

+ Install Lynx by running the + following commands: +

+
./configure --prefix=/usr           \
+            --sysconfdir=/etc/lynx  \
+            --with-zlib             \
+            --with-bzlib            \
+            --with-ssl              \
+            --with-screen=ncursesw  \
+            --enable-locale-charset \
+            --datadir=/usr/share/doc/lynx-2.9.2 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install-full
+chgrp -v -R root /usr/share/doc/lynx-2.9.2/lynx_doc
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc/lynx: This + parameter is used so that the configuration files are located + in /etc/lynx instead of + /usr/etc. +

+

+ --datadir=/usr/share/doc/lynx-2.9.2: + This parameter is used so that the documentation files are + installed into /usr/share/doc/lynx-2.9.2 instead of + /usr/share/lynx_{doc,help}. +

+

+ --with-zlib: This + enables support for linking libz into Lynx. +

+

+ --with-bzlib: This + enables support for linking libbz2 into Lynx. +

+

+ --with-ssl: This + enables support for linking SSL into Lynx. +

+

+ --with-screen=ncursesw: This + switch enables the use of advanced wide-character support + present in the system NCurses library. This is needed for + proper display of characters and line wrapping in multibyte + locales. +

+

+ --enable-locale-charset: This + switch allows Lynx to deduce + the proper character encoding for terminal output from the + current locale. A configuration step is still needed (see + below), but unlike the situation without this switch, the + configuration step becomes the same for all users (without + the switch one must specify the display character set + explicitly). This is important for environments such as a + LiveCD, where the amount of system-specific configuration + steps has to be reduced to the minimum. +

+

+ --enable-ipv6: This switch allows + Lynx to use IPv6, along with + IPv4. Use it if your ISP provides an IPv6 configuration. +

+

+ --enable-nls: This switch allows + Lynx to print translated + messages (such as questions about cookies and SSL + certificates). +

+

+ --with-gnutls: This enables + experimental support for linking GnuTLS into Lynx. Remove the --with-ssl switch if you want + to use gnutls. +

+

+ make + install-full: In addition to the standard + installation, this target installs the documentation and help + files. +

+

+ chgrp -v -R root + /usr/share/doc/lynx-2.9.2/lynx_doc : This + command corrects the improper group ownership of installed + documentation files. +

+
+
+

+ Configuring Lynx +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/lynx/lynx.cfg +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The proper way to get the display character set is to + examine the current locale. However, Lynx does not do this by default. As + the root user, change this + setting: +

+
sed -e '/#LOCALE/     a LOCALE_CHARSET:TRUE'     \
+    -i /etc/lynx/lynx.cfg
+

+ The built-in editor in Lynx + Breaks Multibyte Characters. This issue manifests + itself in multibyte locales, e.g., as the Backspace key not + erasing non-ASCII characters properly, and as incorrect + data being sent to the network when one edits the contents + of text areas. The only solution to this problem is to + configure Lynx to use an + external editor (bound to the “Ctrl+X e” key + combination by default). Still as the root user: +

+
sed -e '/#DEFAULT_ED/ a DEFAULT_EDITOR:vi'       \
+    -i /etc/lynx/lynx.cfg
+

+ Lynx handles the following + values of the DEFAULT_EDITOR option specially by adding + cursor-positioning arguments: emacs, jed, + jmacs, joe, jove, + jpico, jstar, nano, + pico, rjoe, vi (but + not vim: in order to position + the cursor in Vim-9.1.1629, set this option to + vi). +

+

+ By default, Lynx doesn't + save cookies between sessions. Again as the root user, change this setting: +

+
sed -e '/#PERSIST/    a PERSISTENT_COOKIES:TRUE' \
+    -i /etc/lynx/lynx.cfg
+

+ Many other system-wide settings such as proxies can also be + set in the /etc/lynx/lynx.cfg + file. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + lynx +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/lynx and + /usr/share/doc/lynx-2.9.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lynx +

+
+

+ is a general purpose, text-based, distributed + information browser for the World Wide Web +

+
+
+
+
+
+
+
+
+

+ Chapter 19. Mail/News + Clients +

+
+
+
+
+

+ Mail Clients help you retrieve (Fetchmail), sort (Procmail), read + and compose responses (Heirloom mailx, Mutt, Pine, Kmail, Balsa, + Evolution, SeaMonkey) to email. +

+

+ News clients also help you retrieve, sort, read and compose + responses, but these messages travel through USENET (a worldwide + bulletin board system) using the Network News Transfer Protocol + (NNTP). +

+
+
+
+

+ Fetchmail-6.5.4 +

+
+
+
+
+
+

+ Introduction to Fetchmail +

+

+ The Fetchmail package + contains a mail retrieval program. It retrieves mail from + remote mail servers and forwards it to the local (client) + machine's delivery system, so it can then be read by normal + mail user agents. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Fetchmail Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ MIT Kerberos V5-1.22.1 and + libgssapi +

+
+ Optional (for running fetchmailconf) +
+

+ Python-3.13.7, built after Tk-8.6.16, with the + py-future package +

+
+
+

+ Installation of Fetchmail +

+

+ Create a dedicated user for the fetchmail program. Issue the + following commands as the root user: +

+
useradd -c "Fetchmail User" -d /dev/null -g nogroup \
+        -s /bin/false -u 38 fetchmail
+

+ Install Fetchmail by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+chown -v fetchmail:nogroup /usr/bin/fetchmail
+
+
+

+ Configuring Fetchmail +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.fetchmailrc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+
+

+ Note +

+

+ If you are connecting to a mailserver that supports + SSL/TLS-wrapped or "implicit" mode on a dedicated port + (default 993) you should use fetchmail --ssl or add + the option 'ssl' in an rcfile. +

+
+
cat > ~/.fetchmailrc << "EOF"
+
+# The logfile needs to exist when fetchmail is invoked, otherwise it will
+# dump the details to the screen. As with all logs, you will need to rotate
+# or clear it from time to time.
+set logfile fetchmail.log
+set no bouncemail
+# You probably want to set your local username as the postmaster
+set postmaster <username>
+
+poll SERVERNAME :
+    user <isp_username> pass <password>;
+    mda "/usr/bin/procmail -f %F -d %T";
+EOF
+
+touch ~/fetchmail.log       &&
+chmod -v 0600 ~/.fetchmailrc
+

+ This is an example configuration that should suffice for + most people. You can add as many users and servers as you + need using the same syntax. +

+

+ man + fetchmail: Look for the section near the + bottom named CONFIGURATION + EXAMPLES. It gives some quick examples. There + are countless other configuration options once you get used + to it. +

+

+ If you expect to receive very little mail you can invoke + fetchmail when you wish to receive any incoming mail. More + commonly, it is either invoked in daemon mode with the + -d option either on the + command line, or in .fetchmailrc (see 'DAEMON MODE' in man + fetchmailconf), or alternatively it is invoked from a cron + job. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fetchmail and fetchmailconf +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ fetchmail +

+
+

+ when executed as a user, this will source + ~/.fetchmailrc and + download the appropriate mail +

+
+

+ fetchmailconf +

+
+

+ is intended to assist you in setting up and editing + a ~/.fetchmailrc + configuration file, by using a Tk GUI interface. It is + written for Python + and uses the Tkinter module +

+
+
+
+
+
+
+
+

+ mailx-12.5 +

+
+
+
+
+
+

+ Introduction to Heirloom mailx +

+

+ The Heirloom mailx package + (formerly known as the Nail + package) contains mailx, a command-line Mail + User Agent derived from Berkeley Mail. It is intended to + provide the functionality of the POSIX mailx command with + additional support for MIME messages, IMAP (including + caching), POP3, SMTP, S/MIME, message threading/sorting, + scoring, and filtering. Heirloom + mailx is especially useful for writing scripts and + batch processing. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Heirloom mailx Dependencies +

+
+ Optional +
+

+ nss-3.115, + MIT Kerberos V5-1.22.1 (for IMAP + GSSAPI authentication), and an MTA +

+
+
+

+ Installation of Heirloom mailx +

+
+

+ Note +

+

+ This package does not support parallel build. +

+
+

+ Install Heirloom mailx by + running the following commands. +

+
patch -Np1 -i ../heirloom-mailx-12.5-fixes-1.patch &&
+
+sed 's@<openssl@<openssl-1.0/openssl@' \
+    -i openssl.c fio.c makeconfig      &&
+
+make -j1 LDFLAGS+="-L /usr/lib/openssl/" \
+         SENDMAIL=/usr/sbin/sendmail
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make PREFIX=/usr UCBINSTALL=/usr/bin/install install &&
+
+ln -v -sf mailx /usr/bin/mail &&
+ln -v -sf mailx /usr/bin/nail &&
+
+install -v -m755 -d     /usr/share/doc/heirloom-mailx-12.5 &&
+install -v -m644 README /usr/share/doc/heirloom-mailx-12.5
+
+
+

+ Command Explanations +

+

+ make + SENDMAIL=/usr/sbin/sendmail: This changes the + default MTA path of /usr/lib/sendmail. +

+

+ make PREFIX=/usr + UCBINSTALL=/usr/bin/install install: This + changes the default installation path of /usr/local and the default install command path of + /usr/ucb. +

+
+
+

+ Configuring Heirloom mailx +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/nail.rc and ~/.mailrc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ For displaying mails, mailx uses a pager program. Since the + default of pg + is not available on a LFS system, its required to specify + which pager is to use. By default, there is more and the more + comfortable less installed. If the + variable PAGER is not set in /etc/profile or ~/.bash_profile, or if it should be + another pager just for reading mails, it can be set system + wide in /etc/nail.rc: +

+
echo "set PAGER=<more|less>" >> /etc/nail.rc
+

+ or individually for the actual user in ~/.mailrc: +

+
echo "set PAGER=<more|less>" >> ~/.mailrc
+

+ Other interesting options to set in the config files might + be EDITOR and MAILDIR. +

+

+ If not set in the environment for other packages, the + default editor can be set by: +

+
echo "set EDITOR=<vim|nano|...>" >> /etc/nail.rc
+

+ Depending on which kind of MTA is + installed, it might be required to set the MAILDIR variable + so mailx is able to find + the mails: +

+
echo "set MAILDIR=Maildir" >> /etc/nail.rc
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mail, mailx and nail +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ mailx +

+
+

+ is a command-line mail user agent compatible with + the mailx command + found on commercial Unix versions +

+
+

+ mail +

+
+

+ is a symbolic link to mailx +

+
+

+ nail +

+
+

+ is a symbolic link to mailx +

+
+
+
+
+
+
+
+

+ Mutt-2.2.14 +

+
+
+
+
+
+

+ Introduction to Mutt +

+

+ The Mutt package contains a + Mail User Agent. This is useful for reading, writing, + replying to, saving, and deleting your email. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Mutt + Dependencies +

+
+ Recommended (for a text version of + the manual) +
+ +
+ Optional +
+

+ Aspell-0.60.8.1, Cyrus + SASL-2.1.28, DocBook-utils-0.6.14, GDB-16.3, GnuPG-2.4.8, + GnuTLS-3.8.10, gpgme-2.0.0 (currently + broken), libidn-1.43, MIT Kerberos V5-1.22.1, an + MTA (that + provides a sendmail command), + slang-2.3.3, SQLite-3.50.4, libgssapi, + Mixmaster, QDBM or Tokyo + Cabinet +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/mutt +

+
+
+

+ Installation of Mutt +

+
+

+ Note +

+

+ Mutt ships with an HTML + version of its manual, but the text version is no longer + provided because differences in the formatting from + different text browsers compared to the shipped version + caused complaints. To get a text file, the following are + used in order of preference: lynx with overstriking (backspaces) + for emphasis, w3m or + elinks: the latter two + apparently provide plain text. Plain text is generally + preferred unless reading the HTML manual, so the + instructions below use lynx if available, or else + links to produce plain + text. +

+
+

+ Mutt requires a group named + mail. You can add this group, + if it does not exist, with this command (as the root user): +

+
groupadd -g 34 mail
+

+ If you did not install an MTA, + you need to modify the ownership of /var/mail with this command: +

+
chgrp -v mail /var/mail
+

+ Install Mutt by running the + following commands: +

+

+ To ensure that a plain text manual is created when using + lynx or to otherwise use + links to produce it (instead + of elinks), run the + following command: +

+
sed  -e 's/ -with_backspaces//' \
+     -e 's/elinks/links/'       \
+     -e 's/-no-numbering -no-references//' \
+     -i doc/Makefile.in
+

+ Now configure and build the application: +

+
./configure --prefix=/usr                            \
+            --sysconfdir=/etc                        \
+            --with-docdir=/usr/share/doc/mutt-2.2.14 \
+            --with-ssl                               \
+            --enable-external-dotlock                \
+            --enable-pop                             \
+            --enable-imap                            \
+            --enable-hcache                          \
+            --enable-sidebar                         &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ If you used a DESTDIR method to only install to a temporary + location as a regular user (as part of a package management + process), you will need to run the following as the + root user after completing + the real install: +

+
chown root:mail /usr/bin/mutt_dotlock &&
+chmod -v 2755 /usr/bin/mutt_dotlock
+

+ An info file is now installed, so you will also need to + recreate the /usr/share/info/dir as described when + Texinfo was installed in + LFS. +

+
+
+
+

+ Command Explanations +

+

+ sed ... -e 's/ + -with_backspaces//' ...: This turns off the + backspaces used for overstriking when lynx is used, resulting in readable + plain text when using view. +

+

+ sed ... -e 's/elinks/links/' + ...: This allows links to be run instead of + elinks which is + not in the book. +

+

+ sed ... -e 's/-no-numbering + -no-references//' ...: This removes switches + which are not understood by links. +

+

+ --enable-external-dotlock: In + some circumstances the mutt-dotlock program is not created. + This switch ensures it is always created. +

+

+ --enable-pop: This + switch enables POP3 support. +

+

+ --enable-imap: This + switch enables IMAP support. +

+

+ --enable-hcache: This + switch enables header caching. +

+

+ --enable-sidebar: + This switch enables support for the sidebar (a list of + mailboxes). It is off by default, but can be turned on by + :set + sidebar_visible in mutt (and off again with + ':unset'), or it can be enabled in ~/.muttrc. +

+

+ --with-ssl: This + parameter adds SSL/TLS support from openssl in + POP3/IMAP/SMTP. +

+

+ --enable-autocrypt + --with-sqlite3: These two switches add support for + passive protection against data collection, using gnupg and + gpgme (gpgme is enabled by autocrypt). See The + Manual. +

+

+ --enable-gpgme: This switch + enables GPG support through the GPGME package. Use this + switch if you want GPG support in Mutt. +

+

+ --enable-smtp: This switch + enables SMTP relay support. +

+

+ --with-idn2: Use this parameter + if both libidn and libidn2 have been installed, and you wish + to use libidn2 here. +

+

+ --with-sasl: This parameter adds + authentication support from Cyrus SASL-2.1.28 + in POP3/IMAP/SMTP if they are enabled. Depending on the + server configuration, this may not be needed for POP3 or + IMAP. However, it is needed for SMTP authentication. +

+

+ --with-gss: This parameter adds + authentication support for Kerberos. If you need to use this + support, make sure that MIT Kerberos V5-1.22.1 is + installed and configured correctly, and then use this option + while building this package. +

+
+
+

+ Configuring Mutt +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/Muttrc, ~/.muttrc, /etc/mime.types, and ~/.mime.types +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ No changes in these files are necessary to begin using + Mutt. When you are ready + to make changes, the man page for muttrc is a good starting place. +

+

+ In order to utilize GnuPG, + use the following command: +

+
cat /usr/share/doc/mutt-2.2.14/samples/gpg.rc >> ~/.muttrc
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + flea, mutt, mutt_dotlock, muttbug, + pgpewrap, mutt_pgpring, and smime_keys +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/mutt-2.2.14 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ flea +

+
+

+ is a script showing where to report bugs +

+
+

+ mutt +

+
+

+ is a Mail User Agent (MUA) which enables you to + read, write and delete your email +

+
+

+ mutt_dotlock +

+
+

+ implements the mail spool file lock +

+
+

+ muttbug +

+
+

+ is a script identical to flea +

+
+

+ pgpewrap +

+
+

+ prepares a command line for the GnuPG-2.4.8 + utilities +

+
+

+ pgpring +

+
+

+ is a key ring dumper for PGP. It is not + needed for GnuPG-2.4.8 +

+
+

+ smime_keys +

+
+

+ manages a keystore for S/MIME certificates +

+
+
+
+
+
+
+
+

+ Procmail-3.24 +

+
+
+
+
+
+

+ Introduction to Procmail +

+

+ The Procmail package + contains an autonomous mail processor. This is useful for + filtering and sorting incoming mail. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Procmail Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ libnsl-2.0.1 +

+
+
+

+ Installation of Procmail +

+

+ This package does not come with a test suite. +

+

+ Install Procmail by running + the following commands as the root user: +

+
patch -Np1 -i ../procmail-3.24-consolidated_fixes-1.patch               &&
+
+make CC="gcc -std=gnu17" LOCKINGTEST=/tmp MANDIR=/usr/share/man install &&
+make install-suid
+
+
+

+ Command Explanations +

+

+ make LOCKINGTEST=/tmp + install: This prevents make from asking you where + to test file-locking patterns. +

+

+ CC="gcc + -std=gnu17": This sets the C standard to C17 + because this package is not compatible with C23, and no fixes + are readily available. +

+

+ make + install-suid: Modifies permissions of the + installed files. +

+
+
+

+ Configuring Procmail +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/procmailrc and + ~/.procmailrc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Recipes have to be written and placed in ~/.procmailrc for execution. The + procmailex man page is the starting place to learn how to + write recipes. For additional information, see also + https://pm-doc.sourceforge.net/. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + formail, lockfile, mailstat and + procmail +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ formail +

+
+

+ is a filter that can be used to format mail into + mailbox format +

+
+

+ lockfile +

+
+

+ is a utility that can lock a file for single use + interactively or in a script +

+
+

+ mailstat +

+
+

+ prints a summary report of mail that has been + filtered by procmail since + the last time mailstat was ran +

+
+

+ procmail +

+
+

+ is an autonomous mail processor. It performs all + the functions of an MDA (Mail Delivery Agent) +

+
+
+
+
+
+
+
+

+ Other Mail and News Programs +

+
+
+
+
+

+ Balsa-2.6.5 is a GTK2 based mail client. +

+

+ seamonkey-2.53.21 includes both a mail + client and newsreader in its installation. +

+

+ Thunderbird-140.2.0esr is a + mail/news client based on the Mozilla code base. +

+

+ Evolution-3.56.2 is a mail client and + organizer from the GNOME + desktop. +

+
+
+
+
+
+
+

+ Part V. Servers +

+
+
+
+
+
+
+
+

+ Chapter 20. Major Servers +

+
+
+
+
+

+ Major servers are the programs that provide content or services + to users or other programs. +

+
+
+
+

+ Apache-2.4.65 +

+
+
+
+
+
+

+ Introduction to Apache HTTPD +

+

+ The Apache HTTPD package + contains an open-source HTTP server. It is useful for + creating local intranet web sites or running huge web serving + operations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Apache HTTPD Dependencies +

+
+ Required +
+

+ Apr-Util-1.6.3 and pcre2-10.45 +

+
+ Optional +
+

+ Brotli-1.1.0, Doxygen-1.14.0, + jansson-2.14.1, libxml2-2.14.5, + Lua-5.4.8, + Lynx-2.9.2 or Links-2.30 or ELinks, nghttp2-1.66.0, + OpenLDAP-2.6.10 (Apr-Util-1.6.3 needs + to be installed with ldap support), rsync-3.4.1, + Berkeley DB (deprecated), and Distcache +

+
+
+

+ Installation of Apache HTTPD +

+

+ For security reasons, running the server as an unprivileged + user and group is strongly encouraged. Create the following + group and user using the following commands as root: +

+
groupadd -g 25 apache &&
+useradd -c "Apache Server" -d /srv/www -g apache \
+        -s /bin/false -u 25 apache
+

+ Build and install Apache + HTTPD by running the following commands: +

+
patch -Np1 -i ../httpd-blfs_layout-1.patch             &&
+
+sed '/dir.*CFG_PREFIX/s@^@#@' -i support/apxs.in       &&
+
+sed -e '/HTTPD_ROOT/s:${ap_prefix}:/etc/httpd:'       \
+    -e '/SERVER_CONFIG_FILE/s:${rel_sysconfdir}/::'   \
+    -e '/AP_TYPES_CONFIG_FILE/s:${rel_sysconfdir}/::' \
+    -i configure  &&
+
+./configure --enable-authnz-fcgi                    \
+            --enable-layout=BLFS                    \
+            --enable-mods-shared="all cgi"          \
+            --enable-mpms-shared=all                \
+            --enable-suexec=shared                  \
+            --with-apr=/usr/bin/apr-1-config        \
+            --with-apr-util=/usr/bin/apu-1-config   \
+            --with-suexec-bin=/usr/lib/httpd/suexec \
+            --with-suexec-caller=apache             \
+            --with-suexec-docroot=/srv/www          \
+            --with-suexec-uidmin=100                \
+            --with-suexec-userdir=public_html       \
+            --with-suexec-logfile=/var/log/httpd/suexec.log &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install  &&
+
+mv -v /usr/sbin/suexec /usr/lib/httpd/suexec &&
+chgrp apache           /usr/lib/httpd/suexec &&
+chmod 4754             /usr/lib/httpd/suexec &&
+
+chown -v -R apache:apache /srv/www
+
+
+

+ Command Explanations +

+

+ sed + '/dir.*CFG_PREFIX/s@^@#@'...: Forces the + apxs utility to use absolute + pathnames for modules, when instructed to do so. +

+

+ sed -e '/HTTPD_ROOT/s + ...: Fixes some paths. +

+

+ --enable-authnz-fcgi: + Build FastCGI authorizer-based authentication and + authorization (mod_authnz_fcgi.so fast CGI module). +

+

+ --enable-mods-shared="all + cgi": The modules should be compiled and used as + Dynamic Shared Objects (DSOs) so they can be included and + excluded from the server using the run-time configuration + directives. +

+

+ --enable-mpms-shared=all: This + switch ensures that all MPM (Multi Processing Modules) are + built as Dynamic Shared Objects (DSOs), so the user can + choose which one to use at runtime. +

+

+ --enable-suexec: This + switch enables building of the Apache suEXEC module which can be used + to allow users to run CGI and SSI scripts under user IDs + different from the user ID of the calling web server. +

+

+ --with-suexec-*: + These switches control suEXEC module behavior, such as + default document root, minimal UID that can be used to run + the script under the suEXEC. Please note that with minimal + UID 100, you can't run CGI or SSI scripts under suEXEC as the + apache user. +

+

+ ... + /usr/lib/httpd/suexec: These commands put + suexec wrapper + into proper location, since it is not meant to be run + directly. They also adjust proper permissions of the binary, + making it setgid apache. +

+

+ chown -R apache:apache + /srv/www: By default, the installation + process installs files (documentation, error messages, + default icons, etc.) with the ownership of the user that + extracted the files from the tar file. If you want to change + the ownership to another user, you should do so at this + point. The only requirement is that the document directories + need to be accessible by the httpd process with (r-x) + permissions and files need to be readable (r--) by the + apache user. +

+
+
+

+ Configuring Apache +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/httpd/httpd.conf and + /etc/httpd/extra/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ See file:///usr/share/httpd/manual/configuring.html + for detailed instructions on customising your Apache HTTP server configuration file. +

+

+ There is no reason, at least for internet facing sites, not + to use SSL encryption. Setting up a secured website does + not cost anything except installing one additional small + tool and a few minutes of configuration work. Use this + guideline at + https://wiki.linuxfromscratch.org/blfs/wiki/Securing_a_website + to create world-wide accepted certificates and renew them + on a regular basis. +

+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ If you want the Apache + server to start automatically when the system is booted, + install the /etc/rc.d/init.d/httpd init script + included in the blfs-bootscripts-20250225 package: +

+
make install-httpd
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ab, apachectl, apxs, checkgid, + dbmmanage, fcgistarter, htcacheclean, htdbm, htdigest, + htpasswd, httpd, httxt2dbm, logresolve, and + rotatelogs +
+
+ Installed Libraries: + Several libraries under + /usr/lib/httpd/modules/ +
+
+ Installed Directories: + /etc/httpd, /srv/www, + /usr/include/httpd, /usr/lib/httpd, /usr/share/httpd, + /var/log/httpd, and /var/run/httpd +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ab +

+
+

+ is a tool for benchmarking your Apache HTTP server +

+
+

+ apachectl +

+
+

+ is a front end to the Apache HTTP server which is + designed to help the administrator control the + functioning of the Apache httpd daemon +

+
+

+ apxs +

+
+

+ is a tool for building and installing extension + modules for the Apache HTTP server +

+
+

+ checkgid +

+
+

+ is a program that checks whether it can setgid to + the group specified. This is to see if it is a + valid group for Apache2 to use at runtime. If the + user (should be run as superuser) is in that group, + or can setgid to it, it will return 0 +

+
+

+ dbmmanage +

+
+

+ is used to create and update the DBM format files + used to store usernames and passwords for basic + authentication of HTTP users +

+
+

+ fcgistarter +

+
+

+ is a tool to start a FastCGI program +

+
+

+ htcacheclean +

+
+

+ is used to clean up the disk cache +

+
+

+ htdbm +

+
+

+ is used to manipulate the DBM password databases +

+
+

+ htdigest +

+
+

+ is used to create and update the flat-files used to + store usernames, realms and passwords for digest + authentication of HTTP users +

+
+

+ htpasswd +

+
+

+ is used to create and update the flat-files used to + store usernames and passwords for basic + authentication of HTTP users +

+
+

+ httpd +

+
+

+ is the Apache HTTP + server program +

+
+

+ httxt2dbm +

+
+

+ is used to generate DBM files from text, for use in + RewriteMap +

+
+

+ logresolve +

+
+

+ is a post-processing program to resolve + IP-addresses in Apache's access log files +

+
+

+ rotatelogs +

+
+

+ is a simple program for use in conjunction with + Apache's piped log + file feature +

+
+

+ suexec +

+
+

+ allows users to run CGI and SSI applications as a + different user +

+
+
+
+
+
+
+
+

+ BIND-9.20.12 +

+
+
+
+
+
+

+ Introduction to BIND +

+

+ The BIND package provides a + DNS server and client utilities. If you are only interested + in the utilities, refer to the BIND + Utilities-9.20.12. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.isc.org/isc/bind9/9.20.12/bind-9.20.12.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: b900609638c5f3ab561ac9d4b45e85f2 +

    +
  • +
  • +

    + Download size: 5.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 137 MB (22 MB installed) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (with parallelism=4; + about 40 minutes somewhat processor independent, to run + the complete test suite) +

    +
  • +
+
+

+ BIND + Dependencies +

+
+ Required +
+

+ liburcu-0.15.3 and libuv-1.51.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ cURL-8.15.0, libidn2-2.3.8, libxml2-2.14.5, lmdb-0.9.33, MIT Kerberos + V5-1.22.1, pytest-8.4.1, sphinx-8.2.3 (required to + build documentation), cmocka, geoip, jemalloc, + w3m +

+
+ Optional (to run the test suite) +
+

+ Net-DNS-1.52 and hypothesis +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/bind +

+
+
+

+ Installation of BIND +

+

+ Install BIND by running the + following commands: +

+
./configure --prefix=/usr           \
+            --sysconfdir=/etc       \
+            --localstatedir=/var    \
+            --mandir=/usr/share/man \
+            --disable-static        &&
+make
+

+ Issue the following commands to run the complete suite of + tests. First, as the root + user, set up some test interfaces: +

+
+

+ Note +

+

+ If IPv6 is not enabled in the kernel, there will be several + error messages: "RTNETLINK answers: Operation not + permitted". These messages do not affect the tests. +

+
+
bin/tests/system/ifconfig.sh up
+

+ The test suite may indicate some skipped tests depending on + what configuration options are used. Some tests are marked + “UNTESTED” or do even fail if Net-DNS-1.52 is not installed. One test, + dnssec, is known to fail. The + tests require the hypothesis python + module, which is not in BLFS. To work around this, the + instructions below create a Python virtual environment and + then install the module in there before running the tests. To + run the tests, as an unprivileged user, execute: +

+
python3 -m venv --system-site-packages testenv &&
+source testenv/bin/activate                    &&
+pip3 install hypothesis                        &&
+make -k check                                  &&
+deactivate
+

+ Again as root, clean up the + test interfaces: +

+
bin/tests/system/ifconfig.sh down
+

+ Finally, install the package as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc: + This parameter forces BIND + to look for configuration files in /etc instead of /usr/etc. +

+

+ --with-libidn2: This parameter + enables the IDNA2008 (Internationalized Domain Names in + Applications) support. +

+

+ --enable-fetchlimit: Use this + option if you want to be able to limit the rate of recursive + client queries. This may be useful on servers which receive a + large number of queries. +

+

+ --disable-doh: Use this option if + you do not have nghttp2-1.66.0 installed and do not need + support for DNS over HTTPS. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --system-site-packages: Allow + the Python3 venv module to + access the system-installed /usr/lib/python3.13/site-packages + directory. +

+
+
+

+ Configuring BIND +

+
+
+
+
+

+ Config + files +

+
+
+
+

+ named.conf, root.hints, 127.0.0, rndc.conf, and resolv.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ BIND will be configured to + run in a chroot jail as an + unprivileged user (named). + This configuration is more secure in that a DNS compromise + can only affect a few files in the named user's HOME directory. +

+

+ Create the unprivileged user and group named: +

+
groupadd -g 20 named &&
+useradd -c "BIND Owner" -g named -s /bin/false -u 20 named &&
+install -d -m770 -o named -g named /srv/named
+

+ Set up some files, directories and devices needed by + BIND: +

+
mkdir -p /srv/named &&
+cd       /srv/named &&
+mkdir -p dev etc/named/{slave,pz} usr/lib/engines var/run/named &&
+mknod /srv/named/dev/null c 1 3 &&
+mknod /srv/named/dev/urandom c 1 9 &&
+chmod 666 /srv/named/dev/{null,urandom} &&
+cp /etc/localtime etc
+

+ The rndc.conf file contains + information for controlling named operations with the + rndc utility. + Generate a key for use in the named.conf and rndc.conf with the rndc-confgen command: +

+
rndc-confgen -a -b 512 -t /srv/named
+

+ Create the named.conf file + from which named will read the + location of zone files, root name servers and secure DNS + keys: +

+
cat >> /srv/named/etc/named.conf << "EOF"
+options {
+    directory "/etc/named";
+    pid-file "/var/run/named.pid";
+    statistics-file "/var/run/named.stats";
+
+};
+zone "." {
+    type hint;
+    file "root.hints";
+};
+zone "0.0.127.in-addr.arpa" {
+    type master;
+    file "pz/127.0.0";
+};
+
+// Bind 9 now logs by default through syslog (except debug).
+// These are the default logging rules.
+
+logging {
+    category default { default_syslog; default_debug; };
+    category unmatched { null; };
+
+  channel default_syslog {
+      syslog daemon;                      // send to syslog's daemon
+                                          // facility
+      severity info;                      // only send priority info
+                                          // and higher
+  };
+
+  channel default_debug {
+      file "named.run";                   // write to named.run in
+                                          // the working directory
+                                          // Note: stderr is used instead
+                                          // of "named.run"
+                                          // if the server is started
+                                          // with the '-f' option.
+      severity dynamic;                   // log at the server's
+                                          // current debug level
+  };
+
+  channel default_stderr {
+      stderr;                             // writes to stderr
+      severity info;                      // only send priority info
+                                          // and higher
+  };
+
+  channel null {
+      null;                               // toss anything sent to
+                                          // this channel
+  };
+};
+EOF
+

+ Create a zone file with the following contents: +

+
cat > /srv/named/etc/named/pz/127.0.0 << "EOF"
+$TTL 3D
+@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
+                        1       ; Serial
+                        8H      ; Refresh
+                        2H      ; Retry
+                        4W      ; Expire
+                        1D)     ; Minimum TTL
+                NS      ns.local.domain.
+1               PTR     localhost.
+EOF
+

+ Create the root.hints file + with the following commands: +

+
+

+ Note +

+

+ Caution must be used to ensure there are no leading + spaces in this file. +

+
+
cat > /srv/named/etc/named/root.hints << "EOF"
+.                       6D  IN      NS      A.ROOT-SERVERS.NET.
+.                       6D  IN      NS      B.ROOT-SERVERS.NET.
+.                       6D  IN      NS      C.ROOT-SERVERS.NET.
+.                       6D  IN      NS      D.ROOT-SERVERS.NET.
+.                       6D  IN      NS      E.ROOT-SERVERS.NET.
+.                       6D  IN      NS      F.ROOT-SERVERS.NET.
+.                       6D  IN      NS      G.ROOT-SERVERS.NET.
+.                       6D  IN      NS      H.ROOT-SERVERS.NET.
+.                       6D  IN      NS      I.ROOT-SERVERS.NET.
+.                       6D  IN      NS      J.ROOT-SERVERS.NET.
+.                       6D  IN      NS      K.ROOT-SERVERS.NET.
+.                       6D  IN      NS      L.ROOT-SERVERS.NET.
+.                       6D  IN      NS      M.ROOT-SERVERS.NET.
+A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
+A.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:ba3e::2:30
+B.ROOT-SERVERS.NET.     6D  IN      A       170.247.170.2
+B.ROOT-SERVERS.NET.     6D  IN      AAAA    2801:1b8:10::b
+C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
+C.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2::c
+D.ROOT-SERVERS.NET.     6D  IN      A       199.7.91.13
+D.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2d::d
+E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
+E.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:a8::e
+F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
+F.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2f::f
+G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
+G.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:12::d0d
+H.ROOT-SERVERS.NET.     6D  IN      A       198.97.190.53
+H.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:1::53
+I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
+I.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fe::53
+J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
+J.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:c27::2:30
+K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
+K.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fd::1
+L.ROOT-SERVERS.NET.     6D  IN      A       199.7.83.42
+L.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:9f::42
+M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
+M.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:dc3::35
+EOF
+

+ The root.hints file is a list + of root name servers. This file must be updated + periodically with the dig utility. A current + copy of root.hints can be obtained from https://www.internic.net/domain/named.root. + For details, consult the "BIND 9 Administrator Reference + Manual". +

+

+ Create or modify resolv.conf + to use the new name server with the following commands: +

+
+

+ Note +

+

+ Replace <yourdomain.com> + with your own valid domain name. +

+
+
cp /etc/resolv.conf /etc/resolv.conf.bak &&
+cat > /etc/resolv.conf << "EOF"
+search <yourdomain.com>
+nameserver 127.0.0.1
+EOF
+

+ Set permissions on the chroot jail with the + following command: +

+
chown -R named:named /srv/named
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To start the DNS server at boot, install the /etc/rc.d/init.d/bind init script + included in the blfs-bootscripts-20250225 package: +

+
make install-bind
+

+ Now start BIND with the + following command: +

+
/etc/rc.d/init.d/bind start
+
+
+
+
+
+

+ Testing BIND +

+
+
+
+

+ Test out the new BIND 9 + installation. First query the local host address with + dig: +

+
dig -x 127.0.0.1
+

+ Now try an external name lookup, taking note of the speed + difference in repeated lookups due to the caching. Run the + dig command + twice on the same address: +

+
dig www.linuxfromscratch.org &&
+dig www.linuxfromscratch.org
+

+ You can see almost instantaneous results with the named + caching lookups. Consult the BIND Administrator Reference Manual + (see below) for further configuration options. +

+
+
+
+

+ Administrator Reference Manual (ARM) +

+

+ The ARM documentation (do not confuse with the processor + architecture) is included in the source package. The + documentation is in .rst format which means that it can be + converted in human readable formats if sphinx-8.2.3 is installed. +

+

+ When BIND is set up, + especially if it is going to be operating in a real live + scenario, it is highly + recommended to consult the ARM documentation. ISC provides an + updated set of excellent documentation along with every + release so it can be easily viewed and/or downloaded – so + there is no excuse to not read the docs. The formats ISC + provides are epub and html at https://downloads.isc.org/isc/bind9/9.20.12/doc/arm/. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + arpaname, ddns-confgen, delv, dig, + dnssec-cds, dnssec-dsfromkey, dnssec-importkey, + dnssec-keyfromlabel, dnssec-keygen, dnssec-ksr, + dnssec-revoke, dnssec-settime, dnssec-signzone, + dnssec-verify, host, mdig, named, named-checkconf, + named-checkzone, named-compilezone, named-journalprint, + named-nzd2nzf, named-rrchecker, nsec3hash, nslookup, + nsupdate, rndc, rndc-confgen, and tsig-keygen + (symlink) +
+
+ Installed Libraries: + libdns.so, libisc.so, libisccc.so, + libisccfg.so, and libns.so +
+
+ Installed Directories: + /usr/include/{dns,dst,irs,isc,isccc,isccfg,ns}, + /usr/lib/bind, and /srv/named +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ arpaname +

+
+

+ translates IP addresses to the corresponding ARPA + names +

+
+

+ ddns-confgen +

+
+

+ generates a key for use by nsupdate and named +

+
+

+ delv +

+
+

+ is a new debugging tool that is a successor to + dig +

+
+

+ dig +

+
+

+ interrogates DNS servers +

+
+

+ dnssec-cds +

+
+

+ changes DS records for a child zone based on + CDS/CDNSKEY +

+
+

+ dnssec-dsfromkey +

+
+

+ outputs the Delegation Signer (DS) resource record + (RR) +

+
+

+ dnssec-importkey +

+
+

+ reads a public DNSKEY record and generates a pair + of .key/.private files +

+
+

+ dnssec-keyfromlabel +

+
+

+ gets keys with the given label from a cryptography + hardware device and builds key files for DNSSEC +

+
+

+ dnssec-keymgr +

+
+

+ ensures correct DNSKEY coverage based on a defined + policy +

+
+

+ dnssec-ksr +

+
+

+ creates signed key response (SKR) files for offline + KSK setups +

+
+

+ dnssec-revoke +

+
+

+ sets the REVOKED bit on a DNSSEC key +

+
+

+ dnssec-settime +

+
+

+ sets the key timing metadata for a DNSSEC key +

+
+

+ dnssec-signzone +

+
+

+ generates signed versions of zone files +

+
+

+ dnssec-verify +

+
+

+ verifies that a zone is fully signed for each + algorithm found in the DNSKEY RRset for the zone, + and that the NSEC / NSEC3 chains are complete +

+
+

+ host +

+
+

+ is a utility for DNS lookups +

+
+

+ mdig +

+
+

+ is a version of dig that allows multiple queries at + once +

+
+

+ named +

+
+

+ is the name server daemon +

+
+

+ named-checkconf +

+
+

+ checks the syntax of named.conf files +

+
+

+ named-checkzone +

+
+

+ checks zone file validity +

+
+

+ named-compilezone +

+
+

+ is similar to named-checkzone, + but it always dumps the zone contents to a + specified file in a specified format +

+
+

+ named-journalprint +

+
+

+ prints the zone journal in human-readable form +

+
+

+ named-rrchecker +

+
+

+ reads an individual DNS resource record from + standard input and checks if it is syntactically + correct +

+
+

+ named-nzd2nzf +

+
+

+ converts an NZD database to NZF text format +

+
+

+ nsec3hash +

+
+

+ generates an NSEC3 hash based on a set of NSEC3 + parameters +

+
+

+ nslookup +

+
+

+ is a program used to query Internet domain + nameservers +

+
+

+ nsupdate +

+
+

+ is used to submit DNS update requests +

+
+

+ rndc +

+
+

+ controls the operation of BIND +

+
+

+ rndc-confgen +

+
+

+ generates rndc.conf + files +

+
+

+ tsig-keygen +

+
+

+ is a symlink to ddns-confgen +

+
+
+
+
+
+
+
+

+ Kea 3.0.1 DHCP Server +

+
+
+
+
+
+

+ Introduction to ISC Kea DHCP Server +

+

+ The ISC Kea package contains + the server programs for DHCP. It is the successor of the old + ISC DHCP server which is end-of-life since December 2022. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.isc.org/isc/kea/3.0.1/kea-3.0.1.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: fc0e6d43f0afbab9e2abc458bded16ac +

    +
  • +
  • +

    + Download size: 6.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 1.5 GB (332 MB + installed; add 4 GB for tests) +

    +
  • +
  • +

    + Estimated build time: 4.1 SBU (with parallelism=4; add + 12 SBU for tests) +

    +
  • +
+
+

+ Kea + Dependencies +

+
+ Required +
+

+ Boost-1.89.0 and log4cplus-2.1.2 +

+
+ Optional +
+

+ botan, MIT Kerberos + V5-1.22.1, Valgrind-3.25.1; for documentation: + Doxygen-1.14.0, Graphviz-13.1.2, and + sphinx_rtd_theme-3.0.2 +

+
+ Optional database backends +
+

+ MariaDB-11.8.3 or MySQL, and PostgreSQL-17.6 +

+
+
+

+ Kernel + Configuration +

+

+ You must have Packet Socket support. IPv6 support is + optional. +

+
[*] Networking support --->                                                [NET]
+  Networking options --->
+    <*/M> Packet socket                                                 [PACKET]
+    [*]   TCP/IP networking                                               [INET]
+    <*>     The IPv6 protocol --->                                        [IPV6]
+
+
+

+ Installation of ISC Kea DHCP Server +

+

+ First, apply a few fixes required for boost-1.89.0: +

+
sed -e "s/, modules: \['system'\]//" -i meson.build                      &&
+sed -e "/shared_ptr.hpp/a#include <boost/asio/deadline_timer.hpp>"       \
+    -i src/lib/asiolink/interval_timer.cc                                &&
+sed -e "/posix_time_types.hpp/a#include <boost/asio/deadline_timer.hpp>" \
+    -i src/lib/asiodns/io_fetch.cc                                       &&
+sed -e "/posix_time_types.hpp/a#include <boost/asio/deadline_timer.hpp>" \
+    -i src/lib/asiodns/tests/io_fetch_unittest.cc
+

+ Now, install ISC Kea DHCP + Server by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..             \
+      --prefix=/usr        \
+      --sysconfdir=/etc    \
+      --localstatedir=/var \
+      --buildtype=release  \
+      -D crypto=openssl    \
+      -D runstatedir=/run  &&
+
+ninja
+

+ If tests were enabled, run ninja test to test the + results. There are tests which require a live database when + any of the database hooks are built. +

+

+ To install the ISC Kea DHCP + Server suite, issue the following commands as the + root user: +

+
ninja install
+

+ Fix some paths coded in the keactrl script: +

+
sed -e "s;\${prefix}/;;" -i /usr/sbin/keactrl
+

+ Create some directories and fix their permission settings as + the root user: +

+
install -dm0750 /var/lib/kea
+install -dm0750 /var/log/kea
+
+
+

+ Command Explanations +

+

+ -D crypto=openssl: Allows using + OpenSSL for communicating with the control-agent and for DNS + updates. Use -D crypto=botan if + you want to use botan. Default is openssl. +

+

+ -D postgresql=enabled or + -D mysql=enabled: ISC Kea can store the leases on a + database. This might be useful in large environments running + a cluster of DHCP servers. Using the memfile backend (which is a CSV + file stored locally) is possible anyhow. +

+

+ -D tests=enabled: This option is + required to build the test suite. Drop it if you are not + going to run the tests. +

+

+ -D krb5=enabled: This switch + enables integration with Kerberos for authenticating client + computers in an enterprise environment. +

+
+
+

+ Configuring ISC Kea DHCP Server +

+

+ The support of IPv4, IPv6 and DDNS has been split into + separate servers which runs independently from each other. + Each of them has its own configuration file. Additional configuration files come from the keactrl + agent which is used to control the servers in an easy + way. +

+

+ Note that the Kea Control Agent is deprecated since version + 3.0.0. Do not confuse kea-ctrl-agent with keactrl. +

+

+ Consult the Kea Administrator + Reference Manual for detailed information about the + configuration of ISC Kea as + it is a quite capable system. The configuration shown below + is a bare minimum to get a DHCP server running but it already + includes configuration for DDNS (Dynamic DNS). That setup + might be working for small networks with a few clients and + low traffic. For greater installations with thousands of + clients, ISC Kea can be + configured to use databases (mariadb or postgresql) to store + the leases and build a cluster with multiple nodes. It can be + integrated to ISC Stork which + is a management dashboard to ISC + Kea. +

+

+ If you want to start the DHCP Server at boot, install the + /etc/rc.d/init.d/kea-dhcpd init + script included in the blfs-bootscripts-20250225 package: +

+
make install-kea-dhcpd
+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/kea/keactrl.conf, + /etc/kea/kea-ctrl-agent.conf, + /etc/kea/kea-dhcp4.conf, + /etc/kea/kea-dhcp6.conf, and + /etc/kea/kea-dhcp-ddns.conf +

+
+
+
+
+
+

+ Kea + Control Configuration +

+
+
+
+

+ keactrl is + used to control the independent servers (IPv4, IPv6, DDNS). + Its configuration file /etc/kea/keactrl.conf is installed by + default and includes many path settings which are defined + due to the configure at build time. + It also includes settings to specify which of the servers + should be started. +

+
+
    +
  • +

    + Control Agent +

    +

    + The Control Agent is a daemon which allows the + (re)configuration of the Kea DHCP service via REST + API. Set ctrl_agent=yes + to start the control agent (service providing a REST + API), set ctrl_agent=no + in case the control agent is not needed. +

    +
  • +
  • +

    + IPv4 DHCP server +

    +

    + This daemon handles requests for IPv4 addresses. Set + dhcp4=yes to start it, + set dhcp4=no in case + DHCP service for IPv4 is not wanted. +

    +
  • +
  • +

    + IPv6 DHCP server +

    +

    + This daemon handles requests for IPv6 addresses. Set + dhcp6=yes to start it, + set dhcp6=no in case + DHCP service for IPv6 is not wanted. +

    +
  • +
  • +

    + Dynamic DNS +

    +

    + This daemon is used to update a DNS server + dynamically when Kea assigns an IP address to a + device. Set dhcp_ddns=yes to enable it, set + dhcp_ddns=no in case + dynamic DNS updates are not wanted. +

    +
  • +
+
+

+ The Netconf service is not installed because required + dependencies are not covered by the current BLFS book. . +

+

+ With the following command, Kea will be configured to start + the dhcp service for IPv4 and the dynamic DNS update, while + the control agent and the dhcp service for IPv6 remain + down. Tweak the command to match your needs on started + services and execute as the root user: +

+
sed -e "s/^dhcp4=.*/dhcp4=yes/" \
+    -e "s/^dhcp6=.*/dhcp6=no/" \
+    -e "s/^dhcp_ddns=.*/dhcp_ddns=yes/" \
+    -e "s/^ctrl_agent=.*/ctrl_agent=no/" \
+    -i /etc/kea/keactrl.conf
+
+
+
+
+
+
+

+ Control Agent + Configuration +

+
+
+
+

+ The provided configuration could be used without changes + but in BLFS, objects like sockets are stored in + /run rather than in + /tmp. +

+
cat > /etc/kea/kea-ctrl-agent.conf << "EOF"
+// Begin /etc/kea/kea-ctrl-agent.conf
+{
+  // This is a basic configuration for the Kea Control Agent.
+  // RESTful interface to be available at http://127.0.0.1:8000/
+  "Control-agent": {
+    "http-host": "127.0.0.1",
+    "http-port": 8000,
+    "control-sockets": {
+      "dhcp4": {
+        "socket-type": "unix",
+        "socket-name": "/run/kea/kea4-ctrl-socket"
+      },
+      "dhcp6": {
+        "socket-type": "unix",
+        "socket-name": "/run/kea/kea6-ctrl-socket"
+      },
+      "d2": {
+        "socket-type": "unix",
+        "socket-name": "/run/kea/kea-ddns-ctrl-socket"
+      }
+    },
+
+    "loggers": [
+      {
+        "name": "kea-ctrl-agent",
+        "output_options": [
+          {
+            "output": "/var/log/kea/kea-ctrl-agent.log",
+            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
+          }
+        ],
+        "severity": "INFO",
+        "debuglevel": 0
+      }
+    ]
+  }
+}
+// End /etc/kea/kea-ctrl-agent.conf
+EOF
+
+
+
+
+
+

+ IPv4 DHCP Server Configuration +

+
+
+
+

+ A sample configuration file is created in /etc/kea/kea-dhcp4.conf. Adjust the file + to suit your needs or overwrite it by running the following + command as the root user + (you'll need to edit this file anyway: at least the + interfaces field, + the ddns-qualifying-suffix field, + and almost all the fields in Subnet4: +

+
cat > /etc/kea/kea-dhcp4.conf << "EOF"
+// Begin /etc/kea/kea-dhcp4.conf
+{
+  "Dhcp4": {
+    // Add names of your network interfaces to listen on.
+    "interfaces-config": {
+      "interfaces": [ "eth0", "eth2" ]
+    },
+
+    "control-socket": {
+      "socket-type": "unix",
+      "socket-name": "/run/kea/kea4-ctrl-socket"
+    },
+
+    "lease-database": {
+      "type": "memfile",
+      "lfc-interval": 3600,
+      "name": "/var/lib/kea/kea-leases4.csv"
+    },
+
+    "expired-leases-processing": {
+      "reclaim-timer-wait-time": 10,
+      "flush-reclaimed-timer-wait-time": 25,
+      "hold-reclaimed-time": 3600,
+      "max-reclaim-leases": 100,
+      "max-reclaim-time": 250,
+      "unwarned-reclaim-cycles": 5
+    },
+
+    "renew-timer": 900,
+    "rebind-timer": 1800,
+    "valid-lifetime": 3600,
+
+    // Enable DDNS - Kea will dynamically update the DNS
+    "ddns-send-updates" : true,
+    "ddns-qualifying-suffix": "your.domain.tld",
+    "dhcp-ddns" : {
+      "enable-updates": true
+    },
+
+    "subnet4": [
+      {
+        "id": 1001,   // Each subnet requires a unique numeric id
+        "subnet": "192.168.56.0/24",
+        "pools": [ { "pool": "192.168.56.16 - 192.168.56.254" } ],
+        "option-data": [
+          {
+            "name": "domain-name",
+            "data": "your.domain.tld"
+          },
+          {
+            "name": "domain-name-servers",
+            "data": "192.168.56.2, 192.168.3.7"
+          },
+          {
+            "name": "domain-search",
+            "data": "your.domain.tld"
+          },
+          {
+            "name": "routers",
+            "data": "192.168.56.2"
+          }
+        ]
+      }
+    ],
+
+    "loggers": [
+      {
+        "name": "kea-dhcp4",
+        "output_options": [
+          {
+            "output": "/var/log/kea/kea-dhcp4.log",
+            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
+          }
+        ],
+        "severity": "INFO",
+        "debuglevel": 0
+      }
+    ]
+  }
+}
+// End /etc/kea/kea-dhcp4.conf
+EOF
+
+
+
+
+
+

+ IPv6 DHCP Server Configuration +

+
+
+
+

+ The configuration for IPv6 is similar to the configuration + of IPv4. The configuration file is /etc/kea/kea-dhcp6.conf. +

+
+
+
+
+
+

+ Dynamic DNS Configuration +

+
+
+
+

+ If there is a BIND-9.20.12 server running, + ISC Kea can update the DNS + when it gives an IP address to a client. A sample + configuration file is created in /etc/kea/kea-dhcp-ddns.conf. Adjust the + file to suit your needs or overwrite it by running the + following command as the root user: +

+
cat > /etc/kea/kea-dhcp-ddns.conf << "EOF"
+// Begin /etc/kea/kea-dhcp-ddns.conf
+{
+  "DhcpDdns": {
+    "ip-address": "127.0.0.1",
+    "port": 53001,
+    "control-socket": {
+      "socket-type": "unix",
+      "socket-name": "/run/kea/kea-ddns-ctrl-socket"
+    },
+
+    "tsig-keys": [
+      {
+        "name"      : "rndc-key",
+        "algorithm" : "hmac-sha256",
+        "secret"    : "1FU5hD7faYaajQCjSdA54JkTPQxbbPrRnzOKqHcD9cM="
+      }
+    ],
+
+    "forward-ddns" : {
+      "ddns-domains" : [
+        {
+          "name" : "your.domain.tld.",
+          "key-name": "rndc-key",
+          "dns-servers" : [
+            {
+              "ip-address" : "127.0.0.1",
+              "port" : 53
+            }
+          ]
+        }
+      ]
+    },
+
+    "reverse-ddns" : {
+      "ddns-domains" : [
+        {
+          "name" : "56.168.192.in-addr.arpa.",
+          "key-name": "rndc-key",
+          "dns-servers" : [
+            {
+              "ip-address" : "127.0.0.1",
+              "port" : 53
+            }
+          ]
+        }
+      ]
+    },
+
+    "loggers": [
+      {
+        "name": "kea-dhcp-ddns",
+        "output_options": [
+          {
+            "output": "/var/log/kea/kea-ddns.log",
+            "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
+          }
+        ],
+        "severity": "INFO",
+        "debuglevel": 0
+      }
+    ]
+  }
+}
+// End /etc/kea/kea-dhcp-ddns.conf
+EOF
+
+

+ Note +

+

+ The value of secret is just + an example. Generate the key for your installation by + using the rndc-confgen + -a command or the tsig-keygen command + which both are provided by BIND-9.20.12. +

+

+ In this example configuration, it is assumed that the DNS + server runs on the same machine as Kea does (accessible + via 127.0.0.1) and that this + machine has the IP 192.168.56.2. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + keactrl, kea-admin, kea-ctrl-agent, + kea-dhcp4, kea-dhcp6, kea-dhcp-ddns, kea-lfc, + kea-shell +
+
+ Installed Libraries: + libkea-asiodns.so, + libkea-asiolink.so, libkea-cc.so, libkea-cgfclient.so, + libkea-cryptolink.so, libkea-d2srv.so, + libkea-database.so, libkea-dhcp_ddns.so, + libkea-dhcp++.so, libkea-dhcpsrv.so, libkea-dns++.so, + libkea-eval.so, libkea-exceptions.so, libkea-hooks.so, + libkea-http.so, libkea-log.so, libkea-process.so, + libkea-stats.so, libkea-tcp.so, libkea-util.so, and + libkea-util-io.so +
+
+ Installed Directories: + /etc/kea, /run/kea, + /usr/include/kea, /usr/lib/kea, + /usr/lib/python3.13/site-packages/kea, /usr/share/kea, + /usr/share/doc/kea-3.0.1, /var/lib/kea, and + /var/log/kea +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ keactrl +

+
+

+ Tool to control (start/stop) the server processes. +

+
+

+ kea-admin +

+
+

+ kea-admin is a shell script which offers database + maintenance. +

+
+

+ kea-ctrl-agent +

+
+

+ Daemon which exposes a RESTful control interface + for managing Kea servers. +

+
+

+ kea-dhcp4 +

+
+

+ The server daemon providing IPv4 addresses. +

+
+

+ kea-dhcp6 +

+
+

+ The server daemon providing IPv6 addresses. +

+
+

+ kea-dhcp-ddns +

+
+

+ The server daemon performing the dynamic DNS + updates. +

+
+

+ kea-lfc +

+
+

+ The kea-lfc service process removes redundant + information from the files used to provide + persistent storage for the memfile database + backend. It is run by the Kea DHCP server. +

+
+

+ keashell +

+
+

+ RESTful client to the ISC + Kea services. +

+
+
+
+
+
+
+
+

+ ProFTPD-1.3.9 +

+
+
+
+
+
+

+ Introduction to ProFTPD +

+

+ The ProFTPD package contains + a secure and highly configurable FTP daemon. This is useful + for serving large file archives over a network. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ProFTPD Dependencies +

+
+ Optional +
+

+ libcap-2.76 with PAM, libssh2-1.11.1, Linux-PAM-1.7.1, + MariaDB-11.8.3 or MySQL, pcre2-10.45, PostgreSQL-17.6, and Net::SSH2 +

+
+
+

+ Installation of ProFTPD +

+

+ For security reasons, you should install ProFTPD using an unprivileged user and + group. As the root user: +

+
groupadd -g 46 proftpd                             &&
+useradd -c proftpd -d /srv/ftp -g proftpd \
+        -s /usr/bin/proftpdshell -u 46 proftpd     &&
+
+install -v -d -m775 -o proftpd -g proftpd /srv/ftp &&
+ln -v -s /usr/bin/false /usr/bin/proftpdshell      &&
+echo /usr/bin/proftpdshell >> /etc/shells
+

+ Install ProFTPD as an + unprivileged user by running the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/run &&
+make
+

+ This packages does not come with a usable test suite. +

+

+ Now, as the root user: +

+
make install                                   &&
+install -d -m755 /usr/share/doc/proftpd-1.3.9 &&
+cp -Rv doc/*     /usr/share/doc/proftpd-1.3.9
+
+
+

+ Command Explanations +

+

+ install -v -d -m775 -o proftpd + -g proftpd /srv/ftp: Create the home + directory for ProFTPD. +

+

+ ln -v -s /usr/bin/false + /usr/bin/proftpdshell: Set the default shell + as a link to an invalid shell. +

+

+ echo /usr/bin/proftpdshell + >> /etc/shells: Fake a valid shell for + compatibility purposes. +

+
+

+ Note +

+

+ The above two commands can be omitted if the following + directive is placed in the configuration file: +

+
RequireValidShell off
+

+ By default, proftpd will require that users logging in have + valid shells. The RequireValidShell directive turns off + this requirement. This is only recommended if you are + setting up your FTP server exclusively for anonymous + downloads. +

+
+
+

+ Note +

+

+ Support for most of the dependency packages requires using + options passed to the configure script. View + the output from ./configure + --help for complete information about + enabling dependency packages. +

+
+
+
+

+ Configuring ProFTPD +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/proftpd.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ This is a simple, download-only sample configuration. See + the ProFTPD documentation + in /usr/share/doc/proftpd and + consult the website at http://www.proftpd.org/ for + example configurations. +

+
cat > /etc/proftpd.conf << "EOF"
+# This is a basic ProFTPD configuration file
+# It establishes a single server and a single anonymous login.
+
+ServerName                      "ProFTPD Default Installation"
+ServerType                      standalone
+DefaultServer                   on
+
+# Port 21 is the standard FTP port.
+Port                            21
+# Umask 022 is a good standard umask to prevent new dirs and files
+# from being group and world writable.
+Umask                           022
+
+# To prevent DoS attacks, set the maximum number of child processes
+# to 30.  If you need to allow more than 30 concurrent connections
+# at once, simply increase this value.  Note that this ONLY works
+# in standalone mode, in inetd mode you should use an inetd server
+# that allows you to limit maximum number of processes per service
+
+MaxInstances                    30
+
+# Set the user and group that the server normally runs at.
+User                            proftpd
+Group                           proftpd
+
+# To cause every FTP user to be "jailed" (chrooted) into their home
+# directory, uncomment this line.
+#DefaultRoot ~
+
+
+# Normally, files should be overwritable.
+<Directory /*>
+  AllowOverwrite                on
+</Directory>
+
+# A basic anonymous configuration, no upload directories.
+<Anonymous ~proftpd>
+  User                          proftpd
+  Group                         proftpd
+  # Clients should be able to login with "anonymous" as well as "proftpd"
+  UserAlias                     anonymous proftpd
+
+  # Limit the maximum number of anonymous logins
+  MaxClients                    10
+
+  # 'welcome.msg' should be displayed at login, and '.message' displayed
+  # in each newly chdired directory.
+  DisplayLogin                  welcome.msg
+  DisplayChdir                  .message
+
+  # Limit WRITE everywhere in the anonymous chroot
+  <Limit WRITE>
+    DenyAll
+  </Limit>
+</Anonymous>
+EOF
+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/proftpd init + script included in the blfs-bootscripts-20250225 package: +

+
make install-proftpd
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ftpasswd, ftpcount, ftpdctl, + ftpmail, ftpquota, ftpscrub, ftpshut, ftptop, ftpwho, + in.proftpd (symlink to proftpd), proftpd, and prxs +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/{include,lib}/proftpd, + /usr/share/doc/proftpd-1.3.9, and /srv/ftp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ proftpd +

+
+

+ is the FTP daemon +

+
+

+ ftpcount +

+
+

+ shows the current number of connections +

+
+

+ ftpdctl +

+
+

+ is used to control the proftpd daemon while it is + running +

+
+

+ ftpasswd +

+
+

+ is a Perl script designed to create and manage + AuthUserFiles and AuthGroupFiles of the correct + format for proftpd +

+
+

+ ftpmail +

+
+

+ is a Perl script for sending email based on the + proftpd TransferLog +

+
+

+ ftpquota +

+
+

+ is a Perl script designed to create and manage + limits and tally files for the mod_quotatab + + mod_quotatab_file module combination for proftpd +

+
+

+ ftpscrub +

+
+

+ provides a way to scrub the scoreboard file on + demand +

+
+

+ ftpshut +

+
+

+ shuts down all proftpd servers at a given + time +

+
+

+ ftptop +

+
+

+ displays running status on connections +

+
+

+ ftpwho +

+
+

+ shows current process information for each session +

+
+

+ prxs +

+
+

+ is a Perl script designed to compile and install + third-party modules, from source code, as DSO + modules for the installed proftpd +

+
+
+
+
+
+
+
+
+

+ Chapter 21. Mail Server Software +

+
+
+
+
+

+ MTAs are the programs which transport mail from one machine to + the other. The traditional MTA is Sendmail, however there are several other + choices. +

+

+ In addition to the SMTP servers, there is also a POP/IMAP server + (Dovecot). +

+
+
+
+

+ Dovecot-2.4.0 +

+
+
+
+
+
+

+ Introduction to Dovecot +

+

+ Dovecot is an Internet + Message Access Protocol (IMAP) and Post Office Protocol (POP) + server, written primarily with security in mind. Dovecot aims to be lightweight, fast and + easy to set up as well as highly configurable and easily + extensible with plugins. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Dovecot Dependencies +

+
+ Required +
+

+ libtirpc-1.3.6 and Linux-PAM-1.7.1 +

+
+ Optional +
+

+ Cyrus SASL-2.1.28, ICU-77.1, libcap-2.76 + with PAM, libunwind-1.8.2, Lua-5.4.8, MariaDB-11.8.3 or + MySQL, + OpenLDAP-2.6.10, PostgreSQL-17.6, + SQLite-3.50.4, Valgrind-3.25.1, + xapian-1.4.29, xfsprogs-6.15.0, + Cassandra, stemmer and + libsodium +

+
+
+

+ Installation of Dovecot +

+
+

+ Warning +

+

+ There are significant changes in the configuration of this + package that are required when updating to Dovecot 2.4.0. + Please review the documentation at + Dovecot Upgrade Guide before continuing if you are + upgrading this package from a previous version. +

+
+

+ There should be dedicated users and groups for unprivileged + Dovecot processes and for processing users' logins. Issue the + following commands as the root user: +

+
groupadd -g 42 dovecot &&
+useradd -c "Dovecot unprivileged user" -d /dev/null -u 42 \
+        -g dovecot -s /bin/false dovecot &&
+groupadd -g 43 dovenull &&
+useradd -c "Dovecot login user" -d /dev/null -u 43 \
+        -g dovenull -s /bin/false dovenull
+

+ Install Dovecot by running + the following commands: +

+
./configure --prefix=/usr                          \
+            --sysconfdir=/etc                      \
+            --localstatedir=/var                   \
+            --with-systemd=no                      \
+            --docdir=/usr/share/doc/dovecot-2.4.0  \
+            --disable-static &&
+make
+

+ To test the results, issue make + -k check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-ldap: This switch enables + OpenLDAP authentication + support. +

+

+ --with-pgsql: This switch enables + PostgreSQL database support. +

+

+ --with-mysql: This switch enables + MySQL database support. +

+

+ --with-sqlite: This switch + enables SQLite database + support. +

+

+ --with-lua=no: This switch + enables Lua plugin support. + This includes a mail and push notification plugin. +

+
+
+

+ Configuring Dovecot +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/dovecot/dovecot.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The following configuration is a simple proof of concept + with IMAP service using local users for authentication and + mailbox location. +

+
mv -v /etc/dovecot/dovecot.conf{,.orig} &&
+chmod -v 1777 /var/mail &&
+cat > /etc/dovecot/dovecot.conf << "EOF"
+
+# The dovecot configuration requires a minimum version to be set. The server
+# will refuse to start if the version set here is older than the version of
+# Dovecot installed. This option allows the Dovecot server to set reasonable
+# default values based on what version is set here.
+dovecot_config_version = 2.4.0
+
+# This option sets the minimum version that is able to read data files from
+# the Dovecot server. This is primarily for a cluster which may have several
+# different versions of Dovecot installed, but is required for the server to
+# run.
+dovecot_storage_version = 2.4.0
+
+protocols = imap
+ssl = no
+# The next line is only needed if you have no IPv6 network interfaces
+listen = *
+mail_inbox_path = /var/mail/%{user}
+mail_driver = mbox
+mail_path = ~/Mail
+userdb users {
+  driver = passwd
+}
+passdb passwords {
+  driver = pam
+}
+EOF
+

+ The above configuration also requires a configuration file + to be installed for Linux-PAM so dovecot can authenticate + users. Issue the following command as the root user to create the configuration + file for Linux-PAM: +

+
cat > /etc/pam.d/dovecot << "EOF"
+# Begin /etc/pam.d/dovecot
+
+auth     include system-auth
+account  include system-account
+password include system-password
+
+# End /etc/pam.d/dovecot
+EOF
+

+ You will definitely want to read the official documentation + at https://doc.dovecot.org/2.4.0/ + if you plan to use Dovecot + in a production environment. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ If you want the Dovecot + server to start automatically when the system is booted, + install the /etc/rc.d/init.d/dovecot init script + included in the blfs-bootscripts-20250225 package. +

+
make install-dovecot
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + doveadm, doveconf, dovecot, and + dovecot-sysreport +
+
+ Installed Libraries: + various internal plugins in + /usr/lib/dovecot +
+
+ Installed Directories: + /etc/dovecot, + /usr/{include,lib,libexec,share}/dovecot and + /usr/share/doc/dovecot-2.4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ doveadm +

+
+

+ is the Dovecot + administration tool +

+
+

+ doveconf +

+
+

+ is Dovecot's + configuration dumping utility +

+
+

+ dovecot +

+
+

+ is the IMAP and POP server +

+
+

+ dovecot-sysreport +

+
+

+ prints system information that is useful to the + Dovecot developers when submitting bug reports + upstream +

+
+
+
+
+
+
+
+

+ Exim-4.98.2 +

+
+
+
+
+
+

+ Introduction to Exim +

+

+ The Exim package contains a + Mail Transport Agent written by the University of Cambridge, + released under the GNU Public License. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+
    +
  • +

    + Additional formats of the documentation (text-based + docs are shipped with the sources) can be downloaded by + following the links shown at https://exim.org/docs.html. +

    +
  • +
+
+

+ Exim + Dependencies +

+
+ Required +
+

+ libnsl-2.0.1, File-FcntlLock-0.22 and pcre2-10.45 +

+
+ Optional +
+

+ TDB (alternative + to GDBM, built in LFS), Cyrus SASL-2.1.28, libidn-1.43, + Linux-PAM-1.7.1, MariaDB-11.8.3 or + MySQL, + OpenLDAP-2.6.10, GnuTLS-3.8.10, PostgreSQL-17.6, SQLite-3.50.4, a graphical + environment, Heimdal GSSAPI, + libspf2, and + OpenDMARC +

+
+
+

+ Installation of Exim +

+

+ Before building Exim, as the + root user you should create + the group and user exim which + will run the exim daemon: +

+
groupadd -g 31 exim &&
+useradd -d /dev/null -c "Exim Daemon" -g exim -s /bin/false -u 31 exim
+

+ Configure Exim with the + following commands: +

+
sed -e 's,^BIN_DIR.*$,BIN_DIRECTORY=/usr/sbin,'    \
+    -e 's,^CONF.*$,CONFIGURE_FILE=/etc/exim.conf,' \
+    -e 's,^EXIM_USER.*$,EXIM_USER=exim,'           \
+    -e '/# USE_OPENSSL/s,^#,,' src/EDITME > Local/Makefile &&
+
+printf "USE_GDBM = yes\nDBMLIB = -lgdbm\n" >> Local/Makefile
+
+

+ If you want to add Linux PAM + support, also run the following commands: +

+
sed -i '/# SUPPORT_PAM=yes/s,^#,,' Local/Makefile
+echo "EXTRALIBS=-lpam" >> Local/Makefile
+
+

+ Build Exim with the + following command: +

+
make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install                                    &&
+install -v -m644 doc/exim.8 /usr/share/man/man8 &&
+
+install -vdm 755    /usr/share/doc/exim-4.98.2 &&
+cp      -Rv doc/*   /usr/share/doc/exim-4.98.2 &&
+
+ln -sfv exim /usr/sbin/sendmail                 &&
+install -v -d -m750 -o exim -g exim /var/spool/exim
+
+
+

+ Command Explanations +

+

+ sed -e ... > + Local/Makefile: Most of Exim's configuration options are defined + in Local/Makefile, which is + created from the src/EDITME + file. This command specifies the minimum set of options. + Descriptions for the options are listed below. +

+

+ printf ... > + Local/Makefile: Setting those variables + allows to use GDBM instead of the default Berkeley DB. Remove + this command if you have installed + Berkeley DB (deprecated). +

+

+ BIN_DIRECTORY=/usr/sbin: This + installs all of Exim's + binaries and scripts in /usr/sbin. +

+

+ CONFIGURE_FILE=/etc/exim.conf: + This installs Exim's main + configuration file in /etc. +

+

+ EXIM_USER=exim: This + tells Exim that after the + daemon no longer needs root + privileges, the process needs to hand off the daemon to the + exim user. +

+

+ USE_OPENSSL: + uncommenting USE_OPENSSL=yes and + USE_OPNSSL_PC=yes tells the build + system to use OpenSSL, and + to find the needed libraries with pkg-config. +

+

+ Uncomment EXIM_MONITOR: This + allows building the Exim + monitor program, which requires X + Window System support, and is commented out by + default. +

+

+ ln -sfv exim + /usr/sbin/sendmail: Creates a link to + sendmail for + applications which need it. Exim will accept most Sendmail command-line options. +

+

+ install -v -m750 -o exim -g + exim /var/spool/exim: Since /var/spool is + owned by root and this version of exim drops root privileges early, to run as user + exim, it cannot create the + /var/spool/exim directory. As a + work around, it is created manually. +

+
+
+

+ Adding Additional Functionality +

+

+ To utilize some or all of the dependency packages, you'll + need to modify Local/Makefile + to include the appropriate directives and parameters to link + additional libraries before you build Exim. Local/Makefile is heavily commented with + instructions on how to do this. Listed below is additional + information to help you link these dependency packages or add + additional functionality. +

+

+ If you wish to build and install the .info documentation, refer to + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch04.html#SECTinsinfdoc. +

+

+ If you wish to build in Exim's interfaces for calling virus + and spam scanning software directly from access control + lists, uncomment the WITH_CONTENT_SCAN=yes parameter and review + the information found at + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch45.html. +

+

+ To use a backend database other than GDBM, see the instructions at + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch04.html#SECTdb. +

+

+ For SSL functionality, see the instructions at + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch04.html#SECTinctlsssl + and + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch42.html. +

+

+ For tcpwrappers + functionality, see the instructions at + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch04.html#SECID27. +

+

+ For information about adding authentication mechanisms to the + build, see chapters 33—41 of + https://exim.org/exim-html-4.98.2/doc/html/spec_html/index.html. +

+

+ For information about linking Linux-PAM, refer to the instructions + + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch11.html#SECTexpcond. +

+

+ For information about linking database engine libraries used + for Exim name lookups, see + the instructions at + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch09.html. +

+

+ If you wish to add Readline + support to Exim when invoked + in “test + expansion” (-be) + mode, see the information in the -be section of + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch05.html#id2525974. +

+

+ You may wish to modify the default configuration and send log + files to syslog instead of the default /var/spool/exim/log directory. See the + information at + https://exim.org/exim-html-4.98.2/doc/html/spec_html/ch-log_files.html. +

+

+ A wealth of information can be also found at the Exim + Wiki. +

+
+
+

+ Configuring Exim +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/exim.conf and + /etc/aliases +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Review the file /etc/exim.conf, and modify any settings + to suit your needs. Note that the default configuration + assumes that the /var/mail + directory is world writable, but has the sticky bit set. If + you want to use the default configuration, issue as the + root user: +

+
chmod -v a+wt /var/mail
+

+ A default (nothing but comments) /etc/aliases file is installed during the + package installation if this file did not exist on your + system. Create the necessary aliases and start the + Exim daemon using the + following commands: +

+
cat >> /etc/aliases << "EOF"
+postmaster: root
+MAILER-DAEMON: root
+EOF
+/usr/sbin/exim -bd -q15m
+
+

+ Note +

+

+ To protect an existing /etc/aliases file, the command above + appends these aliases to it. This file should be checked + and duplicate aliases removed, if present. +

+
+

+ The /usr/sbin/exim -bd + -q15m command starts the Exim daemon with a 15 minute interval + in processing the mail queue. Adjust this parameter to suit + your desires. +

+
+
+
+
+
+

+ Linux PAM Configuration +

+
+
+
+

+ If you have built Exim + with Linux PAM support, + you need to create a PAM + configuration file to get it working correctly with BLFS. +

+

+ Issue the following command as the root user to create the configuration + file for Linux PAM: +

+
cat > /etc/pam.d/exim << "EOF"
+# Begin /etc/pam.d/exim
+
+auth    include system-auth
+account include system-account
+session include system-session
+
+# End /etc/pam.d/exim
+EOF
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically start exim at boot, install the + /etc/rc.d/init.d/exim init script + included in the blfs-bootscripts-20250225 package: +

+
make install-exim
+

+ The bootscript also starts the Exim daemon and dispatches a queue + runner process every 15 minutes. Modify the -q<time + interval> parameter in /etc/rc.d/init.d/exim, if necessary for + your installation. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + exicyclog, exigrep, exim, + exim-4.98.2-2, exim_checkaccess, exim_dbmbuild, + exim_dumpdb, exim_fixdb, exim_id_update, exim_lock, + exim_msgdate, exim_tidydb, eximstats, exinext, exipick, + exiqgrep, exiqsumm, exiwhat, and optionally, eximon, + eximon.bin, and sendmail (symlink) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/exim-4.98.2 and + /var/spool/exim +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ exicyclog +

+
+

+ cycles Exim log + files +

+
+

+ exigrep +

+
+

+ searches Exim log + files +

+
+

+ exim +

+
+

+ is a symlink to the exim-4.98.2-2 MTA + daemon +

+
+

+ exim-4.98.2-2 +

+
+

+ is the Exim mail + transport agent daemon +

+
+

+ exim_checkaccess +

+
+

+ states whether a given recipient address from a + given host is acceptable or not +

+
+

+ exim_dbmbuild +

+
+

+ creates and rebuilds Exim databases +

+
+

+ exim_dumpdb +

+
+

+ writes the contents of Exim databases to the standard + output +

+
+

+ exim_fixdb +

+
+

+ modifies data in Exim databases +

+
+

+ exim_update_id +

+
+

+ upgrades and downgrades Exim message-id formats in + spool files +

+
+

+ exim_lock +

+
+

+ locks a mailbox file +

+
+

+ exim_msgdate +

+
+

+ converts an Exim message-id to a human readable + form +

+
+

+ exim_tidydb +

+
+

+ removes old records from Exim databases +

+
+

+ eximstats +

+
+

+ generates mail statistics from Exim log files +

+
+

+ exinext +

+
+

+ queries remote host retry times +

+
+

+ exipick +

+
+

+ selects messages based on various criteria +

+
+

+ exiqgrep +

+
+

+ is a utility for selective queue listing +

+
+

+ exiqsumm +

+
+

+ produces a summary of the messages in the mail + queue +

+
+

+ exiwhat +

+
+

+ queries running Exim processes +

+
+

+ eximon +

+
+

+ is a start-up shell script for eximon.bin used + to set the required environment variables before + running the program +

+
+

+ eximon.bin +

+
+

+ is a monitor program which displays current + information in an X window, and also contains a + menu interface to Exim's command line + administration options +

+
+
+
+
+
+
+
+

+ Postfix-3.10.4 +

+
+
+
+
+
+

+ Introduction to Postfix +

+

+ The Postfix package contains + a Mail Transport Agent (MTA). This is useful for sending + email to other users of your host machine. It can also be + configured to be a central mail server for your domain, a + mail relay agent or simply a mail delivery agent to your + local Internet Service Provider. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Postfix Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ ICU-77.1 for + Email Address Internationalization (SMTPUTF8) support, + MariaDB-11.8.3 or MySQL, OpenLDAP-2.6.10, + pcre2-10.45, PostgreSQL-17.6, + SQLite-3.50.4, + Berkeley DB (deprecated), and CDB or TinyCDB +

+

+ Note that SQLite, + MySQL, PostgreSQL and CDB are only useful if there is a known + need for them. +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/postfix +

+
+
+

+ Installation of Postfix +

+
+
+
+
+

+ Adding Users and Groups +

+
+
+
+

+ Before you compile the program, you need to create users + and groups that will be expected to be in place during the + installation. Add the users and groups with the following + commands issued by the root + user: +

+
groupadd -g 32 postfix &&
+groupadd -g 33 postdrop &&
+useradd -c "Postfix Daemon User" -d /var/spool/postfix -g postfix \
+        -s /bin/false -u 32 postfix &&
+chown -v postfix:postfix /var/mail
+
+
+
+
+
+

+ Configuring the Build +

+
+
+
+

+ The README files are formatted to be read with a pager like + less or more. If you want to use a text + editor, make them legible with the following sed: +

+
sed -i 's/.\x08//g' README_FILES/*
+

+ The Postfix source tree + does not contain a configure + script, rather the makefile in the top-level directory + contains a makefiles target + that regenerates all the other makefiles in the build tree. + If you wish to use additional software such as a database + back-end for virtual users, or TLS/SSL authentication, you + will need to regenerate the makefiles using one or more of + the appropriate CCARGS and + AUXLIBS settings listed below. +

+
+

+ Note +

+

+ For all variants of the CCARGS you should ensure that + '-DNO_NIS' is specified so that the build does not + attempt to access an rpcsvc header which do not exist in + BLFS. If + Berkeley DB (deprecated) is not installed, '-DNO_DB' + needs to be specified as well. +

+
+

+ For more details read the readme files. +

+

+ Initialize the CCARGS and + AUXLIBS according to the note + above: +

+
CCARGS="-DNO_NIS -DNO_DB"
+AUXLIBS=""
+

+ Next, the CCARGS and the + AUXLIBS variables are filled + with settings depending on the actual system configuration. + If an optional package is installed but should not be included in the + Postfix build, simply skip + the corresponding if [ ... ]; + then scriptlets. +

+
+
+
+
+
+ Cyrus-SASL +
+
+
+
+

+ To use Cyrus-SASL with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/libsasl2.so ]; then
+  CCARGS="$CCARGS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl"
+  AUXLIBS="$AUXLIBS -lsasl2"
+fi
+
+
+
+
+
+
+ LMDB +
+
+
+
+

+ To use LMDB with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/liblmdb.so ]; then
+  CCARGS="$CCARGS -DHAS_LMDB"
+  AUXLIBS="$AUXLIBS -llmdb"
+fi
+
+
+
+
+
+
+ OpenLDAP +
+
+
+
+

+ To use OpenLDAP with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/libldap.so -a -r /usr/lib/liblber.so ]; then
+  CCARGS="$CCARGS -DHAS_LDAP"
+  AUXLIBS="$AUXLIBS -lldap -llber"
+fi
+
+
+
+
+
+
+ Sqlite +
+
+
+
+

+ To use Sqlite with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/libsqlite3.so ]; then
+  CCARGS="$CCARGS -DHAS_SQLITE"
+  AUXLIBS="$AUXLIBS -lsqlite3 -lpthread"
+fi
+
+
+
+
+
+
+ MySQL +
+
+
+
+

+ To use MySQL with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/libmysqlclient.so ]; then
+  CCARGS="$CCARGS -DHAS_MYSQL -I/usr/include/mysql"
+  AUXLIBS="$AUXLIBS -lmysqlclient -lz -lm"
+fi
+
+
+
+
+
+
+ PostgreSQL +
+
+
+
+

+ To use PostgreSQL with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/libpq.so ]; then
+  CCARGS="$CCARGS -DHAS_PGSQL -I/usr/include/postgresql"
+  AUXLIBS="$AUXLIBS -lpq -lz -lm"
+fi
+
+
+
+
+
+
+ CDB/TinyCDB +
+
+
+
+

+ To use CDB or + TinyCDB with + Postfix, use the + following arguments: +

+
if [ -r </path/to/CDB>/libcdb.a ]; then
+  CCARGS="$CCARGS -DHAS_CDB"
+  AUXLIBS="$AUXLIBS </path/to/CDB>/libcdb.a"
+fi
+
+
+
+
+
+
+ StartTLS Authentication +
+
+
+
+

+ To use OpenSSL with + Postfix, use the + following arguments: +

+
if [ -r /usr/lib/libssl.so -a -r /usr/lib/libcrypto.so ]; then
+  CCARGS="$CCARGS -DUSE_TLS -I/usr/include/openssl/"
+  AUXLIBS="$AUXLIBS -lssl -lcrypto"
+fi
+

+ OpenSSL is installed by + LFS so it should be always there. The if ... then is here just for consistency. +

+
+
+
+
+
+
+

+ Installing Postfix +

+
+
+
+

+ There might be duplicate settings in AUXLIBS like -lm + when both, MariaDB and + PostgreSQL are used. They + do not harm. Install Postfix by running the following + commands: +

+
make CC="gcc -std=gnu17" CCARGS="$CCARGS" AUXLIBS="$AUXLIBS" makefiles &&
+make
+

+ This package does not come with a useful test suite. +

+

+ Now, as the root user: +

+
sh postfix-install -non-interactive  \
+   daemon_directory=/usr/lib/postfix \
+   manpage_directory=/usr/share/man  \
+   html_directory=/usr/share/doc/postfix-3.10.4/html \
+   readme_directory=/usr/share/doc/postfix-3.10.4/readme
+
+
+
+

+ Command Explanations +

+

+ make makefiles: + This command rebuilds the makefiles throughout the source + tree to use the options contained in the CCARGS and AUXLIBS + variables. +

+

+ sh postfix-install + -non-interactive: This keeps the install + script from asking any questions, thereby accepting default + destination directories in all but the few cases. If the + html_directory and readme_directory options are not set then the + documentation will not be installed. +

+

+ CC="gcc -std=gnu17": this is used + to overcome an issue with gcc-15. This version of gcc uses + -std=gnu23 by default which + exposes several issues in the source code. +

+

+ CCARGS="-DNO_EAI ...": this will + turn off SMTPUTF8 support, for example if the rest of your + email address infrastructure cannot handle UTF-8 email + addresses and message header values. +

+
+
+

+ Configuring Postfix +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/aliases, /etc/postfix/main.cf, and /etc/postfix/master.cf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Create (or append to an existing) /etc/aliases with the following command. + Change <LOGIN> to your + non-root login identity so mail addressed to root can be forwarded to you. As the + root user: +

+
cat >> /etc/aliases << "EOF"
+# Begin /etc/aliases
+
+MAILER-DAEMON:    postmaster
+postmaster:       root
+
+root:             <LOGIN>
+# End /etc/aliases
+EOF
+

+ To protect an existing /etc/aliases file, the above command + appends these aliases to it if it exists. This file should + be checked and duplicate aliases removed, if present. +

+

+ The BLFS editors recommend to use LMDB instead of Berkeley + DB for Postfix tables. Add three lines into /etc/postfix/main.cf to make postmap encode the lookup + tables in the LMDB format by default and to change the + default hash setting of the alias tables: +

+
echo 'default_database_type = lmdb'       >> /etc/postfix/main.cf &&
+echo 'alias_database = lmdb:/etc/aliases' >> /etc/postfix/main.cf &&
+echo 'alias_maps = lmdb:/etc/aliases'     >> /etc/postfix/main.cf
+

+ To protect your server against the recent SMTP smuggling + attacks, additional steps are required. Add two lines into + /etc/postfix/main.cf to + disconnect remote SMTP clients that send bare newlines in + the DATA section, while also allowing clients on your + network with non-standard SMTP implementations to still + send mail: +

+
echo 'smtpd_forbid_bare_newline = normalize' >> /etc/postfix/main.cf &&
+echo 'smtpd_forbid_bare_newline_exclusions = $mynetworks' >> /etc/postfix/main.cf
+

+ Note that if you are following an online tutorial to + configure Postfix, the tutorial may refer to a lookup table + with hash:/path/to/lookup_table. You should + replace hash with lmdb in order to use a lookup table + encoded in the LMDB format. +

+
+

+ Note +

+

+ The /etc/postfix/main.cf + and /etc/postfix/master.cf + files must be personalized for your system. The + main.cf file needs your + fully qualified hostname. You will find that main.cf is self documenting, so load it + into your editor to make the changes you need for your + situation. +

+
+
+

+ Note +

+

+ Postfix can also be set + up to run in a chroot jail. See the file in the source + examples/chroot-setup/LINUX2 for + details. +

+
+

+ To ensure that all permissions are set properly, + postfix provides a tool + which is to be run as the root user: +

+
/usr/sbin/postfix -c /etc/postfix set-permissions
+

+ If you have an existing configuration, you can run the + postfix + utility to add any necessary definitions to your existing + files. As the root user: +

+
/usr/sbin/postfix upgrade-configuration
+

+ Before starting Postfix, + you should check that your configuration and file + permissions will work properly. Run the following commands + as the root user to check + and start your Postfix + server: +

+
/usr/sbin/postfix check &&
+/usr/sbin/postfix start
+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To automate the running of Postfix at startup, install the + /etc/rc.d/init.d/postfix init + script included in the blfs-bootscripts-20250225 package: +

+
make install-postfix
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mailq (symlink), newaliases + (symlink), postalias, postcat, postconf, postdrop, + postfix, postkick, postlock, postlog, postmap, postmulti, + postqueue, postsuper, and sendmail +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /{etc,usr/lib}/postfix, + /usr/share/doc/postfix-3.10.4 and + /var/{lib,spool}/postfix +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ mailq +

+
+

+ A symlink to sendmail +

+
+

+ newaliases +

+
+

+ A symlink to sendmail +

+
+

+ postalias +

+
+

+ is a utility for Postfix alias database + maintenance +

+
+

+ postcat +

+
+

+ Prints the contents of files from the Postfix queue in human + readable format +

+
+

+ postconf +

+
+

+ Displays or changes the value of Postfix configuration + parameters +

+
+

+ postdrop +

+
+

+ Creates a file in the maildrop directory and copies + its standard input to the file +

+
+

+ postfix +

+
+

+ is the Postfix + control program +

+
+

+ postkick +

+
+

+ Sends requests to the specified service over a + local transport channel +

+
+

+ postlock +

+
+

+ Locks a mail folder for exclusive use, and executes + commands passed to it +

+
+

+ postlog +

+
+

+ A Postfix-compatible logging + interface for use in, for example, shell scripts +

+
+

+ postmap +

+
+

+ Creates or queries one or more Postfix lookup + tables, or updates an existing one +

+
+

+ postmulti +

+
+

+ is the Postfix + multi-instance manager. It allows a system + administrator to manage multiple Postfix instances on a single + host +

+
+

+ postqueue +

+
+

+ The Postfix user + interface for queue management +

+
+

+ postsuper +

+
+

+ The Postfix user + interface for superuser queue management +

+
+

+ sendmail +

+
+

+ is the Postfix to + Sendmail + compatibility interface +

+
+
+
+
+
+
+
+

+ sendmail-8.18.1 +

+
+
+
+
+
+

+ Introduction to sendmail +

+

+ The sendmail package + contains a Mail Transport Agent (MTA). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ftp.sendmail.org/sendmail.8.18.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: b6b332295b5779036d4c9246f96f673c +

    +
  • +
  • +

    + Download size: 2.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 21 MB +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU +

    +
  • +
+
+ +

+ sendmail Dependencies +

+
+ Required +
+

+ OpenLDAP-2.6.10 (client) +

+
+ Recommended +
+ +
+ Optional +
+

+ ghostscript-10.05.1 (for creating + PDF documentation), Procmail-3.24 (the configuration proposed + below requires that procmail be present at + run-time), and nph +

+
+
+

+ Installation of sendmail +

+

+ Before building sendmail, + create the required user, group and directory with the + following commands issued as the root user: +

+
groupadd -g 26 smmsp                               &&
+useradd -c "Sendmail Daemon" -g smmsp -d /dev/null \
+        -s /bin/false -u 26 smmsp                  &&
+chmod -v 1777 /var/mail                            &&
+install -v -m700 -d /var/spool/mqueue
+

+ Fix building this package with gcc-15: +

+
patch -Np1 -i ../sendmail-8.18.1-gcc15_fixes-1.patch
+
+

+ Note +

+

+ See the source tree sendmail/README file for information on + linking optional packages into the build. Use the example + below, which adds support for SASL, StartTLS (OpenSSL) and OpenLDAP, as a starting point. Of + course, modify it to suit your particular needs. +

+
+
cat >> devtools/Site/site.config.m4 << "EOF"
+APPENDDEF(`confENVDEF',`-D STARTTLS -D SASL -D LDAPMAP -D HASFLOCK')
+APPENDDEF(`confLIBS', `-lssl -lcrypto -lsasl2 -lldap -llber')
+APPENDDEF(`confINCDIRS', `-I/usr/include/sasl')
+EOF
+

+ Install sendmail with the + following commands: +

+
cat >> devtools/Site/site.config.m4 << "EOF"
+define(`confMANGRP',`root')
+define(`confMANOWN',`root')
+define(`confSBINGRP',`root')
+define(`confUBINGRP',`root')
+define(`confUBINOWN',`root')
+EOF
+
+sed -i 's|/usr/man/man|/usr/share/man/man|' \
+    devtools/OS/Linux           &&
+
+cd sendmail                     &&
+sh Build                        &&
+cd ../cf/cf                     &&
+cp generic-linux.mc sendmail.mc &&
+sh Build sendmail.cf
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -v -d -m755 /etc/mail &&
+sh Build install-cf &&
+
+cd ../..            &&
+sh Build install    &&
+
+install -v -m644 cf/cf/{submit,sendmail}.mc /etc/mail &&
+cp -v -R cf/* /etc/mail                               &&
+
+install -v -m755 -d /usr/share/doc/sendmail-8.18.1/{cf,sendmail} &&
+
+install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
+        /usr/share/doc/sendmail-8.18.1 &&
+
+install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
+        /usr/share/doc/sendmail-8.18.1/sendmail &&
+
+install -v -m644 cf/README /usr/share/doc/sendmail-8.18.1/cf &&
+
+for manpage in sendmail editmap mailstats makemap praliases smrsh
+do
+    install -v -m644 $manpage/$manpage.8 /usr/share/man/man8
+done &&
+
+install -v -m644 sendmail/aliases.5    /usr/share/man/man5 &&
+install -v -m644 sendmail/mailq.1      /usr/share/man/man1 &&
+install -v -m644 sendmail/newaliases.1 /usr/share/man/man1 &&
+install -v -m644 vacation/vacation.1   /usr/share/man/man1
+

+ Install the sendmail + Installation and Operations Guide with the following + commands: +

+
+

+ Note +

+

+ Remove op.pdf from the + make and + install + commands below if you don't have Ghostscript installed. +

+
+
cd doc/op                                       &&
+sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile &&
+make op.txt op.pdf
+

+ Now, as the root user: +

+
install -v -d -m755 /usr/share/doc/sendmail-8.18.1 &&
+install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.18.1 &&
+cd ../..
+
+
+

+ Command Explanations +

+

+ cat > + devtools/Site/site.config.m4 << "EOF": + This creates a configuration file changing some of the + default settings. +

+

+ sed ... + devtools/OS/Linux: The site.config.m4 does + not honor a change to the man directory, so fix it in the OS + definitions. +

+

+ sh Build; sh Build sendmail.cf; + sh Build install-cf; sh Build install: + sendmail uses an + m4 based build script to + create the various Makefiles. + These commands build and install the package. +

+

+ for manpage in...;do...;done; + install ...: The man pages are installed + already formatted and man displays them somewhat + garbled. These commands replace the formatted pages with + pages man can + display properly. +

+
+
+

+ Configuring sendmail +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/mail/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+
+

+ Note +

+

+ Ensure you have a fully qualified domain name defined in + /etc/hosts for your system + before proceeding. +

+
+

+ Create the /etc/mail/local-host-names and + /etc/mail/aliases files using + the following commands as the root user: +

+
echo $(hostname) > /etc/mail/local-host-names
+cat > /etc/mail/aliases << "EOF"
+postmaster: root
+MAILER-DAEMON: root
+
+EOF
+# Does not work if there is no database backend compiled in:
+#newaliases
+

+ sendmail's primary + configuration file, /etc/mail/sendmail.cf, is complex and not + meant to be directly edited. The recommended method for + changing it is to modify /etc/mail/sendmail.mc and various + m4 files, then run the + m4 macro + processor from within /etc/mail as follows: +

+
cd /etc/mail &&
+m4 m4/cf.m4 sendmail.mc > sendmail.cf
+

+ A full explanation of the files to modify, and the + available parameters can be found in /etc/mail/README. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To automate the running of sendmail at startup, install the + /etc/rc.d/init.d/sendmail init + script included in the blfs-bootscripts-20250225 package: +

+
make install-sendmail
+
+

+ Note +

+

+ The -qNm option to sendmail, where N is + number of minutes, controls how often sendmail will process the mail + queue. A default of 5 minutes is used in the init script. Individual workstation users + may want to set this as low as 1 minute, large + installations handling more mail may want to set it + higher. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + editmap, mailstats, makemap, + praliases, sendmail, smrsh, and vacation; symlinks to + /usr/sbin/sendmail: hoststat, mailq, newaliases, and + purgestat +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/mail, + /usr/share/doc/sendmail-8.18.1, and + /var/spool/clientmqueue +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ editmap +

+
+

+ queries and edits sendmail map files +

+
+

+ hoststat +

+
+

+ prints sendmail's + persistent host status +

+
+

+ mailstats +

+
+

+ displays sendmail + statistics +

+
+

+ mailq +

+
+

+ prints a summary of outbound mail messages waiting + for delivery +

+
+

+ makemap +

+
+

+ creates sendmail + map files +

+
+

+ newaliases +

+
+

+ rebuilds /etc/mail/aliases.db from the + contents of /etc/mail/aliases +

+
+

+ praliases +

+
+

+ displays current sendmail aliases +

+
+

+ purgestat +

+
+

+ causes sendmail to + clear (purge) all its host-status information +

+
+

+ sendmail +

+
+

+ is the sendmail + mail transport agent +

+
+

+ smrsh +

+
+

+ is a restricted shell for sendmail +

+
+

+ vacation +

+
+

+ is an email auto responder +

+
+
+
+
+
+
+
+
+

+ Chapter 22. Databases +

+
+
+
+
+

+ This chapter includes databases that range from single-user + read/write to industrial database servers with transaction + support. Generally, you will be sent here to satisfy dependencies + to other applications although building a SQL server on a base + LFS system is entirely possible. +

+
+
+
+

+ Important Notes + About Upgrading Database Server Software +

+
+
+
+
+
+

+ Note +

+

+ This section is about reinstalling database software when an + existing database is in use. It is not applicable for initial + installations or if there is no existing database for the + package being updated, but users should read through it to + become aware of issues that can arise in the future. +

+
+

+ Let's start this chapter with a dramatic screenshot of an error + that really happened. This error will not occur if you are + installing database software for the first time: +

+
$ sudo systemctl status postgresql
+-- postgresql.service - PostgreSQL database server
+     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
+     Active: failed (Result: exit-code) since Tue 2021-10-26 17:11:53 CDT; 2min 49s ago
+    Process: 17336 ExecStart=/usr/bin/pg_ctl -s -D ${PGROOT}/data start -w -t 120 (code=exited, status=1/FAILURE)
+        CPU: 7ms
+
+Oct 26 17:11:53 SVRNAME systemd[1]: Starting PostgreSQL database server...
+Oct 26 17:11:53 SRVNAME postgres[17338]: 2021-10-26 17:11:53.420 CDT [17338] FATAL:
+                database files are incompatible with server
+Oct 26 17:11:53 SRVNAME postgres[17338]: 2021-10-26 17:11:53.420 CDT [17338] DETAIL:
+                The data directory was initialized by PostgreSQL version 13,
+                which is not compatible with this version 14.0.
+Oct 26 17:11:53 SRVNAME postgres[17336]: pg_ctl: could not start server
+Oct 26 17:11:53 SRVNAME postgres[17336]: Examine the log output.
+Oct 26 17:11:53 SRVNAME systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE
+Oct 26 17:11:53 SRVNAME systemd[1]: postgresql.service: Failed with result 'exit-code'.
+Oct 26 17:11:53 SRVNAME systemd[1]: Failed to start PostgreSQL database server.
+

+ To avoid situations like this (i.e., your database server + software refuses to start), read the following discussion of + the best way to upgrade a DBMS (Database Management System). +

+

+ The root cause of the error shown above was an upgrade of the + server software to a newer major version which left the data + files untouched. In this case, the administrator was able to + recover the DBMS without any loss of data. +

+

+ Even if you are doing an initial DBMS install, read through + this section. It provides information about implementing backup + and restore procedures (or at least a strategy for creating + them) which will satisfy your needs and guarantee the safety of + your data. +

+
+

+ Upgrade Database Server Packages +

+

+ Database systems work on files which hold the database + metadata and the data itself. The internal structure of these + files is optimized for use by the server software. When such + server software is upgraded, the new software may utilize a + different file format than had previously been used. + Sometimes the new software can work with the old format as + well as the new one—but without the performance improvements + the new format provides. Other times, the new server software + will reformat the data files automatically after the upgrade. +

+

+ Unfortunately, the most likely case is that the new server + software complains about out of date file formats and exits. + When this happens, and you have overwritten the old server + software, you may end up with a broken system and lost data. +

+

+ Changes in data file formats usually happen at major version + changes, but they can also occur at other times. Before + upgrading any DBMS software, check the documentation to see + if this upgrade makes changes which require reformatting the + database. +

+

+ Of course, if you have databases with content that is not + easily rebuilt, it is always a good idea to create backups of + the database from time to time. Before upgrading the server + software, you should run another backup. +

+
+
+
+
+

+ Upgrade by Backup and + Restore +

+
+
+
+
+

+ Note +

+

+ A backup is useless if there is no verified process to + restore the data from this backup. When running a + database server, you should not only create backups; you + should also verify that the restore process really works. + The time to test the restore procedure is before you urgently need to + recover lost data. +

+
+

+ Most database server software provides some basic tools to + create backups of your data. Usually the backups created + with those tools can be read by newer versions of the + software (via a restore tool). Using older restore tools + with newer backup data is a bad idea; you should + never blindly assume + that it will work. It might, but usually it doesn't. +

+

+ The easiest way to upgrade your database files is to +

+
+
    +
  • +

    + Create a full database backup using the old tools. +

    +

    + This step creates an offline copy of the database + files—for long term archiving, for disaster recovery, + or as preparation for an upgrade. This offline backup + consists of either (1) a full one-to-one copy of the + current database files, or (2) a full backup of the + database files from a certain point in time, plus all + the journal data (that is Oracle® terminology, it is + called "Continuous Archiving" or "write ahead log + (WAL)" in Postgresql) describing the changes made + after that point in time. This second form takes less + time to create (if the DB software provides this type + of journaling) because you only have to save the data + that have changed since the last full backup was + created. +

    +

    + When upgrading database server software, a full + backup (which can be used for subsequent incremental + backups) should be created; but if there is a lot of + data, an incremental backup will suffice. The best + strategy for you depends on the amount of data stored + in your database (is it a few hundred table rows, or + is it hundreds of terabytes?). A full backup in the + latter case can't be done quickly. To fully protect + your data, create a backup of the old programs + (and/or their sources) and save it, along with the + data files, to be certain there is a fallback + solution if the new software cannot read the old + data. +

    +
  • +
  • +

    + Upgrade the server software +

    +

    + In this step, instructions to build the database + server software are executed just as they are shown + in subsequent sections talking about the DBMs like + MariaDB or Postgresql. That is, build the software as + usual using BLFS instructions. +

    +
  • +
  • +

    + Restore the database by using the new tools. +

    +

    + To restore the data, the tools of the newly installed + server software should be used. During the + restoration process, the new tools will create and/or + upgrade the data files in the format the new software + requires. It is assumed that newer software is + capable of reading old data. +

    +
  • +
+
+

+ Since you already have a backup procedure in place (and you + have tested your restore procedure, right?), this might be + the easiest way to upgrade as you can use your well known + processes to upgrade just as you always do—at least in + terms of the backup and restore. +

+
+
+
+
+
+

+ Upgrade the Database Files + by Using System Tools +

+
+
+
+

+ Some database systems (for instance Postgresql) provide a + tool which can reformat (upgrade) the existing database + files to the new format. If you need to restore from a + backup (for example, running the upgrade tool failed) you + will have to reinstall the old software to recover your + data. +

+

+ Even though the reformatting tools might work as + advertised, you should create a full backup before running + them. A failure could cause serious damage to the database. +

+
+
+
+

+ Notes for Specific DBMS +

+
+
+
+
+

+ PostgreSQL +

+
+
+
+

+ Upstream documentation for Backup/Restore: https://www.postgresql.org/docs/current/backup.html +

+
+
+
+
+
+

+ MariaDB +

+
+
+
+

+ Upstream documentation for Backup/Restore: https://mariadb.com/kb/en/backup-and-restore-overview/ +

+
+
+
+
+
+

+ Sqlite +

+
+
+
+

+ Do not underestimate Sqlite. It is a feature-rich DBMS. The + main difference from the two big players above is that + Sqlite does not provide access via a network API. Sqlite + databases are always stored on the machine running the + program which uses the database. The manipulation of data + content is done via API calls to library functions directly + within the program. +

+

+ In the upstream documentation you may find the following + useful: +

+

+ Documentation of the sqlite3 command line tool: https://www.sqlite.org/cli.html +

+

+ Documentation of backup API calls: https://www.sqlite.org/backup.html +

+

+ Unfortunately, there is no dedicated chapter in the + upstream documentation talking about backup/restore, but + there are several articles about it on the Internet. Here + is an example. +

+

+ Documentation for Backup/Restore: https://database.guide/backup-sqlite-database/ +

+
+
+
+
+
+

+ LMDB +

+
+
+
+

+ Like Sqlite, this software + acts on local database files; there is no network + interface. +

+

+ The relevant resources to back up/restore a LMDB database + are the man pages for mdb_dump and its counterpart mdb_load. +

+
+
+
+
+
+
+

+ lmdb-0.9.33 +

+
+
+
+
+
+

+ Introduction to lmdb +

+

+ The lmdb package is a fast, + compact, key-value embedded data store. It uses memory-mapped + files, so it has the read performance of a pure in-memory + database while still offering the persistence of standard + disk-based databases, and is only limited to the size of the + virtual address space +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of lmdb +

+
+

+ Note +

+

+ This package extracts to + openldap-LMDB_0.9.33-3a29a24777c82a0165de813ae696a5068b5add30. +

+
+

+ Install lmdb by running the + following commands: +

+
cd libraries/liblmdb &&
+make                 &&
+sed -i 's| liblmdb.a||' Makefile
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make prefix=/usr install
+
+
+

+ Command Explanations +

+

+ sed ... liblmdb.a ... + Makefile: The package executables use a + static library so it must be created. This command suppresses + installation of the static library. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + mdb_copy, mdb_dump, mdb_load, and + mdb_stat +
+
+ Installed Library: + liblmdb.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ mdb_copy +

+
+

+ copies an LMDB environment from one database to + another, including the option to compact the + database +

+
+

+ mdb_dump +

+
+

+ reads a database and writes its contents to + standard output using a portable flat-text format, + which can be interpreted by mdb_load +

+
+

+ mdb_load +

+
+

+ imports a database from standard input or from a + file +

+
+

+ mdb_stat +

+
+

+ displays the status of a LMDB environment +

+
+

+ liblmdb.so +

+
+

+ provides functions for accessing a LMDB database +

+
+
+
+
+
+
+
+

+ MariaDB-11.8.3 +

+
+
+
+
+
+

+ Introduction to MariaDB +

+

+ MariaDB is a + community-developed fork and a drop-in replacement for the + MySQL relational database + management system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ The installed size of MariaDB is 761 MB, but this can be + reduced by about 268 MB, if desired, by removing the + /usr/share/mariadb/test + directory after installation. +

+
+
+

+ Caution +

+

+ If you are upgrading an existing database, please see the + + MariaDB Release Notes for additional information, and + use the instructions after the Configuration Information + section to ensure a safe upgrade. +

+
+

+ MariaDB Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ Boost-1.89.0, fmt-11.2.0, git-2.50.1, Java-24.0.2, libaio-0.3.113, libxml2-2.14.5, + Linux-PAM-1.7.1, LZO-2.10, MIT Kerberos + V5-1.22.1, pcre2-10.45, Ruby-3.4.5, sphinx-8.2.3, unixODBC-2.3.12, Valgrind-3.25.1, + Groonga, + KyTea, Judy, + libstemmer, MeCab, MessagePack, + mruby, + MyRocks, Snappy, + and ZeroMQ +

+
+
+

+ Installation of MariaDB +

+
+

+ Warning +

+

+ MariaDB and MySQL cannot be installed on the same system + without extensive changes to the build configuration of one + of the two applications. +

+
+

+ For security reasons, running the server as an unprivileged + user and group is strongly encouraged. Issue the following + (as root) to create the user + and group: +

+
groupadd -g 40 mariadb &&
+useradd -c "MariaDB Server" -d /srv/mariadb -g mariadb -s /bin/false -u 40 mariadb
+

+ Fix an issue with detecting Boost-1.89.0 and later: +

+
sed -i 's/regex system/regex/' \
+       storage/columnstore/columnstore/cmake/boost.cmake
+

+ Install MariaDB by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release                       \
+      -D CMAKE_INSTALL_PREFIX=/usr                      \
+      -D GRN_LOG_PATH=/var/log/groonga.log              \
+      -D INSTALL_DOCDIR=share/doc/mariadb-11.8.3        \
+      -D INSTALL_DOCREADMEDIR=share/doc/mariadb-11.8.3  \
+      -D INSTALL_MANDIR=share/man                       \
+      -D INSTALL_MYSQLSHAREDIR=share/mariadb            \
+      -D INSTALL_MYSQLTESTDIR=share/mariadb/test        \
+      -D INSTALL_PAMDIR=lib/security                    \
+      -D INSTALL_PAMDATADIR=/etc/security               \
+      -D INSTALL_PLUGINDIR=lib/mariadb/plugin           \
+      -D INSTALL_SBINDIR=sbin                           \
+      -D INSTALL_SCRIPTDIR=bin                          \
+      -D INSTALL_SQLBENCHDIR=share/mariadb/bench        \
+      -D INSTALL_SUPPORTFILESDIR=share/mariadb          \
+      -D MYSQL_DATADIR=/srv/mariadb                     \
+      -D MYSQL_UNIX_ADDR=/run/mariadb/mariadb.sock      \
+      -D WITH_EXTRA_CHARSETS=complex                    \
+      -D WITH_EMBEDDED_SERVER=ON                        \
+      -D SKIP_TESTS=ON                                  \
+      -D TOKUDB_OK=0                                    \
+      -W no-dev                                         \
+      .. &&
+make
+

+ To test the results, issue: make test. Two tests, + my_tzinfo and test-connect, are known to fail. +

+
+

+ Note +

+

+ A more extensive set of tests can be run with the + following: +

+
pushd mysql-test
+./mtr --parallel <N> --mem --force
+popd
+

+ Where N is the number of tests to run in parallel. Over + 5400 tests are run in about 24 SBU with N=4. A few tests + may fail, mainly due to character set issues. +

+
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + WITH_EMBEDDED_SERVER=ON: This switch enables + compiling the embedded server library needed by certain + applications, such as Amarok. +

+

+ -D + WITH_EXTRA_CHARSETS=complex: This switch enables + support for the complex character sets. +

+

+ -D SKIP_TESTS=ON: + This switch disables tests for MariaDB Connector/C which are + not supported without additional setup. +

+

+ -D WITHOUT_SERVER=ON: Use this + switch if you don't want the server and would like to build + the client only. +

+

+ -W no-dev: This + switch turns off some warnings that are only useful for + developers. +

+
+

+ Note +

+

+ There are numerous options available to cmake. Check the output + of the cmake . + -LH for additional customization options. +

+
+
+
+

+ Configuring MariaDB +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/mariadb/my.cnf and + ~/.my.cnf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Create a basic /etc/mariadb/my.cnf file using the + following command as the root user: +

+
install -v -dm 755 /etc/mariadb &&
+cat > /etc/mariadb/my.cnf << "EOF"
+# Begin /etc/mariadb/my.cnf
+
+# The following options will be passed to all MySQL clients
+[client]
+#password       = your_password
+port            = 3306
+socket          = /run/mariadb/mariadb.sock
+
+# The MySQL server
+[mariadb]
+port            = 3306
+socket          = /run/mariadb/mariadb.sock
+datadir         = /srv/mariadb
+skip-external-locking
+key_buffer_size = 16M
+max_allowed_packet = 1M
+sort_buffer_size = 512K
+net_buffer_length = 16K
+myisam_sort_buffer_size = 8M
+
+# Don't listen on a TCP/IP port at all.
+skip-networking
+
+# required unique id between 1 and 2^32 - 1
+server-id       = 1
+
+# Uncomment the following if you are using BDB tables
+#bdb_cache_size = 4M
+#bdb_max_lock = 10000
+
+# InnoDB tables are now used by default
+innodb_data_home_dir = /srv/mariadb
+innodb_log_group_home_dir = /srv/mariadb
+# All the innodb_xxx values below are the default ones:
+innodb_data_file_path = ibdata1:12M:autoextend
+# You can set .._buffer_pool_size up to 50 - 80 %
+# of RAM but beware of setting memory usage too high
+innodb_buffer_pool_size = 128M
+innodb_log_file_size = 48M
+innodb_log_buffer_size = 16M
+innodb_flush_log_at_trx_commit = 1
+innodb_lock_wait_timeout = 50
+
+[mariadbdump]
+quick
+max_allowed_packet = 16M
+
+[mariadb]
+no-auto-rehash
+# Remove the next comment character if you are not familiar with SQL
+#safe-updates
+
+[isamchk]
+key_buffer = 20M
+sort_buffer_size = 20M
+read_buffer = 2M
+write_buffer = 2M
+
+[myisamchk]
+key_buffer_size = 20M
+sort_buffer_size = 20M
+read_buffer = 2M
+write_buffer = 2M
+
+[mariadbhotcopy]
+interactive-timeout
+
+# End /etc/mariadb/my.cnf
+EOF
+

+ You can now install a database and change the ownership to + the unprivileged user and group (perform as the + root user): +

+
mariadb-install-db --basedir=/usr --datadir=/srv/mariadb --user=mariadb &&
+chown -R mariadb:mariadb /srv/mariadb
+

+ Further configuration requires that the MariaDB server is running. Start the + server using the following commands as the root user: +

+
install -v -m755 -o mariadb -g mariadb -d /run/mariadb &&
+mariadbd-safe --user=mariadb 2>&1 >/dev/null &
+

+ A default installation does not set up a password for the + administrator, so use the following command as the + root user to set one. +

+
mariadb-admin -u root password
+

+ Configuration of the server is now finished. Shut the + server down using the following command as the root user: +

+
mariadb-admin -p shutdown
+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/mariadb init + script included in the blfs-bootscripts-20250225 package + as the root user to start + the MariaDB server during + system boot-up. +

+
make install-mariadb
+
+

+ Note +

+

+ If you have an existing database already and this + installation of binaries was just an upgrade to a newer + version, check the upstream documentation for upgrading. + It is recommended to run: +

+
mariadb-upgrade
+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + aria_chk, aria_dump_log, + aria_ftdump, aria_pack, aria_read_log, aria_s3_copy, + galera_new_cluster, galera_recovery, innochecksum, + mariabackup, mariadb, mariadbd, mariadb-access, + mariadb-admin, mariadb-backup, mariadb-binlog, + mariadb-check, mariadb-client-test, + mariadb-client-test-embedded, mariadb-conv, + mariadb-convert-table-format, mariadb-find-rows, + mariadbd-multi, mariadbd-safe, mariadbd-safe-helper, + mariadb-dump, mariadb-dumpslow, mariadb-embedded, + mariadb-fix-extensions, mariadb-hotcopy, mariadb-import, + mariadb-install-db, mariadb-ldb, mariadb-plugin, + mariadb-secure-installation, mariadb-setpermission, + mariadb-service-convert, mariadb-show, mariadb-slap, + mariadb-test, mariadb-test-embedded, + mariadb-tzinfo-to-sql, mariadb-upgrade, mariadb-waitpid, + mariadb_config, mbstream, msql2mysql, my_print_defaults, + myisamchk, myisam_ftdump, myisamlog, myisampack, + mysql_config, mytop, perror, replace, resolve_stack_dump, + resolveip, sst_dump, wsrep_sst_common, + wsrep_sst_mariabackup, wsrep_sst_mysqldump, and + wsrep_sst_rsync +
+
+ Installed Libraries: + libmariadb.a, libmariadb.so, + libmariadbclient.a, libmariadbd.a, libmariadbd.so, + libmariadb.so.3, libmysqlclient.a, libmysqlclient.so, + libmysqlclient_r.a, libmysqlclient_r.so, libmysqld.a, + libmysqld.so, libmysqlservices.a, and about 70 modules + under /usr/lib/mysql/plugin/ +
+
+ Installed Directories: + /usr/{include,lib,share}/mysql, + /usr/share/groonga{,-normalizer-mysql}, and + /usr/share/doc/mariadb-11.8.3 +
+
+
+

+ Short Descriptions +

+

+ There are several symlinks from mysql* to their mariadb + counterparts. These are maintained for compatibility. +

+

+ The Perl DBI modules must be + installed for some of the MariaDB support programs to function + properly. +

+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ aria_chk +

+
+

+ is used to check, repair, optimize, sort and get + information about Aria tables +

+
+

+ aria_dump_log +

+
+

+ is a tool to dump the contents of Aria log pages +

+
+

+ aria_ftdump +

+
+

+ displays full-text index information +

+
+

+ aria_pack +

+
+

+ is a tool to generate compressed, read-only Aria + tables +

+
+

+ aria_read_log +

+
+

+ displays Aria log file contents +

+
+

+ aria_s3_copy +

+
+

+ copies an aria table to and from AWS S3 +

+
+

+ galera_new_cluster +

+
+

+ bootstraps a new Galera cluster +

+
+

+ galera_recovery +

+
+

+ recovers data from a Galera cluster +

+
+

+ innochecksum +

+
+

+ prints checksums for InnoDB files +

+
+

+ mariabackup +

+
+

+ is an open source backup tool for InnoDB and XtraDB +

+
+

+ mariadb +

+
+

+ is a simple SQL shell with input line editing + capabilities +

+
+

+ mariadbd +

+
+

+ is the MySQL server daemon +

+
+

+ mariadb-access +

+
+

+ checks the access privileges for a host name, user + name, and database combination +

+
+

+ mariadb-admin +

+
+

+ is a client for performing administrative + operations +

+
+

+ mariadb-binlog +

+
+

+ reads binary log files +

+
+

+ mariadb-check +

+
+

+ performs table maintenance: It checks, repairs, + optimizes, or analyzes tables +

+
+

+ mariadb-client-test +

+
+

+ is used for testing aspects of the MySQL client API + that cannot be tested using mariadb-test and its + test language +

+
+

+ mariadb-client-test-embedded +

+
+

+ is a tool to test the client API for the embedded + server +

+
+

+ mariadb-conv +

+
+

+ converts character sets for use with MariaDB +

+
+

+ mariadb-convert-table-format +

+
+

+ converts the tables in a database to use a + particular storage engine +

+
+

+ mariadbd-multi +

+
+

+ is designed to manage several mariadb processes + that listen for connections on different Unix + socket files and TCP/IP ports +

+
+

+ mariadbd-safe +

+
+

+ is the recommended way to start a mariadb server on + Unix and NetWare +

+
+

+ mariadb-dump +

+
+

+ is a backup program +

+
+

+ mariadb-dumpslow +

+
+

+ parses MySQL slow query log files and prints a + summary of their contents +

+
+

+ mariadb-embedded +

+
+

+ is a MySQL client statically linked to libmariadbd +

+
+

+ mariadb-find-rows +

+
+

+ reads files containing SQL statements and extracts + statements that match a given regular expression or + that contain USE db_name or SET statements +

+
+

+ mariadb-fix-extensions +

+
+

+ converts the extensions for MyISAM (or ISAM) table + files to their canonical forms +

+
+

+ mariadb-hotcopy +

+
+

+ locks the table, flushes the table and then + performs a copy of the database +

+
+

+ mariadb-import +

+
+

+ reads a range of data formats, and inserts the data + into a database +

+
+

+ mariadb-install-db +

+
+

+ initializes the MySQL data directory and creates + the system tables that it contains, if they do not + exist +

+
+

+ mariadb-ldb +

+
+

+ is the RocksDB tool +

+
+

+ mariadb-plugin +

+
+

+ is a utility that enables MySQL administrators to + manage which plugins a MySQL server loads +

+
+

+ mariadb-secure-installation +

+
+

+ is a tool to improve MySQL installation security +

+
+

+ mariadb-service-convert +

+
+

+ generates a systemd unit based on the current + mariadb settings +

+
+

+ mariadb-setpermission +

+
+

+ sets permissions in the MySQL grant tables +

+
+

+ mariadb-show +

+
+

+ shows the structure of a MariaDB database +

+
+

+ mariadb-slap +

+
+

+ is a diagnostic program designed to emulate client + load for a MySQL server and to report the timing of + each stage +

+
+

+ mariadb-test +

+
+

+ runs a test case against a MySQL server and + optionally compares the output with a result file +

+
+

+ mariadb-test-embedded +

+
+

+ is similar to the mariadb-test + command but is built with support for the + libmariadbd embedded server +

+
+

+ mariadb-tzinfo-to-sql +

+
+

+ loads the time zone tables in the mariadb database +

+
+

+ mariadb-upgrade +

+
+

+ examines all tables in all databases for + incompatibilities with the current version of MySQL + Server +

+
+

+ mariadb-waitpid +

+
+

+ signals a process to terminate and waits for the + process to exit +

+
+

+ mariadb_config +

+
+

+ gets compiler flags for using the MariaDB + Connector/C +

+
+

+ mbstream +

+
+

+ is a utility for sending InnoDB and XTraDB backups + over a stream +

+
+

+ msql2mysql +

+
+

+ is a tool to convert mSQL programs for use with + MySQL +

+
+

+ my_print_defaults +

+
+

+ displays the options from option groups of option + files +

+
+

+ myisam_ftdump +

+
+

+ displays information about FULLTEXT indexes in + MyISAM tables +

+
+

+ myisamchk +

+
+

+ gets information about your database tables or + checks, repairs, or optimizes them +

+
+

+ myisamlog +

+
+

+ displays MyISAM log file contents +

+
+

+ myisampack +

+
+

+ is a tool for compressing MyISAM tables +

+
+

+ mysql_config +

+
+

+ provides you with useful information for compiling + your MySQL client and connecting it to MySQL +

+
+

+ mytop +

+
+

+ is a console-based tool for monitoring the threads + and overall performance of a MySQL server +

+
+

+ perror +

+
+

+ is a utility that displays descriptions for system + or storage engine error codes +

+
+

+ replace +

+
+

+ is a MariaDB/MySQL extension to the SQL standard +

+
+

+ resolve_stack_dump +

+
+

+ resolves a numeric stack dump to symbols +

+
+

+ resolveip +

+
+

+ is a utility for resolving IP addresses to host + names and vice versa +

+
+

+ sst_sump +

+
+

+ dumps the content of sst files (the format used by + RocksDB) +

+
+
+
+
+
+
+
+

+ PostgreSQL-17.6 +

+
+
+
+
+
+

+ Introduction to PostgreSQL +

+

+ PostgreSQL is an advanced + object-relational database management system (ORDBMS), + derived from the Berkeley Postgres database management + system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ PostgreSQL Dependencies +

+
+ Optional +
+

+ ICU-77.1, + libxml2-2.14.5, libxslt-1.1.43, + OpenLDAP-2.6.10, Linux-PAM-1.7.1, + MIT Kerberos V5-1.22.1 and + Bonjour +

+
+ Optional (To Generate Documentation) +
+

+ fop-2.11, + docbook-4.5-dtd, docbook-dsssl-1.79, DocBook-utils-0.6.14, OpenJade-1.3.2, and SGMLSpm-1.1 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/postgresql +

+
+
+

+ Installation of PostgreSQL +

+

+ For enhanced security, it is better to have a dedicated group + and user for running the PostgreSQL server. First, issue as + the root user: +

+
groupadd -g 41 postgres &&
+useradd -c "PostgreSQL Server" -g postgres -d /srv/pgsql/data \
+        -u 41 postgres
+
+

+ Note +

+

+ There are several configuration items that add additional + functionality with optional packages to PostgreSQL. Use ./configure --help to see + a list. +

+
+

+ Install PostgreSQL with the + following commands: +

+
sed -i '/DEFAULT_PGSOCKET_DIR/s@/tmp@/run/postgresql@' src/include/pg_config_manual.h &&
+
+./configure --prefix=/usr \
+            --docdir=/usr/share/doc/postgresql-17.6 &&
+make
+

+ There are a number of programs in the contrib/ directory. If you are going to run + this installation as a server and wish to build some of them, + enter make -C + contrib or make + -C contrib/<SUBDIR-NAME> + for each subdirectory. +

+

+ Tests must be run as an unprivileged user because they need + to start a temporary server and this is prevented as the root + user. For the same reason, you need to stop all PostgreSQL + servers if any are running. If a previous version of + PostgreSQL is installed, it may be necessary to use + --disable-rpath + with configure + to avoid failures, but installing + the binaries created using this switch is not + recommended. To test the results, issue: + make check. +

+
+

+ Note +

+

+ If you are installing PostgreSQL to upgrade an existing + installation, there are important steps that you need to + follow. If the major version of the new build is greater + than the previous version, there is a chance that the data + file format has changed. New software cannot use the + existing data files. In this case, the server will not + start because the old programs have been overwritten, so + the data is unavailable until it's file format has been + converted. +

+

+ Before upgrading an existing installation of PostgreSQL, + check the documentation for any considerations that you + must keep in mind during the upgrade. Note that new major + versions might use a different binary format in the data + objects, causing potential incompatibilities. For more + information, please review upstream's documentation about + upgrading PostgreSQL here: https://www.postgresql.org/docs/current/upgrading.html. +

+

+ At this point, you may have both the old and the new + binaries installed on your filesystem. These binaries can + be used to perform an upgrade of your existing database + files. For the following instructions it is assumed that +

+
+
    +
  • +

    + The actual data files are stored in /srv/pgsql/data +

    +
  • +
  • +

    + The upgraded data files will be stored in + /srv/pgsql/newdata +

    +
  • +
  • +

    + There is enough disk space to hold the actual data + files twice. The upgrade is not an inline upgrade but + it will copy the data to new database files. +

    +
  • +
+
+

+ First, do a temporary install which makes access to the new + binaries much easier: +

+
make DESTDIR=$(pwd)/DESTDIR install
+

+ Next, create a directory which is writable by the + postgres user, as the + root user: +

+
install -d -o postgres $(pwd)/DESTDIR/tmp
+

+ Now, stop the existing instance of PostgreSQL and start the upgrade + process as the root user: +

+
pushd $(pwd)/DESTDIR/tmp
+/etc/rc.d/init.d/postgresql stop
+su postgres -c "../usr/bin/initdb -D /srv/pgsql/newdata"
+su postgres -c "../usr/bin/pg_upgrade \
+                    -d /srv/pgsql/data    -b /usr/bin \
+                    -D /srv/pgsql/newdata -B ../usr/bin"
+popd
+

+ At this point, your database files are available in two + locations on disk. The old data is located in /srv/pgsql/data, and the new data is in + /srv/pgsql/newdata. Backing + up the old database files is recommended before continuing. +

+

+ Next, remove the old database files, and rename the new + data directory as the root + user: +

+
rm -rf /srv/pgsql/data
+mv /srv/pgsql/newdata /srv/pgsql/data
+
+

+ Now, as the root user: +

+
make install
+

+ If you had the optional dependencies installed that are + needed to generate the documentation, install it as the + root user: +

+
make install-docs
+

+ If you made any of the contrib/ + programs, as the root user: +

+
make -C contrib/<SUBDIR-NAME> install
+
+

+ Tip +

+

+ If you only intend to use PostgreSQL as a client to connect to a + server on another machine, your installation is complete + and you should not run the remaining commands. +

+
+

+ If you have upgraded an existing database, skip the rest of + the commands because your database is ready to use. If this + is the first time you install PostgreSQL, continue with the + initialization. +

+

+ Initialize a database cluster with the following commands + issued by the root user: +

+
install -v -dm700 /srv/pgsql/data &&
+install -v -dm755 /run/postgresql &&
+chown -Rv postgres:postgres /srv/pgsql /run/postgresql
+

+ Now, initialize the database as the root user: +

+
su - postgres -c '/usr/bin/initdb -D /srv/pgsql/data'
+
+
+

+ Command Explanations +

+

+ sed -i ...: + This sed changes the server socket location from /tmp to /run/postgresql. +

+

+ --with-openssl: builds the + package with support for OpenSSL encrypted connections. +

+

+ --with-perl: builds the PL/Perl + server-side language. +

+

+ --with-python: builds the + PL/Python server-side language. +

+

+ --with-tcl: builds the PL/Tcl + server-side language. +

+
+
+

+ Configuring PostgreSQL +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ $PGDATA/pg_ident.con, + $PGDATA/pg_hba.conf, and + $PGDATA/postgresql.conf +

+

+ The PGDATA environment variable + is used to distinguish database clusters from one another + by setting it to the value of the directory which contains + the cluster desired. The three configuration files exist in + every PGDATA/ directory. + Details on the format of the files and the options that can + be set in each can be found in /usr/share/doc/postgresql-17.6/html/index.html. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/postgresql init + script included in the blfs-bootscripts-20250225 package: +

+
make install-postgresql
+
+
+
+
+
+

+ Starting the PostgreSQL + Server and Creating a Sample Database +

+
+
+
+

+ The database server can be manually started with the + following command (as the root user): +

+
su - postgres -c '/usr/bin/postgres -D /srv/pgsql/data > \
+                  /srv/pgsql/data/logfile 2>&1 &'
+
+

+ Note +

+

+ If you are scripting this part, you should wait for the + server to start before going on, by adding for example + sleep 2 + after the above command. +

+
+

+ The instructions below show how to create a database, add a + table to it, insert some rows into the table and select + them, to verify that the installation is working properly. + Still as user root, issue: +

+
su - postgres -c '/usr/bin/createdb test' &&
+echo "create table t1 ( name varchar(20), state_province varchar(20) );" \
+    | (su - postgres -c '/usr/bin/psql test ') &&
+echo "insert into t1 values ('Billy', 'NewYork');" \
+    | (su - postgres -c '/usr/bin/psql test ') &&
+echo "insert into t1 values ('Evanidus', 'Quebec');" \
+    | (su - postgres -c '/usr/bin/psql test ') &&
+echo "insert into t1 values ('Jesse', 'Ontario');" \
+    | (su - postgres -c '/usr/bin/psql test ') &&
+echo "select * from t1;" | (su - postgres -c '/usr/bin/psql test')
+

+ When you are done with testing, you can shut down the + server, by issuing as root: +

+
su - postgres -c "/usr/bin/pg_ctl stop -D /srv/pgsql/data"
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + clusterdb, createdb, createuser, + dropdb, dropuser, ecpg, initdb, pg_amcheck, + pg_archivecleanup, pg_basebackup, pg_checksums, + pg_config, pg_controldata, pg_ctl, pg_dump, pg_dumpall, + pg_isready, pg_receivewal, pg_recvlogical, pg_resetwal, + pg_restore, pg_rewind, pg_test_fsync, pg_test_timing, + pg_upgrade, pg_verifybackup, pg_waldump, pgbench, + postgres, psql, reindexdb, vacuumdb, optionally, if Tcl + support has been built, pltcl_delmod, pltcl_listmod, + pltcl_loadmod, and optionally (in contrib/) oid2name, + pg_standby, vacuumlo, and many others +
+
+ Installed Libraries: + libecpg.{so,a}, + libecpg_compat.{so,a}, libpgcommon.a, + libpgcommon_shlib.a, libpgfeutils.a, libpgport.a, + libpgport_shlib.a, libpgtypes.{so,a}, libpq.{so,a}, + various charset modules and optionally programming + language modules under /usr/lib/postgresql +
+
+ Installed Directories: + /usr/include/{libpq,postgresql}, + /usr/lib/postgresql, + /usr/share/{doc/postgresql-17.6,postgresql}, and + /srv/pgsql +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ clusterdb +

+
+

+ is a utility for reclustering tables in a + PostgreSQL + database +

+
+

+ createdb +

+
+

+ creates a new PostgreSQL database +

+
+

+ createuser +

+
+

+ defines a new PostgreSQL user account +

+
+

+ dropdb +

+
+

+ removes a PostgreSQL database +

+
+

+ dropuser +

+
+

+ removes a PostgreSQL user account +

+
+

+ ecpg +

+
+

+ is the embedded SQL preprocessor +

+
+

+ initdb +

+
+

+ creates a new database cluster +

+
+

+ oid2name +

+
+

+ resolves OIDs (Object IDs) and file nodes in a + PostgreSQL data directory +

+
+

+ pg_amcheck +

+
+

+ checks for corruption in one or more PostgreSQL + databases +

+
+

+ pg_archivecleanup +

+
+

+ cleans up PostgreSQL WAL (write-ahead log) archive + files +

+
+

+ pg_basebackup +

+
+

+ takes base backups of a running PostgreSQL cluster +

+
+

+ pg_checksums +

+
+

+ enables, disables, or checks data checksums in a + PostgreSQL + database cluster +

+
+

+ pg_config +

+
+

+ retrieves PostgreSQL version information +

+
+

+ pg_controldata +

+
+

+ returns information initialized during initdb, such as + the catalog version and server locale +

+
+

+ pg_ctl +

+
+

+ controls stopping and starting the database server +

+
+

+ pg_dump +

+
+

+ dumps database data and metadata into scripts which + are used to recreate the database +

+
+

+ pg_dumpall +

+
+

+ recursively calls pg_dump for each + database in a cluster +

+
+

+ pg_isready +

+
+

+ checks the connection status of a PostgreSQL server +

+
+

+ pg_receivewal +

+
+

+ is used to stream write-ahead logs from a + PostgreSQL server +

+
+

+ pg_recvlogical +

+
+

+ controls PostgreSQL logical decoding streams +

+
+

+ pg_resetwal +

+
+

+ resets the write-ahead log and other control + information of a PostgreSQL database cluster +

+
+

+ pg_restore +

+
+

+ creates databases from dump files created by + pg_dump +

+
+

+ pg_rewind +

+
+

+ synchronizes a PostgreSQL data directory with + another data directory that was forked from the + first one +

+
+

+ pg_standby +

+
+

+ supports the creation of a PostgreSQL warm standby + server +

+
+

+ pg_test_fsync +

+
+

+ determines the fastest wal_sync method for + PostgreSQL +

+
+

+ pg_test_timing +

+
+

+ measures timing overhead +

+
+

+ pg_upgrade +

+
+

+ upgrades a PostgreSQL server instance +

+
+

+ pg_verifybackup +

+
+

+ verifies the integrity of a base backup of a + PostgreSQL cluster +

+
+

+ pg_waldump +

+
+

+ displays a human-readable rendering of the + write-ahead log of a PostgreSQL database cluster +

+
+

+ pgbench +

+
+

+ runs a benchmark test on PostgreSQL +

+
+

+ pltcl_delmod +

+
+

+ is a support script used to delete a module from a + PL/Tcl table. The + command requires the Pgtcl + package to be installed +

+
+

+ pltcl_listmod +

+
+

+ is a support script used to list the modules in a + PL/Tcl table. The + command requires the Pgtcl + package to be installed +

+
+

+ pltcl_loadmod +

+
+

+ is a support script used to load a module into a + PL/Tcl table. The + command requires the Pgtcl + package to be installed +

+
+

+ postgres +

+
+

+ is the PostgreSQL database server +

+
+

+ psql +

+
+

+ is a console based database shell +

+
+

+ reindexdb +

+
+

+ is a utility for rebuilding indexes in a database +

+
+

+ vacuumdb +

+
+

+ compacts databases and generates statistics for the + query analyzer +

+
+

+ vacuumlo +

+
+

+ removes orphaned large objects from a PostgreSQL + database +

+
+

+ libecpg.{so,a} +

+
+

+ contains functions to support embedded SQL in C + programs +

+
+

+ libecpg_compat.{so,a} +

+
+

+ is the ecpg compatibility library +

+
+

+ libgport.a +

+
+

+ is the port-specific subsystem of the Postgres + backend +

+
+

+ libpgtypes.{so,a} +

+
+

+ contains functions for dealing with Postgres data + types +

+
+

+ libpq.{so,a} +

+
+

+ is the C programmer's API to Postgres +

+
+
+
+
+
+
+
+

+ SQLite-3.50.4 +

+
+
+
+
+
+

+ Introduction to SQLite +

+

+ The SQLite package is a + software library that implements a self-contained, + serverless, zero-configuration, transactional SQL database + engine. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://sqlite.org/2025/sqlite-autoconf-3500400.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: d74bbdca4ab1b2bd46d3b3f8dbb0f3db +

    +
  • +
  • +

    + Download size: 3.0 MB +

    +
  • +
  • +

    + Estimated disk space required: 44 MB (with + documentation) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (Using parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+
+

+ Optional Documentation +

+ +
+

+ SQLite Dependencies +

+
+ Optional +
+

+ libarchive-3.8.1 (required to unzip + the documentation) and libedit +

+
+
+

+ Installation of SQLite +

+

+ If you downloaded the optional documentation, issue the + following command to install the documentation into the + source tree: +

+
unzip -q ../sqlite-doc-3500400.zip
+

+ Install SQLite by running + the following commands: +

+
./configure --prefix=/usr     \
+            --disable-static  \
+            --enable-fts{4,5} \
+            CPPFLAGS="-D SQLITE_ENABLE_COLUMN_METADATA=1 \
+                      -D SQLITE_ENABLE_UNLOCK_NOTIFY=1   \
+                      -D SQLITE_ENABLE_DBSTAT_VTAB=1     \
+                      -D SQLITE_SECURE_DELETE=1"         &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you downloaded the optional documentation, issue the + following commands as the root user to install it: +

+
install -v -m755 -d /usr/share/doc/sqlite-3.50.4 &&
+cp -v -R sqlite-doc-3500400/* /usr/share/doc/sqlite-3.50.4
+
+

+ Important +

+

+ Several packages use an sqlite Python plugin. After + installing this package, Python-3.13.7 should be rebuilt + to create this plugin. +

+
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-fts{4,5}: + These switches enable support for version 4 and 5 of the full + text search (FTS) extension. +

+

+ CPPFLAGS="-D + SQLITE_ENABLE_COLUMN_METADATA=1 ... : Some + applications require these options to be turned on. The only + way to do this is to include them in the CFLAGS or CPPFLAGS. + We use the latter so the default value (or any value set by + the user) of CFLAGS won't be + affected. For further information on what can be specified + see https://www.sqlite.org/compile.html. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + sqlite3 +
+
+ Installed Library: + libsqlite3.so +
+
+ Installed Directory: + /usr/share/doc/sqlite-3.50.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ sqlite3 +

+
+

+ is a terminal-based front-end to the SQLite library that can + evaluate queries interactively and display the + results +

+
+

+ libsqlite3.so +

+
+

+ contains the SQLite API functions +

+
+
+
+
+
+
+
+
+

+ Chapter 23. Other Server + Software +

+
+
+
+
+

+ Here you will find many ways to share your machine with the rest + of the world or your local network. Before installing any + packages in this chapter, you need to be sure you understand what + the package does and how to set it up correctly. It might also be + helpful to learn about the consequences of an improper setup so + that you can analyze the risks. +

+
+
+
+

+ OpenLDAP-2.6.10 +

+
+
+
+
+
+

+ Introduction to OpenLDAP +

+

+ The OpenLDAP package + provides an open source implementation of the Lightweight + Directory Access Protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ OpenLDAP Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ GnuTLS-3.8.10, unixODBC-2.3.12, + MariaDB-11.8.3 or PostgreSQL-17.6 or + MySQL, + OpenSLP, + WiredTiger, + and + Berkeley DB (deprecated) (for slapd, also deprecated) +

+
+
+

+ Installation of OpenLDAP +

+
+

+ Note +

+

+ If you only need to install the client side ldap* binaries, + corresponding man pages, libraries and header files + (referred to as a “client-only” install), issue these + commands instead of the following ones (no test suite + available): +

+
patch -Np1 -i ../openldap-2.6.10-consolidated-1.patch &&
+autoconf &&
+
+./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --enable-dynamic  \
+            --disable-debug   \
+            --disable-slapd   &&
+
+make depend &&
+make
+

+ Then, as the root user: +

+
make install
+
+

+ There should be a dedicated user and group to take control of + the slapd + daemon after it is started. Issue the following commands as + the root user: +

+
groupadd -g 83 ldap &&
+useradd  -c "OpenLDAP Daemon Owner" \
+         -d /var/lib/openldap -u 83 \
+         -g ldap -s /bin/false ldap
+

+ Install OpenLDAP by running + the following commands: +

+
patch -Np1 -i ../openldap-2.6.10-consolidated-1.patch &&
+autoconf &&
+
+./configure --prefix=/usr         \
+            --sysconfdir=/etc     \
+            --localstatedir=/var  \
+            --libexecdir=/usr/lib \
+            --disable-static      \
+            --disable-debug       \
+            --with-tls=openssl    \
+            --with-cyrus-sasl     \
+            --without-systemd     \
+            --enable-dynamic      \
+            --enable-crypt        \
+            --enable-spasswd      \
+            --enable-slapd        \
+            --enable-modules      \
+            --enable-rlookups     \
+            --enable-backends=mod \
+            --disable-sql         \
+            --disable-wt          \
+            --enable-overlays=mod &&
+
+make depend &&
+make
+

+ The tests are fragile, and errors may cause the tests to + abort prior to finishing. Some errors may happen due to + timing problems. The tests take around an hour, and the time + is CPU independent due to delays in the tests. On most + systems, the tests will run up to the test065-proxyauth for mdb test. To test the + results, issue: make + test. +

+

+ Now, as the root user: +

+
make install &&
+
+sed -e "s/\.la/.so/" -i /etc/openldap/slapd.{conf,ldif}{,.default} &&
+
+install -v -dm700 -o ldap -g ldap /var/lib/openldap     &&
+
+install -v -dm700 -o ldap -g ldap /etc/openldap/slapd.d &&
+chmod   -v    640     /etc/openldap/slapd.{conf,ldif}   &&
+chown   -v  root:ldap /etc/openldap/slapd.{conf,ldif}   &&
+
+install -v -dm755 /usr/share/doc/openldap-2.6.10 &&
+cp      -vfr      doc/{drafts,rfc,guide} \
+                  /usr/share/doc/openldap-2.6.10
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-debug: This + switch disables the debugging code in OpenLDAP. +

+

+ --enable-dynamic: + This switch forces the OpenLDAP libraries to be dynamically + linked to the executable programs. +

+

+ --enable-crypt: This + switch enables using crypt(3) + passwords. +

+

+ --enable-spasswd: + This switch enables SASL + password verification. +

+

+ --enable-modules: + This switch enables dynamic module support. +

+

+ --enable-rlookups: + This switch enables reverse lookups of client hostnames. +

+

+ --enable-backends: + This switch enables all available backends. +

+

+ --enable-overlays: + This switch enables all available overlays. +

+

+ --disable-sql: This + switch explicitly disables the SQL backend. Omit this switch + if a SQL server is installed and you are going to use a SQL + backend. +

+

+ --disable-wt: This + switch explicitly disables the WiredTiger backend. Omit this + switch if WiredTiger is installed and you are going to use a + WiredTiger backend. +

+

+ --libexecdir=/usr/lib: This + switch controls where the /usr/lib/openldap directory is installed. + Everything in that directory is a library, so it belongs + under /usr/lib instead of + /usr/libexec. +

+

+ --enable-slp: This switch enables + SLPv2 support. Use it if you have installed OpenSLP. +

+

+ --disable-versioning: This switch + disables symbol versioning in the OpenLDAP libraries. The default is to + have symbol versioning. Note that if you have built + applications using this package with symbol versioning, and + remove the symbols, the applications may fail to run. +

+
+

+ Note +

+

+ You can run ./configure + --help to see if there are other switch you + can pass to the configure command to + enable other options or dependency packages. +

+
+

+ install ..., + chown ..., and + chmod ...: + Having slapd configuration files and ldap databases in + /var/lib/openldap readable by anyone is a SECURITY ISSUE, + especially since a file stores the admin password in PLAIN + TEXT. That's why mode 640 and root:ldap ownership were used. + The owner is root, so only root can modify the file, and + group is ldap, so that the group which owns slapd daemon + could read but not modify the file in case of a security + breach. +

+
+
+

+ Configuring OpenLDAP +

+
+
+
+
+

+ Config Files +

+
+
+
+
+
    +
  • +

    + For LDAP client: /etc/openldap/ldap.conf and + ~/.ldaprc +

    +
  • +
  • +

    + For LDAP server, two configuration mechanisms are + used: a legacy /etc/openldap/slapd.conf + configuration file and the recommended slapd-config system, using + an LDIF database stored in /etc/openldap/slapd.d. +

    +
  • +
+
+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Configuring the slapd servers can be + complex. Securing the LDAP directory, especially if you are + storing non-public data such as password databases, can + also be a challenging task. In order to set up OpenLDAP, you'll need to modify either + the /etc/openldap/slapd.conf + file (old method), or the /etc/openldap/slapd.ldif file and then + use ldapadd + to create the LDAP configuration database in /etc/openldap/slapd.d (recommended by the + OpenLDAP documentation). +

+
+

+ Warning +

+

+ The instructions above install an empty LDAP structure + and a default /etc/openldap/slapd.conf file, which + are suitable for testing the build and other packages + using LDAP. Do not use them on a production server. +

+
+

+ Resources to assist you with topics such as choosing a + directory configuration, backend and database definitions, + access control settings, running as a user other than + root and setting a + chroot + environment include: +

+
+ +
+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To automate the startup of the LDAP server at system + bootup, install the /etc/rc.d/init.d/slapd init script + included in the blfs-bootscripts-20250225 package + using the following command: +

+
make install-slapd
+
+

+ Note +

+

+ You'll need to modify /etc/sysconfig/slapd to include + the parameters needed for your specific configuration. + See the slapd man page for + parameter information. +

+
+
+
+
+
+
+

+ Testing the Configuration +

+
+
+
+

+ Start the LDAP server using the init + script: +

+
/etc/rc.d/init.d/slapd start
+

+ Verify access to the LDAP server with the following + command: +

+
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
+

+ The expected result is: +

+
# extended LDIF
+#
+# LDAPv3
+# base <> with scope baseObject
+# filter: (objectclass=*)
+# requesting: namingContexts
+#
+
+#
+dn:
+namingContexts: dc=my-domain,dc=com
+
+# search result
+search: 2
+result: 0 Success
+
+# numResponses: 2
+# numEntries: 1
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ldapadd, ldapcompare, ldapdelete, + ldapexop, ldapmodify, ldapmodrdn, ldappasswd, ldapsearch, + ldapurl, ldapvc, ldapwhoami, slapacl, slapadd, slapauth, + slapcat, slapd, slapdn, slapindex, slapmodify, + slappasswd, slapschema, and slaptest +
+
+ Installed Libraries: + liblber.so, libldap.so, and several + under /usr/lib/openldap +
+
+ Installed Directories: + /etc/openldap, + /{usr,var}/lib/openldap, and + /usr/share/doc/openldap-2.6.10 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ldapadd +

+
+

+ opens a connection to an LDAP server, binds and + adds entries +

+
+

+ ldapcompare +

+
+

+ opens a connection to an LDAP server, binds and + performs a compare using specified parameters +

+
+

+ ldapdelete +

+
+

+ opens a connection to an LDAP server, binds and + deletes one or more entries +

+
+

+ ldapexop +

+
+

+ issues the LDAP extended operation specified by oid + or one of the special keywords whoami, cancel, or + refresh +

+
+

+ ldapmodify +

+
+

+ opens a connection to an LDAP server, binds and + modifies entries +

+
+

+ ldapmodrdn +

+
+

+ opens a connection to an LDAP server, binds and + modifies the RDN of entries +

+
+

+ ldappasswd +

+
+

+ is a tool used to set the password of an LDAP user +

+
+

+ ldapsearch +

+
+

+ opens a connection to an LDAP server, binds and + performs a search using specified parameters +

+
+

+ ldapurl +

+
+

+ is a command that allows to either compose or + decompose LDAP URIs +

+
+

+ ldapvc +

+
+

+ verifies LDAP credentials +

+
+

+ ldapwhoami +

+
+

+ opens a connection to an LDAP server, binds and + displays whoami information +

+
+

+ slapacl +

+
+

+ is used to check the behavior of slapd by verifying + access to directory data according to the access + control list directives defined in its + configuration +

+
+

+ slapadd +

+
+

+ is used to add entries specified in LDAP Directory + Interchange Format (LDIF) to an LDAP database +

+
+

+ slapauth +

+
+

+ is used to check the behavior of the slapd in + mapping identities for authentication and + authorization purposes, as specified in slapd.conf +

+
+

+ slapcat +

+
+

+ is used to generate an LDAP LDIF output based upon + the contents of a slapd database +

+
+

+ slapd +

+
+

+ is the standalone LDAP server +

+
+

+ slapdn +

+
+

+ checks a list of string-represented DNs based on + schema syntax +

+
+

+ slapindex +

+
+

+ is used to regenerate slapd indexes based upon the + current contents of a database +

+
+

+ slapmodify +

+
+

+ modifies entries in a slapd database +

+
+

+ slappasswd +

+
+

+ is an OpenLDAP + password utility +

+
+

+ slapschema +

+
+

+ is used to check schema compliance of the contents + of a slapd database +

+
+

+ slaptest +

+
+

+ checks the sanity of the slapd.conf file +

+
+

+ liblber.so +

+
+

+ is a set of Lightweight Basic Encoding Rules + routines. These routines are used by the LDAP + library routines to encode and decode LDAP protocol + elements using the (slightly simplified) Basic + Encoding Rules defined by LDAP. They are not + normally used directly by an LDAP application + program except in the handling of controls and + extended operations +

+
+

+ libldap.so +

+
+

+ supports the LDAP programs and provide + functionality for other programs interacting with + LDAP +

+
+
+
+
+
+
+
+

+ Unbound-1.23.1 +

+
+
+
+
+
+

+ Introduction to Unbound +

+

+ Unbound is a validating, + recursive, and caching DNS resolver. It is designed as a set + of modular components that incorporate modern features, such + as enhanced security (DNSSEC) validation, Internet Protocol + Version 6 (IPv6), and a client resolver library API as an + integral part of the architecture. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://nlnetlabs.nl/downloads/unbound/unbound-1.23.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 63f13e96ee2b609d6d0aeb119d539210 +

    +
  • +
  • +

    + Download size: 6.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 156 MB (with docs; add + 11 MB for tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (Using parallelism=4; + with docs; add 0.3 SBU for tests) +

    +
  • +
+
+

+ Unbound Dependencies +

+
+ Optional +
+

+ libevent-2.1.12, Nettle-3.10.2, Protobuf-c-1.5.2 (for dnstap), + sphinx-8.2.3 (for Python bindings + documentation), SWIG-4.3.1 (for Python bindings), Doxygen-1.14.0 (for html documentation), + dnstap, and + Python2 +

+
+
+

+ Installation of Unbound +

+

+ There should be a dedicated user and group to take control of + the unbound + daemon after it is started. Issue the following commands as + the root user: +

+
groupadd -g 88 unbound &&
+useradd -c "Unbound DNS Resolver" -d /var/lib/unbound -u 88 \
+        -g unbound -s /bin/false unbound
+

+ Install Unbound by running + the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --with-pidfile=/run/unbound.pid &&
+make
+

+ If you have Doxygen-1.14.0 package installed and + want to build html documentation, run the following command: +

+
make doc
+

+ To test the results, issue make + check. +

+

+ Now, as the root user: +

+
make install &&
+mv -v /usr/sbin/unbound-host /usr/bin/
+

+ If you built the documentation, install it by running the + following commands as the root user: +

+
install -v -m755 -d /usr/share/doc/unbound-1.23.1 &&
+install -v -m644 doc/html/* /usr/share/doc/unbound-1.23.1
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-libevent: This option + enables libevent support, which allows for the use of large + outgoing port ranges. +

+

+ --with-pyunbound: This option + enables building the Python bindings. If you want to build + the bindings, you also need to pass the PYTHON_VERSION=3.13 environment variable to + configure. +

+
+
+

+ Configuring Unbound +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/unbound/unbound.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ In the default configuration, unbound will bind to + localhost (127.0.0.1 IP address) and allow recursive + queries only from localhost clients. If you want to use + unbound for + local DNS resolution, run the following command as the + root user: +

+
echo "nameserver 127.0.0.1" > /etc/resolv.conf
+

+ For advanced configuration see /etc/unbound/unbound.conf file and the + documentation. +

+

+ When Unbound is installed, + some package builds fail if the file /etc/unbound/root.key is not found. This + file is created by running the boot script (install + instructions below). Alternatively, it can be created by + running the following command as the root user: +

+
unbound-anchor
+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ If you want the Unbound + server to start automatically when the system is booted, + install the /etc/rc.d/init.d/unbound init + script included in the blfs-bootscripts-20250225 package: +

+
make install-unbound
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + unbound, unbound-anchor, + unbound-checkconf, unbound-control, + unbound-control-setup, and unbound-host +
+
+ Installed Library: + libunbound.so +
+
+ Installed Directories: + /etc/unbound and + /usr/share/doc/unbound-1.23.1 (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ unbound +

+
+

+ is a DNS resolver daemon +

+
+

+ unbound-anchor +

+
+

+ initializes or updates the root trust anchor for + DNSSEC validation +

+
+

+ unbound-checkconf +

+
+

+ checks the unbound + configuration file for syntax and other errors +

+
+

+ unbound-control +

+
+

+ performs remote administration on the unbound DNS + resolver +

+
+

+ unbound-control-setup +

+
+

+ generates a self-signed certificate and private + keys for the server and client +

+
+

+ unbound-host +

+
+

+ is a DNS lookup utility similar to host from + BIND Utilities-9.20.12 +

+
+

+ libunbound.so +

+
+

+ provides the Unbound API functions to + programs +

+
+
+
+
+
+
+
+
+
+

+ Part VI. Graphical Components +

+
+
+
+
+
+
+
+

+ Chapter 24. Graphical + Environments +

+
+
+
+
+

+ This chapter contains instructions to build and configure a + graphical user environment. +

+

+ For a long time the only graphical environment usable with + GNU/Linux has been the X Window + System. It uses a client/server model which allows + writing applications completely independent of the graphical + hardware. This has the drawback that accessing modern hardware + acceleration is difficult, so another approach named Wayland is developed. It is a simpler + replacement for X, easier to develop and maintain, using the + OpenGL framework. The main desktop environments GNOME and KDE + have been ported to it. +

+

+ This chapter provides the basic components of the X Window System + and Wayland. For X, the chosen implementation is Xorg, which is a + modular implementation and requires more than 100 packages to be + installed. The distribution of Xorg is given a release number by + the developers, in this case Xorg-7. Individual packages are + updated as needed without changing this number. +

+
+
+
+

+ Introduction to Xorg-7 +

+
+
+
+
+

+ Xorg is a freely + redistributable, open-source implementation of the X Window System. This system provides a + client/server interface between display hardware (the mouse, + keyboard, and video displays) and the desktop environment, + while also providing both the windowing infrastructure and a + standardized application interface (API). +

+

+ Xorg + Download and Installation Instructions +

+

+ Xorg-7.0 introduced a completely auto-tooled, modular build + system. With the new modular build system, it is no longer + possible to download the entire package in a single file. In + fact, there will be well over 100 packages that need to be + fetched from the download location. To assist with such a large + task, installing Wget-1.25.0 is strongly recommended for + downloading the needed files. A complete wget file list is provided for each page + that includes multiple packages. +

+

+ Given the number of packages available, deciding which packages + you need to install for your particular setup may seem a bit + overwhelming at first. Take a look at this page and + + this thread to get an idea of what you will need. If you + are unsure, you should install all packages at the cost of + extra disk space. +

+
+

+ Note +

+

+ Even if you intend to download only the necessary packages, + you should download the wget file lists. The list of files + are ordered by dependency, and the package versions listed in + the files are known to work well with each other. Further, + the wget file lists contain comments for specific packages + that are deprecated or are not recommended to install. Newer + packages are likely intended for the next release of + Xorg and have already proved + to be incompatible with current versions of software + installed in BLFS. The installed size of Xorg can be reduced considerably by + installing only the packages that you will need and use, + however, the BLFS book cannot account for all dependencies + and build options for the individual Xorg packages. The instructions assume + that all packages have been built. +

+
+

+ Additionally, because of the large number of repetitive + commands, you are encouraged to partially automate the build. + Instructions have been given that utilize the Sudo-1.9.17p2 package. + It is recommended that you use the :NOPASSWD configuration option + for the user that will be building the xorg packages. +

+
+

+ Setting up the Xorg + Build Environment +

+
+

+ Note +

+

+ The following instructions assume that the shell startup + files have been set up as described in The Bash Shell Startup + Files. +

+
+

+ As with previous releases of the X Window System, it may be + desirable to install Xorg + into an alternate prefix. This is no longer common practice + among Linux distributions. The common installation prefix for + Xorg on Linux is + /usr. There is no standard + alternate prefix, nor is there any exception in the current + revision of the Filesystem Hierarchy Standard for Release 7 + of the X Window System. Alan Coopersmith of Sun Microsystems, + once stated "At Sun, we were using /usr/X11 and plan to stick with it." Only + the /opt/* prefix or the + /usr prefix adhere to the + current FHS guidelines. +

+

+ The BLFS editors recommend using the /usr prefix. +

+

+ Choose your installation prefix, and set the XORG_PREFIX variable with the following + command: +

+
export XORG_PREFIX="<PREFIX>"
+

+ Throughout these instructions, you will use the following + configure + switches for all of the packages. Create the XORG_CONFIG variable to use for this parameter + substitution: +

+
export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
+    --localstatedir=/var --disable-static"
+
+

+ Note +

+

+ We will use $XORG_CONFIG in the + instructions for many packages belonging to or related to + Xorg. These instructions won't work properly with the + default behavior of zsh-5.9. So if you are using zsh-5.9 as the interactive + shell and building a package for which the instruction uses + this variable, make zsh-5.9 behavior expanding $XORG_CONFIG same as bash: +

+
set -o shwordsplit
+

+ If you want to make this setting persistent, add this + command into the zsh startup file. +

+
+

+ Create an /etc/profile.d/xorg.sh configuration file + containing these variables as the root user: +

+
cat > /etc/profile.d/xorg.sh << EOF
+XORG_PREFIX="$XORG_PREFIX"
+XORG_CONFIG="--prefix=\$XORG_PREFIX --sysconfdir=/etc --localstatedir=/var --disable-static"
+export XORG_PREFIX XORG_CONFIG
+EOF
+chmod 644 /etc/profile.d/xorg.sh
+
+

+ Note +

+

+ There is some confusion about the above 'here' document. + The backslash in front of the dollar sign is correct. Bash + will remove it when creating /etc/profile.d/xorg.sh. + However, if you are creating the file with an editor, a + copy and paste operation will not remove the backslash. It + must then be removed manually. +

+
+

+ If you've installed Sudo-1.9.17p2, ensure that XORG_PREFIX and XORG_CONFIG are available in the sudo environment. As the root user, run the following command: +

+
cat > /etc/sudoers.d/xorg << EOF
+Defaults env_keep += XORG_PREFIX
+Defaults env_keep += XORG_CONFIG
+EOF
+

+ If + you are not using the standard Xorg prefix... +

+
+

+ Warning +

+

+ If you've decided to use the standard /usr prefix, you must omit the remainder + of this page and continue at util-macros-1.20.2. +

+
+

+ If you've decided to not use the standard prefix, be + sure to add $XORG_PREFIX/bin to + your PATH environment variable, + and $XORG_PREFIX/lib/pkgconfig + and $XORG_PREFIX/share/pkgconfig to your + PKG_CONFIG_PATH variable. It is + also helpful to specify additional search paths for + gcc and an + include directory for the aclocal program. Issue the + following commands as the root user: +

+
cat >> /etc/profile.d/xorg.sh << "EOF"
+
+pathappend $XORG_PREFIX/bin             PATH
+pathappend $XORG_PREFIX/lib/pkgconfig   PKG_CONFIG_PATH
+pathappend $XORG_PREFIX/share/pkgconfig PKG_CONFIG_PATH
+
+pathappend $XORG_PREFIX/lib             LIBRARY_PATH
+pathappend $XORG_PREFIX/include         C_INCLUDE_PATH
+pathappend $XORG_PREFIX/include         CPLUS_INCLUDE_PATH
+
+ACLOCAL="aclocal -I $XORG_PREFIX/share/aclocal"
+
+export PATH PKG_CONFIG_PATH ACLOCAL LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH
+EOF
+

+ The script above needs to be activated. Normally it will be + automatic at login, but to activate it now, as a regular + user, run: +

+
source /etc/profile.d/xorg.sh
+

+ You should also add $XORG_PREFIX/lib to the /etc/ld.so.conf file. Again, as the + root user, issue the + following command: +

+
echo "$XORG_PREFIX/lib" >> /etc/ld.so.conf
+

+ You should also modify /etc/man_db.conf, adding appropriate + MANDATORY_MANPATH, MANPATH_MAP, and MANDB_MAP entries + following the examples for /usr/X11R6. Issue the following command as + the root user: +

+
sed -e "s@X11R6/man@X11R6/share/man@g" \
+    -e "s@/usr/X11R6@$XORG_PREFIX@g"   \
+    -i /etc/man_db.conf
+

+ Some applications look for shared files in /usr/share/X11. Create a symbolic link to + the proper location as the root user: +

+
ln -svf $XORG_PREFIX/share/X11 /usr/share/X11
+

+ If building KDE, some cmake files look for Xorg in places + other than $XORG_PREFIX. Allow cmake to find Xorg with: +

+
ln -svf $XORG_PREFIX /usr/X11R6
+
+
+
+
+
+

+ util-macros-1.20.2 +

+
+
+
+
+
+

+ Introduction to util-macros +

+

+ The util-macros package + contains the m4 macros used + by all of the Xorg packages. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ util-macros Dependencies +

+
+ Required +
+

+ Xorg build + environment (should be set for the following instructions + to work) +

+
+
+

+ Installation of util-macros +

+

+ Install util-macros by + running the following commands: +

+
./configure $XORG_CONFIG
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + $XORG_PREFIX/share/pkgconfig and + $XORG_PREFIX/share/util-macros +
+
+
+
+
+
+
+
+

+ xorgproto-2024.1 +

+
+
+
+
+
+

+ Introduction to xorgproto +

+

+ The xorgproto package + provides the header files required to build the X Window + system, and to allow other applications to build against the + installed X Window system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xorgproto Dependencies +

+
+ Required +
+

+ util-macros-1.20.2 +

+
+ Optional +
+

+ fop-2.11, + libxslt-1.1.43, xmlto-0.0.29 and asciidoc-10.2.1 (to build additional + documentation) +

+
+

+ Note +

+

+ There is a reciprocal dependency with fop-2.11. If you wish to build + the documentation, you'll need to re-install the Protocol + Headers after the installation is complete and fop-2.11 has been + installed. +

+
+

+ Editor Notes: + https://wiki.linuxfromscratch.org/blfs/wiki/Xorg7ProtocolHeaders +

+
+
+

+ Installation of xorgproto +

+

+ Install xorgproto by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=$XORG_PREFIX .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install &&
+mv -v $XORG_PREFIX/share/doc/xorgproto{,-2024.1}
+
+
+

+ Command Explanations +

+

+ -D legacy=true: Installs legacy + headers needed by old programs (such as LessTif). +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $XORG_PREFIX/include/GL, $XORG_PREFIX/include/X11, and $XORG_PREFIX/share/doc/xorgproto-2024.1 +
+
+
+
+
+
+
+
+

+ libXau-1.0.12 +

+
+
+
+
+
+

+ Introduction to libXau +

+

+ The libXau package contains + a library implementing the X11 Authorization Protocol. This + is useful for restricting client access to the display. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.x.org/pub/individual/lib/libXau-1.0.12.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 4c9f81acf00b62e5de56a912691bd737 +

    +
  • +
  • +

    + Download size: 276 KB +

    +
  • +
  • +

    + Estimated disk space required: 2.9 MB (with test) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with test) +

    +
  • +
+
+

+ libXau Dependencies +

+
+ Required +
+

+ xorgproto-2024.1 +

+
+
+

+ Installation of libXau +

+

+ Install libXau by running + the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libXau.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libXau.so +

+
+

+ is the library of X authority database routines +

+
+
+
+
+
+
+
+

+ libXdmcp-1.1.5 +

+
+
+
+
+
+

+ Introduction to libXdmcp +

+

+ The libXdmcp package + contains a library implementing the X Display Manager Control + Protocol. This is useful for allowing clients to interact + with the X Display Manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.x.org/pub/individual/lib/libXdmcp-1.1.5.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: ce0af51de211e4c99a111e64ae1df290 +

    +
  • +
  • +

    + Download size: 292 KB +

    +
  • +
  • +

    + Estimated disk space required: 3.0 MB (with test) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with test) +

    +
  • +
+
+

+ libXdmcp Dependencies +

+
+ Required +
+

+ xorgproto-2024.1 +

+
+ Optional +
+

+ xmlto-0.0.29, fop-2.11, libxslt-1.1.43, and + Xorg-SGML-doctools + (for documentation) +

+
+
+

+ Installation of libXdmcp +

+

+ Install libXdmcp by running + the following commands: +

+
./configure $XORG_CONFIG --docdir=/usr/share/doc/libXdmcp-1.1.5 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libXdmcp.so +
+
+ Installed Directory: + $XORG_PREFIX/share/doc/libXdmcp-1.1.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libXdmcp.so +

+
+

+ is the X Display Manager Control Protocol library +

+
+
+
+
+
+
+
+

+ xcb-proto-1.17.0 +

+
+
+
+
+
+

+ Introduction to xcb-proto +

+

+ The xcb-proto package + provides the XML-XCB protocol descriptions that libxcb uses to generate the majority of + its code and API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xcb-proto Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ libxml2-2.14.5 (required to run the + tests) +

+
+
+

+ Installation of xcb-proto +

+

+ Install xcb-proto by running + the following commands: +

+
PYTHON=python3 ./configure $XORG_CONFIG
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you are upgrading from version 1.15.1 or lower, the old + pkgconfig file needs to be removed. Issue, as the + root user: +

+
rm -f $XORG_PREFIX/lib/pkgconfig/xcb-proto.pc
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + $XORG_PREFIX/share/xcb and $XORG_PREFIX/lib/python3.13/site-packages/xcbgen +
+
+
+
+
+
+
+
+

+ libxcb-1.17.0 +

+
+
+
+
+
+

+ Introduction to libxcb +

+

+ The libxcb package provides + an interface to the X Window System protocol, which replaces + the current Xlib interface. Xlib can also use XCB as a + transport layer, allowing software to make requests and + receive responses with both. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxcb Dependencies +

+
+ Required +
+

+ libXau-1.0.12 and xcb-proto-1.17.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 (to generate API + documentation) and libxslt-1.1.43 +

+
+
+

+ Installation of libxcb +

+

+ Install libxcb by running + the following commands: +

+
./configure $XORG_CONFIG      \
+            --without-doxygen \
+            --docdir='${datadir}'/doc/libxcb-1.17.0 &&
+LC_ALL=en_US.UTF-8 make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If the package was built as a non-root user, the installed documentation is + now owned by this user. As the root user, fix the ownership: +

+
chown -Rv root:root $XORG_PREFIX/share/doc/libxcb-1.17.0
+
+
+

+ Command Explanations +

+

+ LC_ALL=en_US.UTF-8: Some Python 3 + script in the building system of this package may fail with + certain system locale settings. This environment variable + forces a locale setting known to work. +

+

+ --without-doxygen: Do + not use doxygen to generate API documentation (default: + auto). Without it, if Doxygen-1.14.0 is installed, the API + documentation will be generated and installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libxcb.so, libxcb-composite.so, + libxcb-damage.so, libxcb-dbe.so, libxcb-dpms.so, + libxcb-dri2.so, libxcb-dri3.so, libxcb-glx.so, + libxcb-present.so, libxcb-randr.so, libxcb-record.so, + libxcb-render.so, libxcb-res.so, libxcb-screensaver.so, + libxcb-shape.so, libxcb-shm.so, libxcb-sync.so, + libxcb-xf86dri.so, libxcb-xfixes.so, libxcb-xinerama.so, + libxcb-xinput.so, libxcb-xkb.so, libxcb-xtest.so, + libxcb-xvmc.so, and libxcb-xv.so +
+
+ Installed Directories: + $XORG_PREFIX/include/xcb and $XORG_PREFIX/share/doc/libxcb-1.17.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libxcb.so +

+
+

+ is an interface to the X Window System protocol +

+
+
+
+
+
+
+
+

+ Xorg Libraries +

+
+
+
+
+
+

+ Introduction to Xorg Libraries +

+

+ The Xorg libraries provide + library routines that are used within all X Window + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.x.org/pub/individual/lib/ +

    +
  • +
  • +

    + Download size: 12 MB +

    +
  • +
  • +

    + Estimated disk space required: 274 MB (47 MB installed) + - if source directories not deleted +

    +
  • +
  • +

    + Estimated build time: 1.8 SBU +

    +
  • +
+
+

+ Xorg + Libraries Dependencies +

+
+ Required +
+

+ Fontconfig-2.17.1 and libxcb-1.17.0 +

+
+ Optional +
+

+ asciidoc-10.2.1, xmlto-0.0.29 with one or + more of the following: fop-2.11, Links-2.30, Lynx-2.9.2, ncompress (for some + tests), and W3m (to generate + additional PDF or text documentation for the libXfont + package). +

+
+
+

+ Downloading Xorg Libraries +

+

+ First, create a list of files to be downloaded. This file + will also be used to verify the integrity of the downloads + when complete: +

+
cat > lib-7.md5 << "EOF"
+6ad67d4858814ac24e618b8072900664  xtrans-1.6.0.tar.xz
+146d770e564812e00f97e0cbdce632b7  libX11-1.8.12.tar.xz
+e59476db179e48c1fb4487c12d0105d1  libXext-1.3.6.tar.xz
+c5cc0942ed39c49b8fcd47a427bd4305  libFS-1.0.10.tar.xz
+d1ffde0a07709654b20bada3f9abdd16  libICE-1.1.2.tar.xz
+3aeeea05091db1c69e6f768e0950a431  libSM-1.2.6.tar.xz
+e613751d38e13aa0d0fd8e0149cec057  libXScrnSaver-1.2.4.tar.xz
+9acd189c68750b5028cf120e53c68009  libXt-1.3.1.tar.xz
+85edefb7deaad4590a03fccba517669f  libXmu-1.2.1.tar.xz
+05b5667aadd476d77e9b5ba1a1de213e  libXpm-3.5.17.tar.xz
+2a9793533224f92ddad256492265dd82  libXaw-1.0.16.tar.xz
+65b9ba1e9ff3d16c4fa72915d4bb585a  libXfixes-6.0.1.tar.xz
+af0a5f0abb5b55f8411cd738cf0e5259  libXcomposite-0.4.6.tar.xz
+4c54dce455d96e3bdee90823b0869f89  libXrender-0.9.12.tar.xz
+5ce55e952ec2d84d9817169d5fdb7865  libXcursor-1.2.3.tar.xz
+ca55d29fa0a8b5c4a89f609a7952ebf8  libXdamage-1.1.6.tar.xz
+8816cc44d06ebe42e85950b368185826  libfontenc-1.1.8.tar.xz
+66e03e3405d923dfaf319d6f2b47e3da  libXfont2-2.0.7.tar.xz
+d378be0fcbd1f689f9a132e0d642bc4b  libXft-2.3.9.tar.xz
+95a960c1692a83cc551979f7ffe28cf4  libXi-1.8.2.tar.xz
+228c877558c265d2f63c56a03f7d3f21  libXinerama-1.1.5.tar.xz
+24e0b72abe16efce9bf10579beaffc27  libXrandr-1.5.4.tar.xz
+66c9e9e01b0b53052bb1d02ebf8d7040  libXres-1.2.2.tar.xz
+b62dc44d8e63a67bb10230d54c44dcb7  libXtst-1.2.5.tar.xz
+8a26503185afcb1bbd2c65e43f775a67  libXv-1.0.13.tar.xz
+a90a5f01102dc445c7decbbd9ef77608  libXvMC-1.0.14.tar.xz
+74d1acf93b83abeb0954824da0ec400b  libXxf86dga-1.1.6.tar.xz
+d3db4b6dc924dc151822f5f7e79ae873  libXxf86vm-1.1.6.tar.xz
+57c7efbeceedefde006123a77a7bc825  libpciaccess-0.18.1.tar.xz
+229708c15c9937b6e5131d0413474139  libxkbfile-1.1.3.tar.xz
+9805be7e18f858bed9938542ed2905dc  libxshmfence-1.3.3.tar.xz
+bdd3ec17c6181fd7b26f6775886c730d  libXpresent-1.0.1.tar.xz
+EOF
+

+ To download the needed files using Wget-1.25.0, use the + following commands: +

+
mkdir lib &&
+cd lib &&
+grep -v '^#' ../lib-7.md5 | awk '{print $2}' | wget -i- -c \
+    -B https://www.x.org/pub/individual/lib/ &&
+md5sum -c ../lib-7.md5
+
+
+

+ Installation of Xorg Libraries +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ Some libraries come with a test suite. If you wish to execute + them, either comment out the rm + -rf ... below, so that, after all libraries + are installed, you can come back to the corresponding + directory and run make + check, or do individual builds, running the + tests for each of those distributed with working test suites. + Alternatively, you can uncomment the line #make check ..., and at the + end, check the test results with: +

+
grep -A9 summary *make_check.log
+

+ BLFS developers have confirmed that libX11, libXt, libXmu, libXpm, and libxshmfence are distributed with + working test suites. +

+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
for package in $(grep -v '^#' ../lib-7.md5 | awk '{print $2}')
+do
+  packagedir=${package%.tar.?z*}
+  echo "Building $packagedir"
+
+  tar -xf $package
+  pushd $packagedir
+  docdir="--docdir=$XORG_PREFIX/share/doc/$packagedir"
+  
+  case $packagedir in
+    libXfont2-[0-9]* )
+      ./configure $XORG_CONFIG $docdir --disable-devel-docs
+    ;;
+
+    libXt-[0-9]* )
+      ./configure $XORG_CONFIG $docdir \
+                  --with-appdefaultdir=/etc/X11/app-defaults
+    ;;
+
+    libXpm-[0-9]* )
+      ./configure $XORG_CONFIG $docdir --disable-open-zfile
+    ;;
+  
+    libpciaccess* )
+      mkdir build
+      cd    build
+        meson setup --prefix=$XORG_PREFIX --buildtype=release ..
+        ninja
+        #ninja test
+        as_root ninja install
+      popd     # $packagedir
+      continue # for loop
+    ;;
+
+    * )
+      ./configure $XORG_CONFIG $docdir
+    ;;
+  esac
+
+  make
+  #make check 2>&1 | tee ../$packagedir-make_check.log
+  as_root make install
+  popd
+  rm -rf $packagedir
+  as_root /sbin/ldconfig
+done
+

+ Finally, exit the shell that was started earlier: +

+
exit
+
+
+

+ Command Explanations +

+

+ --disable-open-zfile: + Allow libXpm to build + without the optional compress command present. +

+

+ --disable-devel-docs: + Disable generation of text documentation in the libXfont2 + package if xmlto-0.0.29 is installed without a text + browser. Omit this parameter (or the entire case statement) if a text + browser is installed. +

+

+ --with-fop: Use fop-2.11 to generate PDF + documentation (only for the libXfont package). +

+
+
+

+ Configuration of Xorg Libraries +

+

+ If you've chosen to install Xorg into /usr, then no further configuration is + necessary and you can skip the rest of this section. If + you've opted for an alternate prefix, you should create two + symlinks to satisfy the expected environment of several + packages. Execute the following commands as the root user: +

+
ln -sv $XORG_PREFIX/lib/X11 /usr/lib/X11 &&
+ln -sv $XORG_PREFIX/include/X11 /usr/include/X11
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cxpm and sxpm +
+
+ Installed Libraries: + libfontenc.so, libFS.so, libICE.so, + libpciaccess.so, libSM.so, libX11.so, libX11-xcb, + libXaw6.so, libXaw7.so, libXaw.so, libXcomposite.so, + libXcursor.so, libXdamage.so, libXext.so, libXfixes.so, + libXfont2.so, libXft.so, libXinerama.so, libXi.so, + libxkbfile.so, libXmu.so, libXmuu.so, libXpm.so, + libXpresent.so, libXrandr.so, libXrender.so, libXRes.so, + libxshmfence.so, libXss.so, libXt.so, libXtst.so, + libXvMC.so, libXvMCW.so, libXv.so, libXxf86dga.so and + libXxf86vm.so +
+
+ Installed Directories: + $XORG_PREFIX/include/X11/fonts, + $XORG_PREFIX/include/X11/ICE, + $XORG_PREFIX/include/X11/SM, + $XORG_PREFIX/include/X11/Xmu, + $XORG_PREFIX/include/X11/Xtrans, + $XORG_PREFIX/share/doc/libFS, + $XORG_PREFIX/share/doc/libICE-1.1.2, + $XORG_PREFIX/share/doc/libSM-1.2.6, + $XORG_PREFIX/share/doc/libX11-1.8.12, + $XORG_PREFIX/share/doc/libXaw, + $XORG_PREFIX/share/doc/libXext, + $XORG_PREFIX/share/doc/libXi, + $XORG_PREFIX/share/doc/libXmu-1.2.1, + $XORG_PREFIX/share/doc/libXrender, + $XORG_PREFIX/share/doc/libXt, + $XORG_PREFIX/share/doc/libXtst, + $XORG_PREFIX/share/doc/libXvMC, + $XORG_PREFIX/share/doc/xtrans + and $XORG_PREFIX/share/X11/locale +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cxpm +

+
+

+ checks the format of an XPM file +

+
+

+ sxpm +

+
+

+ shows an XPM file and/or converts XPM 1 or 2 files + to XPM 3 +

+
+

+ libfontenc.so +

+
+

+ is the X11 font encoding library +

+
+

+ libFS.so +

+
+

+ is the library interface to the X Font Server +

+
+

+ libICE.so +

+
+

+ is the X Inter Client Exchange Library +

+
+

+ libpciaccess.so +

+
+

+ is the generic PCI Access library for X +

+
+

+ libSM.so +

+
+

+ is the X Session Management Library +

+
+

+ libX11.so +

+
+

+ is the Xlib Library +

+
+

+ libXaw6.so +

+
+

+ is the X Athena Widgets Library, version 6 +

+
+

+ libXaw7.so +

+
+

+ is the X Athena Widgets Library, version 7 +

+
+

+ libXaw.so +

+
+

+ are symbolic links to the current X Athena Widgets + Library, version 7 +

+
+

+ libXcomposite.so +

+
+

+ is the X Composite Library +

+
+

+ libXcursor.so +

+
+

+ is the X Cursor management library +

+
+

+ libXdamage.so +

+
+

+ is the X Damage Library +

+
+

+ libXext.so +

+
+

+ is the Misc X Extension Library +

+
+

+ libXfixes.so +

+
+

+ provides augmented versions of core protocol + requests +

+
+

+ libXfont2.so +

+
+

+ is the X font library +

+
+

+ libXft.so +

+
+

+ is the X FreeType interface library +

+
+

+ libXinerama.so +

+
+

+ is the Xinerama Library +

+
+

+ libXi.so +

+
+

+ is the X Input Extension Library +

+
+

+ libxkbfile.so +

+
+

+ is the xkbfile Library +

+
+

+ libXmu.so +

+
+

+ is the X interface library for miscellaneous + utilities not part of the Xlib standard +

+
+

+ libXmuu.so +

+
+

+ is the Mini Xmu Library +

+
+

+ libXpm.so +

+
+

+ is the X Pixmap Library +

+
+

+ libXpresent.so +

+
+

+ is the library interface to the X Present Extension +

+
+

+ libXrandr.so +

+
+

+ is the X Resize, Rotate and Reflection extension + library +

+
+

+ libXrender.so +

+
+

+ is the X Render Library +

+
+

+ libXRes.so +

+
+

+ is the X-Resource extension client library +

+
+

+ libxshmfence.so +

+
+

+ exposes an event API on top of Linux futexes +

+
+

+ libXss.so +

+
+

+ is the X11 Screen Saver extension client library +

+
+

+ libXt.so +

+
+

+ is the X Toolkit Library +

+
+

+ libXtst.so +

+
+

+ is the Xtst Library +

+
+

+ libXvMC.so +

+
+

+ is the X-Video Motion Compensation Library +

+
+

+ libXvMCW.so +

+
+

+ is the XvMC Wrapper including the Nonstandard VLD + extension +

+
+

+ libXv.so +

+
+

+ is the X Window System video extension library +

+
+

+ libXxf86dga.so +

+
+

+ is the client library for the XFree86-DGA extension +

+
+

+ libXxf86vm.so +

+
+

+ is the client library for the XFree86-VidMode X + extension +

+
+
+
+
+
+
+
+

+ libxcvt-0.1.3 +

+
+
+
+
+
+

+ Introduction to libxcvt +

+

+ libxcvt is a library + providing a standalone version of the X server implementation + of the VESA CVT standard timing modelines generator. It is + meant to be a direct replacement to the version formerly + provided by the Xorg server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxcvt Dependencies +

+
+ Required +
+

+ Xorg build + environment (should be set for the following instructions + to work) +

+
+
+

+ Installation of libxcvt +

+

+ Install libxcvt by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=$XORG_PREFIX --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + cvt +
+
+ Installed Library: + libxcvt.so +
+
+ Installed Directory: + $XORG_PREFIX/include/libxcvt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ cvt +

+
+

+ calculates VESA Coordinated Video Timing (CVT) + modelines for use with X +

+
+

+ libxcvt.so +

+
+

+ contains functions for calculating VESA CVT +

+
+
+
+
+
+
+
+

+ xcb-util-0.4.1 +

+
+
+
+
+
+

+ Introduction to xcb-util +

+

+ The xcb-util package + provides additional extensions to the XCB library, many that were previously + found in Xlib, but are not + part of core X protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xcb-util Dependencies +

+
+ Required +
+

+ libxcb-1.17.0 +

+
+ Optional +
+

+ Doxygen-1.14.0 (for documentation) +

+
+
+

+ Installation of xcb-util +

+

+ Install xcb-util by running + the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libxcb-util.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libxcb-util.so +

+
+

+ Provides utility functions for other XCB utilities +

+
+
+
+
+
+
+
+

+ XCB + Utilities +

+
+
+
+
+
+

+ Introduction to XCB Utilities +

+

+ The XCB utilities provide extensions that developers can use + when making X Window software. xcb-util-0.4.1 was + just installed but these utilities offer even more extensions + that X Window software may depend on. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://xcb.freedesktop.org/dist/ +

    +
  • +
  • +

    + Download size: 1.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 13.3 MB +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (ignoring the time to + download) +

    +
  • +
+
+

+ XCB + Utilities Dependencies +

+
+ Required +
+

+ libxcb-1.17.0 and xcb-util-0.4.1 +

+
+
+

+ Downloading XCB Utilities +

+

+ First, create a list of files to be downloaded. This file + will also be used to verify the integrity of the downloads + when complete: +

+
cat > xcb-utils.md5 << "EOF"
+a67bfac2eff696170259ef1f5ce1b611  xcb-util-image-0.4.1.tar.xz
+fbdc05f86f72f287ed71b162f1a9725a  xcb-util-keysyms-0.4.1.tar.xz
+193b890e2a89a53c31e2ece3afcbd55f  xcb-util-renderutil-0.3.10.tar.xz
+581b3a092e3c0c1b4de6416d90b969c3  xcb-util-wm-0.4.2.tar.xz
+bc30cd267b11ac5803fe19929cabd230  xcb-util-cursor-0.1.5.tar.xz
+EOF
+

+ To download the needed files using Wget-1.25.0, use the + following commands: +

+
mkdir xcb-utils &&
+cd    xcb-utils &&
+grep -v '^#' ../xcb-utils.md5 | awk '{print $2}' | wget -i- -c \
+     -B https://xcb.freedesktop.org/dist/ &&
+md5sum -c ../xcb-utils.md5
+
+
+

+ Installation of XCB Utilities +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
for package in $(grep -v '^#' ../xcb-utils.md5 | awk '{print $2}')
+do
+  packagedir=${package%.tar.?z*}
+  tar -xf $package
+  pushd $packagedir
+     ./configure $XORG_CONFIG
+     make
+     as_root make install
+  popd
+  rm -rf $packagedir
+done
+

+ Finally, exit the shell that was started earlier: +

+
exit
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libxcb-image.so, libxcb-keysyms.so, + libxcb-render-util.so, libxcb-ewmh.so, libxcb-icccm.so, + and libxcb-cursor.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libxcb-image.so +

+
+

+ is a port of Xlib's XImage and XShmImage functions +

+
+

+ libxcb-keysyms.so +

+
+

+ provides the standard X key constants and API + functions for conversion to/from keycodes +

+
+

+ libxcb-render-util.so +

+
+

+ provides convenience functions for the Render + extension +

+
+

+ libxcb-ewmh.so +

+
+

+ provides the client and window-manager helpers for + EWMH +

+
+

+ libxcb-icccm.so +

+
+

+ provides the client and window-manager helpers for + ICCCM +

+
+

+ libxcb-cursor.so +

+
+

+ is a port of Xlib's libXcursor functions +

+
+
+
+
+
+
+
+

+ Mesa-25.1.8 +

+
+
+
+
+
+

+ Introduction to Mesa +

+

+ Mesa is an OpenGL compatible + 3D graphics library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://mesa.freedesktop.org/archive/mesa-25.1.8.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: fe3eb39e8a3c6fbb36eb3da57be022e7 +

    +
  • +
  • +

    + Download size: 45 MB +

    +
  • +
  • +

    + Estimated disk space required: 1.1 GB (with docs; add + 576 MB for tests) +

    +
  • +
  • +

    + Estimated build time: 3.8 SBU (with docs; add 1.7 SBU + for tests; both with parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+
+ +
+

+ Mesa + Dependencies +

+
+ Required +
+

+ Xorg + Libraries, libdrm-2.4.125, Mako-1.3.10, and PyYAML-6.0.2 +

+
+ Recommended +
+ +
+ +
+ +
+

+ Note +

+

+ An Internet connection is needed for building the Nouveau + Vulkan driver. The system certificate store may need to be + set up with make-ca-1.16.1 before building this + package. +

+
+
+

+ Note +

+

+ Choosing Mesa + Drivers +

+

+ In the instructions below, all the available drivers are + built. That will almost always work. However, it is not + efficient. Depending on your video hardware, you probably + need only specific drivers. +

+

+ The first thing you need to know is which type of video + device you have. In some cases it is built into the CPU. In + others it is a separate PCI card. In either case you can + tell what video hardware you have by installing pciutils-3.14.0 and running: +

+
lspci | grep VGA
+

+ The video device is most likely one of three families: AMD, + Intel, or NVIDIA. See the Command Explanations for + -D + gallium-drivers=auto below to see what options + are available for your specific video hardware (or emulated + video hardware). You should probably add the softpipe or + llvmpipe option as a backup driver. +

+

+ For 'platforms' you can select x11 and/or wayland. Note + that in BLFS currently only Gnome and KDE can use wayland. + If you are not going to use one of those desktop + environments then you probably only want x11. +

+

+ For 'vulkan-drivers' you may want to limit the selection to + your current hardware. These drivers are used by some + specific applications. For example, ffmpeg (including + ffplay) will use Vulkan instead of OpenGL for rendering + video on the GPU. If you do not want to do this you may or + may not want to install them. See the Command Explanations + for -D + vulkan-drivers=auto below to see what options + are available for your specific video hardware (or emulated + video hardware). You should probably add the swrast option + as a backup driver unless you don't need Vulkan at all. +

+
+
+ Optional +
+

+ libgcrypt-1.11.2, libunwind-1.8.2, lm-sensors-3-6-2, + Nettle-3.10.2, Valgrind-3.25.1, + mesa-demos (provides + more than 300 extra demos to test Mesa; this includes the same programs + added by the patch above), Bellagio OpenMAX Integration + Layer (for mobile platforms), and + libtizonia, +

+
+
+

+ Kernel + Configuration +

+

+ Enable the following options in the kernel configuration and + recompile the kernel if necessary: +

+
Device Drivers --->
+  Graphics support --->
+    <*/M>   Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    
+    # For r300 or r600:
+    < /*/M> ATI Radeon                                              [DRM_RADEON]
+    
+    # For radeonsi:
+    < /*/M> AMD GPU                                                 [DRM_AMDGPU]
+    [*]       Enable amdgpu support for SI parts                 [DRM_AMDGPU_SI]
+    [*]       Enable amdgpu support for CIK parts               [DRM_AMDGPU_CIK]
+      Display Engine Configuration --->
+      [*]   AMD DC - Enable new display engine                      [DRM_AMD_DC]
+    
+    # For nouveau:
+    < /*/M> Nouveau (NVIDIA) cards                                 [DRM_NOUVEAU]
+    [*]       Use GSP firmware for Turing/Ampere (needs firmware installed)
+                                                  ...  [DRM_NOUVEAU_GSP_DEFAULT]
+    
+    # For i915, crocus, or iris:
+    < /*/M> Intel 8xx/9xx/G3x/G4x/HD Graphics                         [DRM_I915]
+    
+    # For iris:
+    < /*/M> Intel Xe2 Graphics                                          [DRM_XE]
+    [*]       Enable display support                            [DRM_XE_DISPLAY]
+    (*)       Force probe xe for selected Intel hardware IDs
+                                                       ...  [DRM_XE_FORCE_PROBE]
+    
+    # For llvmpipe or softpipe:
+    < /*>   Virtual GEM provider                                      [DRM_VGEM]
+    
+    # For svga:
+    < /*/M> DRM driver for VMware Virtual GPU                       [DRM_VMWGFX]
+
+

+ Note +

+

+ The corresponding Mesa Gallium3D driver name is provided as + the comment for the configuration entries. If you don't + know the name of the Mesa Gallium3D driver for your GPU, + see Mesa + Gallium3D Drivers below. +

+

+ For the GPUs supported by the Iris Gallium3D driver, with + CONFIG_DRM_I915 enabled and + CONFIG_DRM_XE_FORCE_PROBE set + to the string *, the i915 + driver will be used if it supports the GPU, and the Xe + driver will be used if it supports the GPU but the i915 + driver does not. If you are sure your GPU is supported by + the i915 driver, you can disable the Xe driver to save some + build time. If your GPU is supported by both drivers and + you want to use the Xe driver, you can disable the i915 + driver, or make the i915 driver deny your GPU via the + CONFIG_DRM_I915_FORCE_PROBE + option, for example setting it to !7d55 would make i915 deny the Meteor Lake + integrated GPU (of which the PCI ID is 8086:7d55), leaving it for the Xe driver. +

+

+ CONFIG_DRM_RADEON, CONFIG_DRM_AMDGPU, CONFIG_DRM_NOUVEAU, CONFIG_DRM_I915, and CONFIG_DRM_XE may require firmware. See + About Firmware for details. +

+

+ Selecting CONFIG_DRM_RADEON, + CONFIG_DRM_AMDGPU, or + CONFIG_DRM_NOUVEAU as + “y” is not recommended. If it + is, any required firmware must be built as a part of the + kernel image or the initramfs for the driver to function + correctly. +

+

+ The sub-entries under CONFIG_DRM_AMDGPU are used to ensure the + AMDGPU kernel driver supports all GPUs using the + radeonsi driver. They are not + needed if you won't need CONFIG_DRM_AMDGPU itself. They may be + unneeded for some GPU models. +

+

+ For llvmpipe or softpipe, CONFIG_DRM_VGEM is required or X clients + may fail to start with a cryptic message Error: couldn't get an RGB, + Double-buffered visual. Strictly speaking, it can be + compiled as a module. But the module will not be loaded + automatically, so it's more convenient to build it as a + part of the kernel image. +

+
+
+
+

+ Installation of Mesa +

+

+ If you have downloaded the xdemos patch (needed if testing + the Xorg installation per BLFS instructions), apply it by + running the following command: +

+
patch -Np1 -i ../mesa-add_xdemos-4.patch
+

+ Install Mesa by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                 \
+      --prefix=$XORG_PREFIX    \
+      --buildtype=release      \
+      -D platforms=x11,wayland \
+      -D gallium-drivers=auto  \
+      -D vulkan-drivers=auto   \
+      -D valgrind=disabled     \
+      -D video-codecs=all      \
+      -D libunwind=disabled    &&
+
+ninja
+
+

+ Warning +

+

+ Please ask your lawyer or remove the -D video-codecs=all option if + you will distribute the compiled Mesa libraries and drivers + to others. +

+
+

+ To test the results, issue: +

+
meson configure -D build-tests=true &&
+sed '/float rsqrtf/,/^}/d' \
+    -i ../src/gallium/drivers/llvmpipe/lp_test_arit.c &&
+ninja test
+

+ Now, as the root user: +

+
ninja install
+

+ If desired, install the optional documentation by running the + following commands as the root user: +

+
cp -rv ../docs -T /usr/share/doc/mesa-25.1.8
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + This switch ensures a fully-optimized build, and disables + debug assertions which will severely slow down the libraries + in certain use-cases. Without this switch, build sizes can + span into the 2 GB range. +

+

+ + -D + gallium-drivers=auto: This parameter controls + which Gallium3D drivers should be built: +

+
+
    +
  • +

    + auto selects all Gallium3D + drivers available for x86. With a comma-separated list, + only a subset of these drivers will be built. If you + precisely know which drivers you need, you can select + them explicitly. For example, -D + gallium-drivers=radeonsi,iris,llvmpipe. +

    +
  • +
  • +

    + r300 (for ATI Radeon 9000 + or Radeon X series) +

    +
  • +
  • +

    + r600 (for AMD/ATI Radeon + HD 2000-6000 series) +

    +
  • +
  • +

    + radeonsi (for AMD Radeon + HD 7000 or newer AMD GPU models) +

    +
  • +
  • +

    + nouveau (for supported + NVIDIA GPUs, they are listed as all “3D features” + either “DONE” or “N/A” in + the + Nouveau status page) +

    +
  • +
  • +

    + virgl (for a QEMU virtual + GPU with virglrender + support; note that BLFS qemu-10.0.3 is not built with + virglrender) +

    +
  • +
  • +

    + svga (for a VMWare virtual + GPU) +

    +
  • +
  • +

    + llvmpipe (using CPU for 3D + rasterization. Note that it's much slower than using a + modern 3D-capable GPU, so it should be only used if the + GPU is not supported by other drivers) +

    +
  • +
  • +

    + softpipe (also using CPU + for 3D rasterization, but slower than llvmpipe. There + is not much reason to use it unless LLVM is not + available) +

    +
  • +
  • +

    + iris (for Intel GPUs + shipped with Broadwell or newer CPUs, or as a dedicated + PCIe card) +

    +
  • +
  • +

    + crocus (for Intel GMA + 3000, X3000 series, 4000 series, or X4000 series GPUs + shipped with chipsets, or Intel HD GPUs shipped with + pre-Broadwell CPUs) +

    +
  • +
  • +

    + i915 (for Intel GMA 900, + 950, 3100, or 3150 GPUs shipped with chipsets or Atom + D/N 4xx/5xx CPUs) +

    +
  • +
  • +

    + zink (uses Vulkan to + implement OpenGL, and while unstable at times, it can + be a decent replacement for non-performant gallium + drivers like nouveau) +

    +
  • +
+
+

+ -D + vulkan-drivers=auto: This parameter controls + which Vulkan drivers should be built: +

+
+
    +
  • +

    + auto selects all Vulkan + drivers available for x86. With a comma-separated list, + only a subset of these drivers will be built. If you + precisely know which drivers you need, you can select + them explicitly. For example, -D + vulkan-drivers=amd,nouveau,swrast. +

    +
  • +
  • +

    + amd (for AMD Radeon HD + 7730 or newer AMD GPUs) +

    +
  • +
  • +

    + intel (for Intel GPUs + shipped with Skylake or newer CPUs, or as a dedicated + PCIe card) +

    +
  • +
  • +

    + intel_hasvk (for Intel + GPUs shipped with Ivy Bridge, Haswell, or Broadwell + CPUs) +

    +
  • +
  • +

    + nouveau (for GTX 16XX, RTX + 20XX, or newer NVIDIA GPUs) +

    +
  • +
  • +

    + swrast (for using the CPU + for 3D rasterization) Note that it's much slower than + using a modern 3D-capable GPU, so it should be only + used if the GPU is not supported by other drivers. +

    +
  • +
  • +

    + "" (empty list, use + -D vulkan-drivers="" if + you've not installed and you don't plan to install + Vulkan-Loader-1.4.321) +

    +
  • +
+
+

+ -D platforms=...: + This parameter controls which windowing systems will be + supported. Available linux platforms are x11 and wayland. +

+

+ -D valgrind=disabled: + This parameter disables the usage of Valgrind during the + build process. Remove this parameter if you have Valgrind + installed, and wish to check for memory leaks. +

+

+ -D video-codecs=all: + This parameter enables building codecs for video formats + covered by third-party patents. +

+

+ -D + libunwind=disabled: This parameter disables the + usage of libunwind. +

+

+ meson configure -D + build-tests=true: This command will + reconfigure the build to set -D + build-tests=true, but keep the other options specified + in the meson + setup command unchanged. It allows + ninja test to + build and run unit tests. +

+

+ -D egl-native-platform="...": + This parameter controls which Embedded Graphics Library + support will be built. Available linux options are auto + (default), x11, wayland, surfaceless, and drm. +

+

+ -D legacy-x11="..." This + parameter controls which legacy X11 features get built-in + support. Available linux options are none (default) and dri2. + These features are rarely needed anymore. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + glxgears, glxinfo, + mme_fermi_sim_hw_test, and mme_tu104_sim_hw_test +
+
+ Installed Libraries: + libEGL.so, libGL.so, + libGLESv1_CM.so, libGLESv2.so, libgbm.so, libglapi.so, + libgallium-25.1.8.so, and libxatracker.so +
+
+ Installed DRI Driver + Stubs: libdril_dri.so and + symlinks to it: crocus_dri.so, i915_dri.so, iris_dri.so, + kms_swrast_dri.so, nouveau_dri.so, r300_dri.so, + r600_dri.so, r600_drv_video.so, radeonsi_dri.so, + swrast_dri.so, virtio_gpu_dri.so, vmwgfx_dri.so, and + zink_dri.so +
+
+ Installed VA-API + Drivers: nouveau_drv_video.so, radeonsi_drv_video.so, + and virtio_gpu_drv_video.so +
+
+ Installed GBM Backends: + dri_gbm.so +
+
+ Installed VDPAU + Drivers: libvdpau_nouveau.so, libvdpau_r600.so, + libvdpau_radeonsi.so, and libvdpau_virtio_gpu.so (many of + these drivers are hard-linked) +
+
+ Installed Vulkan + Drivers: libvulkan_intel_hasvk.so, libvulkan_intel.so, + libvulkan_lvp.so, libvulkan_nouveau.so, and + libvulkan_radeon.so +
+
+ Installed Directories: + $XORG_PREFIX/{include/{EGL,GLES,GLES2,GLES3,KHR}, + $XORG_PREFIX/lib/{dri,gbm,vdpau}}, + $XORG_PREFIX/share/drirc.d (contains workarounds for + various applications, particularly browsers and games), + $XORG_PREFIX/share/vulkan, and + /usr/share/doc/mesa-25.1.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ glxgears +

+
+

+ is a GL demo useful for troubleshooting graphics + problems +

+
+

+ glxinfo +

+
+

+ is a diagnostic program that displays information + about the graphics hardware and installed GL + libraries +

+
+

+ dri_gbm.so +

+
+

+ implements Graphics Buffer Management functions + needed by libgbm on + top of libdrm +

+
+

+ libdril_dri.so +

+
+

+ is a stub allowing Xorg server to co-operate with + the Gallium3D drivers +

+
+

+ libEGL.so +

+
+

+ provides a native platform graphics interface as + defined by the EGL-1.4 specification +

+
+

+ libgallium-25.1.8.so +

+
+

+ contains all the Gallium3D drivers +

+
+

+ libgbm.so +

+
+

+ is the Mesa + Graphics Buffer Manager library +

+
+

+ libglapi.so +

+
+

+ is the Mesa + implementation of the OpenGL API +

+
+

+ libGLESv1_CM.so +

+
+

+ is the Mesa OpenGL + ES 1.1 library +

+
+

+ libGLES2.so +

+
+

+ is the Mesa OpenGL + ES 2.0 library +

+
+

+ libGL.so +

+
+

+ is the main Mesa + OpenGL library +

+
+

+ libxatracker.so +

+
+

+ is the XA state tracker for the VMWare vmwgfx + driver +

+
+
+
+
+
+
+
+

+ xbitmaps-1.1.3 +

+
+
+
+
+
+

+ Introduction to xbitmaps +

+

+ The xbitmaps package + contains bitmap images used by multiple applications built in + Xorg chapter. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xbitmaps Dependencies +

+
+ Required +
+

+ util-macros-1.20.2 +

+
+
+

+ Installation of xbitmaps +

+

+ Install xbitmaps by running + the following commands: +

+
./configure $XORG_CONFIG
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + $XORG_PREFIX/include/X11/bitmaps +
+
+
+
+
+
+
+
+

+ Xorg Applications +

+
+
+
+
+
+

+ Introduction to Xorg Applications +

+

+ The Xorg applications + provide the expected applications available in previous X + Window implementations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.x.org/pub/individual/app/ +

    +
  • +
  • +

    + Download size: 4.9 MB +

    +
  • +
  • +

    + Estimated disk space required: 48 MB +

    +
  • +
  • +

    + Estimated build time: 1.5 SBU (ignoring the time to + download) +

    +
  • +
+
+

+ Xorg + Applications Dependencies +

+
+ Required +
+

+ libpng-1.6.50, Mesa-25.1.8, xbitmaps-1.1.3, + and xcb-util-0.4.1 +

+
+ Optional +
+

+ Linux-PAM-1.7.1 and both cairo-5c and + Nickle (only + if you wish to try to run the undocumented xkeyhost script). +

+
+
+

+ Downloading Xorg Applications +

+

+ First, create a list of files to be downloaded. This file + will also be used to verify the integrity of the downloads + when complete: +

+
cat > app-7.md5 << "EOF"
+30f898d71a7d8e817302970f1976198c  iceauth-1.0.10.tar.xz
+7dcf5f702781bdd4aaff02e963a56270  mkfontscale-1.2.3.tar.xz
+b9efe1d21615c474b22439d41981beef  sessreg-1.1.4.tar.xz
+1d61c9f4a3d1486eff575bf233e5776c  setxkbmap-1.3.4.tar.xz
+6484cd8ee30354aaaf8f490988f5f6ef  smproxy-1.0.8.tar.xz
+bf7b5a94561c7c98de447ea53afabfc4  xauth-1.1.4.tar.xz
+37063ccf902fe3d55a90f387ed62fe1f  xcmsdb-1.0.7.tar.xz
+f97e81b2c063f6ae9b18d4b4be7543f6  xcursorgen-1.0.9.tar.xz
+700556957773d378fa16a65a4406be0a  xdpyinfo-1.4.0.tar.xz
+830a54ef3ba338013e06a1b5b012b4bd  xdriinfo-1.0.8.tar.xz
+f29d1544f8dd126a1b85e2f7f728672d  xev-1.2.6.tar.xz
+687e42aa5afaec37f14da3072651c635  xgamma-1.0.8.tar.xz
+45c7e956941194e5f06a9c7307f5f971  xhost-1.0.10.tar.xz
+8e4d14823b7cbefe1581c398c6ab0035  xinput-1.6.4.tar.xz
+83d711948de9ccac550d2f4af50e94c3  xkbcomp-1.4.7.tar.xz
+543c0535367ca30e0b0dbcfa90fefdf9  xkbevd-1.1.6.tar.xz
+07483ddfe1d83c197df792650583ff20  xkbutils-1.0.6.tar.xz
+f62b99839249ce9a7a8bb71a5bab6f9d  xkill-1.0.6.tar.xz
+da5b7a39702841281e1d86b7349a03ba  xlsatoms-1.1.4.tar.xz
+ab4b3c47e848ba8c3e47c021230ab23a  xlsclients-1.1.5.tar.xz
+ba2dd3db3361e374fefe2b1c797c46eb  xmessage-1.0.7.tar.xz
+0d66e07595ea083871048c4b805d8b13  xmodmap-1.0.11.tar.xz
+ab6c9d17eb1940afcfb80a72319270ae  xpr-1.2.0.tar.xz
+5ef4784b406d11bed0fdf07cc6fba16c  xprop-1.2.8.tar.xz
+dc7680201afe6de0966c76d304159bda  xrandr-1.5.3.tar.xz
+c8629d5a0bc878d10ac49e1b290bf453  xrdb-1.2.2.tar.xz
+55003733ef417db8fafce588ca74d584  xrefresh-1.1.0.tar.xz
+18ff5cdff59015722431d568a5c0bad2  xset-1.2.5.tar.xz
+fa9a24fe5b1725c52a4566a62dd0a50d  xsetroot-1.1.3.tar.xz
+d698862e9cad153c5fefca6eee964685  xvinfo-1.1.5.tar.xz
+b0081fb92ae56510958024242ed1bc23  xwd-1.0.9.tar.xz
+c91201bc1eb5e7b38933be8d0f7f16a8  xwininfo-1.1.6.tar.xz
+3e741db39b58be4fef705e251947993d  xwud-1.0.7.tar.xz
+EOF
+

+ To download the needed files using Wget-1.25.0, use the + following commands: +

+
mkdir app &&
+cd app &&
+grep -v '^#' ../app-7.md5 | awk '{print $2}' | wget -i- -c \
+    -B https://www.x.org/pub/individual/app/ &&
+md5sum -c ../app-7.md5
+
+
+

+ Installation of Xorg Applications +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
for package in $(grep -v '^#' ../app-7.md5 | awk '{print $2}')
+do
+  packagedir=${package%.tar.?z*}
+  tar -xf $package
+  pushd $packagedir
+     ./configure $XORG_CONFIG
+     make
+     as_root make install
+  popd
+  rm -rf $packagedir
+done
+

+ Finally, exit the shell that was started earlier: +

+
exit
+

+ Unless you installed the optional dependencies, remove an + undocumented script which is reported to be broken + (xkeystone + provided by the xrandr + package). +

+
as_root rm -f $XORG_PREFIX/bin/xkeystone
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + iceauth, mkfontdir, mkfontscale, + sessreg, setxkbmap, smproxy, xauth, xcmsdb, xcursorgen, + xdpr, xdpyinfo, xdriinfo, xev, xgamma, xhost, xinput, + xkbbell, xkbcomp, xkbevd, xkbvleds, xkbwatch, xkill, + xlsatoms, xlsclients, xmessage, xmodmap, xpr, xprop, + xrandr, xrdb, xrefresh, xset, xsetroot, xvinfo, xwd, + xwininfo, and xwud +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ iceauth +

+
+

+ is the ICE authority file utility +

+
+

+ mkfontdir +

+
+

+ creates an index of X font files in a directory +

+
+

+ mkfontscale +

+
+

+ creates an index of scalable font files for X +

+
+

+ sessreg +

+
+

+ manages utmp/wtmp entries for non-init clients +

+
+

+ setxkbmap +

+
+

+ sets the keyboard using the X Keyboard Extension +

+
+

+ smproxy +

+
+

+ is the Session Manager Proxy +

+
+

+ xauth +

+
+

+ is the X authority file utility +

+
+

+ xcmsdb +

+
+

+ is the Device Color Characterization utility for + the X Color Management System +

+
+

+ xcursorgen +

+
+

+ creates an X cursor file from a collection of PNG + images +

+
+

+ xdpr +

+
+

+ dumps an X window directly to a printer +

+
+

+ xdpyinfo +

+
+

+ is a display information utility for X +

+
+

+ xdriinfo +

+
+

+ queries configuration information of DRI drivers +

+
+

+ xev +

+
+

+ prints contents of X events +

+
+

+ xgamma +

+
+

+ alters a monitor's gamma correction through the X + server +

+
+

+ xhost +

+
+

+ is a server access control program for X +

+
+

+ xinput +

+
+

+ is a utility to configure and test X input devices +

+
+

+ xkbbell +

+
+

+ is an XKB utility program that raises a bell event +

+
+

+ xkbcomp +

+
+

+ compiles an XKB keyboard description +

+
+

+ xkbevd +

+
+

+ is the XKB event daemon +

+
+

+ xkbvleds +

+
+

+ shows the XKB status of keyboard LEDs +

+
+

+ xkbwatch +

+
+

+ monitors modifier keys and LEDs +

+
+

+ xkill +

+
+

+ kills a client by its X resource +

+
+

+ xlsatoms +

+
+

+ lists interned atoms defined on the server +

+
+

+ xlsclients +

+
+

+ lists client applications running on a display +

+
+

+ xmessage +

+
+

+ displays a message or query in a window +

+
+

+ xmodmap +

+
+

+ is a utility for modifying keymaps and pointer + button mappings in X +

+
+

+ xpr +

+
+

+ prints an X window dump +

+
+

+ xprop +

+
+

+ is a property displayer for X +

+
+

+ xrandr +

+
+

+ is a primitive command line interface to RandR + extension +

+
+

+ xrdb +

+
+

+ is the X server resource database utility +

+
+

+ xrefresh +

+
+

+ refreshes all or part of an X screen +

+
+

+ xset +

+
+

+ is the user preference utility for X +

+
+

+ xsetroot +

+
+

+ is the root window parameter setting utility for X +

+
+

+ xvinfo +

+
+

+ prints out X-Video extension adaptor information +

+
+

+ xwd +

+
+

+ dumps an image of an X window +

+
+

+ xwininfo +

+
+

+ is a window information utility for X +

+
+

+ xwud +

+
+

+ is an image displayer for X +

+
+
+
+
+
+
+
+

+ luit-20240910 +

+
+
+
+
+
+

+ Introduction to luit +

+

+ The luit package is a filter + that can be run between an arbitrary application and a UTF-8 + terminal emulator. It will convert application output from + the locale’s encoding into UTF‐8, and convert terminal input + from UTF‐8 into the locale’s encoding. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ luit + Dependencies +

+
+ Required +
+

+ Xorg Applications +

+
+
+

+ Installation of luit +

+

+ Install luit by running the + following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + luit +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+
+
+
+
+

+ xcursor-themes-1.0.7 +

+
+
+
+
+
+

+ Introduction to xcursor-themes +

+

+ The xcursor-themes package + contains the redglass and whiteglass animated cursor themes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xcursor-themes Dependencies +

+
+ Required +
+

+ Xorg Applications +

+
+
+

+ Installation of xcursor-themes +

+
+

+ Note +

+

+ We explicitly install the cursor themes in /usr instead of + $XORG_PREFIX so non-Xorg desktop + environments can find them. +

+
+

+ Install xcursor-themes by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/icons/handhelds, + /usr/share/icons/redglass, and + /usr/share/icons/whiteglass +
+
+
+
+
+
+
+
+

+ Xorg Fonts +

+
+
+
+
+
+

+ Introduction to Xorg Fonts +

+

+ The Xorg font packages + provide some scalable fonts and supporting packages for + Xorg applications. Many + people will want to install other TTF or OTF fonts in + addition to, or instead of, these. Some are listed at + the section called “TTF and OTF + fonts”. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xorg + Fonts Dependencies +

+
+ Required +
+

+ xcursor-themes-1.0.7 +

+
+
+

+ Downloading Xorg Fonts +

+

+ First, create a list of files to be downloaded. This file + will also be used to verify the integrity of the downloads + when complete: +

+
cat > font-7.md5 << "EOF"
+a6541d12ceba004c0c1e3df900324642  font-util-1.4.1.tar.xz
+a56b1a7f2c14173f71f010225fa131f1  encodings-1.1.0.tar.xz
+79f4c023e27d1db1dfd90d041ce89835  font-alias-1.0.5.tar.xz
+546d17feab30d4e3abcf332b454f58ed  font-adobe-utopia-type1-1.0.5.tar.xz
+063bfa1456c8a68208bf96a33f472bb1  font-bh-ttf-1.0.4.tar.xz
+51a17c981275439b85e15430a3d711ee  font-bh-type1-1.0.4.tar.xz
+00f64a84b6c9886040241e081347a853  font-ibm-type1-1.0.4.tar.xz
+fe972eaf13176fa9aa7e74a12ecc801a  font-misc-ethiopic-1.0.5.tar.xz
+3b47fed2c032af3a32aad9acc1d25150  font-xfree86-type1-1.0.5.tar.xz
+EOF
+

+ To download the needed files using Wget-1.25.0, use the + following commands: +

+
mkdir font &&
+cd font &&
+grep -v '^#' ../font-7.md5 | awk '{print $2}' | wget -i- -c \
+    -B https://www.x.org/pub/individual/font/ &&
+md5sum -c ../font-7.md5
+
+
+

+ Installation of Xorg Fonts +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
for package in $(grep -v '^#' ../font-7.md5 | awk '{print $2}')
+do
+  packagedir=${package%.tar.?z*}
+  tar -xf $package
+  pushd $packagedir
+    ./configure $XORG_CONFIG
+    make
+    as_root make install
+  popd
+  as_root rm -rf $packagedir
+done
+

+ Finally, exit the shell that was started earlier: +

+
exit
+

+ When all of the fonts have been installed, the system must be + configured so that Fontconfig can find the TrueType fonts. + Since the fonts are outside of the default search path of + several packages if XORG_PREFIX is not /usr, make symlinks to the + Xorg TrueType font + directories in /usr/share/fonts + by running the following commands as the root user: +

+
install -v -d -m755 /usr/share/fonts                               &&
+ln -svfn $XORG_PREFIX/share/fonts/X11/OTF /usr/share/fonts/X11-OTF &&
+ln -svfn $XORG_PREFIX/share/fonts/X11/TTF /usr/share/fonts/X11-TTF
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bdftruncate and ucs2any +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $XORG_PREFIX/share/fonts +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ bdftruncate +

+
+

+ generates a truncated BDF font from an ISO 10646-1 + encoded BDF font +

+
+

+ ucs2any +

+
+

+ generates BDF fonts in any encoding from an ISO + 10646-1 encoded BDF font +

+
+
+
+
+
+
+
+

+ XKeyboardConfig-2.45 +

+
+
+
+
+
+

+ Introduction to XKeyboardConfig +

+

+ The XKeyboardConfig package + contains the keyboard configuration database for the X Window + System. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ XKeyboardConfig Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Optional (required for tests) +
+

+ libxkbcommon-1.11.0, pytest-8.4.1, + and Xorg Applications +

+
+
+

+ Installation of XKeyboardConfig +

+

+ Install XKeyboardConfig by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=$XORG_PREFIX --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+
+

+ Important +

+

+ If upgrading from version 2.44 or earlier, the installation + will fail if some files are not symbolic links. To fix + this, run as the root user: +

+
if [ -d $XORG_PREFIX/share/X11/xkb ]; then
+  rm -rf $XORG_PREFIX/share/X11/xkb
+  rm -f  $XORG_PREFIX/share/man/man7/xkeyboard-config.7
+  rm -f  $XORG_PREFIX/share/pkgconfig/xkeyboard-config.pc
+fi
+
+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + $XORG_PREFIX/share/X11/xkb +
+
+
+
+
+
+
+
+

+ Xwayland-24.1.8 +

+
+
+
+
+
+

+ Introduction to Xwayland +

+

+ The Xwayland package is an + Xorg server running on top of the wayland server. It has been + separated from the main Xorg server package. It allows + running X clients inside a wayland session. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://www.x.org/pub/individual/xserver/xwayland-24.1.8.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 1644a66e2843a400885e90051094b582 +

    +
  • +
  • +

    + Download size: 1.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 28 MB (add 362 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with parallelism=4; add + 1.7 SBU for tests, not including clone time) +

    +
  • +
+
+

+ Xwayland Dependencies +

+
+ Required +
+

+ libxcvt-0.1.3, Pixman-0.46.4, wayland-protocols-1.45, + Xorg Applications (runtime), and + Xorg + Fonts (only font-util) +

+
+ Recommended +
+ +
+ Optional +
+

+ git-2.50.1 + (to download packages needed for the tests), libei-1.4.1, libgcrypt-1.11.2, Nettle-3.10.2, + xmlto-0.0.29, Xorg Legacy Fonts + (only bdftopcf, for building fonts required for the tests), + rendercheck + (for tests), and weston + (for tests) +

+
+
+

+ Installation of Xwayland +

+

+ Install xwayland by running + the following commands: +

+
sed -i '/install_man/,$d' meson.build &&
+
+mkdir build &&
+cd    build &&
+
+meson setup ..              \
+      --prefix=$XORG_PREFIX \
+      --buildtype=release   \
+      -D xkb_output_dir=/var/lib/xkb &&
+ninja
+

+ Building the test framework needs some work. First, weston + brings in several dependencies, but the number can be reduced + by disabling unneeded features. The meson command for a + stripped down build of weston is shown in + Upstream continuous integration build. +

+

+ Running the tests involves downloading two other frameworks, + in addition to the mentioned optional dependencies: +

+
mkdir tools &&
+pushd tools &&
+
+git clone https://gitlab.freedesktop.org/mesa/piglit.git --depth 1 &&
+cat > piglit/piglit.conf << EOF                                    &&
+[xts]
+path=$(pwd)/xts
+EOF
+
+git clone https://gitlab.freedesktop.org/xorg/test/xts --depth 1   &&
+
+export DISPLAY=:22           &&
+../hw/vfb/Xvfb $DISPLAY &
+VFB_PID=$!                   &&
+cd xts                       &&
+CFLAGS=-fcommon ./autogen.sh &&
+make                         &&
+kill $VFB_PID                &&
+unset DISPLAY VFB_PID        &&
+popd
+

+ Then the tests can be run with: +

+
XTEST_DIR=$(pwd)/tools/xts PIGLIT_DIR=$(pwd)/tools/piglit ninja test
+

+ Now, as the root user: +

+
ninja install &&
+cat >> /etc/sysconfig/createfiles << "EOF"
+/tmp/.X11-unix dir 1777 root root
+EOF
+

+ If Xorg-Server-21.1.18 is not + installed and you do not plan to install it later, you can + install Xvfb + from this package. As the root user: +

+
install -vm755 hw/vfb/Xvfb /usr/bin
+
+
+

+ Command Explanations +

+

+ sed -i '/install_man/,$d' + meson.build: Prevents installing a manual + page for Xserver, which is also + provided by Xorg-Server-21.1.18. Remove this + command if Xorg-Server-21.1.18 is not + installed and you don't plan to install it later. +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D secure-rpc=false: This option + disables building RPC support if libtirpc-1.3.6 is not + installed. +

+

+ cat >> + /etc/sysconfig/createfiles...: This command + creates the /tmp/.X11-unix + directory at startup, and ensures that the permissions and + ownership are correct as required by applications using + Xwayland. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + Xwayland +
+
+ Installed Library: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ Xwayland +

+
+

+ Allows X clients to run under wayland +

+
+
+
+
+
+
+
+

+ Xorg-Server-21.1.18 +

+
+
+
+
+
+

+ Introduction to Xorg Server +

+

+ The Xorg Server is the core + of the X Window system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+
    +
  • +

    + With the removal of the xf86-video-* drivers, the + TearFree option is no longer functional. To work around + this, upstream has added the TearFree option to the + default modesetting driver. This patch backports this + feature. Apply this patch if you are going to use Xorg + in an environment without a compositor (such as TWM, + IceWM, Openbox, or Fluxbox). +

    +

    + Optional patch: + https://www.linuxfromscratch.org/patches/blfs/12.4/xorg-server-21.1.18-tearfree_backport-1.patch +

    +
  • +
+
+

+ Xorg + Server Dependencies +

+
+ Required +
+

+ libxcvt-0.1.3, Pixman-0.46.4, Xorg Fonts + (only font-util), and at runtime: xkeyboard-config-2.45 +

+
+ Recommended +
+ +
+

+ Note +

+

+ Although it's possible to build this + package without dbus-1.16.2 installed or run the + Xorg server without elogind-255.17 functioning, it + would require running the Xorg server as the root user or Xorg server will + malfunction or even fail to start. The BLFS editors + strongly discourage skipping these two + dependencies. Do not attempt to do so unless you + really know what you are doing. +

+
+
+ Optional +
+

+ acpid-2.0.34 (runtime), Doxygen-1.14.0 (to + build API documentation), fop-2.11 (to build documentation), libunwind-1.8.2, Nettle-3.10.2, libgcrypt-1.11.2, XCB Utilities + (to build Xephyr), xmlto-0.0.29 (to build documentation), + xkeyboard-config-2.45 (for tests), + rendercheck + (for tests), and xorg-sgml-doctools + (to build documentation) +

+
+
+

+ Kernel Configuration +

+

+ The traditional Device Dependent X (DDX) drivers have been + removed from BLFS in favor of the modesetting_drv driver which will be built + as a part of this package. To use the modesetting_drv driver, the kernel must + provide a Direct Rendering Manager (DRM) driver for your GPU. +

+

+ If your GPU supports 3D acceleration and Mesa-25.1.8 provides a + Gallium3D driver for utilizing its 3D capability, you should + have already enabled the necessary kernel configuration + options in Mesa Kernel Configuration. + Otherwise, you need to find the kernel configuration option + of the DRM driver for the GPU and enable it. Notably, the + virtual GPUs provided by some virtual machine managers: +

+
Device Drivers --->
+  Graphics support --->
+    <*/M>   Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    < /*/M> DRM driver for VMware Virtual GPU                       [DRM_VMWGFX]
+    < /*/M> DRM Support for bochs dispi vga interface (qemu stdvga)  [DRM_BOCHS]
+    < /*/M> Virtual Box Graphics Card                            [DRM_VBOXVIDEO]
+

+ If the kernel does not provide a DRM driver for your GPU, on + most x86 systems the “simple frame buffer” DRM driver running + on VESA or UEFI frame buffer can be used as a fallback. + Enable the following options in the kernel configurations if + you don't have a dedicated DRM driver for the GPU, or you + want to keep the simple frame buffer driver as a fallback in + case the dedicated driver fails: +

+
Device Drivers --->
+  Firmware Drivers --->
+    [*] Mark VGA/VBE/EFI FB as generic system framebuffer       [SYSFB_SIMPLEFB]
+  Graphics support --->
+    <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    Drivers for system framebuffers --->
+      <*> Simple framebuffer driver                              [DRM_SIMPLEDRM]
+

+ To allow the kernel to print debug messages at an early boot + stage, CONFIG_DRM and + CONFIG_DRM_SIMPLEDRM should not + be built as kernel modules unless an initramfs will be used. +

+

+ If you want to use the simple frame buffer driver on a system + booted via BIOS (instead of UEFI), add the following line + before the first menuentry block + in the /boot/grub/grub.cfg file + to initialize the VESA frame buffer: +

+
set gfxpayload=1024x768x32
+

+ You may replace 1024, + 768, and 32 with a resolution and color depth setting + suitable for your monitor. +

+

+ If all of these DRM drivers do not work for you and you need + to use a DDX driver with a non-DRM kernel GPU driver (usually + named CONFIG_FB_* in the kernel + configuration, or existing as out-tree kernel modules), or + you need an device specific functionality requiring a DDX + driver, consult + a prior version of BLFS, or + an even earlier prior version for more DDX drivers. +

+
+
+

+ Installation of Xorg Server +

+

+ First, if you need the TearFree option to work around screen + tearing, apply the backported patch: +

+
patch -Np1 -i ../xorg-server-21.1.18-tearfree_backport-1.patch
+

+ Install the server by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..               \
+      --prefix=$XORG_PREFIX  \
+      --localstatedir=/var   \
+      -D glamor=true         \
+      -D systemd_logind=true \
+      -D xkb_output_dir=/var/lib/xkb &&
+ninja
+

+ To test the results, issue: ninja test. You will need + to run ldconfig + as the root user first or + some tests may fail. +

+

+ Now as the root user: +

+
ninja install &&
+mkdir -pv /etc/X11/xorg.conf.d &&
+install -v -d -m1777 /tmp/.{ICE,X11}-unix &&
+cat >> /etc/sysconfig/createfiles << "EOF"
+/tmp/.ICE-unix dir 1777 root root
+/tmp/.X11-unix dir 1777 root root
+EOF
+
+
+

+ Command Explanations +

+

+ -D glamor=true: + Ensure building the Glamor module. It's needed to build the + modesetting_drv driver which + replaces the traditional Device Dependent X (DDX) drivers. +

+

+ -D secure-rpc=false: This option + disables building RPC support if libtirpc-1.3.6 is not + installed. +

+

+ -D + systemd_logind=true: This switch makes the + building system error out if dbus-1.16.2 is not installed. The + BLFS editors discourage building this package without + dbus-1.16.2 installed. +

+

+ -D suid_wrapper=true: Builds the + suid-root wrapper for legacy DDX driver support on rootless + xserver systems. +

+

+ cat >> + /etc/sysconfig/createfiles...: This command + creates the /tmp/.ICE-unix and + /tmp/.X11-unix directories at + startup, and ensures that the permissions and ownership are + correct as required by the server. +

+

+ -D xephyr=true: This option + allows building Xephyr if its dependencies are met. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gtf, X, Xnest, Xorg, Xvfb, and + optionally Xephyr +
+
+ Installed Libraries: + several under + $XORG_PREFIX/lib/xorg/modules/ including the modesetting_drv driver +
+
+ Installed Directories: + /etc/X11/xorg.conf.d, + $XORG_PREFIX/include/xorg, $XORG_PREFIX/lib/xorg, and + $XORG_PREFIX/share/X11/xorg.conf.d +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gtf +

+
+

+ calculates VESA GTF mode lines +

+
+

+ X +

+
+

+ is a symbolic link to Xorg +

+
+

+ Xephyr +

+
+

+ is a nested X server which supports modern X + extensions +

+
+

+ Xnest +

+
+

+ is a nested X server +

+
+

+ Xorg +

+
+

+ is the X11R7 X Server +

+
+

+ Xvfb +

+
+

+ is the virtual framebuffer X server for X Version + 11 +

+
+

+ modesetting_drv.so +

+
+

+ provides a video driver for machines using Kernel + Mode Setting (KMS). This will use glamor if that + has been enabled and the hardware offers + acceleration +

+
+
+
+
+
+
+
+

+ Xorg Input Drivers +

+
+
+
+
+
+

+ Introduction to Xorg Input Drivers +

+

+ The Xorg Input Drivers page + contains the instructions for building Xorg input drivers + that are necessary in order for Xorg Server to respond user + inputs. +

+
+
+
+
+

+ Xorg Input Drivers +

+
+
+
+ +
+
+
+

+ libevdev 1.13.4 +

+
+
+
+
+

+ Introduction to libevdev +

+
+
+
+

+ The libevdev package + contains common functions for Xorg input drivers. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ libevdev Dependencies +
+
+ Optional +
+

+ Doxygen-1.14.0, Valgrind-3.25.1 + (optional for tests), and check (required for + tests) +

+
+
+
+
+
+

+ Kernel Configuration +

+
+
+
+

+ Enable the following options in the kernel configuration + and recompile the kernel if necessary: +

+
Device Drivers --->
+  Input device support --->
+    -*-   Generic input layer (needed for keyboard, mouse, ...)          [INPUT]
+    <*/M>   Event interface                                        [INPUT_EVDEV]
+

+ If you want to test this package with full coverage, the + following options are needed as well: +

+
Device Drivers --->
+  Input device support --->
+    -*- Generic input layer (needed for keyboard, mouse, ...)            [INPUT]
+    [*]   Miscellaneous devices --->                                [INPUT_MISC]
+      <*/M>   User level driver support                           [INPUT_UINPUT]
+

+ If you build this as a module, it needs to be inserted + before the test suite runs. +

+
+
+
+
+
+

+ Installation of libevdev +

+
+
+
+

+ Install libevdev by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                  \
+      --prefix=$XORG_PREFIX     \
+      --buildtype=release       \
+      -D documentation=disabled \
+      -D tests=disabled         &&
+ninja
+

+ The test suite requires Check that we've removed from LFS. +

+

+ Now, as the root user: +

+
ninja install
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ -D tests=disabled: + This allows the package to compile if Check is not installed. We've removed + Check from LFS. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Xorg + Programs: libevdev-tweak-device, mouse-dpi-tool, and + touchpad-edge-detector +
+
+ Installed Xorg + Library: libevdev.so +
+
+ Installed Xorg + Directory: $XORG_PREFIX/include/libevdev-1.0 +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ libevdev-tweak-device +

+
+

+ is a tool to change some kernel device properties +

+
+

+ mouse-dpi-tool +

+
+

+ is a tool to estimate the resolution of a mouse +

+
+

+ touchpad-edge-detector +

+
+

+ touchpad-edge-detector is a tool that reads the + touchpad events from the kernel and calculates + the minimum and maximum for the x and y + coordinates, respectively +

+
+

+ libevdev.so +

+
+

+ is a library of Xorg driver input functions +

+
+
+
+
+
+

+ Xorg + Evdev Driver-2.11.0 +

+
+
+
+
+

+ Introduction to Xorg Evdev + Driver +

+
+
+
+

+ The Xorg Evdev Driver + package contains a Generic Linux input driver for the Xorg + X server. It handles keyboard, mouse, touchpads and wacom + devices, though for touchpad and wacom advanced handling, + additional drivers are required. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Xorg Evdev Driver Dependencies +
+
+ Required +
+

+ libevdev-1.13.4, mtdev-1.1.7, and + Xorg-Server-21.1.18 +

+
+
+
+
+
+

+ Installation of Xorg Evdev + Driver +

+
+
+
+

+ Install Xorg Evdev Driver + by running the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Xorg + Driver: evdev_drv.so +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ evdev_drv.so +

+
+

+ is an Xorg input driver for Linux generic event + devices +

+
+
+
+
+
+

+ libinput-1.29.0 +

+
+
+
+
+

+ Introduction to Libinput +

+
+
+
+

+ libinput is a library that + handles input devices for display servers and other + applications that need to directly deal with input devices. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ libinput Dependencies +
+
+ Required +
+

+ libevdev-1.13.4 and mtdev-1.1.7 +

+
+ Optional +
+

+ Valgrind-3.25.1 (to run the tests), + GTK-3.24.50 (to build the GUI event + viewer), libunwind-1.8.2 (required for tests), + libwacom-2.16.1, Doxygen-1.14.0, + Graphviz-13.1.2, recommonmark-0.7.1, and sphinx_rtd_theme-3.0.2 + (required to build documentation), pyparsing-3.2.3 + (for one non-root test), pytest-8.4.1 (for another non-root + test), and check (for another + non-root test) +

+
+
+
+
+
+

+ Kernel Configuration for + Running the Libinput Test Suite +

+
+
+
+

+ Although libinput works with the same kernel configuration + used by libevdev-1.13.4, its standard and + more expansive test suite requires the presence of + /dev/uinput (as well as both + Valgrind-3.25.1 and libunwind-1.8.2). +

+

+ If you wish to run the standard test suite, enable the + following option in the kernel configuration and recompile + the kernel if necessary: +

+
Device Drivers --->
+  Input device support --->
+    -*- Generic input layer (needed for keyboard, mouse, ...)            [INPUT]
+    [*]   Miscellaneous devices --->                                [INPUT_MISC]
+      <*/M>   User level driver support                           [INPUT_UINPUT]
+

+ If you build this as a module, it needs to be inserted + before the test suite runs. +

+
+
+
+
+
+

+ Installation of Libinput +

+
+
+
+

+ Install libinput by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..              \
+      --prefix=$XORG_PREFIX \
+      --buildtype=release   \
+      -D debug-gui=false    \
+      -D tests=false        \
+      -D libwacom=false     \
+      -D udev-dir=/usr/lib/udev &&
+ninja
+

+ To test the package, issue: meson configure -D tests=true && + ninja test. Many tests are skipped unless + running the test suite as the root user. To run those tests, as the + root user issue: + meson test + --suite=root. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you have passed -D + documentation=true to meson, you can install + the generated documentation by running the following + commands as the root user: +

+
install -v -dm755      /usr/share/doc/libinput-1.29.0/html &&
+cp -rv Documentation/* /usr/share/doc/libinput-1.29.0/html
+
+
+
+
+
+

+ Command Explanations +

+
+
+
+

+ --buildtype=release: Specify + a buildtype suitable for stable releases of the package, as + the default may produce unoptimized binaries. +

+

+ -D debug-gui=false: + This switch disables creation of a visual debug helper for + libinput. Remove if you want it, and you have GTK-3.24.50 + installed. +

+

+ -D tests=false: + This switch disables compilation of the standard test + suite. Even with the tests defined as false, you can still + run the first six minor tests as a regular user, but one + will be skipped if pyparsing-3.2.3 is not installed, and + another one if pytest-8.4.1 is not installed. +

+

+ -D libwacom=false: + Remove this option if you have libwacom-2.16.1 + installed, or if you are installing GNOME. +

+

+ -D + udev-dir=/usr/lib/udev: In case that the value + of XORG_PREFIX is not set to + /usr, this option prevents + the package from installing Udev rules and helpers into + $XORG_PREFIX/lib/udev which + is not searched by Udev daemon. This option is not needed + for systems with XORG_PREFIX set + to /usr, but does no harm. +

+

+ -D documentation=true: This + switch enables generation of the documentation. Add it if + you want to generate the documentation. See the optional + dependencies required to build documentation. +

+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + libinput +
+
+ Installed Libraries: + libinput.so +
+
+ Installed + Directories: /etc/libinput, $XORG_PREFIX/libexec/libinput, + $XORG_PREFIX/share/libinput, and (optionally) + $XORG_PREFIX/share/doc/libinput-1.29.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libinput +

+
+

+ is a set of tools to interface with the + libinput library +

+
+

+ libinput.so +

+
+

+ contains API functions for handling input devices +

+
+
+
+
+
+

+ Xorg Libinput Driver-1.5.0 +

+
+
+
+
+

+ Introduction to Xorg + Libinput Driver +

+
+
+
+

+ The X.Org Libinput Driver + is a thin wrapper around libinput and allows for libinput + to be used for input devices in X. This driver can be used + as drop-in replacement for evdev and synaptics. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Xorg Libinput Driver Dependencies +
+
+ Required +
+

+ libinput-1.29.0 and Xorg-Server-21.1.18 +

+
+
+
+
+
+

+ Installation of Xorg + Libinput Driver +

+
+
+
+

+ Install Xorg Libinput + Driver by running the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ To test the results, issue make check. +

+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Xorg + Driver: libinput_drv.so +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + +
+

+ libinput_drv.so +

+
+

+ is an Xorg input driver for mouse, keyboard, + touchpad, touchscreen, and tablet devices +

+
+
+
+
+
+

+ Xorg Synaptics Driver-1.10.0 +

+
+
+
+
+

+ Introduction to Xorg + Synaptics Driver +

+
+
+
+

+ The Xorg Synaptics Driver + package contains the X.Org Input Driver, support programs + and SDK for Synaptics touchpads. Even though the evdev + driver can handle touchpads very well, this driver is + required if you want to use advanced features like multi + tapping, scrolling with touchpad, turning the touchpad off + while typing, etc. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Xorg Synaptics Driver Dependencies +
+
+ Required +
+

+ libevdev-1.13.4 and Xorg-Server-21.1.18 +

+
+
+
+
+
+

+ Installation of Xorg + Synaptics Driver +

+
+
+
+

+ Install Xorg Synaptics + Driver by running the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + synclient and syndaemon +
+
+ Installed Xorg + Driver: synaptics_drv.so +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + + + + + +
+

+ synclient +

+
+

+ is a command line utility used to query and + modify Synaptics driver options +

+
+

+ syndaemon +

+
+

+ is a program that monitors keyboard activity and + disables the touchpad when the keyboard is being + used +

+
+

+ synaptics_drv.so +

+
+

+ is an Xorg input driver for touchpads +

+
+
+
+
+
+

+ Xorg + Wacom Driver-1.2.3 +

+
+
+
+
+

+ Introduction to Xorg Wacom + Driver +

+
+
+
+

+ The Xorg Wacom Driver + package contains the X.Org X11 driver and SDK for Wacom and + Wacom-like tablets. It is not required to use a Wacom + tablet, the xf86-input-evdev driver can handle + these devices without problems. +

+

+ This package is known to build and work properly using an + LFS 12.4 platform. +

+
+ Package Information +
+
+ +
+
+ Xorg Wacom Drivers Dependencies +
+
+ Required +
+

+ Xorg-Server-21.1.18 +

+
+ Optional +
+

+ Doxygen-1.14.0 and Graphviz-13.1.2 +

+
+
+
+
+
+

+ Kernel Configuration +

+
+
+
+

+ To use a Wacom tablet with USB interface, enable the + following options in your kernel configuration and + recompile. Note that other configuration options could be + required for tablet with a serial or bluetooth interface: +

+
Device Drivers --->
+  [*] HID bus support --->                                         [HID_SUPPORT]
+    {*/M} HID bus core support                                             [HID]
+      Special HID drivers --->
+      <*/M>   Wacom Intuos/Graphire tablet support (USB)             [HID_WACOM]
+    USB HID support --->
+      <*/M> USB HID transport layer                                    [USB_HID]
+  [*] USB support --->                                             [USB_SUPPORT]
+    <*/M> Support for Host-side USB                                        [USB]
+
+
+
+
+
+

+ Installation of Xorg Wacom + Driver +

+
+
+
+

+ Install Xorg Wacom Driver + by running the following commands: +

+
./configure $XORG_CONFIG --with-systemd-unit-dir=no &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ Contents +

+
+
+
+
+
+
+ Installed Programs: + isdv4-serial-debugger, + isdv4-serial-inputattach, and xsetwacom +
+
+ Installed Xorg + Driver: wacom_drv.so +
+
+
+
+
+ Short Descriptions +
+ + + + + + + + + + + + + + + +
+

+ xsetwacom +

+
+

+ is a commandline utility used to query and modify + wacom driver settings +

+
+

+ wacom_drv.so +

+
+

+ is an Xorg input driver for Wacom devices +

+
+
+
+
+
+
+
+
+

+ twm-1.0.13.1 +

+
+
+
+
+
+

+ Introduction to twm +

+

+ The twm package contains a + very minimal window manager. +

+

+ This package is provided for testing the completed Xorg + installation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ twm + Dependencies +

+
+ Required +
+

+ Xorg-Server-21.1.18 +

+
+
+

+ Installation of twm +

+

+ Install twm by running the + following commands: +

+
sed -i -e '/^rcdir =/s,^\(rcdir = \).*,\1/etc/X11/app-defaults,' src/Makefile.in &&
+./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -i -e '/^rcdir + =/s...: This command ensures the twm configuration file gets installed in + the proper location. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + twm +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /etc/X11/app-defaults +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ twm +

+
+

+ is the Tab Window Manager for the X Window System +

+
+
+
+
+
+
+
+

+ xterm-401 +

+
+
+
+
+
+

+ Introduction to xterm +

+

+ xterm is a terminal emulator + for the X Window System. +

+

+ This package is provided for testing the completed Xorg + installation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xterm Dependencies +

+
+ Required +
+

+ luit-20240910 +

+
+ Required (at runtime) +
+

+ A monospace TTF or OTF font such as Dejavu fonts +

+
+ Optional +
+

+ Emacs-30.2, pcre2-10.45, Valgrind-3.25.1 and + man2html +

+
+
+

+ Installation of xterm +

+

+ Install xterm by running the + following commands: +

+
sed -i '/v0/{n;s/new:/new:kb=^?:/}' termcap &&
+printf '\tkbs=\\177,\n' >> terminfo &&
+
+TERMINFO=/usr/share/terminfo \
+./configure $XORG_CONFIG     \
+            --with-app-defaults=/etc/X11/app-defaults &&
+
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+
+mkdir -pv /usr/share/applications &&
+cp -v *.desktop /usr/share/applications/
+
+
+

+ Command Explanations +

+

+ sed -i ... + termcap, printf + ... >> terminfo: These commands modify + the terminal description so that the Backspace key is + expected to send the character with ASCII code 127. This is + done for consistency with the Linux console. +

+

+ TERMINFO=/usr/share/terminfo: This + ensures that the xterm terminfo files are + installed to the system terminfo database. +

+

+ --with-app-defaults=...: Sets + the location for the app-defaults directory. +

+
+
+

+ Configuring xterm +

+

+ There are two ways to configure xterm. You can add the X + resource definitions to the user's ~/.Xresources file, or add them to the + system-wide $XORG_PREFIX/share/X11/app-defaults/Xterm + file. +

+

+ In order for xterm to follow the locale settings in the + environment, use TrueType fonts, and follow the Linux + convention about the code sent by the Backspace key, add the + following definitions as the root user: +

+
cat >> /etc/X11/app-defaults/XTerm << "EOF"
+*VT100*locale: true
+*VT100*faceName: Monospace
+*VT100*faceSize: 10
+*backarrowKeyIsErase: true
+*ptyInitialErase: true
+EOF
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + koi8rxterm, resize, uxterm, and + xterm +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ koi8rxterm +

+
+

+ is a wrapper script to set up xterm with a KOI8-R + locale +

+
+

+ resize +

+
+

+ prints a shell command for setting the TERM and + TERMCAP environment variables to indicate the + current size of xterm window +

+
+

+ uxterm +

+
+

+ is a wrapper script that modifies the current + locale to use UTF-8 and starts xterm with the + proper settings +

+
+

+ xterm +

+
+

+ is a terminal emulator for the X Window System +

+
+
+
+
+
+
+
+

+ xclock-1.1.1 +

+
+
+
+
+
+

+ Introduction to xclock +

+

+ The xclock package contains + a simple clock application which is used in the default xinit + configuration. +

+

+ This package is provided for testing the completed Xorg + installation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xclock Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+
+

+ Installation of xclock +

+

+ Install xclock by running + the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xclock +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xclock +

+
+

+ is an analog/digital clock for X +

+
+
+
+
+
+
+
+

+ xinit-1.4.4 +

+
+
+
+
+
+

+ Introduction to xinit +

+

+ The xinit package contains a + usable script to start the xserver. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xinit Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Recommended (runtime only) +
+ +
+
+

+ Installation of xinit +

+

+ Install xinit by running the + following commands: +

+
./configure $XORG_CONFIG --with-xinitdir=/etc/X11/app-defaults &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+ldconfig
+
+

+ Note +

+

+ If starting Xorg from the command line, the default + instructions above start Xorg on the current virtual + terminal. It may be convenient to see Xorg and associated + application messages on the current virtual terminal, + normally tty1, and start the graphical environment on the + first available unused virtual terminal, normally tty7. To + do this, set the suid bit on the Xorg application as the + root user: +

+
chmod u+s $XORG_PREFIX/bin/Xorg
+

+ At this point you can start Xorg on virtual terminal 7 with + startx <client + arguments> -- vt7. Now you can toggle + between tty1 and tty7 with the Ctrl-Alt-F1 and Ctrl-Alt-F7 + key combinations. +

+

+ To automatically start Xorg on the first available virtual + terminal, modify the startx script as the + root user with: +

+
sed -i '/$serverargs $vtarg/ s/serverargs/: #&/' $XORG_PREFIX/bin/startx
+

+ After this change, the virtual terminal does not need to be + specified on the startx command line. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xinit and startx +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ startx +

+
+

+ initializes an X session +

+
+

+ xinit +

+
+

+ is the X Window System initializer +

+
+
+
+
+
+
+
+

+ Xorg-7 Testing + and Configuration +

+
+
+
+
+
+

+ Testing Xorg +

+
+

+ Note +

+

+ Before starting Xorg for the first time, is useful to + rebuild the library cache by running ldconfig as the + root user. +

+
+
+

+ Note +

+

+ Before starting Xorg for the first time, is often needed to + reboot the system to ensure all appropriate daemons are + started and appropriate security issues are properly set. + As an alternative, logging out and logging back in may + work, but as of this writing has not been tested. +

+
+
+

+ Warning +

+

+ If Xorg hangs for some reason (for example, lacking a + proper input driver), the system may stop responding to any + user input. As a precaution, you can enable a magic + SysRq key + before testing Xorg. As the root user, issue: +

+
echo 4 > /proc/sys/kernel/sysrq
+

+ Then if Xorg hangs, it's possible to use Alt+SysRq+R to reset the keyboard + mode. Now it should be able to use Ctrl+Alt+Fx (replace x with a VT + number) to switch to another VT. If it works, login and + kill Xorg using command line in the new VT. +

+
+

+ To test the Xorg + installation, issue startx. This command brings + up a rudimentary window manager called twm with three xterm windows and + one xclock window. The xterm window in the upper left is a + login terminal and running exit from this terminal will exit + the X Window session. The + third xterm window may be obscured on your system by the + other two xterms. +

+
+

+ Note +

+

+ When testing Xorg with the + twm window manager, there + will be several warnings in the Xorg log file, + $HOME/.local/share/xorg/Xorg.0.log, about missing font + files. In addition, there will be several warnings on the + text mode terminal (usually tty1) about missing fonts. + These warnings do not affect functionality, but can be + removed if desired by installing the Xorg Legacy Fonts. +

+
+
+

+ Note +

+

+ On systems with NVIDIA GPUs which are using the Nouveau + kernel driver, you may encounter occasional GPU crashes and + hangs. If this problem occurs, downgrade to the latest + version of the Linux 6.1 kernel. +

+
+

+ Generally, there is no specific configuration required for + Xorg, but customization is + possible. For details, see the section called “Setting + up Xorg Devices” below. +

+
+
+

+ Checking the + Direct Rendering Infrastructure (DRI) Installation +

+

+ DRI is a framework for allowing software to access graphics + hardware in a safe and efficient manner. It is installed in + X by default (using + Mesa) if you have a + supported video card. +

+

+ To check if DRI drivers are installed properly, check the log + file $HOME/.local/share/xorg/Xorg.0.log (or + /var/log/Xorg.0.log if you have + built Xorg-Server-21.1.18 with the suid + bit) for statements such as: +

+
(II) modeset(0): [DRI2] Setup complete
+(II) modeset(0): [DRI2]   DRI driver: crocus
+(II) modeset(0): [DRI2]   VDPAU driver: va_gl
+
+

+ Note +

+

+ DRI configuration may differ if you are using alternate + drivers, such as traditional DDX drivers, or the + proprietary drivers from NVIDIA or + AMD. +

+
+

+ Another way to determine if DRI is working properly is to use + one of the two optionally installed OpenGL demo programs in + Mesa-25.1.8. From an X terminal, run + glxinfo -B and + look for the phrase: +

+
name of display: :0
+display: :0  screen: 0
+direct rendering: Yes
+

+ If direct rendering is enabled, you can add verbosity by + running LIBGL_DEBUG=verbose + glxinfo. This will show the drivers, device + nodes and files used by the DRI system. +

+

+ To confirm that DRI2 hardware acceleration is working, you + can (still in the X terminal) run the command glxinfo | grep -E "(OpenGL vendor|OpenGL + renderer|OpenGL version)". If that reports + something other than + Software Rasterizer then you + have working acceleration for the user who ran the command. +

+

+ If your hardware does not have any DRI2 driver available, it + will use a Software Rasterizer for Direct Rendering. In such + cases, you can use a new, LLVM-accelerated, Software + Rasterizer called LLVMPipe. In order to build LLVMPipe just + make sure that LLVM-20.1.8 is present at Mesa build time. + Note that all decoding is done on the CPU instead of the GPU, + so the display will run slower than with hardware + acceleration. To check if you are using LLVMpipe, review the + output of the glxinfo command above. An example of the output + using the Software Rasterizer is shown below: +

+
OpenGL vendor string: VMware, Inc.
+OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.5, 256 bits)
+OpenGL version string: 3.0 Mesa 10.4.5
+

+ You can also force LLVMPipe by exporting the LIBGL_ALWAYS_SOFTWARE=1 environment variable + when starting Xorg. +

+

+ Again, if you have built the Mesa OpenGL demos, you can also + run the test program glxgears. This program + brings up a window with three gears turning. The X terminal + will display how many frames were drawn every five seconds, + so this will give a rough benchmark. The window is scalable, + and the frames drawn per second is highly dependent on the + size of the window. On some hardware, glxgears will run + synchronized with the vertical refresh signal and the frame + rate will be approximately the same as the monitor refresh + rate. +

+
+
+

+ Debugging Xorg +

+

+ When starting xorg, there are a couple of ways to check what + any issues you may have. If the system comes up, you can see + what driver is being used by running xdriinfo. If there are + issues or you just want to check, look at Xorg.0.log. +

+

+ The location of Xorg.0.log + depends on how Xorg is installed. If the instructions in the + book are followed closely and Xorg is started from the + command line, it will be located in the $HOME/.local/share/xorg/ directory. If Xorg + is started by a display manager (e.g. lightdm-1.32.0, + sddm-0.21.0, or GDM-48.0) or if $XORG_PREFIX/bin/Xorg has the suid bit set, + it will be located in the /var/log/ directory. +

+

+ Xorg.0.log Issues +

+

+ When you look at Xorg.0.log, check for entries like (EE) or + (WW). Below are some common entries: +

+
+ (WW) + Open ACPI failed (/var/run/acpid.socket) +
+

+ This warning is because acpid-2.0.34 is not installed. If you are + not on a laptop, it can be safely ignored. On a laptop, + install acpid-2.0.34 to enable actions like + recognizing when the lid is closed. +

+
+ (WW) + VGA arbiter: cannot open kernel arbiter, no multi-card + support +
+

+ This warning is displayed when a regular user starts Xorg. + The library libpciaccess.so + issues this warning when it tries to open /dev/vga_arbiter. If there is no more than + one legacy PCI (not PCIe) graphic cards on the system, it can + safely be ignored. If really necessary, the permissions of + this device can be changed by adding a udev rule and adding + the local user to the video group. As the root user: +

+
cat > /etc/udev/rules.d/99-vga-arbiter.rules << EOF
+# /etc/udev/rules.d/99-vga-arbiter.rules: Set vga_arbiter group/mode
+
+ACTION=="add", KERNEL=="vga_arbiter", GROUP="video" MODE="0660"
+EOF
+
+usermod -a -G video <user running xorg>
+
+
+

+ Hybrid + Graphics +

+

+ Hybrid Graphics is still in experimental state for Linux. + Xorg Developers have developed a technology called PRIME that + can be used for switching between integrated and muxless + discrete GPU at will. Automatic switching is not possible at + the moment. +

+

+ In order to use PRIME for GPU switching, make sure that you + are using Linux Kernel 3.4 or later (recommended). You will + need latest DRI and DDX drivers for your hardware and + Xorg Server 1.13 or later. +

+

+ Xorg Server should load both + GPU drivers automatically. You can check that by running: +

+
xrandr --listproviders
+

+ There should be two (or more) providers listed, for example: +

+
Providers: number : 2
+Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:modesetting
+Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:modesetting
+

+ In order to be able to run a GLX application on a discrete + GPU, you will need to run the following command, where + <provider> is the id of the more powerful discrete + card, and <sink> is the id of card which has a display + connected: +

+
xrandr --setprovideroffloadsink <provider> <sink>
+
+

+ Note +

+

+ With the Xorg modesetting + driver, which is DRI3 capable, the above command is no + longer necessary. It does no harm however. +

+
+

+ Then, you will need to export the DRI_PRIME=1 environment variable each time you + want the powerful GPU to be used. For example, +

+
DRI_PRIME=1 glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)"
+

+ will show OpenGL vendor, renderer and version for the + discrete GPU. +

+

+ If the last command reports same OpenGL renderer with and + without DRI_PRIME=1, you will need + to check your installation. +

+
+
+

+ Setting up Xorg Devices +

+

+ For most hardware configurations, modern Xorg will + automatically get the server configuration correct without + any user intervention. There are, however, some cases where + auto-configuration will be incorrect. Following are some + example manual configuration items that may be of use in + these instances. +

+
+
+
+
+

+ Setting up X Input + Devices +

+
+
+
+

+ For most input devices, no additional configuration will be + necessary. This section is provided for informational + purposes only. +

+

+ A sample default XKB setup could look like the following + (executed as the root + user): +

+
cat > /etc/X11/xorg.conf.d/xkb-defaults.conf << "EOF"
+Section "InputClass"
+    Identifier "XKB Defaults"
+    MatchIsKeyboard "yes"
+    Option "XkbLayout" "fr"
+    Option "XkbOptions" "terminate:ctrl_alt_bksp"
+EndSection
+EOF
+

+ The “XkbLayout” line is an example for a + French (AZERTY) keyboard. Change it to your keyboard model. + That line is not needed for a QWERTY (US) keyboard. +

+
+
+
+
+
+

+ Fine Tuning + Display Settings +

+
+
+
+

+ If you want to set the monitor resolution for Xorg, first + run xrandr in + a X terminal to list the supported resolutions and the + corresponding refresh rates. For example, it outputs the + following for one monitor: +

+
Screen 0: minimum 16 x 16, current 5760 x 2160, maximum 32767 x 32767
+DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
+   3840x2160     59.98*+
+   2048x1536     59.95
+   1920x1440     59.90
+   1600x1200     59.87
+   1440x1080     59.99
+   1400x1050     59.98
+   1280x1024     59.89
+   1280x960      59.94
+   1152x864      59.96
+   1024x768      59.92
+   800x600       59.86
+   640x480       59.38
+

+ From the output we can see the monitor is identified + DP-1. Select a suitable + resolution from the output list, for example 1920x1440. Then as the root user, create a configuration file + for the Xorg server: +

+
cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
+Section "Monitor"
+    Identifier  "DP-1"
+    Option      "PreferredMode" "1920x1440"
+EndSection
+EOF
+

+ Sometimes xrandr may fail to detect + some resolution settings supported by the monitor. It + usually happens with virtual monitors of virtual machine + managers like qemu-10.0.3 or VMWare: a virtual monitor + actually supports all pairs of integers in a range as the + resolution, but xrandr will only list a + few. To use a resolution not listed by xrandr, first run + cvt to get + the mode line for the resolution. For example: +

+
cvt 1600 900
+# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
+Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
+

+ As the root user, create a + Xorg server configuration file containing this mode line, + and specify the mode as preferred mode: +

+
cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
+Section "Monitor"
+    Identifier  "DP-1"
+    Modeline    "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
+    Option      "PreferredMode"   "1600x900_60.00"
+EndSection
+EOF
+

+ Some high-end LCD monitors support a refresh rate higher + than 100 Hz but xrandr may fail to + recognize the supported refresh rate and use 60 Hz instead. + This issue would prevent you from utilizing the full + capability of the monitor, and may cause the screen to + flicker or show “artifacts” like meshes or grids. To + resolve the issue, again use cvt to get the mode line + with a custom refresh rate: +

+
cvt 3840 2160 144
+# 3840x2160 143.94 Hz (CVT) hsync: 338.25 kHz; pclk: 1829.25 MHz
+Modeline "3840x2160_144.00"  1829.25  3840 4200 4624 5408  2160 2163 2168 2350 -hsync +vsync
+

+ Then paste it into the Xorg server configuration file and + set it as the preferred mode. +

+

+ Another common setup is having multiple server layouts for + use in different environments. Though the server will + automatically detect the presence of another monitor, it + may get the order incorrect: +

+
cat > /etc/X11/xorg.conf.d/server-layout.conf << "EOF"
+Section "ServerLayout"
+    Identifier     "DefaultLayout"
+    Screen      0  "Screen0" 0 0
+    Screen      1  "Screen1" LeftOf "Screen0"
+    Option         "Xinerama"
+EndSection
+EOF
+

+ When you drag a window in twm (or any non-compositing + window manager) horizontally, you may observe that the + vertical borders of the window are broken into multiple + segments. This is an example of the visual artifacts called + screen tearing. To + resolve the screen tearing problems, create a configuration + file that enables the TearFree option. Note that you must + have the Tearfree patch applied from Xorg-Server-21.1.18 for this to + function properly, and it may increase memory allocation + and reduce performance. +

+
cat > /etc/X11/xorg.conf.d/20-tearfree.conf << "EOF"
+Section "Device"
+   Identifier "Graphics Adapter"
+   Driver     "modesetting"
+   Option     "TearFree" "true"
+EndSection
+EOF
+

+ With modern Xorg, little or no additional graphic card + configuration is necessary. If you should need extra + options passed to your video driver, add them into the + Device section as well. The + options supported by the modesetting driver are documented + in the man page modesetting(4). +

+
+
+
+
+
+
+

+ Tuning Fontconfig +

+
+
+
+
+
+

+ Overview of Fontconfig +

+

+ If you only read text in English, and are happy with the + common libre fonts listed on the next page, you may never + need to worry about the details of how Fontconfig works. But there are many + things which can be altered if they do not suit your needs. +

+

+ However, before spending a long time trying out different + settings please be aware that modern applications and desktop + environments may ignore the settings of fontconfig - see + Items which can + override Fontconfig. +

+

+ Although this page is long, it barely scratches the surface + and you will be able to find many alternative views on the + web (but please remember that some things have changed over + the years, for example the autohinter is no longer the + default). The aim here is to give you enough information to + understand the changes you are making, why they may not + always work, and to identify online information which is + no-longer appropriate. +

+

+ Unfortunately, some of the terminology is ambiguous (e.g. + 'font face' can mean a name known to Fontconfig, or the ordinary, condensed, etc + variations of a font) and 'style' can be used to + differentiate 'ordinary' from 'italic', or in describing some + classes of Serif fonts. +

+

+ The following links are to assist navigation in this page. +

+ +
+
+

+ The + Xft Font Protocol +

+

+ The Xft font protocol provides antialiased font rendering + through freetype, and fonts + are controlled from the client side using Fontconfig (except for rxvt-unicode-9.31 which can use fonts + listed in ~/.Xresources) The + default search path is /usr/share/fonts and ~/.local/share/fonts, although for the + moment the old and deprecated location ~/.fonts still works. Fontconfig searches directories in its + path recursively and maintains a cache of the font + characteristics in each directory. If the cache appears to be + out of date, it is ignored, and information is fetched from + the fonts themselves (that can take a few seconds if you have + a lot of fonts installed). +

+

+ If you've installed Xorg in + any prefix other than /usr, any + X fonts were not installed + in a location known to Fontconfig. Symlinks were created from + the OTF and TTF X font + directories to /usr/share/fonts/X11-{OTF,TTF} in Xorg + Fonts. This allows Fontconfig to use the OpenType and + TrueType fonts provided by X, although many people will prefer to + use more modern fonts. +

+

+ Fontconfig uses names to + define fonts. Applications generally use generic font names + such as "Monospace", "Sans" and "Serif". Fontconfig resolves these names to a + font that has all characters that cover the orthography of + the language indicated by the locale settings. +

+
+
+

+ Useful + Commands +

+

+ The following commands may be helpful when working with + Fontconfig, particularly if + you are interested in overriding which font will be chosen. +

+

+ fc-list | less + : shows a list of all available fonts (/path/to/filename: + Font Name:style). If you installed a font and it doesn't + show, then the directory it is contained in is not readable + by your user. +

+

+ fc-match 'Font + Name' : tells you which font will be used if + the named font is requested. Typically you would use this to + see what happens if a font you have not installed is + requested, but you can also use it if the system is giving + you a different font from what you expected (perhaps because + Fontconfig does not think + that the font supports your language). +

+

+ fc-match TYPE : shows + which font will be used in the current language for that + TYPE (Monospace, + Sans, Serif (initial capital + letter is optional)). If that font does not map a + codepoint, Fontconfig can + take a glyph from any available font, even if it is not of + the specified type. Any other value for TYPE will be assumed to be + Sans. +

+

+ fc-match 'Serif + :lang=ja:weight=bold' will tell you which + font and weight will be chosen for Japanese text in bold + weight. It does not mean that the reported font will + necessarily be able to show Japanese ideograms, so a fallback + might be used, or some glyphs may be missing. For language + codes, use ISO-639 values such as 'fr', 'ja', 'zh-cn'. Note + that an unrecognized value such as just 'zh' will not return + any match. To illustrate the fallback, on a system where both + Noto Sans Mono and DejaVu Sans Mono are installed, + fc-match 'monospace + :lang=en shows Noto Sans Mono will be used, + but if the lang is changed to 'ar' (arabic) DejaVu Sans will + be used. +

+

+ If you want to determine if a font file has hinting (many + older fonts do not, because it was patented) use fc-query /path/to/fontfile | grep + 'fonthashint:': which will report 'True(s)' + or 'False(s)'. Some recent fonts with both TTF and OTF + versions will have hinting in the TTF files. +

+

+ If you wish to know which font will be used for a string of + text (i.e. one or more glyphs, preceded by a space), paste + the following command and replace the xyz by the text you care about: +

+

+ FC_DEBUG=4 pango-view + --font=monospace -t xyz | grep family : this + requires Pango-1.56.4 and ImageMagick-7.1.2-1 - it will + invoke display to show the + text in a tiny window, and after closing that the last line + of the output will show which font was chosen. This is + particularly useful for CJK languages, and you can also pass + a language, e.g. PANGO_LANGUAGE=en;ja (English, then assume + Japanese) or just zh-cn (or other variants such as zh-sg or + zh-tw). +

+
+
+

+ The + configuration files +

+

+ The main files are in /etc/fonts/conf.d/, which was intended to + be a directory populated by symlinks to some of the files in + /usr/share/fontconfig/conf.avail/. But many + people, and some packages, create the files directly. Each + file name must be in the form of two digits, a dash, + somename.conf and they are read in sequence. +

+

+ By convention, the numbers are assigned as follows: +

+
+
    +
  • +

    + 00-09 extra font directories +

    +
  • +
  • +

    + 10-19 system rendering defaults (such as antialiasing) +

    +
  • +
  • +

    + 20-29 font rendering options +

    +
  • +
  • +

    + 30-39 family substitution +

    +
  • +
  • +

    + 40-49 map family to generic type +

    +
  • +
  • +

    + 50-59 load alternate config files +

    +
  • +
  • +

    + 60-69 generic aliases, map generic to family +

    +
  • +
  • +

    + 70-79 adjust which fonts are available +

    +
  • +
  • +

    + 80-89 match target scan (modify scanned patterns) +

    +
  • +
  • +

    + 90-99 font synthesis +

    +
  • +
+
+

+ You can also have a personal fonts.conf in $XDG_CONFIG_HOME (which is + ~/.config/fontconfig/). +

+
+
+

+ The rules to choose a font +

+

+ If the requested font is installed, and provided it contains + the codepoints required for the current language + (in the source, see the .orth files in the fc-lang/ directory), it will be used. +

+

+ However, if the document or page requested a font which is + not installed (or, occasionally, does not contain all the + required codepoints) the following rules come into play: + First, 30-metric-aliases.conf + is used to map aliases for some fonts with the same metrics + (same size, etc). Note that there are both weak and strong + aliases so that aliases for one form such as Helvetica or + Times New Roman can be satisfied by the other style, i.e. + anything which is an alias of Arial or Times in those + examples. some examples of Latin fonts with the same metrics + can be found in the 'Substitutes' PDFs at typosetting.co.uk. +

+

+ After that, an unknown font will be searched for in + 45-latin.conf: 'Latin' covers + Cyrillic and Greek, and now also maps system-ui fonts which + are used for User Interface messages in other alphabets. If + the font is found it will be mapped as serif, sans-serif, + monospace, fantasy, cursive, or system-ui. Otherwise, + 49-sansserif.conf will assume it is Sans. +

+

+ Then 60-latin.conf provides + ordered lists of the fallbacks - Noto fonts will be used + if you installed them. Cyrillic and Greek appear to be + treated in the same way.All of these files prefer commercial + fonts if they are present, although modern libre fonts are + often at least equal. Finally, if a codepoint is still not + found it can be taken from any available system font. The + following details only mention freely available fonts. +

+

+ Default Persian fonts are dealt with in 65-fonts-persian.conf. It looks as if all + the listed fonts are commercial. Using fonts that support + Persian (which has its own variant of the arabic alphabet, + and its own font styles) is outside the skills of the BLFS + editors. +

+

+ All remaining scripts for which Fontconfig has preferences (CJK scripts, + Indic scripts) are dealt with in 65-nonlatin.conf. These are again nominally + grouped as Serif, Sans-Serif, Monospace. Of the free fonts, + WenQuanYi Zen Hei (Pan-CJK Sans) comes first for both Serif + and for Sans. Therefore, if you install this as a fallback + but want to use different fonts for Japanese or Korean you + will need to set up a preference. Similarly, the old + fireflysung Serif font is also listed for Sans. +

+

+ After Pan-CJK and Chinese fonts come several Japanese fonts + and then several Korean fonts (both split appropriately + between Sans and Serif). Finally come the various Lohit Indic + families (one font file per script), labelled as both Sans + and Serif. +

+

+ The Monospace fonts listed in 65-nonlatin.conf do not include WenQuanYi + Zen Hei although that will be available as a fallback if + installed. Several Japanese Gothic fonts are listed, followed + by AR PL KaitiM GB (a zh-sc 'Brush' font), AR PL Serif fonts + for zh-sc (SungtiL) and zh-tw (Mingti2L), some Korean Sans + fonts and the various Lohit Indic families. +

+

+ For UI fonts, various Noto Sans UI fonts are the only listed + free fonts. +

+

+ The various Noto CJK fonts are not among the listed fonts, + possibly the RedHat developers preferred other fonts. These + now come in many variations, and most users who use these + will not install any other CJK fonts. +

+

+ Before Fontconfig-2.14, the first preferred Latin font family + was Bitstream Vera. In practice that was rarely used because + it covered so little. After that, DejaVu was the next + preferred family, so people were recommended to install that. + That has now changed, Bitstream Vera has been replaced by the + relevant Noto fonts (Serif, Sans, Sans Mono), so these will + be preferred if they have been installed, followed by DejaVu. +

+

+ For serif, Times New Roman could have been aliased from + Liberation Serif or Tinos, and Times from TeX Gyre Termes, so + although the named fonts are not free, the metric-compatible + fonts can be used. Ignoring other non-free fonts, the + remaining order for serif is: Times New Roman, Luxi Serif, + Nimbus Roman No9 L, and Times. In practice, that means those + fonts at the end of the list are unlikely to be used unless a + web page asks for them. +

+

+ For sans-serif, the remaining order is anything mapped to + Arial, Luxi Sans, Nimbus Sans L, and anything mapped to + Helvetica. +

+

+ The remaining alternatives for monospace are Inconsolata, + anything mapped to Courier New, Luxi Mono, Nimbus Mono, and + anything mapped to Courier. +

+

+ For 'fantasy' there are no free fonts, so Fontconfig will fall back to sans-serif. +

+

+ For 'cursive', the only free font is TeX Gyre Chorus as an + alias for ITC Zapf chancery, otherwise Fontconfig will again fall back to + sans-serif. +

+

+ The system-ui category is unusual. It is for interface + messages, so some scripts need special versions to fit in the + available space. For Latin, Greek and Cyrillic an ordinary + sans font should fit without problems. However, the first + preferred font is Cantarell, followed by Noto Sans UI. + Cantarell started as a Latin sans-serif font, that has been + forked in Gnome under the same name but they only provide the + source. The Noto Sans UI fonts are for other languages. +

+

+ Since Fontconfig-2.12.5, there is also generic family + matching for some emoji and math fonts, please see + {45,60}-generic.conf. +

+

+ In the rare cases where a font does not contain all the + expected codepoints, see 'Trial the First:' at I stared into the + fontconfig for the long details. +

+
+
+

+ Hinting and Anti-aliasing +

+

+ It is possible to change how, or if, fonts are hinted. The + following example file contains the default settings, but + with comments. The settings are very much down to the user's + preferences and to the choice of fonts, so a change which + improves some pages may worsen others. The preferred location + for this file is: ~/.config/fontconfig/fonts.conf +

+

+ To try out different settings, you may need to exit from Xorg + and then run startx again so that all + applications use the new settings. Several things can + override the fontconfig settings, see Items which can + override Fontconfig below for more details. To explore + the possibilities, create a file for your user: +

+
mkdir -pv ~/.config/fontconfig &&
+cat > ~/.config/fontconfig/fonts.conf << "EOF"
+<?xml version='1.0'?>
+<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+<fontconfig>
+
+  <match target="font" >
+    <!-- autohint was the old automatic hinter when hinting was patent
+    protected, so turn it off to ensure any hinting information in the font
+    itself is used, this is the default -->
+    <edit mode="assign" name="autohint">  <bool>false</bool></edit>
+
+    <!-- hinting is enabled by default -->
+    <edit mode="assign" name="hinting">   <bool>true</bool></edit>
+
+    <!-- for the lcdfilter see https://www.spasche.net/files/lcdfiltering/ -->
+    <edit mode="assign" name="lcdfilter"> <const>lcddefault</const></edit>
+
+    <!-- options for hintstyle:
+    hintfull: is supposed to give a crisp font that aligns well to the
+    character-cell grid but at the cost of its proper shape. However, anything
+    using Pango >= 1.44 will not support full hinting, Pango now uses harfbuzz
+    for hinting. Apps which use Skia (e.g. Chromium, Firefox) should not be
+    affected by this. 
+
+    hintmedium: is reported to be broken.
+    hintslight is the default: - supposed to be more fuzzy but retains shape.
+
+    hintnone: seems to turn hinting off.
+    The variations are marginal and results vary with different fonts -->
+    <edit mode="assign" name="hintstyle"> <const>hintslight</const></edit>
+
+    <!-- antialiasing is on by default and really helps for faint characters
+    and also for 'xft:' fonts used in rxvt-unicode -->
+    <edit mode="assign" name="antialias"> <bool>true</bool></edit>
+
+    <!-- subpixels are usually rgb, see
+    http://www.lagom.nl/lcd-test/subpixel.php -->
+    <edit mode="assign" name="rgba">      <const>rgb</const></edit>
+
+    <!-- thanks to the Arch wiki for the lcd and subpixel links -->
+  </match>
+
+</fontconfig>
+EOF
+

+ You will now need to edit the file in your preferred editor. + Many of the different settings give very subtle differences + and the results may differ for some of the fonts you use. +

+
+

+ Note +

+

+ Hinting, if enabled, is done in FreeType. Since FreeType-2.7 the + default TrueType interpreter is v40. The original v35 + hinter could be enabled by an environment variable, but is + only really appropriate to original Microsoft TTF fonts + (Arial, etc). The v38 hinter (Infinality) is not built by + default and all the options to tune it have been removed. + For full details see subpixel-hinting (Spoiler: there is + NO sub-pixel hinting, the code simply ignores all horizontal hinting + instructions). +

+

+ Xorg assumes screens have 96 dots per inch (DPI). Most LCD + screens are close to this, but some people detect colour + fringing if their screen diverges from that size. See + calc-dpi. +

+

+ If you have a High DPI screen (often described as '4K' or + larger) you will probably use larger font sizes and benefit + from disabling hinting. +

+
+

+ For more examples see the blfs-support thread which started + at + 2016-09/00128, particularly + 2016-09/00137, and the original poster's preferred + solution at + 2016-09/00147. There are other examples in Fontconfig in the Arch wiki + and Fontconfig in the Gentoo + wiki. +

+
+
+

+ Disabling Bitmap Fonts +

+

+ In previous versions of BLFS, the ugly old Xorg bitmap fonts + were installed. Now, many people will not need to install any + of them. But if for some reason you have installed one or + more bitmap fonts, you can prevent them from being used by + Fontconfig by creating the + following file as the root + user : +

+
cat > /etc/fonts/conf.d/70-no-bitmaps.conf << "EOF"
+<?xml version='1.0'?>
+<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+<fontconfig>
+<!-- Reject bitmap fonts -->
+ <selectfont>
+  <rejectfont>
+   <pattern>
+     <patelt name="scalable"><bool>false</bool></patelt>
+   </pattern>
+  </rejectfont>
+ </selectfont>
+</fontconfig>
+EOF
+
+
+

+ Synthetic changes +

+

+ In 90-synthetic.conf there are + examples of applying synthetic slanting and emboldening to a + font. The synthetic emboldening can be applied to a visibly + faint font, but the results are not always as expected: With + just the embolden, Epiphany + showed darker fonts while Firefox did not - so although + Cairo is now used by + firefox the comment about + setting Weight is still valid. But setting both, Epiphany will show bold text by default, + but it will show heavy text if markup for bold is used. In + both cases, neither libreOffice nor falkon showed bolder text. +

+
+
+

+ Adding extra font directories +

+

+ Normally, system fonts and user fonts are installed in + directories beneath the locations specified in The Xft Font Protocol and there + is no obvious reason to put them elsewhere. However, a full + BLFS install of texlive-20250308 puts many + fonts in /opt/texlive/2025/texmf-dist/fonts/ in the + opentype/ and truetype/ subdirectories. Although pulling + in all of these files may appear useful (it allows you to use + them in non TeX programs), + there are several problems with such an approach: +

+
+
    +
  1. +

    + There are hundreds of files, which makes selecting + fonts difficult. +

    +
  2. +
  3. +

    + Some of the files do odd things, such as displaying + semaphore flags instead of ASCII letters, or mapping + cyrillic codepoints to character forms appropriate to + Old Church Slavonic instead of the expected current + shapes: fine if that is what you need, but painful for + normal use. +

    +
  4. +
  5. +

    + Several fonts have multiple sizes and impenetrable + short names, which both make selecting the correct font + even more difficult. +

    +
  6. +
  7. +

    + When a font is added to CTAN, it is accompanied by TeX + packages to use it in the old engines (xelatex does not normally need + this), and then the version is often frozen whilst the + font is separately maintained. Some of these fonts such + as Dejavu fonts are probably already + installed on your BLFS system in a newer version, and + if you have multiple versions of a font it is unclear + which one will be used by Fontconfig. +

    +
  8. +
+
+

+ However, it is sometimes useful to look at these fonts in + non-TeX applications, if only to see whether you wish to + install a current version. If you have installed all of + texlive, the following + example will make one of the Arkandis Open Type fonts + available to other applications, and all three of the + ParaType TrueType fonts. Adjust or repeat the lines as + desired, to either make all the opentype/ or truetypefonts available, or to select + different font directories. As the root user: +

+
cat > /etc/fonts/conf.d/09-texlive.conf << "EOF"
+<?xml version='1.0'?>
+<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+<fontconfig>
+  <dir>/opt/texlive/2025/texmf-dist/fonts/opentype/arkandis/berenisadf</dir>
+  <dir>/opt/texlive/2025/texmf-dist/fonts/truetype/paratype</dir>
+</fontconfig>
+EOF
+

+ If you do this, remember to change all instances of the year + in that file when you upgrade texlive to a later release. +

+
+
+

+ Preferring certain fonts +

+

+ With the exception of web pages which use WOFF fonts and + either supply them or link to google to download them, web + pages have traditionally suggested a list of preferred font + family names if they cared (e.g. Times New Roman, Serif). + There are many reasons why people may wish to have pages + which specify a preferred font use a different font, or + prefer specific fonts in Monospace or Sans or Serif. As you + will expect, there a number of different ways of achieving + this. +

+
+
+

+ Fontconfig user documentation +

+

+ Fontconfig installs user + documentation that includes an example 'User configuration + file' which among other things prefers WenQuanYi + ZenHei (a Sans font) if a Serif font is requested for + Chinese (this part might be anachronistic unless you have + non-free Chinese fonts, because in 65-nonlatin.conf this font is already among + the preferred fonts when Serif is specified for Chinese) and + to prefer the modern VL Gothic font if a Sans font is specified on + a Japanese page (otherwise a couple of other fonts would be + preferred if they have been installed). +

+

+ If you have installed the current version, the user + documentation is available in HTML, PDF, and text versions at + /usr/share/doc/fontconfig-2.17.1/ : change + the version if you installed a different one. +

+
+
+

+ Prefer a specific font +

+

+ As an example, if for some reason you wished to use the + Nimbus + Roman No9 L font wherever Times New Roman is referenced + (it is metrically similar, and preferred for Times Roman, but + the Serif font from Liberation fonts will be + preferred for the Times New Roman font if installed), as + an individual user you could install the font and then create + the following file: +

+
mkdir -pv ~/.config/fontconfig/conf.d &&
+cat >  ~/.config/fontconfig/conf.d/35-prefer-nimbus-for-timesnew.conf << "EOF"
+<?xml version='1.0'?>
+<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+<fontconfig>
+<!-- prefer Nimbus Roman No9 L for Times New Roman as well as for Times,
+ without this Tinos and Liberation Serif take precedence for Times New Roman
+ before Fontconfig falls back to whatever matches Times -->
+    <alias binding="same">
+        <family>Times New Roman</family>
+        <accept>
+            <family>Nimbus Roman No9 L</family>
+        </accept>
+    </alias>
+</fontconfig>
+EOF
+

+ This is something you would normally do in an individual + user's settings, but the file in this case has been prefixed + '35-' so that it could, if desired, be used system-wide in + /etc/fonts/conf.d/. +

+
+
+

+ Prefer chosen CJK fonts +

+

+ The following example of a local configuration (i.e. one that + applies for all users of the machine) does several things. It + is particularly appropriate where no language is specified, + or for reading CJK text in a non-CJK locale, and where the + Japanese forms of the codepoints shared with Chinese are + preferred. In particular, alternative approaches would be to + specify a Chinese font ahead of the Japanese font, meaning + that only Kana symbols will be used from the Japanese font, + or to not specify DejaVu so that the first font in each set + of preferences is preferred for text using Latin alphabets. +

+
+
    +
  1. +

    + If a Serif font is specified, it prefers Dejavu + fonts. If Han codepoints are found, or the Japanese + language is specified, the Mincho font from IPAex + fonts will be used. If Hangul codepoints are found + or the Korean language is specified, UnBatang (see + Korean fonts) will be used: Change + that line If you installed a different Korean serif + font. After that, WenQuanYi + ZenHei (Sans, but a default for Serif and + monospace) is used. A previous version of this page + mentioned using UMing which is a Traditional Chinese + font that ships with an old conf file preferring it for + zh-tw and zh-hk language codes (and for sans-serif and + monospace). But without the conf file, Fontconfig will only treat it as + suitable for zh-hk. The conf file needs to be edited to + current style and will then be prepended, so specifying + UMing does not belong in this local.conf file. +

    +
  2. +
  3. +

    + For Sans Serif preferences again start with Dejavu + fonts, then VL Gothic for Japanese before falling + back to WenQuanYi Zen Hei which is Sans and covers both + Chinese and Korean Hangul. +

    +
  4. +
  5. +

    + The Monospace fonts are forced to the preferred Sans + fonts. If the text is in Chinese or Korean then + WenQuanYi ZenHei will be used. +

    +
  6. +
+
+

+ In a non-CJK locale, the result is that suitable fonts will + be used for all variants of Chinese, Japanese and Hangul + Korean (but Japanese variants of the glyphs shared with + Chinese Han will be used). All other languages should already + work if a font is present. As the root user: +

+
cat > /etc/fonts/local.conf << "EOF"
+<?xml version='1.0'?>
+<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+<fontconfig>
+    <alias>
+        <family>serif</family>
+        <prefer>
+            <family>DejaVu Serif</family>
+            <family>IPAexMincho</family>
+            <!-- WenQuanYi is preferred as Serif in 65-nonlatin.conf,
+            override that so a real Korean font can be used for Serif -->
+            <family>UnBatang</family>
+        </prefer>
+    </alias>
+    <alias>
+         <family>sans-serif</family>
+         <prefer>
+             <family>DejaVu Sans</family>
+             <family>VL Gothic</family>
+         <!-- This assumes WenQuanYi is good enough for Korean Sans -->
+         </prefer>
+    </alias>
+    <alias>
+         <family>monospace</family>
+         <prefer>
+             <family>DejaVu Sans Mono</family>
+             <family>VL Gothic</family>
+         <!-- This assumes WenQuanYi is good enough for Korean Monospace -->
+         </prefer>
+    </alias>
+</fontconfig>
+EOF
+
+
+

+ Editing Old-Style conf + files +

+

+ Some fonts, particularly Chinese fonts, ship with conf files + which can be installed in /etc/fonts/conf.d. However, if you do that + and then use a terminal to run any command which uses + Fontconfig you may see error + messages such as : +

+

+ Fontconfig warning: + "/etc/fonts/conf.d/69-odofonts.conf", line 14: Having + multiple <family> in <alias> isn't supported and + may not work as expected. +

+

+ In practice, these old rules do not work. For non-CJK users, + Fontconfig will usually do a + good job without these + rules. Their origin dates back to when CJK users needed + handcrafted bitmaps to be legible at small sizes, and those + looked ugly next to antialiased Latin glyphs - they preferred + to use the same CJK font for the Latin glyphs. There is a + side-effect of doing this : the (Serif) font is often also + used for Sans, and in such a situation the (English) text in + Gtk menus will use this font + - compared to system fonts, as well as being serif it is both + faint and rather small. That can make it uncomfortable to + read. +

+

+ Nevertheless, these old conf files can be fixed if you wish + to use them. The following example is the first part of + 64-arphic-uming.conf from + UMing - there + are many more similar items which also need changing : +

+
+   <match target="pattern">
+       <test qual="any" name="lang" compare="contains">
+           <string>zh-cn</string>
+           <string>zh-sg</string>
+       </test>
+       <test qual="any" name="family">
+           <string>serif</string>
+       </test>
+       <edit name="family" mode="prepend" binding="strong">
+           <string>AR PL UMing CN</string>
+       </edit>
+   </match>
+
+

+ The process to correct this is straightforward but tedious - + for every item which produces an error message, using your + editor (as the root user), + edit the installed file to repeat the whole block as many + times as there are multiple variables, then reduce each + example to have only one of them. You may wish to work on one + error at a time, save the file after each fix, and from a + separate term run a command such as fc-list 2>&1 | less + to see that the fix worked. For the block above, the fixed + version will be : +

+
+   <match target="pattern">
+       <test qual="any" name="lang" compare="contains">
+           <string>zh-cn</string>
+       </test>
+       <test qual="any" name="family">
+           <string>serif</string>
+       </test>
+       <edit name="family" mode="prepend" binding="strong">
+           <string>AR PL UMing CN</string>
+       </edit>
+    </match>
+   <match target="pattern">
+       <test qual="any" name="lang" compare="contains">
+           <string>zh-sg</string>
+       </test>
+       <test qual="any" name="family">
+           <string>serif</string>
+       </test>
+       <edit name="family" mode="prepend" binding="strong">
+           <string>AR PL UMing CN</string>
+       </edit>
+    </match>
+
+
+
+

+ About font + weights +

+

+ When this page and the next page were first created, Latin + fonts came with a maximum of two weights - either Regular or + Book (Book typically has a larger X-height to make it easier + to read in large blocks of text), and Bold - and perhaps an + Italic (or Slant) style. A few fonts also had Condensed faces + (to fit more text into a line and usually only used when + specified). Without CSS (Cascading Style Sheets) markup, text + used the Regular or Book weight except when <b> ... + </b> markup was used for bold text. Italic styles would + be invoked by <i> ... </i> markup, along with the + bold markup for Bold Italic. +

+

+ Some faces now contain up to 9 weights, possibly also with a + variable font (to save space by including all the + alternatives in one file and possibly allowing intermediate + weights). For most desktop users who do not need this wide + range of weights for creating content, it is simpler to only + install one or two weights. If a face has individual weights + plus a variable font, the variable font is usually in the top + level of the supplied directory, with individual weights in a + static/ subdirectory. Except + when initially reviewing a font, it makes no sense to install + both static and variable, nor all the possible weights. +

+

+ The weights are labelled from 100 (Thin) to 900 (Black or + Heavy) in CSS terminology, with 400 being normal and 700 + bold. The full set of weights is described at Table + of CSS font weights. +

+

+ If you have installed a font with a range of weights, you can + copy font-weights.html + to your local machine. As shipped it will use your default + Serif font assuming you have one. Edit it to point to a + specific installed font using the name known to Fontconfig (also in the *EDITME + FONTNAME* text items) and open it from your desktop browser. + You can also use it to look at a font with only two installed + weights, e.g. for testing to see if you prefer other weights. +

+

+ Despite the details in that Mozilla link, it appears that if + only normal and bold weights are installed, SemiBold (600) + will be shown using bold. +

+

+ There seems to be a little scope for changing which weights + are used for normal and bold if + only two weights have been installed. Firefox, + and probably other browsers, will look for the next weight + heavier than normal. If that is less than bold (Medium, maybe + SemiBold - uncertain) it will be used for normal and then the + next higher weight, if any will be used for bold, allowing + you to make the fonts slightly darker. Conversely, if only a + weight less than normal has been installed, such as Light, + that will be used for both normal and bold weights (the + upward search happens first). +

+

+ If you remove some weights of a system font, you may need to + run fc-cache as + the root user and then log + out completely to clear caches associated with your user. +

+
+
+

+ Items which can + override Fontconfig +

+

+ Several desktop environments, as well as some programs, will + use Fontconfig to find fonts + but may override certain things. +

+

+ GNOME: The settings in + org.gnome.desktop.interface can be updated with dconf-editor. You can set the fonts to + your preference and desired point size. To use the fonts + chosen by Fontconfig specify + e.g. 'Sans 12', Serif 11', 'Mono 10' as desired. Also review + the antialiasing, hinting and rgba settings. Alternatively, + gnome-tweaks-46.1 can also update the + font settings in a GUI form. +

+

+ LXQt: Change font settings + as necessary to match Fontconfig in lxqt-config-appearance. +

+

+ KDE Plasma: The settings can + be adjusted in System + Settings under Appearance -> Fonts or in Edit -> + Preferences of the individual application. +

+

+ Xfce desktop: The settings + can be adjusted in Settings + -> Appearance -> Fonts. Specify your preferred fonts, + e.g. 'Sans Regular' (to use the normal face and weight rather + than Bold and/or Italic) and adjust the point size in the + option. Review the Rendering and DPI options. +

+

+ Firefox: This browser allows + you to specify its default fonts. For the 128esr series use + the 'Hamburger' menu to go to Settings, General, and under + Fonts -> Advanced select Sans Serif, Serif or Monospace as + appropriate if you wish to use the fonts which match + Fontconfig. Set the point + sizes as desired. In later versions, the settings are at + Preferences -> Fonts. +

+

+ Libreoffice: Tests using + English text with an old Japanese font (HanaMinA) which + supports several European languages but had only one weight + and no italics or slant showed that although Libreoffice uses Fontconfig to find the font, it created + its own bold or slanted text. It is not clear if it will do + the same where a font actually has bold weight or an italic + style. Also, documentation shows that Libreoffice has its own substitution + rules for when a codepoint is not found in the selected font, + but is unclear if those rules apply on Linux using + Fontconfig. +

+

+ Pango: as noted in the + example ~/.config/fontconfig + above, anything using Pango-1.44 (from 2019) or later now + uses Harfbuzz for hinting, + not FreeType, and + hintfull is not supported. +

+

+ Thunderbird: The font + settings can be changed by going to "Edit -> Settings" and + then scrolling down to "Fonts & Colors". +

+
+
+

+ External + Links +

+

+ I stared into the + fontconfig ... +

+

+ The blog entries by + Eevee are particularly useful if Fontconfig does not think your chosen + font supports your language, and for preferring some non-MS + Japanese fonts when an ugly MS font is already installed. +

+

+ subpixel-hinting +

+

+ The documentation of the FreeType v40 interpreter at + + freetype docs explains how the current hinter works, and + why the previous (slow) Infinality interpreter was replaced. +

+

+ Calculating DPI +

+

+ An old answer at + askubuntu gives some detail on calculating a screen's + dots per inch, but essentially you just measure the width and + height of the visible panel, convert to inches if using + metric measurements, and divide by the number of pixels. You + can then pass -dpi 90 when you start + Xorg, using your own value. +

+

+ Table of CSS font + weights +

+

+ Perhaps more than you ever wished to know is at + Mozilla CSS docs. +

+

+ Applying + autohinting to a font +

+

+ If you are using hinting and have a TTF (not OTF) font which + lacks hints but permits you to fork it, you might be able to + apply hints using ttfautohint which is + based on the old autohinter. As of version 1.8.4 it fails to + build without Qt5. +

+

+ Fontconfig + in the Arch wiki +

+

+ Arch has a lot of information in its wiki at font_configuration. +

+

+ Fontconfig in the Gentoo wiki +

+

+ Gentoo has some information in its wiki at Fontconfig + although a lot of the details (what to enable, and + Infinality) are specific to Gentoo. +

+
+
+
+
+
+

+ TTF + and OTF fonts +

+
+
+
+
+
+

+ About TTF and OTF fonts +

+

+ Originally, Xorg provided only bitmap fonts. Later, some + scalable Type1 fonts were added, but the desktop world moved + on to using TrueType and Open Type fonts. To support these, + Xorg uses Xft, the X FreeType interface library, with + Fontconfig (see previous + page for details including how fonts are selected and various + reasons why a font might be ignored). +

+

+ A few fonts are provided as collections (TTC or OTC) where + font data is shared between different fonts, which saves disk + space. These should be treated in exactly the same way as + individual TTF or OTF files. +

+

+ If a font provides both TTF and OTF forms, you should prefer + the OTF form in Linux, as it may provide more features for + programs which know how to use them (such as xelatex). The + TTF files of these fonts usually contain hinting, see + Hinting and Anti-aliasing and + Items which can + override Fontconfig for reasons why hinting may be + undesirable or unusable. +

+

+ A font may have multiple variations. For example, Noto Sans + has 9 weights (ExtraLight, Light, Thin, Normal, Medium, + SemiBold, Bold, ExtraBold, and Black) and 2 styles (Regular + and Italic), thus 18 variations in total. Normally each + variation is provided as a separate TTF or OTF file. For full + coverage you need to install all these TTF or OTF files. Even + if you are low on disk space, you should still install two + weights (Regular and Bold) by two styles (Normal and Italic) + if the font has these variations. Some fonts do not have + Italic style (for example most CJK fonts and some monospace + fonts), and some fonts only have one variation (for example + Noto Sans Math, it only provides the glyph of some mathematic + symbols). +

+

+ Some fonts are also available as variable font files. Unlike a + normal font file which only contains one variation, a + variable font file contains infinite variations. Each + variation can be defined by the application using this font + by assigning number(s) to one or more variables. There are + also pre-defined named + instances analogous to the traditional + variations. For example, with the variable version of Noto + Sans, the weight variable can be assigned any number not less + than 100 and not greater than 900, and 9 named instances are + pre-defined: ExtraLight for weight=100, Regular for + weight=400, Bold for weight=700, etc. So once a variable font + file for Noto Sans is installed, all the 9 named instances + (or “variations”) are available. Note that + the slope is not defined as a variable in the variable + version of Noto Sans, so Regular and Italic are still + traditional variations and a separate variable font file is + needed for the Italic variation. +

+

+ A variable font file is obviously more flexible than the + normal (static) font files. It's extremely useful for fine + tuning the font for Web pages or publications. And, the size + of a variable font file is usually significantly smaller than + the total size of several static font files for multiple + variations. For example, the variable font file for Noto Sans + SC is only 11M, while the total size of 9 static font files + for Noto Sans SC is 91M. But you must make sure your + applications really support variable fonts before installing + one. For example, lualatex supports variable + font but xelatex does not. So if you + want to use a font for an article and use xelatex for typesetting, + you must not install the variable font files. +

+

+ For information about variable fonts, please see + Variable Fonts. +

+

+ For some scripts, Pango is + required to render things correctly, either by selecting + different glyph forms, or by combining glyphs - in both + cases, according to the context. This applies particularly to + Arabic and Indic scripts. +

+

+ Standard scalable fonts that come with X provide very poor Unicode coverage. + You may notice in applications that use Xft that some characters appear as a box + with four binary digits inside. In this case, a font with the + required glyphs has not been found. Other times, applications + that don't use other font families by default and don't + accept substitutions from Fontconfig will display blank lines when + the default font doesn't cover the orthography of the user's + language. +

+

+ The fonts available to a program are those which were present + when it was started, so if you add an extra font and wish to + use it in a program which is currently running, then you will + have to close and restart that program. +

+

+ Some people are happy to have dozens, or even hundreds, of + font files available, but if you ever wish to select a + specific font in a desktop application (for example in a word + processor) then scrolling through a lot of fonts to find the + right one is slow and awkward - fewer is better. So, for some + font packages you might decide to install only one of the + fonts - but nevertheless install the different variants + (italic, bold, etc) as these are all variations for the same + font name. +

+

+ In the past, everybody recommended running fc-cache as the + root user after installing or + removing fonts, but this is not necessary anymore on Linux, + Fontconfig will do it + automatically if needed as well as if the font caches are + more than 30 seconds old. However, if you add a font and want + to use it immediately, you can run that command as a normal + user. +

+

+ There are several references below to CJK characters. This + stands for Chinese, Japanese and Korean, although modern + Korean is now almost all written using the phonetic Hangul + glyphs (it used to sometimes use Hanja glyphs which are + similar to Chinese and Japanese). Unicode decided to go for + Han + Unification and to map some Chinese and Japanese glyphs + to the same codepoints. This was very unpopular in Japan, and + the result is that different fonts will render some + codepoints in quite different shapes. In addition, Simplified + Chinese will sometimes use the same codepoint as Traditional + Chinese but will show it differently, somewhat analogous to + the different shapes used for the letters 'a' and 'g' in + English (single-storey and two-storey), except that in a + language context one will look "wrong" rather than just + "different". +

+

+ Unlike most other packages in this book, the BLFS editors do + not monitor the versions of the fonts on this page - once a + font is good enough for general use, the typical additions in + a new version are minor (e.g. new currency symbols, or glyphs + not for a modern language, such as emojis or playing cards). + Therefore, none of these fonts show version or md5 + information. +

+

+ The list below will not provide complete Unicode coverage. + Unicode is updated every year, and most additions are now for + historic writing systems. For almost-complete coverage you + can install the full set of Noto fonts (there are + separate fonts for different writing systems). We used to + recommend the Unicode Font Guide, but + that has not been updated since 2008 and many of its links + are dead. +

+

+ Rendered examples of most of these fonts, and many others, + with details of what languages they cover, can be found at + typosetting.linuxfromscratch.org + which aims to analyse and compare fonts and despite the name + eventually added some reasonable examples of typesetting. +

+

+ Fonts are often supplied in zip files, requiring tools from + libarchive-3.8.1 or 7zip-25.01 to list + and extract them, but even if the current release is a + tarball, you should still check to see if it will create a + directory (scattering the contents of a zipfile or tarball + across the current directory can be very messy, and a few + fonts create __MACOSX/ directories). In addition, many fonts + are supplied with permissions which do not let 'other' users + read them - if a font is to be installed for system-wide use, + any directories must be mode 755 and all the files mode 644, + so you need to change them if the permissions are different. + If you forget, the root user may be able to see a particular + font in fc-list, but a normal user + will not be able to use them. +

+

+ As a font installation example, consider the installation of + the Dejavu fonts. In this particular package, + the TTF files are in a subdirectory. From the unpacked source + directory, run the following commands as the root user: +

+
install -v -d -m755 /usr/share/fonts/dejavu &&
+install -v -m644 ttf/*.ttf /usr/share/fonts/dejavu &&
+fc-cache -v /usr/share/fonts/dejavu
+

+ If you wish, you can also install any licenses or other + documentation, either alongside the font or in a + corresponding directory under /usr/share/doc/. +

+

+ A few fonts ship with source as well as the completed TTF or + OTF file(s). Unless you intend to modify the font, and have + the correct tools (sometimes FontForge-20230101, but often + commercial tools), the source will provide no benefit, so do + not install it. One or two fonts even ship with Web Open Font + Format (WOFF) files - this is useful if you run a webserver + and want to use that font on your website, but not useful for + a desktop system. +

+

+ To provide greater Unicode coverage, you should install some + of the following fonts, depending on what websites and + languages you want to read. The next part of this page + details some fonts which cover at least Latin alphabets, and + the final part deals with some CJK issues. +

+
+

+ Note +

+

+ Installation of the Dejavu fonts used to be strongly + recommended, but the Noto fonts will be used in + preference if both have been installed. The only likely + reason to now prefer a DejaVu font is that DejaVu-Serif has + an open 'g' (Both DejaVu Sans and Noto Sans also use an + open 'g'). Other than that, Noto is more up to date with + fuller coverage. +

+
+

+ Adwaita fonts +

+

+ Adwaita + fonts – The Adwaita family provides clear, modern and + maintained fonts. They are the preferred fonts for GNOME-48 + and later. The tarball includes update scripts for the + source, as well as TTF fonts in the mono/ and sans/ + directories. The variable-width sans fonts are adapted to fit + in UI dialog messages and intended for normal use. The mono + fonts (normal and italic in regular and, bold weights), are + intended to match, for use in terminals and programming. +

+

+ Caladea +

+

+ Caladea + (created as a Chrome OS extra font) is metrically compatible + with MS Cambria and can be used if you have to edit a + document which somebody started in Microsoft Office using + Cambria. +

+

+ Cantarell + fonts +

+

+ Cantarell + fonts – The Cantarell typeface family provides a + contemporary Humanist Sans Serif. It is particularly + optimised for legibility at small sizes and was the preferred + font family for the GNOME + user interface before GNOME-48. +

+

+ Carlito +

+

+ Carlito (created + as another Chrome OS extra font) is metrically compatible + with MS Calibri and can be used if you have to edit a + document which somebody started in Microsoft Office using + Calibri. +

+

+ DejaVu fonts +

+

+ DejaVu + fonts – These fonts are an extension of, and replacement + for, the Bitstream Vera fonts and provide Latin-based scripts + with accents and punctuation such as "smart-quotes" and + variant spacing characters, as well as Cyrillic, Greek, + Arabic, Hebrew, Armenian, Georgian and some other glyphs. In + the absence of the Bitstream Vera fonts (which had much less + coverage), these were the default fallback fonts for 'Latin' + languages. As of Fontconfig-2.14, if the Noto 'Latin' fonts + have been installed they will be prioritised ahead of DejaVu. +

+

+ GNU FreeFont +

+

+ GNU FreeFont – + This set of fonts covers many non-CJK characters, but the + glyphs are comparatively small (unlike Noto and DejaVu fonts + which are comparatively large) and rather light weight ("less + black" when black on white is used) which means that in some + contexts such as terminals they are not visually pleasing, + for example when most other glyphs are provided by another + font. On the other hand, some fonts used primarily for + printed output, and many CJK fonts, are also light weight. +

+

+ Gelasio +

+

+ Gelasio is + metrically compatible with MS Georgia and Fontconfig will use it if MS Georgia is + requested but is not installed. +

+

+ Liberation fonts +

+

+ The Liberation fonts + provide libre substitutes for Arial, Courier New, and Times + New Roman. Fontconfig will + use them as substitutes for those fonts, and also for the + similar Helvetica, Courier, and Times Roman, though for these + it can prefer a different font (see the examples in the PDFs + at typosetting.co.uk). +

+

+ Many people will find the Liberation fonts useful for pages + where one of those fonts is requested. +

+

+ Microsoft Core Fonts +

+

+ The Microsoft Core Fonts + date from 2002. They were supplied with old versions of + Microsoft Windows and were apparently made available for + general use. You can extract them from the '.exe' files using + bsd-tar from libarchive-3.8.1. Make sure that you + read the license before using them. At one time some of these + fonts (particularly Arial, Times New Roman, and to a lesser + extent Courier New) were widely used on web pages. The full + set contains Andale Mono, Arial, Arial Black, Comic Sans MS, + Courier New, Georgia, Impact, Times New Roman, Trebuchet MS, + Verdana and Webdings. +

+

+ Please note that if you only want to use a font with the same + metrics (character size, etc) as Arial, Courier New, or Times + New Roman you can use the libre Liberation Fonts (above), and + similarly you can replace Georgia with Gelasio. +

+

+ Although many old posts recommend installing these fonts for + output which looks better, less old posts say that these are + 'ugly' or 'broken' with modern Fontconfig, Freetype and Pango. Most people will not want to + install any of these fonts. +

+

+ The newer fonts which Microsoft made their defaults in later + releases of MS Windows or MS Office (Calibri and Cambria) + have never been freely available. However, if you do not have + them installed you can find metric equivalents (Carlito and + Caladea) above. +

+

+ Noto fonts +

+

+ The Noto fonts ('No Tofu', + i.e. avoiding boxes with dots [hex digits] when a glyph + cannot be found) are a set of fonts which aim to cover + every glyph in Unicode, no matter + how obscure. +

+

+ People using languages written in Latin, Greek or Cyrillic + alphabets only need to install Noto Sans, Noto Serif and/or + Noto Sans Mono. For more details on the organization of Noto + fonts see + how are noto fonts organized. There are also separate + fonts for every other current writing system, but those do + not cover text in Latin languages. +

+

+ Those three fonts are the first-choice preferences of + Fontconfig for text in those + three alphabets, and they are updated frequently to cover + recent Unicode additions such as the extensions for phonetic + transcription in Latin and Cyrillic alphabets. +

+

+ It may be easier to download a specific Noto font by going to + Noto Sans + and changing the font name as appropriate, with '+' between + each word, e.g. 'Noto+Kufi+Arabic', 'Noto+Serif+Georgian' or + whatever, then clicking on 'Download family'. +

+

+ For the Noto CJK fonts it is easier to find the specific zip + archive you desire at Github. Go to https://github.com/notofonts/noto-cjk/releases/ + and look for the newest Sans or Serif version with its own + updated Download guide and its assets. The Download guides + should help you to identify which zip file best matches your + requirements. +

+

+ Noto Sans is the preferred font for KDE Plasma and + applications, except for monospace fonts where Hack is + preferred. +

+

+ For writing systems not using the Latin, Greek or Cyrillic + alphabets the Noto fonts are not preferred by Fontconfig. If you use a Noto font for a + modern language where another installed font also covers it + (e.g. the DejaVu fonts cover several Right-to-Left + alphabets), you might need to set a preference for + Fontconfig - see the + previous page. +

+

+ Source + Code Pro +

+

+ This set of fonts from Adobe (seven different weights) + includes what is now the preferred monospace font for those + applications which use gsettings-desktop-schemas-48.0. + The github release source-code-pro + contains OTF (preferred) and TTF as well as the source and + WOFF fonts. +

+

+ To use this in terminals, you probably will only want the + Regular font. +

+

+ There is also an older TTF version of this available from + + Google fonts but that has very limited coverage (adequate + for most European languages using a Latin alphabet). +

+

+ Lohit fonts +

+

+ For Indic languages, Fontconfig now prefers Lohit fonts + (Sanskrit for 'red'). They can be found at pagure.org +

+
+
+

+ CJK fonts +

+

+ As indicated earlier, usage of a combination of Chinese, + Japanese and Korean characters can be tricky - each font only + covers a subset of the available codepoints, the preferred + shapes of the glyphs can differ between the languages, and + many of the CJK fonts do not actually support modern Korean. +

+

+ Also, Fontconfig prefers + Chinese to Japanese by default. Tuning that is covered at + Preferring chosen CJK fonts. +

+

+ Although Unicode has been extended to allow a very large + number of CJK codepoints, those outside the Base Plane + (greater than U+0xFFFF) are not commonly used in Mandarin + (the normal form of written Chinese, whether Simplified + (Mainland China, Malaysia, and Singapore) or Traditional + (Hong Kong and Taiwan)), or Japanese. +

+

+ For Hong Kong, which uses Traditional Chinese and where + Cantonese is the dominant language, the Hong Kong + Supplementary Character Set was added to Unicode in 2005 and + revised in 2009 (it is part of CJK Extension B and contains + more than 1900 characters). Earlier fonts will not be able to + support either Cantonese or use these characters where local + names are written in Mandarin. The UMing HK, Noto Sans HK and + WenQuanYi Zen Hei fonts all seem to cover Hong Kong usage + (Fontconfig disagrees about + Noto Sans HK). +

+

+ The Han glyphs are double width, and other glyphs in the same + font may be narrower. For their CJK content, all of these + fonts can be regarded as monospaced (i.e. fixed width). +

+

+ If you wish to use Noto fonts, there are also Serif versions + of their various CJK fonts. The Noto Sans/Serif + SC/TC/HK/JP/KR fonts are derived from a monolithic noto-cjk + repository and you can find the .ttc files for the entire Noto Sans CJK + (including SC/TC/HK/JP/KR) or Noto Serif CJK font family + there. Google recommends the normal users to use the separate + Noto Sans/Serif SC/TC/HK/JP/KR fonts instead, but if you are + capable and willing to read texts in more than one CJK + character systems it may be easier to use a monolithic + .ttc file for full coverage. +

+

+ If all you wish to do is render CJK glyphs, installing + WenQuanYi ZenHei may be a good place + to start if you do not already have a preference. +

+

+ Chinese fonts: +

+

+ In Chinese, there are three font styles in common use: Sung + (also known as Song or Ming), which is the most-common + ornamented ("serif") form, Kai ("brush strokes") which is an + earlier ornamented style that looks quite different, and + modern Hei ("sans"). Unless you appreciate the differences, + you probably do not want to install Kai fonts. +

+

+ The current versions of Chinese Noto Sans fonts can be found + at Noto Sans + SC for Simplified Chinese, Noto Sans + TC for Traditional Chinese, and as mentioned above + Noto Sans + HK for use in Hong Kong. +

+
+ Opendesktop fonts +
+

+ A copy of version 1.4.2 of the opendesktop-fonts + is preserved at Arch. This was a later development of + fireflysung which BLFS used to recommend, adding Kai and Mono + fonts. The name of the Sung font remains 'AR PL New Sung' so + they cannot both be installed together. +

+

+ At one time there was a 1.6 release, and more recently some + versions at github, which also included a Sans font (Odohei), + but those have dropped off the web and it is unclear if there + was a problem. Fontconfig + does not know anything about the later fonts (AR PL New Kai, + AR PL New Sung Mono) and will default to treating them as + Sans. +

+
+ UMing +
+

+ + UMing fonts – sets of Chinese Ming fonts (from Debian, + use the '.orig' tarball) in a ttc which contain variations of + Simplified and Traditional Chinese (Taiwanese, with second + variant for different bopomofo, and + Cantonese for Hong Kong). This ships with old-syntax files + which you can install to /etc/fonts/conf.d/ but see Editing Old-Style conf + files. +

+
+ WenQuanYi Zen Hei +
+

+ WenQuanYi + Zen Hei provides a Sans-Serif font which covers all CJK + scripts including Korean. Although it includes old-style conf + files, these are not required: Fontconfig will already treat these + fonts (the 'sharp' contains bitmaps, the monospace appears + not to be Mono in its ASCII part) as Sans, Serif, and + Monospace. If all you wish to do is to be able to render Han + and Korean text without worrying about the niceties of the + shapes used, the main font from this package is a good font + to use. +

+

+ Japanese + fonts: +

+

+ In Japanese, Gothic fonts are Sans, and Mincho are Serif. + BLFS used to only mention the Kochi fonts, but those appear + to now be the least-preferred of the Japanese fonts. +

+

+ Apart from the fonts detailed below, also consider Noto Sans + JP. +

+
+ IPAex fonts +
+

+ The IPAex + fonts are the current version of the IPA fonts. Use + + Google Translate on the home page, then click on the + download link for IPAex Font Ver.004.01. Unfortunately, + Fontconfig only knows about + the older IPAfonts and the forked IPA Mona font (which is not + easily available and which apparently does not meet Debian's + Free Software guidelines). If you install the IPAex fonts, + you may want to make it known to Fontconfig. Please see Preferring chosen CJK fonts for + one way to accomplish this. +

+
+ Kochi fonts +
+

+ The + Kochi Substitute fonts were the first truly libre + Japanese fonts (the earlier Kochi fonts were allegedly + plagiarized from a commercial font). +

+
+ VL Gothic +
+

+ The VL + Gothic font is a modern Japanese font in two variants + with monotonic or proportional spacing for the non-Japanese + characters. +

+

+ Korean fonts: +

+

+ In Korean, Batang or Myeongjo (the older name) are Serif, + Dotum or Gothic are the main Sans fonts. BLFS previously + recommended the Baekmuk fonts, but the Nanum and Un fonts are + now preferred to Baekmuk by Fontconfig because of user requests. +

+

+ A convenient place to see examples of these and many other + Korean fonts is Free Korean Fonts. + Click on 'Gothic Fonts' or 'All Categories -> Myeongjo + Fonts', then click on the font example to see more details + including the License, and click on the link to download it. + For Nanum, you will need to be able to read Korean to find + the download link on the page you get to. For Un there are + direct links and you can find the un-fonts-core tarball in + the releases/ directory. +

+

+ Alternatively, consider Noto Sans + KR or WenQuanYi ZenHei. +

+
+
+
+
+
+

+ Xorg Legacy +

+
+
+
+
+
+

+ Introduction to Xorg Legacy +

+

+ Xorg's ancestor (X11R1, in + 1987) at first only provided bitmap fonts, with a tool + (bdftopcf) to + assist in their installation. With the introduction of + xorg-server-1.19.0 and + libXfont2 many people will + not need them. There are still a few old packages which might + require, or benefit from, these deprecated fonts and so the + following packages are shown here. +

+
+

+ Note +

+

+ The font-adobe-100dpi package installs 100 dots per inch + versions of Courier, Helvetica, New Century Schoolbook and + Times fonts. +

+

+ The remaining font packages here provide 75dpi versions of + those fonts, and various miscellaneous fonts - mostly for + legacy encodings. Those are primarily to silence warnings + when testing Xorg. In previous versions of BLFS a lot more + legacy fonts were installed. +

+

+ Please consult the BLFS-7.10 book at + https://www.linuxfromscratch.org/blfs/view/7.10/x/x7font.html + if you wish to install any of those other fonts. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.x.org/pub/individual/ +

    +
  • +
  • +

    + Download size: 4.2 MB +

    +
  • +
  • +

    + Estimated disk space required: 30 MB +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU +

    +
  • +
+
+

+ Xorg + Legacy Dependencies +

+
+ Required +
+

+ Xorg + Fonts +

+
+
+

+ Downloading Xorg Legacy +

+

+ First, create a list of files to be downloaded. This file + will also be used to verify the integrity of the downloads + when complete: +

+
cat > legacy.dat << "EOF"
+e09b61567ab4a4d534119bba24eddfb1 util/ bdftopcf-1.1.1.tar.xz
+20239f6f99ac586f10360b0759f73361 font/ font-adobe-100dpi-1.0.4.tar.xz
+2dc044f693ee8e0836f718c2699628b9 font/ font-adobe-75dpi-1.0.4.tar.xz
+2c939d5bd4609d8e284be9bef4b8b330 font/ font-jis-misc-1.0.4.tar.xz
+6300bc99a1e45fbbe6075b3de728c27f font/ font-daewoo-misc-1.0.4.tar.xz
+fe2c44307639062d07c6e9f75f4d6a13 font/ font-isas-misc-1.0.4.tar.xz
+145128c4b5f7820c974c8c5b9f6ffe94 font/ font-misc-misc-1.1.3.tar.xz
+EOF
+

+ To download the needed files using Wget-1.25.0, use the + following commands: +

+
mkdir legacy &&
+cd    legacy &&
+grep -v '^#' ../legacy.dat | awk '{print $2$3}' | wget -i- -c \
+     -B https://www.x.org/pub/individual/ &&
+grep -v '^#' ../legacy.dat | awk '{print $1 " " $3}' > ../legacy.md5 &&
+md5sum -c ../legacy.md5
+
+
+

+ Installation of Xorg Legacy +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
for package in $(grep -v '^#' ../legacy.md5 | awk '{print $2}')
+do
+  packagedir=${package%.tar.?z*}
+  tar -xf $package
+  pushd $packagedir
+    ./configure $XORG_CONFIG
+    make
+    as_root make install
+  popd
+  rm -rf $packagedir
+  as_root /sbin/ldconfig
+done
+

+ Finally, exit the shell that was started earlier: +

+
exit
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bdftopcf +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $XORG_PREFIX/share/fonts/100dpi, + $XORG_PREFIX/share/fonts/75dpi, + $XORG_PREFIX/share/fonts/misc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ bdftopcf +

+
+

+ converts an X font from Bitmap Distribution Format + to Portable Compiled Format +

+
+
+
+
+
+
+
+
+

+ Chapter 25. Graphical Environment + Libraries +

+
+
+
+
+

+ This chapter does not contain libraries that are required to run + X. It does contain libraries + that enhance X. In some cases + the enhancement is as simple as font support. In others it is as + complex as libraries that sit between X and applications that run on X whose purpose is to standardize the look + and feel and inter-process communications for different + applications. They also assist programmers by supplying common + elements. +

+
+
+
+

+ Atkmm-2.28.4 +

+
+
+
+
+
+

+ Introduction to Atkmm +

+

+ Atkmm is the official C++ + interface for the ATK accessibility toolkit library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Atkmm Dependencies +

+
+ Required +
+

+ at-spi2-core-2.56.4 and GLibmm-2.66.8 +

+
+
+

+ Installation of Atkmm +

+

+ Install Atkmm by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libatkmm-1.6.so +
+
+ Installed Directories: + /usr/{include,lib}/atkmm-1.6 and + /usr/share/{devhelp/books/atkmm-1.6,doc/atkmm-2.28.4} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libatkmm-1.6.so +

+
+

+ contains the ATK + API classes +

+
+
+
+
+
+
+
+

+ Atkmm-2.36.3 +

+
+
+
+
+
+

+ Introduction to Atkmm +

+

+ Atkmm is the official C++ + interface for the ATK accessibility toolkit library. This + version is part of a new API for supporting gtkmm-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Atkmm Dependencies +

+
+ Required +
+

+ at-spi2-core-2.56.4 and GLibmm-2.84.0 +

+
+
+

+ Installation of Atkmm +

+

+ Install Atkmm by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libatkmm-2.36.so +
+
+ Installed Directories: + /usr/{include,lib}/atkmm-2.36 and + /usr/share/{devhelp/books/atkmm-2.36,doc/atkmm-2.28.4} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libatkmm-2.36.so +

+
+

+ contains the ATK + API classes +

+
+
+
+
+
+
+
+

+ at-spi2-core-2.56.4 +

+
+
+
+
+
+

+ Introduction to At-Spi2 Core +

+

+ The At-Spi2 Core package + contains a comprehensive accessibility framework for the + Assistive Technologies available on the GNOME platform. This includes a set of + interfaces which are implemented by other toolkits and + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ At-Spi2 Core Dependencies +

+
+ Required +
+

+ dbus-1.16.2, GLib-2.84.4 (GObject Introspection + required for GNOME), gsettings-desktop-schemas-48.0 + (Runtime), and Xorg Libraries +

+
+ Optional +
+

+ Gi-DocGen-2025.4 and sphinx-8.2.3 +

+
+
+

+ Installation of At-Spi2 Core +

+

+ Install At-Spi2 Core by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                  \
+      --prefix=/usr             \
+      --buildtype=release       \
+      -D gtk2_atk_adaptor=false \
+      -D systemd_user_dir=/tmp  &&
+ninja
+

+ Now, as the root user: +

+
ninja install &&
+rm /tmp/at-spi-dbus-bus.service
+

+ The test suite requires the glib schemas of the package to be + installed already. The tests also need to run in a graphical + environment. Now that the package is installed, test the + results by issuing: dbus-run-session ninja + test. +

+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + systemd_user_dir=/tmp: This flag puts the systemd + unit file in /tmp where it will be removed. SysV is unable to + use this file. +

+

+ -D docs=true: Use this switch if + you want to build the documentation. Note that you must have + both Gi-DocGen-2025.4 and sphinx-8.2.3 + installed on your system. +

+

+ -D + gtk2_atk_adaptor=false: This switch disables + building the GTK+-2 module for this package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libatk-1.0.so, + libatk-bridge-2.0.so, and libatspi.so +
+
+ Installed Directories: + /usr/include/atk-1.0, + /usr/include/at-spi-2.0, /usr/include/at-spi2-atk, + /usr/lib/gnome-settings-daemon-3.0, + /usr/share/defaults/at-spi2, and + /usr/share/gtk-doc/html/libatspi (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libatk-1.0.so +

+
+

+ contains functions that are used by assistive + technologies to interact with desktop applications +

+
+

+ libatk-bridge-2.0.so +

+
+

+ contains the Accessibility Toolkit GTK+ module +

+
+

+ libatspi.so +

+
+

+ contains the At-Spi2 API functions +

+
+
+
+
+
+
+
+

+ Cairo-1.18.4 +

+
+
+
+
+
+

+ Introduction to Cairo +

+

+ Cairo is a 2D graphics + library with support for multiple output devices. Currently + supported output targets include the X Window System, Win32, image buffers, + PostScript, PDF and SVG. Experimental backends include + OpenGL, Quartz and XCB file output. Cairo is designed to produce consistent + output on all output media while taking advantage of display + hardware acceleration when available (e.g. through the X + Render Extension). The Cairo + API provides operations similar to the drawing operators of + PostScript and PDF. Operations in Cairo include stroking and filling cubic + Bézier splines, transforming and compositing translucent + images, and antialiased text rendering. All drawing + operations can be transformed by any affine + transformation (scale, rotation, shear, etc.) +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Cairo Dependencies +

+
+ Required +
+

+ libpng-1.6.50 and Pixman-0.46.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ ghostscript-10.05.1, GTK-Doc-1.34.0, libdrm-2.4.125, + librsvg-2.61.0, libxml2-2.14.5, + LZO-2.10, + Poppler-25.08.0, Valgrind-3.25.1, + GTK+-2, + and libspectre +

+
+

+ Note +

+

+ There is a circular dependency between cairo and harfbuzz. + If cairo is built before harfbuzz, it is necessary to + rebuild cairo after harfbuzz in order to build pango. +

+
+
+
+

+ Installation of Cairo +

+

+ Install Cairo by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not have a working test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D xlib-xcb=enabled: This switch + enables several experimental Xlib/XCB functions used by some + window managers. +

+

+ -D gtk_doc=true: Use this + parameter if GTK-Doc is installed and you wish to create and + install the documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cairo-trace +
+
+ Installed Libraries: + libcairo.so, libcairo-gobject.so, + and libcairo-script-interpreter.so +
+
+ Installed Directories: + /usr/include/cairo and + /usr/lib/cairo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ cairo-trace +

+
+

+ generates a log of all calls made by an application + to Cairo +

+
+

+ libcairo.so +

+
+

+ contains the 2D graphics functions required for + rendering to the various output targets +

+
+

+ libcairo-gobject.so +

+
+

+ contains functions that integrate Cairo with Glib's GObject type system +

+
+

+ libcairo-script-interpreter.so +

+
+

+ contains the script interpreter functions for + executing and manipulating Cairo execution traces +

+
+
+
+
+
+
+
+

+ libcairomm-1.0 + (cairomm-1.14.5) +

+
+
+
+
+
+

+ Introduction to libcairomm-1.0 +

+

+ The libcairomm-1.0 package + provides a C++ interface to Cairo. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libcairomm-1.0 Dependencies +

+
+ Required +
+

+ Cairo-1.18.4 and libsigc++-2.12.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of libcairomm-1.0 +

+

+ Install Cairomm-1.0 by + running the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup ..             \
+      --prefix=/usr        \
+      --buildtype=release  \
+      -D build-tests=true  \
+      -D boost-shared=true &&
+ninja
+

+ To run the test suite, run: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D build-tests=true: + This switch is for building the unit tests. Remove if you + have not installed Boost-1.89.0. +

+

+ -D boost-shared=true: + This switch has the package use the shared version of boost + libraries. It is required if you have not installed the boost + static libraries, and you have passed -D build-tests=true. +

+

+ -D build-documentation=true: This + switch builds the html documentation if doxygen is installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libcairomm-1.0.so +
+
+ Installed Directories: + /usr/{lib,include}/cairomm-1.0 and + /usr/share/{devhelp/books,doc}/cairomm-1.0 + (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libcairomm-1.0.so +

+
+

+ contains the Cairo + API classes +

+
+
+
+
+
+
+
+

+ libcairomm-1.16 (cairomm-1.18.0) +

+
+
+
+
+
+

+ Introduction to libcairomm-1.16 +

+

+ The libcairomm-1.16 package + provides a C++ interface to Cairo. This version of the API is needed + to support gtkmm-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libcairomm-1.16 Dependencies +

+
+ Required +
+

+ Cairo-1.18.4 and libsigc++-3.6.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of libcairomm-1.16 +

+

+ Install Cairomm-1.16 by + running the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup ..             \
+      --prefix=/usr        \
+      --buildtype=release  \
+      -D build-tests=true  \
+      -D boost-shared=true &&
+ninja
+

+ To run the test suite, run: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D build-tests=true: + This switch is for building the unit tests. Remove if you + have not installed Boost-1.89.0. +

+

+ -D boost-shared=true: + This switch has the package use the shared version of boost + libraries. It is required if you have not installed the boost + static libraries, and you have passed -D build-tests=true. +

+

+ -D build-documentation=true: This + switch builds the html documentation if doxygen is installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libcairomm-1.16.so +
+
+ Installed Directories: + /usr/{lib,include}/cairomm-1.16 and + /usr/share/{devhelp/books,doc}/cairomm-1.16 + (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libcairomm-1.16.so +

+
+

+ contains the Cairo + API classes +

+
+
+
+
+
+
+
+

+ colord-gtk-0.3.1 +

+
+
+
+
+
+

+ Introduction to Colord GTK +

+

+ The Colord GTK package + contains GTK+ bindings for + Colord. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Colord GTK Dependencies +

+
+ Required +
+

+ colord-1.4.8 and GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ docbook-xml-5.0, docbook-xsl-ns-1.79.2, libxslt-1.1.43 (to build the man page), + and GTK-Doc-1.34.0 +

+
+
+

+ Installation of Colord GTK +

+
+

+ Warning +

+

+ If building the documentation ninja -j1 must be used. +

+
+

+ Install Colord GTK by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk4=true        \
+            -D vapi=true        \
+            -D docs=false       \
+            -D man=false        \
+            ..                  &&
+ninja
+

+ If docbook-xml-5.0, docbook-xsl-ns-1.79.2, and + libxslt-1.1.43 are installed, build the + man page: +

+
sed '/class="manual"/i \
+     <refmiscinfo class="source">colord-gtk</refmiscinfo>' \
+    -i ../man/*.xml &&
+meson configure -D man=true &&
+ninja
+

+ To test the results, issue: ninja test. The tests need + to be run from an X session, and may require a color profile + for your primary display. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D vapi=true: This + switch enables building of the Vala bindings. Remove this + switch if you don't have Vala-0.56.18 installed. +

+

+ -D gtk4=true: This + switch enables building the GTK-4 bindings for colord. Set + this option to 'false' if you do not have GTK-4.18.6 installed. +

+

+ -D docs=false: This + switch disables building gtk-doc based documentation. Even if + gtk-doc is installed, you will need the namespaced versions + of the Docbook XSL stylesheets. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cd-convert +
+
+ Installed Libraries: + libcolord-gtk.so and + libcolord-gtk4.so +
+
+ Installed Directories: + /usr/include/colord-1/colord-gtk + and /usr/share/gtk-doc/html/colord-gtk +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ cd-convert +

+
+

+ is a Color Manager Testing Tool +

+
+

+ libcolord-gtk.so +

+
+

+ contains the Colord GTK+ bindings +

+
+

+ libcolord-gtk4.so +

+
+

+ contains the Colord GTK-4 bindings +

+
+
+
+
+
+
+
+

+ FLTK-1.4.4 +

+
+
+
+
+
+

+ Introduction to FLTK +

+

+ FLTK (pronounced "fulltick") is a cross-platform C++ GUI + toolkit. FLTK provides modern GUI functionality and supports + 3D graphics via OpenGL and its built-in GLUT emulation + libraries used for creating graphical user interfaces for + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ FLTK + Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Recommended +
+ +
+ Optional +
+

+ alsa-lib-1.2.14, desktop-file-utils-0.28, + Doxygen-1.14.0, GLU-9.0.3, Mesa-25.1.8, and texlive-20250308 (or install-tl-unx) +

+
+
+

+ Installation of FLTK +

+
+

+ Note +

+

+ The tar extraction directory is fltk-1.4.4 and not + fltk-1.4.4-source as indicated by the tarball name. +

+
+

+ Install FLTK by running the + following commands: +

+
sed -i -e '/cat./d' documentation/Makefile &&
+
+./configure --prefix=/usr --enable-shared  &&
+make
+

+ If you wish to create the API documentation, issue: +

+
make -C documentation html
+

+ The tests for the package are interactive. To execute the + tests, run test/unittests. In + addition, there are 70 other executable test programs in the + test directory that can be run + individually. +

+

+ Now, install the package and remove unneeded static + libraries. As the root user: +

+
make docdir=/usr/share/doc/fltk-1.4.4 install &&
+rm -vf /usr/lib/libfltk*.a
+

+ If desired, install some example games built as a part of the + tests, extra documentation and example programs. As the + root user: +

+
make -C test          docdir=/usr/share/doc/fltk-1.4.4 install-linux &&
+make -C documentation docdir=/usr/share/doc/fltk-1.4.4 install-linux
+

+ If you downloaded the optional html documentation, install it + as the root user: +

+
tar -C /usr/share/doc/fltk-1.4.4 --strip-components=4 -xf ../fltk-1.4.4-docs-html.tar.gz
+
+
+
+

+ Command Explanations +

+

+ sed ... + documentation/Makefile: Avoid installing + pages in /usr/share/man/cat*. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + blocks, checkers, fltk-config, + fluid, and sudoku +
+
+ Installed Libraries: + libfltk.so, libfltk_forms.so, + libfltk_gl.so, and libfltk_images.so +
+
+ Installed Directories: + /usr/include/FL and + /usr/share/doc/fltk-1.4.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ blocks +

+
+

+ is a FLTK-based block elimination game +

+
+

+ checkers +

+
+

+ is a FLTK-based version of the game of checkers +

+
+

+ fltk-config +

+
+

+ is a utility script that can be used to get + information about the current version of FLTK that + is installed on the system +

+
+

+ fluid +

+
+

+ is an interactive GUI designer for FLTK +

+
+

+ sudoku +

+
+

+ is an implementation of the popular Sudoku game +

+
+

+ libfltk.so +

+
+

+ contains functions that provide an API to implement + graphical user interfaces +

+
+
+
+
+
+
+
+

+ Freeglut-3.6.0 +

+
+
+
+
+
+

+ Introduction to Freeglut +

+

+ Freeglut is intended to be a + 100% compatible, completely opensourced clone of the GLUT + library. GLUT is a window system independent toolkit for + writing OpenGL programs, implementing a simple windowing API, + which makes learning about and exploring OpenGL programming + very easy. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Freeglut Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and Mesa-25.1.8 +

+
+ Recommended +
+ +
+
+

+ Installation of Freeglut +

+

+ First, fix a problem when building with gcc-15: +

+
sed -e '/Context/s/()/(SFG_PlatformDisplay, SFG_WindowContextType)/' \
+    -i src/egl/fg_init_egl.h
+

+ Install Freeglut by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -D FREEGLUT_BUILD_DEMOS=OFF         \
+      -D FREEGLUT_BUILD_STATIC_LIBS=OFF   \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -D + FREEGLUT_BUILD_DEMOS=OFF: Disable building + optional demo programs. Note that if you choose to build + them, their installation must be done manually. The demo + programs are limited and installation is not recommended. +

+

+ -D + FREEGLUT_BUILD_STATIC_LIBS=OFF: Do not build the + static library. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libglut.so +
+
+ Installed Directories: + /usr/lib/cmake/FreeGLUT +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libglut.so +

+
+

+ contains functions that implement the OpenGL + Utility Toolkit +

+
+
+
+
+
+
+
+

+ gdk-pixbuf-2.42.12 +

+
+
+
+
+
+

+ Introduction to Gdk Pixbuf +

+

+ The Gdk Pixbuf package is a + toolkit for image loading and pixel buffer manipulation. It + is used by GTK+ 3 to load + and manipulate images. In the past it was distributed as part + of GTK+ 2, but it was split + off into a separate package in preparation for the change to + GTK+ 3. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gdk + Pixbuf Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection required + for GNOME), libjpeg-turbo-3.0.1, libpng-1.6.50, and shared-mime-info-2.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 (to generate + documentation), libavif-1.3.0 (runtime dependency, needed + for loading AVIF images), libjxl-0.11.1 (runtime dependency, + needed for loading JPEG XL images), and webp-pixbuf-loader-0.2.7 + (runtime dependency, needed for loading WebP images) +

+
+
+

+ Installation of Gdk Pixbuf +

+

+ Install Gdk Pixbuf by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D others=enabled   \
+      --wrap-mode=nofallback &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/docs_dir =/s@\$@ / 'gdk-pixbuf-2.42.12'@" -i ../docs/meson.build &&
+meson configure -D gtk_doc=true                                        &&
+ninja
+

+ To test the results, issue: ninja test. The tests make + a heavy use of disk. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package on to your system using a + “DESTDIR” method, an important file + was not installed and should be copied and/or generated. + Generate it using the following command as the root user: +

+
gdk-pixbuf-query-loaders --update-cache
+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --wrap-mode=nofallback: This + switch prevents meson from using subproject + fallbacks for any dependency declarations in the build files, + preventing it from downloading any optional dependencies + which are not installed on the system. +

+

+ -D others=enabled: + Enable the loaders for various image formats, for example BMP + and XPM. +

+

+ -D man=false: Use this option if + you do not want to generate manual pages, or if you do not + want to install docutils-0.21.2. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gdk-pixbuf-csource, + gdk-pixbuf-pixdata, gdk-pixbuf-query-loaders, and + gdk-pixbuf-thumbnailer +
+
+ Installed Libraries: + libgdk_pixbuf-2.0.so +
+
+ Installed Directories: + /usr/{include,lib}/gdk-pixbuf-2.0, + /usr/libexec/installed-tests/gdk-pixbuf, + /usr/share/installed-tests/gdk-pixbuf, + /usr/share/gtk-doc/html/gdk-pixbuf, and + /usr/share/thumbnailers +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gdk-pixbuf-csource +

+
+

+ is a small utility that generates C code containing + images, used for compiling images directly into + programs +

+
+

+ gdk-pixbuf-pixdata +

+
+

+ is a tool used to convert GdkPixbuf to GdkPixdata +

+
+

+ gdk-pixbuf-query-loaders +

+
+

+ collects information about loadable modules for + Gdk Pixbuf and + writes it to the default cache file location, or to + stdout +

+
+

+ gdk-pixbuf-thumbnailer +

+
+

+ creates thumbnails of pictures for use in other + applications +

+
+

+ libgdk_pixbuf-2.0.so +

+
+

+ contains functions used to load and render images +

+
+
+
+
+
+
+
+

+ GLEW-2.2.0 +

+
+
+
+
+
+

+ Introduction to GLEW +

+

+ GLEW is the OpenGL Extension + Wrangler Library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ glew + Dependencies +

+
+ Required +
+

+ Mesa-25.1.8 +

+
+
+

+ Installation of GLEW +

+

+ Install GLEW by running the + following commands: +

+
sed -i 's%lib64%lib%g' config/Makefile.linux &&
+sed -i -e '/glew.lib.static:/d' \
+       -e '/0644 .*STATIC/d'    \
+       -e 's/glew.lib.static//' Makefile     &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install.all
+
+
+

+ Command Explanations +

+

+ sed -i 's%lib64%lib%g' + ...: This ensures that the library is + installed in /usr/lib. +

+

+ sed -i -e '/glew.lib.static:/d' + ...: This suppresses the static library. +

+

+ make + install.all: This installs the programs as + well as the library. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + glewinfo and visualinfo +
+
+ Installed Library: + libGLEW.so +
+
+ Installed Directory: + /usr/include/GL +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ glewinfo +

+
+

+ provides information about the supported extensions +

+
+

+ visualinfo +

+
+

+ is an extended version of glxinfo +

+
+

+ libGLEW.so +

+
+

+ provides functions to access OpenGL extensions +

+
+
+
+
+
+
+
+

+ glslang-15.4.0 +

+
+
+
+
+
+

+ Introduction to Glslang +

+

+ The Glslang package contains + an frontend and validator for OpenGL, OpenGL ES, and Vulkan + shaders. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Glslang Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and SPIRV-Tools-1.4.321.0 +

+
+
+

+ Installation of Glslang +

+

+ Install Glslang by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr     \
+      -D CMAKE_BUILD_TYPE=Release      \
+      -D ALLOW_EXTERNAL_SPIRV_TOOLS=ON \
+      -D BUILD_SHARED_LIBS=ON          \
+      -D GLSLANG_TESTS=ON              \
+      -G Ninja .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + ALLOW_EXTERNAL_SPIRV_TOOLS=ON: This switch allows + the build system to use the system-installed copy of + SPIRV-Tools-1.4.321.0, instead of + downloading and installing it's own copy. +

+

+ -D + BUILD_SHARED_LIBS=ON: This switch builds shared + versions of the libraries, and does not install static + versions of them. +

+

+ -D GLSLANG_TESTS=ON: + This switch builds the tests for the package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + glslang, glslang-validator (symlink + to glslang), and spirv-remap +
+
+ Installed Libraries: + libglslang.so, + libglslang-default-resource-limits.so, libSPIRV.so, and + libSPVRemapper.so +
+
+ Installed Directories: + /usr/include/glslang and + /usr/lib/cmake/glslang +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ glslang +

+
+

+ provides a front end and validator for OpenGL, + OpenGL ES, and Vulkan shaders +

+
+

+ libglslang.so +

+
+

+ contains functions that provide a front-end and + validator for OpenGL, OpenGL ES, and Vulkan shaders + to other programs +

+
+

+ libSPIRV.so +

+
+

+ provides a front-end and generator for SPIR-V + binaries +

+
+

+ libSPVRemapper.so +

+
+

+ provides a remapper for SPIR-V binaries +

+
+
+
+
+
+
+
+

+ GLU-9.0.3 +

+
+
+
+
+
+

+ Introduction to GLU +

+

+ This package provides the Mesa OpenGL Utility library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 06a4fff9179a98ea32ef41b6d83f6b19 +

    +
  • +
  • +

    + Download size: 216 KB +

    +
  • +
  • +

    + Estimated disk space required: 5.9 MB +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU +

    +
  • +
+
+

+ GLU + Dependencies +

+
+ Required +
+

+ Mesa-25.1.8 +

+
+
+

+ Installation of GLU +

+

+ Install GLU by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..              \
+      --prefix=$XORG_PREFIX \
+      -D gl_provider=gl     \
+      --buildtype=release   &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install &&
+rm -vf /usr/lib/libGLU.a
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libGLU.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libGLU.so +

+
+

+ is the Mesa OpenGL + Utility library +

+
+
+
+
+
+
+
+

+ GOffice-0.10.59 +

+
+
+
+
+
+

+ Introduction to GOffice +

+

+ The GOffice package contains + a library of GLib/GTK document centric objects and + utilities. This is useful for performing common operations + for document centric applications that are conceptually + simple, but complex to implement fully. Some of the + operations provided by the GOffice library include support for + plugins, load/save routines for application documents and + undo/redo functions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GOffice Dependencies +

+
+ Required +
+

+ GTK-3.24.50, libgsf-1.14.53, librsvg-2.61.0, + libxslt-1.1.43, and Which-2.23 +

+
+ Optional +
+

+ GLib-2.84.4 (with GObject Introspection), + ghostscript-10.05.1, gsettings-desktop-schemas-48.0, + GTK-Doc-1.34.0, Lasem, and + libspectre +

+
+
+

+ Installation of GOffice +

+

+ Install GOffice by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ If you wish to run the tests, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgoffice-0.10.so +
+
+ Installed Directories: + /usr/include/libgoffice-0.10, + /usr/{lib,share}/goffice, and + /usr/share/gtk-doc/html/goffice-0.10 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgoffice-0.10.so +

+
+

+ contains API functions to provide support for + document centric objects and utilities +

+
+
+
+
+
+
+
+

+ Graphene-1.10.8 +

+
+
+
+
+
+

+ Introduction to Graphene +

+

+ The Graphene package + provides a thin layer of types for graphics libraries. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Graphene Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+
+

+ Installation of Graphene +

+

+ Install Graphene by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this switch + if you have GTK-Doc-1.34.0 installed and wish to + generate the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgraphene-1.0.so +
+
+ Installed Directories: + /usr/include/graphene-1.0, + /usr/lib/graphene-1.0, + /usr/{libexec,share}/installed-tests/graphene-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgraphene-1.0.so +

+
+

+ contains functions that provide a thin layer of + types for graphics libraries +

+
+
+
+
+
+
+
+

+ GTK-3.24.50 +

+
+
+
+
+
+

+ Introduction to GTK3 +

+

+ The GTK3 package contains + libraries used for creating graphical user interfaces for + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/gtk/3.24/gtk-3.24.50.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 0b3c6d1d6fc321a32624e65750b60f5d +

    +
  • +
  • +

    + Download size: 13 MB +

    +
  • +
  • +

    + Estimated disk space required: 248 MB (add 8 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.7 SBU (using parallelism=4; add + 0.2 SBU for tests) +

    +
  • +
+
+

+ GTK3 + Dependencies +

+
+ Required +
+

+ at-spi2-core-2.56.4, gdk-pixbuf-2.42.12, libepoxy-1.5.10, + and Pango-1.56.4 +

+
+ Recommended +
+ +
+ Recommended (Required if building + GNOME) +
+ +
+ Optional +
+

+ colord-1.4.8, Cups-2.4.12, GTK-Doc-1.34.0, + libcloudproviders-0.3.6, + PyAtSpi2-2.46.1 (for tests), sassc-3.6.2, + tinysparql-3.9.2, and PAPI +

+
+
+

+ Installation of GTK3 +

+

+ Install GTK3 by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D man=true         \
+      -D broadway_backend=true &&
+ninja
+

+ To test the results you need a graphical session, then issue + dbus-run-session ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+

+ One test named check-cursor-names is known to fail if + adwaita-icon-theme-48.1 is not + installed. +

+
+

+ Note +

+

+ If you installed the package on to your system using a + “DESTDIR” method, an important file + was not installed and must be copied and/or generated. + Generate it using the following command as the root user: +

+
gtk-query-immodules-3.0 --update-cache
+
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Command Explanations +

+

+ -D + broadway_backend=true: This switch enables the + HTML5 GTK backend. +

+

+ -D man=true: This + switch allows generating manual pages. +

+

+ -D gtk_doc=true: This switch + enables building documentation. It requires GTK-Doc-1.34.0. +

+

+ -D tracker3=true: This switch + enables the search function based on TinySPARQL in the GTK3 + file chooser dialog. It requires tinysparql-3.9.2. +

+

+ -D cloudproviders=true: Use this + switch if you have libcloudproviders-0.3.6 + installed and wish to enable support for cloud providers in a + file chooser window. +

+
+
+

+ Configuring GTK3 +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ ~/.config/gtk-3.0/settings.ini and + /etc/gtk-3.0/settings.ini +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ GTK3 themes change the way + a GTK3 application looks. + An icon theme can be used to change the icons that appear + on the application's toolbar. If you have installed a + GTK3 theme (e.g. the + Adwaita theme built in GTK3), an icon theme (such as + oxygen-icons-6.0.0) and/or a font + (Dejavu fonts), you can set your + preferences in ~/.config/gtk-3.0/settings.ini, or the + default system wide configuration file (as the root user), in /etc/gtk-3.0/settings.ini. For the local + user an example is: +

+
mkdir -vp ~/.config/gtk-3.0
+cat > ~/.config/gtk-3.0/settings.ini << "EOF"
+[Settings]
+gtk-theme-name = Adwaita
+gtk-icon-theme-name = oxygen
+gtk-font-name = DejaVu Sans 12
+gtk-cursor-theme-size = 18
+gtk-toolbar-style = GTK_TOOLBAR_BOTH_HORIZ
+gtk-xft-antialias = 1
+gtk-xft-hinting = 1
+gtk-xft-hintstyle = hintslight
+gtk-xft-rgba = rgb
+gtk-cursor-theme-name = Adwaita
+EOF
+

+ There are many settings keys, some with default values. You + can find them at Settings: + GTK3 Reference Manual. There are many more themes + available at https://www.gnome-look.org/browse/ + and other places. +

+

+ As part of GTK-3.0's redesign, the scroll bar buttons are + no longer visible on the scrollbar in many applications. If + this functionality is desired, modify the gtk.css file and restore them using the + following command: +

+
cat > ~/.config/gtk-3.0/gtk.css << "EOF"
+*  {
+   -GtkScrollbar-has-backward-stepper: 1;
+   -GtkScrollbar-has-forward-stepper: 1;
+}
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + broadwayd, gtk3-demo, + gtk3-demo-application, gtk3-icon-browser, + gtk3-widget-factory, gtk-builder-tool, + gtk-encode-symbolic-svg, gtk-launch, + gtk-query-immodules-3.0, gtk-query-settings, and + gtk-update-icon-cache +
+
+ Installed Libraries: + libgailutil-3.so, libgdk-3.so, and + libgtk-3.so +
+
+ Installed Directories: + /etc/gtk-3.0, + /usr/include/{gail,gtk}-3.0, /usr/{lib,share}/gtk-3.0, + and /usr/share/themes/{Default,Emacs}/gtk-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ broadwayd +

+
+

+ provides support for displaying GTK3 applications in a web + browser, using HTML5 and web sockets +

+
+

+ gtk3-demo +

+
+

+ is a simple program that demonstrates some of the + tasks that can be done with GTK3 +

+
+

+ gtk3-demo-application +

+
+

+ is a simple GTK3 + application +

+
+

+ gtk3-icon-browser +

+
+

+ is a utility to explore the icons in the current + icon theme. It shows icons in various sizes, their + symbolic variants where available, as well as a + description of the icon and its context +

+
+

+ gtk3-widget-factory +

+
+

+ is a program to view GTK3 themes and widgets +

+
+

+ gtk-builder-tool +

+
+

+ performs various operations on GtkBuilder .ui files +

+
+

+ gtk-encode-symbolic-svg +

+
+

+ converts symbolic SVG icons into specially prepared + PNG files. GTK3 + can load and recolor these PNGs, just like original + SVGs, but loading them is much faster +

+
+

+ gtk-launch +

+
+

+ launches an application using the given name. The + name should match the application desktop file + name, as residing in /usr/share/applications, with or + without the '.desktop' suffix +

+
+

+ gtk-query-immodules-3.0 +

+
+

+ collects information about loadable input method + modules for GTK3 + and writes it to the default cache file location, + or to standard output +

+
+

+ gtk-query-settings +

+
+

+ provides a complete listing of all settings related + to GTK3 +

+
+

+ gtk-update-icon-cache +

+
+

+ is an icon theme caching utility that creates + mmap()able cache files for icon themes +

+
+

+ libgailutil-3.so +

+
+

+ contains functions that implement the accessibility + interfaces defined by the GNOME Accessibility Toolkit +

+
+

+ libgdk-3.so +

+
+

+ contains functions that act as a wrapper around the + low-level drawing and windowing functions provided + by the underlying graphics system +

+
+

+ libgtk-3.so +

+
+

+ contains functions that provide an API to implement + graphical user interfaces +

+
+
+
+
+
+
+
+

+ GTK-4.18.6 +

+
+
+
+
+
+

+ Introduction to GTK 4 +

+

+ The GTK 4 package contains + libraries used for creating graphical user interfaces for + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/gtk/4.18/gtk-4.18.6.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 9ad89b1e6a71ac3a06ca8bbeed6fd466 +

    +
  • +
  • +

    + Download size: 17 MB +

    +
  • +
  • +

    + Estimated disk space required: 890 MB (with docs; add + 132 MB for tests) +

    +
  • +
  • +

    + Estimated build time: 1.4 SBU (using parallelism=4; + with docs; add 3.6 SBU for tests) +

    +
  • +
+
+

+ GTK + 4 Dependencies +

+
+ Required +
+

+ gdk-pixbuf-2.42.12, graphene-1.10.8, + ISO Codes-4.18.0, libepoxy-1.5.10, + libxkbcommon-1.11.0, Pango-1.56.4, + PyGObject-3.52.3, and wayland-protocols-1.45 +

+
+ Recommended +
+ +
+ Recommended (Required if building + GNOME) +
+ +
+ Optional +
+

+ Avahi-0.8 + (for some tests), colord-1.4.8, Cups-2.4.12, docutils-0.21.2, + Gi-DocGen-2025.4, Highlight-4.16 + (runtime, only used by gtk4-demo for syntax + highlighting of demo source code), libcloudproviders-0.3.6, + sassc-3.6.2, tinysparql-3.9.2, + accesskit-c, + cpdb, + pydbus (for some + tests), and sysprof +

+
+
+

+ Installation of GTK 4 +

+

+ First, fix a problem when building with gcc-15: +

+
sed -e '939 s/= { 0, }//'                                       \
+    -e '940 a memset (&transform, 0, sizeof(GtkCssTransform));' \
+    -i gtk/gtkcsstransformvalue.c
+

+ Install GTK 4 by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr            \
+            --buildtype=release      \
+            -D broadway-backend=true \
+            -D introspection=enabled \
+            -D vulkan=enabled        \
+            .. &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "s@'doc'@& / 'gtk-4.18.6'@" -i ../docs/reference/meson.build &&
+meson configure -D documentation=true                            &&
+ninja
+

+ To run the tests, issue: +

+
env -u{GALLIUM_DRIVER,MESA_LOADER_DRIVER_OVERRIDE}          \
+    LIBGL_ALWAYS_SOFTWARE=1 VK_LOADER_DRIVERS_SELECT='lvp*' \
+    dbus-run-session meson test --setup x11                 \
+                                --no-suite={headless,needs-udmabuf}
+

+ If you are in a Wayland session, replace the one occurrence + of x11 with wayland. Many tests will fail if + ~/.config/gtk-4.0/settings.ini + exists and the gtk-modules line is not commented out. Several + other tests may fail for unknown reasons. On systems with + NVIDIA graphics cards, the tests may take significantly + longer. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + broadway-backend=true: This switch enables the + HTML5 GDK backend. +

+

+ -D + introspection=enabled: This switch enables using + GObject Introspection to generate GIR bindings of this + packages. These bindings are required by GNOME. +

+

+ -D cloudproviders=enabled: Use + this switch if you have libcloudproviders-0.3.6 + installed and wish to enable support for cloud providers in a + file chooser window. +

+

+ -D tracker=enabled: Use this + switch if you have tinysparql-3.9.2 installed and wish to + use search functionality when running a file chooser. +

+

+ -D colord=enabled: Use this + switch if you have colord-1.4.8 installed and wish to use + colord with the CUPS printing backend. +

+

+ -D man-pages=true: Use this + switch if you have docutils-0.21.2 installed and wish to + generate the man pages. +

+

+ -D sysprof=enabled: Use this + switch if you have sysprof installed + and wish to enable tracing support for GTK4-based + applications. +

+

+ -D vulkan=disabled: Use this + switch instead of -D + vulkan=enabled if you don't have Vulkan-Loader-1.4.321 or + glslc from shaderc-2025.3 + installed. It will disable the Vulkan backend that the + upstream prefers to use on Wayland-based graphical + environments. +

+

+ LIBGL_ALWAYS_SOFTWARE=1 and + VK_LOADER_DRIVERS_SELECT='lvp*': + Force the test suite to use the softpipe or llvmpipe Gallium + driver and the lavapipe Vulkan driver from Mesa. The test + suite is so sensitive that the minor differences caused by a + different Mesa driver can trigger test failures. +

+

+ env + -u{GALLIUM_DRIVER,MESA_LOADER_DRIVER_OVERRIDE}: + Unset variables which may conflict with LIBGL_ALWAYS_SOFTWARE=1. +

+

+ --no-suite={headless,needs-udmabuf}: + Disable the tests requiring the external dependency pydbus, + and the tests requiring the device node /dev/udmabuf. The device node does not + exist if the feature is not enabled in the kernel + configuration, and even if it exists it + cannot be accessed as unprivileged users. +

+
+
+

+ Configuring GTK 4 +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ ~/.config/gtk-4.0/settings.ini and + /usr/share/gtk-4.0/settings.ini +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ GTK 4 themes change the + way a GTK 4 application + looks. An icon theme can be used to change the icons that + appear on the application's toolbar. If you have installed + a GTK 4 theme (e.g. the + Adwaita theme built in GTK + 4), an icon theme (such as oxygen-icons-6.0.0) and/or a font + (Dejavu fonts), you can set your + preferences in ~/.config/gtk-4.0/settings.ini, or the + default system-wide configuration file (as the root user), in /usr/share/gtk-4.0/settings.ini. For the + local user, an example is: +

+
mkdir -pv ~/.config/gtk-4.0
+cat > ~/.config/gtk-4.0/settings.ini << "EOF"
+[Settings]
+gtk-theme-name = Adwaita
+gtk-icon-theme-name = oxygen
+gtk-font-name = DejaVu Sans 12
+gtk-cursor-theme-size = 18
+gtk-xft-antialias = 1
+gtk-xft-hinting = 1
+gtk-xft-hintstyle = hintslight
+gtk-xft-rgba = rgb
+gtk-cursor-theme-name = Adwaita
+EOF
+

+ There are many settings keys, some with default values. You + can find them at Settings: + GTK 4 Reference Manual. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gtk4-broadwayd, gtk4-builder-tool, + gtk4-demo, gtk4-demo-application, + gtk4-encode-symbolic-svg, gtk4-image-tool, gtk4-launch, + gtk4-node-editor, gtk4-path-editor, gtk4-print-editor, + gtk4-query-settings, gtk4-rendernode-tool, + gtk4-update-icon-cache, and gtk4-widget-factory +
+
+ Installed Libraries: + libgtk-4.so +
+
+ Installed Directories: + /usr/include/gtk-4.0, + /usr/lib/gtk-4.0, and /usr/share/gtk-4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gtk4-broadwayd +

+
+

+ provides support for displaying GTK 4 applications + in a web browser using HTML5 and web sockets +

+
+

+ gtk4-builder-tool +

+
+

+ performs various operations on GtkBuilder .ui files +

+
+

+ gtk4-demo +

+
+

+ is a simple program that demonstrates some of the + tasks that can be done with GTK 4 +

+
+

+ gtk4-demo-application +

+
+

+ is a simple GTK 4 application which is useful for + testing +

+
+

+ gtk4-encode-symbolic-svg +

+
+

+ converts symbolic SVG icons into special PNG files. + GTK 4 can load and recolor these PNGs, just like + original SVGs, but loading them is much faster +

+
+

+ gtk4-image-tool +

+
+

+ performs various operations on images, including + comparisons, conversions, listing information on + the images, relabeling the images, and showing the + images +

+
+

+ gtk4-launch +

+
+

+ launches an application using the given name. The + name should match the application .desktop file + name (as seen in /usr/share/applications), with or + without the '.desktop' extension +

+
+

+ gtk4-node-editor +

+
+

+ is a utility to show and edit render node files. + Such render node files can be obtained e.g. from + the GTK inspector +

+
+

+ gtk4-path-tool +

+
+

+ performs various tasks on paths, including + decompositions, reversals, restrictions, rendering, + displaying the path, and listing information about + the paths +

+
+

+ gtk4-print-editor +

+
+

+ is a simple program to demonstrate printing using + GTK 4 applications +

+
+

+ gtk4-query-settings +

+
+

+ provides a complete listing of all settings related + to GTK 4 +

+
+

+ gtk4-rendernode-tool +

+
+

+ performs various tasks on GTK render nodes, + including benchmarks, comparisons, extracting data + URLs, displaying information about the nodes, + displaying the nodes, and taking screenshots of + nodes +

+
+

+ gtk4-update-icon-cache +

+
+

+ is an icon theme caching utility that creates + mmap()able cache files for icon themes +

+
+

+ gtk4-widget-factory +

+
+

+ is a program to view GTK 4 themes and widgets +

+
+

+ libgtk-4.so +

+
+

+ contains functions that provide an API to implement + graphical user interfaces +

+
+
+
+
+
+
+
+

+ Gtkmm-3.24.10 +

+
+
+
+
+
+

+ Introduction to Gtkmm +

+

+ The Gtkmm package provides a + C++ interface to GTK+ 3. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gtkmm Dependencies +

+
+ Required +
+

+ Atkmm-2.28.4, GTK-3.24.50, and Pangomm-2.46.4 +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of Gtkmm +

+

+ Install Gtkmm by running the + following commands: +

+
mkdir gtkmm3-build &&
+cd    gtkmm3-build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. Note that you + must be in a graphical environment, as the tests try to open + some windows. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you have built the documentation (see Command Explanations + below) it was installed to /usr/share/doc/gtkmm-3.0. For consistency, + move it to a versioned directory as the root user: +

+
mv -v /usr/share/doc/gtkmm-3.0 /usr/share/doc/gtkmm-3.24.10
+
+
+

+ Command Explanations +

+

+ -D build-documentation=true: If + you have installed Doxygen-1.14.0 this define will build + and install the documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgdkmm-3.0.so and + libgtkmm-3.0.so +
+
+ Installed Directories: + /usr/include/gdkmm-3.0, + /usr/include/gtkmm-3.0, /usr/lib/gdkmm-3.0, + /usr/lib/gtkmm-3.0, and optionally + /usr/share/{devhelp/books/gtkmm-3.0,doc/gtkmm-3.24.10} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgdkmm-3.0.so +

+
+

+ contains the GDK API classes +

+
+

+ libgtkmm-3.0.so +

+
+

+ contains the GTK+ + 3 API classes +

+
+
+
+
+
+
+
+

+ Gtkmm-4.18.0 +

+
+
+
+
+
+

+ Introduction to Gtkmm +

+

+ The Gtkmm package provides a + C++ interface to GTK-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gtkmm Dependencies +

+
+ Required +
+

+ GTK-4.18.6 and Pangomm-2.56.1 +

+
+ Optional +
+

+ Doxygen-1.14.0 and Vulkan-Loader-1.4.321 +

+
+
+

+ Installation of Gtkmm +

+

+ Install Gtkmm by running the + following commands: +

+
mkdir gtkmm4-build &&
+cd    gtkmm4-build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. Note that you + must be in a graphical environment, as the tests try to open + some windows. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you have built the documentation (see Command Explanations + below) it was installed to /usr/share/doc/gtkmm-4.0. For consistency, + move it to a versioned directory as the root user: +

+
mv -v /usr/share/doc/gtkmm-4.0 /usr/share/doc/gtkmm-4.18.0
+
+
+

+ Command Explanations +

+

+ -D build-documentation=true: If + you have installed Doxygen-1.14.0 this define will build + and install the documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgdkmm-4.0.so and + libgtkmm-4.0.so +
+
+ Installed Directories: + /usr/include/gdkmm-4.0, + /usr/include/gtkmm-4.0, /usr/lib/gdkmm-4.0, + /usr/lib/gtkmm-4.0, and optionally + /usr/share/{devhelp/books/gtkmm-4.0,doc/gtkmm-4.18.0} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgdkmm-4.0.so +

+
+

+ contains the GDK API classes +

+
+

+ libgtkmm-4.0.so +

+
+

+ contains the GTK 4 + API classes +

+
+
+
+
+
+
+
+

+ gtk-vnc-1.5.0 +

+
+
+
+
+
+

+ Introduction to Gtk VNC +

+

+ The Gtk VNC package contains + a VNC viewer widget for GTK+. It is built using coroutines + allowing it to be completely asynchronous while remaining + single threaded. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gtk + VNC Dependencies +

+
+ Required +
+

+ GnuTLS-3.8.10, GTK-3.24.50, and libgcrypt-1.11.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Cyrus SASL-2.1.28 and Gi-DocGen-2025.4 (for generating + documentation) +

+
+
+

+ Installation of Gtk VNC +

+

+ Install Gtk VNC by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D with-vala=false: This switch + disables building of the Vala bindings. Add this if you + decide to build gtk-vnc without vala installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gvnccapture +
+
+ Installed Libraries: + libgtk-vnc-2.0.so, libgvnc-1.0.so + and libgvncpulse-1.0.so +
+
+ Installed Directories: + /usr/include/gtk-vnc-2.0, + /usr/include/gvnc-1.0 and + /usr/include/gvncpulse-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ gvnccapture +

+
+

+ is used to capture image from VNC server +

+
+

+ libgtk-vnc-2.0.so +

+
+

+ contains the GTK+ + 3 bindings for Gtk + VNC +

+
+

+ libgvnc-1.0.so +

+
+

+ contains the GObject bindings for Gtk VNC +

+
+

+ libgvncpulse-1.0.so +

+
+

+ is the PulseAudio + bridge for Gtk VNC +

+
+
+
+
+
+
+
+

+ gtksourceview-3.24.11 +

+
+
+
+
+
+

+ Introduction to GtkSourceView +

+

+ The GtkSourceView package + contains libraries used for extending the GTK+ text functions to include syntax + highlighting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GtkSourceView Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ Vala-0.56.18, Valgrind-3.25.1, + GTK-Doc-1.34.0, itstool-2.0.7, fop-2.11 (or + dblatex), and + Glade +

+
+
+

+ Installation of GtkSourceView +

+

+ First, fix building this package with gcc-14 and later: +

+
sed -i 's/g_object_ref (buffer)/g_object_ref (GTK_SOURCE_BUFFER (buffer))/' gtksourceview/gtksourceview.c
+

+ Install GtkSourceView by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue make + check. The tests need to be run in a + graphical environment. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgtksourceview-3.0.so +
+
+ Installed Directories: + /usr/{include,share,share/gtk-doc/html}/gtksourceview-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgtksourceview-3.0.so +

+
+

+ contains function extensions for the GtkTextView + widget +

+
+
+
+
+
+
+
+

+ gtksourceview4-4.8.4 +

+
+
+
+
+
+

+ Introduction to GtkSourceView +

+

+ The GtkSourceView package + contains libraries used for extending the GTK+ text functions to include syntax + highlighting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GtkSourceView Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ Vala-0.56.18, Valgrind-3.25.1, + GTK-Doc-1.34.0, itstool-2.0.7, fop-2.11 (or + dblatex), and + Glade +

+
+
+

+ Installation of GtkSourceView +

+

+ Install GtkSourceView by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue ninja test. The tests need + to be run in a graphical environment. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D gtk_doc=true: This option is + normally used if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgtksourceview-4.so +
+
+ Installed Directories: + /usr/{include,share,share/gtk-doc/html}/gtksourceview-4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgtksourceview-4.so +

+
+

+ contains function extensions for the GtkTextView + widget +

+
+
+
+
+
+
+
+

+ gtksourceview5-5.16.0 +

+
+
+
+
+
+

+ Introduction to GtkSourceView +

+

+ The GtkSourceView package + contains a library used for extending the GTK text functions to include syntax + highlighting. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GtkSourceView Dependencies +

+
+ Required +
+

+ GTK-4.18.6 and pcre2-10.45 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, Vala-0.56.18, Valgrind-3.25.1, Vulkan-Loader-1.4.321, and + sysprof +

+
+
+

+ Installation of GtkSourceView +

+

+ Install GtkSourceView by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D documentation=true: Use this + switch if you have Gi-DocGen-2025.4 installed and wish to + generate the API documentation. +

+

+ -D sysprof=true: Use this switch + if you have sysprof installed + and wish to build with sysprof profiler support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgtksourceview-5.so +
+
+ Installed Directories: + /usr/include/gtksourceview-5 and + /usr/share/gtksourceview-5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgtksourceview-5.so +

+
+

+ contains function extensions for the GtkTextView + widget +

+
+
+
+
+
+
+
+

+ imlib2-1.12.5 +

+
+
+
+
+
+

+ Introduction to imlib2 +

+

+ imlib2 is a graphics library + for fast file loading, saving, rendering and manipulation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ imlib2 Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 (for API documentation), + highway-1.3.0, libjpeg-turbo-3.0.1, libjxl-0.11.1, libpng-1.6.50, libtiff-4.7.0, libwebp-1.6.0, libheif, + libid3tag, + libspectre +

+
+
+

+ Installation of imlib2 +

+

+ Install imlib2 by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you generated the API documentation, install it as the + root user: +

+
install -v -m755 -d            /usr/share/doc/imlib2-1.12.5/html &&
+install -v -m644    doc/html/* /usr/share/doc/imlib2-1.12.5/html
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-doc-build: This switch + generates the API documentation. Doxygen-1.14.0 must be + installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + imlib2_bumpmap, imlib2_colorspace, + imlib2_conv, imlib2_grab, imlib2_load, imlib2_poly, + imlib2_show, imlib2_test, and imlib2_view +
+
+ Installed Libraries: + libImlib2.so and various filters + and image loader modules. +
+
+ Installed Directories: + /usr/lib/imlib2, + /usr/share/doc/imlib2-1.12.5, and + /usr/share/imlib2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ imlib2_bumpmap +

+
+

+ is to test the imlib2 bumpmap function +

+
+

+ imlib2_colorspace +

+
+

+ is to test the imlib2 colorspace function +

+
+

+ imlib2_conv +

+
+

+ converts images between formats +

+
+

+ imlib2_grab +

+
+

+ takes screenshots +

+
+

+ imlib2_load +

+
+

+ loads and caches images +

+
+

+ imlib2_poly +

+
+

+ is to test the imlib2 poly function +

+
+

+ imlib2_show +

+
+

+ is an imlib2 + program test +

+
+

+ imlib2_test +

+
+

+ is an imlib2 + program test +

+
+

+ imlib2_view +

+
+

+ displays image files +

+
+

+ libImlib2.so +

+
+

+ provides the functions for programs to handle + various image data formats +

+
+
+
+
+
+
+
+

+ kColorPicker-0.3.1 +

+
+
+
+
+
+

+ Introduction to kColorPicker +

+

+ kColorPicker is a QToolButton library with a color popup + menu, which lets you select colors. The popup menu features a + color dialog button which can be used to add custom colors to + the popup menu. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ kColorPicker Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and Qt-6.9.2 +

+
+
+

+ Installation of kColorPicker +

+

+ Install kColorPicker by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_SHARED_LIBS=ON      \
+      -D BUILD_WITH_QT6=ON         \
+      .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libkColorPicker.so +
+
+ Installed Directories: + /usr/lib/cmake/kColorPicker +
+
+
+
+
+
+
+
+

+ kImageAnnotator-0.7.1 +

+
+
+
+
+
+

+ Introduction to kImageAnnotator +

+

+ kImageAnnotator is a tool for annotating images. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ kImageAnnotator Dependencies +

+
+ Required +
+

+ kcolorpicker-0.3.1 +

+
+
+

+ Installation of kImageAnnotator +

+

+ Install kImageAnnotator by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_SHARED_LIBS=ON      \
+      -D BUILD_WITH_QT6=ON         \
+      .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libkImageAnnotator.so +
+
+ Installed Directories: + /usr/include/kImageAnnotator-Qt6, + /usr/lib/cmake/kImageAnnotator-Qt6, and + /usr/share/kImageAnnotator +
+
+
+
+
+
+
+
+

+ keybinder-3.0-0.3.2 +

+
+
+
+
+
+

+ Introduction to keybinder-3.0 +

+

+ The keybinder-3.0 package + contains a utility library registering global X keyboard shortcuts for GTK+-3. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ keybinder-3.0 Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of keybinder-3.0 +

+

+ Install keybinder-3.0 by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libkeybinder-3.0.so +
+
+ Installed Directories: + /usr/include/keybinder-3.0 and + /usr/share/gtk-doc/html/keybinder-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libkeybinder-3.0.so +

+
+

+ is the library that registers global X keyboard shortcuts +

+
+
+
+
+
+
+
+

+ libadwaita-1.7.6 +

+
+
+
+
+
+

+ Introduction to libadwaita +

+

+ The libadwaita package + provides additional GTK4 UI widgets for use in developing + user interfaces. It is used primarily for GNOME applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libadwaita Dependencies +

+
+ Required +
+

+ AppStream-1.0.6, GTK-4.18.6, and sassc-3.6.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 and xdg-desktop-portal-1.20.3 + (for two tests) +

+
+
+

+ Installation of libadwaita +

+

+ Install libadwaita by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "s/apiversion/'1.7.6'/" -i ../doc/meson.build &&
+meson configure -D documentation=true             &&
+ninja
+

+ To test the results, issue: ninja test. The tests must + be run from a graphical session. Two tests will fail if + xdg-desktop-portal-1.20.3 is + not installed. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + adwaita-1-demo +
+
+ Installed Libraries: + libadwaita-1.so +
+
+ Installed Directories: + /usr/include/libadwaita-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ adwaita-1-demo +

+
+

+ provides an example of how to use the libadwaita library +

+
+

+ libadwaita-1.so +

+
+

+ provides additional GTK widgets for use in creating + user interfaces +

+
+
+
+
+
+
+
+

+ libei-1.4.1 +

+
+
+
+
+
+

+ Introduction to libei +

+

+ The libei package contains a + set of libraries for handling emulated inputs. It is + primarily aimed at the Wayland stack. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libei Dependencies +

+
+ Required +
+

+ attrs-25.3.0 and + elogind-255.17 +

+
+ Optional +
+

+ libevdev-1.13.4, libxkbcommon-1.11.0, libxml2-2.14.5, munit, and structlog +

+
+
+

+ Installation of libei +

+

+ Install libei by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D tests=disabled &&
+ninja
+

+ This package does come with a test suite, but it requires an + external dependency. If you have both munit and structlog + installed, and you wish to run the test suite, run the + following commands: +

+
meson configure -D tests=enabled &&
+ninja test
+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D tests=disabled: + This switch avoids a dependency on munit. Remove this + switch if you have munit + installed and wish to run the test suite. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libei.so, libeis.so, and + liboeffis.so +
+
+ Installed Directories: + /usr/include/libei-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libei.so +

+
+

+ provides a client side implementation for handling + Emulated Input +

+
+

+ libeis.so +

+
+

+ provides a server side implementation for handling + Emulated Input +

+
+

+ liboffis +

+
+

+ provides DBus communication services between libei + and the XDG RemoteDesktop portal +

+
+
+
+
+
+
+
+

+ libhandy-1.8.3 +

+
+
+
+
+
+

+ Introduction to libhandy +

+

+ The libhandy package + provides additional GTK UI widgets for use in developing user + interfaces. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libhandy Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 and Glade +

+
+
+

+ Installation of libhandy +

+

+ Install libhandy by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. The tests must + be run from a graphical session. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this option + if you have GTK-Doc-1.34.0 installed and wish to + install the documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + handy-1-demo +
+
+ Installed Libraries: + libhandy-1.so +
+
+ Installed Directories: + /usr/include/libhandy-1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ handy-1-demo +

+
+

+ provides an example of how to use the libhandy library +

+
+

+ libhandy-1.so +

+
+

+ provides additional GTK widgets for use in creating + user interfaces +

+
+
+
+
+
+
+
+

+ Libdrm-2.4.125 +

+
+
+
+
+
+

+ Introduction to Libdrm +

+

+ Libdrm provides a userspace + library for accessing the direct rendering manager (DRM) on + operating systems that support the ioctl interface. Libdrm is + a low-level library, typically used by graphics drivers such + as the Mesa DRI drivers, the X drivers, libva and similar + projects. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://dri.freedesktop.org/libdrm/libdrm-2.4.125.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 3baec8e685510892b3355a7074baa874 +

    +
  • +
  • +

    + Download size: 476 KB +

    +
  • +
  • +

    + Estimated disk space required: 12 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (with tests) +

    +
  • +
+
+

+ libdrm Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Cairo-1.18.4 (for tests), CMake-4.1.0 (could be + used to find dependencies without pkgconfig files), docbook-xml-4.5, docbook-xsl-nons-1.79.2, + docutils-0.21.2, and libxslt-1.1.43 (to + build manual pages), libatomic_ops-7.8.2 (required + by architectures without native atomic operations), Valgrind-3.25.1, and CUnit (for AMDGPU + tests) +

+
+
+

+ Installation of Libdrm +

+

+ Install libdrm by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=$XORG_PREFIX \
+            --buildtype=release   \
+            -D udev=true          \
+            -D valgrind=disabled  \
+            ..                    &&
+ninja
+

+ To check the results, issue ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D udev=true: This + parameter enables support for using Udev instead of mknod. +

+

+ -D valgrind=disabled: + This parameter disables building libdrm with valgrind + support. This fixes building some packages that use libdrm. + Change this parameter to "enabled" (or remove it) if you need + support for valgrind. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libdrm_amdgpu.so, libdrm_intel.so, + libdrm_nouveau.so, libdrm_radeon.so, and libdrm.so +
+
+ Installed Directories: + /usr/include/libdrm and + /usr/share/libdrm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libdrm_amdgpu.so +

+
+

+ contains the AMDGPU specific Direct Rendering + Manager functions +

+
+

+ libdrm_intel.so +

+
+

+ contains the Intel specific Direct Rendering + Manager functions +

+
+

+ libdrm_nouveau.so +

+
+

+ contains the open source nVidia (Nouveau) specific + Direct Rendering Manager functions +

+
+

+ libdrm_radeon.so +

+
+

+ contains the AMD Radeon specific Direct Rendering + Manager functions +

+
+

+ libdrm.so +

+
+

+ contains the Direct Rendering Manager API functions +

+
+
+
+
+
+
+
+

+ libepoxy-1.5.10 +

+
+
+
+
+
+

+ Introduction to libepoxy +

+

+ libepoxy is a library for + handling OpenGL function pointer management. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libepoxy Dependencies +

+
+ Required +
+

+ Mesa-25.1.8 +

+
+ Optional +
+

+ Doxygen-1.14.0 (for documentation) +

+
+
+

+ Installation of libepoxy +

+

+ Install libepoxy by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D docs=true: If you have + Doxygen-1.14.0 installed, add this + option to generate additional documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libepoxy.so +
+
+ Installed Directories: + /usr/include/epoxy +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libepoxy.so +

+
+

+ contains API functions for handling OpenGL function + pointer management +

+
+
+
+
+
+
+
+

+ libnotify-0.8.6 +

+
+
+
+
+
+

+ Introduction to libnotify +

+

+ The libnotify library is + used to send desktop notifications to a notification daemon, + as defined in the Desktop Notifications spec. These + notifications can be used to inform the user about an event + or display some form of information without getting in the + user's way. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libnotify Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Optional (Required if building + GNOME) +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+ Optional +
+

+ Gi-DocGen-2025.4 and xmlto-0.0.29 +

+
+ Required (runtime) +
+

+ At least one of notification-daemon-3.20.0, + xfce4-notifyd-0.9.7, or lxqt-notificationd-2.2.0 +

+
+

+ Note +

+

+ GNOME Shell and + KDE KWin provide their own + notification daemons. +

+
+
+
+

+ Installation of libnotify +

+

+ Install libnotify by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk_doc=false    \
+            -D man=false        \
+            ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/docs_dir =/s@\$@ / 'libnotify'@" \
+    -i ../docs/reference/meson.build   &&
+meson configure -D gtk_doc=true        &&
+ninja
+

+ Now, as the root user: +

+
ninja install &&
+if [ -e /usr/share/doc/libnotify ]; then
+  rm -rf /usr/share/doc/libnotify-0.8.6
+  mv -v  /usr/share/doc/libnotify{,-0.8.6}
+fi
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + notify-send +
+
+ Installed Library: + libnotify.so +
+
+ Installed Directories: + /usr/include/libnotify and + /usr/share/gtk-doc/html/libnotify +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ notify-send +

+
+

+ is a command used to send notifications +

+
+

+ libnotify.so +

+
+

+ contains the libnotify API functions +

+
+
+
+
+
+
+
+

+ libxklavier-5.4 +

+
+
+
+
+
+

+ Introduction to libxklavier +

+

+ The libxklavier package + contains a utility library for X keyboard. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxklavier Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended), ISO Codes-4.18.0, libxml2-2.14.5 and + Xorg + Libraries +

+
+ Optional +
+

+ GTK-Doc-1.34.0 and Vala-0.56.18 +

+
+
+

+ Installation of libxklavier +

+

+ Install libxklavier by + running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: This parameter + is normally used if GTK-Doc + is installed and you wish to rebuild and install the API + documentation. It is broken for this package due to the use + of a long deprecated gtk-doc program that is no longer + available. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libxklavier.so +
+
+ Installed Directories: + /usr/include/libxklavier and + /usr/share/gtk-doc/html/libxklavier +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libxklavier.so +

+
+

+ contains XKB utility functions +

+
+
+
+
+
+
+
+

+ Pango-1.56.4 +

+
+
+
+
+
+

+ Introduction to Pango +

+

+ Pango is a library for + laying out and rendering text, with an emphasis on + internationalization. It can be used anywhere that text + layout is needed, though most of the work on Pango so far has been done in the + context of the GTK+ widget + toolkit. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Pango Dependencies +

+
+ Required +
+

+ Fontconfig-2.17.1 (must be built with + FreeType-2.13.3 using harfBuzz-11.4.1), FriBidi-1.0.16, and + GLib-2.84.4 (GObject Introspection required + for GNOME) +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 (to generate + documentation), help2man, + libthai, and + sysprof +

+
+
+

+ Installation of Pango +

+

+ Install Pango by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr            \
+            --buildtype=release      \
+            --wrap-mode=nofallback   \
+            -D introspection=enabled \
+            ..                       &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/docs_dir =/s@\$@ / 'pango-1.56.4'@" -i ../docs/meson.build &&
+meson configure -D documentation=true                            &&
+ninja
+

+ To test the results, issue: ninja test. Three tests, + test-font-data, test-font, and test-layout are known to fail + due to missing font data. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D introspection=disabled: Use + this switch if you do not want to use GObject Introspection. +

+

+ --wrap-mode=nofallback: This + switch prevents meson from using subproject + fallbacks for any dependency declarations in the build files, + preventing it from downloading any optional dependencies + which are not installed on the system. +

+
+
+

+ Configuring Pango +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/pango/pangorc, + ~/.pangorc and the file + specified in the environment variable PANGO_RC_FILE +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pango-list, pango-segmentation, and + pango-view +
+
+ Installed Libraries: + libpango-1.0.so, + libpangocairo-1.0.so, libpangoft2-1.0.so, and + libpangoxft-1.0.so +
+
+ Installed Directories: + /usr/include/pango-1.0 and + /usr/share/doc/pango-1.56.4 (if gi-docgen is + available) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ pango-list +

+
+

+ displays a list of fonts that Pango can use that are + currently installed on the system +

+
+

+ pango-segmentation +

+
+

+ shows text segmentation as determined by Pango. +

+
+

+ pango-view +

+
+

+ renders a given text file through Pango for viewing purposes +

+
+

+ libpango-1.0.so +

+
+

+ contains low level layout rendering routines, a + high level driver for laying out entire blocks of + text, and routines to assist in editing + internationalized text +

+
+
+
+
+
+
+
+

+ Pangomm-2.46.4 +

+
+
+
+
+
+

+ Introduction to Pangomm +

+

+ The Pangomm package provides + a C++ interface to Pango. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Pangomm Dependencies +

+
+ Required +
+

+ libcairomm-1.14.5, + GLibmm-2.66.8 and Pango-1.56.4 +

+
+
+

+ Installation of Pangomm +

+

+ Install Pangomm by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libpangomm-1.4.so +
+
+ Installed Directories: + /usr/include/pangomm-1.4, + /usr/lib/pangomm-1.4, and + /usr/share/{devhelp/books/pangomm-1.4,doc/pangomm-2.46.4} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpangomm-1.4.so +

+
+

+ contains the Pango + API classes +

+
+
+
+
+
+
+
+

+ Pangomm-2.56.1 +

+
+
+
+
+
+

+ Introduction to Pangomm +

+

+ The Pangomm package provides + a C++ interface to Pango. + This version is part of a new API for supporting gtkmm-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Pangomm Dependencies +

+
+ Required +
+

+ libcairomm-1.18.0, + GLibmm-2.84.0 and Pango-1.56.4 +

+
+
+

+ Installation of Pangomm +

+

+ Install Pangomm by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libpangomm-2.48.so +
+
+ Installed Directories: + /usr/include/pangomm-2.48, + /usr/lib/pangomm-2.48, and + /usr/share/{devhelp/books/pangomm-2.48,doc/pangomm-2.46.4} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpangomm-2.48.so +

+
+

+ contains the Pango + API classes +

+
+
+
+
+
+
+
+

+ Qt-6.9.2 +

+
+
+
+
+
+

+ Introduction to Qt6 +

+

+ Qt6 is a cross-platform + application framework that is widely used for developing + application software with a graphical user interface (GUI) + (in which cases Qt6 is + classified as a widget toolkit), and also used for developing + non-GUI programs such as command-line tools and consoles for + servers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Qt6 + Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Recommended +
+ +
+ Optional +
+

+ BlueZ-5.83 (for sdpscanner, and at runtime + for QtConnectivity module), GTK-3.24.50, ibus-1.5.32, LLVM-20.1.8 (with + Clang), libproxy-0.5.10, MariaDB-11.8.3 or + MySQL, + MIT Kerberos V5-1.22.1, + pciutils-3.14.0, PostgreSQL-17.6, + Protobuf-32.0, PulseAudio-17.0, + SDL2-2.32.8, unixODBC-2.3.12, + assimp, + Flite, Firebird, + FreeTDS, + OpenAL, + speech-dispatcher, and + tslib +

+
+
+

+ Setting the installation prefix +

+

+ Installing in /opt/qt6 +

+

+ The BLFS editors recommend installing Qt6 in a directory other than + /usr, i.e. /opt/qt6. To do this, set the following + environment variable: +

+
export QT6PREFIX=/opt/qt6
+
+

+ Tip +

+

+ Sometimes the installation paths are hardcoded into + installed files. This is the reason why /opt/qt6 is used as installation prefix + instead of /opt/qt-6.9.2. To + create a versioned Qt6 + directory, you may rename the directory and create a + symlink: +

+
mkdir -pv /opt/qt-6.9.2
+ln -sfnv qt-6.9.2 /opt/qt6
+

+ Later on, you may want to install other versions of + Qt6. To do that, just + remove the symlink, create the new versioned directory, and + recreate the /opt/qt6 symlink + again before building the new version. Which version of + Qt6 you use depends only + on where the symlink points. +

+
+
+

+ Note +

+

+ If qca-2.3.10, qcoro-0.12.0, or sddm-0.21.0 have been + installed and you are reinstalling or updating this + package, then those packages will need to be reinstalled. +

+
+
+
+

+ Installation of Qt6 +

+
+

+ Warning +

+

+ If Qt6 is being + reinstalled into the same directory as an existing + instance, run the commands done by root, such as make install, from a + console or non-Qt6 based window manager. It overwrites + Qt6 libraries that should + not be in use during the install process. +

+
+
+

+ Caution +

+

+ If you did not install some of the recommended + dependencies, examine ./configure --help output + to check how to disable them or use internal versions + bundled in the source tarball. +

+
+
+

+ Note +

+

+ The build time and space required for the full Qt6 is quite long. The instructions + below do not build the tutorials and examples. Removing the + -nomake line will + create additional resources.. +

+
+
+

+ Note +

+

+ The BLFS editors do not recommend installing Qt6 into the /usr hierarchy because it + becomes difficult to find components and to update to a new + version. +

+
+

+ Disable a conflicting declaration on i686 systems and fix a + build error due to SIMD intrinsics in QtMultimedia: +

+
if [ "$(uname -m)" == "i686" ]; then
+    sed -e "/^#elif defined(Q_CC_GNU_ONLY)/s/.*/& \&\& 0/" \
+         -i qtbase/src/corelib/global/qtypes.h &&
+    export CXXFLAGS+="-DDISABLE_SIMD -DPFFFT_SIMD_DISABLE"
+fi
+

+ Install Qt6 by running the + following commands: +

+
./configure -prefix $QT6PREFIX      \
+            -sysconfdir /etc/xdg    \
+            -dbus-linked            \
+            -openssl-linked         \
+            -system-sqlite          \
+            -nomake examples        \
+            -no-rpath               \
+            -no-sbom                \
+            -syslog                 \
+            -skip qt3d              \
+            -skip qtquick3dphysics  \
+            -skip qtwebengine       &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ Remove references to the build directory from installed + library dependency (prl) files by running the following + command as the root user: +

+
find $QT6PREFIX/ -name \*.prl \
+   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
+

+ Install images and create the menu entries for installed + applications. Again as the root user: +

+
pushd qttools/src &&
+
+install -v -Dm644 assistant/assistant/images/assistant-128.png       \
+                  /usr/share/pixmaps/assistant-qt6.png               &&
+
+install -v -Dm644 designer/src/designer/images/designer.png          \
+                  /usr/share/pixmaps/designer-qt6.png                &&
+
+install -v -Dm644 linguist/linguist/images/icons/linguist-128-32.png \
+                  /usr/share/pixmaps/linguist-qt6.png                &&
+
+install -v -Dm644 qdbus/qdbusviewer/images/qdbusviewer-128.png       \
+                  /usr/share/pixmaps/qdbusviewer-qt6.png             &&
+popd &&
+
+
+cat > /usr/share/applications/assistant-qt6.desktop << EOF
+[Desktop Entry]
+Name=Qt6 Assistant
+Comment=Shows Qt6 documentation and examples
+Exec=$QT6PREFIX/bin/assistant
+Icon=assistant-qt6.png
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;Documentation;
+EOF
+
+cat > /usr/share/applications/designer-qt6.desktop << EOF
+[Desktop Entry]
+Name=Qt6 Designer
+GenericName=Interface Designer
+Comment=Design GUIs for Qt6 applications
+Exec=$QT6PREFIX/bin/designer
+Icon=designer-qt6.png
+MimeType=application/x-designer;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
+EOF
+
+cat > /usr/share/applications/linguist-qt6.desktop << EOF
+[Desktop Entry]
+Name=Qt6 Linguist
+Comment=Add translations to Qt6 applications
+Exec=$QT6PREFIX/bin/linguist
+Icon=linguist-qt6.png
+MimeType=text/vnd.trolltech.linguist;application/x-linguist;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
+EOF
+
+cat > /usr/share/applications/qdbusviewer-qt6.desktop << EOF
+[Desktop Entry]
+Name=Qt6 QDbusViewer
+GenericName=D-Bus Debugger
+Comment=Debug D-Bus applications
+Exec=$QT6PREFIX/bin/qdbusviewer
+Icon=qdbusviewer-qt6.png
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;Debugger;
+EOF
+
+
+

+ Command Explanations +

+

+ -nomake examples: + This switch disables building of the example programs + included in the source tarball. Remove it if you want to + build them. +

+

+ -skip qt3d: This + switch disables building qt3d support. There is a problem + building these files without an external library and no + packages in BLFS use qt3d. +

+

+ -system-sqlite: This + switch enables use of the system version of SQLite. +

+

+ -dbus-linked + -openssl-linked: + These switches enable explicit linking of the D-Bus and OpenSSL libraries into Qt6 libraries instead of dlopen()-ing them. +

+

+ -syslog: This switch + allows sending Qt messages to the syslog logging system. +

+

+ -skip qtwebengine: + This switch disables building the QtWebEngine. The BLFS + editors have chosen to build qtwebengine-6.9.2 separately. +

+

+ -skip + qtquick3dphysics: This switch disables building + the Qt Quick 3D Physics submodule. On 32-bit systems, this + will cause the build process to fail with an inlining error + in Qt6's bundled copy of the PhysX SDK. +

+

+ -libproxy: This switch enables + the usage of libproxy for determining proxy server + information. +

+
+
+

+ Configuring Qt6 +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If Sudo-1.9.17p2 is installed, QT6DIR + should be available to the super user as well. Execute the + following commands as the root user: +

+
cat > /etc/sudoers.d/qt << "EOF"
+Defaults env_keep += QT6DIR
+EOF
+

+ You now need to update the following configuration files so + that Qt6 is correctly + found by other packages and system processes. +

+

+ As the root user, update + the /etc/ld.so.conf file and + the dynamic linker's run-time cache file: +

+
cat >> /etc/ld.so.conf << EOF
+# Begin Qt addition
+
+/opt/qt6/lib
+
+# End Qt addition
+EOF
+
+ldconfig
+

+ As the root user, create + the /etc/profile.d/qt6.sh + file: +

+
cat > /etc/profile.d/qt6.sh << "EOF"
+# Begin /etc/profile.d/qt6.sh
+
+QT6DIR=/opt/qt6
+
+pathappend $QT6DIR/bin           PATH
+pathappend $QT6DIR/lib/pkgconfig PKG_CONFIG_PATH
+
+export QT6DIR
+
+# End /etc/profile.d/qt6.sh
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + androiddeployqt (hard link to + androiddeployqt6), androiddeployqt6, androidtestrunner, + assistant, balsam, balsamui, canbusutil, designer, + instancer, lconvert, linguist, lrelease, lupdate, + materialeditor, meshdebug, pixeltool, qdbus, + qdbuscpp2xml, qdbusviewer, qdbusxml2cpp, + qdistancefieldgenerator, qdoc, qmake (hard link to + qmake6), qmake6, qml, qmldom, qmleasing, qmlformat, + qmllint, qmlls, qmlplugindump, qmlpreview, qmlprofiler, + qmlscene, qmltc, qmltestrunner, qmltime, + qopcuaxmldatatypes2cpp, qqem, qsb, qtdiag (hard link to + qtdiag6), qtdiag6, qtpaths (hard link to qtpaths6), + qtpaths6, qtplugininfo, qt-cmake, qt-cmake-create, + qt-configure-module, shadergen, shapegen, and + svg2xml +
+
+ Installed Libraries: + libQt6Bluetooth.so, + libQt6Bodymovin.so, libQt6BundledEmbree.a, + libQt6BundledOpenXR.a, libQt6BundledResonanceAudio.a, + libQt6Charts.so, libQt6ChartsQml.so, libQt6Coap.so, + libQt6Concurrent.so, libQt6Core.so, libQt6Core5Compat.so, + libQt6DBus.so, libQt6DataVisualization.so, + libQt6DataVisualizationQml.so, libQt6DeclarativeOpcua.so, + libQt6Designer.so, libQt6DesignerComponents.so, + libQt6DeviceDiscoverySupport.a, + libQt6EglFSDeviceIntegration.so, + libQt6EglFsKmsGbmSupport.so, libQt6EglFsKmsSupport.so, + libQt6ExampleIcons.a, libQt6ExamplesAssetDownloader.a, + libQt6FbSupport.a, libQt6Graphs.so, + libQt6GraphsWidgets.so, libQt6Grpc.so, + libQt6GrpcQuick.so, libQt6Gui.so, libQt6Help.so, + libQt6HttpServer.so, libQt6InputSupport.a, + libQt6JsonRpc.so, libQt6KmsSupport.a, + libQt6LabsAnimation.so, libQt6LabsFolderListModel.so, + libQt6LabsPlatform.so, libQt6LabsQmlModels.so, + libQt6LabsSettings.so, libQt6LabsSharedImage.so, + libQt6LabsWavefrontMesh.so, libQt6LanguageServer.a, + libQt6Location.so, libQt6Mqtt.so, libQt6Multimedia.so, + libQt6MultimediaQuick.so, libQt6MultimediaTestLib.a, + libQt6MultimediaWidgets.so, libQt6Network.so, + libQt6NetworkAuth.so, libQt6Nfc.so, libQt6OpcUa.so, + libQt6OpenGL.so, libQt6OpenGLWidgets.so, + libQt6PacketProtocol.a, libQt6Positioning.so, + libQt6PositioningQuick.so, libQt6PrintSupport.so, + libQt6Protobuf.so, libQt6ProtobufQtCoreTypes.so, + libQt6ProtobufQtGuiTypes.so, libQt6ProtobufQuick.so, + libQt6ProtobufWellKnownTypes.so, + libQt6QGstreamerMediaPluginImpl.a, libQt6Qml.so, + libQt6QmlAssetDownloader.a, libQt6QmlCompiler.so, + libQt6QmlCore.so, libQt6QmlDebug.a, libQt6QmlDom.a, + libQt6QmlLocalStorage.so, libQt6QmlLS.a, + libQt6QmlMeta.so, libQt6QmlModels.so, + libQt6QmlNetwork.so, libQt6QmlToolingSettings.a, + libQt6QmlTypeRegistrar.a, libQt6QmlWorkerScript.so, + libQt6QmlXmlListModel.so, libQt6Quick.so, + libQt6Quick3D.so, libQt6Quick3DAssetImport.so, + libQt6Quick3DAssetUtils.so, libQt6Quick3DEffects.so, + libQt6Quick3DGlslParser.so, libQt6Quick3DHelpers.so, + libQt6Quick3DHelpersImpl.so, libQt6Quick3DIblBaker.so, + libQt6Quick3DParticleEffects.so, + libQt6Quick3DParticles.so, libQt6Quick3DRuntimeRender.so, + libQt6Quick3DSpatialAudio.so, libQt6Quick3DUtils.so, + libQt6Quick3DXr.so, libQt6QuickControls2.so, + libQt6QuickControls2Basic.so, + libQt6QuickControls2BasicStyleImpl.so, + libQt6QuickControls2FluentWinUI3StyleImpl.so, + libQt6QuickControls2Fusion.so, + libQt6QuickControls2FusionStyleImpl.so, + libQt6QuickControls2Imagine.so, + libQt6QuickControls2ImagineStyleImpl.so, + libQt6QuickControls2Impl.so, + libQt6QuickControls2Material.so, + libQt6QuickControls2MaterialStyleImpl.so, + libQt6QuickControls2Universal.so, + libQt6QuickControls2UniversalStyleImpl.so, + libQt6QuickControlsTestUtils.a, libQt6QuickDialogs2.so, + libQt6QuickDialogs2QuickImpl.so, + libQt6QuickDialogs2Utils.so, libQt6QuickEffects.so, + libQt6QuickLayouts.so, libQt6QuickParticles.so, + libQt6QuickShapes.so, libQt6QuickTemplates2.so, + libQt6QuickTimelineBlendTrees.so, libQt6QuickTest.so, + libQt6QuickTestUtils.a, libQt6QuickTimeline.so, + libQt6QuickVectorImageGenerator.so, + libQt6QuickVectorImage.so, libQt6QuickWidgets.so, + libQt6RemoteObjects.so, libQt6RemoteObjectsQml.so, + libQt6Scxml.so, libQt6ScxmlQml.so, libQt6Sensors.so, + libQt6SensorsQuick.so, libQt6SerialBus.so, + libQt6SerialPort.so, libQt6ShaderTools.so, + libQt6SpatialAudio.so, libQt6Sql.so, + libQt6StateMachine.so, libQt6StateMachineQml.so, + libQt6Svg.so, libQt6SvgWidgets.so, libQt6Test.so, + libQt6TextToSpeech.so, libQt6UiTools.so, + libQt6VirtualKeyboard.so, + libQt6VirtualKeyboardSettings.so, libQt6WaylandClient.so, + libQt6WaylandCompositor.so, + libQt6WaylandCompositorIviapplication.so, + libQt6WaylandCompositorPresentationTime.so, + libQt6WaylandCompositorWLShell.so, + libQt6WaylandCompositorXdgShell.so, + libQt6WaylandEglClientHwIntegration.so, + libQt6WaylandEglCompositorHwIntegration.so, + libQt6WebChannel.so, libQt6WebChannelQuick.so, + libQt6WebSockets.so, libQt6WebView.so, + libQt6WebViewQuick.so, libQt6Widgets.so, + libQt6WlShellIntegration.so, libQt6XcbQpa.so, and + libQt6Xml.so +
+
+ Installed Directories: + /opt/qt6 and /opt/qt-6.9.2 +
+
+
+
+ +

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ assistant +

+
+

+ is a tool for presenting on-line documentation +

+
+

+ balsam +

+
+

+ is a tool to convert 3D scenes from various + creation tools to QML format, for use by the new + QtQuick 3D library +

+
+

+ canbustil +

+
+

+ is a tool to deal with arbitrary CAN bus frames. A + Controller Area Network (CAN) is a vehicle bus + standard designed to allow microcontrollers and + devices to communicate with each other in + applications without a host computer +

+
+

+ designer +

+
+

+ is a full-fledged GUI builder. It includes powerful + features such as preview mode, automatic widget + layout, support for custom widgets, and an advanced + property editor +

+
+

+ lconvert +

+
+

+ is part of Qt6's Linguist tool chain. It can be + used as a standalone tool to convert and filter + translation data files +

+
+

+ linguist +

+
+

+ provides support for translating applications into + local languages +

+
+

+ lrelease +

+
+

+ is a simple command line tool. It reads XML-based + translation files in TS format and produces message + files used by the application +

+
+

+ lupdate +

+
+

+ finds the translatable strings in the specified + source, header and Qt Designer interface files, and + stores the extracted messages in translation files + to be processed by lrelease +

+
+

+ meshdebug +

+
+

+ displays information about qtquick-3d mesh files +

+
+

+ pixeltool +

+
+

+ is a desktop magnifier - as you move your mouse + around the screen, it will show the magnified + contents in its window +

+
+

+ qdbus +

+
+

+ lists available services, object paths, methods, + signals, and properties of objects on a bus +

+
+

+ qdbuscpp2xml +

+
+

+ takes a C++ source file and generates a D-Bus XML + definition of the interface +

+
+

+ qdbusviewer +

+
+

+ is a graphical D-Bus browser +

+
+

+ qdbusxml2cpp +

+
+

+ is a tool that can be used to parse interface + descriptions and produce static code representing + those interfaces, +

+
+

+ qdistancefieldgenerator +

+
+

+ allows a font cache to be pregenerated for + Text.QtRendering to speed up an application's + startup if the user interface has a lot of text, or + multiple fonts, or a large amount of distinct + characters, e.g. in CJK writing systems +

+
+

+ qdoc +

+
+

+ is a tool used by Qt Developers to generate + documentation for software projects +

+
+

+ qmake +

+
+

+ uses information stored in project files to + determine what should go in the makefiles it + generates +

+
+

+ qml +

+
+

+ executes a QML file +

+
+

+ qmleasing +

+
+

+ is a tool used to define the easing curves using an + interactive curve editor +

+
+

+ qmlformat +

+
+

+ formats QML files according to the QML coding + conventions +

+
+

+ qmllint +

+
+

+ is a syntax checker for QML files +

+
+

+ qmlplugindump +

+
+

+ is a tool to create a qmltypes file +

+
+

+ qmlpreview +

+
+

+ is a tool used to analyze QML applications +

+
+

+ qmlprofiler +

+
+

+ is a tool which watches QML and JavaScript files on + disk and updates the application live with any + changes +

+
+

+ qmlscene +

+
+

+ is a utility that loads and displays QML documents + even before the application is complete +

+
+

+ qmltestrunner +

+
+

+ is a tool used to make tests +

+
+

+ qtdiag +

+
+

+ is a tool for reporting diagnostic information + about Qt and its environment +

+
+

+ qtpaths +

+
+

+ is a tool to query Qt path information +

+
+

+ qtplugininfo +

+
+

+ dumps meta-data about Qt plugins in JSON format +

+
+
+
+
+
+
+
+

+ QtWebEngine-6.9.2 +

+
+
+
+
+
+

+ Introduction to QtWebEngine +

+
+

+ Important +

+

+ This package has historically had frequent updates that + address security vulnerabilities. To determine the latest + status check the BLFS + Security Advisories. +

+
+

+ QtWebEngine integrates + chromium's web capabilities + into Qt. It ships with its own copy of ninja which it uses + for the build if it cannot find a system copy, and various + copies of libraries from ffmpeg, icu, libvpx, and zlib + (including libminizip) which have been forked by the + chromium developers. +

+

+ This package and browsers using it may be useful if you need + to use a website designed for google chrome, or chromium, + browsers. +

+
+

+ Warning +

+

+ QtWebEngine uses a forked copy of chromium, and is + therefore vulnerable to many issues found there. The Qt + developers seem to fork a newer version for minor Qt + versions, but because chromium moves to newer versions very + often, by the time the Qt developers get a forked version + to pass their extended tests it is always an old version + and security fixes from chromium (some of which have a CVE + number) can take several months to appear in a QtWebengine + release, even if the severity has been rated as Critical. +

+

+ Therefore, you should be wary of using QtWebEngine in a + sensitive context and should always update to the next + release as soon as it appears in this book, even if is not + flagged as a Security Update. Identifying which + vulnerabilities have been fixed in a particular release + requires pulling the appropriate 'based-NNN' branch just + before the previous and current releases and is often + impractical. Reports of fixed QTBUG items do not seem to be + available and there is not any documentation in the tarball + for changes after the qt-5 versions. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Warning +

+

+ By default, ninja will use all online CPUs +2 (if at least + 4 exist), even if they are not available to the current + task because the build terminal has been restricted with + 'taskset'. In BLFS, this package takes more time to build + than any other. In one example, the build of this package + crashed at about the 90 percent point due to an out of + memory problem on a system with 24 cores and 32 GB of + memory. +

+

+ To work around this, see the Command Explanations below. +

+
+

+ Package Information +

+
+ +
+

+ qtwebengine Dependencies +

+
+ Required +
+

+ Cups-2.4.12, html5lib-1.1, nodejs-22.18.0, nss-3.115, pciutils-3.14.0, and + Qt-6.9.2 +

+
+ Recommended +
+
+

+ Note +

+

+ If these packages are not installed, the build process will + compile and install its own (perhaps older) version, with + the side effect of increasing build and installed disk + space and build time. +

+
+ +
+ Optional +
+

+ MIT Kerberos V5-1.22.1, + Poppler-25.08.0, jsoncpp, + libsrtp, and + snappy +

+
+
+

+ Installation of qtwebengine +

+

+ Install qtwebengine by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_MESSAGE_LOG_LEVEL=STATUS             \
+      -D QT_FEATURE_webengine_system_ffmpeg=ON      \
+      -D QT_FEATURE_webengine_system_icu=ON         \
+      -D QT_FEATURE_webengine_system_libevent=ON    \
+      -D QT_FEATURE_webengine_proprietary_codecs=ON \
+      -D QT_FEATURE_webengine_webrtc_pipewire=ON    \
+      -D QT_BUILD_EXAMPLES_BY_DEFAULT=OFF           \
+      -D QT_GENERATE_SBOM=OFF                       \
+      -G Ninja ..                                   &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ CMAKE_MESSAGE_LOG_LEVEL=STATUS: + Output interesting messages that project users might be + interested in. Ideally these should be concise, no more than + a single line, but still informative. +

+

+ QT_FEATURE_webengine_system_*: + Specify what external packages the system should use. +

+

+ QT_BUILD_EXAMPLES_BY_DEFAULT=OFF: + Do not build examples by default. +

+

+ NINJAJOBS=4 make: If you patched + system ninja in LFS to recognize the NINJAJOBS environment + variable, this command will run system ninja with the + specified number of jobs (i.e. 4). There are several reasons + why you might want to use options like this this: +

+
+
    +
  • +

    + Building on a subset of CPUs allows measuring the build + time for a smaller number of processors, and/or running + other CPU-intensive tasks at the same time. For an + editor on a machine with a lot of CPUs, trying to + measure the build time for a 4-CPU machine, + NINJAJOBS=4 make will give + a reasonable approximation (there is a short period + where N+2 python and node jobs run). +

    +
  • +
  • +

    + On a machine with only 4 CPUs online, the default of + scheduling N+2 jobs for qtwebengine is slower by + between 3% and 7%, probably because of the size of the + C++ files and their many includes and templates. + Therefore, if in doubt set NINJAJOBS to the number of + CPUs. +

    +
  • +
  • +

    + Reducing the number of cores being used on long + running, CPU intensive packages may alleviate heat + problems. +

    +
  • +
  • +

    + Reducing the number of cores will prevent potential + out-of-memory problems on systems that do not have + enough memory (or swap) when all cores are active. A + suggested approach is to limit the number of cores to + about one core for each 1.5 GB of combined RAM and swap + space. +

    +
  • +
+
+
+
+

+ Configuring QtWebEngine +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If you are upgrading from an older minor version of this + application, for some webpages to load you may need to + clear the browser + caches, e.g. for falkon + they will be found in ~/.cache/falkon/. You will need to do + this if the browser starts to render the page and then + changes to a blank tab with a message that something went + wrong, and a button to Retry. Even after removing the old + caches, you may need to retry a few times for each affected + tab. +

+

+ If a browser using this package fails to run and when run + from a term it reports 'Trace/breakpoint trap' that is + probably a kernel configuration issue - there is no need to + rebuild QtWebEngine, see the next section, recompile the + kernel and reboot to the new kernel. +

+
+
+
+

+ Kernel Configuration +

+

+ This package does not require any of the optional kernel + namespace items, but if User namespace is enabled PID + namespace must also be enabled. In that case enable the + following options in the kernel configuration and recompile + the kernel if necessary: +

+
General setup --->
+  -*- Namespaces support --->                                       [NAMESPACES]
+    # Enable or disable *both* of them:
+    [ /*] User namespace                                               [USER_NS]
+    [ /*] PID Namespaces                                                [PID_NS]
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + qtwebengine_convert_dict and + QtWebEngineProcess (both in $QT6DIR/libexec) +
+
+ Installed Libraries: + libQt6Pdf.so, libQt6PdfQuick.so, + libQt6PdfWidgets.so, libQt6WebEngineCore.so, + libQt6WebEngineiQuick.so, + libQt6WebEngineQuickDelegatesQml.so, and + libQt6WebEngineWidgets.so +
+
+ Installed Directories: + $QT6DIR/include/QtPdf, + $QT6DIR/include/QtPdfQuick, $QT6DIR/include/QtPdfWidgets, + $QT6DIR/include/QtWebEngineCore, + $QT6DIR/include/QtWebEngineQuick, + $QT6DIR/include/QtWebEngineWidgets, + $QT6DIR/qml/QtWebEngine, and + $QT6DIR/translations/qtwebengine_locales +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ qtwebengine_convert_dict +

+
+

+ converts hunspell dictionaries (.dic) to chromium format + (.bdic) +

+
+

+ QtWebEngineProcess +

+
+

+ is a libexec program which runs a zygote process + (one that listens for spawn requests from a master + process and will fork itself in response) +

+
+
+
+
+
+
+
+

+ startup-notification-0.12 +

+
+
+
+
+
+

+ Introduction to startup-notification +

+

+ The startup-notification + package contains startup-notification libraries. These are + useful for building a consistent manner to notify the user + through the cursor that the application is loading. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ startup-notification Dependencies +

+
+ Required +
+

+ Xorg + Libraries and xcb-util-0.4.1 +

+
+
+

+ Installation of startup-notification +

+

+ Install startup-notification + by running the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m644 -D doc/startup-notification.txt \
+    /usr/share/doc/startup-notification-0.12/startup-notification.txt
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libstartup-notification-1.so +
+
+ Installed Directories: + /usr/include/startup-notification-1.0 and + /usr/share/doc/startup-notification-0.12 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libstartup-notification-1.so +

+
+

+ provides the functions to assist applications in + communicating with the cursor system to provide + feedback to the user that the application is + loading +

+
+
+
+
+
+
+
+

+ Vulkan-Headers-1.4.321 +

+
+
+
+
+
+

+ Introduction to Vulkan-Headers +

+

+ The Vulkan-Headers package + contains a set of header files necessary to build and link + applications against the Vulkan API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Vulkan-Headers Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of Vulkan-Headers +

+

+ Install Vulkan-Headers by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr -G Ninja .. &&
+ninja
+

+ To test the results, issue: ninja test. Two tests are + known to fail due to the use of the deprecated ciso646 header with GCC 15 or newer. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/vk_video, + /usr/include/vulkan, /usr/share/cmake/VulkanHeaders, and + /usr/share/vulkan +
+
+
+
+
+
+
+
+

+ Vulkan-Loader-1.4.321 +

+
+
+
+
+
+

+ Introduction to Vulkan-Loader +

+

+ The Vulkan-Loader package + contains a library which provides the Vulkan API and provides + core support for graphics drivers for Vulkan. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Vulkan-loader Dependencies +

+
+ Required +
+

+ CMake-4.1.0, Vulkan-Headers-1.4.321, and + Xorg + Libraries +

+
+ Recommended +
+ +
+ Recommended (Runtime) +
+

+ Mesa-25.1.8 (for Vulkan drivers) +

+
+ Optional (for testing) +
+

+ git-2.50.1 +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of Vulkan-Loader +

+
+

+ Note +

+

+ If this package is being installed on a system where Mesa + has already been installed previously, please rebuild + Mesa-25.1.8 after this package to install + Vulkan graphics drivers. +

+
+

+ Install Vulkan-Loader by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr   \
+      -D CMAKE_BUILD_TYPE=Release    \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON \
+      -G Ninja .. &&
+ninja
+

+ To run the test suite, issue (note that the command will use + git-2.50.1 + to download a copy of GoogleTest for building the test + suite): +

+
sed "s/'git', 'clone'/&, '--depth=1', '-b', self.commit/" \
+    -i ../scripts/update_deps.py &&
+cmake -D BUILD_TESTS=ON -D UPDATE_DEPS=ON .. &&
+ninja &&
+ninja test
+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D BUILD_WSI_WAYLAND_SUPPORT=OFF: + This option allows building without Wayland-1.24.0 support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libvulkan.so +
+
+ Installed Directories: + /usr/lib/cmake/VulkanLoader +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libvulkan.so +

+
+

+ provides the Vulkan API and core support for + graphics drivers +

+
+
+
+
+
+
+
+

+ WebKitGTK-2.48.5 +

+
+
+
+
+
+

+ Introduction to WebKitGTK +

+

+ The WebKitGTK package is a + port of the portable web rendering engine WebKit to the GTK+ 3 and GTK + 4 platforms. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package has historically had frequent updates that + address security vulnerabilities. To determine the latest + status check the BLFS + Security Advisories. +

+
+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://webkitgtk.org/releases/webkitgtk-2.48.5.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 23e26bc4e30b80462cb1030fab352409 +

    +
  • +
  • +

    + Download size: 42 MB +

    +
  • +
  • +

    + Estimated disk space required: 1.5 GB (186 MB + installed, add 181 MB for GTK-4) +

    +
  • +
  • +

    + Estimated build time: 21 SBU (for GTK-3, using + parallelism=8, add 21 SBU for GTK-4) +

    +
  • +
+
+

+ WebKitGTK Dependencies +

+
+ Required +
+

+ Cairo-1.18.4, CMake-4.1.0, gst-plugins-base-1.26.5, + gst-plugins-bad-1.26.5, + GTK-3.24.50, GTK-4.18.6, ICU-77.1, Little CMS-2.17, + libgudev-238, libsecret-0.21.7, + libsoup-3.6.5, libtasn1-4.20.0, + libwebp-1.6.0, Mesa-25.1.8, OpenJPEG-2.5.3, + Ruby-3.4.5, SQLite-3.50.4, unifdef-2.12, and + Which-2.23 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, harfBuzz-11.4.1, + Wayland-1.24.0, WOFF2-1.0.2, ccache, flite, + Hyphen, + libbacktrace, + libmanette, + libspiel, and + sysprof +

+
+
+

+ Installation of WebKitGTK +

+

+ Installation of WebKitGTK +

+
+

+ Important +

+

+ This package allows building with either GTK-3 or GTK-4, + but not both in the same build. The GTK-4 version is needed + for packages such as Epiphany-48.5. Other packages, + such as Balsa-2.6.5 or Evolution-3.56.2, + require the GTK-3 version. Both versions can be installed + side by side on the same system. We give build instructions + for both cases below, but the only difference is the + setting of -D + USE_GTK4 +

+

+ With the default “release” build configuration, some + source files of this package require more than 4 GiB of RAM + to be built. As the result, you should pass -j<N> to + ninja + (replacing <N> with the quotient + of the amount of available RAM and 4 GiB) to limit the + number of parallel jobs and avoid the job from being killed + by the kernel OOM killer. +

+

+ On a 32-bit system, the sum of RAM and swap space used by a + build job (in fact, any single process) cannot exceed 4 + GiB. So if you are building this package on a 32-bit + system, you must add the -D + CMAKE_CXX_FLAGS_RELEASE="-O2 -DNDEBUG" + option to the cmake to disable some + optimizations which need a lot of memory to limit the + memory usage of individual build jobs. Performance will be + impacted slightly, but not at a level where it is + noticeable during normal usage. +

+
+

+ If you want to install the GTK+-3 version of WebKitGTK, run the following commands: +

+
mkdir -vp build &&
+cd        build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release     \
+      -D CMAKE_INSTALL_PREFIX=/usr    \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON  \
+      -D PORT=GTK                     \
+      -D LIB_INSTALL_DIR=/usr/lib     \
+      -D USE_LIBBACKTRACE=OFF         \
+      -D USE_LIBHYPHEN=OFF            \
+      -D ENABLE_GAMEPAD=OFF           \
+      -D ENABLE_MINIBROWSER=ON        \
+      -D ENABLE_DOCUMENTATION=OFF     \
+      -D ENABLE_WEBDRIVER=OFF         \
+      -D USE_WOFF2=OFF                \
+      -D USE_GTK4=OFF                 \
+      -D ENABLE_JOURNALD_LOG=OFF      \
+      -D ENABLE_BUBBLEWRAP_SANDBOX=ON \
+      -D USE_SYSPROF_CAPTURE=NO       \
+      -D ENABLE_SPEECH_SYNTHESIS=OFF  \
+      -W no-dev -G Ninja ..           &&
+ninja
+

+ This package does not have a working test suite. However, + there is a usable basic graphical web browser in the build + directory, build/bin/MiniBrowser. If launching it + fails, there is a problem with the build. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you want to install the GTK4 version of WebKitGTK, run the following commands: +

+
rm -rf * .[^.]* &&
+
+cmake -D CMAKE_BUILD_TYPE=Release      \
+      -D CMAKE_INSTALL_PREFIX=/usr     \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON   \
+      -D PORT=GTK                      \
+      -D LIB_INSTALL_DIR=/usr/lib      \
+      -D USE_LIBBACKTRACE=OFF          \
+      -D USE_LIBHYPHEN=OFF             \
+      -D ENABLE_GAMEPAD=OFF            \
+      -D ENABLE_MINIBROWSER=ON         \
+      -D ENABLE_DOCUMENTATION=OFF      \
+      -D USE_WOFF2=OFF                 \
+      -D USE_GTK4=ON                   \
+      -D ENABLE_JOURNALD_LOG=OFF       \
+      -D ENABLE_BUBBLEWRAP_SANDBOX=ON  \
+      -D USE_SYSPROF_CAPTURE=NO        \
+      -D ENABLE_SPEECH_SYNTHESIS=OFF   \
+      -W no-dev -G Ninja ..            &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+

+ As the -D + ENABLE_DOCUMENTATION=OFF option is used, the + documentation is not rebuilt nor installed now. If you need + the documentation, you can either install Gi-DocGen-2025.4 and remove this + option from the cmake command, or install + the pre-built documentation (only for the GTK-4 version) + instead: +

+
install -vdm755 /usr/share/gtk-doc/html &&
+cp -rv ../Documentation/* /usr/share/gtk-doc/html
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + USE_LIBBACKTRACE=OFF: This switch disables the + use of libbacktrace for dumping a stack trace when a crash + happens. You need to install libbacktrace + if you wish to enable it (replacing OFF with ON or just + removing the switch). +

+

+ -D USE_LIBHYPHEN=OFF: + This switch disables the default automatic hyphenation + implementation. You need to install Hyphen + if you wish to enable it (replacing OFF with ON or just + removing the switch). +

+

+ -D + ENABLE_DOCUMENTATION=OFF: This switch disables + regenerating the documentation. Remove this switch if you + have Gi-DocGen-2025.4 installed and wish to + regenerate the documentation. +

+

+ -D + ENABLE_GAMEPAD=OFF: This switch disables gamepad + support. Remove this switch if you have libmanette + installed and wish to enable it. +

+

+ -D + ENABLE_MINIBROWSER=ON: This switch enables + compiling and installing the MiniBrowser. +

+

+ -D + ENABLE_WEBDRIVER=OFF: This switch disables + compiling and installing WebKitWebDriver. We use it + for the GTK-3 build because the WebKitWebDriver from the + GTK-3 build will be overwritten by the GTK-4 build anyway. + Remove this option if you don't plan to build this package + with GTK-4. +

+

+ -D + ENABLE_BUBBLEWRAP_SANDBOX=ON: This switch enables + the Bubblewrap sandbox, which helps mitigate the impact of + most security vulnerabilities in this package. Change this + switch to OFF if you do not want to install bubblewrap-0.11.0, libseccomp-2.6.0, or xdg-dbus-proxy-0.1.6, but note + that this may put you at risk. +

+

+ -D + ENABLE_JOURNALD_LOG=OFF: This switch disables + using the systemd journal for logging errors and debugging + information since it is not available on SysV systems. +

+

+ -D + USE_SYSPROF_CAPTURE=NO: This switch disables a + hard dependency on sysprof. +

+

+ -D + ENABLE_SPEECH_SYNTHESIS=OFF: This switch disables + building speech synthesis support into WebKitGTK because it + requires additional external dependencies. You will need both + flite and libspiel if + you wish to enable this. +

+

+ -D USE_SYSTEM_MALLOC=ON: This + switch enables building against the system installed + malloc. +

+

+ -D ENABLE_GEOLOCATION=OFF: Use + this switch if you don't want to install GeoClue-2.7.2. +

+

+ -D USE_AVIF=OFF: Use this switch + if you don't want to install libavif-1.3.0. Note that you will + not have support for AVIF images if you do this. +

+

+ -D USE_WOFF2=ON: Use this switch + if the optional package WOFF2-1.0.2 is installed. This adds + additional support for fonts. +

+

+ -D USE_JPEGXL=OFF: Use this + switch if the recommended package libjxl-0.11.1 is not + installed. Note that you will not have support for JPEG XL + images if this option is passed. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + WebKitWebDriver +
+
+ Installed Libraries: + libjavascriptcoregtk-4.1.so, + libjavascriptcoregtk-6.0.so, libwebkit2gtk-4.1.so, and + libwebkitgtk-6.0.so +
+
+ Installed Directories: + /usr/include/webkitgtk-4.1, + /usr/include/webkitgtk-6.0, + /usr/lib{,exec}/webkit2gtk-4.1, + /usr/lib{,exec}/webkitgtk-6.0, + /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-extension}}-4.1 + (optional), and + /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-process-extension}}-6.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ WebKitWebDriver +

+
+

+ allows debugging and automation of web pages and + browsers +

+
+

+ libjavascriptcoregtk-4.1.so +

+
+

+ contains core JavaScript API functions used by + jsc + and libwebkit2gtk-4.1 +

+
+

+ libjavascriptcoregtk-6.0.so +

+
+

+ contains core JavaScript API functions used by + jsc + and libwebkitgtk-6.0 +

+
+

+ libwebkit2gtk-4.1.so +

+
+

+ contains the WebKit2 API functions +

+
+

+ libwebkitgtk-6.0.so +

+
+

+ contains the WebKit API functions for GTK-4 + applications +

+
+
+
+
+
+
+
+

+ xdg-desktop-portal-1.20.3 +

+
+
+
+
+
+

+ Introduction to xdg-desktop-portal +

+

+ xdg-desktop-portal is a + D-Bus service that allows applications to interact with the + desktop in a safe way. Several aspects of desktop + interaction, like file chooser, desktop style, etc are + implemented in different D-Bus APIs, known as portals. Sandboxed applications + benefit the most from this service since they don't need + special permissions to use the portal APIs, but any + application can use it. xdg-desktop-portal safeguards many + resources and features with a user-controlled permission + system. This service needs a backend implementing + desktop-specific portal interfaces. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdg-desktop-portal Dependencies +

+
+ Required +
+

+ Fuse-3.17.4, gdk-pixbuf-2.42.12, JSON-GLib-1.10.6, pipewire-1.4.7, + and dbus-1.16.2 (at runtime). Furthermore, a + backend is needed at runtime for this package to be of any + use, either xdg-desktop-portal-gtk-1.15.3 + or xdg-desktop-portal-gnome-48.0 + or xdg-desktop-portal-lxqt-1.2.0 +

+
+ Recommended +
+ +
+

+ Note +

+

+ Although there is an option to build the package without + bubblewrap, upstream + developers and LFS editors alike highly recommend to not + use this possibility, as it will create a large security + issue. +

+
+
+ Optional +
+

+ GeoClue-2.7.2 (for the “location” portal), + and pytest-8.4.1 with libportal-0.9.1, + dbusmock-0.36.0, and umockdev-0.19.3 + (for running tests) +

+
+ Optional (for building the + documentation) +
+

+ sphinx-8.2.3 with sphinxext.opengraph, + sphinx_copybutton, + furo, and flatpak +

+
+
+

+ Installation of xdg-desktop-portal +

+

+ Install xdg-desktop-portal + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D tests=disabled .. &&
+ninja
+

+ If the optional dependencies are installed, you can test the + results by running: +

+
meson configure -D tests=enabled &&
+ninja test
+

+ Without the external dependencies one test, + integration/dynamiclauncher is known to fail. +

+

+ Now, as the root user: +

+
ninja install
+

+ Remove systemd files that are useless (as the root user): +

+
rm -rvf /usr/lib/systemd
+
+
+

+ Command Explanations +

+

+ -D tests=disabled: + Prevents requiring several optional dependencies that are + only needed for tests. +

+
+
+

+ Configuring xdg-desktop-portal +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ The main configuration files are ~/.config/xdg-desktop-portal/portals.conf, + /etc/xdg-desktop-portal/portals.conf, and + /usr/share/xdg-desktop-portal/portals.conf. + Several other locations can be searched for configuration + files. See portals.conf(5). +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The various configuration files are used to choose the + backend depending of various conditions. See portals.conf(5) + for details. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + several daemons in + /usr/libexec +
+
+ Installed + Librar(y,ies): None +
+
+ Installed + Director(y,ies): None +
+
+
+
+
+
+
+
+

+ xdg-desktop-portal-gtk-1.15.3 +

+
+
+
+
+
+

+ Introduction to xdg-desktop-portal-gtk +

+

+ xdg-desktop-portal-gtk is a + backend for xdg-desktop-portal, that is using GTK + and various pieces of GNOME infrastructure. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdg-desktop-portal-gtk Dependencies +

+
+ Required +
+

+ gnome-desktop-44.3, GTK-3.24.50 and + xdg-desktop-portal-1.20.3 +

+
+ Recommended +
+ +
+
+

+ Installation of xdg-desktop-portal-gtk +

+

+ Install xdg-desktop-portal-gtk by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ Remove systemd files that are useless (as the root user): +

+
rm -rvf /usr/lib/systemd
+
+
+

+ Contents +

+
+
+
+ Installed Program: + one daemon in /usr/libexec +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/xdg-desktop-portal (if + no other xdg-desktop-portal backend is + installed) +
+
+
+
+
+
+
+
+
+

+ Chapter 26. Display + Managers +

+
+
+
+
+

+ Display Managers are graphical programs used for starting the + graphical display (currently, the X server) and providing a login + capability for a Window Manager or Desktop Environment. +

+

+ There are many Display Managers available. Some of the more well + known include: gdm, kdm (deprecated), LightDM, lxdm, Slim, + and sddm. +

+

+ Among the Desktop Environments available for Linux you find: + Enlightenment, GNOME, Plasma, lxde, LXQt, + and xfce. +

+

+ Choosing a Display Manager or Desktop Environment is highly + subjective. The choice depends on the look and feel of the + packages, the resources (memory and disk space) required, and the + utilities included. +

+

+ In this chapter, the installation instructions of some Display + Managers are presented. Later in the book, you will find other + ones, which are provided as part of some Desktop Environments. +

+
+
+
+

+ GDM-48.0 +

+
+
+
+
+
+

+ Introduction to GDM +

+

+ GDM is a system service that + is responsible for providing graphical logins and managing + local and remote displays. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GDM + Dependencies +

+
+ Required +
+

+ AccountsService-23.13.9, + DConf-0.40.0, + libcanberra-0.30 (built after + GTK-3.24.50), and Linux-PAM-1.7.1 +

+
+ Optional +
+

+ keyutils-1.6.3 and check (for + testing) +

+
+ Runtime Dependencies +
+

+ gnome-session-48.0, gnome-shell-48.4, and elogind-255.17 +

+
+
+

+ Installation of GDM +

+

+ It is recommended to have a dedicated user and group to take + control of the gdm daemon after it is + started. Issue the following commands as the root user: +

+
groupadd -g 21 gdm &&
+useradd -c "GDM Daemon Owner" -d /var/lib/gdm -u 21 \
+        -g gdm -s /bin/false gdm &&
+passwd -ql gdm
+

+ First, adapt GDM to build with GCC 15: +

+
sed -r 's/([(*])bool([) ])/\1boolval\2/' -i common/gdm-settings-utils.*
+

+ Install GDM by running the + following commands: +

+
sed -e 's@systemd@elogind@'                                \
+    -e 's/-session optional/-session required/'            \
+    -e '/elogind/isession  required       pam_loginuid.so' \
+
+    -i data/pam-lfs/gdm-launch-environment.pam &&
+
+mkdir build &&
+cd    build &&
+
+meson setup ..                   \
+      --prefix=/usr              \
+      --buildtype=release        \
+      -D gdm-xsession=true       \
+      -D initial-vt=7            \
+      -D run-dir=/run/gdm        \
+      -D logind-provider=elogind \
+      -D systemd-journal=false   \
+      -D systemdsystemunitdir=no \
+      -D systemduserunitdir=no   &&
+ninja
+

+ The test suite requires Check that we've removed from LFS. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D initial-vt=7: This + switch starts GDM on VT7 by default, since on SysV systems, + elogind is not available until it gets activated by PAM + during a login session. The default behavior is to start on + the currently active TTY, but this behavior causes GDM to + fail to start in virtual environments and other situations + where Wayland is not supported. +

+

+ -D default-pam-config=lfs: Use + this switch if you did not create the /etc/lfs-release file or distribution auto + detection will fail and you will be unable to use + GDM. +

+

+ -D gdm-xsession=true: + This enables the installation of the GDM Xsession file. +

+
+
+

+ Configuring GDM +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/gdm/custom.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The GDM daemon is configured using the /etc/gdm/custom.conf file. Default values + are stored in GSettings in the gdm.schemas file. It is recommended that + end-users modify the /etc/gdm/custom.conf file because the + schemas file may be overwritten when the user updates their + system to have a newer version of GDM. +

+

+ On some systems with NVIDIA GPUs or virtual GPUs (such as + provided by qemu), GDM will hide Wayland sessions by + default. This is often done to prevent users from + encountering problems with buggy drivers, which can result + in system lockups, application crashes, power management + problems, and graphics slowdowns. If your system is a + virtual machine or you have an NVIDIA GPU and still want to + try running Wayland sessions anyway, execute the following + command as the root user: +

+
ln -s /dev/null /etc/udev/rules.d/61-gdm.rules
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To start gdm + automatically when the system is switched to runlevel 5, + install the /etc/rc.d/init.d/xdm script and the + /etc/sysconfig/xdm + configuration file included in the blfs-bootscripts-20250225 package + and adjust /etc/inittab by + running as the root user: +

+
make install-gdm
+

+ In order to permanently set the default runlevel to 5, + starting the gdm greeter screen + automatically, you can modify /etc/inittab. As the root user: +

+
sed /initdefault/s/3/5/ -i /etc/inittab
+
+
+
+
+
+

+ Configuring GDM Auto-Suspend +

+
+
+
+

+ GDM will suspend the system when the greeter screen has + been running for a while without any interactive input. If + you want to disable auto-suspending for any reason (for + example if the system is hosting some services besides + functioning as a desktop system), as the root user, issue: +

+
su gdm -s /bin/bash                                                \
+       -c "dbus-run-session                                        \
+             gsettings set org.gnome.settings-daemon.plugins.power \
+                           sleep-inactive-ac-type                  \
+                           nothing"
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gdm, gdm-config, and + gdmflexiserver +
+
+ Installed Libraries: + libgdm.so and pam_gdm.so (PAM + Module) +
+
+ Installed Directories: + /etc/gdm, /usr/include/gdm, + /usr/share/gdm, and /usr/share/help/*/gdm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gdm +

+
+

+ is a login prompt for GNOME +

+
+

+ gdm-config +

+
+

+ configures a variety of authentication options for + GDM +

+
+
+
+
+
+
+
+

+ lightdm-1.32.0 +

+
+
+
+
+
+

+ Introduction to Lightdm +

+

+ The lightdm package contains + a lightweight display manager based upon GTK. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Lightdm Package Information +

+
+ +
+

+ Additional download +

+
+

+ Note +

+

+ The greeter is a program to present a graphical login + screen. There are several alternative greeters, but the + gtk+ package is the reference implementation. For a list of + other greeters, see https://en.wikipedia.org/wiki/LightDM. +

+
+
+ +
+

+ Lightdm Dependencies +

+
+ Required +
+

+ Exo-4.20.0 + (for the greeter), libgcrypt-1.11.2, itstool-2.0.7, + Linux-PAM-1.7.1, and Xorg-Server-21.1.18 (Runtime) +

+
+ Recommended +
+ +
+ Optional +
+

+ AccountsService-23.13.9 (run + time), at-spi2-core-2.56.4, GTK-Doc-1.34.0, libido, and libindicator +

+
+
+

+ Installation of Lightdm +

+

+ First, create a dedicated user and group to take control of + the lightdm + daemon after it is started. Issue the following commands as + the root user: +

+
groupadd -g 65 lightdm       &&
+useradd  -c "Lightdm Daemon" \
+         -d /var/lib/lightdm \
+         -u 65 -g lightdm    \
+         -s /bin/false lightdm
+

+ Then change the Linux-PAM + configuration files so that elogind is used: +

+
sed -i s/systemd/elogind/ data/pam/*
+

+ Install lightdm by running + the following commands: +

+
./configure --prefix=/usr                 \
+            --libexecdir=/usr/lib/lightdm \
+            --localstatedir=/var          \
+            --sbindir=/usr/bin            \
+            --sysconfdir=/etc             \
+            --disable-static              \
+            --disable-tests               \
+            --with-greeter-user=lightdm   \
+            --with-greeter-session=lightdm-gtk-greeter \
+            --docdir=/usr/share/doc/lightdm-1.32.0 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install                                                  &&
+cp tests/src/lightdm-session /usr/bin                         &&
+sed -i '1 s/sh/bash --login/' /usr/bin/lightdm-session        &&
+rm -rf /etc/init                                              &&
+install -v -dm755 -o lightdm -g lightdm /var/lib/lightdm      &&
+install -v -dm755 -o lightdm -g lightdm /var/lib/lightdm-data &&
+install -v -dm755 -o lightdm -g lightdm /var/cache/lightdm    &&
+install -v -dm770 -o lightdm -g lightdm /var/log/lightdm
+

+ Now build the greeter: +

+
tar -xf ../lightdm-gtk-greeter-2.0.9.tar.gz &&
+cd lightdm-gtk-greeter-2.0.9 &&
+
+./configure --prefix=/usr                 \
+            --libexecdir=/usr/lib/lightdm \
+            --sbindir=/usr/bin            \
+            --sysconfdir=/etc             \
+            --with-libxklavier            \
+            --enable-kill-on-sigterm      \
+            --disable-libido              \
+            --disable-libindicator        \
+            --disable-static              \
+            --disable-maintainer-mode     \
+            --docdir=/usr/share/doc/lightdm-gtk-greeter-2.0.9 &&
+make
+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ If you installed Xorg in /opt, you will need to create a + symbolic link so lightdm can find the Xorg server. As the + root user: +

+
ln -sf /opt/xorg/bin/Xorg /usr/bin/X
+
+
+
+

+ Command Explanations +

+

+ sed ... + /usr/bin/lightdm-session: This command + ensures that the initial login via the greeter sources + /etc/profile and ~/.bash_profile. Without this, commands that + depend on different environment variables may not work as + expected. +

+
+
+

+ Configuring lightdm +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/lightdm/{lightdm,users,keys,lightdm-gtk-greeter}.conf +

+

+ The configuration files offer many options. If, for + instance, you have a multiple monitor setup but prefer the + login window to be displayed on only one monitor, set + 'active-monitor=<monitor-name>' in lightdm-gtk-greeter.conf. For example you + could use active-monitor=HDMI-1. You can determine + the monitor-names with xrandr + --listmonitors. Note that the monitor names + may change if you change the graphics driver and you may + have to adjust the configuration accordingly. +

+
+
+
+
+
+

+ Boot + Script +

+
+
+
+

+ To start lightdm automatically + when the system is switched to runlevel 5, install the + /etc/rc.d/init.d/xdm script + and the /etc/sysconfig/xdm + configuration file included in the blfs-bootscripts-20250225 package + and adjust /etc/inittab by + running as the root user: +

+
make install-lightdm
+
+
+
+
+
+

+ Starting + lightdm +

+
+
+
+

+ The lightdm + greeter can be started from the command line as the + root user: +

+
telinit 5
+
+
+
+
+
+

+ Available Sessions +

+
+
+
+

+ The greeter offers a list of available sessions, depending + on the Window Managers and Desktop Environments installed. + The list includes sessions which have a corresponding + .desktop file installed under + /usr/share/xsessions. Most of + the Window Managers and Desktop Environments automatically + provide those files, but if necessary, you may include a + custom one. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dm-tool, lightdm, and + lightdm-gtk-greeter +
+
+ Installed Libraries: + liblightdm-gobject-1.so +
+
+ Installed Directories: + /etc/lightdm, /etc/apparmor.d, + /usr/lib/lightdm, /usr/include/lightdm-gobject-1, + /usr/share/help/C/lightdm + /usr/share/gtk-doc/html/lightdm-gobject-1, + /usr/share/doc/lightdm-gtk-greeter-2.0.9, + /var/lib/lightdm, /var/lib/lightdm-data, + /var/cache/lightdm, and /var/log/lightdm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lightdm +

+
+

+ is a display and login manager +

+
+

+ lightdm-gtk-greeter +

+
+

+ is an auxiliary process that displays the greeter, + a graphical user interface that performs user + authentication and initiates the selected window + manager or display environment +

+
+
+
+
+
+
+
+

+ sddm-0.21.0 +

+
+
+
+
+
+

+ Introduction to sddm +

+

+ The sddm package contains a + lightweight display manager based upon Qt and QML. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ SDDM + Dependencies +

+
+ Required +
+

+ CMake-4.1.0, extra-cmake-modules-6.17.0, + and Qt-6.9.2 +

+
+ Recommended +
+ +
+
+

+ Installation of SDDM +

+

+ First, create a dedicated user and group to take control of + the sddm daemon + after it is started. Issue the following commands as the + root user: +

+
groupadd -g 64 sddm &&
+useradd  -c "sddm Daemon" \
+         -d /var/lib/sddm \
+         -u 64 -g sddm    \
+         -s /bin/false sddm
+

+ Install sddm by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -D ENABLE_JOURNALD=OFF              \
+      -D NO_SYSTEMD=ON                    \
+      -D RUNTIME_DIR=/run/sddm            \
+      -D USE_ELOGIND=ON                   \
+      -D BUILD_MAN_PAGES=ON               \
+      -D BUILD_WITH_QT6=ON                \
+      -D DATA_INSTALL_DIR=/usr/share/sddm \
+      -D DBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf \
+      .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -dm755 -o sddm -g sddm /var/lib/sddm
+/usr/bin/sddm --example-config > /etc/sddm.conf
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply additional compiler optimizations. +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -D + ENABLE_JOURNALD=OFF and -D NO_SYSTEMD=ON: These + switches are used because this version of BLFS does not + support systemd. +

+

+ -D + DBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf: + This switch prevents the file /etc/dbus-1/system.d/org.freedesktop.DisplayManager.conf + from being overwritten, as it may be used by other DM's. +

+

+ -D + BUILD_MAN_PAGES=ON: This switch is used to build + and install man pages. +

+
+
+

+ Configuring SDDM +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/sddm.config +

+

+ Normally, you want to edit this file. For example, if Xorg + is installed in /opt, use your preferred editor as the + root user to replace the + default XauthPath + value by /opt/xorg/bin/xauth. Or, as the + root user, issue: +

+
sed -i.orig '/ServerPath/ s|usr|opt/xorg|' /etc/sddm.conf
+

+ This command will do the substitution and create a copy of + the original file with name /etc/sddm.conf.orig. +

+

+ From now on, we will describe how to modify configurations + using sed. Of course, you may instead use your preferred + editor as the root user. +

+

+ For security reasons, you normally want the default + ServerArguments=-nolisten + tcp, unless a remote machine needs access to + the local X server. In that case, as the root user, issue: +

+
sed -i 's/-nolisten tcp//' /etc/sddm.conf
+

+ Desktop (Notebook) users, normally want the Num Lock key on + (off). For that, as root, + issue: +

+
sed -i '/Numlock/s/none/on/' /etc/sddm.conf
+

+ for Desktop users. For Notebook users, replace /on/ by + /off/ in the command above. +

+

+ By default, a virtual keyboard is presented for the user. + If this is not desired, run as root: +

+
sed -i 's/qtvirtualkeyboard//' /etc/sddm.conf
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ Install the /etc/rc.d/init.d/xdm init script from the + blfs-bootscripts-20250225 package, + as the root user: +

+
make install-sddm
+
+
+
+
+
+

+ Linux PAM Configuration +

+
+
+
+
+

+ Note +

+

+ The install procedure above installed a set of PAM + configuration files. These procedures overwrite them and + use versions compatible with a BLFS environment. +

+
+

+ If you have built sddm + with Linux PAM support, + create the necessary configuration files by running the + following commands as the root user: +

+
cat > /etc/pam.d/sddm << "EOF"
+# Begin /etc/pam.d/sddm
+
+auth     requisite      pam_nologin.so
+auth     required       pam_env.so
+
+auth     required       pam_succeed_if.so uid >= 1000 quiet
+auth     include        system-auth
+
+account  include        system-account
+password include        system-password
+
+session  required       pam_limits.so
+session  include        system-session
+
+# End /etc/pam.d/sddm
+EOF
+
+cat > /etc/pam.d/sddm-autologin << "EOF"
+# Begin /etc/pam.d/sddm-autologin
+
+auth     requisite      pam_nologin.so
+auth     required       pam_env.so
+
+auth     required       pam_succeed_if.so uid >= 1000 quiet
+auth     required       pam_permit.so
+
+account  include        system-account
+
+password required       pam_deny.so
+
+session  required       pam_limits.so
+session  include        system-session
+
+# End /etc/pam.d/sddm-autologin
+EOF
+
+cat > /etc/pam.d/sddm-greeter << "EOF"
+# Begin /etc/pam.d/sddm-greeter
+
+auth     required       pam_env.so
+auth     required       pam_permit.so
+
+account  required       pam_permit.so
+password required       pam_deny.so
+session  required       pam_unix.so
+-session optional       pam_systemd.so
+
+# End /etc/pam.d/sddm-greeter
+EOF
+
+
+
+
+
+

+ Starting sddm +

+
+
+
+

+ If the sddm bootscript has been installed, start sddm by + running, as the root user: +

+
/etc/rc.d/init.d/xdm start
+

+ By convention, X should be executed at runlevel 5, + consequently, the same is true for sddm. However, the default runlevel is + 3. Changing to runlevel 5, from a console terminal, as + root user, starts the + sddm + bootscript, bringing up the greeter screen: +

+
init 5
+

+ In order to permanently set the default to 5, starting the + sddm greeter + screen automatically, modify /etc/inittab as the root user: +

+
cp -v /etc/inittab{,-orig} &&
+sed -i '/initdefault/ s/3/5/' /etc/inittab
+
+
+
+
+
+

+ Available Sessions +

+
+
+
+

+ The greeter offers a list of available sessions, depending + on the Window Managers and Desktop Environments installed. + The list includes sessions which have a corresponding + .desktop file installed under + /usr/share/xsessions or + /usr/share/wayland-sessions. + Most of the Window Managers and Desktop Environments + automatically provide those files, but if necessary, you + may include a custom one. +

+
+
+
+
+
+

+ Themes +

+
+
+
+

+ Three themes are installed at /usr/share/sddm/themes: elarun, maldives, + and maya. There is also a default theme, which is not + present in that directory. You can install other themes in + that directory. In order to change the theme, you need to + edit /etc/sddm.conf, to + change the default (empty) theme, replacing Current= with Current=<new + theme>, e.g. Current=maldives. +

+

+ In order to see the theme without leaving the session, + issue: +

+
sddm-greeter --test-mode --theme <theme path>
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sddm and sddm-greeter +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/sddm and + /var/lib/sddm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ sddm +

+
+

+ is a display and login manager based on + Qt libraries. +

+
+

+ sddm-greeter +

+
+

+ is an auxiliary process that displays the greeter, + a graphical user interface that performs user + authentication and initiates the selected window + manager or display environment. +

+
+
+
+
+
+
+
+
+

+ Chapter 27. Window + Managers +

+
+
+
+
+

+ Window Managers and Desktop Environments are the primary user + interfaces into the X Window + System. A window manager is a program that controls the + appearance of windows and provides the means by which the user + can interact with them. A Desktop Environment provides a more + complete interface to the operating system, and provides a range + of integrated utilities and applications. +

+

+ There are many Window Managers available. Some of the more well + known ones include fvwm2, + Window Maker, AfterStep, Enlightenment, Sawfish, and Blackbox. +

+

+ The Desktop Environments available for Linux are GNOME, KDE, + and XFce. +

+

+ Choosing a Window Manager or Desktop Environment is highly + subjective. The choice depends on the look and feel of the + packages, the resources (RAM, disk space) required, and the + utilities included. One web site that provides a very good + summary of what is available, screenshots, and their respective + features is Window Managers for + X. +

+

+ In this chapter, the installation instructions of several Window + Managers and one lightweight Desktop Environment are presented. + Later in the book, both KDE and + GNOME have their own sections. +

+
+
+
+

+ Fluxbox-1.3.7 +

+
+
+
+
+
+

+ Introduction to Fluxbox +

+

+ The Fluxbox package contains + a window manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Fluxbox Dependencies +

+
+ Required +
+

+ a graphical + environment +

+
+ Optional +
+

+ dbus-1.16.2 (runtime), FriBidi-1.0.16, + and imlib2-1.12.5 (if you wish to use other + image formats in addition to XPM) +

+
+
+

+ Installation of Fluxbox +

+

+ First, fix a build failure when building with gcc-11.1 and + later: +

+
sed -i '/text_prop.value > 0/s/>/!=/' util/fluxbox-remote.cc
+

+ Install Fluxbox by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not have a working test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuring Fluxbox +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.fluxbox/init, ~/.fluxbox/keys, and ~/.fluxbox/menu +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If Fluxbox is the only + Window Manager you want to use, you can start it with an + .xinitrc file in your home + folder. Be sure to backup your current .xinitrc before proceeding. +

+
echo startfluxbox > ~/.xinitrc
+

+ Or alternatively, if you use a login manager like GDM-48.0 or + lightdm-1.32.0, and would like to be + able to choose Fluxbox at + the login prompt, create a fluxbox.desktop file. As root: +

+
mkdir -pv /usr/share/xsessions &&
+cat > /usr/share/xsessions/fluxbox.desktop << "EOF"
+[Desktop Entry]
+Encoding=UTF-8
+Name=Fluxbox
+Comment=This session logs you into Fluxbox
+Exec=startfluxbox
+Type=Application
+EOF
+

+ If you didn't install GDM-48.0 or lightdm-1.32.0 in /usr, then change that command to fit the + prefix you chose. +

+

+ Now create the Fluxbox + configuration files: +

+
mkdir -v ~/.fluxbox &&
+cp -v /usr/share/fluxbox/init ~/.fluxbox/init &&
+cp -v /usr/share/fluxbox/keys ~/.fluxbox/keys
+

+ To generate the application menu, first you may wish to run + fluxbox-generate_menu + -h, in order to choose any <user_options>, then + issue: +

+
cd ~/.fluxbox &&
+fluxbox-generate_menu <user_options>
+

+ Alternately, copy a pregenerated menu: +

+
cp -v /usr/share/fluxbox/menu ~/.fluxbox/menu
+

+ Menu items are added by editing ~/.fluxbox/menu. The syntax is explained + on the fluxbox man page. +

+

+ If you want to use an image as your desktop background, + copy the theme you like into ~/.fluxbox. Then add a line to make it + use the correct image. In the following command, change + <theme> for + the name of the theme you want and change </path/to/nice/image.ext> + to point to the actual image you want to use, where + ext must be + xpm, if imlib2-1.12.5 is not + installed to allow other image formats. +

+
cp -r /usr/share/fluxbox/styles/<theme> ~/.fluxbox/theme &&
+
+sed -i 's,\(session.styleFile:\).*,\1 ~/.fluxbox/theme,' ~/.fluxbox/init &&
+
+[ -f ~/.fluxbox/theme ] &&
+echo "background.pixmap: </path/to/nice/image.ext>" >> ~/.fluxbox/theme ||
+[ -d ~/.fluxbox/theme ] &&
+echo "background.pixmap: </path/to/nice/image.ext>" >> ~/.fluxbox/theme/theme.cfg
+

+ In some locales the font specified in the theme may not + contain the needed characters. This results in menus with + blank items. You can fix this by editing ~/.fluxbox/theme with a text editor and + altering it so that it names a suitable font. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fluxbox, fbsetbg, fbsetroot, + fluxbox-generate_menu, startfluxbox, fbrun, + fluxbox-remote, and fluxbox-update_configs +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/fluxbox and + ~/.fluxbox +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fluxbox +

+
+

+ is a window manager for X11 based on Blackbox 0.61.0 +

+
+

+ fbsetbg +

+
+

+ is a utility that sets the background image. It + requires one of the following at runtime: + Esetroot, + wmsetbg, + feh, + hsetroot, + chbg, + display, + qiv, + xv, + xsri, + xli, + or xsetbg. It also + requires which if + Esetroot is found +

+
+

+ fbsetroot +

+
+

+ is a utility to change root window appearance based + on the Blackbox + application bsetroot +

+
+

+ fluxbox-generate_menu +

+
+

+ is a utility that generates a menu by scanning your + PATH +

+
+

+ startfluxbox +

+
+

+ is a session startup script that allows for command + executions prior to fluxbox starting +

+
+

+ fbrun +

+
+

+ displays a run dialog window +

+
+

+ fluxbox-remote +

+
+

+ provides command line access to key commands for + Fluxbox +

+
+

+ fluxbox-update_configs +

+
+

+ use to manage config files (reload, update, test) +

+
+
+
+
+
+
+
+

+ IceWM-3.8.2 +

+
+
+
+
+
+

+ Introduction to IceWM +

+

+ IceWM is a window manager + with the goals of speed, simplicity, and not getting in the + user's way. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ IceWM Dependencies +

+
+ Required +
+

+ CMake-4.1.0, imlib2-1.12.5, and a graphical + environment +

+
+ Optional +
+

+ asciidoc-10.2.1 (for regenerating the + HTML documentation), FriBidi-1.0.16 (for languages written + right to left), librsvg-2.61.0, libao-1.2.0, libsndfile-1.2.2, alsa-lib-1.2.14 + (for the experimental icesound program), and gdk-pixbuf-xlib +

+
+
+

+ Installation of IceWM +

+

+ Install IceWM by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D CFGDIR=/etc               \
+      -D ENABLE_LTO=ON             \
+      -D DOCDIR=/usr/share/doc/icewm-3.8.2  \
+      .. &&
+make
+

+ This package does not have a working test suite. +

+

+ Now, as the root user: +

+
make install
+

+ This package creates two .desktop files in the /usr/share/xsessions/ directory. Both are + not needed in a BLFS system, so prevent the extra file + showing up as an option in a display manager. As the + root user: +

+
rm -v /usr/share/xsessions/icewm.desktop
+
+
+

+ Command Explanations +

+

+ -D ENABLE_LTO=ON: + This option enables Link Time Optimization and is required + for this package. +

+
+
+

+ Configuring IceWM +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ ~/.icewm/keys, ~/.icewm/menu, and ~/.icewm/preferences, and ~/.icewm/toolbar, and ~/.icewm/winoptions. The default versions + are installed in /usr/share/icewm/ and will be used if you + have not copied them to ~/.icewm. +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If IceWM is the only + Window Manager you want to use, you can start it with an + .xinitrc file in your home + folder. Be sure to backup your current .xinitrc before proceeding. +

+
echo icewm-session > ~/.xinitrc
+

+ Now create the IceWM + configuration files: +

+
mkdir -pv ~/.icewm                                      &&
+cp -v /usr/share/icewm/keys ~/.icewm/keys               &&
+cp -v /usr/share/icewm/menu ~/.icewm/menu               &&
+cp -v /usr/share/icewm/preferences ~/.icewm/preferences &&
+cp -v /usr/share/icewm/toolbar ~/.icewm/toolbar         &&
+cp -v /usr/share/icewm/winoptions ~/.icewm/winoptions
+

+ You can now edit these files to meet your requirements. In + particular, review the preferences file. You can use + Logout -> + Restart-IceWM on the main menu to load your + changed preferences, but changes to the background only + take effect when IceWM is + started. +

+

+ At this point you can either modify the traditional + menu files to suit your requirements, or use the newer icewm-menu-fdo described + later. +

+

+ The syntax of the menus is explained in the help files, + which you can access by running help from the menu, but + some of the detail is out of date and the default + selections in the menus (a few old applications on the main + menu, everything else on the Programs menu) will + benefit from being updated to meet your needs. The + following examples are provided to encourage you to think + about how you wish to organise your menus. Please note the + following: +

+
+
    +
  • +

    + If a program listed in the menu has not been + installed, it will not appear when the menu is + displayed. Similarly, if the program exists but the + specified icon does not, no icon will be displayed in + the menu. +

    +
  • +
  • +

    + The icons can be either .xpm or .png files, and there is no need to + specify the extension. If the icon is located in the + "library" (/usr/share/icewm/icons) there is no + need to specify the path. +

    +
  • +
  • +

    + Most programs are in sub-menus, and the main menu + will always append entries for windows, help, settings, logout at + the bottom. +

    +
  • +
  • +

    + An icon for firefox + was copied to the library directory and given a + meaningful name. The icon for xine is xine.xpm which was installed to a + pixmap directory. +

    +
  • +
  • +

    + The default toolbar is not altered. +

    +
  • +
+
+

+ If you wish to use this traditional method, there are more + examples in previous releases of this book (e.g. BLFS-7.8). +

+

+ Alternatively, you + can create a menu which conforms to the FDO Desktop Menu + Specifications, where programs can be found because they + have a .desktop file in the XDG_DATA_HOME or XDG_DATA_DIR + directories. Unlike most windowmanagers, icewm does not search for programs + when the menu is invoked, so if you take this route you + will need to rerun the following command after installing + or removing programs: +

+
icewm-menu-fdo >~/.icewm/menu
+

+ If you wish to put icons on your desktop, you will need to + install a program such as rox-filer + which provides a pinboard. If you do that you will no + longer be able to access the menu by right-clicking on the + desktop, you will have to use the IceWM button. To ensure that the + rox pinboard is running, + the following commands will put it in the startup file: +

+
cat > ~/.icewm/startup << "EOF"
+rox -p Default &
+EOF &&
+chmod +x ~/.icewm/startup
+
+

+ Tip +

+

+ There are a number of keyboard shortcuts in IceWM: +

+
+
    +
  • +

    + Ctrl + Alt + FN : go to + ttyN. +

    +
  • +
  • +

    + Ctrl + Alt + N : go to desktop + number N +

    +
  • +
  • +

    + Ctrl + Alt + Space : open a box on the taskbar + where you can key in the name of an application and + run it. +

    +
  • +
+
+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + icehelp, icesh, icesound, icewm, + icewm-menu-fdo, icewm-menu-xrandr, icewm-session, + icewm-set-gnomewm, icewmbg, and icewmhint +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/icewm-3.8.2, + /usr/share/icewm and ~/.icewm +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ icehelp +

+
+

+ is used to display the html manual +

+
+

+ icesh +

+
+

+ is a command-line window manager which can be used + in ~/.icewm/startup +

+
+

+ icesound +

+
+

+ plays audio files on GUI events raised by IceWM +

+
+

+ icewm +

+
+

+ is the window manager +

+
+

+ icewm-menu-fdo +

+
+

+ can create a file in a format suitable for an IceWM + menu, which lists those programs currently + installed in a layout conforming to the FDO Desktop + Menu Specifications +

+
+

+ icewm-menu-xrandr +

+
+

+ is a helper program used to manage multi-screen + configurations +

+
+

+ icewm-session +

+
+

+ runs icewmbg, icewm, icewmtray, startup, shutdown + (i.e. startup and shutdown scripts are run if + installed) +

+
+

+ icewm-set-gnomewm +

+
+

+ is a script to set the GNOME window manager to + icewm using + gconftool +

+
+

+ icewmbg +

+
+

+ is used to set the background, according to the + various DesktopBackground settings in the + preferences +

+
+

+ icewmhint +

+
+

+ is used internally to provide hints to the user +

+
+
+
+
+
+
+
+

+ openbox-3.6.1 +

+
+
+
+
+
+

+ Introduction to openbox +

+

+ Openbox is a highly + configurable desktop window manager with extensive standards + support. It allows you to control almost every aspect of how + you interact with your desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): http://openbox.org/dist/openbox/openbox-3.6.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: b72794996c6a3ad94634727b95f9d204 +

    +
  • +
  • +

    + Download size: 944 KB +

    +
  • +
  • +

    + Estimated disk space required: 19 MB +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU +

    +
  • +
+
+

+ Additional Download +

+ +

+ Openbox Dependencies +

+
+ Required +
+

+ a graphical + environment and Pango-1.56.4 (compiled with support for + libXft) +

+
+ Optional +
+

+ dbus-1.16.2 (runtime), imlib2-1.12.5 (to + enable icons in the right click menu), ImageMagick-7.1.2-1 (to show + desktop backgrounds as seen in the Configuration Information + section below), PyXDG-0.28, startup-notification-0.12, + and librsvg-2.61.0 +

+
+
+

+ Installation of Openbox +

+
+

+ Note +

+

+ If XORG_PREFIX is not /usr, + tell gcc + about it: +

+
export LIBRARY_PATH=$XORG_PREFIX/lib
+
+

+ Update the package scripts to enable Python 3: +

+
patch -Np1 -i ../openbox-3.6.1-py3-1.patch
+

+ Install Openbox by running + the following commands: +

+
autoreconf -fi &&
+./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  \
+            --docdir=/usr/share/doc/openbox-3.6.1 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ This package creates three .desktop files in the /usr/share/xsessions/ directory. Two of + these are not appropriate in a BLFS system, so prevent the + extra files showing up as options in a display manager. As + the root user: +

+
rm -v /usr/share/xsessions/openbox-{gnome,kde}.desktop
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc: + This option puts Openbox's + configuration files in /etc/xdg/openbox instead of + /usr/etc/xdg/openbox. +

+

+ --docdir=/usr/share/doc/openbox-3.6.1: + this puts a few files in a versioned directory in + /usr/share/doc. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Configuring Openbox +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/xdg/openbox/autostart, + /etc/xdg/openbox/menu.xml, + /etc/xdg/openbox/rc.xml, + ~/.config/openbox/autostart, + ~/.config/openbox/menu.xml + and ~/.config/openbox/rc.xml +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Openbox's right click menu + can be used to launch programs. The menu itself is + configured with 2 files, /etc/xdg/openbox/menu.xml and + ~/.config/openbox/menu.xml. + To make changes to the menu, copy /etc/xdg/openbox/menu.xml + to ~/.config/openbox/menu.xml and edit it: +

+
cp -rf /etc/xdg/openbox ~/.config
+

+ To have icons in your right click menu requires installing + imlib2-1.12.5 before you install + Openbox. To set an icon + for an entry in the menu edit ~/.config/openbox/menu.xml and add an + icon to the <item> tag like this: +

+
<item label="Mplayer" icon="/usr/share/pixmaps/mplayer.png">
+

+ Many other aspects of Openbox's behavior are configured with + ~/.config/openbox/rc.xml such + as what keybindings are used to launch programs or which + mouse button launches the main menu. +

+

+ Details of the theme that Openbox applies to window decorations + are configured in ~/.config/openbox/rc.xml. You can get a + list of the available themes with the command: +

+
ls -d /usr/share/themes/*/openbox-3 | sed 's#.*es/##;s#/o.*##'
+
+
+
+
+
+

+ Starting + Openbox +

+
+
+
+

+ To automatically start openbox when you start + Xorg: +

+
echo openbox > ~/.xinitrc
+

+ If you want to set a background image to your desktop you + can use display and launch it + from ~/.xinitrc just before openbox: +

+
cat > ~/.xinitrc << "EOF"
+display -backdrop -window root /path/to/beautiful/picture.jpeg
+exec openbox
+EOF
+

+ Or if you like a bit of variety, put a selection of images + in a folder (in this example, the directory + ~/.config/backgrounds) and choose one at random each time + you xinit: +

+
cat > ~/.xinitrc << "EOF"
+# make an array which lists the pictures:
+picture_list=(~/.config/backgrounds/*)
+# create a random integer between 0 and the number of pictures:
+random_number=$(( ${RANDOM} % ${#picture_list[@]} ))
+# display the chosen picture:
+display -backdrop -window root "${picture_list[${random_number}]}"
+exec openbox
+EOF
+

+ If you like to have the numlock key set when you start + Xorg, install + Numlockx and add that to your xinitrc. Another useful + application is dbus-1.16.2: +

+
cat > ~/.xinitrc << "EOF"
+. /etc/profile
+picture_list=(~/.config/backgrounds/*)
+random_number=$(( ${RANDOM} % ${#picture_list[*]} ))
+display -backdrop -window root "${picture_list[${random_number}]}"
+numlockx
+eval $(dbus-launch --auto-syntax --exit-with-session)
+lxpanel &
+exec openbox
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gdm-control, gnome-panel-control, + obxprop, openbox, openbox-gnome-session, + openbox-kde-session and openbox-session +
+
+ Installed Libraries: + libobrender.so and libobt.so +
+
+ Installed Directories: + /etc/xdg/openbox, + /usr/include/openbox, /usr/share/doc/openbox-3.6.1 and + /usr/share/themes. +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gdm-control +

+
+

+ is a command line tool to send signals to + GDM +

+
+

+ gnome-panel-control +

+
+

+ is a command line utility to invoke the + Gnome Panel run + dialog/menu +

+
+

+ obxprop +

+
+

+ is a tool for displaying the properties on an x + window. It has a similar functionality to + xprop, but allows + you to see UTF-8 strings as text +

+
+

+ openbox +

+
+

+ is a standards compliant, highly configurable, + window manager +

+
+

+ openbox-gnome-session +

+
+

+ is a script to launch an Gnome session with + Openbox as your + window manager from your ~/.xinitrc +

+
+

+ openbox-kde-session +

+
+

+ is a script to launch an KDE session with Openbox as your window manager + from your ~/.xinitrc +

+
+

+ openbox-session +

+
+

+ is a script to launch an Openbox session from your + ~/.xinitrc +

+
+

+ libobrender.so +

+
+

+ contains the functions used by Openbox for theme rendering +

+
+

+ libobt.so +

+
+

+ is the Openbox + toolkit library +

+
+
+
+
+
+
+
+
+

+ Chapter 28. Icons +

+
+
+
+
+

+ Window Managers and Desktop Environments can use icons from + different sources. Generally icons are installed in /usr/share/icons and are independent of + distribution. +

+
+
+
+

+ adwaita-icon-theme-48.1 +

+
+
+
+
+
+

+ Introduction to Adwaita Icon Theme +

+

+ The Adwaita Icon Theme + package contains an icon theme for GTK+ 3 and GTK + 4 applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Adwaita Icon Theme Dependencies +

+
+ Required +
+

+ GTK-3.24.50 or GTK-4.18.6, and librsvg-2.61.0 +

+
+
+

+ Installation of Adwaita Icon Theme +

+

+ Install Adwaita Icon Theme + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Remove any old icons and install the new ones. As the + root user: +

+
rm -rf /usr/share/icons/Adwaita/ &&
+ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/icons/Adwaita +
+
+
+
+
+
+
+
+

+ breeze-icons-6.17.0 +

+
+
+
+
+
+

+ Introduction to Breeze Icons +

+

+ The Breeze Icons package + contains the default icons for KDE + Plasma applications, but it can be used for other + window environments. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Breeze Icons Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0 + and Qt-6.9.2 +

+
+ Optional +
+

+ KDE + Frameworks-6.17.0, libxml2-2.14.5, and lxml-6.0.0 +

+
+
+

+ Installation of Breeze Icons +

+

+ Install Breeze Icons by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D BUILD_TESTING=OFF         \
+      -W no-dev ..                 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D BUILD_TESTING=OFF: + This parameter disables building the testing framework, which + requires some modules from KDE + Frameworks-6.17.0. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libKF6BreezeIcons.so +
+
+ Installed Directory: + /usr/include/KF6/BreezeIcons, + /usr/lib/cmake/KF6BreezeIcons, and + /usr/share/icons/breeze{,-dark} +
+
+
+
+
+
+
+
+

+ gnome-icon-theme-3.12.0 +

+
+
+
+
+
+

+ Introduction to GNOME Icon Theme +

+

+ The GNOME Icon Theme package + contains an assortment of non-scalable icons of different + sizes and themes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Icon Theme Dependencies +

+
+ Required +
+

+ GTK-3.24.50, hicolor-icon-theme-0.18, and + icon-naming-utils-0.8.90 +

+
+
+

+ Installation of GNOME Icon Theme +

+

+ Install GNOME Icon Theme by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/icons/gnome +
+
+
+
+
+
+
+
+

+ gnome-icon-theme-extras-3.12.0 +

+
+
+
+
+
+

+ Introduction to GNOME Icon Theme Extras +

+

+ The GNOME Icon Theme Extras + package contains extra icons for the GNOME Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Icon Theme Extras Dependencies +

+
+ Required +
+

+ gnome-icon-theme-3.12.0 +

+
+ Optional +
+

+ git-2.50.1 + and Inkscape-1.4.2 +

+
+
+

+ Installation of GNOME Icon Theme Extras +

+

+ Install GNOME Icon Theme + Extras by running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+
+
+
+

+ gnome-icon-theme-symbolic-3.12.0 +

+
+
+
+
+
+

+ Introduction to GNOME Icon Theme Symbolic +

+

+ The GNOME Icon Theme + Symbolic package contains symbolic icons for the + default GNOME icon theme. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Icon Theme Symbolic + Dependencies +

+
+ Required +
+

+ gnome-icon-theme-3.12.0 +

+
+ Optional +
+

+ git-2.50.1 + and Inkscape-1.4.2 +

+
+
+

+ Installation of GNOME Icon Theme Symbolic +

+

+ Install GNOME Icon Theme + Symbolic by running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/icons/gnome/scalable +
+
+
+
+
+
+
+
+

+ gnome-themes-extra-3.28 +

+
+
+
+
+
+

+ Introduction to GNOME Themes Extra +

+

+ The GNOME Themes Extra + package, formerly known as GNOME + Themes Standard, contains various components of the + default GNOME theme. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Themes Extra Dependencies +

+
+ Required +
+

+ GTK-3.24.50 with librsvg-2.61.0 +

+
+
+

+ Installation of GNOME Themes Extra +

+

+ Install GNOME Themes Extra + by running the following commands: +

+
./configure --prefix=/usr --disable-gtk2-engine &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-gtk2-engine: This + switch disables the GTK+-2 theming engine because GTK+-2 is + no longer part of BLFS. +

+

+ --disable-gtk3-engine: This + switch disables the GTK+-3 theming engine. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/share/icons/HighContrast, + /usr/share/themes/Adwaita, + /usr/share/themes/Adwaita-dark, and + /usr/share/themes/HighContrast +
+
+
+
+
+
+
+
+

+ hicolor-icon-theme-0.18 +

+
+
+
+
+
+

+ Introduction to hicolor-icon-theme +

+

+ The hicolor-icon-theme + package contains a default fallback theme for implementations + of the icon theme specification. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of hicolor-icon-theme +

+

+ Install hicolor-icon-theme + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/icons/hicolor +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ /usr/share/icons/hicolor/* +

+
+

+ contains icon definitions used as defaults +

+
+
+
+
+
+
+
+

+ icon-naming-utils-0.8.90 +

+
+
+
+
+
+

+ Introduction to icon-naming-utils +

+

+ The icon-naming-utils + package contains a Perl + script used for maintaining backwards compatibility with + current desktop icon themes, while migrating to the names + specified in the + Icon Naming Specification. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ icon-naming-utils Dependencies +

+
+ Required +
+

+ XML-Simple-2.25 +

+
+
+

+ Installation of icon-naming-utils +

+

+ Install icon-naming-utils by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + icon-name-mapping +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/dtds and + /usr/share/icon-naming-utils +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ icon-name-mapping +

+
+

+ is a Perl script + used for maintaining backwards compatibility with + current desktop icon themes, while migrating to the + names specified in the Icon Naming Specification +

+
+
+
+
+
+
+
+

+ lxde-icon-theme-0.5.1 +

+
+
+
+
+
+

+ Introduction to LXDE Icon Theme +

+

+ The LXDE Icon Theme package + contains nuoveXT 2.2 Icon Theme for LXDE. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ LXDE + Icon Theme Dependencies +

+
+ Optional +
+

+ GTK-3.24.50 (for gtk-update-icon-cache + command) +

+
+
+

+ Installation of LXDE Icon Theme +

+

+ Install LXDE Icon Theme by + running the following commands: +

+
./configure --prefix=/usr
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have installed one of the optional dependencies, run + the following command as the root user: +

+
gtk-update-icon-cache -qf /usr/share/icons/nuoveXT2
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/icons/nuoveXT2 +
+
+
+
+
+
+
+
+

+ oxygen-icons-6.0.0 +

+
+
+
+
+
+

+ Introduction to oxygen-icons +

+

+ The oxygen icons theme is a photo-realistic icon style, with + a high standard of graphics quality. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ oxygen-icons Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0 + and Qt-6.9.2 +

+
+
+

+ Installation of oxygen-icons +

+

+ First, enable scalable icons: +

+
sed -i '/( oxygen/ s/)/scalable )/' CMakeLists.txt
+

+ Install oxygen-icons by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr -W no-dev ..
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + none +
+
+ Installed Libraries: + none +
+
+ Installed Directory: + /usr/share/icons/oxygen +
+
+
+
+
+
+
+
+
+
+

+ Part VII. KDE +

+
+
+
+
+
+

+ KDE is a comprehensive desktop + environment with a huge number of applications written for it and + a huge amount of users. It is based on the Qt framework. +

+

+ For more information visit the official KDE project site at + https://kde.org/. +

+
+
+
+
+

+ Chapter 29. Introduction to KDE +

+
+
+
+
+
+
+
+

+ KDE Preliminaries +

+
+
+
+
+

+ KDE is a comprehensive desktop + environment with a huge number of applications written for it + and a huge amount of users. It is based on the Qt framework. +

+

+ The KDE6 system has two main blocks: the libraries, called KDE + Frameworks 6 or KF6, which can be used in other environments, + and the desktop environment called KDE Plasma 6. Most of the + applications written by the KDE team only use KF6, and do not + need the plasma environment. +

+

+ For more information visit the official KDE project site at + https://kde.org/. +

+
+
+
+
+

+ extra-cmake-modules-6.17.0 +

+
+
+
+
+
+

+ Introduction to Extra Cmake Modules +

+

+ The Extra Cmake Modules + package contains extra CMake + modules used by KDE + Frameworks and other packages. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Extra Cmake Modules Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ sphinx-8.2.3 (for building documentation), + PyQt (experimental + support for building KDE Python bindings), and ReuseTool (for + running internal tests) +

+
+
+

+ Installation of Extra Cmake Modules +

+

+ First, fix the package to be compatible with the latest + Python release: +

+
patch -Np1 -i ../extra-cmake-modules-6.17.0-upstream_fix-1.patch
+

+ Install Extra Cmake Modules + by running the following commands: +

+
sed -i '/"lib64"/s/64//' kde-modules/KDEInstallDirsCommon.cmake &&
+
+sed -e '/PACKAGE_INIT/i set(SAVE_PACKAGE_PREFIX_DIR "${PACKAGE_PREFIX_DIR}")' \
+    -e '/^include/a set(PACKAGE_PREFIX_DIR "${SAVE_PACKAGE_PREFIX_DIR}")' \
+    -i ECMConfig.cmake.in &&
+
+mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr -D BUILD_WITH_QT6=ON .. &&
+make
+

+ This package does not come with a test suite. +

+
+

+ Note +

+

+ Unlike other KF6 packages, this module is installed in /usr + because it can be used by some non-KF6 packages. +

+
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed ... + Modules/KDEInstallDirs.cmake: This command + disables applications using cmake from attempting to install + files in a lib64 sub-directory. +

+

+ sed ... + ECMConfig.cmake.in: This command protects the + global cmake variable + PACKAGE_PREFIX_DIR from being + changed when checking ECM presence: since we install ECM into + /usr, the check would set that + variable to /usr, while most + KDE packages expect it to be set to /opt/kf6 and would fail to build if it is + set to something else. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/ECM and + /usr/share/doc/ECM (if documentation was built) +
+
+
+
+
+
+
+
+

+ Phonon-4.12.0 +

+
+
+
+
+
+

+ Introduction to Phonon +

+

+ Phonon is the multimedia API + for KDE. It replaces the old aRts package. Phonon needs the VLC + backend. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Phonon Dependencies +

+
+ Required +
+

+ CMake-4.1.0, extra-cmake-modules-6.17.0, + GLib-2.84.4, and Qt-6.9.2 +

+

+ phonon-backend-vlc-0.12.0 + needs to be installed afterwards for multimedia operation in + KDE. +

+
+ Optional +
+

+ PulseAudio-17.0 +

+
+
+

+ Installation of Phonon +

+

+ Install Phonon by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D PHONON_BUILD_QT5=OFF      \
+      -W no-dev .. &&
+make
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply higher level of the compiler optimizations. +

+

+ -D + PHONON_BUILD_QT5=OFF: This switch is needed to + prevent building the Qt5 + bindings, which fails if Qt5 + is not installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + phononsettings +
+
+ Installed Libraries: + libphonon4qt6.so and + libphonon4qt6experimental.so +
+
+ Installed Directories: + /usr/include/phonon4qt6, + /usr/lib/cmake/phonon4qt6, and + /usr/lib/plugins/designer +
+
+
+
+
+
+
+
+

+ Phonon-backend-vlc-0.12.0 +

+
+
+
+
+
+

+ Introduction to the Phonon-backend-vlc +

+

+ This package provides a Phonon backend which utilizes the + VLC media framework. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Phonon-backend-vlc Dependencies +

+
+ Required +
+

+ phonon-4.12.0 and VLC-3.0.21 (gui is not needed) +

+
+
+

+ Installation of Phonon-backend-vlc +

+

+ Install Phonon-backend-vlc + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D PHONON_BUILD_QT5=OFF      \
+      .. &&
+make
+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply higher level of compiler optimizations. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + none +
+
+ Installed Libraries: + phonon_vlc_qt6.so +
+
+ Installed Directory: + /usr/lib/plugins/phonon4qt6_backend +
+
+
+
+
+
+
+
+

+ Polkit-Qt-0.200.0 +

+
+
+
+
+
+

+ Introduction to Polkit-Qt +

+

+ Polkit-Qt provides an API to + PolicyKit in the Qt environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Polkit-Qt Dependencies +

+
+ Required +
+

+ CMake-4.1.0, Polkit-126, and Qt-6.9.2 +

+
+
+

+ Installation of Polkit-Qt +

+

+ Install Polkit-Qt by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D QT_MAJOR_VERSION=6        \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply higher level of the compiler optimizations. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + none +
+
+ Installed Libraries: + libpolkit-qt6-agent-1.so, + libpolkit-qt6-core-1.so, and + libpolkit-qt6-gui-1.so +
+
+ Installed Directories: + /usr/include/polkit-qt6-1 and + /usr/lib/cmake/PolkitQt6-1 +
+
+
+
+
+
+
+
+

+ plasma-wayland-protocols-1.18.0 +

+
+
+
+
+
+

+ Introduction to the Plasma-wayland-protocols +

+

+ This package provides a custom set of protocol definitions + for KDE. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Plasma-wayland-protocols + Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0 +

+
+
+

+ Installation of Plasma-wayland-protocols +

+

+ Install Plasma-wayland-protocols by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr ..
+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + none +
+
+ Installed Libraries: + none +
+
+ Installed Directories: + /usr/share/plasma-wayland-protocols + and /usr/lib/cmake/PlasmaWaylandProtocols +
+
+
+
+
+
+
+
+
+

+ Chapter 30. KDE + Frameworks 6 +

+
+
+
+
+
+
+
+

+ KDE Frameworks 6 + Pre-installation Configuration +

+
+
+
+
+

+ KF6 can be installed in /usr or + /opt/kf6. The BLFS editors + recommend the latter in the BLFS environment. +

+
+

+ Installing in /usr +

+

+ One option is to install KDE + Frameworks into the /usr + hierarchy. This creates a simpler setup but makes it more + difficult to try multiple versions of KDE Frameworks. +

+
export KF6_PREFIX=/usr
+

+ It is a good idea to add the following variables to your + system or personal profiles: +

+
cat >> /etc/profile.d/qt6.sh << "EOF"
+# Begin kf6 extension for /etc/profile.d/qt6.sh
+
+pathappend /usr/lib/plugins        QT_PLUGIN_PATH
+pathappend $QT6DIR/lib/plugins     QT_PLUGIN_PATH
+
+pathappend /usr/lib/qt6/qml        QML2_IMPORT_PATH
+pathappend $QT6DIR/lib/qml         QML2_IMPORT_PATH
+
+# End extension for /etc/profile.d/qt6.sh
+EOF
+
+cat > /etc/profile.d/kf6.sh << "EOF"
+# Begin /etc/profile.d/kf6.sh
+
+export KF6_PREFIX=/usr
+
+# End /etc/profile.d/kf6.sh
+EOF
+
+

+ Note +

+

+ If qt6 was installed in + /usr, the $QT6DIR/lib/ portions of the above paths + may need to be changed to $QT6DIR/lib/qt6/. +

+
+

+ Additionally, if Sudo-1.9.17p2 is installed, these + variables should be available to the super user. Execute the + following commands as the root user: +

+
cat >> /etc/sudoers.d/qt << "EOF"
+Defaults env_keep += QT_PLUGIN_PATH
+Defaults env_keep += QML2_IMPORT_PATH
+EOF
+
+cat >> /etc/sudoers.d/kde << "EOF"
+Defaults env_keep += KF6_PREFIX
+EOF
+
+
+

+ Installing in /opt +

+

+ A method of building multiple versions installs KDE Frameworks in the /opt hierarchy: +

+
export KF6_PREFIX=/opt/kf6
+

+ If you are not installing KDE + Frameworks in /usr, you + will need to make some additional configuration changes. Best + practice is to add those to your system or personal profile: +

+
cat > /etc/profile.d/kf6.sh << "EOF"
+# Begin /etc/profile.d/kf6.sh
+
+export KF6_PREFIX=/opt/kf6
+
+pathappend $KF6_PREFIX/bin              PATH
+pathappend $KF6_PREFIX/lib/pkgconfig    PKG_CONFIG_PATH
+
+pathappend $KF6_PREFIX/etc/xdg          XDG_CONFIG_DIRS
+pathappend $KF6_PREFIX/share            XDG_DATA_DIRS
+
+pathappend $KF6_PREFIX/lib/plugins      QT_PLUGIN_PATH
+pathappend $KF6_PREFIX/lib/plugins/kcms QT_PLUGIN_PATH
+
+pathappend $KF6_PREFIX/lib/qml          QML2_IMPORT_PATH
+
+pathappend $KF6_PREFIX/lib/python3.13/site-packages PYTHONPATH
+
+pathappend $KF6_PREFIX/include          CPLUS_INCLUDE_PATH
+
+pathappend $KF6_PREFIX/lib/gtk-3.0      GTK_PATH
+# End /etc/profile.d/kf6.sh
+EOF
+
+cat >> /etc/profile.d/qt6.sh << "EOF"
+# Begin Qt6 changes for KF6
+
+pathappend /usr/lib/plugins            QT_PLUGIN_PATH
+pathappend $QT6DIR/plugins             QT_PLUGIN_PATH
+pathappend $QT6DIR/qml                 QML2_IMPORT_PATH
+
+# End Qt6 changes for KF6
+EOF
+

+ Expand your /etc/ld.so.conf + file: +

+
cat >> /etc/ld.so.conf << "EOF"
+# Begin KF6 addition
+
+/opt/kf6/lib
+
+# End KF6 addition
+EOF
+

+ Several KDE Frameworks and + Plasma packages install + files into D-Bus and + Polkit directories. When + installing KDE Frameworks in + a location other than /usr, + D-Bus and Polkit need to be able to find these + files. The easiest way to achieve this is to create the + following symlinks (as the root user): +

+
install -v -dm755           $KF6_PREFIX/{etc,share} &&
+ln -sfv /etc/dbus-1         $KF6_PREFIX/etc         &&
+ln -sfv /usr/share/dbus-1   $KF6_PREFIX/share       &&
+ln -sfv /usr/share/polkit-1 $KF6_PREFIX/share
+

+ Some packages may also install icons from the "hicolor" icon + set. Since that icon set is used by many packages, it is a + good idea to create a symlink to the one in /usr/share to avoid having multiple + installations of hicolor-icon-theme-0.18. + Run the following commands as the root user: +

+
install -v -dm755                $KF6_PREFIX/share/icons &&
+ln -sfv /usr/share/icons/hicolor $KF6_PREFIX/share/icons
+
+

+ Tip +

+

+ Sometimes, the installation paths are hardcoded into + installed files. This is the reason why /opt/kf6 is used as installation prefix + instead of /opt/kf6-6.17.0. + After installing KDE + Frameworks, you may rename the directory and create + a symlink: +

+
mv /opt/kf6{,-6.17.0}
+ln -sfv kf6-6.17.0 /opt/kf6
+

+ Later on, you may want to install other versions of + KDE Frameworks. To do + that, just remove the symlink and use /opt/kf6 as the prefix again. Which + version of KDE Frameworks + you use depends only on where the symlink points. No other + reconfiguration will be needed. +

+
+
+
+
+
+
+

+ Building + KDE Frameworks 6.17.0 (KF6) +

+
+
+
+
+

+ KDE Frameworks is a collection of libraries based on top of Qt6 + and QML derived from the previous KDE libraries. They can be + used independent of the KDE Display Environment (Plasma 6). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ The instructions below build all of the KDE Frameworks packages + in one step by using a bash script. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://download.kde.org/stable/frameworks/6.17 +

    +
  • +
  • +

    + Download MD5 sum: See Below +

    +
  • +
  • +

    + Download size: 109 MB +

    +
  • +
  • +

    + Estimated disk space required: 2.9 GB (191 MB installed) +

    +
  • +
  • +

    + Estimated build time: 13 SBU (using parallelism=8) +

    +
  • +
+
+

+ KF6 + Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0, + breeze-icons-6.17.0, docbook-xml-4.5, + docbook-xsl-nons-1.79.2, + libcanberra-0.30, libgcrypt-1.11.2, + libical-3.0.20, libxslt-1.1.43, lmdb-0.9.33, + qca-2.3.10, + libqrencode-4.1.1, plasma-wayland-protocols-1.18.0, + PyYAML-6.0.2, shared-mime-info-2.4, URI-5.32, and + Wget-1.25.0 (required to download the + packages) +

+
+ Recommended +
+ + +
+ Optional +
+

+ BlueZ-5.83 + (needed to build Bluez-Qt) and Datamatrix (deemed + recommended for Prison by upstream) +

+
+ Runtime dependency for + FrameworkIntegration +
+

+ Noto + fonts +

+
+ Additional recommended dependencies + for kapidox +
+ +
+ Additional image formats support in + KImageFormats +
+

+ libavif-1.3.0, libjxl-0.11.1, libraw-0.21.4, + libheif, OpenEXR +

+
+ Optional dependencies for Solid +
+

+ UDisks-2.10.2, UPower-1.90.9 and media-player-info + (runtime) +

+
+ Optional dependency for KWallet +
+

+ gpgmepp-2.0.0 +

+
+ Optional dependencies for kcoreaddons +
+

+ Shiboken6 and + PySide6 +

+
+ Optional dictionary backends for + Sonnet +
+

+ Hspell + and Hunspell +

+
+

+ Downloading KDE Frameworks +

+

+ The easiest way to get the KDE Frameworks packages is to use + a single wget + to fetch them all at once: +

+
url=https://download.kde.org/stable/frameworks/6.17/
+wget -r -nH -nd -A '*.xz' -np $url
+
+The options used here are:
+  -r            recurse through child directories
+  -nH           disable generation of host-prefixed directories
+  -nd           do not create a hierarchy of directories
+  -A '*.xz'     just get the *.xz files
+  -np           don't get parent directories
+
+
+

+ Setting Package Order +

+

+ The order of building files is important due to internal + dependencies. Create the list of files in the proper order as + follows: +

+
cat > frameworks-6.17.0.md5 << "EOF"
+82423c1b42100b5b776c8fecdc042a40  attica-6.17.0.tar.xz
+#c6c6e39f1bba551a21401cd5fbba1c1a  extra-cmake-modules-6.17.0.tar.xz
+8a59548faa1778cef7a6ad3395490ed2  kapidox-6.17.0.tar.xz
+7ac1e1b5d4be693f208381b4fa704965  karchive-6.17.0.tar.xz
+77d7969cda44acc3c679f230d2a82f9d  kcodecs-6.17.0.tar.xz
+51d38c6aec7f6af07bd0fff8c96b3505  kconfig-6.17.0.tar.xz
+0e497f3da6780a81eebadd22c856bc00  kcoreaddons-6.17.0.tar.xz
+4ae23e5cba7f547e5202e5eeb1842f49  kdbusaddons-6.17.0.tar.xz
+cbd3e5128e0cdcdb8096d54579601bb7  kdnssd-6.17.0.tar.xz
+f33a5c69a7649ffba69a1aa52feaf649  kguiaddons-6.17.0.tar.xz
+4c75596dc00ad12e9a80bf7798d9f843  ki18n-6.17.0.tar.xz
+e86f50568a3303f2542db2b4fb5183db  kidletime-6.17.0.tar.xz
+4b291a60f6374f96e2cf99a38ddb5eb9  kimageformats-6.17.0.tar.xz
+4aca52e11e671da59d87c24de5206055  kitemmodels-6.17.0.tar.xz
+e01dc3235328a28275f9b6f30d915a60  kitemviews-6.17.0.tar.xz
+c1afe10db53a7f061364bb8be10fc451  kplotting-6.17.0.tar.xz
+238a7cb973629f9d6207fbd80e3a2a43  kwidgetsaddons-6.17.0.tar.xz
+9a8e56599a0bfa0fd5ca8f52c04dd410  kwindowsystem-6.17.0.tar.xz
+a999ecf34d2a08ddf9de8d1ef6b00930  networkmanager-qt-6.17.0.tar.xz
+8c8239af3e50c7ae75c51292e077307d  solid-6.17.0.tar.xz
+38b1c0354ca13efb9378c9a9f7ca6d4c  sonnet-6.17.0.tar.xz
+1dea5634f166937e9657defd8a1c435a  threadweaver-6.17.0.tar.xz
+c1c4bdcd93a64b424938efd31994b391  kauth-6.17.0.tar.xz
+164f867d80ea9d511d120a2316e2d083  kcompletion-6.17.0.tar.xz
+9bbc4d738ffcdb2980b7d03483f0ecaf  kcrash-6.17.0.tar.xz
+318b37f959efb7b8414fd6f225fc6180  kdoctools-6.17.0.tar.xz
+b53d98281af63012844e42f4d2340e72  kpty-6.17.0.tar.xz
+81260390604d84f30fc7e397f2a71377  kunitconversion-6.17.0.tar.xz
+e178d79bf39b6eca3c5a43904e1e6812  kcolorscheme-6.17.0.tar.xz
+288b6d923b1e0e470902226cb0150aef  kconfigwidgets-6.17.0.tar.xz
+bdec608acd77463bc13be706143e1ad1  kservice-6.17.0.tar.xz
+bc8d0c1a7915679d265996c3f8cf022d  kglobalaccel-6.17.0.tar.xz
+71aced57987eecd1a54cd78c4acf0997  kpackage-6.17.0.tar.xz
+e4e7130dbc3df657419a41b1716fae88  kdesu-6.17.0.tar.xz
+973fc15005119c8206deac1e7c950928  kiconthemes-6.17.0.tar.xz
+7d2f8797d6a7d01481ccaa5853853f78  knotifications-6.17.0.tar.xz
+1281a859bbade7b6d0f4062be5801503  kjobwidgets-6.17.0.tar.xz
+a7241f89698eef4da4476c5f8e942532  ktextwidgets-6.17.0.tar.xz
+f081efe2093e1808ec936a1504aa921b  kxmlgui-6.17.0.tar.xz
+d9e0be9f6ab3a826d46bd69fab5df3cc  kbookmarks-6.17.0.tar.xz
+be6b34cd7395ce1bfbb026202a0fb049  kwallet-6.17.0.tar.xz
+ade7d92808bcc51303aac1e3d2fac1ea  kded-6.17.0.tar.xz
+6f2caa8f5cc4c473c14024ef33292aa6  kio-6.17.0.tar.xz
+af1144caf162a8e7183178b9697d4b76  kdeclarative-6.17.0.tar.xz
+75a1a1af5647ef5ae2a4800bd5d0436e  kcmutils-6.17.0.tar.xz
+9c3167fb2f81a610149d0baa9086cd03  kirigami-6.17.0.tar.xz
+eefe9fd856c0d90c8e70c36cf8d71b0b  syndication-6.17.0.tar.xz
+3315f351aac4fd66d1be6783d25f767b  knewstuff-6.17.0.tar.xz
+58f3a8d01b2471487b5e1fee5d7428d7  frameworkintegration-6.17.0.tar.xz
+b58edde459f7df84e6ac15b8c0d8a0b3  kparts-6.17.0.tar.xz
+c9b97c254e572760633966017640447d  syntax-highlighting-6.17.0.tar.xz
+00047f9c145d242212cf7e0bdbdd11c5  ktexteditor-6.17.0.tar.xz
+c155065874518609dd0ca9159e03ee2f  modemmanager-qt-6.17.0.tar.xz
+cc4c525dff89bdb2f65e3130df58e280  kcontacts-6.17.0.tar.xz
+ddbcacdc97fcac94fc23624f8d86b3cd  kpeople-6.17.0.tar.xz
+cff7e94d07346f8fe0863ab4140965d1  bluez-qt-6.17.0.tar.xz
+07374ffc535818d174f3b2a477935c74  kfilemetadata-6.17.0.tar.xz
+5f352802358f0106418a233379e6f67a  baloo-6.17.0.tar.xz
+#9aaed8b97970adf982f732e528050aca  breeze-icons-6.17.0.tar.xz
+3c04c64a88d1273856b9dfca5b31e787  krunner-6.17.0.tar.xz
+051d08b46b47d9f79266f8c54f67ddc3  prison-6.17.0.tar.xz
+1fc84041ca6959adf18aeb6f7f16519e  qqc2-desktop-style-6.17.0.tar.xz
+6560b5d9e25758afc0c72a35374d6f8f  kholidays-6.17.0.tar.xz
+6c40e376dae0209229739c9e92259964  purpose-6.17.0.tar.xz
+60e2beddf625dd29b06ecb9966968824  kcalendarcore-6.17.0.tar.xz
+76a127b6826b69f24a491c911d5f1731  kquickcharts-6.17.0.tar.xz
+dad770e5aa4ad6b7c83625488c119619  knotifyconfig-6.17.0.tar.xz
+2ef222252c3e1f9f131fe6d89ada580e  kdav-6.17.0.tar.xz
+e60223dddf9812597933d37c9ced0003  kstatusnotifieritem-6.17.0.tar.xz
+bd54e23c136fcb53ec866c476f1919c4  ksvg-6.17.0.tar.xz
+242303b5dcdb5d4eab00c4d16980aec0  ktexttemplate-6.17.0.tar.xz
+56e69133a11b2e67355d4869959be9ba  kuserfeedback-6.17.0.tar.xz
+EOF
+

+ In the above list, notice that some files have been commented + out with a hash (#) character. +

+
+
    +
  • +

    + The extra-cmake-modules entry has been commented out + because it was built earlier in the Introduction + to KDE. +

    +
  • +
  • +

    + This icon package is covered separately at breeze-icons-6.17.0. It is + separate to allow users that need these icons but do + not need the full set of KF6 packages (e.g. LXQt-Post-Install) + to more easily install them. +

    +
  • +
+
+
+
+

+ Installation of KDE Frameworks +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+
+

+ Caution +

+

+ If installing in /opt and + there is an existing /opt/kf6 either as a regular directory + or a symbolic link, it should be reinitialized (as + root): +

+
mv -v /opt/kf6 /opt/kf6.old                         &&
+install -v -dm755           $KF6_PREFIX/{etc,share} &&
+ln -sfv /etc/dbus-1         $KF6_PREFIX/etc         &&
+ln -sfv /usr/share/dbus-1   $KF6_PREFIX/share       &&
+ln -sfv /usr/share/polkit-1 $KF6_PREFIX/share
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
while read -r line; do
+
+    # Get the file name, ignoring comments and blank lines
+    if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi
+    file=$(echo $line | cut -d" " -f2)
+
+    pkg=$(echo $file|sed 's|^.*/||')          # Remove directory
+    packagedir=$(echo $pkg|sed 's|\.tar.*||') # Package directory
+
+    name=$(echo $pkg|sed 's|-6.*$||') # Isolate package name
+
+    tar -xf $file
+    pushd $packagedir
+
+      # kapidox is a python module
+      case $name in
+        kapidox)
+          pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
+          as_root pip3 install --no-index --find-links dist --no-user kapidox
+          popd
+          rm -rf $packagedir
+          continue
+          ;;
+      esac
+
+      mkdir build
+      cd    build
+
+      cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+            -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+            -D CMAKE_PREFIX_PATH=$QT6DIR        \
+            -D CMAKE_SKIP_INSTALL_RPATH=ON      \
+            -D CMAKE_BUILD_TYPE=Release         \
+            -D BUILD_TESTING=OFF                \
+            -D BUILD_PYTHON_BINDINGS=OFF        \
+            -W no-dev ..
+      make
+      as_root make install
+    popd
+
+  as_root rm -rf $packagedir
+  as_root /sbin/ldconfig
+
+done < frameworks-6.17.0.md5
+
+exit
+
+

+ Note +

+

+ Any modules that have been omitted can be installed later + by using the same mkdir + build; cd build; cmake; make; make install + procedure as above. +

+
+

+ Useless systemd units have been installed in $KF6_PREFIX/lib. Remove them now (as + root): +

+
rm -rf $KF6_PREFIX/lib/systemd
+

+ Sometimes the installation paths are hardcoded into installed + files. If the installed directory is not /usr, rename the + directory and create a symlink: +

+
mv -v /opt/kf6 /opt/kf6-6.17.0
+ln -sfvn kf6-6.17.0 /opt/kf6
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_PREFIX_PATH=$QT6DIR: This switch is used to + allow cmake to find the proper Qt libraries. +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + apply higher level of the compiler optimizations. +

+

+ -D BUILD_TESTING=OFF: + This switch is used to prevent building test programs and + libraries that are of no use to an end user. +

+

+ -D + BUILD_PYTHON_BINDINGS=OFF: This switch is used to + prevent building Python modules that require external + optional dependencies. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + balooctl, baloo_file, + baloo_file_extractor, baloosearch, balooshow, checkXML6, + depdiagram-generate, depdiagram-generate-all, + depdiagram-prepare, desktoptojson, gentrigrams, + kactivities-cli, kapidox_generate, + kate-syntax-highlighter, kbuildsycoca6, kcookiejar6, + kdebugdialog6, kded6, kdeinit6, kdeinit6_shutdown, + kdeinit6_wrapper, kf6-config, kf6kross, + kgendesignerplugin, kglobalaccel6, kiconfinder6, kjs6, + kjscmd6, kjsconsole, knewstuff-dialog, + kpackagelauncherqml, kpackagetool6, kquitapp6, + kreadconfig6, kshell6, ktelnetservice6, ktrash6, + kwalletd6, kwallet-query, kwrapper6, kwriteconfig6, + meinproc6, parsetrigrams, plasmapkg2, preparetips6, + protocoltojson, and solid-hardware6 +
+
+ Installed Libraries: + libkdeinit6_klauncher.so, + libKF6Activities.so, libKF6ActivitiesStats.so, + libKF6Archive.so, libKF6Attica.so, libKF6AuthCore.so, + libKF6Auth.so, libKF6Baloo.so, libKF6BluezQt.so, + libKF6Bookmarks.so, libKF6CalendarCore.so, + libKF6CalendarEvents.so, libKF6Codecs.so, + libKF6Completion.so, libKF6ConfigCore.so, + libKF6ConfigGui.so, libKF6ConfigWidgets.so, + libKF6Contacts.so, libKF6CoreAddons.so, libKF6Crash.so, + libKF6DAV.so, libKF6DBusAddons.so, libKF6Declarative.so, + libKF6DNSSD.so, libKF6DocTools.so, libKF6Emoticons.so, + libKF6FileMetaData.so, libKF6GlobalAccel.so, + libKF6GuiAddons.so, libKF6Holidays.so, libKF6I18n.so, + libKF6IconThemes.so, libKF6IdleTime.so, + libKF6ItemModels.so, libKF6ItemViews.so, + libKF6JobWidgets.so, libKF6JSApi.so, libKF6JsEmbed.so, + libKF6JS.so, libKF6KCMUtils.so, libKF6KDELibs4Support.so, + libKF6KHtml.so, libKF6KIOCore.so, + libKF6KIOFileWidgets.so, libKF6KIOGui.so, + libKF6KIONTLM.so, libKF6KIOWidgets.so, + libKF6Kirigami2.so, libKF6KrossCore.so, libKF6KrossUi.so, + libKF6MediaPlayer.so, libKF6NetworkManagerQt.so, + libKF6NewStuffCore.so, libKF6NewStuff.so, + libKF6Notifications.so, libKF6NotifyConfig.so, + libKF6Package.so, libKF6Parts.so, libKF6PeopleBackend.so, + libKF6People.so, libKF6PeopleWidgets.so, + libKF6PlasmaQuick.so, libKF6Plasma.so, libKF6Plotting.so, + libKF6Prison.so, libKF6Pty.so, libKF6Purpose.so, + libKF6PurposeWidgets.so, libKF6QuickAddons.so, + libKF6Runner.so, libKF6Service.so, libKF6Solid.so, + libKF6SonnetCore.so, libKF6SonnetUi.so, libKF6Style.so, + libKF6Su.so, libKF6SyntaxHighlighting.so, + libKF6TextEditor.so, libKF6TextWidgets.so, + libKF6ThreadWeaver.so, libKF6UnitConversion.so, + libKF6Wallet.so, libKF6WaylandClient.so, + libKF6WaylandServer.so, libKF6WidgetsAddons.so, + libKF6WindowSystem.so, libKF6XmlGui.so, + libKF6XmlRpcClient.so, and libkwalletbackend6.so +
+
+ Installed Directories: + /opt/kf6 (symlink to + /opt/kf6-6.17.0) if installing in /opt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ checkXML6 +

+
+

+ is a tool to check for syntax errors in KDE DocBook + XML files +

+
+

+ depdiagram-generate +

+
+

+ is a tool to generate a dependency diagram +

+
+

+ depdiagram-generate-all +

+
+

+ is a tool to generate a dependency diagram for all + frameworks at once +

+
+

+ depdiagram-prepare +

+
+

+ is a tool to prepare dot files +

+
+

+ desktoptojson +

+
+

+ is a tool to convert a .desktop file to a .json + file +

+
+

+ kbuildsycoca6 +

+
+

+ rebuilds the KService desktop file system + configuration cache +

+
+

+ kcookiejar6 +

+
+

+ is a command line interface to the HTTP cookie + store used by KDE, a D-BUS service to + store/retrieve/clean cookies +

+
+

+ kded6 +

+
+

+ consolidates several small services in one process +

+
+

+ kdeinit6 +

+
+

+ is a process launcher somewhat similar to the + famous init used for booting UNIX +

+
+

+ kf6-config +

+
+

+ is a command line program used to retrieve + information about KDE installation or user paths +

+
+

+ kf6kross +

+
+

+ executes kross scripts written in KDE Javascript, + Python, Ruby, Java and Falcon +

+
+

+ kgendesignerplugin +

+
+

+ generates widget plugins for Qt(TM) Designer +

+
+

+ kglobalaccel6 +

+
+

+ is a daemon use to register the key bindings and + for getting notified when the action triggered +

+
+

+ kjs6 +

+
+

+ is KDE ECMAScript/JavaScript engine +

+
+

+ kjscmd6 +

+
+

+ is a tool for launching KJSEmbed scripts from the + command line +

+
+

+ kjsconsole +

+
+

+ is a console for kjs6 +

+
+

+ kpackagelauncherqml +

+
+

+ is a commandline tool for launching kpackage QML + application +

+
+

+ kpackagetool6 +

+
+

+ is a command line kpackage tool +

+
+

+ kreadconfig6 +

+
+

+ is a command line tool to retrieve values from KDE + configuration files +

+
+

+ kshell6 +

+
+

+ start applications via kdeinit +

+
+

+ ktelnetservice6 +

+
+

+ is a telnet service +

+
+

+ ktrash6 +

+
+

+ is a helper program to handle the KDE trash can +

+
+

+ kwalletd6 +

+
+

+ is the wallet manager daemon +

+
+

+ kwriteconfig6 +

+
+

+ is a command line tool to write values in KDE + configuration files +

+
+

+ meinproc6 +

+
+

+ converts DocBook files to HTML +

+
+

+ plasmapkg2 +

+
+

+ is a tool to install, list, remove Plasma packages +

+
+

+ preparetips6 +

+
+

+ is a script to extract the text from a tips file +

+
+

+ solid-hardware6 +

+
+

+ is a command line tool to investigate available + devices +

+
+
+
+
+
+
+
+
+

+ Chapter 31. KDE + Frameworks 6 Based Applications +

+
+
+
+
+
+
+
+

+ ark-25.08.0 +

+
+
+
+
+
+

+ Introduction to Ark +

+

+ The Ark package is a KF6 + archive tool. It is a graphical front end to tar and similar + tools. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Ark + Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 and libarchive-3.8.1 +

+
+ Recommended +
+ +
+
+

+ Installation of Ark +

+

+ Install Ark by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ark +
+
+ Installed Libraries: + libkerfuffle.so +
+
+ Installed Directories: + $KF6_PREFIX/lib/plugins/kerfuffle + and $KF6_PREFIX/share/doc/HTML/*/ark +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ ark +

+
+

+ is a KF6-based Archive Manager +

+
+
+
+
+
+
+
+

+ dolphin-25.08.0 +

+
+
+
+
+
+

+ Introduction to dolphin +

+

+ The dolphin package is a KF6 + file manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ dolphin Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 and phonon-4.12.0 +

+
+ Optional +
+

+ baloo-widgets + (for the metadata features of Dolphin) and packagekit-qt +

+
+ Optional (Runtime) +
+

+ kio-extras-25.08.0 (for mounting SMB + shares) +

+
+
+

+ Installation of dolphin +

+

+ Install dolphin by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dolphin +
+
+ Installed Libraries: + libdolphinvcs.so and + libdolphinprivate.so +
+
+ Installed Directories: + $KF6_PREFIX/include/Dolphin, + $KF6_PREFIX/lib/cmake/DolphinVcs, + $KF6_PREFIX/lib/plugins/dolphin, and + $KF6_PREFIX/share/doc/HTML/*/dolphin +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ dolphin +

+
+

+ is a KF6-based file manager +

+
+
+
+
+
+
+
+

+ dolphin-plugins-25.08.0 +

+
+
+
+
+
+

+ Introduction to dolphin-plugins +

+

+ The dolphin-plugins package + provides extra plugins for the dolphin file manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ dolphin-plugins Dependencies +

+
+ Required +
+

+ dolphin-25.08.0 +

+
+
+

+ Installation of dolphin-plugins +

+

+ Install dolphin-plugins by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + In + $KF6_PREFIX/lib/plugins/dolphin/vcs/: + fileviewsvnplugin.so, fileviewgitplugin.so, + fileviewbazaarplugin.so, fileviewdropboxplugin.so, + fileviewhgplugin.so, makefileactions.so, and + mountisoaction.so +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ kdenlive-25.08.0 +

+
+
+
+
+
+

+ Introduction to Kdenlive +

+

+ The Kdenlive package is a + KF6 based video editor. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Kdenlive Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0, mlt-7.32.0, and v4l-utils-1.30.1 + (runtime) +

+
+ Recommended +
+ +
+
+

+ Installation of Kdenlive +

+

+ Install Kdenlive by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kdenlive and kdenlive_render +
+
+ Installed Libraries: + mltpreview.so +
+
+ Installed Directories: + $KF6_PREFIX/share/doc/HTML/*/kdenlive and + $KF6_PREFIX/share/kdenlive +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ kdenlive +

+
+

+ is an open source non-linear video editor which + supports a large number of formats +

+
+

+ kdenlive_render +

+
+

+ is a render program for kdenlive +

+
+
+
+
+
+
+
+

+ KMix-25.08.0 +

+
+
+
+
+
+

+ Introduction to KMix +

+

+ The KMix package contains a + KF6 based Sound Mixer application. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ KMix + Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ libcanberra-0.30 and PulseAudio-17.0 +

+
+
+

+ Installation of KMix +

+

+ Install KMix by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kmix, kmixctrl, and + kmixremote +
+
+ Installed Libraries: + libkmixcore.so +
+
+ Installed Directories: + $KF6_PREFIX/share/kmix and + $KF6_PREFIX/share/doc/HTML/*/kmix +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ kmix +

+
+

+ is a mini audio mixer for kde +

+
+

+ kmixctrl +

+
+

+ is used to save or restore the settings of + kmix +

+
+

+ kmixremote +

+
+

+ is a utility to mute, get and set volume levels +

+
+
+
+
+
+
+
+

+ khelpcenter-25.08.0 +

+
+
+
+
+
+

+ Introduction to Khelpcenter +

+

+ Khelpcenter is an + application to show KDE Applications' documentation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Khelpcenter Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0, libxml2-2.14.5, and xapian-1.4.29 +

+
+ Recommended +
+ +
+ Optional (Runtime) +
+

+ kio-extras-25.08.0 (for displaying + man pages and info pages) +

+
+
+

+ Installation of Khelpcenter +

+

+ Install khelpcenter by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + khelpcenter +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $KF6_PREFIX/share/khelpcenter, + $KF6_PREFIX/share/doc/HTML/*/{khelpcenter,fundamentals,onlinehelp} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ khelpcenter +

+
+

+ is the help viewer for KDE applications +

+
+
+
+
+
+
+
+

+ Konsole-25.08.0 +

+
+
+
+
+
+

+ Introduction to Konsole +

+

+ The Konsole package is a KF6 + based terminal emulator. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Konsole Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 +

+
+
+

+ Installation of Konsole +

+
+

+ Note +

+

+ In non-plasma environments, the konsole scrollbar and its + handle do not show up well. If desired, apply the optional + patch to the package: +

+
patch -Np1 -i ../konsole-adjust_scrollbar-1.patch
+

+ The patch makes the scrollbar light gray with a small white + border. The handle is dark gray. If desired, the colors may + be changed to taste by editing the patch. +

+
+

+ Install Konsole by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + konsole and konsoleprofile +
+
+ Installed Libraries: + libkdeinit6_konsole.so and + libkonsoleprivate.so +
+
+ Installed Directories: + $KF6_PREFIX/share/doc/HTML/*/konsole, + $KF6_PREFIX/share/konsole, and + $KF6_PREFIX/share/kxmlgui6/konsole +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ konsole +

+
+

+ is an X terminal emulation which provides a + command-line interface +

+
+

+ konsoleprofile +

+
+

+ is a command-line tool to change the current tab's + profile options +

+
+
+
+
+
+
+
+

+ konversation-25.08.0 +

+
+
+
+
+
+

+ Introduction to konversation +

+

+ The konversation package is + a KF6 based IRC client. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ konversation Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 +

+
+
+

+ Installation of konversation +

+

+ Install konversation by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + konversation +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $KF6_PREFIX/share/doc/HTML/*/konversation, and + $KF6_PREFIX/share/konversation +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ konversation +

+
+

+ is an IRC client +

+
+
+
+
+
+
+
+

+ libkexiv2-25.08.0 +

+
+
+
+
+
+

+ Introduction to libkexiv2 +

+

+ Libkexiv2 is a KDE wrapper + around the Exiv2 library for manipulating image metadata. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libkexiv2 Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 and Exiv2-0.28.5 +

+
+
+

+ Installation of libkexiv2 +

+

+ Install libkexiv2 by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_WITH_QT6=ON                \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libKExiv2Qt6.so +
+
+ Installed Directories: + $KF6_PREFIX/include/KExiv2Qt6 and + $KF6_PREFIX/lib/cmake/KExiv2Qt6 +
+
+
+
+
+
+
+
+

+ plasma-activities-6.4.4 +

+
+
+
+
+
+

+ Introduction to plasma-activities-6.4.4 +

+

+ The plasma-activities-6.4.4 + application provides core components for KDE Activities. It + is normally built with Plasma-6.4.4 but is included here + because it is needed for okular-25.08.0 and kio-extras-25.08.0 if Plasma-6.4.4 is not yet built. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ plasma-activities Dependencies +

+
+ Required +
+

+ Boost-1.89.0 and KDE + Frameworks-6.17.0 +

+
+
+

+ Installation of plasma-activities +

+

+ Install plasma-activities by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + plasma-activities-cli6 +
+
+ Installed Libraries: + libPlasmaActivities.so +
+
+ Installed Directories: + $KF6_PREFIX/include/PlasmaActivities, + $KF6_PREFIX/lib/cmake/PlasmaActivities, and + $KF6_PREFIX/share/share/qlogging-categories6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ plasma-activities-cli6 +

+
+

+ is the activity manager for KDE applications +

+
+
+
+
+
+
+
+

+ plasma-activities-stats-6.4.4 +

+
+
+
+
+
+

+ Introduction to plasma-activities-stats-6.4.4 +

+

+ The plasma-activities-stats-6.4.4 library + provides access to the usage data collected by the KDE + Activities system. It is normally built with Plasma-6.4.4 + but is included here because it is needed for kio-extras-25.08.0. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ plasma-activities Dependencies +

+
+ Required +
+

+ plasma-activities-6.4.4 +

+
+
+

+ Installation of plasma-activities-stats +

+

+ Install plasma-activities-stats by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libPlasmaActivitiesStats.so +
+
+ Installed Directories: + $KF6_PREFIX/include/PlasmaActivitiesStats and + $KF6_PREFIX/lib/cmake/PlasmaActivitiesStats +
+
+
+
+
+
+
+
+

+ kio-extras-25.08.0 +

+
+
+
+
+
+

+ Introduction to kio-extras +

+

+ The kio-extras package + contains additional components to increase the functionality + of the KDE resource and network access abstractions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ kio-extras Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0, kdsoap-ws-discovery-client-0.4.0, + libproxy-0.5.10, plasma-activities-stats-6.4.4, + and qcoro-0.12.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ libtirpc-1.3.6, Samba-4.22.4, taglib-2.1.1, + libappimage, + libimobiledevice, + libmtp, libplist, + libssh, + and OpenEXR +

+
+
+

+ Installation of kio-extras +

+

+ Install kio-extras by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libkioarchive6.so and 33 + plugins +
+
+ Installed Directories: + $KF6_PREFIX/include/KioArchive6, + $KF6_PREFIX/lib/cmake/KioArchive6, and + $KF6_PREFIX/share/doc/HTML/en/kioworker6 +
+
+
+
+
+
+
+
+

+ okular-25.08.0 +

+
+
+
+
+
+

+ Introduction to Okular +

+

+ Okular is a document viewer for KDE. It can view documents of + many types including PDF, PostScript, TIFF, DjVu, DVI, XPS, + and ePub. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Okular Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 and plasma-activities-6.4.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ qca-2.3.10, discount, + DjVuLibre, libspectre, + libepub, + and LibZip +

+
+
+

+ Installation of Okular +

+

+ Install Okular by running + the following commands: +

+
+

+ Note +

+

+ If any of the optional dependencies are installed, remove + the associated reference in the SKIP_OPTIONAL environment + variable. +

+
+
mkdir build &&
+cd    build &&
+
+SKIP_OPTIONAL='Discount;DjVuLibre;EPub;LibSpectre;LibZip'
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -D FORCE_NOT_REQUIRED_DEPENDENCIES="$SKIP_OPTIONAL" \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + okular +
+
+ Installed Library: + Okular6Core.so +
+
+ Installed Directories: + $KF6_PREFIX/include/okular, + $KF6_PREFIX/lib/cmake/Okular6, + $KF6_PREFIX/lib/plugins/okular, $KF6_PREFIX/share/okular, + and $KF6_PREFIX/share/doc/HTML/*/okular +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ okular +

+
+

+ is a document viewer +

+
+
+
+
+
+
+
+

+ libkdcraw-25.08.0 +

+
+
+
+
+
+

+ Introduction to libkdcraw +

+

+ Libkdcraw is a KDE wrapper + around the libraw-0.21.4 library for manipulating + image metadata. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libkdcraw Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 and libraw-0.21.4 +

+
+
+

+ Installation of libkdcraw +

+

+ Install libkdcraw by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -D QT_MAJOR_VERSION=6               \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libKDcrawQt6.so +
+
+ Installed Directories: + $KF6_PREFIX/include/KDcrawQt6 and + $KF6_PREFIX/lib/cmake/KDcrawQt6 +
+
+
+
+
+
+
+
+

+ gwenview-25.08.0 +

+
+
+
+
+
+

+ Introduction to Gwenview +

+

+ Gwenview is a fast and + easy-to-use image viewer for KDE. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gwenview Dependencies +

+
+ Required +
+

+ Exiv2-0.28.5, kimageannotator-0.7.1, KDE + Frameworks-6.17.0, and Little CMS-2.17 +

+
+ Recommended +
+ +
+ Optional +
+

+ plasma-activities-6.4.4 and + CFitsio +

+
+
+

+ Installation of Gwenview +

+

+ Install Gwenview by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + gwenview and + gwenview_importer +
+
+ Installed Libraries: + libgwenviewlib.so and + gvpart.so +
+
+ Installed Directories: + $KF6_PREFIX/share/{gwenview,doc/HTML/*/gwenview} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gwenview +

+
+

+ is the KDE image viewer +

+
+

+ gwenview_importer +

+
+

+ is a Photo importer +

+
+
+
+
+
+
+
+

+ libkcddb-25.08.0 +

+
+
+
+
+
+

+ Introduction to libkcddb +

+

+ The libkcddb package + contains a library used to retrieve audio CD meta data from + the internet. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libkcddb Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 +

+
+ Recommended +
+ +
+
+

+ Installation of libkcddb +

+

+ Install libkcddb by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -D QT_MAJOR_VERSION=6               \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libKCddb6.so +
+
+ Installed Directories: + $KF6_PREFIX/include/KCddb6 + $KF6_PREFIX/lib/cmake/KCddb6 + $KF6_PREFIX/share/doc/HTML/*/kcontrol +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libKCddb6.so +

+
+

+ contains functions used to retrieve audio CD meta + data from the internet +

+
+
+
+
+
+
+
+

+ k3b-25.08.0 +

+
+
+
+
+
+

+ Introduction to K3b +

+

+ The K3b package contains a + KF6-based graphical interface to the Cdrtools and dvd+rw-tools CD/DVD manipulation tools. + It also combines the capabilities of many other multimedia + packages into one central interface to provide a + simple-to-operate application that can be used to handle many + of your CD/DVD recording and formatting requirements. It is + used for creating audio, data, video and mixed-mode CDs as + well as copying, ripping and burning CDs and DVDs. +

+

+ Though k3b can be used to + copy almost any DVD to similar medium, it does not provide a + way to copy, or reproduce a double-layer DVD onto + single-layer medium. Of course, there is not a program + anywhere on any platform that can make an exact duplicate of + a double-layer DVD onto a single-layer disk, there are + programs on some platforms that can compress the data on a + double-layer DVD to fit on a single-layer DVD producing a + duplicate, but compressed, image. If you need to copy the + contents of a double-layer DVD to single-layer medium, you + may want to look at the RMLCopyDVD package. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ K3b + Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0, libkcddb-25.08.0, libsamplerate-0.2.2, and shared-mime-info-2.4 +

+

+ The CD/DVD drive is detected at run time using UDisks-2.10.2, which must therefore be + installed before running k3b. +

+
+ Recommended +
+ + +
+ Optional Runtime +
+

+ FFmpeg-7.1.1 +

+
+ Optional +
+

+ FLAC-1.5.0, LAME-3.100, libmad-0.15.1b, + libsndfile-1.2.2, libvorbis-1.3.7, and Musepack (libmpcdec) +

+
+
+

+ Installation of K3b +

+

+ Install K3b by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + k3b +
+
+ Installed Libraries: + libk3bdevice.so, libk3blib.so, and + numerous plugin modules for the installed + dependencies +
+
+ Installed Directories: + $KF6_PREFIX/share/k3b and + $KF6_PREFIX/share/doc/HTML/*/k3b +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ k3b +

+
+

+ is the graphical CD/DVD program +

+
+
+
+
+
+
+
+

+ Further KDE + packages +

+
+
+
+
+

+ This chapter did not provide instructions for all of the + available packages in the KDE Software Compilation (KDE Gear). + The included packages were selected based on what most people + would want to use on a standard desktop computer. +

+

+ For a full list of available packages, have a look on the KDE6 + servers at https://download.kde.org/stable/release-service/25.08.0/src. +

+

+ Editor Notes: + https://wiki.linuxfromscratch.org/blfs/wiki/Further_KDE_Packages +

+

+ Some additional packages worth mentioning are: +

+
+
    +
  • +

    + Juk: A lightweight music player. +

    +
  • +
  • +

    + Dragon: A video player. +

    +
  • +
  • +

    + Kcalc: A scientific calculator. +

    +
  • +
  • +

    + Kwalletmanager: A credentials management application. +

    +
  • +
  • +

    + Marble: A global map program. +

    +
  • +
  • +

    + Spectacle: a screenshot program. +

    +
  • +
  • +

    + A variety (about 40) of KDE games including: kpat, + kfourinline, and kmines. +

    +
  • +
+
+
+

+ Note +

+

+ Some packages will require additional dependencies. To + determine what dependencies are needed, run from the top of + the source tree: +

+
cmake -W no-dev -LH .
+

+ Note that this creates some files in the top of the source + directory, so that it is better to reextract a clean source + before proceeding to the build. +

+
+

+ Most of these packages can be built with the standard KDE6 + instructions: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ And as the root user: +

+
make install
+
+
+
+
+
+

+ Chapter 32. KDE + Plasma +

+
+
+
+
+

+ KDE Plasma is a desktop environment built using KDE Frameworks + and QML which runs on top of a fully hardware accelerated + graphics stack using Qt, QtQuick, and an OpenGL(-ES) scenegraph. +

+

+ No additional configuration is needed before building the KDE + Plasma because it uses the same configuration that KDE Frameworks + uses. +

+
+
+
+

+ kirigami-addons-1.9.0 +

+
+
+
+
+
+

+ Introduction to kirigami-addons +

+

+ This package provides add-on qml files for the Kirigami + framework. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ kirigami-addons Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 +

+
+ Recommended +
+ +
+
+

+ Installation of kirigami-addons +

+

+ Install kirigami-addons by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+       ..                                 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + $KF6_PREFIX/lib/qml/org/kde/kirigamiaddons and + $KF6_PREFIX/lib/cmake/KF6KirigamiAddons +
+
+
+
+
+
+
+
+

+ pulseaudio-qt-1.7.0 +

+
+
+
+
+
+

+ Introduction to pulseaudio-qt +

+

+ This package is a Qt-style wrapper for PulseAudio-17.0. It + allows querying and manipulation of various PulseAudio + objects such as Sinks, Sources and Streams. It does not wrap + the full feature set of libpulse. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Konsole Dependencies +

+
+ Required +
+

+ KDE + Frameworks-6.17.0 and PulseAudio-17.0 +

+
+
+

+ Installation of pulseaudio-qt +

+

+ Install pulseaudio-qt by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_PREFIX_PATH=$QT6DIR        \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON      \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      .. &&
+make
+

+ Now as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libKF6PulseAudioQt.so +
+
+ Installed Directories: + $KF6_PREFIX/lib/cmake/KF6PulseAudioQt and + $KF6_PREFIX/include/KF6/KF6PulseAudioQt +
+
+
+
+
+
+
+
+

+ Building + Plasma +

+
+
+
+
+

+ KDE Plasma is a collection of packages based on top of KDE + Frameworks and QML. They implement the KDE Display Environment + (Plasma). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ The instructions below build all of the Plasma packages in one + step by using a bash script. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://download.kde.org/stable/plasma/6.4.4 +

    +
  • +
  • +

    + Download MD5 sum: See Below +

    +
  • +
  • +

    + Download size: 292 MB +

    +
  • +
  • +

    + Estimated disk space required: 2.7 GB (638 MB installed) +

    +
  • +
  • +

    + Estimated build time: 18 SBU (using parallelism=8) +

    +
  • +
+
+

+ Plasma + Dependencies +

+
+ Required +
+

+ Boost-1.89.0, FFmpeg-7.1.1, GTK-3.24.50, KDE + Frameworks-6.17.0, kirigami-addons-1.9.0, + libdisplay-info-0.3.0, libpwquality-1.4.5, libqalculate-5.7.0, libnl-3.11.0, libxcvt-0.1.3, + libxkbcommon-1.11.0, Mesa-25.1.8 built with + Wayland-1.24.0, opencv-4.12.0, phonon-4.12.0, + pipewire-1.4.7, pulseaudio-qt-1.7.0, qca-2.3.10, qcoro-0.12.0, sassc-3.6.2, + taglib-2.1.1, xdotool-3.20211022.1, and Xorg Evdev Driver-2.11.0 +

+
+ Recommended +
+ +
+ Recommended (runtime) +
+ +
+ Optional +
+

+ AppStream-1.0.6 (build with -qt=true), + GLU-9.0.3, + ibus-1.5.32, qtwebengine-6.9.2, + KDevPlatform, libgps, libhybris, + packagekit-qt, + Qapt, + SCIM, and socat (for + pam_kwallet) +

+
+

+ Downloading KDE Plasma +

+

+ The easiest way to get the KDE Plasma packages is to use a + single wget to + fetch them all at once: +

+
url=https://download.kde.org/stable/plasma/6.4.4/
+wget -r -nH -nd -A '*.xz' -np $url
+
+The options used here are:
+  -r            recurse through child directories
+  -nH           disable generation of host-prefixed directories
+  -nd           do not create a hierarchy of directories
+  -A '*.xz'     just get the *.xz files
+  -np           don't get parent directories
+
+
+

+ Setting Package Order +

+

+ The order of building files is important due to internal + dependencies. Create the list of files in the proper order as + follows: +

+
cat > plasma-6.4.4.md5 << "EOF"
+1e80c73ad404ff95a607f46ec453ac07  kdecoration-6.4.4.tar.xz
+6788dae93c3fb8d3790651c3cc13a459  libkscreen-6.4.4.tar.xz
+f7075d4472969968507a72cb35168dbc  libksysguard-6.4.4.tar.xz
+e45d3b003a98b53f93b027b26038a4d2  breeze-6.4.4.tar.xz
+2d8a7936962ae30177c14f9cad0917ff  breeze-gtk-6.4.4.tar.xz
+57485b21e575b632223946b936a11d35  layer-shell-qt-6.4.4.tar.xz
+1294ad60e08e3d14263c316c5f2123c3  plasma-activities-6.4.4.tar.xz
+69892c484106a65edc8669f9ff07f1de  libplasma-6.4.4.tar.xz
+d2660f748364304a38534ad9f8302f65  kscreenlocker-6.4.4.tar.xz
+5b2aa8e2f826a5537ce018645094bc06  kinfocenter-6.4.4.tar.xz
+2a3cb2bc67a700808ee4de996fbcf7e1  kglobalacceld-6.4.4.tar.xz
+5f2f27d10a309f87a7fcc7abe3f33c7a  kwayland-6.4.4.tar.xz
+b5ce13deed26c030e80078997bcd3f59  aurorae-6.4.4.tar.xz
+29aa486a4c9c03623f06019c4c6f4a6f  kwin-x11-6.4.4.tar.xz
+38bd47faac424693d15e6cbec7bb4f8c  kwin-6.4.4.tar.xz
+c89eed60be47c41acdaab7f7738474d9  plasma5support-6.4.4.tar.xz
+e19f331b7233dfa00c1f9a4dc282aa6d  plasma-activities-stats-6.4.4.tar.xz
+1234acb0cf42bb51fa1e44de15300daf  kpipewire-6.4.4.tar.xz
+e387fc191c75643adf8647115e5b8135  plasma-workspace-6.4.4.tar.xz
+f7955fe53dcfce1d3ee28385fb0460c5  plasma-disks-6.4.4.tar.xz
+359c9fcedc3ee2660a7414c96f6a0888  bluedevil-6.4.4.tar.xz
+8dd8c635342894da4a61dabc5820fce4  kde-gtk-config-6.4.4.tar.xz
+123d1734729b0f6d66c45017d810ff10  kmenuedit-6.4.4.tar.xz
+81cfc86c317b76e66c8fa69bd211580e  kscreen-6.4.4.tar.xz
+2c7b043f2ec05c4b03f210dcedc0b502  kwallet-pam-6.4.4.tar.xz
+5695632187671ca756c4e7185a71195e  kwrited-6.4.4.tar.xz
+1a6dd6488b0125451102045aa8efdc1a  milou-6.4.4.tar.xz
+2bf7e0444338ae3a792ccaf1049466ed  plasma-nm-6.4.4.tar.xz
+00cbf448523569d1ecf799ffe8097961  plasma-pa-6.4.4.tar.xz
+44bcf4f669bfa5dfd9b4a54f6016ba7b  plasma-workspace-wallpapers-6.4.4.tar.xz
+cf1fe247a40af3e6dd5ca2ad53b327d0  polkit-kde-agent-1-6.4.4.tar.xz
+96158610825e79a419a28f45bb809eb9  powerdevil-6.4.4.tar.xz
+714b58e169c5d2e8c80d65ca8e284cff  plasma-desktop-6.4.4.tar.xz
+35d2e17964ddda121f50098c29d4c30d  kgamma-6.4.4.tar.xz
+27a3515f9ae4184b4987c83892d6b74a  ksshaskpass-6.4.4.tar.xz
+#070839c487e9d8229ce8298d77480c8b  plasma-sdk-6.4.4.tar.xz
+b19b0189993f7ebc509d3e24cc1e8aa0  sddm-kcm-6.4.4.tar.xz
+#328b5f55fd21129c9184b7d1b672a0bf  discover-6.4.4.tar.xz
+#3094f57a829def773d0f6ebb8b08f1f6  breeze-grub-6.4.4.tar.xz
+#b3469dba2137b484b193a99fc064be67  breeze-plymouth-6.4.4.tar.xz
+6e15c7a2bb5788b93acebde0318fae83  kactivitymanagerd-6.4.4.tar.xz
+902966727cc9a5ebb4761df12e142c32  plasma-integration-6.4.4.tar.xz
+#53cde99837265125361385ddf6246070  plymouth-kcm-6.4.4.tar.xz
+eaeb0a047ac662cef2ecaf03a336ce91  xdg-desktop-portal-kde-6.4.4.tar.xz
+b2b868b09d36cdbd77d086c3e215947e  drkonqi-6.4.4.tar.xz
+2d2c9bcc3d499fadff6ba8c78e0a78d6  plasma-vault-6.4.4.tar.xz
+#5c043fbaf5c84975c469472cc5880a59  plasma-browser-integration-6.4.4.tar.xz
+7b9720ff5aaccfff5a9dddc2a71e4eb6  kde-cli-tools-6.4.4.tar.xz
+88cf35de0ee8ca3b45474ffaf0d54432  systemsettings-6.4.4.tar.xz
+5e2c2591807a58cf6cdf4e884c3dd4be  plasma-thunderbolt-6.4.4.tar.xz
+#6a9b80fa6e10454556c4528c2510b2f7  plasma-mobile-6.4.4.tar.xz
+#257173def078b51674cd27601828d732  plasma-nano-6.4.4.tar.xz
+3c58fb9253970cb7a651088f423e0d9c  plasma-firewall-6.4.4.tar.xz
+ff6d636282233f101ec9349321cc4e70  plasma-systemmonitor-6.4.4.tar.xz
+3e2a5476e578a309854f7a965bd627a8  qqc2-breeze-style-6.4.4.tar.xz
+9d4579bd5ce554f5d21bfe41a0fe64e6  ksystemstats-6.4.4.tar.xz
+3fcde8974282d0ae737f38a2d5cc4c7e  oxygen-sounds-6.4.4.tar.xz
+88e1e9c59db958a326c8e59769334eae  kdeplasma-addons-6.4.4.tar.xz
+#e2af8aad6f916339a20d79b70434adde  flatpak-kcm-6.4.4.tar.xz
+d6849ab3c3d626217e71ac5c571a0e56  plasma-welcome-6.4.4.tar.xz
+67e934afb009c0cc85b6b5a7818dfc21  ocean-sound-theme-6.4.4.tar.xz
+6a4cc6c6068851e488a85f94efe40959  print-manager-6.4.4.tar.xz
+d66d7c32a5811a172ede92e86d0b050b  wacomtablet-6.4.4.tar.xz
+#6df9d0417921b08811b3b37640f81ae7  kwayland-integration-6.4.4.tar.xz
+#e377c170815f38c88d04fbacc6c2ba46  krdp-6.4.4.tar.xz
+8bcecf5327af741a21af37a93901fd35  oxygen-6.4.4.tar.xz
+#079df59ec207b0c7d9e83fd544c34af9  plasma-dialer-6.4.4.tar.xz
+#2425c5d7af8b994b9b2a7b78db8a5bb3  spacebar-6.4.4.tar.xz
+51b35f64a4e47bb39d1c27f1e6171ab9  spectacle-6.4.4.tar.xz
+EOF
+
+

+ About Commented Out Packages +

+

+ In the above list, several files are commented out with a + hash (#) character. +

+
+
    +
  • +

    + The plasma-sdk package is optional and used for + software development. +

    +
  • +
  • +

    + The discover package requires AppStream-1.0.6 to be built + with the -D qt=true switch. +

    +
  • +
  • +

    + The breeze-grub, breeze-plymouth, and plymouth-kcm + packages above are all for customized support of + + Plymouth which is designed to be run within an + initial ram disk during boot (see the section + called “About initramfs”). +

    +
  • +
  • +

    + The plasma-browser-integration package is designed to + implement browser integration for Plasma into Mozilla + Firefox and Google Chrome. The package does build, + but is only useful if you want these browsers to be + integrated into the shell in a way that lets you see + (and control) downloads from Plasma's notifications + area, as well as allowing you to search browser + history in the KDE Runner. Note that you must also + install a browser extension for this to work. For + more details, see + the KDE Plasma wiki page about browser + integration. +

    +
  • +
  • +

    + The krdp package is used to allow an RDP server to be + run while using Plasma. This feature requires the 2.x + version of FreeRDP, which is not in BLFS. +

    +
  • +
  • +

    + The plasma-nano package is used for embedded systems. +

    +
  • +
  • +

    + The plasma-mobile, plasma-dialer, and spacebar + packages provide phone functionality for Plasma. +

    +
  • +
  • +

    + The flatpak-kcm package is for managing support of + flatpak applications. +

    +
  • +
  • +

    + The kwayland-integration application requires plasma5 + support. +

    +
  • +
+
+
+
+
+

+ Installation of Plasma +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Install all of the packages by running the following + commands: +

+
while read -r line; do
+
+    # Get the file name, ignoring comments and blank lines
+    if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi
+    file=$(echo $line | cut -d" " -f2)
+
+    pkg=$(       echo $file|sed 's|^.*/||')    # Remove directory
+    name=$(      echo $pkg |sed 's|-6.*$||')   # Isolate package name
+    packagedir=$(echo $pkg |sed 's|\.tar.*||') # Source directory
+
+    tar -xf $file
+    pushd $packagedir
+
+       mkdir build
+       cd    build
+
+       cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+             -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+             -D CMAKE_BUILD_TYPE=Release         \
+             -D BUILD_QT5=OFF                    \
+             -D BUILD_TESTING=OFF                \
+             -W no-dev ..  &&
+
+        make
+        as_root make install
+    popd
+
+
+    as_root rm -rf $packagedir
+    as_root /sbin/ldconfig
+
+done < plasma-6.4.4.md5
+
+exit
+

+ If you did not set $KF6_PREFIX to + /usr, create symlinks to allow + display managers to find Plasma, and to allow the XDG Desktop + Portal to be detected. As the root user: +

+
# Setup xsessions (X11 sessions)
+install -dvm 755 /usr/share/xsessions
+cd /usr/share/xsessions
+
+[ -e plasma.desktop ] ||
+ln -sfv $KF6_PREFIX/share/xsessions/plasmax11.desktop 
+
+# Setup wayland-sessions 
+install -dvm 755 /usr/share/wayland-sessions
+cd /usr/share/wayland-sessions
+
+[ -e plasmawayland.desktop ] ||
+ln -sfv $KF6_PREFIX/share/wayland-sessions/plasma.desktop
+
+# Setup xdg-desktop-portal
+install -dvm 755 /usr/share/xdg-desktop-portal
+cd /usr/share/xdg-desktop-portal 
+
+[ -e kde-portals.conf ] ||
+ln -sfv $KF6_PREFIX/share/xdg-desktop-portal/kde-portals.conf
+
+# Setup kde portal
+install -dvm 755 /usr/share/xdg-desktop-portal/portals
+cd /usr/share/xdg-desktop-portal/portals
+
+[ -e kde.portal ] ||
+ln -sfv $KF6_PREFIX/share/xdg-desktop-portal/portals/kde.portal
+

+ Useless systemd units have been installed in $KF6_PREFIX/lib. Remove them now (as + root): +

+
rm -rf $KF6_PREFIX/lib/systemd
+
+
+

+ Configuring Plasma +

+
+
+
+
+

+ Linux PAM Configuration +

+
+
+
+

+ If you built Plasma with the recommended Linux PAM support, create necessary + configuration files by running the following commands as + the root user: +

+
cat > /etc/pam.d/kde << "EOF"
+# Begin /etc/pam.d/kde
+
+auth     requisite      pam_nologin.so
+auth     required       pam_env.so
+
+auth     required       pam_succeed_if.so uid >= 1000 quiet
+auth     include        system-auth
+
+account  include        system-account
+password include        system-password
+session  include        system-session
+
+# End /etc/pam.d/kde
+EOF
+
+cat > /etc/pam.d/kde-np << "EOF"
+# Begin /etc/pam.d/kde-np
+
+auth     requisite      pam_nologin.so
+auth     required       pam_env.so
+
+auth     required       pam_succeed_if.so uid >= 1000 quiet
+auth     required       pam_permit.so
+
+account  include        system-account
+password include        system-password
+session  include        system-session
+
+# End /etc/pam.d/kde-np
+EOF
+
+cat > /etc/pam.d/kscreensaver << "EOF"
+# Begin /etc/pam.d/kscreensaver
+
+auth    include system-auth
+account include system-account
+
+# End /etc/pam.d/kscreensaver
+EOF
+
+
+
+

+ Starting Plasma +

+

+ You can start Plasma from + runlevel 3, using xinit-1.4.4, or from runlevel 5, using a + Display Manager, such as lightdm-1.32.0. +

+

+ To start Plasma using + xinit-1.4.4, run the following commands: +

+
cat > ~/.xinitrc << "EOF"
+dbus-launch --exit-with-x11 $KF6_PREFIX/bin/startplasma-x11
+EOF
+
+startx
+

+ The X session starts on the first unused virtual terminal, + normally vt7. You can switch to another vtn simultaneously pressing the keys + Ctrl-Alt-Fn + (n=1, 2, ...). To + switch back to the X session, normally started at vt7, use + Ctrl-Alt-F7. The vt where the command startx was executed will + display many messages, including X starting messages, + applications automatically started with the session, and + eventually, some warning and error messages. You may prefer + to redirect those messages to a log file, which not only will + keep the initial vt uncluttered, but can also be used for + debugging purposes. This can be done starting X with: +

+
startx &> ~/x-session-errors
+

+ When shutting down or rebooting, the shutdown messages appear + on the vt where X was running. If you wish to see those + messages, simultaneously press keys Alt-F7 (assuming that X + was running on vt7). +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + There are too many plasma programs + (over 50 in /opt/kf6/bin) to list separately here. +
+
+ Installed Libraries: + There are too many plasma libraries + (over 250 in /opt/kf6/lib) to list separately + here. +
+
+ Installed Directories: + There are too many plasma + directories (over 2700 in /opt/kf6) to list separately + here. +
+
+
+
+
+
+
+
+
+
+

+ Part VIII. GNOME +

+
+
+
+
+
+
+
+

+ Chapter 33. GNOME Libraries and + Desktop +

+
+
+
+
+

+ The objective of this section is to build a GNOME desktop. +

+
+
+
+

+ Libraries +

+
+
+
+
+
+
+
+

+ Gcr-3.41.2 +

+
+
+
+
+
+

+ Introduction to Gcr +

+

+ The Gcr package contains + libraries used for displaying certificates and accessing key + stores. It also provides the viewer for crypto files on the + GNOME Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/gcr/3.41/gcr-3.41.2.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 40a754ba44d5e95e4d07656d6302900c +

    +
  • +
  • +

    + Download size: 1012 KB +

    +
  • +
  • +

    + Estimated disk space required: 33 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests; both using + parallelism=4) +

    +
  • +
+
+

+ Gcr + Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended), libgcrypt-1.11.2, and p11-kit-0.25.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 and Valgrind-3.25.1 +

+
+
+

+ Installation of Gcr +

+

+ First, apply a fix for building without OpenSSH installed: +

+
sed '/ssh.add/d; /ssh.agent/d' -i meson.build
+

+ Install Gcr by running the + following commands: +

+
sed -i 's:"/desktop:"/org:' schema/*.xml &&
+
+mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk_doc=false    \
+            -D ssh_agent=false  \
+            ..                  &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed -e "/install_dir/s@,\$@ / 'gcr-3.41.2'&@" \
+    -i ../docs/*/meson.build                  &&
+meson configure -D gtk_doc=true               &&
+ninja
+

+ To test the results, issue: ninja test. The tests must + be run from an X Terminal or similar. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D ssh_agent=false: + Disable the ssh-agent implementation from this package. This + implementation is intended to replace the ssh-agent + implementation of gnome-keyring-48.0, but the + replacement still has several unresolved issues. +

+

+ -D gtk=false: Use this switch if + you haven't installed GTK-3.24.50. Note that gcr-viewer will not be installed if this + is option is used. +

+

+ -D gtk_doc=true: Allow building + this package without Gi-DocGen-2025.4 installed. If you + have Gi-DocGen-2025.4 installed and you + wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gcr-viewer +
+
+ Installed Libraries: + libgck-1.so, libgcr-base-3.so and + libgcr-ui-3.so +
+
+ Installed Directories: + /usr/include/gck-1, + /usr/include/gcr-3, and + /usr/share/gtk-doc/html/{gcr,gck} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gcr-viewer +

+
+

+ is used to view certificates and key files +

+
+

+ libgck-1.so +

+
+

+ contains GObject bindings for PKCS#11 +

+
+
+
+
+
+
+
+

+ Gcr-4.4.0.1 +

+
+
+
+
+
+

+ Introduction to Gcr +

+

+ The Gcr package contains + libraries used for displaying certificates and accessing key + stores. It also provides the viewer for crypto files on the + GNOME Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/gcr/4.4/gcr-4.4.0.1.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 01da4445b5b16801c6dcc7d8945b4cc4 +

    +
  • +
  • +

    + Download size: 728 KB +

    +
  • +
  • +

    + Estimated disk space required: 26 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (with tests; both using + parallelism=4) +

    +
  • +
+
+

+ Gcr + Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended), libgcrypt-1.11.2, p11-kit-0.25.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, GnuTLS-3.8.10, + OpenSSH-10.0p1, and Valgrind-3.25.1 +

+
+
+

+ Installation of Gcr +

+
+

+ Note +

+

+ Both gcr-3 and gcr-4 are coinstallable. This version of the + package is used to support GTK-4 applications, such as + gnome-shell-48.4 and Epiphany-48.5. +

+
+

+ Install Gcr by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk_doc=false    \
+            -D ssh_agent=false  \
+            ..                  &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed -e "/install_dir/s@,\$@ / 'gcr-4.4.0.1'&@" \
+    -i ../docs/*/meson.build                 &&
+meson configure -D gtk_doc=true              &&
+ninja
+

+ To test the results, issue: ninja test. The tests must + be run from an X Terminal or similar. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk4=false: Use this switch if + you haven't installed GTK-4.18.6. Note that gcr-viewer-gtk4 will not be installed if + this is passed to meson. +

+

+ -D gtk_doc=false: + Allow building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+

+ -D ssh_agent=false: + Disable the ssh-agent implementation of this package. This + implementation is intended to replace the ssh-agent + implementation of gnome-keyring-48.0, but the + replacement still has several unresolved issues. +

+

+ -D crypto=gnutls: Use this switch + if you have GnuTLS-3.8.10 installed and wish to use + it instead of libgcrypt-1.11.2. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gcr-viewer-gtk4 +
+
+ Installed Libraries: + libgck-2.so, libgcr-4.so +
+
+ Installed Directories: + /usr/include/gck-2, + /usr/include/gcr-4, and + /usr/share/gtk-doc/html/{gcr,gck} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ gcr-viewer-gtk4 +

+
+

+ is used to view certificates and key files +

+
+

+ libgck-2.so +

+
+

+ contains GObject bindings for PKCS#11 +

+
+

+ libgcr-4.so +

+
+

+ contains functions for accessing key stores and + displaying certificates +

+
+
+
+
+
+
+
+

+ gsettings-desktop-schemas-48.0 +

+
+
+
+
+
+

+ Introduction to GSettings Desktop Schemas +

+

+ The GSettings Desktop + Schemas package contains a collection of GSettings + schemas for settings shared by various components of a + GNOME Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GSettings Desktop Schemas + Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+
+

+ Installation of GSettings Desktop Schemas +

+

+ Install GSettings Desktop + Schemas by running the following commands: +

+
sed -i -r 's:"(/system):"/org/gnome\1:g' schemas/*.in &&
+
+mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Command Explanations +

+

+ sed ... + schemas/*.in: This command fixes some + deprecated entries in the schema templates. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/include/gsettings-desktop-schemas and + /usr/share/GConf/gsettings +
+
+
+
+
+
+
+
+

+ libsecret-0.21.7 +

+
+
+
+
+
+

+ Introduction to libsecret +

+

+ The libsecret package + contains a GObject based library for accessing the Secret + Service API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsecret Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 and docbook-xml-4.5, + docbook-xsl-nons-1.79.2, + libxslt-1.1.43 (to build manual pages), + Valgrind-3.25.1 (can be used in tests), + and tpm2-tss (for + TPM support) +

+
+ Optional (Required for the test + suite) +
+

+ D-Bus Python-1.4.0, Gjs-1.84.2, and PyGObject-3.52.3 +

+
+ Required Runtime Dependency +
+

+ gnome-keyring-48.0 +

+
+

+ Note +

+

+ Any package requiring libsecret expects GNOME Keyring to be present at + runtime. +

+
+
+
+

+ Installation of libsecret +

+

+ Install libsecret by running + the following commands: +

+
mkdir bld &&
+cd    bld &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk_doc=false    \
+            ..                  &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "s/api_version_major/'0.21.7'/"            \
+    -i ../docs/reference/libsecret/meson.build &&
+meson configure -D gtk_doc=true                &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: dbus-run-session ninja + test. +

+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=false: + Allow building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+

+ -D manpage=false: Use this switch + if you have not installed libxslt-1.1.43 and DocBook + packages. +

+

+ -D crypto=gnutls: Use this switch + if you want to use GnuTLS-3.8.10 for cryptography instead of + libgcrypt-1.11.2. +

+

+ -D crypto=disabled: Use this + switch if you don't have GnuTLS-3.8.10 or libgcrypt-1.11.2 installed. Note that + disabling transport encryption support by doing this is not + recommended. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + secret-tool +
+
+ Installed Library: + libsecret-1.so +
+
+ Installed Directories: + /usr/include/libsecret-1 and + /usr/share/doc/libsecret-0.21.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ secret-tool +

+
+

+ is a command line tool that can be used to store + and retrieve passwords +

+
+

+ libsecret-1.so +

+
+

+ contains the libsecret API functions +

+
+
+
+
+
+
+
+

+ rest-0.9.1 +

+
+
+
+
+
+

+ Introduction to rest +

+

+ The rest package contains a + library that was designed to make it easier to access web + services that claim to be "RESTful". It includes convenience + wrappers for libsoup and libxml to make remote usage of the + RESTful API easier. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ rest + Dependencies +

+
+ Required +
+

+ JSON-GLib-1.10.6, libsoup-3.6.5, and + make-ca-1.16.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, libadwaita-1.7.6 and gtksourceview5-5.16.0 (to build + the demo), and Vala-0.56.18 +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of rest +

+

+ Install rest by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D examples=false   \
+            -D gtk_doc=false    \
+            ..                  &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/output/s/librest-1.0/rest-0.9.1/" -i ../docs/meson.build &&
+meson configure -D gtk_doc=true                                &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=false: + Allow building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+

+ -D examples=false: + Remove this option if libadwaita-1.7.6 and gtksourceview5-5.16.0 are + installed and you wish to build the demonstration application + provided by this package. +

+

+ -D vapi=true: Use this switch if + Vala-0.56.18 is installed and you wish to + build the Vala bindings provided by this package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + librest-demo (optional) +
+
+ Installed Libraries: + librest-1.0.so and + librest-extras-1.0.so +
+
+ Installed Directories: + /usr/include/rest-1.0 and + /usr/share/gtk-doc/html/rest-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ librest-demo +

+
+

+ provides an example of how to use the RESTful Web + API Query functions +

+
+

+ librest-1.0.so +

+
+

+ contains the RESTful Web API Query functions +

+
+

+ librest-extras-1.0.so +

+
+

+ contains extra RESTful Web API Query functions +

+
+
+
+
+
+
+
+

+ totem-pl-parser-3.26.6 +

+
+
+
+
+
+

+ Introduction to Totem PL Parser +

+

+ The Totem PL Parser package + contains a simple GObject-based library used to parse + multiple playlist formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Totem PL Parser Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ CMake-4.1.0, GTK-Doc-1.34.0, + Gvfs-1.56.1 (for some tests), LCOV, and + libquvi >= 0.9.1 + and libquvi-scripts - if they are installed, then + lua-socket + (git) is necessary for the tests +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of Totem PL Parser +

+

+ Install Totem PL Parser by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. The test named + parser is known to fail. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libtotem-plparser-mini.so and + libtotem-plparser.so +
+
+ Installed Directories: + /usr/include/totem-pl-parser and + /usr/share/gtk-doc/html/totem-pl-parser +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libtotem-plparser.so +

+
+

+ is the Totem + Playlist Parser library +

+
+

+ libtotem-plparser-mini.so +

+
+

+ is the Totem + Playlist Parser library, mini version +

+
+
+
+
+
+
+
+

+ VTE-0.80.3 +

+
+
+
+
+
+

+ Introduction to VTE +

+

+ The VTE package contains a + virtual terminal widget for GTK applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ VTE + Dependencies +

+
+ Required +
+

+ GTK-3.24.50, libxml2-2.14.5, and + pcre2-10.45 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, both git-2.50.1 and make-ca-1.16.1 (for downloading a + fast_float copy, only if the recommended dependency is + omitted) +

+
+
+

+ Installation of VTE +

+

+ Install VTE by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D _systemd=false   &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed -e "/docdir =/s@\$@/ 'vte-0.80.3'@" \
+    -i ../doc/reference/meson.build     &&
+meson configure -D docs=true            &&
+ninja
+

+ To test the results, issue ninja test. +

+

+ Now, as the root user: +

+
ninja install &&
+rm -v /etc/profile.d/vte.*
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ rm -v + /etc/profile.d/vte.*: This command removes + two files installed in /etc/profile.d that have no use on a + LFS system. +

+

+ -D gnutls=false: Add this switch + if you do not want to enable GnuTLS support. +

+

+ -D vapi=false: Add this switch if + you do not want to enable vala bindings. +

+

+ -D gtk4=false: Add this switch if + you do not want to build the GTK-4 version of VTE. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + vte-2.91 and vte-2.91-gtk4 +
+
+ Installed Library: + libvte-2.91.so and + libvte-2.91-gtk4.so +
+
+ Installed Directories: + /usr/include/vte-2.91, + /usr/include/vte-2.91-gtk4, and (optional) + /usr/share/doc/vte-0.80.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ vte-2.91 +

+
+

+ is a test application for the VTE libraries +

+
+

+ vte-2.91-gtk4 +

+
+

+ is a test application for the GTK-4 version of the + VTE libraries +

+
+

+ libvte-2.91.so +

+
+

+ is a library which implements a terminal emulator + widget for GTK+ 3 +

+
+

+ libvte-2.91-gtk4.so +

+
+

+ is a library which implements a terminal emulator + widget for GTK-4 +

+
+
+
+
+
+
+
+

+ yelp-xsl-42.4 +

+
+
+
+
+
+

+ Introduction to Yelp XSL +

+

+ The Yelp XSL package + contains XSL stylesheets that are used by the Yelp help browser to format Docbook and + Mallard documents. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Yelp + XSL Dependencies +

+
+ Required +
+

+ libxslt-1.1.43 and itstool-2.0.7 +

+
+
+

+ Installation of Yelp XSL +

+

+ Install Yelp XSL by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/yelp-xsl +
+
+
+
+
+
+
+
+

+ geocode-glib-3.26.4 +

+
+
+
+
+
+

+ Introduction to Geocode GLib +

+

+ The Geocode GLib is a + convenience library for the Yahoo! Place Finder APIs. The + Place Finder web service allows you to do geocoding (finding + longitude and latitude from an address), as well as reverse + geocoding (finding an address from coordinates). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Geocode GLib Dependencies +

+
+ Required +
+

+ JSON-GLib-1.10.6 and libsoup-3.6.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of Geocode GLib +

+

+ Install Geocode GLib by + running the following commands: +

+
mkdir build                   &&
+cd    build                   &&
+
+meson setup --prefix=/usr           \
+            --buildtype=release     \
+            -D enable-gtk-doc=false \
+            -D soup2=false          \
+            ..                      &&
+ninja
+

+ To test the results, issue: LANG=C ninja test. One test + fails because it needs the sv_SE.utf8 locale, which is not installed by + default in LFS. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + enable-gtk-doc=false: Allow this package to be + built without GTK-Doc-1.34.0. Remove this parameter if + GTK-Doc-1.34.0 is installed and you wish + to rebuild and install the API documentation. +

+

+ -D soup2=false: This + switch forces this package to use libsoup-3 for HTTP requests + instead of libsoup-2. The packages in BLFS that use + geocode-glib now expect libsoup-3 to be used. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgeocode-glib-2.so +
+
+ Installed Directories: + /usr/include/geocode-glib-2.0, + /usr/libexec/installed-tests/geocode-glib, + /usr/share/icons/gnome/scalable/places, and + /usr/share/gtk-doc/html/geocode-glib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgeocode-glib-2.so +

+
+

+ contains the Geocode + GLib API functions +

+
+
+
+
+
+
+
+

+ Gjs-1.84.2 +

+
+
+
+
+
+

+ Introduction to Gjs +

+

+ Gjs is a set of Javascript + bindings for GNOME. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/gjs/1.84/gjs-1.84.2.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 5083ed4dc52910eebbbfb17198d8ef8e +

    +
  • +
  • +

    + Download size: 772 KB +

    +
  • +
  • +

    + Estimated disk space required: 299 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (with tests; with + parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ Gjs + Dependencies +

+
+ Required +
+

+ Cairo-1.18.4, dbus-1.16.2, GLib-2.84.4 (with GObject + Introspection), and SpiderMonkey from + Firefox-140.2.0 +

+
+ Recommended (required for GNOME) +
+ +
+ Optional +
+

+ Valgrind-3.25.1 (for tests), DTrace, + LCOV, + sysprof, and + Systemtap +

+
+
+

+ Installation of Gjs +

+

+ Apply a patch to allow building this package with + SpiderMonkey 140: +

+
patch -Np1 -i ../gjs-1.84.2-spidermonkey_140-1.patch
+

+ Install Gjs by running the + following commands: +

+
mkdir gjs-build &&
+cd    gjs-build &&
+
+meson setup --prefix=/usr          \
+            --buildtype=release    \
+            --wrap-mode=nofallback \
+            ..                     &&
+ninja
+

+ To test the results, issue: ninja test in a graphical + session. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --wrap-mode=nofallback: This + switch prevents meson from using subproject + fallbacks for any dependency declarations in the build files, + preventing it from downloading any optional dependencies + which are not installed on the system. +

+

+ -D profiler=disabled: prevents + building the profiler backend even if sysprof is + installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gjs (symlink) and + gjs-console +
+
+ Installed Library: + libgjs.so +
+
+ Installed Directories: + /usr/include/gjs-1.0, /usr/lib/gjs, + /usr/libexec/installed-tests/gjs, /usr/share/gjs-1.0, and + /usr/share/installed-tests/gjs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gjs-console +

+
+

+ contains a console to run JavaScript commands +

+
+

+ libgjs.so +

+
+

+ contains the GNOME + JavaScript bindings +

+
+
+
+
+
+
+
+

+ gnome-autoar-0.4.5 +

+
+
+
+
+
+

+ Introduction to gnome-autoar +

+

+ The gnome-autoar package + provides a framework for automatic archive extraction, + compression, and management. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gnome-autoar Dependencies +

+
+ Required +
+

+ libarchive-3.8.1 and GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for building + documentation) +

+
+
+

+ Installation of gnome-autoar +

+

+ Install gnome-autoar by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D vapi=true        \
+            -D tests=true       \
+            ..                  &&
+ninja
+

+ To test the results, issue: ninja test +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this + parameter if GTK-Doc is installed and you wish to rebuild and + install the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgnome-autoar-0.so and + libgnome-autoar-gtk-0.so +
+
+ Installed Directories: + /usr/include/gnome-autoar-0 and + /usr/share/gtk-doc/html/gnome-autoar +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgnome-autoar-0.so +

+
+

+ provides API functions for automatic archive + management +

+
+

+ libgnome-autoar-gtk-0.so +

+
+

+ provides GTK+ widgets to aid in automatic archive + management +

+
+
+
+
+
+
+
+

+ gnome-desktop-44.3 +

+
+
+
+
+
+

+ Introduction to GNOME Desktop +

+

+ The GNOME Desktop package + contains a library that provides an API shared by several + applications on the GNOME + Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Desktop Dependencies +

+
+ Required +
+

+ gsettings-desktop-schemas-48.0, + GTK-3.24.50, GTK-4.18.6, ISO Codes-4.18.0, + itstool-2.0.7, libseccomp-2.6.0, + libxml2-2.14.5, and xkeyboard-config-2.45 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of GNOME Desktop +

+

+ Install GNOME Desktop by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this + parameter if you wish to build the API documentation. +

+

+ -D installed_tests=true: Use this + parameter you wish to enable the installed tests. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgnome-bg-4.so, + libgnome-desktop-3.so, libgnome-desktop-4.so, and + libgnome-rr-4.so +
+
+ Installed Directories: + /usr/include/gnome-desktop-3.0, + /usr/include/gnome-desktop-4.0, + /usr/libexec/gnome-desktop-debug, + /usr/share/gtk-doc/html/gnome-desktop3 (optional), and + /usr/share/help/*/{fdl,gpl,lgpl} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgnome-desktop-3.so +

+
+

+ contains functions shared by several GNOME applications +

+
+
+
+
+
+
+
+

+ gnome-menus-3.36.0 +

+
+
+
+
+
+

+ Introduction to GNOME Menus +

+

+ The GNOME Menus package + contains an implementation of the draft Desktop + Menu Specification from freedesktop.org. It also contains + the GNOME menu layout + configuration files and .directory files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Menus Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) +

+
+
+

+ Installation of GNOME Menus +

+

+ Install GNOME Menus by + running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-static  &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgnome-menu-3.so +
+
+ Installed Directories: + /etc/xdg/menus, + /usr/include/gnome-menus-3.0, and + /usr/share/desktop-directories +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgnome-menu-3.so +

+
+

+ contains functions required to support GNOME's implementation of the + Desktop Menu Specification +

+
+
+
+
+
+
+
+

+ gnome-online-accounts-3.54.5 +

+
+
+
+
+
+

+ Introduction to GNOME Online Accounts +

+

+ The GNOME Online Accounts + package contains a framework used to access the user's online + accounts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Online Accounts Dependencies +

+
+ Required +
+

+ Gcr-4.4.0.1, JSON-GLib-1.10.6, + libadwaita-1.7.6, rest-0.9.1, and Vala-0.56.18 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, keyutils-1.6.3, + MIT Kerberos V5-1.22.1, and + Valgrind-3.25.1 +

+
+
+

+ Installation of GNOME Online Accounts +

+
+

+ Note +

+

+ The Google API Key and OAuth tokens below are specific to + LFS. If using these instructions for another distro, or if + you intend to distribute binary copies of the software + using these instructions, please obtain your own keys + following the instructions located at + https://www.chromium.org/developers/how-tos/api-keys. +

+
+

+ Install GNOME Online + Accounts by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup                                            \
+      --prefix=/usr                                    \
+      --buildtype=release                              \
+      -D documentation=false                           \
+      -D kerberos=false                                \
+      -D google_client_secret=5ntt6GbbkjnTVXx-MSxbmx5e \
+      -D google_client_id=595013732528-llk8trb03f0ldpqq6nprjp1s79596646.apps.googleusercontent.com \
+      .. &&
+ninja
+

+ If you've installed Gi-DocGen-2025.4 and you wish to build + and install the API documentation of this package, issue: +

+
meson configure -D documentation=true &&
+sed "s/project_name()/& + '-' + meson.project_version()/" \
+    -i ../doc/meson.build &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D google_*: These + switches set the BLFS OAuth ID and secret for Google + services. +

+

+ -D kerberos=true: Use this switch + if you have installed MIT Kerberos V5-1.22.1 and wish + to use it with GNOME Online + Accounts. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgoa-1.0.so and + libgoa-backend-1.0.so +
+
+ Installed Directories: + /usr/include/goa-1.0, + /usr/lib/goa-1.0, and + /usr/share/doc/gnome-online-accounts-3.54.5 + (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgoa-1.0.so +

+
+

+ contains the GNOME Online + Accounts API functions +

+
+

+ libgoa-backend-1.0.so +

+
+

+ contains functions used by GNOME Online Accounts backends +

+
+
+
+
+
+
+
+

+ libgee-0.20.8 +

+
+
+
+
+
+

+ Introduction to libgee +

+

+ The libgee package is a + collection library providing GObject based interfaces and + classes for commonly used data structures. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libgee Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) and Vala-0.56.18 +

+
+ Optional +
+

+ LCOV +

+
+
+

+ Installation of libgee +

+

+ Install libgee by running + the following commands: +

+
./configure --prefix=/usr --enable-vala &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgee-0.8.so +
+
+ Installed Directory: + /usr/include/gee-0.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgee-0.8.so +

+
+

+ contains the libgee API functions +

+
+
+
+
+
+
+
+

+ libgtop-2.41.3 +

+
+
+
+
+
+

+ Introduction to libgtop +

+

+ The libgtop package contains + the GNOME top libraries. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libgtop Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection + recommended) and Xorg Libraries +

+
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of libgtop +

+

+ Install libgtop by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + libgtop_daemon2 and + libgtop_server2 +
+
+ Installed Library: + libgtop-2.0.so +
+
+ Installed Directories: + /usr/include/libgtop-2.0 and + /usr/share/gtk-doc/html/libgtop +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgtop-2.0.so +

+
+

+ contains functions that allow access to system + performance data +

+
+
+
+
+
+
+
+

+ libgweather-4.4.4 +

+
+
+
+
+
+

+ Introduction to libgweather +

+

+ The libgweather package is a + library used to access weather information from online + services for numerous locations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ libgweather Dependencies +

+
+ Required +
+

+ geocode-glib-3.26.4, GTK-3.24.50, + libsoup-3.6.5, and PyGObject-3.52.3 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4 (gi-docgen is also + provided as a meson subproject, which will be used if + -D gtk_doc=false is not passed to + meson), + LLVM-20.1.8 (for clang-format), and + pylint +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of libgweather +

+

+ Fix an issue in the shipped geolocation data: +

+
patch -Np1 -i ../libgweather-4.4.4-upstream_fix-1.patch
+

+ Install libgweather by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D gtk_doc=false    \
+            ..                  &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "s/libgweather_full_version/'libgweather-4.4.4'/" \
+    -i ../doc/meson.build                             &&
+meson configure -D gtk_doc=true                       &&
+ninja
+

+ One test needs that the locale files be installed on the + system, so it is better to run the tests after installing the + package. +

+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: LC_ALL=C ninja test. +

+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=false: + Allow building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgweather-4.so +
+
+ Installed Directories: + /usr/lib/libgweather-4, + /usr/include/libgweather-4.0, + /usr/share/gtk-doc/html/libgweather-4.0 (optional), and + /usr/share/libgweather-4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgweather-4.so +

+
+

+ contains functions that allow for the retrieval of + weather information +

+
+
+
+
+
+
+
+

+ libpeas-1.36.0 +

+
+
+
+
+
+

+ Introduction to libpeas +

+

+ libpeas is a GObject based + plugins engine, and is targeted at giving every application + the chance to assume its own extensibility. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libpeas Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) + and GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, Glade, embed, LGI (for LUA + bindings, built with LUA-5.1), with either luajit-20250816 or + LUA-5.1 +

+
+
+

+ Installation of libpeas +

+

+ Install libpeas by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr          \
+            --buildtype=release    \
+            --wrap-mode=nofallback \
+            -D python3=false       \
+            ..                     &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/docs_dir =/s@\$@/ 'libpeas-1.36.0'@" \
+    -i ../docs/reference/meson.build       &&
+meson configure -D gtk_doc=true            &&
+ninja
+

+ To test the results, issue: ninja test. An active + graphical session with bus address is necessary to run the + tests. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --wrap-mode=nofallback: This + switch prevents meson from using subproject + fallbacks for any dependency declarations in the build files, + preventing it from downloading any optional dependencies + which are not installed on the system. +

+

+ -D python3=false: + This switch disables the Python plugin loader because it is + incompatible with pygobject-3.52.x, and it will cause + applications which load Python plugins to hang indefinitely. +

+

+ -D vapi=true: Add this switch if + you wish to generate vapi (vala) data. +

+

+ -D demos=false: Add this switch + if you do not wish to build the demo programs. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + peas-demo +
+
+ Installed Libraries: + libpeas-1.0.so and + libpeas-gtk-1.0.so +
+
+ Installed Directories: + /usr/include/libpeas-1.0, + /usr/lib/libpeas-1.0, /usr/lib/peas-demo and + /usr/share/gtk-doc/html/libpeas (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ peas-demo +

+
+

+ is the Peas demo program +

+
+

+ libpeas-1.0.so +

+
+

+ contains the libpeas API functions +

+
+

+ libpeas-gtk-1.0.so +

+
+

+ contains the libpeas GTK+ widgets +

+
+
+
+
+
+
+
+

+ libshumate-1.4.0 +

+
+
+
+
+
+

+ Introduction to libshumate +

+

+ The libshumate package + contains a GTK-4 widget to display maps. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libshumate Dependencies +

+
+ Required +
+

+ GTK-4.18.6, libsoup-3.6.5, and Protobuf-c-1.5.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Gi-DocGen-2025.4, Valgrind-3.25.1, + and sysprof +

+
+
+

+ Installation of libshumate +

+

+ Install libshumate by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr          \
+            --buildtype=release    \
+            --wrap-mode=nodownload \
+            -D gtk_doc=false       \
+            ..                     &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed -e 's/lib_version/version/' \
+    -i ../docs/meson.build      &&
+meson configure -D gtk_doc=true &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --wrap-mode=nodownload: This + switch prevents meson from downloading any + optional dependency which is not installed on the system. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libshumate-1.0.so +
+
+ Installed Directories: + /usr/include/shumate-1.0 and + /usr/share/doc/libshumate-1.4.0 (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libshumate-1.0.so +

+
+

+ contains functions that provide a GTK-4 widget to + display maps +

+
+
+
+
+
+
+
+

+ evolution-data-server-3.56.2 +

+
+
+
+
+
+

+ Introduction to Evolution Data Server +

+

+ The Evolution Data Server + package provides a unified backend for programs that work + with contacts, tasks, and calendar information. It was + originally developed for Evolution (hence the name), but is now + used by other packages as well. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Evolution Data Server Dependencies +

+
+ Required +
+

+ libical-3.0.20, libsecret-0.21.7, + nss-3.115, + and SQLite-3.50.4 +

+
+ Recommended +
+ +
+ Recommended (Runtime) +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0, MIT Kerberos + V5-1.22.1, a MTA (that + provides a sendmail command), + OpenLDAP-2.6.10, + Berkeley DB (deprecated), and libphonenumber +

+
+
+

+ Installation of Evolution Data Server +

+

+ Install Evolution Data + Server by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr  \
+      -D SYSCONF_INSTALL_DIR=/etc   \
+      -D ENABLE_VALA_BINDINGS=ON    \
+      -D ENABLE_INSTALLED_TESTS=ON  \
+      -D WITH_OPENLDAP=OFF          \
+      -D WITH_KRB5=OFF              \
+      -D ENABLE_INTROSPECTION=ON    \
+      -D ENABLE_GTK_DOC=OFF         \
+      -D WITH_LIBDB=OFF             \
+      -D WITH_SYSTEMDUSERUNITDIR=no \
+      -W no-dev -G Ninja ..         &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: ninja test. +

+
+
+

+ Command Explanations +

+

+ -D + ENABLE_VALA_BINDINGS=ON: This switch enables + building the Vala bindings. Remove it if you don't have + Vala-0.56.18 installed. +

+

+ -D + ENABLE_GTK_DOC=OFF: This switch disables building + the API documentation. It is broken for this package due to + the use of a long deprecated gtk-doc program that is no + longer available. +

+

+ -D WITH_KRB5=OFF: + This switch allows building this package without MIT + Kerberos V5-1.22.1. If you need Kerberos support in this + package, for example to connect to a corporate network, + change this switch from OFF to ON. +

+

+ -D WITH_LIBDB=OFF: + This switch allows building this package without + Berkeley DB (deprecated). SQLite-3.50.4 is used for normal + operation. +

+

+ -D ENABLE_OAUTH2_WEBKITGTK4=OFF: + Use this switch if you did not build WebKitGTK-2.48.5 + with GTK-4. +

+

+ -D + WITH_SYSTEMDUSERUNITDIR=no: This switch disables + installing the systemd units, which are not used for a Sysv + build. +

+
+

+ Note +

+

+ To enable many of the optional dependencies, review the + information from cmake -L + CMakeLists.txt for the necessary parameters + you must pass to the cmake command. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libcamel-1.2.so, + libebackend-1.2.so, libebook-1.2.so, + libebook-contacts-1.2.so, libecal-2.0.so, + libedata-book-1.2.so, libedata-cal-2.0.so, + libedataserver-1.2.so, libedataserverui-1.2.so, + libedataserverui4-1.0.so, and + libetestserverutils.so +
+
+ Installed Directories: + /usr/include/evolution-data-server, + /usr/lib{,exec}/evolution-data-server, + /usr/share/evolution-data-server, + /usr/share/installed-tests/evolution-data-server, and + /usr/share/pixmaps/evolution-data-server +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libcamel-1.2.so +

+
+

+ is the Evolution + MIME message handling library +

+
+

+ libebackend-1.2.so +

+
+

+ is the utility library for Evolution Data Server Backends +

+
+

+ libebook-1.2.so +

+
+

+ is the client library for Evolution address books +

+
+

+ libebook-contacts-1.2.so +

+
+

+ is the client library for Evolution contacts +

+
+

+ libecal-1.2.so +

+
+

+ is the client library for Evolution calendars +

+
+

+ libedata-book-1.2.so +

+
+

+ is the backend library for Evolution address books +

+
+

+ libedata-cal-1.2.so +

+
+

+ is the backend library for Evolution calendars +

+
+

+ libedataserver-1.2.so +

+
+

+ is the utility library for Evolution Data Server +

+
+

+ libedataserverui-3.0.so +

+
+

+ is the GUI utility library for Evolution Data Server +

+
+

+ libedataserverui4-1.0.so +

+
+

+ is the GTK-4 based GUI utility library for + Evolution Data + Server +

+
+

+ libetestserverutils.so +

+
+

+ is the server test utility library for Evolution Data Server +

+
+
+
+
+
+
+
+

+ tinysparql-3.9.2 +

+
+
+
+
+
+

+ Introduction to Tinysparql +

+

+ Tinysparql is a + low-footprint RDF triple store with a SPARQL 1.1 interface. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Tinysparql Dependencies +

+
+ Required +
+

+ JSON-GLib-1.10.6 and Vala-0.56.18 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoc-10.2.1, Avahi-0.8, Graphviz-13.1.2, + bash-completion, + and libstemmer +

+
+
+

+ Installation of Tinysparql +

+

+ Fix the location to install the documentation into: +

+
sed -e "s/'generate'/&, '--no-namespace-dir'/"         \
+    -e "/--output-dir/s/@OUTPUT@/&\/tinysparql-3.9.2/" \
+    -i docs/reference/meson.build
+

+ Install Tinysparql by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr                  \
+            --buildtype=release            \
+            -D man=false                   \
+            -D systemd_user_services=false \
+            ..                            &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+

+ To test the results, issue: meson configure -D debug=true && + LC_ALL=C.UTF-8 ninja test. The test suite + should be run from a graphical session. One test is known to + fail due to the manual pages not being generated. +

+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D man=false: This + switch prevents the build process from generating man pages. + Omit this switch if you have asciidoc-10.2.1 installed and + wish to generate and install the man pages. +

+

+ -D + systemd_user_services=false: This switch prevents + the build process from installing systemd user services since + they are useless on SysV systems. +

+

+ meson configure -D + debug=true: This command enables some debug + checks necessary for the test suite. We don't want to enable + them for the installed tinysparql libraries and programs, so + we run the test suite after installation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + tinysparql +
+
+ Installed Library: + libtinysparql-3.0.so and + libtracker-sparql-3.0.so +
+
+ Installed Directories: + /usr/{include,lib}/tinysparql-3.0 + and /usr/share/doc/tinysparql-3.9.2 (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ tinysparql +

+
+

+ is a control program for TinySPARQL databases +

+
+

+ libtinysparql-3.0.so +

+
+

+ contains functions for administering TinySPARQL + databases +

+
+

+ libtracker-sparql-3.0.so +

+
+

+ contains resource management and database functions +

+
+
+
+
+
+
+
+

+ localsearch-3.9.0 +

+
+
+
+
+
+

+ Introduction to Localsearch +

+

+ The Localsearch package + contains a filesystem indexer as well as a metadata + extractor. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Localsearch Dependencies +

+
+ Required +
+

+ gexiv2-0.14.6, gst-plugins-base-1.26.5, and + tinysparql-3.9.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoc-10.2.1, CMake-4.1.0, DConf-0.40.0, + libgsf-1.14.53, NetworkManager-1.54.0, taglib-2.1.1, + totem-pl-parser-3.26.6, + libcue, libitpcdata, + libosinfo, + and gupnp +

+
+
+

+ Kernel Configuration +

+

+ Enable the following options in the kernel configuration, + then recompile the kernel and reboot if necessary: +

+
Security options --->
+  [*]        Enable different security models                         [SECURITY]
+  [*]        Landlock support                                [SECURITY_LANDLOCK]
+  # List more Linux Security Modules here (separated with comma) if needed,
+  # for example 'landlock,lockdown,smack':
+  (landlock) Ordered list of enabled LSMs                                  [LSM]
+
+
+

+ Installation of Localsearch +

+
+

+ Warning +

+

+ If you are upgrading this package from a version where it + was known as tracker-miners, there are several + files which will cause conflicts. Before installing this + package, remove these files as the root user: +

+
+
rm -fv /etc/xdg/autostart/tracker-miner-fs-3.desktop                           &&
+rm -fv /usr/lib/systemd/user/tracker-miner-fs-3.service                        &&
+rm -fv /usr/lib/systemd/user/tracker-miner-fs-control-3.service                &&
+rm -fv /usr/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Files.service &&
+rm -fv /usr/share/dbus-1/services/org.freedesktop.Tracker3.Writeback.service   &&
+rm -fv /usr/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Files.Control.service
+
+

+ Note +

+

+ If you plan to run the tests, some timeouts are too short + when using spinning disks. There are two places where + timeouts are used: first, individual tests inside a group + of tests have a default timeout of 10s. This can be changed + by setting the environment variable TRACKER_TESTS_AWAIT_TIMEOUT to the desired + value when running the tests (see below). Second, a global + timeout for a group of tests is fixed at configuration + time. The default value in the functional-tests directory (other + directories have only short lived tests) may be increased + with the following command (replace 200 with a value + suitable for your machine): +

+
sed -i s/120/200/ tests/functional-tests/meson.build
+
+

+ First, apply a patch to make the HTML extractor compatible + with libxml2-2.14 and later: +

+
patch -Np1 -i ../localsearch-3.9.0-libxml2_2_14-1.patch
+

+ Install Localsearch by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr                  \
+            --buildtype=release            \
+            -D systemd_user_services=false \
+            -D man=false                   \
+            ..                             &&
+ninja
+

+ To test the results, issue (adjust the individual test + timeout to a value suitable for your machine, see the note + above): +

+
dbus-run-session env LC_ALL=C.UTF-8 TRACKER_TESTS_AWAIT_TIMEOUT=20 \
+                 ninja test &&
+rm -rf ~/tracker-tests
+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ The tests create files in the user directory (up to 24 MB), + so they have to be removed afterwards. +

+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D man=false: This + switch prevents the build process from generating man pages. + Omit this switch if you have asciidoc-10.2.1 installed and + wish to generate and install the man pages. +

+

+ -D + systemd_user_services=false: This switch prevents + the build process from installing systemd units since they + are useless on SysV systems. +

+

+ -D seccomp=false: This option + disables the seccomp system call filter. On some + architectures, such as i686 and ARM, the functions that + tracker-miners uses are not guarded properly, and + tracker-miners will get killed with a SIGSYS as a result. + Note that disabling seccomp may cause the system to be + compromised worse in the event that a security vulnerability + in localsearch or its dependencies is exploited. +

+

+ -D landlock=disabled: This switch + disables the Landlock file access sandbox. Use it if you + don't want to build the kernel with Landlock support. Note + that disabling Landlock may cause the system to be + compromised worse in the event that a security vulnerability + in localsearch or its dependencies is exploited. +

+

+ -D battery_detection=none: Use + this option if you have not installed the recommended + dependency upower. Do not use this option if your system has + a battery (laptop battery or UPS), or else localsearch may + waste battery life when A/C power is unavailable. +

+

+ -D libav=disabled: Use this + option if you have not installed the recommended dependency + ffmpeg. Note that using this will cause 7 test failures, and + will also significantly hamper the functionality of this + package. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + localsearch +
+
+ Installed Libraries: + Several modules under + /usr/lib/localsearch-3.0 +
+
+ Installed Directories: + /usr/lib/localsearch-3.0 and + /usr/share/localsearch3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ localsearch +

+
+

+ starts, stops, restarts, and lists daemons + responsible for indexing content +

+
+
+
+
+
+
+
+

+ GSound-1.0.3 +

+
+
+
+
+
+

+ Introduction to GSound +

+

+ The gsound package contains + a small library for playing system sounds. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gsound Dependencies +

+
+ Required +
+

+ libcanberra-0.30 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for generating + documentation) +

+
+
+

+ Installation of GSound +

+

+ Install gsound by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gsound-play +
+
+ Installed Libraries: + libgsound.so +
+
+ Installed Directories: + /usr/share/gtk-doc/html/gsound +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gsound-play +

+
+

+ plays system sounds through the libgsound interface +

+
+

+ libgsound.so +

+
+

+ contains API functions for playing system sounds +

+
+
+
+
+
+
+
+

+ xdg-desktop-portal-gnome-48.0 +

+
+
+
+
+
+

+ Introduction to xdg-desktop-portal-gnome +

+

+ xdg-desktop-portal-gnome is + a backend for xdg-desktop-portal, that is using GTK + and various pieces of GNOME infrastructure. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdg-desktop-portal-gnome + Dependencies +

+
+ Required +
+

+ gnome-desktop-44.3, GTK-4.18.6, libadwaita-1.7.6, xdg-desktop-portal-1.20.3, + and xdg-desktop-portal-gtk-1.15.3 + (at runtime) +

+
+
+

+ Installation of xdg-desktop-portal-gnome +

+

+ Install xdg-desktop-portal-gnome by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr              \
+            --buildtype=release        \
+            -D systemduserunitdir=/tmp \
+            ..                         &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ Remove systemd files that are useless (as the root user): +

+
rm -vf /tmp/*.service
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + one daemon in /usr/libexec +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/xdg-desktop-portal (if + no other xdg-desktop-portal backend is + installed) +
+
+
+
+
+
+
+
+

+ GNOME Desktop Components +

+
+
+
+
+
+
+
+

+ DConf-0.40.0 / + DConf-Editor-45.0.1 +

+
+
+
+
+
+

+ Introduction to DConf +

+

+ The DConf package contains a + low-level configuration system. Its main purpose is to + provide a backend to GSettings on platforms that don't + already have configuration storage systems. +

+

+ The DConf-Editor, as the + name suggests, is a graphical editor for the DConf database. Installation is + optional, because gsettings from GLib-2.84.4 + provides similar functionality on the commandline. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ DConf Dependencies +

+
+ Required +
+

+ dbus-1.16.2, GLib-2.84.4, GTK-3.24.50 (for the editor), + libhandy-1.8.3 (for the editor), and + libxml2-2.14.5 (for the editor) +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 and bash-completion +

+
+
+

+ Installation of DConf +

+

+ First, prevent unnecessary systemd units from being + installed: +

+
sed -i 's/install_dir: systemd_userunitdir,//' service/meson.build
+

+ Install DConf by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr            \
+            --buildtype=release      \
+            -D bash_completion=false \
+            ..                      &&
+ninja
+

+ To test the results, issue: dbus-run-session ninja test +

+

+ As the root user: +

+
ninja install
+

+ Now, optionally install the editor: +

+
cd ..              &&
+tar -xf ../dconf-editor-45.0.1.tar.xz &&
+cd dconf-editor-45.0.1                &&
+
+mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ As the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dconf and dconf-editor +
+
+ Installed Libraries: + libdconf.so and libdconfsettings.so + (GIO Module installed in /usr/lib/gio/modules) +
+
+ Installed Directories: + /usr/{include,share/gtk-doc/html}/dconf +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ dconf +

+
+

+ is a simple tool for manipulating the DConf database +

+
+

+ dconf-editor +

+
+

+ is a graphical program for editing the DConf database +

+
+

+ libdconf.so +

+
+

+ contains the DConf + client API functions +

+
+
+
+
+
+
+
+

+ gnome-backgrounds-48.2.1 +

+
+
+
+
+
+

+ Introduction to GNOME Backgrounds +

+

+ The GNOME Backgrounds + package contains a collection of graphics files which can be + used as backgrounds in the GNOME Desktop environment. Additionally, + the package creates the proper framework and directory + structure so that you can add your own files to the + collection. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Backgrounds Dependencies +

+
+ Required at runtime +
+

+ libjxl-0.11.1 +

+
+
+

+ Installation of GNOME Backgrounds +

+

+ Install GNOME Backgrounds by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr ..
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/backgrounds/gnome and + /usr/share/gnome-background-properties +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ GNOME + Backgrounds +

+
+

+ are background images for the GNOME Desktop +

+
+
+
+
+
+
+
+

+ Gvfs-1.56.1 +

+
+
+
+
+
+

+ Introduction to Gvfs +

+

+ The Gvfs package is a + userspace virtual filesystem designed to work with the I/O + abstractions of GLib's GIO library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gvfs + Dependencies +

+
+ Required +
+

+ dbus-1.16.2, GLib-2.84.4, Gcr-4.4.0.1, libusb-1.0.29, and + libsecret-0.21.7 +

+
+ Recommended +
+ +
+ Optional +
+

+ Apache-2.4.65, Avahi-0.8, BlueZ-5.83, Fuse-3.17.4, + gnome-online-accounts-3.54.5, + GTK-Doc-1.34.0, libarchive-3.8.1, + libgcrypt-1.11.2, libxml2-2.14.5, + libxslt-1.1.43, OpenSSH-10.0p1, + Samba-4.22.4, gnome-desktop-testing + (for tests), libbluray, + libgdata, + libgphoto2, libimobiledevice, + libmsgraph, + libmtp, libnfs, and + Twisted +

+
+
+

+ Installation of Gvfs +

+

+ Install Gvfs by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup               \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D onedrive=false   \
+      -D fuse=false       \
+      -D gphoto2=false    \
+      -D afc=false        \
+      -D bluray=false     \
+      -D nfs=false        \
+      -D mtp=false        \
+      -D smb=false        \
+      -D tmpfilesdir=no   \
+      -D dnssd=false      \
+      -D goa=false        \
+      -D google=false     \
+      -D systemduserunitdir=no .. &&
+ninja
+

+ The test suite requires gnome-desktop-testing, which is beyond + the scope of BLFS. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + <option>=false: These switches are required + if the corresponding dependency is not installed. Remove + those where you have installed the corresponding application + and wish to use it with Gvfs. The dnssd option requires avahi + and both goa and google require GNOME Online Accounts. The + google option also requires the libgdata package, which has + been removed from BLFS. The onedrive support requires the + libmsgraph package. +

+

+ -D tmpfilesdir=no + -D + systemduserunitdir=no: These switches provide + systemd directory locations. Setting them to “no” disables the + dependency on systemd and logind. +

+

+ -D cdda=false: This switch is + required if libcdio is not installed. The cdda backend is + useless on machines without a CDROM/DVD drive. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgvfscommon.so, libgvfsdaemon.so + and some under /usr/lib/gio/modules/ +
+
+ Installed Directories: + /usr/include/gvfs-client and + /usr/{lib,share}/gvfs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgvfscommon.so +

+
+

+ contains the common API functions used in + Gvfs programs +

+
+
+
+
+
+
+
+

+ gexiv2-0.14.6 +

+
+
+
+
+
+

+ Introduction to gexiv2 +

+

+ gexiv2 is a GObject-based wrapper around the Exiv2 library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gexiv2 Dependencies +

+
+ Required +
+

+ Exiv2-0.28.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for documentation) +

+
+
+

+ Installation of gexiv2 +

+

+ Install gexiv2 by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, run: +

+
meson configure -D tests=true &&
+ninja test
+

+ As the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgexiv2.so +
+
+ Installed Directories: + /usr/include/gexiv2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgexiv2.so +

+
+

+ provides a wrapper around the Exiv2 library +

+
+
+
+
+
+
+
+

+ Nautilus-48.3 +

+
+
+
+
+
+

+ Introduction to Nautilus +

+

+ The Nautilus package + contains the GNOME file + manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Nautilus Dependencies +

+
+ Required +
+

+ bubblewrap-0.11.0, gexiv2-0.14.6, + gnome-autoar-0.4.5, gnome-desktop-44.3, libadwaita-1.7.6, libnotify-0.8.6, libportal-0.9.1, + libseccomp-2.6.0, and tinysparql-3.9.2 +

+
+ Recommended +
+ +
+ Optional (for generating + documentation) +
+

+ Gi-DocGen-2025.4 +

+
+ Recommended (Runtime) +
+ +
+
+

+ Installation of Nautilus +

+

+ Install Nautilus by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            ..                  &&
+
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and you + wish to generate and install the API documentation, issue the + following commands: +

+
sed "/docdir =/s@\$@ / 'nautilus-48.3'@" -i ../meson.build &&
+meson configure -D docs=true &&
+ninja
+

+ To test the results, issue: ninja test. The tests need + to be run in a graphical environment. One test is known to + fail if localsearch-3.9.0 is not installed. + One test is also known to timeout if the user running the + tests has a large home directory. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D cloudproviders=false: Use this + switch if you do not have libcloudproviders-0.3.6 + installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + nautilus and + nautilus-autorun-software +
+
+ Installed Library: + libnautilus-extension.so +
+
+ Installed Directories: + /usr/{include,lib,share}/nautilus + and /usr/share/doc/nautilus-48.3 (optional) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ nautilus +

+
+

+ is the GNOME file + manager +

+
+

+ libnautilus-extension.so +

+
+

+ supplies the functions needed by the file manager + extensions +

+
+
+
+
+
+
+
+

+ gnome-bluetooth-47.1 +

+
+
+
+
+
+

+ Introduction to GNOME Bluetooth +

+

+ The GNOME Bluetooth package + contains tools for managing and manipulating Bluetooth + devices using the GNOME + Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ GNOME Bluetooth Dependencies +

+
+ Required +
+

+ GTK-4.18.6, gsound-1.0.3, libnotify-0.8.6, and + UPower-1.90.9 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 and dbusmock-0.36.0 +

+
+ Runtime Dependencies +
+

+ BlueZ-5.83 +

+
+
+

+ Installation of GNOME Bluetooth +

+

+ First, fix a build failure that happens with pygobject-3.52.0 + and later: +

+
patch -Np1 -i ../gnome-bluetooth-47.1-build_fix-1.patch
+

+ Install GNOME Bluetooth by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + bluetooth-sendto +
+
+ Installed Libraries: + libgnome-bluetooth-3.0.so and + libgnome-bluetooth-ui-3.0.so +
+
+ Installed Directories: + /usr/include/gnome-bluetooth-3.0 + and /usr/share/gnome-bluetooth-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ bluetooth-sendto +

+
+

+ is a GTK+ + application for transferring files over Bluetooth +

+
+

+ libgnome-bluetooth-3.0.so +

+
+

+ contains the GNOME + Bluetooth API functions +

+
+
+
+
+
+
+
+

+ gnome-keyring-48.0 +

+
+
+
+
+
+

+ Introduction to GNOME Keyring +

+

+ The GNOME Keyring package + contains a daemon that keeps passwords and other secrets for + users. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Keyring Dependencies +

+
+ Required +
+

+ dbus-1.16.2 and Gcr-3.41.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ libcap-ng +

+
+
+

+ Installation of GNOME Keyring +

+

+ Install GNOME Keyring by + running the following commands: +

+
sed -i 's:"/desktop:"/org:' schema/*.xml &&
+
+mkdir build-gkr &&
+cd    build-gkr &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D systemd=disabled \
+      -D ssh-agent=true   &&
+ninja
+

+ A session bus address is necessary to run the tests. To test + the results, issue: ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ sed ... + schema/*.xml: This command fixes a deprecated + entry in the schema template. +

+

+ -D systemd=disabled: + This switch prevents a failure due to the build system + requiring systemd by + default. +

+

+ -D ssh-agent=true: + This switch enables the SSH agent built into gnome-keyring + instead of the one in GCR. This is done due to bugs in gcr + which cause the agent to not work correctly. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-keyring (symlink), + gnome-keyring-3, and gnome-keyring-daemon +
+
+ Installed Libraries: + gnome-keyring-pkcs11.so (PKCS#11 + module) and pam_gnome_keyring.so (PAM module) +
+
+ Installed Directory: + /usr/lib/gnome-keyring and + /usr/share/xdg-desktop-portal +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-keyring-daemon +

+
+

+ is a session daemon that keeps passwords for users +

+
+
+
+
+
+
+
+

+ gnome-settings-daemon-48.1 +

+
+
+
+
+
+

+ Introduction to GNOME Settings Daemon +

+

+ The GNOME Settings Daemon is + responsible for setting various parameters of a GNOME Session and the applications that + run under it. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Settings Daemon Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14, Fontconfig-2.17.1, Gcr-4.4.0.1, GeoClue-2.7.2, geocode-glib-3.26.4, gnome-desktop-44.3, libcanberra-0.30, libgweather-4.4.4, libnotify-0.8.6, libwacom-2.16.1, + PulseAudio-17.0, and UPower-1.90.9 +

+
+ Recommended +
+ +
+

+ Note +

+

+ Recommended dependencies are not strictly required for this + package to build and function, but you may not get expected + results at runtime if you don't install them. +

+
+
+ Recommended (Runtime) +
+ +
+ Optional +
+

+ gnome-session-48.0, Mutter-48.4, dbusmock-0.36.0, umockdev-0.19.3, and + Xvfb (for + tests, from Xorg-Server-21.1.18 or Xwayland-24.1.8) +

+
+
+

+ Installation of GNOME Settings Daemon +

+

+ Next, fix libelogind detection for tests: +

+
sed -e 's/libsystemd/libelogind/' \
+    -i plugins/power/test.py
+

+ Next, fix backlight functionality in gnome-control-center: +

+
sed -e 's/(backlight->logind_proxy)/(0)/' \
+    -i plugins/power/gsd-backlight.c
+

+ Install GNOME Settings + Daemon by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D systemd=false    \
+            ..                  &&
+ninja
+

+ To check the results, execute: env -u GALLIUM_DRIVERS ninja + test. Note that you must have python-dbusmock installed in order for + the tests to complete successfully. Some tests may fail + depending on the init system in use. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgsd.so +
+
+ Installed Directories: + /etc/xdg/Xwayland-session.d, + /usr/include/gnome-settings-daemon-48, + /usr/lib/gnome-settings-daemon-48, and + /usr/share/gnome-settings-daemon +
+
+
+
+
+
+
+
+

+ Tecla-48.0.2 +

+
+
+
+
+
+

+ Introduction to Tecla +

+

+ The Tecla package contains a + keyboard layout viewer. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Tecla Dependencies +

+
+ Required +
+

+ libadwaita-1.7.6 and libxkbcommon-1.11.0 +

+
+
+

+ Installation of Tecla +

+

+ Install Tecla by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + tecla +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ tecla +

+
+

+ is a keyboard layout viewer +

+
+
+
+
+
+
+
+

+ gnome-control-center-48.4 +

+
+
+
+
+
+

+ Introduction to GNOME Control Center +

+

+ The GNOME Control Center + package contains the GNOME + settings manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Control Center Dependencies +

+
+ Required +
+

+ AccountsService-23.13.9, + colord-gtk-0.3.1, Cups-2.4.12, gnome-bluetooth-47.1, gnome-online-accounts-3.54.5, + gnome-settings-daemon-48.1, + gsound-1.0.3, libadwaita-1.7.6, + libgtop-2.41.3, libnma-1.10.6, libpwquality-1.4.5, MIT Kerberos + V5-1.22.1, ModemManager-1.24.2, Samba-4.22.4, + shared-mime-info-2.4, Tecla-48.0.2, + and UDisks-2.10.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Xvfb (from + Xorg-Server-21.1.18 or Xwayland-24.1.8) and dbusmock-0.36.0 (both for tests) +

+
+ Recommended (Runtime) +
+ +
+ Optional Runtime Dependencies +
+

+ cups-pk-helper-0.2.7 (Printers + panel), gnome-color-manager-3.36.2 + (Color panel), gnome-shell-48.4 (Applications panel), + and sound-theme-freedesktop-0.8 + (Additional Sound Effects in Sound panel) +

+
+

+ Note +

+

+ Recommended dependencies are not strictly required for this + package to build and function, but you may not get expected + results at runtime if you don't install them. +

+
+
+
+

+ Installation of GNOME Control Center +

+

+ Install GNOME Control Center + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: GTK_A11Y=none ninja test. + Note that you must have the python-dbusmock module installed in + order for the tests to complete successfully. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D ibus=false: Use this switch if + you have not installed the recommended IBus dependency. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-control-center +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/gnome-control-center, + /usr/share/pixmaps/faces, and + /usr/share/sounds/gnome +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-control-center +

+
+

+ is a graphical user interface used to configure + various aspects of GNOME +

+
+
+
+
+
+
+
+

+ Mutter-48.4 +

+
+
+
+
+
+

+ Introduction to Mutter +

+

+ Mutter is the window manager + for GNOME. It is not invoked + directly, but from GNOME + Session (on a machine with a hardware accelerated + video driver). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gnome.org/sources/mutter/48/mutter-48.4.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: e03c4eb4d9df60ec46bcc74fd632cb1e +

    +
  • +
  • +

    + Download size: 8.0 MB +

    +
  • +
  • +

    + Estimated disk space required: 103 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (Using parallelism=4; add + 1.4 SBU for tests) +

    +
  • +
+
+

+ Mutter Dependencies +

+
+ Required +
+

+ docutils-0.21.2, gnome-settings-daemon-48.1, + graphene-1.10.8, libei-1.4.1, libxcvt-0.1.3, + libxkbcommon-1.11.0, and pipewire-1.4.7 +

+
+ Recommended +
+ +
+ Recommended (Required to build the + Wayland compositor) +
+ +
+ Recommended (Runtime) +
+ +
+ Optional +
+

+ dbusmock-0.36.0 (required for tests), + Xorg-Server-21.1.18 (for X11 + sessions), bash-completion, + sysprof, + Xvfb (from + Xorg-Server-21.1.18 or Xwayland-24.1.8), + xvfb-run, and zenity (the X11 + tests would only run with all of the last three) +

+
+
+

+ Installation of Mutter +

+

+ Fix an issue with the tests that would otherwise require the + package to be built with debugging information: +

+
sed "/tests_c_args =/s/$/ + ['-U', 'G_DISABLE_ASSERT']/" -i src/tests/meson.build &&
+sed "/c_args:/a '-U', 'G_DISABLE_ASSERT'," -i src/tests/cogl/unit/meson.build
+

+ Install Mutter by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr            \
+            --buildtype=release      \
+            -D tests=disabled        \
+            -D profiler=false        \
+            -D bash_completion=false \
+            ..                       &&
+ninja
+

+ If you want to run the test suite, ensure dbusmock-0.36.0 is installed and issue: +

+
meson configure -D tests=enabled &&
+ninja test
+

+ The tests require an active X or wayland session. Some tests + are flaky (especially under a high system load) so if a test + fails you can try to re-run it alone with the meson test <test + name> command. A few tests may + fail depending on some system configuration. Don't make any + mouse or keyboard input while the test suite is running or + some tests may fail. You can also test basic functions of + Mutter following the + section called “Starting Mutter,” after installing it. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + bash_completion=false: Allows building the + package without the bash-completion + package installed. +

+

+ -D tests=disabled: + Allow building the package without dbusmock-0.36.0 installed. It'll be + overridden with meson + configure if running the test suite. +

+

+ -D profiler=false: + Allows building this package without Sysprof. Remove this option if you've + installed Sysprof and want + to analyze the rendering performance of Mutter. +

+
+
+

+ Starting + Mutter +

+

+ Mutter is normally used as a + component of gnome-shell, + but it can be used as a standalone Wayland compositor too. To + run Mutter as a Wayland + compositor, in a virtual console, issue: +

+
mutter --wayland -- vte-2.91
+

+ Replace vte-2.91 with the command + line for the first application you want in the Wayland + session. Note that once this application exits, the Wayland + session will be terminated. +

+

+ Mutter can also function as + a nested compositor in another Wayland session. In a terminal + emulator, issue: +

+
MUTTER_DEBUG_DUMMY_MODE_SPECS=1920x1080 mutter --wayland --nested -- vte-2.91
+

+ Replace 1920x1080 + with the size you want for the nested Wayland session. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gdctl and mutter +
+
+ Installed Libraries: + libmutter-16.so and + libmutter-test-16.so (optional) +
+
+ Installed Directories: + /usr/{lib,include,libexec/installed-tests,share/{,installed-tests}}/mutter-16 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ gdctl +

+
+

+ controls the current monitor configuration on + sessions that use Mutter as a window manager +

+
+

+ mutter +

+
+

+ is a Clutter based + compositing GTK+ + Window Manager +

+
+

+ libmutter-16.so +

+
+

+ contains the Mutter API functions +

+
+

+ libmutter-test-16.so +

+
+

+ contains the Mutter test suite API + functions; this library is only installed if the + test suite of this package is run and it is needed + by the gnome-shell + test suite +

+
+
+
+
+
+
+
+

+ gnome-shell-48.4 +

+
+
+
+
+
+

+ Introduction to GNOME Shell +

+

+ The GNOME Shell is the core + user interface of the GNOME + Desktop environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Shell Dependencies +

+
+ Required +
+

+ evolution-data-server-3.56.2, + Gcr-4.4.0.1, Gjs-1.84.2, gnome-desktop-44.3, ibus-1.5.32, Mutter-48.4, + Polkit-126, and startup-notification-0.12 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 and bash-completion +

+
+ Required Runtime Dependencies +
+

+ adwaita-icon-theme-48.1, + DConf-0.40.0, + elogind-255.17, GDM-48.0, gnome-control-center-48.4, + and libgweather-4.4.4 +

+
+ Recommended Runtime Dependencies +
+ +
+
+

+ Installation of GNOME Shell +

+

+ Install GNOME Shell by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D systemd=false    \
+            -D tests=false      \
+            ..                  &&
+ninja
+

+ To run the tests, ensure Mutter is installed after running its + test suite, and issue: meson + configure -D tests=true && ninja + test. You must be running an X session to run + the tests. Some will fail if GDM-48.0 is not installed. Several more tests may fail in the Sysv + environment. One test named CSS + styling support is known to fail with some + multi-monitor configurations. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D systemd=false: + Prevents installing systemd files, which are not needed in + this version of BLFS. +

+

+ -D extensions_tool=false: This + switch allows building this package without gnome-autoar-0.4.5 installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-extensions, + gnome-extensions-app, gnome-shell, + gnome-shell-extension-prefs, gnome-shell-extension-tool, + and gnome-shell-test-tool +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/gnome-shell, + /usr/share/gnome-shell, + /usr/share/gtk-doc/html/{shell,st} (optional), and + /usr/share/xdg-desktop-portal/ +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-shell +

+
+

+ provides the core user interface functions for the + GNOME Desktop +

+
+
+
+
+
+
+
+

+ gnome-shell-extensions-48.3 +

+
+
+
+
+
+

+ Introduction to GNOME Shell Extensions +

+

+ The GNOME Shell Extensions + package contains a collection of extensions providing + additional and optional functionality to the GNOME Shell. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Shell Extensions Dependencies +

+
+ Required +
+

+ libgtop-2.41.3 +

+
+
+

+ Installation of GNOME Shell Extensions +

+

+ Install GNOME Shell + Extensions by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr .. 
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/gnome-shell/extensions +
+
+
+
+
+
+
+
+

+ gnome-session-48.0 +

+
+
+
+
+
+

+ Introduction to GNOME Session +

+

+ The GNOME Session package + contains the GNOME session + manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Session Dependencies +

+
+ Required +
+

+ elogind-255.17, gnome-desktop-44.3, JSON-GLib-1.10.6, Mesa-25.1.8, and + UPower-1.90.9 +

+
+ Optional +
+

+ xmlto-0.0.29, and libxslt-1.1.43 with + docbook-xml-4.5 and docbook-xsl-nons-1.79.2 (to + build the documentation) +

+
+
+

+ Installation of GNOME Session +

+

+ When running GNOME under Wayland-1.24.0, environment + settings are not imported for the user using the system + profile. The Wayland developers are currently undecided on a + standard method to provide system environment settings for + user sessions. To work around this limitation, execute the + following command to make gnome-session use a login + shell: +

+
sed 's@/bin/sh@/bin/sh -l@' -i gnome-session/gnome-session.in
+

+ Install GNOME Session by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr              \
+            --buildtype=release        \
+            -D man=false               \
+            -D docbook=false           \
+            -D systemduserunitdir=/tmp \
+            ..                         &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you generated the documentation, move it to a versioned + directory: +

+
mv -v /usr/share/doc/gnome-session{,-48.0}
+

+ This package creates two Xorg based .desktop files in the /usr/share/xsessions/ directory, and two + Wayland based .desktop files in + the /usr/share/wayland-sessions/ directory. + Only one is needed in each directory on a BLFS system, so + prevent the extra files showing up as options in a display + manager. As the root user: +

+
rm -v /usr/share/xsessions/gnome.desktop &&
+rm -v /usr/share/wayland-sessions/gnome.desktop
+

+ Now, as the root user, remove + systemd units that are useless on SysV systems: +

+
rm -rv /tmp/{*.d,*.target,*.service}
+

+ The startup sequence of gnome-wayland needs to create a dbus + session. On SysV, this has to be added to the shipped + gnome-wayland.desktop file, + which is written for systemd. As the root user: +

+
sed -e 's@^Exec=@&/usr/bin/dbus-run-session @' \
+    -i /usr/share/wayland-sessions/gnome-wayland.desktop
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D man=false -D + docbook=false: These parameters disable building + documentation. Omit them if you have built the optional + dependencies. +

+
+
+

+ Starting GNOME +

+

+ The easiest way to start GNOME is to use a display manager. + GDM-48.0 is + the recommended display manager. +

+

+ It is also possible to start GNOME from the command line. However, + you must still have GDM-48.0 installed for the desktop to work. In + previous releases of GNOME, gnome-shell would start without + it installed, but this changed in 48.0. GDM does not need to + be enabled to start gnome-shell from the command line. +

+

+ To start GNOME using + xinit-1.4.4, run the following commands: +

+
cat > ~/.xinitrc << "EOF"
+dbus-run-session gnome-session
+EOF
+
+startx
+

+ Alternatively, to start GNOME with Wayland support, run the + following command: +

+
XDG_SESSION_TYPE=wayland dbus-run-session gnome-session
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-session, + gnome-session-inhibit, and gnome-session-quit +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/gnome-session-48.0 + and /usr/share/gnome-session +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ gnome-session +

+
+

+ is used to start up the GNOME Desktop environment +

+
+

+ gnome-session-inhibit +

+
+

+ is used to inhibit certain GNOME Session functionality + while executing the given command +

+
+

+ gnome-session-quit +

+
+

+ is used to end the GNOME Session +

+
+
+
+
+
+
+
+

+ gnome-tweaks-46.1 +

+
+
+
+
+
+

+ Introduction to GNOME Tweaks +

+

+ GNOME Tweaks is a simple + program used to tweak advanced GNOME settings. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Tweaks Dependencies +

+
+ Required +
+

+ GTK-4.18.6, gsettings-desktop-schemas-48.0, + libadwaita-1.7.6, libgudev-238, + PyGObject-3.52.3, and sound-theme-freedesktop-0.8 +

+
+
+

+ Installation of GNOME Tweaks +

+

+ Install GNOME Tweaks by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-tweaks +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/python3.13/site-packages/gtweak and + /usr/share/gnome-tweaks +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-tweaks +

+
+

+ is used to tweak advanced GNOME settings +

+
+
+
+
+
+
+
+

+ gnome-user-docs-48.2 +

+
+
+
+
+
+

+ Introduction to GNOME User Docs +

+

+ The GNOME User Docs package + contains documentation for GNOME. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME User Docs Dependencies +

+
+ Required +
+

+ itstool-2.0.7 and libxml2-2.14.5 +

+
+
+

+ Installation of GNOME User Docs +

+

+ Install GNOME User Docs by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/help/*/gnome-help and + /usr/share/help/*/system-admin-guide +
+
+
+
+
+
+
+
+

+ Yelp-42.3 +

+
+
+
+
+
+

+ Introduction to Yelp +

+

+ The Yelp package contains a + help browser used for viewing help files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Yelp + Dependencies +

+
+ Required +
+

+ gsettings-desktop-schemas-48.0, + libhandy-1.8.3, WebKitGTK-2.48.5, + and yelp-xsl-42.4 +

+
+ Recommended +
+ +
+

+ Note +

+

+ The Yelp package is not + required for a functional GNOME Desktop. Note, however, that + without Yelp you will not + be able to view the built-in Help provided by core + GNOME and many of the + support applications. +

+
+
+
+

+ Installation of Yelp +

+

+ Install Yelp by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ Still as the root user, + ensure that /usr/share/applications/mimeinfo.cache will + be updated and therefore the help in gnome applications + will work. +

+
update-desktop-database
+
+
+

+ Contents +

+
+
+
+ Installed Program: + gnome-help (symlink) and + yelp +
+
+ Installed Library: + libyelp.so +
+
+ Installed Directories: + /usr/include/libyelp, + /usr/share/gtk-doc/html/libyelp (optional), and + /usr/{lib,share}/yelp +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ yelp +

+
+

+ is the GNOME Help + Browser +

+
+

+ libyelp.so +

+
+

+ contains the Yelp + API functions +

+
+
+
+
+
+
+
+
+

+ Chapter 34. GNOME Applications +

+
+
+
+
+

+ These packages are desktop applications and assorted utilities + from the GNOME project. Feel + free to install them on an as needed or as desired basis. +

+
+
+
+

+ Baobab-48.0 +

+
+
+
+
+
+

+ Introduction to Baobab +

+

+ The Baobab package contains + a graphical directory tree analyzer. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Baobab Dependencies +

+
+ Required +
+

+ adwaita-icon-theme-48.1, + GTK-4.18.6, itstool-2.0.7, libadwaita-1.7.6, and Vala-0.56.18 +

+
+
+

+ Installation of Baobab +

+

+ Install Baobab by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + baobab +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/help/*/baobab +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ baobab +

+
+

+ is a graphical tool used to analyze disk usage +

+
+
+
+
+
+
+
+

+ Brasero-3.12.3 +

+
+
+
+
+
+

+ Introduction to Brasero +

+

+ Brasero is an application + used to burn CDs and DVDs on the GNOME Desktop. It is designed to be as + simple as possible and has some unique features that enable + users to create their discs easily and quickly. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Brasero Dependencies +

+
+ Required +
+

+ gst-plugins-base-1.26.5, + itstool-2.0.7, libcanberra-0.30, + and libnotify-0.8.6 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+ Recommended (Runtime) +
+ +
+ Optional (Runtime) +
+

+ Cdrdao-1.2.5, libdvdcss-1.4.3, + Cdrtools-3.02a09, and VCDImager +

+
+
+

+ Installation of Brasero +

+

+ First, fix a build issue that occurs with GCC-14: +

+
patch -Np1 -i ../brasero-3.12.3-upstream_fixes-1.patch
+

+ Install Brasero by running + the following commands: +

+
./configure --prefix=/usr                \
+            --enable-compile-warnings=no \
+            --enable-cxx-warnings=no     \
+            --disable-nautilus           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-*-warnings=no: These + switches fix build problems under GCC-6.x compilers. +

+

+ --disable-nautilus: + This switch disables building the Nautilus extension since it + is incompatible with the gtk4 version of Nautilus. +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + brasero +
+
+ Installed Libraries: + libbrasero-{burn,media,utils}3.so +
+
+ Installed Directories: + /usr/include/brasero3, + /usr/lib/brasero3, /usr/share/brasero, + /usr/share/gtk-doc/html/libbrasero-{burn,media}, and + /usr/share/help/*/brasero +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ brasero +

+
+

+ is a simple and easy to use CD/DVD burning + application for the GNOME Desktop +

+
+

+ libbrasero-burn3.so +

+
+

+ contains the Burning API functions +

+
+

+ libbrasero-media3.so +

+
+

+ contains the Media API functions +

+
+

+ libbrasero-utils3.so +

+
+

+ contains the Brasero API functions +

+
+
+
+
+
+
+
+

+ EOG-47.0 +

+
+
+
+
+
+

+ Introduction to EOG +

+

+ EOG is an application used + for viewing and cataloging image files on the GNOME Desktop. It also has basic editing + capabilities. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ EOG + Dependencies +

+
+ Required +
+

+ adwaita-icon-theme-48.1, + Exempi-2.6.6, gnome-desktop-44.3, libhandy-1.8.3, + libjpeg-turbo-3.0.1, libpeas-1.36.0, and shared-mime-info-2.4 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 and libportal-0.9.1 +

+
+
+

+ Installation of EOG +

+

+ Install EOG by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D libportal=false  \
+            ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ Still as the root user, + rebuild the cache database of MIME types handled by desktop + files so Nautilus-48.3 will be able to open image + files with EOG. +

+
update-desktop-database
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D libportal=false: + This parameter disables building EOG with support for flatpak + portals. Remove this parameter if you have libportal-0.9.1 + installed and wish to have support for flatpak portals. +

+

+ -D gtk_doc=true: Use this option + if GTK-Doc-1.34.0 is installed and you wish + to rebuild and install the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + eog +
+
+ Installed Library: + libeog.so +
+
+ Installed Directories: + /usr/include/eog-3.0, /usr/lib/eog, + /usr/share/eog, /usr/share/gtk-doc/html/eog (optional), + and /usr/share/help/*/eog +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ eog +

+
+

+ is a fast and functional image viewer as well as an + image cataloging program. It has basic editing + capabilities +

+
+
+
+
+
+
+
+

+ Evince-48.1 +

+
+
+
+
+
+

+ Introduction to Evince +

+

+ Evince is a document viewer + for multiple document formats. It supports PDF, Postscript, + DjVu, TIFF and DVI. It is useful for viewing documents of + various types using one simple application instead of the + multiple document viewers that once existed on the + GNOME Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Evince Dependencies +

+
+ Required +
+

+ adwaita-icon-theme-48.1, + gsettings-desktop-schemas-48.0, + GTK-3.24.50, itstool-2.0.7, libhandy-1.8.3, libxml2-2.14.5, and + OpenJPEG-2.5.3 +

+
+ Recommended +
+ +
+ Optional +
+

+ Cups-2.4.12 (to enable printing if support + is built into GTK+ 3), + gnome-desktop-44.3, gspell-1.14.0, + gst-plugins-base-1.26.5, + Gi-DocGen-2025.4, libgxps-0.3.2, + libtiff-4.7.0, texlive-20250308 (or install-tl-unx), DjVuLibre, libspectre, + and Synctex +

+
+
+

+ Installation of Evince +

+

+ Install Evince by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+CPPFLAGS+=" -I/opt/texlive/2025/include -DNO_DEBUG" \
+meson setup --prefix=/usr                \
+            --buildtype=release          \
+            -D gtk_doc=false             \
+            --wrap-mode=nodownload       \
+            -D systemduserunitdir=no ..  &&
+ninja
+

+ If you have Gi-DocGen-2025.4 installed and wish to + build the API documentation for this package, issue: +

+
sed "/docs_dir/s@\$@ / 'evince-48.1'@" -i ../help/meson.build &&
+meson configure -D gtk_doc=true                                 &&
+ninja
+

+ This package does not have a working test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ CPPFLAGS+=" + -I/opt/texlive/2025/include": Make sure that + meson can find libkpathsea headers from TeXLive if it is + installed. This has no effect on systems without TeXLive + installed. +

+

+ --wrap-mode=nodownload: This + switch disables fetching any dependency: the build system + tries to fetch gi-docgen even if -D gtk_doc=false is passed. +

+

+ -D gtk_doc=false: + Allow building this package without Gi-DocGen-2025.4 + installed. If you have Gi-DocGen-2025.4 installed and + you wish to rebuild and install the API documentation, a + meson configure + command will reset this option. +

+

+ -D gspell=false: This switch + turns off support for the spell checking plugin. +

+

+ -D introspection=false: Use this + option if you don't have built GLib-2.84.4 with GObject + Introspection and don't wish to have introspection support + built into Evince. +

+

+ -D nautilus=false: This switch + disables building the Nautilus Plugin. Use this switch if + Nautilus is not installed. +

+

+ -D keyring=false: This switch + disables the use of libsecret. Use this switch if + libsecret is not installed. +

+

+ -D ps=enabled: Use this switch if + libspectre is installed and + you want to view PostScript files with Evince. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + evince, evince-previewer, and + evince-thumbnailer +
+
+ Installed Libraries: + libevdocument3.so and + libevview3.so +
+
+ Installed Directories: + /usr/{include,lib,share}/evince, + /usr/share/gtk-doc/html/{evince,libevdocument-3.0,libevview-3.0} + (optional), and /usr/share/help/*/evince +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ evince +

+
+

+ is a multiple format document viewer +

+
+

+ evince-previewer +

+
+

+ is an application that implements the printing + previewer +

+
+

+ evince-thumbnailer +

+
+

+ is a simple program used to create thumbnail images + of supported documents +

+
+
+
+
+
+
+
+

+ Evolution-3.56.2 +

+
+
+
+
+
+

+ Introduction to Evolution +

+

+ The Evolution package + contains an integrated mail, calendar and address book suite + designed for the GNOME + environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Evolution Dependencies +

+
+ Required +
+

+ adwaita-icon-theme-48.1, + evolution-data-server-3.56.2, + Gcr-4.4.0.1, gnome-autoar-0.4.5, shared-mime-info-2.4, and + WebKitGTK-2.48.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ geocode-glib-3.26.4, and GTK-Doc-1.34.0, clutter-gtk + (Contact Maps plugin), cmark, Glade, libchamplain + (Contact Maps plugin), libpst, libunity, + libytnef +

+
+
+

+ Installation of Evolution +

+

+ Install Evolution by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D SYSCONF_INSTALL_DIR=/etc  \
+      -D ENABLE_INSTALLED_TESTS=ON \
+      -D ENABLE_PST_IMPORT=OFF     \
+      -D ENABLE_YTNEF=OFF          \
+      -D ENABLE_CONTACT_MAPS=OFF   \
+      -D ENABLE_MARKDOWN=OFF       \
+      -D ENABLE_WEATHER=ON         \
+      -G Ninja .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D ENABLE_YTNEF=OFF: + This switch is used to disable the yTNEF library usage + because libytnef is not part + of BLFS. +

+

+ -D + ENABLE_PST_IMPORT=OFF: This switch is used to + disable the pst-import plugin because libpst is not part of BLFS. +

+

+ -D + ENABLE_CONTACT_MAPS=OFF: This switch disables + building the Contact Maps plugin. Remove this switch if you + have installed the necessary dependencies and wish to build + the Contact Maps plugin. +

+

+ -D + ENABLE_MARKDOWN=OFF: This switch allows building + without cmark. Remove this + switch if you need markdown support and you have installed + the necessary dependency. +

+

+ -D ENABLE_WEATHER=ON: + This switch allows building against libgweather-4.4.4. +

+

+ -D WITH_HELP=OFF: This switch + disables building the manual of this package. Use this switch + if you have not installed itstool-2.0.7. +

+

+ -D WITH_OPENLDAP=OFF: Use this + switch if you have not installed OpenLDAP-2.6.10. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + evolution +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/evolution, + /usr/lib/evolution, /usr/libexec/evolution, + /usr/share/evolution, + /usr/share/installed-tests/evolution, + /usr/share/help/*/evolution, and optionally + /usr/share/gtk-doc/html/{evolution-mail-composer,evolution-mail-engine}, + /usr/share/gtk-doc/html/{evolution-mail-formatter,evolution-shell}, + and /usr/share/gtk-doc/html/evolution-util +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ evolution +

+
+

+ is an email, calendar and address book suite for + the GNOME Desktop +

+
+
+
+
+
+
+
+

+ File-Roller-44.5 +

+
+
+
+
+
+

+ Introduction to File Roller +

+

+ File Roller is an archive + manager for GNOME with + support for tar, bzip2, bzip3, gzip, zip, jar, compress, + lzop, zstd, dmg, and many other archive formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ File Roller is only a + graphical interface to archiving utilities such as + tar and zip. +

+
+

+ Package Information +

+
+ +
+

+ File + Roller Dependencies +

+
+ Required +
+

+ GTK-4.18.6 and itstool-2.0.7 +

+
+ Recommended +
+ +
+ Optional (for the API documentation) +
+

+ Gi-DocGen-2025.4 +

+
+ Optional (Runtime) +
+

+ UnRar-7.1.10, libarchive-3.8.1, + and Zip-3.0 +

+
+
+

+ Installation of File Roller +

+

+ Install File Roller by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D packagekit=false \
+            ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install &&
+chmod -v 0755 /usr/libexec/file-roller/isoinfo.sh
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D packagekit=false: + This switch disables the use of PackageKit which isn't + suitable for BLFS. +

+

+ -D api_docs=enabled: Use this + switch if you have Gi-DocGen-2025.4 installed and wish to + generate the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + file-roller +
+
+ Installed Libraries: + libnautilus-fileroller.so +
+
+ Installed Directories: + /usr/{libexec,share{,/help/*}}/file-roller +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ file-roller +

+
+

+ is an archive manager for GNOME +

+
+
+
+
+
+
+
+

+ gnome-calculator-48.1 +

+
+
+
+
+
+

+ Introduction to GNOME Calculator +

+

+ GNOME Calculator is a + powerful graphical calculator with financial, logical and + scientific modes. It uses a multiple precision package to do + its arithmetic to give a high degree of accuracy. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Calculator Dependencies +

+
+ Required +
+

+ gtksourceview5-5.16.0, itstool-2.0.7, libadwaita-1.7.6, + libgee-0.20.8, and libsoup-3.6.5 +

+
+ Recommended +
+ +
+
+

+ Installation of GNOME Calculator +

+

+ Install GNOME Calculator by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gcalccmd and + gnome-calculator +
+
+ Installed Library: + libgcalc-2.so and + libgci-1.so +
+
+ Installed Directories: + /usr/include/gcalc-2, + /usr/include/gci-2, + /usr/share/devhelp/books/{GCalc-2,GCi-1}, and + /usr/share/help/*/gnome-calculator +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gnome-calculator +

+
+

+ is the official calculator of the GNOME Desktop +

+
+

+ gcalccmd +

+
+

+ is a command line version of gnome-calculator +

+
+
+
+
+
+
+
+

+ gnome-color-manager-3.36.2 +

+
+
+
+
+
+

+ Introduction to GNOME Color Manager +

+

+ GNOME Color Manager is a + session framework for the GNOME desktop environment that makes it + easy to manage, install and generate color profiles. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Color Manager Dependencies +

+
+ Required +
+

+ colord-1.4.8, GTK-3.24.50, itstool-2.0.7, and + Little + CMS-2.17 +

+
+ Recommended +
+ +
+ Optional +
+

+ DocBook-utils-0.6.14 (currently + causes build to fail) +

+
+
+

+ Installation of GNOME Color Manager +

+

+ If DocBook-utils-0.6.14 is installed, + disable installation of the man pages to avoid a build + failure: +

+
sed /subdir\(\'man/d -i meson.build
+

+ Install GNOME Color Manager + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. The tests must + be run from an X session. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gcm-import, gcm-inspect, + gcm-picker, and gcm-viewer +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/gnome-color-manager and + /usr/share/help/*/gnome-color-manager +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ gcm-import +

+
+

+ allows you to import ICC profiles supplied by + vendors +

+
+

+ gcm-inspect +

+
+

+ allows you to inspect your session color-management + settings +

+
+

+ gcm-picker +

+
+

+ allows you to pick spot colors for use by an + attached colorimeter +

+
+

+ gcm-viewer +

+
+

+ allows you to view properties of ICC profiles +

+
+
+
+
+
+
+
+

+ gnome-connections-48.0 +

+
+
+
+
+
+

+ Introduction to gnome-connections +

+

+ gnome-connections is a VNC + and RDP client for the GNOME + Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gnome-connections Dependencies +

+
+ Required +
+

+ AppStream-1.0.6, FreeRDP-3.17.0, + gtk-vnc-1.5.0, itstool-2.0.7, libhandy-1.8.3, libsecret-0.21.7, + and Vala-0.56.18 +

+
+
+

+ Installation of gnome-connections +

+

+ Install gnome-connections by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-connections +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/include/gnome-connections, + /usr/lib/gnome-connections, /usr/share/gnome-connections, + and /usr/share/help/*/gnome-connections +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-connections +

+
+

+ is a remote desktop viewer for the GNOME Desktop +

+
+
+
+
+
+
+
+

+ gnome-disk-utility-46.1 +

+
+
+
+
+
+

+ Introduction to GNOME Disk Utility +

+

+ The GNOME Disk Utility + package provides applications used for dealing with storage + devices. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Disk Utility Dependencies +

+
+ Required +
+

+ gnome-settings-daemon-48.1, + itstool-2.0.7, libdvdread-6.1.3, + libhandy-1.8.3, libpwquality-1.4.5, libsecret-0.21.7, and UDisks-2.10.2 +

+
+ Optional +
+

+ appstream-glib-0.8.3 +

+
+
+

+ Installation of GNOME Disk Utility +

+

+ Install GNOME Disk Utility + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -Dlogind=libelogind .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -Dlogind=libelogind: + Tells the build system that the library used for the + login service is + libelogind.so instead of + libsystemd.so. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-disk-image-mounter and + gnome-disks +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gnome-disk-image-mounter +

+
+

+ is used to set up disk images +

+
+

+ gnome-disks +

+
+

+ is used to inspect, format, partition and configure + disks and block devices +

+
+
+
+
+
+
+
+

+ gnome-maps-48.6 +

+
+
+
+
+
+

+ Introduction to GNOME Maps +

+

+ GNOME Maps is a map + application for GNOME. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Maps Dependencies +

+
+ Required +
+

+ desktop-file-utils-0.28, + GeoClue-2.7.2, geocode-glib-3.26.4, Gjs-1.84.2, + libadwaita-1.7.6, libportal-0.9.1, libshumate-1.4.0, + libgweather-4.4.4, and rest-0.9.1 +

+
+
+

+ Installation of GNOME Maps +

+

+ Install GNOME Maps by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-maps (symlink) +
+
+ Installed Libraries: + libgnome-maps.so +
+
+ Installed Directories: + /usr/lib/gnome-maps and + /usr/share/gnome-maps +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-maps +

+
+

+ is a map application for GNOME +

+
+
+
+
+
+
+
+

+ gnome-nettool-42.0 +

+
+
+
+
+
+

+ Introduction to GNOME Nettool +

+

+ The GNOME Nettool package is + a network information tool which provides GUI interface for + some of the most common command line network tools. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ GNOME Nettool Dependencies +

+
+ Required +
+

+ GTK-3.24.50, itstool-2.0.7, and + libgtop-2.41.3 +

+
+ Runtime Dependencies +
+

+ BIND Utilities-9.20.12, + Nmap-7.98, + Net-tools-2.10, Traceroute-2.1.6, + and Whois-5.6.4 +

+
+
+

+ Installation of GNOME Nettool +

+

+ First, adapt GNOME Nettool + to changes in the ping, + ping6, and netstat utilities: +

+
patch -Np1 -i ../gnome-nettool-42.0-ping_and_netstat_fixes-1.patch
+

+ Then add a fix for newer versions of meson: +

+
sed -i '/merge_file/s/(.*/(/' data/meson.build
+

+ Install GNOME Nettool by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + gnome-nettool +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/gnome-nettool and + /usr/share/help/*/gnome-nettool +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-nettool +

+
+

+ is a network information tool +

+
+
+
+
+
+
+
+

+ gnome-power-manager-43.0 +

+
+
+
+
+
+

+ Introduction to GNOME Power Manager +

+

+ The GNOME Power Manager + package contains a tool used to report on power management on + the system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Power Manager Dependencies +

+
+ Required +
+

+ GTK-3.24.50 and UPower-1.90.9 +

+
+ Optional +
+

+ appstream-glib-0.8.3 and DocBook-utils-0.6.14 +

+
+
+

+ Installation of GNOME Power Manager +

+

+ Install GNOME Power Manager + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-power-statistics +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-power-statistics +

+
+

+ is used to visualize the power consumption of + laptop hardware +

+
+
+
+
+
+
+
+

+ gnome-screenshot-41.0 +

+
+
+
+
+
+

+ Introduction to GNOME Screenshot +

+

+ The GNOME Screenshot is a + utility used for taking screenshots of the entire screen, a + window or a user-defined area of the screen, with optional + beautifying border effects. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Screenshot Dependencies +

+
+ Required +
+

+ GTK-3.24.50, libcanberra-0.30 + (Compiled with GTK+3 support), and libhandy-1.8.3 +

+
+
+

+ Installation of GNOME Screenshot +

+

+ First, fix building with newer versions of meson: +

+
sed -i '/merge_file/{n;d}' data/meson.build
+

+ Install GNOME Screenshot by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ In order to best run GNOME + Screenshot from the command line, the -i option + needs to be specified. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + gnome-screenshot +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-screenshot +

+
+

+ is used to capture the screen, a window, or a + user-defined area and save the snapshot image to a + file +

+
+
+
+
+
+
+
+

+ gnome-system-monitor-48.1 +

+
+
+
+
+
+

+ Introduction to GNOME System Monitor +

+

+ The GNOME System Monitor + package contains GNOME's + replacement for gtop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME System Monitor Dependencies +

+
+ Required +
+

+ adwaita-icon-theme-48.1, + Gtkmm-4.18.0, itstool-2.0.7, libgtop-2.41.3, libadwaita-1.7.6, + and librsvg-2.61.0 +

+
+ Optional +
+

+ appstream-glib-0.8.3, desktop-file-utils-0.28, + Catch2, and + uncrustify +

+
+
+

+ Installation of GNOME System Monitor +

+

+ First, remove a hard dependency on Catch2, which is only used + if you are running the unit tests: +

+
find . -name meson.build | xargs sed -i -e '/catch2/d' &&
+sed -i '152,162d' src/meson.build
+

+ Install GNOME System Monitor + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            -D systemd=false    \
+            --buildtype=release \
+            ..                  &&
+ninja
+

+ This package comes with a test suite, but it requires the + external Catch2 dependency. If you have Catch2 installed, you + can omit the seds above and then run the tests with + ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D systemd=false: + This switch ensures that gnome-system-monitor does NOT use + the systemd process monitoring framework. Use this option if + you are on a SysV system. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gnome-system-monitor +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/{libexec,share,share/help/*}/gnome-system-monitor +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-system-monitor +

+
+

+ is used to display the process tree and hardware + meters +

+
+
+
+
+
+
+
+

+ gnome-terminal-3.56.0 +

+
+
+
+
+
+

+ Introduction to GNOME Terminal +

+

+ The GNOME Terminal package + contains the terminal emulator for GNOME Desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Terminal Dependencies +

+
+ Required +
+

+ DConf-0.40.0, + gsettings-desktop-schemas-48.0, + itstool-2.0.7, libhandy-1.8.3, + pcre2-10.45, and VTE-0.80.3 +

+
+ Recommended +
+ +
+ Optional +
+

+ appstream-glib-0.8.3 and desktop-file-utils-0.28 +

+
+
+

+ Installation of GNOME Terminal +

+

+ First, fix some deprecated schema entries: +

+
sed -i -r 's:"(/system):"/org/gnome\1:g' src/external.gschema.xml
+

+ Install GNOME Terminal by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install &&
+rm -v /usr/lib/systemd/user/gnome-terminal-server.service
+
+

+ Note +

+

+ To run GNOME Terminal, the + environment variable LANG must + be set to a UTF-8 locale prior to starting the graphical + environment. +

+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D search_provider=false: This + switch disables the “search gnome-shell” provider. Use + this option if you do not have gnome-shell installed. +

+

+ -D nautilus_extension=false: This + switch disables a dependency on the nautilus file manager. Use this option + if you do not have Nautilus installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gnome-terminal +
+
+ Installed Libraries: + /usr/lib/nautilus/extensions-4/libterminal-nautilus.so + (Nautilus Extension) +
+
+ Installed Directories: + /usr/{lib,share/help/*}/gnome-terminal and + /usr/share/xdg-terminals +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-terminal +

+
+

+ is the GNOME + Terminal Emulator +

+
+
+
+
+
+
+
+

+ gnome-weather-48.0 +

+
+
+
+
+
+

+ Introduction to GNOME Weather +

+

+ GNOME Weather is a small + application that allows you to monitor the current weather + conditions for your city, or anywhere in the world, and to + access updated forecasts provided by various internet + services. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GNOME Weather Dependencies +

+
+ Required +
+

+ GeoClue-2.7.2, Gjs-1.84.2, libadwaita-1.7.6, and libgweather-4.4.4 +

+
+ Optional +
+

+ appstream-glib-0.8.3 +

+
+
+

+ Installation of GNOME Weather +

+

+ Install GNOME Weather by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnome-weather +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/org.gnome.Weather +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gnome-weather +

+
+

+ is a small application that allows you to monitor + the current weather conditions anywhere in the + world +

+
+
+
+
+
+
+
+

+ Gucharmap-16.0.2 +

+
+
+
+
+
+

+ Introduction to Gucharmap +

+

+ Gucharmap is a Unicode + character map and font viewer. It allows you to browse + through all the available Unicode characters and categories + for the installed fonts, and to examine their detailed + properties. It is an easy way to find the character you might + only know by its Unicode name or code point. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ Gucharmap Dependencies +

+
+ Required +
+

+ desktop-file-utils-0.28, + gsettings-desktop-schemas-48.0, + GTK-3.24.50, itstool-2.0.7, libarchive-3.8.1, and pcre2-10.45 +

+
+ Recommended +
+ +
+ Optional +
+

+ appstream-glib-0.8.3 and GTK-Doc-1.34.0 +

+
+
+

+ Installation of Gucharmap +

+
+

+ Note +

+

+ This package uses two unversioned downloads. You may want + to rename these to a versioned name, e.g. UCD-16.zip to make upgrades easier. +

+
+

+ Install Gucharmap by running + the following commands: +

+
mkdir build                   &&
+cd    build                   &&
+mkdir ucd                     &&
+pushd ucd                     &&
+  unzip ../../../UCD.zip      &&
+  cp -v ../../../Unihan.zip . &&
+popd                          &&
+
+meson setup --prefix=/usr       \
+            --strip             \
+            --buildtype=release \
+            -D ucd_path=./ucd   \
+            -D docs=false       \
+            ..                  &&
+ninja
+

+ This package does not have a test suite. +

+

+ Now, as the root user: +

+
rm  -fv /usr/share/glib-2.0/schemas/org.gnome.Charmap.enums.xml &&
+ninja install
+
+
+

+ Command Explanations +

+

+ --strip: Although the + package defaults to a release build without debug + information, without this switch there will be some debug + information in the binaries. +

+

+ -D ucd_path=./ucd: + This points to where the extracted main Unicode data files, + and the zipped Unihan archive can be found. +

+

+ rm -fv + /usr/share/glib-2.0/schemas/org.gnome.Charmap.enums.xml: + Old versions of this package installed an obsolete file that + prevents the program from running, as if the main schema has + not been installed. Forcibly removing works even if the old + file is not present. +

+

+ -D docs=false: This + allows the package to build even if gtk-doc has not been installed. Remove + this if you have installed that and wish to build the + documentation. +

+

+ -D gir=false: Use this if you + have not installed GLib-2.84.4 (with GObject Introspection). +

+

+ -D vapi=false: Use this if you + have not installed Vala-0.56.18. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + gucharmap +
+
+ Installed Library: + libgucharmap_2_90.so +
+
+ Installed Directories: + /usr/include/gucharmap-2.90 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gucharmap +

+
+

+ is a Unicode character map and font viewer +

+
+

+ libgucharmap_2_90.so +

+
+

+ contains the Gucharmap API functions +

+
+
+
+
+
+
+
+

+ Seahorse-47.0.1 +

+
+
+
+
+
+

+ Introduction to Seahorse +

+

+ Seahorse is a graphical + interface for managing and using encryption keys. Currently + it supports PGP keys (using GPG/GPGME) and SSH keys. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Seahorse Dependencies +

+
+ Required +
+

+ Gcr-3.41.2, GnuPG-2.4.8, gpgme-2.0.0, itstool-2.0.7, + libhandy-1.8.3, libpwquality-1.4.5, libsecret-0.21.7, and Vala-0.56.18 +

+
+ Recommended +
+ +
+ Optional +
+

+ Avahi-0.8 +

+
+ Runtime Dependency +
+

+ gnome-keyring-48.0 +

+
+
+

+ Installation of Seahorse +

+

+ First, fix a build failure that occurs with gpgme-2.x: +

+
sed -i "/GPGME_EVENT_NEXT_TRUSTITEM/d" pgp/seahorse-gpgme.c
+

+ Install Seahorse by running + the following commands: +

+
sed -i -r 's:"(/apps):"/org/gnome\1:' data/*.xml &&
+
+mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ sed ... + data/*.xml: This command fixes some + deprecated entries in the schema templates. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + seahorse +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/{libexec,share,share/help/*}/seahorse +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ seahorse +

+
+

+ is the graphical interface for managing and using + encryption keys +

+
+
+
+
+
+
+
+

+ Snapshot-48.0.1 +

+
+
+
+
+
+

+ Introduction to Snapshot +

+

+ The Snapshot package + contains a program that takes pictures and videos from a + Webcam. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Snapshot Dependencies +

+
+ Required +
+

+ libadwaita-1.7.6, gst-plugins-bad-1.26.5, and + rustc-1.89.0 +

+
+ Required at runtime +
+

+ libgstgtk4 from + gst-plugins-rs-1.26.5, pipewire-1.4.7, xdg-desktop-portal-gnome-48.0, + and Xdg-user-dirs-0.18 +

+
+
+

+ Installation of Snapshot +

+
+

+ Note +

+

+ This package takes a long time to build because LTO is + enabled, and the LTO pass is not parallelized. +

+
+

+ Install Snapshot by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + snapshot +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/snapshot +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ snapshot +

+
+

+ is a program used to take pictures and videos from + a Webcam +

+
+
+
+
+
+
+
+
+
+

+ Part IX. Xfce +

+
+
+
+
+
+
+
+

+ Chapter 35. Xfce Desktop +

+
+
+
+
+

+ Xfce is a desktop environment that aims to be fast and low on + system resources, while still being visually appealing and user + friendly. +

+

+ Xfce embodies the traditional UNIX philosophy of modularity and + re-usability. It consists of a number of components that provide + the full functionality one can expect of a modern desktop + environment. They are packaged separately and you can pick among + the available packages to create the optimal personal working + environment. +

+

+ Build Xfce core packages in the order presented in the book for + the easiest resolution of dependencies. +

+
+
+
+

+ libxfce4util-4.20.1 +

+
+
+
+
+
+

+ Introduction to libxfce4util +

+

+ The libxfce4util package is + a basic utility library for the Xfce desktop environment. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxfce4util Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (with GObject Introspection) +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of libxfce4util +

+

+ Install libxfce4util by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xfce4-kiosk-query +
+
+ Installed Library: + libxfce4util.so +
+
+ Installed Directories: + /usr/include/xfce4 and + /usr/share/gtk-doc/html/libxfce4util +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xfce4-kiosk-query +

+
+

+ Queries the given capabilities of <module> + for the current user and reports whether the user + has the capabilities or not. This tool is mainly + meant for system administrators to test their Kiosk + setup +

+
+

+ libxfce4util.so +

+
+

+ contains basic utility functions for the + Xfce desktop + environment +

+
+
+
+
+
+
+
+

+ Xfconf-4.20.0 +

+
+
+
+
+
+

+ Introduction to Xfconf +

+

+ Xfconf is the configuration + storage system for Xfce. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfconf Dependencies +

+
+ Required +
+

+ libxfce4util-4.20.1 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 and Vala-0.56.18 +

+
+
+

+ Installation of Xfconf +

+

+ Install Xfconf by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xfconf-query +
+
+ Installed Library: + libxfconf-0.so +
+
+ Installed Directories: + /usr/include/xfce4/xfconf-0, + /usr/lib/xfce4/xfconf, and + /usr/share/gtk-doc/html/xfconf +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xfconf-query +

+
+

+ is a commandline utility to view or change any + setting stored in Xfconf +

+
+

+ libxfconf-0.so +

+
+

+ contains basic functions for Xfce configuration +

+
+
+
+
+
+
+
+

+ libxfce4ui-4.20.2 +

+
+
+
+
+
+

+ Introduction to libxfce4ui +

+

+ The libxfce4ui package + contains GTK+ 3 widgets that + are used by other Xfce + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxfce4ui Dependencies +

+
+ Required +
+

+ GTK-3.24.50 and Xfconf-4.20.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0, libgtop-2.41.3, + libgudev-238, and Glade +

+
+
+

+ Installation of libxfce4ui +

+

+ Install libxfce4ui by + running the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libxfce4kbd-private-{2,3}.so and + libxfce4ui-{1,2}.so +
+
+ Installed Directories: + /etc/xdg/xfce4, + /usr/include/xfce4/libxfce4kbd-private-2, + /usr/include/xfce4/libxfce4ui-{1,2}, and + /usr/share/gtk-doc/html/libxfce4ui +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libxfce4kbd-private-2.so +

+
+

+ is a private Xfce + library for sharing code between Xfwm4 and Xfce4 Settings +

+
+

+ libxfce4ui-1.so +

+
+

+ contains widgets that are used by other + Xfce applications +

+
+
+
+
+
+
+
+

+ Exo-4.20.0 +

+
+
+
+
+
+

+ Introduction to Exo +

+

+ Exo is a support library + used in the Xfce desktop. It + also has some helper applications that are used throughout + Xfce. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Exo + Dependencies +

+
+ Required +
+

+ GTK-3.24.50, libxfce4ui-4.20.2, and libxfce4util-4.20.1 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of Exo +

+

+ Install Exo by running the + following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + exo-desktop-item-edit and + exo-open +
+
+ Installed Libraries: + libexo-2.so +
+
+ Installed Directories: + /usr/include/exo-2 and + /usr/share/gtk-doc/html/exo-2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ exo-desktop-item-edit +

+
+

+ is a command line utility to create or edit icons + on the desktop +

+
+

+ exo-open +

+
+

+ is a command line frontend to the Xfce Preferred Applications + framework. It can either be used to open a list of + urls with the default URL handler or launch the + preferred application for a certain category +

+
+

+ libexo-2.so +

+
+

+ contains additional widgets, a framework for + editable toolbars, light-weight session management + support and functions to automatically synchronise + object properties (based on GObject Binding + Properties) +

+
+
+
+
+
+
+
+

+ Garcon-4.20.0 +

+
+
+
+
+
+

+ Introduction to Garcon +

+

+ The Garcon package contains + a freedesktop.org compliant menu implementation based on + GLib and GIO. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Garcon Dependencies +

+
+ Required +
+

+ libxfce4ui-4.20.2 and GTK-3.24.50 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of Garcon +

+

+ Install Garcon by running + the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgarcon-1.so and + libgarcon-gtk3-1.so +
+
+ Installed Directory: + /usr/include/garcon-1, + /usr/include/garcon-gtk3-1, and + /usr/share/gtk-doc/html/garcon +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgarcon-1.so +

+
+

+ contains functions that provide a freedesktop.org + compliant menu implementation based on GLib and GIO +

+
+
+
+
+
+
+
+

+ libwnck-43.2 +

+
+
+
+
+
+

+ Introduction to libwnck +

+

+ The libwnck package contains + the Window Navigator Construction Kit. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libwnck Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of libwnck +

+

+ Install libwnck by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gtk_doc=true: Use this option + to build the API reference manual. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + wnckprop and + wnck-urgency-monitor +
+
+ Installed Library: + libwnck-3.so +
+
+ Installed Directories: + /usr/include/libwnck-3.0 and + /usr/share/gtk-doc/html/libwnck-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ wnckprop +

+
+

+ is used to print or modify the properties of a + screen/workspace/window, or to interact with it +

+
+

+ libwnck-3.so +

+
+

+ contains functions for writing pagers and task + lists +

+
+
+
+
+
+
+
+

+ xfce4-dev-tools-4.20.0 +

+
+
+
+
+
+

+ Introduction to the Xfce4 Development Tools +

+

+ The Xfce4 Development Tools + are a collection of tools and macros for building some Xfce + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ The + Xfce4 Development Tools Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+
+

+ Installation of the Xfce4 Development Tools +

+

+ Install the Xfce4 Development + Tools by running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xdt-autogen and xdt-csource +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ libxfce4windowing-4.20.4 +

+
+
+
+
+
+

+ Introduction to libxfce4windowing +

+

+ The libxfce4windowing + package contains a windowing concept abstraction library for + X11 and Wayland. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libxfce4windowing Dependencies +

+
+ Required +
+

+ GTK-3.24.50, libdisplay-info-0.3.0, libwnck-43.2 + and xfce4-dev-tools-4.20.0 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of libxfce4windowing +

+

+ Install libxfce4windowing by + running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --enable-x11      \
+            --disable-debug   &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libxfce4windowingui-0 and + libxfce4windowing-0.so +
+
+ Installed Directories: + /usr/include/xfce4/libxfce4windowing, + /usr/include/xfce4/libxfce4windowingui, + /usr/share/gtk-doc/html/libxfce4windowing, and + /usr/share/gtk-doc/html/libxfce4windowingui +
+
+
+
+
+
+
+
+

+ xfce4-panel-4.20.5 +

+
+
+
+
+
+

+ Introduction to Xfce4 Panel +

+

+ The Xfce4 Panel package + contains the Xfce4 Panel. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Panel Dependencies +

+
+ Required +
+

+ Cairo-1.18.4, Exo-4.20.0, Garcon-4.20.0, libwnck-43.2, + and libxfce4windowing-4.20.4 +

+
+ Optional +
+

+ GTK-Doc-1.34.0 and libdbusmenu +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/xfce4-panel +

+
+
+

+ Installation of Xfce4 Panel +

+

+ Install Xfce4 Panel by + running the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-gtk-doc: Use this + parameter if GTK-Doc is + installed and you wish to rebuild and install the API + documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xfce4-panel, + xfce4-popup-applicationsmenu, xfce4-popup-directorymenu, + and xfce4-popup-windowmenu +
+
+ Installed Library: + libxfce4panel-2.0.so +
+
+ Installed Directories: + /etc/xdg/xfce4/panel, + /usr/include/xfce4/libxfce4panel-1.0, + /usr/lib/xfce4/panel, + /usr/share/gtk-doc/html/libxfce4panel-1.0 and + /usr/share/xfce4/panel +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ xfce4-panel +

+
+

+ is the Xfce panel +

+
+

+ xfce4-popup-applicationsmenu +

+
+

+ is a shell script that uses D-Bus and Xfce Panel to display a popup + menu of the installed applications +

+
+

+ xfce4-popup-directorymenu +

+
+

+ is a shell script that uses D-Bus and Xfce Panel to display a popup + menu of your home folder and its subdirectories +

+
+

+ xfce4-popup-windowmenu +

+
+

+ is a shell script that uses DBus to display the + Xfwm4 a popup menu +

+
+

+ libxfce4panel-2.0.so +

+
+

+ contains the Xfce + Panel API functions +

+
+
+
+
+
+
+
+

+ thunar-4.20.4 +

+
+
+
+
+
+

+ Introduction to thunar +

+

+ Thunar is the Xfce file manager, a GTK+ 3 GUI to organise the files on your + computer. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Thunar Dependencies +

+
+ Required +
+

+ Exo-4.20.0 +

+
+ Required (Runtime) +
+

+ hicolor-icon-theme-0.18 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 (for documentation), + Gvfs-1.56.1 (for remote browsing and + automounting), libexif-0.6.25 and tumbler-4.20.0 + (runtime) +

+
+
+

+ Installation of Thunar +

+

+ First prevent the installation of an unneeded systemd file: +

+
sed -i 's/\tinstall-systemd_userDATA/\t/' Makefile.in
+
+

+ Install Thunar by running + the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/thunar-4.20.4 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + Thunar (symlink to thunar), thunar, + and thunar-settings +
+
+ Installed Library: + libthunarx-3.so +
+
+ Installed Directories: + /etc/xdg/Thunar, + /usr/include/thunarx-3, /usr/lib/Thunar, + /usr/lib/thunarx-3, /usr/share/Thunar, + /usr/share/doc/thunar-4.20.4, and + /usr/share/gtk-doc/html/thunarx +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ thunar +

+
+

+ is the Xfce file + manager +

+
+

+ thunar-settings +

+
+

+ is a shell script that launches a dialog box to + allow you to alter the behavior of Thunar +

+
+

+ libthunarx-3.so +

+
+

+ contains the Thunar extension library which + permits adding new features to the Thunar file manager +

+
+
+
+
+
+
+
+

+ thunar-volman-4.20.0 +

+
+
+
+
+
+

+ Introduction to the Thunar Volume Manager +

+

+ The Thunar Volume Manager is + an extension for the Thunar + file manager, which enables automatic management of removable + drives and media. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Thunar Volume Manager Dependencies +

+
+ Required +
+

+ Exo-4.20.0 + and libgudev-238 +

+
+ Recommended +
+ +
+ Recommended Runtime Dependencies +
+ +
+
+

+ Installation of the Thunar Volume Manager +

+

+ Install the Thunar Volume + Manager by running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + thunar-volman and + thunar-volman-settings +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ thunar-volman +

+
+

+ is the Thunar + Volume Manager, a command line utility to + automatically mount or unmount removable media +

+
+

+ thunar-volman-settings +

+
+

+ is a small GTK+ 3 + application for changing Thunar Volume Manager settings +

+
+
+
+
+
+
+
+

+ tumbler-4.20.0 +

+
+
+
+
+
+

+ Introduction to tumbler +

+

+ The Tumbler package contains + a D-Bus thumbnailing service + based on the thumbnail management D-Bus specification. This is useful for + generating thumbnail images of files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Tumbler Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+ Optional +
+

+ cURL-8.15.0, FreeType-2.13.3, + gdk-pixbuf-2.42.12, gst-plugins-base-1.26.5, + GTK-Doc-1.34.0, libjpeg-turbo-3.0.1, libgsf-1.14.53, libpng-1.6.50, Poppler-25.08.0, FFmpegThumbnailer, + libgepub, + and libopenraw +

+
+
+

+ Installation of Tumbler +

+

+ Install Tumbler by running + the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ Finally, remove a systemd unit which is useless on a SysV + system: +

+
rm -fv /usr/lib/systemd/user/tumblerd.service
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + tumblerd +
+
+ Installed Library: + libtumbler-1.so and several under + /usr/lib/tumbler-1/plugins/ +
+
+ Installed Directories: + /etc/xdg/tumbler, + /usr/include/tumbler-1, /usr/lib/tumbler-1 and + /usr/share/gtk-doc/html/tumbler +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ tumblerd +

+
+

+ is a D-Bus service for applications such as Thunar + and Ristretto to use thumbnail images +

+
+

+ libtumbler-1.so +

+
+

+ contains functions that the Tumbler daemon uses to create + thumbnail images +

+
+
+
+
+
+
+
+

+ xfce4-appfinder-4.20.0 +

+
+
+
+
+
+

+ Introduction to Xfce4 Appfinder +

+

+ Xfce4 Appfinder is a tool to + find and launch installed applications by searching the + .desktop files installed on your system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Appfinder Dependencies +

+
+ Required +
+

+ Garcon-4.20.0 +

+
+
+

+ Installation of Xfce4 Appfinder +

+

+ Install Xfce4 Appfinder by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xfce4-appfinder and xfrun4 + (symlink) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xfce4-appfinder +

+
+

+ Is a GTK+ 3 + application that enables you to quickly search + through the .desktop files installed on your system + looking for an application +

+
+
+
+
+
+
+
+

+ xfce4-power-manager-4.20.0 +

+
+
+
+
+
+

+ Introduction to Xfce4 Power Manager +

+

+ The Xfce4 Power Manager is a + power manager for the Xfce + desktop, Xfce power manager + manages the power sources on the computer and the devices + that can be controlled to reduce their power consumption + (such as LCD brightness level or monitor sleep). In addition, + Xfce4 Power Manager provides + a set of freedesktop-compliant DBus interfaces to inform other + applications about current power level so that they can + adjust their power consumption. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Power Manager Dependencies +

+
+ Required +
+

+ libnotify-0.8.6, UPower-1.90.9, and + xfce4-panel-4.20.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ NetworkManager-1.54.0 +

+
+
+

+ Installation of Xfce4 Power Manager +

+

+ Install Xfce4 Power Manager + by running the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xfce4-power-manager, + xfce4-power-manager-settings, xfce4-pm-helper, and + xfpm-power-backlight-helper +
+
+ Installed Libraries: + libxfce4powermanager.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ xfce4-pm-helper +

+
+

+ is a helper program for the suspend and hibernate + functions of xfce4-power-manager +

+
+

+ xfce4-power-manager +

+
+

+ is the Xfce Power + Manager +

+
+

+ xfce4-power-manager-settings +

+
+

+ is a utility that comes with the Xfce Power Manager to + access/change its configuration +

+
+

+ xfpm-power-backlight-helper +

+
+

+ is a command line utility to get or set the + brightness of your screen +

+
+
+
+
+
+
+
+

+ xfce4-settings-4.20.2 +

+
+
+
+
+
+

+ Introduction to Xfce4 Settings +

+

+ The Xfce4 Settings package + contains a collection of programs that are useful for + adjusting your Xfce + preferences. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Settings Dependencies +

+
+ Required +
+

+ Exo-4.20.0 + and Garcon-4.20.0 +

+
+ Required (Runtime) +
+

+ gnome-icon-theme-3.12.0 or + lxde-icon-theme-0.5.1 +

+
+ Recommended +
+ +
+ Optional +
+

+ colord-1.4.8, libinput-1.29.0, and + UPower-1.90.9 +

+
+
+

+ Installation of Xfce4 Settings +

+

+ Install Xfce4 Settings by + running the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-sound-settings: Use this + switch to enable sound settings in GUI. +

+

+ --enable-pluggable-dialogs: Use + this switch to enable support for embedded settings dialogs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xfce4-accessibility-settings, + xfce4-appearance-settings, xfce4-color-settings, + xfce4-display-settings, xfce4-find-cursor, + xfce4-keyboard-settings, xfce4-mime-helper, + xfce4-mime-settings, xfce4-mouse-settings, + xfce4-settings-editor, xfce4-settings-manager and + xfsettingsd +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ xfce4-accessibility-settings +

+
+

+ is a GTK+ 3 GUI to + allow you to change some of your keyboard and mouse + preferences +

+
+

+ xfce4-appearance-settings +

+
+

+ is a GTK+ 3 GUI to + allow you to change some of your theme, icon and + font preferences +

+
+

+ xfce4-display-settings +

+
+

+ is a GTK+ 3 GUI to + allow you to change some of your screen preferences +

+
+

+ xfce4-keyboard-settings +

+
+

+ is a GTK+ 3 GUI to + allow you to change some of your keyboard + preferences +

+
+

+ xfce4-mime-settings +

+
+

+ is a GTK+ 3 GUI to + allow you to change which applications are used to + handle different mime types +

+
+

+ xfce4-mouse-settings +

+
+

+ is a GTK+ 3 GUI to + allow you to change some of your mouse preferences +

+
+

+ xfce4-settings-editor +

+
+

+ is a GTK+ 3 GUI to + allow you to change your preferences stored in + Xfconf +

+
+

+ xfce4-settings-manager +

+
+

+ is a GTK+ 3 GUI to + allow you to change many of your Xfce preferences +

+
+

+ xfsettingsd +

+
+

+ is the Xfce + settings daemon +

+
+
+
+
+
+
+
+

+ Xfdesktop-4.20.1 +

+
+
+
+
+
+

+ Introduction to Xfdesktop +

+

+ Xfdesktop is a desktop + manager for the Xfce Desktop + Environment. Xfdesktop sets + the background image / color, creates the right click menu + and window list and displays the file icons on the desktop + using Thunar libraries. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfdesktop Dependencies +

+
+ Required +
+

+ Exo-4.20.0, libxfce4windowing-4.20.4, and + libwnck-43.2 +

+
+ Recommended +
+ +
+
+

+ Installation of Xfdesktop +

+

+ Install Xfdesktop by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xfdesktop and + xfdesktop-settings +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/backgrounds/xfce and + /usr/share/pixmaps/xfdesktop +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xfdesktop +

+
+

+ is the Xfce + Desktop Environment's desktop manager +

+
+

+ xfdesktop-settings +

+
+

+ is a GTK+ 3 + application that allows you to change your desktop + background, some preferences for the right click + menu and what icons are displayed on the desktop +

+
+
+
+
+
+
+
+

+ Xfwm4-4.20.0 +

+
+
+
+
+
+

+ Introduction to Xfwm4 +

+

+ Xfwm4 is the window manager + for Xfce. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfwm4 Dependencies +

+
+ Required +
+

+ libwnck-43.2 and libxfce4ui-4.20.2 +

+
+ Recommended +
+ +

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/xfwm4 +

+
+
+

+ Installation of Xfwm4 +

+

+ Install Xfwm4 by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xfwm4, xfwm4-settings, + xfwm4-tweaks-settings and xfwm4-workspace-settings +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/xfce4/xfwm4, + /usr/share/themes/{Daloa,Default{,-hdpi,-xhdpi},Kokodi,Moheli}, + and /usr/share/xfwm4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ xfwm4 +

+
+

+ is the Xfce window + manager +

+
+

+ xfwm4-settings +

+
+

+ is a GTK+ 3 + application that allows setting some preferences + such as your theme, keyboard shortcuts and mouse + focus behavior +

+
+

+ xfwm4-tweaks-settings +

+
+

+ is a GTK+ 3 + application that allows setting some more + preferences for Xfwm4 +

+
+

+ xfwm4-workspace-settings +

+
+

+ is a GTK+ 3 + application that allows setting your workspace + preferences +

+
+
+
+
+
+
+
+

+ xfce4-session-4.20.3 +

+
+
+
+
+
+

+ Introduction to Xfce4 Session +

+

+ Xfce4 Session is a session + manager for Xfce. Its task + is to save the state of your desktop (opened applications and + their location) and restore it during a next startup. You can + create several different sessions and choose one of them on + startup. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Session Dependencies +

+
+ Required +
+

+ libwnck-43.2, libxfce4windowing-4.20.4, and + libxfce4ui-4.20.2 +

+
+ Recommended +
+ +
+ Required Runtime +
+

+ Xfdesktop-4.20.1 +

+
+
+

+ Installation of Xfce4 Session +

+

+ Install Xfce4 Session by + running the following commands: +

+
./configure --prefix=/usr       \
+            --sysconfdir=/etc   \
+            --disable-legacy-sm &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-legacy-sm: + This switch disables legacy session management which isn't + necessary on modern system. +

+
+
+

+ Configuring Xfce4 Session +

+

+ There are several optional run time dependencies for + Xfce4: dbus-1.16.2, GnuPG-2.4.8, hicolor-icon-theme-0.18, + OpenSSH-10.0p1, and xinit-1.4.4 +

+

+ When building an Xfce4 + package, some configuration files are installed in + /usr/share/applications, + /usr/share/icons, and + /usr/share/mime. In order to + use those files in your Xfce4 session, you need to update + various databases. Do that by running, as the root user (you need to have the + recommended dependencies installed): +

+
update-desktop-database &&
+update-mime-database /usr/share/mime
+
+
+

+ Starting Xfce4 +

+

+ You can start Xfce4 from + runlevel 3, using xinit-1.4.4, or from runlevel 5, using a + Display Manager, such as lightdm-1.32.0. +

+

+ To start Xfce4 using + xinit-1.4.4, run the following commands: +

+
cat > ~/.xinitrc << "EOF"
+dbus-launch --exit-with-x11 startxfce4
+EOF
+
+startx
+

+ The X session starts on the first unused virtual terminal, + normally vt7. You can switch to another vtn simultaneously pressing the keys + Ctrl-Alt-Fn + (n=1, 2, ...). To + switch back to the X session, normally started at vt7, use + Ctrl-Alt-F7. The vt where the command startx was executed will + display many messages, including X starting messages, + applications automatically started with the session, and + eventually, some warning and error messages. You may prefer + to redirect those messages to a log file, which not only will + keep the initial vt uncluttered, but can also be used for + debugging purposes. This can be done starting X with: +

+
startx &> ~/.x-session-errors
+
+

+ Note +

+

+ You may wish to drop dbus-launch, e.g., just using + startxfce4 in ~/.xinitrc. However some capabilities such as + mounting or umounting file systems from a file manager will + not be possible, or the reboot option will be absent or + inoperative, among other problems. +

+
+

+ When shutting down or rebooting, the shutdown messages appear + on the vt where X was running. If you wish to see those + messages, simultaneously press keys Alt-F7 (assuming that X + was running on vt7). +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + startxfce4, xfce4-session, + xfce4-session-logout, xfce4-session-settings, and + xflock4 +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/lib/xfce4/session +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ startxfce4 +

+
+

+ is a script responsible for starting an + Xfce session. +

+
+

+ xfce4-session +

+
+

+ starts up the Xfce + Desktop Environment +

+
+

+ xfce4-session-logout +

+
+

+ logs out from Xfce +

+
+

+ xfce4-session-settings +

+
+

+ is a GTK+ 3 GUI + which allows you to alter your preferences for your + Xfce Session +

+
+
+
+
+
+
+
+
+

+ Chapter 36. Xfce Applications +

+
+
+
+
+

+ This is a small collection of optional applications that add + extra capabilities to your Xfce + desktop. +

+
+
+
+

+ Parole-4.20.0 +

+
+
+
+
+
+

+ Introduction to Parole +

+

+ Parole is a DVD/CD/music + player for Xfce that uses + GStreamer. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ Although this version of parole works with most files, it + is unable to play DVDs, reporting an error in the gstreamer + backend. +

+
+

+ Package Information +

+
+ +
+

+ Parole Dependencies +

+
+ Required +
+

+ dbus-glib-0.114, gst-plugins-base-1.26.5, + gst-plugins-good-1.26.5, and + libxfce4ui-4.20.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ GTK-Doc-1.34.0 +

+
+
+

+ Installation of Parole +

+

+ Install Parole by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Using Parole +

+

+ If you have installed Gstreamer Plugins Ugly with support for + libdvdnav and libdvdread and would like to use Parole to play + a DVD, click Media> Open location and enter dvd:// into + the box. +

+

+ Similarly, to play a CD, click Media> Open location and + enter cdda:// into the box. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + parole +
+
+ Installed Libraries: + Two libraries under + /usr/lib/parole-0/ +
+
+ Installed Directories: + /usr/include/parole, + /usr/lib/parole-0 and /usr/share/parole +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ parole +

+
+

+ is a GTK+ 3 media + player that uses GStreamer +

+
+
+
+
+
+
+
+

+ xfce4-terminal-1.1.5 +

+
+
+
+
+
+

+ Introduction to Xfce4 Terminal +

+

+ Xfce4 Terminal is a + GTK+3 terminal emulator. + This is useful for running commands or programs in the + comfort of an Xorg window; you can drag and drop files into + the Xfce4 Terminal or copy + and paste text with your mouse. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Terminal Dependencies +

+
+ Required +
+

+ libxfce4ui-4.20.2 and VTE-0.80.3 +

+
+
+

+ Installation of Xfce4 Terminal +

+

+ Install Xfce4 Terminal by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..      \
+      --prefix=/usr \
+      --buildtype=release &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xfce4-terminal +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/xfce4/terminal +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xfce4-terminal +

+
+

+ is a GTK+ 3 + terminal emulator +

+
+
+
+
+
+
+
+

+ Xfburn-0.8.0 +

+
+
+
+
+
+

+ Introduction to Xfburn +

+

+ Xfburn is a GTK+ 3 GUI frontend for Libisoburn. This is useful for creating + CDs and DVDs from files on your computer or ISO images + downloaded from elsewhere. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfburn Dependencies +

+
+ Required +
+

+ libburn-1.5.6, libisofs-1.5.6, and + libxfce4ui-4.20.2 +

+
+ Optional +
+

+ gst-plugins-base-1.26.5 and + Cdrdao-1.2.5 (runtime) +

+
+
+

+ Installation of Xfburn +

+

+ Install Xfburn by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + xfburn +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/xfburn +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xfburn +

+
+

+ is a GTK+ 3 + application for creating CDs and DVDs +

+
+
+
+
+
+
+
+

+ ristretto-0.13.4 +

+
+
+
+
+
+

+ Introduction to Ristretto +

+

+ Ristretto is a fast and + lightweight image viewer for the Xfce desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Ristretto Dependencies +

+
+ Required +
+

+ libexif-0.6.25 and libxfce4ui-4.20.2 +

+
+ Optional +
+

+ tumbler-4.20.0 (runtime) +

+
+
+

+ Installation of Ristretto +

+

+ Install ristretto by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + ristretto +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ ristretto +

+
+

+ is a fast and lightweight image viewer +

+
+
+
+
+
+
+
+

+ xfce4-notifyd-0.9.7 +

+
+
+
+
+
+

+ Introduction to the Xfce4 Notification Daemon +

+

+ The Xfce4 Notification + Daemon is a small program that implements the + "server-side" portion of the Freedesktop desktop + notifications specification. Applications that wish to pop up + a notification bubble in a standard way can use Xfce4-Notifyd to do so by sending + standard messages over D-Bus + using the org.freedesktop.Notifications interface. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ The + Xfce4 Notification Daemon Dependencies +

+
+ Required +
+

+ libnotify-0.8.6, libxfce4ui-4.20.2, libcanberra-0.30, SQLite-3.50.4, + xfce4-dev-tools-4.20.0, and + xfce4-panel-4.20.5 +

+
+
+

+ Installation of the Xfce4 Notification Daemon +

+

+ Install the Xfce4 Notification + Daemon by running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-systemd &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ You can test the notification daemon with the command + notify-send, to + be run in a graphical environment: +

+
notify-send -i info Information "Hi ${USER}, This is a Test"
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xfce4-notifyd-config +
+
+ Installed Libraries: + libnotification-plugin.so +
+
+ Installed Directories: + /usr/share/themes/Bright/xfce-notify-4.0, + /usr/share/themes/Default/xfce-notify-4.0, + /usr/share/themes/Retro/xfce-notify-4.0, + /usr/share/themes/Smoke/xfce-notify-4.0 and + /usr/share/themes/ZOMG-PONIES!/xfce-notify-4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xfce4-notifyd-config +

+
+

+ is a GTK+ GUI that + allows you to change some of your preferences + (theme and screen position) for the notifications + that the Xfce4 + Notification Daemon displays +

+
+
+
+
+
+
+
+

+ xfce4-pulseaudio-plugin-0.5.1 +

+
+
+
+
+
+

+ Introduction to the Xfce4 Pulseaudio Plugin +

+

+ The Xfce4 Pulseaudio Plugin + is a plugin for the Xfce panel which provides a convenient + way to adjust the audio volume of the PulseAudio sound system + and to an auto mixer tool like pavucontrol. It can optionally + handle multimedia keys for controlling the audio volume. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Xfce4 Pulseaudio Plugin Dependencies +

+
+ Required +
+

+ libnotify-0.8.6, PulseAudio-17.0, + and xfce4-panel-4.20.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ mpris2 +

+
+
+

+ Installation of the Xfce4 Pulseaudio Plugin +

+

+ Install the Xfce4 Pulseaudio + Plugin by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup  --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libpulseaudio-plugin.so +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+
+
+

+ Part X. LXQt +

+
+
+
+
+
+
+
+

+ Chapter 37. LXQt Desktop +

+
+
+
+
+

+ LXQt is an extremely fast-performing and energy-saving desktop + environment. +

+

+ LXQt is a Qt based Desktop Environment. It is focused + on being a classic desktop with a modern look and feel. It can + customize appearance everywhere. The panel(s) have plugins and + settings. It is Window Manager agnostic, has multi-language + support and standard keyboard shortcuts. LXQt uses less CPU and less RAM than most + other environments. It is especially useful for cloud computers + with low hardware specifications, such as netbooks, mobile + devices (e.g. MIDs) or older computers, but can be used with + modern hardware. +

+

+ Build LXQt core packages in the order presented in the book for + the easiest resolution of dependencies. +

+
+
+
+

+ LXQt + Desktop Pre-Install Instructions +

+
+
+
+
+
+

+ Notes about building LXQt dependencies +

+

+ To build LXQt, the following steps are recommended: +

+
+
    +
  1. +

    + First, build the whole Xorg Chapter, including Wayland support + with required and recommended dependencies. Test that + the environment works with twm as the window manager. + With experience, some of the packages can be omitted, + but that is not recommended for first time users. +

    +
  2. +
  3. +

    + Second, build the required parts of Qt. The full + package, Qt-6.9.2 is quite long and has a lot of + dependencies. +

    +
  4. +
  5. +

    + Finally build the LXQt desktop using the pages below in + order. The packages in the applications section are + optional, but as a minimum, qterminal-2.2.1 is recommended. +

    +
  6. +
+
+
+
+
+
+
+

+ KF6, Plasma, and Misc Dependencies +

+
+
+
+
+
+
+
+

+ kwindowsystem-6.17.0 for lxqt +

+
+
+
+
+
+

+ Introduction to kwindowsystem +

+

+ The kwindowsystem provides + information about, and allows interaction with, the windowing + system. It provides a high level API that is windowing system + independent and has platform specific implementations. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the KF6 set of packages. If + KDE + Frameworks-6.17.0 is built, do NOT also build this package + as presented here. +

+
+

+ Package Information +

+
+ +
+

+ kwindowsystem Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0, + plasma-wayland-protocols-1.18.0, + Qt-6.9.2, + and Xorg Libraries +

+
+
+

+ Installation of kwindowsystem +

+

+ Install kwindowsystem by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_TESTING=OFF         \
+      -W no-dev ..                 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libKF6WindowSystem.so +
+
+ Installed Directories: + /usr/include/KF6, + /usr/lib/cmake/KF6WindowSystem, /usr/lib/plugins/kf6, + /usr/lib/qml/org/kde, and + /usr/share/qlogging-categories6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libKF6WindowSystem.so +

+
+

+ contains the KF6 + Windowing API functions +

+
+
+
+
+
+
+
+

+ kconfig-6.17.0 + for lxqt +

+
+
+
+
+
+

+ Introduction to kconfig +

+

+ The kconfig package provides + access to configuration files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the KF6 set of packages. If + KDE + Frameworks-6.17.0 is built, do NOT also build this package + as presented here. +

+
+

+ Package Information +

+
+ +
+

+ kconfig Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0 + and Qt-6.9.2 +

+
+
+

+ Installation of kconfig +

+

+ Install kconfig by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+      -D KDE_INSTALL_USE_QT_SYS_PATHS=ON  \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kreadconfig6 and + kwriteconfig6 +
+
+ Installed Library: + libKF6ConfigCore.so, + libKF6ConfigGui.so, and libKF6ConfigQml.so +
+
+ Installed Directories: + /usr/include/KF6/{KConfigCore,KConfig,KConfigQml,KConfigGui}, + /usr/lib/cmake/KF6Config, /usr/libexec/kf6, and + $QT6DIR/qml/org/kde/config +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ kreadconfig6 +

+
+

+ reads from a configuration file using the KConfig + interface +

+
+

+ kwriteconfig6 +

+
+

+ writes to a configuration file using the KConfig + interface +

+
+

+ libKF6ConfigCore.so +

+
+

+ contains the core configuration library for KF6 +

+
+

+ libKF6ConfigGui.so +

+
+

+ contains functions for a GUI to interface with + KConfig +

+
+

+ libKF6ConfigQml.so +

+
+

+ contains a QML interface to KConfig +

+
+
+
+
+
+
+
+

+ solid-6.17.0 for + lxqt +

+
+
+
+
+
+

+ Introduction to solid +

+

+ Solid is a device + integration framework. It provides a way of querying and + interacting with hardware independently of the underlying + operating system. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the KF6 set of packages. If + KDE + Frameworks-6.17.0 is built, do NOT also build this package + as presented here. +

+
+

+ Package Information +

+
+ +
+

+ solid Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0 + and Qt-6.9.2 +

+
+ Optional (runtime) +
+

+ UDisks-2.10.2, UPower-1.90.9, libimobiledevice, and + media-player-info +

+
+
+

+ Installation of solid +

+

+ Install solid by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+      -D KDE_INSTALL_USE_QT_SYS_PATHS=ON  \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + solid-hardware6 +
+
+ Installed Library: + libKF6Solid.so +
+
+ Installed Directories: + /usr/include/KF6/Solid and + /usr/lib/cmake/KF6Solid +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ solid-hardware6 +

+
+

+ queries hardware information from the system +

+
+

+ libKF6Solid.so +

+
+

+ provides a way of querying and interacting with + hardware independently of the underlying operating + system +

+
+
+
+
+
+
+
+

+ kidletime-6.17.0 for lxqt +

+
+
+
+
+
+

+ Introduction to kidletime +

+

+ KIdleTime is used to report the idle time of users and the + system. It is useful not only for determining the current + idle time of the PC, but also for getting notified upon idle + time events, such as custom timeouts or user activity. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the KF6 set of packages. If + KDE + Frameworks-6.17.0 is built, do NOT also build this package + as presented here. +

+
+

+ Package Information +

+
+ +
+

+ kidletime Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0, + plasma-wayland-protocols-1.18.0, + and Qt-6.9.2 +

+
+
+

+ Installation of kidletime +

+

+ Install kidletime by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+      -D KDE_INSTALL_USE_QT_SYS_PATHS=ON  \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libKF6IdleTime.so +
+
+ Installed Directories: + /usr/include/KF6/KIdleTime, + /usr/lib/cmake/KF6IdleTime, and + $QT6DIR/lib/plugins/kf6/org.kde.kidletime.platforms +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libKF6IdleTime.so +

+
+

+ contains the KDE API for idle time reports +

+
+
+
+
+
+
+
+

+ kwayland-6.4.4 for lxqt +

+
+
+
+
+
+

+ Introduction to kwayland +

+

+ kwayland is a Qt-style API + to interact with the wayland-client and wayland-server API. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the KF6 set of packages. If + KDE + Frameworks-6.17.0 is built, do NOT also build this package + as presented here. +

+
+

+ Package Information +

+
+ +
+

+ kwayland Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0, + Mesa-25.1.8 (built with Wayland-1.24.0 + support), plasma-wayland-protocols-1.18.0, + and Qt-6.9.2 +

+
+
+

+ Installation of kwayland +

+

+ Install kwayland by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+      -D KDE_INSTALL_USE_QT_SYS_PATHS=ON  \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libKWaylandClient.so +
+
+ Installed Directories: + /usr/include/KWayland and + /usr/lib/cmake/KWayland +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libKWaylandClient.so +

+
+

+ contains the wayland-client Qt-style + wrapper library +

+
+
+
+
+
+
+
+

+ libkscreen-6.4.4 for lxqt +

+
+
+
+
+
+

+ Introduction to libkscreen +

+

+ The libkscreen package + contains the KDE Screen Management library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the plasma set of packages. + If Plasma-6.4.4 is built, do + NOT also build + this package as presented here. +

+
+

+ Package Information +

+
+ +
+

+ libkscreen Dependencies +

+
+ Required +
+

+ kwayland-6.4.4 for lxqt, + plasma-wayland-protocols-1.18.0, + and Qt-6.9.2 +

+
+
+

+ Installation of libkscreen +

+

+ Install libkscreen by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_INSTALL_LIBEXECDIR=libexec \
+      -D KDE_INSTALL_USE_QT_SYS_PATHS=ON  \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev ..                        &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ Next, remove a systemd unit which serves no purpose on a SysV + system as the root user: +

+
rm -v /usr/lib/systemd/user/plasma-kscreen.service
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kscreen-doctor +
+
+ Installed Library: + libKF6Screen.so and + libKF6ScreenDpms.so +
+
+ Installed Directories: + /usr/lib/cmake/KF6Screen, + /usr/include/KF6/KScreen, and + $QT6DIR/lib/plugins/kf6/kscreen +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ kscreen-doctor +

+
+

+ allows modifying the screen setup from the command + line +

+
+

+ libKF6Screen.so +

+
+

+ contains the KDE Screen Management library +

+
+

+ libKF6ScreenDpms.so +

+
+

+ contains API functions for handling DPMS +

+
+
+
+
+
+
+
+

+ layer-shell-qt-6.4.4 for lxqt +

+
+
+
+
+
+

+ Introduction to layer-shell-qt +

+

+ This component is meant for applications to be able to easily + use clients based on a "wlr-layer-shell" protocol. Clients + can use this interface to assign the surface_layer role to + wl_surfaces. Such surfaces are assigned to a "layer" of the + output and rendered with a defined z-depth respective to each + other. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package is extracted from the plasma set of packages. + If Plasma-6.4.4 is built, do + NOT also build + this package as presented here. +

+
+

+ Package Information +

+
+ +
+

+ layer-shell-qt Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0 + and Qt-6.9.2 +

+
+
+

+ Installation of layer-shell +

+

+ Install layer-shell-qt by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -W no-dev ..                 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libLayerShellQtInterface.so +
+
+ Installed Directories: + /usr/lib/qml/org/kde/layershell and + /usr/include/LayerShellQt +
+
+
+
+
+
+
+
+

+ muparser-2.3.5 +

+
+
+
+
+
+

+ Introduction to muparser +

+

+ The muparser package is a + fast math parser library for C and C++. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ muparser Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of muparser +

+

+ Install muparser by running + the following commands: +

+
mkdir -v build &&
+cd       build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libmuparser.so +
+
+ Installed Directories: + /usr/lib/cmake/muparser +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ muparser.so +

+
+

+ provides a fast math parser library for C and C++ +

+
+
+
+
+
+
+
+

+ LXQt Desktop Components +

+
+
+
+
+
+
+
+

+ lxqt-build-tools-2.2.1 +

+
+
+
+
+
+

+ Introduction to lxqt-build-tools +

+

+ The lxqt-build-tools package + provides several tools needed to build LXQt itself as well as + other components maintained by the LXQt project. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-build-tools Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and Qt-6.9.2 +

+
+
+

+ Installation of lxqt-build-tools +

+

+ Install lxqt-build-tools by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      .. &&
+
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+rm -f /usr/share/cmake/lxqt2-build-tools/find-modules/FindXCB.cmake
+
+
+

+ Command Explanations +

+

+ rm -f + /usr/share/cmake/lxqt2-build-tools/find-modules/FindXCB.cmake: + If it exists, remove a cmake file from a previous build that + is no longer used. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + lxqt2-transupdate +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/share/cmake/lxqt2-build-tools +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt2-transupdate +

+
+

+ updates translations for LXQt components +

+
+
+
+
+
+
+
+

+ libdbusmenu-lxqt-0.3.0 +

+
+
+
+
+
+

+ Introduction to libdbusmenu-lxqt +

+

+ The libdbusmenu-lxqt package + provides a Qt implementation of the DBusMenu protocol. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libdbusmenu-lxqt Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Optional +
+

+ Doxygen-1.14.0 and qjson +

+
+
+

+ Installation of libdbusmenu-lxqt +

+

+ Install libdbusmenu-lxqt by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -W no-dev ..                 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D WITH_DOC=ON: Use + this switch if you ve installed Doxygen-1.14.0 and want + to build the optional documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libdbusmenu-lxqt.so +
+
+ Installed Directory: + /usr/include/dbusmenu-lxqt and + /usr/lib/cmake/dbusmenu-lxqt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libdbusmen-lxqt.so +

+
+

+ contains a Qt implementation of the DBusMenu + protocol, customized for LXQt +

+
+
+
+
+
+
+
+

+ libqtxdg-4.2.0 +

+
+
+
+
+
+

+ Introduction to libqtxdg +

+

+ The libqtxdg package + contains a Qt implementation of the freedesktop.org XDG + specifications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libqtxdg Dependencies +

+
+ Required +
+

+ CMake-4.1.0, lxqt-build-tools-2.2.1. and + Qt-6.9.2 +

+
+ Optional (runtime) +
+

+ GTK-3.24.50 (for gtk-update-icon-cache) and + xterm-401 +

+
+
+

+ Installation of libqtxdg +

+

+ Install libqtxdg by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..       &&
+
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libQt6Xdg.so, + libQt6XdgIconLoader.so, and libQt6XdgIconPlugin.so (in + $QT6DIR/lib) +
+
+ Installed Directories: + /usr/include/{qt6xdg,qt6xdgiconloader} and + /usr/share/cmake/{qt6xdg,qt6xdgiconloader} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libQt6Xdg.so +

+
+

+ contains an implementation of the XDG specification + for Qt +

+
+

+ libQt6XdgIconLoader.so +

+
+

+ contains the XDG Icon Loader for Qt +

+
+

+ libQt6XdgIconPlugin +

+
+

+ contains a plugin for loading icons using Qt +

+
+
+
+
+
+
+
+

+ lxqt-menu-data-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-menu-data +

+

+ The lxqt-menu-data package + contains compliant menu files for LXQt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-menu-data Dependencies +

+
+ Required +
+

+ lxqt-build-tools-2.2.1 +

+
+
+

+ Installation of lxqt-menu-data +

+

+ Install lxqt-menu-data by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..  &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + None +
+
+ Installed Directories: + /etc/xdg/menus, + /usr/share/desktop-directories, and + /usr/share/cmake/lxqt-menu-data +
+
+
+
+
+
+
+
+

+ liblxqt-2.2.0 +

+
+
+
+
+
+

+ Introduction to liblxqt +

+

+ The liblxqt is the core + utility library for all LXQt + components. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ liblxqt Dependencies +

+
+ Required +
+

+ libqtxdg-4.2.0, kwindowsystem-6.17.0 for + lxqt, and polkit-qt-0.200.0 +

+
+
+

+ Installation of liblxqt +

+

+ Install liblxqt by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-backlight_backend +
+
+ Installed Library: + liblxqt.so +
+
+ Installed Directories: + /usr/include/lxqt, + /usr/share/cmake/lxqt, and /usr/share/lxqt/liblxqt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lxqt-backlight_backend +

+
+

+ sets the backlight level for a display +

+
+

+ liblxqt.so +

+
+

+ contains a variety of utility functions for LXQt +

+
+
+
+
+
+
+
+

+ libsysstat-1.1.0 +

+
+
+
+
+
+

+ Introduction to libsysstat +

+

+ The libsysstat package + contains a library used to query system information and + statistics. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsysstat Dependencies +

+
+ Required +
+

+ lxqt-build-tools-2.2.1 +

+
+
+

+ Installation of libsysstat +

+

+ Install libsysstat by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + libsysstat-qt6.so +
+
+ Installed Directories: + /usr/include/sysstat-qt6 and + /usr/share/cmake/sysstat-qt6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libsysstat-qt6.so +

+
+

+ contains functions to query system information and + statistics +

+
+
+
+
+
+
+
+

+ qtxdg-tools-4.2.0 +

+
+
+
+
+
+

+ Introduction to qtxdg-tools +

+

+ The qtxdg-tools contains a + CLI MIME tool for handling file associations and opening + files with their default applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ qtxdg-tools Dependencies +

+
+ Required +
+

+ libqtxdg-4.2.0 +

+
+
+

+ Installation of qtxdg-tools +

+

+ Install qtxdg-tools by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + qtxdg-mat +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/share/cmake/qtxdg-tools +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ qtxdg-mat +

+
+

+ queries and modifies defaults for applications, + such as the default terminal, web browser, email + client, and file manager +

+
+
+
+
+
+
+
+

+ libfm-extra-1.3.2 +

+
+
+
+
+
+

+ Introduction to libfm-extra +

+

+ The libfm-extra package + contains a library and other files required by the + menu-cache-gen + program in /usr/bin/libexec installed by menu-cache-1.1.1. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libfm-extra Dependencies +

+
+ Required +
+

+ GLib-2.84.4 +

+
+
+

+ Installation of libfm-extra +

+

+ Install libfm-extra by + running the following commands: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --with-extra-only \
+            --with-gtk=no     \
+            --disable-static  &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-extra-only: + This switch disables all components except for the + libfm-extra library. +

+

+ --with-gtk=no: This + switch disables support for GTK+ because it is not necessary for + this package. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libfm-extra.so +
+
+ Installed Directories: + /usr/include/libfm (symlink) and + /usr/include/libfm-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libfm-extra.so +

+
+

+ contains the libfm-extra API functions +

+
+
+
+
+
+
+
+

+ menu-cache-1.1.1 +

+
+
+
+
+
+

+ Introduction to Menu Cache +

+

+ The Menu Cache package + contains a library for creating and utilizing caches to speed + up the manipulation for freedesktop.org defined application + menus. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Menu + Cache Dependencies +

+
+ Required +
+

+ GTK-Doc-1.34.0 and libfm-extra-1.3.2 +

+
+ Optional +
+

+ xdg-utils-1.2.1 +

+
+
+

+ Installation of Menu Cache +

+
sh autogen.sh                              &&
+./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-gtk-doc: Use this option + if GTK-Doc is installed and + you wish to build and install the API documentation. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libmenu-cache.so +
+
+ Installed Directories: + /usr/{include,libexec,share/gtk-doc/html}/menu-cache +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmenu-cache.so +

+
+

+ contains the menu-cache API functions +

+
+
+
+
+
+
+
+

+ libfm-qt-2.2.0 +

+
+
+
+
+
+

+ Introduction to libfm-qt +

+

+ libfm-qt is the Qt port of + libfm, a library providing components to build desktop file + managers. In LXQt, libfm-qt also handles desktop icons and + backgrounds. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libfm-qt Dependencies +

+
+ Required +
+

+ CMake-4.1.0, libexif-0.6.25, + menu-cache-1.1.1, and Qt-6.9.2 +

+
+
+

+ Installation of libfm-qt +

+

+ Install libfm-qt by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libfm-qt6.so +
+
+ Installed Directories: + /usr/include/libfm-qt6, + /usr/share/cmake/fm-qt6, and /usr/share/libfm-qt6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libfm-qt6.so +

+
+

+ contains functions to implement a graphical file + manager as well as set desktop icons and + backgrounds +

+
+
+
+
+
+
+
+

+ lxqt-globalkeys-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-globalkeys +

+

+ The lxqt-globalkeys package + contains a daemon used to register global keyboard shortcuts + as well as an editor for keyboard shortcuts. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-globalkeys Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 +

+
+
+

+ Installation of lxqt-globalkeys +

+

+ Install lxqt-globalkeys by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-config-globalkeyshortcuts and + lxqt-globalkeysd +
+
+ Installed Libraries: + liblxqt-globalkeys.so and + liblxqt-globalkeys-ui.so +
+
+ Installed Directories: + /usr/include/lxqt-globalkeys{,-ui} + and /usr/share/cmake/lxqt-globalkeys{,-ui} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ lxqt-config-globalkeyshortcuts +

+
+

+ is an editor for keyboard shortcuts +

+
+

+ lxqt-globalkeysd +

+
+

+ is the global keyboard shortcut daemon +

+
+

+ lxqt-globalkeys.so +

+
+

+ contains functions to register keyboard shortcuts +

+
+

+ liblxqt-globalkeys-ui.so +

+
+

+ contains functions that allow a UI to set keyboard + shortcuts +

+
+
+
+
+
+
+
+

+ lxqt-qtplugin-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-qtplugin +

+

+ The lxqt-qtplugin package + provides an LXQt + Qt platform integration + plugin. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-qtplugin Dependencies +

+
+ Required +
+

+ libfm-qt-2.2.0, liblxqt-2.2.0, and + libdbusmenu-lxqt-0.3.0 +

+
+
+

+ Installation of lxqt-qtplugin +

+

+ Install lxqt-qtplugin by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libqtlxqt.so (in + $QT6DIR/plugins/platformthemes) +
+
+ Installed Directory: + $QT6DIR/plugins/platformthemes +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libqtlxqt.so +

+
+

+ contains the LXQt QT plugin loader +

+
+
+
+
+
+
+
+

+ lxqt-panel-2.2.2 +

+
+
+
+
+
+

+ Introduction to lxqt-panel +

+

+ The lxqt-panel package + contains a lightweight X11 desktop panel. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-panel Dependencies +

+
+ Required +
+

+ layer-shell-qt-6.4.4 for + lxqt, libdbusmenu-lxqt-0.3.0, + liblxqt-2.2.0, lxqt-globalkeys-2.2.0, lxqt-menu-data-2.2.0, solid-6.17.0 for lxqt, and + menu-cache-1.1.1 +

+
+ Recommended +
+ +
+
+

+ Installation of lxqt-panel +

+

+ Install lxqt-panel by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + lxqt-panel +
+
+ Installed Libraries: + several plugins under + /usr/lib/lxqt-panel +
+
+ Installed Directories: + /usr/lib/lxqt-panel and + /usr/share/lxqt/panel +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt-panel +

+
+

+ is a lightweight Qt6 based panel for the + LXQt Desktop +

+
+
+
+
+
+
+
+

+ pcmanfm-qt-2.2.0 +

+
+
+
+
+
+

+ Introduction to pcmanfm-qt +

+

+ The pcmanfm-qt is a file + manager and desktop icon manager (a Qt port of pcmanfm and libfm). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ pcmanfm-qt Dependencies +

+
+ Required +
+

+ layer-shell-qt-6.4.4 for + lxqt, liblxqt-2.2.0, libfm-qt-2.2.0, and + lxqt-menu-data-2.2.0 +

+
+ Recommended +
+ +
+
+

+ Installation of pcmanfm-qt +

+

+ If libLayerShellQtInterface.so is installed in /opt, help + this package find it. As the root user: +

+
if [   -e /opt/kf6/lib/libLayerShellQtInterface.so -a \
+     ! -e /usr/lib/libLayerShellQtInterface.so ]; then
+
+    ln -sv /opt/kf6/lib/libLayerShellQtInterface.so \
+           /usr/lib/libLayerShellQtInterface.so
+fi
+

+ Install pcmanfm-qt by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ To make pcmanfm-qt easier to + find in menus, adjust the .desktop file. Again, as the + root user: +

+
sed -e '/Categories=/s/=/=System;FileTools;/' \
+    -e '/Name=/s/=.*/=File Manager PCManFM-Qt'/ \
+    -i /usr/share/applications/pcmanfm-qt.desktop
+
+
+

+ Contents +

+
+
+
+ Installed Program: + pcmanfm-qt +
+
+ Installed Library: + None +
+
+ Installed Directories: + /usr/share/pcmanfm-qt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pcmanfm-qt +

+
+

+ is a file manager and desktop icon manager +

+
+
+
+
+
+
+
+

+ lxqt-powermanagement-2.2.1 +

+
+
+
+
+
+

+ Introduction to lxqt-powermanagement +

+

+ The lxqt-powermanagement + package provides the power management module for LXQt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-powermanagement Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0, kidletime-6.17.0 for lxqt, + solid-6.17.0 for lxqt, and + UPower-1.90.9 +

+
+
+

+ Installation of lxqt-powermanagement +

+

+ Install lxqt-powermanagement + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-config-powermanagement and + lxqt-powermanagement +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lxqt-config-powermanagement +

+
+

+ is the lxqt-powermanagement + GUI configuration tool +

+
+

+ lxqt-powermanagement +

+
+

+ is the LXQt power + management module +

+
+
+
+
+
+
+
+

+ lxqt-runner-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-runner +

+

+ The lxqt-runner package + provides a tool used to launch programs quickly by typing + their names. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-runner Dependencies +

+
+ Required +
+

+ lxqt-globalkeys-2.2.0, kwindowsystem-6.17.0 for + lxqt, and muparser-2.3.5 +

+
+
+

+ Installation of lxqt-runner +

+

+ Install lxqt-runner by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Using lxqt-runner +

+

+ To use lxqt-runner, + simultaneously press the Alt-F2 keys. A dialog window appears + in the top center of the screen. When you start typing a + command, a list of possible matches appears and changes as + you keep typing. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + lxqt-runner +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt-runner +

+
+

+ launches a graphical dialog box for quickly running + a program +

+
+
+
+
+
+
+
+

+ lxqt-themes-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-themes +

+

+ The lxqt-themes package + provides a number of graphics files and themes for the + LXQt desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-themes Dependencies +

+
+ Required +
+

+ lxqt-build-tools-2.2.1 +

+
+
+

+ Installation of lxqt-themes +

+

+ Install lxqt-themes by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/lxqt/{graphics,themes,palettes,wallpapers} +
+
+
+
+
+
+
+
+

+ lxqt-admin-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-admin +

+

+ The lxqt-admin package + provides two GUI tools to adjust settings of the operating + system LXQt is running on. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-admin Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 and Polkit-126 +

+
+
+

+ Installation of lxqt-admin +

+

+ Install lxqt-admin by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + lxqt-admin-time, lxqt-admin-user, + and lxqt-admin-user-helper +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lxqt-admin-time +

+
+

+ is a GUI to adjust the current time and date +

+
+

+ lxqt-admin-user +

+
+

+ is a GUI to manage users and groups +

+
+
+
+
+
+
+
+

+ lxqt-about-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-about +

+

+ The lxqt-about package + provides the standalone LXQt + “About” + dialog. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-about Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 +

+
+
+

+ Installation of lxqt-about +

+

+ Install lxqt-about by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + lxqt-about +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt-about +

+
+

+ is the LXQt + “About” dialog +

+
+
+
+
+
+
+
+

+ lxqt-config-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-config +

+

+ The lxqt-config package + provides the LXQt + Configuration Center. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-config Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0, kconfig-6.17.0 for lxqt, + libkscreen-6.4.4 for lxqt, + and xorg-libinput-1.5.0 +

+
+
+

+ Installation of lxqt-config +

+

+ Install lxqt-config by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-config, + lxqt-config-appearance, lxqt-config-brightness, + lxqt-config-file-associations, lxqt-config-input, + lxqt-config-locale, and lxqt-config-monitor +
+
+ Installed Library: + liblxqt-config-cursor.so +
+
+ Installed Directories: + /usr/lib/lxqt-config +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ lxqt-config +

+
+

+ is the LXQt + Configuration Center +

+
+

+ lxqt-config-appearance +

+
+

+ is used to change system themes, icon themes, and + fonts used by applications in an LXQt session +

+
+

+ lxqt-config-brightness +

+
+

+ configures the brightness setting of a monitor +

+
+

+ lxqt-config-file-associations +

+
+

+ is used to associate filetypes with programs +

+
+

+ lxqt-config-input +

+
+

+ is used to configure input devices, setting options + such as the mouse speed, the cursor, the keyboard + speed, and the keyboard layout +

+
+

+ lxqt-config-locale +

+
+

+ configures the locale used in LXQt sessions +

+
+

+ lxqt-config-monitor +

+
+

+ is a graphical frontend to xrandr that configures + monitors on a system +

+
+

+ liblxqt-config-cursor.so +

+
+

+ contains the liblxqt-config-cursor API + functions +

+
+
+
+
+
+
+
+

+ lxqt-policykit-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-policykit +

+

+ The lxqt-policykit package + is the LXQt PolicyKit agent. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-policykit Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 and polkit-qt-0.200.0 +

+
+
+

+ Installation of lxqt-policykit +

+

+ Install lxqt-policykit by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + lxqt-policykit-agent +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/lxqt/translations/lxqt-policykit-agent +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt-policykit-agent +

+
+

+ is the LXQt + PolicyKit agent +

+
+
+
+
+
+
+
+

+ lxqt-sudo-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-sudo +

+

+ The lxqt-sudo package is a + graphical front end to sudo + and su respectively. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-sudo Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 +

+
+
+

+ Installation of lxqt-sudo +

+

+ Install lxqt-sudo by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxdoas (symlinkk to lxqt-sudo), + lxqt-sudo, lxsu (symlinkk to lxqt-sudo), and lxsudo + (symlinkk to lxqt-sudo) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/lxqt/translations/lxqt-sudo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ lxdoas +

+
+

+ is a graphical frontend for doas +

+
+

+ lxqt-sudo +

+
+

+ is a graphical frontend for sudo +

+
+

+ lxsudo +

+
+

+ is a graphical frontend for sudo +

+
+

+ lxsu +

+
+

+ is a graphical frontend for su +

+
+
+
+
+
+
+
+

+ lxqt-openssh-askpass-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-openssh-askpass +

+

+ The lxqt-openssh-askpass + package is a GUI to query credentials on behalf of other + programs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-openssh-askpass Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 +

+
+
+

+ Installation of lxqt-openssh-askpass +

+

+ Install lxqt-openssh-askpass + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-openssh-askpass +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/lxqt/translations/lxqt-openssh-askpass +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt-config-openssh-askpass +

+
+

+ queries a user for credentials on behalf of another + program +

+
+
+
+
+
+
+
+

+ lxqt-session-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-session +

+

+ The lxqt-session package + contains the default session manager for LXQt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-session Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0, qtxdg-tools-4.2.0, and Xdg-user-dirs-0.18 +

+
+
+

+ Installation of lxqt-session +

+

+ Install lxqt-session by + running the following commands: +

+
sed -e '/TryExec/s|=|=/usr/bin/|' \
+    -i xsession/lxqt.desktop.in &&
+
+mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -e + '/TryExec/s|=|='/usr'/bin/|' -i + xsessions/lxqt.desktop.in: If you are using a + display manager, the full path of the “TryExec” directive + has to be given so that the LXQt desktop will appear in the sessions + list. +

+
+
+

+ Configuring lxqt-session +

+

+ Window Managers other than openbox-3.6.1 may be used, e.g. + Xfwm4-4.20.0. Please note that IceWM-3.8.2 is + not a good substitute. Fluxbox does work, although in this + context (with lxqt-config-2.2.0), openbox-3.6.1 is + better. The configuration file /usr/share/lxqt/windowmanagers.conf comes + with many examples of Window Managers and the ones which are + installed will appear in a drop down list of lxqt-config-session. For + the ones not included in /usr/share/lxqt/windowmanagers.conf, you + can use lxqt-config-session's + "search" button, e.g. for Fluxbox-1.3.7, navigating through + the file system until you can choose fluxbox. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-config-session, lxqt-leave, + lxqt-session, and startlxqt +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/lxqt/translations/lxqt-{leave,config-session,session} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ lxqt-config-session +

+
+

+ is a GUI configuration tool for lxqt-session +

+
+

+ lxqt-leave +

+
+

+ is a graphical dialog to terminate the session +

+
+

+ lxqt-session +

+
+

+ is a lightweight X session manager +

+
+

+ startlxqt +

+
+

+ is used to start the desktop session for + LXQt +

+
+
+
+
+
+
+
+

+ xdg-desktop-portal-lxqt-1.2.0 +

+
+
+
+
+
+

+ Introduction to xdg-desktop-portal-lxqt +

+

+ xdg-desktop-portal-lxqt is a + backend for xdg-desktop-portal, that is using the Qt + library. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdg-desktop-portal-lxqt Dependencies +

+
+ Required +
+

+ libfm-qt-2.2.0, kwindowsystem-6.17.0 for + lxqt, and xdg-desktop-portal-1.20.3 (at + runtime) +

+
+
+

+ Installation of xdg-desktop-portal-lxqt +

+

+ Install xdg-desktop-portal-lxqt by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + xdg-desktop-portal-lxqt (in + /usr/libexec) +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/share/xdg-desktop-portal (if + no other xdg-desktop-portal backend is + installed) +
+
+
+
+
+
+
+
+

+ obconf-qt-0.16.5 +

+
+
+
+
+
+

+ Introduction to obconf-qt +

+

+ The obconf-qt package is a + Qt-based configuration tool for Openbox. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ obconf-qt Dependencies +

+
+ Required +
+

+ hicolor-icon-theme-0.18, + lxqt-build-tools-2.2.1, + openbox-3.6.1, and Qt-6.9.2 +

+
+
+

+ Installation of obconf-qt +

+

+ Install obconf-qt by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + obconf-qt +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ obconf-qt +

+
+

+ is a Qt-based configuration tool for Openbox +

+
+
+
+
+
+
+
+

+ LXQt + Desktop Final Instructions +

+
+
+
+
+
+

+ Post-Install Instructions +

+

+ Please follow these instructions before starting LXQt for the first time. +

+

+ Dependencies to Start LXQt +

+
+ Required +
+

+ openbox-3.6.1, or another window manager, + such as Xfwm4-4.20.0, or kwin from Plasma-6.4.4. Note that IceWM-3.8.2 is not + suitable for LXQt. +

+
+ Recommended +
+ +
+ Optional +
+

+ lightdm-1.32.0 or another Display + Manager, e.g. sddm-0.21.0, or XScreenSaver-6.12 +

+
+
+

+ Final Configuration +

+
+
+
+
+

+ LXQt Final Database Updates +

+
+
+
+

+ The desktop databases need to be created or updated at this + point. Run the following commands as the root user: +

+
ldconfig                             &&
+update-mime-database /usr/share/mime &&
+xdg-icon-resource forceupdate        &&
+update-desktop-database -q
+
+
+
+

+ Starting LXQt +

+

+ You can start LXQt from + runlevel 3, using xinit-1.4.4, or from runlevel 5, using a + Display Manager, such as lightdm-1.32.0. +

+

+ To start LXQt using + xinit-1.4.4, run the following commands: +

+
cat > ~/.xinitrc << "EOF"
+exec startlxqt
+EOF
+
+startx
+

+ The X session starts on the first unused virtual terminal, + normally vt1. You can switch to another vtn by simultaneously pressing the + keys Ctrl-Alt-Fn + (n=2, 3, ...). To + switch back to the X session, normally started at vt1, use + Ctrl-Alt-F1. The vt where the command startx was executed will + display many messages, including X starting messages, + applications automatically started with the session, and + eventually, some warning and error messages, but these are + hidden by the graphical interface. You may prefer to redirect + those messages to a log file, which can be used for debugging + purposes. This can be done starting X with: +

+
startx &> ~/.x-session-errors
+
+
+

+ Initial Configuration +

+

+ When LXQt first starts, it will ask you for the window + manager to use. To start, the BLFS editors recommend using + openbox. At this point both + the background and the panel will be black. Right clicking on + the background will bring up a menu and selecting "Desktop + Preferences" will allow you to change the background color or + set a background image. +

+

+ The panel will be at the bottom of the screen. Right clicking + on the panel will bring up a menu that will allow you to + customize the panel including adding widgets and setting the + background color. The BLFS editors recommend installing, at a + minimum, the Application Manager and Task Manager widgets. +

+

+ After LXQt has started for the first time, the BLFS editors + recommend going through the settings presented in the LXQt + Configuration Center, which can be found under LXQt Settings + in the Preferences menu of the application launcher. +

+
+

+ Note +

+

+ The user configuration files will be created in the + directory $HOME/.config/lxqt/. To get widget icons to + display properly, the lxqt.conf file may need to be + manually edited to include the line "icon_theme=oxygen". +

+
+
+
+
+
+
+
+

+ Chapter 38. LXQt Applications +

+
+
+
+
+

+ This is a small collection of optional applications that add + extra capabilities to the LXQt + desktop. +

+
+
+
+

+ lximage-qt-2.2.0 +

+
+
+
+
+
+

+ Introduction to lximage-qt +

+

+ The lximage-qt package + contains a lightweight image viewer and screenshot program. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lximage-qt Dependencies +

+
+ Required +
+

+ libfm-qt-2.2.0 +

+
+
+

+ Installation of lximage-qt +

+

+ Install lximage-qt by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have xdg-utils-1.2.1 installed, as the + root user, run xdg-icon-resource forceupdate --theme + hicolor. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + lximage-qt +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/lximage-qt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lximage-qt +

+
+

+ is a lightweight image viewer and screenshot + program. There is a menu entry in Utilities for the + screenshot program. From the command line, you can + obtain a full screen or window shot by running + lximage-qt + --screenshot +

+
+
+
+
+
+
+
+

+ lxqt-archiver-1.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-archiver +

+

+ The lxqt-archiver package is + a simple and lightweight desktop-agnostic Qt file archiver. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-archiver Dependencies +

+
+ Required +
+

+ libfm-qt-2.2.0, liblxqt-2.2.0, and + JSON-GLib-1.10.6 +

+
+
+

+ Installation of lxqt-archiver +

+

+ Install lxqt-archiver by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-archiver +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/lxqt-archiver +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ lxqt-archiver +

+
+

+ is a Qt-based file archiver +

+
+
+
+
+
+
+
+

+ lxqt-notificationd-2.2.0 +

+
+
+
+
+
+

+ Introduction to lxqt-notificationd +

+

+ The lxqt-notificationd + package is the LXQt + notification daemon. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ lxqt-notificationd Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 +

+
+
+

+ Installation of lxqt-notificationd +

+

+ Install lxqt-notificationd + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lxqt-config-notificationd and + lxqt-notificationd +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/lxqt/translations/lxqt-config-notificationd + and + /usr/share/lxqt/translations/lxqt-notificationd +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ lxqt-config-notificationd +

+
+

+ is the lxqt-notificationd + GUI configuration tool +

+
+

+ lxqt-notificationd +

+
+

+ is the LXQt + notification daemon +

+
+
+
+
+
+
+
+

+ pavucontrol-qt-2.2.0 +

+
+
+
+
+
+

+ Introduction to pavucontrol-qt +

+

+ pavucontrol-qt is the Qt + port of the volume control utility pavucontrol, which is used + to adjust audio levels in Pulseaudio. It is desktop + environment agnostic. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ pavucontrol-qt Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 and PulseAudio-17.0 + (built with GLib-2.84.4 support) +

+
+
+

+ Installation of pavucontrol-qt +

+

+ Install pavucontrol-qt by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + pavucontrol-qt +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/pavucontrol-qt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pavucontrol-qt +

+
+

+ is a Qt based GUI configuration tool for sound + settings using pulseaudio +

+
+
+
+
+
+
+
+

+ qps-2.11.1 +

+
+
+
+
+
+

+ Introduction to qps +

+

+ The qps package contains a + Qt process manager. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ qps + Dependencies +

+
+ Required +
+

+ liblxqt-2.2.0 +

+
+
+

+ Installation of qps +

+

+ Install qps by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      ..                           &&
+
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have xdg-utils-1.2.1 installed, as the + root user, run xdg-icon-resource forceupdate --theme + hicolor. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + qps +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/qps +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ qps +

+
+

+ is a Qt-based process manager +

+
+
+
+
+
+
+
+

+ qtermwidget-2.2.0 +

+
+
+
+
+
+

+ Introduction to qtermwidget +

+

+ As the name suggests, the qtermwidget package is a terminal widget + for Qt. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ qtermwidget Dependencies +

+
+ Required +
+

+ Qt-6.9.2 +

+
+
+

+ Installation of qtermwidget +

+

+ Install qtermwidget by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libqtermwidget6.so +
+
+ Installed Directories: + /usr/include/qtermwidget6, + /usr/lib/cmake/qtermwidget6, and + /usr/share/qtermwidget6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libqtermwidget6.so +

+
+

+ provides a terminal widget for Qt6 +

+
+
+
+
+
+
+
+

+ qterminal-2.2.1 +

+
+
+
+
+
+

+ Introduction to qterminal +

+

+ The qterminal package + contains a Qt widget based terminal emulator for Qt with support for multiple tabs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ qterminal Dependencies +

+
+ Required +
+

+ qtermwidget-2.2.0 +

+
+
+

+ Installation of qterminal +

+

+ Install qterminal by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + qterminal +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/qterminal +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ qterminal +

+
+

+ is a Qt based + lightweight terminal emulator +

+
+
+
+
+
+
+
+

+ screengrab-3.0.0 +

+
+
+
+
+
+

+ Introduction to screengrab +

+

+ The screengrab package is a + cross-platform tool for making screenshots quickly. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ screengrab Dependencies +

+
+ Required +
+

+ lxqt-build-tools-2.2.1, + kwindowsystem-6.17.0 for + lxqt, and libqtxdg-4.2.0 +

+
+
+

+ Installation of screengrab +

+

+ Install screengrab by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      ..                           &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have xdg-utils-1.2.1 installed, as the + root user, run xdg-icon-resource forceupdate --theme + hicolor. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + screengrab +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/screengrab and + /usr/share/doc/screengrab +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ screengrab +

+
+

+ is a cross platform tool for creating screenshots + quickly +

+
+
+
+
+
+
+
+
+
+

+ Part XI. X Software +

+
+
+
+
+
+
+
+

+ Chapter 39. Office Programs +

+
+
+
+
+

+ This chapter is a collection of programs that are useful for + viewing or editing office documents. Some specialise in doing one + thing (such as word processing or manipulating a spreadsheet). + LibreOffice is a suite of + programs that can manipulate many different formats including + powerpoint presentations. +

+
+
+
+

+ Gnumeric-1.12.59 +

+
+
+
+
+
+

+ Introduction to Gnumeric +

+

+ The Gnumeric package + contains a spreadsheet program which is useful for + mathematical analysis. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gnumeric Dependencies +

+
+ Required +
+

+ GOffice-0.10.59 and itstool-2.0.7 +

+
+ Recommended Runtime +
+ +
+ Optional +
+

+ DConf-0.40.0 (to + prevent some test failures), GLib-2.84.4 (with GObject + Introspection), PyGObject-3.52.3, Valgrind-3.25.1 + (for some tests), dblatex (for PDF + docs), libgda, Mono, pxlib, and + Psiconv +

+
+
+

+ Installation of Gnumeric +

+

+ Install Gnumeric by running + the following commands: +

+
./configure --prefix=/usr  &&
+make
+

+ This package must be installed before the test suite is run. +

+

+ Now, as the root user: +

+
make install
+

+ To run the tests, issue make + check. Tests should be run from an active X + session, and DConf-0.40.0 should + be installed to prevent some failures. Two tests are known to + fail. Additional failures may occur if valgrind is installed. +

+
+
+

+ Command Explanations +

+

+ --enable-pdfdocs: Use this switch + if you have installed dblatex and wish to create PDF docs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gnumeric (symlink), + gnumeric-1.12.59, ssconvert, ssdiff, ssgrep, and + ssindex +
+
+ Installed Libraries: + libspreadsheet.so +
+
+ Installed Directories: + /usr/include/libspreadsheet-1.12, + /usr/lib/gnumeric, + /usr/lib/goffice/0.10/plugins/gnumeric, + /usr/share/gnumeric, and + /usr/share/help/{C,cs,de,es}/gnumeric +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gnumeric +

+
+

+ is a symlink to gnumeric-1.12.59 +

+
+

+ gnumeric-1.12.59 +

+
+

+ is GNOME's + spreadsheet application +

+
+

+ ssconvert +

+
+

+ is a command line utility to convert spreadsheet + files between various spreadsheet file formats +

+
+

+ ssdiff +

+
+

+ is a command line utility to compare two + spreadsheets +

+
+

+ ssgrep +

+
+

+ is a command line utility to search spreadsheets + for strings +

+
+

+ ssindex +

+
+

+ is a command line utility to generate index data + for spreadsheet files +

+
+

+ libspreadsheet.so +

+
+

+ contains the gnumeric API functions +

+
+
+
+
+
+
+
+

+ LibreOffice-25.8.1 +

+
+
+
+
+
+

+ Introduction to LibreOffice +

+

+ LibreOffice is a + full-featured office suite. It is largely compatible with + Microsoft Office and is + descended from OpenOffice.org. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Core Download: + https://download.documentfoundation.org/libreoffice/src/25.8.1/libreoffice-25.8.1.1.tar.xz +

    +
  • +
  • +

    + Core Download MD5 sum: 0d823a106e573b69dfd7e3bfba7ea920 +

    +
  • +
  • +

    + Core Download size: 273 MB +

    +
  • +
  • +

    + Estimated disk space required: 11 GB including the + additional files if downloaded during the build (778 MB + installed). Installing the whole set of languages + requires more than 25 GB (around 3 GB installed) +

    +
  • +
  • +

    + Estimated build time: 23 SBU with parallelism=8 (will + vary due to download time) +

    +
  • +
+
+

+ Additional Downloads +

+
+

+ Note +

+

+ Around 80 smallish tarballs and zip files will be + downloaded during the build. The download time will vary + with the local internet speed and server load. The download + time is about 3 minutes on a fiber connection and probably + not much more than 10 minutes on an ADSL connection. If you + have not installed one or more of the following + dependencies, they will also be downloaded during the + build. +

+
+
+ +
+

+ LibreOffice Dependencies +

+
+ Required +
+

+ Archive-Zip-1.68, libarchive-3.8.1, Wget-1.25.0, Which-2.23, and Zip-3.0 +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+ Recommended +
+
+

+ Note +

+

+ Most of these packages are recommended because if they're + not installed, the build process will compile and install + its own (often older) version, with the side effect of + increasing both build and installed disk space along with + increasing build time. +

+
+ +
+ Optional +
+

+ Abseil-cpp-20250814.0, Avahi-0.8, + BlueZ-5.83, DConf-0.40.0, + desktop-file-utils-0.28, + Doxygen-1.14.0 (not relevant if using + --disable-odk), evolution-data-server-3.56.2, + GDB-16.3, + GnuTLS-3.8.10, GTK-4.18.6, KDE + Frameworks-6.17.0, libpaper-2.2.6, MariaDB-11.8.3 or + MySQL, + MIT Kerberos V5-1.22.1, + NASM-2.16.03, Qt-6.9.2, SANE-1.4.0, Valgrind-3.25.1, + VLC-3.0.21, zxing-cpp-2.3.0, + BeanShell, box2d, + CoinMP, Cppunit, + Dragonbox, + Firebird, frozen, + hamcrest, + Hunspell, Hyphen, + Java-WebSocket, + jfreereport, + jq, junit4, + libabw, + libcdr, + libcmis, + libebook, + libeot, libepubgen, + + libetonyek, libexttextcat, + libfixmath, + + libfreehand, liblangtag, + libmspub, + libmwaw, + libnumbertext, + libodfgen, + + libpagemaker, libqxp, + librevenge + (WordPerfect Document importer), libstaroffice, + libvisio, + libwpd, libwpg, + libwps, + libzmf, + lp_solve, mdds, + MyThes, + odfvalidator, + officeotron, + Orcus, rhino, and + suitesparse + (colamd) +

+

+ There are many optional dependencies not listed here. They + can be found in the download.lst file in the sources directory. +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/libreoffice +

+
+
+

+ Installation of LibreOffice +

+

+ Next, fix a problem with detecting Boost::System, which was + changed from a library to a series of headers in + Boost-1.89.0: +

+
export boost_cv_lib_system=yes
+

+ Next, fix a bug with linking to zlib, fix a bug which would + cause an install failure, and prevent compression of man + pages: +

+
sed -i '/icuuc \\/a zlib\\'           writerperfect/Library_wpftdraw.mk &&
+sed -i "/distro-install-file-lists/d" Makefile.in                       &&
+sed -e "/gzip -f/d"   \
+    -e "s|.1.gz|.1|g" \
+    -i bin/distro-install-desktop-integration
+

+ If you have downloaded the dictionaries, help and + translations tarballs, create symlinks to them from the + source directory so they won't get downloaded again: +

+
install -dm755 external/tarballs &&
+ln -sv ../../../libreoffice-dictionaries-25.8.1.1.tar.xz external/tarballs/ &&
+ln -sv ../../../libreoffice-help-25.8.1.1.tar.xz         external/tarballs/ &&
+ln -sv ../../../libreoffice-translations-25.8.1.1.tar.xz external/tarballs/
+

+ The instructions in the package unpack some tarballs into a + location it cannot find later. Create some symlinks to help + the build system out: +

+
ln -sv src/libreoffice-help-25.8.1.1/helpcontent2/ &&
+ln -sv src/libreoffice-dictionaries-25.8.1.1/dictionaries/ &&
+ln -sv src/libreoffice-translations-25.8.1.1/translations/
+
+

+ Note +

+

+ During the build process, some packages will be downloaded + (including the ones listed as recommended and optional + dependencies) if they are not present on the system. + Because of this, build time may vary from the published + time more than usual. +

+
+

+ Due to the large size of the package, you may prefer to + install it in /opt, instead of + /usr. Depending on your choice, + replace <PREFIX> by + /usr or by /opt/libreoffice-25.8.1.1: +

+
export LO_PREFIX=<PREFIX>
+

+ Locales "fr" and "en-GB", you will find below, are just + examples; you should change them to suit your needs - you + might want to read the "Command Explanations", further below, + before proceeding. +

+
+

+ Note +

+

+ If you set the ACLOCAL environment variable to support + installing Xorg in /opt, you will need to unset it for this + package. +

+
+

+ If you are building on a 32 bit machine, CFLAGS is set to -Os, which breaks the + build. Prevent this by issuing: +

+
case $(uname -m) in
+   i?86) sed /-Os/d -i solenv/gbuild/platform/LINUX_INTEL_GCC.mk ;;
+esac
+

+ Prepare LibreOffice for + compilation by running the following commands: +

+
./autogen.sh --prefix=$LO_PREFIX         \
+             --sysconfdir=/etc           \
+             --with-vendor=BLFS          \
+             --with-lang='fr en-GB'      \
+             --with-help=html            \
+             --with-myspell-dicts        \
+             --without-junit             \
+             --without-system-dicts      \
+             --disable-dconf             \
+             --disable-odk               \
+             --disable-mariadb-sdbc      \
+             --enable-release-build=yes  \
+             --enable-python=system      \
+             --with-jdk-home=/opt/jdk    \
+             --with-system-boost         \
+             --with-system-clucene       \
+             --with-system-curl          \
+             --with-system-epoxy         \
+             --with-system-expat         \
+             --with-system-glm           \
+             --with-system-gpgmepp       \
+             --with-system-graphite      \
+             --with-system-harfbuzz      \
+             --with-system-icu           \
+             --with-system-jpeg          \
+             --with-system-lcms2         \
+             --with-system-libatomic_ops \
+             --with-system-libtiff       \
+             --with-system-libpng        \
+             --with-system-libxml        \
+             --with-system-libwebp       \
+             --with-system-nss           \
+             --with-system-odbc          \
+             --with-system-openldap      \
+             --with-system-openssl       \
+             --with-system-poppler       \
+             --with-system-postgresql    \
+             --with-system-redland       \
+             --with-system-zlib          \
+             --with-system-zstd
+

+ Build the package: +

+
make build
+

+ Now, as the root user: +

+
make distro-pack-install
+

+ If installed in /opt/libreoffice-25.8.1.1 some additional + steps are necessary. Issue the following commands as the + root user: +

+
if [ "$LO_PREFIX" != "/usr" ]; then
+
+  # This symlink is necessary for the desktop menu entries
+  ln -svf $LO_PREFIX/lib/libreoffice/program/soffice /usr/bin/libreoffice &&
+
+  # Set up a generic location independent of version number
+  ln -sfv $LO_PREFIX /opt/libreoffice
+
+  # Icons
+  mkdir -vp /usr/share/pixmaps
+  for i in $LO_PREFIX/share/icons/hicolor/32x32/apps/*; do
+    ln -svf $i /usr/share/pixmaps
+  done &&
+
+  # Desktop menu entries
+  for i in $LO_PREFIX/lib/libreoffice/share/xdg/*; do
+    ln -svf $i /usr/share/applications/libreoffice-$(basename $i)
+  done &&
+
+  # Man pages
+  for i in $LO_PREFIX/share/man/man1/*; do
+    ln -svf $i /usr/share/man/man1/
+  done
+
+  unset i
+fi
+

+ If you have installed desktop-file-utils-0.28, and + you wish to update the MIME database, issue, as the + root user: +

+
update-desktop-database
+

+ The suite and main modules can be started from the menu. From + a terminal, the suite can be started with the libreoffice command and the + modules with the libreoffice + --<module> + command, respectively, where <module> is one of + base, calc, draw, impress, math, web, or writer. Modules + cannot be started using their shell starting script names + (see "Installed Programs", below), if LO_PREFIX is other than + /usr, unless the $LO_PREFIX/bin directory is appended to the + PATH. +

+
+
+

+ Command Explanations +

+

+ --with-vendor=BLFS: + This switch sets BLFS as the vendor which is mentioned when + you click "About" from the Help menu on the toolbar. +

+

+ --with-lang='fr + en-GB': This switch sets what languages to + support. To list several languages, separate them with a + space. For all languages, use --with-lang=ALL. Note that the translations + file is not needed and won't be downloaded if using only + en-US as a language. +

+
+

+ Note +

+

+ For a list of the available languages, look in solenv/inc/langlist.mk. +

+
+

+ --with-help=html: + Without this switch, the help files are not built. +

+

+ --with-jdk-home=/opt/jdk: This + parameter will silence a warning that the configure script + attempted to find JAVA_HOME automatically (even though that + is passed in the environment). Omit this if you disabled + java. +

+

+ --with-myspell-dicts: + This switch adds myspell dictionaries to the LibreOffice installation set. +

+

+ --with-system-boost: + This switch enables using system boost. From time to time, + recent versions of boost break the build of libreoffice. In + this case, it is possible to use the bundled copy of boost by + removing this flag. +

+

+ --disable-dconf: This + switch disables compiling LibreOffice with the GNOME DConf configuration system + support. +

+

+ --without-junit: This + switch disables the tests for the deprecated HSQLDB driver + which is written in Java. +

+

+ --without-system-dicts: This + switch disables the use of dictionaries from system paths so + that the ones installed by this package are used. +

+

+ --disable-odk: This + switch disables installing the office development kit. Remove + if you want to develop a LibreOffice based application. +

+

+ --disable-mariadb-sdbc: This + switch disables the MariaDB SDBC connector for Libreoffice + Base. Leaving it enabled results in a build failure because + of a problem linking to MIT Kerberos V5-1.22.1. +

+

+ --enable-release-build=yes: + This switch enables a Release Build. LibreOffice can be built as a Release + Build or as a Developer Build, because their default + installation paths and user profile paths are different. + Developer Build displays the words "Dev" and "Beta" in + several places (e.g, menu and splash screen). +

+

+ --enable-python=system: This + switch tells LibreOffice to + use the system installed Python + 3 instead of the bundled one. +

+

+ --with-system-icu: + This switch tells the build system to use the system + installed version of ICU. +

+

+ --with-system-*: + These switches prevent LibreOffice from trying to compile its + own versions of these dependencies. If you've not installed + some of the dependencies, remove the corresponding switches. +

+

+ make + distro-pack-install: This does a normal + install, but if you add a DESTDIR environment variable it + will also install a lot of (text) gid_Module_* files in the + DESTDIR, to help distributions which want to break the + package into parts. +

+

+ --with-parallelism=<count>: + This switch tells LibreOffice to use <count> CPU + cores to compile in parallel. (Do not include literal angle + brackets.) The default is to use all available cores on the + system. +

+

+ --disable-cups: Use this switch + if you don't need printing support. +

+

+ --disable-dbus: Use this switch + if you've not installed D-Bus-1.8.0 or later. It also + disables Bluetooth support and font install via PackageKit. +

+

+ --disable-firebird-sdbc: By + default, the ability to connect to a firebird database is enabled. Add this + switch if you do not need that feature. +

+

+ --disable-gstreamer-1-0: Use this + switch if you have not installed gst-plugins-base-1.26.5. +

+

+ --disable-postgresql-sdbc: This + switch disables compiling LibreOffice with the ability to connect + to a PostgreSQL database. + Use it if you have not installed PostgreSQL and you do not want + LibreOffice to compile its + bundled copy. +

+

+ --disable-skia: Use Cairo-1.18.4 + for rendering instead of skia. +

+

+ --enable-lto: This switch will + enable Link Time Optimization, which results in slightly + smaller libraries (about 40 MB). This is said to make + LibreOffice programs load + faster (and possibly run faster, e.g. when recalculating a + spreadsheet). On an 8-core machine with 16 GB of memory, the + difference in compile times was minimal, but an extra 2 GB + was used for the work files. On machines with fewer + processors or a lack of memory, the compile might be much + slower. +

+

+ --without-java: This switch + disables Java support in + LibreOffice. Java is needed + for the deprecated HSQLDB driver, which allows reading + databases created by other programs or in earlier versions of + libreoffice base. It is also + needed for some optional user interface components. +

+

+ --without-fonts: LibreOffice includes a number of + third-party TrueType fonts. If you have already installed + some or all of the same fonts, you may prefer to use the + system versions. +

+

+ --enable-evolution2: Enables + support for Evolution address books through Evolution Data + Server. Note that Evolution Data Server must be installed for + this feature to function. +

+

+ --enable-qt6: This switch enables + support for integration with Qt6 and the Qt6 theming engine. + If Qt-6.9.2 + is not installed in /usr, the + include and library directories must be specified in the + QT6INC and QT6LIB environment variables. +

+

+ --enable-kf6: This switch enables + KDE/Plasma integration. If Qt-6.9.2 and/or KDE + Frameworks-6.17.0 are not installed in /usr, the include and library directories + must be specified in QT6INC, + QT6LIB, KF6INC, and KF6LIB, + respectively. This includes a style plugin and KIO + integration. +

+

+ --with-system-abseil: This switch + enables using a system version of the Abseil C++ libraries + instead of the bundled copy. Add this switch if Abseil-cpp-20250814.0 is + installed and you want to use it instead of the bundled copy. +

+

+ --with-system-zxing: This switch + enables using a system version of zxing-cpp instead of the + bundled copy. Add this switch if zxing-cpp-2.3.0 is + installed and you want to use it instead of the bundled copy. +

+

+ --enable-gtk4: This switch + enables integration with GTK-4, including the usage of a + GTK-4 file browsing dialog and themes. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + libreoffice, lobase, localc, + lodraw, loffice, lofromtemplate, loimpress, lomath, + loweb, lowriter, soffice and unopkg; several programs + under $LO_PREFIX/lib/libreoffice/program +
+
+ Installed Libraries: + several libraries under + $LO_PREFIX/lib/libreoffice/program +
+
+ Installed Directory: + $LO_PREFIX/lib/libreoffice +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libreoffice + (or soffice) +

+
+

+ is the main libreofice suite (symlink to + $LO_PREFIX/lib/libreoffice/program/soffice) +

+
+

+ lobase +

+
+

+ is the database manager module shell starting + script +

+
+

+ localc +

+
+

+ is the spreadsheet module shell starting script +

+
+

+ lodraw +

+
+

+ is the vector graphics editor and diagramming tool + module shell starting script +

+
+

+ loimpress +

+
+

+ is the (PowerPoint) presentations editor and + displayer module shell starting script +

+
+

+ lomath +

+
+

+ is the mathematical formula editor module shell + starting script +

+
+

+ loweb +

+
+

+ is the HTML editor module shell starting script +

+
+

+ lowriter +

+
+

+ is the word processor module shell starting script +

+
+

+ unopkg +

+
+

+ is a tool to manage LibreOffice extensions from + the command line +

+
+
+
+
+
+
+
+
+

+ Chapter 40. Graphical Web + Browsers +

+
+
+
+
+

+ This chapter contains a wonderful selection of browsers. We hope + you can find one you enjoy using or give them each a trial run. +

+
+
+
+

+ Epiphany-48.5 +

+
+
+
+
+
+

+ Introduction to Epiphany +

+

+ Epiphany is a simple yet + powerful GNOME web browser + targeted at non-technical users. Its principles are + simplicity and standards compliance. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Epiphany Dependencies +

+
+ Required +
+

+ Gcr-4.4.0.1, gnome-desktop-44.3, ISO + Codes-4.18.0, JSON-GLib-1.10.6, libadwaita-1.7.6, libportal-0.9.1, Nettle-3.10.2, and + WebKitGTK-2.48.5 (built with GTK-4) +

+
+ Optional +
+

+ appstream-glib-0.8.3 and Granite +

+
+ Runtime Dependencies +
+

+ gnome-keyring-48.0 (for storing + passwords) and Seahorse-47.0.1 (for managing stored + passwords) +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/epiphany +

+
+
+

+ Installation of Epiphany +

+
+

+ Note +

+

+ If you are upgrading from a epiphany-46 or earlier, remove + some files that will cause a crash at runtime if they are + present as the root user: +

+
+
rm -rf /usr/lib/epiphany
+

+ Install Epiphany by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ If you installed the package to your system using a + “DESTDIR” method, /usr/share/glib-2.0/schemas/gschemas.compiled + was not updated/created. Create (or update) the file using + the following command as the root user: +

+
glib-compile-schemas /usr/share/glib-2.0/schemas
+
+

+ One test would fail if this package is not installed, so it's + better to run the test suite after installation. To test the + results, issue ninja + test. The tests must be run from a graphical + session. +

+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + epiphany +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/{lib,libexec,share,share/help/*}/epiphany +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ epiphany +

+
+

+ is a GNOME web + browser based on the WebKit2 rendering engine +

+
+
+
+
+
+
+
+

+ falkon-25.08.0 +

+
+
+
+
+
+

+ Introduction to falkon +

+

+ Falkon is a KDE web browser + using the QtWebEngine rendering engine. It was previously + known as QupZilla. It aims + to be a lightweight web browser available through all major + platforms. +

+

+ Although falkon is now part + of KDE, it can be installed without KDE (with the loss of + kwallet functionality). +

+

+ Falkon relies on QtWebEngine. Please read the warning on that + page. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ falkon Dependencies +

+
+ Required +
+

+ extra-cmake-modules-6.17.0, + KDE + Frameworks-6.17.0 (for karchive), and qtwebengine-6.9.2 +

+
+

+ Note +

+

+ Strictly speaking, only karchive and ki18n are required to + build falkon, but several other packages in KDE + Frameworks-6.17.0 can be used if they are present. To + build only karchive and ki18n, download those packages from + the directory specified in KDE + Frameworks-6.17.0 and use the build instructions on + that page, changing the $KF6_PREFIX to /usr. +

+
+
+ Optional +
+

+ gnome-keyring-48.0, PySide2, and + Shiboken2 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/falkon +

+
+
+

+ Installation of falkon +

+

+ Install falkon by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      .. &&
+
+make
+

+ Tests should be run after installation. +

+

+ Now, as the root user: +

+
make install &&
+ldconfig
+

+ To test the results, issue: make test. All tests should + pass. If any fail, the full results will be in Testing/Temporary/LastTest.log. +

+
+

+ Note +

+

+ When upgrading this package, it is possible that the + contents of the application will remain empty even though + everything else appears to be working properly. In this + case try removing ~/.cache/falkon and restarting the + program. +

+
+

+ If you have installed Pyside2 you will want to examine + hellopython.py + which is in the scripts/ + directory, and perhaps copy it to your home directory. +

+
+

+ Note +

+

+ If you are on a non-x86_64 architecture and run into + problems with missing text, you may wish to export + QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox" + prior to running Falkon. +

+
+
+
+

+ Command Explanations +

+

+ -D BUILD_TESTING=OFF: This will + save a little time and space by not building the test + programs, use this if you do not wish to run the test. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + falkon +
+
+ Installed Library: + libFalkonPrivate.so.3 +
+
+ Installed Directory: + /usr/share/falkon +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ falkon +

+
+

+ is a web browser which uses qtwebengine +

+
+

+ libFalkonPrivate.so.3 +

+
+

+ contains functions used by falkon +

+
+
+
+
+
+
+
+

+ Firefox-140.2.0esr +

+
+
+
+
+
+

+ Introduction to Firefox +

+

+ Firefox is a stand-alone + browser based on the Mozilla + codebase. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package has historically had frequent updates that + address security vulnerabilities. To determine the latest + status check the BLFS + Security Advisories. +

+
+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ The directory name is firefox-140.2.0 +

+

+ Extracting the tarball will reset the permissions of the + current directory to 0755 if you have permission to do + that. If you do this in a directory where the sticky bit is + set, such as /tmp it will end + with error messages: +

+
+

+ tar: .: Cannot utime: Operation not permitted
+ + tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
+ + tar: Exiting with failure status due to previous errors
+

+
+

+ This does finish with non-zero status, but it does + NOT mean there is a + real problem. Do not untar as the root user in a directory where the + sticky bit is set - that will unset it. +

+

+ As with other large packages which use C++ (or rust), the + SBU times to build this vary more widely than you might + expect. The build times will increase significantly if your + machine has to swap. +

+

+ Although upstream prefer to use PulseAudio, for the moment + Alsa can still be used. + Both may need runtime configuration to get sound working. +

+
+

+ Firefox Dependencies +

+
+ Required +
+

+ Cbindgen-0.29.0, GTK-3.24.50, libnotify-0.8.6, libarchive-3.8.1, + LLVM-20.1.8 (with clang, used for bindgen + even if using gcc), nodejs-22.18.0, PulseAudio-17.0 (or + alsa-lib-1.2.14 if you edit the + mozconfig; now deprecated by mozilla), in either case please + read the Configuration Information, Python-3.13.7 (after + installing SQLite-3.50.4), and startup-notification-0.12 +

+
+ Recommended +
+ +
+

+ Note +

+

+ If you don't install recommended dependencies, then + internal copies of those packages will be used. They might + be tested to work, but they can be out of date or contain + security holes. +

+
+
+ Optional +
+

+ cURL-8.15.0, Doxygen-1.14.0, + FFmpeg-7.1.1 (runtime, to play mov, mp3 or + mp4 files), GeoClue-2.7.2 (runtime), liboauth-1.0.3, + libproxy-0.5.10, pciutils-3.14.0 + (runtime), Valgrind-3.25.1, Wget-1.25.0, Wireless + Tools-29, and yasm-1.3.0 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/firefox +

+
+
+

+ Installation of Firefox +

+

+ The configuration of Firefox + is accomplished by creating a mozconfig file containing the desired + configuration options. A default mozconfig is created below. To see the + entire list of available configuration options (and an + abbreviated description of some of them), issue ./mach configure -- --help | + less. You may also wish to review the entire + file and uncomment any other desired options. Create the file + by issuing the following command: +

+
cat > mozconfig << "EOF"
+# If you have a multicore machine, all cores will be used by default.
+
+# If you have installed (or will install) wireless-tools, and you wish
+# to use geolocation web services, comment out this line
+ac_add_options --disable-necko-wifi
+
+# Comment out the following line if you wish not to use Google's Location
+# Service (GLS).  Note that if Geoclue is installed and configured to use
+# GLS (as the BLFS instruction does), Firefox can access GLS via Geoclue
+# anyway.  On the other hand if Geoclue is not installed (or not properly
+# configured) and this line is commented out, the website requiring a
+# location service will not function properly.
+ac_add_options --with-google-location-service-api-keyfile=$PWD/google-key
+
+# If you wish to use libproxy to determine proxy server information, you will
+# need to install the libproxy package and then uncomment the option below:
+#ac_add_options --enable-libproxy
+
+# Uncomment the following option if you have not installed PulseAudio and
+# want to use alsa instead
+#ac_add_options --enable-audio-backends=alsa
+
+# Comment out following options if you have not installed
+# recommended dependencies:
+ac_add_options --with-system-icu
+ac_add_options --with-system-libevent
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-webp
+
+# The libdav1d library (av1 decoder) requires nasm. Uncomment this
+# if nasm has not been installed. Do not uncomment this if you have
+# ffmpeg installed.
+#ac_add_options --disable-av1
+
+# You cannot distribute the binary if you do this.
+ac_add_options --enable-official-branding
+
+# Stripping is now enabled by default.
+# Uncomment these lines if you need to run a debugger:
+#ac_add_options --disable-strip
+#ac_add_options --disable-install-strip
+
+# Disabling debug symbols makes the build much smaller and a little
+# faster. Comment this if you need to run a debugger.
+ac_add_options --disable-debug-symbols
+
+# The BLFS editors recommend not changing anything below this line:
+ac_add_options --prefix=/usr
+ac_add_options --enable-application=browser
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+
+# Enabling the tests will use a lot more space and significantly
+# increase the build time, for no obvious benefit.
+ac_add_options --disable-tests
+
+# This enables SIMD optimization in the shipped encoding_rs crate.
+ac_add_options --enable-rust-simd
+
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-pixman
+
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-png
+ac_add_options --with-system-zlib
+
+# Sandboxing works well on x86_64 but might cause issues on other
+# platforms, e.g. i686.
+[ $(uname -m) != x86_64 ] && ac_add_options --disable-sandbox
+
+# Using sandboxed wasm libraries has been moved to all builds instead
+# of only mozilla automation builds. It requires extra llvm packages
+# and was reported to seriously slow the build. Disable it.
+ac_add_options --without-wasm-sandboxed-libraries
+
+# The following option unsets Telemetry Reporting. With the Addons Fiasco,
+# Mozilla was found to be collecting user's data, including saved passwords and
+# web form data, without users consent. Mozilla was also found shipping updates
+# to systems without the user's knowledge or permission.
+# As a result of this, use the following command to permanently disable
+# telemetry reporting in Firefox.
+unset MOZ_TELEMETRY_REPORTING
+
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build-dir
+
+# By default firefox will attempt to use the window class firefox-default on
+# launch. This makes the icon not work properly because wayland does not
+# support the X11 property  class header. Change the remoting name to fix this.
+# This is also reflected in the .desktop file where StartupWMClass is set to
+# firefox.
+MOZ_APP_REMOTINGNAME=firefox
+EOF
+

+ Compile Firefox by issuing + the following commands: +

+

+ If the geolocation APIs are needed: +

+
+

+ Note +

+

+ The Google API Key below is specific to LFS. If using these + instructions for another distro, or if you intend to + distribute binary copies of the software using these + instructions, please obtain your own key following the + instructions located at https://www.chromium.org/developers/how-tos/api-keys. +

+
+
echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key
+
+

+ Note +

+

+ If you are compiling this package in chroot you must ensure + that /dev/shm is mounted. If + you do not do this, the Python configuration will fail with a + traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py. + As the root user, run: +

+
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
+
+

+ Now invoke the Python mach script to compile the + package. +

+
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none &&
+export MOZBUILD_STATE_PATH=${PWD}/mozbuild          &&
+./mach build
+

+ The mozconfig above disables + the tests because they use a lot more time and disk space for + no obvious benefit. If you have nevertheless enabled them, + you can run the tests by executing ./mach gtest. This will + require a network connection, and to be run from within an + Xorg session - there is a popup dialog when it fails to + connect to ALSA (that does not create a failed test). One or + two tests will fail. To see the details of the failure(s) you + will need to log the output from that command so that you can + review it. +

+

+ Now, as the root user: +

+
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none &&
+./mach install
+

+ Empty the environment variables which were set above: +

+
unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE
+unset MOZBUILD_STATE_PATH
+
+
+

+ Command Explanations +

+

+ export + MOZBUILD_STATE_PATH=${PWD}/mozbuild: The + build tells you that it intends to create ~/.mozbuild, and offer you an option to + press <ENTER> to accept this, or Ctrl-C to cancel and + restart the build after specifying the directory. In + practice, the message may not appear until after + <ENTER> is keyed, i.e. the build stalls. +

+

+ That directory is used for a (probably random) telemetry + identifier. Creating this directory within the build + directory and deleting it after the installation prevents it + being used. +

+

+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none: + Use the system python to create a virtual environment for + mach without + downloading any python wheels and without using the system + python modules. This prevents version mismatches between + system modules and bundled ones. +

+

+ ./mach build --verbose: Use this + alternative if you need details of which files are being + compiled, together with any C or C++ flags being used. But do + not add '--verbose' to the install command since it is not + accepted there. +

+

+ ./mach build -jN: The build + should, by default, use all the online CPU cores. If using + all the cores causes the build to swap because you have + insufficient memory, using fewer cores can be faster. +

+

+ CC=gcc + CXX=g++: BLFS used to prefer to use gcc and g++ + instead of upstream's defaults of the clang programs. With the release of + gcc-12 the build takes longer with gcc and g++, primarily + because of extra warnings, and is bigger. Set these + environment variables before you + run the configure script if you wish to continue + to use gcc, g++. Building with GCC on i?86 is currently + broken. +

+
+
+

+ Configuring Firefox +

+

+ If you use a desktop environment like Gnome or KDE you may want to create a + firefox.desktop file so that + Firefox appears in the + panel's menus. As the root + user: +

+
mkdir -pv /usr/share/applications &&
+mkdir -pv /usr/share/pixmaps      &&
+
+MIMETYPE="text/xml;text/mml;text/html;"                            &&
+MIMETYPE+="application/xhtml+xml;application/vnd.mozilla.xul+xml;" &&
+MIMETYPE+="x-scheme-handler/http;x-scheme-handler/https"           &&
+
+cat > /usr/share/applications/firefox.desktop << EOF &&
+[Desktop Entry]
+Encoding=UTF-8
+Name=Firefox Web Browser
+Comment=Browse the World Wide Web
+GenericName=Web Browser
+Exec=firefox %u
+Terminal=false
+Type=Application
+Icon=firefox
+Categories=GNOME;GTK;Network;WebBrowser;
+MimeType=$MIMETYPE
+StartupNotify=true
+StartupWMClass=firefox
+EOF
+
+unset MIMETYPE &&
+
+ln -sfv /usr/lib/firefox/browser/chrome/icons/default/default128.png \
+        /usr/share/pixmaps/firefox.png
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The application settings for firefox are accessible by + keying about:config in the + address bar. +

+

+ Occasionally, getting working sound in firefox can be a problem. Although + upstream prefers pulseaudio, on balance using Alsa may be easier. +

+

+ If you enabled Alsa for + sound, you may need to alter one variable to get working + sound. If you run firefox from a terminal + and try to play something with sound you might encounter + error messages like: +

+

+ Sandbox: seccomp sandbox violation: + pid 3941, tid 4030, syscall 16, args 48 2147767296 + 139909894784796 0 0 0. +

+

+ That was on x86_64, on i686 the syscall number is 54. To + allow this syscall, in about:config change + security.sandbox.content.syscall_whitelist + to 16 (or 54 if using i686). +

+

+ If you use pulseaudio in a Desktop + Environment, it might already be started by that DE. But if + it is not, although firefox-57 managed to start it, + firefox-58 did not. If you run firefox from a terminal + and this problem is present, trying to play sound will + encounter error messages warning Can't get cubeb context! +

+

+ The fix for this is to close firefox, start pulseaudio to + check it does start (if not, read the information on + Configuring in PulseAudio-17.0) and restart firefox + to check it is working. If it now works, add the following + to your ~/.xinitrc: + pulseaudio + --verbose --log-target=syslog& + (unfortunately, on some systems this does not work). +

+

+ You may wish to use multiple profiles within firefox. To do + that, invoke firefox as firefox --ProfileManager. + You can also check which profile is currently in use from + about:profiles. +

+

+ Although WebRender (using the GPU for compositing) is not + used by default, it now appears to work well on supported + hardware (ATI, NVIDIA and Intel GPUs with Mesa-18 or + later). For an explanation, please see + hacks.mozilla.org. The only downside seems to be that + on a machine with limited RAM it might use more RAM. +

+

+ To check if WebRender is being used, look in about:support. + In the Graphics section, Compositing will either show + 'Basic' (i.e. not in use) or 'WebRender'. To enable it, go + to about:config and change gfx.webrender.all to True. You + will need to restart firefox. +

+

+ It may be useful to mention the processes from firefox + which can appear in top - as well as firefox + itself, there may be multiple Web Content processes, and + now an RDD Process (Remote Data Decoder) which appears when + playing web videos encoded with av1 (libdav1d). If + WebRender has been enabled, a GPU Process will also appear + when firefox has to repaint (e.g. scrolling, opening a new + tab, or playing a video). +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + firefox +
+
+ Installed Libraries: + Numerous libraries, browser + components, plugins, extensions, and helper modules + installed in /usr/lib/firefox +
+
+ Installed Directory: + /usr/lib/firefox +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ firefox +

+
+

+ is a GTK+-3 + internet browser that uses the Mozilla Gecko + rendering engine +

+
+
+
+
+
+
+
+

+ Seamonkey-2.53.21 +

+
+
+
+
+
+

+ Introduction to Seamonkey +

+

+ Seamonkey is a browser + suite, a descendant of Netscape. It includes the browser, + composer, mail and news clients, and an IRC client. +

+

+ It is the community-driven follow-on to the Mozilla + Application Suite, created after Mozilla decided to focus on + separate applications for browsing and e-mail. Those + applications are Firefox-140.2.0 and Thunderbird-140.2.0esr. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package has historically had frequent updates that + address security vulnerabilities. To determine the latest + status check the BLFS + Security Advisories. +

+
+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+
+

+ Note +

+

+ The tarball seamonkey-2.53.21.source.tar.xz + will untar to seamonkey-2.53.21 directory. +

+
+

+ Seamonkey Dependencies +

+
+ Required +
+

+ Cbindgen-0.29.0, GTK-3.24.50, libarchive-3.8.1, Python-3.11.1, + yasm-1.3.0, and Zip-3.0 +

+
+ Recommended +
+ +
+

+ Note +

+

+ If you don't install recommended dependencies, then + internal copies of those packages will be used. They might + be tested to work, but they can be out of date or contain + security holes. +

+
+
+ Optional +
+

+ alsa-lib-1.2.14, dbus-glib-0.114, + libproxy-0.5.10, nodejs-22.18.0, + Valgrind-3.25.1, Wget-1.25.0, Wireless + Tools-29, Hunspell and + Watchman +

+
+
+

+ Installation of Seamonkey +

+

+ The configuration of Seamonkey is accomplished by creating a + mozconfig file containing the + desired configuration options. A default mozconfig file is created below. To see the + entire list of available configuration options (and an + abbreviated description of each one), issue python3 configure.py + --help. You may also wish to review the + entire file and uncomment any other desired options. Create + the file by issuing the following command: +

+
cat > mozconfig << "EOF"
+# If you have a multicore machine, all cores will be used
+
+# If you have installed DBus-Glib comment out this line:
+ac_add_options --disable-dbus
+
+# If you have installed dbus-glib, and you have installed (or will install)
+# wireless-tools, and you wish to use geolocation web services, comment out
+# this line
+ac_add_options --disable-necko-wifi
+
+
+# If you wish to use libproxy to determine proxy server information, you will
+# need to install the libproxy package and then uncomment the option below:
+#ac_add_options --enable-libproxy
+
+# Uncomment these lines if you have installed optional dependencies:
+#ac_add_options --enable-system-hunspell
+
+# Uncomment the following option if you have not installed PulseAudio
+#ac_add_options --disable-pulseaudio
+# and uncomment this if you installed alsa-lib instead of PulseAudio
+#ac_add_options --enable-alsa
+
+# Comment out following options if you have not installed
+# recommended dependencies:
+ac_add_options --with-system-icu
+ac_add_options --with-system-libevent
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-webp
+
+# Disabling debug symbols makes the build much smaller and a little
+# faster. Comment this if you need to run a debugger.
+ac_add_options --disable-debug-symbols
+
+# The elf-hack is reported to cause failed installs (after successful builds)
+# on some machines. It is supposed to improve startup time and it shrinks
+# libxul.so by a few MB.  With recent Binutils releases the linker already
+# supports a much safer and generic way for this.
+ac_add_options --disable-elf-hack
+ac_add_options --enable-linker=bfd
+export LDFLAGS="$LDFLAGS -Wl,-z,pack-relative-relocs"
+
+# Seamonkey has some additional features that are not turned on by default,
+# such as an IRC client, calendar, and DOM Inspector. The DOM Inspector
+# aids with designing web pages. Comment these options if you do not
+# desire these features.
+ac_add_options --enable-calendar
+ac_add_options --enable-dominspector
+ac_add_options --enable-irc
+
+# The BLFS editors recommend not changing anything below this line:
+ac_add_options --prefix=/usr
+ac_add_options --enable-application=comm/suite
+
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+ac_add_options --disable-tests
+
+# The SIMD code relies on the unmaintained packed_simd crate which
+# fails to build with Rustc >= 1.78.0.  We may re-enable it once
+# Mozilla ports the code to use std::simd and std::simd is stabilized.
+ac_add_options --disable-rust-simd
+
+ac_add_options --enable-strip
+ac_add_options --enable-install-strip
+
+# You cannot distribute the binary if you do this.
+ac_add_options --enable-official-branding
+
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-pixman
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-png
+ac_add_options --with-system-zlib
+
+export CC=clang CXX=clang++
+EOF
+
+

+ Note +

+

+ If you are compiling this package in chroot you must ensure + that /dev/shm is mounted. If + you do not do this, the Python configuration will fail with a + traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py. + As the root user, run: +

+
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
+
+

+ First, if you are building with system ICU, adapt the line + break mapping for ICU-74 or later, apply a patch to build + this package with the C++17 standard because the headers of + ICU-75 or later require some C++17 features, and adapt the + build system to use the correct library with ICU-76 or later: +

+
(for i in {43..47}; do
+   sed '/ZWJ/s/$/,CLASS_CHARACTER/' -i intl/lwbrk/LineBreaker.cpp || exit $?
+done) &&
+
+patch -Np1 -i ../seamonkey-2.53.21-cxx17-1.patch &&
+
+sed -i 's/icu-i18n/icu-uc &/' js/moz.configure
+

+ Next, remove a hunk of unused code violating the C++ + standard. Clang has started to reject it even though it's + unused since the 19.1.0 release: +

+
sed -e '/ExclusiveData(ExclusiveData&&/,/^ *}/d' \
+    -i js/src/threading/ExclusiveData.h
+

+ Next, fix a problem with the bundled 'distro' python module: +

+
sed -e '1012 s/stderr=devnull/stderr=subprocess.DEVNULL/' \
+    -e '1013 s/OSError/(OSError, subprocess.CalledProcessError)/' \
+    -i third_party/python/distro/distro.py
+

+ Compile Seamonkey by running + the following commands: +

+
export PATH_PY311=/opt/python3.11/bin:$PATH &&
+PATH=$PATH_PY311 AUTOCONF=true MACH_USE_SYSTEM_PYTHON=1 ./mach build
+

+ This package does not come with a test suite. +

+

+ Install Seamonkey by issuing + the following commands as the root user: +

+
+

+ Note +

+

+ If sudo or + su is invoked + for opening a shell running as the root user, ensure PATH_PY311 is correctly passed or the + following command will fail. For sudo, use the + --preserve-env=PATH_PY311 + option. For su, do not use the - or --login + options. +

+
+
PATH=$PATH_PY311 MACH_USE_SYSTEM_PYTHON=1 ./mach install &&
+chown -R 0:0 /usr/lib/seamonkey                          &&
+
+cp -v $(find -name seamonkey.1 | head -n1) /usr/share/man/man1
+

+ Finally, unset the PATH_PY311 + variable: +

+
unset PATH_PY311
+
+
+

+ Command Explanations +

+

+ export CC=clang + CXX=clang++: With the introduction of + gcc-12, many more warnings + are generated when compiling mozilla applications and that + results in a much slower, and larger, build. Furthermore, + building with GCC on i?86 is currently broken. Although + upstream mozilla code defaults to using llvm unless overridden, the older + configure code in Seamonkey + defaults to gcc. +

+

+ ./mach build --verbose: Use this + alternative if you need details of which files are being + compiled, together with any C or C++ flags being used. But do + not add '--verbose' to the install command, it is not + accepted there. +

+

+ ./mach build -jN: The build + should, by default, use all the online CPU cores. If using + all the cores causes the build to swap because you have + insufficient memory, using fewer cores can be faster. +

+
+
+

+ Configuring Seamonkey +

+

+ For installing various Seamonkey add-ons, refer to Add-ons for + Seamonkey. +

+

+ Along with using the “Preferences” menu to configure + Seamonkey's options and + preferences to suit individual tastes, finer grain control of + many options is only available using a tool not available + from the general menu system. To access this tool, you'll + need to open a browser window and enter about:config in the address bar. This + will display a list of the configuration preferences and + information related to each one. You can use the “Search:” bar to + enter search criteria and narrow down the listed items. + Changing a preference can be done using two methods. One, if + the preference has a boolean value (True/False), simply + double-click on the preference to toggle the value and two, + for other preferences simply right-click on the desired line, + choose “Modify” from the menu and change the + value. Creating new preference items is accomplished in the + same way, except choose “New” from the menu and provide the + desired data into the fields when prompted. +

+

+ If you use a desktop environment like Gnome or KDE you may wish to create a + seamonkey.desktop file so that + Seamonkey appears in the + panel's menus. If you didn't enable Startup-Notification in your mozconfig + change the StartupNotify line to false. As the root user: +

+
mkdir -pv /usr/share/{applications,pixmaps}              &&
+
+cat > /usr/share/applications/seamonkey.desktop << "EOF"
+[Desktop Entry]
+Encoding=UTF-8
+Type=Application
+Name=Seamonkey
+Comment=The Mozilla Suite
+Icon=seamonkey
+Exec=seamonkey
+Categories=Network;GTK;Application;Email;Browser;WebBrowser;News;
+StartupNotify=true
+Terminal=false
+EOF
+
+ln -sfv /usr/lib/seamonkey/chrome/icons/default/default128.png \
+        /usr/share/pixmaps/seamonkey.png
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + seamonkey +
+
+ Installed Libraries: + Numerous libraries, browser, and + email/newsgroup components, plugins, extensions, and + helper modules installed in /usr/lib/seamonkey +
+
+ Installed Directory: + /usr/lib/seamonkey +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ seamonkey +

+
+

+ is the Mozilla browser/email/newsgroup/chat client + suite +

+
+
+
+
+
+
+
+
+

+ Chapter 41. Other X-based + Programs +

+
+
+
+
+

+ These programs use the X Window System and don't fit easily into + any of the other chapters. +

+
+
+
+

+ Balsa-2.6.5 +

+
+
+
+
+
+

+ Introduction to Balsa +

+

+ The Balsa package contains a + lightweight GTK+-based mail + client. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Balsa Dependencies +

+
+ Required +
+

+ enchant-2.8.12, GMime-3.2.15, gpgme-2.0.0, + GTK-3.24.50, libical-3.0.20, + libnotify-0.8.6, and libsecret-0.21.7 +

+
+ Required (Runtime) +
+

+ MTA (that + provides a sendmail command) +

+
+ Optional +
+

+ Compface-1.5.2, gspell-1.14.0, gtksourceview-3.24.11, libcanberra-0.30, MIT Kerberos + V5-1.22.1, OpenLDAP-2.6.10, Procmail-3.24, + SQLite-3.50.4, WebKitGTK-2.48.5, + html2text, + libxapp, osmo, + and yelp-tools +

+
+
+

+ Installation of Balsa +

+

+ Install Balsa by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup .. --prefix=/usr       \
+               --buildtype=release \
+               -D html-widget=no   &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D html-widget=no: + This option disables building the HTML renderer. If you want + the HTML renderer to be built, verify that you have WebKitGTK-2.48.5 installed, and then + remove this option. +

+

+ -D canberra=true: This switch + enables support for event sounds via libcanberra-0.30. +

+

+ -D compface=true: This switch + enables support for using Compface-1.5.2 to compress + thumbnails for contacts. +

+

+ -D gcr=true: This switch enables + support for using libgcr for handling TLS certificates. This + requires that the Gcr-3.41.2 package is installed, which is + part of a runtime dependency for libsecret. +

+

+ -D gss=true: This switch enables + support for Kerberos authentication. This requires that the + MIT Kerberos V5-1.22.1 package + is installed. +

+

+ -D ldap=true: This switch enables + LDAP address book support. This requires that the OpenLDAP-2.6.10 package is installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + balsa and balsa-ab +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/sounds/events, + /usr/share/balsa, and /usr/share/sounds/balsa +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ balsa +

+
+

+ is a GTK+-based mail client +

+
+

+ balsa-ab +

+
+

+ is the address book application used by + balsa +

+
+
+
+
+
+
+
+

+ feh-3.10.3 +

+
+
+
+
+
+

+ Introduction to feh +

+

+ feh is a fast, lightweight + image viewer which uses Imlib2. It is commandline-driven and + supports multiple images through slideshows, thumbnail + browsing or multiple windows, and montages or index prints + (using TrueType fonts to display file info). Advanced + features include fast dynamic zooming, progressive loading, + loading via HTTP (with reload support for watching webcams), + recursive file opening (slideshow of a directory hierarchy), + and mouse wheel/keyboard control. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://feh.finalrewind.org/feh-3.10.3.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: 4f9e2c6ecc120852ba86dc41df366aba +

    +
  • +
  • +

    + Download size: 2.0 MB +

    +
  • +
  • +

    + Estimated disk space required: 5.2 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with tests) +

    +
  • +
+
+

+ feh + Dependencies +

+
+ Required +
+

+ libpng-1.6.50 and imlib2-1.12.5 (built with + giflib-5.2.2 support, for the tests) +

+
+ Recommended +
+ +
+ Optional +
+

+ libexif-0.6.25 +

+
+ Optional (runtime) +
+

+ libjpeg-turbo-3.0.1 (for lossless + image rotation) and ImageMagick-7.1.2-1 (to load + unsupported formats) +

+
+ Optional (test suite) +
+

+ Test-Command-0.11 (required) and + mandoc + (optional) +

+
+
+

+ Installation of feh +

+

+ Install feh by running the + following commands: +

+
sed -i "s:doc/feh:&-3.10.3:" config.mk &&
+make PREFIX=/usr
+

+ To test the results, issue: make test. +

+

+ Now, as the root user: +

+
make PREFIX=/usr install
+
+
+

+ Command Explanations +

+

+ sed -i + "s:doc/feh:&-3.10.3:" config.mk: This sed + fixes the doc directory to a versioned one, as used in BLFS. +

+

+ curl=0: Use this make flag if you + don't have the cURL package installed. +

+

+ exif=1: This make flag enables + builtin Exif tag display support. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + feh +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/feh-3.10.3 and + /usr/share/feh +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ feh +

+
+

+ is an image viewer and cataloguer +

+
+
+
+
+
+
+
+

+ FontForge-20230101 +

+
+
+
+
+
+

+ Introduction to FontForge +

+

+ The FontForge package + contains an outline font editor that lets you create your own + postscript, truetype, opentype, cid-keyed, multi-master, cff, + svg and bitmap (bdf, FON, NFNT) fonts, or edit existing ones. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ FontForge Dependencies +

+
+ Required +
+

+ libspiro-20220722 and libxml2-2.14.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ giflib-5.2.2, git-2.50.1, libjpeg-turbo-3.0.1, libtiff-4.7.0, sphinx-8.2.3 (to build + html documentation), and WOFF2-1.0.2 +

+
+
+

+ Installation of FontForge +

+

+ First, fix two security vulnerabilities in the Splinefont + functionality: +

+
patch -Np1 -i ../fontforge-20230101-security_fixes-1.patch
+

+ Next, fix a problem with old translations exposed by + gettext-0.22: +

+
sed -i.orig 's/\(%[^%[:space:]]*\)hs/\1s/g' \
+ fontforgeexe/searchview.c po/de.po po/ca.po \
+ po/hr.po po/it.po po/pl.po po/uk.po po/en_GB.po \
+ po/fr.po po/vi.po po/ko.po po/ja.po
+

+ Install FontForge by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -W no-dev .. &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+

+ If you have installed sphinx-build, HTML + documentation was built and installed in /usr/share/doc/fontforge. To be able to + access it as a versioned directory, create a symlink as the + root user: +

+
ln -sv fontforge /usr/share/doc/fontforge-20230101
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + create an optimized release without debug information. +

+

+ -W no-dev: This + switch is used to suppress warnings intended for the + package's developers. +

+

+ -D ENABLE_X11=ON: use an X11 + backend instead of GDK3 (gtk+-3) for basic Xorg graphics. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fontforge, fontimage, fontlint and + sfddiff +
+
+ Installed Library: + libfontforge.so and + /usr/lib/python3.13.7/site-packages/{fontforge,psMat}.so +
+
+ Installed Directories: + /usr/share/fontforge and optionally + /usr/share/doc/fontforge{,-20230101} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ fontforge +

+
+

+ is a program that allows you to create and modify + font files +

+
+

+ fontimage +

+
+

+ is a program that produces an image showing + representative glyphs of the font +

+
+

+ fontlint +

+
+

+ is a program that checks the font for certain + common errors +

+
+

+ sfddiff +

+
+

+ is a program that compares two font files +

+
+
+
+
+
+
+
+

+ FreeRDP-3.17.0 +

+
+
+
+
+
+

+ Introduction to FreeRDP +

+

+ The FreeRDP package contains + libraries and utilities for utilizing the Remote Desktop + Protocol. This includes tools to run an RDP server as well as + to connect to a computer using RDP. This is primarily used + for connecting to Microsoft Windows computers, but can also + be used on Linux and macOS. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ FreeRDP Dependencies +

+
+ Required +
+

+ FFmpeg-7.1.1, ICU-77.1, and Xorg Libraries +

+
+ Recommended +
+ +
+ Optional +
+

+ Cups-2.4.12, faac-1.31.1, FAAD2-2.11.2, fdk-aac-2.0.3, LAME-3.100, Linux-PAM-1.7.1, PulseAudio-17.0, + cJSON, GSM, ocl-icd, mbedTLS, openh264, + pcsclite, SDL_ttf, + soxr, and uriparser +

+
+
+

+ Installation of FreeRDP +

+

+ Install FreeRDP by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr   \
+      -D CMAKE_SKIP_INSTALL_RPATH=ON \
+      -D CMAKE_BUILD_TYPE=Release    \
+      -D WITH_CAIRO=ON               \
+      -D WITH_CLIENT_SDL=OFF         \
+      -D WITH_DSP_FFMPEG=ON          \
+      -D WITH_FFMPEG=ON              \
+      -D WITH_PCSC=OFF               \
+      -D WITH_SERVER=ON              \
+      -D WITH_SERVER_CHANNELS=ON     \
+      -D DOCBOOKXSL_DIR=/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2 \
+      -W no-dev                      \
+      -G Ninja ..                    &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes + cmake remove + hardcoded library search paths (rpath) when installing a + binary executable file or a shared library. This package does + not need rpath once it's installed into the standard + location, and rpath may sometimes cause unwanted effects or + even security issues. +

+

+ -D + DOCBOOKXSL_DIR=/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2: + This parameter points CMake to the location of the Docbook + XSL stylesheets, and is needed because BLFS does not use + namespaced versions of the stylesheets. This is needed to + create man pages. If you do not want manpages, pass -D + WITH_MANPAGES=OFF to CMake instead. +

+

+ -D WITH_CAIRO=ON: + This parameter uses Cairo for HighDPI and window resizing + support. +

+

+ -D + WITH_CLIENT_SDL=OFF: This parameter disables + using SDL to draw the window when using the FreeRDP client. + This is disabled because it depends on SDL_ttf. Remove + this switch if you have the SDL_ttf package installed. +

+

+ -D WITH_FFMPEG=ON: + This parameter enables support for using ffmpeg for the H.264 + graphics rendering mode, which is required when connecting + via RDP to Windows Server 2012 (or Windows 8) or later hosts. +

+

+ -D + WITH_DSP_FFMPEG=ON: This parameter enables + support for using ffmpeg for sound and microphone + redirection. +

+

+ -D WITH_PCSC=OFF: + This parameter disables support for SmartCards since BLFS + does not have the required dependency for it. +

+

+ -D WITH_SERVER=ON: + This parameter enables building the FreeRDP server + components. Remove this parameter if you do not want to use + the FreeRDP server. +

+

+ -D + WITH_SERVER_CHANNELS=ON: This parameter builds + additional plugins for the FreeRDP server. +

+

+ -D WITH_LAME=ON: Use this option + if you wish to enable support for using LAME to provide MP3 + Audio Codec support. +

+

+ -D WITH_FAAC=ON: Use this option + if you wish to enable support for using FAAC to provide AAC + Audio Codec support. +

+

+ -D WITH_FAAD2=ON: Use this option + if you wish to enable support for using FAAD2 to provide AAC + Audio Codec support. +

+

+ -D WITH_FDK_AAC=ON: Use this + option if you wish to enable support for using fdk-aac to + provide AAC Audio Codec support. +

+

+ -D WITH_MBEDTLS=ON: Use this + option if you have the optional dependency mbedTLS + installed and wish to use it as an alternative to OpenSSL for + cryptography support. +

+

+ -D WITH_OPENCL=ON: Use this + option if you have the optional dependency ocl-icd + installed and wish to use OpenCL support. +

+

+ -D WITH_OPENH264=ON: Use this + option if you have the optional dependency openh264 installed and + wish to use it for H.264 support instead of ffmpeg. +

+

+ -D WITH_GSM=ON: Use this option + if you have the optional dependency GSM installed and wish to use + GSM as an audio codec. +

+

+ -D WITH_SOXR=ON: Use this option + if you have the optional dependency soxr installed and wish + to use it instead of ffmpeg for multimedia redirection. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + freerdp-proxy, freerdp-shadow-cli, + sfreerdp, sfreerdp-server, winpr-hash, winpr-makecert, + wlfreerdp, xfreerdp +
+
+ Installed Libraries: + libfreerdp3.so, + libfreerdp-client3.so, libfreerdp-server3.so, + libfreerdp-server-proxy3.so, libfreerdp-shadow3.so, + libfreerdp-shadow-subsystem3.so, librtdk0.so, + libuwac0.so, libwinpr3.so, and libwinpr-tools3.so +
+
+ Installed Directories: + /usr/include/{freerdp3,rdtk0,uwac0,winpr3}, + /usr/lib/cmake/{FreeRDP3,FreeRDP-Client3,FreeRDP-Proxy3,FreeRDP-Server3,rdtk0,uwac0,WinPR3,WinPR-tools3}, + /usr/lib/freerdp3, /usr/share/FreeRDP +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ freerdp-proxy +

+
+

+ configures FreeRDP to use a proxy server +

+
+

+ freerdp-shadow-cli +

+
+

+ interfaces with the shadow functionality in FreeRDP +

+
+

+ sfreerdp +

+
+

+ is a utility for sharing an X display over RDP +

+
+

+ sfreerdp-server +

+
+

+ is a utility for sharing an X display over RDP +

+
+

+ winpr-hash +

+
+

+ creates a NTLM hash from a username and password + pair +

+
+

+ winpr-makecert +

+
+

+ creates X.509 certificates for use with FreeRDP +

+
+

+ wlfreerdp +

+
+

+ is a RDP client for Wayland +

+
+

+ xfreerdp +

+
+

+ is a RDP client for X11 +

+
+

+ libfreerdp3.so +

+
+

+ contains functions that provide RDP client and + server functionality +

+
+
+
+
+
+
+
+

+ Gimp-3.0.4 +

+
+
+
+
+
+

+ Introduction to Gimp +

+

+ The Gimp package contains + the GNU Image Manipulation Program which is useful for photo + retouching, image composition and image authoring. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.gimp.org/gimp/v3.0/gimp-3.0.4.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: eaeb6f9973a474a6b8eb168ed25d1f2a +

    +
  • +
  • +

    + Download size: 26 MB +

    +
  • +
  • +

    + Estimated disk space required: 471 MB (183 MB + installed) +

    +
  • +
  • +

    + Estimated build time: 1.2 SBU (Using parallelism=4) +

    +
  • +
+
+

+ Additional Downloads +

+
+

+ Note +

+

+ The English version of the help files is complete, but some + parts of the text for other languages may not yet be + translated. +

+
+
+
    +
  • +

    + Download (HTTP): + https://download.gimp.org/pub/gimp/help/gimp-help-3.0.0.tar.bz2 +

    +
  • +
  • +

    + Download size: 126 MB +

    +
  • +
  • +

    + Download MD5 sum: 6a45a29097c69d5cf0d86e5c9b6e5f9e +

    +
  • +
  • +

    + Estimated disk space required: From 351 MB (74 MB + installed) for en only to 1.5 GB for all languages +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (en only), 5.1 SBU for + all languages; using parallelism=4 +

    +
  • +
+
+

+ Gimp + Dependencies +

+
+ Required +
+

+ appstream-glib-0.8.3, gegl-0.4.62, + gexiv2-0.14.6, glib-networking-2.80.1, + GTK-3.24.50, harfBuzz-11.4.1, + libmypaint-1.6.1, librsvg-2.61.0, + libtiff-4.7.0, libxml2-2.14.5 (to + build the translated help files), Little CMS-2.17, + mypaint-brushes-1.3.1, and + Poppler-25.08.0 (including + poppler-data) +

+
+ Recommended +
+ +
+ Optional +
+

+ AAlib-1.4rc5, alsa-lib-1.2.14, + AppStream-1.0.6 (for one test), + Gi-DocGen-2025.4, Gjs-1.84.2, libjxl-0.11.1, libmng-2.0.3, libunwind-1.8.2, libwebp-1.6.0, Lua-5.4.8, OpenJPEG-2.5.3, cfitsio, libbacktrace, + libiff, libilbm, + libheif with + libde265 (both + needed to read macOS heic images), libwmf, + OpenEXR, + and qoi +

+
+ Optional, for building the help + system +
+

+ dblatex (for PDF + docs), pngnq and pngcrush to + optimize the png files, but see the note on the help download + above +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/gimp +

+
+
+

+ Installation of Gimp +

+

+ If upgrading from a previous Gimp-3 installation, as the + root user, remove some files + and directories from the old installation or the build system + may mistakenly pick them up, causing a build failure: +

+
rm -rf /usr/{lib,share}/gimp/3.0 &&
+rm -f  /usr/share/gir-1.0/Gimp-3.0.gir &&
+rm -f  /usr/lib/girepository-1.0/Gimp-3.0.typelib &&
+rm -f  /usr/lib/libgimp*-3.0.so*
+

+ Install Gimp by running the + following commands: +

+
mkdir gimp-build &&
+cd    gimp-build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D headless-tests=disabled &&
+ninja
+

+ To test the results (requires a terminal in a graphical + environment) issue: ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Installation of Gimp-Help +

+

+ The gimp-help tarball contains + images and English text help for help files, together with + translations. If you wish to install local copies of the help + files to read offline, unpack the gimp-help tarball and + change into the root of the newly created source tree. +

+
tar -xf ../../gimp-help-3.0.0.tar.bz2 &&
+cd gimp-help-3.0.0
+
+ALL_LINGUAS="ca cs da de en en_GB es fa fr hr ko lt nl nn pt pt_BR ro sl sv uk zh_CN" \
+./configure --prefix=/usr
+

+ Remove from ALL_LINGUAS the codes + for any languages which you do not wish to install. + Alternatively, remove the line starting with ALL_LINGUAS, if you wish to build all + languages. +

+

+ Now build the help files: +

+
make
+

+ Issue the following commands as the root user to install the help files: +

+
make install &&
+chown -R root:root /usr/share/gimp/3.0/help
+
+
+

+ Command Explanations +

+

+ -D + headless-tests=disabled: This switch disables + using xvfb-run + for running the tests. Without this switch, many tests fail + if xvfb-run has + been installed. +

+

+ ALL_LINGUAS="ca cs da de en en_GB es + fa...": by default, the help files will be rendered in + all the available languages. Remove the codes of any + languages you do not wish to build. +

+
+
+

+ Configuring The Gimp +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/gimp/3.0/* +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gimp-3.0, gimp-console-3.0, + gimptool-3.0, gimp-test-clipboard-3.0, + gimp-script-fu-interpreter-3.0, and + gimp{,-console,tool,-test-clipboard,script-fu-interpreter}{,-3} + (symlinks) +
+
+ Installed Libraries: + libgimp-3.0.so, + libgimp-scriptfu-3.0, libgimpbase-3.0.so, + libgimpcolor-3.0.so, libgimpconfig-3.0.so, + libgimpmath-3.0.so, libgimpmodule-3.0.so, + libgimpthumb-3.0.so, libgimpui-3.0.so, and + libgimpwidgets-3.0.so +
+
+ Installed Directories: + /etc/gimp, /usr/include/gimp-3.0, + /usr/lib/gimp-3.0, /usr/lib/gimp/3.0, + /usr/share/gimp/3.0, and /usr/share/doc/gimp-3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gimp-3.0 +

+
+

+ is the Gnu Image Manipulation Program. It works + with a variety of image formats and provides a + large selection of tools +

+
+

+ gimp-console-3.0 +

+
+

+ is a console program that behaves as if The + Gimp was called + with the --no-interface + command-line option +

+
+

+ gimptool-3.0 +

+
+

+ is a tool that can build plug-ins or scripts and + install them if they are distributed in one source + file. gimptool-3.0 can + also be used by programs that need to know what + libraries and include-paths The Gimp was compiled with +

+
+

+ libgimp-3.0.so +

+
+

+ provides C bindings for The Gimp's Procedural Database + (PDB), which offers an interface to core functions + and to functionality provided by plug-ins +

+
+

+ libgimpbase-3.0.so +

+
+

+ provides the C functions for basic Gimp functionality such as + determining enumeration data types, gettext + translation, determining The Gimp's version number and + capabilities, handling data files and accessing the + environment +

+
+

+ libgimpcolor-3.0.so +

+
+

+ provides the C functions relating to RGB, HSV and + CMYK colors as well as converting colors between + different color models and performing adaptive + supersampling on an area +

+
+

+ libgimpconfig-3.0.so +

+
+

+ contains C functions for reading and writing config + information +

+
+

+ libgimpmath-3.0.so +

+
+

+ contains C functions which provide mathematical + definitions and macros, manipulate 3x3 + transformation matrices, set up and manipulate + vectors and the MD5 message-digest algorithm +

+
+

+ libgimpmodule-3.0.so +

+
+

+ provides the C functions which implement module + loading using GModule and supports keeping a list + of GimpModule's found in a given searchpath +

+
+

+ libgimpthumb-3.0.so +

+
+

+ provides the C functions for handling The + Gimp's thumbnail + objects +

+
+

+ libgimpui-3.0.so +

+
+

+ contains The Gimp's common user interface + functions +

+
+

+ libgimpwidgets-3.0.so +

+
+

+ contains The Gimp + and GTK's widget + creation and manipulation functions +

+
+
+
+
+
+
+
+

+ Gparted-1.7.0 +

+
+
+
+
+
+

+ Introduction to Gparted +

+

+ Gparted is the Gnome Partition Editor, a Gtk 3 GUI for other + command line tools that can create, reorganise or delete disk + partitions. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.sourceforge.net/gparted/gparted-1.7.0.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 97305db7509dd1bf2456a1331d2380f3 +

    +
  • +
  • +

    + Download size: 5.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 72 MB (add 70 MB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.3 SBU (using parallelism=4; add + 0.3 SBU for tests) +

    +
  • +
+
+

+ Gparted Dependencies +

+
+ Required +
+

+ Gtkmm-3.24.10 and parted-3.6 +

+
+ Optional +
+

+ btrfs-progs-6.16 (if using a btrfs + filesystem), exfatprogs, + and udftools +

+
+
+

+ Installation of Gparted +

+

+ Install Gparted by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-doc    \
+            --disable-static &&
+make
+

+ To run the tests, issue: make + check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-doc: This + switch disables building of the optional documentation. + Remove it if you have installed GNOME Doc Utils. +

+

+ --enable-xhost-root: This switch + provides an interim workaround to allow GParted to run under + Wayland by using xhost to grant and revoke root access to the + X11 display. +

+
+
+

+ Using Gparted +

+

+ To manipulate file systems Gparted has a run time dependency + on various file system tools (you only need to install the + tools for file systems you actually use): Hdparm-9.65 (required + for optionally displaying serial number device information), + btrfs-progs-6.16, dosfstools-4.2, + e2fsprogs (installed as part of LFS), jfsutils-1.1.15, + xfsprogs-6.15.0, mtools (required to + read and write FAT16/32 volume labels and UUIDs), hfsutils, + hfsprogs, + nilfs-utils, Reiser4progs, + and + reiserfsprogs. +

+

+ Root privileges are required to run Gparted. If you wish to + run the application from the menu, further applications and + configurations are necessary. Examples of applications that + may be used: gksu, kdesudo, or + xdg-su. Another + simple solution is ssh-askpass-10.0p1. +

+
+
+
+
+

+ ssh-askpass +

+
+
+
+

+ To optionally use ssh-askpass-10.0p1 if it is + installed in your system, run the following commands as the + root user: +

+
cp -v /usr/share/applications/gparted.desktop /usr/share/applications/gparted.desktop.back &&
+sed -i 's/Exec=/Exec=sudo -A /'               /usr/share/applications/gparted.desktop
+

+ Now, clicking on the menu item for Gparted, a dialog + appears on the screen, asking for the administrator + password. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gparted and gparted_polkit + (optional) +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gparted +

+
+

+ is a shell script which sets up the environment + before calling gpartedbin +

+
+

+ gparted_polkit +

+
+

+ is an optional script which can be used to run + gparted with polkit, from a menu +

+
+
+
+
+
+
+
+

+ Inkscape-1.4.2 +

+
+
+
+
+
+

+ Introduction to Inkscape +

+

+ Inkscape is a what you see + is what you get Scalable Vector Graphics editor. It is useful + for creating, viewing and changing SVG images. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +
+

+ Note +

+

+ The tarball inkscape-1.4.2.tar.xz will extract to the + directory inkscape-1.4.2_2025-05-08_ebf0e940d0/. +

+
+

+ Inkscape Dependencies +

+
+ Required +
+

+ Boost-1.89.0, double-conversion-3.3.1, + GC-8.2.8, + gsl-2.8, + Gtkmm-3.24.10, libxslt-1.1.43, + Poppler-25.08.0, and popt-1.19 +

+
+ Recommended +
+ +
+ Optional +
+

+ Aspell-0.60.8.1, dbus-1.16.2 (to run inkscape + from scripts), Doxygen-1.14.0, gspell-1.14.0, GraphicsMagick, + libcdr, libvisio, + libwpg (or libwpd) +

+
+
+

+ Installation of Inkscape +

+

+ First, fix build failures with recent versions of poppler: +

+
patch -Np1 -i ../inkscape-1.4.2-poppler_fixes-3.patch
+

+ Install Inkscape by running + the following commands: +

+
mkdir build                       &&
+cd    build                       &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -W no-dev                           \
+      ..                                  &&
+make
+

+ This package does not come with a working test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ -D + CMAKE_BUILD_TYPE=Release: This switch is used to + build the release library without any debug `assert` in the + code. +

+

+ -W no-dev: This + parameter silences several warnings only intended for project + developers. +

+

+ -D WITH_DBUS=ON: use this if you + wish to use inkscape in interactive + scripts which manipulate images. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + inkscape and inkview +
+
+ Installed Library: + libinkscape_base.so (in + /usr/lib/inkscape) +
+
+ Installed Directories: + /usr/lib/inkscape, and + /usr/share/inkscape +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ inkscape +

+
+

+ is a SVG (Scalable Vector Graphics) editing program +

+
+

+ inkview +

+
+

+ is a simple program for displaying SVG files +

+
+

+ libinkscape_base.so +

+
+

+ provides the routines used by inkscape and inkview +

+
+
+
+
+
+
+
+

+ rxvt-unicode-9.31 +

+
+
+
+
+
+

+ Introduction to rxvt-unicode +

+

+ rxvt-unicode is a clone of + the terminal emulator rxvt, + an X Window System terminal emulator which includes support + for XFT and Unicode. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ Please be aware that rxvt-unicode is affected by an issue + in perl where the SIGFPE + handler is set to SIG_IGN (i.e. the signal is ignored). If + you are building an LFS system from within urxvt and running the + test suites, tests in bash + which test raising this signal will fail. +

+
+

+ Package Information +

+
+ +
+

+ rxvt-unicode Dependencies +

+
+ Required +
+

+ libptytty-2.0 and a graphical + environment +

+
+ Optional +
+

+ gdk-pixbuf-2.42.12 (for background + images) and startup-notification-0.12 +

+
+
+

+ Installation of rxvt-unicode +

+

+ Install rxvt-unicode by + running the following commands: +

+
./configure --prefix=/usr --enable-everything &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-everything: + Add support for all non-multichoice options. Details about + the different options can be found in the file README.configure. +

+

+ --disable-xft: Remove support for + Xft fonts. +

+

+ --disable-perl: Disable the + embedded Perl interpreter. +

+

+ --disable-afterimage: Remove + support for libAfterImage. +

+
+
+

+ Configuring rxvt-unicode +

+

+ The rxvt-unicode terminal + emulator uses the resource class URxvt and the resource name urxvt. You can add X resource definitions + to a user's ~/.Xresources or + ~/.Xdefaults files or to the + system-wide /etc/X11/app-defaults/URxvt file. The + following example will load the matcher Perl extension (assuming Perl support wasn't disabled), which + enables a left button click to open an underlined URL in the + specified browser, sets a background and foreground color and + loads an Xft font (as the root user): +

+
cat >> /etc/X11/app-defaults/URxvt << "EOF"
+! Use the specified colour as the windows background colour [default white]
+URxvt*background: black
+
+! Use the specified colour as the windows foreground colour [default black]
+URxvt*foreground: yellow
+
+! Select the fonts to be used. This is a comma separated list of font names
+URxvt*font: xft:Monospace:pixelsize=18
+
+! Comma-separated list(s) of perl extension scripts (default: "default")
+URxvt*perl-ext: matcher
+
+! Specifies the program to be started with a URL argument. Used by
+URxvt*url-launcher: firefox
+
+! When clicked with the mouse button specified in the "matcher.button" resource
+! (default 2, or middle), the program specified in the "matcher.launcher"
+! resource (default, the "url-launcher" resource, "sensible-browser") will be
+! started with the matched text as first argument.
+! Below, default modified to mouse left button.
+URxvt*matcher.button:     1
+EOF
+

+ In order to view the defined X resources, issue: +

+
xrdb -query
+

+ In order to add the modifications of the new user + configuration file, keeping previously X configurations (of + course, unless you are changing any on previously define), + issue: +

+
xrdb -merge ~/.Xresources
+

+ The rxvt-unicode application + can also run in a daemon mode, which makes it possible to + open multiple terminal windows within the same process. The + urxvtc client + then connects to the urxvtd daemon and requests + a new terminal window. Use this option with caution. If the + daemon crashes, all the running processes in the terminal + windows are terminated. +

+

+ You can start the urxvtd daemon in the system + or personal startup X session script (e.g., + ~/.xinitrc) by adding the + following lines near the top of the script: +

+
# Start the urxvtd daemon
+urxvtd -q -f -o &
+

+ For more information, examine the urxvt, urxvtd, urxvtc, and urxvtperl man pages. +

+

+ If you use a Desktop Environment, a menu entry can be + included, issuing, as the root user: +

+
cat > /usr/share/applications/urxvt.desktop << "EOF" &&
+[Desktop Entry]
+Encoding=UTF-8
+Name=Rxvt-Unicode Terminal
+Comment=Use the command line
+GenericName=Terminal
+Exec=urxvt
+Terminal=false
+Type=Application
+Icon=utilities-terminal
+Categories=GTK;Utility;TerminalEmulator;
+#StartupNotify=true
+Keywords=console;command line;execute;
+EOF
+
+update-desktop-database -q
+

+ For that, you need desktop-file-utils-0.28 + and at least one of gnome-icon-theme-3.12.0, + oxygen-icons-6.0.0 and lxde-icon-theme-0.5.1. Uncomment + the line with “StartupNotify=true” if startup-notification-0.12 is + installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + urxvt, urxvtd, and urxvtc +
+
+ Installed Libraries: + Many Perl extensions located under + /usr/lib/urxvt/perl +
+
+ Installed Directory: + /usr/lib/urxvt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ urxvt +

+
+

+ is a terminal emulator for the X Window System +

+
+

+ urxvtd +

+
+

+ is the urxvt terminal + daemon +

+
+

+ urxvtc +

+
+

+ controls the urxvtd daemon +

+
+
+
+
+
+
+
+

+ Thunderbird-140.2.0esr +

+
+
+
+
+
+

+ Introduction to Thunderbird +

+

+ Thunderbird is a stand-alone + mail/news client based on the Mozilla codebase. It uses the Gecko + rendering engine to enable it to display and compose HTML + emails. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Important +

+

+ This package has historically had frequent updates that + address security vulnerabilities. To determine the latest + status check the BLFS + Security Advisories. +

+
+

+ Package Information +

+
+ +
+

+ Thunderbird Dependencies +

+
+ Required +
+

+ Cbindgen-0.29.0, GTK-3.24.50, libarchive-3.8.1, LLVM-20.1.8 including + clang, nodejs-22.18.0, PulseAudio-17.0 (or + alsa-lib-1.2.14 if you edit the + mozconfig; although it is now deprecated by mozilla), + Python-3.13.7 (rebuilt with the sqlite + module), and startup-notification-0.12 +

+
+ Recommended +
+ +
+

+ Note +

+

+ If you don't install recommended dependencies, then + internal copies of those packages will be used. They might + be tested to work, but they can be out of date or contain + security holes. +

+
+
+ Optional +
+

+ libproxy-0.5.10, pciutils-3.14.0 + (runtime), Wget-1.25.0, Wireless + Tools-29, and watchman +

+
+
+

+ Installation of Thunderbird +

+
+

+ Note +

+

+ The build process for Thunderbird can use 8 GB or more of + RAM when linking. Make sure that you have adequate swap or + RAM before continuing. +

+
+

+ The configuration of Thunderbird is accomplished by creating + a mozconfig file containing the + desired configuration options. A default mozconfig is created below. To see the + entire list of available configuration options (and a brief + description of each), issue ./mach configure -- --help | + less. Create the file with the following + command: +

+
cat > mozconfig << "EOF"
+# If you have a multicore machine, all cores will be used.
+
+# If you have installed wireless-tools comment out this line:
+ac_add_options --disable-necko-wifi
+
+# If you wish to use libproxy to determine proxy server information, you will
+# need to install the libproxy package and then uncomment the option below:
+#ac_add_options --enable-libproxy
+
+# Uncomment the following option if you have not installed PulseAudio
+#ac_add_options --enable-audio-backends=alsa
+
+# Comment out following options if you have not installed
+# recommended dependencies:
+ac_add_options --with-system-libevent
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-webp
+
+# The BLFS editors recommend not changing anything below this line:
+ac_add_options --prefix=/usr
+ac_add_options --enable-application=comm/mail
+
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+ac_add_options --disable-debug
+ac_add_options --disable-debug-symbols
+ac_add_options --disable-tests
+
+# This enables SIMD optimization in the shipped encoding_rs crate.
+ac_add_options --enable-rust-simd
+
+ac_add_options --enable-strip
+ac_add_options --enable-install-strip
+
+# You cannot distribute the binary if you do this.
+ac_add_options --enable-official-branding
+
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-pixman
+
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-png
+ac_add_options --with-system-zlib
+
+# Using sandboxed wasm libraries has been moved to all builds instead
+# of only mozilla automation builds. It requires extra llvm packages
+# and was reported to seriously slow the build. Disable it.
+ac_add_options --without-wasm-sandboxed-libraries
+EOF
+

+ Change a Rust file to allow implicit autoref to prevent a + build failure. The trailing \r + ensures that the MS-DOS format is used for the inserted line + so that it will be consistent with all other lines in the + file: +

+
sed -e '1i\#![warn(dangerous_implicit_autorefs)]\r' \
+    -i third_party/rust/allocator-api2/src/stable/vec/mod.rs
+

+ Now invoke the Python mach script to compile + Thunderbird: +

+
+

+ Note +

+

+ If you are compiling this package in chroot you must ensure + that /dev/shm is mounted. If + you do not do this, the Python configuration will fail with a + traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py. + As the root user, run: +

+
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
+
+
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none &&
+export MOZBUILD_STATE_PATH=$(pwd)/mozbuild          &&
+./mach build
+

+ This package does not come with a test suite. +

+

+ Install Thunderbird by + running the following commands as the root user: +

+
MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none ./mach install
+

+ Empty the environment variables which were set above: +

+
unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE &&
+unset MOZBUILD_STATE_PATH
+
+
+

+ Command Explanations +

+

+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none: + Use the system python to create a virtual environment for + mach without + downloading any python wheels nor using the system python + modules. This prevent version mismatches between system + modules and bundled ones. +

+

+ ./mach build --verbose: Use this + alternative if you need details of which files are being + compiled, together with any C or C++ flags being used. +

+

+ ./mach build -jN: The build + should, by default, use all the online CPU cores. If using + all the cores causes the build to swap because you have + insufficient memory, using fewer cores can be faster. +

+

+ CC=gcc + CXX=g++: BLFS used to prefer to use gcc and g++ + instead of upstream's defaults of the clang programs. With the release of + gcc-12 the build takes longer with gcc and g++, primarily + because of extra warnings, and is bigger. Set these + environment variables before you + run the configure script if you wish to continue + to use gcc, g++. Building with GCC on i?86 is currently + broken. +

+
+
+

+ Configuring Thunderbird +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ If your Window Manager or Desktop Environment does not + allow you to configure a default browser, you can add a + configuration parameter to Thunderbird so that a browser will + start when you click on an Internet/intranet/local URL. The + procedure to check or modify any of the configuration + parameters is quite simple and the instructions here can be + used to view or modify any of the parameters. +

+

+ First, open the configuration dialog by opening the + “Edit” drop-down menu. Choose + “Settings” and then scroll down to the + bottom of the page. Then, click the “Config Editor” + button. Click on the “I accept the risk!” button. This will + display a list of the configuration preferences and + information related to each one. You can use the + “Filter:” bar to enter search criteria + and narrow down the listed items. Changing a preference can + be done using two methods. One, if the preference has a + boolean value (True/False), simply double-click on the + preference to toggle the value and two, for other + preferences simply right-click on the desired line, choose + “Modify” from the menu and change the + value. Creating new preference items is accomplished in the + same way, except choose “New” from the menu and provide the + desired data into the fields when prompted. +

+

+ If you use a desktop environment such as GNOME or KDE, a desktop file thunderbird.desktop may be created, in + order to include a “Thunderbird” entry in + the menu. Run the following commands as the root user: +

+
mkdir -pv /usr/share/{applications,pixmaps} &&
+
+cat > /usr/share/applications/thunderbird.desktop << "EOF" &&
+[Desktop Entry]
+Name=Thunderbird Mail
+Comment=Send and receive mail with Thunderbird
+GenericName=Mail Client
+Exec=thunderbird %u
+Terminal=false
+Type=Application
+Icon=thunderbird
+Categories=Network;Email;
+MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;x-scheme-handler/mailto;
+StartupNotify=true
+EOF
+
+ln -sfv /usr/lib/thunderbird/chrome/icons/default/default256.png \
+        /usr/share/pixmaps/thunderbird.png
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + thunderbird +
+
+ Installed Libraries: + Numerous libraries and modules in + the /usr/lib/thunderbird directory +
+
+ Installed Directory: + /usr/lib/thunderbird +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ thunderbird +

+
+

+ is Mozilla's email + and newsgroup client +

+
+
+
+
+
+
+
+

+ Tigervnc-1.15.0 +

+
+
+
+
+
+

+ Introduction to Tigervnc +

+

+ Tigervnc is an advanced VNC + (Virtual Network Computing) implementation. It allows + creation of an Xorg server not tied to a physical console and + also provides a client for viewing of the remote graphical + desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +
+

+ Note +

+

+ The version of Xorg may + eventually be a few versions out of date, but is required + for the customizations needed for this package. +

+
+ +

+ Tigervnc Dependencies +

+
+ Required +
+

+ CMake-4.1.0, FLTK-1.4.4, GnuTLS-3.8.10, libgcrypt-1.11.2, libjpeg-turbo-3.0.1, Linux-PAM-1.7.1, Pixman-0.46.4, + Xorg Applications, xinit-1.4.4, and + Xorg + Legacy Fonts +

+
+ Recommended +
+ +
+
+

+ Installation of Tigervnc +

+

+ First, make adjustments to the configuration files to make + them compatible with LFS systems: +

+
patch -Np1 -i ../tigervnc-1.15.0-configuration_fixes-1.patch
+

+ Now, make the package consistent with fltk-1.4.1 and later: +

+
sed -i "s/maximize)/::&/"         vncviewer/DesktopWindow.cxx &&
+sed -i "/FL_MINOR_VERSION/s/3/4/" CMakeLists.txt
+

+ Install tigervnc by running + the following commands: +

+
# Put code in place
+mkdir -p unix/xserver &&
+tar -xf ../xorg-server-21.1.18.tar.xz \
+    --strip-components=1              \
+    -C unix/xserver                   &&
+( cd unix/xserver &&
+  patch -Np1 -i ../xserver21.patch ) &&
+
+# Build viewer
+cmake -G "Unix Makefiles"          \
+      -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D INSTALL_SYSTEMD_UNITS=OFF \
+      -W no-dev .                  &&
+make &&
+
+# Build server
+pushd unix/xserver &&
+  autoreconf -fiv  &&
+
+  CPPFLAGS="-I/usr/include/drm"       \
+  ./configure $XORG_CONFIG            \
+      --disable-xwayland    --disable-dri        --disable-dmx         \
+      --disable-xorg        --disable-xnest      --disable-xvfb        \
+      --disable-xwin        --disable-xephyr     --disable-kdrive      \
+      --disable-devel-docs  --disable-config-hal --disable-config-udev \
+      --disable-unit-tests  --disable-selective-werror                 \
+      --disable-static      --enable-dri3                              \
+      --without-dtrace      --enable-dri2        --enable-glx          \
+      --with-pic &&
+  make  &&
+popd
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
#Install viewer
+make install &&
+mv  /usr/share/doc/tigervnc /usr/share/doc/tigervnc-1.15.0
+
+#Install server
+( cd unix/xserver/hw/vnc && make install ) &&
+
+[ -e /usr/bin/Xvnc ] || ln -svf $XORG_PREFIX/bin/Xvnc /usr/bin/Xvnc
+

+ Finally, modify the PAM file to be compatible with elogind: +

+
sed -i 's/pam_systemd.so/pam_elogind.so/' /etc/pam.d/tigervnc
+
+
+

+ Command Explanations +

+

+ tar -xf .. + xorg-server...: This command extracts the + standard Xorg package into the tree in a location needed for + modification. +

+

+ --disable ...: Most + options that are usually needed for the standard Xorg server + are not needed for the Xvnc instance being built. +

+

+ [ -e /usr/bin/Xvnc ] || ln ... + Xvnc: If the Xvnc server is not installed in + the /usr/bin directory, then + create a link so the vncserver script can find + it. +

+
+
+

+ Configuring Tigervnc +

+

+ The default installation of this package makes some changes + in the way it is used. The vncserver perl script is placed in + /usr/bin/libexec and the server is designed to be run via a + systemd style .service file or the vncsession script as the + root user. The man page for vncserver is placed in section 8 + of the man pages. The new procedures require a display + manager to be installed. +

+

+ To restore the previous behavior, install the additional + downloaded files as the root + user: +

+
install -m755 --owner=root ../vncserver /usr/bin &&
+cp ../vncserver.1 /usr/share/man/man1
+

+ Using the previous procedures, the user specific + configuration files of vncserver reside in the .vnc directory in the user's home + directory. The xstartup file in + that directory is a script specifying what commands to run + when a VNC desktop is started. If no xstartup file exists, vncserver will try to start + an xterm in a twm session. An example xstartup would be: +

+
#!/bin/sh
+[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
+[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
+startlxqt &
+

+ The xstartup file must be + executable for the commands in it to be executed, so run + chmod a+x + ~/.vnc/xstartup. +

+

+ Set up the vnc passwd with vncpasswd. The server can + then be started with the vncserver command. See the + man pages in section 1 for the vncserver for the server + system and vncviewer for the remote system. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + Xvnc, vncconfig, vncpasswd, + vncserver, vncviewer, and x0vncserver +
+
+ Installed Libraries: + libvnc.so +
+
+ Installed Directories: + /usr/share/doc/tigervnc-1.15.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Xvnc +

+
+

+ is a X VNC (Virtual Network Computing) server. It + is based on a standard X server, but it has a + “virtual” screen rather than a + physical one +

+
+

+ vncconfig +

+
+

+ is a program to configure and control a VNC server +

+
+

+ vncpasswd +

+
+

+ allows you to set the password used to access VNC + desktops +

+
+

+ vncserver +

+
+

+ is a perl script used to start or stop a VNC server +

+
+

+ vncviewer +

+
+

+ is a client used to connect to VNC desktops +

+
+

+ x0vncserver +

+
+

+ is a program to make an X display on a physical + terminal accessible via TigerVNC or compatible + viewers +

+
+
+
+
+
+
+
+

+ Transmission-4.0.6 +

+
+
+
+
+
+

+ Introduction to Transmission +

+

+ Transmission is a + cross-platform, open source BitTorrent client. This is useful + for downloading large files (such as Linux ISOs) and reduces + the need for the distributors to provide server bandwidth. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Transmission Dependencies +

+
+ Required +
+

+ cURL-8.15.0 +

+
+ Recommended +
+ +
+ Recommended (to build a GUI) +
+ +
+ Optional +
+

+ nodejs-22.18.0 (for building the web + client, not needed at run time), + appindicator, dht, libb64, libdeflate, + libnatpmp, + libutp, and + miniupnp +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/transmission +

+
+
+

+ Installation of Transmission +

+

+ First, fix a build failure due to incorrect statements in + CMakeLists.txt: +

+
patch -Np1 -i ../transmission-4.0.6-build_fix-1.patch
+

+ Next, adapt two of the third-party modules to changes in + CMake 4.0: +

+
sed -e 's/2.8/4.0/' -i third-party/dht/CMakeLists.txt \
+                       third-party/libnatpmp/CMakeLists.txt
+

+ Install Transmission by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_INSTALL_DOCDIR=/usr/share/doc/transmission-4.0.6 \
+      .. &&
+
+make
+

+ Now, as the root user: +

+
make install
+

+ Next, if the Gtkmm-4.18.0 dependency was installed, + create transmission.png from the SVG file. As the + root user: +

+
rsvg-convert                                               \
+   /usr/share/icons/hicolor/scalable/apps/transmission.svg \
+   -o /usr/share/pixmaps/transmission.png
+
+
+

+ Command Explanations +

+

+ -D ENABLE_QT=OFF: This switch + disables building the Qt + interface. The default is to build it if Qt-6.9.2 is installed. +

+

+ -D ENABLE_GTK=OFF: This switch + disables building the GTK-4 interface. The default is to + build it if Gtkmm-4.18.0 is installed. +

+

+ -D ENABLE_WEB=OFF: This switch + disables building the web client. The default is to build it + if nodejs-22.18.0 is installed. +

+

+ -D REBUILD_WEB=ON: This switch + forces rebuilding the web client. This option needs nodejs-22.18.0 to be installed as well + as an internet connection. The default is to not rebuild the + client. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + transmission-create, + transmission-daemon, transmission-edit, transmission-gtk, + transmission-qt, transmission-remote, and + transmission-show +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/transmission (contains + the web client) and + /usr/share/doc/transmission-4.0.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ transmission-create +

+
+

+ is a command line tool used to create .torrent + files +

+
+

+ transmission-daemon +

+
+

+ is a daemon-based Transmission session that can be + controlled via RPC commands from Transmission's web + interface or transmission-remote +

+
+

+ transmission-edit +

+
+

+ is a command line tool to modify .torrent files' + announce URLs +

+
+

+ transmission-gtk +

+
+

+ is a GTK+ bittorrent client +

+
+

+ transmission-qt +

+
+

+ is a Qt-based bittorrent client +

+
+

+ transmission-remote +

+
+

+ is a remote control utility for transmission-daemon + and transmission +

+
+

+ transmission-show +

+
+

+ is a command line tool to display bittorrent + .torrent file metadata +

+
+
+
+
+
+
+
+

+ xarchiver-0.5.4.25 +

+
+
+
+
+
+

+ Introduction to xarchiver +

+

+ XArchiver is a GTK+ archive manager with support for + tar, xz, bzip2, gzip, zip, 7z, rar, lzo and many other + archive formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ xarchiver is only a + command line or graphical interface to archiving utilities + such as tar and + zip. +

+
+

+ Package Information +

+
+ +
+

+ xarchiver Dependencies +

+
+ Required +
+

+ GTK-3.24.50 +

+
+ Optional (Runtime) +
+

+ 7zip-25.01, cpio-2.15, LZO-2.10, UnRar-7.1.10, Zip-3.0, and + unzip +

+
+
+

+ Installation of xarchiver +

+

+ BLFS provides unzip as a symlink to + bsdunzip from + libarchive-3.8.1, but it doesn't work + for xarchiver. Adapt xarchiver to use 7zip-25.01 for handling + .zip files by default instead: +

+
sed '/TOGGLE.*prefer_unzip/s/TRUE/FALSE/' -i src/pref_dialog.c
+
+

+ Note +

+

+ If you've already installed and run this package before + (maybe in another distro if your /home is a partition shared with that + distro), it's likely already configured to prefer + unzip. Unset + the “Prefer unzip + for zip files” checkbox in the “Action => + Preferences” dialog to change the + configuration. +

+
+

+ Install xarchiver by running + the following commands: +

+
./configure  --prefix=/usr               \
+             --libexecdir=/usr/lib/xfce4 \
+             --docdir=/usr/share/doc/xarchiver-0.5.4.25 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ --libexecdir=/usr/lib/xfce4: + This switch fixes the location for the thunar-archive-plugin, + so it will work if thunar-4.20.4 is installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + xarchiver +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/xfce4/thunar-archive-plugin, + /usr/share/doc/xarchiver-0.5.4.25, and + /usr/share/pixmaps/xarchiver +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ xarchiver +

+
+

+ is a GTK+ archive + manager +

+
+
+
+
+
+
+
+

+ xdg-utils-1.2.1 +

+
+
+
+
+
+

+ Introduction to xdg-utils +

+

+ xdg-utils is a set of + command line tools that assist applications with a variety of + desktop integration tasks. It is required for Linux Standards + Base (LSB) conformance. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ xdg-utils Dependencies +

+
+ Required +
+

+ xmlto-0.0.29 with one of Lynx-2.9.2, Links-2.30, or + W3m +

+
+ Required (runtime) +
+

+ Xorg Applications +

+
+ Optional (runtime) +
+

+ dbus-1.16.2 +

+
+
+

+ Installation of xdg-utils +

+

+ Compile xdg-utils with the + following commands: +

+
./configure --prefix=/usr &&
+make
+
+

+ Caution +

+

+ The tests for the scripts must be made from an X-Window + based session. There are several run-time requirements to + run the tests including a browser and an MTA. Running the + tests as root user is not + recommended. +

+
+

+ To run the tests, issue: make + -k test. +

+

+ Now install it as the root + user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xdg-desktop-menu, xdg-desktop-icon, + xdg-mime, xdg-icon-resource, xdg-open, xdg-email, + xdg-screensaver, xdg-settings +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ xdg-desktop-menu +

+
+

+ is a command line tool for (un)installing desktop + menu items +

+
+

+ xdg-desktop-icon +

+
+

+ is a command line tool for (un)installing icons to + the desktop +

+
+

+ xdg-mime +

+
+

+ is a command line tool for querying information + about file type handling and adding descriptions + for new file types +

+
+

+ xdg-icon-resource +

+
+

+ is a command line tool for (un)installing icon + resources +

+
+

+ xdg-open +

+
+

+ opens a file or URL in the user's preferred + application +

+
+

+ xdg-email +

+
+

+ opens the user's preferred e-mail composer in order + to send a mail message +

+
+

+ xdg-screensaver +

+
+

+ is a command line tool for controlling the + screensaver +

+
+

+ xdg-settings +

+
+

+ is a command line tool for managing various + settings from the desktop environment +

+
+
+
+
+
+
+
+

+ XScreenSaver-6.12 +

+
+
+
+
+
+

+ Introduction to XScreenSaver +

+

+ The XScreenSaver package is + a modular screen saver and locker for the X Window System. It + is highly customizable and allows the use of any program that + can draw on the root window as a display mode. The purpose of + XScreenSaver is to display + pretty pictures on your screen when it is not in use, in + keeping with the philosophy that unattended monitors should + always be doing something interesting, just like they do in + the movies. However, XScreenSaver can also be used as a + screen locker, to prevent others from using your terminal + while you are away. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ This tarball expands to xscreensaver-6.10 and not the + expected xscreensaver-6.10.1. +

+
+

+ Package Information +

+
+ +
+

+ XScreenSaver Dependencies +

+
+ Required +
+

+ GTK-3.24.50 and Xorg Applications +

+
+ Recommended +
+ +
+ Optional +
+

+ GDM-48.0, + FFmpeg-7.1.1, Linux-PAM-1.7.1, + MIT Kerberos V5-1.22.1, and + GLE +

+
+
+

+ Installation of XScreenSaver +

+

+ Install XScreenSaver by + running the following commands: +

+
./configure --prefix=/usr --with-elogind &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-setuid-hacks: This switch + allows some demos to be installed setuid root which is needed in order to ping + other hosts. +

+
+
+

+ Configuring XScreenSaver +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/X11/app-defaults/XScreenSaver and + ~/.xscreensaver +

+
+
+
+
+
+

+ Linux PAM Configuration +

+
+
+
+

+ If XScreenSaver has been + built with Linux PAM + support, you need to create a PAM configuration file, to get it + working correctly with BLFS. +

+

+ Issue the following commands as the root user to create the configuration + file for Linux PAM: +

+
cat > /etc/pam.d/xscreensaver << "EOF"
+# Begin /etc/pam.d/xscreensaver
+
+auth    include system-auth
+account include system-account
+
+# End /etc/pam.d/xscreensaver
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xscreensaver, xscreensaver-command, + xscreensaver-demo, and xscreensaver-settings +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/libexec/xscreensaver and + /usr/share/xscreensaver +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ xscreensaver +

+
+

+ is a screen saver and locker daemon +

+
+

+ xscreensaver-command +

+
+

+ controls a running xscreensaver + process by sending it client messages +

+
+

+ xscreensaver-demo +

+
+

+ is a symlink to xscreensaver-settings +

+
+

+ xscreensaver-settings +

+
+

+ is a graphical front-end for setting the parameters + used by the background xscreensaver + daemon +

+
+
+
+
+
+
+
+
+
+

+ Part XII. Multimedia +

+
+
+
+
+
+
+
+

+ Chapter 42. Multimedia + Libraries and Drivers +

+
+
+
+
+

+ Many multimedia programs require libraries and/or drivers in + order to function properly. The packages in this section fall + into this category. Generally you only need to install these if + you are installing a program which has the library listed as + either a requirement, or as an option to enable it to support + certain functionality. +

+
+
+
+

+ ALSA +

+
+
+
+
+

+ The Linux kernel now provides ALSA support by default. However, + applications need to interface to that capability. The + following six sections of the book deal with the separate + components of ALSA: the libraries, the plugins, the utilities, + the tools, and the firmware. +

+
+
+
+
+

+ alsa-lib-1.2.14 +

+
+
+
+
+
+

+ Introduction to ALSA Library +

+

+ The ALSA Library package + contains the ALSA library used by programs (including + ALSA Utilities) requiring + access to the ALSA sound interface. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ ALSA + Library Dependencies +

+
+ Recommended (Runtime) +
+

+ elogind-255.17 +

+
+

+ Note +

+

+ If the recommended runtime dependency is not installed, you + may need to run any application requiring ALSA library as + the root user or a user in + the audio group. +

+
+
+ Optional +
+

+ Doxygen-1.14.0 and Python2 +

+
+
+

+ Kernel + Configuration +

+

+ If needed, enable the following options in the kernel + configuration and recompile the kernel: +

+
Device Drivers --->
+  <*/M> Sound card support --->                                          [SOUND]
+    # Select settings and drivers appropriate for your hardware
+    # in the submenu:
+    <*/M> Advanced Linux Sound Architecture --->                           [SND]
+

+ In the Device Drivers ⇒ Sound card support ⇒ Advanced Linux + Sound Architecture section of the kernel configuration, + select the settings and drivers appropriate for your + hardware. If necessary, recompile and install your new + kernel. +

+
+
+

+ Installation of ALSA Library +

+

+ If running the test suite, remove a test that GCC-15 or later + fails to build: +

+
sed 's/playmidi1//' -i test/Makefile.am &&
+autoreconf -fi
+

+ Install ALSA Library by + running the following commands: +

+
./configure &&
+make
+

+ If you have Doxygen + installed and you wish to build the library API + documentation, run the following commands from the top-level + directory of the source tree: +

+
make doc
+

+ To test the results, issue: make check. +

+

+ Now, as the root user, + install the package and recommended configuration files: +

+
make install &&
+tar -C /usr/share/alsa --strip-components=1 -xf ../alsa-ucm-conf-1.2.14.tar.bz2
+

+ To install the API documentation, run the following command + as the root user: +

+
install -v -d -m755 /usr/share/doc/alsa-lib-1.2.14/html/search &&
+install -v -m644 doc/doxygen/html/*.* \
+                /usr/share/doc/alsa-lib-1.2.14/html &&
+install -v -m644 doc/doxygen/html/search/* \
+                /usr/share/doc/alsa-lib-1.2.14/html/search
+
+
+

+ Configuring ALSA Library +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.asoundrc and /etc/asound.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The default alsa.conf is + adequate for most installations. For extra functionality + and/or advanced control of your sound device, you may need + to create additional configuration files. For information + on the available configuration parameters, visit https://www.alsa-project.org/main/index.php/Asoundrc. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + aserver +
+
+ Installed Library: + libasound.so and + libatopology.so +
+
+ Installed Directories: + /usr/include/alsa, /usr/share/alsa + and /usr/share/doc/alsa-lib-1.2.14 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ aserver +

+
+

+ is the ALSA server +

+
+

+ libasound.so +

+
+

+ contains the ALSA API functions +

+
+

+ libatopology.so +

+
+

+ contains API functions for the ALSA topologies +

+
+
+
+
+
+
+
+

+ alsa-plugins-1.2.12 +

+
+
+
+
+
+

+ Introduction to ALSA Plugins +

+

+ The ALSA Plugins package + contains plugins for various audio libraries and sound + servers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ALSA + Plugins Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14 +

+
+ Optional +
+

+ FFmpeg-7.1.1, libsamplerate-0.2.2, PulseAudio-17.0, Speex-1.2.1, JACK, libavtp, + and maemo +

+
+
+

+ Installation of ALSA Plugins +

+

+ Install ALSA Plugins by + running the following commands: +

+
./configure --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + Numerous + libasound_module_<module>.so + modules including conf_pulse, ctl_arcam_av, ctl_oss, + ctl_pulse, pcm_a52, pcm_jack, pcm_oss, pcm_pulse, + pcm_speex, pcm_upmix, pcm_usb_stream, pcm_vdownmix, + rate_lavrate*, rate_samplerate*, and + rate_speexrate* +
+
+ Installed Directories: + /usr/lib/alsa-lib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ libasound_module_pcm_oss.so +

+
+

+ Allows native ALSA + applications to run on OSS +

+
+

+ libasound_module_pcm_upmix.so +

+
+

+ Allows upmixing sound to 4 or 6 channels +

+
+

+ libasound_module_pcm_vdownmix.so +

+
+

+ Allows downmixing sound from 4-6 channels to 2 + channel stereo output +

+
+

+ libasound_module_pcm_jack.so +

+
+

+ Allows native ALSA + applications to work with jackd +

+
+

+ libasound_module_pcm_pulse.so +

+
+

+ Allows native ALSA + applications to access a PulseAudio sound daemon +

+
+

+ libasound_module_pcm_a52.so +

+
+

+ Converts S16 linear sound format to A52 compressed + format and sends it to an SPDIF output +

+
+

+ libasound_module_rate_samplerate.so +

+
+

+ Provides an external rate converter through + libsamplerate +

+
+
+
+
+
+
+
+

+ alsa-utils-1.2.14 +

+
+
+
+
+
+

+ Introduction to ALSA Utilities +

+

+ The ALSA Utilities package + contains various utilities which are useful for controlling + your sound card. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ALSA + Utilities Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14 +

+
+ Optional +
+

+ docutils-0.21.2, fftw-3.3.10, libsamplerate-0.2.2, xmlto-0.0.29, + and Dialog +

+
+
+

+ Installation of ALSA Utilities +

+

+ Install ALSA Utilities by + running the following commands: +

+
./configure --disable-alsaconf \
+            --disable-bat      \
+            --disable-xmlto    \
+            --with-curses=ncursesw &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-alsaconf: + This switch disables building the alsaconf configuration tool + which is incompatible with Udev. +

+

+ --disable-xmlto: Omit + this switch if you have installed xmlto-0.0.29 and wish to + regenerate the man pages. +

+

+ --disable-bat: Omit + this switch if you have installed fftw-3.3.10 and wish to + install the Basic Audio Tester (BAT). +

+

+ --with-curses=ncursesw: This + switch forces the use of wide-character ncurses libraries. +

+
+
+

+ Configuring ALSA Utilities +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /var/lib/alsa/asound.state +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ As the root user, apply the + default setting for the sound card. Note that this command + may return an exit code of 99 although the card is + correctly initialized: +

+
alsactl init
+

+ Note that all channels of your sound card may be muted by + default. You can use the alsamixer program to + change this. Use speaker-test to check + that your settings have been applied correctly. You should + hear “pink + noise” on your speakers. +

+

+ The alsactl program is + normally run from a standard udev rule. The first time it is run, + it will complain that there is no state in /var/lib/alsa/asound.state. You can + prevent this by running the following command as the + root user: +

+
alsactl -L store
+

+ The volume settings should be restored from the saved state + by Udev when the device is + detected (during boot or when plugged in for USB devices). +

+

+ On systems which have multiple sound cards, you may need to + adjust the default audio device so that you can get output + from your speakers. To set the default device, first check + the /proc/asound/cards file + to determine which number you need to set. After you know + this information, set the default card with the following + command as the root user: +

+
cat > /etc/asound.conf << "EOF"
+# Begin /etc/asound.conf
+
+defaults.pcm.card 1
+defaults.ctl.card 1
+
+# End /etc/asound.conf
+EOF
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ To automatically store and restore volume settings (if the + udev rule doesn't work for you) when the system is + rebooted, install the /etc/rc.d/init.d/alsa boot script from + the blfs-bootscripts-20250225 package. +

+
make install-alsa
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + aconnect, alsactl, alsaloop, + alsamixer, alsatplg, alsaucm, alsa-info.sh, amidi, + amixer, aplay, aplaymidi, aplaymidi2, arecord (symlink), + arecordmidi, arecordmidi2, aseqdump, aseqnet, aseqsend, + axfer, iecset, nhlt-dmic-info, and speaker-test +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/alsa-topology, + /usr/share/sounds/alsa, and /var/lib/alsa +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ aconnect +

+
+

+ is a utility for connecting and disconnecting two + existing ports in the ALSA sequencer system +

+
+

+ alsactl +

+
+

+ is used to control advanced settings for ALSA sound + card drivers. Use this if alsamixer cannot utilize + all of your sound card's features +

+
+

+ alsaloop +

+
+

+ allows creation of a PCM loopback between a PCM + capture device and a PCM playback device +

+
+

+ alsamixer +

+
+

+ is an Ncurses based mixer program for use with the + ALSA sound card drivers +

+
+

+ alsatplg +

+
+

+ is a utility used to compile topology configuration + files into binary files for kernel drivers +

+
+

+ alsaucm +

+
+

+ allows applications to access the hardware in an + abstracted manner +

+
+

+ amidi +

+
+

+ is used to read from and write to ALSA RawMIDI + ports +

+
+

+ amixer +

+
+

+ allows command-line control of the mixers for the + ALSA sound card drivers +

+
+

+ aplay +

+
+

+ is a command-line soundfile player for the ALSA + sound card drivers +

+
+

+ aplaymidi +

+
+

+ is a command-line utility that plays the specified + MIDI file(s) to one or more ALSA sequencer ports +

+
+

+ aplaymidi2 +

+
+

+ is a command-line utility that plays the specified + MIDI clip file(s) to one or more ALSA sequencer + ports +

+
+

+ arecord +

+
+

+ is a command-line soundfile recorder for the ALSA + sound card drivers +

+
+

+ arecordmidi +

+
+

+ is a command-line utility that records a standard + MIDI file from one or more ALSA sequencer ports +

+
+

+ arecordmidi2 +

+
+

+ is a command-line utility that records a MIDI Clip + file from one or more ALSA sequencer ports +

+
+

+ aseqdump +

+
+

+ is a command-line utility that prints the sequencer + events it receives as text +

+
+

+ aseqnet +

+
+

+ is an ALSA sequencer client which sends and + receives event packets over a network +

+
+

+ aseqsend +

+
+

+ is a command-line utility to send arbitrary + messages to ALSA MIDI sequencer ports +

+
+

+ axfer +

+
+

+ is a command-line recorder and player used to + transfer audio frames between sound devices and + files +

+
+

+ iecset +

+
+

+ is a small utility to set or dump the IEC958 (or + so-called “S/PDIF”) status bits of the + specified sound card via the ALSA control API +

+
+

+ nhlt-dmic-info +

+
+

+ is a command-line utility that dumps microphone + array information from the ACPI NHLT table +

+
+

+ speaker-test +

+
+

+ is a command-line speaker test tone generator for + ALSA +

+
+
+
+
+
+
+
+

+ alsa-tools-1.2.14 +

+
+
+
+
+
+

+ Introduction to ALSA Tools +

+

+ The ALSA Tools package + contains advanced tools for certain sound cards. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ALSA + Tools Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14 +

+
+ Optional +
+

+ GTK-3.24.50 (to build hdajackretask), FLTK-1.4.4 (to + build hdspconf + and hdspmixer), + and GTK+-2 + (to build echomixer, envy24control, and + rmedigicontrol) +

+
+
+

+ Installation of ALSA Tools +

+
+

+ Note +

+

+ When installing multiple packages in a script, the + installation needs to be done as the root user. There are + three general options that can be used to do this: +

+
+
    +
  1. +

    + Run the entire script as the root user (not + recommended). +

    +
  2. +
  3. +

    + Use the sudo command from + the Sudo-1.9.17p2 package. +

    +
  4. +
  5. +

    + Use su -c "command + arguments" (quotes required) which + will ask for the root password for every iteration of + the loop. +

    +
  6. +
+
+

+ One way to handle this situation is to create a short + bash function + that automatically selects the appropriate method. Once the + command is set in the environment, it does not need to be + set again. +

+
as_root()
+{
+  if   [ $EUID = 0 ];        then $*
+  elif [ -x /usr/bin/sudo ]; then sudo $*
+  else                            su -c \\"$*\\"
+  fi
+}
+
+export -f as_root
+
+

+ First, start a subshell that will exit on error: +

+
bash -e
+

+ Now, remove some tools that need Qt2 or 3 or GTK+-2, + and also two unneeded files (for the BLFS instructions + below): +

+
rm -rf qlo10k1 echomixer envy24control rmedigicontrol Makefile gitcompile
+

+ The ALSA Tools package is + only needed by those with advanced requirements for their + sound card. The tools can be built all together at once, but + if only a subset is needed, you need to cd into the directory of + each tool you wish to compile and run the commands. Here, we + present instructions to build all tools. +

+

+ Install all ALSA Tools by + running the following commands: +

+
for tool in *
+do
+  case $tool in
+    seq )
+      tool_dir=seq/sbiload
+    ;;
+    * )
+      tool_dir=$tool
+    ;;
+  esac
+
+  pushd $tool_dir
+    ./configure --prefix=/usr
+    make
+    as_root make install
+    as_root /sbin/ldconfig
+  popd
+
+done
+unset tool tool_dir
+

+ Finally, exit the shell that was started earlier: +

+
exit
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + as10k1, cspctl, dl10k1, hda-verb, + hdajackretask, hdajacksensetest, hdspconf, hdsploader, + hdspmixer, hwmixvolume, init_audigy, init_audigy_eq10, + init_live, lo10k1, ld10k1, ld10k1d, mixartloader, + pcxhrloader, sbiload, sscape_ctl, us428control, + usx2yloader, and vxloader +
+
+ Installed Library: + liblo10k1.so +
+
+ Installed Directories: + /etc/hotplug, /usr/include/lo10k1, + /usr/share/ld10k1, and /usr/share/sounds +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ as10k1 +

+
+

+ is an assembler for the emu10k1 DSP chip present in + the Creative SB Live, PCI 512, and emu APS sound + cards. It is used to make audio effects such as a + flanger, chorus or reverb +

+
+

+ cspctl +

+
+

+ is an SB16/AWE32 Creative Signal Processor + (ASP/CSP) control program +

+
+

+ hdajackretask +

+
+

+ is a GUI to make it easy to retask your jacks - e + g, turn your Mic jack into an extra Headphone, or + make them both line outs and connect them to your + surround receiver +

+
+

+ hda-verb +

+
+

+ is a small program to send HD-Audio commands to the + given ALSA hwdep device on the hd-audio interface +

+
+

+ hdspconf +

+
+

+ is a GUI to control the Hammerfall HDSP Alsa + Settings. Up to four hdsp cards are supported +

+
+

+ hdsploader +

+
+

+ is used to load the firmware required by the + Hammerfall HDSP sound cards +

+
+

+ hdspmixer +

+
+

+ is the Linux equivalent of the Totalmix application + from RME. It is a tool to control the advanced + routing features of the RME Hammerfall DSP + soundcard series +

+
+

+ hwmixvolume +

+
+

+ allows you to control the volume of individual + streams on sound cards that use hardware mixing +

+
+

+ init_audigy* +

+
+

+ are tools used to initialize Creative Sound Blaster + Audigy-series cards +

+
+

+ init_live +

+
+

+ is a tool used to initialize Creative Sound Blaster + Live cards +

+
+

+ ld10k1 +

+
+

+ is the server of a EMU10K{1,2} patch loader for + ALSA +

+
+

+ lo10k1 +

+
+

+ is the client of a EMU10K{1,2} patch loader for + ALSA +

+
+

+ dl10k1 +

+
+

+ loads config dumps generated by lo10k1 and + ld10k1 +

+
+

+ ld10k1d +

+
+

+ is an init script for the ld10k1 patch + loader +

+
+

+ mixartloader +

+
+

+ is a helper program to load the firmware binaries + onto the Digigram's miXart board sound drivers. The + snd-mixart module requires this program. These + drivers don't work properly until the required + firmware files are loaded, i.e. no PCM nor mixer + devices will appear +

+
+

+ pcxhrloader +

+
+

+ is a helper program to load the firmware binaries + onto Digigram's pcxhr compatible board sound + drivers. The snd-pcxhr module requires this + program. These drivers don't work properly until + certain firmware files are loaded, i.e. no PCM nor + mixer devices will appear +

+
+

+ sbiload +

+
+

+ is an OPL2/3 FM instrument loader for the ALSA + sequencer +

+
+

+ sscape_ctl +

+
+

+ is an ALSA SoundScape control utility +

+
+

+ us428control +

+
+

+ is a Tascam US-428 control program +

+
+

+ usx2yloader +

+
+

+ is a helper program to load the 2nd Phase firmware + binaries onto the Tascam USX2Y USB sound cards. It + has proven to work so far for the US122, US224 and + US428. The snd-usb-usx2y module requires this + program +

+
+

+ vxloader +

+
+

+ is a helper program to load the firmware binaries + onto the Digigram's VX-board sound drivers. The + snd-vx222, snd-vxpocket, and snd-vxp440 modules + require this program. These drivers don't work + properly until certain firmware files are loaded, + i.e. no PCM nor mixer devices will appear +

+
+
+
+
+
+
+
+

+ alsa-firmware-1.2.4 +

+
+
+
+
+
+

+ Introduction to ALSA Firmware +

+

+ The ALSA Firmware package + contains firmware for certain sound cards. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ALSA + Firmware Dependencies +

+
+ Required +
+

+ alsa-tools-1.2.14 +

+
+ Optional +
+

+ AS31 (for rebuilding the + firmware from source) +

+
+
+

+ Installation of ALSA Firmware +

+

+ The ALSA Firmware package is + only needed by those with advanced requirements for their + sound card. See the README for configure options. +

+

+ Install ALSA Firmware by + running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + Several directories in + /lib/firmware and /usr/share/alsa/firmware +
+
+
+
+
+
+
+
+

+ AudioFile-0.3.6 +

+
+
+
+
+
+

+ Introduction to AudioFile +

+

+ The AudioFile package + contains the audio file libraries and two sound file support + programs useful to support basic sound file formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ AudioFile Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoc-10.2.1 and Valgrind-3.25.1 +

+
+
+

+ Installation of AudioFile +

+

+ Install AudioFile by running + the following commands: +

+
patch -Np1 -i ../audiofile-0.3.6-consolidated_patches-1.patch &&
+autoreconf -fiv                             &&
+
+./configure --prefix=/usr --disable-static  &&
+
+make
+

+ Now, as the root user: +

+
make install
+

+ To test the results, issue: make check. Note that the + tests will fail if the --disable-static option is used and + tests are executed before make + install. You have three options: +

+

+ (a) configure without --disable-static, run the tests, but do + not install, then start a fresh build using --disable-static + just for installing the package. +

+

+ (b) configure with --disable-static, but only run the tests + after the package is installed. +

+

+ (c) configure with --disable-static, but only run the tests + after a DESTDIR install. +

+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sfconvert and sfinfo +
+
+ Installed Libraries: + libaudiofile.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ sfinfo +

+
+

+ displays the sound file format, audio encoding, + sampling rate and duration for audio formats + supported by this library +

+
+

+ sfconvert +

+
+

+ converts sound file formats where the original + format and destination format are supported by this + library +

+
+

+ libaudiofile.so +

+
+

+ contains functions used by programs to support + AIFF, AIFF-compressed, Sun/NeXT, WAV and BIC audio + formats +

+
+
+
+
+
+
+
+

+ faac-1.31.1 +

+
+
+
+
+
+

+ Introduction to faac +

+

+ The faac application is an + encoder for a lossy sound compression scheme specified in + MPEG-2 Part 7 and MPEG-4 Part 3 standards and known as + Advanced Audio Coding (AAC). This encoder is useful for + producing files that can be played back on an iPod. Moreover, + the iPod does not understand other sound compression schemes + used in video files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ On GitHub we've forked the upstream repository into our own + lfs-book namespace and + recreated a tag for the release. This is done to ensure the + downloaded tarball file name to be correct and consistent + (i.e. it shouldn't change when using the browser instead of + a tool like wget). Our tag and the + upstream release tag are on the same commit, so we've not + introduced any change to the tarball content except the + name of its top-level directory (that Git does not track). +

+
+
+
+

+ Installation of faac +

+

+ Install faac by running the + following commands: +

+
./bootstrap                                &&
+./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. However, basic + functionality can be tested by encoding a sample WAV file + (the sample file is installed by the alsa-utils-1.2.14 + package: +

+
./frontend/faac -o Front_Left.mp4 /usr/share/sounds/alsa/Front_Left.wav
+

+ Then, decode the result using the faad program from the + FAAD2-2.11.2 package and play back the + decoded file (requires the aplay program from the + alsa-utils-1.2.14 package: +

+
faad Front_Left.mp4
+aplay Front_Left.wav
+

+ aplay should + identify the file as Signed 16 + bit Little Endian, Rate 48000 Hz, Stereo, and you + should hear the words “front left.” +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Other AAC encoders +

+

+ The quality of faac is not + up to par with the best AAC encoders currently available. + Also, it only supports AAC and not High Efficiency AAC (also + known as aacPlus), which provides better quality at low + bitrates by means of using the “spectral band + replication” technology. One example of an + alternative program for producing AAC and HE-AAC streams is: +

+
+
    +
  • +

    + + 3GPP Enhanced aacPlus general audio codec: + available in the source form, can encode only HE-AAC up + to 48 kbps out of the box, but the maximum bitrate can + be changed by editing the tuning table in the + FloatFR_sbrenclib/src/sbr_main.c + file. +

    +
  • +
+
+

+ Note, however, that the iPod supports only the Low Complexity + AAC profile, which is the default in faac, but is completely + unavailable in the 3GPP encoder. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + faac +
+
+ Installed Libraries: + libfaac.so and libmp4v2.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ faac +

+
+

+ is a command-line AAC encoder +

+
+

+ libfaac.so +

+
+

+ contains functions for encoding AAC streams +

+
+

+ libmp4v2.so +

+
+

+ contains functions for creating and manipulating + MP4 files +

+
+
+
+
+
+
+
+

+ FAAD2-2.11.2 +

+
+
+
+
+
+

+ Introduction to FAAD2 +

+

+ FAAD2 is a decoder for a + lossy sound compression scheme specified in MPEG-2 Part 7 and + MPEG-4 Part 3 standards and known as Advanced Audio Coding + (AAC). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ FAAD2 Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+
+

+ Installation of FAAD2 +

+

+ Install FAAD2 by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_SHARED_LIBS=ON      \
+      .. &&
+make
+

+ This package does not come with a test suite. However, basic + functionality can be tested by decoding the sample AAC file: +

+
./faad -o sample.wav ../../sample.aac
+

+ This should display a copyright message and the following + information about the sample file: +

+
+

+ sample.aac file info:
+ ADTS, 4.608 sec, 13 kbps, 16000 Hz
+ +
+   ---------------------
+  | Config:  2 Ch       |
+ +   ---------------------
+  | Ch |    Position    |
+ +   ---------------------
+  | 00 | Left front     |
+ +  | 01 | Right front    |
+ +   ---------------------
+

+
+

+ Now play the result (requires the aplay program from the + alsa-utils-1.2.14 package): +

+
aplay sample.wav
+

+ aplay should + identify the file as Signed 16 + bit Little Endian, Rate 16000 Hz, Stereo, and you + should hear some piano notes. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + faad +
+
+ Installed Library: + libfaad.so and + libfaad_drm.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ faad +

+
+

+ is a command-line utility for decoding AAC and MP4 + files +

+
+

+ libfaad.so +

+
+

+ contains functions for decoding AAC streams +

+
+
+
+
+
+
+
+

+ fdk-aac-2.0.3 +

+
+
+
+
+
+

+ Introduction to fdk-aac +

+

+ The fdk-aac package provides + the Fraunhofer FDK AAC library, which is purported to be a + high quality Advanced Audio Coding implementation. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of fdk-aac +

+

+ Install fdk-aac by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libfdk-aac.so +
+
+ Installed Directory: + /usr/include/fdk-aac +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libfdk-aac.so +

+
+

+ provides the functions used to encode audio in AAC + format +

+
+
+
+
+
+
+
+

+ FLAC-1.5.0 +

+
+
+
+
+
+

+ Introduction to FLAC +

+

+ FLAC is an audio CODEC + similar to MP3, but lossless, meaning that audio is + compressed without losing any information. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/xiph/flac/releases/download/1.5.0/flac-1.5.0.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 0bb45bcf74338b00efeec121fff27367 +

    +
  • +
  • +

    + Download size: 1.1 MB +

    +
  • +
  • +

    + Estimated disk space required: 25 MB (additional 170 MB + to run the test suite) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (additional 0.2 SBU to + run the test suite) +

    +
  • +
+
+

+ FLAC + Dependencies +

+
+ Optional +
+

+ libogg-1.3.6, DocBook-utils-0.6.14, Doxygen-1.14.0, and Valgrind-3.25.1 +

+
+
+

+ Installation of FLAC +

+

+ Install FLAC by running the + following commands: +

+
./configure --prefix=/usr            \
+            --disable-thorough-tests \
+            --docdir=/usr/share/doc/flac-1.5.0 &&
+make
+

+ To test the results, issue: make check. Note that if + you passed the --enable-exhaustive-tests and --enable-valgrind-testing parameters to + configure and + then run the test suite, it will take a very long time (up to 300 SBUs) + and use about 375 MB of disk space. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-thorough-tests: This + parameter is used so that the test suite will complete in a + reasonable amount of time. Remove it if you desire more + extensive tests. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + flac and metaflac +
+
+ Installed Libraries: + libFLAC.so and libFLAC++.so +
+
+ Installed Directories: + /usr/include/FLAC, + /usr/include/FLAC++ and /usr/share/doc/flac-1.5.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ flac +

+
+

+ is a command-line utility for encoding, decoding + and converting FLAC files +

+
+

+ metaflac +

+
+

+ is a program for listing, adding, removing, or + editing metadata in one or more FLAC files +

+
+

+ libFLAC{,++}.so +

+
+

+ these libraries provide native FLAC and Ogg FLAC + C/C++ APIs for programs utilizing FLAC +

+
+
+
+
+
+
+
+

+ frei0r-2.3.3 +

+
+
+
+
+
+

+ Introduction to Frei0r +

+

+ Frei0r is a minimalistic + plugin API for video effects. Note that the 0 in the name is + a zero, not a capital letter o. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Frei0r Dependencies +

+
+ Recommended +
+

+ gavl-1.4.0 +

+
+ Optional +
+

+ Doxygen-1.14.0 and opencv-4.12.0 +

+
+
+

+ Installation of frei0r +

+

+ Install Frei0r by running + the following commands: +

+
mkdir -vp build &&
+cd        build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -W no-dev .. &&
+
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ -D WITHOUT_OPENCV=TRUE: This + option instructs the make procedure to disable building + plugins dependent upon opencv. +

+

+ -D WITHOUT_GAVL=TRUE: This option + instructs the make procedure to disable building plugins + dependent upon gavl. +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + Over 150 video effects + plugins +
+
+ Installed Directories: + /usr/lib/frei0r-1 +
+
+
+
+
+
+
+
+

+ gavl-1.4.0 +

+
+
+
+
+
+

+ Introduction to Gavl +

+

+ Gavl is short for Gmerlin + Audio Video Library. It is a low level library that handles + the details of audio and video formats like colorspaces, + samplerates, multichannel configurations etc. It provides + standardized definitions for those formats as well as + container structures for carrying audio samples or video + images inside an application. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gavl + Dependencies +

+
+ Required +
+

+ libpng-1.6.50 +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of Gavl +

+

+ First, fix an issue with gcc-14 and later: +

+
sed -i "/stdio/a #include <string.h>" src/fill_test.c
+

+ Now, install Gavl by running + the following commands: +

+
LIBS=-lm                         \
+./configure --prefix=/usr        \
+            --without-doxygen    \
+            --with-cpuflags=none \
+            --docdir=/usr/share/doc/gavl-1.4.0 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ LIBS=-lm: This variable ensures + the math library is searched when linking. +

+

+ --without-doxygen: + This switch disables use of Doxygen. Omit if Doxygen is + installed and you wish to build the API documentation. +

+

+ --with-cpuflags=none: + This switch fixes a problem identifying capabilities of the + system architecture. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Libraries: + libgavl.so +
+
+ Installed Directories: + /usr/include/gavl and + /usr/share/doc/gavl-1.4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgavl.so +

+
+

+ is the Gmerlin Audio Video Library +

+
+
+
+
+
+
+
+

+ gstreamer-1.26.5 +

+
+
+
+
+
+

+ Introduction to gstreamer +

+

+ gstreamer is a streaming + media framework that enables applications to share a common + set of plugins for tasks such as video encoding and decoding, + audio encoding and decoding, audio and video filters, audio + visualisation, web streaming and anything else that streams + in real-time or otherwise. This package only provides base + functionality and libraries. You may need at least gst-plugins-base-1.26.5 and one + of Good, Bad, Ugly or Libav plugins. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ gstreamer Dependencies +

+
+ Required +
+

+ GLib-2.84.4 (GObject Introspection required + for GNOME) +

+
+ Optional +
+

+ GTK-3.24.50 (for examples), gsl-2.8 (used by one test if + installed), libnsl-2.0.1, libunwind-1.8.2, + rustc-1.89.0 (for IEEE 1588:2008 PTP clock + support), Valgrind-3.25.1, bash-completion, + hotdoc, and libdw +

+
+
+

+ Installation of gstreamer +

+

+ Install gstreamer by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gst_debug=false  &&
+ninja
+

+ To test the results, issue: ninja test. +

+
+

+ Caution +

+

+ If you are reinstalling gstreamer from a previous version, it + is best if you remove the prior version, including plugins, + before installing the new version. If there is a mixture of + versions installed, using processes may hang or not work + properly. As the root user: +

+
rm -rf /usr/bin/gst-* /usr/{lib,libexec}/gstreamer-1.0
+
+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gst-inspect-1.0, gst-launch-1.0, + gst-stats-1.0, gst-tester-1.0, and + gst-typefind-1.0 +
+
+ Installed Libraries: + libgstbase-1.0.so, + libgstcheck-1.0.so, libgstcontroller-1.0.so, + libgstnet-1.0.so, and libgstreamer-1.0.so +
+
+ Installed Directories: + /usr/{include,lib,libexec,share}/gstreamer-1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gst-inspect-1.0 +

+
+

+ is a tool that prints out information on available + gstreamer plugins, + information about a particular plugin, or + information about a particular element +

+
+

+ gst-launch-1.0 +

+
+

+ is a tool that builds and runs basic gstreamer pipelines +

+
+

+ gst-stats-1.0 +

+
+

+ is a tool used to gather statistics about + gstreamer + operations +

+
+

+ gst-tester-1.0 +

+
+

+ runs a test plan in TAP compatible format while + integrating with the meson test harness +

+
+

+ gst-typefind-1.0 +

+
+

+ uses the gstreamer + type finding system to determine the relevant + gstreamer plugin + to parse or decode files, and the corresponding + MIME type +

+
+

+ libgstbase-1.0.so +

+
+

+ provides some base classes to be extended by + elements and utility classes that are most useful + for plugin developers +

+
+

+ libgstcheck-1.0.so +

+
+

+ provides functionality for writing unit tests that + use the check framework +

+
+

+ libgstcontroller-1.0.so +

+
+

+ provides functionality to animate element + properties over time +

+
+

+ libgstnet-1.0.so +

+
+

+ provides network elements and objects +

+
+

+ libgstreamer-1.0.so +

+
+

+ provides all of the core gstreamer services, including + initialization, plugin management and types, as + well as the object hierarchy that defines elements + and bins, along with some more specialized elements +

+
+
+
+
+
+
+
+

+ gst-plugins-base-1.26.5 +

+
+
+
+
+
+

+ Introduction to GStreamer Base Plug-ins +

+

+ The GStreamer Base Plug-ins + is a well-groomed and well-maintained collection of + GStreamer plug-ins and + elements, spanning the range of possible types of elements + one would want to write for GStreamer. You will need at least one of + Good, Bad, Ugly or Libav plugins for GStreamer applications to function + properly. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GStreamer Base Plug-ins Dependencies +

+
+ Required +
+

+ gstreamer-1.26.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ graphene-1.10.8, GTK-3.24.50 (for examples), + Opus-1.5.2, SDL2-2.32.8, Valgrind-3.25.1, + hotdoc, libtheora, libvisual, Orc, and + Tremor +

+
+
+

+ Installation of GStreamer Base Plug-ins +

+
+

+ Note +

+

+ If you need a plugin for a given dependency, that + dependency needs to be installed before this package. +

+
+

+ Install GStreamer Base + Plug-ins by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..               \
+      --prefix=/usr          \
+      --buildtype=release    \
+      --wrap-mode=nodownload &&
+ninja
+

+ To test the results, issue: ninja test. The tests + require an X terminal running, or all of the GL tests will + fail. Five tests may produce timeouts on some systems + depending on their graphics hardware and speed. One test, + elements_appsrc, is known to + fail on some systems. +

+
+

+ Note +

+

+ When installing, the build process does some additional + linking. If you do not have Xorg in /usr, the LIBRARY_PATH + variable needs to be defined for the root user. If using + sudo to assume root, use the -E option to pass your current + environment variables for the install process. +

+
+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ --wrap-mode=nodownload: This + switch prevents meson from downloading any + optional dependency which is not installed on the system. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gst-device-monitor-1.0, + gst-discoverer-1.0, and gst-play-1.0 +
+
+ Installed Libraries: + libgstallocators-1.0.so, + libgstapp-1.0.so, libgstaudio-1.0.so, libgstfft-1.0.so, + libgstgl-1.0.so, libgstpbutils-1.0.so, libgstriff-1.0.so, + libgstrtp-1.0.so, libgstrtsp-1.0.so, libgstsdp-1.0.so, + libgsttag-1.0.so, libgstvideo-1.0.so, and several plugins + under /usr/lib/gstreamer-1.0 +
+
+ Installed Directories: + /usr/include/gstreamer-1.0/gst/{allocators,app,audio,fft,gl,pbutils}, + /usr/include/gstreamer-1.0/gst/{riff,rtp,rtsp,sdp,tag,video}, + and /usr/share/gst-plugins-base +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ gst-device-monitor-1.0 +

+
+

+ is a command line tool that can be used to test + GStreamer's device monitoring functionality +

+
+

+ gst-discoverer-1.0 +

+
+

+ is a tool that can be used to print basic metadata + and stream information about a media file +

+
+

+ gst-play-1.0 +

+
+

+ is a command line tool that can be used to test + basic playback using the playbin element +

+
+
+
+
+
+
+
+

+ gst-plugins-good-1.26.5 +

+
+
+
+
+
+

+ Introduction to GStreamer Good Plug-ins +

+

+ The GStreamer Good Plug-ins + is a set of plug-ins considered by the GStreamer developers to have good + quality code, correct functionality, and the preferred + license (LGPL for the plug-in code, LGPL or LGPL-compatible + for the supporting library). A wide range of video and audio + decoders, encoders, and filters are included. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GStreamer Good Plug-ins Dependencies +

+
+ Required +
+

+ gst-plugins-base-1.26.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ AAlib-1.4rc5, GTK-3.24.50 (for examples), libdv-1.0.0, + Qt-6.9.2, + Speex-1.2.1, taglib-2.1.1, Valgrind-3.25.1, + v4l-utils-1.30.1, Wayland-1.24.0, + alsa-oss, + hotdoc, JACK, libcaca, libavc1394, + libiec61883, + libraw1394, + libshout, + libsoup2, + Orc, + TwoLame, + and WavPack +

+
+
+

+ Installation of GStreamer Good Plug-ins +

+
+

+ Note +

+

+ If you need a plugin for a given dependency, that + dependency needs to be installed before this package. +

+
+

+ Install GStreamer Good + Plug-ins by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release &&
+ninja
+

+ To test the results, issue: ninja test. One test, + elements_flvmux, is known to + fail on some systems. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + Several plugins under + /usr/lib/gstreamer-1.0 +
+
+ Installed Directories: + /usr/share/gstreamer-1.0/presets +
+
+
+
+
+
+
+
+

+ gst-plugins-bad-1.26.5 +

+
+
+
+
+
+

+ Introduction to GStreamer Bad Plug-ins +

+

+ The GStreamer Bad Plug-ins + package contains a set of plug-ins that aren't up to par + compared to the rest. They might be close to being good + quality, but they're missing something - be it a good code + review, some documentation, a set of tests, a real live + maintainer, or some actual wide use. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GStreamer Bad Plug-ins Dependencies +

+
+ Required +
+

+ gst-plugins-base-1.26.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ BlueZ-5.83, cURL-8.15.0, faac-1.31.1, FAAD2-2.11.2, + fdk-aac-2.0.3, GTK-3.24.50 (for examples), + gst-plugins-good-1.26.5 (for + one test), JSON-GLib-1.10.6, Little CMS-2.17, + libaom-3.12.1, libass-0.17.4, libexif-0.6.25 (for one test), librsvg-2.61.0, libsndfile-1.2.2, + libssh2-1.11.1, libusb-1.0.29, libwebp-1.6.0, libxkbcommon-1.11.0, libxml2-2.14.5, neon-0.35.0, Nettle-3.10.2 or + libgcrypt-1.11.2 (for SSL support in + the hls plugin, if both are not installed OpenSSL will be + used instead), opencv-4.12.0 (with additional modules), + OpenJPEG-2.5.3, Opus-1.5.2, Pango-1.56.4, + libqrencode-4.1.1, SBC-2.1, sdl12-compat-1.2.68, Valgrind-3.25.1, both Vulkan-Loader-1.4.321 and + glslc from shaderc-2025.3 + (for Vulkan plugin), Wayland-1.24.0 (GTK-3.24.50 must have been + compiled with wayland support), x265-4.1, zxing-cpp-2.3.0, + bs2b, Chromaprint, + dssim, Flite, + FluidSynth, Game + Music Emu, GSM (currently broken), + hotdoc, LADSPA, ldacBT, + libajantv2, + libavtp, + libdc1394-2, libdca, + libde265, libkate, + libmfx, + libmms, + libmodplug, + libnice, libofa, + libopenmpt, + libopenni, libsoup2, + libsrtp, lilv, + LRDF, + ltc-tools, microdns, + MJPEG + Tools, mplex2, + musepack, onnxruntime, + OpenAL, + OpenEXR, + OpenH264, Orc, + rtmpdump, spandsp, + Srt, svthevcenc, + + VO AAC, + VO AMRWB, WildMidi, + WPE-WebKit, WPEBackend-fdo, + ZBAR, and ZVBI +

+
+
+

+ Installation of GStreamer Bad Plug-ins +

+
+

+ Note +

+

+ If you need a plugin for a given dependency, that + dependency needs to be installed before this package. +

+
+

+ Install GStreamer Bad + Plug-ins by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gpl=enabled      &&
+ninja
+

+ To test the results, issue: ninja test. Several tests + need a terminal emulator in a graphical session. If gst-plugins-good-1.26.5 is not + installed, two tests, elements_rtpsrc and elements_rtpsink, will fail. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gpl=enabled: + Without this switch, plugins with dependencies on (A)GPL + licensed libraries are not built. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gst-transcoder-1.0 and + playout +
+
+ Installed Libraries: + libgstadaptivedemux-1.0.so, + libgstanalytics-1.0.so, libgstbadaudio-1.0.so, + libgstbasecamerabinsrc-1.0.so, libgstcuda-1.0.so, + libgstcodecparsers-1.0.so, libgstcodecs-1.0.so, + libgstdxva-1.0.so, libgstinsertbin-1.0.so, + libgstisoff-1.0.so, libgstmpegts-1.0.so, + libgstmse-1.0.so, libgstphotography-1.0.so, + libgstplay-1.0.so, libgstplayer-1.0.so, + libgstsctp-1.0.so, libgsttranscoder-1.0.so, + libgsturidownloader-1.0.so, libgstva-1.0.so, + libgstwayland-1.0.so, libgstwebrtc-1.0.so, and several + plugins under /usr/lib/gstreamer-1.0 +
+
+ Installed Directories: + /usr/include/gstreamer-1.0/gst/{audio,basecamerabinsrc,cuda}, + /usr/include/gstreamer-1.0/gst/{codecparsers,insertbin,interfaces}, + /usr/include/gstreamer-1.0/gst/{isoff,mpegts,play,player,sctp} + /usr/include/gstreamer-1.0/gst/{transcoder,uridownloader,va}, + and + /usr/include/gstreamer-1.0/gst/{wayland,webrtc} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gst-transcoder-1.0 +

+
+

+ is used to transcode a stream into a different + format +

+
+

+ playout +

+
+

+ is an example application used to sequentially play + a list of audio-video files +

+
+
+
+
+
+
+
+

+ gst-plugins-ugly-1.26.5 +

+
+
+
+
+
+

+ Introduction to GStreamer Ugly Plug-ins +

+

+ The GStreamer Ugly Plug-ins + is a set of plug-ins considered by the GStreamer developers to have good + quality and correct functionality, but distributing them + might pose problems. The license on either the plug-ins or + the supporting libraries might not be how the GStreamer developers would like. The + code might be widely known to present patent problems. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GStreamer Ugly Plug-ins Dependencies +

+
+ Required +
+

+ gst-plugins-base-1.26.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ libmpeg2-0.5.1, libcdio-2.1.0 (for + CD-ROM drive access), Valgrind-3.25.1, hotdoc, libsidplay, + and Orc +

+
+
+

+ Installation of GStreamer Ugly Plug-ins +

+
+

+ Note +

+

+ If you need a plugin for a given dependency, that + dependency needs to be installed before this package. +

+
+

+ Install GStreamer Ugly + Plug-ins by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gpl=enabled      &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D gpl=enabled: + Without this switch, plugins with dependencies on (A)GPL + licensed libraries are not built. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + Several plugins under + /usr/lib/gstreamer-1.0 +
+
+ Installed Directories: + None +
+
+
+
+
+
+
+
+

+ gst-libav-1.26.5 +

+
+
+
+
+
+

+ Introduction to GStreamer Libav +

+

+ The GStreamer Libav package + contains GStreamer plugins + for Libav (a fork of + FFmpeg). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ GStreamer Libav Dependencies +

+
+ Required +
+

+ FFmpeg-7.1.1 and gst-plugins-base-1.26.5 +

+
+ Recommended +
+ +
+ Optional +
+

+ hotdoc +

+
+
+

+ Installation of GStreamer Libav +

+

+ Install GStreamer Libav by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release &&
+ninja
+

+ To run the tests, issue: ninja + test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libgstlibav.so in + /usr/lib/gstreamer-1.0 +
+
+ Installed Directory: + None +
+
+
+
+
+
+
+
+

+ id3lib-3.8.3 +

+
+
+
+
+
+

+ Introduction to id3lib +

+

+ id3lib is a library for + reading, writing and manipulating id3v1 and id3v2 multimedia + data containers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +
+
+

+ Installation of Id3lib +

+

+ Install id3lib by running + the following commands: +

+
patch -Np1 -i ../id3lib-3.8.3-consolidated_patches-1.patch &&
+
+libtoolize -fc                &&
+aclocal                       &&
+autoconf                      &&
+automake --add-missing --copy &&
+
+./configure --prefix=/usr --disable-static &&
+make
+

+ This packages does not come with a working test suite. +

+

+ Now, as the root user: +

+
make install  &&
+cp doc/man/* /usr/share/man/man1 &&
+
+install -v -m755 -d /usr/share/doc/id3lib-3.8.3 &&
+install -v -m644 doc/*.{gif,jpg,png,ico,css,txt,php,html} \
+                    /usr/share/doc/id3lib-3.8.3
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + id3convert, id3cp, id3info, and + id3tag +
+
+ Installed Library: + libid3.so +
+
+ Installed Directories: + /usr/include/id3 and + /usr/share/doc/id3lib-3.8.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ id3convert +

+
+

+ converts between id3v1/v2 tagging formats +

+
+

+ id3cp +

+
+

+ extracts id3v1/v2 tags from digital audio files +

+
+

+ id3info +

+
+

+ prints id3v1/v2 tag contents +

+
+

+ id3tag +

+
+

+ is a utility for editing id3v1/v2 tags +

+
+

+ libid3.so +

+
+

+ provides functions for the id3v1/v2 tag editing + programs as well as other external programs and + libraries +

+
+
+
+
+
+
+
+

+ intel-media-driver-25.2.6 +

+
+
+
+
+
+

+ Introduction to intel-media-driver +

+

+ The intel-media-driver + package provides a VA API driver for Intel GPUs that are + provided with Broadwell CPUs and higher. This includes + support for a variety of codecs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ On GitHub we've forked the upstream repository into our own + lfs-book namespace and + recreated a tag for the release. This is done to ensure the + downloaded tarball file name to be correct and consistent + (i.e. it shouldn't change when using the browser instead of + a tool like wget). Our tag and the + upstream release tag are on the same commit, so we've not + introduced any change to the tarball content except the + name of its top-level directory (that Git does not track). +

+
+

+ intel-media-driver Dependencies +

+
+ Required +
+

+ CMake-4.1.0, gmmlib-22.8.1, libva-2.22.0, and + Xorg build + environment +

+
+
+

+ Kernel Configuration +

+

+ Enable the following options in the kernel configuration. + Recompile the kernel if necessary: +

+
Device Drivers --->
+  Graphics support --->
+    <*/M>   Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    < /*/M> Intel 8xx/9xx/G3x/G4x/HD Graphics                         [DRM_I915]
+    < /*/M> Intel Xe2 Graphics                                          [DRM_XE]
+    (*)       Force probe xe for selected Intel hardware IDs
+                                                       ...  [DRM_XE_FORCE_PROBE]
+

+ See Mesa Kernel Configuration for more + info about the i915 driver and the Xe driver. +

+
+
+

+ Installation of intel-media-driver +

+
+

+ Note +

+

+ This package takes a long time to build because it compiles + code specific to each individual generation of Intel GPUs + and for a variety of media codecs. +

+

+ If you know the model of your Intel GPU, you can pass the + -D{GEN{8,9,11,12},MTL,ARL,LNL,BMG,PTL}=OFF + option to the cmake command but leaving + the option for your GPU out. Note that the “GEN” number here + is the generation of the GPU, not the CPU. For example, + with an Intel Core i7-1065G7 CPU shipping a 11th-generation + Intel GPU, the -D{GEN{8,9,12},MTL,ARL,LNL,BMG,PTL}=OFF + option can be used so the code specific to the other + generations of Intel GPUs won't be built. +

+

+ To determine the model of the Intel GPU, install pciutils-3.14.0 and run lspci -nn | grep -Ei + 'VGA|DISPLAY' first. It will output some + information about the GPU, including the PCI vendor ID + (8086 for Intel) and the PCI + device ID. For example, with an Intel Core i5-11300H CPU, + the output is 8086:9a49. Now + searching for the registration of this device ID in the + intel-media-driver source tree: +

+
grep -ri 'RegisterDevice(0x9a49'
+

+ And determine the GPU model from the file name containing + the registration. For the example above, the file name is + media_sysinfo_g12.cpp, + indicating the model is GEN12. +

+
+

+ Install intel-media-driver + by running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$XORG_PREFIX \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5  \
+      -D INSTALL_DRIVER_SYSCONF=OFF        \
+      -D BUILD_TYPE=Release                \
+      -D MEDIA_BUILD_FATAL_WARNINGS=OFF    \
+      -G Ninja                             \
+      -W no-dev ..                         &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libigfxcmrt.so +
+
+ Installed Drivers: + iHD_drv_video.so +
+
+ Installed Directories: + /usr/include/igfxcmrt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libigfxcmrt.so +

+
+

+ provides API functions which allow running GPU + kernels on the render engine +

+
+
+
+
+
+
+
+

+ intel-vaapi-driver-2.4.1 +

+
+
+
+
+
+

+ Introduction to intel-vaapi-driver +

+

+ The intel-vaapi-driver + package contains a VA API driver for Intel GPUs that are + provided with Haswell CPUs and earlier. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ intel-vaapi-driver Dependencies +

+
+ Required +
+

+ libva-2.22.0 and Xorg build + environment +

+
+
+

+ Kernel Configuration +

+

+ Enable the following options in the kernel configuration. + Recompile the kernel if necessary: +

+
Device Drivers --->
+  Graphics support --->
+    <*/M>   Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    < /*/M> Intel 8xx/9xx/G3x/G4x/HD Graphics                         [DRM_I915]
+    < /*/M> Intel Xe2 Graphics                                          [DRM_XE]
+    (*)       Force probe xe for selected Intel hardware IDs
+                                                       ...  [DRM_XE_FORCE_PROBE]
+
+
+

+ Installation of intel-vaapi-driver +

+

+ Install the driver by running the following commands: +

+
./configure $XORG_CONFIG &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Driver: + i965_drv_video.so +
+
+
+
+
+
+
+
+

+ Liba52-0.8.0 +

+
+
+
+
+
+

+ Introduction to Liba52 +

+

+ liba52 is a free library for + decoding ATSC A/52 (also known as AC-3) streams. The A/52 + standard is used in a variety of applications, including + digital television and DVD. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+ Optional +
+

+ djbfft +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/liba52 +

+
+
+

+ Installation of Liba52 +

+

+ Install liba52 by running + the following commands: +

+
./configure --prefix=/usr           \
+            --mandir=/usr/share/man \
+            --enable-shared         \
+            --disable-static        \
+            CFLAGS="${CFLAGS:--g -O3} -fPIC" &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+cp liba52/a52_internal.h /usr/include/a52dec &&
+install -v -m644 -D doc/liba52.txt \
+    /usr/share/doc/liba52-0.8.0/liba52.txt
+
+
+

+ Command Explanations +

+

+ CFLAGS="${CFLAGS:--g -O3} + -fPIC": This appends -fPIC to CFLAGS + but use -g -O3 (the default of + this package) instead of an empty string when CFLAGS is not set. This is needed to compile + liba52 without runtime text + relocation. Runtime text relocation is prohibited on x86_64 + so -fPIC is strictly required. On + 32-bit x86 runtime text relocation is allowed but it's + insecure and it may waste physical RAM, so -fPIC is still better. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ cp liba52/a52_internal.h + ...: Copying this header file into + /usr/include/a52dec allows some other programs (such as + xine-lib) to compile and + link against a system installed liba52. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + a52dec and extract_a52 +
+
+ Installed Library: + liba52.so +
+
+ Installed Directories: + /usr/include/a52dec and + /usr/share/doc/liba52-0.8.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ a52dec +

+
+

+ plays ATSC A/52 audio streams +

+
+

+ extract_a52 +

+
+

+ extracts ATSC A/52 audio from an MPEG stream +

+
+

+ liba52.so +

+
+

+ provides functions for the programs dealing with + ATSC A/52 streams +

+
+
+
+
+
+
+
+

+ Libao-1.2.0 +

+
+
+
+
+
+

+ Introduction to Libao +

+

+ The libao package contains a + cross-platform audio library. This is useful to output audio + on a wide variety of platforms. It currently supports WAV + files, OSS (Open Sound System), ESD (Enlighten Sound Daemon), + ALSA (Advanced Linux Sound Architecture), NAS (Network Audio + system), aRTS (analog Real-Time Synthesizer), and PulseAudio + (next generation GNOME sound + architecture). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Libao Dependencies +

+
+ Optional +
+

+ a graphical + environment, alsa-lib-1.2.14, and PulseAudio-17.0 +

+
+
+

+ Installation of Libao +

+

+ First, fix a gcc-14 issue: +

+
sed -i '/limits.h/a #include <time.h>' src/plugins/pulse/ao_pulse.c
+

+ Install libao by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m644 README /usr/share/doc/libao-1.2.0
+
+
+

+ Configuring Libao +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/libao.conf and + ~/.libao +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Currently, the only configuration option available is + setting the default output device. Issue man libao.conf for + details. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libao.so and plugins under + /usr/lib/ao/plugins-4 +
+
+ Installed Directories: + /usr/include/ao, /usr/lib/ao and + /usr/share/doc/libao-1.2.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libao.so +

+
+

+ provides functions for programs wishing to output + sound over supported platforms +

+
+
+
+
+
+
+
+

+ libaom-3.12.1 +

+
+
+
+
+
+

+ Introduction to libaom +

+

+ The libaom package contains + a reference version of the Alliance for Open Media video + codec. This codec is a patent free alternative to H.265, and + is starting to be used throughout the internet. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://storage.googleapis.com/aom-releases/libaom-3.12.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 51e4e369c41f66d2f8f1ed83e2206908 +

    +
  • +
  • +

    + Download size: 5.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 125 MB (add 1 GB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.8 SBU (with parallelism=4, add + 128 SBU for tests) +

    +
  • +
+
+

+ libaom Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of libaom +

+

+ Install libaom by running + the following commands: +

+
mkdir aom-build &&
+cd    aom-build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_SHARED_LIBS=1       \
+      -D ENABLE_DOCS=no            \
+      -G Ninja .. &&
+ninja
+

+ To test the results, issue: ninja testdata && ninja + runtests. Note that the tests take an + extremely long time to run. +

+

+ Now, as the root user: +

+
ninja install &&
+rm -v /usr/lib/libaom.a
+
+
+

+ Command Explanations +

+

+ -D + BUILD_SHARED_LIBS=1: This switch builds shared + versions of the libraries. +

+

+ -D ENABLE_DOCS=no: + This switch disables building the documentation because it + fails due to an incompatibility with the latest version of + Doxygen-1.14.0. +

+

+ -D ENABLE_NASM=yes: Use this + switch if you have both yasm-1.3.0 and NASM-2.16.03 installed and wish to + use nasm instead of yasm. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + aomdec and aomenc +
+
+ Installed Libraries: + libaom.so +
+
+ Installed Directories: + /usr/include/aom +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ aomdec +

+
+

+ offers various decoders supported by this package, + including one for AV1 +

+
+

+ aomenc +

+
+

+ offers various encoders supported by this package, + including one for AV1 +

+
+

+ libaom.so +

+
+

+ contains functions that provide a reference + implementation of the AV1 codec +

+
+
+
+
+
+
+
+

+ libass-0.17.4 +

+
+
+
+
+
+

+ Introduction to libass +

+

+ libass is a portable + subtitle renderer for the ASS/SSA (Advanced Substation + Alpha/Substation Alpha) subtitle format that allows for more + advanced subtitles than the conventional SRT and similar + formats. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libass Dependencies +

+
+ Required +
+

+ FreeType-2.13.3 and FriBidi-1.0.16 +

+
+ Recommended +
+ +
+ Optional +
+

+ harfBuzz-11.4.1 and libunibreak +

+
+
+

+ Installation of libass +

+

+ Install libass by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-fontconfig: Use this + switch if you didn't install Fontconfig. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libass.so +
+
+ Installed Directory: + /usr/include/ass +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libass.so +

+
+

+ provides the functions used to render ASS/SSA + subtitle format +

+
+
+
+
+
+
+
+

+ libcanberra-0.30 +

+
+
+
+
+
+

+ Introduction to libcanberra +

+

+ libcanberra is an + implementation of the XDG Sound Theme and Name + Specifications, for generating event sounds on free desktops, + such as GNOME. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ libcanberra Dependencies +

+
+ Required +
+

+ libvorbis-1.3.7 +

+
+ Recommended +
+ +
+ Optional +
+

+ PulseAudio-17.0, GTK+-2 + and tdb +

+
+ Recommended Sound Theme (Run Time) +
+ +
+
+

+ Installation of libcanberra +

+

+ First, apply a patch to fix an issue causing some + applications to crash in Wayland-based desktop environments: +

+
patch -Np1 -i ../libcanberra-0.30-wayland-1.patch
+

+ Install libcanberra by + running the following commands: +

+
./configure --prefix=/usr --disable-oss &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc/libcanberra-0.30 install
+
+
+

+ Command Explanations +

+

+ --disable-oss: + disables optional deprecated OSS support +

+

+ --disable-gtk3: disables optional + support for GTK+-3 +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + canberra-boot and + canberra-gtk-play +
+
+ Installed Libraries: + libcanberra-gtk3.so and + libcanberra.so +
+
+ Installed Directories: + /usr/lib/libcanberra-0.30, + /usr/share/doc/libcanberra-0.30 and + /usr/share/gtk-doc/html/libcanberra +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ canberra-gtk-play +

+
+

+ is an application used for playing sound events +

+
+

+ libcanberra-gtk3.so +

+
+

+ contains the libcanberra bindings for + GTK+ 3 +

+
+

+ libcanberra.so +

+
+

+ contains the libcanberra API functions +

+
+
+
+
+
+
+
+

+ libcddb-1.3.2 +

+
+
+
+
+
+

+ Introduction to libcddb +

+

+ The libcddb is a library + that implements the different protocols (CDDBP, HTTP, SMTP) + to access data on a CDDB server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of libcddb +

+

+ By default this package accesses freedb.org, which is already closed. + Modify the default to use gnudb.gnudb.org instead, and fix two + stale test data files: +

+
sed -e '/DEFAULT_SERVER/s/freedb.org/gnudb.gnudb.org/' \
+    -e '/DEFAULT_PORT/s/888/&0/'                       \
+    -i include/cddb/cddb_ni.h                          &&
+sed '/^Genre:/s/Trip-Hop/Electronic/' -i tests/testdata/920ef00b.txt &&
+sed '/DISCID/i# Revision: 42'         -i tests/testcache/misc/12340000
+

+ Fix a problem building with gcc-14 and later: +

+
sed -i 's/size_t l;/socklen_t l;/' lib/cddb_net.c
+

+ Install libcddb by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check -k. The test + suite needs the Internet connection. One test fails due to + missing test server. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cddb_query +
+
+ Installed Library: + libcddb.so +
+
+ Installed Directories: + /usr/include/cddb +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ cddb_query +

+
+

+ provides a user interface to a CDDB server +

+
+
+
+
+
+
+
+

+ libcdio-2.1.0 +

+
+
+
+
+
+

+ Introduction to libcdio +

+

+ The libcdio is a library for + CD-ROM and CD image access. The associated libcdio-cdparanoia library reads audio + from the CD-ROM directly as data, with no analog step + between, and writes the data to a file or pipe as .wav, .aifc + or as raw 16 bit linear PCM. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://ftp.gnu.org/gnu/libcdio/libcdio-2.1.0.tar.bz2 +

    +
  • +
  • +

    + Download MD5 sum: aa7629e8f73662a762f64c444b901055 +

    +
  • +
  • +

    + Download size: 1.7 MB +

    +
  • +
  • +

    + Estimated disk space required: 53 MB (both packages, + including checks) +

    +
  • +
  • +

    + Estimated build time: 0.2 SBU (using parallelism=4; + both packages, including checks) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ libcdio Dependencies +

+
+ Optional +
+

+ libcddb-1.3.2 +

+
+
+

+ Installation of libcdio +

+

+ If you are building on an i686 system, fix a build issue + caused by large file support: +

+
sed '/CDIO_LSEEK/s/lseek64/lseek/' -i lib/driver/_cdio_generic.c
+

+ Install libcdio by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check -k. One test + named realpath is known to + fail. +

+

+ Now, as the root user: +

+
make install
+

+ Now install libcdio-paranoia: +

+
tar -xf ../libcdio-paranoia-10.2+2.0.2.tar.bz2 &&
+cd libcdio-paranoia-10.2+2.0.2 &&
+
+./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cdda-player, cd-drive, cd-info, + cd-paranoia, cd-read, iso-info, iso-read, and + mmc-tool +
+
+ Installed Library: + libcdio.so, libcdio++.so, + libcdio_cdda, libcdio_paranoia, libiso9660, libiso9660++, + and libudf.so +
+
+ Installed Directories: + /usr/include/cdio and + /usr/include/cdio++ +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cd-drive +

+
+

+ shows CD-ROM drive characteristics +

+
+

+ cd-info +

+
+

+ shows information about a CD or CD-image +

+
+

+ cd-paranoia +

+
+

+ is an audio CD reading utility which includes extra + data verification features +

+
+

+ cd-read +

+
+

+ reads Information from a CD or CD-image +

+
+

+ cdda-player +

+
+

+ is a simple curses CD player +

+
+

+ iso-info +

+
+

+ shows Information about an ISO 9660 image +

+
+

+ iso-read +

+
+

+ reads portions of an ISO 9660 image +

+
+

+ mmc-tool +

+
+

+ issues libcdio multimedia commands +

+
+

+ libcdio.so +

+
+

+ contains the primary cdio API functions +

+
+
+
+
+
+
+
+

+ libdvdcss-1.4.3 +

+
+
+
+
+
+

+ Introduction to libdvdcss +

+

+ libdvdcss is a simple + library designed for accessing DVDs as a block device without + having to bother about the decryption. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libdvdcss Dependencies +

+
+ Optional (to Create Documentation) +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of libdvdcss +

+

+ Install libdvdcss by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libdvdcss-1.4.3 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libdvdcss.so +
+
+ Installed Directories: + /usr/include/dvdcss and + /usr/share/doc/libdvdcss-1.4.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libdvdcss.so +

+
+

+ provides the functionality that is required for + transparent DVD access with CSS decryption +

+
+
+
+
+
+
+
+

+ Libdvdread-6.1.3 +

+
+
+
+
+
+

+ Introduction to Libdvdread +

+

+ libdvdread is a library + which provides a simple foundation for reading DVDs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Libdvdread +

+

+ Install libdvdread by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libdvdread-6.1.3 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libdvdread.so +
+
+ Installed Directories: + /usr/include/dvdread and + /usr/share/doc/libdvdread-6.1.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libdvdread.so +

+
+

+ provides functionality required to access DVDs +

+
+
+
+
+
+
+
+

+ Libdvdnav-6.1.1 +

+
+
+
+
+
+

+ Introduction to Libdvdnav +

+

+ libdvdnav is a library that + allows easy usage of sophisticated DVD navigation features + including DVD menus, multiangle playback, and even + interactive DVD games. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Libdvdnav Dependencies +

+
+ Required +
+

+ libdvdread-6.1.3 +

+
+
+

+ Installation of Libdvdnav +

+

+ Install libdvdnav by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libdvdnav-6.1.1 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libdvdnav.so +
+
+ Installed Directories: + /usr/include/dvdnav and + /usr/share/doc/libdvdnav-6.1.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libdvdnav.so +

+
+

+ is the DVD navigation library +

+
+
+
+
+
+
+
+

+ Libdv-1.0.0 +

+
+
+
+
+
+

+ Introduction to Libdv +

+

+ The Quasar DV Codec (libdv) + is a software CODEC for DV video, the encoding format used by + most digital camcorders. It can be used to copy videos from + camcorders using a firewire (IEEE 1394) connection. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Libdv Dependencies +

+
+ Optional +
+

+ popt-1.19, + sdl12-compat-1.2.68, and a graphical + environment +

+
+
+

+ Installation of Libdv +

+

+ Install libdv by running the + following commands: +

+
./configure --prefix=/usr    \
+            --disable-xv     \
+            --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m755 -d      /usr/share/doc/libdv-1.0.0 &&
+install -v -m644 README* /usr/share/doc/libdv-1.0.0
+
+
+

+ Command Explanations +

+

+ --disable-xv: This + parameter is required if an X + Window System is not installed. It also prevents + configure + testing for libXv which is only + used for an obsolete program playdv that will not be + built with current linux + headers and would also need other obsolete dependencies. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dubdv, dvconnect, and + encodedv +
+
+ Installed Library: + libdv.so +
+
+ Installed Directories: + /usr/include/libdv and + /usr/share/doc/libdv-1.0.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ dubdv +

+
+

+ inserts audio into a digital video stream +

+
+

+ dvconnect +

+
+

+ is a small utility to send or capture raw data from + and to the camcorder +

+
+

+ encodedv +

+
+

+ encodes a series of images to a digital video + stream +

+
+

+ libdv.so +

+
+

+ provides functions for programs interacting with + the Quasar DV CODEC +

+
+
+
+
+
+
+
+

+ libgstgtk4 from + gst-plugins-rs-1.26.5 +

+
+
+
+
+
+

+ Introduction to libgstgtk4 +

+

+ The libgstgtk4 package + contains a library that binds the gstreamer multimedia + framework to GTK-4. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libgstgtk4 Dependencies +

+
+ Required +
+

+ git-2.50.1, gst-plugins-base-1.26.5, + GTK-4.18.6, and rustc-1.89.0 +

+
+

+ Note +

+

+ An Internet connection is needed for building this package. + The system certificate store may need to be set up with + make-ca-1.16.1 before building this + package. +

+
+
+
+

+ Installation of libgstgtk4 +

+

+ Install libgstgtk4 by + running the following commands: +

+
cd video/gtk4 &&
+cargo build --release
+

+ This package does not come with a test suite, but its basic + functionality can be tested after installation. +

+

+ Now, as the root user: +

+
install -vm755 ../../target/release/libgstgtk4.so /usr/lib/gstreamer-1.0
+

+ To test the basic functionality of the package, issue: + gst-launch-1.0 videotestsrc + num-buffers=60 ! gtk4paintablesink in a + graphical terminal emulator. It should play a test video in a + GTK-4 window for 2 seconds. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libgstgtk4.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libgstgtk4.so +

+
+

+ provides a binding between GTK-4 and the gstreamer + multimedia framework +

+
+
+
+
+
+
+
+

+ libmad-0.15.1b +

+
+
+
+
+
+

+ Introduction to libmad +

+

+ libmad is a high-quality + MPEG audio decoder capable of 24-bit output. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +
+
+

+ Installation of libmad +

+

+ Install libmad by running + the following commands: +

+
patch -Np1 -i ../libmad-0.15.1b-fixes-1.patch                &&
+sed "s@AM_CONFIG_HEADER@AC_CONFIG_HEADERS@g" -i configure.ac &&
+touch NEWS AUTHORS ChangeLog                                 &&
+autoreconf -fi                                               &&
+
+./configure --prefix=/usr --disable-static &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ Some packages check for the pkg-config file for libmad. This file is particularly needed + so that Cdrdao can recognize + the installed libmad. +

+

+ As the root user: +

+
cat > /usr/lib/pkgconfig/mad.pc << "EOF"
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: mad
+Description: MPEG audio decoder
+Requires:
+Version: 0.15.1b
+Libs: -L${libdir} -lmad
+Cflags: -I${includedir}
+EOF
+
+
+

+ Command Explanations +

+

+ touch NEWS AUTHORS + ChangeLog: Prevent autoreconf from returning + an error. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libmad.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmad.so +

+
+

+ is a MPEG audio decoder library +

+
+
+
+
+
+
+
+

+ libmpeg2-0.5.1 +

+
+
+
+
+
+

+ Introduction to libmpeg2 +

+

+ The libmpeg2 package + contains a library for decoding MPEG-2 and MPEG-1 video + streams. The library is able to decode all MPEG streams that + conform to certain restrictions: “constrained + parameters” for MPEG-1, and “main profile” for + MPEG-2. This is useful for programs and applications needing + to decode MPEG-2 and MPEG-1 video streams. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libmpeg2 Dependencies +

+
+ Optional +
+

+ a graphical + environment and sdl12-compat-1.2.68 +

+
+
+

+ Installation of libmpeg2 +

+

+ Install libmpeg2 by running + the following commands: +

+
sed -i 's/static const/static/' libmpeg2/idct_mmx.c &&
+
+./configure --prefix=/usr    \
+            --enable-shared  \
+            --disable-static &&
+make
+

+ To test the results, issue: make check. To perform a + more comprehensive regression test, see the file test/README in the source tree. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -m755 -d /usr/share/doc/libmpeg2-0.5.1 &&
+install -v -m644 README doc/libmpeg2.txt \
+                    /usr/share/doc/libmpeg2-0.5.1
+
+
+

+ Command Explanations +

+

+ sed -i ...: + This sed fixes + problems with recent GCC compilers. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + corrupt_mpeg2, extract_mpeg2 and + mpeg2dec +
+
+ Installed Libraries: + libmpeg2.so and + libmpeg2convert.so +
+
+ Installed Directories: + /usr/include/mpeg2dec and + /usr/share/doc/libmpeg2-0.5.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ extract_mpeg2 +

+
+

+ extracts MPEG video streams from a multiplexed + stream +

+
+

+ mpeg2dec +

+
+

+ decodes MPEG1 and MPEG2 video streams +

+
+

+ libmpeg2.so +

+
+

+ contains API functions used to decode MPEG video + streams +

+
+

+ libmpeg2convert.so +

+
+

+ contains API functions used for color conversions + of MPEG video streams +

+
+
+
+
+
+
+
+

+ libmusicbrainz-5.1.0 +

+
+
+
+
+
+

+ Introduction to libmusicbrainz +

+

+ The libmusicbrainz package + contains a library which allows you to access the data held + on the MusicBrainz server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ libmusicbrainz Dependencies +

+
+ Required +
+

+ CMake-4.1.0, libxml2-2.14.5 and + neon-0.35.0 +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of libmusicbrainz +

+

+ First, fix a problem caused by CMake-3.18.0 and later: +

+
patch -Np1 -i ../libmusicbrainz-5.1.0-cmake_fixes-1.patch
+

+ Fix also a problem caused by libxml-2.12.x: +

+
sed -e 's/xmlErrorPtr /const xmlError */'     \
+    -i src/xmlParser.cc
+

+ Install libmusicbrainz by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 .. &&
+make
+

+ If you have installed Doxygen-1.14.0, optionally build the API + documentation: +

+
doxygen ../Doxyfile
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have built the API documentation, install, as the + root user: +

+
rm -rf /usr/share/doc/libmusicbrainz-5.1.0 &&
+cp -vr docs/ /usr/share/doc/libmusicbrainz-5.1.0
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libmusicbrainz5.so +
+
+ Installed Directory: + /usr/include/libmusicbrainz5 and + /usr/share/doc/libmusicbrainz-5.1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmusicbrainz5.so +

+
+

+ contains API functions for accessing the + MusicBrainz database +

+
+
+
+
+
+
+
+

+ libogg-1.3.6 +

+
+
+
+
+
+

+ Introduction to libogg +

+

+ The libogg package contains + the Ogg file structure. This is useful for creating + (encoding) or playing (decoding) a single physical bit + stream. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of libogg +

+

+ Install libogg by running + the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libogg-1.3.6 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libogg.so +
+
+ Installed Directories: + /usr/include/ogg and + /usr/share/doc/libogg-1.3.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libogg.so +

+
+

+ provides the functions required for programs to + read or write Ogg formatted bit streams +

+
+
+
+
+
+
+
+

+ libplacebo-7.351.0 +

+
+
+
+
+
+

+ Introduction to libplacebo +

+

+ The libplacebo package + contains a library for processing image and video primitives + and shaders. It also includes a high quality rendering + pipeline that supports OpenGL and Vulkan. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libplacebo Dependencies +

+
+ Required +
+

+ Glad-2.0.8 +

+
+ Recommended +
+ +
+ Optional +
+

+ Little + CMS-2.17 libunwind-1.8.2, dovi_tool, + Nuklear, + and xxHash +

+
+
+

+ Installation of libplacebo +

+

+ First, fix an incompatibility with Python-3.13.6 and later: +

+
sed -e '204a\    tree = ET.parse(xmlfile)'                 \
+    -e 's/VkXML(ET.parse(xmlfile))/VkXML(tree.getroot())/' \
+    -i src/vulkan/utils_gen.py
+

+ Install libplacebo by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D tests=true       \
+      -D demos=false      &&
+ninja
+

+ To test the results, issue: ninja test. One test, + opengl_surfaceless.c, is known to fail. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D demos=false: This + switch disables building the demo programs because building + plplay is currently broken. +

+

+ -D tests=true: This + switch enables building the code necessary to run the tests. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libplacebo.so +
+
+ Installed Directories: + /usr/include/libplacebo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libplacebo.so +

+
+

+ processes image and video primitives and shaders + and provides a high quality rendering pipeline for + OpenGL and Vulkan +

+
+
+
+
+
+
+
+

+ libsamplerate-0.2.2 +

+
+
+
+
+
+

+ Introduction to libsamplerate +

+

+ libsamplerate is a sample + rate converter for audio. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsamplerate Dependencies +

+
+ Optional +
+

+ alsa-lib-1.2.14, libsndfile-1.2.2, + and fftw-3.3.10 (for tests) +

+
+
+

+ Installation of libsamplerate +

+

+ Install libsamplerate by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libsamplerate-0.2.2 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + None +
+
+ Installed Library: + libsamplerate.so +
+
+ Installed Directory: + /usr/share/doc/libsamplerate-0.2.2 +
+
+
+
+
+
+
+
+

+ libsndfile-1.2.2 +

+
+
+
+
+
+

+ Introduction to libsndfile +

+

+ Libsndfile is a library of C + routines for reading and writing files containing sampled + audio data. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libsndfile Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ alsa-lib-1.2.14, LAME-3.100, mpg123-1.33.2, + Speex-1.2.1, and SQLite-3.50.4 +

+
+
+

+ Installation of libsndfile +

+

+ Fix building with GCC-15: +

+
sed '/typedef enum/,/bool ;/d' -i \
+  src/ALAC/alac_{en,de}coder.c
+

+ Install libsndfile by + running the following commands: +

+
./configure --prefix=/usr    \
+            --docdir=/usr/share/doc/libsndfile-1.2.2 &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sndfile-cmp, sndfile-concat, + sndfile-convert, sndfile-deinterleave, sndfile-info, + sndfile-interleave, sndfile-metadata-get, + sndfile-metadata-set, sndfile-play, and + sndfile-salvage +
+
+ Installed Library: + libsndfile.so +
+
+ Installed Directory: + /usr/share/doc/libsndfile-1.2.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ sndfile-cmp +

+
+

+ compares two audio files +

+
+

+ sndfile-concat +

+
+

+ concatenates two or more audio files +

+
+

+ sndfile-convert +

+
+

+ converts a sound file from one format to another +

+
+

+ sndfile-deinterleave +

+
+

+ splits a multi-channel into multiple single channel + files +

+
+

+ sndfile-info +

+
+

+ displays information about a sound file +

+
+

+ sndfile-interleave +

+
+

+ converts multiple single channel files into a + multi-channel file +

+
+

+ sndfile-metadata-get +

+
+

+ retrieves metadata from a sound file +

+
+

+ sndfile-metadata-set +

+
+

+ sets metadata in a sound file +

+
+

+ sndfile-play +

+
+

+ plays a sound file +

+
+

+ sndfile-salvage +

+
+

+ salvages the audio data from WAV files which are + more than 4 GB in size +

+
+

+ libsndfile.so +

+
+

+ contains the libsndfile API functions +

+
+
+
+
+
+
+
+

+ libva-2.22.0 +

+
+
+
+
+
+

+ Introduction to libva +

+

+ The libva package contains a + library which provides access to hardware accelerated video + processing, using hardware to accelerate video processing in + order to offload the central processing unit (CPU) to decode + and encode compressed digital video. The VA API video + decode/encode interface is platform and window system + independent targeted at Direct Rendering Infrastructure (DRI) + in the X Window System however it can potentially also be + used with direct framebuffer and graphics sub-systems for + video output. Accelerated processing includes support for + video decoding, video encoding, subpicture blending, and + rendering. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libva Dependencies +

+
+ Required +
+

+ Xorg build + environment and libdrm-2.4.125 +

+
+ Recommended +
+ +
+ Recommended (Runtime) +
+

+ The VA API driver suitable for the hardware in your system: + intel-vaapi-driver-2.4.1 (for + Intel GPUs provided with Haswell CPUs or earlier), intel-media-driver-25.2.6 + (for Intel GPUs provided with Broadwell CPUs or later), and + Mesa-25.1.8 (providing the r600, radeonsi, + and nouveau VA API drivers, for + the ATI/AMD Radeon HD 2xxx GPUs and later, and supported + NVIDIA GPUs; there is a circular dependency, read the + Mesa page for information on how to break it) +

+
+ Optional +
+

+ Doxygen-1.14.0, Wayland-1.24.0, and + intel-gpu-tools +

+
+
+

+ Installation of libva +

+

+ Install libva by running the + following commands: +

+
cd build &&
+
+meson setup --prefix=$XORG_PREFIX --buildtype=release &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libva-drm.so, libva-glx.so, + libva.so, libva-wayland.so, and libva-x11.so +
+
+ Installed Directory: + $XORG_PREFIX/include/va +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libva.so +

+
+

+ contains API functions which provide access to + hardware accelerated video processing +

+
+
+
+
+
+
+
+

+ libvdpau-1.5 +

+
+
+
+
+
+

+ Introduction to libvdpau +

+

+ The libvdpau package + contains a library which implements the VDPAU library. +

+

+ VDPAU (Video Decode and Presentation API for Unix) is an open + source library (libvdpau) and API originally designed by + NVIDIA for its GeForce 8 series and later GPU hardware + targeted at the X Window System. This VDPAU API allows video + programs to offload portions of the video decoding process + and video post-processing to the GPU video-hardware. +

+

+ Currently, the portions capable of being offloaded by VDPAU + onto the GPU are motion compensation (mo comp), inverse + discrete cosine transform (iDCT), VLD (variable-length + decoding) and deblocking for MPEG-1, MPEG-2, MPEG-4 ASP + (MPEG-4 Part 2), H.264/MPEG-4 AVC and VC-1, WMV3/WMV9 encoded + videos. Which specific codecs of these that can be offloaded + to the GPU depends on the version of the GPU hardware; + specifically, to also decode MPEG-4 ASP (MPEG-4 Part 2), + Xvid/OpenDivX (DivX 4), and DivX 5 formats, a GeForce 200M + (2xxM) Series (the eleventh generation of NVIDIA's GeForce + graphics processing units) or newer GPU hardware is required. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libvdpau Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Recommended (Runtime) +
+

+ The VDPAU driver suitable for the hardware in your system: + libvdpau-va-gl-0.4.2 (for Intel + GPUs) and Mesa-25.1.8 (providing the r600, radeonsi, + and nouveau VDPAU drivers, for + the ATI/AMD Radeon HD 2xxx GPUs and later, and supported + NVIDIA GPUs; Mesa must be built after this package for + these drivers) +

+
+ Optional +
+

+ Doxygen-1.14.0, Graphviz-13.1.2, and + texlive-20250308 or install-tl-unx +

+
+
+

+ Installation of libvdpau +

+

+ Install libvdpau by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=$XORG_PREFIX .. &&
+ninja
+

+ To test the results, issue: ninja test. There is only + one test for this package, dlclose, and it is known to fail + on some systems. +

+

+ Now, as the root user: +

+
ninja install
+

+ If doxygen is present at + build time place the documentation in a versioned directory + as the root user: +

+
[ -e $XORG_PREFIX/share/doc/libvdpau ] && mv -v $XORG_PREFIX/share/doc/libvdpau{,1.5}
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libvdpau.so +
+
+ Installed Directories: + $XORG_PREFIX/{include,lib}/vdpau +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libvdpau.so +

+
+

+ contains functions to offload portions of the video + decoding process and video post-processing to the + GPU video-hardware +

+
+
+
+
+
+
+
+

+ libvdpau-va-gl-0.4.2 +

+
+
+
+
+
+

+ Introduction to libvdpau-va-gl +

+

+ The libvdpau-va-gl package + contains a library which implements the VDPAU library. + Libvdpau_va_gl uses OpenGL under the hood to accelerate + drawing and scaling and the VA-API (if available) to + accelerate video decoding. For now VA-API is available on + some Intel chips, and on some AMD video adapters with the + help of the libvdpau driver. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libvdpau-va-gl Dependencies +

+
+ Required +
+

+ CMake-4.1.0, libvdpau-1.5, libva-2.22.0, + and Mesa-25.1.8 +

+
+ Optional +
+

+ Doxygen-1.14.0, Graphviz-13.1.2, and + texlive-20250308 or install-tl-unx +

+
+
+

+ Installation of libvdpau-va-gl +

+

+ Install libvdpau-va-gl by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$XORG_PREFIX \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5  \
+      -D CMAKE_BUILD_TYPE=Release          \
+      -W no-dev ..                         &&
+make
+

+ To test the results, issue: make check. The tests must + be run from an Xorg environment. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Configuration +

+

+ To allow libvdpau to find libvdpau-va-gl, set an environment + variable. As the root user: +

+
echo "export VDPAU_DRIVER=va_gl" >> /etc/profile.d/xorg.sh
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libvdpau_va_gl.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libvdpau_va_gl.so +

+
+

+ contains functions to implement the OpenGL backend + to the VDPAU (Video Decode and Presentation API for + Unix) API +

+
+
+
+
+
+
+
+

+ libvorbis-1.3.7 +

+
+
+
+
+
+

+ Introduction to libvorbis +

+

+ The libvorbis package + contains a general purpose audio and music encoding format. + This is useful for creating (encoding) and playing (decoding) + sound in an open (patent free) format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libvorbis Dependencies +

+
+ Required +
+

+ libogg-1.3.6 +

+
+ Optional +
+

+ Doxygen-1.14.0 and texlive-20250308 (or install-tl-unx) (specifically, pdflatex + and htlatex) to build the PDF documentation +

+
+
+

+ Installation of libvorbis +

+

+ Install libvorbis by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ To test the results, issue: make -j1 check. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.3.7
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-docs: This switch + enables building the documentation in formats other than the + supplied html. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libvorbis.so, libvorbisenc.so and + libvorbisfile.so +
+
+ Installed Directories: + /usr/include/vorbis and + /usr/share/doc/libvorbis-1.3.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libvorbis.so +

+
+

+ provides the functions used to read and write sound + files +

+
+
+
+
+
+
+
+

+ libvpx-1.15.2 +

+
+
+
+
+
+

+ Introduction to libvpx +

+

+ This package, from the WebM project, provides the reference + implementations of the VP8 Codec (used in most current HTML5 + video) and of the next-generation VP9 Codec. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/webmproject/libvpx/archive/v1.15.2/libvpx-1.15.2.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 4c7a93808c12b359733430c8377b7fcf +

    +
  • +
  • +

    + Download size: 5.4 MB +

    +
  • +
  • +

    + Estimated disk space required: 68 MB (add 1.6 GB for + tests) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU (Using parallelism=4; add + approx 11 SBU for tests using parallelism=4, including + download time) +

    +
  • +
+
+

+ libvpx Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ cURL-8.15.0 (to download test files) and + Doxygen-1.14.0 (to build documentation) +

+
+

+ Note +

+

+ An Internet connection is needed for some tests of this + package. The system certificate store may need to be set up + with make-ca-1.16.1 before testing this + package. +

+
+
+
+

+ Installation of libvpx +

+

+ If upgrading from a previous version of libvpx, update the + timestamps of all the files to prevent the build system from + retaining the files from the old installation: +

+
find -type f | xargs touch
+

+ Install libvpx by running + the following commands: +

+
sed -i 's/cp -p/cp/' build/make/Makefile &&
+
+mkdir libvpx-build            &&
+cd    libvpx-build            &&
+
+../configure --prefix=/usr    \
+             --enable-shared  \
+             --disable-static &&
+make
+

+ To test the results, issue: LD_LIBRARY_PATH=. make + test. The test suite downloads many files as + part of its test process. A few parts of it will use all + available cores. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed ... : This + command corrects the ownership and permissions of installed + files. +

+

+ mkdir libvpx-build && + cd libvpx-build: The libvpx developers recommend building in + a dedicated build directory. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --disable-vp8: This switch + prevents building support for the VP8 codec. +

+

+ --disable-vp9: This switch + prevents building support for the VP9 codec. +

+

+ --target=generic-gnu: This switch + disables optimizations specific to x86 and x86-64, allowing + to build this package without nasm and yasm installed. +

+

+ LD_LIBRARY_PATH=.: This is + needed for the test suite to use the library that was just + built. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + vpxdec and vpxenc +
+
+ Installed Libraries: + libvpx.so +
+
+ Installed Directories: + /usr/include/vpx +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ vpxdec +

+
+

+ is the WebM Project VP8 and VP9 decoder +

+
+

+ vpxenc +

+
+

+ is the WebM project VP8 and VP9 encoder +

+
+

+ libvpx.so +

+
+

+ provides functions to use the VP8 and VP9 video + codecs +

+
+
+
+
+
+
+
+

+ mlt-7.32.0 +

+
+
+
+
+
+

+ Introduction to mlt +

+

+ The mlt package is the Media + Lovin Toolkit. It is an open source multimedia framework, + designed and developed for television broadcasting. It + provides a toolkit for broadcasters, video editors, media + players, transcoders, web streamers and many more types of + applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ mlt + Dependencies +

+
+ Required +
+

+ frei0r-2.3.3 and Qt-6.9.2 +

+
+ Optional +
+

+ Doxygen-1.14.0, fftw-3.3.10, libexif-0.6.25, + SDL2-2.32.8, JACK, MOVEit, SoX, and + vid.stab +

+
+
+

+ Installation of mlt +

+

+ Install mlt by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D MOD_QT=OFF                \
+      -D MOD_QT6=ON                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. However a test + .mp4 file can be played in a local graphical environment with + ./out/bin/melt + <filename>.mp4. +

+
+

+ Note +

+

+ This application uses advanced graphical capabilities. In + some cases, firmware for your specific graphics adaptor may + be needed. See the section called + “Firmware for Video Cards” for more information. +

+
+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + melt-7 and melt (symlink to + melt-7) +
+
+ Installed Libraries: + libmlt-7.so, libmlt++-7.so, and + over twenty plugins +
+
+ Installed Directories: + /usr/include/mlt-7, /usr/lib/mlt-7, + /usr/lib/cmake/Mlt7, and /usr/share/mlt-7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ melt +

+
+

+ is a test tool for mlt +

+
+
+
+
+
+
+
+

+ Opus-1.5.2 +

+
+
+
+
+
+

+ Introduction to Opus +

+

+ Opus is a lossy audio + compression format developed by the Internet Engineering Task + Force (IETF) that is particularly suitable for interactive + speech and audio transmission over the Internet. This package + provides the Opus development library and headers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+ Optional +
+

+ Doxygen-1.14.0 and texlive-20250308 (or install-tl-unx) +

+
+
+

+ Installation of Opus +

+

+ Install Opus by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr        \
+            --buildtype=release  \
+            -D docdir=/usr/share/doc/opus-1.5.2 &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libopus.so +
+
+ Installed Directory: + /usr/include/opus and + /usr/share/doc/opus-1.5.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libopus.so +

+
+

+ provides the functions used to read and write Opus + format +

+
+
+
+
+
+
+
+

+ Pipewire-1.4.7 +

+
+
+
+
+
+

+ Introduction to Pipewire +

+

+ The pipewire package + contains a server and userspace API to handle multimedia + pipelines. This includes a universal API to connect to + multimedia devices, as well as sharing multimedia files + between applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Pipewire Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ alsa-lib-1.2.14, Avahi-0.8, fdk-aac-2.0.3, + FFmpeg-7.1.1, libcanberra-0.30, + libdrm-2.4.125 (for one example and + libcamera support), libxcb-1.17.0, libsndfile-1.2.2, + libusb-1.0.29, Opus-1.5.2, SDL2-2.32.8 (for some + examples), Valgrind-3.25.1, Vulkan-Loader-1.4.321, Xorg + Libraries, Doxygen-1.14.0 and Graphviz-13.1.2 (for + documentation), ffado, JACK, LC3plus, ldacBT, + libcamera, + libmysofa, lilv, and + xmltoman +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pipewire +

+
+
+

+ Installation of Pipewire +

+

+ Install pipewire by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..                 \
+      --prefix=/usr            \
+      --buildtype=release      \
+      -D session-managers="[]" &&
+ninja
+

+ To test the result, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D + session-managers="[]": This switch allows + specifying the session managers to build as subprojects. We + specify an empty list to prevent meson from downloading any + external copy of the session managers. A Pipewire session + manager recommended by the PipeWire developers for general + use, Wireplumber-0.5.10, is available as + a separate BLFS package. Build it after installing Pipewire + if you need to run the Pipewire daemon (for example in order + to support Snapshot-48.0.1). +

+

+ -D docs=true: This switch enables + the generation of HTML documentation. The optional + dependencies for documentation need to be installed for this + to work. +

+

+ -D man=true: This switch enables + the generation of manual pages. The optional dependencies for + documentation need to be installed for this to work. +

+

+ -D ffmpeg=enabled: This switch + enables using ffmpeg for audio conversion as a SPA backend. +

+

+ -D vulkan=enabled: This switch + enables using Vulkan for video rendering as a SPA backend. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pipewire, pw-cat, pw-cli, + pw-config, pw-dot, pw-dump, pw-jack, pw-link, + pw-loopback, pw-metadata, pw-mididump, pw-mon, + pw-profiler, pw-reserve, pw-top, pw-v4l2, spa-acp-tool, + spa-inspect, spa-json-dump, spa-monitor, spa-resample, + and pipewire-aes67, pipewire-avb, pipewire-pulse + (symlinks to pipewire), pw-dsdplay, pw-encplay, + pw-midiplay, pw-midirecord, pw-play, pw-record (symlinks + to pw-cat) +
+
+ Installed Libraries: + libpipewire-0.3.so and 60 modules + below /usr/lib/pipewire-0.3 and /usr/lib/spa-0.2 +
+
+ Installed Directories: + /usr/include/pipewire-0.3, + /usr/include/spa-0.2, /usr/lib/alsa-lib, + /usr/lib/pipewire-0.3, /usr/lib/spa-0.2, + /usr/share/alsa-card-profile, /usr/share/pipewire, and + /usr/share/spa-0.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ pipewire +

+
+

+ is a service that allows access to multimedia + devices and allows sharing of multimedia files + between applications +

+
+

+ pipewire-pulse +

+
+

+ starts a Pulseaudio-compatible version of the + pipewire service +

+
+

+ pw-cat +

+
+

+ allows you to play or record media using a pipewire + instance +

+
+

+ pw-cli +

+
+

+ allows you to interact with a pipewire instance +

+
+

+ pw-config +

+
+

+ allows you to interact with pipewire's + configuration system for debugging purposes or + syntax checking +

+
+

+ pw-dot +

+
+

+ lists all of the daemons and objects in use by + pipewire +

+
+

+ pw-dump +

+
+

+ dumps debug messages from a local or remote + pipewire instance to the console +

+
+

+ pw-jack +

+
+

+ runs JACK applications on a pipewire instance +

+
+

+ pw-link +

+
+

+ links pipewire ports together +

+
+

+ pw-loopback +

+
+

+ initializes a loopback link between two different + pipewire ports. This is useful for testing and + debugging +

+
+

+ pw-metadata +

+
+

+ inspects, adds, and removes metadata for objects +

+
+

+ pw-mididump +

+
+

+ dumps MIDI messages from a file to the screen +

+
+

+ pw-mon +

+
+

+ allows you to monitor pipewire instances +

+
+

+ pw-profiler +

+
+

+ tracks memory usage and API calls used by pipewire +

+
+

+ pw-reserve +

+
+

+ reserves or monitors a device via D-Bus +

+
+

+ pw-top +

+
+

+ displays real-time performance information from + pipewire +

+
+

+ pw-v4l2 +

+
+

+ runs v4l2 applications on a pipewire instance +

+
+

+ spa-acp-tool +

+
+

+ inspects the card profile of a given sound card +

+
+

+ spa-inspect +

+
+

+ allows you to inspect pipewire plugins +

+
+

+ spa-json-dump +

+
+

+ dumps the current pipewire configuration in JSON + format +

+
+

+ spa-monitor +

+
+

+ allows you to monitor pipewire plugins +

+
+

+ spa-resample +

+
+

+ resamples a given file +

+
+

+ libpipewire-0.3.so +

+
+

+ contains API functions for handling multimedia + pipelines +

+
+
+
+
+
+
+
+

+ PulseAudio-17.0 +

+
+
+
+
+
+

+ Introduction to PulseAudio +

+

+ PulseAudio is a sound system + for POSIX OSes, meaning that it is a proxy for sound + applications. It allows you to do advanced operations on your + sound data as it passes between your application and your + hardware. Operations such as transferring the audio to a + different machine, changing the sample format or channel + count, and mixing several sounds into one are easily achieved + using a sound server. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ PulseAudio Dependencies +

+
+ Required +
+

+ libsndfile-1.2.2 +

+
+ Recommended +
+ +
+ Optional +
+

+ Avahi-0.8, BlueZ-5.83, Doxygen-1.14.0 (for + documentation), fftw-3.3.10, gst-plugins-base-1.26.5, + GTK-3.24.50, libsamplerate-0.2.2, SBC-2.1 (Bluetooth + support), Valgrind-3.25.1, check (for testing), + JACK, + libasyncns, + LIRC, + ORC, + soxr, TDB, and + WebRTC AudioProcessing +

+
+
+

+ Installation of PulseAudio +

+

+ Install PulseAudio by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D database=gdbm    \
+            -D doxygen=false    \
+            -D bluez5=disabled  \
+            -D tests=false      \
+            ..                  &&
+ninja
+

+ To test the results, issue: ninja test. Only the + shipped XML files are validated because other tests need + Check that we've removed + from LFS. +

+

+ Now, as the root user: +

+
ninja install
+

+ Running PulseAudio as a system-wide daemon is possible but + not recommended. See + https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/ + for more information. While still as the root user, remove the D-Bus configuration file for the system + wide daemon to avoid creating unnecessary system users and + groups: +

+
rm /usr/share/dbus-1/system.d/pulseaudio-system.conf
+
+

+ Note +

+

+ If you have installed Wireplumber-0.5.10, make + sure to follow the commands to disable the Pulseaudio + server to prevent conflicts with Pipewire. +

+
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D bluez5=disabled: + This switch prevents a runtime error if dbus-1.16.2 and SBC-2.1 are both + installed but BlueZ-5.83 is not installed. Remove this if + you have installed all three packages. +

+

+ -D doxygen=false: + This allows the package to compile if Doxygen-1.14.0 is not + installed. Remove this if you have installed this and wish to + build the documentation. +

+

+ -D tests=false: This + allows the package to compile if Check is not installed. We've removed + Check from LFS. +

+
+
+

+ Configuring PulseAudio +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ There are system wide configuration files: /etc/pulse/daemon.conf, /etc/pulse/client.conf, /etc/pulse/default.pa, and user + configuration files with the same names in ~/.config/pulse. User configuration files + take precedence over system wide ones. +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ You may have to configure the audio system. You can start + pulseaudio in command line + mode using pulseaudio + -C and then list various information and + change settings. See man + pulse-cli-syntax. +

+

+ If pulseaudio was working + but you no-longer have sound, after checking for hardware + issues (speakers or headphones not connected, external + amplifier not connected) you may need to fix it. +

+

+ One suggestion is to close the application, such as + firefox where sound has + stopped working, then run: pactl list short sinks + followed by: pacmd + set-default-sink <sink #> and then + restart the application. +

+

+ If that does not work, a more drastic approach often works. + After closing the application, close pulseaudio, either + using pulseaudio + --kill or, if that fails, killall -KILL pulseaudio + and then rm -rf + ~/.config/pulse/* (and perhaps also + rm -rf + ~/.pulse/* if you have used a very old + version of pulse on this machine), then run pulseaudio --verbose to + restart it. If the daemon starts, restart the application. + See man + pulseaudio for more options. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + pacat, pacmd, pactl, padsp, pamon + (symlink to pacat), paplay (symlink to pacat), parec + (symlink to pacat), parecord (symlink to pacat), qpaeq, + pasuspender, pax11publish, pulseaudio, and + start-pulseaudio-x11 +
+
+ Installed Libraries: + libpulse.so, + libpulse-mainloop-glib.so, libpulse-simple.so, + libpulsecommon-17.0.so, libpulsecore-17.0.so, and + libpulsedsp.so +
+
+ Installed Directories: + /etc/pulse, /usr/include/pulse, + /usr/lib/cmake/PulseAudio, + /usr/lib/{pulseaudio,pulse-17.0}, /usr/libexec/pulse, and + /usr/share/pulseaudio +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ pacat +

+
+

+ plays back or records raw or encoded audio streams + on a PulseAudio + sound server +

+
+

+ pacmd +

+
+

+ is a tool used to reconfigure a PulseAudio sound server during + runtime +

+
+

+ pactl +

+
+

+ is used to control a running PulseAudio sound server +

+
+

+ padsp +

+
+

+ is the PulseAudio + OSS Wrapper +

+
+

+ pamon +

+
+

+ is a symbolic link to pacat +

+
+

+ paplay +

+
+

+ is used to play audio files on a PulseAudio sound server +

+
+

+ parec +

+
+

+ is a symbolic link to pacat +

+
+

+ parecord +

+
+

+ is a symbolic link to pacat +

+
+

+ pasuspender +

+
+

+ is a tool that can be used to tell a local + PulseAudio sound + server to temporarily suspend access to the audio + devices, which allows other applications to access + them directly +

+
+

+ pax11publish +

+
+

+ is the PulseAudio + X11 Credential Utility +

+
+

+ pa-info +

+
+

+ is a shell script that prints various information + relating to the Pulseaudio server currently in + use +

+
+

+ pulseaudio +

+
+

+ is a networked low-latency sound server for Linux +

+
+

+ qpaeq +

+
+

+ is an equalizer interface for PulseAudio equalizer sinks + (Requires fftw-3.3.10 at build time) +

+
+

+ start-pulseaudio-x11 +

+
+

+ starts PulseAudio + and registers it to the X11 session manager +

+
+
+
+
+
+
+
+

+ SBC-2.1 +

+
+
+
+
+
+

+ Introduction to SBC +

+

+ The SBC package is a digital + audio encoder and decoder used to transfer data to Bluetooth + audio output devices like headphones or loudspeakers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ SBC + Dependencies +

+
+ Optional +
+

+ libsndfile-1.2.2 +

+
+
+

+ Installation of SBC +

+

+ Install SBC by running the + following commands: +

+
./configure --prefix=/usr --disable-static --disable-tester &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-tester: + This disables the SBC tester. Remove it if you have installed + libsndfile-1.2.2. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + sbcdec, sbcenc, and sbcinfo +
+
+ Installed Library: + libsbc.so +
+
+ Installed Directory: + /usr/include/sbc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ sbcdec +

+
+

+ is a SBC decoder utility +

+
+

+ sbcenc +

+
+

+ is a SBC encoder utility +

+
+

+ sbcinfo +

+
+

+ is a subband codec (SBC) analyzer +

+
+

+ libsbc.so +

+
+

+ contains the SBC + API functions +

+
+
+
+
+
+
+
+

+ sdl12-compat-1.2.68 +

+
+
+
+
+
+

+ Introduction to sdl12-compat +

+

+ The Simple DirectMedia Layer (SDL for short) is a cross-platform + library designed to make it easy to write multimedia + software, such as games and emulators. This code is a + compatibility layer; it provides a binary and source + compatible API for programs written against SDL 1.2, but it + uses SDL 2.0 behind the scenes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ SDL + Dependencies +

+
+ Required +
+

+ CMake-4.1.0, GLU-9.0.3, and SDL2-2.32.8 +

+
+
+

+ Installation of sdl12-compat +

+

+ Install sdl12-compat by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=RELEASE  \
+      ..  &&
+make
+

+ Now, as the root user: +

+
make install &&
+rm -vf /usr/lib/libSDLmain.a
+
+
+

+ Testing SDL +

+

+ If you wish, test the sdlcompat package using the included + test programs. It is not required to install any of the + resulting binaries to validate the installation. +

+

+ You'll need to manually run all the test programs (they are + listed in the README file in + this directory). Many of them will need to be manually + killed, and you'll need to turn your speakers on with the + volume at a suitable level. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + sdl-config +
+
+ Installed Libraries: + libSDL.so +
+
+ Installed Directories: + /usr/include/SDL +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ sdl-config +

+
+

+ determines the compile and linker flags that should + be used to compile and link programs that use + libSDL +

+
+

+ libSDL.so +

+
+

+ contains functions that provide compatibility links + to SDL2 low level functions for audio, keyboard, + mouse, joystick, 3D hardware via OpenGL, and the 2D + frame buffer across multiple platforms +

+
+
+
+
+
+
+
+

+ SDL2-2.32.8 +

+
+
+
+
+
+

+ Introduction to SDL2 +

+

+ The Simple DirectMedia Layer Version 2 (SDL2 for short) is a cross-platform + library designed to make it easy to write multimedia + software, such as games and emulators. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.libsdl.org/release/SDL2-2.32.8.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 7df28be966308a4a51aac87f4e0cf16a +

    +
  • +
  • +

    + Download size: 7.3 MB +

    +
  • +
  • +

    + Estimated disk space required: 186 MB (with docs) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (using parallelism=4; + with docs) +

    +
  • +
+
+

+ SDL2 + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ alsa-lib-1.2.14, Doxygen-1.14.0 (to + create documentation), ibus-1.5.32, libsamplerate-0.2.2, libunwind-1.8.2, NASM-2.16.03, pipewire-1.4.7, PulseAudio-17.0, + a graphical + environment, DirectFB, + fcitx, + jack, and + sndio +

+
+
+

+ Installation of SDL2 +

+

+ Install SDL2 by running the + following commands: +

+
./configure --prefix=/usr &&
+make
+

+ If you have Doxygen-1.14.0 installed and want to + build the html documentation, run the following commands: +

+
pushd docs  &&
+  doxygen   &&
+popd
+
+

+ Note +

+

+ If you wish to build and run the package regression tests, + do not delete the static libraries below until after the + tests are built. +

+
+

+ Now, as the root user: +

+
make install              &&
+rm -v /usr/lib/libSDL2*.a
+

+ If you built the documentation, install it as the + root user: +

+
install -v -m755 -d        /usr/share/doc/SDL2-2.32.8/html &&
+cp -Rv  docs/output/html/* /usr/share/doc/SDL2-2.32.8/html
+
+
+

+ Testing SDL2 +

+

+ If you wish to, test the installation of SDL2 using the included test programs. + None of the resulting binaries need to be installed. Issue + the following commands to build the test programs: +

+
cd test &&
+./configure &&
+make
+

+ Each of the test programs (they are listed in the + README file in this directory) + will need to be run individually. Many of them will need to + be manually killed. Additionally, speakers need to be on with + the volume at a suitable level. +

+
+
+

+ Command Explanations +

+

+ rm -v + /usr/lib/libSDL2*.a: Normally static + libraries can be disabled with a --disable-static option to configure, but + that breaks the build in this package. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + sdl2-config +
+
+ Installed Libraries: + libSDL2.so +
+
+ Installed Directories: + /usr/include/SDL2, + /usr/lib/cmake/SDL2, and /usr/share/doc/SDL-2.32.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ sdl2-config +

+
+

+ determines the compile and linker flags that should + be used to compile and link programs that use + libSDL2 +

+
+

+ libSDL2.so +

+
+

+ contains functions that provide low level access to + audio, keyboard, mouse, joystick, 3D hardware via + OpenGL, and the 2D frame buffer across multiple + platforms +

+
+
+
+
+
+
+
+

+ sound-theme-freedesktop-0.8 +

+
+
+
+
+
+

+ Introduction to Sound Theme Freedesktop +

+

+ The Sound Theme Freedesktop + package contains sound themes for the desktop. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of Sound Theme Freedesktop +

+

+ Install Sound Theme + Freedesktop by running the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/sounds/freedesktop +
+
+
+
+
+
+
+
+

+ SoundTouch-2.4.0 +

+
+
+
+
+
+

+ Introduction to SoundTouch +

+

+ The SoundTouch package + contains an open-source audio processing library that allows + changing the sound tempo, pitch and playback rate parameters + independently from each other. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+
+
+

+ Installation of SoundTouch +

+
+

+ Note +

+

+ The tarball expands to 'soundtouch' instead of the expected + 'soundtouch-2.4.0' +

+
+

+ Install SoundTouch by + running the following commands: +

+
+

+ Caution +

+

+ The bootstrap + command below fails if the ACLOCAL environment variable is + set as specified in Xorg-7. If it is used, ACLOCAL + needs to be unset for this package and then reset for other + packages. +

+
+
./bootstrap &&
+./configure --prefix=/usr \
+            --docdir=/usr/share/doc/soundtouch-2.4.0 &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install 
+
+
+

+ Command Explanations +

+

+ --enable-openmp: This switch adds + support for running the algorithms in parallel across several + processor cores using OpenMP implementation provided by GCC. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + soundstretch +
+
+ Installed Library: + libSoundTouch.so +
+
+ Installed Directories: + /usr/include/soundtouch and + /usr/share/doc/soundtouch-2.4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ soundstretch +

+
+

+ is a program for processing WAV audio files by + modifying sound tempo, pitch and playback rate + properties independently from each other +

+
+

+ libSoundTouch.so +

+
+

+ contains SoundTouch API functions +

+
+
+
+
+
+
+
+

+ Speex-1.2.1 +

+
+
+
+
+
+

+ Introduction to Speex +

+

+ Speex is an audio + compression format designed specifically for speech. It is + well-adapted to internet applications and provides useful + features that are not present in most other CODECs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+ +
+

+ Speex Dependencies +

+
+ Required +
+

+ libogg-1.3.6 +

+
+ Optional +
+

+ Valgrind-3.25.1 +

+
+
+

+ Installation of Speex +

+

+ This package consists of two separate tarballs. They need to + be extracted and built independently. +

+

+ Install Speex by running the + following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/speex-1.2.1 &&
+make
+

+ This package does not come with a test suite. +

+

+ As the root user: +

+
make install
+

+ Now extract and install the speexdsp package: +

+
cd ..                          &&
+tar -xf speexdsp-1.2.1.tar.gz &&
+cd speexdsp-1.2.1             &&
+
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/speexdsp-1.2.1 &&
+make
+

+ Again, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + speexenc and speexdec +
+
+ Installed Libraries: + libspeex.so and + libspeexdsp.so +
+
+ Installed Directories: + /usr/include/speex and + /usr/share/doc/speex-1.2.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ speexdec +

+
+

+ decodes a Speex + file and produces a WAV or raw file +

+
+

+ speexenc +

+
+

+ encodes a WAV or raw file using Speex +

+
+

+ libspeex.so +

+
+

+ provides functions for the audio encoding/decoding + programs +

+
+

+ libspeexdsp.so +

+
+

+ is a speech processing library that goes along with + the Speex codec +

+
+
+
+
+
+
+
+

+ Taglib-2.1.1 +

+
+
+
+
+
+

+ Introduction to Taglib +

+

+ Taglib is a library used for + reading, writing and manipulating audio file tags and is used + by applications such as VLC. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://taglib.org/releases/taglib-2.1.1.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 9feffe76b4643eb724185310879c3123 +

    +
  • +
  • +

    + Download size: 1.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 16 MB +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU (Using parallelism=4) +

    +
  • +
+
+

+ Taglib Dependencies +

+
+ Required +
+

+ CMake-4.1.0 and utfcpp-4.0.6 +

+
+ Optional (for tests) +
+

+ Cppunit +

+
+
+

+ Installation of Taglib +

+

+ Install Taglib by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr \
+      -D CMAKE_BUILD_TYPE=Release  \
+      -D BUILD_SHARED_LIBS=ON \
+      .. &&
+make
+

+ The test suite requires Cppunit but it's not a BLFS package. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + taglib-config +
+
+ Installed Libraries: + libtag.so and libtag_c.so +
+
+ Installed Directories: + /usr/include/taglib +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ taglib-config +

+
+

+ is a tool used to print information about the + taglib installation +

+
+
+
+
+
+
+
+

+ v4l-utils-1.30.1 +

+
+
+
+
+
+

+ Introduction to v4l-utils +

+

+ v4l-utils provides a series + of utilities for media devices, allowing the ability to + handle the proprietary formats available from most webcams + (libv4l), and providing tools to test V4L devices. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ v4l-utils Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0, Qt-6.9.2 (for qv4l2 and qvidcap), + SDL2-2.32.8, both LLVM-20.1.8 (with Clang and + target BPF) and libbpf (for infrared + remote control decoders based on BPF), and SDL_image +

+
+
+

+ Installation of v4l-utils +

+
+

+ Note +

+

+ If you've installed both LLVM and libbpf (not in BLFS), + either enable the BPF target (via -D + LLVM_TARGETS_TO_BUILD=) when building LLVM, or + disable the infrared remote control decoders based on BPF: +

+
sed -i '/^ir_bpf_enabled/s/=.*/= false/' utils/keytable/meson.build
+
+

+ Install v4l-utils by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gconv=disabled   \
+      -D doxygen-doc=disabled &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+

+ If you also wish to install the contrib programs, add: +

+
for prog in v4l2gl v4l2grab
+do
+   cp -v contrib/test/$prog /usr/bin
+done
+
+
+

+ Command Explanations +

+

+ -D gconv=disabled: + This switch disables the erroneous installation of + gconv-modules that would break glibc. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cec-compliance, cec-ctl, + cec-follower, cx18-ctl, decode_tm6000, dvb-fe-tool, + dvb-format-convert, dvbv5-daemon, dvbv5-scan, dvbv5-zap, + ir-ctl, ir-keytable, ivtv-ctl, media-ctl, qv4l2, qvidcap, + rds-ctl, v4l2-compliance, v4l2-ctl, v4l2-dbg, v4l2gl, + v4l2grab, and v4l2-sysfs-path +
+
+ Installed Library: + libdvbv5.so, libv4l1.so, + libv4l2.so, libv4l2rds.so, libv4lconvert.so, + v4l1compat.so, and v4l2convert.so +
+
+ Installed Directories: + /etc/rc_keymaps, + /lib/udev/rc_keymaps, /usr/include/libdvbv5, and + /usr/lib/libv4l +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cx18-ctl +

+
+

+ is a tool to handle cx18 based devices +

+
+

+ decode_tm6000 +

+
+

+ decodes multiplexed formats from TM5600/TM6000 USB + devices +

+
+

+ dvb-fe-tool +

+
+

+ is a command line tool for digital TV services +

+
+

+ dvb-format-convert +

+
+

+ is a tool meant to convert among different file + formats. It is compliant with version 5 of the DVB + API +

+
+

+ dvbv5-scan +

+
+

+ is a command line frequency scanning tool for + digital TV services that are compliant with version + 5 of the DVB API +

+
+

+ dvbv5-zap +

+
+

+ is a command line tuning tool for digital TV + services that is compliant with version 5 of the + DVB API +

+
+

+ ir-keytable +

+
+

+ is a tool that lists the Remote Controller devices, + allows one to get/set IR keycode/scancode tables, + test events generated by IR, and to adjust other + Remote Controller options +

+
+

+ ivtv-ctl +

+
+

+ is a utility that can control many card settings, + like changing the inputs from tuner to svideo or + composite, setting video resolution or changing + video mode (PAL, SECAM, NTSC) +

+
+

+ media-ctl +

+
+

+ is a utility used to configure V4L2 devices +

+
+

+ qv4l2 +

+
+

+ is used to test video4linux capture devices +

+
+

+ qvidcap +

+
+

+ is used to capture video from a V4L2 device +

+
+

+ rds-ctl +

+
+

+ is a utility for decoding raw RDS data from V4L2 + Radio devices and offers simple ways to access the + received RDS information +

+
+

+ v4l2-compliance +

+
+

+ is a compliance test tool +

+
+

+ v4l2-ctl +

+
+

+ is a tool to control v4l2 controls from the cmdline +

+
+

+ v4l2-dbg +

+
+

+ is a tool to directly get and set registers of v4l2 + devices +

+
+

+ v4l2gl +

+
+

+ captures images using libv4l and stores them as PPM + files +

+
+

+ v4l2grab +

+
+

+ captures images using libv4l and stores them as PPM + files, while also allowing for additional options + such as setting the amount of frames captured and + saving the file as a RAW file +

+
+

+ v4l2-sysfs-path +

+
+

+ checks the media devices installed on a machine and + the corresponding device nodes +

+
+
+
+
+
+
+
+

+ Wireplumber-0.5.10 +

+
+
+
+
+
+

+ Introduction to Wireplumber +

+

+ The Wireplumber package + contains a session and policy manager for Pipewire. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Wireplumber Dependencies +

+
+ Required +
+

+ elogind-255.17, GLib-2.84.4, + and pipewire-1.4.7 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0, lxml-6.0.0, sphinx-8.2.3, + sphinx_rtd_theme-3.0.2, and + Breathe +

+
+
+

+ Installation of Wireplumber +

+

+ Install Wireplumber by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D system-lua=true .. &&
+ninja
+

+ To test the results, issue: ninja test. +

+

+ Now, as the root user: +

+
ninja install
+

+ Finally, rename the documentation directory to a versioned + directory as the root user: +

+
mv -v /usr/share/doc/wireplumber{,-0.5.10}
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ -D system-lua=true: + This switch enables using the system version of Lua. Omit + this switch if you have not installed Lua, but note that + meson will download and + install it's own version. +

+
+
+

+ Configuring Wireplumber +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ In order for Wireplumber to be used by Pipewire, + Wireplumber and Pipewire must be configured to start when a + desktop environment is started. +

+

+ Pipewire now provides it's own Pulseaudio server + implementation, which causes runtime conflicts with the + server provided by Pulseaudio itself. This generally + presents itself by applications hanging or malfunctioning + when trying to play or record audio and video. First, + prevent Pulseaudio from starting it's own server + implementation by running the following commands as the + root user: +

+
rm -vf /etc/xdg/autostart/pulseaudio.desktop         &&
+rm -vf /etc/xdg/Xwayland-session.d/00-pulseaudio-x11 &&
+sed -e '$a autospawn = no' -i /etc/pulse/client.conf
+

+ Next, create a shell script that will start Wireplumber and + Pipewire in the correct order as the root user: +

+
cat > /usr/bin/pipewire-launcher.sh << "EOF"
+#!/bin/sh
+# Begin /usr/bin/pipewire-launcher.sh
+
+# First, kill any previous instances of pipewire, wireplumber, or pipewire-pulse
+# that are running. Multiple instances of the daemon can not be run at the same
+# time, and this helps prevent possible errors if a user logs out or logs in
+# too fast, and restores audio if Pipewire hangs and needs to be reset.
+
+pkill -u ${USER} -fx /usr/bin/pipewire-pulse
+pkill -u ${USER} -fx /usr/bin/wireplumber
+pkill -u ${USER} -fx /usr/bin/pipewire
+
+# Start Pipewire first.
+exec /usr/bin/pipewire &
+
+# Next, we need to wait until pipewire is up before starting wireplumber.
+# This prevents a possible race condition where pipewire takes too long
+# to start, as some users have run into.
+while [ $(pgrep -f /usr/bin/pipewire) = "" ]; do
+   sleep 1
+done
+
+# Start Wireplumber now that Pipewire has been started.
+exec /usr/bin/wireplumber &
+
+# Start the Pulseaudio server included with Pipewire.
+exec /usr/bin/pipewire-pulse &
+
+# End /usr/bin/pipewire-launcher.sh
+EOF
+

+ Next, make this shell script executable as the root user: +

+
chmod +x /usr/bin/pipewire-launcher.sh
+

+ Finally, create an XDG Autostart file that will run + /usr/bin/pipewire-launcher.sh + when a desktop environment is started, as the root user: +

+
cat > /etc/xdg/autostart/pipewire.desktop << "EOF"
+[Desktop Entry]
+Version=1.0
+Name=Pipewire
+Comment=Starts the Pipewire and Wireplumber daemons
+Exec=/usr/bin/pipewire-launcher.sh
+Terminal=false
+Type=Application
+EOF
+

+ Now that Wireplumber is configured to start when a desktop + environment is started, it is recommended that you log out + of your session and log back in again. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + wireplumber, wpctl, and + wpexec +
+
+ Installed Libraries: + libwireplumber-0.5.so +
+
+ Installed Directories: + /usr/include/wireplumber-0.5, + /usr/lib/wireplumber-0.5, /usr/share/wireplumber, and + /usr/share/doc/wireplumber-0.5.10 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ wireplumber +

+
+

+ is a session and policy manager for Pipewire +

+
+

+ wpctl +

+
+

+ controls and queries information from Wireplumber +

+
+

+ wpexec +

+
+

+ executes Wireplumber scripts, which are often + written in Lua +

+
+

+ libwireplumber-0.5.so +

+
+

+ contains functions that allow other programs to + control Wireplumber +

+
+
+
+
+
+
+
+

+ x264-20250815 +

+
+
+
+
+
+

+ Introduction to x264 +

+

+ x264 package provides a + library for encoding video streams into the H.264/MPEG-4 AVC + format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ x264 + Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ ffms2, gpac or + liblsmash +

+
+
+

+ Installation of x264 +

+

+ Install x264 by running the + following commands: +

+
./configure --prefix=/usr   \
+            --enable-shared \
+            --disable-cli   &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-cli: This + switch disables building the command-line encoder which is + redundant since it requires FFmpeg for most of the input + formats. +

+

+ --disable-asm: Use this switch if + you didn't install NASM. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libx264.so +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libx264.so +

+
+

+ provides the functions used to encode video streams + into the H.264/MPEG-4 AVC format +

+
+
+
+
+
+
+
+

+ x265-4.1 +

+
+
+
+
+
+

+ Introduction to x265 +

+

+ x265 package provides a + library for encoding video streams into the H.265/HEVC + format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ x265 + Dependencies +

+
+ Required +
+

+ CMake-4.1.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ numactl +

+
+
+

+ Installation of x265 +

+

+ First, remove some CMake policy settings that are no longer + compatible with CMake-4.0 and later: +

+
sed -r '/cmake_policy.*(0025|0054)/d' -i source/CMakeLists.txt
+

+ Install x265 by running the + following commands: +

+
mkdir bld &&
+cd    bld &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D GIT_ARCHETYPE=1                  \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      -W no-dev                           \
+      ../source                           &&
+make
+

+ This package does not come with a test suite. +

+

+ To install the package, first remove any old library + versions. After installation, remove a static library. As the + root user: +

+
make install &&
+rm -vf /usr/lib/libx265.a
+
+
+

+ Command Explanations +

+

+ -D GIT_ARCHETYPE=1: + This switch is needed because the build system will not + generate a pkg-config file or install a shared library unless + git-2.50.1 + is installed. Git isn't required for anything else in this + package, so this switch is used to work around it for users + who do not want to install Git as a build dependency. +

+

+ -D + CMAKE_POLICY_VERSION_MINIMUM=3.5: This switch + allows building this package with cmake-4.0 or newer. +

+

+ -W no-dev: This + switch is used to suppress warnings intended for the package + developers. +

+

+ rm -vf + /usr/lib/libx265.a: BLFS does not recommend + using static libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + x265 +
+
+ Installed Library: + libx265.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libx265.so +

+
+

+ provides the functions used to encode video streams + into the H.265/HEVC format +

+
+
+
+
+
+
+
+

+ xine-lib-1.2.13 +

+
+
+
+
+
+

+ Introduction to Xine Libraries +

+

+ The Xine Libraries package + contains xine libraries. These are useful for interfacing + with external plug-ins that allow the flow of information + from the source to the audio and video hardware. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.sourceforge.net/xine/xine-lib-1.2.13.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 9e1be39857b7a3cd7cc0f2b96331ff22 +

    +
  • +
  • +

    + Download size: 4.8 MB +

    +
  • +
  • +

    + Estimated disk space required: 98 MB (with API + documentation) +

    +
  • +
  • +

    + Estimated build time: 0.5 SBU (Using parallelism=4; + with API documentation) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ Xine + Libraries Dependencies +

+
+ Required +
+

+ a graphical + environment, FFmpeg-7.1.1, and at least one of: + alsa-lib-1.2.14, PulseAudio-17.0, or + JACK +

+
+ Recommended +
+ +
+ Optional +
+

+ AAlib-1.4rc5, FAAD2-2.11.2, FLAC-1.5.0, + gdk-pixbuf-2.42.12, GLU-9.0.3, ImageMagick-7.1.2-1, liba52-0.8.0, + libdvdcss-1.4.3, libmad-0.15.1b, + libmng-2.0.3, libnsl-2.0.1, libva-2.22.0 + (requires GLU-9.0.3), libvdpau-1.5, libvorbis-1.3.7, + libvpx-1.15.2, Mesa-25.1.8, Samba-4.22.4, + sdl12-compat-1.2.68, Speex-1.2.1, + Doxygen-1.14.0 (to create the API + documentation), v4l-utils-1.30.1 DirectFB, + libbluray, + libcaca, libdca, + libFAME, libmodplug, + libtheora, + musepack, VCDImager, and + WavPack, +

+
+
+

+ Installation of Xine Libraries +

+

+ First, fix building this package with ffmpeg-7.0 and later: +

+
patch -Np1 -i ../xine-lib-1.2.13-upstream_fixes-1.patch
+

+ Next, fix building this package with gcc-15.x: +

+
patch -Np1 -i ../xine-lib-1.2.13-gcc15_fixes-1.patch
+

+ Install Xine Libraries by + running the following commands: +

+
./configure --prefix=/usr          \
+            --disable-vcd          \
+            --with-external-dvdnav \
+            --docdir=/usr/share/doc/xine-lib-1.2.13 &&
+make
+

+ To create the API documentation, Doxygen must be installed and issue the + following command: +

+
doxygen doc/Doxyfile
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+

+ Note +

+

+ When installing, the Makefile does some additional linking. + If you do not have Xorg in /usr, the LIBRARY_PATH variable + needs to be defined for the root user. If using sudo to + assume root, use the -E option to pass your current + environment variables for the install process. +

+
+

+ If you built the API documentation, issue the following + commands as the root user to + install it: +

+
install -v -m755 -d /usr/share/doc/xine-lib-1.2.13/api &&
+install -v -m644    doc/api/* \
+                    /usr/share/doc/xine-lib-1.2.13/api
+
+
+

+ Command Explanations +

+

+ --disable-vcd: This + switch is required to compile Xine + Lib without VCDImager installed. + Remove this option if you have installed VCDImager. +

+

+ --with-external-dvdnav: This + switch is required, because internal libraries cannot decrypt + DVD. +

+

+ --docdir=/usr/share/doc/xine-lib-1.2.13: + This switch causes the documentation to be installed into a + versioned directory instead of the default /usr/share/doc/xine-lib. +

+

+ --disable-vaapi: use this switch + if libva-2.22.0 is installed and GLU-9.0.3 is not, to + prevent a build failure. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xine-config and + xine-list-1.2 +
+
+ Installed Libraries: + libxine.so and numerous plugin + modules and video extensions under + /usr/lib/xine/plugins/2.8 +
+
+ Installed Fonts: + Output display engine fonts located + in /usr/share/xine-lib/fonts +
+
+ Installed Directories: + /usr/include/xine, /usr/lib/xine, + /usr/share/xine-lib, and + /usr/share/doc/xine-lib-1.2.13 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ xine-config +

+
+

+ provides information to programs trying to link + with the xine + libraries +

+
+

+ xine-list-1.2 +

+
+

+ is used to get supported file type information from + xine-lib +

+
+

+ libxine.so +

+
+

+ provides the API for processing audio/video files +

+
+
+
+
+
+
+
+

+ XviD-1.3.7 +

+
+
+
+
+
+

+ Introduction to XviD +

+

+ XviD is an MPEG-4 compliant + video CODEC. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ XviD + Dependencies +

+
+ Optional +
+

+ yasm-1.3.0 or NASM-2.16.03 +

+
+
+

+ Installation of XviD +

+
+

+ Note +

+

+ This package tarball expands to xvidcore, not the expected xvidcore-1.3.7. +

+
+

+ First, fix a problem when building with gcc-15: +

+
sed -i '/typedef int bool;/d' src/encoder.h
+

+ Install XviD by running the + following commands: +

+
cd build/generic &&
+sed -i 's/^LN_S=@LN_S@/& -f -v/' platform.inc.in &&
+
+./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
sed -i '/libdir.*STATIC_LIB/ s/^/#/' Makefile &&
+make install &&
+
+chmod -v 755 /usr/lib/libxvidcore.so.4.3 &&
+install -v -m755 -d /usr/share/doc/xvidcore-1.3.7/examples &&
+install -v -m644 ../../doc/* /usr/share/doc/xvidcore-1.3.7 &&
+install -v -m644 ../../examples/* \
+    /usr/share/doc/xvidcore-1.3.7/examples
+
+
+

+ Command Explanations +

+

+ sed -i 's/^LN_S=@LN_S@/& -f + -v/' platform.inc.in: Fix error during + make install if + reinstalling or upgrading. +

+

+ sed -i '/libdir.*STATIC_LIB/ + s/^/#/' Makefile: This command disables + installing the static library. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libxvidcore.so +
+
+ Installed Directory: + /usr/share/doc/xvidcore-1.3.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libxvidcore.so +

+
+

+ provides functions to encode and decode most MPEG-4 + video data +

+
+
+
+
+
+
+
+
+

+ Chapter 43. Audio + Utilities +

+
+
+
+
+

+ This chapter contains programs involved with audio file + manipulation; that is to say playing, recording, ripping and the + other common things which people want to do. It also includes a + package used to render text to speech using your system's audio + hardware. To use much of this software, you will need to have the + kernel sound drivers installed. +

+
+
+
+

+ Audacious-4.5 +

+
+
+
+
+
+

+ Introduction to Audacious +

+

+ Audacious is an audio + player. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+

+ Required Plugins +

+ +
+

+ Audacious Dependencies +

+
+ Required +
+

+ GTK-3.24.50 and Qt-6.9.2 +

+
+ Recommended +
+

+ libarchive-3.8.1 +

+
+ Optional +
+

+ Valgrind-3.25.1 +

+
+ Recommended (for Plugins) +
+ +
+ Optional (for Plugins) +
+

+ alsa-lib-1.2.14, cURL-8.15.0, FAAD2-2.11.2, + FLAC-1.5.0, LAME-3.100, libxml2-2.14.5, + libcdio-2.1.0 (to identify and play CDs), + libnotify-0.8.6, libsndfile-1.2.2, + libvorbis-1.3.7, Opus-1.5.2, pipewire-1.4.7, + PulseAudio-17.0, SDL2-2.32.8, ampache-browser, + adplug, + The Bauer + stereophonic-to-binaural DSP (bs2b) library, FluidSynth, + JACK + (requires libsamplerate-0.2.2), libcue, + libmodplug, + libmms, + libopenmpt, + libsidplayfp, + LIRC, + sndio, + SoX, and + WavPack +

+
+
+

+ Installation of Audacious +

+
+
+
+
+

+ Installation of the Main + Audacious Program +

+
+
+
+

+ Install Audacious by + running the following commands (you may wish to change the + buildstamp to another string): +

+
mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gtk=true         \
+      -D qt=true          \
+      -D buildstamp=BLFS  \
+      -D libarchive=true  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+
+
+
+
+

+ Installation of Audacious + Plugins +

+
+
+
+

+ Install the required plugins package by issuing the + following commands: +

+
tar -xf ../../audacious-plugins-4.5.tar.bz2 &&
+cd audacious-plugins-4.5                    &&
+
+mkdir build &&
+cd    build &&
+
+meson setup ..            \
+      --prefix=/usr       \
+      --buildtype=release \
+      -D gtk=true         \
+      -D qt=true          \
+      -D opus=false       \
+      -D wavpack=false    &&
+ninja
+

+ Now, as the root user: +

+
ninja install
+
+
+
+

+ Command Explanations +

+

+ -D buildstamp=BLFS: + This switch appends the given text to the version string. +

+

+ -D gtk=true: This + option enables GTK support for the graphical user interface. +

+

+ -D qt=true: This + option enables Qt support for the graphical user interface. +

+

+ -D libarchive=true: + This adds libarchive support, for reading compressed module + sets or skins. +

+

+ -D valgrind=true: The option + enables Valgrind analysis support. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + audacious and audtool +
+
+ Installed Libraries: + libaudcore.so, libaudgui.so, + libaudqt.so, libaudtag.so, and several plugin libraries + under /usr/lib/audacious/ sub-directories +
+
+ Installed Directories: + /usr/include/{audacious,libaudcore,libaudgui,libaudqt}, + /usr/lib/audacious, and /usr/share/audacious +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ audacious +

+
+

+ is an audio player and is a descendant of + XMMS +

+
+

+ audtool +

+
+

+ is a small tool to modify the behavior of a running + audacious + instance +

+
+
+
+
+
+
+
+

+ CDParanoia-III-10.2 +

+
+
+
+
+
+

+ Introduction to CDParanoia +

+

+ The CDParanoia package + contains a CD audio extraction tool. This is useful for + extracting .wav files from + audio CDs. A CDDA capable CDROM drive is needed. Practically + all drives supported by Linux can be used. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/cdparanoia +

+
+
+

+ Installation of CDParanoia +

+
+

+ Note +

+

+ This package does not support parallel build. +

+
+

+ Install CDParanoia by + running the following commands: +

+
patch -Np1 -i ../cdparanoia-III-10.2-gcc_fixes-1.patch &&
+./configure --prefix=/usr --mandir=/usr/share/man &&
+make -j1
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+chmod -v 755 /usr/lib/libcdda_*.so.0.10.2 &&
+rm -fv /usr/lib/libcdda_*.a
+
+
+

+ Contents +

+
+
+
+ Installed Program: + cdparanoia +
+
+ Installed Libraries: + libcdda_interface.so and + libcdda_paranoia.so +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ cdparanoia +

+
+

+ is used for 'ripping' an audio-cd. Ripping is the + process of digitally extracting music from an audio + CD +

+
+

+ libcdda_interface +

+
+

+ contains functions used by cdparanoia, as + well as other packages, which can automatically + identify if a CD device is CDDA compatible +

+
+

+ libcdda_paranoia +

+
+

+ contains functions used by cdparanoia, as + well as other packages, which provide data + verification, synchronization, error handling and + scratch reconstruction capability +

+
+
+
+
+
+
+
+

+ kwave-25.08.0 +

+
+
+
+
+
+

+ Introduction to KWave +

+

+ The KWave package contains a + KDE Frameworks based Sound Editor application. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ KWave Dependencies +

+
+ Required +
+

+ AudioFile-0.3.6, fftw-3.3.10, id3lib-3.8.3, and + KDE + Frameworks-6.17.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of KWave +

+

+ Install KWave by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
+      -D CMAKE_BUILD_TYPE=Release         \
+      -D BUILD_TESTING=OFF                \
+      -W no-dev .. &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + kwave +
+
+ Installed Libraries: + libkwave.so, libkwavegui.so, and 30 + plugins +
+
+ Installed Directories: + $KF6_PREFIX/lib/plugins/kwave, + $KF6_PREFIX/share/kwave, + $KF6_PREFIX/share/doc/HTML/*/kwave +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ kwave +

+
+

+ is a sound editor built on the KDE Frameworks +

+
+
+
+
+
+
+
+

+ LAME-3.100 +

+
+
+
+
+
+

+ Introduction to LAME +

+

+ The LAME package contains an + MP3 encoder and optionally, an MP3 frame analyzer. This is + useful for creating and analyzing compressed audio files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ LAME + Dependencies +

+
+ Optional +
+

+ Dmalloc, + + Electric Fence, libsndfile-1.2.2 and NASM-2.16.03 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/lame +

+
+
+

+ Installation of LAME +

+

+ Prevent the source code directory from being mistakenly + hardcoded as a shared library search path in the installed + programs: +

+
sed -i -e 's/^\(\s*hardcode_libdir_flag_spec\s*=\).*/\1/' configure
+

+ Install LAME by running the + following commands: +

+
./configure --prefix=/usr --enable-mp3rtp --disable-static &&
+make
+

+ To test the results, issue: LD_LIBRARY_PATH=libmp3lame/.libs make + test. +

+

+ Now, as the root user: +

+
make pkghtmldir=/usr/share/doc/lame-3.100 install
+
+
+

+ Command Explanations +

+

+ --enable-mp3rtp: This + switch enables building the encode-to-RTP program. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-nasm: This option + enables the use of NASM-2.16.03 to compile optimized assembly + routines for 32-bit x86. Note that this has no effect on + x86_64. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + lame and mp3rtp +
+
+ Installed Library: + libmp3lame.so +
+
+ Installed Directories: + /usr/include/lame and + /usr/share/doc/lame-3.100 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ lame +

+
+

+ creates MP3 audio files from raw PCM or + .wav data +

+
+

+ mp3rtp +

+
+

+ is used to encode MP3 with RTP streaming of the + output +

+
+

+ libmp3lame.so +

+
+

+ provides the functions necessary to convert raw PCM + and WAV files to MP3 files +

+
+
+
+
+
+
+
+

+ mpg123-1.33.2 +

+
+
+
+
+
+

+ Introduction to mpg123 +

+

+ The mpg123 package contains + a console-based MP3 player. It claims to be the fastest MP3 + decoder for Unix. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ mpg123 Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ PulseAudio-17.0, SDL2-2.32.8, JACK, OpenAL and PortAudio +

+
+
+

+ Installation of mpg123 +

+

+ Install mpg123 by running + the following commands: +

+
./configure --prefix=/usr &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mpg123, mpg123-id3dump, + mpg123-strip, and out123 +
+
+ Installed Libraries: + libmpg123.so, libout123.so, and + libsyn123.so +
+
+ Installed Directory: + /usr/lib/mpg123 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ mpg123 +

+
+

+ is used for playing MP3 files via the console +

+
+

+ mpg123-id3dump +

+
+

+ is a tool to dump ID3 meta data from MPEG audio + files using libmpg123 +

+
+

+ mpg123-strip +

+
+

+ extracts only MPEG frames from a stream using + libmpg123 (stdin to stdout) +

+
+

+ out123 +

+
+

+ plays raw PCM audio to an output device +

+
+

+ libmpg123.so +

+
+

+ contains the mpg123 API functions +

+
+

+ libout123.so +

+
+

+ contains the out123 API functions +

+
+

+ libsyn123.so +

+
+

+ contains some audio signal synthesis and format + conversion functions +

+
+
+
+
+
+
+
+

+ pavucontrol-6.1 +

+
+
+
+
+
+

+ Introduction to pavucontrol +

+

+ PulseAudio Volume Control (pavucontrol) is a simple GTK based + volume control tool ("mixer") for the PulseAudio sound + server. In contrast to classic mixer tools, this one allows + you to control both the volume of hardware devices and of + each playback stream separately. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ pavucontrol Dependencies +

+
+ Required +
+

+ Gtkmm-4.18.0, JSON-GLib-1.10.6, + libsigc++-3.6.0, and PulseAudio-17.0 +

+

+ Optional +

+

+ libcanberra-0.30 and Lynx-2.9.2 +

+
+
+

+ Installation of pavucontrol +

+

+ Install pavucontrol by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release -D lynx=false .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install &&
+mv /usr/share/doc/pavucontrol /usr/share/doc/pavucontrol-6.1
+
+
+
+

+ Command Explanations +

+

+ -D lynx=false: This + switch disables generating the README file in text format. + Remove this switch if you want the README file in text format + and have Lynx-2.9.2 installed. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + pavucontrol +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/pavucontrol and + /usr/share/doc/pavucontrol-6.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pavucontrol +

+
+

+ is a GUI configuration tool for sound settings + using pulsaudio +

+
+
+
+
+
+
+
+

+ pnmixer-0.7.2 +

+
+
+
+
+
+

+ Introduction to Pnmixer +

+

+ The Pnmixer package provides + a lightweight volume control with a tray icon. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Pnmixer Dependencies +

+
+ Required +
+

+ alsa-utils-1.2.14, GTK-3.24.50, and + libnotify-0.8.6 +

+
+
+

+ Installation of Pnmixer +

+

+ Install Pnmixer by running + the following commands: +

+
mkdir build &&
+cd    build &&
+
+cmake -D CMAKE_INSTALL_PREFIX=/usr        \
+      -D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
+      ..  &&
+make
+

+ This package does not have a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + pnmixer +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/pnmixer +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pnmixer +

+
+

+ is a lightweight volume control that sits in a tray +

+
+
+
+
+
+
+
+

+ vorbis-tools-1.4.3 +

+
+
+
+
+
+

+ Introduction to Vorbis Tools +

+

+ The Vorbis Tools package + contains command-line tools useful for encoding, playing or + editing files using the Ogg codec. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Vorbis Tools Dependencies +

+
+ Required +
+

+ libvorbis-1.3.7 +

+
+ Optional (required to build the + ogg123 program) +
+

+ libao-1.2.0 +

+
+ Optional +
+

+ cURL-8.15.0, FLAC-1.5.0, Speex-1.2.1, and libkate +

+
+
+

+ Installation of Vorbis Tools +

+

+ Install Vorbis Tools by + running the following commands: +

+
./configure --prefix=/usr --enable-vcut &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --enable-vcut: This + parameter is used so that the vcut program is built as it + is not by default. +

+
+
+

+ Configuring Vorbis Tools +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/libao.conf, ~/.libao and ~/.ogg123rc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Issue man + libao.conf for information about setting + the default output device. Also see /usr/share/doc/vorbis-tools-1.4.3/ogg123rc-example. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ogg123, oggdec, oggenc, ogginfo, + vcut, and vorbiscomment +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/doc/vorbis-tools-1.4.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ogg123 +

+
+

+ is a command-line audio player for Ogg Vorbis + streams +

+
+

+ oggdec +

+
+

+ is a simple decoder which converts Ogg Vorbis files + into PCM audio files (WAV or raw) +

+
+

+ oggenc +

+
+

+ is an encoder that turns raw, WAV or AIFF files + into an Ogg Vorbis stream +

+
+

+ ogginfo +

+
+

+ prints information stored in an audio file +

+
+

+ vcut +

+
+

+ splits a file into two files at a designated cut + point +

+
+

+ vorbiscomment +

+
+

+ is an editor that changes information in the audio + file metadata tags +

+
+
+
+
+
+
+
+
+

+ Chapter 44. Video + Utilities +

+
+
+
+
+

+ This chapter always seems to be the favorite chapter. It's + probably because there is a lot of satisfaction in playing your + first video when you have spent so much time getting to that + point. All those libraries, all the configurations and your + reward is that you finally get to watch a movie. Not to worry + though, there is always one more CODEC to install. +

+
+
+
+

+ FFmpeg-7.1.1 +

+
+
+
+
+
+

+ Introduction to FFmpeg +

+

+ FFmpeg is a solution to + record, convert and stream audio and video. It is a very fast + video and audio converter and it can also acquire from a live + audio/video source. Designed to be intuitive, the + command-line interface (ffmpeg) tries to figure out + all the parameters, when possible. FFmpeg can also convert from any sample + rate to any other, and resize video on the fly with a high + quality polyphase filter. FFmpeg can use a Video4Linux compatible + video source and any Open Sound System audio source. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://ffmpeg.org/releases/ffmpeg-7.1.1.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: 26f2bd7d20c6c616f31d7130c88d7250 +

    +
  • +
  • +

    + Download size: 11 MB +

    +
  • +
  • +

    + Estimated disk space required: 205 MB (add 1.7 GB for + the FATE suite/tests, add 869 MB for documentation) +

    +
  • +
  • +

    + Estimated build time: 1.2 SBU (using parallelism=4; add + 3.2 SBU (with THREADS=4) to run the FATE suite after + sample files are downloaded; add 0.2 SBU for doxygen + docs) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ FFmpeg Dependencies +

+
+ Recommended +
+ +
+ Recommended for desktop use +
+ +
+ Recommended for systems with Intel + Video +
+ +
+ Optional +
+

+ Doxygen-1.14.0, Fontconfig-2.17.1, FriBidi-1.0.16, + frei0r-2.3.3, libcdio-2.1.0 (to + identify and play CDs), libdrm-2.4.125 (for “kmsgrab” input), + libjxl-0.11.1, libplacebo-7.351.0 (for hardware + accelerated color spaces and HDR tonemapping), libwebp-1.6.0, OpenJPEG-2.5.3, + GnuTLS-3.8.10, PulseAudio-17.0, + Samba-4.22.4, Speex-1.2.1, texlive-20250308 (or install-tl-unx) for PDF and PS + documentation, v4l-utils-1.30.1, Vulkan-Loader-1.4.321, XviD-1.3.7, + a graphical + environment, dav1d, + Flite, GSM, libaacplus, + libbluray, + libcaca, libcelt, + libdc1394, + libdca, + libiec61883, + libilbc, libmodplug, + libnut (Git + checkout), librtmp, libssh, libtheora, + OpenAL, + OpenCore + AMR, Srt, Schroedinger, + TwoLAME, + + vo-aaenc, + vo-amrwbenc, and ZVBI +

+
+
+

+ Installation of FFmpeg +

+

+ First, apply a patch that adds an API necessary for some + packages to build: +

+
patch -Np1 -i ../ffmpeg-7.1.1-chromium_method-1.patch
+

+ Install FFmpeg by running + the following commands: +

+
./configure --prefix=/usr        \
+            --enable-gpl         \
+            --enable-version3    \
+            --enable-nonfree     \
+            --disable-static     \
+            --enable-shared      \
+            --disable-debug      \
+            --enable-libaom      \
+            --enable-libass      \
+            --enable-libfdk-aac  \
+            --enable-libfreetype \
+            --enable-libmp3lame  \
+            --enable-libopus     \
+            --enable-libvorbis   \
+            --enable-libvpx      \
+            --enable-libx264     \
+            --enable-libx265     \
+            --enable-openssl     \
+            --ignore-tests=enhanced-flv-av1 \
+            --docdir=/usr/share/doc/ffmpeg-7.1.1 &&
+
+make &&
+
+gcc tools/qt-faststart.c -o tools/qt-faststart
+

+ HTML documentation was built in the previous step. If you + have texlive-20250308 installed and + wish to build PDF and Postscript versions of the + documentation, issue the following commands: +

+
pushd doc &&
+for DOCNAME in `basename -s .html *.html`
+do
+    texi2pdf -b $DOCNAME.texi &&
+    texi2dvi -b $DOCNAME.texi &&
+
+    dvips    -o $DOCNAME.ps   \
+                $DOCNAME.dvi
+done &&
+popd &&
+unset DOCNAME
+

+ If you have Doxygen-1.14.0 installed and you wish to + build (if --disable-doc was used) or rebuild the html + documentation, issue: +

+
doxygen doc/Doxyfile
+

+ The fate-suite tests include comparisons with installed + files, and should not be run before the package is installed. + Therefore, if you desire to run them, instructions are given + further below. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -m755    tools/qt-faststart /usr/bin &&
+install -v -m755 -d           /usr/share/doc/ffmpeg-7.1.1 &&
+install -v -m644    doc/*.txt /usr/share/doc/ffmpeg-7.1.1
+

+ If the PDF and Postscript documentation was built, issue the + following commands, as the root user, to install them: +

+
install -v -m644 doc/*.pdf /usr/share/doc/ffmpeg-7.1.1 &&
+install -v -m644 doc/*.ps  /usr/share/doc/ffmpeg-7.1.1
+

+ If you used doxygen to manually create + the API documentation, install it by issuing the following + commands as the root user: +

+
install -v -m755 -d /usr/share/doc/ffmpeg-7.1.1/api                     &&
+cp -vr doc/doxy/html/* /usr/share/doc/ffmpeg-7.1.1/api                  &&
+find /usr/share/doc/ffmpeg-7.1.1/api -type f -exec chmod -c 0644 \{} \; &&
+find /usr/share/doc/ffmpeg-7.1.1/api -type d -exec chmod -c 0755 \{} \;
+

+ To properly test the installation you must have rsync-3.4.1 + installed and follow the instructions for the FFmpeg + Automated Testing Environment (FATE). First, about 1 GB + of sample files used to run FATE are downloaded with the + command: +

+
make fate-rsync SAMPLES=fate-suite/
+

+ The fate-suite directory is + created and the files are downloaded there. That command + actually runs an rsync command to obtain the sample files. + You may want to compress and keep this directory for testing + again, for testing in another system, or for when a new + version of ffmpeg is released. Then, unpack the sample files + in the source directory, and run the make fate-rsync ... command + above to sync with the upstream repository. The download size + and time are drastically reduced by doing this. Estimated + values in "Package Information" do not include the download + SBU. Some samples may have been removed in newer versions, so + in order to be sure local and server fate samples are + identical when you use previously saved samples, run the + following command: +

+
rsync -vrltLW  --delete --timeout=60 --contimeout=60 \
+      rsync://fate-suite.ffmpeg.org/fate-suite/ fate-suite/
+

+ Next, execute FATE with the following commands (there are + more than 3800 tests in the suite): +

+
make fate THREADS=N SAMPLES=fate-suite/ | tee ../fate.log &&
+grep ^TEST ../fate.log | wc -l
+

+ where N is an + integer, N ≤ number + of cores in the system. +

+

+ A successful run should return no errors or warnings, just a + list of tests and total amount at the end. +

+
+
+

+ Command Explanations +

+

+ find ... ;: + Fixes permissions of documentation files and directories. +

+

+ --enable-libfreetype: + Enables Freetype support. +

+

+ --enable-gpl: Enables + the use of GPL code and permits support for postprocessing, + swscale and many other features. +

+

+ --enable-version3: + Enables the use of (L)GPL version 3 code. +

+

+ --enable-nonfree: + Enables the use of nonfree code. Note that the resulting + libraries and binaries will be unredistributable. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-shared: + Enables building shared libraries, otherwise only static + libraries are built and installed. +

+

+ --disable-debug: + Disables building debugging symbols into the programs and + libraries. +

+

+ --enable-libaom: + Enables AV1 audio and video decoding via libaom. +

+

+ --enable-libass: + Enables ASS/SSA subtitle format rendering via libass. +

+

+ --enable-libdrm: Use this switch + if libdrm-2.4.125 is installed to build the + “kmsgrab” input module which is useful + for screen capturing or streaming. +

+

+ --enable-libfdk-aac: + Enables AAC audio encoding via libfdk-aac. +

+

+ --enable-libmp3lame: + Enables MP3 audio encoding via libmp3lame. +

+

+ --enable-libvorbis + --enable-libvpx: + Enables WebM encoding via libvorbis and libvpx. +

+

+ --enable-libx264: + Enables high-quality H.264/MPEG-4 AVC encoding via + libx264. +

+

+ --enable-libx265: + Enables high-quality H.265/HEVC encoding via libx265. +

+

+ --enable-openssl: + Enables HTTPS protocol for network streams. +

+

+ --ignore-tests=...: + Disables tests that fail to run on BLFS without the optional + packages. Currently the AV1 test is disabled as it needs + dav1d to do AV1 decoding on the CPU. The test might work if + you have a GPU that can decode AV1, but this was not tested. +

+

+ --enable-gnutls: Use this option + instead of --enable-openssl, if you want + to use GnuTLS instead of + OpenSSL for HTTPS protocol. +

+

+ --disable-doc: Disables building + html documentation. This is only needed if Doxygen-1.14.0 is + installed and you do not want to build the html + documentation. +

+

+ --enable-libpulse: Enables + support for Pulseaudio for + audio output. +

+

+ --enable-libplacebo: Enables + support for libpulse for + hardware accelerated color spaces. +

+

+ gcc tools/qt-faststart.c -o + tools/qt-faststart: This builds the + qt-faststart + program which can modify QuickTime formatted movies + (.mov or .mp4) so that the header information is + located at the beginning of the file instead of the end. This + allows the movie file to begin playing before the entire file + has been downloaded. +

+
+

+ Note +

+

+ Support for most of the dependency packages requires using + options passed to the configure script. View + the output from ./configure + --help for complete information about + enabling dependency packages. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ffmpeg, ffplay, ffprobe, and + qt-faststart +
+
+ Installed Libraries: + libavcodec.so, libavdevice.so, + libavfilter.so, libavformat.so, libavutil.so, + libpostproc.so, libswresample.so, and + libswscale.so +
+
+ Installed Directories: + /usr/include/libav{codec,device,filter,format,util}, + /usr/include/libpostproc, + /usr/include/libsw{resample,scale}, + /usr/share/doc/ffmpeg-7.1.1, and /usr/share/ffmpeg +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ffmpeg +

+
+

+ is a command-line tool to convert video files, + network streams and input from a TV card to several + video formats +

+
+

+ ffplay +

+
+

+ is a very simple and portable media player using + the ffmpeg libraries + and the SDL library +

+
+

+ ffprobe +

+
+

+ gathers information from multimedia streams and + prints it in a human and machine-readable fashion +

+
+

+ qt-faststart +

+
+

+ moves the index file to the front of quicktime + (mov/mp4) videos +

+
+

+ libavcodec.so +

+
+

+ is a library containing the FFmpeg codecs (both encoding + and decoding) +

+
+

+ libavdevice.so +

+
+

+ is the FFmpeg + device handling library +

+
+

+ libavfilter.so +

+
+

+ is a library of filters that can alter video or + audio between the decoder and the encoder (or + output) +

+
+

+ libavformat.so +

+
+

+ is a library containing the file formats handling + (mux and demux code for several formats) used by + ffplay as well as + allowing the generation of audio or video streams +

+
+

+ libavresample.so +

+
+

+ is a library containing functions for resampling + audio and video. +

+
+

+ libavutil.so +

+
+

+ is the FFmpeg + utility library +

+
+

+ libpostproc.so +

+
+

+ is the FFmpeg post + processing library +

+
+

+ libswresample.so +

+
+

+ is the FFmpeg + audio rescaling library, it contains functions for + converting audio sample formats +

+
+

+ libswscale.so +

+
+

+ is the FFmpeg + image rescaling library +

+
+
+
+
+
+
+
+

+ mpv-0.40.0 +

+
+
+
+
+
+

+ Introduction to mpv +

+

+ mpv is a free media player + for the command line. It supports a wide variety of media + file formats, audio and video codecs, and subtitle types. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ mpv + Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14, FFmpeg-7.1.1, libass-0.17.4, libplacebo-7.351.0, Mesa-25.1.8, and + PulseAudio-17.0 +

+
+ Recommended +
+ +
+ Optional Input Drivers and Libraries +
+

+ libdvdcss-1.4.3, libdvdread-6.1.3, + libdvdnav-6.1.1, and libbluray +

+
+ Optional Audio Output Drivers and + Libraries +
+

+ pipewire-1.4.7, SDL2-2.32.8, JACK, and OpenAL +

+
+ Optional Video Output Drivers and + Libraries +
+

+ libcaca and + SVGAlib +

+
+ Optional (for documentation) +
+

+ docutils-0.21.2 +

+
+
+

+ Installation of mpv +

+

+ Add a fix to build with FFMpeg > 7.0 +

+
sed -i 's/AV_OPT_TYPE_CHANNEL_LAYOUT/AV_OPT_TYPE_CHLAYOUT/' filters/f_lavfi.c
+

+ Install mpv by running the + following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr       \
+            --buildtype=release \
+            -D x11=enabled      \
+            ..                  &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ -D x11=enabled: + allows linking to the X11 libraries. +

+

+ -D dvdnav=enabled: enables + support for DVD playback. +

+

+ -D cdda=enabled: enables support + for CD Audio. +

+

+ -D sdl2=enabled: enables the + usage of SDL2 for audio and video output. +

+
+
+

+ Configuring mpv +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/mpv/* and ~/.config/mpv/* +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + mpv +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/mpv and + /usr/share/doc/mpv +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ mpv +

+
+

+ is the mpv video player +

+
+
+
+
+
+
+
+

+ VLC-3.0.21 +

+
+
+
+
+
+

+ Introduction to VLC +

+

+ VLC is a media player, + streamer, and encoder. It can play from many inputs, such as + files, network streams, capture devices, desktops, or DVD, + SVCD, VCD, and audio CD. It can use most audio and video + codecs (MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC, + etc.), and it can also convert to different formats and/or + send streams through the network. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://download.videolan.org/vlc/3.0.21/vlc-3.0.21.tar.xz +

    +
  • +
  • +

    + Download MD5 sum: cde72f38943c685a1a39acc82da2339f +

    +
  • +
  • +

    + Download size: 24 MB +

    +
  • +
  • +

    + Estimated disk space required: 746 MB +

    +
  • +
  • +

    + Estimated build time: 1.9 SBU (using parallelism=4; + with tests) +

    +
  • +
+
+

+ Additional Downloads +

+ +

+ VLC + Dependencies +

+
+ Recommended +
+ +
+ Optional features and packages +
+

+ dbus-1.16.2, libidn-1.43, and libssh2-1.11.1 +

+
+ Optional input plugins +
+

+ libarchive-3.8.1, libcddb-1.3.2, + libdv-1.0.0, libdvdcss-1.4.3, + libdvdread-6.1.3, libdvdnav-6.1.1, libproxy-0.5.10, + opencv-4.12.0, Samba-4.22.4, v4l-utils-1.30.1, libbluray, + libdc1394, + libnfs, libraw1394, + Live555, + and VCDImager + (requires libcdio-2.1.0) +

+
+ Optional mux/demux plugins +
+

+ libogg-1.3.6, Game Music + Emu, libdvbpsi, + libshout, + libmatroska + (requires libebml), + libmodplug, + Musepack, and sidplay-libs +

+
+ Optional codec plugins +
+

+ FAAD2-2.11.2, FLAC-1.5.0, libaom-3.12.1, libass-0.17.4, libmpeg2-0.5.1, + libpng-1.6.50, libva-2.22.0, libvorbis-1.3.7, Opus-1.5.2, Speex-1.2.1, libvpx-1.15.2, x264-20250815, aribb24, dav1d, + Dirac, + FluidLite, + FluidSynth, + libdca, + libkate, + libtheora, + OpenMAX, Schroedinger, + Shine, SoX, + Tremor, Twolame, and Zapping VBI +

+
+ Optional video plugins +
+

+ AAlib-1.4rc5, Fontconfig-2.17.1, FreeType-2.13.3, FriBidi-1.0.16, + libplacebo-7.351.0 (currently + broken), librsvg-2.61.0, libvdpau-1.5, sdl12-compat-1.2.68, libcaca, and + libmfx +

+
+ Optional audio plugins +
+

+ PulseAudio-17.0, libsamplerate-0.2.2, spatialaudio, + and JACK +

+
+ Optional interface plugins +
+

+ FreeRDP-3.17.0, libtar, libvncclient, + and LIRC +

+
+ Optional visualisations and video + filter plugins +
+

+ Goom, libvsxu, and + projectM +

+
+ Optional service discovery plugins +
+

+ Avahi-0.8, libmtp and + libupnp +

+
+ Miscellaneous options +
+

+ GnuTLS-3.8.10, libnotify-0.8.6, + libxml2-2.14.5, Protobuf-32.0, + taglib-2.1.1, xdg-utils-1.2.1 + (runtime), + AtmoLight, libmicrodns, + and Srt +

+
+
+

+ Installation of VLC +

+

+ First, add corrections for problems of taglib-2.0 and + ffmpeg-7 and later: +

+
patch -Np1 -i ../vlc-3.0.21-taglib-1.patch         &&
+patch -Np1 -i ../vlc-3.0.21-fedora_ffmpeg7-1.patch
+

+ Install VLC by running the + following commands: +

+
BUILDCC=gcc ./configure --prefix=/usr --disable-libplacebo &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc/vlc-3.0.21 install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ --disable-libplacebo: + This switch is required to disable support for using + libplacebo as a rendering pipeline because VLC is + incompatible with the latest version of libplacebo. +

+

+ --disable-vpx: Use this switch to + disable libvpx. +

+

+ --disable-mad: Use this switch if + you don't have libmad + installed. +

+

+ --disable-avcodec + --disable-swscale: Use these switches if you don't + have FFmpeg installed. +

+

+ --disable-a52: Use this switch if + you don't have liba52 + installed. +

+

+ --disable-xcb: Use this switch if + you don't have X Window + System installed. +

+

+ --disable-alsa: Use this switch + if you don't have ALSA + installed. +

+

+ --disable-libgcrypt: Use this + switch if you don't have libgcrypt installed. +

+

+ --disable-sftp: The default is to + build the sftp module if libssh2-1.11.1 is installed. Use + this switch if you do not want to build this module. +

+
+

+ Note +

+

+ There are many options to VLC's configure command. Check + the configure + --help output for a complete list. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cvlc, nvlc, rvlc, svlc, vlc and + vlc-wrapper +
+
+ Installed Libraries: + libvlccore.so, libvlc.so, and many + plugins in /usr/lib/vlc/plugins +
+
+ Installed Directories: + /usr/{include,lib,share}/vlc, + /usr/share/kde4, and /usr/share/doc/vlc-3.0.21 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cvlc +

+
+

+ is a script to run VLC with the dummy interface +

+
+

+ nvlc +

+
+

+ is a script to run VLC with the ncurses interface +

+
+

+ rvlc +

+
+

+ is a script to run VLC with a command line + interface +

+
+

+ svlc +

+
+

+ is a script to run VLC with the skins interface +

+
+

+ vlc +

+
+

+ is the VLC media + player +

+
+

+ vlc-wrapper +

+
+

+ is a wrapper to drop privileges with VLC +

+
+
+
+
+
+
+
+

+ xine-ui-0.99.14 +

+
+
+
+
+
+

+ Introduction to Xine User Interface +

+

+ The xine User Interface + package contains a multimedia player. It plays back CDs, DVDs + and VCDs. It also decodes multimedia files like AVI, MOV, + WMV, MPEG and MP3 from local disk drives, and displays + multimedia streamed over the Internet. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Note +

+

+ Although this version of xine-ui works with most files, it + is unable to open encrypted (content-scrambled) DVDs with + the current version of libdvdcss. +

+
+

+ Package Information +

+
+ +
+

+ Xine + User Interface Dependencies +

+
+ Required +
+

+ xine-lib-1.2.13 and shared-mime-info-2.4 +

+
+ Optional +
+

+ cURL-8.15.0, AAlib-1.4rc5, LIRC, and libcaca +

+
+
+

+ Installation of Xine User Interface +

+

+ Install xine User Interface + by running the following commands: +

+
./configure --prefix=/usr &&
+make CC="gcc -std=gnu17"
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make docsdir=/usr/share/doc/xine-ui-0.99.14 install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ docsdir=/usr/share/doc/xine-ui-0.99.14: + This parameter causes the Xine + UI documentation to be installed in the versioned + directory /usr/share/doc/xine-ui-0.99.14, rather that + the default /usr/share/doc/xine-ui. +

+
+
+

+ Configuring Xine User Interface +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.xine/config +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The above file is created and maintainable through the + xine setup + dialog box. The documentation for the configuration + settings is located at /usr/share/doc/xine-ui-0.99.14/README.config_en. +

+

+ If you have a DVB TV card, you can watch TV with the + command xine + dvb:// and change channels with the scroll + wheel on your mouse. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + aaxine, cacaxine, fbxine, xine, + xine-bugreport, xine-check, and xine-remote +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/xine and + /usr/share/doc/xine-ui-0.99.14 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ aaxine +

+
+

+ is an ASCII art video player which utilizes + AAlib as the + frontend for the xine + Libraries +

+
+

+ cacaxine +

+
+

+ is a color ASCII art video player which utilizes + CACA as the + frontend for the xine + Libraries +

+
+

+ fbxine +

+
+

+ is a frame buffer interface to the xine Libraries +

+
+

+ xine +

+
+

+ is a multimedia player designed to play MPEG + streams (audio and video), MPEG elementary streams + (MP3), MPEG transport streams, Ogg files, AVI + files, ASF files, some Quicktime files, VCDs and + DVDs +

+
+

+ xine-bugreport +

+
+

+ produces a terse system description and guides you + through the process of reporting a bug +

+
+

+ xine-check +

+
+

+ tests the xine video player + installation for common problems. It tests the + operating system settings, installation of plugins, + CD/DVD drive settings and video support parameters +

+
+

+ xine-remote +

+
+

+ is a tool to connect to a xine remote + control server +

+
+
+
+
+
+
+
+
+

+ Chapter 45. CD/DVD-Writing + Utilities +

+
+
+
+
+

+ This chapter contains information on CD/DVD-writing utilities in + Linux. +

+

+ Additional sources of information include: +

+ +
+
+
+

+ Cdrdao-1.2.5 +

+
+
+
+
+
+

+ Introduction to Cdrdao +

+

+ The Cdrdao package contains + CD recording utilities. These are useful for burning a CD in + disk-at-once mode. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Cdrdao Dependencies +

+
+ Recommended +
+ +

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/cdrdao +

+
+
+

+ Installation of Cdrdao +

+

+ Install Cdrdao by running + the following commands: +

+
./configure --prefix=/usr --mandir=/usr/share/man &&
+make CC="gcc -std=gnu17"
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m755 -d /usr/share/doc/cdrdao-1.2.5 &&
+install -v -m644 README /usr/share/doc/cdrdao-1.2.5
+
+
+

+ Command Explanations +

+

+ --mandir=/usr/share/man: + Install manual pages in /usr/share/man instead of /usr/man. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cdrdao, cue2toc, toc2cddb, toc2cue + and optionally toc2mp3 +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/cdrdao, + /usr/share/doc/cdrdao-1.2.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cdrdao +

+
+

+ records audio or data CD-Rs in disk-at-once (DAO) + mode based on a textual description of the CD + contents +

+
+

+ cue2toc +

+
+

+ converts CUE to TOC format for audio CDs +

+
+

+ toc2cddb +

+
+

+ converts a Cdrdao + TOC file into a cddb file and prints it to stdout +

+
+

+ toc2cue +

+
+

+ converts TOC to CUE format for audio CDs +

+
+

+ toc2mp3 +

+
+

+ converts an audio CD disk image (.toc file) to MP3 files +

+
+
+
+
+
+
+
+

+ Cdrtools-3.02a09 +

+
+
+
+
+
+

+ Introduction to Cdrtools +

+

+ The Cdrtools package + contains CD recording utilities. These are useful for + reading, creating or writing (burning) CDs, DVDs, and Blu-ray + discs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Cdrtools Dependencies +

+
+ Required +
+

+ alsa-lib-1.2.14 +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/Cdrtools +

+
+
+

+ Installation of Cdrtools +

+
+

+ Note +

+

+ This package does not support parallel build. +

+
+

+ Install Cdrtools by running + the following commands: +

+
sed -i 's|/opt/schily|/usr|g'           DEFAULTS/Defaults.linux &&
+sed -i 's|DEFINSGRP=.*|DEFINSGRP=root|' DEFAULTS/Defaults.linux &&
+sed -i 's|INSDIR=\s*sbin|INSDIR=bin|'   rscsi/Makefile          &&
+
+export GMAKE_NOWARN=true &&
+export CFLAGS="$CFLAGS -std=gnu89 -fno-strict-aliasing" &&
+
+make -j1 INS_BASE=/usr  \
+         DEFINSUSR=root \
+         DEFINSGRP=root \
+         VERSION_OS="LinuxFromScratch"
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
GMAKE_NOWARN=true &&
+
+make INS_BASE=/usr    \
+     DEFINSUSR=root   \
+     DEFINSGRP=root   \
+     MANSUFF_LIB=3cdr \
+     install          &&
+
+install -v -m755 -d /usr/share/doc/cdrtools-3.02a09 &&
+install -v -m644 README.* READMEs/* ABOUT doc/*.ps \
+                    /usr/share/doc/cdrtools-3.02a09
+
+
+

+ Command Explanations +

+

+ export + GMAKE_NOWARN=true: This variable avoids a + warning when using GNU make. +

+

+ INS_BASE=/usr: This + parameter moves the install directory from /opt/schily to /usr. +

+

+ DEFINSUSR=root + DEFINSGRP=root: These parameters install all + programs with root:root ownership instead of the default + bin:bin. +

+

+ MANSUFF_LIB=3cdr: + This parameter prevents Cdrtools from overwriting important + pages which are already installed by LFS. The installed man + pages of section 3 will have a suffix 3cdr and can be shown using man 3cdr <manpage>. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + btcflash, cdda2mp3, cdda2ogg, + cdda2wav, cdrecord, devdump, isodebug, isodump, isoinfo, + isovfy, mkhybrid, mkisofs, readcd, rscsi, scgcheck, + scgskeleton +
+
+ Installed Libraries: + libcdrdeflt.a, libdeflt.a, + libedc_ecc.a, libedc_ecc_dec.a, libfile.a, libfind.a, + libhfs.a, libmdigest.a, libparanoia.a, librscg.a, + libscg.a, libscgcmd.a, libschily.a, libsiconv.a +
+
+ Installed Directories: + /usr/lib/{profiled,siconv}, + /usr/include/{scg,schily}, + /usr/share/doc/cdda2wav,cdrecord,libparanoia,mkisofs,rscsi} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ btcflash +

+
+

+ flashes the firmware on BTC DRW1008 DVD+/-RW + recorders. Please exercise care with this program +

+
+

+ cdda2wav +

+
+

+ converts Compact Disc audio into WAV sound files +

+
+

+ cdrecord +

+
+

+ records audio or data onto Compact Discs +

+
+

+ devdump +

+
+

+ is a diagnostic program used to dump an ISO-9660 + device or file in hex +

+
+

+ isodebug +

+
+

+ is used to display the command-line parameters used + to create an ISO-9660 image +

+
+

+ isodump +

+
+

+ is a diagnostic program used to dump a device or + file based on ISO-9660 +

+
+

+ isoinfo +

+
+

+ is used to analyze or list an ISO-9660 image +

+
+

+ isovfy +

+
+

+ is used to verify an ISO-9660 image +

+
+

+ mkhybrid +

+
+

+ is a symbolic link to mkisofs used to + create ISO-9660/HFS hybrid filesystem images +

+
+

+ mkisofs +

+
+

+ is used to create ISO-9660/JOLIET/HFS filesystem + images, optionally with Rock Ridge attributes +

+
+

+ readcd +

+
+

+ reads or writes Compact Discs +

+
+

+ rscsi +

+
+

+ is a remote SCSI manager +

+
+

+ scgcheck +

+
+

+ is used to check and verify the Application Binary + Interface of libscg +

+
+

+ libscg.a +

+
+

+ is a highly portable SCSI transport library +

+
+
+
+
+
+
+
+

+ dvd+rw-tools-7.1 +

+
+
+
+
+
+

+ Introduction to dvd+rw-tools +

+

+ The dvd+rw-tools package + contains several utilities to master the DVD media, both + +RW/+R and -R[W]. The principle tool is growisofs which provides a + way to both lay down and grow an ISO9660 file + system on (as well as to burn an arbitrary pre-mastered image + to) all supported DVD media. This is useful for creating a + new DVD or adding to an existing image on a partially burned + DVD. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ dvd+rw-tools Dependencies +

+
+ Required +
+

+ Cdrtools-3.02a09 (runtime) +

+
+
+

+ Installation of dvd+rw-tools +

+

+ First, apply a patch that fixes several bugs and fixes + compiling with newer versions of glibc and the kernel + headers: +

+
patch -Np1 -i ../dvd+rw-tools-7.1-consolidated_fixes-1.patch
+

+ Install dvd+rw-tools by + running the following commands: +

+
make all rpl8 btcflash
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make prefix=/usr install &&
+install -v -m644 -D index.html \
+    /usr/share/doc/dvd+rw-tools-7.1/index.html
+
+
+

+ Command Explanations +

+

+ make all rpl8 + btcflash: This command uses additional + targets so that all the utilities are built. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + btcflash, dvd+rw-booktype, + dvd+rw-format, dvd+rw-mediainfo, dvd-ram-control, + growisofs, and rpl8 +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/doc/dvd+rw-tools-7.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ growisofs +

+
+

+ is a combined mkisofs + frontend/DVD recording program +

+
+
+
+
+
+
+
+

+ libburn-1.5.6 +

+
+
+
+
+
+

+ Introduction to libburn +

+

+ libburn is a library for + writing preformatted data onto optical media: CD, DVD and BD + (Blu-Ray). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libburn Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 (to generate HTML + documentation) +

+
+
+

+ Installation of libburn +

+

+ First, fix a problem when building with gcc-15: +

+
sed -i 's/catch_int ()/catch_int (int signum)/' test/poll.c
+

+ Install libburn by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you have installed Doxygen and wish to generate the HTML + documentation, issue the following command: +

+
doxygen doc/doxygen.conf
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have built the HTML documentation, install it by + running the following commands as the root user: +

+
install -v -dm755 /usr/share/doc/libburn-1.5.6 &&
+install -v -m644 doc/html/* /usr/share/doc/libburn-1.5.6
+
+
+

+ Contents +

+
+
+
+ Installed Program: + cdrskin +
+
+ Installed Library: + libburn.so +
+
+ Installed Directory: + /usr/include/libburn +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ cdrskin +

+
+

+ burns preformatted data to CD, DVD, and BD via + libburn +

+
+

+ libburn.so +

+
+

+ contains the libburn API functions +

+
+
+
+
+
+
+
+

+ libisoburn-1.5.6 +

+
+
+
+
+
+

+ Introduction to libisoburn +

+

+ libisoburn is a frontend for + the libburn and libisofs libraries, which enables + creation and expansion of ISO-9660 filesystems on all + CD/DVD/BD media supported by libburn. This includes media like + DVD+RW, which do not support multi-session management on the + media level, and even plain disk files or block devices. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libisoburn Dependencies +

+
+ Required +
+

+ libburn-1.5.6 and libisofs-1.5.6 +

+
+ Optional +
+

+ Doxygen-1.14.0 (to generate HTML + documentation), Tk-8.6.16 (for xorriso-tcltk), and + libjte +

+
+
+

+ Installation of libisoburn +

+

+ Install libisoburn by + running the following commands: +

+
./configure --prefix=/usr              \
+            --disable-static           \
+            --enable-pkg-check-modules &&
+make
+

+ If you have installed Doxygen and wish to generate the HTML + documentation, issue the following command: +

+
doxygen doc/doxygen.conf
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have built the HTML documentation, install it by + running the following commands as the root user: +

+
install -v -dm755 /usr/share/doc/libisoburn-1.5.6 &&
+install -v -m644 doc/html/* /usr/share/doc/libisoburn-1.5.6
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-pkg-check-modules: + This switch tells the configure script to use pkg-config to check for the libburn and libisofs libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + osirrox, xorrecord, xorriso, + xorriso-dd-target, xorrisofs, and xorriso-tcltk +
+
+ Installed Library: + libisoburn.so +
+
+ Installed Directories: + /usr/include/libisoburn and + /usr/share/doc/libisoburn-1.5.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ osirrox +

+
+

+ is a symbolic link to xorriso that + copies files from ISO image to a disk filesystem +

+
+

+ xorrecord +

+
+

+ is a symbolic link to xorriso that + provides a cdrecord type user interface +

+
+

+ xorriso +

+
+

+ is a program to create, load, manipulate, read, and + write ISO 9660 filesystem images with Rock Ridge + extensions +

+
+

+ xorriso-dd-target +

+
+

+ is a program to check a USB or memory card device + to see whether it is suitable for image copying +

+
+

+ xorrisofs +

+
+

+ is a symbolic link to xorriso that + provides a mkisofs type user interface +

+
+

+ xorriso-tcltk +

+
+

+ is a frontend that operates xorriso in dialog mode +

+
+

+ libisoburn.so +

+
+

+ contains the libisoburn API functions +

+
+
+
+
+
+
+
+

+ libisofs-1.5.6 +

+
+
+
+
+
+

+ Introduction to libisofs +

+

+ libisofs is a library to + create an ISO-9660 filesystem with extensions like RockRidge + or Joliet. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libisofs Dependencies +

+
+ Optional +
+

+ Doxygen-1.14.0 (to generate HTML + documentation) and libjte +

+
+
+

+ Installation of libisofs +

+

+ Install libisofs by running + the following commands: +

+
./configure --prefix=/usr --disable-static &&
+make
+

+ If you have installed Doxygen and wish to generate the HTML + documentation, issue the following command: +

+
doxygen doc/doxygen.conf
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+

+ If you have built the HTML documentation, install it by + running the following commands as the root user: +

+
install -v -dm755 /usr/share/doc/libisofs-1.5.6 &&
+install -v -m644 doc/html/* /usr/share/doc/libisofs-1.5.6
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Library: + libisofs.so +
+
+ Installed Directory: + /usr/include/libisofs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libisofs.so +

+
+

+ contains the libisofs API functions +

+
+
+
+
+
+
+
+
+
+

+ Part XIII. Printing, + Scanning and Typesetting +

+
+
+
+
+
+
+
+

+ Chapter 46. Printing +

+
+
+
+
+

+ This chapter contains spooling printer management systems and + ghostscript applications to render PostScript for display on + terminals or paper. +

+
+
+
+

+ Cups-2.4.12 +

+
+
+
+
+
+

+ Introduction to Cups +

+

+ The Common Unix Printing System (CUPS) is a print spooler and + associated utilities. It is based on the "Internet Printing + Protocol" and provides printing services to most PostScript + and raster printers. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Cups + Dependencies +

+
+ Required +
+

+ GnuTLS-3.8.10 +

+
+ Recommended +
+ +
+ Optional +
+

+ Avahi-0.8, libpaper-2.2.6, PHP-8.4.11, and Python2 +

+
+ Required (Postinstall) +
+

+ cups-filters-2.0.1 +

+
+ Optional (Postinstall) +
+

+ Gutenprint-5.3.5 and hplip + (HP printers) +

+
+
+

+ Kernel + Configuration +

+
+

+ Note +

+

+ There used to be a conflict between the Cups libusb backend and the usblp kernel + driver. This is no longer the case and cups will work with + both of these enabled. +

+
+

+ If you want to use the kernel usblp driver (for example, if + you wish to use escputil + from Gutenprint-5.3.5) enable the following + options in your kernel configuration and recompile the + kernel: +

+
Device Drivers --->
+  [*] USB support --->                                             [USB_SUPPORT]
+    <*/M> USB Printer support                                      [USB_PRINTER]
+

+ If you have a parallel printer, enable the following options + in your kernel configuration and recompile the kernel: +

+
Device Drivers --->
+  <*/M> Parallel port support --->                                     [PARPORT]
+    <*/M> PC-style hardware                                         [PARPORT_PC]
+  Character devices --->
+    <*/M> Parallel printer support                                     [PRINTER]
+
+
+

+ Installation of Cups +

+

+ You will need to add an lp + user, as Cups will create + some files owned by this user. (The lp user is the default used by + Cups, but may be changed to + a different user by passing a parameter to the configure script.) Use the + following command as the root + user: +

+
useradd -c "Print Service User" -d /var/spool/cups -g lp -s /bin/false -u 9 lp
+

+ You will also need a dedicated group that will contain users + allowed to do Cups + administrative tasks. Add the group by running the following + command as the root user: +

+
groupadd -g 19 lpadmin
+

+ If you want to add a user to the Cups administrative group, run the + following command as the root + user: +

+
usermod -a -G lpadmin <username>
+

+ If you didn't install xdg-utils-1.2.1, use the + following sed + to change the default browser that will be used to access the + Cups web interface: +

+
sed -i 's#@CUPS_HTMLVIEW@#firefox#' desktop/cups.desktop.in
+

+ Replace firefox + with the web browser of your choice. +

+

+ Build Cups by running the + following commands: +

+
./configure --libdir=/usr/lib            \
+            --with-rcdir=/tmp/cupsinit   \
+            --with-rundir=/run/cups      \
+            --with-system-groups=lpadmin \
+            --with-docdir=/usr/share/cups/doc-2.4.12 &&
+make
+

+ To test the results, issue: LC_ALL=C make -k check. An + already active graphical session with bus address is + necessary to run the tests. Make sure that there is no other + instance of Cups running, + otherwise at least 4 tests will fail with "address in use". +

+

+ Now, as the root user: +

+
make install &&
+ln -svnf ../cups/doc-2.4.12 /usr/share/doc/cups-2.4.12
+

+ Remove the shipped bootscript, which is incompatible with + LFS: +

+
rm -rf /tmp/cupsinit
+

+ Create a basic Cups client + configuration file by running the following command as the + root user: +

+
echo "ServerName /run/cups/cups.sock" > /etc/cups/client.conf
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + you can improve system performance and memory usage by + updating /usr/share/icons/hicolor/index.theme. To + perform the update you must have GTK-3.24.50 installed and + issue the following command as the root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor
+
+
+
+

+ Command Explanations +

+

+ --with-rcdir=/tmp/cupsinit: + This switch tells the build process to install the shipped + bootscript into /tmp instead of + /etc/rc.d. +

+

+ --with-rundir=/run/cups: This + switch prevents the package from referring to the deprecated + /var/run directory. +

+

+ --with-system-groups=lpadmin: + This switch ensures that only lpadmin will be used as the Cups administrative group. +

+

+ --disable-libusb: Use this switch + if you have installed libusb-1.0.29, but wish to use the kernel + usblp driver. +

+

+ --enable-libpaper: Use this + switch if you have installed libpaper and wish to use it with + Cups. +

+
+
+

+ Configuring Cups +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/cups/* +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Normally, printers are set up via a web browser. The + Cups server will normally + connect via the url http://localhost:631. From there + printers, print jobs, and the server configuration can be + set up and managed. Remote system administration can also + be set up. Configuration can also be done from the command + line via the lpadmin, lpoptions, and + lpstat + commands. +

+

+ Configuration of Cups is + dependent on the type of printer and can be complex. + Generally, PostScript printers are easier. For detailed + instructions on configuration and use of Cups, see https://www.cups.org/documentation.html. +

+

+ For non-PostScript printers to print with Cups, you need to install ghostscript-10.05.1 to convert + PostScript to raster images and a driver (e.g. from + Gutenprint-5.3.5) to convert the + resulting raster images to a form that the printer + understands. + Foomatic drivers use ghostscript-10.05.1 to convert + PostScript to a printable form directly, but this is + considered suboptimal by Cups developers. +

+
+
+
+
+
+

+ Linux PAM Configuration +

+
+
+
+

+ If CUPS has been built + with Linux PAM support, + you need to create a PAM + configuration file to get it working correctly with BLFS. +

+

+ Issue the following command as the root user to create the configuration + file for Linux PAM: +

+
cat > /etc/pam.d/cups << "EOF"
+# Begin /etc/pam.d/cups
+
+auth    include system-auth
+account include system-account
+session include system-session
+
+# End /etc/pam.d/cups
+EOF
+
+
+
+
+
+

+ Boot Script +

+
+
+
+

+ If you want the Cups print + service to start automatically when the system is booted, + install the init script included in the blfs-bootscripts-20250225 package: +

+
make install-cups
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cancel, cupsaccept, cups-config, + cupsctl, cupsd, cupsdisable, cupsenable, cupsfilter, + cupsreject, cupstestppd, ippeveprinter, ippfind, ipptool, + lp, lpadmin, lpc, lpinfo, lpmove, lpoptions, lpq, lpr, + lprm, lpstat, ppdc, ppdhtml, ppdi, ppdmerge, and + ppdpo +
+
+ Installed Libraries: + libcupsimage.so and + libcups.so +
+
+ Installed Directories: + /etc/cups, + /usr/{include,lib,share}/cups, + /usr/share/doc/cups-2.4.12, /run/cups, and + /var/{cache,log,spool}/cups +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cancel +

+
+

+ cancels existing print jobs from the print queues +

+
+

+ cupsaccept +

+
+

+ accepts jobs sent to a destination +

+
+

+ cups-config +

+
+

+ is a Cups program + configuration utility +

+
+

+ cupsctl +

+
+

+ updates or queries the cupsd.conf file for a server +

+
+

+ cupsd +

+
+

+ is the scheduler for the Common Unix Printing + System +

+
+

+ cupsdisable +

+
+

+ stops printers and classes +

+
+

+ cupsenable +

+
+

+ starts printers and classes +

+
+

+ cupsfilter +

+
+

+ is a front-end to the Cups filter subsystem which + allows you to convert a file to a specific format +

+
+

+ cupsreject +

+
+

+ rejects jobs sent to a destination +

+
+

+ cupstestppd +

+
+

+ tests the conformance of PPD files +

+
+

+ ippeveprinter +

+
+

+ is an IPP Everywhere printer for CUPS +

+
+

+ ippfind +

+
+

+ finds Internet Printing Protocol printers +

+
+

+ ipptool +

+
+

+ sends IPP requests to the specified URI and tests + and/or displays the results +

+
+

+ lp +

+
+

+ submits files for printing or alters a pending job +

+
+

+ lpadmin +

+
+

+ configures printer and class queues provided by + Cups +

+
+

+ lpc +

+
+

+ provides limited control over printer and class + queues provided by Cups +

+
+

+ lpinfo +

+
+

+ lists the available devices or drivers known to the + Cups server +

+
+

+ lpmove +

+
+

+ moves the specified job to a new destination +

+
+

+ lpoptions +

+
+

+ displays or sets printer options and defaults +

+
+

+ lpq +

+
+

+ shows the current print queue status on the named + printer +

+
+

+ lpr +

+
+

+ submits files for printing +

+
+

+ lprm +

+
+

+ cancels print jobs that have been queued for + printing +

+
+

+ lpstat +

+
+

+ displays status information about the current + classes, jobs, and printers +

+
+

+ ppdc +

+
+

+ compiles PPDC source files into one or more PPD + files +

+
+

+ ppdhtml +

+
+

+ reads a driver information file and produces a HTML + summary page that lists all of the drivers in a + file and the supported options +

+
+

+ ppdi +

+
+

+ imports one or more PPD files into a PPD compiler + source file +

+
+

+ ppdmerge +

+
+

+ merges two or more PPD files into a single, + multi-language PPD file +

+
+

+ ppdpo +

+
+

+ extracts UI strings from PPDC source files and + updates either a GNU gettext or Mac OS X strings + format message catalog source file for translation +

+
+

+ libcups.so +

+
+

+ contains the Cups + API functions +

+
+
+
+
+
+
+
+

+ cups-browsed-2.1.1 +

+
+
+
+
+
+

+ Introduction to cups-browsed +

+

+ The cups-browsed daemon is + used to browse the network for remote CUPS queues and IPP + network printers and automatically create local queues + pointing to them. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ cups-browsed Dependencies +

+
+ Required +
+

+ Avahi-0.8, libcupsfilters-2.1.1 and libppd-2.1.1 +

+
+ Optional +
+

+ OpenLDAP-2.6.10 +

+
+
+

+ Installation of cups-browsed +

+

+ Install cups-browsed by + running the following commands: +

+
./configure --prefix=/usr                \
+            --with-cups-rundir=/run/cups \
+            --without-rcdir              \
+            --disable-static             \
+            --docdir=/usr/share/doc/cups-browsed-2.1.1 &&
+make
+

+ This package does not come with a functional test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-cups-rundir=/run/cups: + Defines the directory containing transient printing data. The + default /var/run/cups is + obsolete. +

+

+ --without-rcdir: This + switch disables installation of the bundled bootscript which + is not compatible with BLFS. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cups-browsed +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ cups-browsed +

+
+

+ is a daemon for browsing the Bonjour and CUPS + broadcasts of shared, remote CUPS printers +

+
+
+
+
+
+
+
+

+ cups-filters-2.0.1 +

+
+
+
+
+
+

+ Introduction to CUPS Filters +

+

+ The CUPS Filters package is + only needed to adapt libcupsfilters-2.1.1 and + libppd-2.1.1 filter functions for + cups-2.x. It should not be needed for cups-3.x. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ CUPS + Filters Dependencies +

+
+ Required +
+

+ libcupsfilters-2.1.1 and libppd-2.1.1 +

+
+ Optional (runtime) +
+

+ cups-browsed-2.1.1 (if you need + Network Discovery capabilities) +

+
+
+

+ Installation of CUPS Filters +

+

+ First, fix a problem when building with gcc-15: +

+
sed -i '/proc_func)()/s/()/(FILE*, FILE*, void*)/' filter/foomatic-rip/process.h
+

+ Install CUPS Filters by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/cups-filters-2.0.1 &&
+make
+

+ This package does not come with a functional test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + driverless, driverless-fax, and + foomatic-rip +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/lib/cups/{backend,driver,filter}, + /usr/share/doc/cups-filters-2.0.1, and + /usr/share/ppd/cupsfilters +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ driverless +

+
+

+ is a PPD generator utility for driverless printing +

+
+

+ driverless-fax +

+
+

+ is a wrapper to driverless for + FAX type devices +

+
+

+ foomatic-rip +

+
+

+ is a universal print filter/RIP wrapper which can + be used as CUPS filter or stand-alone for + spooler-less, direct printing +

+
+
+
+
+
+
+
+

+ ghostscript-10.05.1 +

+
+
+
+
+
+

+ Introduction to Ghostscript +

+

+ Ghostscript is a versatile + processor for PostScript data with the ability to render + PostScript to different targets. It is a mandatory part of + the cups printing stack. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ If you wish, you can download additional fonts. +

+
+

+ Standard Fonts +

+ +
+
+

+ Other Fonts +

+ +
+

+ Ghostscript Dependencies +

+
+ Recommended +
+ +
+ Optional +
+

+ Cairo-1.18.4, GTK-3.24.50, libidn-1.43, libpaper-2.2.6, libwebp-1.6.0, and + a graphical + environment +

+
+
+

+ Installation of Ghostscript +

+
+

+ Note +

+

+ The Ghostscript build + system is not user-friendly. In order to use system copies + of various graphics libraries, you must do it using + unconventional methods. +

+
+

+ Ghostscript includes (old) + copies of several libraries. Some of these seem to have been + patched to fix known vulnerabilities, but others of these + copies are less-well maintained. To ensure that any future + fixes are applied throughout the whole system, it is + recommended that you first install the released versions of + these libraries and then configure Ghostscript to link to them. +

+

+ If you have installed the recommended dependencies on your + system, remove the copies of freetype, lcms2, libjpeg, libpng, and openjpeg: +

+
rm -rf freetype lcms2mt jpeg libpng openjpeg
+

+ Apply a patch to prevent a problem when building with gcc-15: +

+
patch -Np1 -i ../ghostscript-10.05.1-gcc15_fixes-1.patch
+

+ Compile Ghostscript: +

+
rm -rf zlib &&
+
+./configure --prefix=/usr           \
+            --disable-compile-inits \
+            --with-system-libtiff   &&
+make
+
+

+ Note +

+

+ The shared library depends on GTK-3.24.50. It is only used by + external programs like asymptote-3.05, dvisvgm-3.5, and + ImageMagick-7.1.2-1. +

+
+

+ To compile the shared library libgs.so, run the following additional + command as an unprivileged user: +

+
make so
+

+ This package does not come with a test suite. A set of + example files may be used for testing, but it is only + possible after installation of the package. +

+

+ Now, as the root user: +

+
make install
+

+ If you built the shared library, install it with: +

+
make soinstall                                     &&
+install -v -m644 base/*.h /usr/include/ghostscript &&
+ln -sfvn ghostscript /usr/include/ps
+

+ Now make the documentation accessible from a standard place: +

+
mv -v /usr/share/doc/ghostscript/10.05.1 /usr/share/doc/ghostscript-10.05.1 &&
+rmdir /usr/share/doc/ghostscript                                            &&
+cp -r examples/ -T /usr/share/ghostscript/10.05.1/examples
+

+ If you have downloaded the fonts, unpack them to /usr/share/ghostscript and ensure the + ownership of the files are root: root. +

+
tar -xvf ../ghostscript-fonts-std-8.11.tar.gz -C /usr/share/ghostscript --no-same-owner &&
+tar -xvf ../gnu-gs-fonts-other-6.0.tar.gz     -C /usr/share/ghostscript --no-same-owner &&
+fc-cache -v /usr/share/ghostscript/fonts/
+

+ You can now test the rendering of various postscript and pdf + files from the /usr/share/ghostscript/10.05.1/examples . + To do this, run the following command (in a X11 session): +

+
gs -q -dBATCH /usr/share/ghostscript/10.05.1/examples/tiger.eps
+
+
+

+ Command Explanations +

+

+ rm -rf zlib : + zlib was installed as part + of LFS. +

+

+ --disable-compile-inits: This + option makes gs + and libgs.so slightly smaller. +

+

+ --with-system-libtiff: Remove + this option if you've not installed libtiff-4.7.0. +

+

+ install -v -m644 + base/*.h... : Some packages (ImageMagick is one) need the + Ghostscript interface + headers in place to link to the shared library. These + commands install the headers. +

+

+ ln -sfvn ghostscript + /usr/include/ps: Some packages expect to find + the interface headers in an alternate location. +

+

+ mv -v + /usr/share/doc/ghostscript/10.05.1 + /usr/share/doc/ghostscript-10.05.1: This + moves the documentation to where it is expected to be found. +

+

+ --disable-cups: This option will + save a tiny amount of space by not linking gs and libgs.so to the Cups-2.4.12 libraries if you + have installed those. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dvipdf, eps2eps, gs, gsbj, gsc + (from soinstall), gsdj, gsdj500, gslj, gslp, gsnd, gsx + (from soinstall), lprsetup.sh, pdf2dsc, pdf2ps, pf2afm, + pfbtopfa, pphs, printafm, ps2ascii, ps2epsi, ps2pdf, + ps2pdf12, ps2pdf13, ps2pdf14, ps2pdfwr, ps2ps, ps2ps2, + and unix-lpr.sh +
+
+ Installed Library: + libgs.so +
+
+ Installed Directories: + /usr/include/ghostscript, + /usr/share/ghostscript, and + /usr/share/doc/ghostscript-10.05.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ gs +

+
+

+ is an interpreter for Adobe Systems' PostScript(tm) + and Portable Document Format (PDF) +

+
+

+ libgs.so +

+
+

+ provides Ghostscript functionality to + other programs, such as GSView, ImageMagick, and libspectre +

+
+
+

+ Ghostscript provides many + different scripts used to convert PostScript, PDF, and other + formats. Please refer to the HTML documentation or the man + pages for information about the capabilities provided. +

+
+
+
+
+
+

+ Gutenprint-5.3.5 +

+
+
+
+
+
+

+ Introduction to Gutenprint +

+

+ The Gutenprint (formerly + Gimp-Print) package contains + high quality drivers for many brands and models of printers + for use with Cups-2.4.12. See a list of supported + printers at + https://gutenprint.sourceforge.net/p_Supported_Printers.php. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Gutenprint Dependencies +

+
+ Recommended +
+ +
+ Recommended (at runtime) +
+ + + +
+ Optional (to Regenerate + Documentation) +
+

+ ImageMagick-7.1.2-1, texlive-20250308 (or install-tl-unx), Doxygen-1.14.0, and + DocBook-utils-0.6.14 +

+
+
+

+ Kernel Configuration +

+

+ If you intend to use escputil with a USB-connected Epson + Stylus printer for commands such as --ink-level which need to + access the raw device, you must enable the kernel's usblp + driver. Enable the following options in your kernel + configuration and recompile the kernel: +

+
Device Drivers --->
+  [*] USB support --->                                             [USB_SUPPORT]
+    <*/M> USB Printer support                                      [USB_PRINTER]
+
+
+

+ Installation of Gutenprint +

+

+ Install Gutenprint by + running the following commands: +

+
sed -i 's|$(PACKAGE)/doc|doc/$(PACKAGE)-$(VERSION)|' \
+       {,doc/,doc/developer/}Makefile.in &&
+
+./configure --prefix=/usr    \
+            --disable-static \
+            --without-gimp2  \
+            --without-gimp2-as-gutenprint &&
+make
+

+ To test the results, issue: make check. The tests take + a very long time and use a lot of disk space. When last + tested (version 5.3.5 in March 2025) this needed 292 SBU and + 3.8 GB to complete the tests. Note that the tests used only + one CPU. +

+

+ Now, as the root user: +

+
make install &&
+install -v -m755 -d /usr/share/doc/gutenprint-5.3.5/api/gutenprint{,ui2} &&
+install -v -m644    doc/gutenprint/html/* \
+                    /usr/share/doc/gutenprint-5.3.5/api/gutenprint &&
+install -v -m644    doc/gutenprintui2/html/* \
+                    /usr/share/doc/gutenprint-5.3.5/api/gutenprintui2
+
+
+

+ Command Explanations +

+

+ sed -i '...' + ...Makefile.in: This command is used so that + the package documentation is installed in the conventional + /usr/share/doc directory + structure instead of /usr/share/gutenprint/doc. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --without-gimp2: This + switch disables support for GIMP because it has not been + updated to support GIMP3 yet. +

+
+
+

+ Configuring Gutenprint +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ For CUPS to see newly + installed print drivers, it has to be restarted (as the + root user): +

+
/etc/rc.d/init.d/cups restart
+

+ Then point your web browser to http://localhost:631/ to add a + new printer to CUPS. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + cups-calibrate, cups-genppd.5.3, + cups-genppdupdate, escputil, and testpattern +
+
+ Installed Libraries: + libgutenprint.so and optionally, + various CUPS filters and + backend drivers under + /usr/lib/gutenprint/5.3/modules/ +
+
+ Installed Directories: + /usr/{include,lib,share}/gutenprint + and /usr/share/doc/gutenprint-5.3.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ cups-calibrate +

+
+

+ calibrates the color output of printers using the + Gutenprint, + CUPS or + ESP Print Pro + drivers +

+
+

+ cups-genppd.5.3 +

+
+

+ generates Gutenprint PPD files for use with CUPS +

+
+

+ cups-genppdupdate +

+
+

+ regenerates the Gutenprint PPD files in use by CUPS +

+
+

+ escputil +

+
+

+ is a command line utility to perform various + maintenance tasks on Epson Stylus inkjet printers +

+
+

+ testpattern +

+
+

+ is a test program to learn how to use libgutenprint +

+
+
+
+
+
+
+
+

+ libcupsfilters-2.1.1 +

+
+
+
+
+
+

+ Introduction to libcupsfilters +

+

+ The libcupsfilters library + contains filter functions for the data format conversion + tasks needed in Printer Applications. It also contains + several API functions for developing printer drivers/Printer + Applications. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libcupsfilters Dependencies +

+
+ Required +
+

+ Cups-2.4.12, GLib-2.84.4, ghostscript-10.05.1 or + mupdf-1.26.5, Little CMS-2.17, + Poppler-25.08.0, and Qpdf-12.2.0 +

+
+ Recommended +
+ +
+
+

+ Installation of libcupsfilters +

+

+ Install libcupsfilters by + running the following commands: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/libcupsfilters-2.1.1 &&
+make
+

+ To test the results, issue make + check. DejaVu fonts are needed for the tests. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-test-font-path=VALUE: If you wish to + run the tests, but you do not have the default /usr/share/fonts/dejavu/DejaVuSans.ttf font + installed, use this switch to specify where DejaVuSans.ttf (or perhaps some other text + TTF font - though this is untested) is located. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + libcupsfilters.so +
+
+ Installed Directories: + /usr/include/cupsfilters, + /usr/share/cups/{banners,charsets,data}, and + /usr/share/doc/libcupsfilters-2.1.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libcupsfilters.so +

+
+

+ contains CUPS filters API functions +

+
+
+
+
+
+
+
+

+ libppd-2.1.1 +

+
+
+
+
+
+

+ Introduction to libppd +

+

+ The libppd library contains + functions for handling legacy printers using PPD description + files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ libppd Dependencies +

+
+ Required +
+

+ libcupsfilters-2.1.1 +

+
+
+

+ Installation of libppd +

+

+ Install libppd by running + the following commands: +

+
./configure --prefix=/usr                \
+            --disable-static             \
+            --with-cups-rundir=/run/cups \
+            --enable-ppdc-utils          \
+            --docdir=/usr/share/doc/libppd-2.1.1 &&
+make
+

+ To test the results, issue make + check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --with-cups-rundir=/run/cups: + Defines the directory containing transient printing data. The + default /var/run/cups is + obsolete. +

+

+ --enable-ppdc-utils: + Allows building utilities to manipulate .ppd files. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + ppdc, ppdhtml, ppdi, ppdmerge, and + ppdpo +
+
+ Installed Libraries: + libppd.so +
+
+ Installed Directories: + /usr/include/ppd, /usr/share/ppdc, + and /usr/share/doc/libppd-2.1.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ppdc +

+
+

+ compiles PPDC source files into one or more PPD + files +

+
+

+ ppdhtml +

+
+

+ reads a driver information file and produces a HTML + summary page that lists all of the drivers in a + file and the supported options +

+
+

+ ppdi +

+
+

+ imports one or more PPD files into a PPD compiler + source file +

+
+

+ ppdmerge +

+
+

+ merges two or more PPD files into a single, + multi-language PPD file +

+
+

+ ppdpo +

+
+

+ extracts UI strings from PPDC source files and + updates either a GNU gettext or Mac OS X strings + format message catalog source file for translation +

+
+

+ libppd.so +

+
+

+ contains API functions for manipulating + .ppd files +

+
+
+
+
+
+
+
+
+

+ Chapter 47. Scanning +

+
+
+
+
+

+ This chapter contains scanning applications which allow you to + convert printed documents into formatted documents readable by + other applications. +

+
+
+
+

+ SANE-1.4.0 +

+
+
+
+
+
+

+ Introduction to SANE +

+

+ SANE is short for Scanner + Access Now Easy. Scanner access, however, is far from easy, + since every vendor has their own protocols. The only known + protocol that should bring some unity into this chaos is the + TWAIN interface, but this is too imprecise to allow a stable + scanning framework. Therefore, SANE comes with its own protocol, and + the vendor drivers can't be used. +

+

+ SANE is split into back ends + and front ends. The back ends are drivers for the supported + scanners and cameras. The front ends are user interfaces to + access the backends. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Back + Ends Package Information +

+
+ +
+
+

+ Note +

+

+ The upstream location for this file is at https://gitlab.com/sane-project + but the file URL uses an embedded md5sum. For convenience, + the package has been copied to the location above. +

+
+

+ SANE + Dependencies +

+
+ Optional +
+

+ Avahi-0.8, Cups-2.4.12, libjpeg-turbo-3.0.1, libtiff-4.7.0, libusb-1.0.29, v4l-utils-1.30.1, Net-SNMP, libieee1284, + libgphoto2, and texlive-20250308 (or install-tl-unx) +

+
+
+

+ Kernel + Configuration, Drivers and Additional Packages +

+

+ To access your scanner, you will probably need the related + kernel drivers and/or additional support packages. A SCSI + scanner will need SCSI drivers, a parallel port scanner needs + parallel port support (you should use enhanced EPP modes) and + perhaps libieee1284, and a + USB scanner will need the libusb-1.0.29 package. For HP + devices, you may need hplip. + Ensure you have the necessary drivers properly configured to + access the devices. +

+
+
+

+ Installation of SANE +

+
+
+
+
+

+ Installation of SANE + Backends +

+
+
+
+

+ The SANE daemon should run + with its own group. Create this group by issuing the + following command as the root user: +

+
groupadd -g 70 scanner
+
+

+ Note +

+

+ configure + assumes that the user building SANE Backends is a member of the + scanner group for testing + the existence of this group. As a result, the user + building the package needs to be added to the + scanner group. Add the + user to the scanner group + by issuing the following command as the root user: +

+
usermod -G scanner -a username
+

+ After adding the scanner + group as above, you will need to log out and back in to + activate it. +

+
+

+ For a USB scanner, if you are linking to libusb-1.0.29, + include the configure switch --enable-libusb_1_0. Install + SANE Backends by running + the following commands: +

+
sg scanner -c "                                 \
+PYTHON=python3 ./configure --prefix=/usr        \
+                           --sysconfdir=/etc    \
+                           --localstatedir=/var \
+                           --with-lockdir=/run/lock \
+                           --docdir=/usr/share/doc/sane-backends-1.4.0" &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install                                         &&
+install -m 644 -v tools/udev/libsane.rules           \
+                  /etc/udev/rules.d/65-scanner.rules &&
+mkdir -p          /run/lock/sane &&
+chgrp -v scanner  /run/lock/sane
+

+ With the scanner on, run scanimage -L and the name + and location of the device should appear. Of course, you + need the device drivers configured, in order to run this + test. +

+
+
+
+

+ Command Explanations +

+

+ sg scanner -c + "...": runs the command between double quotes + with principal group scanner. + This may be needed if the user has been newly added to group + scanner, and has not logged out and in. +

+

+ PYTHON=python3: This + switch forces the build system to use Python 3 instead of + Python 2. +

+

+ --sysconfdir=/etc: + This switch installs the configuration files in /etc/sane.d instead of /usr/etc/sane.d. +

+
+
+

+ Configuring SANE +

+
+
+
+
+

+ Config + Files +

+
+
+
+

+ /etc/sane.d/*.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+
+
+
+
+
+ Backend Configuration +
+
+
+
+

+ The backend configuration files are located in + /etc/sane.d. Information + for configuring the various backends can be found by + using the man(5) page for the desired backend. Run + man sane-<backend>, + substituting the desired backend. +

+

+ Add any users that will use a scanner to the scanner group. +

+

+ If you want to access a network scanner, include two + lines in net.conf, as the + root user (make sure to + replace <server_ip> by the actual value): +

+
cat >> /etc/sane.d/net.conf << "EOF"
+connect_timeout = 60
+<server_ip>
+EOF
+

+ On the server side, include the client ip in the access + list of /etc/sane.d/saned.conf, restart the + saned + daemon, and make sure the firewall, if any, is open to + the client. +

+
+
+
+
+
+
+ General Information +
+
+
+
+

+ For general information about configuring and using + SANE, see man sane. For + information about USB scanning devices, run man sane-usb. For + information about SCSI devices, run man sane-scsi. +

+
+
+
+
+
+
+ Configuration and setup of + the 'saned' daemon +
+
+
+
+

+ The saned + daemon is not meant to be used for untrusted clients. You + should provide Firewalling + protection to ensure only trusted clients access the + daemon. Due to the complex security requirements to + ensure only trusted clients access the daemon, BLFS does + not provide instructions to configure the saned daemon. Some good + (but outdated) information for setting up and securing + the saned + daemon can be found at https://penguin-breeder.org/sane/saned/. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + gamma4scanimage, sane-config, + saned, sane-find-scanner, scanimage, and umax_pp +
+
+ Installed Libraries: + libsane.so and numerous scanner + backend modules +
+
+ Installed Directories: + /etc/sane.d, + /usr/{include,lib,share}/sane, and + /usr/share/doc/sane-1.4.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gamma4scanimage +

+
+

+ creates a gamma table in the format expected by + scanimage +

+
+

+ sane-config +

+
+

+ is a tool used to determine the compiler and linker + flags that should be used to compile and link + SANE +

+
+

+ saned +

+
+

+ is the SANE daemon + that allows remote clients to access image + acquisition devices available on the local host +

+
+

+ sane-find-scanner +

+
+

+ is a command-line tool to find SCSI and USB + scanners and determine their device files. Its + primary purpose is to make sure that scanners can + be detected by SANE backends +

+
+

+ scanimage +

+
+

+ is a command line interface for scanning from image + acquisition devices such as flatbed scanners or + cameras. It is also used to list the available + backend devices +

+
+

+ umax_pp +

+
+

+ is a tool used to read information from UMAX + parallel port scanners. It can also be used for + performing diagnostics on these scanners +

+
+

+ libsane.so +

+
+

+ is the application programming interface that is + used to communicate between frontends and backends +

+
+

+ libsane-*.so +

+
+

+ modules are backend scanning library plugins used + to interface with scanning devices. See + http://www.sane-project.org/sane-supported-devices.html + for a list of supported backends +

+
+
+
+
+
+
+
+

+ Simple-scan-46.0 +

+
+
+
+
+
+

+ Introduction to Simple-scan +

+

+ The Simple-scan package + contains a modern document scanning application. It captures + images using SANE, and supports the latest color management + and graphics standards. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Simple-scan Dependencies +

+
+ Required +
+

+ colord-1.4.8, itstool-2.0.7, libgusb-0.4.9, libadwaita-1.7.6, + libwebp-1.6.0, and SANE-1.4.0 +

+
+
+

+ Installation of Simple-scan +

+

+ Install Simple-scan by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr --buildtype=release .. &&
+ninja
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
ninja install &&
+gtk-update-icon-cache -qtf /usr/share/icons/hicolor
+
+
+

+ Command Explanations +

+

+ --buildtype=release: + Specify a buildtype suitable for stable releases of the + package, as the default may produce unoptimized binaries. +

+

+ gtk-update-icon-cache + [...]: This command updates the system-wide + GTK+ icon cache since Simple-scan's build system does not + update it to account for the icons that it installs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + simple-scan +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/help/*/simple-scan +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ simple-scan +

+
+

+ is a modern document scanning application +

+
+
+
+
+
+
+
+
+

+ Chapter 48. Standard Generalized + Markup Language (SGML) +

+
+
+
+
+

+ This chapter contains DocBook SGML document type definitions + (DTDs), DocBook DSSSL Stylesheets and DocBook tools to validate, + transform, format and publish DocBook documents. +

+
+
+
+

+ sgml-common-0.6.3 +

+
+
+
+
+
+

+ Introduction to SGML Common +

+

+ The SGML Common package + contains install-catalog. This is + useful for creating and maintaining centralized SGML + catalogs. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +
+
+

+ Installation of SGML Common +

+

+ 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 ../sgml-common-0.6.3-manpage-1.patch &&
+autoreconf -f -i
+

+ Install SGML Common by + running the following commands: +

+
./configure --prefix=/usr --sysconfdir=/etc &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc install &&
+
+install-catalog --add /etc/sgml/sgml-ent.cat \
+    /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &&
+
+install-catalog --add /etc/sgml/sgml-docbook.cat \
+    /etc/sgml/sgml-ent.cat
+
+

+ Update Hint +

+

+ Remove the above catalog items prior to upgrading (as the + root user) with: +

+
install-catalog --remove /etc/sgml/sgml-ent.cat \
+    /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &&
+
+install-catalog --remove /etc/sgml/sgml-docbook.cat \
+    /etc/sgml/sgml-ent.cat
+
+
+
+

+ Configuring SGML Common +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/sgml/sgml.conf +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ No change in this file is necessary. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + install-catalog and + sgmlwhich +
+
+ Installed Libraries: + None +
+
+ Installed Files: + SGML and XML DocBook entity + files +
+
+ Installed Directories: + /etc/sgml, + /usr/share/doc/sgml-common-0.6.3, and + /usr/share/sgml +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ install-catalog +

+
+

+ creates a centralized catalog that maintains + references to catalogs scattered throughout the + /usr/share/sgml + directory tree +

+
+

+ sgmlwhich +

+
+

+ prints to standard output the name of the main + configuration file +

+
+

+ SGML entities files +

+
+

+ contains the basic character entities defined with + SDATA entries +

+
+

+ XML entities files +

+
+

+ contains the basic character entities defined by a + hexadecimal representation of the Unicode character + number +

+
+
+
+
+
+
+
+

+ docbook-3.1-dtd +

+
+
+
+
+
+

+ Introduction to DocBook-3.1 SGML DTD +

+

+ The DocBook SGML DTD package + contains document type definitions for verification of SGML + 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.docbook.org/sgml/3.1/docbk31.zip +

    +
  • +
  • +

    + Download MD5 sum: 432749c0c806dbae81c8bcb70da3b5d3 +

    +
  • +
  • +

    + Download size: 55 KB +

    +
  • +
  • +

    + Estimated disk space required: 676 KB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ DocBook-3.1 SGML DTD Dependencies +

+
+ Required +
+

+ libarchive-3.8.1 and sgml-common-0.6.3 +

+
+
+

+ Installation of DocBook-3.1 SGML DTD +

+
+

+ Note +

+

+ The package source is distributed in zip format and requires unzip (actually a symlink + to bsdunzip + from libarchive). You + should create a directory and change to that directory + before unzipping the file to ease the removal of the source + files after the package has been installed. +

+
+

+ Install DocBook-3.1 SGML DTD + by running the following commands: +

+
sed -i -e '/ISO 8879/d' \
+       -e 's|DTDDECL "-//OASIS//DTD DocBook V3.1//EN"|SGMLDECL|g' \
+       docbook.cat
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -v -d -m755 /usr/share/sgml/docbook/sgml-dtd-3.1 &&
+chown -R root:root . &&
+install -v docbook.cat /usr/share/sgml/docbook/sgml-dtd-3.1/catalog &&
+cp -v -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-3.1 &&
+
+install-catalog --add /etc/sgml/sgml-docbook-dtd-3.1.cat \
+    /usr/share/sgml/docbook/sgml-dtd-3.1/catalog &&
+
+install-catalog --add /etc/sgml/sgml-docbook-dtd-3.1.cat \
+    /etc/sgml/sgml-docbook.cat
+
+
+

+ Command Explanations +

+

+ sed -i -e '/ISO 8879/d' + docbook.cat: This command removes the ENT + definitions from the catalog file. +

+

+ sed -i -e 's|DTDDECL + "-//OASIS//DTD Docbook V3.1//EN"|SGMLDECL|g' + docbook.cat: This command replaces the + DTDDECL catalog entry, which is not supported by Linux SGML + tools, with the SGMLDECL catalog entry. +

+
+
+

+ Configuring DocBook-3.1 SGML DTD +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/sgml/catalog +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The above installation script updates the catalog. +

+

+ Using only the most current 3.x version of DocBook SGML DTD requires the + following (perform as the root user): +

+
cat >> /usr/share/sgml/docbook/sgml-dtd-3.1/catalog << "EOF"
+  -- Begin Single Major Version catalog changes --
+
+PUBLIC "-//Davenport//DTD DocBook V3.0//EN" "docbook.dtd"
+
+  -- End Single Major Version catalog changes --
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Files: + SGML DTD and MOD files +
+
+ Installed Directory: + /usr/share/sgml/docbook/sgml-dtd-3.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ SGML DTD + files +

+
+

+ contains a document type definition which defines + the element types and the attribute lists that can + be used in the corresponding SGML files +

+
+

+ SGML MOD + files +

+
+

+ contains components of the document type definition + that are sourced into the DTD files +

+
+
+
+
+
+
+
+

+ docbook-4.5-dtd +

+
+
+
+
+
+

+ Introduction to DocBook-4.5 SGML DTD +

+

+ The DocBook-4.5 SGML DTD + package contains document type definitions for verification + of SGML 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.docbook.org/sgml/4.5/docbook-4.5.zip +

    +
  • +
  • +

    + Download MD5 sum: 07c581f4bbcba6d3aac85360a19f95f7 +

    +
  • +
  • +

    + Download size: 70 KB +

    +
  • +
  • +

    + Estimated disk space required: 784 KB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ DocBook-4.5 SGML DTD Dependencies +

+
+ Required +
+

+ libarchive-3.8.1 and sgml-common-0.6.3 +

+
+
+

+ Installation of DocBook-4.5 SGML DTD +

+
+

+ Note +

+

+ The package source is distributed in zip format and requires unzip (actually a symlink + to bsdunzip + from libarchive). You + should create a directory and change to that directory + before unzipping the file to ease the removal of the source + files after the package has been installed. +

+
+

+ Install DocBook-4.5 SGML DTD + by running the following commands: +

+
sed -i -e '/ISO 8879/d' \
+       -e '/gml/d' docbook.cat
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
install -v -d /usr/share/sgml/docbook/sgml-dtd-4.5 &&
+chown -R root:root . &&
+
+install -v docbook.cat /usr/share/sgml/docbook/sgml-dtd-4.5/catalog &&
+cp -v -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-4.5 &&
+
+install-catalog --add /etc/sgml/sgml-docbook-dtd-4.5.cat \
+    /usr/share/sgml/docbook/sgml-dtd-4.5/catalog &&
+
+install-catalog --add /etc/sgml/sgml-docbook-dtd-4.5.cat \
+    /etc/sgml/sgml-docbook.cat
+
+
+

+ Command Explanations +

+

+ sed -i -e '/ISO 8879/d' -e + '/gml/d' docbook.cat: This command removes + the ENT definitions from the catalog file. +

+
+
+

+ Configuring DocBook-4.5 SGML DTD +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/sgml/catalog +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ The above installation script updates the catalog. +

+

+ Using only the most current 4.x version of DocBook SGML DTD requires the + following (perform as the root user): +

+
cat >> /usr/share/sgml/docbook/sgml-dtd-4.5/catalog << "EOF"
+  -- Begin Single Major Version catalog changes --
+
+PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "docbook.dtd"
+PUBLIC "-//OASIS//DTD DocBook V4.3//EN" "docbook.dtd"
+PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "docbook.dtd"
+PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook.dtd"
+PUBLIC "-//OASIS//DTD DocBook V4.0//EN" "docbook.dtd"
+
+  -- End Single Major Version catalog changes --
+EOF
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Files: + SGML DTD and MOD files +
+
+ Installed Directory: + /usr/share/sgml/docbook/sgml-dtd-4.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ SGML DTD + files +

+
+

+ contains a document type definition which defines + the element types and the attribute lists that can + be used in the corresponding SGML files +

+
+

+ SGML MOD + files +

+
+

+ contains components of the document type definition + that are sourced into the DTD files +

+
+
+
+
+
+
+
+

+ OpenSP-1.5.2 +

+
+
+
+
+
+

+ Introduction to OpenSP +

+

+ The OpenSP package contains + a C++ library for using + SGML/XML files. This is useful for validating, parsing and + manipulating SGML and XML documents. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ OpenSP Dependencies +

+
+ Required +
+

+ sgml-common-0.6.3 +

+
+ Optional +
+

+ libnsl-2.0.1 and xmlto-0.0.29 +

+
+
+

+ Installation of OpenSP +

+

+ Install OpenSP by running + the following commands: +

+
patch -Np1 -i ../OpenSP-1.5.2-gcc14-1.patch          &&
+sed -i 's/32,/253,/' lib/Syntax.cxx                  &&
+sed -i 's/LITLEN          240 /LITLEN          8092/' \
+    unicode/{gensyntax.pl,unicode.syn}               &&
+
+./configure --prefix=/usr                              \
+            --disable-static                           \
+            --disable-doc-build                        \
+            --enable-default-catalog=/etc/sgml/catalog \
+            --enable-http                              \
+            --enable-default-search-path=/usr/share/sgml &&
+
+make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2
+

+ To test the results, issue: make check. As many as nine + of the 23 tests may fail. Do not be alarmed. +

+

+ Now, as the root user: +

+
make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2 \
+     docdir=/usr/share/doc/OpenSP-1.5.2      \
+     install &&
+
+ln -v -sf onsgmls   /usr/bin/nsgmls   &&
+ln -v -sf osgmlnorm /usr/bin/sgmlnorm &&
+ln -v -sf ospam     /usr/bin/spam     &&
+ln -v -sf ospcat    /usr/bin/spcat    &&
+ln -v -sf ospent    /usr/bin/spent    &&
+ln -v -sf osx       /usr/bin/sx       &&
+ln -v -sf osx       /usr/bin/sgml2xml &&
+ln -v -sf libosp.so /usr/lib/libsp.so
+
+
+

+ Command Explanations +

+

+ sed -i + 's/32,/253,/...unicode.syn}: These seds + prevent some annoying messages that may otherwise appear + while running openjade. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-http: This + switch adds support for HTTP. +

+

+ --disable-doc-build: + This switch prevents the configure script checking + if you have xmlto installed. + If you have xmlto, you can + remove this option. +

+

+ --enable-default-catalog=/etc/sgml/catalog: + This switch sets the path to the centralized catalog. +

+

+ --enable-default-search-path: + This switch sets the default value of SGML_SEARCH_PATH. +

+

+ --enable-xml-messages: This + switch adds support for XML Formatted Messages. +

+

+ make + pkgdatadir=/usr/share/sgml/OpenSP-1.5.2 : + This sets the pkgdatadir variable in the Makefile from /usr/share/OpenSP to /usr/share/sgml/OpenSP-1.5.2. +

+

+ ln -v -sf ...: + These commands create the SP + equivalents of OpenSP + executables and libraries. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + onsgmls, osgmlnorm, ospam, ospcat, + ospent, osx, and the SP + equivalent symlinks: nsgmls, sgml2xml, sgmlnorm, spam, + spcat, spent, and sx +
+
+ Installed Library: + libosp.so and the SP equivalent symlink: + libsp.so +
+
+ Installed Directories: + /usr/include/OpenSP, + /usr/share/doc/OpenSP, and + /usr/share/sgml/OpenSP-1.5.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ onsgmls +

+
+

+ is used to process SGML files +

+
+

+ osgmlnorm +

+
+

+ prints on the standard output a normalized document + instance for the SGML document contained in the + concatenation of the entities with system + identifiers .nf and .fi +

+
+

+ ospam +

+
+

+ is a markup stream editor +

+
+

+ ospcat +

+
+

+ prints effective system identifiers found in the + catalogs +

+
+

+ ospent +

+
+

+ provides access to OpenSP's entity manager +

+
+

+ osx +

+
+

+ is an SGML normalizer or used to convert SGML files + to XML files +

+
+

+ nsgmls +

+
+

+ is a symlink to onsgmls +

+
+

+ sgml2xml +

+
+

+ is a symlink to osx +

+
+

+ sgmlnorm +

+
+

+ is a symlink to osgmlnorm +

+
+

+ spam +

+
+

+ is a symlink to ospam +

+
+

+ spcat +

+
+

+ is a symlink to ospcat +

+
+

+ spent +

+
+

+ is a symlink to ospent +

+
+

+ sx +

+
+

+ is a symlink to osx +

+
+

+ libosp.so +

+
+

+ contains functions required by the OpenSP programs to parse, + validate and manipulate SGML and XML files +

+
+

+ libsp.so +

+
+

+ is a symlink to libosp.so +

+
+
+
+
+
+
+
+

+ OpenJade-1.3.2 +

+
+
+
+
+
+

+ Introduction to OpenJade +

+

+ The OpenJade package + contains a DSSSL engine. This is useful for SGML and XML + transformations into RTF, TeX, SGML and XML. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Download +

+ +

+ OpenJade Dependencies +

+
+ Required +
+

+ OpenSP-1.5.2 +

+
+
+

+ Installation of OpenJade +

+

+ First fix problems when building with newer compilers: +

+
patch -Np1 -i ../openjade-1.3.2-upstream-1.patch
+

+ Now fix a compilation problem with perl-5.16 and later: +

+
sed -i -e '/getopts/{N;s#&G#g#;s#do .getopts.pl.;##;}' \
+       -e '/use POSIX/ause Getopt::Std;' msggen.pl
+

+ Install OpenJade by running + the following commands: +

+
export CXXFLAGS="${CXXFLAGS:--O2 -g} -fno-lifetime-dse"            &&
+./configure --prefix=/usr                                \
+            --mandir=/usr/share/man                      \
+            --enable-http                                \
+            --disable-static                             \
+            --enable-default-catalog=/etc/sgml/catalog   \
+            --enable-default-search-path=/usr/share/sgml \
+            --datadir=/usr/share/sgml/openjade-1.3.2   &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install                                                   &&
+make install-man                                               &&
+ln -v -sf openjade /usr/bin/jade                               &&
+ln -v -sf libogrove.so /usr/lib/libgrove.so                    &&
+ln -v -sf libospgrove.so /usr/lib/libspgrove.so                &&
+ln -v -sf libostyle.so /usr/lib/libstyle.so                    &&
+
+install -v -m644 dsssl/catalog /usr/share/sgml/openjade-1.3.2/ &&
+
+install -v -m644 dsssl/*.{dtd,dsl,sgm}              \
+    /usr/share/sgml/openjade-1.3.2                             &&
+
+install-catalog --add /etc/sgml/openjade-1.3.2.cat  \
+    /usr/share/sgml/openjade-1.3.2/catalog                     &&
+
+install-catalog --add /etc/sgml/sgml-docbook.cat    \
+    /etc/sgml/openjade-1.3.2.cat
+
+
+

+ Command Explanations +

+

+ export + CXXFLAGS=...: This command prevents + segmentation faults when the package is compiled with + gcc-6.1. +

+

+ make + install-man: This command installs the + openjade man + page. +

+

+ --disable-static: + This switch prevents the building of the static library. +

+

+ --enable-http: This + switch adds support for HTTP. +

+

+ --enable-default-catalog=/etc/sgml/catalog: + This switch sets the path to the centralized catalog. +

+

+ --enable-default-search-path: + This switch sets the default value of SGML_SEARCH_PATH. +

+

+ --datadir=/usr/share/sgml/openjade-1.3.2: + This switch puts data files in /usr/share/sgml/openjade-1.3.2 instead of + /usr/share. +

+

+ ln -v -sf ...: + These commands create the Jade equivalents of OpenJade executables and libraries. +

+
+
+

+ Configuring OpenJade +

+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ As the root user: +

+
echo "SYSTEM \"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\" \
+    \"/usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd\"" >> \
+    /usr/share/sgml/openjade-1.3.2/catalog
+

+ This configuration is only necessary if you intend to use + OpenJade to process the + BLFS XML files through DSSSL Stylesheets. +

+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + openjade and the Jade equivalent symlink, jade +
+
+ Installed Libraries: + libogrove.so, libospgrove.so, + libostyle.so, and the Jade equivalent symlinks: + libgrove.so, libspgrove.so, and libstyle.so +
+
+ Installed Directory: + /usr/share/sgml/openjade-1.3.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ openjade +

+
+

+ is a DSSSL engine used for transformations +

+
+

+ jade +

+
+

+ is a symlink to openjade +

+
+
+
+
+
+
+
+

+ docbook-dsssl-1.79 +

+
+
+
+
+
+

+ Introduction to DocBook DSSSL Stylesheets +

+

+ The DocBook DSSSL + Stylesheets package contains DSSSL stylesheets. These + are used by OpenJade or + other tools to transform SGML and XML DocBook files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+

+ Documentation and test data +

+ +
+

+ DocBook DSSSL Stylesheets + Dependencies +

+
+ Required +
+

+ sgml-common-0.6.3 +

+
+ Required (to Test the DocBook SGML + Toolchain) +
+

+ docbook-3.1-dtd, docbook-4.5-dtd, + OpenSP-1.5.2, and OpenJade-1.3.2 +

+
+
+

+ Installation of DocBook DSSSL Stylesheets +

+

+ If you downloaded the documentation, run: +

+
tar -xf ../docbook-dsssl-doc-1.79.tar.bz2 --strip-components=1
+

+ Install DocBook DSSSL + Stylesheets by running the following commands as the + root user: +

+
install -v -m755 bin/collateindex.pl /usr/bin                      &&
+install -v -m644 bin/collateindex.pl.1 /usr/share/man/man1         &&
+install -v -d -m755 /usr/share/sgml/docbook/dsssl-stylesheets-1.79 &&
+cp -v -R * /usr/share/sgml/docbook/dsssl-stylesheets-1.79          &&
+
+install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
+    /usr/share/sgml/docbook/dsssl-stylesheets-1.79/catalog         &&
+
+install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
+    /usr/share/sgml/docbook/dsssl-stylesheets-1.79/common/catalog  &&
+
+install-catalog --add /etc/sgml/sgml-docbook.cat              \
+    /etc/sgml/dsssl-docbook-stylesheets.cat
+
+
+

+ Command Explanations +

+

+ The above commands create an installation script for this + package. +

+
+
+

+ Testing the DocBook SGML Toolchain (Optional) +

+

+ The following commands will perform the necessary tests to + confirm that your installed DocBook SGML toolchain will + produce desired results. You must have the docbook-3.1-dtd, docbook-4.5-dtd, + OpenSP-1.5.2, and OpenJade-1.3.2 + packages installed, and perform the tests as the root user. +

+

+ All tests will be performed from the /usr/share/sgml/docbook/dsssl-stylesheets-1.79/doc/testdata + directory as the root user: +

+
cd /usr/share/sgml/docbook/dsssl-stylesheets-1.79/doc/testdata
+

+ The first test should produce no output to stdout (your + screen) and create a file named jtest.rtf in the current directory: +

+
openjade -t rtf -d jtest.dsl jtest.sgm
+

+ The next test should return only the following line to + stdout: onsgmls:I: "OpenSP" + version "1.5.2" +

+
onsgmls -sv test.sgm
+

+ The next test should produce no output to stdout and create a + file named test.rtf in the + current directory: +

+
openjade -t rtf \
+    -d /usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/docbook.dsl \
+    test.sgm
+

+ The last test should produce no output to stdout and create a + file named c1.htm in the + current directory: +

+
openjade -t sgml \
+    -d /usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/docbook.dsl \
+    test.sgm
+

+ Finally, clean up: +

+
rm jtest.rtf test.rtf c1.htm
+
+
+

+ Contents +

+
+
+
+ Installed Program: + collateindex.pl +
+
+ Installed Libraries: + None +
+
+ Installed Files: + DSSSL stylesheets +
+
+ Installed Directory: + /usr/share/sgml/docbook/dsssl-stylesheets-1.79 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ collateindex.pl +

+
+

+ is a Perl script + that creates a DocBook index from raw index data +

+
+
+
+
+
+
+
+

+ DocBook-utils-0.6.14 +

+
+
+
+
+
+

+ Introduction to DocBook-utils +

+

+ The DocBook-utils package is + a collection of utility scripts used to convert and analyze + SGML documents in general, and DocBook files in particular. + The scripts are used to convert from DocBook or other SGML + formats into “classical” file formats like HTML, man, + info, RTF and many more. There's also a utility to compare + two SGML files and only display the differences in markup. + This is useful for comparing documents prepared for different + languages. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ DocBook-utils Dependencies +

+
+ Required +
+

+ OpenJade-1.3.2, docbook-dsssl-1.79, and docbook-3.1-dtd +

+
+ Recommended (Runtime Dependencies + Only) +
+ +
+
+

+ Installation of DocBook-utils +

+

+ Install DocBook-utils by + running the following commands: +

+
patch -Np1 -i ../docbook-utils-0.6.14-grep_fix-1.patch &&
+sed -i 's:/html::' doc/HTML/Makefile.in                &&
+
+./configure --prefix=/usr --mandir=/usr/share/man      &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make docdir=/usr/share/doc install
+

+ Many packages use an alternate name for the DocBook-utils scripts. If you wish to + create these alternate names, use the following command as + the root user: +

+
for doctype in html ps dvi man pdf rtf tex texi txt
+do
+    ln -svf docbook2$doctype /usr/bin/db2$doctype
+done
+
+

+ Note +

+

+ The jw script + uses the which command to locate + required utilities. You must install Which-2.23 + before attempting to use any of the DocBook-utils programs. +

+
+
+
+

+ Command Explanations +

+

+ patch -Np1 -i + ../docbook-utils-0.6.14-grep_fix-1.patch: + This patch corrects the syntax in the jw (Jade Wrapper) + script which is at the heart of much db2* processing, so that + the current version of grep + will not reject it. +

+

+ sed -i 's:/html::' + doc/HTML/Makefile.in: This command changes + the installation directory of the HTML documents. +

+

+ docdir=/usr/share/doc: This + option is placed on the make + install line because it is not recognized by + configure. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + docbook2dvi, docbook2html, + docbook2man, docbook2pdf, docbook2ps, docbook2rtf, + docbook2tex, docbook2texi, docbook2txt, jw, and + sgmldiff +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /usr/share/doc/docbook-utils-0.6.14 + and /usr/share/sgml/docbook/utils-0.6.14 +
+
+ Installed Symlinks: + db2dvi, db2html, db2man, db2pdf, + db2ps, db2rtf, db2tex, db2texi, and db2txt +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ docbook2* +

+
+

+ are simple one-line wrapper scripts to jw. They are + provided as easy-to-remember names used to convert + DocBook or other SGML files to the respective + format +

+
+

+ db2* +

+
+

+ are symlinks pointing at the respectively named + docbook2* + commands, created to satisfy some program's use of + these names +

+
+

+ jw +

+
+

+ is a script used to convert DocBook or other SGML + files to various output formats. It hides most of + OpenJade's + complexity and adds comfortable features +

+
+

+ sgmldiff +

+
+

+ is used to compare two SGML files and only return + the differences in the markup. This is especially + useful to compare files that should be identical + except for language differences in the content +

+
+
+
+
+
+
+
+
+

+ Chapter 49. Extensible Markup + Language (XML) +

+
+
+
+
+

+ This chapter contains the DocBook XML document type definition + (DTD) and DocBook Stylesheets which are used to validate, + transform, format and publish DocBook documents. +

+
+
+
+

+ docbook-xml-4.5 +

+
+
+
+
+
+

+ Introduction to DocBook-4.5 XML DTD +

+

+ The DocBook-4.5 XML DTD-4.5 + 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. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://www.docbook.org/xml/4.5/docbook-xml-4.5.zip +

    +
  • +
  • +

    + Download MD5 sum: 03083e288e87a7e829e437358da7ef9e +

    +
  • +
  • +

    + Download size: 96 KB +

    +
  • +
  • +

    + Estimated disk space required: 1.2 MB +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU +

    +
  • +
+
+

+ DocBook-4.5 XML DTD Dependencies +

+
+ Required +
+

+ libarchive-3.8.1 and libxml2-2.14.5 +

+
+
+

+ Installation of DocBook-4.5 XML DTD +

+
+

+ Note +

+

+ The package source is distributed in zip format and requires unzip (actually a symlink + to bsdunzip + from libarchive). You + should create a directory and change to that directory + before unzipping the file to ease the removal of the source + files after the package has been installed. +

+
+

+ Install DocBook XML DTD by + running the following commands as the root user: +

+
install -v -d -m755 /usr/share/xml/docbook/xml-dtd-4.5         &&
+install -v -d -m755 /etc/xml                                   &&
+cp -v -af --no-preserve=ownership docbook.cat *.dtd ent/ *.mod \
+    /usr/share/xml/docbook/xml-dtd-4.5
+

+ Create (or update) and populate the /etc/xml/docbook catalog file by running + the following commands as the root user: +

+
if [ ! -e /etc/xml/docbook ]; then
+    xmlcatalog --noout --create /etc/xml/docbook
+fi &&
+
+xmlcatalog --noout --add "public"                            \
+    "-//OASIS//DTD DocBook XML V4.5//EN"                     \
+    "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \
+    /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" \
+    /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" \
+    /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"    \
+    /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"      \
+    /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" \
+    /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" \
+    /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"      \
+    /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"              \
+    /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" \
+    /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" \
+    /etc/xml/docbook
+

+ Create (or update) and populate the /etc/xml/catalog catalog file by running + the following commands as the root user: +

+
if [ ! -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
+
+
+

+ Configuring DocBook-4.5 XML DTD +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/xml/catalog and + /etc/xml/docbook +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+
+

+ Caution +

+

+ Various BLFS packages request DocBook XML DTD version 4.x before + V4.5, so the following step must be done for those + packages to be built successfully. +

+
+

+ 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. If you have any + of the DocBook XML DTD's + referenced below already installed on your system, remove + those entries from the for command below (issue + the commands as the root + user): +

+
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" \
+    /etc/xml/docbook
+
+  xmlcatalog --noout --add "rewriteSystem"              \
+    "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
+    "file:///usr/share/xml/docbook/xml-dtd-4.5"         \
+    /etc/xml/docbook
+  
+  xmlcatalog --noout --add "rewriteURI"                 \
+    "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
+    "file:///usr/share/xml/docbook/xml-dtd-4.5"         \
+    /etc/xml/docbook
+  
+  xmlcatalog --noout --add "delegateSystem"              \
+    "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
+    "file:///etc/xml/docbook"                            \
+    /etc/xml/catalog
+  
+  xmlcatalog --noout --add "delegateURI"                 \
+    "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
+    "file:///etc/xml/docbook"                            \
+    /etc/xml/catalog
+done
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + None +
+
+ Installed Libraries: + None +
+
+ Installed Files: + DTD, MOD and ENT files +
+
+ Installed Directories: + /etc/xml and + /usr/share/xml/docbook/xml-dtd-4.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ DTD + files +

+
+

+ contain a document type definition which defines + the element types and the attribute lists that can + be used in the corresponding XML files +

+
+

+ MOD + files +

+
+

+ contain components of the document type definition + that are sourced into the DTD files +

+
+

+ ENT + files +

+
+

+ contain lists of named character entities allowed + in HTML +

+
+
+
+
+
+
+
+

+ docbook-xml-5.0 +

+
+
+
+
+
+

+ Introduction to DocBook XML DTD and Schemas 5.0 +

+

+ The DocBook XML DTD and + Schemas-5.0 package contains document type definitions + and schemas 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. In + addition to providing a DTD, version 5 introduced the RelaxNG + schema and Schematron rules, and is incompatible with + previous versions of DocBook XML. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): https://docbook.org/xml/5.0/docbook-5.0.zip +

    +
  • +
  • +

    + Download MD5 sum: 2411c19ed4fb141f3fa3d389fae40736 +

    +
  • +
  • +

    + Download size: 820 KB +

    +
  • +
  • +

    + Estimated disk space required: 6.2 MB +

    +
  • +
  • +

    + Estimated build time: 0.1 SBU +

    +
  • +
+
+

+ DocBook XML DTD and Schemas 5.0 + Dependencies +

+
+ Required +
+

+ libarchive-3.8.1 and libxml2-2.14.5 +

+
+
+

+ Installation of DocBook XML DTD and Schemas 5.0 +

+

+ Install DocBook XML DTD and + Schemas by running the following commands as the + root user: +

+
install -vdm755 /usr/share/xml/docbook/schema/{dtd,rng,sch,xsd}/5.0 &&
+install -vm644  dtd/* /usr/share/xml/docbook/schema/dtd/5.0         &&
+install -vm644  rng/* /usr/share/xml/docbook/schema/rng/5.0         &&
+install -vm644  sch/* /usr/share/xml/docbook/schema/sch/5.0         &&
+install -vm644  xsd/* /usr/share/xml/docbook/schema/xsd/5.0
+

+ Still as the root user, + create the individual catalogs: +

+
xmlcatalog --noout --create /usr/share/xml/docbook/schema/dtd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "public"     \
+  "-//OASIS//DTD DocBook XML 5.0//EN" \
+  "docbook.dtd" /usr/share/xml/docbook/schema/dtd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "system"                             \
+  "http://www.oasis-open.org/docbook/xml/5.0/dtd/docbook.dtd" \
+  "docbook.dtd" /usr/share/xml/docbook/schema/dtd/5.0/catalog.xml &&
+
+xmlcatalog --noout --create /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                 \
+  "http://docbook.org/xml/5.0/rng/docbook.rng" \
+  "docbook.rng" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                \
+  "http://www.oasis-open.org/docbook/xml/5.0/rng/docbook.rng" \
+  "docbook.rng" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                   \
+  "http://docbook.org/xml/5.0/rng/docbookxi.rng" \
+  "docbookxi.rng" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                  \
+  "http://www.oasis-open.org/docbook/xml/5.0/rng/docbookxi.rng" \
+  "docbookxi.rng" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                 \
+  "http://docbook.org/xml/5.0/rng/docbook.rnc" \
+  "docbook.rnc" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                \
+  "http://www.oasis-open.org/docbook/xml/5.0/rng/docbook.rnc" \
+  "docbook.rnc" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                   \
+  "http://docbook.org/xml/5.0/rng/docbookxi.rnc" \
+  "docbookxi.rnc" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                  \
+  "http://www.oasis-open.org/docbook/xml/5.0/rng/docbookxi.rnc" \
+  "docbookxi.rnc" /usr/share/xml/docbook/schema/rng/5.0/catalog.xml &&
+
+xmlcatalog --noout --create /usr/share/xml/docbook/schema/sch/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                 \
+  "http://docbook.org/xml/5.0/sch/docbook.sch" \
+  "docbook.sch" /usr/share/xml/docbook/schema/sch/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                \
+  "http://www.oasis-open.org/docbook/xml/5.0/sch/docbook.sch" \
+  "docbook.sch" /usr/share/xml/docbook/schema/sch/5.0/catalog.xml &&
+
+xmlcatalog --noout --create /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                 \
+  "http://docbook.org/xml/5.0/xsd/docbook.xsd" \
+  "docbook.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                \
+  "http://www.oasis-open.org/docbook/xml/5.0/xsd/docbook.xsd" \
+  "docbook.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                   \
+  "http://docbook.org/xml/5.0/xsd/docbookxi.xsd" \
+  "docbookxi.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                                  \
+  "http://www.oasis-open.org/docbook/xml/5.0/xsd/docbookxi.xsd" \
+  "docbookxi.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"               \
+  "http://docbook.org/xml/5.0/xsd/xlink.xsd" \
+  "xlink.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                               \
+   "http://www.oasis-open.org/docbook/xml/5.0/xsd/xlink.xsd" \
+   "xlink.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"              \
+   "http://docbook.org/xml/5.0/xsd/xml.xsd" \
+   "xml.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml &&
+
+xmlcatalog --noout --add "uri"                             \
+   "http://www.oasis-open.org/docbook/xml/5.0/xsd/xml.xsd" \
+   "xml.xsd" /usr/share/xml/docbook/schema/xsd/5.0/catalog.xml
+

+ Create (or update) and populate the system XML catalog + (/etc/xml/catalog) by running + the following commands as the root user: +

+
if [ ! -e /etc/xml/catalog ]; then
+    install -v -d -m755 /etc/xml &&
+    xmlcatalog --noout --create /etc/xml/catalog
+fi &&
+
+xmlcatalog --noout --add "delegatePublic"                    \
+  "-//OASIS//DTD DocBook XML 5.0//EN                       " \
+  "file:///usr/share/xml/docbook/schema/dtd/5.0/catalog.xml" \
+  /etc/xml/catalog &&
+
+xmlcatalog --noout --add "delegateSystem"                    \
+  "http://docbook.org/xml/5.0/dtd/"                          \
+  "file:///usr/share/xml/docbook/schema/dtd/5.0/catalog.xml" \
+  /etc/xml/catalog &&
+
+xmlcatalog --noout --add "delegateURI"                       \
+  "http://docbook.org/xml/5.0/dtd/"                          \
+  "file:///usr/share/xml/docbook/schema/dtd/5.0/catalog.xml" \
+  /etc/xml/catalog &&
+
+xmlcatalog --noout --add "delegateURI"                       \
+  "http://docbook.org/xml/5.0/rng/"                          \
+  "file:///usr/share/xml/docbook/schema/rng/5.0/catalog.xml" \
+  /etc/xml/catalog &&
+
+xmlcatalog --noout --add "delegateURI"                       \
+  "http://docbook.org/xml/5.0/sch/"                          \
+  "file:///usr/share/xml/docbook/schema/sch/5.0/catalog.xml" \
+  /etc/xml/catalog &&
+
+xmlcatalog --noout --add "delegateURI"                       \
+  "http://docbook.org/xml/5.0/xsd/"                          \
+  "file:///usr/share/xml/docbook/schema/xsd/5.0/catalog.xml" \
+  /etc/xml/catalog
+
+
+

+ Configuring DocBook XML DTD and Schemas 5.0 +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/xml/catalog and + /etc/xml/docbook-5.0 +

+
+
+
+

+ Contents +

+
+
+
+ Installed Files: + DTD, RNC, RNG, SCH and XSD + files +
+
+ Installed Directories: + /etc/xml and + /usr/share/xml/docbook/schema/{dtd,rng,sch,xsd}/5.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ DTD files +

+
+

+ contain the DocBook 5.0 document type definitions + which define the element types and the attribute + lists that can be used in the corresponding + XML files +

+
+

+ RNC, RNG, and SCH files +

+
+

+ contain the Docbook 5.0 RelaxNG, RelaxNG Compact, + and Schematron schema definitions +

+
+

+ XSD files +

+
+

+ files contain DocBook-5.0 Schematron rules +

+
+
+
+
+
+
+
+

+ docbook-xsl-nons-1.79.2 +

+
+
+
+
+
+

+ Introduction to DocBook XSL Stylesheets +

+

+ The DocBook XSL Stylesheets + package contains XSL stylesheets. These are useful for + performing transformations on XML DocBook files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +
+

+ Optional documentation +

+ +
+

+ DocBook XSL Stylesheets Dependencies +

+
+ Recommended (at runtime) +
+ +
+ Optional (all used at runtime) +
+

+ apache-ant-1.10.15 (to produce + “webhelp” documents), libxslt-1.1.43 (or + any other XSLT processor), to process Docbook documents, + Ruby-3.4.5 (to utilize the “epub” + stylesheets), Zip-3.0 (to produce “epub3” documents), + and Saxon6 + and Xerces2 Java (used + with apache-ant-1.10.15 to produce + “webhelp” documents) +

+
+
+

+ Installation of DocBook XSL Stylesheets +

+

+ First, fix a problem that causes stack overflows when doing + recursion: +

+
patch -Np1 -i ../docbook-xsl-nons-1.79.2-stack_fix-1.patch
+

+ If you downloaded the optional documentation tarball, unpack + it with the following command: +

+
tar -xf ../docbook-xsl-doc-1.79.2.tar.bz2 --strip-components=1
+

+ BLFS does not install the required packages to run the test + suite and provide meaningful results. +

+

+ Install DocBook XSL + Stylesheets by running the following commands as the + root user: +

+
install -v -m755 -d /usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2 &&
+
+cp -v -R 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                                          \
+    /usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2 &&
+
+ln -s VERSION /usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2/VERSION.xsl &&
+
+install -v -m644 -D README \
+                    /usr/share/doc/docbook-xsl-nons-1.79.2/README.txt &&
+
+install -v -m644    RELEASE-NOTES* NEWS* \
+                    /usr/share/doc/docbook-xsl-nons-1.79.2
+

+ If you downloaded the optional documentation tarball, install + the documentation by issuing the following command as the + root user: +

+
cp -v -R doc/* /usr/share/doc/docbook-xsl-nons-1.79.2
+
+
+

+ Configuring DocBook XSL Stylesheets +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/xml/catalog +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Create (or append) and populate the XML catalog file using + the following commands as the root user (both http and https forms are used because + upstream have had both in their documentation): +

+
if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi &&
+if [ ! -f /etc/xml/catalog ]; then
+    xmlcatalog --noout --create /etc/xml/catalog
+fi &&
+
+xmlcatalog --noout --add "rewriteSystem"                        \
+           "http://cdn.docbook.org/release/xsl-nons/1.79.2"     \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                        \
+           "https://cdn.docbook.org/release/xsl-nons/1.79.2"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                           \
+           "http://cdn.docbook.org/release/xsl-nons/1.79.2"     \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                           \
+           "https://cdn.docbook.org/release/xsl-nons/1.79.2"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                        \
+           "http://cdn.docbook.org/release/xsl-nons/current"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                        \
+           "https://cdn.docbook.org/release/xsl-nons/current"   \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                           \
+           "http://cdn.docbook.org/release/xsl-nons/current"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                           \
+           "https://cdn.docbook.org/release/xsl-nons/current"   \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                        \
+           "http://docbook.sourceforge.net/release/xsl/current" \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                           \
+           "http://docbook.sourceforge.net/release/xsl/current" \
+           "/usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2" \
+           /etc/xml/catalog
+

+ Occasionally, you may find the need to install other + versions of the XSL stylesheets as some projects reference + a specific version. One example is BLFS-6.0, which required + the 1.67.2 version. In these instances you should install + any other required version in its own versioned directory + and create catalog entries as follows (substitute the + desired version number for <version>): +

+
xmlcatalog --noout --add "rewriteSystem"                          \
+           "http://docbook.sourceforge.net/release/xsl/<version>" \
+           "/usr/share/xml/docbook/xsl-stylesheets-<version>"     \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                             \
+           "http://docbook.sourceforge.net/release/xsl/<version>" \
+           "/usr/share/xml/docbook/xsl-stylesheets-<version>"     \
+           /etc/xml/catalog
+
+
+
+

+ Contents +

+
+
+
+ Installed Files: + /usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2/*/*.xsl +
+
+ Installed Directories: + /usr/share/xml/docbook/xsl-stylesheets-nons-1.79.2 + and /usr/share/doc/docbook-xsl-nons-1.79.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ XSL + Stylesheets +

+
+

+ are used for performing transformations on XML + files +

+
+
+
+
+
+
+
+

+ docbook-xsl-ns-1.79.2 +

+
+
+
+
+
+

+ Introduction to DocBook XSL Stylesheets (Namespaced) +

+

+ The DocBook XSL Stylesheets + (Namespaced) package contains XSL stylesheets. These + are useful for performing transformations on XML DocBook 5.0 + files. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+ +

+ DocBook XSL Stylesheets (Namespaced) + Dependencies +

+
+ Recommended (at runtime) +
+ +
+ Optional (all used at runtime) +
+

+ apache-ant-1.10.15 (to produce + “webhelp” documents), libxslt-1.1.43 (or + any other XSLT processor), to process Docbook documents, + Ruby-3.4.5 (to utilize the “epub” + stylesheets), Zip-3.0 (to produce “epub3” documents), + and Saxon6 + and Xerces2 Java (used + with apache-ant-1.10.15 to produce + “webhelp” documents) +

+
+
+

+ Installation of DocBook XSL Stylesheets (Namespaced) +

+

+ First, fix a problem that causes stack overflows when doing + recursion: +

+
patch -Np1 -i ../docbook-xsl-1.79.2-stack_fix-1.patch
+

+ BLFS does not install the required packages to run the test + suite and provide meaningful results. +

+

+ Install DocBook XSL + Stylesheets by running the following commands as the + root user: +

+
install -v -m755 -d /usr/share/xml/docbook/xsl-stylesheets-1.79.2 &&
+
+cp -v -R 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                                          \
+    /usr/share/xml/docbook/xsl-stylesheets-1.79.2 &&
+
+ln -s VERSION /usr/share/xml/docbook/xsl-stylesheets-1.79.2/VERSION.xsl
+

+ The documentation for this package is shared with its + non-namespaced counterpart, the docbook-xsl-nons-1.79.2 + package. Install the latter if you want the documentation. +

+
+
+

+ Configuring DocBook XSL Stylesheets +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ /etc/xml/catalog +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Create (or append) and populate the XML catalog file using + the following commands as the root user (both http and https forms are used because + upstream have had both in their documentation): +

+
if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi &&
+if [ ! -f /etc/xml/catalog ]; then
+    xmlcatalog --noout --create /etc/xml/catalog
+fi &&
+
+xmlcatalog --noout --add "rewriteSystem"                   \
+           "http://cdn.docbook.org/release/xsl/1.79.2"     \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                   \
+           "https://cdn.docbook.org/release/xsl/1.79.2"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                      \
+           "http://cdn.docbook.org/release/xsl/1.79.2"     \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                      \
+           "https://cdn.docbook.org/release/xsl/1.79.2"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                   \
+           "http://cdn.docbook.org/release/xsl/current"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                   \
+           "https://cdn.docbook.org/release/xsl/current"   \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                      \
+           "http://cdn.docbook.org/release/xsl/current"    \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                      \
+           "https://cdn.docbook.org/release/xsl/current"   \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2" \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteSystem"                           \
+           "http://docbook.sourceforge.net/release/xsl-ns/current" \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2"         \
+           /etc/xml/catalog &&
+
+xmlcatalog --noout --add "rewriteURI"                              \
+           "http://docbook.sourceforge.net/release/xsl-ns/current" \
+           "/usr/share/xml/docbook/xsl-stylesheets-1.79.2"         \
+           /etc/xml/catalog
+
+
+
+

+ Contents +

+
+
+
+ Installed Files: + /usr/share/xml/docbook/xsl-stylesheets-1.79.2/*/*.xsl +
+
+ Installed Directories: + /usr/share/xml/docbook/xsl-stylesheets-1.79.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ XSL Stylesheets + (Namespaced) +

+
+

+ are used for performing transformations on XML + files +

+
+
+
+
+
+
+
+

+ itstool-2.0.7 +

+
+
+
+
+
+

+ Introduction to itstool +

+

+ Itstool extracts messages + from XML files and outputs PO template files, then merges + translations from MO files to create translated XML files. It + determines what to translate and how to chunk it into + messages using the W3C Internationalization Tag Set (ITS). +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Itstool Dependencies +

+
+ Required +
+

+ docbook-xml-4.5 +

+
+
+

+ Installation of itstool +

+

+ First, fix some compatibility problems with Python-3.12 and + later: +

+
sed -i 's/re.sub(/re.sub(r/'         itstool.in &&
+sed -i 's/re.compile(/re.compile(r/' itstool.in
+

+ Install itstool by running + the following commands: +

+
PYTHON=/usr/bin/python3 ./configure --prefix=/usr &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + itstool +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/itstool +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ itstool +

+
+

+ is used to create translated XML files +

+
+
+
+
+
+
+
+

+ xmlto-0.0.29 +

+
+
+
+
+
+

+ Introduction to xmlto +

+

+ The xmlto package is a + front-end to a XSL toolchain. It chooses an appropriate + stylesheet for the conversion you want and applies it using + an external XSLT processor. It also performs any necessary + post-processing. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://pagure.io/xmlto/archive/0.0.29/xmlto-0.0.29.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: 556f2642cdcd005749bd4c08bc621c37 +

    +
  • +
  • +

    + Download size: 64 KB +

    +
  • +
  • +

    + Estimated disk space required: 1.9 MB (with tests) +

    +
  • +
  • +

    + Estimated build time: less than 0.1 SBU (with tests) +

    +
  • +
+
+

+ xmlto Dependencies +

+
+ Required +
+

+ docbook-xml-4.5, docbook-xsl-nons-1.79.2, and + libxslt-1.1.43 +

+
+ Optional (for DVI, PDF, and + postscript backend post-processing) +
+

+ fop-2.11, + dblatex, + and + PassiveTeX +

+
+ Optional (for text backend + post-processing) +
+

+ One of Links-2.30, Lynx-2.9.2, W3m, or ELinks +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/xmlto +

+
+
+

+ Installation of xmlto +

+

+ Install xmlto by running the + following commands: +

+
autoreconf -fiv                                  &&
+LINKS="/usr/bin/links" ./configure --prefix=/usr &&
+
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ LINKS="/usr/bin/links": This + environment variable fixes a bug causing xmlto to think that + links command + is the same as elinks. Setting this + variable does not cause problems if Links-2.30 is not installed, + unless you have ELinks installed, and you wish to + use it for text backend post-processing. If you do wish to + ELinks, you should remove this environment variable. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + xmlif and xmlto +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/xmlto +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xmlif +

+
+

+ is a conditional processing instructions for XML +

+
+

+ xmlto +

+
+

+ applies an XSL stylesheet to an XML document +

+
+
+
+
+
+
+
+
+

+ Chapter 50. PostScript +

+
+
+
+
+

+ This chapter includes applications that create, manipulate or + view PostScript files and create or view Portable Document Format + PDF files. +

+
+
+
+

+ Enscript-1.6.6 +

+
+
+
+
+
+

+ Introduction to Enscript +

+

+ Enscript converts ASCII text + files to PostScript, HTML, RTF, ANSI and overstrikes. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+
+

+ Caution +

+

+ Enscript cannot convert + UTF-8 encoded text to PostScript. The issue is discussed in + detail in the Needed + Encoding Not a Valid Option section of the Locale Related Issues page. The + solution is to use paps-0.8.0, instead of Enscript, for converting UTF-8 encoded + text to PostScript. +

+
+

+ Package Information +

+
+ +
+

+ Enscript Dependencies +

+
+ Optional +
+

+ texlive-20250308 (or install-tl-unx) +

+
+
+

+ Installation of Enscript +

+

+ Install Enscript by running + the following commands: +

+
./configure --prefix=/usr              \
+            --sysconfdir=/etc/enscript \
+            --localstatedir=/var       \
+            --with-media=Letter &&
+make CC="gcc -std=gnu17"        &&
+
+pushd docs &&
+  makeinfo --plaintext -o enscript.txt enscript.texi &&
+popd
+

+ If you have texlive-20250308 installed, you + can create Postscript and PDF documentation by issuing (does + not support parallel make): +

+
make -j1 -C docs ps pdf
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install &&
+
+install -v -m755 -d /usr/share/doc/enscript-1.6.6 &&
+install -v -m644    README* *.txt docs/*.txt \
+                    /usr/share/doc/enscript-1.6.6
+

+ If you built Postscript and PDF documentation, install it + using the following command as the root user: +

+
install -v -m644 docs/*.{dvi,pdf,ps} \
+                 /usr/share/doc/enscript-1.6.6
+
+
+

+ Command Explanations +

+

+ --sysconfdir=/etc/enscript: + This switch puts configuration data in /etc/enscript instead of /usr/etc. +

+

+ --localstatedir=/var: + This switch sets the directory for runtime data to + /var instead of /usr/var. +

+

+ --with-media=Letter: + This switch sets the medium format to letter size instead of + the A4 default. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + diffpp, enscript, mkafmmap, over, + sliceprint, and states +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /etc/enscript, + /usr/share/doc/enscript-1.6.6, and + /usr/share/enscript +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ diffpp +

+
+

+ converts diff output files + to a format suitable to be printed with + enscript +

+
+

+ enscript +

+
+

+ is a filter, used primarily by printing scripts, + that converts ASCII text files to PostScript, HTML, + RTF, ANSI and overstrikes +

+
+

+ mkafmmap +

+
+

+ creates a font map from a given file +

+
+

+ over +

+
+

+ is a script which calls enscript and + passes the correct parameters to create overstriked + fonts +

+
+

+ sliceprint +

+
+

+ slices documents with long lines +

+
+

+ states +

+
+

+ is an awk-like text + processing tool with some state machine extensions. + It is designed for program source code highlighting + and for similar tasks where state information helps + input processing +

+
+
+
+
+
+
+
+

+ ePDFView-gtk3-20200814 +

+
+
+
+
+
+

+ Introduction to ePDFView-gtk3 +

+

+ ePDFView-gtk3 is a fork of + the old ePDFView program. + Although the github repository https://github.com/Flow-It/epdfview_old.git + names it as 'old', it is the gtk3 fork. It is a lightweight + replacement for Evince as it + does not rely upon GNOME + libraries and is more capable than MuPDF. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ ePDFView Dependencies +

+
+ Required +
+

+ GTK-3.24.50 and Poppler-25.08.0 +

+
+ Recommended +
+ +
+ Optional +
+

+ The home page of the project's repository mentions that there + are optional dependencies, which are enabled by switches. + These are for building the documentation and running the test + suite, Doxygen-1.14.0 and Cppunit. + Note that doxygen only + installs a skeletal page about itself, which contains no + package documentation, and the test code does not compile + with recent versions of C++. +

+
+
+

+ Installation of ePDFView-gtk3 +

+

+ Install ePDFView-gtk3 by + running the following commands: +

+
mkdir build &&
+cd    build &&
+
+meson setup --prefix=/usr           \
+            --buildtype=release     \
+            -D enable-printing=true \
+            ..                      &&
+ninja
+

+ This package does not come with a buildable test suite. +

+

+ Now, as the root user: +

+
ninja install
+
+

+ Note +

+

+ This package installs icon files into the /usr/share/icons/hicolor hierarchy and + desktop files into the /usr/share/applications hierarchy. You + can improve system performance and memory usage by updating + /usr/share/icons/hicolor/index.theme and + /usr/share/applications/mimeinfo.cache. + To perform the update you must have GTK-3.24.50 installed (for + the icon cache) and desktop-file-utils-0.28 (for + the desktop cache) and issue the following commands as the + root user: +

+
gtk-update-icon-cache -qtf /usr/share/icons/hicolor &&
+update-desktop-database -q
+
+
+
+

+ Command Explanations +

+

+ -D + enable-printing=true: builds the code to link + to the cups print queue(s). + Omit this if you have not installed cups. +

+
+
+

+ Configuring ePDFView-gtk3 +

+

+ ePDFView-gtk3 has several keyboard hotkeys for optional + features. Most of them are 'off' by default, including the + toolbar, and if it has been closed with the menu disabled, + the program can start with all options not being visible + until the relevant function keys are pressed. +

+
+
    +
  • +

    + [F6] - toggle toolbar +

    +
  • +
  • +

    + [F7] - toggle menu +

    +
  • +
  • +

    + [F8] - toggle invert-colors +

    +
  • +
  • +

    + [F9] - toggle show-index +

    +
  • +
  • +

    + [F11] - toggle fullscreen +

    +
  • +
+
+
+
+

+ Contents +

+
+
+
+ Installed Program: + epdfview +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + /usr/share/epdfview +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ epdfview +

+
+

+ is a Gtk+-3 + program for viewing PDF documents +

+
+
+
+
+
+
+
+

+ fop-2.11 +

+
+
+
+
+
+

+ Introduction to fop +

+

+ The FOP (Formatting Objects + Processor) package contains a print formatter driven by XSL + formatting objects (XSL-FO). It is a Java application that reads a formatting + object tree and renders the resulting pages to a specified + output. Output formats currently supported include PDF, PCL, + PostScript, SVG, XML (area tree representation), print, AWT, + MIF and ASCII text. The primary output target is PDF. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Additional Downloads +

+
+

+ Required Additional Downloads: +

+ +
+
+

+ Recommended packages +

+ +
+

+ fop + Dependencies +

+
+ Required +
+

+ apache-ant-1.10.15 +

+
+ Recommended +
+ +
+ Optional +
+

+ a graphical + environment (to run tests), JAI Image I/O Tools, + and JEuclid +

+
+
+

+ Installation of fop +

+

+ Ensure $JAVA_HOME is set correctly + before beginning the build. To build the JIMI SDK and/or XMLUnit extension classes, ensure the + corresponding .jar files can be + found via the CLASSPATH + environment variable. +

+
+
+
+
+

+ Installing OFFO Hyphenation + Patterns +

+
+
+
+

+ Copy the XML hyphenation patterns into the fop source tree + by running the following commands: +

+
unzip ../offo-hyphenation.zip &&
+cp offo-hyphenation/hyph/* fop/hyph &&
+rm -rf offo-hyphenation
+
+
+
+
+
+

+ Installing a temporary Maven + binary +

+
+
+
+

+ Starting with fop-2.5, the Maven build system is required. + We use the binary provided by apache, that we install in a + temporary location: +

+
tar -xf ../apache-maven-3.9.4-bin.tar.gz -C /tmp
+
+
+
+
+
+

+ Installing fop Components +

+
+
+
+

+ The javadoc + command that ships with OpenJDK 10 and later has become + much stricter than previous versions regarding conformance + of the Javadoc comments in source code to HTML. The FOP + documentation does not meet those standards, so the + conformance checks have to be disabled. This can be done + with the following command: +

+
sed -i '\@</javad@i\
+<arg value="-Xdoclint:none"/>\
+<arg value="--allow-script-in-comments"/>\
+<arg value="--ignore-source-errors"/>' \
+    fop/build.xml
+

+ Compile fop by running the + following commands: +

+
cd fop &&
+
+LC_ALL=en_US.UTF-8                     \
+PATH=$PATH:/tmp/apache-maven-3.9.4/bin \
+ant package javadocs &&
+
+mv build/javadocs .
+

+ This package comes with a test suite, but the java + infrastructure installed in this book does not allow + running it. +

+

+ Now, install Fop as the + root user: +

+
install -v -d -m755 -o root -g root          /opt/fop-2.11 &&
+cp -vR build conf examples fop* javadocs lib /opt/fop-2.11 &&
+chmod a+x /opt/fop-2.11/fop                                &&
+ln -v -sfn fop-2.11 /opt/fop
+

+ Finally, remove the temporary copy of Apache Maven: +

+
rm -rf /tmp/apache-maven-3.9.4
+
+
+
+

+ Command Explanations +

+

+ sed -i ... + build.xml: This adds three switches to the + javadoc + command, preventing some errors from occurring when building + the documentation. +

+

+ export + LC_ALL=en_US.UTF-8: the compiler fails if + using an ASCII locale. +

+

+ ant target: This reads the file + build.xml and builds the + target: compile compiles the java + sources, jar-main generates jar + archives, jar-hyphenation + generates the hyphenation patterns for FOP, junit runs the junit tests, and javadocs builds the documentation. The + all target runs all of the above. +

+

+ ln -v -sf fop-2.11 + /opt/fop: This is optional and creates a + convenience symlink so that $FOP_HOME doesn't have to be changed each time + there's a package version change. +

+
+
+

+ Configuring fop +

+
+
+
+
+

+ Config Files +

+
+
+
+

+ ~/.foprc +

+
+
+
+
+
+

+ Configuration Information +

+
+
+
+

+ Using fop to process some + large FO's (including the FO derived from the BLFS XML + sources), can lead to memory errors. Unless you add a + parameter to the java command used in the + fop script + you may receive messages similar to the one shown below: +

+

+ Exception in thread "main" + java.lang.OutOfMemoryError: Java heap space +

+

+ To avoid errors like this, you need to pass an extra + parameter to the java command used in the + fop script. + This can be accomplished by creating a ~/.foprc (which is sourced by the + fop script) + and adding the parameter to the FOP_OPTS environment variable. +

+

+ The fop + script looks for a FOP_HOME + environment variable to locate the fop class libraries. You can create + this variable using the ~/.foprc file as well. Create a + ~/.foprc file using the + following commands: +

+
cat > ~/.foprc << "EOF"
+FOP_OPTS="-Xmx<RAM_Installed>m"
+FOP_HOME="/opt/fop"
+EOF
+

+ Replace <RAM_Installed> with + a number representing the amount of RAM installed in your + computer (in megabytes). An example would be FOP_OPTS="-Xmx768m". +

+

+ To include the fop script in your path, + update the system-wide profile with the following command + as the root user: +

+
cat > /etc/profile.d/fop.sh << "EOF"
+# Begin /etc/profile.d/fop.sh
+
+pathappend /opt/fop
+
+# End /etc/profile.d/fop.sh
+EOF
+
+

+ Note +

+

+ Running fop + can be somewhat verbose. The default logging level can be + changed from INFO to any of FINEST, FINER, FINE, CONFIG, + INFO, WARNING, SEVERE, ALL, or OFF. To do this, edit + $JAVA_HOME/jre/lib/logging.properties + and change the entries for .level and java.util.logging.ConsoleHandler.level to + the desired value. +

+
+
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + fop +
+
+ Installed Libraries: + fop.jar and numerous support + library classes located in /opt/fop/{build,lib}; JAI components + include libmlib_jai.so, jai_codec.jar, jai_core.jar, and + mlibwrapper_jai.jar +
+
+ Installed Directory: + /opt/fop-2.11 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ fop +

+
+

+ is a wrapper script to the java command + which sets up the fop environment and passes the + required parameters +

+
+

+ fop.jar +

+
+

+ contains all the fop Java classes +

+
+
+
+
+
+
+
+

+ MuPDF-1.26.5 +

+
+
+
+
+
+

+ Introduction to MuPDF +

+

+ MuPDF is a lightweight PDF + and XPS viewer. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ MuPDF Dependencies +

+
+ Required +
+

+ Xorg + Libraries +

+
+ Recommended +
+ +
+ Optional +
+

+ xdg-utils-1.2.1 (runtime), jbig2dec, and + MuJS +

+
+ Required (runtime) +
+

+ a graphical + environment +

+
+
+

+ Installation of MuPDF +

+

+ Install MuPDF by running the + following commands: +

+
cat > user.make << EOF &&
+USE_SYSTEM_FREETYPE := yes
+USE_SYSTEM_HARFBUZZ := yes
+USE_SYSTEM_JBIG2DEC := no
+USE_SYSTEM_JPEGXR := no # not used without HAVE_JPEGXR
+USE_SYSTEM_LCMS2 := no # lcms2mt is strongly preferred
+USE_SYSTEM_LIBJPEG := yes
+USE_SYSTEM_MUJS := no # build needs source anyway
+USE_SYSTEM_OPENJPEG := yes
+USE_SYSTEM_ZLIB := yes
+USE_SYSTEM_GLUT := yes
+USE_SYSTEM_CURL := yes
+USE_SYSTEM_GUMBO := no
+EOF
+
+export XCFLAGS=-fPIC                      &&
+make build=release shared=yes verbose=yes &&
+unset XCFLAGS
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make prefix=/usr                        \
+     shared=yes                         \
+     docdir=/usr/share/doc/mupdf-1.26.5 \
+     install                            &&
+
+ln -sfv libmupdf.so.26.5 /usr/lib/libmupdf.so.26 &&
+ln -sfv libmupdf.so.26   /usr/lib/libmupdf.so    &&
+chmod 755 /usr/lib/libmupdf.so.26.5              &&
+
+ln -sfv mupdf-x11 /usr/bin/mupdf
+
+
+

+ Command Explanations +

+

+ ln -sfv mupdf-x11 + /usr/bin/mupdf : This symbolic link chooses + between mupdf-gl and mupdf-x11 when running + mupdf. +

+
+
+

+ Contents +

+
+
+
+ Installed Program: + mupdf (symlink), mupdf-gl, + mupdf-x11, mupdf-x11-curl, muraster, and mutool +
+
+ Installed Libraries: + libmupdf.so +
+
+ Installed Directories: + /usr/include/mupdf, + /usr/share/doc/mupdf-1.26.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ mupdf +

+
+

+ is a program for viewing PDF, XPS, EPUB, and CBZ + documents, and various image formats such as PNG, + JPEG, GIFF, and TIFF +

+
+

+ mupdf-gl +

+
+

+ same as mupdf, using an + opengl renderer +

+
+

+ mupdf-x11 +

+
+

+ same as mupdf, using an X + Window renderer +

+
+

+ muraster +

+
+

+ is a program used to perform rasterization tasks + with PDF documents +

+
+

+ mutool +

+
+

+ is a program to perform various operations on PDF + files, such as merging and cleaning PDF documents +

+
+

+ libmupdf.so +

+
+

+ contains the mupdf API functions +

+
+
+
+
+
+
+
+

+ paps-0.8.0 +

+
+
+
+
+
+

+ Introduction to paps +

+

+ paps is a text to PostScript + converter that works through Pango. Its input is a UTF-8 encoded text + file and it outputs vectorized PostScript. It may be used for + printing any complex script supported by Pango. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ paps + Dependencies +

+
+ Required +
+

+ fmt-11.2.0 + and Pango-1.56.4 +

+
+ Optional +
+

+ Doxygen-1.14.0 +

+
+
+

+ Installation of paps +

+

+ First fix a problem with glib-2.81.0 or later: +

+
sed -i -r 's/g_utf8_(next|offset)/(char*) &/' src/paps.cc
+

+ Install paps by running the + following commands: +

+
./configure --prefix=/usr    \
+            --disable-Werror \
+            --mandir=/usr/share/man &&
+make
+

+ This package does not come with a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Contents +

+
+
+
+ Installed Program: + paps +
+
+ Installed Library: + None +
+
+ Installed Directory: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ paps +

+
+

+ is a text to PostScript converter that supports + UTF-8 character encoding +

+
+
+
+
+
+
+
+
+

+ Chapter 51. Typesetting +

+
+
+
+
+

+ This chapter includes texlive + applications that create output equivalent to typesetting. +

+

+ There are two alternative routes through this chapter: +

+

+ Some people may wish to use the binary installer, either because + of the complexity of installing all of texlive from source, or because they only + want a part of the package, or perhaps because they wish to get + updates as soon as those are available (the source is only + updated annually, but the binaries and associated tex and sty + files are updated for approximately 10 months). These people + should begin at Setting the PATH for TeX Live + and then follow the install-tl-unx instructions. After + installing, they can run tlmgr to update their system. +

+

+ Most people reading BLFS will wish to build from source. BLFS + used to start by installing install-tl-unx and then use that to + bootstrap the build. Nowadays, we build almost the whole of + texlive without a binary install, by adding + the separately-packaged texmf files into this build. For this, + begin at Setting the PATH for TeX Live + then go to texlive-20250308 which will install + most of texlive, together with + all of the supporting + files. This almost-complete install can then be used to build the + remaining parts of texlive: + asymptote-3.05, biber-2.21, dvisvgm-3.5, and xindy-2.5.1. +

+

+ Because the texmf files (including documentation, fonts, scripts + and supporting files) are all in one tarball, it is not practical + to limit what gets extracted in a sensible way (you could exclude + one or other of the typesetting engines, not its many supporting + files) when building from source in this manner. +

+

+ In either case, BLFS installs into /opt/texlive/2025. +

+

+ Also, please note that texlive is released annually, and updating + from the previous year to the current year is no longer + supported. If for some reason you wish to keep versions for + multiple years, for most things you can mount the old or new + system at /opt/texlive and fix up your PATH as necessary. However + doing that will not preserve any changes in texmf-local and if you build from source and + try to run a newer version of biber with an older version of biblatex it is unlikely to work. +

+
+
+
+

+ Setting the PATH for + TeX Live +

+
+
+
+
+

+ Upstream prefers to install in /usr/local but the BLFS editors regard that + as inconvenient, and think using /opt/texlive is more appropriate. Originally + BLFS used a full binary install to bootstrap the source + install, so the same prefix is used for both. +

+

+ Before starting to build TeX Live, set up your PATH so that the + system can properly find the files. If you set up your login + scripts as recommended in The Bash Shell Startup + Files, update the needed paths by creating the texlive.sh script. The programs are always + installed in an <ARCH>-linux subdirectory and on 32-bit + x86 this is always i386-linux. For x86_64 and i?86 we can + generate this as $TEXARCH: +

+
+

+ Note +

+

+ If upgrading from a previous year's version, you should + manually edit texlive.sh to + ensure that the version for the year you wish to use is the + only TeX present (some people need to keep multiple years + available to ensure there are no regressions in their + documents). +

+
+

+ Now, create the texlive.sh script as the root user: +

+
TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/')
+TEXLIVE_PREFIX=/opt/texlive/2025
+
+cat > /etc/profile.d/texlive.sh << EOF
+# Begin texlive setup
+TEXLIVE_PREFIX=/opt/texlive/2025
+export TEXLIVE_PREFIX
+
+pathappend $TEXLIVE_PREFIX/texmf-dist/doc/info INFOPATH
+pathappend $TEXLIVE_PREFIX/bin/$TEXARCH
+
+TEXMFCNF=$TEXLIVE_PREFIX/texmf-dist/web2c
+export TEXMFCNF
+
+# End texlive setup
+EOF
+
+unset TEXARCH
+

+ The new paths can be immediately activated by running: +

+
source /etc/profile
+

+ You should now proceed either to install-tl-unx for a + binary installation of texlive, or to texlive-20250308 + to begin installing from source. +

+
+
+
+
+

+ install-tl-unx +

+
+
+
+
+
+

+ Introduction to TeX Live and its installer +

+

+ The TeX Live package is a + comprehensive TeX document production system. It includes + TeX, LaTeX2e, LuaLaTeX, Metafont, MetaPost, BibTeX and many + other programs; an extensive collection of macros, fonts and + documentation; and support for typesetting in many different + scripts from around the world. +

+

+ This page is for people who wish to use the binary installer + to provide the programs, the scripts, and a lot of supporting + files and documentation. The installer is updated frequently, + so any published md5sum will soon be out of date. Newer + versions of the installer are expected to work with these + instructions, for so long as they install to a 2025/ directory. +

+

+ There are two reasons why you may wish to install the + binaries in BLFS: either you need a smaller install (e.g. at + a minimum plain TeX without LaTeX, ConTeXt, etc), or you wish + to use tlmgr to + get updates whilst this version is supported (typically, + until March of the year after it was released). For the + latter, you might prefer to install in your /home directory as an unprivileged user, + and to then make corresponding changes to the PATH in your + ~/.bashrc or equivalent. +

+
+

+ Note +

+

+ If you wish to use ConTeXt with luametatex (most of the + old MKII and MKIV code was removed from TeX Live 2023 by + the ConTeXt developer), using the binary is probably the + easiest option. The source no-longer ships with TeX Live + and is poorly adapted to building with systems except those + running Mac and Windows. See comments 1 to 5 of #17823. +

+
+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: Varies frequently +

    +
  • +
  • +

    + Download size: 5.5 MB +

    +
  • +
  • +

    + Estimated disk space required: 90 MB for plain TeX, + typically 323 MB for latex and later engines, 9.0 GB if + everything is included +

    +
  • +
  • +

    + Estimated build time: varies, depending on network + speed and traffic +

    +
  • +
+
+
+ Recommended +
+ +
+ Recommended (at runtime) +
+ + + + + +
+

+ Note +

+

+ As always with contributed binary software, it is possible + that the required dependencies may change when the + installer is updated. In particular, these dependencies + have only been checked on x86_64. +

+
+

+ Python2 + is used by the unmaintained ebong CTAN module (intended for + writing Bengali in Rapid Roman Format). /usr/bin/python is also in the shebang line + for the latex-papersize and lilyglyphs scripts, and + documentation at CTAN says both modules have been updated to + work with python3. In pythontex there are scripts to invoke + python3 or python2 according to the system's version of + python. + Ruby-3.4.5 is used by two scripts, one is + for pTex (Japanese vertical writing) and the other is + match_parens which might be generally useful. The perl module + + Tk, which needs to be run from an X11 session to run the + tests and requires Tk-8.6.16 is used by one of the scripts for + ptex and is needed for texdoctk (a GUI interface for finding + documentation files and opening them with the appropriate + viewer). ps2pdf, from ghostscript-10.05.1, is used by + some utilities and scripts. +

+
+
+

+ Binary Installation of TeX Live +

+

+ The TeX Live set of programs + with its supporting documents, fonts, and utilities is very + large. The upstream maintainers recommend placing all files + in a single directory structure. The BLFS team recommends + /opt/texlive. +

+
+

+ Note +

+

+ If you have chosen to install the binary as a normal user, + the directory for the prefix needs to be writable by that + user. The root user can + chown /opt/texlive/2025 to + that user before the user starts the install. If any later + change in that directory is made by the root user, that will change the ownership, + which breaks usage by normal users. +

+
+

+ As with any other package, unpack the installer and change + into its directory, install-tl-<CCYYMMDD>. This directory + name changes when the installer is updated, so replace + <CCYYMMDD> by the correct directory name. +

+
+

+ Note +

+

+ The distribution binaries installed below may use static + linking for general linux system libraries. Additional + libraries or interpreters as specified in the dependencies + section do not need to be present during the install, but + the programs that need them will not run until their + specific dependencies have been installed. +

+

+ With all contributed binary software, there may be a + mismatch between the builder's toolchain and your hardware. + In most of TeX this will probably not matter, but in + uncommon corner cases you might hit problems. For example, + if your x86_64 processor does not support 3dnowext or + 3dnow, the 2014-06-28 binary failed in conTeXt when running + LuaTeX, although lualatex worked, as did the i686 binaries + on the same machine. In such cases, the easiest solution is + to install texlive from source. Similarly, the x86_64 + binary version of asy runs very slowly when + creating 3-D diagrams. +

+
+

+ Now, as the root user: +

+
TEXLIVE_INSTALL_PREFIX=/opt/texlive ./install-tl
+

+ This command is interactive and allows selection or + modification of platform, packages, directories, and other + options. The time to complete the download will depend on + your internet connection speed and the number of packages + selected. +

+

+ For a minimal install that will build documentation that is + referenced in BLFS, the only installation collections needed + are '[a] Essential programs and files' and '[D] LaTeX + fundamental packages'. This will download about 132 files and + use about 323 MB. Users can select other collections as + needed but a full installation will download several thousand + files and use over 8GB. +

+
+

+ Note +

+

+ After installation, the PATH environment variable will need + to be updated, and other variables will need to be set. + Please refer to Setting the PATH for TeX + Live to set these environment variables. +

+
+
+
+

+ Command Explanations +

+

+ ./install-tl --location + http://mirror.aut.ac.nz/CTAN/systems/texlive/tlnet/: + use a variation of this if you wish to use a different + mirror, for example, because you are in New Zealand but the + installer chooses to use an Australian mirror. The list of + mirrors is at https://ctan.org/mirrors/. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + Over 300 binaries and symlinks to + scripts +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + /opt/texlive +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ TeX programs +

+
+

+ The programs included in TeX are too numerous to + individually list. Please refer to the individual + program HTML and PDF pages in the various html, + man, or pdf files within the subdirectories of + 2025/texmf-dist/. + Using texdoc + pdflatex ( replace pdflatex with the + command name ) may also be useful +

+
+
+
+
+
+
+
+

+ texlive-20250308-source +

+
+
+
+
+
+

+ Introduction to TeX Live from source +

+
+

+ Note +

+

+ According to https://www.tug.org/historic/ + the master site in France only supports ftp and rsync. Now + that ftp is generally deprecated, that page has links to + mirrors, some of which support https, e.g. in Utah and + Chemnitz as well as in China. If you prefer to use a + different mirror from the example links here, you will need + to navigate to systems/historic/texlive/2025 or + systems/texlive/2025 as the case may be. +

+
+

+ Most of TeX Live can be built from source without a + pre-existing installation, but xindy (for indexing) needs working + versions of latex and pdflatex when configure is + run, and the test suite and install for asy (for vector graphics) + will fail if TeX has not already been installed. + Additionally, biber is not + provided within the texlive + source and the version of dvisvgm in the texlive tree cannot be built if shared + system libraries are used. +

+

+ All of those packages are dealt with on their own pages and + can be built after installing this package. If you have not + already done so, you should start at Setting the + PATH for TeX Live so that the final commands to + initialize the new installation will be found. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Required Additional Downloads +

+

+ Much of the texlive environment (including scripts, + documentation, fonts, and various other files) is not part of + the source tarball. You must download it separately. This + will give you all of the additional files which are provided + by a full install of the binary version, as there is no + realistic way to restrict which parts get installed. +

+

+ Because of the size of this package, it is unlikely to be + mirrored by BLFS mirrors. If you are unable to download the + files for this package, go to https://www.ctan.org/mirrors/ + to find a more-accessible mirror. +

+
+ +
+

+ The tlpdb database is shipped as a separate tarball. The + texdoc program + needs a cache file derived from this (and will create the + cache on its first run). +

+
+ +
+

+ TeX + Live from source Dependencies +

+
+ Recommended +
+ + + +
+ Optional +
+

+ The source ships with its own versions of several libraries + which are either not under active development, or only used + for limited functionality. If you install these, as with some + other optional dependencies in this book you will need to + tell configure + to use the system versions. GD, t1lib, ZZIPlib, + TECkit +

+
+ Runtime dependencies +
+

+ Python2 + is used by the unmaintained ebong CTAN module (intended for + writing Bengali in Rapid Roman Format). /usr/bin/python is also in the shebang line + for the latex-papersize and lilyglyphs scripts, and + documentation at CTAN says both modules have been updated to + work with python3. In pythontex there are scripts to invoke + python3 or python2 according to the system's version of + python. + Ruby-3.4.5 is used by two scripts, one is + for pTex (Japanese vertical writing) and the other is + match_parens which might be generally useful. The perl module + + Tk, which needs to be run from an X11 session to run the + tests and requires Tk-8.6.16 is used by one of the scripts for + ptex and is needed for texdoctk (a GUI interface for finding + documentation files and opening them with the appropriate + viewer). ps2pdf, from ghostscript-10.05.1, is used by + some utilities and scripts. +

+
+
+

+ Installation of TeX Live +

+

+ Install TeX Live by running the following commands: +

+
+

+ Caution +

+

+ If you wish to upgrade to current texlive on an older system where extra + packages (asymptote, + dvisvgm, or xindy) have been installed, you will + need to reinstall those as well as fixing up your + PATH for $TEXLIVE_PREFIX. +

+
+
+

+ Note +

+

+ A successful install requires some texlive commands to be + run as the root user, so we will export the TEXARCH + variable to let root use + it. +

+
+

+ Now, as a normal user: +

+
export TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/') &&
+
+patch -Np1 -i ../texlive-20250308-source-upstream_fixes-1.patch &&
+
+mkdir texlive-build &&
+cd    texlive-build &&
+
+../configure CC="gcc -std=gnu17" -C               \
+    --prefix=$TEXLIVE_PREFIX                      \
+    --bindir=$TEXLIVE_PREFIX/bin/$TEXARCH         \
+    --datarootdir=$TEXLIVE_PREFIX                 \
+    --includedir=$TEXLIVE_PREFIX/include          \
+    --infodir=$TEXLIVE_PREFIX/texmf-dist/doc/info \
+    --libdir=$TEXLIVE_PREFIX/lib                  \
+    --mandir=$TEXLIVE_PREFIX/texmf-dist/doc/man   \
+    --disable-native-texlive-build                \
+    --disable-static --enable-shared              \
+    --disable-dvisvgm                             \
+    --with-system-cairo                           \
+    --with-system-fontconfig                      \
+    --with-system-freetype2                       \
+    --with-system-gmp                             \
+    --with-system-graphite2                       \
+    --with-system-harfbuzz                        \
+    --with-system-icu                             \
+    --with-system-libpaper                        \
+    --with-system-libpng                          \
+    --with-system-mpfr                            \
+    --with-system-pixman                          \
+    --with-system-zlib                            \
+    --with-banner-add=" - BLFS" &&
+
+make
+

+ To test the results, issue: make -k check. One test + psutils.test is known to fail + if using system libpaper because TeX Live includes old + versions of both psutils and + libpaper which result in a + difference in the final decimal places of the psresize test. + The libpaper developer does + not think this is significant. Another test, xdvipdfm-pdf.test, is known to fail due to + a missing binary file from the upstream fixes patch. This + does not affect the functionality of the program. +

+

+ Now, as the root user: +

+
make install-strip &&
+make texlinks      &&
+mkdir -pv                                $TEXLIVE_PREFIX/tlpkg/TeXLive/ &&
+install -v -m644 ../texk/tests/TeXLive/* $TEXLIVE_PREFIX/tlpkg/TeXLive/ &&
+tar -xf ../../texlive-20250308-extra.tar.xz -C $TEXLIVE_PREFIX/tlpkg --strip-components=2
+
+

+ Note +

+

+ Only run make + texlinks once. If it is rerun, it can + change all the program symlinks so that they point to + themselves and are useless. +

+
+

+ Now install the additional files as the root user: +

+
tar -xf ../../texlive-20250308-texmf.tar.xz -C $TEXLIVE_PREFIX --strip-components=1
+

+ Still as the root user, + initialize the new system (the command fmtutil-sys --all will + produce a lot of + output): +

+
mktexlsr &&
+fmtutil-sys --all
+

+ To allow Evince-48.1 or dvisvgm-3.5 to link to + libkpathsea.so, as the + root user (re)create a + symlink from /usr/lib: +

+
ln -svf $TEXLIVE_PREFIX/lib/libkpathsea.so{,.6} /usr/lib
+
+

+ Note +

+

+ TeX Live does not include the source for ConTeXt, only the + items that are at CTAN. Trying to build ConTeXt purely from + source on a BLFS TeX Live system is a niche usage and looks + as if it will be more trouble than it is worth. +

+

+ If you wish to use ConTeXt with luametatex (most of the + old MKII and MKIV code was removed from TeX Live 2023 by + the ConTeXt developer), starting with the binary (only + installing ConTeXt, 753 MB in March 2024) would probably be + the easiest way to bootstrap it. The source for + luametatex + can be pulled with git from github + luametatex, compiled with meson and ninja, and + installed by copying to the correct program directory. This + should avoid having to fix all the symlinks etc and also + avoid including the many unrelated parts of texmf-dist. See + comments 1 to 5 of #17823. +

+
+

+ You can now proceed to asymptote-3.05, biber-2.21, dvisvgm-3.5 + and / or xindy-2.5.1 if you wish to install them. +

+
+
+

+ Command Explanations +

+

+ -C: creates + config.cache, which saves significant time in a parallel + build. +

+

+ --prefix=, --bindir=, --datarootdir=, and other + “dir” + switches: these switches ensure that the files installed from + source will overwrite any corresponding files previously + installed by install-tl-unx + so that the alternative methods of installing texlive are consistent. +

+

+ --includedir= + --libdir= : these + switches ensure that the libraries and include files will be + within the directories for this year's texlive. +

+

+ --disable-static: + This switch prevents installation of static versions of the + libraries. +

+

+ --enable-shared: Use + shared versions of libkpathsea, + libptexenc, libsynctex, libtexlua52 and libtexluajit. +

+

+ --with-system-...: + Unless this parameter is used, the included versions of these + libraries will be statically compiled into the programs which + need them. If you decided not to install a recommended + library, omit the corresponding switch. +

+

+ --disable-dvisvgm: As + noted above, the shipped version of dvisvgm, which has + modified configuration files, cannot be built with shared + system libraries. +

+

+ make texlinks : + this runs the texlinks.sh script to create symbolic links + from formats to engines. In practice, several of the targets + such as xetex + are now separate binaries and for these it will report "file + already exists". +

+

+ tar -xf + texlive-20250308-texmf.tar.xz -C $TEXLIVE_PREFIX + --strip-components=1: the tarball contains + the files for the texmf-dist directory, and because of its + size we do not want to waste time and space untarring it and + then copying the files. +

+

+ install -v -m644 + ../texk/tests/TeXLive/* + $TEXLIVE_PREFIX/tlpkg/TeXLive/: This puts the + perl modules TLConfig.pm and + TLUtils.pm into the directory + where the binary installer puts them - it is at the start of + the perl @INC@ PATH within texlive when installed using the + above configure switches. Without these modules, texlive is + unusable. +

+

+ mktexlsr: + Create an ls-R file which lists + what was installed - this is used by kpathsea to find files. +

+

+ fmtutil-sys + --all: This initializes the TeX formats, + Metafont bases and Metapost mems. +

+

+ --without-x: use this if you do + not have Xorg installed. +

+

+ There are many other '--disable' or '--without' options. Some + of them such as --without-texinfo + are accepted but no longer do anything, others will prevent a + program being built - but the far greater amount of space + used for the related items in texmf means there is no obvious + benefit from disabling a few of the programs. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + Over 300 binaries and symlinks to + scripts +
+
+ Installed Libraries: + libkpathsea.so, libptexenc.so, + libsynctex.so, libtexlua53.so, libtexluajit.so +
+
+ Installed Directories: + $TEXLIVE_PREFIX/bin, + $TEXLIVE_PREFIX/include, $TEXLIVE_PREFIX/lib, + $TEXLIVE_PREFIX/texmf-dist +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ TeX programs +

+
+

+ The programs included in TeX are too numerous to + individually list. Please refer to the individual + program HTML and PDF pages in the various html, + man, or pdf files within the subdirectories of + 2025/texmf-dist/. + Using texdoc + pdflatex ( replace pdflatex with the + command name ) may also be useful +

+
+

+ libkpathsea.so +

+
+

+ (kpathsearch) exists to look up a file in a list of + directories and is used by kpsewhich +

+
+

+ libptexenc.so +

+
+

+ is a library for Japanese pTeX (publishing TeX) +

+
+

+ libsynctex.so +

+
+

+ is the SyncTeX (Synchronize TeXnology) parser + library +

+
+

+ libtexlua53.so +

+
+

+ provides Lua 5.3, modified for use with LuaTeX +

+
+

+ libtexluajit.so +

+
+

+ provides LuaJIT, modified for use with LuaJITTeX +

+
+
+
+
+
+
+
+

+ asymptote-3.05 +

+
+
+
+
+
+

+ Introduction to asymptote +

+

+ Asymptote is a powerful + descriptive vector graphics language that provides a natural + coordinate-based framework for technical drawing. Labels and + equations can be typeset with LaTeX. As well as EPS, PDF, and + PNG output, it can produce WebGL 3D HTML rendering and (using + dvisvgm) SVG output. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://downloads.sourceforge.net/asymptote/asymptote-3.05.src.tgz +

    +
  • +
  • +

    + Download MD5 sum: 740eb38f419c870c6532dc1fbad074e1 +

    +
  • +
  • +

    + Download size: 30 MB +

    +
  • +
  • +

    + Estimated disk space required: 339 MB (56 MB installed + after overwriting files in $TEXLIVE_PREFIX/texmf-dist/, + with all the dependencies which are in BLFS) +

    +
  • +
  • +

    + Estimated build time: 0.8 SBU (using parallelism=4) +

    +
  • +
+
+

+ asymptote Dependencies +

+
+ Required +
+

+ ghostscript-10.05.1 and texlive-20250308 +

+
+ Recommended +
+ +
+ Recommended at runtime +
+ +
+ Optional +
+

+ fftw-3.3.10, gsl-2.8, libsigsegv-2.15, + both Boost-1.89.0 and rapidjson + to use + LSP which can be used with + emacs, click, and eigen +

+
+ Optional (at runtime) +
+

+ ImageMagick-7.1.2-1 to convert + output to other formats such as JPEG or to create animated + GIFs, PyQt5 (not tested, has + a build dependency of Qt5) to use xasy +

+

+ Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/asymptote +

+
+
+

+ Installation of asymptote +

+
+

+ Note +

+

+ Certain 3D PDF scripts may not work when invoked from + pdflatex on some zen+ amdgpu APU machines. +

+
+

+ Install asymptote by running + the following commands: +

+
export TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/') &&
+
+./configure --prefix=$TEXLIVE_PREFIX                          \
+            --bindir=$TEXLIVE_PREFIX/bin/$TEXARCH             \
+            --datarootdir=$TEXLIVE_PREFIX/texmf-dist          \
+            --infodir=$TEXLIVE_PREFIX/texmf-dist/doc/info     \
+            --libdir=$TEXLIVE_PREFIX/texmf-dist               \
+            --mandir=$TEXLIVE_PREFIX/texmf-dist/doc/man       \
+            --disable-lsp                                     \
+            --enable-gc=system                                \
+            --with-latex=$TEXLIVE_PREFIX/texmf-dist/tex/latex \
+            --with-context=$TEXLIVE_PREFIX/texmf-dist/tex/context/third &&
+
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --prefix=, --bindir=, --datarootdir=, and other + “dir” + switches: these switches ensure that the files installed from + source will overwrite any corresponding files previously + installed by install-tl-unx + so that the alternative methods of installing texlive are consistent. +

+

+ --libdir=$TEXLIVE_PREFIX/texmf-dist: + This parameter ensures that the asymptote directory will similarly + overwrite any files installed by install-tl-unx. +

+

+ --disable-lsp: The + Language Server Protocol is enabled by default, with several + third-party sources included, but it does not build unless + boost and rapidjson have been installed. +

+

+ --enable-gc=system: + this ensures that the system version of libgc.so will be used instead of the + version shipped with this package. +

+

+ --with-latex= + --with-context=: + These switches ensure that style files and a tex file will be + installed into the texlive + directories instead of creating a texmf-local directory for them. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + asy and xasy +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + $TEXLIVE_PREFIX/texmf-dist/asymptote, + $TEXLIVE_PREFIX/doc/asymptote, and + $TEXLIVE_PREFIX/info/asymptote +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ asy +

+
+

+ is a vector graphics program +

+
+

+ xasy +

+
+

+ is a Python3 script providing a Qt5 GUI for asy +

+
+
+
+
+
+
+
+

+ biber-2.21 +

+
+
+
+
+
+

+ Introduction to biber +

+

+ Biber is a BibTeX replacement for users of biblatex, written + in Perl, with full Unicode + support. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/plk/biber/archive/v2.21/biber-2.21.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: abdbdb2aa0479e490d0d75eb8e35ad50 +

    +
  • +
  • +

    + Download size: 1.6 MB +

    +
  • +
  • +

    + Estimated disk space required: 14 MB (installs 1.2MB of + perl modules) +

    +
  • +
  • +

    + Estimated build time: 0.4 SBU including tests +

    +
  • +
+
+
+

+ Note +

+

+ If you have updated to a new release of texlive-source, + biber and its perl dependencies are still present in + /usr and do not need to be + rebuilt. However, biblatex installs in /opt/texlive/2025 and does need to be + reinstalled. +

+

+ If you installed the above dependencies using the BLFS + instructions for each of them, perl ./Build.PL will + complain that Mozilla::CA is not installed, but that is not + needed unless CPAN was used to install the modules. BLFS + patches LWP::Protocol::https to use the system + certificates, Mozilla::CA uses old certificates. +

+
+

+ Biber Dependencies +

+
+ Required +
+

+ autovivification-0.18, Business-ISBN-3.012, Business-ISMN-1.205, Business-ISSN-1.008, Class-Accessor-0.51, Data-Compare-1.29, Data-Dump-1.25, Data-Uniqid-0.12, DateTime-Calendar-Julian-0.107, + DateTime-Format-Builder-0.83, + Encode-EUCJPASCII-0.03, + Encode-HanExtra-0.23, Encode-JIS2K-0.05, File-Slurper-0.014, IO-String-1.08, IPC-Run3-0.049, + Lingua-Translit-0.29, List-AllUtils-0.19, List-MoreUtils-0.430, Log-Log4perl-1.57, LWP-Protocol-https-6.14, + Module-Build-0.4234, Parse-RecDescent-1.967015, + PerlIO-utf8_strict-0.010, + Regexp-Common-2024080801, + Sort-Key-1.33, Text-BibTeX-0.91, Text-CSV-2.06, Text-Roman-3.5, Unicode-Collate-1.31, Unicode-LineBreak-2019.001, + XML-LibXML-Simple-1.01, + XML-LibXSLT-2.003000, and + XML-Writer-0.900 +

+
+ Recommended (required for the test + suite) +
+ +
+

+ Note +

+

+ It is possible to install all missing dependencies + automatically. You must first install Module-Build-0.4234 using + automatic + installation of perl modules. Then run perl ./Build.PL and when + it prompts you, become the root user and run ./Build installdeps - + this will use CPAN and as noted above it will use + Mozilla::CA instead of using system certificates. +

+
+
+
+

+ Installation of Biber +

+

+ Install Biber by running the + following commands: +

+
perl ./Build.PL &&
+./Build
+

+ To test the results, enter: ./Build test +

+

+ Now, as the root user: +

+
./Build install
+
+
+

+ Contents +

+
+
+
+ Installed Programs: + biber +
+
+ Installed Library: + None +
+
+ Installed Directory: + /usr/lib/perl5/site_perl/5.*{,/<arch>-linux/auto}/Biber +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ biber +

+
+

+ is used for producing bibliographies in LaTeX + documents +

+
+
+
+
+
+
+
+

+ dvisvgm-3.5 +

+
+
+
+
+
+

+ Introduction to dvisvgm +

+

+ The dvisvgm package converts + DVI, EPS and PDF files to SVG format. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+
    +
  • +

    + Download (HTTP): + https://github.com/mgieseki/dvisvgm/releases/download/3.5/dvisvgm-3.5.tar.gz +

    +
  • +
  • +

    + Download MD5 sum: e5d256e866f307d6b63a95390fee2cd7 +

    +
  • +
  • +

    + Download size: 2.8 MB +

    +
  • +
  • +

    + Estimated disk space required: 268 MB (net 7 MB + installed after overwriting files in + $TEXLIVE_PREFIX/texmf-dist/, add 948 MB for the tests) +

    +
  • +
  • +

    + Estimated build time: 0.8 SBU (add 0.5 SBU for the + tests, both using parallelism=4) +

    +
  • +
+
+

+ dvisvgm Dependencies +

+
+ Required +
+

+ Brotli-1.1.0, ghostscript-10.05.1, + Potrace-1.16, and texlive-20250308 +

+
+ Recommended +
+ +
+ Optional +
+

+ asciidoc-10.2.1 with xmlto-0.0.29 and + libxslt-1.1.43, dblatex (with the + above) and xxHash + (the current version is included in the tarball) +

+
+
+

+ Installation of dvisvgm +

+

+ The test suite assumes that a modern version of Python has been installed as plain + python. + Changing this to use python3 requires a sed to + one Makefile.in file. +

+

+ Install dvisvgm by running + the following commands: +

+
TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/') &&
+
+sed -i 's/python/&3/' tests/Makefile.in         &&
+./configure                                     \
+    --bindir=$TEXLIVE_PREFIX/bin/${TEXARCH}     \
+    --mandir=$TEXLIVE_PREFIX/texmf-dist/doc/man \
+    --with-kpathsea=$TEXLIVE_PREFIX             &&
+make
+

+ To test the results, issue: make check. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ --with-kpathsea=$TEXLIVE_PREFIX: + This allows the build system to find the headers for + kpathsea +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + dvisvgm +
+
+ Installed Libraries: + None +
+
+ Installed Directories: + None +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ dvisvgm +

+
+

+ converts DVI, EPS and PDF files to the SVG format +

+
+
+
+
+
+
+
+

+ xindy-2.5.1 +

+
+
+
+
+
+

+ Introduction to xindy +

+

+ Xindy is an index processor + that can be used to generate book-like indexes for arbitrary + document-preparation systems. This includes systems such as + TeX and LaTeX, the roff-family, and SGML/XML-based systems + (e.g., HTML) that process some kind of text and generate + indexing information. +

+

+ This package is known to build and work properly using an LFS + 12.4 platform. +

+

+ Package Information +

+
+ +
+

+ Required Additional Downloads +

+ +

+ Xindy Dependencies +

+
+ Required +
+

+ Clisp-2.49.95 and texlive-20250308 +

+
+
+

+ Installation of xindy +

+

+ Install xindy by running the + following commands: +

+
export TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/') &&
+
+sed -i "s/ grep -v '^;'/ awk NF/" make-rules/inputenc/Makefile.in &&
+
+sed -i 's%\(indexentry\)%\1\\%' make-rules/inputenc/make-inp-rules.pl &&
+
+patch -Np1 -i ../xindy-2.5.1-upstream_fixes-2.patch &&
+
+./configure --prefix=$TEXLIVE_PREFIX              \
+            --bindir=$TEXLIVE_PREFIX/bin/$TEXARCH \
+            --datarootdir=$TEXLIVE_PREFIX         \
+            --includedir=/usr/include             \
+            --libdir=$TEXLIVE_PREFIX/texmf-dist   \
+            --mandir=$TEXLIVE_PREFIX/texmf-dist/doc/man &&
+
+make LC_ALL=POSIX
+

+ This package does not have a test suite. +

+

+ Now, as the root user: +

+
make install
+
+
+

+ Command Explanations +

+

+ sed -i "s/ grep -v '^;'/ awk + NF/" ...: The build sorts files in + latin{1..3} encodings to create latin.xdy, and unicode + versions of these to create utf8.xdy after using grep -v '^;' to remove + blank lines. With grep-2.23 + any data not in the expected encoding is treated as binary, + resulting in a useless file. This command uses an alternative + way of removing blank lines. +

+

+ sed -i 's%\(indexentry\)%\1\\%' + ...: A regexp contains indexentry{ - perl has warned about the + unescaped left brace for some time and now treats it as + illegal. Change it to indexentry\{, doubling the backslash for + sed. +

+

+ patch -Np1 -i + ../xindy-2.5.1-upstream_fixes-2.patch: + Xindy is now maintained at + CTAN. This patch updates the source with some of the changes + made there (but ignoring changes which were only made to + allow for spaces in pathnames and some trivial recent + changes). +

+

+ --prefix=, --bindir=, --datarootdir=, and other + “dir” + switches: these switches ensure that the files installed from + source will overwrite any corresponding files previously + installed by install-tl-unx + so that the alternative methods of installing texlive are consistent. +

+

+ --includedir=/usr/include: This + parameter ensures that the kpathsea headers from texlive-20250308 will be found. +

+

+ make + LC_ALL=POSIX: with the current version of + coreutils it is essential to + build xindy in the POSIX (or + C) locale because in a UTF-8 locale the file latin.xdy will contain only a heading and + then a line 'Binary file (standard + input) matches' instead of the many lines of + lisp merge-rule commands it + ought to contain. +

+
+
+

+ Contents +

+
+
+
+ Installed Programs: + tex2xindy, texindy, xindy +
+
+ Installed Libraries: + None +
+
+ Installed Directory: + $TEXLIVE_PREFIX/texmf-dist/xindy +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ tex2xindy +

+
+

+ transforms a LaTeX index file into a xindy raw + index file +

+
+

+ texindy +

+
+

+ is a wrapper for xindy that turns on many LaTeX + conventions by default +

+
+

+ xindy +

+
+

+ creates a sorted and tagged index from a raw LaTeX + index +

+
+
+
+
+
+
+
+
+
+

+ Appendix A. Creative Commons + License +

+
+
+
+
+

+ Creative Commons Legal Code +

+

+ Attribution-NonCommercial-ShareAlike 2.0 +

+
+

+ Important +

+

+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT + PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT + CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES + THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO + WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS + LIABILITY FOR DAMAGES RESULTING FROM ITS USE. +

+
+

+ License +

+

+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS + CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS + PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE + WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW + IS PROHIBITED. +

+

+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND + AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS + YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE + OF SUCH TERMS AND CONDITIONS. +

+
+
    +
  1. +

    + Definitions +

    +
    +
      +
    1. +

      + "Collective Work" means a work, such as a periodical + issue, anthology or encyclopedia, in which the Work in + its entirety in unmodified form, along with a number of + other contributions, constituting separate and + independent works in themselves, are assembled into a + collective whole. A work that constitutes a Collective + Work will not be considered a Derivative Work (as + defined below) for the purposes of this License. +

      +
    2. +
    3. +

      + "Derivative Work" means a work based upon the Work or + upon the Work and other pre-existing works, such as a + translation, musical arrangement, dramatization, + fictionalization, motion picture version, sound + recording, art reproduction, abridgment, condensation, + or any other form in which the Work may be recast, + transformed, or adapted, except that a work that + constitutes a Collective Work will not be considered a + Derivative Work for the purpose of this License. For + the avoidance of doubt, where the Work is a musical + composition or sound recording, the synchronization of + the Work in timed-relation with a moving image + ("synching") will be considered a Derivative Work for + the purpose of this License. +

      +
    4. +
    5. +

      + "Licensor" means the individual or entity that offers + the Work under the terms of this License. +

      +
    6. +
    7. +

      + "Original Author" means the individual or entity who + created the Work. +

      +
    8. +
    9. +

      + "Work" means the copyrightable work of authorship + offered under the terms of this License. +

      +
    10. +
    11. +

      + "You" means an individual or entity exercising rights + under this License who has not previously violated the + terms of this License with respect to the Work, or who + has received express permission from the Licensor to + exercise rights under this License despite a previous + violation. +

      +
    12. +
    13. +

      + "License Elements" means the following high-level + license attributes as selected by Licensor and + indicated in the title of this License: Attribution, + Noncommercial, ShareAlike. +

      +
    14. +
    +
    +
  2. +
  3. +

    + Fair Use Rights. Nothing in this license is intended to + reduce, limit, or restrict any rights arising from fair use, + first sale or other limitations on the exclusive rights of + the copyright owner under copyright law or other applicable + laws. +

    +
  4. +
  5. +

    + License Grant. Subject to the terms and conditions of this + License, Licensor hereby grants You a worldwide, + royalty-free, non-exclusive, perpetual (for the duration of + the applicable copyright) license to exercise the rights in + the Work as stated below: +

    +
    +
      +
    1. +

      + to reproduce the Work, to incorporate the Work into one + or more Collective Works, and to reproduce the Work as + incorporated in the Collective Works; +

      +
    2. +
    3. +

      + to create and reproduce Derivative Works; +

      +
    4. +
    5. +

      + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission the Work + including as incorporated in Collective Works; +

      +
    6. +
    7. +

      + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission Derivative Works; +

      +
    8. +
    +
    +

    + The above rights may be exercised in all media and formats + whether now known or hereafter devised. The above rights + include the right to make such modifications as are + technically necessary to exercise the rights in other media + and formats. All rights not expressly granted by Licensor are + hereby reserved, including but not limited to the rights set + forth in Sections 4(e) and 4(f). +

    +
  6. +
  7. +

    + Restrictions.The license granted in Section 3 above is + expressly made subject to and limited by the following + restrictions: +

    +
    +
      +
    1. +

      + You may distribute, publicly display, publicly perform, + or publicly digitally perform the Work only under the + terms of this License, and You must include a copy of, + or the Uniform Resource Identifier for, this License + with every copy or phonorecord of the Work You + distribute, publicly display, publicly perform, or + publicly digitally perform. You may not offer or impose + any terms on the Work that alter or restrict the terms + of this License or the recipients' exercise of the + rights granted hereunder. You may not sublicense the + Work. You must keep intact all notices that refer to + this License and to the disclaimer of warranties. You + may not distribute, publicly display, publicly perform, + or publicly digitally perform the Work with any + technological measures that control access or use of + the Work in a manner inconsistent with the terms of + this License Agreement. The above applies to the Work + as incorporated in a Collective Work, but this does not + require the Collective Work apart from the Work itself + to be made subject to the terms of this License. If You + create a Collective Work, upon notice from any Licensor + You must, to the extent practicable, remove from the + Collective Work any reference to such Licensor or the + Original Author, as requested. If You create a + Derivative Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Derivative Work any reference to such Licensor or the + Original Author, as requested. +

      +
    2. +
    3. +

      + You may distribute, publicly display, publicly perform, + or publicly digitally perform a Derivative Work only + under the terms of this License, a later version of + this License with the same License Elements as this + License, or a Creative Commons iCommons license that + contains the same License Elements as this License + (e.g. Attribution-NonCommercial-ShareAlike 2.0 Japan). + You must include a copy of, or the Uniform Resource + Identifier for, this License or other license specified + in the previous sentence with every copy or phonorecord + of each Derivative Work You distribute, publicly + display, publicly perform, or publicly digitally + perform. You may not offer or impose any terms on the + Derivative Works that alter or restrict the terms of + this License or the recipients' exercise of the rights + granted hereunder, and You must keep intact all notices + that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly display, + publicly perform, or publicly digitally perform the + Derivative Work with any technological measures that + control access or use of the Work in a manner + inconsistent with the terms of this License Agreement. + The above applies to the Derivative Work as + incorporated in a Collective Work, but this does not + require the Collective Work apart from the Derivative + Work itself to be made subject to the terms of this + License. +

      +
    4. +
    5. +

      + You may not exercise any of the rights granted to You + in Section 3 above in any manner that is primarily + intended for or directed toward commercial advantage or + private monetary compensation. The exchange of the Work + for other copyrighted works by means of digital + file-sharing or otherwise shall not be considered to be + intended for or directed toward commercial advantage or + private monetary compensation, provided there is no + payment of any monetary compensation in connection with + the exchange of copyrighted works. +

      +
    6. +
    7. +

      + If you distribute, publicly display, publicly perform, + or publicly digitally perform the Work or any + Derivative Works or Collective Works, You must keep + intact all copyright notices for the Work and give the + Original Author credit reasonable to the medium or + means You are utilizing by conveying the name (or + pseudonym if applicable) of the Original Author if + supplied; the title of the Work if supplied; to the + extent reasonably practicable, the Uniform Resource + Identifier, if any, that Licensor specifies to be + associated with the Work, unless such URI does not + refer to the copyright notice or licensing information + for the Work; and in the case of a Derivative Work, a + credit identifying the use of the Work in the + Derivative Work (e.g., "French translation of the Work + by Original Author," or "Screenplay based on original + Work by Original Author"). Such credit may be + implemented in any reasonable manner; provided, + however, that in the case of a Derivative Work or + Collective Work, at a minimum such credit will appear + where any other comparable authorship credit appears + and in a manner at least as prominent as such other + comparable authorship credit. +

      +
    8. +
    9. +

      + For the avoidance of doubt, where the Work is a musical + composition: +

      +
      +
        +
      1. +

        + Performance Royalties Under Blanket Licenses. + Licensor reserves the exclusive right to collect, + whether individually or via a performance rights + society (e.g. ASCAP, BMI, SESAC), royalties for + the public performance or public digital + performance (e.g. webcast) of the Work if that + performance is primarily intended for or directed + toward commercial advantage or private monetary + compensation. +

        +
      2. +
      3. +

        + Mechanical Rights and Statutory Royalties. + Licensor reserves the exclusive right to collect, + whether individually or via a music rights agency + or designated agent (e.g. Harry Fox Agency), + royalties for any phonorecord You create from the + Work ("cover version") and distribute, subject to + the compulsory license created by 17 USC Section + 115 of the US Copyright Act (or the equivalent in + other jurisdictions), if Your distribution of + such cover version is primarily intended for or + directed toward commercial advantage or private + monetary compensation. 6. Webcasting Rights and + Statutory Royalties. For the avoidance of doubt, + where the Work is a sound recording, Licensor + reserves the exclusive right to collect, whether + individually or via a performance-rights society + (e.g. SoundExchange), royalties for the public + digital performance (e.g. webcast) of the Work, + subject to the compulsory license created by 17 + USC Section 114 of the US Copyright Act (or the + equivalent in other jurisdictions), if Your + public digital performance is primarily intended + for or directed toward commercial advantage or + private monetary compensation. +

        +
      4. +
      +
      +
    10. +
    11. +

      + Webcasting Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive right to + collect, whether individually or via a + performance-rights society (e.g. SoundExchange), + royalties for the public digital performance (e.g. + webcast) of the Work, subject to the compulsory license + created by 17 USC Section 114 of the US Copyright Act + (or the equivalent in other jurisdictions), if Your + public digital performance is primarily intended for or + directed toward commercial advantage or private + monetary compensation. +

      +
    12. +
    +
    +
  8. +
  9. +

    + Representations, Warranties and Disclaimer +

    +

    + UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN + WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO + REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE + WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, + WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, + FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE + ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE + OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME + JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED + WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. +

    +
  10. +
  11. +

    + Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY + APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON + ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, + PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR + THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. +

    +
  12. +
  13. +

    + Termination +

    +
    +
      +
    1. +

      + This License and the rights granted hereunder will + terminate automatically upon any breach by You of the + terms of this License. Individuals or entities who have + received Derivative Works or Collective Works from You + under this License, however, will not have their + licenses terminated provided such individuals or + entities remain in full compliance with those licenses. + Sections 1, 2, 5, 6, 7, and 8 will survive any + termination of this License. +

      +
    2. +
    3. +

      + Subject to the above terms and conditions, the license + granted here is perpetual (for the duration of the + applicable copyright in the Work). Notwithstanding the + above, Licensor reserves the right to release the Work + under different license terms or to stop distributing + the Work at any time; provided, however that any such + election will not serve to withdraw this License (or + any other license that has been, or is required to be, + granted under the terms of this License), and this + License will continue in full force and effect unless + terminated as stated above. +

      +
    4. +
    +
    +
  14. +
  15. +

    + Miscellaneous +

    +
    +
      +
    1. +

      + Each time You distribute or publicly digitally perform + the Work or a Collective Work, the Licensor offers to + the recipient a license to the Work on the same terms + and conditions as the license granted to You under this + License. +

      +
    2. +
    3. +

      + Each time You distribute or publicly digitally perform + a Derivative Work, Licensor offers to the recipient a + license to the original Work on the same terms and + conditions as the license granted to You under this + License. +

      +
    4. +
    5. +

      + If any provision of this License is invalid or + unenforceable under applicable law, it shall not affect + the validity or enforceability of the remainder of the + terms of this License, and without further action by + the parties to this agreement, such provision shall be + reformed to the minimum extent necessary to make such + provision valid and enforceable. +

      +
    6. +
    7. +

      + No term or provision of this License shall be deemed + waived and no breach consented to unless such waiver or + consent shall be in writing and signed by the party to + be charged with such waiver or consent. +

      +
    8. +
    9. +

      + This License constitutes the entire agreement between + the parties with respect to the Work licensed here. + There are no understandings, agreements or + representations with respect to the Work not specified + here. Licensor shall not be bound by any additional + provisions that may appear in any communication from + You. This License may not be modified without the + mutual written agreement of the Licensor and You. +

      +
    10. +
    +
    +
  16. +
+
+
+

+ Important +

+

+ Creative Commons is not a party to this License, and makes no + warranty whatsoever in connection with the Work. Creative Commons + will not be liable to You or any party on any legal theory for + any damages whatsoever, including without limitation any general, + special, incidental or consequential damages arising in + connection to this license. Notwithstanding the foregoing two (2) + sentences, if Creative Commons has expressly identified itself as + the Licensor hereunder, it shall have all rights and obligations + of Licensor. +

+

+ Except for the limited purpose of indicating to the public that + the Work is licensed under the CCPL, neither party will use the + trademark "Creative Commons" or any related trademark or logo of + Creative Commons without the prior written consent of Creative + Commons. Any permitted use will be in compliance with Creative + Commons' then-current trademark usage guidelines, as may be + published on its website or otherwise made available upon request + from time to time. +

+

+ Creative Commons may be contacted at http://creativecommons.org/. +

+
+
+
+
+
+

+ Appendix B. The MIT + License +

+
+
+
+
+

+ Copyright © 1999-2025 The BLFS Development Team +

+

+ Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: +

+

+ The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. +

+

+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +

+
+
+
+
+
+

+ Glossary +

+
+
+
+
+

+ Acronyms +

+
+
+ 669 +
+
+

+ UNIS/Composer 669 Module +

+
+
+ ABI +
+
+

+ Application Binary Interface +

+
+
+ ADSL +
+
+

+ Asymmetric Digital Subscriber Line +

+
+
+ AFS +
+
+

+ Andrew File System +

+
+
+ AGESA +
+
+

+ AMD Generic Encapsulated Software Architecture +

+
+
+ AIFF +
+
+

+ Audio Interchange File Format +

+
+
+ ALSA +
+
+

+ Advanced Linux Sound Architecture +

+
+
+ ANSI +
+
+

+ American National Standards Institute +

+
+
+ API +
+
+

+ Application Programming Interface +

+
+
+ APR +
+
+

+ Apache Portable Runtime +

+
+
+ ARP +
+
+

+ Address Resolution Protocol +

+
+
+ ASCII +
+
+

+ American Standard Code for Information Interchange +

+
+
+ ASLR +
+
+

+ Address Space Layout Randomization +

+
+
+ ASN +
+
+

+ Abstract Syntax Notation +

+
+
+ ASF +
+
+

+ Advanced Streaming Format +

+
+
+ ATA +
+
+

+ Advanced Technology Attachment +

+
+
+ ATSC +
+
+

+ Advanced Television Systems Committee +

+
+
+ ATK +
+
+

+ Accessibility ToolKit +

+
+
+ AVI +
+
+

+ Audio Video Interleave +

+
+
+ AWT +
+
+

+ Abstract Window Toolkit +

+
+
+ BER +
+
+

+ Basic Encoding Rules +

+
+
+ BIND +
+
+

+ Berkeley Internet Name Domain +

+
+
+ BIOS +
+
+

+ Basic Input/Output System +

+
+
+ BLFS +
+
+

+ Beyond Linux From Scratch +

+
+
+ BMP +
+
+

+ Bit MaP +

+
+
+ CD +
+
+

+ Compact Disk +

+
+
+ CDDA +
+
+

+ Compact Disc Digital Audio +

+
+
+ CIFS +
+
+

+ Common Internet File System +

+

+ See Also SMB . +

+
+
+ CMS +
+
+

+ Cryptographic Message Syntax +

+
+
+ CODEC +
+
+

+ COmpression/DECompression module +

+
+
+ CORBA +
+
+

+ Common Object Request Broker Architecture +

+
+
+ CPU +
+
+

+ Central Processing Unit +

+
+
+ CRD +
+
+

+ Color Rendering Dictionary +

+
+
+ CSA +
+
+

+ Color Space Array +

+
+
+ CSS (on + DVD) +
+
+

+ Contents Scrambling System +

+
+
+ CSS +
+
+

+ Cascading Style Sheets +

+
+
+ CUPS +
+
+

+ Common Unix Printing System +

+
+
+ CVS +
+
+

+ Concurrent Versions System +

+
+
+ DAO +
+
+

+ Disc At Once +

+
+
+ DARPA +
+
+

+ Directory Address Resolution Protocol Allocation +

+
+
+ DEC +
+
+

+ Digital Equipment Corporation +

+
+
+ DER +
+
+

+ Distinguished Encoding Rules +

+
+
+ DES +
+
+

+ Data Encryption Standard +

+
+
+ DHCP +
+
+

+ Dynamic Host Configuration Protocol +

+
+
+ DICT +
+
+

+ Dictionary Server Protocol (RFC 2229) +

+
+
+ DIN +
+
+

+ German Industrial Norm +

+
+
+ DNS +
+
+

+ Domain Name Service +

+
+
+ DOS +
+
+

+ Disk Operating System +

+
+
+ DRI +
+
+

+ Direct Rendering Infrastructure +

+
+
+ DSC +
+
+

+ Document Structuring Conventions +

+
+
+ DSO +
+
+

+ Dynamic Shared Objects +

+
+
+ DSSSL +
+
+

+ Document Style Semantics and Specification Language +

+
+
+ DV +
+
+

+ Digital Video +

+
+
+ DVD +
+
+

+ Digital Versatile Disk (also Digital Video Disk) +

+
+
+ DVI +
+
+

+ DeVice Independent +

+
+
+ ELF +
+
+

+ Executable and Linking Format +

+
+
+ EPP +
+
+

+ Enhanced Parallel Port +

+
+
+ EPS +
+
+

+ Encapsulated PostScript +

+
+
+ ESD +
+
+

+ Enlighten Sound Daemon +

+
+
+ ESMTP +
+
+

+ Extended Simple Mail Transfer Protocol +

+
+
+ FAM +
+
+

+ File Alteration Monitor +

+
+
+ FAME +
+
+

+ Fast Assembly Mpeg Encoder +

+
+
+ FAQ +
+
+

+ Frequently Asked Questions +

+
+
+ FAX +
+
+

+ Facsimile +

+
+
+ FB +
+
+

+ Frame Buffer +

+
+
+ FHS +
+
+

+ File Hierarchy Standard +

+
+
+ FLAC +
+
+

+ Free Lossless Audio CODEC +

+
+
+ FO +
+
+

+ Formatted Objects +

+
+
+ FTP +
+
+

+ File Transfer Protocol +

+
+
+ GCC +
+
+

+ GNU Compiler Collection +

+
+
+ GDBM +
+
+

+ GNU DataBase Manager +

+
+
+ GDK +
+
+

+ GTK+ Drawing Kit +

+
+
+ GDM +
+
+

+ GNOME Display Manager +

+
+
+ GID +
+
+

+ Group IDentity +

+
+
+ GIF +
+
+

+ Graphics Interchange Format +

+
+
+ GLUT +
+
+

+ OpenGL Utility Toolkit +

+
+
+ GMP +
+
+

+ GNU Multiple Precision + Arithmetic +

+
+
+ GNAT +
+
+

+ GNU NYU Ada 9x Translator +

+
+
+ GNOME +
+
+

+ GNU Network Object Model + Environment +

+
+
+ GNU +
+
+

+ GNU's Not Unix +

+
+
+ GOT +
+
+

+ Global Offset Table +

+
+
+ GPL +
+
+

+ General Public License +

+
+
+ GPM +
+
+

+ General Purpose Mouse +

+
+
+ GSS +
+
+

+ Generic Security Service +

+
+
+ GSSAPI +
+
+

+ Generic Security Service Application Programming Interface +

+
+
+ GTK +
+
+

+ GIMP ToolKit +

+
+
+ GUI +
+
+

+ Graphical User Interface +

+
+
+ HFS +
+
+

+ Hierarchical File System +

+
+
+ HTML +
+
+

+ HyperText Markup Language +

+
+
+ HTTP +
+
+

+ HyperText Transfer Protocol +

+
+
+ HTTPS +
+
+

+ HyperText Transfer Protocol Secured +

+
+
+ HUP +
+
+

+ Hang UP +

+
+
+ IANA +
+
+

+ Internet Assigned Numbers Authority +

+
+
+ ICC +
+
+

+ International Color Consortium +

+
+
+ ICMP +
+
+

+ Internet Control Message Protocol +

+
+
+ IDE +
+
+

+ Integrated Drive Electronics +

+
+
+

+ Integrated Development Environment +

+
+
+ IDL +
+
+

+ Interface Definition Language +

+
+
+ IJS +
+
+

+ Ink Jet Systems +

+
+
+ ILS +
+
+

+ Internet Location Server +

+
+
+ IMAP +
+
+

+ Internet Message Access Protocol +

+
+
+ IMON +
+
+

+ Inode MONitor +

+
+
+ IP +
+
+

+ Internet Protocol +

+

+ See Also TCP . +

+
+
+ IPX +
+
+

+ Internetwork Packet eXchange +

+
+
+ IRC +
+
+

+ Internet Relay Chat +

+
+
+ ISDN +
+
+

+ Integrated Services Digital Network +

+
+
+ ISO +
+
+

+ International Standards Organisation +

+
+
+ ISP +
+
+

+ Internet Service Provider +

+
+
+ IT +
+
+

+ ImpulseTracker Module +

+
+
+ JAI +
+
+

+ Java Advanced Imaging +

+
+
+ JAR +
+
+

+ Java ARchive +

+
+
+ JDK +
+
+

+ Java Development Kit +

+
+
+ JFIF +
+
+

+ JPEG File Interchange + Format +

+
+
+ JPEG +
+
+

+ Joint Photographic Experts Group +

+
+
+ KDC +
+
+

+ Key Distribution Center +

+
+
+ KDE +
+
+

+ KDesktop Environment +

+
+
+ LAME +
+
+

+ Lame Ain't an MP3 Encoder +

+
+
+ LAN +
+
+

+ Local Area Network +

+
+
+ LDAP +
+
+

+ Lightweight Directory Access Protocol +

+
+
+ LDIF +
+
+

+ Lightweight Data Interchange Format +

+
+
+ LFS +
+
+

+ Linux From Scratch +

+
+
+ LGPL +
+
+

+ Library General Public License +

+
+
+ LPR +
+
+

+ Line PRinter +

+
+
+ LZO +
+
+

+ Lempel-Ziv-Oberhumer +

+
+
+ LZW +
+
+

+ Lempel-Ziv-Welch +

+
+
+ MAC +
+
+

+ Media Access Control +

+
+
+ MCOP +
+
+

+ Multimedia COmmunication Protocol +

+
+
+ MCU +
+
+

+ Multipoint Control Unit +

+
+
+ MD +
+
+

+ Message-Digest +

+
+
+ MDA +
+
+

+ Mail Delivery Agent +

+
+
+ MED +
+
+

+ MED/OctaMED Module +

+
+
+ MIDI +
+
+

+ Musical Instrument Digital Interface +

+
+
+ MIF +
+
+

+ Maker Interchange Format +

+
+
+ MII +
+
+

+ Media Independent Interface +

+
+
+ MIME +
+
+

+ Multipurpose Internet Mail Extensions +

+
+
+ MIT +
+
+

+ Massachusetts Institute of Technology +

+
+
+ MNG +
+
+

+ Multiple-image Network Graphics +

+
+
+ MOD +
+
+

+ ProTracker Module +

+
+
+ MP3 +
+
+

+ MPEG-1 audio layer 3 +

+
+
+ MPEG +
+
+

+ Moving Picture Experts Group +

+
+
+ MSL +
+
+

+ Magick Scripting Language +

+
+
+ MTA +
+
+

+ Mail Transport Agent +

+
+
+ MTM +
+
+

+ MultiTracker Module +

+
+
+ MUA +
+
+

+ Mail User Agent +

+
+
+ NASM +
+
+

+ Netwide ASseMbler +

+
+
+ NNTP +
+
+

+ Network News Transfer Protocol +

+
+
+ NFS +
+
+

+ Network File System +

+
+
+ NIS +
+
+

+ Network Information Service +

+
+
+ NPTL +
+
+

+ Native Posix Thread Library +

+
+
+ NSPR +
+
+

+ Netscape Portable Runtime +

+
+
+ NSS +
+
+

+ Network Security Services +

+
+
+ NTP +
+
+

+ Network Time Protocol +

+
+
+ OAF +
+
+

+ Object Activation Framework +

+
+
+ ODBC +
+
+

+ Open DataBase Connectivity +

+
+
+ OMF +
+
+

+ Open Metadata Framework +

+
+
+ ORB +
+
+

+ Object Request Broker +

+

+ See Also CORBA . +

+
+
+ ORDBMS +
+
+

+ Object Relational Database Management System +

+
+
+ OS +
+
+

+ Operating System +

+
+
+ OSF +
+
+

+ Open Software Foundation +

+
+
+ OSS +
+
+

+ Open Sound System +

+
+
+ PAM +
+
+

+ Pluggable authentication Modules +

+
+
+ PBM +
+
+

+ Portable BitMap +

+
+
+ PCI +
+
+

+ Peripheral Component Interconnect +

+
+
+ PCL +
+
+

+ Printer Control Language +

+
+
+ PCM +
+
+

+ Pulse Code Modulation +

+
+
+ PDC +
+
+

+ Primary Domain Controller +

+
+
+ PDF +
+
+

+ Portable Document Format +

+
+
+ PEAR +
+
+

+ PHP Extension and Application Repository +

+
+
+ PGM +
+
+

+ Portable Grey Map +

+
+
+ PGP +
+
+

+ Pretty Good Privacy +

+
+
+ PHP +
+
+

+ PHP Hypertext Preprocessor +

+
+
+ PIE +
+
+

+ Position Independent Executable +

+
+
+ PIM +
+
+

+ Personal Information Manager +

+
+
+ PLIP +
+
+

+ Parallel Line Internet Protocol +

+
+
+ PNG +
+
+

+ Portable Network Graphics +

+
+
+ PO +
+
+

+ Portable Object +

+
+
+ POD +
+
+

+ Plain Old Documentation +

+
+
+ POP +
+
+

+ Post Office Protocol +

+
+
+ PPD +
+
+

+ PostScript Printer Description +

+
+
+ PPM +
+
+

+ Portable Pixel Map +

+
+
+ PPP +
+
+

+ Point-to-Point Protocol +

+
+
+ PPPoE +
+
+

+ Point-to-Point Protocol over Ethernet +

+
+
+ PS +
+
+

+ PostScript +

+
+
+ RADIUS +
+
+

+ Remote Authentication Dial-In User Service +

+
+
+ RAM +
+
+

+ Random Access Memory +

+
+
+ RARP +
+
+

+ Reverse Address Resolution Protocol +

+
+
+ RCS +
+
+

+ Revision Control System +

+
+
+ RFC +
+
+

+ Request For Comments +

+
+
+ RGB +
+
+

+ Red Green Blue +

+
+
+ RGBA +
+
+

+ Red Green Blue Alpha +

+
+
+ ROM +
+
+

+ Read-Only Memory +

+
+
+ RP +
+
+

+ Roaring Penguin +

+
+
+ RPC +
+
+

+ Remote Procedure Call +

+
+
+ RTC +
+
+

+ Real Time Clock +

+
+
+ RTP +
+
+

+ Real Time Protocol +

+
+
+ RW +
+
+

+ Read Write +

+
+
+ S3M +
+
+

+ ScreamTracker Version 3 Module +

+
+
+ S/MIME +
+
+

+ Secure/MIME +

+
+
+ SANE +
+
+

+ Scanner Access Now Easy +

+
+
+ SASL +
+
+

+ Simple Authentication and Security Layer +

+
+
+ SATA +
+
+

+ Serial Advanced Technology Attachment +

+
+
+ SBU +
+
+

+ Standard Build Unit +

+
+
+ SCSI +
+
+

+ Small Computer System Interface +

+
+
+ SDK +
+
+

+ Software Development Kit +

+
+
+ SGML +
+
+

+ Standard Generalized Markup Language +

+
+
+ SMART +
+
+

+ Self Monitoring Analysis and Reporting Technology +

+
+
+ SMB +
+
+

+ Server Message Block +

+
+
+ SMIL +
+
+

+ Synchronized Multimedia Integration Language +

+
+
+ SMTP +
+
+

+ Simple Mail Transfer Protocol +

+
+
+ SQL +
+
+

+ Structured Query Language +

+
+
+ SSH +
+
+

+ Secure SHell +

+
+
+ SSL +
+
+

+ Secure Sockets Layer +

+
+
+ SSP +
+
+

+ Stack Smash Protection +

+
+
+ SUID +
+
+

+ Set User IDentity +

+
+
+ SVG +
+
+

+ Scalable Vector Graphics +

+
+
+ SVGA +
+
+

+ Super Video Graphics Array +

+
+
+ TCL +
+
+

+ Tool Command Language +

+
+
+ TCP +
+
+

+ Transmission Control Protocol +

+
+
+ TGT +
+
+

+ Ticket-Granting Ticket +

+
+
+ TIFF +
+
+

+ Tag(ged) Image File Format +

+
+
+ TLS +
+
+

+ Transport Layer Security +

+
+
+ TTF +
+
+

+ TrueType Font +

+
+
+ TTS +
+
+

+ Text To Speech +

+
+
+ UCS +
+
+

+ Universal Character Set +

+
+
+ UDF +
+
+

+ Universal Disk Format +

+
+
+ UID +
+
+

+ User IDentity +

+
+
+ UDP +
+
+

+ User Datagram Protocol +

+
+
+ UI +
+
+

+ User Interface +

+
+
+ UML +
+
+

+ Unified Modelling Language +

+
+
+ URL +
+
+

+ Uniform Resource Locator +

+
+
+ USB +
+
+

+ Universal Serial Bus +

+
+
+ USR +
+
+

+ Upstream Ready +

+
+
+ UTF +
+
+

+ UCS Transformation Format +

+
+
+ UUCP +
+
+

+ Unix-to-Unix Copy Protocol +

+
+
+ VCD +
+
+

+ Video Compact Disk +

+
+
+ VCS +
+
+

+ Version Control System +

+
+
+ VESA +
+
+

+ Video Electronics Standards Association +

+
+
+ VGA +
+
+

+ Video Graphics Array +

+
+
+ VNC +
+
+

+ Virtual Network Computer +

+
+
+ VOB +
+
+

+ Video OBject +

+
+
+ VOIP +
+
+

+ Voice Over IP +

+
+
+ W3C +
+
+

+ World Wide Web Consortium +

+
+
+ WAV +
+
+

+ Waveform Audio +

+
+
+ WWW +
+
+

+ World Wide Web +

+
+
+ XDMCP +
+
+

+ XDisplay Manager Control Protocol +

+
+
+ XM +
+
+

+ FastTracker Module +

+
+
+ XML +
+
+

+ eXtensible Markup Language +

+
+
+ XSL +
+
+

+ eXtensible Style Language +

+
+
+ XSLT +
+
+

+ eXtensible Style Language Transformation +

+
+
+ XSM +
+
+

+ X/Open System Management +

+
+
+ XMMS +
+
+

+ XMultiMedia System +

+
+
+ YP +
+
+

+ Yellow Pages +

+
+
+ YUV +
+
+

+ Luminance-Bandwidth-Chrominance +

+
+
+
+
+
+
+
+
+

+ Index +

+
+
+
+
+

+ Packages +

+ +

+ Programs +

+ +

+ Libraries +

+ +

+ Kernel + Configuration +

+ +

+ Configuration Files +

+ +

+ Bootscripts +

+ +

+ Others +

+ +
+
+
+ + diff --git a/docs/LFS-BOOK-12.4-NOCHUNKS.html b/docs/LFS-BOOK-12.4-NOCHUNKS.html new file mode 100644 index 0000000..919a094 --- /dev/null +++ b/docs/LFS-BOOK-12.4-NOCHUNKS.html @@ -0,0 +1,59245 @@ + + + + + + Linux From Scratch + + + + + +
+
+
+
+

+ Linux + From Scratch +

+
+
+

+ Version 12.4 +

+
+
+

+ Published September 1st, 2025 +

+
+
+
+
+

+ Created by Gerard + Beekmans +

+
+
+

+ Managing Editor: Bruce + Dubbs +

+
+
+
+
+ +
+
+
+ +

+ Copyright © 1999-2025, Gerard Beekmans +

+

+ All rights reserved. +

+

+ This book is licensed under a Creative Commons + License. +

+

+ Computer instructions may be extracted from the book under + the MIT License. +

+

+ Linux® is a registered + trademark of Linus Torvalds. +

+
+
+
+
+
+
+

+ Table of Contents +

+ +
+
+
+
+

+ Preface +

+
+
+
+
+
+
+
+

+ Foreword +

+
+
+
+
+

+ My journey to learn and better understand Linux began back in + 1998. I had just installed my first Linux distribution and had + quickly become intrigued with the whole concept and philosophy + behind Linux. +

+

+ There are always many ways to accomplish a single task. The same + can be said about Linux distributions. A great many have existed + over the years. Some still exist, some have morphed into + something else, yet others have been relegated to our memories. + They all do things differently to suit the needs of their target + audience. Because so many different ways to accomplish the same + end goal exist, I began to realize I no longer had to be limited + by any one implementation. Prior to discovering Linux, we simply + put up with issues in other Operating Systems as you had no + choice. It was what it was, whether you liked it or not. With + Linux, the concept of choice began to emerge. If you didn't like + something, you were free, even encouraged, to change it. +

+

+ I tried a number of distributions and could not decide on any + one. They were great systems in their own right. It wasn't a + matter of right and wrong anymore. It had become a matter of + personal taste. With all that choice available, it became + apparent that there would not be a single system that would be + perfect for me. So I set out to create my own Linux system that + would fully conform to my personal preferences. +

+

+ To truly make it my own system, I resolved to compile everything + from source code instead of using pre-compiled binary packages. + This “perfect” Linux system would have the + strengths of various systems without their perceived weaknesses. + At first, the idea was rather daunting. I remained committed to + the idea that such a system could be built. +

+

+ After sorting through issues such as circular dependencies and + compile-time errors, I finally built a custom-built Linux system. + It was fully operational and perfectly usable like any of the + other Linux systems out there at the time. But it was my own + creation. It was very satisfying to have put together such a + system myself. The only thing better would have been to create + each piece of software myself. This was the next best thing. +

+

+ As I shared my goals and experiences with other members of the + Linux community, it became apparent that there was a sustained + interest in these ideas. It quickly became plain that such + custom-built Linux systems serve not only to meet user specific + requirements, but also serve as an ideal learning opportunity for + programmers and system administrators to enhance their (existing) + Linux skills. Out of this broadened interest, the Linux From Scratch Project was born. +

+

+ This Linux From Scratch book is the central core around that + project. It provides the background and instructions necessary + for you to design and build your own system. While this book + provides a template that will result in a correctly working + system, you are free to alter the instructions to suit yourself, + which is, in part, an important part of this project. You remain + in control; we just lend a helping hand to get you started on + your own journey. +

+

+ I sincerely hope you will have a great time working on your own + Linux From Scratch system and enjoy the numerous benefits of + having a system that is truly your own. +

+
+

+ --
+ Gerard Beekmans
+ gerard AT linuxfromscratch D0T org +

+
+
+
+
+
+

+ Audience +

+
+
+
+
+

+ There are many reasons why you would want to read this book. One + of the questions many people raise is, “why go through all the hassle of + manually building a Linux system from scratch when you can just + download and install an existing one?” +

+

+ One important reason for this project's existence is to help you + learn how a Linux system works from the inside out. Building an + LFS system helps demonstrate what makes Linux tick, and how + things work together and depend on each other. One of the best + things this learning experience can provide is the ability to + customize a Linux system to suit your own unique needs. +

+

+ Another key benefit of LFS is that it gives you control of the + system without relying on someone else's Linux implementation. + With LFS, you are in the driver's seat. You dictate every aspect of your + system. +

+

+ LFS allows you to create very compact Linux systems. With other + distributions you are often forced to install a great many + programs you neither use nor understand. These programs waste + resources. You may argue that with today's hard drives and CPUs, + wasted resources are no longer a consideration. Sometimes, + however, you are still constrained by the system's size, if + nothing else. Think about bootable CDs, USB sticks, and embedded + systems. Those are areas where LFS can be beneficial. +

+

+ Another advantage of a custom built Linux system is security. By + compiling the entire system from source code, you are empowered + to audit everything and apply all the security patches you want. + You don't have to wait for somebody else to compile binary + packages that fix a security hole. Unless you examine the patch + and implement it yourself, you have no guarantee that the new + binary package was built correctly and adequately fixes the + problem. +

+

+ The goal of Linux From Scratch is to build a complete and usable + foundation-level system. If you do not wish to build your own + Linux system from scratch, you may nevertheless benefit from the + information in this book. +

+

+ There are too many good reasons to build your own LFS system to + list them all here. In the end, education is by far the most + important reason. As you continue your LFS experience, you will + discover the power that information and knowledge can bring. +

+
+
+
+
+

+ LFS + Target Architectures +

+
+
+
+
+

+ The primary target architectures of LFS are the AMD/Intel x86 + (32-bit) and x86_64 (64-bit) CPUs. On the other hand, the + instructions in this book are also known to work, with some + modifications, with the Power PC and ARM CPUs. To build a system + that utilizes one of these alternative CPUs, the main + prerequisite, in addition to those on the next page, is an + existing Linux system such as an earlier LFS installation, + Ubuntu, Red Hat/Fedora, SuSE, or some other distribution that + targets that architecture. (Note that a 32-bit distribution can + be installed and used as a host system on a 64-bit AMD/Intel + computer.) +

+

+ The gain from building on a 64-bit system, as compared to a + 32-bit system, is minimal. For example, in a test build of + LFS-9.1 on a Core i7-4790 CPU based system, using 4 cores, the + following statistics were measured: +

+
Architecture Build Time     Build Size
+32-bit       239.9 minutes  3.6 GB
+64-bit       233.2 minutes  4.4 GB
+

+ As you can see, on the same hardware, the 64-bit build is only 3% + faster (and 22% larger) than the 32-bit build. If you plan to use + LFS as a LAMP server, or a firewall, a 32-bit CPU may be good + enough. On the other hand, several packages in BLFS now need more + than 4 GB of RAM to be built and/or to run; if you plan to use + LFS as a desktop, the LFS authors recommend building a 64-bit + system. +

+

+ The default 64-bit build that results from LFS is a “pure” 64-bit system. + That is, it supports 64-bit executables only. Building a + “multi-lib” + system requires compiling many applications twice, once for a + 32-bit system and once for a 64-bit system. This is not directly + supported in LFS because it would interfere with the educational + objective of providing the minimal instructions needed for a + basic Linux system. Some of the LFS/BLFS editors maintain a + multilib fork of LFS, accessible at https://www.linuxfromscratch.org/~thomas/multilib/index.html. + But that's an advanced topic. +

+
+
+
+
+

+ Prerequisites +

+
+
+
+
+

+ Building an LFS system is not a simple task. It requires a + certain level of existing knowledge of Unix system administration + in order to resolve problems and correctly execute the commands + listed. In particular, as an absolute minimum, you should already + know how to use the command line (shell) to copy or move files + and directories, list directory and file contents, and change the + current directory. It is also expected that you know how to use + and install Linux software. +

+

+ Because the LFS book assumes at + least this basic level of skill, the various LFS + support forums are unlikely to provide you with much assistance + in these areas. You will find that your questions regarding such + basic knowledge will likely go unanswered (or you will simply be + referred to the LFS essential pre-reading list). +

+

+ Before building an LFS system, we urge you to read these + articles: +

+
+
    +
  • +

    + Software-Building-HOWTO https://tldp.org/HOWTO/Software-Building-HOWTO.html +

    +

    + This is a comprehensive guide to building and installing + “generic” Unix software packages under + Linux. Although it was written some time ago, it still + provides a good summary of the basic techniques used to + build and install software. +

    +
  • +
  • +

    + Beginner's Guide to Installing from Source + https://moi.vonos.net/linux/beginners-installing-from-source/ +

    +

    + This guide provides a good summary of the basic skills and + techniques needed to build software from source code. +

    +
  • +
+
+
+
+
+
+

+ LFS and + Standards +

+
+
+
+
+

+ The structure of LFS follows Linux standards as closely as + possible. The primary standards are: +

+
+
    +
  • +

    + POSIX.1-2008. +

    +
  • +
  • +

    + + Filesystem Hierarchy Standard (FHS) Version 3.0 +

    +
  • +
  • +

    + Linux + Standard Base (LSB) Version 5.0 (2015) +

    +

    + The LSB has four separate specifications: Core, Desktop, + Languages, and Imaging. Some parts of Core and Desktop + specifications are architecture specific. There are also + two trial specifications: Gtk3 and Graphics. LFS attempts + to conform to the LSB specifications for the IA32 (32-bit + x86) or AMD64 (x86_64) architectures discussed in the + previous section. +

    +
    +

    + Note +

    +

    + Many people do not agree with these requirements. The + main purpose of the LSB is to ensure that proprietary + software can be installed and run on a compliant system. + Since LFS is source based, the user has complete control + over what packages are desired; you may choose not to + install some packages that are specified by the LSB. +

    +
    +
  • +
+
+

+ While it is possible to create a complete system that will pass + the LSB certification tests “from scratch,” this can't be done without + many additional packages that are beyond the scope of the LFS + book. Installation instructions for some of these additional + packages can be found in BLFS. +

+
+

+ Packages supplied by LFS needed to + satisfy the LSB Requirements +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ LSB + Core: +

+
+

+ Bash, Bc, Binutils, Coreutils, Diffutils, File, + Findutils, Gawk, GCC, Gettext, Glibc, Grep, Gzip, M4, + Man-DB, Procps, Psmisc, Sed, Shadow, SysVinit, Tar, Util-linux, Zlib +

+
+

+ LSB + Desktop: +

+
+

+ None +

+
+

+ LSB + Languages: +

+
+

+ Perl +

+
+

+ LSB + Imaging: +

+
+

+ None +

+
+

+ LSB Gtk3 + and LSB Graphics (Trial Use): +

+
+

+ None +

+
+
+
+

+ Packages supplied by BLFS needed to + satisfy the LSB Requirements +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ LSB + Core: +

+
+

+ At, Batch (a part of At), BLFS Bash Startup Files, + Cpio, Ed, Fcrontab, LSB-Tools, NSPR, NSS, Linux-PAM, + Pax, Sendmail (or Postfix or Exim), Time +

+
+

+ LSB + Desktop: +

+
+

+ Alsa, ATK, Cairo, Desktop-file-utils, Freetype, + Fontconfig, Gdk-pixbuf, Glib2, GLU, Icon-naming-utils, + Libjpeg-turbo, Libxml2, Mesa, Pango, Xdg-utils, Xorg +

+
+

+ LSB + Languages: +

+
+

+ Libxml2, Libxslt +

+
+

+ LSB + Imaging: +

+
+

+ CUPS, Cups-filters, Ghostscript, SANE +

+
+

+ LSB Gtk3 + and LSB Graphics (Trial Use): +

+
+

+ GTK+3 +

+
+
+
+

+ Components not supplied or optionally + supplied by LFS or BLFS needed to satisfy the LSB Requirements +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ LSB + Core: +

+
+

+ install_initd, + libcrypt.so.1 (can be + provided with optional instructions for the LFS + Libxcrypt package), libncurses.so.5 (can be provided with + optional instructions for the LFS Ncurses package), + libncursesw.so.5 (but + libncursesw.so.6 is + provided by the LFS Ncurses package) +

+
+

+ LSB + Desktop: +

+
+

+ libgdk-x11-2.0.so (but + libgdk-3.so is provided + by the BLFS GTK+-3 package), libgtk-x11-2.0.so (but libgtk-3.so and libgtk-4.so are provided by the BLFS + GTK+-3 and GTK-4 packages), libpng12.so (but libpng16.so is provided by the BLFS + Libpng package), libQt*.so.4 (but libQt6*.so.6 are provided by the BLFS + Qt6 package), libtiff.so.4 (but libtiff.so.6 is provided by the BLFS + Libtiff package) +

+
+

+ LSB + Languages: +

+
+

+ /usr/bin/python (LSB + requires Python2 but LFS and BLFS only provide Python3) +

+
+

+ LSB + Imaging: +

+
+

+ None +

+
+

+ LSB Gtk3 + and LSB Graphics (Trial Use): +

+
+

+ libpng15.so (but + libpng16.so is provided + by the BLFS Libpng package) +

+
+
+
+
+
+
+

+ Rationale for Packages in + the Book +

+
+
+
+
+

+ The goal of LFS is to build a complete and usable + foundation-level system—including all the packages needed to + replicate itself—and providing a relatively minimal base from + which to customize a more complete system based on the user's + choices. This does not mean that LFS is the smallest system + possible. Several important packages are included that are not, + strictly speaking, required. The list below documents the reasons + each package in the book has been included. +

+
+
    +
  • +

    + Acl +

    +

    + This package contains utilities to administer Access + Control Lists, which are used to define fine-grained + discretionary access rights for files and directories. +

    +
  • +
  • +

    + Attr +

    +

    + This package contains programs for managing extended + attributes on file system objects. +

    +
  • +
  • +

    + Autoconf +

    +

    + This package supplies programs for producing shell scripts + that can automatically configure source code from a + developer's template. It is often needed to rebuild a + package after the build procedure has been updated. +

    +
  • +
  • +

    + Automake +

    +

    + This package contains programs for generating Make files + from a template. It is often needed to rebuild a package + after the build procedure has been updated. +

    +
  • +
  • +

    + Bash +

    +

    + This package satisfies an LSB core requirement to provide a + Bourne Shell interface to the system. It was chosen over + other shell packages because of its common usage and + extensive capabilities. +

    +
  • +
  • +

    + Bc +

    +

    + This package provides an arbitrary precision numeric + processing language. It satisfies a requirement for + building the Linux kernel. +

    +
  • +
  • +

    + Binutils +

    +

    + This package supplies a linker, an assembler, and other + tools for handling object files. The programs in this + package are needed to compile most of the packages in an + LFS system. +

    +
  • +
  • +

    + Bison +

    +

    + This package contains the GNU version of yacc (Yet Another + Compiler Compiler) needed to build several of the LFS + programs. +

    +
  • +
  • +

    + Bzip2 +

    +

    + This package contains programs for compressing and + decompressing files. It is required to decompress many LFS + packages. +

    +
  • +
  • +

    + Check +

    +

    + This package provides a test harness for other programs. +

    +
  • +
  • +

    + Coreutils +

    +

    + This package contains a number of essential programs for + viewing and manipulating files and directories. These + programs are needed for command line file management, and + are necessary for the installation procedures of every + package in LFS. +

    +
  • +
  • +

    + DejaGNU +

    +

    + This package supplies a framework for testing other + programs. +

    +
  • +
  • +

    + Diffutils +

    +

    + This package contains programs that show the differences + between files or directories. These programs can be used to + create patches, and are also used in many packages' build + procedures. +

    +
  • +
  • +

    + E2fsprogs +

    +

    + This package supplies utilities for handling the ext2, ext3 + and ext4 file systems. These are the most common and + thoroughly tested file systems that Linux supports. +

    +
  • +
  • +

    + Expat +

    +

    + This package yields a relatively small XML parsing library. + It is required by the XML::Parser Perl module. +

    +
  • +
  • +

    + Expect +

    +

    + This package contains a program for carrying out scripted + dialogues with other interactive programs. It is commonly + used for testing other packages. +

    +
  • +
  • +

    + File +

    +

    + This package contains a utility for determining the type of + a given file or files. A few packages need it in their + build scripts. +

    +
  • +
  • +

    + Findutils +

    +

    + This package provides programs to find files in a file + system. It is used in many packages' build scripts. +

    +
  • +
  • +

    + Flex +

    +

    + This package contains a utility for generating programs + that recognize patterns in text. It is the GNU version of + the lex (lexical analyzer) program. It is required to build + several LFS packages. +

    +
  • +
  • +

    + Gawk +

    +

    + This package supplies programs for manipulating text files. + It is the GNU version of awk (Aho-Weinberg-Kernighan). It + is used in many other packages' build scripts. +

    +
  • +
  • +

    + GCC +

    +

    + This is the Gnu Compiler Collection. It contains the C and + C++ compilers as well as several others not built by LFS. +

    +
  • +
  • +

    + GDBM +

    +

    + This package contains the GNU Database Manager library. It + is used by one other LFS package, Man-DB. +

    +
  • +
  • +

    + Gettext +

    +

    + This package provides utilities and libraries for the + internationalization and localization of many packages. +

    +
  • +
  • +

    + Glibc +

    +

    + This package contains the main C library. Linux programs + will not run without it. +

    +
  • +
  • +

    + GMP +

    +

    + This package supplies math libraries that provide useful + functions for arbitrary precision arithmetic. It is needed + to build GCC. +

    +
  • +
  • +

    + Gperf +

    +

    + This package produces a program that generates a perfect + hash function from a set of keys. It is required by + Udev . +

    +
  • +
  • +

    + Grep +

    +

    + This package contains programs for searching through files. + These programs are used by most packages' build scripts. +

    +
  • +
  • +

    + Groff +

    +

    + This package contributes programs for processing and + formatting text. One important function of these programs + is to format man pages. +

    +
  • +
  • +

    + GRUB +

    +

    + This is the Grand Unified Boot Loader. It is the most + flexible of several boot loaders available. +

    +
  • +
  • +

    + Gzip +

    +

    + This package contains programs for compressing and + decompressing files. It is needed to decompress many + packages in LFS. +

    +
  • +
  • +

    + Iana-etc +

    +

    + This package provides data for network services and + protocols. It is needed to enable proper networking + capabilities. +

    +
  • +
  • +

    + Inetutils +

    +

    + This package supplies programs for basic network + administration. +

    +
  • +
  • +

    + Intltool +

    +

    + This package contributes tools for extracting translatable + strings from source files. +

    +
  • +
  • +

    + IProute2 +

    +

    + This package contains programs for basic and advanced IPv4 + and IPv6 networking. It was chosen over the other common + network tools package (net-tools) for its IPv6 + capabilities. +

    +
  • +
  • +

    + Kbd +

    +

    + This package produces key-table files, keyboard utilities + for non-US keyboards, and a number of console fonts. +

    +
  • +
  • +

    + Kmod +

    +

    + This package supplies programs needed to administer Linux + kernel modules. +

    +
  • +
  • +

    + Less +

    +

    + This package contains a very nice text file viewer that + allows scrolling up or down when viewing a file. Many + packages use it for paging the output. +

    +
  • +
  • +

    + Libcap +

    +

    + This package implements the userspace interfaces to the + POSIX 1003.1e capabilities available in Linux kernels. +

    +
  • +
  • +

    + Libelf +

    +

    + The elfutils project provides libraries and tools for ELF + files and DWARF data. Most utilities in this package are + available in other packages, but the library is needed to + build the Linux kernel using the default (and most + efficient) configuration. +

    +
  • +
  • +

    + Libffi +

    +

    + This package implements a portable, high level programming + interface to various calling conventions. Some programs may + not know at the time of compilation what arguments are to + be passed to a function. For instance, an interpreter may + be told at run-time about the number and types of arguments + used to call a given function. Libffi can be used in such + programs to provide a bridge from the interpreter program + to compiled code. +

    +
  • +
  • +

    + Libpipeline +

    +

    + The Libpipeline package supplies a library for manipulating + pipelines of subprocesses in a flexible and convenient way. + It is required by the Man-DB package. +

    +
  • +
  • +

    + Libtool +

    +

    + This package contains the GNU generic library support + script. It wraps the complexity of using shared libraries + into a consistent, portable interface. It is needed by the + test suites in other LFS packages. +

    +
  • +
  • +

    + Libxcrypt +

    +

    + This package provides the libcrypt library needed by various + packages (notably, Shadow) for hashing passwords. It + replaces the obsolete libcrypt implementation in Glibc. +

    +
  • +
  • +

    + Linux Kernel +

    +

    + This package is the Operating System. It is the Linux in + the GNU/Linux environment. +

    +
  • +
  • +

    + M4 +

    +

    + This package provides a general text macro processor useful + as a build tool for other programs. +

    +
  • +
  • +

    + Make +

    +

    + This package contains a program for directing the building + of packages. It is required by almost every package in LFS. +

    +
  • +
  • +

    + Man-DB +

    +

    + This package contains programs for finding and viewing man + pages. It was chosen instead of the man package because of its superior + internationalization capabilities. It supplies the man + program. +

    +
  • +
  • +

    + Man-pages +

    +

    + This package provides the actual contents of the basic + Linux man pages. +

    +
  • +
  • +

    + Meson +

    +

    + This package provides a software tool for automating the + building of software. The main goal of Meson is to minimize + the amount of time that software developers need to spend + configuring a build system. It's required to build Systemd, + as well as many BLFS packages. +

    +
  • +
  • +

    + MPC +

    +

    + This package supplies arithmetic functions for complex + numbers. It is required by GCC. +

    +
  • +
  • +

    + MPFR +

    +

    + This package contains functions for multiple precision + arithmetic. It is required by GCC. +

    +
  • +
  • +

    + Ninja +

    +

    + This package furnishes a small build system with a focus on + speed. It is designed to have its input files generated by + a higher-level build system, and to run builds as fast as + possible. This package is required by Meson. +

    +
  • +
  • +

    + Ncurses +

    +

    + This package contains libraries for terminal-independent + handling of character screens. It is often used to provide + cursor control for a menuing system. It is needed by a + number of the packages in LFS. +

    +
  • +
  • +

    + Openssl +

    +

    + This package provides management tools and libraries + relating to cryptography. These supply cryptographic + functions to other packages, including the Linux kernel. +

    +
  • +
  • +

    + Patch +

    +

    + This package contains a program for modifying or creating + files by applying a patch file typically created by + the diff program. It is + needed by the build procedure for several LFS packages. +

    +
  • +
  • +

    + Perl +

    +

    + This package is an interpreter for the runtime language + PERL. It is needed for the installation and test suites of + several LFS packages. +

    +
  • +
  • +

    + Pkgconf +

    +

    + This package contains a program which helps to configure + compiler and linker flags for development libraries. The + program can be used as a drop-in replacement of + pkg-config, + which is needed by the building system of many packages. + It's maintained more actively and slightly faster than the + original Pkg-config package. +

    +
  • +
  • +

    + Procps-NG +

    +

    + This package contains programs for monitoring processes. + These programs are useful for system administration, and + are also used by the LFS Bootscripts. +

    +
  • +
  • +

    + Psmisc +

    +

    + This package produces programs for displaying information + about running processes. These programs are useful for + system administration. +

    +
  • +
  • +

    + Python 3 +

    +

    + This package provides an interpreted language that has a + design philosophy emphasizing code readability. +

    +
  • +
  • +

    + Readline +

    +

    + This package is a set of libraries that offer command-line + editing and history capabilities. It is used by Bash. +

    +
  • +
  • +

    + Sed +

    +

    + This package allows editing of text without opening it in a + text editor. It is also needed by many LFS packages' + configure scripts. +

    +
  • +
  • +

    + Shadow +

    +

    + This package contains programs for handling passwords + securely. +

    +
  • +
  • +

    + Sysklogd +

    +

    + This package supplies programs for logging system messages, + such as those emitted by the kernel or daemon processes + when unusual events occur. +

    +
  • +
  • +

    + SysVinit +

    +

    + This package provides the init program, the parent of all the + other processes on a running Linux system. +

    +
  • +
  • +

    + Udev +

    +

    + This package is a device manager. It dynamically controls + the ownership, permissions, names, and symbolic links of + device nodes in the /dev directory when devices are added + to or removed from the system. +

    +
  • +
  • +

    + Tar +

    +

    + This package provides archiving and extraction capabilities + of virtually all the packages used in LFS. +

    +
  • +
  • +

    + Tcl +

    +

    + This package contains the Tool Command Language used in + many test suites. +

    +
  • +
  • +

    + Texinfo +

    +

    + This package supplies programs for reading, writing, and + converting info pages. It is used in the installation + procedures of many LFS packages. +

    +
  • +
  • +

    + Util-linux +

    +

    + This package contains miscellaneous utility programs. Among + them are utilities for handling file systems, consoles, + partitions, and messages. +

    +
  • +
  • +

    + Vim +

    +

    + This package provides an editor. It was chosen because of + its compatibility with the classic vi editor and its huge + number of powerful capabilities. An editor is a very + personal choice for many users. Any other editor can be + substituted, if you wish. +

    +
  • +
  • +

    + Wheel +

    +

    + This package supplies a Python module that is the reference + implementation of the Python wheel packaging standard. +

    +
  • +
  • +

    + XML::Parser +

    +

    + This package is a Perl module that interfaces with Expat. +

    +
  • +
  • +

    + XZ Utils +

    +

    + This package contains programs for compressing and + decompressing files. It provides the highest compression + generally available and is useful for decompressing + packages in XZ or LZMA format. +

    +
  • +
  • +

    + Zlib +

    +

    + This package contains compression and decompression + routines used by some programs. +

    +
  • +
  • +

    + Zstd +

    +

    + This package supplies compression and decompression + routines used by some programs. It provides high + compression ratios and a very wide range of compression / + speed trade-offs. +

    +
  • +
+
+
+
+
+
+

+ Typography +

+
+
+
+
+

+ To make things easier to follow, there are a few typographical + conventions used throughout this book. This section contains some + examples of the typographical format found throughout Linux From + Scratch. +

+
./configure --prefix=/usr
+

+ This form of text is designed to be typed exactly as seen unless + otherwise noted in the surrounding text. It is also used in the + explanation sections to identify which of the commands is being + referenced. +

+

+ In some cases, a logical line is extended to two or more physical + lines with a backslash at the end of the line. +

+
CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
+  --prefix=/tools --disable-nls --disable-werror
+

+ Note that the backslash must be followed by an immediate return. + Other whitespace characters like spaces or tab characters will + create incorrect results. +

+
install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'
+

+ This form of text (fixed-width text) shows screen output, usually + as the result of commands issued. If you are reading the book in + the HTML format (instead of PDF), the text should be blue. +

+

+ The fixed-width text is also used to show filenames, such as + /etc/ld.so.conf. +

+
+

+ Note +

+

+ Please configure your browser to display fixed-width text with + a good monospaced font, with which you can distinguish the + glyphs of Il1 or O0 clearly. +

+
+

+ Emphasis +

+

+ This form of text is used for several purposes in the book. Its + main purpose is to emphasize important points or items. +

+

+ https://www.linuxfromscratch.org/ +

+

+ This format is used for hyperlinks both within the LFS community + and to external pages. It includes HOWTOs, download locations, + and websites. +

+
cat > $LFS/etc/group << "EOF"
+root:x:0:
+bin:x:1:
+......
+EOF
+

+ This format is used when creating configuration files. The first + command tells the system to create the file $LFS/etc/group from whatever is typed on the + following lines until the sequence End Of File (EOF) is + encountered. Therefore, this entire section is generally typed as + seen. +

+

+ <REPLACED TEXT> +

+

+ This format is used to encapsulate text that is not to be typed + as seen or for copy-and-paste operations. +

+

+ [OPTIONAL TEXT] +

+

+ This format is used to encapsulate text that is optional. +

+

+ passwd(5) +

+

+ This format is used to refer to a specific manual (man) page. The + number inside parentheses indicates a specific section inside the + manuals. For example, passwd has two man pages. Per + LFS installation instructions, those two man pages will be + located at /usr/share/man/man1/passwd.1 and /usr/share/man/man5/passwd.5. When the book + uses passwd(5) it is + specifically referring to /usr/share/man/man5/passwd.5. man passwd will print the first + man page it finds that matches “passwd,” which will be /usr/share/man/man1/passwd.1. For this example, + you will need to run man 5 + passwd in order to read the page being specified. + Note that most man pages do not have duplicate page names in + different sections. Therefore, man + <program + name> is generally sufficient. In + the LFS book these references to man pages are also hyperlinks, + so clicking on such a reference will open the man page rendered + in HTML from Arch Linux manual pages. +

+
+
+
+
+

+ Structure +

+
+
+
+
+

+ This book is divided into the following parts. +

+
+

+ Part I - Introduction +

+

+ Part I explains a few important notes on how to proceed with + the LFS installation. This section also provides + meta-information about the book. +

+
+
+

+ Part II - Preparing for the Build +

+

+ Part II describes how to prepare for the building + process—making a partition, downloading the packages, and + compiling temporary tools. +

+
+
+

+ Part III - Building the LFS Cross Toolchain and Temporary Tools +

+

+ Part III provides instructions for building the tools needed + for constructing the final LFS system. +

+
+
+

+ Part IV - Building the LFS System +

+

+ Part IV guides the reader through the building of the LFS + system—compiling and installing all the packages one by one, + setting up the boot scripts, and installing the kernel. The + resulting Linux system is the foundation on which other + software can be built to expand the system as desired. At the + end of this book, there is an easy to use reference listing all + of the programs, libraries, and important files that have been + installed. +

+
+
+

+ Part V - Appendices +

+

+ Part V provides information about the book itself including + acronyms and terms, acknowledgments, package dependencies, a + listing of LFS boot scripts, licenses for the distribution of + the book, and a comprehensive index of packages, programs, + libraries, and scripts. +

+
+
+
+
+
+

+ Errata and Security + Advisories +

+
+
+
+
+

+ The software used to create an LFS system is constantly being + updated and enhanced. Security warnings and bug fixes may become + available after the LFS book has been released. To check whether + the package versions or instructions in this release of LFS need + any modifications—to repair security vulnerabilities or to fix + other bugs—please visit https://www.linuxfromscratch.org/lfs/errata/12.4/ + before proceeding with your build. You should note any changes + shown and apply them to the relevant sections of the book as you + build the LFS system. +

+

+ In addition, the Linux From Scratch editors maintain a list of + security vulnerabilities discovered after a book has been released. To + read the list, please visit https://www.linuxfromscratch.org/lfs/advisories/ + before proceeding with your build. You should apply the changes + suggested by the advisories to the relevant sections of the book + as you build the LFS system. And, if you will use the LFS system + as a real desktop or server system, you should continue to + consult the advisories and fix any security vulnerabilities, even + when the LFS system has been completely constructed. +

+
+
+
+
+
+

+ Part I. Introduction +

+
+
+
+
+
+
+
+

+ Chapter 1. Introduction +

+
+
+
+
+
+
+
+

+ 1.1. How + to Build an LFS System +

+
+
+
+
+

+ The LFS system will be built by using an already installed + Linux distribution (such as Debian, OpenMandriva, Fedora, or + openSUSE). This existing Linux system (the host) will be used + as a starting point to provide necessary programs, including a + compiler, linker, and shell, to build the new system. Select + the “development” option during the + distribution installation to include these tools. +

+
+

+ Note +

+

+ There are many ways to install a Linux distribution and the + defaults are usually not optimal for building an LFS system. + For suggestions on setting up a commercial distribution see: + + https://www.linuxfromscratch.org/hints/downloads/files/partitioning-for-lfs.txt. +

+
+

+ As an alternative to installing a separate distribution on your + machine, you may wish to use a LiveCD from a commercial + distribution. +

+

+ Chapter 2 + of this book describes how to create a new Linux native + partition and file system, where the new LFS system will be + compiled and installed. Chapter 3 + explains which packages and patches must be downloaded to build + an LFS system, and how to store them on the new file system. + Chapter 4 + discusses the setup of an appropriate working environment. + Please read Chapter 4 + carefully as it explains several important issues you should be + aware of before you begin to work your way through Chapter 5 + and beyond. +

+

+ Chapter 5 + explains the installation of the initial tool chain, (binutils, + gcc, and glibc) using cross-compilation techniques to isolate + the new tools from the host system. +

+

+ Chapter 6 + shows you how to cross-compile basic utilities using the just + built cross-toolchain. +

+

+ + Chapter 7 then enters a "chroot" environment, where we + use the new tools to build all the rest of the tools needed to + create the LFS system. +

+

+ This effort to isolate the new system from the host + distribution may seem excessive. A full technical explanation + as to why this is done is provided in Toolchain Technical Notes. +

+

+ In Chapter 8 + the full-blown LFS system is built. Another advantage provided + by the chroot environment is that it allows you to continue + using the host system while LFS is being built. While waiting + for package compilations to complete, you can continue using + your computer as usual. +

+

+ To finish the installation, the basic system configuration is + set up in Chapter 9, + and the kernel and boot loader are created in Chapter 10. + Chapter 11 contains + information on continuing the LFS experience beyond this book. + After the steps in this chapter have been implemented, the + computer is ready to boot into the new LFS system. +

+

+ This is the process in a nutshell. Detailed information on each + step is presented in the following chapters. Items that seem + complicated now will be clarified, and everything will fall + into place as you commence your LFS adventure. +

+
+
+
+
+

+ 1.2. What's new since the last + release +

+
+
+
+
+

+ Here is a list of the packages updated since the previous + release of LFS. +

+
+

+ Upgraded to: +

+
    +
  • +

    + Automake-1.18.1 +

    +
  • +
  • +

    + Bash-5.3 +

    +
  • +
  • +

    + Binutils-2.45 +

    +
  • +
  • +

    + Coreutils-9.7 +

    +
  • +
  • +

    + Diffutils-3.12 +

    +
  • +
  • +

    + E2fsprogs-1.47.3 +

    +
  • +
  • +

    + Expat-2.7.1 +

    +
  • +
  • +

    + Flit-Core-3.12.0 +

    +
  • +
  • +

    + Gawk-5.3.2 +

    +
  • +
  • +

    + GCC-15.2.0 +

    +
  • +
  • +

    + GDBM-1.26 +

    +
  • +
  • +

    + Gettext-0.26 +

    +
  • +
  • +

    + Glibc-2.42 +

    +
  • +
  • +

    + Gperf-3.3 +

    +
  • +
  • +

    + Grep-3.12 +

    +
  • +
  • +

    + Gzip-1.14 +

    +
  • +
  • +

    + Iana-Etc-20250807 +

    +
  • +
  • +

    + IPRoute2-6.16.0 +

    +
  • +
  • +

    + Jinja2-3.1.6 +

    +
  • +
  • +

    + Kbd-2.8.0 +

    +
  • +
  • +

    + Kmod-34.2 +

    +
  • +
  • +

    + Less-679 +

    +
  • +
  • +

    + LFS-Bootscripts-20250827 +

    +
  • +
  • +

    + Libcap-2.76 +

    +
  • +
  • +

    + Libelf from Elfutils-0.193 +

    +
  • +
  • +

    + Libffi-3.5.2 +

    +
  • +
  • +

    + Linux-6.16.1 +

    +
  • +
  • +

    + M4-1.4.20 +

    +
  • +
  • +

    + Man-DB-2.13.1 +

    +
  • +
  • +

    + Man-pages-6.15 +

    +
  • +
  • +

    + Meson-1.8.3 +

    +
  • +
  • +

    + MPFR-4.2.2 +

    +
  • +
  • +

    + Ncurses-6.5-20250809 +

    +
  • +
  • +

    + Ninja-1.13.1 +

    +
  • +
  • +

    + OpenSSL-3.5.2 +

    +
  • +
  • +

    + Patch-2.8 +

    +
  • +
  • +

    + Perl-5.42.0 +

    +
  • +
  • +

    + Pkgconf-2.5.1 +

    +
  • +
  • +

    + Python-3.13.7 +

    +
  • +
  • +

    + Readline-8.3 +

    +
  • +
  • +

    + Setuptools-80.9.0 +

    +
  • +
  • +

    + Shadow-4.18.0 +

    +
  • +
  • +

    + Sysklogd-2.7.2 +

    +
  • +
  • +

    + Systemd-257.8 +

    +
  • +
  • +

    + Tzdata-2025b +

    +
  • +
  • +

    + Util-linux-2.41.1 +

    +
  • +
  • +

    + Vim-9.1.1629 +

    +
  • +
  • +

    + Wheel-0.46.1 +

    +
  • +
  • +

    + Xz-5.8.1 +

    +
  • +
+
+
+

+ Added: +

+
    +
  • +

    + Packaging-25.0 +

    +
  • +
  • +

    + coreutils-9.7-upstream_fix-1.patch +

    +
  • +
+
+
+

+ Removed: +

+
    +
  • +

    + Check-0.15.2 +

    +
  • +
+
+
+
+
+
+

+ 1.3. Changelog +

+
+
+
+
+

+ This is version 12.4 of the Linux From Scratch book, dated + September 1st, 2025. If this book is more than six months old, + a newer and better version is probably already available. To + find out, please check one of the mirrors via https://www.linuxfromscratch.org/mirrors.html. +

+

+ Below is a list of changes made since the previous release of + the book. +

+
+

+ Changelog Entries: +

+
    +
  • +

    + 2025-09-01 +

    +
    +
      +
    • +

      + [bdubbs] - LFS-12.4 released. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-08-27 +

    +
    +
      +
    • +

      + [bdubbs] - Update network boot script corner case. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-08-15 +

    +
    +
      +
    • +

      + [bdubbs] - Add a modification to glibc from + upstream to solve an incompatibility with valgrind. + Fixes + #5778. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20250807. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.1.1829. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to ncurses-6.5-20250809. Fixes + + #5780. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.13.7 (Security + Update). Fixes + #5779. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.16.1. Fixes + #5758. +

      +
    • +
    • +

      + [bdubbs] - Update to iproute2-6.16.0. Fixes + + #5773. +

      +
    • +
    • +

      + [bdubbs] - Update to systemd-257.8. Fixes + #5751. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-08-08 +

    +
    +
      +
    • +

      + [bdubbs] - Update to Python-3.13.6 (Security + Update). Fixes + #5776. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.5.2. Fixes + #5775. +

      +
    • +
    • +

      + [bdubbs] - Update to libffi-3.5.2. Fixes + #5772. +

      +
    • +
    • +

      + [bdubbs] - Update to gcc-15.2.0. Fixes + #5777. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-08-05 +

    +
    +
      +
    • +

      + [renodr] - Fixed CVE-2025-8194 in Python. Fixes + + #5774. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-08-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to meson-1.8.3. Fixes + #5771. +

      +
    • +
    • +

      + [bdubbs] - Update to gdbm-1.26. Fixes + #5770. +

      +
    • +
    • +

      + [bdubbs] - Update to binutils-2.45. Fixes + #5766. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.26. Fixes + #5762. +

      +
    • +
    • +

      + [bdubbs] - Update to glibc-2.42. Fixes + #5765. +

      +
    • +
    • +

      + [bdubbs] - Update to man-pages-6.15. Fixes + + #5763. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-07-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1552 (Security + update). Fixes + #5760. +

      +
    • +
    • +

      + [bdubbs] - Update to readline-8.3. Fixes + #5755. +

      +
    • +
    • +

      + [bdubbs] - Update to perl-5.42.0. Fixes + #5756. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.5.1. Fixes + #5723. +

      +
    • +
    • +

      + [bdubbs] - Update to ninja-1.13.1. Fixes + #5759. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.15.6. Fixes + #5757. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.25.1. Fixes + + #5753. +

      +
    • +
    • +

      + [bdubbs] - Update to e2fsprogs-1.47.3. Fixes + + #5758. +

      +
    • +
    • +

      + [bdubbs] - Update to bash-5.3. Fixes + #5754. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-07-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to iana-etc-20250618. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.1.1497. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to util-linux-2.41.1. Fixes + + #5749. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.18.0. Fixes + #5750. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.5.1. Fixes + #5746. +

      +
    • +
    • +

      + [bdubbs] - Update to ninja-1.13.0. Fixes + #5745. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.15.4. Fixes + #5748. +

      +
    • +
    • +

      + [bdubbs] - Update to less-679. Fixes + #5747. +

      +
    • +
    • +

      + [bdubbs] - Update to automake-1.18.1. Fixes + + #5752. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-06-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to meson-1.8.2. Fixes + #5742. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.15.2. Fixes + #5725. +

      +
    • +
    • +

      + [bdubbs] - Update to libffi-3.5.1. Fixes + #5741. +

      +
    • +
    • +

      + [bdubbs] - Update to iproute2-6.15.0. Fixes + + #5732. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.13.5. Fixes + #5743. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-06-04 +

    +
    +
      +
    • +

      + [bdubbs] - Update to ncurses-6.5-20250531. Fixes + + #5737. +

      +
    • +
    • +

      + [bdubbs] - Update to readline-8.3-rc2. Fixes + + #5738. +

      +
    • +
    • +

      + [bdubbs] - Update to bash-5.3-rc2. Fixes + #5738. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.13.4. Fixes + #6739. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-06-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to iana-etc-20250519. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.1.1418. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.8.0. Fixes + #5736. +

      +
    • +
    • +

      + [bdubbs] - Update to systemd-257.6. Fixes + #5674. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-80.9.0. Fixes + + #5728. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.8.1. Fixes + #5731. +

      +
    • +
    • +

      + [bdubbs] - Update to automake-1.18. Fixes + #5734. +

      +
    • +
    • +

      + [bdubbs] - Update build instructions to accommodate + gcc-15 for bc, expect, ncurses, and gmp. +

      +
    • +
    • +

      + [bdubbs] - Update to gcc-15.1.0. Fixes + #5707. +

      +
    • +
    • +

      + [bdubbs] - Update to less-678. Fixes + #5724. +

      +
    • +
    • +

      + [bdubbs] - Update to readline-8.3-rc1. Fixes + + #5726. +

      +
    • +
    • +

      + [bdubbs] - Update to bash-5.3-rc1. Fixes + #5714. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-05-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to setuptools-80.7.1. Fixes + + #5715. +

      +
    • +
    • +

      + [bdubbs] - Update to man-pages-6.14. Fixes + + #5720. +

      +
    • +
    • +

      + [bdubbs] - Update to man-db-2.13.1. Fixes + #5719. +

      +
    • +
    • +

      + [bdubbs] - Update to m4-1.4.20. Fixes + #5722. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.14.6. Fixes + #5717. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.25. Fixes + #5718. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-05-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1353. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-80.0.1. Fixes + + #5710. +

      +
    • +
    • +

      + [bdubbs] - Update to packaging-25.0. Fixes + + #5706. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.8.0. Fixes + #5713. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.14.4. Fixes + #5709. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20250407. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to gperf-3.3. Fixes + #5708. +

      +
    • +
    • +

      + [bdubbs] - Update to elfutils-0.193. Fixes + + #5711. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-04-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libcap-2.76. Fixes + #5704. +

      +
    • +
    • +

      + [bdubbs] - Update to perl-5.40.2 (Security update). + Fixes + #5703. +

      +
    • +
    • +

      + [bdubbs] - Add packaging-24.2 (Python module). + Needed for wheel. +

      +
    • +
    • +

      + [bdubbs] - Update to xz-5.8.1. Fixes + #5694. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.46.1 (Python Module). + Fixes + #5693. +

      +
    • +
    • +

      + [bdubbs] - Update to sysklogd-2.7.2. Fixes + + #5690. +

      +
    • +
    • +

      + [bdubbs] - Update to Python3-3.13.3. Fixes + + #5697. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.5.0. Fixes + #5701. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.7.2. Fixes + #5691. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.14.2. Fixes + #5680. +

      +
    • +
    • +

      + [bdubbs] - Update to libffi-3.4.8. Fixes + #5700. +

      +
    • +
    • +

      + [bdubbs] - Update to iproute2-6.14.0. Fixes + + #5682. +

      +
    • +
    • +

      + [bdubbs] - Update to gzip-1.14. Fixes + #5699. +

      +
    • +
    • +

      + [bdubbs] - Update to grep-3.12. Fixes + #5702. +

      +
    • +
    • +

      + [bdubbs] - Update to gperf-3.2.1. Fixes + #5695. +

      +
    • +
    • +

      + [bdubbs] - Update to gawk-5.3.2. Fixes + #5692. +

      +
    • +
    • +

      + [bdubbs] - Update to diffutils-3.12. Fixes + + #5696. +

      +
    • +
    • +

      + [bdubbs] - Update to coreutils-9.7. Fixes + #5698. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-04-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1263. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20250328. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to xz-5.8.0. Fixes + #5684. +

      +
    • +
    • +

      + [bdubbs] - Update to util-linux-2.41. Fixes + + #5648. +

      +
    • +
    • +

      + [bdubbs] - Update to tzdata-2025b. Fixes + #5681. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.17.4. Fixes + #5678. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-78.1.0. Fixes + + #5676. +

      +
    • +
    • +

      + [bdubbs] - Update to patch-2.8. Fixes + #5689. +

      +
    • +
    • +

      + [bdubbs] - Update to mpfr-4.2.2. Fixes + #5677. +

      +
    • +
    • +

      + [bdubbs] - Update to kmod-34.2. Fixes + #5688. +

      +
    • +
    • +

      + [bdubbs] - Update to gdbm-1.25. Fixes + #5679. +

      +
    • +
    • +

      + [bdubbs] - Update to flit_core-3.12.0. Fixes + + #5683. +

      +
    • +
    • +

      + [bdubbs] - Update to expat-2.7.1. Fixes + #5685. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-03-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.1.1202. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20250304. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to sysklogd-2.7.1. Fixes + + #5668. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-76.0.0. Fixes + + #5665. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.4.3. Fixes + #5672. +

      +
    • +
    • +

      + [bdubbs] - Update to man-pages-6.13. Fixes + + #5673. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.13.7. Fixes + #5664. +

      +
    • +
    • +

      + [bdubbs] - Update to libcap-2.75. Fixes + #5667. +

      +
    • +
    • +

      + [bdubbs] - Update to kmod-34.1. Fixes + #5671. +

      +
    • +
    • +

      + [bdubbs] - Update to jinja2-3.1.6. Fixes + #5670. +

      +
    • +
    • +

      + [bdubbs] - Update to expat-2.7.0. Fixes + #5675. +

      +
    • +
    +
    +
  • +
  • +

    + 2025-03-05 +

    +
    +
      +
    • +

      + [bdubbs] - LFS-12.3 released. +

      +
    • +
    +
    +
  • +
+
+
+
+
+
+

+ 1.4. Resources +

+
+
+
+
+
+

+ 1.4.1. FAQ +

+

+ If during the building of the LFS system you encounter any + errors, have any questions, or think there is a typo in the + book, please start by consulting the list of Frequently Asked + Questions (FAQ), located at https://www.linuxfromscratch.org/faq/. +

+
+
+

+ 1.4.2. Mailing Lists +

+

+ The linuxfromscratch.org + server hosts a number of mailing lists used for the + development of the LFS project. These lists include the main + development and support lists, among others. If you cannot + find an answer to your problem on the FAQ page, the next step + would be to search the mailing lists at https://www.linuxfromscratch.org/search.html. +

+

+ For information on the different lists, how to subscribe, + archive locations, and additional information, visit + https://www.linuxfromscratch.org/mail.html. +

+
+
+

+ 1.4.3. IRC +

+

+ Several members of the LFS community offer assistance via + Internet Relay Chat (IRC). Before using this support, please + make sure your question is not already answered in the LFS + FAQ or the mailing list archives. You can find the IRC + network at irc.libera.chat. + The support channel is named #lfs-support. +

+
+
+

+ 1.4.4. + Mirror Sites +

+

+ The LFS project has a number of world-wide mirrors to make + accessing the website and downloading the required packages + more convenient. Please visit the LFS website at https://www.linuxfromscratch.org/mirrors.html + for a list of current mirrors. +

+
+
+

+ 1.4.5. Contact Information +

+

+ Please direct all your questions and comments to one of the + LFS mailing lists (see above). +

+
+
+
+
+
+

+ 1.5. Help +

+
+
+
+
+
+

+ Note +

+

+ In case you've hit an issue building one package with the LFS + instruction, we strongly discourage posting the issue + directly onto the upstream support channel before discussing + via a LFS support channel listed in Section 1.4, “Resources.” + Doing so is often quite inefficient because the upstream + maintainers are rarely familiar with LFS building procedure. + Even if you've really hit an upstream issue, the LFS + community can still help to isolate the information wanted by + the upstream maintainers and make a proper report. +

+

+ If you must ask a question directly via an upstream support + channel, you shall at least note that many upstream projects + have the support channels separated from the bug tracker. The + “bug” + reports for asking questions are considered invalid and may + annoy upstream developers for these projects. +

+
+

+ If an issue or a question is encountered while working through + this book, please check the FAQ page at https://www.linuxfromscratch.org/faq/#generalfaq. + Questions are often already answered there. If your question is + not answered on that page, try to find the source of the + problem. The following hint will give you some guidance for + troubleshooting: + https://www.linuxfromscratch.org/hints/downloads/files/errors.txt. +

+

+ If you cannot find your problem listed in the FAQ, search the + mailing lists at https://www.linuxfromscratch.org/search.html. +

+

+ We also have a wonderful LFS community that is willing to offer + assistance through the mailing lists and IRC (see the Section 1.4, “Resources” section + of this book). However, we get several support questions every + day, and many of them could have been easily answered by going + to the FAQ or by searching the mailing lists first. So, for us + to offer the best assistance possible, you should first do some + research on your own. That allows us to focus on the more + unusual support needs. If your searches do not produce a + solution, please include all the relevant information + (mentioned below) in your request for help. +

+
+

+ 1.5.1. Things to Mention +

+

+ Apart from a brief explanation of the problem being + experienced, any request for help should include these + essential things: +

+
+
    +
  • +

    + The version of the book being used (in this case 12.4) +

    +
  • +
  • +

    + The host distribution and version being used to create + LFS +

    +
  • +
  • +

    + The output from the Host System Requirements script +

    +
  • +
  • +

    + The package or section the problem was encountered in +

    +
  • +
  • +

    + The exact error message, or a clear description of the + problem +

    +
  • +
  • +

    + Note whether you have deviated from the book at all +

    +
  • +
+
+
+

+ Note +

+

+ Deviating from this book does not mean that we will not help + you. After all, LFS is about personal preference. Being + up-front about any changes to the established procedure + helps us evaluate and determine possible causes of your + problem. +

+
+
+
+

+ 1.5.2. Configure Script Problems +

+

+ If something goes wrong while running the configure script, review + the config.log file. This file + may contain errors encountered during configure which were not + printed to the screen. Include the relevant lines if you need to ask + for help. +

+
+
+

+ 1.5.3. Compilation Problems +

+

+ Both the screen output and the contents of various files are + useful in determining the cause of compilation problems. The + screen output from the configure script and the + make run can be + helpful. It is not necessary to include the entire output, + but do include all of the relevant information. Here is an + example of the type of information to include from the + make screen + output. +

+
gcc -D ALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
+-D LOCALEDIR=\"/mnt/lfs/usr/share/locale\"
+-D LIBDIR=\"/mnt/lfs/usr/lib\"
+-D INCLUDEDIR=\"/mnt/lfs/usr/include\" -D HAVE_CONFIG_H -I. -I.
+-g -O2 -c getopt1.c
+gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
+expand.o file.o function.o getopt.o implicit.o job.o main.o
+misc.o read.o remake.o rule.o signame.o variable.o vpath.o
+default.o remote-stub.o version.o opt1.o
+-lutil job.o: In function `load_too_high':
+/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
+to `getloadavg'
+collect2: ld returned 1 exit status
+make[2]: *** [make] Error 1
+make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
+make[1]: *** [all-recursive] Error 1
+make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
+make: *** [all-recursive-am] Error 2
+

+ In this case, many people would just include the bottom + section: +

+
make [2]: *** [make] Error 1
+

+ This is not enough information to diagnose the problem, + because it only notes that something went wrong, not + what went wrong. The + entire section, as in the example above, is what should be + saved because it includes the command that was executed and + all the associated error messages. +

+

+ An excellent article about asking for help on the Internet is + available online at http://catb.org/~esr/faqs/smart-questions.html. + Read this document, and follow the hints. Doing so will + increase the likelihood of getting the help you need. +

+
+
+
+
+
+
+
+

+ Part II. Preparing for + the Build +

+
+
+
+
+
+
+
+

+ Chapter 2. Preparing the + Host System +

+
+
+
+
+
+
+
+

+ 2.1. Introduction +

+
+
+
+
+

+ In this chapter, the host tools needed for building LFS are + checked and, if necessary, installed. Then a partition which + will host the LFS system is prepared. We will create the + partition itself, create a file system on it, and mount it. +

+
+
+
+
+

+ 2.2. Host System + Requirements +

+
+
+
+
+
+

+ 2.2.1. Hardware +

+

+ The LFS editors recommend that the system CPU have at least + four cores and that the system have at least 8 GB of memory. + Older systems that do not meet these requirements will still + work, but the time to build packages will be significantly + longer than documented. +

+
+
+

+ 2.2.2. Software +

+

+ Your host system should have the following software with the + minimum versions indicated. This should not be an issue for + most modern Linux distributions. Also note that many + distributions will place software headers into separate + packages, often in the form of <package-name>-devel + or <package-name>-dev. + Be sure to install those if your distribution provides them. +

+

+ Earlier versions of the listed software packages may work, + but have not been tested. +

+
+
    +
  • +

    + Bash-3.2 + (/bin/sh should be a symbolic or hard link to bash) +

    +
  • +
  • +

    + Binutils-2.13.1 + (Versions greater than 2.45 are not recommended as they + have not been tested) +

    +
  • +
  • +

    + Bison-2.7 + (/usr/bin/yacc should be a link to bison or a small + script that executes bison) +

    +
  • +
  • +

    + Coreutils-8.1 +

    +
  • +
  • +

    + Diffutils-2.8.1 +

    +
  • +
  • +

    + Findutils-4.2.31 +

    +
  • +
  • +

    + Gawk-4.0.1 + (/usr/bin/awk should be a link to gawk) +

    +
  • +
  • +

    + GCC-5.4 + including the C++ compiler, g++ (Versions greater + than 15.2.0 are not recommended as they have not been + tested). C and C++ standard libraries (with headers) + must also be present so the C++ compiler can build + hosted programs +

    +
  • +
  • +

    + Grep-2.5.1a +

    +
  • +
  • +

    + Gzip-1.3.12 +

    +
  • +
  • +

    + Linux + Kernel-5.4 +

    +

    + The reason for the kernel version requirement is that + we specify that version when building glibc in Chapter 5 + and + Chapter 8, so the workarounds for older + kernels are not enabled and the compiled glibc is slightly faster and + smaller. As at Dec 2024, 5.4 is the oldest kernel + release still supported by the kernel developers. Some + kernel releases older than 5.4 may be still supported + by third-party teams, but they are not considered + official upstream kernel releases; read https://kernel.org/category/releases.html + for the details. +

    +

    + If the host kernel is earlier than 5.4 you will need to + replace the kernel with a more up-to-date version. + There are two ways you can go about this. First, see if + your Linux vendor provides a 5.4 or later kernel + package. If so, you may wish to install it. If your + vendor doesn't offer an acceptable kernel package, or + you would prefer not to install it, you can compile a + kernel yourself. Instructions for compiling the kernel + and configuring the boot loader (assuming the host uses + GRUB) are located in Chapter 10. +

    +

    + We require the host kernel to support UNIX 98 pseudo + terminal (PTY). It should be enabled on all desktop or + server distros shipping Linux 5.4 or a newer kernel. If + you are building a custom host kernel, ensure + CONFIG_UNIX98_PTYS is set + to y in the kernel + configuration. +

    +
  • +
  • +

    + M4-1.4.10 +

    +
  • +
  • +

    + Make-4.0 +

    +
  • +
  • +

    + Patch-2.5.4 +

    +
  • +
  • +

    + Perl-5.8.8 +

    +
  • +
  • +

    + Python-3.4 +

    +
  • +
  • +

    + Sed-4.1.5 +

    +
  • +
  • +

    + Tar-1.22 +

    +
  • +
  • +

    + Texinfo-5.0 +

    +
  • +
  • +

    + Xz-5.0.0 +

    +
  • +
+
+
+

+ Important +

+

+ Note that the symlinks mentioned above are required to + build an LFS system using the instructions contained within + this book. Symlinks that point to other software (such as + dash, mawk, etc.) may work, but are not tested or supported + by the LFS development team, and may require either + deviation from the instructions or additional patches to + some packages. +

+
+

+ +

+

+ To see whether your host system has all the appropriate + versions, and the ability to compile programs, run the + following commands: +

+
cat > version-check.sh << "EOF"
+#!/bin/bash
+# A script to list version numbers of critical development tools
+
+# If you have tools installed in other directories, adjust PATH here AND
+# in ~lfs/.bashrc (section 4.4) as well.
+
+LC_ALL=C 
+PATH=/usr/bin:/bin
+
+bail() { echo "FATAL: $1"; exit 1; }
+grep --version > /dev/null 2> /dev/null || bail "grep does not work"
+sed '' /dev/null || bail "sed does not work"
+sort   /dev/null || bail "sort does not work"
+
+ver_check()
+{
+   if ! type -p $2 &>/dev/null
+   then 
+     echo "ERROR: Cannot find $2 ($1)"; return 1; 
+   fi
+   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
+   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
+   then 
+     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
+   else 
+     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
+     return 1; 
+   fi
+}
+
+ver_kernel()
+{
+   kver=$(uname -r | grep -E -o '^[0-9\.]+')
+   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
+   then 
+     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
+   else 
+     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
+     return 1; 
+   fi
+}
+
+# Coreutils first because --version-sort needs Coreutils >= 7.0
+ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
+ver_check Bash           bash     3.2
+ver_check Binutils       ld       2.13.1
+ver_check Bison          bison    2.7
+ver_check Diffutils      diff     2.8.1
+ver_check Findutils      find     4.2.31
+ver_check Gawk           gawk     4.0.1
+ver_check GCC            gcc      5.4
+ver_check "GCC (C++)"    g++      5.4
+ver_check Grep           grep     2.5.1a
+ver_check Gzip           gzip     1.3.12
+ver_check M4             m4       1.4.10
+ver_check Make           make     4.0
+ver_check Patch          patch    2.5.4
+ver_check Perl           perl     5.8.8
+ver_check Python         python3  3.4
+ver_check Sed            sed      4.1.5
+ver_check Tar            tar      1.22
+ver_check Texinfo        texi2any 5.0
+ver_check Xz             xz       5.0.0
+ver_kernel 5.4
+
+if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
+then echo "OK:    Linux Kernel supports UNIX 98 PTY";
+else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
+
+alias_check() {
+   if $1 --version 2>&1 | grep -qi $2
+   then printf "OK:    %-4s is $2\n" "$1";
+   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
+}
+echo "Aliases:"
+alias_check awk GNU
+alias_check yacc Bison
+alias_check sh Bash
+
+echo "Compiler check:"
+if printf "int main(){}" | g++ -x c++ -
+then echo "OK:    g++ works";
+else echo "ERROR: g++ does NOT work"; fi
+rm -f a.out
+
+if [ "$(nproc)" = "" ]; then
+   echo "ERROR: nproc is not available or it produces empty output"
+else
+   echo "OK: nproc reports $(nproc) logical cores are available"
+fi
+EOF
+
+bash version-check.sh
+
+
+
+
+
+

+ 2.3. Building LFS in + Stages +

+
+
+
+
+

+ LFS is designed to be built in one session. That is, the + instructions assume that the system will not be shut down + during the process. This does not mean that the system has to + be built in one sitting. The issue is that certain procedures + must be repeated after a reboot when resuming LFS at different + points. +

+
+

+ 2.3.1. Chapters 1–4 +

+

+ These chapters run commands on the host system. When + restarting, be certain of one thing: +

+
+
    +
  • +

    + Procedures performed as the root user after Section 2.4 must + have the LFS environment variable set FOR THE ROOT USER. +

    +
  • +
+
+
+
+

+ 2.3.2. Chapters 5–6 +

+
+
    +
  • +

    + The /mnt/lfs partition must be mounted. +

    +
  • +
  • +

    + These two chapters must be done as user + lfs. A su - lfs command must + be issued before performing any task in these chapters. + If you don't do that, you are at risk of installing + packages to the host, and potentially rendering it + unusable. +

    +
  • +
  • +

    + The procedures in General Compilation + Instructions are critical. If there is any doubt a + package has been installed correctly, ensure the + previously expanded tarball has been removed, then + re-extract the package, and complete all the + instructions in that section. +

    +
  • +
+
+
+
+

+ 2.3.3. Chapters 7–10 +

+
+
    +
  • +

    + The /mnt/lfs partition must be mounted. +

    +
  • +
  • +

    + A few operations, from “Preparing Virtual Kernel + File Systems” to “Entering the Chroot + Environment,” must be done as the + root user, with the LFS + environment variable set for the root user. +

    +
  • +
  • +

    + When entering chroot, the LFS environment variable must + be set for root. The + LFS variable is not used after the chroot environment + has been entered. +

    +
  • +
  • +

    + The virtual file systems must be mounted. This can be + done before or after entering chroot by changing to a + host virtual terminal and, as root, running the commands in + Section 7.3.1, + “Mounting and Populating /dev” and Section 7.3.2, + “Mounting Virtual Kernel File Systems.” +

    +
  • +
+
+
+
+
+
+
+

+ 2.4. Creating + a New Partition +

+
+
+
+
+

+ Like most other operating systems, LFS is usually installed on + a dedicated partition. The recommended approach to building an + LFS system is to use an available empty partition or, if you + have enough unpartitioned space, to create one. +

+

+ A minimal system requires a partition of around 10 gigabytes + (GB). This is enough to store all the source tarballs and + compile the packages. However, if the LFS system is intended to + be the primary Linux system, additional software will probably + be installed which will require additional space. A 30 GB + partition is a reasonable size to provide for growth. The LFS + system itself will not take up this much room. A large portion + of this requirement is to provide sufficient free temporary + storage as well as for adding additional capabilities after LFS + is complete. Additionally, compiling packages can require a lot + of disk space which will be reclaimed after the package is + installed. +

+

+ Because there is not always enough Random Access Memory (RAM) + available for compilation processes, it is a good idea to use a + small disk partition as swap + space. This is used by the kernel to store seldom-used data and + leave more memory available for active processes. The + swap partition for an LFS + system can be the same as the one used by the host system, in + which case it is not necessary to create another one. +

+

+ Start a disk partitioning program such as cfdisk or fdisk with a command line + option naming the hard disk on which the new partition will be + created—for example /dev/sda for + the primary disk drive. Create a Linux native partition and a + swap partition, if needed. + Please refer to cfdisk(8) or + fdisk(8) if you do + not yet know how to use the programs. +

+
+

+ Note +

+

+ For experienced users, other partitioning schemes are + possible. The new LFS system can be on a software + RAID array or an + LVM logical volume. However, some of these options + require an + initramfs, which is an advanced topic. These partitioning + methodologies are not recommended for first time LFS users. +

+
+

+ Remember the designation of the new partition (e.g., + sda5). This book will refer to + this as the LFS partition. Also remember the designation of the + swap partition. These names + will be needed later for the /etc/fstab file. +

+
+

+ 2.4.1. Other Partition Issues +

+

+ Requests for advice on system partitioning are often posted + on the LFS mailing lists. This is a highly subjective topic. + The default for most distributions is to use the entire drive + with the exception of one small swap partition. This is not + optimal for LFS for several reasons. It reduces flexibility, + makes sharing of data across multiple distributions or LFS + builds more difficult, makes backups more time consuming, and + can waste disk space through inefficient allocation of file + system structures. +

+
+
+
+
+

+ 2.4.1.1. The Root + Partition +

+
+
+
+

+ A root LFS partition (not to be confused with the + /root directory) of twenty + gigabytes is a good compromise for most systems. It + provides enough space to build LFS and most of BLFS, but is + small enough so that multiple partitions can be easily + created for experimentation. +

+
+
+
+
+
+

+ 2.4.1.2. The Swap + Partition +

+
+
+
+

+ Most distributions automatically create a swap partition. + Generally the recommended size of the swap partition is + about twice the amount of physical RAM, however this is + rarely needed. If disk space is limited, hold the swap + partition to two gigabytes and monitor the amount of disk + swapping. +

+

+ If you want to use the hibernation feature + (suspend-to-disk) of Linux, it writes out the contents of + RAM to the swap partition before turning off the machine. + In this case the size of the swap partition should be at + least as large as the system's installed RAM. +

+

+ Swapping is never good. For mechanical hard drives you can + generally tell if a system is swapping by just listening to + disk activity and observing how the system reacts to + commands. With an SSD you will not be able to hear + swapping, but you can tell how much swap space is being + used by running the top or free programs. Use of an + SSD for a swap partition should be avoided if possible. The + first reaction to swapping should be to check for an + unreasonable command such as trying to edit a five gigabyte + file. If swapping becomes a normal occurrence, the best + solution is to purchase more RAM for your system. +

+
+
+
+
+
+

+ 2.4.1.3. The Grub Bios + Partition +

+
+
+
+

+ If the boot disk has + been partitioned with a GUID Partition Table (GPT), then a + small, typically 1 MB, partition must be created if it does + not already exist. This partition is not formatted, but + must be available for GRUB to use during installation of + the boot loader. This partition will normally be labeled + 'BIOS Boot' if using fdisk or have a code of + EF02 if using the + gdisk + command. +

+
+

+ Note +

+

+ The Grub Bios partition must be on the drive that the + BIOS uses to boot the system. This is not necessarily the + drive that holds the LFS root partition. The disks on a + system may use different partition table types. The + necessity of the Grub Bios partition depends only on the + partition table type of the boot disk. +

+
+
+
+
+
+
+

+ 2.4.1.4. Convenience + Partitions +

+
+
+
+

+ There are several other partitions that are not required, + but should be considered when designing a disk layout. The + following list is not comprehensive, but is meant as a + guide. +

+
+
    +
  • +

    + /boot – Highly recommended. Use this partition to + store kernels and other booting information. To + minimize potential boot problems with larger disks, + make this the first physical partition on your first + disk drive. A partition size of 200 megabytes is + adequate. +

    +
  • +
  • +

    + /boot/efi – The EFI System Partition, which is needed + for booting the system with UEFI. Read + the BLFS page for details. +

    +
  • +
  • +

    + /home – Highly recommended. Share your home directory + and user customization across multiple distributions + or LFS builds. The size is generally fairly large and + depends on available disk space. +

    +
  • +
  • +

    + /usr – In LFS, /bin, + /lib, and /sbin are symlinks to their + counterparts in /usr. + So /usr contains all + the binaries needed for the system to run. For LFS a + separate partition for /usr is normally not needed. If you + create it anyway, you should make a partition large + enough to fit all the programs and libraries in the + system. The root partition can be very small (maybe + just one gigabyte) in this configuration, so it's + suitable for a thin client or diskless workstation + (where /usr is mounted + from a remote server). However, you should be aware + that an initramfs (not covered by LFS) will be needed + to boot a system with a separate /usr partition. +

    +
  • +
  • +

    + /opt – This directory is most useful for BLFS, where + multiple large packages like KDE or Texlive can be + installed without embedding the files in the /usr + hierarchy. If used, 5 to 10 gigabytes is generally + adequate. +

    +
  • +
  • +

    + /tmp – A separate /tmp partition is rare, but useful + if configuring a thin client. This partition, if + used, will usually not need to exceed a couple of + gigabytes. If you have enough RAM, you can mount a + tmpfs on /tmp to make + access to temporary files faster. +

    +
  • +
  • +

    + /usr/src – This partition is very useful for + providing a location to store BLFS source files and + share them across LFS builds. It can also be used as + a location for building BLFS packages. A reasonably + large partition of 30-50 gigabytes provides plenty of + room. +

    +
  • +
+
+

+ Any separate partition that you want automatically mounted + when the system starts must be specified in the + /etc/fstab file. Details + about how to specify partitions will be discussed in + Section 10.2, + “Creating the /etc/fstab File”. +

+
+
+
+
+
+
+

+ 2.5. Creating + a File System on the Partition +

+
+
+
+
+

+ A partition is just a range of sectors on a disk drive, + delimited by boundaries set in a partition table. Before the + operating system can use a partition to store any files, the + partition must be formatted to contain a file system, typically + consisting of a label, directory blocks, data blocks, and an + indexing scheme to locate a particular file on demand. The file + system also helps the OS keep track of free space on the + partition, reserve the needed sectors when a new file is + created or an existing file is extended, and recycle the free + data segments created when files are deleted. It may also + provide support for data redundancy, and for error recovery. +

+

+ LFS can use any file system recognized by the Linux kernel, but + the most common types are ext3 and ext4. The choice of the + right file system can be complex; it depends on the + characteristics of the files and the size of the partition. For + example: +

+
+
+
+ ext2 +
+
+

+ is suitable for small partitions that are updated + infrequently such as /boot. +

+
+
+ ext3 +
+
+

+ is an upgrade to ext2 that includes a journal to help + recover the partition's status in the case of an unclean + shutdown. It is commonly used as a general purpose file + system. +

+
+
+ ext4 +
+
+

+ is the latest version of the ext family of file systems. + It provides several new capabilities including + nano-second timestamps, creation and use of very large + files (up to 16 TB), and speed improvements. +

+
+
+
+

+ Other file systems, including FAT32, NTFS, JFS, and XFS are + useful for specialized purposes. More information about these + file systems, and many others, can be found at https://en.wikipedia.org/wiki/Comparison_of_file_systems. +

+

+ LFS assumes that the root file system (/) is of type ext4. To + create an ext4 file system on + the LFS partition, issue the following command: +

+
mkfs -v -t ext4 /dev/<xxx>
+

+ Replace <xxx> + with the name of the LFS partition. +

+

+ If you are using an existing swap partition, there is no need to format + it. If a new swap partition was + created, it will need to be initialized with this command: +

+
mkswap /dev/<yyy>
+

+ Replace <yyy> + with the name of the swap + partition. +

+
+
+
+
+

+ 2.6. Setting the $LFS + Variable and the Umask +

+
+
+
+
+

+ Throughout this book, the environment variable LFS will be used several times. You should + ensure that this variable is always defined throughout the LFS + build process. It should be set to the name of the directory + where you will be building your LFS system - we will use + /mnt/lfs as an example, but you + may choose any directory name you want. If you are building LFS + on a separate partition, this directory will be the mount point + for the partition. Choose a directory location and set the + variable with the following command: +

+
export LFS=/mnt/lfs
+

+ Having this variable set is beneficial in that commands such as + mkdir -v + $LFS/tools can be typed literally. The shell + will automatically replace “$LFS” with “/mnt/lfs” (or + whatever value the variable was set to) when it processes the + command line. +

+

+ Now set the file mode creation mask (umask) to 022 in case the host distro uses a different + default: +

+
umask 022
+

+ Setting the umask to 022 ensures that newly created files and + directories are only writable by their owner, but are readable + and searchable (only for directories) by anyone (assuming + default modes are used by the open(2) system call, + new files will end up with permission mode 644 and directories + with mode 755). An overly-permissive default can leave security + holes in the LFS system, and an overly-restrictive default can + cause strange issues building or using the LFS system. +

+
+

+ Caution +

+

+ Do not forget to check that LFS is + set and the umask is set to 022 + whenever you leave and reenter the current working + environment (such as when doing a su to root or another user). Check that the + LFS variable is set up properly + with: +

+
echo $LFS
+

+ Make sure the output shows the path to your LFS system's + build location, which is /mnt/lfs if the provided example was + followed. +

+

+ Check that the umask is set up properly with: +

+
umask
+

+ The output may be 0022 or + 022 (the number of + leading zeros depends on the host distro). +

+

+ If any output of these two commands is incorrect, use the + command given earlier on this page to set $LFS to the correct directory name and set + umask to 022. +

+
+
+

+ Note +

+

+ One way to ensure that the LFS + variable and the umask are always set properly is to edit the + .bash_profile file in both your + personal home directory and in /root/.bash_profile and enter the + export and + umask commands + above. In addition, the shell specified in the /etc/passwd file for all users that need + the LFS variable must be bash to + ensure that the .bash_profile + file is incorporated as a part of the login process. +

+

+ Another consideration is the method that is used to log into + the host system. If logging in through a graphical display + manager, the user's .bash_profile is not normally used when a + virtual terminal is started. In this case, add the commands + to the .bashrc file for the + user and root. In addition, + some distributions use an "if" test, and do not run the + remaining .bashrc instructions + for a non-interactive bash invocation. Be sure to place the + commands ahead of the test for non-interactive use. +

+
+
+
+
+
+

+ 2.7. Mounting the New + Partition +

+
+
+
+
+

+ Now that a file system has been created, the partition must be + mounted so the host system can access it. This book assumes + that the file system is mounted at the directory specified by + the LFS environment variable + described in the previous section. +

+

+ Strictly speaking, one cannot “mount a partition.” One mounts the + file system embedded in + that partition. But since a single partition can't contain more + than one file system, people often speak of the partition and + the associated file system as if they were one and the same. +

+

+ Create the mount point and mount the LFS file system with these + commands: +

+
mkdir -pv $LFS
+mount -v -t ext4 /dev/<xxx> $LFS
+

+ Replace <xxx> + with the name of the LFS partition. +

+

+ If you are using multiple partitions for LFS (e.g., one for + / and another for /home), mount them like this: +

+
mkdir -pv $LFS
+mount -v -t ext4 /dev/<xxx> $LFS
+mkdir -v $LFS/home
+mount -v -t ext4 /dev/<yyy> $LFS/home
+

+ Replace <xxx> + and <yyy> with + the appropriate partition names. +

+

+ Set the owner and permission mode of the $LFS directory (i.e. the root directory in + the newly created file system for the LFS system) to + root and 755 in case the host distro has been + configured to use a different default for mkfs: +

+
chown root:root $LFS
+chmod 755 $LFS
+

+ Ensure that this new partition is not mounted with permissions + that are too restrictive (such as the nosuid or nodev + options). Run the mount command without any + parameters to see what options are set for the mounted LFS + partition. If nosuid and/or + nodev are set, the partition must + be remounted. +

+
+

+ Warning +

+

+ The above instructions assume that you will not restart your + computer throughout the LFS process. If you shut down your + system, you will either need to remount the LFS partition + each time you restart the build process, or modify the host + system's /etc/fstab file to + automatically remount it when you reboot. For example, you + might add this line to your /etc/fstab file: +

+
/dev/<xxx>  /mnt/lfs ext4   defaults      1     1
+

+ If you use additional optional partitions, be sure to add + them also. +

+
+

+ If you are using a swap + partition, ensure that it is enabled using the swapon command: +

+
/sbin/swapon -v /dev/<zzz>
+

+ Replace <zzz> + with the name of the swap + partition. +

+

+ Now that the new LFS partition is open for business, it's time + to download the packages. +

+
+
+
+
+
+

+ Chapter 3. Packages + and Patches +

+
+
+
+
+
+
+
+

+ 3.1. Introduction +

+
+
+
+
+

+ This chapter includes a list of packages that need to be + downloaded in order to build a basic Linux system. The listed + version numbers correspond to versions of the software that are + known to work, and this book is based on their use. We highly + recommend against using different versions, because the build + commands for one version may not work with a different version, + unless the different version is specified by an LFS erratum or + security advisory. The newest package versions may also have + problems that require work-arounds. These work-arounds will be + developed and stabilized in the development version of the + book. +

+

+ For some packages, the release tarball and the (Git or SVN) + repository snapshot tarball for that release may be published + with similar or even identical file names. But the release + tarball may contain some files which are essential despite not + stored in the repository (for example, a configure script generated by + autoconf), in + addition to the contents of the corresponding repository + snapshot. The book uses release tarballs whenever possible. + Using a repository snapshot instead of a release tarball + specified by the book will cause problems. +

+

+ Download locations may not always be accessible. If a download + location has changed since this book was published, Google + (https://www.google.com/) provides + a useful search engine for most packages. If this search is + unsuccessful, try one of the alternative means of downloading + at https://www.linuxfromscratch.org/lfs/mirrors.html#files. +

+

+ Downloaded packages and patches will need to be stored + somewhere that is conveniently available throughout the entire + build. A working directory is also required to unpack the + sources and build them. $LFS/sources can be used both as the place to + store the tarballs and patches and as a working directory. By + using this directory, the required elements will be located on + the LFS partition and will be available during all stages of + the building process. +

+

+ To create this directory, execute the following command, as + user root, before starting the + download session: +

+
mkdir -v $LFS/sources
+

+ Make this directory writable and sticky. “Sticky” means that + even if multiple users have write permission on a directory, + only the owner of a file can delete the file within a sticky + directory. The following command will enable the write and + sticky modes: +

+
chmod -v a+wt $LFS/sources
+

+ There are several ways to obtain all the necessary packages and + patches to build LFS: +

+
+
    +
  • +

    + The files can be downloaded individually as described in + the next two sections. +

    +
  • +
  • +

    + For stable versions of the book, a tarball of all the + needed files can be downloaded from one of the mirror + sites listed at https://www.linuxfromscratch.org/mirrors.html#files. +

    +
  • +
  • +

    + The files can be downloaded using wget and a wget-list as + described below. +

    +
  • +
+
+

+ To download all of the packages and patches by using wget-list-sysv as an input + to the wget + command, use: +

+
wget --input-file=wget-list-sysv --continue --directory-prefix=$LFS/sources
+

+ Additionally, starting with LFS-7.0, there is a separate file, + md5sums, which can be + used to verify that all the correct packages are available + before proceeding. Place that file in $LFS/sources and run: +

+
pushd $LFS/sources
+  md5sum -c md5sums
+popd
+

+ This check can be used after retrieving the needed files with + any of the methods listed above. +

+

+ If the packages and patches are downloaded as a + non-root user, these files will + be owned by the user. The file system records the owner by its + UID, and the UID of a normal user in the host distro is not + assigned in LFS. So the files will be left owned by an unnamed + UID in the final LFS system. If you won't assign the same UID + for your user in the LFS system, change the owners of these + files to root now to avoid this + issue: +

+
chown root:root $LFS/sources/*
+
+
+
+
+

+ 3.2. All Packages +

+
+
+
+
+
+

+ Note +

+

+ Read the security + advisories before downloading packages to figure out if a + newer version of any package should be used to avoid security + vulnerabilities. +

+

+ The upstream sources may remove old releases, especially when + those releases contain a security vulnerability. If one URL + below is not reachable, you should read the security + advisories first to figure out if a newer version (with the + vulnerability fixed) should be used. If not, try to download + the removed package from a mirror. Although it's possible to + download an old release from a mirror even if this release + has been removed because of a vulnerability, it's not a good + idea to use a release known to be vulnerable when building + your system. +

+
+

+ Download or otherwise obtain the following packages: +

+
+
+
+
+ Acl (2.3.2) - 363 + KB: +
+
+

+ Home page: https://savannah.nongnu.org/projects/acl +

+

+ Download: + https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz +

+

+ MD5 sum: 590765dee95907dbc3c856f7255bd669 +

+
+
+ Attr (2.5.2) - 484 + KB: +
+
+

+ Home page: https://savannah.nongnu.org/projects/attr +

+

+ Download: + https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz +

+

+ MD5 sum: 227043ec2f6ca03c0948df5517f9c927 +

+
+
+ Autoconf (2.72) - 1,360 KB: +
+
+

+ Home page: https://www.gnu.org/software/autoconf/ +

+

+ Download: + https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz +

+

+ MD5 sum: 1be79f7106ab6767f18391c5e22be701 +

+
+
+ Automake (1.18.1) - 1,614 KB: +
+
+

+ Home page: https://www.gnu.org/software/automake/ +

+

+ Download: + https://ftp.gnu.org/gnu/automake/automake-1.18.1.tar.xz +

+

+ MD5 sum: cea31dbf1120f890cbf2a3032cfb9a68 +

+
+
+ Bash (5.3) - 11,089 KB: +
+
+

+ Home page: https://www.gnu.org/software/bash/ +

+

+ Download: https://ftp.gnu.org/gnu/bash/bash-5.3.tar.gz +

+

+ MD5 sum: 977c8c0c5ae6309191e7768e28ebc951 +

+
+
+ Bc (7.0.3) - 464 + KB: +
+
+

+ Home page: https://github.com/gavinhoward +

+

+ Download: + https://github.com/gavinhoward/bc/releases/download/7.0.3/bc-7.0.3.tar.xz +

+

+ MD5 sum: ad4db5a0eb4fdbb3f6813be4b6b3da74 +

+
+
+ Binutils (2.45) - 27,216 KB: +
+
+

+ Home page: https://www.gnu.org/software/binutils/ +

+

+ Download: + https://sourceware.org/pub/binutils/releases/binutils-2.45.tar.xz +

+

+ MD5 sum: dee5b4267e0305a99a3c9d6131f45759 +

+
+
+ Bison (3.8.2) - 2,752 KB: +
+
+

+ Home page: https://www.gnu.org/software/bison/ +

+

+ Download: https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz +

+

+ MD5 sum: c28f119f405a2304ff0a7ccdcc629713 +

+
+
+ Bzip2 (1.0.8) - 792 KB: +
+
+

+ Download: + https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +

+

+ MD5 sum: 67e051268d0c475ea773822f7500d0e5 +

+
+
+ Coreutils (9.7) - 6,015 KB: +
+
+

+ Home page: https://www.gnu.org/software/coreutils/ +

+

+ Download: + https://ftp.gnu.org/gnu/coreutils/coreutils-9.7.tar.xz +

+

+ MD5 sum: 6b7285faf7d5eb91592bdd689270d3f1 +

+
+
+ DejaGNU (1.6.3) - 608 KB: +
+
+

+ Home page: https://www.gnu.org/software/dejagnu/ +

+

+ Download: https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz +

+

+ MD5 sum: 68c5208c58236eba447d7d6d1326b821 +

+
+
+ Diffutils (3.12) - 1,894 KB: +
+
+

+ Home page: https://www.gnu.org/software/diffutils/ +

+

+ Download: + https://ftp.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz +

+

+ MD5 sum: d1b18b20868fb561f77861cd90b05de4 +

+
+
+ E2fsprogs (1.47.3) - 9,851 KB: +
+
+

+ Home page: https://e2fsprogs.sourceforge.net/ +

+

+ Download: + https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.3/e2fsprogs-1.47.3.tar.gz +

+

+ MD5 sum: 113d7a7ee0710d2a670a44692a35fd2e +

+
+
+ Elfutils (0.193) - 11,695 KB: +
+
+

+ Home page: https://sourceware.org/elfutils/ +

+

+ Download: + https://sourceware.org/ftp/elfutils/0.193/elfutils-0.193.tar.bz2 +

+

+ MD5 sum: ceefa052ded950a4c523688799193a44 +

+
+
+ Expat (2.7.1) - 485 KB: +
+
+

+ Home page: https://libexpat.github.io/ +

+

+ Download: + https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz +

+

+ MD5 sum: 9f0c266ff4b9720beae0c6bd53ae4469 +

+
+
+ Expect (5.45.4) - 618 KB: +
+
+

+ Home page: https://core.tcl.tk/expect/ +

+

+ Download: + https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +

+

+ MD5 sum: 00fce8de158422f5ccd2666512329bd2 +

+
+
+ File (5.46) - 1,283 KB: +
+
+

+ Home page: https://www.darwinsys.com/file/ +

+

+ Download: https://astron.com/pub/file/file-5.46.tar.gz +

+

+ MD5 sum: 459da2d4b534801e2e2861611d823864 +

+
+
+ Findutils (4.10.0) - 2,189 KB: +
+
+

+ Home page: https://www.gnu.org/software/findutils/ +

+

+ Download: + https://ftp.gnu.org/gnu/findutils/findutils-4.10.0.tar.xz +

+

+ MD5 sum: 870cfd71c07d37ebe56f9f4aaf4ad872 +

+
+
+ Flex (2.6.4) - 1,386 KB: +
+
+

+ Home page: https://github.com/westes/flex +

+

+ Download: + https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +

+

+ MD5 sum: 2882e3179748cc9f9c23ec593d6adc8d +

+
+
+ Flit-core (3.12.0) - 53 KB: +
+
+

+ Home page: https://pypi.org/project/flit-core/ +

+

+ Download: + https://pypi.org/packages/source/f/flit-core/flit_core-3.12.0.tar.gz +

+

+ MD5 sum: c538415c1f27bd69cbbbf3cdd5135d39 +

+
+
+ Gawk (5.3.2) - 3,662 KB: +
+
+

+ Home page: https://www.gnu.org/software/gawk/ +

+

+ Download: https://ftp.gnu.org/gnu/gawk/gawk-5.3.2.tar.xz +

+

+ MD5 sum: b7014650c5f45e5d4837c31209dc0037 +

+
+
+ GCC (15.2.0) - 98,688 KB: +
+
+

+ Home page: https://gcc.gnu.org/ +

+

+ Download: + https://ftp.gnu.org/gnu/gcc/gcc-15.2.0/gcc-15.2.0.tar.xz +

+

+ MD5 sum: b861b092bf1af683c46a8aa2e689a6fd +

+
+
+ GDBM (1.26) - 1,198 KB: +
+
+

+ Home page: https://www.gnu.org/software/gdbm/ +

+

+ Download: https://ftp.gnu.org/gnu/gdbm/gdbm-1.26.tar.gz +

+

+ MD5 sum: aaa600665bc89e2febb3c7bd90679115 +

+
+
+ Gettext (0.26) - 9,926 KB: +
+
+

+ Home page: https://www.gnu.org/software/gettext/ +

+

+ Download: https://ftp.gnu.org/gnu/gettext/gettext-0.26.tar.xz +

+

+ MD5 sum: 8e14e926f088e292f5f2bce95b81d10e +

+
+
+ Glibc (2.42) - 19,464 KB: +
+
+

+ Home page: https://www.gnu.org/software/libc/ +

+

+ Download: https://ftp.gnu.org/gnu/glibc/glibc-2.42.tar.xz +

+

+ MD5 sum: 23c6f5a27932b435cae94e087cb8b1f5 +

+
+

+ Note +

+

+ The Glibc developers maintain a + Git branch containing patches considered worthy + for Glibc-2.42 but unfortunately developed after + Glibc-2.42 release. The LFS editors will issue a + security advisory if any security fix is added into + the branch, but no actions will be taken for other + newly added patches. You may review the patches + yourself and incorporate some patches if you consider + them important. +

+
+
+
+ GMP (6.3.0) - 2,046 KB: +
+
+

+ Home page: https://www.gnu.org/software/gmp/ +

+

+ Download: https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz +

+

+ MD5 sum: 956dc04e864001a9c22429f761f2c283 +

+
+
+ Gperf (3.3) - 1,789 KB: +
+
+

+ Home page: https://www.gnu.org/software/gperf/ +

+

+ Download: https://ftp.gnu.org/gnu/gperf/gperf-3.3.tar.gz +

+

+ MD5 sum: 31753b021ea78a21f154bf9eecb8b079 +

+
+
+ Grep (3.12) - 1,874 KB: +
+
+

+ Home page: https://www.gnu.org/software/grep/ +

+

+ Download: https://ftp.gnu.org/gnu/grep/grep-3.12.tar.xz +

+

+ MD5 sum: 5d9301ed9d209c4a88c8d3a6fd08b9ac +

+
+
+ Groff (1.23.0) - 7,259 KB: +
+
+

+ Home page: https://www.gnu.org/software/groff/ +

+

+ Download: https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz +

+

+ MD5 sum: 5e4f40315a22bb8a158748e7d5094c7d +

+
+
+ GRUB (2.12) - 6,524 KB: +
+
+

+ Home page: https://www.gnu.org/software/grub/ +

+

+ Download: https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +

+

+ MD5 sum: 60c564b1bdc39d8e43b3aab4bc0fb140 +

+
+
+ Gzip (1.14) - 865 + KB: +
+
+

+ Home page: https://www.gnu.org/software/gzip/ +

+

+ Download: https://ftp.gnu.org/gnu/gzip/gzip-1.14.tar.xz +

+

+ MD5 sum: 4bf5a10f287501ee8e8ebe00ef62b2c2 +

+
+
+ Iana-Etc (20250807) - 592 KB: +
+
+

+ Home page: https://www.iana.org/protocols +

+

+ Download: + https://github.com/Mic92/iana-etc/releases/download/20250807/iana-etc-20250807.tar.gz +

+

+ MD5 sum: de0a909103d4ff59d1424c5ec7ac9e4a +

+
+
+ Inetutils (2.6) - 1,724 KB: +
+
+

+ Home page: https://www.gnu.org/software/inetutils/ +

+

+ Download: + https://ftp.gnu.org/gnu/inetutils/inetutils-2.6.tar.xz +

+

+ MD5 sum: 401d7d07682a193960bcdecafd03de94 +

+
+
+ Intltool (0.51.0) - 159 KB: +
+
+

+ Home page: https://freedesktop.org/wiki/Software/intltool +

+

+ Download: + https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz +

+

+ MD5 sum: 12e517cac2b57a0121cda351570f1e63 +

+
+
+ IPRoute2 (6.16.0) - 910 KB: +
+
+

+ Home page: https://www.kernel.org/pub/linux/utils/net/iproute2/ +

+

+ Download: + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.16.0.tar.xz +

+

+ MD5 sum: 80e1f91bf59d572acc15d5c6eb4f3e7c +

+
+
+ Jinja2 (3.1.6) - 240 KB: +
+
+

+ Home page: https://jinja.palletsprojects.com/en/3.1.x/ +

+

+ Download: + https://pypi.org/packages/source/J/Jinja2/jinja2-3.1.6.tar.gz +

+

+ MD5 sum: 66d4c25ff43d1deaf9637ccda523dec8 +

+
+
+ Kbd (2.8.0) - 1,448 KB: +
+
+

+ Home page: https://kbd-project.org/ +

+

+ Download: + https://www.kernel.org/pub/linux/utils/kbd/kbd-2.8.0.tar.xz +

+

+ MD5 sum: 24b5d24f7483726b88f214dc6c77aa41 +

+
+
+ Kmod (34.2) - 434 + KB: +
+
+

+ Home page: https://github.com/kmod-project/kmod +

+

+ Download: + https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-34.2.tar.xz +

+

+ MD5 sum: 36f2cc483745e81ede3406fa55e1065a +

+
+
+ Less (679) - 857 + KB: +
+
+

+ Home page: https://www.greenwoodsoftware.com/less/ +

+

+ Download: + https://www.greenwoodsoftware.com/less/less-679.tar.gz +

+

+ MD5 sum: 0386dc14f6a081a94dfb4c2413864eed +

+
+
+ LFS-Bootscripts (20250827) - + 34 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/lfs/downloads/12.4/lfs-bootscripts-20250827.tar.xz +

+

+ MD5 sum: 3f661c64c2dfb55025767ed56074d059 +

+
+
+ Libcap (2.76) - 195 KB: +
+
+

+ Home page: https://sites.google.com/site/fullycapable/ +

+

+ Download: + https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.76.tar.xz +

+

+ MD5 sum: 449ade7d620b5c4eeb15a632fbaa4f74 +

+
+
+ Libffi (3.5.2) - 1,390 KB: +
+
+

+ Home page: https://sourceware.org/libffi/ +

+

+ Download: + https://github.com/libffi/libffi/releases/download/v3.5.2/libffi-3.5.2.tar.gz +

+

+ MD5 sum: 92af9efad4ba398995abf44835c5d9e9 +

+
+
+ Libpipeline (1.5.8) - 1046 KB: +
+
+

+ Home page: https://libpipeline.nongnu.org/ +

+

+ Download: + https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.8.tar.gz +

+

+ MD5 sum: 17ac6969b2015386bcb5d278a08a40b5 +

+
+
+ Libtool (2.5.4) - 1,033 KB: +
+
+

+ Home page: https://www.gnu.org/software/libtool/ +

+

+ Download: https://ftp.gnu.org/gnu/libtool/libtool-2.5.4.tar.xz +

+

+ MD5 sum: 22e0a29df8af5fdde276ea3a7d351d30 +

+
+
+ Libxcrypt (4.4.38) - 612 KB: +
+
+

+ Home page: https://github.com/besser82/libxcrypt/ +

+

+ Download: + https://github.com/besser82/libxcrypt/releases/download/v4.4.38/libxcrypt-4.4.38.tar.xz +

+

+ MD5 sum: 1796a5d20098e9dd9e3f576803c83000 +

+
+
+ Linux (6.16.1) - 149,042 KB: +
+
+

+ Home page: https://www.kernel.org/ +

+

+ Download: + https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.16.1.tar.xz +

+

+ MD5 sum: 32d45755e4b39d06e9be58f6817445ee +

+
+

+ Note +

+

+ The Linux kernel is updated quite frequently, many + times due to discoveries of security vulnerabilities. + The latest available stable kernel version may be + used, unless the errata page says otherwise. +

+

+ For users with limited speed or expensive bandwidth + who wish to update the Linux kernel, a baseline + version of the package and patches can be downloaded + separately. This may save some time or cost for a + subsequent patch level upgrade within a minor + release. +

+
+
+
+ Lz4 (1.10.0) - 379 + KB: +
+
+

+ Home page: https://lz4.org/ +

+

+ Download: + https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz +

+

+ MD5 sum: dead9f5f1966d9ae56e1e32761e4e675 +

+
+
+ M4 (1.4.20) - 1,997 KB: +
+
+

+ Home page: https://www.gnu.org/software/m4/ +

+

+ Download: https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.xz +

+

+ MD5 sum: 6eb2ebed5b24e74b6e890919331d2132 +

+
+
+ Make (4.4.1) - 2,300 KB: +
+
+

+ Home page: https://www.gnu.org/software/make/ +

+

+ Download: https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz +

+

+ MD5 sum: c8469a3713cbbe04d955d4ae4be23eeb +

+
+
+ Man-DB (2.13.1) - 2,061 KB: +
+
+

+ Home page: https://www.nongnu.org/man-db/ +

+

+ Download: + https://download.savannah.gnu.org/releases/man-db/man-db-2.13.1.tar.xz +

+

+ MD5 sum: b6335533cbeac3b24cd7be31fdee8c83 +

+
+
+ Man-pages (6.15) - 1,817 KB: +
+
+

+ Home page: https://www.kernel.org/doc/man-pages/ +

+

+ Download: + https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.15.tar.xz +

+

+ MD5 sum: 16f68d70139dd2bbcae4102be4705753 +

+
+
+ MarkupSafe (3.0.2) - 21 KB: +
+
+

+ Home page: https://palletsprojects.com/p/markupsafe/ +

+

+ Download: + https://pypi.org/packages/source/M/MarkupSafe/markupsafe-3.0.2.tar.gz +

+

+ MD5 sum: cb0071711b573b155cc8f86e1de72167 +

+
+
+ Meson (1.8.3) - 2,282: +
+
+

+ Home page: https://mesonbuild.com +

+

+ Download: + https://github.com/mesonbuild/meson/releases/download/1.8.3/meson-1.8.3.tar.gz +

+

+ MD5 sum: 08221d2f515e759686f666ff6409a903 +

+
+
+ MPC (1.3.1) - 756 + KB: +
+
+

+ Home page: https://www.multiprecision.org/ +

+

+ Download: https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz +

+

+ MD5 sum: 5c9bc658c9fd0f940e8e3e0f09530c62 +

+
+
+ MPFR (4.2.2) - 1,471 KB: +
+
+

+ Home page: https://www.mpfr.org/ +

+

+ Download: https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.xz +

+

+ MD5 sum: 7c32c39b8b6e3ae85f25156228156061 +

+
+
+ Ncurses (6.5-20250809) - 3,703 KB: +
+
+

+ Home page: https://www.gnu.org/software/ncurses/ +

+

+ Download: + https://invisible-mirror.net/archives/ncurses/current/ncurses-6.5-20250809.tgz +

+

+ MD5 sum: 679987405412f970561cc85e1e6428a2 +

+
+
+ Ninja (1.13.1) - 286 KB: +
+
+

+ Home page: https://ninja-build.org/ +

+

+ Download: + https://github.com/ninja-build/ninja/archive/v1.13.1/ninja-1.13.1.tar.gz +

+

+ MD5 sum: c35f8f55f4cf60f1a916068d8f45a0f8 +

+
+
+ OpenSSL (3.5.2) - 51,934 KB: +
+
+

+ Home page: https://www.openssl-library.org/ +

+

+ Download: + https://github.com/openssl/openssl/releases/download/openssl-3.5.2/openssl-3.5.2.tar.gz +

+

+ MD5 sum: 890fc59f86fc21b5e4d1c031a698dbde +

+
+
+ Packaging (25.0) - 162 KB: +
+
+

+ Home page: https://pypi.org/project/packaging/ +

+

+ Download: + https://files.pythonhosted.org/packages/source/p/packaging/packaging-25.0.tar.gz +

+

+ MD5 sum: ab0ef21ddebe09d1803575120d3f99f8 +

+
+
+ Patch (2.8) - 886 + KB: +
+
+

+ Home page: https://savannah.gnu.org/projects/patch/ +

+

+ Download: https://ftp.gnu.org/gnu/patch/patch-2.8.tar.xz +

+

+ MD5 sum: 149327a021d41c8f88d034eab41c039f +

+
+
+ Perl (5.42.0) - 14,084 KB: +
+
+

+ Home page: https://www.perl.org/ +

+

+ Download: https://www.cpan.org/src/5.0/perl-5.42.0.tar.xz +

+

+ MD5 sum: 7a6950a9f12d01eb96a9d2ed2f4e0072 +

+
+
+ Pkgconf (2.5.1) - 321 KB: +
+
+

+ Home page: https://github.com/pkgconf/pkgconf +

+

+ Download: + https://distfiles.ariadne.space/pkgconf/pkgconf-2.5.1.tar.xz +

+

+ MD5 sum: 3291128c917fdb8fccd8c9e7784b643b +

+
+
+ Procps (4.0.5) - 1,483 KB: +
+
+

+ Home page: https://gitlab.com/procps-ng/procps/ +

+

+ Download: + https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.5.tar.xz +

+

+ MD5 sum: 90803e64f51f192f3325d25c3335d057 +

+
+
+ Psmisc (23.7) - 423 KB: +
+
+

+ Home page: https://gitlab.com/psmisc/psmisc +

+

+ Download: + https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.7.tar.xz +

+

+ MD5 sum: 53eae841735189a896d614cba440eb10 +

+
+
+ Python (3.13.7) - 22,236 KB: +
+
+

+ Home page: https://www.python.org/ +

+

+ Download: + https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz +

+

+ MD5 sum: 256cdb3bbf45cdce7499e52ba6c36ea3 +

+
+
+ Python Documentation (3.13.7) - + 10,183 KB: +
+
+

+ Download: + https://www.python.org/ftp/python/doc/3.13.7/python-3.13.7-docs-html.tar.bz2 +

+

+ MD5 sum: b84c0d81b2758398bb7f5b7411d3d908 +

+
+
+ Readline (8.3) - 3,340 KB: +
+
+

+ Home page: https://tiswww.case.edu/php/chet/readline/rltop.html +

+

+ Download: https://ftp.gnu.org/gnu/readline/readline-8.3.tar.gz +

+

+ MD5 sum: 25a73bfb2a3ad7146c5e9d4408d9f6cd +

+
+
+ Sed (4.9) - 1,365 + KB: +
+
+

+ Home page: https://www.gnu.org/software/sed/ +

+

+ Download: https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz +

+

+ MD5 sum: 6aac9b2dbafcd5b7a67a8a9bcb8036c3 +

+
+
+ Setuptools (80.9.0) - 1,290 KB: +
+
+

+ Home page: https://pypi.org/project/setuptools/ +

+

+ Download: + https://pypi.org/packages/source/s/setuptools/setuptools-80.9.0.tar.gz +

+

+ MD5 sum: 82e1d67883b713f9493659b50d13b436 +

+
+
+ Shadow (4.18.0) - 2,293 KB: +
+
+

+ Home page: https://github.com/shadow-maint/shadow/ +

+

+ Download: + https://github.com/shadow-maint/shadow/releases/download/4.18.0/shadow-4.18.0.tar.xz +

+

+ MD5 sum: 30ef46f54363db1d624587be68794ef2 +

+
+
+ Sysklogd (2.7.2) - 474 KB: +
+
+

+ Home page: https://www.infodrom.org/projects/sysklogd/ +

+

+ Download: + https://github.com/troglobit/sysklogd/releases/download/v2.7.2/sysklogd-2.7.2.tar.gz +

+

+ MD5 sum: af60786956a2dc84054fbf46652e515e +

+
+
+ Systemd (257.8) - 16,002 KB: +
+
+

+ Home page: https://www.freedesktop.org/wiki/Software/systemd/ +

+

+ Download: + https://github.com/systemd/systemd/archive/v257.8/systemd-257.8.tar.gz +

+

+ MD5 sum: 25fe5d328e22641254761f1baa74cee0 +

+
+
+ Systemd Man Pages (257.8) - + 736 KB: +
+
+

+ Home page: https://www.freedesktop.org/wiki/Software/systemd/ +

+

+ Download: + https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-257.8.tar.xz +

+

+ MD5 sum: a44063e2ec0cf4adfd2ed5c9e9e095c5 +

+
+

+ Note +

+

+ The Linux From Scratch team generates its own tarball + of the man pages using the systemd source. This is + done in order to avoid unnecessary dependencies. +

+
+
+
+ SysVinit (3.14) - 236 KB: +
+
+

+ Home page: https://savannah.nongnu.org/projects/sysvinit +

+

+ Download: + https://github.com/slicer69/sysvinit/releases/download/3.14/sysvinit-3.14.tar.xz +

+

+ MD5 sum: bc6890b975d19dc9db42d0c7364dd092 +

+
+
+ Tar (1.35) - 2,263 + KB: +
+
+

+ Home page: https://www.gnu.org/software/tar/ +

+

+ Download: https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz +

+

+ MD5 sum: a2d8042658cfd8ea939e6d911eaf4152 +

+
+
+ Tcl (8.6.16) - 11,406 KB: +
+
+

+ Home page: https://tcl.sourceforge.net/ +

+

+ Download: + https://downloads.sourceforge.net/tcl/tcl8.6.16-src.tar.gz +

+

+ MD5 sum: eaef5d0a27239fb840f04af8ec608242 +

+
+
+ Tcl Documentation (8.6.16) - + 1,169 KB: +
+
+

+ Download: + https://downloads.sourceforge.net/tcl/tcl8.6.16-html.tar.gz +

+

+ MD5 sum: 750c221bcb6f8737a6791c1fbe98b684 +

+
+
+ Texinfo (7.2) - 6,259 KB: +
+
+

+ Home page: https://www.gnu.org/software/texinfo/ +

+

+ Download: https://ftp.gnu.org/gnu/texinfo/texinfo-7.2.tar.xz +

+

+ MD5 sum: 11939a7624572814912a18e76c8d8972 +

+
+
+ Time Zone Data (2025b) - 454 KB: +
+
+

+ Home page: https://www.iana.org/time-zones +

+

+ Download: + https://www.iana.org/time-zones/repository/releases/tzdata2025b.tar.gz +

+

+ MD5 sum: ad65154c48c74a9b311fe84778c5434f +

+
+
+ Udev-lfs Tarball (udev-lfs-20230818) - + 10 KB: +
+
+

+ Download: + https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz +

+

+ MD5 sum: acd4360d8a5c3ef320b9db88d275dae6 +

+
+
+ Util-linux (2.41.1) - 9,382 KB: +
+
+

+ Home page: + https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/ +

+

+ Download: + https://www.kernel.org/pub/linux/utils/util-linux/v2.41/util-linux-2.41.1.tar.xz +

+

+ MD5 sum: 7e5e68845e2f347cf96f5448165f1764 +

+
+
+ Vim (9.1.1629) - 18,317 KB: +
+
+

+ Home page: https://www.vim.org +

+

+ Download: + https://github.com/vim/vim/archive/v9.1.1629/vim-9.1.1629.tar.gz +

+

+ MD5 sum: 4f856c3233c1c4570bc17572e4f9e8e4 +

+
+

+ Note +

+

+ The version of vim changes daily. To get the latest + version, go to https://github.com/vim/vim/tags. +

+
+
+
+ Wheel (0.46.1) - 54 KB: +
+
+

+ Home page: https://pypi.org/project/wheel/ +

+

+ Download: + https://pypi.org/packages/source/w/wheel/wheel-0.46.1.tar.gz +

+

+ MD5 sum: 65e09ee84af36821e3b1e9564aa91bd5 +

+
+
+ XML::Parser (2.47) - 276 KB: +
+
+

+ Home page: https://github.com/chorny/XML-Parser +

+

+ Download: + https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz +

+

+ MD5 sum: 89a8e82cfd2ad948b349c0a69c494463 +

+
+
+ Xz Utils (5.8.1) - 1,428 KB: +
+
+

+ Home page: https://tukaani.org/xz +

+

+ Download: + https://github.com//tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.xz +

+

+ MD5 sum: cf5e1feb023d22c6bdaa30e84ef3abe3 +

+
+
+ Zlib (1.3.1) - 1,478 KB: +
+
+

+ Home page: https://zlib.net/ +

+

+ Download: https://zlib.net/fossils/zlib-1.3.1.tar.gz +

+

+ MD5 sum: 9855b6d802d7fe5b7bd5b196a2271655 +

+
+
+ Zstd (1.5.7) - 2,378 KB: +
+
+

+ Home page: https://facebook.github.io/zstd/ +

+

+ Download: + https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz +

+

+ MD5 sum: 780fc1896922b1bc52a4e90980cdda48 +

+
+
+
+
+

+ Total size of these packages: about NaN MB +

+
+
+
+
+

+ 3.3. Needed Patches +

+
+
+
+
+

+ In addition to the packages, several patches are also required. + These patches correct any mistakes in the packages that should + be fixed by the maintainer. The patches also make small + modifications to make the packages easier to work with. The + following patches will be needed to build an LFS system: +

+
+
+
+
+ Bzip2 Documentation Patch - + 1.6 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/bzip2-1.0.8-install_docs-1.patch +

+

+ MD5 sum: 6a5ac7e89b791aae556de0f745916f7f +

+
+
+ Coreutils Upstream Fix Patch - + 4.1 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/coreutils-9.7-upstream_fix-1.patch +

+

+ MD5 sum: 96382a5aa85d6651a74f94ffb61785d9 +

+
+
+ Coreutils Internationalization Fixes + Patch - 159 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/coreutils-9.7-i18n-1.patch +

+

+ MD5 sum: 33ebfad32b2dfb8417c3335c08671206 +

+
+
+ Expect GCC15 Patch - 12 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/expect-5.45.4-gcc15-1.patch +

+

+ MD5 sum: 0ca4d6bb8d572fbcdb13cb36cd34833e +

+
+
+ Glibc FHS Patch - 2.8 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/glibc-2.42-fhs-1.patch +

+

+ MD5 sum: 9a5997c3452909b1769918c759eff8a2 +

+
+
+ Kbd Backspace/Delete Fix Patch - + 12 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/kbd-2.8.0-backspace-1.patch +

+

+ MD5 sum: f75cca16a38da6caa7d52151f7136895 +

+
+
+ SysVinit Consolidated Patch - + 2.5 KB: +
+
+

+ Download: + https://www.linuxfromscratch.org/patches/lfs/12.4/sysvinit-3.14-consolidated-1.patch +

+

+ MD5 sum: 3af8fd8e13cad481eeeaa48be4247445 +

+
+
+
+
+

+ Total size of these patches: about 194 KB +

+

+ In addition to the above required patches, there exist a number + of optional patches created by the LFS community. These + optional patches solve minor problems or enable functionality + that is not enabled by default. Feel free to peruse the patches + database located at https://www.linuxfromscratch.org/patches/downloads/ + and acquire any additional patches to suit your system needs. +

+
+
+
+
+
+

+ Chapter 4. Final + Preparations +

+
+
+
+
+
+
+
+

+ 4.1. Introduction +

+
+
+
+
+

+ In this chapter, we will perform a few additional tasks to + prepare for building the temporary system. We will create a set + of directories in $LFS (in which + we will install the temporary tools), add an unprivileged user, + and create an appropriate build environment for that user. We + will also explain the units of time (“SBUs”) we use to + measure how long it takes to build LFS packages, and provide + some information about package test suites. +

+
+
+
+
+

+ 4.2. Creating a + Limited Directory Layout in the LFS Filesystem +

+
+
+
+
+

+ In this section, we begin populating the LFS filesystem with + the pieces that will constitute the final Linux system. The + first step is to create a limited directory hierarchy, so that + the programs compiled in Chapter 6 + (as well as glibc and libstdc++ in Chapter 5) + can be installed in their final location. We do this so those + temporary programs will be overwritten when the final versions + are built in Chapter 8. +

+

+ Create the required directory layout by issuing the following + commands as root: +

+
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
+
+for i in bin lib sbin; do
+  ln -sv usr/$i $LFS/$i
+done
+
+case $(uname -m) in
+  x86_64) mkdir -pv $LFS/lib64 ;;
+esac
+

+ Programs in Chapter 6 + will be compiled with a cross-compiler (more details can be + found in section Toolchain Technical Notes). + This cross-compiler will be installed in a special directory, + to separate it from the other programs. Still acting as + root, create that directory + with this command: +

+
mkdir -pv $LFS/tools
+
+

+ Note +

+

+ The LFS editors have deliberately decided not to use a + /usr/lib64 directory. Several + steps are taken to be sure the toolchain will not use it. If + for any reason this directory appears (either because you + made an error in following the instructions, or because you + installed a binary package that created it after finishing + LFS), it may break your system. You should always be sure + this directory does not exist. +

+
+
+
+
+
+

+ 4.3. Adding the LFS User +

+
+
+
+
+

+ When logged in as user root, + making a single mistake can damage or destroy a system. + Therefore, the packages in the next two chapters are built as + an unprivileged user. You could use your own user name, but to + make it easier to set up a clean working environment, we will + create a new user called lfs as + a member of a new group (also named lfs) and run commands as lfs during the installation process. As + root, issue the following + commands to add the new user: +

+
groupadd lfs
+useradd -s /bin/bash -g lfs -m -k /dev/null lfs
+
+

+ This is what the command line options mean: +

+
+
+ -s + /bin/bash +
+
+

+ This makes bash the default shell + for user lfs. +

+
+
+ -g + lfs +
+
+

+ This option adds user lfs + to group lfs. +

+
+
+ -m +
+
+

+ This creates a home directory for lfs. +

+
+
+ -k + /dev/null +
+
+

+ This parameter prevents possible copying of files from a + skeleton directory (the default is /etc/skel) by changing the input + location to the special null device. +

+
+
+ lfs +
+
+

+ This is the name of the new user. +

+
+
+
+

+ If you want to log in as lfs or + switch to lfs from a + non-root user (as opposed to + switching to user lfs when + logged in as root, which does + not require the lfs user to + have a password), you need to set a password for lfs. Issue the following command as the + root user to set the password: +

+
passwd lfs
+

+ Grant lfs full access to all + the directories under $LFS by + making lfs the owner: +

+
chown -v lfs $LFS/{usr{,/*},var,etc,tools}
+case $(uname -m) in
+  x86_64) chown -v lfs $LFS/lib64 ;;
+esac
+
+

+ Note +

+

+ In some host systems, the following su command does not + complete properly and suspends the login for the lfs user to the background. If the prompt + "lfs:~$" does not appear immediately, entering the + fg command will + fix the issue. +

+
+

+ Next, start a shell running as user lfs. This can be done by logging in as + lfs on a virtual console, or + with the following substitute/switch user command: +

+
su - lfs
+

+ The “-” instructs + su to start a + login shell as opposed to a non-login shell. The difference + between these two types of shells is described in detail in + bash(1) and + info bash. +

+
+
+
+
+

+ 4.4. Setting Up the + Environment +

+
+
+
+
+

+ Set up a good working environment by creating two new startup + files for the bash shell. While logged in + as user lfs, issue the + following command to create a new .bash_profile: +

+
cat > ~/.bash_profile << "EOF"
+exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
+EOF
+

+ When logged on as user lfs, or + when switched to the lfs user + using an su + command with the “-” option, the + initial shell is a login + shell which reads the /etc/profile of the host (probably containing + some settings and environment variables) and then .bash_profile. The exec env -i.../bin/bash + command in the .bash_profile file + replaces the running shell with a new one with a completely + empty environment, except for the HOME, TERM, and + PS1 variables. This ensures that no + unwanted and potentially hazardous environment variables from + the host system leak into the build environment. +

+

+ The new instance of the shell is a non-login shell, which does not + read, and execute, the contents of the /etc/profile or .bash_profile files, but rather reads, and + executes, the .bashrc file + instead. Create the .bashrc file + now: +

+
cat > ~/.bashrc << "EOF"
+set +h
+umask 022
+LFS=/mnt/lfs
+LC_ALL=POSIX
+LFS_TGT=$(uname -m)-lfs-linux-gnu
+PATH=/usr/bin
+if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
+PATH=$LFS/tools/bin:$PATH
+CONFIG_SITE=$LFS/usr/share/config.site
+export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
+EOF
+
+

+ The meaning of the settings in .bashrc +

+
+
+ set + +h +
+
+

+ The set +h + command turns off bash's hash function. + Hashing is ordinarily a useful feature—bash uses a hash table + to remember the full path to executable files to avoid + searching the PATH time and + again to find the same executable. However, the new tools + should be used as soon as they are installed. Switching + off the hash function forces the shell to search the + PATH whenever a program is to + be run. As such, the shell will find the newly compiled + tools in $LFS/tools/bin as + soon as they are available without remembering a previous + version of the same program provided by the host distro, + in /usr/bin or /bin. +

+
+
+ umask + 022 +
+
+

+ Setting the umask as we've already explained in Section 2.6, + “Setting the $LFS Variable and the Umask.” +

+
+
+ LFS=/mnt/lfs +
+
+

+ The LFS variable should be set + to the chosen mount point. +

+
+
+ LC_ALL=POSIX +
+
+

+ The LC_ALL variable controls + the localization of certain programs, making their + messages follow the conventions of a specified country. + Setting LC_ALL to “POSIX” or + “C” + (the two are equivalent) ensures that everything will + work as expected in the cross-compilation environment. +

+
+
+ LFS_TGT=$(uname + -m)-lfs-linux-gnu +
+
+

+ The LFS_TGT variable sets a + non-default, but compatible machine description for use + when building our cross-compiler and linker and when + cross-compiling our temporary toolchain. More information + is provided by Toolchain Technical + Notes. +

+
+
+ PATH=/usr/bin +
+
+

+ Many modern Linux distributions have merged /bin and /usr/bin. When this is the case, the + standard PATH variable should + be set to /usr/bin/ for the + Chapter 6 + environment. When this is not the case, the following + line adds /bin to the path. +

+
+
+ if [ ! -L + /bin ]; then PATH=/bin:$PATH; fi +
+
+

+ If /bin is not a symbolic + link, it must be added to the PATH variable. +

+
+
+ PATH=$LFS/tools/bin:$PATH +
+
+

+ By putting $LFS/tools/bin + ahead of the standard PATH, + the cross-compiler installed at the beginning of + Chapter 5 + is picked up by the shell immediately after its + installation. This, combined with turning off hashing, + limits the risk that the compiler from the host is used + instead of the cross-compiler. +

+
+
+ CONFIG_SITE=$LFS/usr/share/config.site +
+
+

+ In Chapter 5 + and + Chapter 6, if this variable is not set, + configure + scripts may attempt to load configuration items specific + to some distributions from /usr/share/config.site on the host + system. Override it to prevent potential contamination + from the host. +

+
+
+ export + ... +
+
+

+ While the preceding commands have set some variables, in + order to make them visible within any sub-shells, we + export them. +

+
+
+
+
+

+ Important +

+

+ Several commercial distributions add an undocumented + instantiation of /etc/bash.bashrc to the initialization of + bash. This file + has the potential to modify the lfs user's environment in ways that can + affect the building of critical LFS packages. To make sure + the lfs user's environment is + clean, check for the presence of /etc/bash.bashrc and, if present, move it + out of the way. As the root + user, run: +

+
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
+

+ When the lfs user is no + longer needed (at the beginning of + Chapter 7), you may safely restore /etc/bash.bashrc (if desired). +

+

+ Note that the LFS Bash package we will build in Section 8.36, “Bash-5.3” is + not configured to load or execute /etc/bash.bashrc, so this file is useless + on a completed LFS system. +

+
+

+ For many modern systems with multiple processors (or cores) the + compilation time for a package can be reduced by performing a + "parallel make" by telling the make program how many processors + are available via a command line option or an environment + variable. For instance, an Intel Core i9-13900K processor has 8 + P (performance) cores and 16 E (efficiency) cores, and a P core + can simultaneously run two threads so each P core are modeled + as two logical cores by the Linux kernel. As the result there + are 32 logical cores in total. One obvious way to use all these + logical cores is allowing make to spawn up to 32 build + jobs. This can be done by passing the -j32 option to make: +

+
make -j32
+

+ Or set the MAKEFLAGS environment + variable and its content will be automatically used by + make as command + line options: +

+
export MAKEFLAGS=-j32
+
+

+ Important +

+

+ Never pass a -j + option without a number to make or set such an option + in MAKEFLAGS. Doing so will allow + make to spawn + infinite build jobs and cause system stability problems. +

+
+

+ To use all logical cores available for building packages in + Chapter 5 + and Chapter 6, + set MAKEFLAGS now in .bashrc: +

+
cat >> ~/.bashrc << "EOF"
+export MAKEFLAGS=-j$(nproc)
+EOF
+

+ Replace $(nproc) with + the number of logical cores you want to use if you don't want + to use all the logical cores. +

+

+ Finally, to ensure the environment is fully prepared for + building the temporary tools, force the bash shell to read the new + user profile: +

+
source ~/.bash_profile
+
+
+
+
+

+ 4.5. About SBUs +

+
+
+
+
+

+ Many people would like to know beforehand approximately how + long it takes to compile and install each package. Because + Linux From Scratch can be built on many different systems, it + is impossible to provide absolute time estimates. The biggest + package (gcc) will take approximately 5 minutes on the fastest + systems, but could take days on slower systems! Instead of + providing actual times, the Standard Build Unit (SBU) measure + will be used instead. +

+

+ The SBU measure works as follows. The first package to be + compiled is binutils in Chapter 5. + The time it takes to compile using one core is what we will + refer to as the Standard Build Unit or SBU. All other compile + times will be expressed in terms of this unit of time. +

+

+ For example, consider a package whose compilation time is 4.5 + SBUs. This means that if your system took 4 minutes to compile + and install the first pass of binutils, it will take + approximately 18 minutes + to build the example package. Fortunately, most build times are + shorter than one SBU. +

+

+ SBUs are not entirely accurate because they depend on many + factors, including the host system's version of GCC. They are + provided here to give an estimate of how long it might take to + install a package, but the numbers can vary by as much as + dozens of minutes in some cases. +

+

+ On some newer systems, the motherboard is capable of + controlling the system clock speed. This can be controlled with + a command such as powerprofilesctl. This is not + available in LFS, but may be available on the host distro. + After LFS is complete, it can be added to a system with the + procedures at the + BLFS power-profiles-daemon page. Before measuring the build + time of any package it is advisable to use a system power + profile set for maximum performance (and maximum power + consumption). Otherwise the measured SBU value may be + inaccurate because the system may react differently when + building binutils-pass1 or other + packages. Be aware that a significant inaccuracy can still show + up even if the same profile is used for both packages because + the system may respond slower if the system is idle when + starting the build procedure. Setting the power profile to + “performance” will minimize this problem. + And obviously doing so will also make the system build LFS + faster. +

+

+ If powerprofilesctl is + available, issue the powerprofilesctl set + performance command to select the performance profile. Some distros provides the + tuned-adm command + for managing the profiles instead of powerprofilesctl, on these + distros issue the tuned-adm + profile throughput-performance command to + select the throughput-performance + profile. +

+
+

+ Note +

+

+ When multiple processors are used in this way, the SBU units + in the book will vary even more than they normally would. In + some cases, the make step will simply fail. Analyzing the + output of the build process will also be more difficult + because the lines from different processes will be + interleaved. If you run into a problem with a build step, + revert to a single processor build to properly analyze the + error messages. +

+

+ The times presented here for all packages (except binutils-pass1 which + is based on one core) are based upon using four cores (-j4). + The times in Chapter 8 also include the time to run the + regression tests for the package unless specified otherwise. +

+
+
+
+
+
+

+ 4.6. About the Test + Suites +

+
+
+
+
+

+ Most packages provide a test suite. Running the test suite for + a newly built package is a good idea because it can provide a + “sanity + check” indicating that everything compiled + correctly. A test suite that passes its set of checks usually + proves that the package is functioning as the developer + intended. It does not, however, guarantee that the package is + totally bug free. +

+

+ Some test suites are more important than others. For example, + the test suites for the core toolchain packages—GCC, binutils, + and glibc—are of the utmost importance due to their central + role in a properly functioning system. The test suites for GCC + and glibc can take a very long time to complete, especially on + slower hardware, but are strongly recommended. +

+
+

+ Note +

+

+ Running the test suites in Chapter 5 + and Chapter 6 + is pointless; since the test programs are compiled with a + cross-compiler, they probably can't run on the build host. +

+
+

+ A common issue with running the test suites for binutils and + GCC is running out of pseudo terminals (PTYs). This can result + in a large number of failing tests. This may happen for several + reasons, but the most likely cause is that the host system does + not have the devpts file system + set up correctly. This issue is discussed in greater detail at + https://www.linuxfromscratch.org/lfs/faq.html#no-ptys. +

+

+ Sometimes package test suites will fail for reasons which the + developers are aware of and have deemed non-critical. Consult + the logs located at https://www.linuxfromscratch.org/lfs/build-logs/12.4/ + to verify whether or not these failures are expected. This site + is valid for all test suites throughout this book. +

+
+
+
+
+
+
+

+ Part III. Building the + LFS Cross Toolchain and Temporary Tools +

+
+
+
+
+
+
+
+

+ Important Preliminary Material +

+
+
+
+
+
+
+
+

+ Introduction +

+
+
+
+
+

+ This part is divided into three stages: first, building a cross + compiler and its associated libraries; second, using this cross + toolchain to build several utilities in a way that isolates + them from the host distribution; and third, entering the chroot + environment (which further improves host isolation) and + constructing the remaining tools needed to build the final + system. +

+
+

+ Important +

+

+ This is where the real work of building a new system begins. + Be very careful to follow the instructions exactly as the + book shows them. You should try to understand what each + command does, and no matter how eager you are to finish your + build, you should refrain from blindly typing the commands as + shown. Read the documentation when there is something you do + not understand. Also, keep track of your typing and of the + output of commands, by using the tee utility to send the + terminal output to a file. This makes debugging easier if + something goes wrong. +

+
+

+ The next section is a technical introduction to the build + process, while the following one presents very important general + instructions. +

+
+
+
+
+

+ Toolchain Technical Notes +

+
+
+
+
+

+ This section explains some of the rationale and technical + details behind the overall build method. Don't try to + immediately understand everything in this section. Most of this + information will be clearer after performing an actual build. + Come back and re-read this chapter at any time during the build + process. +

+

+ The overall goal of Chapter 5 + and Chapter 6 + is to produce a temporary area containing a set of tools that + are known to be good, and that are isolated from the host + system. By using the chroot command, the + compilations in the remaining chapters will be isolated within + that environment, ensuring a clean, trouble-free build of the + target LFS system. The build process has been designed to + minimize the risks for new readers, and to provide the most + educational value at the same time. +

+

+ This build process is based on cross-compilation. Cross-compilation + is normally used to build a compiler and its associated + toolchain for a machine different from the one that is used for + the build. This is not strictly necessary for LFS, since the + machine where the new system will run is the same as the one + used for the build. But cross-compilation has one great + advantage: anything that is cross-compiled cannot depend on the + host environment. +

+
+

+ About + Cross-Compilation +

+
+

+ Note +

+

+ The LFS book is not (and does not contain) a general + tutorial to build a cross- (or native) toolchain. Don't use + the commands in the book for a cross-toolchain for some + purpose other than building LFS, unless you really + understand what you are doing. +

+

+ It's known installing GCC pass 2 will break the + cross-toolchain. We don't consider it a bug because GCC + pass 2 is the last package to be cross-compiled in the + book, and we won't “fix” it until we really need to + cross-compile some package after GCC pass 2 in the future. +

+
+

+ Cross-compilation involves some concepts that deserve a + section of their own. Although this section may be omitted on + a first reading, coming back to it later will help you gain a + fuller understanding of the process. +

+

+ Let us first define some terms used in this context. +

+
+
+
+ The build +
+
+

+ is the machine where we build programs. Note that this + machine is also referred to as the “host.” +

+
+
+ The host +
+
+

+ is the machine/system where the built programs will + run. Note that this use of “host” is not + the same as in other sections. +

+
+
+ The target +
+
+

+ is only used for compilers. It is the machine the + compiler produces code for. It may be different from + both the build and the host. +

+
+
+
+

+ As an example, let us imagine the following scenario + (sometimes referred to as “Canadian Cross”). We have a compiler on + a slow machine only, let's call it machine A, and the + compiler ccA. We also have a fast machine (B), but no + compiler for (B), and we want to produce code for a third, + slow machine (C). We will build a compiler for machine C in + three stages. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Stage + + Build + + Host + + Target + + Action +
+ 1 + + A + + A + + B + + Build cross-compiler cc1 using ccA on machine A. +
+ 2 + + A + + B + + C + + Build cross-compiler cc2 using cc1 on machine A. +
+ 3 + + B + + C + + C + + Build compiler ccC using cc2 on machine B. +
+
+

+ Then, all the programs needed by machine C can be compiled + using cc2 on the fast machine B. Note that unless B can run + programs produced for C, there is no way to test the newly + built programs until machine C itself is running. For + example, to run a test suite on ccC, we may want to add a + fourth stage: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Stage + + Build + + Host + + Target + + Action +
+ 4 + + C + + C + + C + + Rebuild and test ccC using ccC on machine C. +
+
+

+ In the example above, only cc1 and cc2 are cross-compilers, + that is, they produce code for a machine different from the + one they are run on. The other compilers ccA and ccC produce + code for the machine they are run on. Such compilers are + called native + compilers. +

+
+
+

+ Implementation of + Cross-Compilation for LFS +

+
+

+ Note +

+

+ All the cross-compiled packages in this book use an + autoconf-based building system. The autoconf-based building + system accepts system types in the form + cpu-vendor-kernel-os, referred to as the system triplet. + Since the vendor field is often irrelevant, autoconf lets + you omit it. +

+

+ An astute reader may wonder why a “triplet” refers + to a four component name. The kernel field and the os field + began as a single “system” field. Such a three-field + form is still valid today for some systems, for example, + x86_64-unknown-freebsd. But + two systems can share the same kernel and still be too + different to use the same triplet to describe them. For + example, Android running on a mobile phone is completely + different from Ubuntu running on an ARM64 server, even + though they are both running on the same type of CPU + (ARM64) and using the same kernel (Linux). +

+

+ Without an emulation layer, you cannot run an executable + for a server on a mobile phone or vice versa. So the + “system” field has been divided into + kernel and os fields, to designate these systems + unambiguously. In our example, the Android system is + designated aarch64-unknown-linux-android, and the + Ubuntu system is designated aarch64-unknown-linux-gnu. +

+

+ The word “triplet” remains embedded in the + lexicon. A simple way to determine your system triplet is + to run the config.guess script that + comes with the source for many packages. Unpack the + binutils sources, run the script ./config.guess, and note + the output. For example, for a 32-bit Intel processor the + output will be i686-pc-linux-gnu. On a 64-bit + system it will be x86_64-pc-linux-gnu. On most + Linux systems the even simpler gcc -dumpmachine command + will give you similar information. +

+

+ You should also be aware of the name of the platform's + dynamic linker, often referred to as the dynamic loader + (not to be confused with the standard linker ld that is part of + binutils). The dynamic linker provided by package glibc + finds and loads the shared libraries needed by a program, + prepares the program to run, and then runs it. The name of + the dynamic linker for a 32-bit Intel machine is + ld-linux.so.2; it's + ld-linux-x86-64.so.2 on + 64-bit systems. A sure-fire way to determine the name of + the dynamic linker is to inspect a random binary from the + host system by running: readelf -l <name of binary> | grep + interpreter and noting the output. The + authoritative reference covering all platforms is in + a Glibc wiki + page. +

+
+

+ There are two key points for a cross-compilation: +

+
+
    +
  • +

    + When producing and processing the machine code supposed + to be executed on “the host,” the cross-toolchain + must be used. Note that the native toolchain from + “the + build” may be still invoked to generate + machine code supposed to be executed on “the build.” + For example, the build system may compile a generator + with the native toolchain, then generate a C source + file with the generator, and finally compile the C + source file with the cross-toolchain so the generated + code will be able to run on “the host.” +

    +

    + With an autoconf-based build system, this requirement + is ensured by using the --host switch to specify + “the + host” triplet. With this switch the build + system will use the toolchain components prefixed with + <the host + triplet> for generating and + processing the machine code for “the host”; + e.g. the compiler will be <the + host triplet>-gcc and + the readelf tool will be + <the host + triplet>-readelf. +

    +
  • +
  • +

    + The build system should not attempt to run any + generated machine code supposed to be executed on + “the + host.” For example, when building a + utility natively, its man page can be generated by + running the utility with the --help switch and + processing the output, but generally it's not possible + to do so for a cross-compilation as the utility may + fail to run on “the build”: it's obviously + impossible to run ARM64 machine code on a x86 CPU + (without an emulator). +

    +

    + With an autoconf-based build system, this requirement + is satisfied in “the cross-compilation mode” where + the optional features requiring to run machine code for + “the + host” during the build time are disabled. + When “the + host” triplet is explicitly specified, + “the + cross-compilation mode” is enabled if and + only if either the configure script + fails to run a dummy program compiled into “the host” + machine code, or “the build” triplet is explicitly + specified via the --build switch and it's + different from “the host” triplet. +

    +
  • +
+
+

+ In order to cross-compile a package for the LFS temporary + system, the name of the system triplet is slightly adjusted + by changing the "vendor" field in the LFS_TGT variable so it says "lfs" and + LFS_TGT is then specified as + “the + host” triplet via --host, so the cross-toolchain + will be used for generating and processing the machine code + running as a part of the LFS temporary system. And, we also + need to enable “the + cross-compilation mode”: despite “the host” machine + code, i.e. the machine code for the LFS temporary system, is + able to execute on the current CPU, it may refer to a library + not available on the “the build” (the host distro), or some + code or data non-exist or defined differently in the library + even if it happens to be available. When cross-compiling a + package for the LFS temporary system, we cannot rely on the + configure + script to detect this issue with the dummy program: the dummy + only uses a few components in libc that the host distro libc likely provides (unless, maybe the + host distro uses a different libc implementation like Musl), so it + won't fail like how the really useful programs would likely. + Thus we must explicitly specify “the build” triplet + to enable “the + cross-compilation mode.” The value we use is + just the default, i.e. the original system triplet from + config.guess + output, but “the + cross-compilation mode” depends on an explicit + specification as we've discussed. +

+

+ We use the --with-sysroot option when + building the cross-linker and cross-compiler, to tell them + where to find the needed files for “the host.” This + nearly ensures that none of the other programs built in + Chapter 6 + can link to libraries on “the build.” The word “nearly” is used + because libtool, a “compatibility” + wrapper of the compiler and the linker for autoconf-based + build systems, can try to be too clever and mistakenly pass + options allowing the linker to find libraries of “the build.” To + prevent this fallout, we need to delete the libtool archive + (.la) files and fix up an + outdated libtool copy shipped with the Binutils code. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Stage + + Build + + Host + + Target + + Action +
+ 1 + + pc + + pc + + lfs + + Build cross-compiler cc1 using cc-pc on pc. +
+ 2 + + pc + + lfs + + lfs + + Build compiler cc-lfs using cc1 on pc. +
+ 3 + + lfs + + lfs + + lfs + + Rebuild (and maybe test) cc-lfs using cc-lfs on lfs. +
+
+

+ In the preceding table, “on pc” means the commands are run on a + machine using the already installed distribution. + “On + lfs” means the commands are run in a chrooted + environment. +

+

+ This is not yet the end of the story. The C language is not + merely a compiler; it also defines a standard library. In + this book, the GNU C library, named glibc, is used (there is + an alternative, "musl"). This library must be compiled for + the LFS machine; that is, using the cross-compiler cc1. But + the compiler itself uses an internal library providing + complex subroutines for functions not available in the + assembler instruction set. This internal library is named + libgcc, and it must be linked to the glibc library to be + fully functional. Furthermore, the standard library for C++ + (libstdc++) must also be linked with glibc. The solution to + this chicken and egg problem is first to build a degraded + cc1-based libgcc, lacking some functionalities such as + threads and exception handling, and then to build glibc using + this degraded compiler (glibc itself is not degraded), and + also to build libstdc++. This last library will lack some of + the functionality of libgcc. +

+

+ The upshot of the preceding paragraph is that cc1 is unable + to build a fully functional libstdc++ with the degraded + libgcc, but cc1 is the only compiler available for building + the C/C++ libraries during stage 2. As we've discussed, we + cannot run cc-lfs on pc (the host distro) because it may + require some library, code, or data not available on + “the + build” (the host distro). So when we build gcc + stage 2, we override the library search path to link + libstdc++ against the newly rebuilt libgcc instead of the + old, degraded build. This makes the rebuilt libstdc++ fully + functional. +

+

+ In Chapter 8 + (or “stage + 3”), all the packages needed for the LFS system + are built. Even if a package has already been installed into + the LFS system in a previous chapter, we still rebuild the + package. The main reason for rebuilding these packages is to + make them stable: if we reinstall an LFS package on a + completed LFS system, the reinstalled content of the package + should be the same as the content of the same package when + first installed in Chapter 8. + The temporary packages installed in Chapter 6 + or + Chapter 7 cannot satisfy this requirement, because + some optional features of them are disabled because of either + the missing dependencies or the “cross-compilation + mode.” Additionally, a minor reason for + rebuilding the packages is to run the test suites. +

+
+
+

+ Other + Procedural Details +

+

+ The cross-compiler will be installed in a separate + $LFS/tools directory, since it + will not be part of the final system. +

+

+ Binutils is installed first because the configure runs of both gcc + and glibc perform various feature tests on the assembler and + linker to determine which software features to enable or + disable. This is more important than one might realize at + first. An incorrectly configured gcc or glibc can result in a + subtly broken toolchain, where the impact of such breakage + might not show up until near the end of the build of an + entire distribution. A test suite failure will usually + highlight this error before too much additional work is + performed. +

+

+ Binutils installs its assembler and linker in two locations, + $LFS/tools/bin and $LFS/tools/$LFS_TGT/bin. The tools in one + location are hard linked to the other. An important facet of + the linker is its library search order. Detailed information + can be obtained from ld by passing it the + --verbose flag. For + example, $LFS_TGT-ld --verbose + | grep SEARCH will illustrate the current + search paths and their order. (Note that this example can be + run as shown only while logged in as user lfs. If you come back to this page later, + replace $LFS_TGT-ld with + ld). +

+

+ The next package installed is gcc. An example of what can be + seen during its run of configure is: +

+
checking what assembler to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/as
+checking what linker to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/ld
+

+ This is important for the reasons mentioned above. It also + demonstrates that gcc's configure script does not search the + PATH directories to find which tools to use. However, during + the actual operation of gcc itself, the same search + paths are not necessarily used. To find out which standard + linker gcc will + use, run: $LFS_TGT-gcc + -print-prog-name=ld. (Again, remove the + $LFS_TGT- + prefix if coming back to this later.) +

+

+ Detailed information can be obtained from gcc by passing it the + -v command line + option while compiling a program. For example, $LFS_TGT-gcc -v example.c (or + without $LFS_TGT- if coming back + later) will show detailed information about the preprocessor, + compilation, and assembly stages, including gcc's search paths for + included headers and their order. +

+

+ Next up: sanitized Linux API headers. These allow the + standard C library (glibc) to interface with features that + the Linux kernel will provide. +

+

+ Next comes glibc. This is the first package that we + cross-compile. We use the --host=$LFS_TGT option to make + the build system to use those tools prefixed with + $LFS_TGT-, and the --build=$(../scripts/config.guess) + option to enable “the + cross-compilation mode” as we've discussed. The + DESTDIR variable is used to force + installation into the LFS file system. +

+

+ As mentioned above, the standard C++ library is compiled + next, followed in Chapter 6 + by other programs that must be cross-compiled to break + circular dependencies at build time. The steps for those + packages are similar to the steps for glibc. +

+

+ At the end of Chapter 6 + the native LFS compiler is installed. First binutils-pass2 is + built, in the same DESTDIR + directory as the other programs, then the second pass of gcc + is constructed, omitting some non-critical libraries. +

+

+ Upon entering the chroot environment in + Chapter 7, the temporary installations of programs + needed for the proper operation of the toolchain are + performed. From this point onwards, the core toolchain is + self-contained and self-hosted. In Chapter 8, + final versions of all the packages needed for a fully + functional system are built, tested, and installed. +

+
+
+
+
+
+

+ General Compilation + Instructions +

+
+
+
+
+
+

+ Caution +

+

+ During a development cycle of LFS, the instructions in the + book are often modified to adapt for a package update or take + the advantage of new features from updated packages. Mixing + up the instructions of different versions of the LFS book can + cause subtle breakages. This kind of issue is generally a + result from reusing some script created for a prior LFS + release. Such a reuse is strongly discouraged. If you are + reusing scripts for a prior LFS release for any reason, + you'll need to be very careful to update the scripts to match + current version of the LFS book. +

+
+

+ Here are some things you should know about building each + package: +

+
+
    +
  • +

    + Several packages are patched before compilation, but only + when the patch is needed to circumvent a problem. A patch + is often needed in both the current and the following + chapters, but sometimes, when the same package is built + more than once, the patch is not needed right away. + Therefore, do not be concerned if instructions for a + downloaded patch seem to be missing. Warning messages + about offset or + fuzz may also be + encountered when applying a patch. Do not worry about + these warnings; the patch was still successfully applied. +

    +
  • +
  • +

    + During the compilation of most packages, some warnings + will scroll by on the screen. These are normal and can + safely be ignored. These warnings are usually about + deprecated, but not invalid, use of the C or C++ syntax. + C standards change fairly often, and some packages have + not yet been updated. This is not a serious problem, but + it does cause the warnings to appear. +

    +
  • +
  • +

    + Check one last time that the LFS environment variable is set up + properly: +

    +
    echo $LFS
    +

    + Make sure the output shows the path to the LFS + partition's mount point, which is /mnt/lfs, using our example. +

    +
  • +
  • +

    + Finally, two important items must be emphasized: +

    +
    +

    + Important +

    +

    + The build instructions assume that the Host System + Requirements, including symbolic links, have been + set properly: +

    +
    +
      +
    • +

      + bash is the + shell in use. +

      +
    • +
    • +

      + sh + is a symbolic link to bash. +

      +
    • +
    • +

      + /usr/bin/awk is + a symbolic link to gawk. +

      +
    • +
    • +

      + /usr/bin/yacc + is a symbolic link to bison, or to a + small script that executes bison. +

      +
    • +
    +
    +
    +
    +

    + Important +

    +

    + Here is a synopsis of the build process. +

    +
    +
      +
    1. +

      + Place all the sources and patches in a directory + that will be accessible from the chroot + environment, such as /mnt/lfs/sources/. +

      +
    2. +
    3. +

      + Change to the /mnt/lfs/sources/ directory. +

      +
    4. +
    5. +

      + For each + package: +

      +
      +
        +
      1. +

        + Using the tar + program, extract the package to be built. + In + Chapter 5 and + Chapter 6, ensure you are the + lfs + user when extracting the package. +

        +

        + Do not use any method except the + tar + command to extract the source code. + Notably, using the cp -R + command to copy the source code tree + somewhere else can destroy timestamps in + the source tree, and cause the build to + fail. +

        +
      2. +
      3. +

        + Change to the directory created when the + package was extracted. +

        +
      4. +
      5. +

        + Follow the instructions for building the + package. +

        +
      6. +
      7. +

        + Change back to the sources directory when + the build is complete. +

        +
      8. +
      9. +

        + Delete the extracted source directory + unless instructed otherwise. +

        +
      10. +
      +
      +
    6. +
    +
    +
    +
  • +
+
+
+
+
+
+
+

+ Chapter 5. Compiling a + Cross-Toolchain +

+
+
+
+
+
+
+
+

+ 5.1. Introduction +

+
+
+
+
+

+ This chapter shows how to build a cross-compiler and its + associated tools. Although here cross-compilation is faked, the + principles are the same as for a real cross-toolchain. +

+

+ The programs compiled in this chapter will be installed under + the $LFS/tools directory to keep + them separate from the files installed in the following + chapters. The libraries, on the other hand, are installed into + their final place, since they pertain to the system we want to + build. +

+
+
+
+
+

+ 5.2. Binutils-2.45 - + Pass 1 +

+
+
+
+
+
+

+ The Binutils package contains a linker, an assembler, and + other tools for handling object files. +

+
+
+
+ Approximate build time: + 1 SBU +
+
+ Required disk space: + 678 MB +
+
+
+
+
+

+ 5.2.1. Installation of Cross Binutils +

+
+

+ Note +

+

+ Go back and re-read the notes in the section titled + General Compilation + Instructions. Understanding the notes labeled important + can save you a lot of problems later. +

+
+

+ It is important that Binutils be the first package compiled + because both Glibc and GCC perform various tests on the + available linker and assembler to determine which of their + own features to enable. +

+

+ The Binutils documentation recommends building Binutils in a + dedicated build directory: +

+
mkdir -v build
+cd       build
+
+

+ Note +

+

+ In order for the SBU values listed in the rest of the book + to be of any use, measure the time it takes to build this + package from the configuration, up to and including the + first install. To achieve this easily, wrap the commands in + a time + command like this: time { + ../configure ... && make && make install; + }. +

+
+

+ Now prepare Binutils for compilation: +

+
../configure --prefix=$LFS/tools \
+             --with-sysroot=$LFS \
+             --target=$LFS_TGT   \
+             --disable-nls       \
+             --enable-gprofng=no \
+             --disable-werror    \
+             --enable-new-dtags  \
+             --enable-default-hash-style=gnu
+
+

+ The meaning of the configure options: +

+
+

+ Note +

+

+ Contrary to other packages, not all the options listed + below appear when running ./configure --help. For + example, to find the --with-sysroot option, you have to run + ld/configure + --help. All the options can be listed at + once with ./configure + --help=recursive. +

+
+
+
+ --prefix=$LFS/tools +
+
+

+ This tells the configure script to prepare to install + the Binutils programs in the $LFS/tools directory. +

+
+
+ --with-sysroot=$LFS +
+
+

+ For cross compilation, this tells the build system to + look in $LFS for the target system libraries as needed. +

+
+
+ --target=$LFS_TGT +
+
+

+ Because the machine description in the LFS_TGT variable is slightly different + than the value returned by the config.guess script, + this switch will tell the configure script to + adjust binutil's build system for building a cross + linker. +

+
+
+ --disable-nls +
+
+

+ This disables internationalization as i18n is not + needed for the temporary tools. +

+
+
+ --enable-gprofng=no +
+
+

+ This disables building gprofng which is not needed for + the temporary tools. +

+
+
+ --disable-werror +
+
+

+ This prevents the build from stopping in the event that + there are warnings from the host's compiler. +

+
+
+ --enable-new-dtags +
+
+

+ This makes the linker use the “runpath” tag + for embedding library search paths into executables and + shared libraries, instead of the traditional + “rpath” tag. It makes debugging + dynamically linked executables easier and works around + potential issues in the test suite of some packages. +

+
+
+ --enable-default-hash-style=gnu +
+
+

+ By default, the linker would generate both the + GNU-style hash table and the classic ELF hash table for + shared libraries and dynamically linked executables. + The hash tables are only intended for a dynamic linker + to perform symbol lookup. On LFS the dynamic linker + (provided by the Glibc package) will always use the + GNU-style hash table which is faster to query. So the + classic ELF hash table is completely useless. This + makes the linker only generate the GNU-style hash table + by default, so we can avoid wasting time to generate + the classic ELF hash table when we build the packages, + or wasting disk space to store it. +

+
+
+
+

+ Continue with compiling the package: +

+
make
+

+ Install the package: +

+
make install
+
+
+

+ Details on this package are located in Section 8.20.2, + “Contents of Binutils.” +

+
+
+
+
+
+

+ 5.3. GCC-15.2.0 - Pass 1 +

+
+
+
+
+
+

+ The GCC package contains the GNU compiler collection, which + includes the C and C++ compilers. +

+
+
+
+ Approximate build time: + 3.8 SBU +
+
+ Required disk space: + 5.4 GB +
+
+
+
+
+

+ 5.3.1. Installation of Cross GCC +

+

+ GCC requires the GMP, MPFR and MPC packages. As these + packages may not be included in your host distribution, they + will be built with GCC. Unpack each package into the GCC + source directory and rename the resulting directories so the + GCC build procedures will automatically use them: +

+
+

+ Note +

+

+ There are frequent misunderstandings about this chapter. + The procedures are the same as every other chapter, as + explained earlier (Package build instructions). First, + extract the gcc-15.2.0 tarball from the sources directory, + and then change to the directory created. Only then should + you proceed with the instructions below. +

+
+
tar -xf ../mpfr-4.2.2.tar.xz
+mv -v mpfr-4.2.2 mpfr
+tar -xf ../gmp-6.3.0.tar.xz
+mv -v gmp-6.3.0 gmp
+tar -xf ../mpc-1.3.1.tar.gz
+mv -v mpc-1.3.1 mpc
+

+ On x86_64 hosts, set the default directory name for 64-bit + libraries to “lib”: +

+
case $(uname -m) in
+  x86_64)
+    sed -e '/m64=/s/lib64/lib/' \
+        -i.orig gcc/config/i386/t-linux64
+ ;;
+esac
+
+

+ Note +

+

+ This example demonstrates the use of the -i.orig switch. It makes the + sed copy the + t-linux64 file to + t-linux64.orig, and then edit + the original t-linux64 file + inplace. So you may run diff + -u gcc/config/i386/t-linux64{.orig,} to + visualize the change done by the sed command afterwards. + We'll simply use -i + (which just edits the original file inplace without copying + it) for all other packages in the book, but you can change + it to -i.orig in + any case you want to keep a copy of the original file. +

+
+

+ The GCC documentation recommends building GCC in a dedicated + build directory: +

+
mkdir -v build
+cd       build
+

+ Prepare GCC for compilation: +

+
../configure                  \
+    --target=$LFS_TGT         \
+    --prefix=$LFS/tools       \
+    --with-glibc-version=2.42 \
+    --with-sysroot=$LFS       \
+    --with-newlib             \
+    --without-headers         \
+    --enable-default-pie      \
+    --enable-default-ssp      \
+    --disable-nls             \
+    --disable-shared          \
+    --disable-multilib        \
+    --disable-threads         \
+    --disable-libatomic       \
+    --disable-libgomp         \
+    --disable-libquadmath     \
+    --disable-libssp          \
+    --disable-libvtv          \
+    --disable-libstdcxx       \
+    --enable-languages=c,c++
+
+

+ The meaning of the configure options: +

+
+
+ --with-glibc-version=2.42 +
+
+

+ This option specifies the version of Glibc which will + be used on the target. It is not relevant to the libc + of the host distro because everything compiled by pass1 + GCC will run in the chroot environment, which is + isolated from libc of the host distro. +

+
+
+ --with-newlib +
+
+

+ Since a working C library is not yet available, this + ensures that the inhibit_libc constant is defined when + building libgcc. This prevents the compiling of any + code that requires libc support. +

+
+
+ --without-headers +
+
+

+ When creating a complete cross-compiler, GCC requires + standard headers compatible with the target system. For + our purposes these headers will not be needed. This + switch prevents GCC from looking for them. +

+
+
+ --enable-default-pie and + --enable-default-ssp +
+
+

+ Those switches allow GCC to compile programs with some + hardening security features (more information on those + in the note on PIE + and SSP in chapter 8) by default. They are not + strictly needed at this stage, since the compiler will + only produce temporary executables. But it is cleaner + to have the temporary packages be as close as possible + to the final ones. +

+
+
+ --disable-shared +
+
+

+ This switch forces GCC to link its internal libraries + statically. We need this because the shared libraries + require Glibc, which is not yet installed on the target + system. +

+
+
+ --disable-multilib +
+
+

+ On x86_64, LFS does not support a multilib + configuration. This switch is harmless for x86. +

+
+
+ --disable-threads, --disable-libatomic, + --disable-libgomp, --disable-libquadmath, + --disable-libssp, --disable-libvtv, + --disable-libstdcxx +
+
+

+ These switches disable support for threading, + libatomic, libgomp, libquadmath, libssp, libvtv, and + the C++ standard library respectively. These features + may fail to compile when building a cross-compiler and + are not necessary for the task of cross-compiling the + temporary libc. +

+
+
+ --enable-languages=c,c++ +
+
+

+ This option ensures that only the C and C++ compilers + are built. These are the only languages needed now. +

+
+
+
+

+ Compile GCC by running: +

+
make
+

+ Install the package: +

+
make install
+

+ This build of GCC has installed a couple of internal system + headers. Normally one of them, limits.h, would in turn include the + corresponding system limits.h + header, in this case, $LFS/usr/include/limits.h. However, at the + time of this build of GCC $LFS/usr/include/limits.h does not exist, + so the internal header that has just been installed is a + partial, self-contained file and does not include the + extended features of the system header. This is adequate for + building Glibc, but the full internal header will be needed + later. Create a full version of the internal header using a + command that is identical to what the GCC build system does + in normal circumstances: +

+
+

+ Note +

+

+ The command below shows an example of nested command + substitution using two methods: backquotes and a + $() construct. It could be + rewritten using the same method for both substitutions, but + is shown this way to demonstrate how they can be mixed. + Generally the $() method is + preferred. +

+
+
cd ..
+cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
+  `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include/limits.h
+
+
+

+ Details on this package are located in Section 8.29.2, “Contents + of GCC.” +

+
+
+
+
+
+

+ 5.4. Linux-6.16.1 API + Headers +

+
+
+
+
+
+

+ The Linux API Headers (in linux-6.16.1.tar.xz) expose the + kernel's API for use by Glibc. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 1.7 GB +
+
+
+
+
+

+ 5.4.1. Installation of Linux API Headers +

+

+ The Linux kernel needs to expose an Application Programming + Interface (API) for the system's C library (Glibc in LFS) to + use. This is done by way of sanitizing various C header files + that are shipped in the Linux kernel source tarball. +

+

+ Make sure there are no stale files embedded in the package: +

+
make mrproper
+

+ Now extract the user-visible kernel headers from the source. + The recommended make target “headers_install” cannot be used, + because it requires rsync, + which may not be available. The headers are first placed in + ./usr, then copied to the + needed location. +

+
make headers
+find usr/include -type f ! -name '*.h' -delete
+cp -rv usr/include $LFS/usr
+
+
+

+ 5.4.2. Contents of Linux API + Headers +

+
+
+
+ Installed headers: + /usr/include/asm/*.h, + /usr/include/asm-generic/*.h, /usr/include/drm/*.h, + /usr/include/linux/*.h, /usr/include/misc/*.h, + /usr/include/mtd/*.h, /usr/include/rdma/*.h, + /usr/include/scsi/*.h, /usr/include/sound/*.h, + /usr/include/video/*.h, and /usr/include/xen/*.h +
+
+ Installed directories: + /usr/include/asm, + /usr/include/asm-generic, /usr/include/drm, + /usr/include/linux, /usr/include/misc, /usr/include/mtd, + /usr/include/rdma, /usr/include/scsi, /usr/include/sound, + /usr/include/video, and /usr/include/xen +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ /usr/include/asm/*.h +

+
+

+ The Linux API ASM Headers +

+
+

+ /usr/include/asm-generic/*.h +

+
+

+ The Linux API ASM Generic Headers +

+
+

+ /usr/include/drm/*.h +

+
+

+ The Linux API DRM Headers +

+
+

+ /usr/include/linux/*.h +

+
+

+ The Linux API Linux Headers +

+
+

+ /usr/include/misc/*.h +

+
+

+ The Linux API Miscellaneous Headers +

+
+

+ /usr/include/mtd/*.h +

+
+

+ The Linux API MTD Headers +

+
+

+ /usr/include/rdma/*.h +

+
+

+ The Linux API RDMA Headers +

+
+

+ /usr/include/scsi/*.h +

+
+

+ The Linux API SCSI Headers +

+
+

+ /usr/include/sound/*.h +

+
+

+ The Linux API Sound Headers +

+
+

+ /usr/include/video/*.h +

+
+

+ The Linux API Video Headers +

+
+

+ /usr/include/xen/*.h +

+
+

+ The Linux API Xen Headers +

+
+
+
+
+
+
+
+

+ 5.5. Glibc-2.42 +

+
+
+
+
+
+

+ 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. +

+
+
+
+ Approximate build time: + 1.4 SBU +
+
+ Required disk space: + 870 MB +
+
+
+
+
+

+ 5.5.1. Installation of Glibc +

+

+ First, create a symbolic link for LSB compliance. + Additionally, for x86_64, create a compatibility symbolic + link required for proper operation of the dynamic library + loader: +

+
case $(uname -m) in
+    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
+    ;;
+    x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
+            ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
+    ;;
+esac
+
+

+ Note +

+

+ The above command is correct. The ln command has several + syntactic versions, so be sure to check info coreutils ln and + ln(1) before + reporting what may appear to be an error. +

+
+

+ Some of the Glibc programs use the non-FHS-compliant + /var/db directory to store + their runtime data. Apply the following patch to make such + programs store their runtime data in the FHS-compliant + locations: +

+
patch -Np1 -i ../glibc-2.42-fhs-1.patch
+

+ The Glibc documentation recommends building Glibc in a + dedicated build directory: +

+
mkdir -v build
+cd       build
+

+ Ensure that the ldconfig and sln utilities are installed + into /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Next, prepare Glibc for compilation: +

+
../configure                             \
+      --prefix=/usr                      \
+      --host=$LFS_TGT                    \
+      --build=$(../scripts/config.guess) \
+      --disable-nscd                     \
+      libc_cv_slibdir=/usr/lib           \
+      --enable-kernel=5.4
+
+

+ The meaning of the configure options: +

+
+
+ --host=$LFS_TGT, + --build=$(../scripts/config.guess) +
+
+

+ The combined effect of these switches is that Glibc's + build system configures itself to be cross-compiled, + using the cross-linker and cross-compiler in + $LFS/tools. +

+
+
+ --enable-kernel=5.4 +
+
+

+ This tells Glibc to compile the library with support + for 5.4 and later Linux kernels. Workarounds for older + kernels are not enabled. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ This ensures that the library is installed in /usr/lib + instead of the default /lib64 on 64-bit machines. +

+
+
+ --disable-nscd +
+
+

+ Do not build the name service cache daemon which is no + longer used. +

+
+
+
+

+ During this stage the following warning might appear: +

+
+
+
configure: WARNING:
+*** These auxiliary programs are missing or
+*** incompatible versions: msgfmt
+*** some features will be disabled.
+*** Check the INSTALL file for required versions.
+
+
+

+ The missing or incompatible msgfmt program is generally + harmless. This msgfmt program is part of + the Gettext package, which the host distribution should + provide. +

+
+

+ Note +

+

+ There have been reports that this package may fail when + building as a “parallel make.” If that occurs, rerun + the make command with the -j1 + option. +

+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
+

+ Warning +

+

+ If LFS is not properly set, and + despite the recommendations, you are building as + root, the next command will + install the newly built Glibc to your host system, which + will almost certainly render it unusable. So double-check + that the environment is correctly set, and that you are not + root, before running the + following command. +

+
+
make DESTDIR=$LFS install
+
+

+ The meaning of the make install + option: +

+
+
+ DESTDIR=$LFS +
+
+

+ The DESTDIR make variable is + used by almost all packages to define the location + where the package should be installed. If it is not + set, it defaults to the root (/) directory. Here we specify that + the package is installed in $LFS, which will become the root + directory in Section 7.4, + “Entering the Chroot Environment.” +

+
+
+
+

+ Fix a hard coded path to the executable loader in the + ldd script: +

+
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
+

+ Now that our cross toolchain is in place, it is important to + ensure that compiling and linking will work as expected. We + do this by performing some sanity checks: +

+
echo 'int main(){}' | $LFS_TGT-gcc -x c - -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+

+ There should be no errors, and the output of the last command + will be (allowing for platform-specific differences in the + dynamic linker name): +

+
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
+

+ Note that this path should not contain /mnt/lfs (or the value of the LFS variable if you used a different one). The + path is resolved when the compiled program is executed, and + that should only happen after we enter the chroot environment + where the kernel would consider $LFS as the root directory (/). +

+

+ Now make sure that we're set up to use the correct start + files: +

+
grep -E -o "$LFS/lib.*/S?crt[1in].*succeeded" dummy.log
+

+ The output of the last command should be: +

+
/mnt/lfs/lib/../lib/Scrt1.o succeeded
+/mnt/lfs/lib/../lib/crti.o succeeded
+/mnt/lfs/lib/../lib/crtn.o succeeded
+

+ Verify that the compiler is searching for the correct header + files: +

+
grep -B3 "^ $LFS/usr/include" dummy.log
+

+ This command should return the following output: +

+
#include <...> search starts here:
+ /mnt/lfs/tools/lib/gcc/x86_64-lfs-linux-gnu/15.2.0/include
+ /mnt/lfs/tools/lib/gcc/x86_64-lfs-linux-gnu/15.2.0/include-fixed
+ /mnt/lfs/usr/include
+

+ Again, the directory named after your target triplet may be + different than the above, depending on your system + architecture. +

+

+ Next, verify that the new linker is being used with the + correct search paths: +

+
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+

+ References to paths that have components with '-linux-gnu' + should be ignored, but otherwise the output of the last + command should be: +

+
SEARCH_DIR("=/mnt/lfs/tools/x86_64-lfs-linux-gnu/lib64")
+SEARCH_DIR("=/usr/local/lib64")
+SEARCH_DIR("=/lib64")
+SEARCH_DIR("=/usr/lib64")
+SEARCH_DIR("=/mnt/lfs/tools/x86_64-lfs-linux-gnu/lib")
+SEARCH_DIR("=/usr/local/lib")
+SEARCH_DIR("=/lib")
+SEARCH_DIR("=/usr/lib");
+

+ A 32-bit system may use a few other directories, but anyway + the important facet here is all the paths should begin with + an equal sign (=), which would + be replaced with the sysroot directory that we've configured + for the linker. +

+

+ Next make sure that we're using the correct libc: +

+
grep "/lib.*/libc.so.6 " dummy.log
+

+ The output of the last command should be: +

+
attempt to open /mnt/lfs/usr/lib/libc.so.6 succeeded
+

+ Make sure GCC is using the correct dynamic linker: +

+
grep found dummy.log
+

+ The output of the last command should be (allowing for + platform-specific differences in dynamic linker name): +

+
found ld-linux-x86-64.so.2 at /mnt/lfs/usr/lib/ld-linux-x86-64.so.2
+

+ If the output does not appear as shown above or is not + received at all, then something is seriously wrong. + Investigate and retrace the steps to find out where the + problem is and correct it. Any issues should be resolved + before continuing with the process. +

+

+ Once everything is working correctly, clean up the test + files: +

+
rm -v a.out dummy.log
+
+

+ Note +

+

+ Building the packages in the next chapter will serve as an + additional check that the toolchain has been built + properly. If some package, especially Binutils-pass2 or + GCC-pass2, fails to build, it is an indication that + something has gone wrong with the preceding Binutils, GCC, + or Glibc installations. +

+
+
+
+

+ Details on this package are located in Section 8.5.3, “Contents + of Glibc.” +

+
+
+
+
+
+

+ 5.6. Libstdc++ from + GCC-15.2.0 +

+
+
+
+
+
+

+ Libstdc++ is the standard C++ library. It is needed to + compile C++ code (part of GCC is written in C++), but we had + to defer its installation when we built gcc-pass1 because + Libstdc++ depends on Glibc, which was not yet available in + the target directory. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 1.3 GB +
+
+
+
+
+

+ 5.6.1. Installation of Target Libstdc++ +

+
+

+ Note +

+

+ Libstdc++ is part of the + GCC sources. You should first unpack the GCC tarball and + change to the gcc-15.2.0 + directory. +

+
+

+ Create a separate build directory for Libstdc++ and enter it: +

+
mkdir -v build
+cd       build
+

+ Prepare Libstdc++ for compilation: +

+
../libstdc++-v3/configure      \
+    --host=$LFS_TGT            \
+    --build=$(../config.guess) \
+    --prefix=/usr              \
+    --disable-multilib         \
+    --disable-nls              \
+    --disable-libstdcxx-pch    \
+    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/15.2.0
+
+

+ The meaning of the configure options: +

+
+
+ --host=... +
+
+

+ Specifies that the cross-compiler we have just built + should be used instead of the one in /usr/bin. +

+
+
+ --disable-libstdcxx-pch +
+
+

+ This switch prevents the installation of precompiled + include files, which are not needed at this stage. +

+
+
+ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/15.2.0 +
+
+

+ This specifies the installation directory for include + files. Because Libstdc++ is the standard C++ library + for LFS, this directory should match the location where + the C++ compiler ($LFS_TGT-g++) would + search for the standard C++ include files. In a normal + build, this information is automatically passed to the + Libstdc++ configure options + from the top level directory. In our case, this + information must be explicitly given. The C++ compiler + will prepend the sysroot path $LFS (specified when building + GCC-pass1) to the include file search path, so it will + actually search in $LFS/tools/$LFS_TGT/include/c++/15.2.0. + The combination of the DESTDIR variable (in the + make + install command below) and this switch + causes the headers to be installed there. +

+
+
+
+

+ Compile Libstdc++ by running: +

+
make
+

+ Install the library: +

+
make DESTDIR=$LFS install
+

+ Remove the libtool archive files because they are harmful for + cross-compilation: +

+
rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la
+
+
+

+ Details on this package are located in Section 8.29.2, “Contents + of GCC.” +

+
+
+
+
+
+
+

+ Chapter 6. Cross + Compiling Temporary Tools +

+
+
+
+
+
+
+
+

+ 6.1. Introduction +

+
+
+
+
+

+ This chapter shows how to cross-compile basic utilities using + the just built cross-toolchain. Those utilities are installed + into their final location, but cannot be used yet. Basic tasks + still rely on the host's tools. Nevertheless, the installed + libraries are used when linking. +

+

+ Using the utilities will be possible in the next chapter after + entering the “chroot” environment. But all the packages + built in the present chapter need to be built before we do + that. Therefore we cannot be independent of the host system + yet. +

+

+ Once again, let us recall that improper setting of LFS together with building as root, may render your computer unusable. + This whole chapter must be done as user lfs, with the environment as described in + Section 4.4, + “Setting Up the Environment.” +

+
+
+
+
+

+ 6.2. M4-1.4.20 +

+
+
+
+
+
+

+ The M4 package contains a macro processor. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 38 MB +
+
+
+
+
+

+ 6.2.1. Installation of M4 +

+

+ Prepare M4 for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.13.2, “Contents + of M4.” +

+
+
+
+
+
+

+ 6.3. Ncurses-6.5-20250809 +

+
+
+
+
+
+

+ The Ncurses package contains libraries for + terminal-independent handling of character screens. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 54 MB +
+
+
+
+
+

+ 6.3.1. Installation of Ncurses +

+

+ First, run the following commands to build the tic program on the build + host. We install it in $LFS/tools, so that it is found in the + PATH when needed: +

+
mkdir build
+pushd build
+  ../configure --prefix=$LFS/tools AWK=gawk
+  make -C include
+  make -C progs tic
+  install progs/tic $LFS/tools/bin
+popd
+

+ Prepare Ncurses for compilation: +

+
./configure --prefix=/usr                \
+            --host=$LFS_TGT              \
+            --build=$(./config.guess)    \
+            --mandir=/usr/share/man      \
+            --with-manpage-format=normal \
+            --with-shared                \
+            --without-normal             \
+            --with-cxx-shared            \
+            --without-debug              \
+            --without-ada                \
+            --disable-stripping          \
+            AWK=gawk
+
+

+ The meaning of the new configure options: +

+
+
+ --with-manpage-format=normal +
+
+

+ This prevents Ncurses from installing compressed manual + pages, which may happen if the host distribution itself + has compressed manual pages. +

+
+
+ --with-shared +
+
+

+ This makes Ncurses build and install shared C + libraries. +

+
+
+ --without-normal +
+
+

+ This prevents Ncurses from building and installing + static C libraries. +

+
+
+ --without-debug +
+
+

+ This prevents Ncurses from building and installing + debug libraries. +

+
+
+ --with-cxx-shared +
+
+

+ This makes Ncurses build and install shared C++ + bindings. It also prevents it building and installing + static C++ bindings. +

+
+
+ --without-ada +
+
+

+ This ensures that Ncurses does not build support for + the Ada compiler, which may be present on the host but + will not be available once we enter the chroot environment. +

+
+
+ --disable-stripping +
+
+

+ This switch prevents the building system from using the + strip + program from the host. Using host tools on + cross-compiled programs can cause failure. +

+
+
+ AWK=gawk +
+
+

+ This switch prevents the building system from using the + mawk + program from the host. Some versions of mawk can cause this + package to fail to build. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+ln -sv libncursesw.so $LFS/usr/lib/libncurses.so
+sed -e 's/^#if.*XOPEN.*$/#if 1/' \
+    -i $LFS/usr/include/curses.h
+
+

+ The meaning of the install options: +

+
+
+ ln -sv + libncursesw.so + $LFS/usr/lib/libncurses.so +
+
+

+ The libncurses.so library + is needed by a few packages we will build soon. We + create this symlink to use libncursesw.so as a replacement. +

+
+
+ sed -e + 's/^#if.*XOPEN.*$/#if 1/' ... +
+
+

+ The header file curses.h + contains the definition of various Ncurses data + structures. With different preprocessor macro + definitions two different sets of the data structure + definition may be used: the 8-bit definition is + compatible with libncurses.so and the wide-character + definition is compatible with libncursesw.so. Since we are using + libncursesw.so as a + replacement of libncurses.so, edit the header file + so it will always use the wide-character data structure + definition compatible with libncursesw.so. +

+
+
+
+
+
+

+ Details on this package are located in Section 8.30.2, + “Contents of Ncurses.” +

+
+
+
+
+
+

+ 6.4. Bash-5.3 +

+
+
+
+
+
+

+ The Bash package contains the Bourne-Again Shell. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 72 MB +
+
+
+
+
+

+ 6.4.1. Installation of Bash +

+

+ Prepare Bash for compilation: +

+
./configure --prefix=/usr                      \
+            --build=$(sh support/config.guess) \
+            --host=$LFS_TGT                    \
+            --without-bash-malloc
+
+

+ The meaning of the configure options: +

+
+
+ --without-bash-malloc +
+
+

+ This option turns off the use of Bash's memory + allocation (malloc) + function which is known to cause segmentation faults. + By turning this option off, Bash will use the + malloc functions from + Glibc which are more stable. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+

+ Make a link for the programs that use sh for a shell: +

+
ln -sv bash $LFS/bin/sh
+
+
+

+ Details on this package are located in Section 8.36.2, + “Contents of Bash.” +

+
+
+
+
+
+

+ 6.5. Coreutils-9.7 +

+
+
+
+
+
+

+ The Coreutils package contains the basic utility programs + needed by every operating system. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 181 MB +
+
+
+
+
+

+ 6.5.1. Installation of Coreutils +

+

+ Prepare Coreutils for compilation: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess) \
+            --enable-install-program=hostname \
+            --enable-no-install-program=kill,uptime
+
+

+ The meaning of the configure options: +

+
+
+ --enable-install-program=hostname +
+
+

+ This enables the hostname binary to be + built and installed – it is disabled by default but is + required by the Perl test suite. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+

+ Move programs to their final expected locations. Although + this is not necessary in this temporary environment, we must + do so because some programs hardcode executable locations: +

+
mv -v $LFS/usr/bin/chroot              $LFS/usr/sbin
+mkdir -pv $LFS/usr/share/man/man8
+mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
+sed -i 's/"1"/"8"/'                    $LFS/usr/share/man/man8/chroot.8
+
+
+

+ Details on this package are located in Section 8.59.2, + “Contents of Coreutils.” +

+
+
+
+
+
+

+ 6.6. Diffutils-3.12 +

+
+
+
+
+
+

+ The Diffutils package contains programs that show the + differences between files or directories. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 35 MB +
+
+
+
+
+

+ 6.6.1. Installation of Diffutils +

+

+ Prepare Diffutils for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            gl_cv_func_strcasecmp_works=y \
+            --build=$(./build-aux/config.guess)
+
+

+ The meaning of the configure options: +

+
+
+ gl_cv_func_strcasecmp_works=y +
+
+

+ This option specify the result of a check for the + strcasecmp. The check + requires running a compiled C program, and this is + impossible during cross-compilation because in general + a cross-compiled program cannot run on the host distro. + Normally for such a check the configure script + would use a fall-back value for cross-compilation, but + the fall-back value for this check is absent and the + configure + script would have no value to use and error out. The + upstream has already fixed the issue, but to apply the + fix we'd need to run autoconf that the + host distro may lack. So we just specify the check + result (y as we know the + strcasecmp function in + Glibc-2.42 works fine) instead, then configure will just + use the specified value and skip the check. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.60.2, + “Contents of Diffutils.” +

+
+
+
+
+
+

+ 6.7. File-5.46 +

+
+
+
+
+
+

+ The File package contains a utility for determining the type + of a given file or files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 42 MB +
+
+
+
+
+

+ 6.7.1. Installation of File +

+

+ The file + command on the build host needs to be the same version as the + one we are building in order to create the signature file. + Run the following commands to make a temporary copy of the + file command: +

+
mkdir build
+pushd build
+  ../configure --disable-bzlib      \
+               --disable-libseccomp \
+               --disable-xzlib      \
+               --disable-zlib
+  make
+popd
+
+

+ The meaning of the new configure option: +

+
+
+ --disable-* +
+
+

+ The configuration script attempts to use some packages + from the host distribution if the corresponding library + files exist. It may cause compilation failure if a + library file exists, but the corresponding header files + do not. These options prevent using these unneeded + capabilities from the host. +

+
+
+
+

+ Prepare File for compilation: +

+
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
+

+ Compile the package: +

+
make FILE_COMPILE=$(pwd)/build/src/file
+

+ Install the package: +

+
make DESTDIR=$LFS install
+

+ Remove the libtool archive file because it is harmful for + cross compilation: +

+
rm -v $LFS/usr/lib/libmagic.la
+
+
+

+ Details on this package are located in Section 8.11.2, + “Contents of File.” +

+
+
+
+
+
+

+ 6.8. Findutils-4.10.0 +

+
+
+
+
+
+

+ The Findutils package contains programs to find files. + Programs are provided to search through all the files in a + directory tree and to create, maintain, and search a database + (often faster than the recursive find, but unreliable unless + the database has been updated recently). Findutils also + supplies the xargs program, which can be + used to run a specified command on each file selected by a + search. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 48 MB +
+
+
+
+
+

+ 6.8.1. Installation of Findutils +

+

+ Prepare Findutils for compilation: +

+
./configure --prefix=/usr                   \
+            --localstatedir=/var/lib/locate \
+            --host=$LFS_TGT                 \
+            --build=$(build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.62.2, + “Contents of Findutils.” +

+
+
+
+
+
+

+ 6.9. Gawk-5.3.2 +

+
+
+
+
+
+

+ The Gawk package contains programs for manipulating text + files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 49 MB +
+
+
+
+
+

+ 6.9.1. Installation of Gawk +

+

+ First, ensure some unneeded files are not installed: +

+
sed -i 's/extras//' Makefile.in
+

+ Prepare Gawk for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.61.2, + “Contents of Gawk.” +

+
+
+
+
+
+

+ 6.10. Grep-3.12 +

+
+
+
+
+
+

+ The Grep package contains programs for searching through the + contents of files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 32 MB +
+
+
+
+
+

+ 6.10.1. Installation of Grep +

+

+ Prepare Grep for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.35.2, + “Contents of Grep.” +

+
+
+
+
+
+

+ 6.11. Gzip-1.14 +

+
+
+
+
+
+

+ The Gzip package contains programs for compressing and + decompressing files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 12 MB +
+
+
+
+
+

+ 6.11.1. Installation of Gzip +

+

+ Prepare Gzip for compilation: +

+
./configure --prefix=/usr --host=$LFS_TGT
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.65.2, + “Contents of Gzip.” +

+
+
+
+
+
+

+ 6.12. Make-4.4.1 +

+
+
+
+
+
+

+ The Make package contains a program for controlling the + generation of executables and other non-source files of a + package from source files. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 15 MB +
+
+
+
+
+

+ 6.12.1. Installation of Make +

+

+ Prepare Make for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.69.2, + “Contents of Make.” +

+
+
+
+
+
+

+ 6.13. Patch-2.8 +

+
+
+
+
+
+

+ The Patch package contains a program for modifying or + creating files by applying a “patch” file + typically created by the diff program. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 14 MB +
+
+
+
+
+

+ 6.13.1. Installation of Patch +

+

+ Prepare Patch for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.70.2, + “Contents of Patch.” +

+
+
+
+
+
+

+ 6.14. Sed-4.9 +

+
+
+
+
+
+

+ The Sed package contains a stream editor. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 21 MB +
+
+
+
+
+

+ 6.14.1. Installation of Sed +

+

+ Prepare Sed for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.31.2, “Contents + of Sed.” +

+
+
+
+
+
+

+ 6.15. Tar-1.35 +

+
+
+
+
+
+

+ The Tar package provides the ability to create tar archives + as well as perform various other kinds of archive + manipulation. Tar can be used on previously created archives + to extract files, to store additional files, or to update or + list files which were already stored. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 42 MB +
+
+
+
+
+

+ 6.15.1. Installation of Tar +

+

+ Prepare Tar for compilation: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+
+
+

+ Details on this package are located in Section 8.71.2, “Contents + of Tar.” +

+
+
+
+
+
+

+ 6.16. Xz-5.8.1 +

+
+
+
+
+
+

+ The Xz package contains programs for compressing and + decompressing files. It provides capabilities for the lzma + and the newer xz compression formats. Compressing text files + with xz yields + a better compression percentage than with the traditional + gzip or + bzip2 commands. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 23 MB +
+
+
+
+
+

+ 6.16.1. Installation of Xz +

+

+ Prepare Xz for compilation: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess) \
+            --disable-static                  \
+            --docdir=/usr/share/doc/xz-5.8.1
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+

+ Remove the libtool archive file because it is harmful for + cross compilation: +

+
rm -v $LFS/usr/lib/liblzma.la
+
+
+

+ Details on this package are located in Section 8.8.2, “Contents of + Xz.” +

+
+
+
+
+
+

+ 6.17. Binutils-2.45 - + Pass 2 +

+
+
+
+
+
+

+ The Binutils package contains a linker, an assembler, and + other tools for handling object files. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 548 MB +
+
+
+
+
+

+ 6.17.1. Installation of Binutils +

+

+ Binutils building system relies on an shipped libtool copy to + link against internal static libraries, but the libiberty and + zlib copies shipped in the package do not use libtool. This + inconsistency may cause produced binaries mistakenly linked + against libraries from the host distro. Work around this + issue: +

+
sed '6031s/$add_dir//' -i ltmain.sh
+

+ Create a separate build directory again: +

+
mkdir -v build
+cd       build
+

+ Prepare Binutils for compilation: +

+
../configure                   \
+    --prefix=/usr              \
+    --build=$(../config.guess) \
+    --host=$LFS_TGT            \
+    --disable-nls              \
+    --enable-shared            \
+    --enable-gprofng=no        \
+    --disable-werror           \
+    --enable-64-bit-bfd        \
+    --enable-new-dtags         \
+    --enable-default-hash-style=gnu
+
+

+ The meaning of the new configure options: +

+
+
+ --enable-shared +
+
+

+ Builds libbfd as a shared + library. +

+
+
+ --enable-64-bit-bfd +
+
+

+ Enables 64-bit support (on hosts with smaller word + sizes). This may not be needed on 64-bit systems, but + it does no harm. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+

+ Remove the libtool archive files because they are harmful for + cross compilation, and remove unnecessary static libraries: +

+
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
+
+
+

+ Details on this package are located in Section 8.20.2, + “Contents of Binutils.” +

+
+
+
+
+
+

+ 6.18. GCC-15.2.0 - Pass 2 +

+
+
+
+
+
+

+ The GCC package contains the GNU compiler collection, which + includes the C and C++ compilers. +

+
+
+
+ Approximate build time: + 4.5 SBU +
+
+ Required disk space: + 6.0 GB +
+
+
+
+
+

+ 6.18.1. Installation of GCC +

+

+ As in the first build of GCC, the GMP, MPFR, and MPC packages + are required. Unpack the tarballs and move them into the + required directories: +

+
tar -xf ../mpfr-4.2.2.tar.xz
+mv -v mpfr-4.2.2 mpfr
+tar -xf ../gmp-6.3.0.tar.xz
+mv -v gmp-6.3.0 gmp
+tar -xf ../mpc-1.3.1.tar.gz
+mv -v mpc-1.3.1 mpc
+

+ If you are building on x86_64, change the default directory + name for 64-bit libraries to “lib”: +

+
case $(uname -m) in
+  x86_64)
+    sed -e '/m64=/s/lib64/lib/' \
+        -i.orig gcc/config/i386/t-linux64
+  ;;
+esac
+

+ Override the build rules of the libgcc and libstdc++ headers + to allow building these libraries with POSIX threads support: +

+
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
+    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
+

+ Create a separate build directory again: +

+
mkdir -v build
+cd       build
+

+ Before starting to build GCC, remember to unset any + environment variables that override the default optimization + flags. +

+

+ Now prepare GCC for compilation: +

+
../configure                   \
+    --build=$(../config.guess) \
+    --host=$LFS_TGT            \
+    --target=$LFS_TGT          \
+    --prefix=/usr              \
+    --with-build-sysroot=$LFS  \
+    --enable-default-pie       \
+    --enable-default-ssp       \
+    --disable-nls              \
+    --disable-multilib         \
+    --disable-libatomic        \
+    --disable-libgomp          \
+    --disable-libquadmath      \
+    --disable-libsanitizer     \
+    --disable-libssp           \
+    --disable-libvtv           \
+    --enable-languages=c,c++   \
+    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc
+
+

+ The meaning of the new configure options: +

+
+
+ --with-build-sysroot=$LFS +
+
+

+ Normally, using --host ensures that a + cross-compiler is used for building GCC, and that + compiler knows that it has to look for headers and + libraries in $LFS. + However, the build system for GCC uses additional tools + which are not aware of this location. This switch is + needed so those tools will find the needed files in + $LFS, and not on the + host. +

+
+
+ --target=$LFS_TGT +
+
+

+ We are cross-compiling GCC, so it's impossible to build + target libraries (libgcc + and libstdc++) with the + GCC binaries compiled in this pass—those binaries won't + run on the host. The GCC build system will attempt to + use the host's C and C++ compilers as a workaround by + default. Building the GCC target libraries with a + different version of GCC is not supported, so using the + host's compilers may cause the build to fail. This + parameter ensures the libraries are built by GCC pass + 1. +

+
+
+ LDFLAGS_FOR_TARGET=... +
+
+

+ Allow libstdc++ to use + the libgcc being built in + this pass, instead of the previous version built in + gcc-pass1. The + previous version cannot properly support C++ exception + handling because it was built without libc support. +

+
+
+ --disable-libsanitizer +
+
+

+ Disable GCC sanitizer runtime libraries. They are not + needed for the temporary installation. In gcc-pass1 it was + implied by --disable-libstdcxx, and + now we can explicitly pass it. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make DESTDIR=$LFS install
+

+ As a finishing touch, create a utility symlink. Many programs + and scripts run cc instead of gcc, which is used to keep + programs generic and therefore usable on all kinds of UNIX + systems where the GNU C compiler is not always installed. + Running cc + leaves the system administrator free to decide which C + compiler to install: +

+
ln -sv gcc $LFS/usr/bin/cc
+
+
+

+ Details on this package are located in Section 8.29.2, “Contents + of GCC.” +

+
+
+
+
+
+
+

+ Chapter 7. Entering + Chroot and Building Additional Temporary Tools +

+
+
+
+
+
+
+
+

+ 7.1. Introduction +

+
+
+
+
+

+ This chapter shows how to build the last missing bits of the + temporary system: the tools needed to build the various + packages. Now that all circular dependencies have been + resolved, a “chroot” environment, completely isolated + from the host operating system (except for the running kernel), + can be used for the build. +

+

+ For proper operation of the isolated environment, some + communication with the running kernel must be established. This + is done via the so-called Virtual + Kernel File Systems, which will be mounted before + entering the chroot environment. You may want to verify that + they are mounted by issuing the findmnt command. +

+

+ Until Section 7.4, + “Entering the Chroot Environment”, the commands must be run + as root, with the LFS variable set. After entering chroot, all + commands are run as root, + fortunately without access to the OS of the computer you built + LFS on. Be careful anyway, as it is easy to destroy the whole + LFS system with bad commands. +

+
+
+
+
+

+ 7.2. Changing Ownership +

+
+
+
+
+
+

+ Note +

+

+ The commands in the remainder of this book must be performed + while logged in as user root + and no longer as user lfs. + Also, double check that $LFS is + set in root's environment. +

+
+

+ Currently, the whole directory hierarchy in $LFS is owned by the user lfs, a user that exists only on the host + system. If the directories and files under $LFS are kept as they are, they will be owned + by a user ID without a corresponding account. This is dangerous + because a user account created later could get this same user + ID and would own all the files under $LFS, thus exposing these files to possible + malicious manipulation. +

+

+ To address this issue, change the ownership of the $LFS/* directories to user root by running the following command: +

+
chown --from lfs -R root:root $LFS/{usr,var,etc,tools}
+case $(uname -m) in
+  x86_64) chown --from lfs -R root:root $LFS/lib64 ;;
+esac
+
+
+
+
+

+ 7.3. Preparing Virtual Kernel + File Systems +

+
+
+
+
+

+ Applications running in userspace utilize various file systems + created by the kernel to communicate with the kernel itself. + These file systems are virtual: no disk space is used for them. + The content of these file systems resides in memory. These file + systems must be mounted in the $LFS directory tree so the + applications can find them in the chroot environment. +

+

+ Begin by creating the directories on which these virtual file + systems will be mounted: +

+
mkdir -pv $LFS/{dev,proc,sys,run}
+
+

+ 7.3.1. Mounting and Populating /dev +

+

+ During a normal boot of an LFS system, the kernel + automatically mounts the devtmpfs file system on the /dev directory; the kernel creates device + nodes on that virtual file system during the boot process, or + when a device is first detected or accessed. The udev daemon + may change the ownership or permissions of the device nodes + created by the kernel, and create new device nodes or + symlinks, to ease the work of distro maintainers and system + administrators. (See Section 9.3.2.2, + “Device Node Creation” for details.) If the host kernel + supports devtmpfs, we can + simply mount a devtmpfs at + $LFS/dev and rely on the kernel + to populate it. +

+

+ But some host kernels lack devtmpfs support; these host distros use + different methods to create the content of /dev. So the only host-agnostic way to + populate the $LFS/dev directory + is by bind mounting the host system's /dev directory. A bind mount is a special + type of mount that makes a directory subtree or a file + visible at some other location. Use the following command to + do this. +

+
mount -v --bind /dev $LFS/dev
+
+
+

+ 7.3.2. Mounting Virtual Kernel + File Systems +

+

+ Now mount the remaining virtual kernel file systems: +

+
mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
+mount -vt proc proc $LFS/proc
+mount -vt sysfs sysfs $LFS/sys
+mount -vt tmpfs tmpfs $LFS/run
+
+

+ The meaning of the mount options for + devpts: +

+
+
+ gid=5 +
+
+

+ This ensures that all devpts-created device nodes are + owned by group ID 5. This is the ID we will use later + on for the tty group. + We use the group ID instead of a name, since the host + system might use a different ID for its tty group. +

+
+
+ mode=0620 +
+
+

+ This ensures that all devpts-created device nodes have + mode 0620 (user readable and writable, group writable). + Together with the option above, this ensures that + devpts will create device nodes that meet the + requirements of grantpt(), meaning the Glibc + pt_chown + helper binary (which is not installed by default) is + not necessary. +

+
+
+
+

+ In some host systems, /dev/shm + is a symbolic link to a directory, typically /run/shm. The /run tmpfs was mounted above + so in this case only a directory needs to be created with the + correct permissions. +

+

+ In other host systems /dev/shm + is a mount point for a tmpfs. In that case the mount of /dev + above will only create /dev/shm as a directory in the chroot + environment. In this situation we must explicitly mount a + tmpfs: +

+
if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
+fi
+
+
+
+
+
+

+ 7.4. Entering the Chroot + Environment +

+
+
+
+
+

+ Now that all the packages which are required to build the rest + of the needed tools are on the system, it is time to enter the + chroot environment and finish installing the temporary tools. + This environment will also be used to install the final system. + As user root, run the following + command to enter the environment that is, at the moment, + populated with nothing but temporary tools: +

+
chroot "$LFS" /usr/bin/env -i   \
+    HOME=/root                  \
+    TERM="$TERM"                \
+    PS1='(lfs chroot) \u:\w\$ ' \
+    PATH=/usr/bin:/usr/sbin     \
+    MAKEFLAGS="-j$(nproc)"      \
+    TESTSUITEFLAGS="-j$(nproc)" \
+    /bin/bash --login
+

+ If you don't want to use all available logical cores, replace + $(nproc) with the + number of logical cores you want to use for building packages + in this chapter and the following chapters. The test suites of + some packages (notably Autoconf, Libtool, and Tar) in Chapter 8 + are not affected by MAKEFLAGS, they + use a TESTSUITEFLAGS environment + variable instead. We set that here as well for running these + test suites with multiple cores. +

+

+ The -i option given to + the env command + will clear all the variables in the chroot environment. After + that, only the HOME, TERM, PS1, and + PATH variables are set again. The + TERM=$TERM construct + sets the TERM variable inside chroot + to the same value as outside chroot. This variable is needed so + programs like vim + and less can + operate properly. If other variables are desired, such as + CFLAGS or CXXFLAGS, this is a good place to set them. +

+

+ From this point on, there is no need to use the LFS variable any more because all work will be + restricted to the LFS file system; the chroot command runs the Bash + shell with the root (/) directory + set to $LFS. +

+

+ Notice that /tools/bin is not in + the PATH. This means that the cross + toolchain will no longer be used. +

+

+ Also note that the bash prompt will say + I have no name! This is + normal because the /etc/passwd + file has not been created yet. +

+
+

+ Note +

+

+ It is important that all the commands throughout the + remainder of this chapter and the following chapters are run + from within the chroot environment. If you leave this + environment for any reason (rebooting for example), ensure + that the virtual kernel filesystems are mounted as explained + in Section 7.3.1, + “Mounting and Populating /dev” and Section 7.3.2, + “Mounting Virtual Kernel File Systems” and enter chroot + again before continuing with the installation. +

+
+
+
+
+
+

+ 7.5. Creating Directories +

+
+
+
+
+

+ It is time to create the full directory structure in the LFS + file system. +

+
+

+ Note +

+

+ Some of the directories mentioned in this section may have + already been created earlier with explicit instructions, or + when installing some packages. They are repeated below for + completeness. +

+
+

+ Create some root-level directories that are not in the limited + set required in the previous chapters by issuing the following + command: +

+
mkdir -pv /{boot,home,mnt,opt,srv}
+

+ Create the required set of subdirectories below the root-level + by issuing the following commands: +

+
mkdir -pv /etc/{opt,sysconfig}
+mkdir -pv /lib/firmware
+mkdir -pv /media/{floppy,cdrom}
+mkdir -pv /usr/{,local/}{include,src}
+mkdir -pv /usr/lib/locale
+mkdir -pv /usr/local/{bin,lib,sbin}
+mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
+mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
+mkdir -pv /usr/{,local/}share/man/man{1..8}
+mkdir -pv /var/{cache,local,log,mail,opt,spool}
+mkdir -pv /var/lib/{color,misc,locate}
+
+ln -sfv /run /var/run
+ln -sfv /run/lock /var/lock
+
+install -dv -m 0750 /root
+install -dv -m 1777 /tmp /var/tmp
+

+ Directories are, by default, created with permission mode 755, + but this is not desirable everywhere. In the commands above, + two changes are made—one to the home directory of user + root, and another to the + directories for temporary files. +

+

+ The first mode change ensures that not just anybody can enter + the /root directory—just like a + normal user would do with his or her own home directory. The + second mode change makes sure that any user can write to the + /tmp and /var/tmp directories, but cannot remove + another user's files from them. The latter is prohibited by the + so-called “sticky + bit,” the highest bit (1) in the 1777 bit mask. +

+
+

+ 7.5.1. FHS Compliance Note +

+

+ This directory tree is based on the Filesystem Hierarchy + Standard (FHS) (available at https://refspecs.linuxfoundation.org/fhs.shtml). + The FHS also specifies the optional existence of additional + directories such as /usr/local/games and /usr/share/games. In LFS, we create only + the directories that are really necessary. However, feel free + to create more directories, if you wish. +

+
+

+ Warning +

+

+ The FHS does not mandate the existence of the directory + /usr/lib64, and the LFS + editors have decided not to use it. For the instructions in + LFS and BLFS to work correctly, it is imperative that this + directory be non-existent. From time to time you should + verify that it does not exist, because it is easy to create + it inadvertently, and this will probably break your system. +

+
+
+
+
+
+
+

+ 7.6. Creating Essential + Files and Symlinks +

+
+
+
+
+

+ Historically, Linux maintained a list of the mounted file + systems in the file /etc/mtab. + Modern kernels maintain this list internally and expose it to + the user via the /proc + filesystem. To satisfy utilities that expect to find + /etc/mtab, create the following + symbolic link: +

+
ln -sv /proc/self/mounts /etc/mtab
+

+ Create a basic /etc/hosts file to + be referenced in some test suites, and in one of Perl's + configuration files as well: +

+
cat > /etc/hosts << EOF
+127.0.0.1  localhost $(hostname)
+::1        localhost
+EOF
+

+ In order for user root to be + able to login and for the name “root” to be + recognized, there must be relevant entries in the /etc/passwd and /etc/group files. +

+

+ Create the /etc/passwd file by + running the following command: +

+
cat > /etc/passwd << "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
+nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
+EOF
+

+ The actual password for root + will be set later. +

+

+ Create the /etc/group file by + running the following command: +

+
cat > /etc/group << "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:
+users:x:999:
+nogroup:x:65534:
+EOF
+

+ The created groups are not part of any standard—they are groups + decided on in part by the requirements of the Udev + configuration in Chapter 9, and in part by common conventions + employed by a number of existing Linux distributions. In + addition, some test suites rely on specific users or groups. + The Linux Standard Base (LSB, available at https://refspecs.linuxfoundation.org/lsb.shtml) + only recommends that, besides the group root with a Group ID (GID) of 0, a group + bin with a GID of 1 be present. + The GID of 5 is widely used for the tty group, and the number 5 is also used in + /etc/fstab for the devpts filesystem. All other group names + and GIDs can be chosen freely by the system administrator since + well-written programs do not depend on GID numbers, but rather + use the group's name. +

+

+ The ID 65534 is used by the kernel for NFS and separate user + namespaces for unmapped users and groups (those exist on the + NFS server or the parent user namespace, but “do not exist” on the + local machine or in the separate namespace). We assign + nobody and nogroup to avoid an unnamed ID. But other + distros may treat this ID differently, so any portable program + should not depend on this assignment. +

+

+ Some tests in Chapter 8 + need a regular user. We add this user here and delete this + account at the end of that chapter. +

+
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
+echo "tester:x:101:" >> /etc/group
+install -o tester -d /home/tester
+

+ To remove the “I have + no name!” prompt, start a new shell. Since the + /etc/passwd and /etc/group files have been created, user name + and group name resolution will now work: +

+
exec /usr/bin/bash --login
+

+ The login, + agetty, and + init programs + (and others) use a number of log files to record information + such as who was logged into the system and when. However, these + programs will not write to the log files if they do not already + exist. Initialize the log files and give them proper + permissions: +

+
touch /var/log/{btmp,lastlog,faillog,wtmp}
+chgrp -v utmp /var/log/lastlog
+chmod -v 664  /var/log/lastlog
+chmod -v 600  /var/log/btmp
+

+ The /var/log/wtmp file records + all logins and logouts. The /var/log/lastlog file records when each user + last logged in. The /var/log/faillog file records failed login + attempts. The /var/log/btmp file + records the bad login attempts. +

+
+

+ Note +

+

+ The /run/utmp file records the + users that are currently logged in. This file is created + dynamically in the boot scripts. +

+
+
+

+ Note +

+

+ The utmp, wtmp, btmp, + and lastlog files use 32-bit + integers for timestamps and they'll be fundamentally broken + after year 2038. Many packages have stopped using them and + other packages are going to stop using them. It is probably + best to consider them deprecated. +

+
+
+
+
+
+

+ 7.7. Gettext-0.26 +

+
+
+
+
+
+

+ The Gettext package contains utilities for + internationalization and localization. These allow programs + to be compiled with NLS (Native Language Support), enabling + them to output messages in the user's native language. +

+
+
+
+ Approximate build time: + 1.5 SBU +
+
+ Required disk space: + 463 MB +
+
+
+
+
+

+ 7.7.1. Installation of Gettext +

+

+ For our temporary set of tools, we only need to install three + programs from Gettext. +

+

+ Prepare Gettext for compilation: +

+
./configure --disable-shared
+
+

+ The meaning of the configure option: +

+
+
+ --disable-shared +
+
+

+ We do not need to install any of the shared Gettext + libraries at this time, therefore there is no need to + build them. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the msgfmt, msgmerge, and xgettext programs: +

+
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
+
+
+

+ Details on this package are located in Section 8.33.2, + “Contents of Gettext.” +

+
+
+
+
+
+

+ 7.8. Bison-3.8.2 +

+
+
+
+
+
+

+ The Bison package contains a parser generator. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 58 MB +
+
+
+
+
+

+ 7.8.1. Installation of Bison +

+

+ Prepare Bison for compilation: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/bison-3.8.2
+
+

+ The meaning of the new configure option: +

+
+
+ --docdir=/usr/share/doc/bison-3.8.2 +
+
+

+ This tells the build system to install bison + documentation into a versioned directory. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make install
+
+
+

+ Details on this package are located in Section 8.34.2, + “Contents of Bison.” +

+
+
+
+
+
+

+ 7.9. Perl-5.42.0 +

+
+
+
+
+
+

+ The Perl package contains the Practical Extraction and Report + Language. +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 295 MB +
+
+
+
+
+

+ 7.9.1. Installation of Perl +

+

+ Prepare Perl for compilation: +

+
sh Configure -des                                         \
+             -D prefix=/usr                               \
+             -D vendorprefix=/usr                         \
+             -D useshrplib                                \
+             -D privlib=/usr/lib/perl5/5.42/core_perl     \
+             -D archlib=/usr/lib/perl5/5.42/core_perl     \
+             -D sitelib=/usr/lib/perl5/5.42/site_perl     \
+             -D sitearch=/usr/lib/perl5/5.42/site_perl    \
+             -D vendorlib=/usr/lib/perl5/5.42/vendor_perl \
+             -D vendorarch=/usr/lib/perl5/5.42/vendor_perl
+
+

+ The meaning of the Configure options: +

+
+
+ -des +
+
+

+ This is a combination of three options: -d uses + defaults for all items; -e ensures completion of all + tasks; -s silences non-essential output. +

+
+
+ -D + vendorprefix=/usr +
+
+

+ This ensures perl knows how to + tell packages where they should install their Perl + modules. +

+
+
+ -D + useshrplib +
+
+

+ Build libperl needed by + some Perl modules as a shared library, instead of a + static library. +

+
+
+ -D + privlib,-D archlib,-D sitelib,... +
+
+

+ These settings define where Perl looks for installed + modules. The LFS editors chose to put them in a + directory structure based on the MAJOR.MINOR version of + Perl (5.42) which allows upgrading Perl to newer patch + levels (the patch level is the last dot separated part + in the full version string like 5.42.0) without + reinstalling all of the modules. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make install
+
+
+

+ Details on this package are located in Section 8.43.2, + “Contents of Perl.” +

+
+
+
+
+
+

+ 7.10. Python-3.13.7 +

+
+
+
+
+
+

+ The Python 3 package contains the Python development + environment. It is useful for object-oriented programming, + writing scripts, prototyping large programs, and developing + entire applications. Python is an interpreted computer + language. +

+
+
+
+ Approximate build time: + 0.5 SBU +
+
+ Required disk space: + 546 MB +
+
+
+
+
+

+ 7.10.1. Installation of Python +

+
+

+ Note +

+

+ There are two package files whose name starts with the + “python” prefix. The one to extract + from is Python-3.13.7.tar.xz + (notice the uppercase first letter). +

+
+

+ Prepare Python for compilation: +

+
./configure --prefix=/usr       \
+            --enable-shared     \
+            --without-ensurepip \
+            --without-static-libpython
+
+

+ The meaning of the configure option: +

+
+
+ --enable-shared +
+
+

+ This switch prevents installation of static libraries. +

+
+
+ --without-ensurepip +
+
+

+ This switch disables the Python package installer, + which is not needed at this stage. +

+
+
+ --without-static-libpython +
+
+

+ This switch prevents building a large, but unneeded, + static library. +

+
+
+
+

+ Compile the package: +

+
make
+
+

+ Note +

+

+ Some Python 3 modules can't be built now because the + dependencies are not installed yet. For the ssl module, a message Python requires a OpenSSL 1.1.1 or + newer is outputted. The message should be ignored. + Just make sure the toplevel make command has not + failed. The optional modules are not needed now and they + will be built in Chapter 8. +

+
+

+ Install the package: +

+
make install
+
+
+

+ Details on this package are located in Section 8.51.2, + “Contents of Python 3.” +

+
+
+
+
+
+

+ 7.11. Texinfo-7.2 +

+
+
+
+
+
+

+ The Texinfo package contains programs for reading, writing, + and converting info pages. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 152 MB +
+
+
+
+
+

+ 7.11.1. Installation of Texinfo +

+

+ Prepare Texinfo for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make install
+
+
+

+ Details on this package are located in Section 8.72.2, + “Contents of Texinfo.” +

+
+
+
+
+
+

+ 7.12. Util-linux-2.41.1 +

+
+
+
+
+
+

+ The Util-linux package contains miscellaneous utility + programs. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 192 MB +
+
+
+
+
+

+ 7.12.1. Installation of Util-linux +

+

+ The FHS recommends using the /var/lib/hwclock directory instead of the + usual /etc directory as the + location for the adjtime file. + Create this directory with: +

+
mkdir -pv /var/lib/hwclock
+

+ Prepare Util-linux for compilation: +

+
./configure --libdir=/usr/lib     \
+            --runstatedir=/run    \
+            --disable-chfn-chsh   \
+            --disable-login       \
+            --disable-nologin     \
+            --disable-su          \
+            --disable-setpriv     \
+            --disable-runuser     \
+            --disable-pylibmount  \
+            --disable-static      \
+            --disable-liblastlog2 \
+            --without-python      \
+            ADJTIME_PATH=/var/lib/hwclock/adjtime \
+            --docdir=/usr/share/doc/util-linux-2.41.1
+
+

+ The meaning of the configure options: +

+
+
+ ADJTIME_PATH=/var/lib/hwclock/adjtime +
+
+

+ This sets the location of the file recording + information about the hardware clock in accordance to + the FHS. This is not strictly needed for this temporary + tool, but it prevents creating a file at another + location, which would not be overwritten or removed + when building the final util-linux package. +

+
+
+ --libdir=/usr/lib +
+
+

+ This switch ensures the .so symlinks targeting the shared + library file in the same directory (/usr/lib) directly. +

+
+
+ --disable-* +
+
+

+ These switches prevent warnings about building + components that require packages not in LFS or not + installed yet. +

+
+
+ --without-python +
+
+

+ This switch disables using Python. It avoids trying to build + unneeded bindings. +

+
+
+ runstatedir=/run +
+
+

+ This switch sets the location of the socket used by + uuidd and + libuuid correctly. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make install
+
+
+

+ Details on this package are located in Section 8.79.2, + “Contents of Util-linux.” +

+
+
+
+
+
+

+ 7.13. Cleaning up and Saving + the Temporary System +

+
+
+
+
+
+

+ 7.13.1. Cleaning +

+

+ First, remove the currently installed documentation files to + prevent them from ending up in the final system, and to save + about 35 MB: +

+
rm -rf /usr/share/{info,man,doc}/*
+

+ Second, on a modern Linux system, the libtool .la files are + only useful for libltdl. No libraries in LFS are loaded by + libltdl, and it's known that some .la files can cause BLFS + package failures. Remove those files now: +

+
find /usr/{lib,libexec} -name \*.la -delete
+

+ The current system size is now about 3 GB, however the /tools + directory is no longer needed. It uses about 1 GB of disk + space. Delete it now: +

+
rm -rf /tools
+
+
+

+ 7.13.2. Backup +

+

+ At this point the essential programs and libraries have been + created and your current LFS system is in a good state. Your + system can now be backed up for later reuse. In case of fatal + failures in the subsequent chapters, it often turns out that + removing everything and starting over (more carefully) is the + best way to recover. Unfortunately, all the temporary files + will be removed, too. To avoid spending extra time to redo + something which has been done successfully, creating a backup + of the current LFS system may prove useful. +

+
+

+ Note +

+

+ All the remaining steps in this section are optional. + Nevertheless, as soon as you begin installing packages in + Chapter 8, + the temporary files will be overwritten. So it may be a + good idea to do a backup of the current system as described + below. +

+
+

+ The following steps are performed from outside the chroot + environment. That means you have to leave the chroot + environment first before continuing. The reason for that is + to get access to file system locations outside of the chroot + environment to store/read the backup archive, which ought not + be placed within the $LFS + hierarchy. +

+

+ If you have decided to make a backup, leave the chroot + environment: +

+
exit
+
+

+ Important +

+

+ All of the following instructions are executed by + root on your host system. + Take extra care about the commands you're going to run as + mistakes made here can modify your host system. Be aware + that the environment variable LFS is set for user lfs by default but may not be set for root. +

+

+ Whenever commands are to be executed by root, make sure you have set + LFS. +

+

+ This has been discussed in Section 2.6, + “Setting the $LFS Variable and the Umask.” +

+
+

+ Before making a backup, unmount the virtual file systems: +

+
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
+umount $LFS/dev/pts
+umount $LFS/{sys,proc,run,dev}
+

+ Make sure you have at least 1 GB free disk space (the source + tarballs will be included in the backup archive) on the file + system containing the directory where you create the backup + archive. +

+

+ Note that the instructions below specify the home directory + of the host system's root + user, which is typically found on the root file system. + Replace $HOME by a directory of + your choice if you do not want to have the backup stored in + root's home directory. +

+

+ Create the backup archive by running the following command: +

+
+

+ Note +

+

+ Because the backup archive is compressed, it takes a + relatively long time (over 10 minutes) even on a reasonably + fast system. +

+
+
cd $LFS
+tar -cJpf $HOME/lfs-temp-tools-12.4.tar.xz .
+
+

+ Note +

+

+ If continuing to chapter 8, don't forget to reenter the + chroot environment as explained in the “Important” box + below. +

+
+
+
+

+ 7.13.3. Restore +

+

+ In case some mistakes have been made and you need to start + over, you can use this backup to restore the system and save + some recovery time. Since the sources are located under + $LFS, they are included in the + backup archive as well, so they do not need to be downloaded + again. After checking that $LFS is + set properly, you can restore the backup by executing the + following commands: +

+
+

+ Warning +

+

+ The following commands are extremely dangerous. If you run + rm -rf ./* as + the root user and you do + not change to the $LFS directory or the LFS environment variable is not set for the + root user, it will destroy + your entire host system. YOU ARE WARNED. +

+
+
cd $LFS
+rm -rf ./*
+tar -xpf $HOME/lfs-temp-tools-12.4.tar.xz
+

+ Again, double check that the environment has been set up + properly and continue building the rest of the system. +

+
+

+ Important +

+

+ If you left the chroot environment to create a backup or + restart building using a restore, remember to check that + the virtual file systems are still mounted (findmnt | grep $LFS). If + they are not mounted, remount them now as described in + Section 7.3, + “Preparing Virtual Kernel File Systems” and re-enter + the chroot environment (see Section 7.4, + “Entering the Chroot Environment”) before continuing. +

+
+
+
+
+
+
+
+
+

+ Part IV. Building the + LFS System +

+
+
+
+
+
+
+
+

+ Chapter 8. Installing + Basic System Software +

+
+
+
+
+
+
+
+

+ 8.1. Introduction +

+
+
+
+
+

+ In this chapter, we start constructing the LFS system in + earnest. +

+

+ The installation of this software is straightforward. Although + in many cases the installation instructions could be made + shorter and more generic, we have opted to provide the full + instructions for every package to minimize the possibilities + for mistakes. The key to learning what makes a Linux system + work is to know what each package is used for and why you (or + the system) may need it. +

+

+ We do not recommend using customized optimizations. They can + make a program run slightly faster, but they may also cause + compilation difficulties, and problems when running the + program. If a package refuses to compile with a customized + optimization, try to compile it without optimization and see if + that fixes the problem. Even if the package does compile when + using a customized optimization, there is the risk it may have + been compiled incorrectly because of the complex interactions + between the code and the build tools. Also note that the + -march and -mtune options using values not specified in + the book have not been tested. This may cause problems with the + toolchain packages (Binutils, GCC and Glibc). The small + potential gains achieved by customizing compiler optimizations + are often outweighed by the risks. First-time builders of LFS + are encouraged to build without custom optimizations. +

+

+ On the other hand, we keep the optimizations enabled by the + default configuration of the packages. In addition, we + sometimes explicitly enable an optimized configuration provided + by a package but not enabled by default. The package + maintainers have already tested these configurations and + consider them safe, so it's not likely they would break the + build. Generally the default configuration already enables + -O2 or -O3, so the resulting system will still run + very fast without any customized optimization, and be stable at + the same time. +

+

+ Before the installation instructions, each installation page + provides information about the package, including a concise + description of what it contains, approximately how long it will + take to build, and how much disk space is required during this + building process. Following the installation instructions, + there is a list of programs and libraries (along with brief + descriptions) that the package installs. +

+
+

+ Note +

+

+ The SBU values and required disk space include test suite + data for all applicable packages in Chapter 8. + SBU values have been calculated using four CPU cores (-j4) + for all operations unless specified otherwise. +

+
+
+

+ 8.1.1. About Libraries +

+

+ In general, the LFS editors discourage building and + installing static libraries. Most static libraries have been + made obsolete in a modern Linux system. In addition, linking + a static library into a program can be detrimental. If an + update to the library is needed to remove a security problem, + every program that uses the static library will need to be + relinked with the new library. Since the use of static + libraries is not always obvious, the relevant programs (and + the procedures needed to do the linking) may not even be + known. +

+

+ The procedures in this chapter remove or disable installation + of most static libraries. Usually this is done by passing a + --disable-static option to + configure. In + other cases, alternate means are needed. In a few cases, + especially Glibc and GCC, the use of static libraries remains + an essential feature of the package building process. +

+

+ For a more complete discussion of libraries, see + Libraries: Static or shared? in the BLFS book. +

+
+
+
+
+
+

+ 8.2. Package Management +

+
+
+
+
+

+ Package Management is an often requested addition to the LFS + Book. A 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—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. +

+

+ Some reasons why no package manager is mentioned in LFS or BLFS + include: +

+
+
    +
  • +

    + Dealing with package management takes the focus away from + the goals of these books—teaching how a Linux system is + built. +

    +
  • +
  • +

    + There are multiple solutions for package management, each + having its strengths and drawbacks. Finding one solution + that satisfies all audiences is difficult. +

    +
  • +
+
+

+ There are some hints written on the topic of package + management. Visit the Hints + Project and see if one of them fits your needs. +

+
+

+ 8.2.1. Upgrade Issues +

+

+ A Package Manager makes it easy to upgrade to newer versions + when they are released. Generally the instructions in the LFS + and BLFS books can be used to upgrade to the newer versions. + Here are some points that you should be aware of when + upgrading packages, especially on a running system. +

+
+
    +
  • +

    + If the Linux kernel needs to be upgraded (for example, + from 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. +

    +
  • +
  • +

    + If Glibc needs to be upgraded to a newer version, + (e.g., from Glibc-2.36 to Glibc-2.42), some extra steps + are needed to avoid breaking the system. Read Section 8.5, + “Glibc-2.42” for details. +

    +
  • +
  • +

    + If a package containing a shared library is updated, + and if the name of the library[1] changes, then any packages + dynamically linked to the library must be recompiled, + to link against the newer library. For example, + consider a package foo-1.2.3 that installs a shared + library with the name libfoo.so.1. Suppose you upgrade the + package to a newer version foo-1.2.4 that installs a + shared library with the name libfoo.so.2. In this case, any + packages that are dynamically linked to libfoo.so.1 need to be recompiled to + link against libfoo.so.2 + in order to use the new library version. You should not + remove the old libraries until all the dependent + packages have been recompiled. +

    +
  • +
  • +

    + If a package is (directly or indirectly) linked to both + the old and new names of a shared library (for example, + the package links to both libfoo.so.2 and libbar.so.1, while the latter links + to libfoo.so.3), 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 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 libfoo.so.3) as soon as possible. +

    +
  • +
  • +

    + If a package containing a shared library is updated, + and the name of the library doesn't change, but the + version number of the library file decreases (for + example, the library is still named libfoo.so.1, but the name of the + library file is changed from libfoo.so.1.25 to libfoo.so.1.24), you should remove + the library file from the previously installed version + (libfoo.so.1.25 in this + case). Otherwise, a ldconfig command + (invoked by yourself from the command line, or by the + installation of some package) will reset the symlink + libfoo.so.1 to point to + the old library file because it seems to be a + “newer” version; its version + number is larger. This situation may arise if you have + to downgrade a package, or if the authors change the + versioning scheme for library files. +

    +
  • +
  • +

    + If a package containing a shared library is updated, + and the name of the library doesn't change, but a + severe issue (especially, a security vulnerability) is + fixed, all running programs linked to the shared + library should be restarted. The following command, run + as root after the + update is complete, will list which processes are using + the old versions of those libraries (replace libfoo with the name of + the library): +

    +
    grep -l 'libfoo.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u
    +

    + If OpenSSH is being + used to access the system and it is linked to the + updated library, you must restart the sshd service, then + logout, login again, and run the preceding command + again to confirm that nothing is still using the + deleted libraries. +

    +
  • +
  • +

    + 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 install command + provided by coreutils + 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. +

    +
  • +
+
+
+
+

+ 8.2.2. Package Management Techniques +

+

+ The following are some common package management techniques. + Before making a decision on a package manager, do some + research on the various techniques, particularly the + drawbacks of each particular scheme. +

+
+
+
+
+

+ 8.2.2.1. It is All in + My Head! +

+
+
+
+

+ Yes, this is a package management technique. Some folks do + not need a package manager because they know the packages + intimately and know which files are installed by each + package. Some users also do not need any package management + because they plan on rebuilding the entire system whenever + a package is changed. +

+
+
+
+
+
+

+ 8.2.2.2. Install in + Separate Directories +

+
+
+
+

+ 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 /opt/foo-1.1 and a symlink is made from + /opt/foo to /opt/foo-1.1. When a new version foo-1.2 + comes along, it is installed in /opt/foo-1.2 and the previous symlink is + replaced by a symlink to the new version. +

+

+ Environment variables such as PATH, MANPATH, + INFOPATH, PKG_CONFIG_PATH, CPPFLAGS, LDFLAGS, and the configuration file + /etc/ld.so.conf may need to + be expanded to include the corresponding subdirectories in + /opt/foo-x.y. +

+

+ This scheme is used by the BLFS book to install some very + large packages to make it easier to upgrade them. If you + install more than a few packages, this scheme becomes + unmanageable. And some packages (for example Linux API + headers and Glibc) may not work well with this scheme. + Never use this scheme + system-wide. +

+
+
+
+
+
+

+ 8.2.2.3. Symlink Style + Package Management +

+
+
+
+

+ 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 /usr 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. +

+

+ The installation script needs to be fooled, so the package + thinks it is installed in /usr though in reality it is installed in + the /usr/pkg hierarchy. + Installing in this manner is not usually a trivial task. + For example, suppose you are installing a package + libfoo-1.1. The following instructions may not install the + package properly: +

+
./configure --prefix=/usr/pkg/libfoo/1.1
+make
+make install
+

+ 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 /usr/pkg/libfoo/1.1/lib/libfoo.so.1 + instead of /usr/lib/libfoo.so.1 as you would expect. + The correct approach is to use the DESTDIR variable to direct the installation. + This approach works as follows: +

+
./configure --prefix=/usr
+make
+make DESTDIR=/usr/pkg/libfoo/1.1 install
+

+ 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 /opt. +

+
+
+
+
+
+

+ 8.2.2.4. Timestamp + Based +

+
+
+
+

+ In this technique, a file is timestamped before the + installation of the package. After the installation, a + simple use of the find command with the + appropriate options can generate a log of all the files + installed after the timestamp file was created. A package + manager that uses this approach is install-log. +

+

+ Though this scheme has the advantage of being simple, it + has two 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. +

+
+
+
+
+
+

+ 8.2.2.5. Tracing + Installation Scripts +

+
+
+
+

+ In this approach, the commands that the installation + scripts perform are recorded. There are two techniques that + one can use: +

+

+ The LD_PRELOAD 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 cp, install, mv 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. +

+

+ Another technique is to use strace, which logs all + the system calls made during the execution of the + installation scripts. +

+
+
+
+
+
+

+ 8.2.2.6. Creating + Package Archives +

+
+
+
+

+ 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. +

+

+ 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 Linux + Standard Base Specification), 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 + https://www.linuxfromscratch.org/hints/downloads/files/fakeroot.txt. +

+

+ The creation of package files that include dependency + information is complex, and beyond the scope of LFS. +

+

+ Slackware uses a tar-based system for + package archives. This system purposely does not handle + package dependencies as more complex package managers do. + For details of Slackware package management, see https://www.slackbook.org/html/package-management.html. +

+
+
+
+
+
+

+ 8.2.2.7. User Based + Management +

+
+
+
+

+ This scheme, unique to LFS, was devised by Matthias + Benkmann, and is available from the Hints + Project. In this scheme, each package is installed as a + separate user into the standard locations. Files belonging + to a package are easily identified by checking the user ID. + The features and shortcomings of this approach are too + complex to describe in this section. For the details please + see the hint at + https://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt. +

+
+
+
+

+ 8.2.3. Deploying LFS on Multiple Systems +

+

+ One of the advantages of an LFS system is that there are no + files that depend on the position of files on a disk system. + Cloning an LFS build to another computer with the same + architecture as the base system is as simple as using + tar on the LFS + partition that contains the root directory (about 900MB + uncompressed for a basic LFS build), copying 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: /etc/hosts, + /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, + /etc/ld.so.conf, /etc/sysconfig/rc.site, /etc/sysconfig/network, and /etc/sysconfig/ifconfig.eth0. +

+

+ A custom kernel may be needed for the new system, depending + on differences in system hardware and the original kernel + configuration. +

+
+

+ Important +

+

+ If you want to deploy the LFS system onto a system with a + different CPU, when you build Section 8.21, “GMP-6.3.0” + and Section 8.50, + “Libffi-3.5.2” you must follow the notes about + overriding the architecture-specific optimization to + produce libraries suitable for both the host system and the + system(s) where you'll deploy the LFS system. Otherwise + you'll get Illegal + Instruction errors running LFS. +

+
+

+ Finally, the new system has to be made bootable via Section 10.4, + “Using GRUB to Set Up the Boot Process”. +

+
+
+
+
+
+

+ [1] The name of a shared library is the + string coded in the DT_SONAME + entry of its ELF dynamic section. You can get it with the + readelf -d <library file> | grep + SONAME command. In most cases it's suffixed + with .so.<a version + number>, but there are some cases + where it contains multiple numbers for versioning (like + libbz2.so.1.0), contains the + version number before the .so + suffix (like libbfd-2.45), or + does not contain any version number at all (for example + libmemusage.so). Generally + there is no correlation between the package version and the + version number(s) in the library name. +

+
+
+
+
+
+
+

+ 8.3. Man-pages-6.15 +

+
+
+
+
+
+

+ The Man-pages package contains over 2,400 man pages. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 52 MB +
+
+
+
+
+

+ 8.3.1. Installation of Man-pages +

+

+ Remove two man pages for password hashing functions. + Libxcrypt will provide a + better version of these man pages: +

+
rm -v man3/crypt*
+

+ Install Man-pages by running: +

+
make -R GIT=false prefix=/usr install
+
+

+ The meaning of the options: +

+
+
+ -R +
+
+

+ This prevents make from setting any + built-in variables. The building system of man-pages + does not work well with built-in variables, but + currently there is no way to disable them except + passing -R + explicitly via the command line. +

+
+
+ GIT=false +
+
+

+ This prevents the building system from emitting many + git: command not + found warnings lines. +

+
+
+
+
+
+

+ 8.3.2. + Contents of Man-pages +

+
+
+
+ Installed files: + various man pages +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ man + pages +

+
+

+ Describe C programming language functions, + important device files, and significant + configuration files +

+
+
+
+
+
+
+
+

+ 8.4. Iana-Etc-20250807 +

+
+
+
+
+
+

+ The Iana-Etc package provides data for network services and + protocols. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 4.8 MB +
+
+
+
+
+

+ 8.4.1. Installation of Iana-Etc +

+

+ For this package, we only need to copy the files into place: +

+
cp services protocols /etc
+
+
+

+ 8.4.2. + Contents of Iana-Etc +

+
+
+
+ Installed files: + /etc/protocols and + /etc/services +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ /etc/protocols +

+
+

+ Describes the various DARPA Internet protocols that + are available from the TCP/IP subsystem +

+
+

+ /etc/services +

+
+

+ Provides a mapping between friendly textual names + for internet services, and their underlying + assigned port numbers and protocol types +

+
+
+
+
+
+
+
+

+ 8.5. Glibc-2.42 +

+
+
+
+
+
+

+ 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. +

+
+
+
+ Approximate build time: + 12 SBU +
+
+ Required disk space: + 3.3 GB +
+
+
+
+
+

+ 8.5.1. Installation of Glibc +

+

+ Some of the Glibc programs use the non-FHS compliant + /var/db directory to store + their runtime data. Apply the following patch to make such + programs store their runtime data in the FHS-compliant + locations: +

+
patch -Np1 -i ../glibc-2.42-fhs-1.patch
+

+ Now fix an issue which may break Valgrind in BLFS: +

+
sed -e '/unistd.h/i #include <string.h>' \
+    -e '/libc_rwlock_init/c\
+  __libc_rwlock_define_initialized (, reset_lock);\
+  memcpy (&lock, &reset_lock, sizeof (lock));' \
+    -i stdlib/abort.c 
+

+ The Glibc documentation recommends building Glibc in a + dedicated build directory: +

+
mkdir -v build
+cd       build
+

+ Ensure that the ldconfig and sln utilities will be + installed into /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Prepare Glibc for compilation: +

+
../configure --prefix=/usr                   \
+             --disable-werror                \
+             --disable-nscd                  \
+             libc_cv_slibdir=/usr/lib        \
+             --enable-stack-protector=strong \
+             --enable-kernel=5.4
+
+

+ The meaning of the configure options: +

+
+
+ --disable-werror +
+
+

+ This option disables the -Werror option passed to GCC. + This is necessary for running the test suite. +

+
+
+ --enable-kernel=5.4 +
+
+

+ This option tells the build system that this Glibc may + be used with kernels as old as 5.4. This means + generating workarounds in case a system call introduced + in a later version cannot be used. +

+
+
+ --enable-stack-protector=strong +
+
+

+ This option increases system security by adding 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 --enable-default-ssp for GCC. +

+
+
+ --disable-nscd +
+
+

+ Do not build the name service cache daemon which is no + longer used. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ This variable sets the correct library for all systems. + We do not want lib64 to be used. +

+
+
+
+

+ Compile the package: +

+
make
+
+

+ Important +

+

+ In this section, the test suite for Glibc is considered + critical. Do not skip it under any circumstance. +

+
+

+ Generally a few tests do not pass. The test failures listed + below are usually safe to ignore. +

+
make check
+

+ 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: +

+
+
    +
  • +

    + io/tst-lchmod is + known to fail in the LFS chroot environment. +

    +
  • +
  • +

    + misc/tst-preadvwritev2 and + misc/tst-preadvwritev64v2 + are known to fail if the host kernel is Linux-6.14 or + later. +

    +
  • +
  • +

    + Some tests, for example nss/tst-nss-files-hosts-multi + and nptl/tst-thread-affinity* + 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: +

    +
    grep "Timed out" $(find -name \*.out)
    +

    + It's possible to re-run a single test with enlarged + timeout with TIMEOUTFACTOR=<factor> make + test t=<test + name>. For example, + TIMEOUTFACTOR=10 make + test t=nss/tst-nss-files-hosts-multi + will re-run nss/tst-nss-files-hosts-multi + with ten times the original timeout. +

    +
  • +
  • +

    + Additionally, some tests may fail with a relatively old + CPU model (for example elf/tst-cpu-features-cpuinfo) + or host kernel version (for example stdlib/tst-arc4random-thread). +

    +
  • +
+
+

+ Though it is a harmless message, the install stage of Glibc + will complain about the absence of /etc/ld.so.conf. Prevent this warning with: +

+
touch /etc/ld.so.conf
+

+ Fix the Makefile to skip an outdated sanity check that fails + with a modern Glibc configuration: +

+
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
+
+

+ Important +

+

+ If upgrading Glibc to a new minor version (for example, + from Glibc-2.36 to Glibc-2.42) on a running LFS system, you + need to take some extra precautions to avoid breaking the + system: +

+
+
    +
  • +

    + 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. +

    +
  • +
  • +

    + If upgrading on a LFS system prior to 12.0 + (exclusive), install Libxcrypt following Section 8.27, + “Libxcrypt-4.4.38.” In addition to a normal + Libxcrypt + installation, you MUST + follow the note in Libxcrypt section to install + libcrypt.so.1* + (replacing libcrypt.so.1 from the prior Glibc + installation). +

    +
  • +
  • +

    + If upgrading on a LFS system prior to 12.1 + (exclusive), remove the nscd program: +

    +
    rm -f /usr/sbin/nscd
    +
  • +
  • +

    + Upgrade the kernel and reboot if it's older than 5.4 + (check the current version with uname -r) or if you + want to upgrade it anyway, following Section 10.3, + “Linux-6.16.1.” +

    +
  • +
  • +

    + Upgrade the kernel API headers if it's older than 5.4 + (check the current version with cat + /usr/include/linux/version.h) or if + you want to upgrade it anyway, following Section 5.4, + “Linux-6.16.1 API Headers” (but removing + $LFS from the cp command). +

    +
  • +
  • +

    + Perform a DESTDIR + installation and upgrade the Glibc shared libraries + on the system using one single install command: +

    +
    make DESTDIR=$PWD/dest install
    +install -vm755 dest/usr/lib/*.so.* /usr/lib
    +
  • +
+
+

+ It's imperative to strictly follow these steps above unless + you completely understand what you are doing. Any unexpected deviation may render the + system completely unusable. YOU ARE WARNED. +

+

+ Then continue to run the make + install command, the sed command against + /usr/bin/ldd, and the + commands to install the locales. Once they are finished, + reboot the system immediately. +

+

+ 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 --disable-fixincludes option, + move two GCC headers into a better location and remove the + stale “fixed” copies of the Glibc headers: +

+
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 $DIR/include-fixed/*
+unset DIR
+
+

+ Install the package: +

+
make install
+

+ Fix a hardcoded path to the executable loader in the + ldd script: +

+
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
+

+ 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. +

+

+ Individual locales can be installed using the localedef program. E.g., + the second localedef command below + combines the /usr/share/i18n/locales/cs_CZ + charset-independent locale definition with the /usr/share/i18n/charmaps/UTF-8.gz charmap + definition and appends the result to the /usr/lib/locale/locale-archive file. The + following instructions will install the minimum set of + locales necessary for the optimal coverage of tests: +

+
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
+

+ In addition, install the locale for your own country, + language and character set. +

+

+ Alternatively, install all the locales listed in the + glibc-2.42/localedata/SUPPORTED + file (it includes every locale listed above and many more) at + once with the following time-consuming command: +

+
make localedata/install-locales
+
+

+ Note +

+

+ 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 + BLFS libidn2 page. +

+
+
+
+

+ 8.5.2. Configuring + Glibc +

+
+
+
+
+

+ 8.5.2.1. Adding + nsswitch.conf +

+
+
+
+

+ The /etc/nsswitch.conf file + needs to be created because the Glibc defaults do not work + well in a networked environment. +

+

+ Create a new file /etc/nsswitch.conf by running the + following: +

+
cat > /etc/nsswitch.conf << "EOF"
+# 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
+EOF
+
+
+
+
+
+

+ 8.5.2.2. Adding Time + Zone Data +

+
+
+
+

+ Install and set up the time zone data with the following: +

+
tar -xf ../../tzdata2025b.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
+
+

+ The meaning of the zic commands: +

+
+
+ zic -L + /dev/null ... +
+
+

+ This creates posix time zones without any leap + seconds. It is conventional to put these in both + zoneinfo and + zoneinfo/posix. It is + necessary to put the POSIX time zones in zoneinfo, 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 posix + directory, but some applications or test suites might + produce some failures. +

+
+
+ zic -L + leapseconds ... +
+
+

+ 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 right + directory. +

+
+
+ zic ... + -p ... +
+
+

+ This creates the posixrules file. We use New York + because POSIX requires the daylight saving time rules + to be in accordance with US rules. +

+
+
+
+

+ One way to determine the local time zone is to run the + following script: +

+
tzselect
+

+ After answering a few questions about the location, the + script will output the name of the time zone (e.g., + America/Edmonton). + There are also some other possible time zones listed in + /usr/share/zoneinfo such as + Canada/Eastern or + EST5EDT that are not + identified by the script but can be used. +

+

+ Then create the /etc/localtime file by running: +

+
ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime
+

+ Replace <xxx> with the name + of the time zone selected (e.g., Canada/Eastern). +

+
+
+
+
+
+

+ 8.5.2.3. Configuring the Dynamic + Loader +

+
+
+
+

+ By default, the dynamic loader (/lib/ld-linux.so.2) searches through + /usr/lib for dynamic + libraries that are needed by programs as they are run. + However, if there are libraries in directories other than + /usr/lib, these need to be + added to the /etc/ld.so.conf + file in order for the dynamic loader to find them. Two + directories that are commonly known to contain additional + libraries are /usr/local/lib + and /opt/lib, so add those + directories to the dynamic loader's search path. +

+

+ Create a new file /etc/ld.so.conf by running the following: +

+
cat > /etc/ld.so.conf << "EOF"
+# Begin /etc/ld.so.conf
+/usr/local/lib
+/opt/lib
+
+EOF
+

+ 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: +

+
cat >> /etc/ld.so.conf << "EOF"
+# Add an include directory
+include /etc/ld.so.conf.d/*.conf
+
+EOF
+mkdir -pv /etc/ld.so.conf.d
+
+
+
+

+ 8.5.3. + Contents of Glibc +

+
+
+
+ Installed programs: + gencat, getconf, getent, iconv, + iconvconfig, ldconfig, 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 +
+
+ Installed libraries: + 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, + libdl.{a,so.2}, libg.a, libm.{a,so}, libmcheck.a, + libmemusage.so, libmvec.{a,so}, libnsl.so.1, + libnss_compat.so, libnss_dns.so, libnss_files.so, + libnss_hesiod.so, libpcprofile.so, libpthread.{a,so.0}, + libresolv.{a,so}, librt.{a,so.1}, libthread_db.so, and + libutil.{a,so.1} +
+
+ Installed directories: + /usr/include/arpa, + /usr/include/bits, /usr/include/gnu, /usr/include/net, + /usr/include/netash, /usr/include/netatalk, + /usr/include/netax25, /usr/include/neteconet, + /usr/include/netinet, /usr/include/netipx, + /usr/include/netiucv, /usr/include/netpacket, + /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 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gencat +

+
+

+ Generates message catalogues +

+
+

+ getconf +

+
+

+ Displays the system configuration values for file + system specific variables +

+
+

+ getent +

+
+

+ Gets entries from an administrative database +

+
+

+ iconv +

+
+

+ Performs character set conversion +

+
+

+ iconvconfig +

+
+

+ Creates fastloading iconv module + configuration files +

+
+

+ ldconfig +

+
+

+ Configures the dynamic linker runtime bindings +

+
+

+ ldd +

+
+

+ Reports which shared libraries are required by each + given program or shared library +

+
+

+ lddlibc4 +

+
+

+ Assists ldd with object + files. It does not exist on newer architectures + like x86_64 +

+
+

+ locale +

+
+

+ Prints various information about the current locale +

+
+

+ localedef +

+
+

+ Compiles locale specifications +

+
+

+ makedb +

+
+

+ Creates a simple database from textual input +

+
+

+ mtrace +

+
+

+ Reads and interprets a memory trace file and + displays a summary in human-readable format +

+
+

+ pcprofiledump +

+
+

+ Dump information generated by PC profiling +

+
+

+ pldd +

+
+

+ Lists dynamic shared objects used by running + processes +

+
+

+ sln +

+
+

+ A statically linked ln program +

+
+

+ sotruss +

+
+

+ Traces shared library procedure calls of a + specified command +

+
+

+ sprof +

+
+

+ Reads and displays shared object profiling data +

+
+

+ tzselect +

+
+

+ Asks the user about the location of the system and + reports the corresponding time zone description +

+
+

+ xtrace +

+
+

+ Traces the execution of a program by printing the + currently executed function +

+
+

+ zdump +

+
+

+ The time zone dumper +

+
+

+ zic +

+
+

+ The time zone compiler +

+
+

+ ld-*.so +

+
+

+ The helper program for shared library executables +

+
+

+ libBrokenLocale +

+
+

+ Used internally by Glibc as a gross hack to get + broken programs (e.g., some Motif applications) + running. See comments in glibc-2.42/locale/broken_cur_max.c + for more information +

+
+

+ libanl +

+
+

+ Dummy library containing no functions. Previously + was the asynchronous name lookup library, whose + functions are now in libc +

+
+

+ libc +

+
+

+ The main C library +

+
+

+ libc_malloc_debug +

+
+

+ Turns on memory allocation checking when preloaded +

+
+

+ libdl +

+
+

+ Dummy library containing no functions. Previously + was the dynamic linking interface library, whose + functions are now in libc +

+
+

+ libg +

+
+

+ Dummy library containing no functions. Previously + was a runtime library for g++ +

+
+

+ libm +

+
+

+ The mathematical library +

+
+

+ libmvec +

+
+

+ The vector math library, linked in as needed when + libm is used +

+
+

+ libmcheck +

+
+

+ Turns on memory allocation checking when linked to +

+
+

+ libmemusage +

+
+

+ Used by memusage to help + collect information about the memory usage of a + program +

+
+

+ libnsl +

+
+

+ The network services library, now deprecated +

+
+

+ libnss_* +

+
+

+ The Name Service Switch modules, containing + functions for resolving host names, user names, + group names, aliases, services, protocols, etc. + Loaded by libc + according to the configuration in /etc/nsswitch.conf +

+
+

+ libpcprofile +

+
+

+ Can be preloaded to PC profile an executable +

+
+

+ libpthread +

+
+

+ Dummy library containing no functions. Previously + contained functions providing most of the + interfaces specified by the POSIX.1c Threads + Extensions and the semaphore interfaces specified + by the POSIX.1b Real-time Extensions, now the + functions are in libc +

+
+

+ libresolv +

+
+

+ Contains functions for creating, sending, and + interpreting packets to the Internet domain name + servers +

+
+

+ librt +

+
+

+ Contains functions providing most of the interfaces + specified by the POSIX.1b Real-time Extensions +

+
+

+ libthread_db +

+
+

+ Contains functions useful for building debuggers + for multi-threaded programs +

+
+

+ libutil +

+
+

+ Dummy library containing no functions. Previously + contained code for “standard” + functions used in many different Unix utilities. + These functions are now in libc +

+
+
+
+
+
+
+
+

+ 8.6. Zlib-1.3.1 +

+
+
+
+
+
+

+ The Zlib package contains compression and decompression + routines used by some programs. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.4 MB +
+
+
+
+
+

+ 8.6.1. Installation of Zlib +

+

+ Prepare Zlib for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+

+ Remove a useless static library: +

+
rm -fv /usr/lib/libz.a
+
+
+

+ 8.6.2. + Contents of Zlib +

+
+
+
+ Installed libraries: + libz.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libz +

+
+

+ Contains compression and decompression functions + used by some programs +

+
+
+
+
+
+
+
+

+ 8.7. Bzip2-1.0.8 +

+
+
+
+
+
+

+ The Bzip2 package contains programs for compressing and + decompressing files. Compressing text files with bzip2 yields a much better + compression percentage than with the traditional gzip. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 7.3 MB +
+
+
+
+
+

+ 8.7.1. Installation of Bzip2 +

+

+ Apply a patch that will install the documentation for this + package: +

+
patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
+

+ The following command ensures installation of symbolic links + are relative: +

+
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
+

+ Ensure the man pages are installed into the correct location: +

+
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
+

+ Prepare Bzip2 for compilation with: +

+
make -f Makefile-libbz2_so
+make clean
+
+

+ The meaning of the make parameter: +

+
+
+ -f + Makefile-libbz2_so +
+
+

+ This will cause Bzip2 to be built using a different + Makefile file, in this + case the Makefile-libbz2_so file, which + creates a dynamic libbz2.so library and links the Bzip2 + utilities against it. +

+
+
+
+

+ Compile and test the package: +

+
make
+

+ Install the programs: +

+
make PREFIX=/usr install
+

+ Install the shared library: +

+
cp -av libbz2.so.* /usr/lib
+ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
+

+ Install the shared bzip2 binary into the + /usr/bin directory, and replace + two copies of bzip2 with symlinks: +

+
cp -v bzip2-shared /usr/bin/bzip2
+for i in /usr/bin/{bzcat,bunzip2}; do
+  ln -sfv bzip2 $i
+done
+

+ Remove a useless static library: +

+
rm -fv /usr/lib/libbz2.a
+
+
+

+ 8.7.2. + Contents of Bzip2 +

+
+
+
+ Installed programs: + bunzip2 (link to bzip2), bzcat + (link to bzip2), bzcmp (link to bzdiff), bzdiff, bzegrep + (link to bzgrep), bzfgrep (link to bzgrep), bzgrep, + bzip2, bzip2recover, bzless (link to bzmore), and + bzmore +
+
+ Installed libraries: + libbz2.so +
+
+ Installed directory: + /usr/share/doc/bzip2-1.0.8 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bunzip2 +

+
+

+ Decompresses bzipped files +

+
+

+ bzcat +

+
+

+ Decompresses to standard output +

+
+

+ bzcmp +

+
+

+ Runs cmp on bzipped + files +

+
+

+ bzdiff +

+
+

+ Runs diff on bzipped + files +

+
+

+ bzegrep +

+
+

+ Runs egrep on bzipped + files +

+
+

+ bzfgrep +

+
+

+ Runs fgrep on bzipped + files +

+
+

+ bzgrep +

+
+

+ Runs grep on bzipped + files +

+
+

+ bzip2 +

+
+

+ Compresses files using the Burrows-Wheeler block + sorting text compression algorithm with Huffman + coding; the compression rate is better than that + achieved by more conventional compressors using + “Lempel-Ziv” algorithms, like + gzip +

+
+

+ bzip2recover +

+
+

+ Tries to recover data from damaged bzipped files +

+
+

+ bzless +

+
+

+ Runs less on bzipped + files +

+
+

+ bzmore +

+
+

+ Runs more on bzipped + files +

+
+

+ libbz2 +

+
+

+ The library implementing lossless, block-sorting + data compression, using the Burrows-Wheeler + algorithm +

+
+
+
+
+
+
+
+

+ 8.8. Xz-5.8.1 +

+
+
+
+
+
+

+ The Xz package contains programs for compressing and + decompressing files. It provides capabilities for the lzma + and the newer xz compression formats. Compressing text files + with xz yields + a better compression percentage than with the traditional + gzip or + bzip2 commands. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 24 MB +
+
+
+
+
+

+ 8.8.1. Installation of Xz +

+

+ Prepare Xz for compilation with: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/xz-5.8.1
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.8.2. Contents of + Xz +

+
+
+
+ Installed programs: + lzcat (link to xz), lzcmp (link to + xzdiff), lzdiff (link to xzdiff), lzegrep (link to + xzgrep), lzfgrep (link to xzgrep), lzgrep (link to + xzgrep), lzless (link to xzless), lzma (link to xz), + lzmadec, lzmainfo, lzmore (link to xzmore), unlzma (link + to xz), unxz (link to xz), xz, xzcat (link to xz), xzcmp + (link to xzdiff), xzdec, xzdiff, xzegrep (link to + xzgrep), xzfgrep (link to xzgrep), xzgrep, xzless, and + xzmore +
+
+ Installed libraries: + liblzma.so +
+
+ Installed directories: + /usr/include/lzma and + /usr/share/doc/xz-5.8.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ lzcat +

+
+

+ Decompresses to standard output +

+
+

+ lzcmp +

+
+

+ Runs cmp on LZMA + compressed files +

+
+

+ lzdiff +

+
+

+ Runs diff on LZMA + compressed files +

+
+

+ lzegrep +

+
+

+ Runs egrep on LZMA + compressed files +

+
+

+ lzfgrep +

+
+

+ Runs fgrep on LZMA + compressed files +

+
+

+ lzgrep +

+
+

+ Runs grep on LZMA + compressed files +

+
+

+ lzless +

+
+

+ Runs less on LZMA + compressed files +

+
+

+ lzma +

+
+

+ Compresses or decompresses files using the LZMA + format +

+
+

+ lzmadec +

+
+

+ A small and fast decoder for LZMA compressed files +

+
+

+ lzmainfo +

+
+

+ Shows information stored in the LZMA compressed + file header +

+
+

+ lzmore +

+
+

+ Runs more on LZMA + compressed files +

+
+

+ unlzma +

+
+

+ Decompresses files using the LZMA format +

+
+

+ unxz +

+
+

+ Decompresses files using the XZ format +

+
+

+ xz +

+
+

+ Compresses or decompresses files using the XZ + format +

+
+

+ xzcat +

+
+

+ Decompresses to standard output +

+
+

+ xzcmp +

+
+

+ Runs cmp on XZ + compressed files +

+
+

+ xzdec +

+
+

+ A small and fast decoder for XZ compressed files +

+
+

+ xzdiff +

+
+

+ Runs diff on XZ + compressed files +

+
+

+ xzegrep +

+
+

+ Runs egrep on XZ + compressed files +

+
+

+ xzfgrep +

+
+

+ Runs fgrep on XZ + compressed files +

+
+

+ xzgrep +

+
+

+ Runs grep on XZ + compressed files +

+
+

+ xzless +

+
+

+ Runs less on XZ + compressed files +

+
+

+ xzmore +

+
+

+ Runs more on XZ + compressed files +

+
+

+ liblzma +

+
+

+ The library implementing lossless, block-sorting + data compression, using the Lempel-Ziv-Markov chain + algorithm +

+
+
+
+
+
+
+
+

+ 8.9. Lz4-1.10.0 +

+
+
+
+
+
+

+ Lz4 is a lossless compression algorithm, providing + compression speed greater than 500 MB/s per core. It features + an extremely fast decoder, with speed in multiple GB/s per + core. Lz4 can work with Zstandard to allow both algorithms to + compress data faster. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 4.2 MB +
+
+
+
+
+

+ 8.9.1. Installation of Lz4 +

+

+ Compile the package: +

+
make BUILD_STATIC=no PREFIX=/usr
+

+ To test the results, issue: +

+
make -j1 check
+

+ Install the package: +

+
make BUILD_STATIC=no PREFIX=/usr install
+
+
+

+ 8.9.2. Contents + of Lz4 +

+
+
+
+ Installed programs: + lz4, lz4c (link to lz4), lz4cat + (link to lz4), and unlz4 (link to lz4) +
+
+ Installed library: + liblz4.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ lz4 +

+
+

+ Compresses or decompresses files using the LZ4 + format +

+
+

+ lz4c +

+
+

+ Compresses files using the LZ4 format +

+
+

+ lz4cat +

+
+

+ Lists the contents of a file compressed using the + LZ4 format +

+
+

+ unlz4 +

+
+

+ Decompresses files using the LZ4 format +

+
+

+ liblz4 +

+
+

+ The library implementing lossless data compression, + using the LZ4 algorithm +

+
+
+
+
+
+
+
+

+ 8.10. Zstd-1.5.7 +

+
+
+
+
+
+

+ Zstandard is a real-time compression algorithm, providing + high compression ratios. It offers a very wide range of + compression / speed trade-offs, while being backed by a very + fast decoder. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 86 MB +
+
+
+
+
+

+ 8.10.1. Installation of Zstd +

+

+ Compile the package: +

+
make prefix=/usr
+
+

+ Note +

+

+ 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. +

+
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make prefix=/usr install
+

+ Remove the static library: +

+
rm -v /usr/lib/libzstd.a
+
+
+

+ 8.10.2. + Contents of Zstd +

+
+
+
+ Installed programs: + zstd, zstdcat (link to zstd), + zstdgrep, zstdless, zstdmt (link to zstd), and unzstd + (link to zstd) +
+
+ Installed library: + libzstd.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ zstd +

+
+

+ Compresses or decompresses files using the ZSTD + format +

+
+

+ zstdgrep +

+
+

+ Runs grep on ZSTD + compressed files +

+
+

+ zstdless +

+
+

+ Runs less on ZSTD + compressed files +

+
+

+ libzstd +

+
+

+ The library implementing lossless data compression, + using the ZSTD algorithm +

+
+
+
+
+
+
+
+

+ 8.11. File-5.46 +

+
+
+
+
+
+

+ The File package contains a utility for determining the type + of a given file or files. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 19 MB +
+
+
+
+
+

+ 8.11.1. Installation of File +

+

+ Prepare File for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.11.2. + Contents of File +

+
+
+
+ Installed programs: + file +
+
+ Installed library: + libmagic.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ file +

+
+

+ Tries to classify each given file; it does this by + performing several tests—file system tests, magic + number tests, and language tests +

+
+

+ libmagic +

+
+

+ Contains routines for magic number recognition, + used by the file program +

+
+
+
+
+
+
+
+

+ 8.12. Readline-8.3 +

+
+
+
+
+
+

+ The Readline package is a set of libraries that offer + command-line editing and history capabilities. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 17 MB +
+
+
+
+
+

+ 8.12.1. Installation of Readline +

+

+ Reinstalling Readline will cause the old libraries to be + moved to <libraryname>.old. While this is normally not + a problem, in some cases it can trigger a linking bug in + ldconfig. This + can be avoided by issuing the following two seds: +

+
sed -i '/MV.*old/d' Makefile.in
+sed -i '/{OLDSUFF}/c:' support/shlib-install
+

+ 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: +

+
sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
+

+ Prepare Readline for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-curses    \
+            --docdir=/usr/share/doc/readline-8.3
+
+

+ The meaning of the new configure option: +

+
+
+ --with-curses +
+
+

+ This option tells Readline that it can find the termcap + library functions in the curses library, not a separate + termcap library. This will generate the correct + readline.pc file. +

+
+
+
+

+ Compile the package: +

+
make SHLIB_LIBS="-lncursesw"
+
+

+ The meaning of the make option: +

+
+
+ SHLIB_LIBS="-lncursesw" +
+
+

+ This option forces Readline to link against the + libncursesw library. For + details see the “Shared Libraries” section in the + package's README file. +

+
+
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
make install
+

+ If desired, install the documentation: +

+
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.3
+
+
+

+ 8.12.2. Contents of Readline +

+
+
+
+ Installed libraries: + libhistory.so and + libreadline.so +
+
+ Installed directories: + /usr/include/readline and + /usr/share/doc/readline-8.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libhistory +

+
+

+ Provides a consistent user interface for recalling + lines of history +

+
+

+ libreadline +

+
+

+ Provides a set of commands for manipulating text + entered in an interactive session of a program +

+
+
+
+
+
+
+
+

+ 8.13. M4-1.4.20 +

+
+
+
+
+
+

+ The M4 package contains a macro processor. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 60 MB +
+
+
+
+
+

+ 8.13.1. Installation of M4 +

+

+ Prepare M4 for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.13.2. Contents + of M4 +

+
+
+
+ Installed program: + m4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ m4 +

+
+

+ Copies the given files while expanding the macros + that they contain. These macros are either built-in + or user-defined and can take any number of + arguments. Besides performing macro expansion, + m4 + has built-in functions for including named files, + running Unix commands, performing integer + arithmetic, manipulating text, recursion, etc. The + m4 + program can be used either as a front end to a + compiler or as a macro processor in its own right +

+
+
+
+
+
+
+
+

+ 8.14. Bc-7.0.3 +

+
+
+
+
+
+

+ The Bc package contains an arbitrary precision numeric + processing language. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 7.8 MB +
+
+
+
+
+

+ 8.14.1. Installation of Bc +

+

+ Prepare Bc for compilation: +

+
CC='gcc -std=c99' ./configure --prefix=/usr -G -O3 -r
+
+

+ The meaning of the configure options: +

+
+
+ CC='gcc + -std=c99' +
+
+

+ This parameter specifies the compiler and C standard to + use. +

+
+
+ -G +
+
+

+ Omit parts of the test suite that won't work until the + bc program has been installed. +

+
+
+ -O3 +
+
+

+ Specify the optimization to use. +

+
+
+ -r +
+
+

+ Enable the use of Readline to improve the line + editing feature of bc. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test bc, run: +

+
make test
+

+ Install the package: +

+
make install
+
+
+

+ 8.14.2. Contents + of Bc +

+
+
+
+ Installed programs: + bc and dc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ bc +

+
+

+ A command line calculator +

+
+

+ dc +

+
+

+ A reverse-polish command line calculator +

+
+
+
+
+
+
+
+

+ 8.15. Flex-2.6.4 +

+
+
+
+
+
+

+ The Flex package contains a utility for generating programs + that recognize patterns in text. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 33 MB +
+
+
+
+
+

+ 8.15.1. Installation of Flex +

+

+ Prepare Flex for compilation: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/flex-2.6.4 \
+            --disable-static
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+

+ A few programs do not know about flex yet and try to run its + predecessor, lex. To support those + programs, create a symbolic link named lex that runs flex in lex emulation mode, and + also create the man page of lex as a symlink: +

+
ln -sv flex   /usr/bin/lex
+ln -sv flex.1 /usr/share/man/man1/lex.1
+
+
+

+ 8.15.2. + Contents of Flex +

+
+
+
+ Installed programs: + flex, flex++ (link to flex), and + lex (link to flex) +
+
+ Installed libraries: + libfl.so +
+
+ Installed directory: + /usr/share/doc/flex-2.6.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ flex +

+
+

+ A tool for generating programs that recognize + patterns in text; it allows for the versatility to + specify the rules for pattern-finding, eradicating + the need to develop a specialized program +

+
+

+ flex++ +

+
+

+ An extension of flex, is used for generating C++ + code and classes. It is a symbolic link to + flex +

+
+

+ lex +

+
+

+ A symbolic link that runs flex in + lex + emulation mode +

+
+

+ libfl +

+
+

+ The flex library +

+
+
+
+
+
+
+
+

+ 8.16. Tcl-8.6.16 +

+
+
+
+
+
+

+ The Tcl package contains the + Tool Command Language, a robust general-purpose scripting + language. The Expect package + is written in Tcl + (pronounced "tickle"). +

+
+
+
+ Approximate build time: + 3.0 SBU +
+
+ Required disk space: + 91 MB +
+
+
+
+
+

+ 8.16.1. Installation of Tcl +

+

+ This package and the next two (Expect and DejaGNU) are + installed to support running the test suites for Binutils, + GCC and other packages. Installing three packages for testing + purposes may seem excessive, but it is very reassuring, if + not essential, to know that the most important tools are + working properly. +

+

+ Prepare Tcl for compilation: +

+
SRCDIR=$(pwd)
+cd unix
+./configure --prefix=/usr           \
+            --mandir=/usr/share/man \
+            --disable-rpath
+
+

+ The meaning of the new configure + parameters: +

+
+
+ --disable-rpath +
+
+

+ This parameter prevents hard coding library search + paths (rpath) into the binary executable files and + 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. +

+
+
+
+

+ Build the package: +

+
make
+
+sed -e "s|$SRCDIR/unix|/usr/lib|" \
+    -e "s|$SRCDIR|/usr/include|"  \
+    -i tclConfig.sh
+
+sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.10|/usr/lib/tdbc1.1.10|" \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.10/generic|/usr/include|"     \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.10/library|/usr/lib/tcl8.6|"  \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.10|/usr/include|"             \
+    -i pkgs/tdbc1.1.10/tdbcConfig.sh
+
+sed -e "s|$SRCDIR/unix/pkgs/itcl4.3.2|/usr/lib/itcl4.3.2|" \
+    -e "s|$SRCDIR/pkgs/itcl4.3.2/generic|/usr/include|"    \
+    -e "s|$SRCDIR/pkgs/itcl4.3.2|/usr/include|"            \
+    -i pkgs/itcl4.3.2/itclConfig.sh
+
+unset SRCDIR
+

+ The various “sed” instructions after the + “make” + 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. +

+

+ To test the results, issue: +

+
make test
+

+ Install the package: +

+
make install 
+chmod 644 /usr/lib/libtclstub8.6.a
+

+ Make the installed library writable so debugging symbols can + be removed later: +

+
chmod -v u+w /usr/lib/libtcl8.6.so
+

+ Install Tcl's headers. The next package, Expect, requires + them. +

+
make install-private-headers
+

+ Now make a necessary symbolic link: +

+
ln -sfv tclsh8.6 /usr/bin/tclsh
+

+ Rename a man page that conflicts with a Perl man page: +

+
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
+

+ Optionally, install the documentation by issuing the + following commands: +

+
cd ..
+tar -xf ../tcl8.6.16-html.tar.gz --strip-components=1
+mkdir -v -p /usr/share/doc/tcl-8.6.16
+cp -v -r  ./html/* /usr/share/doc/tcl-8.6.16
+
+
+

+ 8.16.2. Contents + of Tcl +

+
+
+
+ Installed programs: + tclsh (link to tclsh8.6) and + tclsh8.6 +
+
+ Installed library: + libtcl8.6.so and + libtclstub8.6.a +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ tclsh8.6 +

+
+

+ The Tcl command shell +

+
+

+ tclsh +

+
+

+ A link to tclsh8.6 +

+
+

+ libtcl8.6.so +

+
+

+ The Tcl library +

+
+

+ libtclstub8.6.a +

+
+

+ The Tcl Stub library +

+
+
+
+
+
+
+
+

+ 8.17. Expect-5.45.4 +

+
+
+
+
+
+

+ The Expect package contains + tools for automating, via scripted dialogues, interactive + applications such as telnet, ftp, passwd, fsck, rlogin, and tip. Expect is also useful for testing these + same applications as well as easing all sorts of tasks that + are prohibitively difficult with anything else. The + DejaGnu framework is written + in Expect. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 3.9 MB +
+
+
+
+
+

+ 8.17.1. Installation of Expect +

+

+ Expect needs PTYs to work. Verify that the PTYs are working + properly inside the chroot environment by performing a simple + test: +

+
python3 -c 'from pty import spawn; spawn(["echo", "ok"])'
+

+ This command should output ok. If, instead, the output includes + OSError: out of pty + devices, then the environment is not set up for proper + PTY operation. You need to exit from the chroot environment, + read Section 7.3, + “Preparing Virtual Kernel File Systems” again, and ensure + the devpts file system (and + other virtual kernel file systems) mounted correctly. Then + reenter the chroot environment following Section 7.4, + “Entering the Chroot Environment”. This issue needs to be + resolved before continuing, or the test suites requiring + Expect (for example the test suites of Bash, Binutils, GCC, + GDBM, and of course Expect itself) will fail + catastrophically, and other subtle breakages may also happen. +

+

+ Now, make some changes to allow the package with gcc-15.1 or + later: +

+
patch -Np1 -i ../expect-5.45.4-gcc15-1.patch
+

+ Prepare Expect for compilation: +

+
./configure --prefix=/usr           \
+            --with-tcl=/usr/lib     \
+            --enable-shared         \
+            --disable-rpath         \
+            --mandir=/usr/share/man \
+            --with-tclinclude=/usr/include
+
+

+ The meaning of the configure options: +

+
+
+ --with-tcl=/usr/lib +
+
+

+ This parameter is needed to tell configure where the + tclConfig.sh script + is located. +

+
+
+ --with-tclinclude=/usr/include +
+
+

+ This explicitly tells Expect where to find Tcl's + internal headers. +

+
+
+
+

+ Build the package: +

+
make
+

+ To test the results, issue: +

+
make test
+

+ Install the package: +

+
make install
+ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
+
+
+

+ 8.17.2. + Contents of Expect +

+
+
+
+ Installed program: + expect +
+
+ Installed library: + libexpect5.45.4.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ expect +

+
+

+ Communicates with other interactive programs + according to a script +

+
+

+ libexpect-5.45.4.so +

+
+

+ Contains functions that allow Expect to be used as + a Tcl extension or to be used directly from C or + C++ (without Tcl) +

+
+
+
+
+
+
+
+

+ 8.18. DejaGNU-1.6.3 +

+
+
+
+
+
+

+ The DejaGnu package contains + a framework for running test suites on GNU tools. It is + written in expect, which itself uses + Tcl (Tool Command Language). +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.9 MB +
+
+
+
+
+

+ 8.18.1. Installation of DejaGNU +

+

+ The upstream recommends building DejaGNU in a dedicated build + directory: +

+
mkdir -v build
+cd       build
+

+ Prepare DejaGNU for compilation: +

+
../configure --prefix=/usr
+makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
+makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+install -v -dm755  /usr/share/doc/dejagnu-1.6.3
+install -v -m644   doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3
+
+
+

+ 8.18.2. + Contents of DejaGNU +

+
+
+
+ Installed program: + dejagnu and runtest +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ dejagnu +

+
+

+ DejaGNU auxiliary command launcher +

+
+

+ runtest +

+
+

+ A wrapper script that locates the proper + expect shell and + then runs DejaGNU +

+
+
+
+
+
+
+
+

+ 8.19. Pkgconf-2.5.1 +

+
+
+
+
+
+

+ 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. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 5.0 MB +
+
+
+
+
+

+ 8.19.1. Installation of Pkgconf +

+

+ Prepare Pkgconf for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/pkgconf-2.5.1
+

+ Compile the package: +

+
make
+

+ Install the package: +

+
make install
+

+ To maintain compatibility with the original Pkg-config create + two symlinks: +

+
ln -sv pkgconf   /usr/bin/pkg-config
+ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
+
+
+

+ 8.19.2. + Contents of Pkgconf +

+
+
+
+ Installed programs: + pkgconf, pkg-config (link to + pkgconf), and bomtool +
+
+ Installed library: + libpkgconf.so +
+
+ Installed directory: + /usr/share/doc/pkgconf-2.5.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ pkgconf +

+
+

+ Returns meta information for the specified library + or package +

+
+

+ bomtool +

+
+

+ Generates a Software Bill Of Materials from + pkg-config .pc files +

+
+

+ libpkgconf +

+
+

+ Contains most of pkgconf's functionality, while + allowing other tools like IDEs and compilers to use + its frameworks +

+
+
+
+
+
+
+
+

+ 8.20. Binutils-2.45 +

+
+
+
+
+
+

+ The Binutils package contains a linker, an assembler, and + other tools for handling object files. +

+
+
+
+ Approximate build time: + 1.6 SBU +
+
+ Required disk space: + 832 MB +
+
+
+
+
+

+ 8.20.1. Installation of Binutils +

+

+ The Binutils documentation recommends building Binutils in a + dedicated build directory: +

+
mkdir -v build
+cd       build
+

+ Prepare Binutils for compilation: +

+
../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
+
+

+ The meaning of the new configure + parameters: +

+
+
+ --enable-ld=default +
+
+

+ Build the original bfd linker and install it as both ld + (the default linker) and ld.bfd. +

+
+
+ --enable-plugins +
+
+

+ Enables plugin support for the linker. +

+
+
+ --with-system-zlib +
+
+

+ Use the installed zlib library instead of building the + included version. +

+
+
+
+

+ Compile the package: +

+
make tooldir=/usr
+
+

+ The meaning of the make parameter: +

+
+
+ tooldir=/usr +
+
+

+ Normally, the tooldir (the directory where the + executables will ultimately be located) is set to + $(exec_prefix)/$(target_alias). For + example, x86_64 machines would expand that to + /usr/x86_64-pc-linux-gnu. + Because this is a custom system, this target-specific + directory in /usr is not + required. $(exec_prefix)/$(target_alias) would + be used if the system were used to cross-compile (for + example, compiling a package on an Intel machine that + generates code that can be executed on PowerPC + machines). +

+
+
+
+
+

+ Important +

+

+ The test suite for Binutils in this section is considered + critical. Do not skip it under any circumstances. +

+
+

+ Test the results: +

+
make -k check
+

+ For a list of failed tests, run: +

+
grep '^FAIL:' $(find -name '*.log')
+

+ Install the package: +

+
make tooldir=/usr install
+

+ Remove useless static libraries and other files: +

+
rm -rfv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a \
+        /usr/share/doc/gprofng/
+
+
+

+ 8.20.2. Contents of Binutils +

+
+
+
+ Installed programs: + addr2line, ar, as, c++filt, dwp, + elfedit, gprof, gprofng, ld, ld.bfd, nm, objcopy, + objdump, ranlib, readelf, size, strings, and strip +
+
+ Installed libraries: + libbfd.so, libctf.so, + libctf-nobfd.so, libgprofng.so, libopcodes.so, and + libsframe.so +
+
+ Installed directory: + /usr/lib/ldscripts +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addr2line +

+
+

+ Translates program addresses to file names and line + numbers; given an address and the name of an + executable, it uses the debugging information in + the executable to determine which source file and + line number are associated with the address +

+
+

+ ar +

+
+

+ Creates, modifies, and extracts from archives +

+
+

+ as +

+
+

+ An assembler that assembles the output of + gcc + into object files +

+
+

+ c++filt +

+
+

+ Used by the linker to de-mangle C++ and Java + symbols and to keep overloaded functions from + clashing +

+
+

+ dwp +

+
+

+ The DWARF packaging utility +

+
+

+ elfedit +

+
+

+ Updates the ELF headers of ELF files +

+
+

+ gprof +

+
+

+ Displays call graph profile data +

+
+

+ gprofng +

+
+

+ Gathers and analyzes performance data +

+
+

+ ld +

+
+

+ A linker that combines a number of object and + archive files into a single file, relocating their + data and tying up symbol references +

+
+

+ ld.bfd +

+
+

+ A hard link to ld +

+
+

+ nm +

+
+

+ Lists the symbols occurring in a given object file +

+
+

+ objcopy +

+
+

+ Translates one type of object file into another +

+
+

+ objdump +

+
+

+ Displays information about the given object file, + with options controlling the particular information + to display; the information shown is useful to + programmers who are working on the compilation + tools +

+
+

+ ranlib +

+
+

+ Generates an index of the contents of an archive + and stores it in the archive; the index lists all + of the symbols defined by archive members that are + relocatable object files +

+
+

+ readelf +

+
+

+ Displays information about ELF type binaries +

+
+

+ size +

+
+

+ Lists the section sizes and the total size for the + given object files +

+
+

+ strings +

+
+

+ Outputs, for each given file, the sequences of + printable characters that are of at least the + specified length (defaulting to four); for object + files, it prints, by default, only the strings from + the initializing and loading sections while for + other types of files, it scans the entire file +

+
+

+ strip +

+
+

+ Discards symbols from object files +

+
+

+ libbfd +

+
+

+ The Binary File Descriptor library +

+
+

+ libctf +

+
+

+ The Compat ANSI-C Type Format debugging support + library +

+
+

+ libctf-nobfd +

+
+

+ A libctf variant which does not use libbfd + functionality +

+
+

+ libgprofng +

+
+

+ A library containing most routines used by + gprofng +

+
+

+ libopcodes +

+
+

+ A library for dealing with opcodes—the “readable + text” versions of instructions for + the processor; it is used for building utilities + like objdump +

+
+

+ libsframe +

+
+

+ A library to support online backtracing using a + simple unwinder +

+
+
+
+
+
+
+
+

+ 8.21. GMP-6.3.0 +

+
+
+
+
+
+

+ The GMP package contains math libraries. These have useful + functions for arbitrary precision arithmetic. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 54 MB +
+
+
+
+
+

+ 8.21.1. Installation of GMP +

+
+

+ Note +

+

+ If you are building for 32-bit x86, but you have a CPU + which is capable of running 64-bit code and you have specified + CFLAGS in the environment, the + configure script will attempt to configure for 64-bits and + fail. Avoid this by invoking the configure command below + with +

+
ABI=32 ./configure ...
+
+
+

+ Note +

+

+ 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 --host=none-linux-gnu option to the + configure + command. +

+
+

+ First, make an adjustment for compatibility with gcc-15 and + later: +

+
sed -i '/long long t1;/,+1s/()/(...)/' configure
+

+ Prepare GMP for compilation: +

+
./configure --prefix=/usr    \
+            --enable-cxx     \
+            --disable-static \
+            --docdir=/usr/share/doc/gmp-6.3.0
+
+

+ The meaning of the new configure options: +

+
+
+ --enable-cxx +
+
+

+ This parameter enables C++ support +

+
+
+ --docdir=/usr/share/doc/gmp-6.3.0 +
+
+

+ This variable specifies the correct place for the + documentation. +

+
+
+
+

+ Compile the package and generate the HTML documentation: +

+
make
+make html
+
+

+ Important +

+

+ The test suite for GMP in this section is considered + critical. Do not skip it under any circumstances. +

+
+

+ Test the results: +

+
make check 2>&1 | tee gmp-check-log
+
+

+ Caution +

+

+ 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 Illegal instruction. In this case, + gmp should be reconfigured with the option --host=none-linux-gnu and rebuilt. +

+
+

+ Ensure that at least 199 tests in the test suite passed. + Check the results by issuing the following command: +

+
awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
+

+ Install the package and its documentation: +

+
make install
+make install-html
+
+
+

+ 8.21.2. Contents + of GMP +

+
+
+
+ Installed libraries: + libgmp.so and libgmpxx.so +
+
+ Installed directory: + /usr/share/doc/gmp-6.3.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgmp +

+
+

+ Contains precision math functions +

+
+

+ libgmpxx +

+
+

+ Contains C++ precision math functions +

+
+
+
+
+
+
+
+

+ 8.22. MPFR-4.2.2 +

+
+
+
+
+
+

+ The MPFR package contains functions for multiple precision + math. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 43 MB +
+
+
+
+
+

+ 8.22.1. Installation of MPFR +

+

+ Prepare MPFR for compilation: +

+
./configure --prefix=/usr        \
+            --disable-static     \
+            --enable-thread-safe \
+            --docdir=/usr/share/doc/mpfr-4.2.2
+

+ Compile the package and generate the HTML documentation: +

+
make
+make html
+
+

+ Important +

+

+ The test suite for MPFR in this section is considered + critical. Do not skip it under any circumstances. +

+
+

+ Test the results and ensure that all 198 tests passed: +

+
make check
+

+ Install the package and its documentation: +

+
make install
+make install-html
+
+
+

+ 8.22.2. + Contents of MPFR +

+
+
+
+ Installed libraries: + libmpfr.so +
+
+ Installed directory: + /usr/share/doc/mpfr-4.2.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmpfr +

+
+

+ Contains multiple-precision math functions +

+
+
+
+
+
+
+
+

+ 8.23. MPC-1.3.1 +

+
+
+
+
+
+

+ The MPC package contains a library for the arithmetic of + complex numbers with arbitrarily high precision and correct + rounding of the result. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 22 MB +
+
+
+
+
+

+ 8.23.1. Installation of MPC +

+

+ Prepare MPC for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/mpc-1.3.1
+

+ Compile the package and generate the HTML documentation: +

+
make
+make html
+

+ To test the results, issue: +

+
make check
+

+ Install the package and its documentation: +

+
make install
+make install-html
+
+
+

+ 8.23.2. Contents + of MPC +

+
+
+
+ Installed libraries: + libmpc.so +
+
+ Installed directory: + /usr/share/doc/mpc-1.3.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmpc +

+
+

+ Contains complex math functions +

+
+
+
+
+
+
+
+

+ 8.24. Attr-2.5.2 +

+
+
+
+
+
+

+ The Attr package contains utilities to administer the + extended attributes of filesystem objects. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 4.1 MB +
+
+
+
+
+

+ 8.24.1. Installation of Attr +

+

+ Prepare Attr for compilation: +

+
./configure --prefix=/usr     \
+            --disable-static  \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/attr-2.5.2
+

+ Compile the package: +

+
make
+

+ 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: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.24.2. + Contents of Attr +

+
+
+
+ Installed programs: + attr, getfattr, and setfattr +
+
+ Installed library: + libattr.so +
+
+ Installed directories: + /usr/include/attr and + /usr/share/doc/attr-2.5.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ attr +

+
+

+ Extends attributes on filesystem objects +

+
+

+ getfattr +

+
+

+ Gets the extended attributes of filesystem objects +

+
+

+ setfattr +

+
+

+ Sets the extended attributes of filesystem objects +

+
+

+ libattr +

+
+

+ Contains the library functions for manipulating + extended attributes +

+
+
+
+
+
+
+
+

+ 8.25. Acl-2.3.2 +

+
+
+
+
+
+

+ The Acl package contains utilities to administer Access + Control Lists, which are used to define fine-grained + discretionary access rights for files and directories. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.5 MB +
+
+
+
+
+

+ 8.25.1. Installation of Acl +

+

+ Prepare Acl for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/acl-2.3.2
+

+ Compile the package: +

+
make
+

+ The Acl tests must be run on a filesystem that supports + access controls. To test the results, issue: +

+
make check
+

+ One test named test/cp.test is + known to fail because Coreutils is not built with the + Acl support yet. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.25.2. Contents + of Acl +

+
+
+
+ Installed programs: + chacl, getfacl, and setfacl +
+
+ Installed library: + libacl.so +
+
+ Installed directories: + /usr/include/acl and + /usr/share/doc/acl-2.3.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ chacl +

+
+

+ Changes the access control list of a file or + directory +

+
+

+ getfacl +

+
+

+ Gets file access control lists +

+
+

+ setfacl +

+
+

+ Sets file access control lists +

+
+

+ libacl +

+
+

+ Contains the library functions for manipulating + Access Control Lists +

+
+
+
+
+
+
+
+

+ 8.26. Libcap-2.76 +

+
+
+
+
+
+

+ The Libcap package implements the userspace interface to the + POSIX 1003.1e capabilities available in Linux kernels. These + capabilities partition the all-powerful root privilege into a + set of distinct privileges. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 3.1 MB +
+
+
+
+
+

+ 8.26.1. Installation of Libcap +

+

+ Prevent static libraries from being installed: +

+
sed -i '/install -m.*STA/d' libcap/Makefile
+

+ Compile the package: +

+
make prefix=/usr lib=lib
+
+

+ The meaning of the make option: +

+
+
+ lib=lib +
+
+

+ This parameter sets the library directory to + /usr/lib rather than + /usr/lib64 on x86_64. It + has no effect on x86. +

+
+
+
+

+ To test the results, issue: +

+
make test
+

+ Install the package: +

+
make prefix=/usr lib=lib install
+
+
+

+ 8.26.2. + Contents of Libcap +

+
+
+
+ Installed programs: + capsh, getcap, getpcaps, and + setcap +
+
+ Installed library: + libcap.so and libpsx.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ capsh +

+
+

+ A shell wrapper to explore and constrain capability + support +

+
+

+ getcap +

+
+

+ Examines file capabilities +

+
+

+ getpcaps +

+
+

+ Displays the capabilities of the queried + process(es) +

+
+

+ setcap +

+
+

+ Sets file capabilities +

+
+

+ libcap +

+
+

+ Contains the library functions for manipulating + POSIX 1003.1e capabilities +

+
+

+ libpsx +

+
+

+ Contains functions to support POSIX semantics for + syscalls associated with the pthread library +

+
+
+
+
+
+
+
+

+ 8.27. Libxcrypt-4.4.38 +

+
+
+
+
+
+

+ The Libxcrypt package contains a modern library for one-way + hashing of passwords. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 12 MB +
+
+
+
+
+

+ 8.27.1. Installation of Libxcrypt +

+

+ Prepare Libxcrypt for compilation: +

+
./configure --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=no     \
+            --disable-static             \
+            --disable-failure-tokens
+
+

+ The meaning of the new configure options: +

+
+
+ --enable-hashes=strong,glibc +
+
+

+ Build strong hash algorithms recommended for security + use cases, and the hash algorithms provided by + traditional Glibc libcrypt for compatibility. +

+
+
+ --enable-obsolete-api=no +
+
+

+ Disable obsolete API functions. They are not needed for + a modern Linux system built from source. +

+
+
+ --disable-failure-tokens +
+
+

+ Disable failure token feature. It's needed for + compatibility with the traditional hash libraries of + some platforms, but a Linux system based on Glibc does + not need it. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+

+ Note +

+

+ The instructions above disabled obsolete API functions + since no package installed by compiling from sources would + link against them at runtime. However, the only known + binary-only applications that link against these functions + require ABI version 1. If you must have such functions + because of some binary-only application or to be compliant + with LSB, build the package again with the following + commands: +

+
make distclean
+./configure --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=glibc  \
+            --disable-static             \
+            --disable-failure-tokens
+make
+cp -av --remove-destination .libs/libcrypt.so.1* /usr/lib
+
+
+
+

+ 8.27.2. Contents of Libxcrypt +

+
+
+
+ Installed libraries: + libcrypt.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libcrypt +

+
+

+ Contains functions to hash passwords +

+
+
+
+
+
+
+
+

+ 8.28. Shadow-4.18.0 +

+
+
+
+
+
+

+ The Shadow package contains programs for handling passwords + in a secure way. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 115 MB +
+
+
+
+
+

+ 8.28.1. Installation of Shadow +

+
+

+ Important +

+

+ If you've installed Linux-PAM, you should follow + the BLFS instruction instead of this page to build (or, + rebuild or upgrade) shadow. +

+
+
+

+ Note +

+

+ If you would like to enforce the use of strong passwords, + + install and configure Linux-PAM first. Then + install and configure shadow with the PAM support. + Finally + install libpwquality and configure PAM to use it. +

+
+

+ Disable the installation of the groups program and its man + pages, as Coreutils provides a better version. Also, prevent + the installation of manual pages that were already installed + in Section 8.3, + “Man-pages-6.15”: +

+
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 / /'   {} \;
+

+ Instead of using the default + crypt method, use the + much more secure YESCRYPT method of password + encryption, which also allows passwords longer than 8 + characters. It is also necessary to change the obsolete + /var/spool/mail location for + user mailboxes that Shadow uses by default to the + /var/mail location used + currently. And, remove /bin and + /sbin from the PATH, since they are simply symlinks to their + counterparts in /usr. +

+
+

+ Warning +

+

+ Including /bin and/or + /sbin in the PATH variable may cause some BLFS packages + fail to build, so don't do that in the .bashrc file or anywhere else. +

+
+
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
+

+ Prepare Shadow for compilation: +

+
touch /usr/bin/passwd
+./configure --sysconfdir=/etc   \
+            --disable-static    \
+            --with-{b,yes}crypt \
+            --without-libbsd    \
+            --with-group-name-max-length=32
+
+

+ The meaning of the new configuration + options: +

+
+
+ touch + /usr/bin/passwd +
+
+

+ The file /usr/bin/passwd + 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. +

+
+
+ --with-{b,yes}crypt +
+
+

+ The shell expands this to two switches, --with-bcrypt and + --with-yescrypt. They + allow shadow to use the Bcrypt and Yescrypt algorithms + implemented by Libxcrypt for hashing passwords. + These algorithms are more secure (in particular, much + more resistant to GPU-based attacks) than the + traditional SHA algorithms. +

+
+
+ --with-group-name-max-length=32 +
+
+

+ The longest permissible user name is 32 characters. + Make the maximum length of a group name the same. +

+
+
+ --without-libbsd +
+
+

+ Do not use the readpassphrase function from libbsd + which is not in LFS. Use the internal copy instead. +

+
+
+
+

+ Compile the package: +

+
make
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
make exec_prefix=/usr install
+make -C man install-man
+
+
+

+ 8.28.2. + Configuring Shadow +

+

+ 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 + password shadowing + means, see the doc/HOWTO 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. +

+

+ To enable shadowed passwords, run the following command: +

+
pwconv
+

+ To enable shadowed group passwords, run: +

+
grpconv
+

+ Shadow's default configuration for the useradd utility needs some + explanation. First, the default action for the useradd 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 useradd, + 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 -g or -N parameter to useradd, or else change the + setting of USERGROUPS_ENAB in /etc/login.defs. See useradd(8) for + more information. +

+

+ Second, to change the default parameters, the file + /etc/default/useradd must be + created and tailored to suit your particular needs. Create it + with: +

+
mkdir -p /etc/default
+useradd -D --gid 999
+
+

+ /etc/default/useradd + parameter explanations +

+
+
+ GROUP=999 +
+
+

+ This parameter sets the beginning of the group numbers + used in the /etc/group + file. The particular value 999 comes from the + --gid parameter + above. You may set it to any desired value. Note that + useradd + 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 useradd without the + -g parameter, + an error message will be generated—useradd: unknown GID 999, even + though the account has been created correctly. That is + why we created the group users with this group ID in + Section 7.6, + “Creating Essential Files and Symlinks.” +

+
+
+ CREATE_MAIL_SPOOL=yes +
+
+

+ This parameter causes useradd to create a + mailbox file for each new user. useradd will assign + the group ownership of this file to the mail group with 0660 permissions. + If you would rather not create these files, issue the + following command: +

+
sed -i '/MAIL/s/yes/no/' /etc/default/useradd
+
+
+
+
+
+

+ 8.28.3. Setting the Root Password +

+

+ Choose a password for user root and set it by running: +

+
passwd root
+
+
+

+ 8.28.4. + Contents of Shadow +

+
+
+
+ Installed programs: + chage, chfn, chgpasswd, chpasswd, + chsh, expiry, faillog, getsubids, gpasswd, groupadd, + groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, + login, logoutd, newgidmap, newgrp, newuidmap, newusers, + nologin, passwd, pwck, pwconv, pwunconv, sg (link to + newgrp), su, useradd, userdel, usermod, vigr (link to + vipw), and vipw +
+
+ Installed directories: + /etc/default and + /usr/include/shadow +
+
+ Installed libraries: + libsubid.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ chage +

+
+

+ Used to change the maximum number of days between + obligatory password changes +

+
+

+ chfn +

+
+

+ Used to change a user's full name and other + information +

+
+

+ chgpasswd +

+
+

+ Used to update group passwords in batch mode +

+
+

+ chpasswd +

+
+

+ Used to update user passwords in batch mode +

+
+

+ chsh +

+
+

+ Used to change a user's default login shell +

+
+

+ expiry +

+
+

+ Checks and enforces the current password expiration + policy +

+
+

+ faillog +

+
+

+ Is used to examine the log of login failures, to + set a maximum number of failures before an account + is blocked, and to reset the failure count +

+
+

+ getsubids +

+
+

+ Is used to list the subordinate id ranges for a + user +

+
+

+ gpasswd +

+
+

+ Is used to add and delete members and + administrators to groups +

+
+

+ groupadd +

+
+

+ Creates a group with the given name +

+
+

+ groupdel +

+
+

+ Deletes the group with the given name +

+
+

+ groupmems +

+
+

+ Allows a user to administer his/her own group + membership list without the requirement of super + user privileges. +

+
+

+ groupmod +

+
+

+ Is used to modify the given group's name or GID +

+
+

+ grpck +

+
+

+ Verifies the integrity of the group files + /etc/group and + /etc/gshadow +

+
+

+ grpconv +

+
+

+ Creates or updates the shadow group file from the + normal group file +

+
+

+ grpunconv +

+
+

+ Updates /etc/group + from /etc/gshadow and + then deletes the latter +

+
+

+ login +

+
+

+ Is used by the system to let users sign on +

+
+

+ logoutd +

+
+

+ Is a daemon used to enforce restrictions on log-on + time and ports +

+
+

+ newgidmap +

+
+

+ Is used to set the gid mapping of a user namespace +

+
+

+ newgrp +

+
+

+ Is used to change the current GID during a login + session +

+
+

+ newuidmap +

+
+

+ Is used to set the uid mapping of a user namespace +

+
+

+ newusers +

+
+

+ Is used to create or update an entire series of + user accounts +

+
+

+ nologin +

+
+

+ Displays a message saying an account is not + available; it is designed to be used as the default + shell for disabled accounts +

+
+

+ passwd +

+
+

+ Is used to change the password for a user or group + account +

+
+

+ pwck +

+
+

+ Verifies the integrity of the password files + /etc/passwd and + /etc/shadow +

+
+

+ pwconv +

+
+

+ Creates or updates the shadow password file from + the normal password file +

+
+

+ pwunconv +

+
+

+ Updates /etc/passwd + from /etc/shadow and + then deletes the latter +

+
+

+ sg +

+
+

+ Executes a given command while the user's GID is + set to that of the given group +

+
+

+ su +

+
+

+ Runs a shell with substitute user and group IDs +

+
+

+ useradd +

+
+

+ Creates a new user with the given name, or updates + the default new-user information +

+
+

+ userdel +

+
+

+ Deletes the specified user account +

+
+

+ usermod +

+
+

+ Is used to modify the given user's login name, user + identification (UID), shell, initial group, home + directory, etc. +

+
+

+ vigr +

+
+

+ Edits the /etc/group + or /etc/gshadow files +

+
+

+ vipw +

+
+

+ Edits the /etc/passwd + or /etc/shadow files +

+
+

+ libsubid +

+
+

+ library to handle subordinate id ranges for users + and groups +

+
+
+
+
+
+
+
+

+ 8.29. GCC-15.2.0 +

+
+
+
+
+
+

+ The GCC package contains the GNU compiler collection, which + includes the C and C++ compilers. +

+
+
+
+ Approximate build time: + 46 SBU (with tests) +
+
+ Required disk space: + 6.6 GB +
+
+
+
+
+

+ 8.29.1. Installation of GCC +

+

+ If building on x86_64, change the default directory name for + 64-bit libraries to “lib”: +

+
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 -v build
+cd       build
+

+ Prepare GCC for compilation: +

+
../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
+

+ GCC supports seven different computer languages, but the + prerequisites for most of them have not yet been installed. + See the + BLFS Book GCC page for instructions on how to build all + of GCC's supported languages. +

+
+

+ The meaning of the new configure + parameters: +

+
+
+ LD=ld +
+
+

+ This parameter makes the configure script use the ld + program installed by the Binutils package built earlier + in this chapter, rather than the cross-built version + which would otherwise be used. +

+
+
+ --disable-fixincludes +
+
+

+ By default, during the installation of GCC some system + headers would be “fixed” to be used with GCC. This + is not necessary for a modern Linux system, and + potentially harmful if a package is reinstalled after + installing GCC. This switch prevents GCC from + “fixing” the headers. +

+
+
+ --with-system-zlib +
+
+

+ This switch tells GCC to link to the system installed + copy of the Zlib library, rather than its own internal + copy. +

+
+
+
+
+

+ Note +

+

+ PIE (position-independent executables) are binary programs + that can be loaded anywhere in memory. Without PIE, the + security feature named ASLR (Address Space Layout + Randomization) can be applied for the shared libraries, but + not for the executables themselves. Enabling PIE allows + ASLR for the executables in addition to the shared + libraries, and mitigates some attacks based on fixed + addresses of sensitive code or data in the executables. +

+

+ SSP (Stack Smashing Protection) is a technique to ensure + that the parameter stack is not corrupted. Stack corruption + can, for example, alter the return address of a subroutine, + thus transferring control to some dangerous code (existing + in the program or shared libraries, or injected by the + attacker somehow). +

+
+

+ Compile the package: +

+
make
+
+

+ Important +

+

+ 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 + make -k check + command below, where x is the number of CPU cores on your + system. +

+
+

+ 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: +

+
ulimit -s -H unlimited
+

+ Now remove several known test failures: +

+
sed -e '/cpython/d' -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
+

+ Test the results as a non-privileged user, but do not stop at + errors: +

+
chown -R tester .
+su tester -c "PATH=$PATH make -k check"
+

+ To extract a summary of the test suite results, run: +

+
../contrib/test_summary
+

+ To filter out only the summaries, pipe the output through + grep -A7 + Summ. +

+

+ Results can be compared with those located at https://www.linuxfromscratch.org/lfs/build-logs/12.4/ + and https://gcc.gnu.org/ml/gcc-testresults/. +

+

+ The tests related to pr90579.c + are known to fail. +

+

+ A few unexpected failures cannot always be avoided. In some + cases test failures depend on the specific hardware of the + system. Unless the test results are vastly different from + those at the above URL, it is safe to continue. +

+

+ Install the package: +

+
make install
+

+ The GCC build directory is owned by tester now, and the ownership of the + installed header directory (and its content) is incorrect. + Change the ownership to the root user and group: +

+
chown -v -R root:root \
+    /usr/lib/gcc/$(gcc -dumpmachine)/15.2.0/include{,-fixed}
+

+ Create a symlink required by the + FHS for "historical" reasons. +

+
ln -svr /usr/bin/cpp /usr/lib
+

+ Many packages use the name cc to call the C compiler. + We've already created cc as a symlink in + gcc-pass2, create its + man page as a symlink as well: +

+
ln -sv gcc.1 /usr/share/man/man1/cc.1
+

+ Add a compatibility symlink to enable building programs with + Link Time Optimization (LTO): +

+
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/15.2.0/liblto_plugin.so \
+        /usr/lib/bfd-plugins/
+

+ 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: +

+
echo 'int main(){}' | cc -x c - -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+

+ There should be no errors, and the output of the last command + will be (allowing for platform-specific differences in the + dynamic linker name): +

+
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
+

+ Now make sure that we're set up to use the correct start + files: +

+
grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
+

+ The output of the last command should be: +

+
/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.0/../../../../lib/Scrt1.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.0/../../../../lib/crti.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.0/../../../../lib/crtn.o succeeded
+

+ Depending on your machine architecture, the above may differ + slightly. The difference will be the name of the directory + after /usr/lib/gcc. The + important thing to look for here is that gcc has found all three + crt*.o files under the + /usr/lib directory. +

+

+ Verify that the compiler is searching for the correct header + files: +

+
grep -B4 '^ /usr/include' dummy.log
+

+ This command should return the following output: +

+
#include <...> search starts here:
+ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.0/include
+ /usr/local/include
+ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.0/include-fixed
+ /usr/include
+

+ Again, the directory named after your target triplet may be + different than the above, depending on your system + architecture. +

+

+ Next, verify that the new linker is being used with the + correct search paths: +

+
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+

+ References to paths that have components with '-linux-gnu' + should be ignored, but otherwise the output of the last + command should be: +

+
SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
+SEARCH_DIR("/usr/local/lib64")
+SEARCH_DIR("/lib64")
+SEARCH_DIR("/usr/lib64")
+SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
+SEARCH_DIR("/usr/local/lib")
+SEARCH_DIR("/lib")
+SEARCH_DIR("/usr/lib");
+

+ A 32-bit system may use a few other directories. For example, + here is the output from an i686 machine: +

+
SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
+SEARCH_DIR("/usr/local/lib32")
+SEARCH_DIR("/lib32")
+SEARCH_DIR("/usr/lib32")
+SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
+SEARCH_DIR("/usr/local/lib")
+SEARCH_DIR("/lib")
+SEARCH_DIR("/usr/lib");
+

+ Next make sure that we're using the correct libc: +

+
grep "/lib.*/libc.so.6 " dummy.log
+

+ The output of the last command should be: +

+
attempt to open /usr/lib/libc.so.6 succeeded
+

+ Make sure GCC is using the correct dynamic linker: +

+
grep found dummy.log
+

+ The output of the last command should be (allowing for + platform-specific differences in dynamic linker name): +

+
found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
+

+ If the output does not appear as shown above or is not + received at all, then something is seriously wrong. + Investigate and retrace the steps to find out where the + problem is and correct it. Any issues should be resolved + before continuing with the process. +

+

+ Once everything is working correctly, clean up the test + files: +

+
rm -v a.out dummy.log
+

+ Finally, move a misplaced file: +

+
mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
+
+
+

+ 8.29.2. Contents + of GCC +

+
+
+
+ Installed programs: + c++, cc (link to gcc), cpp, g++, + gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, + gcov-tool, and lto-dump +
+
+ Installed libraries: + libasan.{a,so}, libatomic.{a,so}, + libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, + libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so}, + liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, + libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, + libstdc++exp.a, libstdc++fs.a, libsupc++.a, + libtsan.{a,so}, and libubsan.{a,so} +
+
+ Installed directories: + /usr/include/c++, /usr/lib/gcc, + /usr/libexec/gcc, and /usr/share/gcc-15.2.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ c++ +

+
+

+ The C++ compiler +

+
+

+ cc +

+
+

+ The C compiler +

+
+

+ cpp +

+
+

+ The C preprocessor; it is used by the compiler to + expand the #include, #define, and similar + directives in the source files +

+
+

+ g++ +

+
+

+ The C++ compiler +

+
+

+ gcc +

+
+

+ The C compiler +

+
+

+ gcc-ar +

+
+

+ A wrapper around ar that adds a + plugin to the command line. This program is only + used to add "link time optimization" and is not + useful with the default build options. +

+
+

+ gcc-nm +

+
+

+ A wrapper around nm that adds a + plugin to the command line. This program is only + used to add "link time optimization" and is not + useful with the default build options. +

+
+

+ gcc-ranlib +

+
+

+ A wrapper around ranlib that adds + a plugin to the command line. This program is only + used to add "link time optimization" and is not + useful with the default build options. +

+
+

+ gcov +

+
+

+ A coverage testing tool; it is used to analyze + programs to determine where optimizations will have + the greatest effect +

+
+

+ gcov-dump +

+
+

+ Offline gcda and gcno profile dump tool +

+
+

+ gcov-tool +

+
+

+ Offline gcda profile processing tool +

+
+

+ lto-dump +

+
+

+ Tool for dumping object files produced by GCC with + LTO enabled +

+
+

+ libasan +

+
+

+ The Address Sanitizer runtime library +

+
+

+ libatomic +

+
+

+ GCC atomic built-in runtime library +

+
+

+ libcc1 +

+
+

+ A library that allows GDB to make use of GCC +

+
+

+ libgcc +

+
+

+ Contains run-time support for gcc +

+
+

+ libgcov +

+
+

+ This library is linked into a program when GCC is + instructed to enable profiling +

+
+

+ libgomp +

+
+

+ GNU implementation of the OpenMP API for + multi-platform shared-memory parallel programming + in C/C++ and Fortran +

+
+

+ libhwasan +

+
+

+ The Hardware-assisted Address Sanitizer runtime + library +

+
+

+ libitm +

+
+

+ The GNU transactional memory library +

+
+

+ liblsan +

+
+

+ The Leak Sanitizer runtime library +

+
+

+ liblto_plugin +

+
+

+ GCC's LTO plugin allows Binutils to process object + files produced by GCC with LTO enabled +

+
+

+ libquadmath +

+
+

+ GCC Quad Precision Math Library API +

+
+

+ libssp +

+
+

+ Contains routines supporting GCC's stack-smashing + protection functionality. Normally it is not used, + because Glibc also provides those routines. +

+
+

+ libstdc++ +

+
+

+ The standard C++ library +

+
+

+ libstdc++exp +

+
+

+ Experimental C++ Contracts library +

+
+

+ libstdc++fs +

+
+

+ ISO/IEC TS 18822:2015 Filesystem library +

+
+

+ libsupc++ +

+
+

+ Provides supporting routines for the C++ + programming language +

+
+

+ libtsan +

+
+

+ The Thread Sanitizer runtime library +

+
+

+ libubsan +

+
+

+ The Undefined Behavior Sanitizer runtime library +

+
+
+
+
+
+
+
+

+ 8.30. Ncurses-6.5-20250809 +

+
+
+
+
+
+

+ The Ncurses package contains libraries for + terminal-independent handling of character screens. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 46 MB +
+
+
+
+
+

+ 8.30.1. Installation of Ncurses +

+

+ Prepare Ncurses for compilation: +

+
./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
+
+

+ The meaning of the new configure options: +

+
+
+ --with-shared +
+
+

+ This makes Ncurses build and install shared C + libraries. +

+
+
+ --without-normal +
+
+

+ This prevents Ncurses building and installing static C + libraries. +

+
+
+ --without-debug +
+
+

+ This prevents Ncurses building and installing debug + libraries. +

+
+
+ --with-cxx-shared +
+
+

+ This makes Ncurses build and install shared C++ + bindings. It also prevents it building and installing + static C++ bindings. +

+
+
+ --enable-pc-files +
+
+

+ This switch generates and installs .pc files for + pkg-config. +

+
+
+
+

+ Compile the package: +

+
make
+

+ This package has a test suite, but it can only be run after + the package has been installed. The tests reside in the + test/ directory. See the + README file in that directory + for further details. +

+

+ The installation of this package will overwrite libncursesw.so.6.5 in-place. It may crash + the shell process which is using code and data from the + library file. Install the package with DESTDIR, and replace the library file + correctly using install command (the header + curses.h is also edited to + ensure the wide-character ABI to be used as what we've done + in Section 6.3, + “Ncurses-6.5-20250809”): +

+
make DESTDIR=$PWD/dest install
+install -vm755 dest/usr/lib/libncursesw.so.6.5 /usr/lib
+rm -v  dest/usr/lib/libncursesw.so.6.5
+sed -e 's/^#if.*XOPEN.*$/#if 1/' \
+    -i dest/usr/include/curses.h
+cp -av dest/* /
+

+ 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 .so + links are only safe with curses.h edited to always use the + wide-character ABI): +

+
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
+

+ Finally, make sure that old applications that look for + -lcurses at build time are + still buildable: +

+
ln -sfv libncursesw.so /usr/lib/libcurses.so
+

+ If desired, install the Ncurses documentation: +

+
cp -v -R doc -T /usr/share/doc/ncurses-6.5-20250809
+
+

+ Note +

+

+ The instructions above don't create non-wide-character + Ncurses libraries since no package installed by compiling + from sources would link against them at runtime. However, + the only known binary-only applications that link against + non-wide-character Ncurses libraries require version 5. If + you must have such libraries because of some binary-only + application or to be compliant with LSB, build the package + again with the following commands: +

+
make distclean
+./configure --prefix=/usr    \
+            --with-shared    \
+            --without-normal \
+            --without-debug  \
+            --without-cxx-binding \
+            --with-abi-version=5
+make sources libs
+cp -av lib/lib*.so.5* /usr/lib
+
+
+
+

+ 8.30.2. + Contents of Ncurses +

+
+
+
+ Installed programs: + captoinfo (link to tic), clear, + infocmp, infotocap (link to tic), ncursesw6-config, reset + (link to tset), tabs, tic, toe, tput, and tset +
+
+ Installed libraries: + libcurses.so (symlink), libform.so + (symlink), libformw.so, libmenu.so (symlink), + libmenuw.so, libncurses.so (symlink), libncursesw.so, + libncurses++w.so, libpanel.so (symlink), and + libpanelw.so, +
+
+ Installed directories: + /usr/share/tabset, + /usr/share/terminfo, and + /usr/share/doc/ncurses-6.5-20250809 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ captoinfo +

+
+

+ Converts a termcap description into a terminfo + description +

+
+

+ clear +

+
+

+ Clears the screen, if possible +

+
+

+ infocmp +

+
+

+ Compares or prints out terminfo descriptions +

+
+

+ infotocap +

+
+

+ Converts a terminfo description into a termcap + description +

+
+

+ ncursesw6-config +

+
+

+ Provides configuration information for ncurses +

+
+

+ reset +

+
+

+ Reinitializes a terminal to its default values +

+
+

+ tabs +

+
+

+ Clears and sets tab stops on a terminal +

+
+

+ tic +

+
+

+ The terminfo entry-description compiler that + translates a terminfo file from source format into + the binary format needed for the ncurses library + routines [A terminfo file contains information on + the capabilities of a certain terminal.] +

+
+

+ toe +

+
+

+ Lists all available terminal types, giving the + primary name and description for each +

+
+

+ tput +

+
+

+ Makes the values of terminal-dependent capabilities + available to the shell; it can also be used to + reset or initialize a terminal or report its long + name +

+
+

+ tset +

+
+

+ Can be used to initialize terminals +

+
+

+ libncursesw +

+
+

+ Contains functions to display text in many complex + ways on a terminal screen; a good example of the + use of these functions is the menu displayed during + the kernel's make + menuconfig +

+
+

+ libncurses++w +

+
+

+ Contains C++ binding for other libraries in this + package +

+
+

+ libformw +

+
+

+ Contains functions to implement forms +

+
+

+ libmenuw +

+
+

+ Contains functions to implement menus +

+
+

+ libpanelw +

+
+

+ Contains functions to implement panels +

+
+
+
+
+
+
+
+

+ 8.31. Sed-4.9 +

+
+
+
+
+
+

+ The Sed package contains a stream editor. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 30 MB +
+
+
+
+
+

+ 8.31.1. Installation of Sed +

+

+ Prepare Sed for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package and generate the HTML documentation: +

+
make
+make html
+

+ To test the results, issue: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Install the package and its documentation: +

+
make install
+install -d -m755           /usr/share/doc/sed-4.9
+install -m644 doc/sed.html /usr/share/doc/sed-4.9
+
+
+

+ 8.31.2. Contents + of Sed +

+
+
+
+ Installed program: + sed +
+
+ Installed directory: + /usr/share/doc/sed-4.9 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ sed +

+
+

+ Filters and transforms text files in a single pass +

+
+
+
+
+
+
+
+

+ 8.32. Psmisc-23.7 +

+
+
+
+
+
+

+ The Psmisc package contains programs for displaying + information about running processes. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.7 MB +
+
+
+
+
+

+ 8.32.1. Installation of Psmisc +

+

+ Prepare Psmisc for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To run the test suite, run: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.32.2. + Contents of Psmisc +

+
+
+
+ Installed programs: + fuser, killall, peekfd, prtstat, + pslog, pstree, and pstree.x11 (link to pstree) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fuser +

+
+

+ Reports the Process IDs (PIDs) of processes that + use the given files or file systems +

+
+

+ killall +

+
+

+ Kills processes by name; it sends a signal to all + processes running any of the given commands +

+
+

+ peekfd +

+
+

+ Peek at file descriptors of a running process, + given its PID +

+
+

+ prtstat +

+
+

+ Prints information about a process +

+
+

+ pslog +

+
+

+ Reports current logs path of a process +

+
+

+ pstree +

+
+

+ Displays running processes as a tree +

+
+

+ pstree.x11 +

+
+

+ Same as pstree, except + that it waits for confirmation before exiting +

+
+
+
+
+
+
+
+

+ 8.33. Gettext-0.26 +

+
+
+
+
+
+

+ The Gettext package contains utilities for + internationalization and localization. These allow programs + to be compiled with NLS (Native Language Support), enabling + them to output messages in the user's native language. +

+
+
+
+ Approximate build time: + 2.1 SBU +
+
+ Required disk space: + 395 MB +
+
+
+
+
+

+ 8.33.1. Installation of Gettext +

+

+ Prepare Gettext for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/gettext-0.26
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+chmod -v 0755 /usr/lib/preloadable_libintl.so
+
+
+

+ 8.33.2. + Contents of Gettext +

+
+
+
+ Installed programs: + autopoint, envsubst, gettext, + gettext.sh, gettextize, msgattrib, msgcat, msgcmp, + msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, + msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, + recode-sr-latin, and xgettext +
+
+ Installed libraries: + libasprintf.so, libgettextlib.so, + libgettextpo.so, libgettextsrc.so, libtextstyle.so, and + preloadable_libintl.so +
+
+ Installed directories: + /usr/lib/gettext, + /usr/share/doc/gettext-0.26, /usr/share/gettext, and + /usr/share/gettext-0.26 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ autopoint +

+
+

+ Copies standard Gettext infrastructure files into a + source package +

+
+

+ envsubst +

+
+

+ Substitutes environment variables in shell format + strings +

+
+

+ gettext +

+
+

+ Translates a natural language message into the + user's language by looking up the translation in a + message catalog +

+
+

+ gettext.sh +

+
+

+ Primarily serves as a shell function library for + gettext +

+
+

+ gettextize +

+
+

+ Copies all standard Gettext files into the given + top-level directory of a package to begin + internationalizing it +

+
+

+ msgattrib +

+
+

+ Filters the messages of a translation catalog + according to their attributes and manipulates the + attributes +

+
+

+ msgcat +

+
+

+ Concatenates and merges the given .po files +

+
+

+ msgcmp +

+
+

+ Compares two .po + files to check that both contain the same set of + msgid strings +

+
+

+ msgcomm +

+
+

+ Finds the messages that are common to the given + .po files +

+
+

+ msgconv +

+
+

+ Converts a translation catalog to a different + character encoding +

+
+

+ msgen +

+
+

+ Creates an English translation catalog +

+
+

+ msgexec +

+
+

+ Applies a command to all translations of a + translation catalog +

+
+

+ msgfilter +

+
+

+ Applies a filter to all translations of a + translation catalog +

+
+

+ msgfmt +

+
+

+ Generates a binary message catalog from a + translation catalog +

+
+

+ msggrep +

+
+

+ Extracts all messages of a translation catalog that + match a given pattern or belong to some given + source files +

+
+

+ msginit +

+
+

+ Creates a new .po + file, initializing the meta information with values + from the user's environment +

+
+

+ msgmerge +

+
+

+ Combines two raw translations into a single file +

+
+

+ msgunfmt +

+
+

+ Decompiles a binary message catalog into raw + translation text +

+
+

+ msguniq +

+
+

+ Unifies duplicate translations in a translation + catalog +

+
+

+ ngettext +

+
+

+ Displays native language translations of a textual + message whose grammatical form depends on a number +

+
+

+ recode-sr-latin +

+
+

+ Recodes Serbian text from Cyrillic to Latin script +

+
+

+ xgettext +

+
+

+ Extracts the translatable message lines from the + given source files to make the first translation + template +

+
+

+ libasprintf +

+
+

+ Defines the autosprintf class, which + makes C formatted output routines usable in C++ + programs, for use with the <string> strings + and the <iostream> streams +

+
+

+ libgettextlib +

+
+

+ Contains common routines used by the various + Gettext programs; these are not intended for + general use +

+
+

+ libgettextpo +

+
+

+ Used to write specialized programs that process + .po files; this + library is used when the standard applications + shipped with Gettext (such as msgcomm, + msgcmp, + msgattrib, and + msgen) will not + suffice +

+
+

+ libgettextsrc +

+
+

+ Provides common routines used by the various + Gettext programs; these are not intended for + general use +

+
+

+ libtextstyle +

+
+

+ Text styling library +

+
+

+ preloadable_libintl +

+
+

+ A library, intended to be used by LD_PRELOAD, that + helps libintl log + untranslated messages +

+
+
+
+
+
+
+
+

+ 8.34. Bison-3.8.2 +

+
+
+
+
+
+

+ The Bison package contains a parser generator. +

+
+
+
+ Approximate build time: + 2.1 SBU +
+
+ Required disk space: + 63 MB +
+
+
+
+
+

+ 8.34.1. Installation of Bison +

+

+ Prepare Bison for compilation: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.34.2. + Contents of Bison +

+
+
+
+ Installed programs: + bison and yacc +
+
+ Installed library: + liby.a +
+
+ Installed directory: + /usr/share/bison +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ bison +

+
+

+ Generates, from a series of rules, a program for + analyzing the structure of text files; Bison is a + replacement for Yacc (Yet Another Compiler + Compiler) +

+
+

+ yacc +

+
+

+ A wrapper for bison, meant for + programs that still call yacc instead of + bison; it calls + bison + with the -y + option +

+
+

+ liby +

+
+

+ The Yacc library containing implementations of + Yacc-compatible yyerror and main functions; this library is + normally not very useful, but POSIX requires it +

+
+
+
+
+
+
+
+

+ 8.35. Grep-3.12 +

+
+
+
+
+
+

+ The Grep package contains programs for searching through the + contents of files. +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 48 MB +
+
+
+
+
+

+ 8.35.1. Installation of Grep +

+

+ First, remove a warning about using egrep and fgrep that + makes tests on some packages fail: +

+
sed -i "s/echo/#echo/" src/egrep.sh
+

+ Prepare Grep for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.35.2. + Contents of Grep +

+
+
+
+ Installed programs: + egrep, fgrep, and grep +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ egrep +

+
+

+ Prints lines matching an extended regular + expression. It is obsolete, use grep -E instead +

+
+

+ fgrep +

+
+

+ Prints lines matching a list of fixed strings. It + is obsolete, use grep + -F instead +

+
+

+ grep +

+
+

+ Prints lines matching a basic regular expression +

+
+
+
+
+
+
+
+

+ 8.36. Bash-5.3 +

+
+
+
+
+
+

+ The Bash package contains the Bourne-Again Shell. +

+
+
+
+ Approximate build time: + 1.5 SBU +
+
+ Required disk space: + 56 MB +
+
+
+
+
+

+ 8.36.1. Installation of Bash +

+

+ Prepare Bash for compilation: +

+
./configure --prefix=/usr             \
+            --without-bash-malloc     \
+            --with-installed-readline \
+            --docdir=/usr/share/doc/bash-5.3
+
+

+ The meaning of the new configure option: +

+
+
+ --with-installed-readline +
+
+

+ This option tells Bash to use the readline library that is already + installed on the system rather than using its own + readline version. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Skip down to “Install + the package” if not running the test suite. +

+

+ To prepare the tests, ensure that the tester user can write to the sources + tree: +

+
chown -R tester .
+

+ 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 Expect and run the tests as the + tester user: +

+
LC_ALL=C.UTF-8 su -s /usr/bin/expect tester << "EOF"
+set timeout -1
+spawn make tests
+expect eof
+lassign [wait] _ _ _ value
+exit $value
+EOF
+

+ The test suite uses diff to detect the + difference between test script output and the expected + output. Any output from diff (prefixed with + < and >) indicates a test failure, + unless there is a message saying the difference can be + ignored. The test named run-builtins is known to fail on some host + distros with a difference on the 479 and 480 lines of the + output. Some other tests need the zh_TW.BIG5 and ja_JP.SJIS locales, they are known to fail + unless those locales are installed. +

+

+ Install the package: +

+
make install
+

+ Run the newly compiled bash program (replacing the + one that is currently being executed): +

+
exec /usr/bin/bash --login
+
+
+

+ 8.36.2. + Contents of Bash +

+
+
+
+ Installed programs: + bash, bashbug, and sh (link to + bash) +
+
+ Installed directory: + /usr/include/bash, /usr/lib/bash, + and /usr/share/doc/bash-5.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ bash +

+
+

+ A widely-used command interpreter; it performs many + types of expansions and substitutions on a given + command line before executing it, thus making this + interpreter a powerful tool +

+
+

+ bashbug +

+
+

+ A shell script to help the user compose and mail + standard formatted bug reports concerning + bash +

+
+

+ sh +

+
+

+ A symlink to the bash program; + when invoked as sh, bash tries to + mimic the startup behavior of historical versions + of sh + as closely as possible, while conforming to the + POSIX standard as well +

+
+
+
+
+
+
+
+

+ 8.37. Libtool-2.5.4 +

+
+
+
+
+
+

+ The Libtool package contains the GNU generic library support + script. It makes the use of shared libraries simpler with a + consistent, portable interface. +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 44 MB +
+
+
+
+
+

+ 8.37.1. Installation of Libtool +

+

+ Prepare Libtool for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+

+ Remove a static library only useful for the test suite: +

+
rm -fv /usr/lib/libltdl.a
+
+
+

+ 8.37.2. + Contents of Libtool +

+
+
+
+ Installed programs: + libtool and libtoolize +
+
+ Installed libraries: + libltdl.so +
+
+ Installed directories: + /usr/include/libltdl and + /usr/share/libtool +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libtool +

+
+

+ Provides generalized library-building support + services +

+
+

+ libtoolize +

+
+

+ Provides a standard way to add libtool support + to a package +

+
+

+ libltdl +

+
+

+ Hides the various difficulties of opening + dynamically loaded libraries +

+
+
+
+
+
+
+
+

+ 8.38. GDBM-1.26 +

+
+
+
+
+
+

+ The GDBM package contains the GNU Database Manager. It is a + library of database functions that uses extensible hashing + and works like the standard UNIX dbm. The library provides + primitives for storing key/data pairs, searching and + retrieving the data by its key and deleting a key along with + its data. +

+
+
+
+ Approximate build time: + less than 0.2 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 8.38.1. Installation of GDBM +

+

+ Prepare GDBM for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --enable-libgdbm-compat
+
+

+ The meaning of the configure option: +

+
+
+ --enable-libgdbm-compat +
+
+

+ This switch enables building the libgdbm compatibility + library. Some packages outside of LFS may require the + older DBM routines it provides. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.38.2. + Contents of GDBM +

+
+
+
+ Installed programs: + gdbm_dump, gdbm_load, and + gdbmtool +
+
+ Installed libraries: + libgdbm.so and + libgdbm_compat.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gdbm_dump +

+
+

+ Dumps a GDBM database to a file +

+
+

+ gdbm_load +

+
+

+ Recreates a GDBM database from a dump file +

+
+

+ gdbmtool +

+
+

+ Tests and modifies a GDBM database +

+
+

+ libgdbm +

+
+

+ Contains functions to manipulate a hashed database +

+
+

+ libgdbm_compat +

+
+

+ Compatibility library containing older DBM + functions +

+
+
+
+
+
+
+
+

+ 8.39. Gperf-3.3 +

+
+
+
+
+
+

+ Gperf generates a perfect hash function from a key set. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 12 MB +
+
+
+
+
+

+ 8.39.1. Installation of Gperf +

+

+ Prepare Gperf for compilation: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.3
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.39.2. + Contents of Gperf +

+
+
+
+ Installed program: + gperf +
+
+ Installed directory: + /usr/share/doc/gperf-3.3 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gperf +

+
+

+ Generates a perfect hash from a key set +

+
+
+
+
+
+
+
+

+ 8.40. Expat-2.7.1 +

+
+
+
+
+
+

+ The Expat package contains a stream oriented C library for + parsing XML. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 14 MB +
+
+
+
+
+

+ 8.40.1. Installation of Expat +

+

+ Prepare Expat for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/expat-2.7.1
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+

+ If desired, install the documentation: +

+
install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.7.1
+
+
+

+ 8.40.2. + Contents of Expat +

+
+
+
+ Installed program: + xmlwf +
+
+ Installed libraries: + libexpat.so +
+
+ Installed directory: + /usr/share/doc/expat-2.7.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xmlwf +

+
+

+ Is a non-validating utility to check whether or not + XML documents are well formed +

+
+

+ libexpat +

+
+

+ Contains API functions for parsing XML +

+
+
+
+
+
+
+
+

+ 8.41. Inetutils-2.6 +

+
+
+
+
+
+

+ The Inetutils package contains programs for basic networking. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 36 MB +
+
+
+
+
+

+ 8.41.1. Installation of Inetutils +

+

+ First, make the package build with gcc-14.1 or later: +

+
sed -i 's/def HAVE_TERMCAP_TGETENT/ 1/' telnet/telnet.c
+

+ Prepare Inetutils for compilation: +

+
./configure --prefix=/usr        \
+            --bindir=/usr/bin    \
+            --localstatedir=/var \
+            --disable-logger     \
+            --disable-whois      \
+            --disable-rcp        \
+            --disable-rexec      \
+            --disable-rlogin     \
+            --disable-rsh        \
+            --disable-servers
+
+

+ The meaning of the configure options: +

+
+
+ --disable-logger +
+
+

+ This option prevents Inetutils from installing the + logger + program, which is used by scripts to pass messages to + the System Log Daemon. Do not install it because + Util-linux installs a more recent version. +

+
+
+ --disable-whois +
+
+

+ This option disables the building of the Inetutils + whois + client, which is out of date. Instructions for a better + whois + client are in the BLFS book. +

+
+
+ --disable-r* +
+
+

+ These parameters disable building obsolete programs + that should not be used due to security issues. The + functions provided by these programs can be provided by + the openssh package in + the BLFS book. +

+
+
+ --disable-servers +
+
+

+ This disables the installation of the various network + servers included as part of the Inetutils package. + These servers are deemed not appropriate in a basic LFS + system. Some are insecure by nature and are only + considered safe on trusted networks. Note that better + replacements are available for many of these servers. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ One test named libls.sh is + known to fail sometimes. +

+

+ Install the package: +

+
make install
+

+ Move a program to the proper location: +

+
mv -v /usr/{,s}bin/ifconfig
+
+
+

+ 8.41.2. Contents of Inetutils +

+
+
+
+ Installed programs: + dnsdomainname, ftp, ifconfig, + hostname, ping, ping6, talk, telnet, tftp, and + traceroute +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ dnsdomainname +

+
+

+ Show the system's DNS domain name +

+
+

+ ftp +

+
+

+ Is the file transfer protocol program +

+
+

+ hostname +

+
+

+ Reports or sets the name of the host +

+
+

+ ifconfig +

+
+

+ Manages network interfaces +

+
+

+ ping +

+
+

+ Sends echo-request packets and reports how long the + replies take +

+
+

+ ping6 +

+
+

+ A version of ping for IPv6 + networks +

+
+

+ talk +

+
+

+ Is used to chat with another user +

+
+

+ telnet +

+
+

+ An interface to the TELNET protocol +

+
+

+ tftp +

+
+

+ A trivial file transfer program +

+
+

+ traceroute +

+
+

+ Traces the route your packets take from the host + you are working on to another host on a network, + showing all the intermediate hops (gateways) along + the way +

+
+
+
+
+
+
+
+

+ 8.42. Less-679 +

+
+
+
+
+
+

+ The Less package contains a text file viewer. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 16 MB +
+
+
+
+
+

+ 8.42.1. Installation of Less +

+

+ Prepare Less for compilation: +

+
./configure --prefix=/usr --sysconfdir=/etc
+
+

+ The meaning of the configure options: +

+
+
+ --sysconfdir=/etc +
+
+

+ This option tells the programs created by the package + to look in /etc for the + configuration files. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.42.2. + Contents of Less +

+
+
+
+ Installed programs: + less, lessecho, and lesskey +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ less +

+
+

+ A file viewer or pager; it displays the contents of + the given file, letting the user scroll, find + strings, and jump to marks +

+
+

+ lessecho +

+
+

+ Needed to expand meta-characters, such as + * and + ?, in + filenames on Unix systems +

+
+

+ lesskey +

+
+

+ Used to specify the key bindings for less +

+
+
+
+
+
+
+
+

+ 8.43. Perl-5.42.0 +

+
+
+
+
+
+

+ The Perl package contains the Practical Extraction and Report + Language. +

+
+
+
+ Approximate build time: + 1.3 SBU +
+
+ Required disk space: + 257 MB +
+
+
+
+
+

+ 8.43.1. Installation of Perl +

+

+ This version of Perl builds the Compress::Raw::Zlib and + Compress::Raw::BZip2 modules. By default Perl will use an + internal copy of the sources for the build. Issue the + following command so that Perl will use the libraries + installed on the system: +

+
export BUILD_ZLIB=False
+export BUILD_BZIP2=0
+

+ To have full control over the way Perl is set up, you can + remove the “-des” 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: +

+
sh Configure -des                                          \
+             -D prefix=/usr                                \
+             -D vendorprefix=/usr                          \
+             -D privlib=/usr/lib/perl5/5.42/core_perl      \
+             -D archlib=/usr/lib/perl5/5.42/core_perl      \
+             -D sitelib=/usr/lib/perl5/5.42/site_perl      \
+             -D sitearch=/usr/lib/perl5/5.42/site_perl     \
+             -D vendorlib=/usr/lib/perl5/5.42/vendor_perl  \
+             -D vendorarch=/usr/lib/perl5/5.42/vendor_perl \
+             -D man1dir=/usr/share/man/man1                \
+             -D man3dir=/usr/share/man/man3                \
+             -D pager="/usr/bin/less -isR"                 \
+             -D useshrplib                                 \
+             -D usethreads
+
+

+ The meaning of the new Configure options: +

+
+
+ -D + pager="/usr/bin/less -isR" +
+
+

+ This ensures that less is used instead + of more. +

+
+
+ -D + man1dir=/usr/share/man/man1 -D + man3dir=/usr/share/man/man3 +
+
+

+ Since Groff is not installed yet, Configure will not + create man pages for Perl. These parameters override + this behavior. +

+
+
+ -D + usethreads +
+
+

+ Build Perl with support for threads. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
TEST_JOBS=$(nproc) make test_harness
+

+ Install the package and clean up: +

+
make install
+unset BUILD_ZLIB BUILD_BZIP2
+
+
+

+ 8.43.2. + Contents of Perl +

+
+
+
+ Installed programs: + corelist, cpan, enc2xs, encguess, + h2ph, h2xs, instmodsh, json_pp, libnetcfg, perl, + perl5.42.0 (hard link to perl), perlbug, perldoc, + perlivp, perlthanks (hard link to perlbug), piconv, + pl2pm, pod2html, pod2man, pod2text, pod2usage, + podchecker, podselect, prove, ptar, ptardiff, ptargrep, + shasum, splain, xsubpp, and zipdetails +
+
+ Installed libraries: + Many which cannot all be listed + here +
+
+ Installed directory: + /usr/lib/perl5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ corelist +

+
+

+ A command line front end to Module::CoreList +

+
+

+ cpan +

+
+

+ Interact with the Comprehensive Perl Archive + Network (CPAN) from the command line +

+
+

+ enc2xs +

+
+

+ Builds a Perl extension for the Encode module from + either Unicode Character Mappings or Tcl Encoding + Files +

+
+

+ encguess +

+
+

+ Guess the encoding type of one or several files +

+
+

+ h2ph +

+
+

+ Converts .h C header + files to .ph Perl + header files +

+
+

+ h2xs +

+
+

+ Converts .h C header + files to Perl extensions +

+
+

+ instmodsh +

+
+

+ Shell script for examining installed Perl modules; + it can create a tarball from an installed module +

+
+

+ json_pp +

+
+

+ Converts data between certain input and output + formats +

+
+

+ libnetcfg +

+
+

+ Can be used to configure the libnet Perl module +

+
+

+ perl +

+
+

+ Combines some of the best features of C, + sed, + awk + and sh into a single + Swiss Army language +

+
+

+ perl5.42.0 +

+
+

+ A hard link to perl +

+
+

+ perlbug +

+
+

+ Used to generate bug reports about Perl, or the + modules that come with it, and mail them +

+
+

+ perldoc +

+
+

+ Displays a piece of documentation in pod format + that is embedded in the Perl installation tree or + in a Perl script +

+
+

+ perlivp +

+
+

+ The Perl Installation Verification Procedure; it + can be used to verify that Perl and its libraries + have been installed correctly +

+
+

+ perlthanks +

+
+

+ Used to generate thank you messages to mail to the + Perl developers +

+
+

+ piconv +

+
+

+ A Perl version of the character encoding converter + iconv +

+
+

+ pl2pm +

+
+

+ A rough tool for converting Perl4 .pl files to Perl5 .pm modules +

+
+

+ pod2html +

+
+

+ Converts files from pod format to HTML format +

+
+

+ pod2man +

+
+

+ Converts pod data to formatted *roff input +

+
+

+ pod2text +

+
+

+ Converts pod data to formatted ASCII text +

+
+

+ pod2usage +

+
+

+ Prints usage messages from embedded pod docs in + files +

+
+

+ podchecker +

+
+

+ Checks the syntax of pod format documentation files +

+
+

+ podselect +

+
+

+ Displays selected sections of pod documentation +

+
+

+ prove +

+
+

+ Command line tool for running tests against the + Test::Harness module +

+
+

+ ptar +

+
+

+ A tar-like program + written in Perl +

+
+

+ ptardiff +

+
+

+ A Perl program that compares an extracted archive + with an unextracted one +

+
+

+ ptargrep +

+
+

+ A Perl program that applies pattern matching to the + contents of files in a tar archive +

+
+

+ shasum +

+
+

+ Prints or checks SHA checksums +

+
+

+ splain +

+
+

+ Is used to force verbose warning diagnostics in + Perl +

+
+

+ xsubpp +

+
+

+ Converts Perl XS code into C code +

+
+

+ zipdetails +

+
+

+ Displays details about the internal structure of a + Zip file +

+
+
+
+
+
+
+
+

+ 8.44. XML::Parser-2.47 +

+
+
+
+
+
+

+ The XML::Parser module is a Perl interface to James Clark's + XML parser, Expat. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 2.4 MB +
+
+
+
+
+

+ 8.44.1. Installation of XML::Parser +

+

+ Prepare XML::Parser for compilation: +

+
perl Makefile.PL
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make test
+

+ Install the package: +

+
make install
+
+
+

+ 8.44.2. Contents of XML::Parser +

+
+
+
+ Installed module: + Expat.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ Expat +

+
+

+ provides the Perl Expat interface +

+
+
+
+
+
+
+
+

+ 8.45. Intltool-0.51.0 +

+
+
+
+
+
+

+ The Intltool is an internationalization tool used for + extracting translatable strings from source files. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 1.5 MB +
+
+
+
+
+

+ 8.45.1. Installation of Intltool +

+

+ First fix a warning that is caused by perl-5.22 and later: +

+
sed -i 's:\\\${:\\\$\\{:' intltool-update.in
+
+

+ Note +

+

+ 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 + '\$\{'. +

+
+

+ Prepare Intltool for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
+
+
+

+ 8.45.2. Contents of Intltool +

+
+
+
+ Installed programs: + intltool-extract, intltool-merge, + intltool-prepare, intltool-update, and intltoolize +
+
+ Installed directories: + /usr/share/doc/intltool-0.51.0 and + /usr/share/intltool +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ intltoolize +

+
+

+ Prepares a package to use intltool +

+
+

+ intltool-extract +

+
+

+ Generates header files that can be read by + gettext +

+
+

+ intltool-merge +

+
+

+ Merges translated strings into various file types +

+
+

+ intltool-prepare +

+
+

+ Updates pot files and merges them with translation + files +

+
+

+ intltool-update +

+
+

+ Updates the po template files and merges them with + the translations +

+
+
+
+
+
+
+
+

+ 8.46. Autoconf-2.72 +

+
+
+
+
+
+

+ The Autoconf package contains programs for producing shell + scripts that can automatically configure source code. +

+
+
+
+ Approximate build time: + less than 0.1 SBU (about 0.4 SBU + with tests) +
+
+ Required disk space: + 25 MB +
+
+
+
+
+

+ 8.46.1. Installation of Autoconf +

+

+ Prepare Autoconf for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.46.2. Contents of Autoconf +

+
+
+
+ Installed programs: + autoconf, autoheader, autom4te, + autoreconf, autoscan, autoupdate, and ifnames +
+
+ Installed directory: + /usr/share/autoconf +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ autoconf +

+
+

+ Produces shell scripts that automatically configure + software source code packages to adapt to many + kinds of Unix-like systems; the configuration + scripts it produces are independent—running them + does not require the autoconf program +

+
+

+ autoheader +

+
+

+ A tool for creating template files of C + #define + statements for configure to use +

+
+

+ autom4te +

+
+

+ A wrapper for the M4 macro processor +

+
+

+ autoreconf +

+
+

+ Automatically runs autoconf, + autoheader, + aclocal, + automake, + gettextize, and + libtoolize in the + correct order to save time when changes are made to + autoconf and + automake template + files +

+
+

+ autoscan +

+
+

+ Helps to create a configure.in file for a software + package; it examines the source files in a + directory tree, searching them for common + portability issues, and creates a configure.scan file that serves + as a preliminary configure.in file for the package +

+
+

+ autoupdate +

+
+

+ Modifies a configure.in file that still + calls autoconf macros + by their old names to use the current macro names +

+
+

+ ifnames +

+
+

+ Helps when writing configure.in files for a software + package; it prints the identifiers that the package + uses in C preprocessor conditionals [If a package + has already been set up to have some portability, + this program can help determine what configure needs + to check for. It can also fill in gaps in a + configure.in file + generated by autoscan.] +

+
+
+
+
+
+
+
+

+ 8.47. Automake-1.18.1 +

+
+
+
+
+
+

+ The Automake package contains programs for generating + Makefiles for use with Autoconf. +

+
+
+
+ Approximate build time: + less than 0.1 SBU (about 1.1 SBU + with tests) +
+
+ Required disk space: + 123 MB +
+
+
+
+
+

+ 8.47.1. Installation of Automake +

+

+ Prepare Automake for compilation: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.18.1
+

+ Compile the package: +

+
make
+

+ 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: +

+
make -j$(($(nproc)>4?$(nproc):4)) check
+

+ Replace $((...)) + with the number of logical cores you want to use if you don't + want to use all. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.47.2. Contents of Automake +

+
+
+
+ Installed programs: + aclocal, aclocal-1.18 (hard linked + with aclocal), automake, and automake-1.18 (hard linked + with automake) +
+
+ Installed directories: + /usr/share/aclocal-1.18, + /usr/share/automake-1.18, and + /usr/share/doc/automake-1.18.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ aclocal +

+
+

+ Generates aclocal.m4 + files based on the contents of configure.in files +

+
+

+ aclocal-1.18 +

+
+

+ A hard link to aclocal +

+
+

+ automake +

+
+

+ A tool for automatically generating Makefile.in files from + Makefile.am files [To + create all the Makefile.in files for a package, + run this program in the top-level directory. By + scanning the configure.in file, it + automatically finds each appropriate Makefile.am file and generates + the corresponding Makefile.in file.] +

+
+

+ automake-1.18 +

+
+

+ A hard link to automake +

+
+
+
+
+
+
+
+

+ 8.48. OpenSSL-3.5.2 +

+
+
+
+
+
+

+ 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). +

+
+
+
+ Approximate build time: + 1.9 SBU +
+
+ Required disk space: + 1.1 GB +
+
+
+
+
+

+ 8.48.1. Installation of OpenSSL +

+

+ Prepare OpenSSL for compilation: +

+
./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=lib          \
+         shared                \
+         zlib-dynamic
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
HARNESS_JOBS=$(nproc) make test
+

+ 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. +

+

+ Install the package: +

+
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
+make MANSUFFIX=ssl install
+

+ Add the version to the documentation directory name, to be + consistent with other packages: +

+
mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.5.2
+

+ If desired, install some additional documentation: +

+
cp -vfr doc/* /usr/share/doc/openssl-3.5.2
+
+

+ Note +

+

+ You should update OpenSSL when a new version which fixes + vulnerabilities is announced. Since OpenSSL 3.0.0, the + OpenSSL versioning scheme follows the MAJOR.MINOR.PATCH + format. API/ABI compatibility is guaranteed for the same + MAJOR version number. Because LFS installs only the shared + libraries, there is no need to recompile packages which + link to libcrypto.so or + libssl.so when upgrading to a version with the same + MAJOR version number. +

+

+ However, any running programs linked to those libraries + need to be stopped and restarted. Read the related entries + in Section 8.2.1, “Upgrade + Issues” for details. +

+
+
+
+

+ 8.48.2. + Contents of OpenSSL +

+
+
+
+ Installed programs: + c_rehash and openssl +
+
+ Installed libraries: + libcrypto.so and libssl.so +
+
+ Installed directories: + /etc/ssl, /usr/include/openssl, + /usr/lib/engines and /usr/share/doc/openssl-3.5.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ c_rehash +

+
+

+ is a Perl script + that scans all files in a directory and adds + symbolic links to their hash values. Use of + c_rehash is + considered obsolete and should be replaced by + openssl + rehash command +

+
+

+ openssl +

+
+

+ is a command-line tool for using the various + cryptography functions of OpenSSL's crypto library from + the shell. It can be used for various functions + which are documented in openssl(1) +

+
+

+ libcrypto.so +

+
+

+ implements a wide range of cryptographic algorithms + used in various Internet standards. The services + provided by this library are used by the + OpenSSL + implementations of SSL, TLS and S/MIME, and they + have also been used to implement OpenSSH, OpenPGP, and other + cryptographic standards +

+
+

+ libssl.so +

+
+

+ implements the Transport Layer Security (TLS v1) + protocol. It provides a rich API, documentation on + which can be found in ssl(7) +

+
+
+
+
+
+
+
+

+ 8.49. Libelf from + Elfutils-0.193 +

+
+
+
+
+
+

+ Libelf is a library for handling ELF (Executable and Linkable + Format) files. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 156 MB +
+
+
+
+
+

+ 8.49.1. Installation of Libelf +

+

+ Libelf is part of the elfutils-0.193 package. Use the + elfutils-0.193.tar.bz2 file as the source tarball. +

+

+ Prepare Libelf for compilation: +

+
./configure --prefix=/usr        \
+            --disable-debuginfod \
+            --enable-libdebuginfod=dummy
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Two tests are known to fail, dwarf_srclang_check and + run-backtrace-native-core.sh. +

+

+ Install only Libelf: +

+
make -C libelf install
+install -vm644 config/libelf.pc /usr/lib/pkgconfig
+rm /usr/lib/libelf.a
+
+
+

+ 8.49.2. Contents of Libelf +

+
+
+
+ Installed library: + libelf.so +
+
+ Installed directory: + /usr/include/elfutils +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libelf.so +

+
+

+ Contains API functions to handle ELF object files +

+
+
+
+
+
+
+
+

+ 8.50. Libffi-3.5.2 +

+
+
+
+
+
+

+ 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. +

+

+ FFI stands for Foreign Function Interface. An FFI allows a + program written in one language to call a program written in + another language. Specifically, Libffi can provide a bridge + between an interpreter like Perl, or Python, and shared + library subroutines written in C, or C++. +

+
+
+
+ Approximate build time: + 1.7 SBU +
+
+ Required disk space: + 10 MB +
+
+
+
+
+

+ 8.50.1. Installation of Libffi +

+
+

+ Note +

+

+ Like GMP, Libffi builds with optimizations specific to the + processor in use. If building for another system, change + the value of the --with-gcc-arch= parameter in + the following command to an architecture name fully + implemented by both the host CPU and the + CPU on that system. If this is not done, all applications + that link to libffi will + trigger Illegal Operation Errors. If you cannot figure out + a value safe for both the CPUs, replace the parameter with + --without-gcc-arch to produce a + generic library. +

+
+

+ Prepare Libffi for compilation: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-gcc-arch=native
+
+

+ The meaning of the configure option: +

+
+
+ --with-gcc-arch=native +
+
+

+ Ensure GCC optimizes for the current system. 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 + system, use the less capable system as a parameter. For + details about alternative system types, see + the x86 options in the GCC manual. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.50.2. + Contents of Libffi +

+
+
+
+ Installed library: + libffi.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libffi +

+
+

+ Contains the foreign function interface API + functions +

+
+
+
+
+
+
+
+

+ 8.51. Python-3.13.7 +

+
+
+
+
+
+

+ The Python 3 package contains the Python development + environment. It is useful for object-oriented programming, + writing scripts, prototyping large programs, and developing + entire applications. Python is an interpreted computer + language. +

+
+
+
+ Approximate build time: + 2.0 SBU +
+
+ Required disk space: + 453 MB +
+
+
+
+
+

+ 8.51.1. Installation of Python 3 +

+

+ Prepare Python for compilation: +

+
./configure --prefix=/usr          \
+            --enable-shared        \
+            --with-system-expat    \
+            --enable-optimizations \
+            --without-static-libpython
+
+

+ The meaning of the configure options: +

+
+
+ --with-system-expat +
+
+

+ This switch enables linking against the system version + of Expat. +

+
+
+ --enable-optimizations +
+
+

+ This switch enables extensive, but time-consuming, + optimization steps. The interpreter is built twice; + tests performed on the first build are used to improve + the optimized final version. +

+
+
+
+

+ Compile the package: +

+
make
+

+ 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: +

+
make test TESTOPTS="--timeout 120"
+

+ 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. +

+

+ Install the package: +

+
make install
+

+ 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. +

+

+ 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. +

+

+ 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: +

+
cat > /etc/pip.conf << EOF
+[global]
+root-user-action = ignore
+disable-pip-version-check = true
+EOF
+
+
+

+ Important +

+

+ In LFS and BLFS we normally build and install Python + modules with the pip3 command. Please be + sure that the pip3 + install commands in both books are run as + the root user (unless it's + for a Python virtual environment). Running pip3 install as a + non-root user may seem to + work, but it will cause the installed module to be + inaccessible by other users. +

+

+ pip3 install + will not reinstall an already installed module + automatically. When using the pip3 install command to + upgrade a module (for example, from meson-0.61.3 to + meson-0.62.0), insert the option --upgrade into the command + line. If it's really necessary to downgrade a module, or + reinstall the same version for some reason, insert + --force-reinstall + --no-deps into the command line. +

+
+

+ If desired, install the preformatted documentation: +

+
install -v -dm755 /usr/share/doc/python-3.13.7/html
+
+tar --strip-components=1  \
+    --no-same-owner       \
+    --no-same-permissions \
+    -C /usr/share/doc/python-3.13.7/html \
+    -xvf ../python-3.13.7-docs-html.tar.bz2
+
+

+ The meaning of the documentation install + commands: +

+
+
+ --no-same-owner and --no-same-permissions +
+
+

+ Ensure the installed files have the correct ownership + and permissions. Without these options, tar will install the package files + with the upstream creator's values. +

+
+
+
+
+
+

+ 8.51.2. + Contents of Python 3 +

+
+
+
+ Installed programs: + 2to3, idle3, pip3, pydoc3, python3, + and python3-config +
+
+ Installed library: + libpython3.13.so and + libpython3.so +
+
+ Installed directories: + /usr/include/python3.13, + /usr/lib/python3, and /usr/share/doc/python-3.13.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ 2to3 +

+
+

+ is a Python + program that reads Python + 2.x source code and applies a series of + fixes to transform it into valid Python 3.x code +

+
+

+ idle3 +

+
+

+ is a wrapper script that opens a Python aware GUI editor. For + this script to run, you must have installed + Tk before Python, + so that the Tkinter Python module is built. +

+
+

+ pip3 +

+
+

+ The package installer for Python. You can use pip + to install packages from Python Package Index and + other indexes. +

+
+

+ pydoc3 +

+
+

+ is the Python + documentation tool +

+
+

+ python3 +

+
+

+ is the interpreter for Python, an interpreted, + interactive, object-oriented programming language +

+
+
+
+
+
+
+
+

+ 8.52. Flit-Core-3.12.0 +

+
+
+
+
+
+

+ Flit-core is the distribution-building parts of Flit (a + packaging tool for simple Python modules). +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 1.3 MB +
+
+
+
+
+

+ 8.52.1. Installation of Flit-Core +

+

+ Build the package: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Install the package: +

+
pip3 install --no-index --find-links dist flit_core
+
+

+ The meaning of the pip3 configuration options and + commands: +

+
+
+ wheel +
+
+

+ This command builds the wheel archive for this package. +

+
+
+ -w + dist +
+
+

+ Instructs pip to put the created wheel into the + dist directory. +

+
+
+ --no-cache-dir +
+
+

+ Prevents pip from copying the created wheel into the + /root/.cache/pip + directory. +

+
+
+ install +
+
+

+ This command installs the package. +

+
+
+ --no-build-isolation, + --no-deps, and + --no-index +
+
+

+ These options prevent fetching files from the online + package repository (PyPI). If packages are installed in + the correct order, pip won't need to fetch any files in + the first place; these options add some safety in case + of user error. +

+
+
+ --find-links dist +
+
+

+ Instructs pip to search for wheel archives in the + dist directory. +

+
+
+
+
+
+

+ 8.52.2. Contents of Flit-Core +

+
+
+
+ Installed directory: + /usr/lib/python3.13/site-packages/flit_core and + /usr/lib/python3.13/site-packages/flit_core-3.12.0.dist-info +
+
+
+
+
+
+
+
+

+ 8.53. Packaging-25.0 +

+
+
+
+
+
+

+ The packaging module is a Python library that provides + utilities that implement the interoperability specifications + which have clearly one correct behaviour (PEP440) or benefit + greatly from having a single shared implementation (PEP425). + This includes utilities for version handling, specifiers, + markers, tags, and requirements. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 3.3 MB +
+
+
+
+
+

+ 8.53.1. Installation of Packaging +

+

+ Compile packaging with the following command: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Install packaging with the following command: +

+
pip3 install --no-index --find-links dist packaging
+
+
+

+ 8.53.2. Contents of Packaging +

+
+
+
+ Installed directories: + /usr/lib/python3.13/site-packages/packaging and + /usr/lib/python3.13/site-packages/packaging-25.0.dist-info +
+
+
+
+
+
+
+
+

+ 8.54. Wheel-0.46.1 +

+
+
+
+
+
+

+ Wheel is a Python library that is the reference + implementation of the Python wheel packaging standard. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 608 KB +
+
+
+
+
+

+ 8.54.1. Installation of Wheel +

+

+ Compile Wheel with the following command: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Install Wheel with the following command: +

+
pip3 install --no-index --find-links dist wheel
+
+
+

+ 8.54.2. + Contents of Wheel +

+
+
+
+ Installed program: + wheel +
+
+ Installed directories: + /usr/lib/python3.13/site-packages/wheel and + /usr/lib/python3.13/site-packages/wheel-0.46.1.dist-info +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ wheel +

+
+

+ is a utility to unpack, pack, or convert wheel + archives +

+
+
+
+
+
+
+
+

+ 8.55. Setuptools-80.9.0 +

+
+
+
+
+
+

+ Setuptools is a tool used to download, build, install, + upgrade, and uninstall Python packages. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 25 MB +
+
+
+
+
+

+ 8.55.1. Installation of Setuptools +

+

+ Build the package: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Install the package: +

+
pip3 install --no-index --find-links dist setuptools
+
+
+

+ 8.55.2. Contents of Setuptools +

+
+
+
+ Installed directory: + /usr/lib/python3.13/site-packages/_distutils_hack, + /usr/lib/python3.13/site-packages/pkg_resources, + /usr/lib/python3.13/site-packages/setuptools, and + /usr/lib/python3.13/site-packages/setuptools-80.9.0.dist-info +
+
+
+
+
+
+
+
+

+ 8.56. Ninja-1.13.1 +

+
+
+
+
+
+

+ Ninja is a small build system with a focus on speed. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 43 MB +
+
+
+
+
+

+ 8.56.1. Installation of Ninja +

+

+ When run, ninja + 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 ninja is invoked from the + command line, passing the -jN parameter will limit the number + of parallel processes. Some packages embed the execution of + ninja, and do + not pass the -j parameter on to it. +

+

+ Using the optional + procedure below allows a user to limit the number of parallel + processes via an environment variable, NINJAJOBS. + For example, + setting: +

+
export NINJAJOBS=4
+

+ will limit ninja to four parallel + processes. +

+

+ If desired, make ninja recognize the + environment variable NINJAJOBS by running the stream editor: +

+
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
+

+ Build Ninja with: +

+
python3 configure.py --bootstrap --verbose
+
+

+ The meaning of the build option: +

+
+
+ --bootstrap +
+
+

+ This parameter forces Ninja to rebuild itself for the + current system. +

+
+
+ --verbose +
+
+

+ This parameter makes configure.py show the + progress building Ninja. +

+
+
+
+

+ The package tests cannot run in the chroot environment. They + require + cmake. But the basic function of this package is already + tested by rebuilding itself (with the --bootstrap option) anyway. +

+

+ Install the package: +

+
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
+
+
+

+ 8.56.2. + Contents of Ninja +

+
+
+
+ Installed programs: + ninja +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ ninja +

+
+

+ is the Ninja build system +

+
+
+
+
+
+
+
+

+ 8.57. Meson-1.8.3 +

+
+
+
+
+
+

+ Meson is an open source build system designed to be both + extremely fast and as user friendly as possible. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 45 MB +
+
+
+
+
+

+ 8.57.1. Installation of Meson +

+

+ Compile Meson with the following command: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ The test suite requires some packages outside the scope of + LFS. +

+

+ Install the package: +

+
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
+
+

+ The meaning of the install parameters: +

+
+
+ -w + dist +
+
+

+ Puts the created wheels into the dist directory. +

+
+
+ --find-links dist +
+
+

+ Installs wheels from the dist directory. +

+
+
+
+
+
+

+ 8.57.2. + Contents of Meson +

+
+
+
+ Installed programs: + meson +
+
+ Installed directory: + /usr/lib/python3.13/site-packages/meson-1.8.3.dist-info + and /usr/lib/python3.13/site-packages/mesonbuild +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ meson +

+
+

+ A high productivity build system +

+
+
+
+
+
+
+
+

+ 8.58. Kmod-34.2 +

+
+
+
+
+
+

+ The Kmod package contains libraries and utilities for loading + kernel modules +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.7 MB +
+
+
+
+
+

+ 8.58.1. Installation of Kmod +

+

+ Prepare Kmod for compilation: +

+
mkdir -p build
+cd       build
+
+meson setup --prefix=/usr ..    \
+            --buildtype=release \
+            -D manpages=false
+
+

+ The meaning of the configure options: +

+
+
+ -D + manpages=false +
+
+

+ This option disables generating the man pages which + requires an external program. +

+
+
+
+

+ Compile the package: +

+
ninja
+

+ The test suite of this package requires raw kernel headers + (not the “sanitized” kernel headers installed + earlier), which are beyond the scope of LFS. +

+

+ Now install the package: +

+
ninja install
+
+
+

+ 8.58.2. + Contents of Kmod +

+
+
+
+ Installed programs: + depmod (link to kmod), insmod (link + to kmod), kmod, lsmod (link to kmod), modinfo (link to + kmod), modprobe (link to kmod), and rmmod (link to + kmod) +
+
+ Installed library: + libkmod.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ depmod +

+
+

+ Creates a dependency file based on the symbols it + finds in the existing set of modules; this + dependency file is used by modprobe to + automatically load the required modules +

+
+

+ insmod +

+
+

+ Installs a loadable module in the running kernel +

+
+

+ kmod +

+
+

+ Loads and unloads kernel modules +

+
+

+ lsmod +

+
+

+ Lists currently loaded modules +

+
+

+ modinfo +

+
+

+ Examines an object file associated with a kernel + module and displays any information that it can + glean +

+
+

+ modprobe +

+
+

+ Uses a dependency file, created by depmod, to + automatically load relevant modules +

+
+

+ rmmod +

+
+

+ Unloads modules from the running kernel +

+
+

+ libkmod +

+
+

+ This library is used by other programs to load and + unload kernel modules +

+
+
+
+
+
+
+
+

+ 8.59. Coreutils-9.7 +

+
+
+
+
+
+

+ The Coreutils package contains the basic utility programs + needed by every operating system. +

+
+
+
+ Approximate build time: + 1.2 SBU +
+
+ Required disk space: + 180 MB +
+
+
+
+
+

+ 8.59.1. Installation of Coreutils +

+

+ First, apply a patch for a security problem identified + upstream: +

+
patch -Np1 -i ../coreutils-9.7-upstream_fix-1.patch
+

+ 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 ../coreutils-9.7-i18n-1.patch
+
+

+ Note +

+

+ 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. +

+
+

+ Now prepare Coreutils for compilation: +

+
autoreconf -fv
+automake -af
+FORCE_UNSAFE_CONFIGURE=1 ./configure \
+            --prefix=/usr            \
+            --enable-no-install-program=kill,uptime
+
+

+ The meaning of the commands and configure + options: +

+
+
+ autoreconf -fv +
+
+

+ The patch for internationalization has modified the + build system, so the configuration files must be + regenerated. Normally we would use the -i option to update the + standard auxiliary files, but for this package it does + not work because configure.ac specified an old gettext + version. +

+
+
+ automake + -af +
+
+

+ The automake auxiliary files were not updated by + autoreconf due to the + missing -i + option. This command updates them to prevent a build + failure. +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ This environment variable allows the package to be + built by the root user. +

+
+
+ --enable-no-install-program=kill,uptime +
+
+

+ The purpose of this switch is to prevent Coreutils from + installing programs that will be installed by other + packages. +

+
+
+
+

+ Compile the package: +

+
make
+

+ Skip down to “Install + the package” if not running the test suite. +

+

+ Now the test suite is ready to be run. First, run the tests + that are meant to be run as user root: +

+
make NON_ROOT_USERNAME=tester check-root
+

+ We're going to run the remainder of the tests as the + tester 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 tester a part + of it: +

+
groupadd -g 102 dummy -U tester
+

+ Fix some of the permissions so that the non-root user can compile and run the tests: +

+
chown -R tester . 
+

+ Now run the tests (using /dev/null 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): +

+
su tester -c "PATH=$PATH make -k RUN_EXPENSIVE_TESTS=yes check" \
+   < /dev/null
+

+ Remove the temporary group: +

+
groupdel dummy
+

+ Install the package: +

+
make install
+

+ Move programs to the locations specified by the FHS: +

+
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
+
+
+

+ 8.59.2. Contents of Coreutils +

+
+
+
+ Installed programs: + [, b2sum, base32, base64, basename, + basenc, cat, chcon, chgrp, chmod, chown, chroot, cksum, + comm, cp, csplit, cut, date, dd, df, dir, dircolors, + dirname, du, echo, env, expand, expr, factor, false, fmt, + fold, groups, head, hostid, id, install, join, link, ln, + logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, + nice, nl, nohup, nproc, numfmt, od, paste, pathchk, + pinky, pr, printenv, printf, ptx, pwd, readlink, + realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, + sha256sum, sha384sum, sha512sum, shred, shuf, sleep, + sort, split, stat, stdbuf, stty, sum, sync, tac, tail, + tee, test, timeout, touch, tr, true, truncate, tsort, + tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, + whoami, and yes +
+
+ Installed library: + libstdbuf.so (in + /usr/libexec/coreutils) +
+
+ Installed directory: + /usr/libexec/coreutils +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ [ +

+
+

+ Is an actual command, /usr/bin/[; it is a synonym + for the test command +

+
+

+ base32 +

+
+

+ Encodes and decodes data according to the base32 + specification (RFC 4648) +

+
+

+ base64 +

+
+

+ Encodes and decodes data according to the base64 + specification (RFC 4648) +

+
+

+ b2sum +

+
+

+ Prints or checks BLAKE2 (512-bit) checksums +

+
+

+ basename +

+
+

+ Strips any path and a given suffix from a file name +

+
+

+ basenc +

+
+

+ Encodes or decodes data using various algorithms +

+
+

+ cat +

+
+

+ Concatenates files to standard output +

+
+

+ chcon +

+
+

+ Changes security context for files and directories +

+
+

+ chgrp +

+
+

+ Changes the group ownership of files and + directories +

+
+

+ chmod +

+
+

+ Changes the permissions of each file to the given + mode; the mode can be either a symbolic + representation of the changes to be made, or an + octal number representing the new permissions +

+
+

+ chown +

+
+

+ Changes the user and/or group ownership of files + and directories +

+
+

+ chroot +

+
+

+ Runs a command with the specified directory as the + / directory +

+
+

+ cksum +

+
+

+ Prints the Cyclic Redundancy Check (CRC) checksum + and the byte counts of each specified file +

+
+

+ comm +

+
+

+ Compares two sorted files, outputting in three + columns the lines that are unique and the lines + that are common +

+
+

+ cp +

+
+

+ Copies files +

+
+

+ csplit +

+
+

+ Splits a given file into several new files, + separating them according to given patterns or line + numbers, and outputting the byte count of each new + file +

+
+

+ cut +

+
+

+ Prints sections of lines, selecting the parts + according to given fields or positions +

+
+

+ date +

+
+

+ Displays the current date and time in the given + format, or sets the system date and time +

+
+

+ dd +

+
+

+ Copies a file using the given block size and count, + while optionally performing conversions on it +

+
+

+ df +

+
+

+ Reports the amount of disk space available (and + used) on all mounted file systems, or only on the + file systems holding the selected files +

+
+

+ dir +

+
+

+ Lists the contents of each given directory (the + same as the ls command) +

+
+

+ dircolors +

+
+

+ Outputs commands to set the LS_COLOR environment variable to + change the color scheme used by ls +

+
+

+ dirname +

+
+

+ Extracts the directory portion(s) of the given + name(s) +

+
+

+ du +

+
+

+ Reports the amount of disk space used by the + current directory, by each of the given directories + (including all subdirectories) or by each of the + given files +

+
+

+ echo +

+
+

+ Displays the given strings +

+
+

+ env +

+
+

+ Runs a command in a modified environment +

+
+

+ expand +

+
+

+ Converts tabs to spaces +

+
+

+ expr +

+
+

+ Evaluates expressions +

+
+

+ factor +

+
+

+ Prints the prime factors of the specified integers +

+
+

+ false +

+
+

+ Does nothing, unsuccessfully; it always exits with + a status code indicating failure +

+
+

+ fmt +

+
+

+ Reformats the paragraphs in the given files +

+
+

+ fold +

+
+

+ Wraps the lines in the given files +

+
+

+ groups +

+
+

+ Reports a user's group memberships +

+
+

+ head +

+
+

+ Prints the first ten lines (or the given number of + lines) of each given file +

+
+

+ hostid +

+
+

+ Reports the numeric identifier (in hexadecimal) of + the host +

+
+

+ id +

+
+

+ Reports the effective user ID, group ID, and group + memberships of the current user or specified user +

+
+

+ install +

+
+

+ Copies files while setting their permission modes + and, if possible, their owner and group +

+
+

+ join +

+
+

+ Joins the lines that have identical join fields + from two separate files +

+
+

+ link +

+
+

+ Creates a hard link (with the given name) to a file +

+
+

+ ln +

+
+

+ Makes hard links or soft (symbolic) links between + files +

+
+

+ logname +

+
+

+ Reports the current user's login name +

+
+

+ ls +

+
+

+ Lists the contents of each given directory +

+
+

+ md5sum +

+
+

+ Reports or checks Message Digest 5 (MD5) checksums +

+
+

+ mkdir +

+
+

+ Creates directories with the given names +

+
+

+ mkfifo +

+
+

+ Creates First-In, First-Outs (FIFOs), "named pipes" + in UNIX parlance, with the given names +

+
+

+ mknod +

+
+

+ Creates device nodes with the given names; a device + node is a character special file, a block special + file, or a FIFO +

+
+

+ mktemp +

+
+

+ Creates temporary files in a secure manner; it is + used in scripts +

+
+

+ mv +

+
+

+ Moves or renames files or directories +

+
+

+ nice +

+
+

+ Runs a program with modified scheduling priority +

+
+

+ nl +

+
+

+ Numbers the lines from the given files +

+
+

+ nohup +

+
+

+ Runs a command immune to hangups, with its output + redirected to a log file +

+
+

+ nproc +

+
+

+ Prints the number of processing units available to + a process +

+
+

+ numfmt +

+
+

+ Converts numbers to or from human-readable strings +

+
+

+ od +

+
+

+ Dumps files in octal and other formats +

+
+

+ paste +

+
+

+ Merges the given files, joining sequentially + corresponding lines side by side, separated by tab + characters +

+
+

+ pathchk +

+
+

+ Checks if file names are valid or portable +

+
+

+ pinky +

+
+

+ Is a lightweight finger client; it reports some + information about the given users +

+
+

+ pr +

+
+

+ Paginates and columnates files for printing +

+
+

+ printenv +

+
+

+ Prints the environment +

+
+

+ printf +

+
+

+ Prints the given arguments according to the given + format, much like the C printf function +

+
+

+ ptx +

+
+

+ Produces a permuted index from the contents of the + given files, with each keyword in its context +

+
+

+ pwd +

+
+

+ Reports the name of the current working directory +

+
+

+ readlink +

+
+

+ Reports the value of the given symbolic link +

+
+

+ realpath +

+
+

+ Prints the resolved path +

+
+

+ rm +

+
+

+ Removes files or directories +

+
+

+ rmdir +

+
+

+ Removes directories if they are empty +

+
+

+ runcon +

+
+

+ Runs a command with specified security context +

+
+

+ seq +

+
+

+ Prints a sequence of numbers within a given range + and with a given increment +

+
+

+ sha1sum +

+
+

+ Prints or checks 160-bit Secure Hash Algorithm 1 + (SHA1) checksums +

+
+

+ sha224sum +

+
+

+ Prints or checks 224-bit Secure Hash Algorithm + checksums +

+
+

+ sha256sum +

+
+

+ Prints or checks 256-bit Secure Hash Algorithm + checksums +

+
+

+ sha384sum +

+
+

+ Prints or checks 384-bit Secure Hash Algorithm + checksums +

+
+

+ sha512sum +

+
+

+ Prints or checks 512-bit Secure Hash Algorithm + checksums +

+
+

+ shred +

+
+

+ Overwrites the given files repeatedly with complex + patterns, making it difficult to recover the data +

+
+

+ shuf +

+
+

+ Shuffles lines of text +

+
+

+ sleep +

+
+

+ Pauses for the given amount of time +

+
+

+ sort +

+
+

+ Sorts the lines from the given files +

+
+

+ split +

+
+

+ Splits the given file into pieces, by size or by + number of lines +

+
+

+ stat +

+
+

+ Displays file or filesystem status +

+
+

+ stdbuf +

+
+

+ Runs commands with altered buffering operations for + its standard streams +

+
+

+ stty +

+
+

+ Sets or reports terminal line settings +

+
+

+ sum +

+
+

+ Prints checksum and block counts for each given + file +

+
+

+ sync +

+
+

+ Flushes file system buffers; it forces changed + blocks to disk and updates the super block +

+
+

+ tac +

+
+

+ Concatenates the given files in reverse +

+
+

+ tail +

+
+

+ Prints the last ten lines (or the given number of + lines) of each given file +

+
+

+ tee +

+
+

+ Reads from standard input while writing both to + standard output and to the given files +

+
+

+ test +

+
+

+ Compares values and checks file types +

+
+

+ timeout +

+
+

+ Runs a command with a time limit +

+
+

+ touch +

+
+

+ Changes file timestamps, setting the access and + modification times of the given files to the + current time; files that do not exist are created + with zero length +

+
+

+ tr +

+
+

+ Translates, squeezes, and deletes the given + characters from standard input +

+
+

+ true +

+
+

+ Does nothing, successfully; it always exits with a + status code indicating success +

+
+

+ truncate +

+
+

+ Shrinks or expands a file to the specified size +

+
+

+ tsort +

+
+

+ Performs a topological sort; it writes a completely + ordered list according to the partial ordering in a + given file +

+
+

+ tty +

+
+

+ Reports the file name of the terminal connected to + standard input +

+
+

+ uname +

+
+

+ Reports system information +

+
+

+ unexpand +

+
+

+ Converts spaces to tabs +

+
+

+ uniq +

+
+

+ Discards all but one of successive identical lines +

+
+

+ unlink +

+
+

+ Removes the given file +

+
+

+ users +

+
+

+ Reports the names of the users currently logged on +

+
+

+ vdir +

+
+

+ Is the same as ls + -l +

+
+

+ wc +

+
+

+ Reports the number of lines, words, and bytes for + each given file, as well as grand totals when more + than one file is given +

+
+

+ who +

+
+

+ Reports who is logged on +

+
+

+ whoami +

+
+

+ Reports the user name associated with the current + effective user ID +

+
+

+ yes +

+
+

+ Repeatedly outputs y + or a given string, until killed +

+
+

+ libstdbuf +

+
+

+ Library used by stdbuf +

+
+
+
+
+
+
+
+

+ 8.60. Diffutils-3.12 +

+
+
+
+
+
+

+ The Diffutils package contains programs that show the + differences between files or directories. +

+
+
+
+ Approximate build time: + 0.5 SBU +
+
+ Required disk space: + 51 MB +
+
+
+
+
+

+ 8.60.1. Installation of Diffutils +

+

+ Prepare Diffutils for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.60.2. Contents of Diffutils +

+
+
+
+ Installed programs: + cmp, diff, diff3, and sdiff +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ cmp +

+
+

+ Compares two files and reports any differences byte + by byte +

+
+

+ diff +

+
+

+ Compares two files or directories and reports which + lines in the files differ +

+
+

+ diff3 +

+
+

+ Compares three files line by line +

+
+

+ sdiff +

+
+

+ Merges two files and interactively outputs the + results +

+
+
+
+
+
+
+
+

+ 8.61. Gawk-5.3.2 +

+
+
+
+
+
+

+ The Gawk package contains programs for manipulating text + files. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 45 MB +
+
+
+
+
+

+ 8.61.1. Installation of Gawk +

+

+ First, ensure some unneeded files are not installed: +

+
sed -i 's/extras//' Makefile.in
+

+ Prepare Gawk for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Install the package: +

+
rm -f /usr/bin/gawk-5.3.2
+make install
+
+

+ The meaning of the command: +

+
+
+ rm -f + /usr/bin/gawk-5.3.2 +
+
+

+ The building system will not recreate the hard link + gawk-5.3.2 if it already + exists. Remove it to ensure that the previous hard link + installed in Section 6.9, + “Gawk-5.3.2” is updated here. +

+
+
+
+

+ The installation process already created awk as a symlink to + gawk, create + its man page as a symlink as well: +

+
ln -sv gawk.1 /usr/share/man/man1/awk.1
+

+ If desired, install the documentation: +

+
install -vDm644 doc/{awkforai.txt,*.{eps,pdf,jpg}} -t /usr/share/doc/gawk-5.3.2
+
+
+

+ 8.61.2. + Contents of Gawk +

+
+
+
+ Installed programs: + awk (link to gawk), gawk, and + gawk-5.3.2 +
+
+ Installed libraries: + filefuncs.so, fnmatch.so, fork.so, + inplace.so, intdiv.so, ordchr.so, readdir.so, + readfile.so, revoutput.so, revtwoway.so, rwarray.so, and + time.so (all in /usr/lib/gawk) +
+
+ Installed directories: + /usr/lib/gawk, /usr/libexec/awk, + /usr/share/awk, and /usr/share/doc/gawk-5.3.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ awk +

+
+

+ A link to gawk +

+
+

+ gawk +

+
+

+ A program for manipulating text files; it is the + GNU implementation of awk +

+
+

+ gawk-5.3.2 +

+
+

+ A hard link to gawk +

+
+
+
+
+
+
+
+

+ 8.62. Findutils-4.10.0 +

+
+
+
+
+
+

+ The Findutils package contains programs to find files. + Programs are provided to search through all the files in a + directory tree and to create, maintain, and search a database + (often faster than the recursive find, but unreliable unless + the database has been updated recently). Findutils also + supplies the xargs program, which can be + used to run a specified command on each file selected by a + search. +

+
+
+
+ Approximate build time: + 0.7 SBU +
+
+ Required disk space: + 61 MB +
+
+
+
+
+

+ 8.62.1. Installation of Findutils +

+

+ Prepare Findutils for compilation: +

+
./configure --prefix=/usr --localstatedir=/var/lib/locate
+
+

+ The meaning of the configure options: +

+
+
+ --localstatedir +
+
+

+ This option moves the locate database to + /var/lib/locate, which is + the FHS-compliant location. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Install the package: +

+
make install
+
+
+

+ 8.62.2. Contents of Findutils +

+
+
+
+ Installed programs: + find, locate, updatedb, and + xargs +
+
+ Installed directory: + /var/lib/locate +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ find +

+
+

+ Searches given directory trees for files matching + the specified criteria +

+
+

+ locate +

+
+

+ Searches through a database of file names and + reports the names that contain a given string or + match a given pattern +

+
+

+ updatedb +

+
+

+ Updates the locate database; + it scans the entire file system (including other + file systems that are currently mounted, unless + told not to) and puts every file name it finds into + the database +

+
+

+ xargs +

+
+

+ Can be used to apply a given command to a list of + files +

+
+
+
+
+
+
+
+

+ 8.63. Groff-1.23.0 +

+
+
+
+
+
+

+ The Groff package contains programs for processing and + formatting text and images. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 108 MB +
+
+
+
+
+

+ 8.63.1. Installation of Groff +

+

+ 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. +

+

+ Prepare Groff for compilation: +

+
PAGE=<paper_size> ./configure --prefix=/usr
+

+ Build the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.63.2. + Contents of Groff +

+
+
+
+ Installed programs: + addftinfo, afmtodit, chem, eqn, + eqn2graph, gdiffmk, glilypond, gperl, gpinyin, + grap2graph, grn, grodvi, groff, groffer, grog, grolbp, + grolj4, gropdf, grops, grotty, hpftodit, indxbib, lkbib, + lookbib, mmroff, neqn, nroff, pdfmom, pdfroff, pfbtops, + pic, pic2graph, post-grohtml, preconv, pre-grohtml, + refer, roff2dvi, roff2html, roff2pdf, roff2ps, roff2text, + roff2x, soelim, tbl, tfmtodit, and troff +
+
+ Installed directories: + /usr/lib/groff and + /usr/share/doc/groff-1.23.0, /usr/share/groff +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addftinfo +

+
+

+ Reads a troff font file and adds some additional + font-metric information that is used by the + groff + system +

+
+

+ afmtodit +

+
+

+ Creates a font file for use with groff and + grops +

+
+

+ chem +

+
+

+ Groff preprocessor for producing chemical structure + diagrams +

+
+

+ eqn +

+
+

+ Compiles descriptions of equations embedded within + troff input files into commands that are understood + by troff +

+
+

+ eqn2graph +

+
+

+ Converts a troff EQN (equation) into a cropped + image +

+
+

+ gdiffmk +

+
+

+ Marks differences between groff/nroff/troff files +

+
+

+ glilypond +

+
+

+ Transforms sheet music written in the lilypond + language into the groff language +

+
+

+ gperl +

+
+

+ Preprocessor for groff, allowing the insertion of + perl code into groff files +

+
+

+ gpinyin +

+
+

+ Preprocessor for groff, allowing the insertion of + Pinyin (Mandarin Chinese spelled with the Roman + alphabet) into groff files. +

+
+

+ grap2graph +

+
+

+ Converts a grap program file into a cropped bitmap + image (grap is an old Unix programming language for + creating diagrams) +

+
+

+ grn +

+
+

+ A groff + preprocessor for gremlin files +

+
+

+ grodvi +

+
+

+ A driver for groff that + produces TeX dvi format output files +

+
+

+ groff +

+
+

+ A front end to the groff document formatting + system; normally, it runs the troff program and + a post-processor appropriate for the selected + device +

+
+

+ groffer +

+
+

+ Displays groff files and man pages on X and tty + terminals +

+
+

+ grog +

+
+

+ Reads files and guesses which of the groff options + -e, -man, -me, -mm, -ms, -p, -s, + and -t are required for + printing files, and reports the groff command + including those options +

+
+

+ grolbp +

+
+

+ Is a groff driver for + Canon CAPSL printers (LBP-4 and LBP-8 series laser + printers) +

+
+

+ grolj4 +

+
+

+ Is a driver for groff that + produces output in PCL5 format suitable for an HP + LaserJet 4 printer +

+
+

+ gropdf +

+
+

+ Translates the output of GNU troff to PDF +

+
+

+ grops +

+
+

+ Translates the output of GNU troff to + PostScript +

+
+

+ grotty +

+
+

+ Translates the output of GNU troff into a form + suitable for typewriter-like devices +

+
+

+ hpftodit +

+
+

+ Creates a font file for use with groff -Tlj4 from + an HP-tagged font metric file +

+
+

+ indxbib +

+
+

+ Creates an inverted index for the bibliographic + databases with a specified file for use with + refer, + lookbib, and + lkbib +

+
+

+ lkbib +

+
+

+ Searches bibliographic databases for references + that contain specified keys and reports any + references found +

+
+

+ lookbib +

+
+

+ Prints a prompt on the standard error (unless the + standard input is not a terminal), reads a line + containing a set of keywords from the standard + input, searches the bibliographic databases in a + specified file for references containing those + keywords, prints any references found on the + standard output, and repeats this process until the + end of input +

+
+

+ mmroff +

+
+

+ A simple preprocessor for groff +

+
+

+ neqn +

+
+

+ Formats equations for American Standard Code for + Information Interchange (ASCII) output +

+
+

+ nroff +

+
+

+ A script that emulates the nroff command + using groff +

+
+

+ pdfmom +

+
+

+ Is a wrapper around groff that facilitates the + production of PDF documents from files formatted + with the mom macros. +

+
+

+ pdfroff +

+
+

+ Creates pdf documents using groff +

+
+

+ pfbtops +

+
+

+ Translates a PostScript font in .pfb format to ASCII +

+
+

+ pic +

+
+

+ Compiles descriptions of pictures embedded within + troff or TeX input files into commands understood + by TeX or troff +

+
+

+ pic2graph +

+
+

+ Converts a PIC diagram into a cropped image +

+
+

+ post-grohtml +

+
+

+ Translates the output of GNU troff to HTML +

+
+

+ preconv +

+
+

+ Converts encoding of input files to something GNU + troff + understands +

+
+

+ pre-grohtml +

+
+

+ Translates the output of GNU troff to HTML +

+
+

+ refer +

+
+

+ Copies the contents of a file to the standard + output, except that lines between .[ and .] are interpreted as + citations, and lines between .R1 and .R2 are interpreted as + commands for how citations are to be processed +

+
+

+ roff2dvi +

+
+

+ Transforms roff files into DVI format +

+
+

+ roff2html +

+
+

+ Transforms roff files into HTML format +

+
+

+ roff2pdf +

+
+

+ Transforms roff files into PDFs +

+
+

+ roff2ps +

+
+

+ Transforms roff files into ps files +

+
+

+ roff2text +

+
+

+ Transforms roff files into text files +

+
+

+ roff2x +

+
+

+ Transforms roff files into other formats +

+
+

+ soelim +

+
+

+ Reads files and replaces lines of the form + .so file by + the contents of the mentioned file +

+
+

+ tbl +

+
+

+ Compiles descriptions of tables embedded within + troff input files into commands that are understood + by troff +

+
+

+ tfmtodit +

+
+

+ Creates a font file for use with groff -Tdvi +

+
+

+ troff +

+
+

+ Is highly compatible with Unix troff; it should + usually be invoked using the groff command, + which will also run preprocessors and + post-processors in the appropriate order and with + the appropriate options +

+
+
+
+
+
+
+
+

+ 8.64. GRUB-2.12 +

+
+
+
+
+
+

+ The GRUB package contains the GRand Unified Bootloader. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 166 MB +
+
+
+
+
+

+ 8.64.1. Installation of GRUB +

+
+

+ Note +

+

+ 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 + + the BLFS page. 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). +

+
+
+

+ Warning +

+

+ Unset any environment variables which may affect the build: +

+
unset {C,CPP,CXX,LD}FLAGS
+

+ Don't try “tuning” this package with custom + compilation flags. This package is a bootloader. The + low-level operations in the source code may be broken by + aggressive optimization. +

+
+

+ Add a file missing from the release tarball: +

+
echo depends bli part_gpt > grub-core/extra_deps.lst
+

+ Prepare GRUB for compilation: +

+
./configure --prefix=/usr     \
+            --sysconfdir=/etc \
+            --disable-efiemu  \
+            --disable-werror
+
+

+ The meaning of the new configure options: +

+
+
+ --disable-werror +
+
+

+ This allows the build to complete with warnings + introduced by more recent versions of Flex. +

+
+
+ --disable-efiemu +
+
+

+ This option minimizes what is built by disabling a + feature and eliminating some test programs not needed + for LFS. +

+
+
+
+

+ Compile the package: +

+
make
+

+ 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 + make check. +

+

+ Install the package, and move the Bash completion support + file to the location recommended by the Bash completion + maintainers: +

+
make install
+mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
+

+ Making your LFS system bootable with GRUB will be discussed + in Section 10.4, + “Using GRUB to Set Up the Boot Process.” +

+
+
+

+ 8.64.2. + Contents of GRUB +

+
+
+
+ Installed programs: + grub-bios-setup, grub-editenv, + grub-file, grub-fstest, grub-glue-efi, grub-install, + grub-kbdcomp, grub-macbless, grub-menulst2cfg, + grub-mkconfig, 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-set-default, grub-sparc64-setup, + and grub-syslinux2cfg +
+
+ Installed directories: + /usr/lib/grub, /etc/grub.d, + /usr/share/grub, and /boot/grub (when grub-install is + first run) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ grub-bios-setup +

+
+

+ Is a helper program for grub-install +

+
+

+ grub-editenv +

+
+

+ Is a tool to edit the environment block +

+
+

+ grub-file +

+
+

+ Checks to see if the given file is of the specified + type +

+
+

+ grub-fstest +

+
+

+ Is a tool to debug the file system driver +

+
+

+ grub-glue-efi +

+
+

+ Glues 32-bit and 64-bit binaries into a single file + (for Apple machines) +

+
+

+ grub-install +

+
+

+ Installs GRUB on your drive +

+
+

+ grub-kbdcomp +

+
+

+ Is a script that converts an xkb layout into one + recognized by GRUB +

+
+

+ grub-macbless +

+
+

+ Is the Mac-style bless for HFS or HFS+ file systems + (bless is peculiar + to Apple machines; it makes a device bootable) +

+
+

+ grub-menulst2cfg +

+
+

+ Converts a GRUB Legacy menu.lst into a grub.cfg for use with GRUB 2 +

+
+

+ grub-mkconfig +

+
+

+ Generates a grub.cfg + file +

+
+

+ grub-mkimage +

+
+

+ Makes a bootable image of GRUB +

+
+

+ grub-mklayout +

+
+

+ Generates a GRUB keyboard layout file +

+
+

+ grub-mknetdir +

+
+

+ Prepares a GRUB netboot directory +

+
+

+ grub-mkpasswd-pbkdf2 +

+
+

+ Generates an encrypted PBKDF2 password for use in + the boot menu +

+
+

+ grub-mkrelpath +

+
+

+ Makes a system pathname relative to its root +

+
+

+ grub-mkrescue +

+
+

+ Makes a bootable image of GRUB suitable for a + floppy disk, CDROM/DVD, or a USB drive +

+
+

+ grub-mkstandalone +

+
+

+ Generates a standalone image +

+
+

+ grub-ofpathname +

+
+

+ Is a helper program that prints the path to a GRUB + device +

+
+

+ grub-probe +

+
+

+ Probes device information for a given path or + device +

+
+

+ grub-reboot +

+
+

+ Sets the default boot entry for GRUB for the next + boot only +

+
+

+ grub-render-label +

+
+

+ Renders Apple .disk_label for Apple Macs +

+
+

+ grub-script-check +

+
+

+ Checks the GRUB configuration script for syntax + errors +

+
+

+ grub-set-default +

+
+

+ Sets the default boot entry for GRUB +

+
+

+ grub-sparc64-setup +

+
+

+ Is a helper program for grub-setup +

+
+

+ grub-syslinux2cfg +

+
+

+ Transforms a syslinux config file into grub.cfg + format +

+
+
+
+
+
+
+
+

+ 8.65. Gzip-1.14 +

+
+
+
+
+
+

+ The Gzip package contains programs for compressing and + decompressing files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 21 MB +
+
+
+
+
+

+ 8.65.1. Installation of Gzip +

+

+ Prepare Gzip for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.65.2. + Contents of Gzip +

+
+
+
+ Installed programs: + gunzip, gzexe, gzip, uncompress + (hard link with gunzip), zcat, zcmp, zdiff, zegrep, + zfgrep, zforce, zgrep, zless, zmore, and znew +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gunzip +

+
+

+ Decompresses gzipped files +

+
+

+ gzexe +

+
+

+ Creates self-decompressing executable files +

+
+

+ gzip +

+
+

+ Compresses the given files using Lempel-Ziv (LZ77) + coding +

+
+

+ uncompress +

+
+

+ Decompresses compressed files +

+
+

+ zcat +

+
+

+ Decompresses the given gzipped files to standard + output +

+
+

+ zcmp +

+
+

+ Runs cmp on gzipped + files +

+
+

+ zdiff +

+
+

+ Runs diff on gzipped + files +

+
+

+ zegrep +

+
+

+ Runs egrep on gzipped + files +

+
+

+ zfgrep +

+
+

+ Runs fgrep on gzipped + files +

+
+

+ zforce +

+
+

+ Forces a .gz + extension on all given files that are gzipped + files, so that gzip will not + compress them again; this can be useful when file + names were truncated during a file transfer +

+
+

+ zgrep +

+
+

+ Runs grep on gzipped + files +

+
+

+ zless +

+
+

+ Runs less on gzipped + files +

+
+

+ zmore +

+
+

+ Runs more on gzipped + files +

+
+

+ znew +

+
+

+ Re-compresses files from compress format + to gzip + format—.Z to + .gz +

+
+
+
+
+
+
+
+

+ 8.66. IPRoute2-6.16.0 +

+
+
+
+
+
+

+ The IPRoute2 package contains programs for basic and advanced + IPV4-based networking. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 17 MB +
+
+
+
+
+

+ 8.66.1. Installation of IPRoute2 +

+

+ 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
+

+ Compile the package: +

+
make NETNS_RUN_DIR=/run/netns
+

+ This package does not have a working test suite. +

+

+ Install the package: +

+
make SBINDIR=/usr/sbin install
+

+ If desired, install the documentation: +

+
install -vDm644 COPYING README* -t /usr/share/doc/iproute2-6.16.0
+
+
+

+ 8.66.2. Contents of IPRoute2 +

+
+
+
+ Installed programs: + bridge, ctstat (link to lnstat), + genl, ifstat, ip, lnstat, nstat, routel, rtacct, rtmon, + rtpr, rtstat (link to lnstat), ss, and tc +
+
+ Installed directories: + /etc/iproute2, /usr/lib/tc, and + /usr/share/doc/iproute2-6.16.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bridge +

+
+

+ Configures network bridges +

+
+

+ ctstat +

+
+

+ Connection status utility +

+
+

+ genl +

+
+

+ Generic netlink utility front end +

+
+

+ ifstat +

+
+

+ Shows interface statistics, including the number of + packets transmitted and received, by interface +

+
+

+ ip +

+
+

+ The main executable. It has several different + functions, including these: +

+

+ ip link <device> + allows users to look at the state of devices and to + make changes +

+

+ ip + addr allows users to look at + addresses and their properties, add new addresses, + and delete old ones +

+

+ ip + neighbor allows users to look at + neighbor bindings and their properties, add new + neighbor entries, and delete old ones +

+

+ ip + rule allows users to look at the + routing policies and change them +

+

+ ip + route allows users to look at the + routing table and change routing table rules +

+

+ ip + tunnel allows users to look at the + IP tunnels and their properties, and change them +

+

+ ip + maddr allows users to look at the + multicast addresses and their properties, and + change them +

+

+ ip + mroute allows users to set, change, + or delete the multicast routing +

+

+ ip + monitor allows users to + continuously monitor the state of devices, + addresses and routes +

+
+

+ lnstat +

+
+

+ Provides Linux network statistics; it is a + generalized and more feature-complete replacement + for the old rtstat program +

+
+

+ nstat +

+
+

+ Displays network statistics +

+
+

+ routel +

+
+

+ A component of ip + route, for listing the routing + tables +

+
+

+ rtacct +

+
+

+ Displays the contents of /proc/net/rt_acct +

+
+

+ rtmon +

+
+

+ Route monitoring utility +

+
+

+ rtpr +

+
+

+ Converts the output of ip -o into a + readable form +

+
+

+ rtstat +

+
+

+ Route status utility +

+
+

+ ss +

+
+

+ Similar to the netstat command; + shows active connections +

+
+

+ tc +

+
+

+ Traffic control for Quality of Service (QoS) and + Class of Service (CoS) implementations +

+

+ tc + qdisc allows users to set up the + queueing discipline +

+

+ tc + class allows users to set up + classes based on the queueing discipline scheduling +

+

+ tc + filter allows users to set up the + QoS/CoS packet filtering +

+

+ tc + monitor can be used to view changes + made to Traffic Control in the kernel. +

+
+
+
+
+
+
+
+

+ 8.67. Kbd-2.8.0 +

+
+
+
+
+
+

+ The Kbd package contains key-table files, console fonts, and + keyboard utilities. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 43 MB +
+
+
+
+
+

+ 8.67.1. Installation of Kbd +

+

+ 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: +

+
patch -Np1 -i ../kbd-2.8.0-backspace-1.patch
+

+ After patching, the backspace key generates the character + with code 127, and the delete key generates a well-known + escape sequence. +

+

+ Remove the redundant resizecons 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
+

+ Prepare Kbd for compilation: +

+
./configure --prefix=/usr --disable-vlock
+
+

+ The meaning of the configure option: +

+
+
+ --disable-vlock +
+
+

+ This option prevents the vlock utility from being built + because it requires the PAM library, which isn't + available in the chroot environment. +

+
+
+
+

+ Compile the package: +

+
make
+

+ The tests for this package will all fail in the chroot + environment because they require valgrind. In addition on a full system + with valgrind, several tests + still fail in a graphical environment. The tests pass in a + non-graphical environment. +

+

+ Install the package: +

+
make install
+
+

+ Note +

+

+ For some languages (e.g., Belarusian) the Kbd package + doesn't provide a useful keymap where the stock + “by” + keymap assumes the ISO-8859-5 encoding, and the CP1251 + keymap is normally used. Users of such languages have to + download working keymaps separately. +

+
+

+ If desired, install the documentation: +

+
cp -R -v docs/doc -T /usr/share/doc/kbd-2.8.0
+
+
+

+ 8.67.2. Contents + of Kbd +

+
+
+
+ Installed programs: + chvt, deallocvt, dumpkeys, + fgconsole, getkeycodes, kbdinfo, kbd_mode, kbdrate, + loadkeys, loadunimap, mapscrn, openvt, psfaddtable (link + to psfxtable), psfgettable (link to psfxtable), + psfstriptable (link to psfxtable), psfxtable, setfont, + setkeycodes, setleds, setmetamode, setvtrgb, + showconsolefont, showkey, unicode_start, and + unicode_stop +
+
+ Installed directories: + /usr/share/consolefonts, + /usr/share/consoletrans, /usr/share/keymaps, + /usr/share/doc/kbd-2.8.0, and /usr/share/unimaps +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ chvt +

+
+

+ Changes the foreground virtual terminal +

+
+

+ deallocvt +

+
+

+ Deallocates unused virtual terminals +

+
+

+ dumpkeys +

+
+

+ Dumps the keyboard translation tables +

+
+

+ fgconsole +

+
+

+ Prints the number of the active virtual terminal +

+
+

+ getkeycodes +

+
+

+ Prints the kernel scancode-to-keycode mapping table +

+
+

+ kbdinfo +

+
+

+ Obtains information about the status of a console +

+
+

+ kbd_mode +

+
+

+ Reports or sets the keyboard mode +

+
+

+ kbdrate +

+
+

+ Sets the keyboard repeat and delay rates +

+
+

+ loadkeys +

+
+

+ Loads the keyboard translation tables +

+
+

+ loadunimap +

+
+

+ Loads the kernel unicode-to-font mapping table +

+
+

+ mapscrn +

+
+

+ An obsolete program that used to load a + user-defined output character mapping table into + the console driver; this is now done by + setfont +

+
+

+ openvt +

+
+

+ Starts a program on a new virtual terminal (VT) +

+
+

+ psfaddtable +

+
+

+ Adds a Unicode character table to a console font +

+
+

+ psfgettable +

+
+

+ Extracts the embedded Unicode character table from + a console font +

+
+

+ psfstriptable +

+
+

+ Removes the embedded Unicode character table from a + console font +

+
+

+ psfxtable +

+
+

+ Handles Unicode character tables for console fonts +

+
+

+ setfont +

+
+

+ Changes the Enhanced Graphic Adapter (EGA) and + Video Graphics Array (VGA) fonts on the console +

+
+

+ setkeycodes +

+
+

+ Loads kernel scancode-to-keycode mapping table + entries; this is useful if there are unusual keys + on the keyboard +

+
+

+ setleds +

+
+

+ Sets the keyboard flags and Light Emitting Diodes + (LEDs) +

+
+

+ setmetamode +

+
+

+ Defines the keyboard meta-key handling +

+
+

+ setvtrgb +

+
+

+ Sets the console color map in all virtual terminals +

+
+

+ showconsolefont +

+
+

+ Shows the current EGA/VGA console screen font +

+
+

+ showkey +

+
+

+ Reports the scancodes, keycodes, and ASCII codes of + the keys pressed on the keyboard +

+
+

+ unicode_start +

+
+

+ Puts the keyboard and console in UNICODE mode + [Don't use this program unless your keymap file is + in the ISO-8859-1 encoding. For other encodings, + this utility produces incorrect results.] +

+
+

+ unicode_stop +

+
+

+ Reverts keyboard and console from UNICODE mode +

+
+
+
+
+
+
+
+

+ 8.68. Libpipeline-1.5.8 +

+
+
+
+
+
+

+ The Libpipeline package contains a library for manipulating + pipelines of subprocesses in a flexible and convenient way. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 10 MB +
+
+
+
+
+

+ 8.68.1. Installation of Libpipeline +

+

+ Prepare Libpipeline for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ The tests require the Check + library that we've removed from LFS. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.68.2. Contents of Libpipeline +

+
+
+
+ Installed library: + libpipeline.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpipeline +

+
+

+ This library is used to safely construct pipelines + between subprocesses +

+
+
+
+
+
+
+
+

+ 8.69. Make-4.4.1 +

+
+
+
+
+
+

+ The Make package contains a program for controlling the + generation of executables and other non-source files of a + package from source files. +

+
+
+
+ Approximate build time: + 0.7 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 8.69.1. Installation of Make +

+

+ Prepare Make for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Install the package: +

+
make install
+
+
+

+ 8.69.2. + Contents of Make +

+
+
+
+ Installed program: + make +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ make +

+
+

+ Automatically determines which pieces of a package + need to be (re)compiled and then issues the + relevant commands +

+
+
+
+
+
+
+
+

+ 8.70. Patch-2.8 +

+
+
+
+
+
+

+ The Patch package contains a program for modifying or + creating files by applying a “patch” file + typically created by the diff program. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 8.70.1. Installation of Patch +

+

+ Prepare Patch for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.70.2. + Contents of Patch +

+
+
+
+ Installed program: + patch +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ patch +

+
+

+ Modifies files according to a patch file (A patch + file is normally a difference listing created with + the diff program. By + applying these differences to the original files, + patch + creates the patched versions.) +

+
+
+
+
+
+
+
+

+ 8.71. Tar-1.35 +

+
+
+
+
+
+

+ The Tar package provides the ability to create tar archives + as well as perform various other kinds of archive + manipulation. Tar can be used on previously created archives + to extract files, to store additional files, or to update or + list files which were already stored. +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 43 MB +
+
+
+
+
+

+ 8.71.1. Installation of Tar +

+

+ Prepare Tar for compilation: +

+
FORCE_UNSAFE_CONFIGURE=1  \
+./configure --prefix=/usr
+
+

+ The meaning of the configure option: +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ This forces the test for mknod to be run as root. It is generally considered + dangerous to run this test as the root user, but as it is being run + on a system that has only been partially built, + overriding it is OK. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ 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. +

+

+ Install the package: +

+
make install
+make -C doc install-html docdir=/usr/share/doc/tar-1.35
+
+
+

+ 8.71.2. Contents + of Tar +

+
+
+
+ Installed programs: + tar +
+
+ Installed directory: + /usr/share/doc/tar-1.35 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ tar +

+
+

+ Creates, extracts files from, and lists the + contents of archives, also known as tarballs +

+
+
+
+
+
+
+
+

+ 8.72. Texinfo-7.2 +

+
+
+
+
+
+

+ The Texinfo package contains programs for reading, writing, + and converting info pages. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 160 MB +
+
+
+
+
+

+ 8.72.1. Installation of Texinfo +

+

+ Fix a code pattern that causes Perl-5.42 or later to display + a warning: +

+
sed 's/! $output_file eq/$output_file ne/' -i tp/Texinfo/Convert/*.pm
+

+ Prepare Texinfo for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+

+ Optionally, install the components belonging in a TeX + installation: +

+
make TEXMF=/usr/share/texmf install-tex
+
+

+ The meaning of the make parameter: +

+
+
+ TEXMF=/usr/share/texmf +
+
+

+ The TEXMF makefile variable + holds the location of the root of the TeX tree if, for + example, a TeX package will be installed later. +

+
+
+
+

+ The Info documentation system uses a plain text file to hold + its list of menu entries. The file is located at /usr/share/info/dir. 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 /usr/share/info/dir file ever needs to be + recreated, the following optional commands will accomplish + the task: +

+
pushd /usr/share/info
+  rm -v dir
+  for f in *
+    do install-info $f dir 2>/dev/null
+  done
+popd
+
+
+

+ 8.72.2. + Contents of Texinfo +

+
+
+
+ Installed programs: + info, install-info, makeinfo (link + to texi2any), pdftexi2dvi, pod2texi, texi2any, texi2dvi, + texi2pdf, and texindex +
+
+ Installed library: + MiscXS.so, Parsetexi.so, and + XSParagraph.so (all in /usr/lib/texinfo) +
+
+ Installed directories: + /usr/share/texinfo and + /usr/lib/texinfo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ info +

+
+

+ Used to read info pages which are similar to man + pages, but often go much deeper than just + explaining all the available command line options + [For example, compare man bison and + info + bison.] +

+
+

+ install-info +

+
+

+ Used to install info pages; it updates entries in + the info index file +

+
+

+ makeinfo +

+
+

+ Translates the given Texinfo source documents into + info pages, plain text, or HTML +

+
+

+ pdftexi2dvi +

+
+

+ Used to format the given Texinfo document into a + Portable Document Format (PDF) file +

+
+

+ pod2texi +

+
+

+ Converts Pod to Texinfo format +

+
+

+ texi2any +

+
+

+ Translate Texinfo source documentation to various + other formats +

+
+

+ texi2dvi +

+
+

+ Used to format the given Texinfo document into a + device-independent file that can be printed +

+
+

+ texi2pdf +

+
+

+ Used to format the given Texinfo document into a + Portable Document Format (PDF) file +

+
+

+ texindex +

+
+

+ Used to sort Texinfo index files +

+
+
+
+
+
+
+
+

+ 8.73. Vim-9.1.1629 +

+
+
+
+
+
+

+ The Vim package contains a powerful text editor. +

+
+
+
+ Approximate build time: + 3.7 SBU +
+
+ Required disk space: + 259 MB +
+
+
+
+

+ Alternatives to Vim +

+

+ If you prefer another editor—such as Emacs, Joe, or + Nano—please refer to + https://www.linuxfromscratch.org/blfs/view/12.4/postlfs/editors.html + for suggested installation instructions. +

+
+
+
+

+ 8.73.1. Installation of Vim +

+

+ First, change the default location of the vimrc configuration file to /etc: +

+
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
+

+ Prepare Vim for compilation: +

+
./configure --prefix=/usr
+

+ Compile the package: +

+
make
+

+ To prepare the tests, ensure that user tester can write to the source tree and + exclude one file containing tests requiring curl or wget: +

+
chown -R tester .
+sed '/test_plugin_glvs/d' -i src/testdir/Make_all.mak
+

+ Now run the tests as user tester: +

+
su tester -c "TERM=xterm-256color LANG=en_US.UTF-8 make -j1 test" \
+   &> vim-test.log
+

+ 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 above. A successful test + will result in the words ALL + DONE in the log file at completion. +

+

+ Install the package: +

+
make install
+

+ Many users reflexively type vi instead of vim. To allow execution of + vim when users + habitually enter vi, create a symlink for + both the binary and the man page in the provided languages: +

+
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
+

+ By default, Vim's documentation is installed in /usr/share/vim. The following symlink + allows the documentation to be accessed via /usr/share/doc/vim-9.1.1629, making it + consistent with the location of documentation for other + packages: +

+
ln -sv ../vim/vim91/doc /usr/share/doc/vim-9.1.1629
+

+ 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 comes with a GUI version of the editor that requires X + and some additional libraries to be installed. For more + information on this process, refer to the Vim documentation + and the Vim installation page in the BLFS book at + https://www.linuxfromscratch.org/blfs/view/12.4/postlfs/vim.html. +

+
+
+

+ 8.73.2. Configuring Vim +

+

+ By default, vim + runs in vi-incompatible mode. This may be new to users who + have used other editors in the past. The “nocompatible” + setting is included below to highlight the fact that a new + behavior is being used. It also reminds those who would + change to “compatible” 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 vim configuration file by + running the following: +

+
cat > /etc/vimrc << "EOF"
+" 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 (&term == "xterm") || (&term == "putty")
+  set background=dark
+endif
+
+" End /etc/vimrc
+EOF
+

+ The set nocompatible + setting makes vim behave in a more useful + way (the default) than the vi-compatible manner. Remove the + “no” to + keep the old vi + behavior. The set + backspace=2 setting allows backspacing over line + breaks, autoindents, and the start of an insert. The + syntax on parameter + enables vim's syntax highlighting. The set mouse= setting enables + proper pasting of text with the mouse when working in chroot + or over a remote connection. Finally, the if statement with the set background=dark setting + corrects vim's + guess about the background color of some terminal emulators. + This gives the highlighting a better color scheme for use on + the black background of these programs. +

+

+ Documentation for other available options can be obtained by + running the following command: +

+
vim -c ':options'
+
+

+ Note +

+

+ By default, vim only installs spell-checking files for the + English language. To install spell-checking files for your + preferred language, copy the .spl and optionally, the .sug files for your language and + character encoding from runtime/spell into /usr/share/vim/vim91/spell/. +

+

+ To use these spell-checking files, some configuration in + /etc/vimrc is needed, e.g.: +

+
set spelllang=en,ru
+set spell
+

+ For more information, see runtime/spell/README.txt. +

+
+
+
+

+ 8.73.3. Contents + of Vim +

+
+
+
+ Installed programs: + ex (link to vim), rview (link to + vim), rvim (link to vim), vi (link to vim), view (link to + vim), vim, vimdiff (link to vim), vimtutor, and + xxd +
+
+ Installed directory: + /usr/share/vim +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ex +

+
+

+ Starts vim in ex mode +

+
+

+ rview +

+
+

+ Is a restricted version of view; no shell + commands can be started and view cannot be + suspended +

+
+

+ rvim +

+
+

+ Is a restricted version of vim; no shell + commands can be started and vim cannot be + suspended +

+
+

+ vi +

+
+

+ Link to vim +

+
+

+ view +

+
+

+ Starts vim in read-only + mode +

+
+

+ vim +

+
+

+ Is the editor +

+
+

+ vimdiff +

+
+

+ Edits two or three versions of a file with + vim + and shows differences +

+
+

+ vimtutor +

+
+

+ Teaches the basic keys and commands of vim +

+
+

+ xxd +

+
+

+ Creates a hex dump of the given file; it can also + perform the inverse operation, so it can be used + for binary patching +

+
+
+
+
+
+
+
+

+ 8.74. MarkupSafe-3.0.2 +

+
+
+
+
+
+

+ MarkupSafe is a Python module that implements an + XML/HTML/XHTML Markup safe string. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 500 KB +
+
+
+
+
+

+ 8.74.1. Installation of MarkupSafe +

+

+ Compile MarkupSafe with the following command: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
pip3 install --no-index --find-links dist Markupsafe
+
+
+

+ 8.74.2. Contents of MarkupSafe +

+
+
+
+ Installed directory: + /usr/lib/python3.13/site-packages/MarkupSafe-3.0.2.dist-info +
+
+
+
+
+
+
+
+

+ 8.75. Jinja2-3.1.6 +

+
+
+
+
+
+

+ Jinja2 is a Python module that implements a simple pythonic + template language. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 2.6 MB +
+
+
+
+
+

+ 8.75.1. Installation of Jinja2 +

+

+ Build the package: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Install the package: +

+
pip3 install --no-index --find-links dist Jinja2
+
+
+

+ 8.75.2. + Contents of Jinja2 +

+
+
+
+ Installed directory: + /usr/lib/python3.13/site-packages/Jinja2-3.1.6.dist-info +
+
+
+
+
+
+
+
+

+ 8.76. Udev from Systemd-257.8 +

+
+
+
+
+
+

+ The Udev package contains programs for dynamic creation of + device nodes. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 162 MB +
+
+
+
+
+

+ 8.76.1. Installation of Udev +

+

+ Udev is part of the systemd-257.8 package. Use the + systemd-257.8.tar.xz file as the source tarball. +

+

+ 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
+

+ Prepare Udev for compilation: +

+
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
+
+

+ The meaning of the meson options: +

+
+
+ --buildtype=release +
+
+

+ This switch overrides the default buildtype + (“debug”), which produces + unoptimized binaries. +

+
+
+ -D + mode=release +
+
+

+ Disable some features considered experimental by + upstream. +

+
+
+ -D + dev-kvm-mode=0660 +
+
+

+ The default udev rule would allow all users to access + /dev/kvm. The editors + consider it dangerous. This option overrides it. +

+
+
+ -D + link-udev-shared=false +
+
+

+ This option prevents udev from linking to the internal + systemd shared library, libsystemd-shared. This library is + designed to be shared by many Systemd components and + it's too overkill for a udev-only installation. +

+
+
+ -D + logind=false -D vconsole=false +
+
+

+ These options prevent the generation of several udev + rule files belonging to the other Systemd components + that we won't install. +

+
+
+
+

+ 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): +

+
export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
+                      awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
+

+ Only build the components needed for udev: +

+
ninja udevadm systemd-hwdb                                           \
+      $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
+      $(realpath libudev.so --relative-to .)                         \
+      $udev_helpers
+

+ Install the package: +

+
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
+

+ Install some custom rules and support files useful in an LFS + environment: +

+
tar -xvf ../../udev-lfs-20230818.tar.xz
+make -f udev-lfs-20230818/Makefile.lfs install
+

+ Install the man pages: +

+
tar -xf ../../systemd-man-pages-257.8.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*
+

+ Finally, unset the udev_helpers + variable: +

+
unset udev_helpers
+
+
+

+ 8.76.2. Configuring + Udev +

+

+ Information about hardware devices is maintained in the + /etc/udev/hwdb.d and + /usr/lib/udev/hwdb.d + directories. Udev needs that + information to be compiled into a binary database + /etc/udev/hwdb.bin. Create the + initial database: +

+
udev-hwdb update
+

+ This command needs to be run each time the hardware + information is updated. +

+
+
+

+ 8.76.3. + Contents of Udev +

+
+
+
+ Installed programs: + udevadm, udevd (symlink to + udevadm), and udev-hwdb +
+
+ Installed libraries: + libudev.so +
+
+ Installed directories: + /etc/udev and /usr/lib/udev +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ udevadm +

+
+

+ Generic udev administration tool: controls the + udevd daemon, provides info from the Udev database, + monitors uevents, waits for uevents to finish, + tests Udev configuration, and triggers uevents for + a given device +

+
+

+ udevd +

+
+

+ A daemon that listens for uevents on the netlink + socket, creates devices and runs the configured + external programs in response to these uevents +

+
+

+ udev-hwdb +

+
+

+ Updates or queries the hardware database. +

+
+

+ libudev +

+
+

+ A library interface to udev device information +

+
+

+ /etc/udev +

+
+

+ Contains Udev configuration files, device + permissions, and rules for device naming +

+
+
+
+
+
+
+
+

+ 8.77. Man-DB-2.13.1 +

+
+
+
+
+
+

+ The Man-DB package contains programs for finding and viewing + man pages. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 44 MB +
+
+
+
+
+

+ 8.77.1. Installation of Man-DB +

+

+ Prepare Man-DB for compilation: +

+
./configure --prefix=/usr                         \
+            --docdir=/usr/share/doc/man-db-2.13.1 \
+            --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=
+
+

+ The meaning of the configure options: +

+
+
+ --disable-setuid +
+
+

+ This disables making the man program setuid to + user man. +

+
+
+ --enable-cache-owner=bin +
+
+

+ This changes ownership of the system-wide cache files + to user bin. +

+
+
+ --with-... +
+
+

+ These three parameters are used to set some default + programs. lynx is a text-based + web browser (see BLFS for installation instructions), + vgrind + converts program sources to Groff input, and + grap is + useful for typesetting graphs in Groff documents. The + vgrind + and grap + programs are not normally needed for viewing manual + pages. They are not part of LFS or BLFS, but you should + be able to install them yourself after finishing LFS if + you wish to do so. +

+
+
+ --with-systemd... +
+
+

+ These parameters prevent installing unneeded systemd + directories and files. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To test the results, issue: +

+
make check
+

+ Install the package: +

+
make install
+
+
+

+ 8.77.2. Non-English Manual Pages in LFS +

+

+ The following table shows the character set that Man-DB + assumes manual pages installed under /usr/share/man/<ll> will be encoded + with. In addition to this, Man-DB correctly determines if + manual pages installed in that directory are UTF-8 encoded. +

+
+ +

+ Table 8.1. Expected character encoding of + legacy 8-bit manual pages +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Language (code) + + Encoding + + Language (code) + + Encoding +
+ Danish (da) + + ISO-8859-1 + + Croatian (hr) + + ISO-8859-2 +
+ German (de) + + ISO-8859-1 + + Hungarian (hu) + + ISO-8859-2 +
+ English (en) + + ISO-8859-1 + + Japanese (ja) + + EUC-JP +
+ Spanish (es) + + ISO-8859-1 + + Korean (ko) + + EUC-KR +
+ Estonian (et) + + ISO-8859-1 + + Lithuanian (lt) + + ISO-8859-13 +
+ Finnish (fi) + + ISO-8859-1 + + Latvian (lv) + + ISO-8859-13 +
+ French (fr) + + ISO-8859-1 + + Macedonian (mk) + + ISO-8859-5 +
+ Irish (ga) + + ISO-8859-1 + + Polish (pl) + + ISO-8859-2 +
+ Galician (gl) + + ISO-8859-1 + + Romanian (ro) + + ISO-8859-2 +
+ Indonesian (id) + + ISO-8859-1 + + Greek (el) + + ISO-8859-7 +
+ Icelandic (is) + + ISO-8859-1 + + Slovak (sk) + + ISO-8859-2 +
+ Italian (it) + + ISO-8859-1 + + Slovenian (sl) + + ISO-8859-2 +
+ Norwegian Bokmal (nb) + + ISO-8859-1 + + Serbian Latin (sr@latin) + + ISO-8859-2 +
+ Dutch (nl) + + ISO-8859-1 + + Serbian (sr) + + ISO-8859-5 +
+ Norwegian Nynorsk (nn) + + ISO-8859-1 + + Turkish (tr) + + ISO-8859-9 +
+ Norwegian (no) + + ISO-8859-1 + + Ukrainian (uk) + + KOI8-U +
+ Portuguese (pt) + + ISO-8859-1 + + Vietnamese (vi) + + TCVN5712-1 +
+ Swedish (sv) + + ISO-8859-1 + + Simplified Chinese (zh_CN) + + GBK +
+ Belarusian (be) + + CP1251 + + Simplified Chinese, Singapore (zh_SG) + + GBK +
+ Bulgarian (bg) + + CP1251 + + Traditional Chinese, Hong Kong (zh_HK) + + BIG5HKSCS +
+ Czech (cs) + + ISO-8859-2 + + Traditional Chinese (zh_TW) + + BIG5 +
+
+

+
+

+ Note +

+

+ Manual pages in languages not in the list are not + supported. +

+
+
+
+

+ 8.77.3. + Contents of Man-DB +

+
+
+
+ Installed programs: + accessdb, apropos (link to whatis), + catman, lexgrog, man, man-recode, mandb, manpath, and + whatis +
+
+ Installed libraries: + libman.so and libmandb.so (both in + /usr/lib/man-db) +
+
+ Installed directories: + /usr/lib/man-db, + /usr/libexec/man-db, and + /usr/share/doc/man-db-2.13.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ accessdb +

+
+

+ Dumps the whatis database + contents in human-readable form +

+
+

+ apropos +

+
+

+ Searches the whatis database + and displays the short descriptions of system + commands that contain a given string +

+
+

+ catman +

+
+

+ Creates or updates the pre-formatted manual pages +

+
+

+ lexgrog +

+
+

+ Displays one-line summary information about a given + manual page +

+
+

+ man +

+
+

+ Formats and displays the requested manual page +

+
+

+ man-recode +

+
+

+ Converts manual pages to another encoding +

+
+

+ mandb +

+
+

+ Creates or updates the whatis database +

+
+

+ manpath +

+
+

+ Displays the contents of $MANPATH or (if $MANPATH + is not set) a suitable search path based on the + settings in man.conf and the user's environment +

+
+

+ whatis +

+
+

+ Searches the whatis database + and displays the short descriptions of system + commands that contain the given keyword as a + separate word +

+
+

+ libman +

+
+

+ Contains run-time support for man +

+
+

+ libmandb +

+
+

+ Contains run-time support for man +

+
+
+
+
+
+
+
+

+ 8.78. Procps-ng-4.0.5 +

+
+
+
+
+
+

+ The Procps-ng package contains programs for monitoring + processes. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 28 MB +
+
+
+
+
+

+ 8.78.1. Installation of Procps-ng +

+

+ Prepare Procps-ng for compilation: +

+
./configure --prefix=/usr                           \
+            --docdir=/usr/share/doc/procps-ng-4.0.5 \
+            --disable-static                        \
+            --disable-kill                          \
+            --enable-watch8bit
+
+

+ The meaning of the configure option: +

+
+
+ --disable-kill +
+
+

+ This switch disables building the kill command; it will + be installed from the Util-linux package. +

+
+
+ --enable-watch8bit +
+
+

+ This switch enables the ncursesw support for the + watch + command, so it can handle 8-bit characters. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To run the test suite, run: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ 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. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.78.2. + Contents of Procps-ng +

+
+
+
+ Installed programs: + free, pgrep, pidof, pkill, pmap, + ps, pwdx, slabtop, sysctl, tload, top, uptime, vmstat, w, + and watch +
+
+ Installed library: + libproc-2.so +
+
+ Installed directories: + /usr/include/procps and + /usr/share/doc/procps-ng-4.0.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ free +

+
+

+ Reports the amount of free and used memory (both + physical and swap memory) in the system +

+
+

+ pgrep +

+
+

+ Looks up processes based on their name and other + attributes +

+
+

+ pidof +

+
+

+ Reports the PIDs of the given programs +

+
+

+ pkill +

+
+

+ Signals processes based on their name and other + attributes +

+
+

+ pmap +

+
+

+ Reports the memory map of the given process +

+
+

+ ps +

+
+

+ Lists the current running processes +

+
+

+ pwdx +

+
+

+ Reports the current working directory of a process +

+
+

+ slabtop +

+
+

+ Displays detailed kernel slab cache information in + real time +

+
+

+ sysctl +

+
+

+ Modifies kernel parameters at run time +

+
+

+ tload +

+
+

+ Prints a graph of the current system load average +

+
+

+ top +

+
+

+ Displays a list of the most CPU intensive + processes; it provides an ongoing look at processor + activity in real time +

+
+

+ uptime +

+
+

+ Reports how long the system has been running, how + many users are logged on, and the system load + averages +

+
+

+ vmstat +

+
+

+ Reports virtual memory statistics, giving + information about processes, memory, paging, block + Input/Output (IO), traps, and CPU activity +

+
+

+ w +

+
+

+ Shows which users are currently logged on, where, + and since when +

+
+

+ watch +

+
+

+ Runs a given command repeatedly, displaying the + first screen-full of its output; this allows a user + to watch the output change over time +

+
+

+ libproc-2 +

+
+

+ Contains the functions used by most programs in + this package +

+
+
+
+
+
+
+
+

+ 8.79. Util-linux-2.41.1 +

+
+
+
+
+
+

+ The Util-linux package contains miscellaneous utility + programs. Among them are utilities for handling file systems, + consoles, partitions, and messages. +

+
+
+
+ Approximate build time: + 0.5 SBU +
+
+ Required disk space: + 346 MB +
+
+
+
+
+

+ 8.79.1. Installation of Util-linux +

+

+ Prepare Util-linux for compilation: +

+
./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      \
+            --without-systemd     \
+            --without-systemdsystemunitdir        \
+            ADJTIME_PATH=/var/lib/hwclock/adjtime \
+            --docdir=/usr/share/doc/util-linux-2.41.1
+

+ 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. +

+

+ Compile the package: +

+
make
+

+ If desired, create a dummy /etc/fstab file to satisfy two tests and + run the test suite as a non-root user: +

+
+

+ Warning +

+

+ Running the test suite as the root 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: +

+
bash tests/run.sh --srcdir=$PWD --builddir=$PWD
+
+
touch /etc/fstab
+chown -R tester .
+su tester -c "make -k check"
+

+ 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. +

+

+ One test, kill: decode + functions, is known to fail with bash-5.3-rc1 or + newer. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.79.2. Contents of Util-linux +

+
+
+
+ Installed programs: + addpart, agetty, blkdiscard, blkid, + blkzone, blockdev, cal, cfdisk, chcpu, chmem, choom, + chrt, col, colcrt, colrm, column, ctrlaltdel, delpart, + dmesg, eject, fallocate, fdisk, fincore, findfs, findmnt, + flock, fsck, fsck.cramfs, fsck.minix, fsfreeze, fstrim, + getopt, hardlink, hexdump, hwclock, i386 (link to + setarch), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, + kill, last, lastb (link to last), ldattach, linux32 (link + to setarch), linux64 (link to setarch), logger, look, + losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, + lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, + mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, + namei, nsenter, partx, pivot_root, prlimit, readprofile, + rename, renice, resizepart, rev, rfkill, rtcwake, script, + scriptlive, scriptreplay, setarch, setsid, setterm, + sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, + taskset, uclampset, ul, umount, uname26 (link to + setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, + wall, wdctl, whereis, wipefs, x86_64 (link to setarch), + and zramctl +
+
+ Installed libraries: + libblkid.so, libfdisk.so, + libmount.so, libsmartcols.so, and libuuid.so +
+
+ Installed directories: + /usr/include/blkid, + /usr/include/libfdisk, /usr/include/libmount, + /usr/include/libsmartcols, /usr/include/uuid, + /usr/share/doc/util-linux-2.41.1, and + /var/lib/hwclock +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addpart +

+
+

+ Informs the Linux kernel of new partitions +

+
+

+ agetty +

+
+

+ Opens a tty port, prompts for a login name, and + then invokes the login program +

+
+

+ blkdiscard +

+
+

+ Discards sectors on a device +

+
+

+ blkid +

+
+

+ A command line utility to locate and print block + device attributes +

+
+

+ blkzone +

+
+

+ Is used to manage zoned storage block devices +

+
+

+ blockdev +

+
+

+ Allows users to call block device ioctls from the + command line +

+
+

+ cal +

+
+

+ Displays a simple calendar +

+
+

+ cfdisk +

+
+

+ Manipulates the partition table of the given device +

+
+

+ chcpu +

+
+

+ Modifies the state of CPUs +

+
+

+ chmem +

+
+

+ Configures memory +

+
+

+ choom +

+
+

+ Displays and adjusts OOM-killer scores, used to + determine which process to kill first when Linux is + Out Of Memory +

+
+

+ chrt +

+
+

+ Manipulates real-time attributes of a process +

+
+

+ col +

+
+

+ Filters out reverse line feeds +

+
+

+ colcrt +

+
+

+ Filters nroff output for + terminals that lack some capabilities, such as + overstriking and half-lines +

+
+

+ colrm +

+
+

+ Filters out the given columns +

+
+

+ column +

+
+

+ Formats a given file into multiple columns +

+
+

+ ctrlaltdel +

+
+

+ Sets the function of the Ctrl+Alt+Del key + combination to a hard or a soft reset +

+
+

+ delpart +

+
+

+ Asks the Linux kernel to remove a partition +

+
+

+ dmesg +

+
+

+ Dumps the kernel boot messages +

+
+

+ eject +

+
+

+ Ejects removable media +

+
+

+ fallocate +

+
+

+ Preallocates space to a file +

+
+

+ fdisk +

+
+

+ Manipulates the partition table of the given device +

+
+

+ fincore +

+
+

+ Counts pages of file contents in core +

+
+

+ findfs +

+
+

+ Finds a file system, either by label or Universally + Unique Identifier (UUID) +

+
+

+ findmnt +

+
+

+ Is a command line interface to the libmount library + for working with mountinfo, fstab and mtab files +

+
+

+ flock +

+
+

+ Acquires a file lock and then executes a command + with the lock held +

+
+

+ fsck +

+
+

+ Is used to check, and optionally repair, file + systems +

+
+

+ fsck.cramfs +

+
+

+ Performs a consistency check on the Cramfs file + system on the given device +

+
+

+ fsck.minix +

+
+

+ Performs a consistency check on the Minix file + system on the given device +

+
+

+ fsfreeze +

+
+

+ Is a very simple wrapper around FIFREEZE/FITHAW + ioctl kernel driver operations +

+
+

+ fstrim +

+
+

+ Discards unused blocks on a mounted filesystem +

+
+

+ getopt +

+
+

+ Parses options in the given command line +

+
+

+ hardlink +

+
+

+ Consolidates duplicate files by creating hard links +

+
+

+ hexdump +

+
+

+ Dumps the given file in hexadecimal, decimal, + octal, or ascii +

+
+

+ hwclock +

+
+

+ Reads or sets the system's hardware clock, also + called the Real-Time Clock (RTC) or Basic + Input-Output System (BIOS) clock +

+
+

+ i386 +

+
+

+ A symbolic link to setarch +

+
+

+ ionice +

+
+

+ Gets or sets the io scheduling class and priority + for a program +

+
+

+ ipcmk +

+
+

+ Creates various IPC resources +

+
+

+ ipcrm +

+
+

+ Removes the given Inter-Process Communication (IPC) + resource +

+
+

+ ipcs +

+
+

+ Provides IPC status information +

+
+

+ irqtop +

+
+

+ Displays kernel interrupt counter information in + top(1) + style view +

+
+

+ isosize +

+
+

+ Reports the size of an iso9660 file system +

+
+

+ kill +

+
+

+ Sends signals to processes +

+
+

+ last +

+
+

+ Shows which users last logged in (and out), + searching back through the /var/log/wtmp file; it also shows + system boots, shutdowns, and run-level changes +

+
+

+ lastb +

+
+

+ Shows the failed login attempts, as logged in + /var/log/btmp +

+
+

+ ldattach +

+
+

+ Attaches a line discipline to a serial line +

+
+

+ linux32 +

+
+

+ A symbolic link to setarch +

+
+

+ linux64 +

+
+

+ A symbolic link to setarch +

+
+

+ logger +

+
+

+ Enters the given message into the system log +

+
+

+ look +

+
+

+ Displays lines that begin with the given string +

+
+

+ losetup +

+
+

+ Sets up and controls loop devices +

+
+

+ lsblk +

+
+

+ Lists information about all or selected block + devices in a tree-like format +

+
+

+ lscpu +

+
+

+ Prints CPU architecture information +

+
+

+ lsfd +

+
+

+ Displays information about open files; replaces + lsof +

+
+

+ lsipc +

+
+

+ Prints information on IPC facilities currently + employed in the system +

+
+

+ lsirq +

+
+

+ Displays kernel interrupt counter information +

+
+

+ lslocks +

+
+

+ Lists local system locks +

+
+

+ lslogins +

+
+

+ Lists information about users, groups and system + accounts +

+
+

+ lsmem +

+
+

+ Lists the ranges of available memory with their + online status +

+
+

+ lsns +

+
+

+ Lists namespaces +

+
+

+ mcookie +

+
+

+ Generates magic cookies (128-bit random hexadecimal + numbers) for xauth +

+
+

+ mesg +

+
+

+ Controls whether other users can send messages to + the current user's terminal +

+
+

+ mkfs +

+
+

+ Builds a file system on a device (usually a hard + disk partition) +

+
+

+ mkfs.bfs +

+
+

+ Creates a Santa Cruz Operations (SCO) bfs file + system +

+
+

+ mkfs.cramfs +

+
+

+ Creates a cramfs file system +

+
+

+ mkfs.minix +

+
+

+ Creates a Minix file system +

+
+

+ mkswap +

+
+

+ Initializes the given device or file to be used as + a swap area +

+
+

+ more +

+
+

+ A filter for paging through text one screen at a + time +

+
+

+ mount +

+
+

+ Attaches the file system on the given device to a + specified directory in the file-system tree +

+
+

+ mountpoint +

+
+

+ Checks if the directory is a mountpoint +

+
+

+ namei +

+
+

+ Shows the symbolic links in the given paths +

+
+

+ nsenter +

+
+

+ Runs a program with namespaces of other processes +

+
+

+ partx +

+
+

+ Tells the kernel about the presence and numbering + of on-disk partitions +

+
+

+ pivot_root +

+
+

+ Makes the given file system the new root file + system of the current process +

+
+

+ prlimit +

+
+

+ Gets and sets a process's resource limits +

+
+

+ readprofile +

+
+

+ Reads kernel profiling information +

+
+

+ rename +

+
+

+ Renames the given files, replacing a given string + with another +

+
+

+ renice +

+
+

+ Alters the priority of running processes +

+
+

+ resizepart +

+
+

+ Asks the Linux kernel to resize a partition +

+
+

+ rev +

+
+

+ Reverses the lines of a given file +

+
+

+ rfkill +

+
+

+ Tool for enabling and disabling wireless devices +

+
+

+ rtcwake +

+
+

+ Used to enter a system sleep state until the + specified wakeup time +

+
+

+ script +

+
+

+ Makes a typescript of a terminal session +

+
+

+ scriptlive +

+
+

+ Re-runs session typescripts using timing + information +

+
+

+ scriptreplay +

+
+

+ Plays back typescripts using timing information +

+
+

+ setarch +

+
+

+ Changes reported architecture in a new program + environment, and sets personality flags +

+
+

+ setsid +

+
+

+ Runs the given program in a new session +

+
+

+ setterm +

+
+

+ Sets terminal attributes +

+
+

+ sfdisk +

+
+

+ A disk partition table manipulator +

+
+

+ sulogin +

+
+

+ Allows root to log + in; it is normally invoked by init when the + system goes into single user mode +

+
+

+ swaplabel +

+
+

+ Makes changes to the swap area's UUID and label +

+
+

+ swapoff +

+
+

+ Disables devices and files for paging and swapping +

+
+

+ swapon +

+
+

+ Enables devices and files for paging and swapping, + and lists the devices and files currently in use +

+
+

+ switch_root +

+
+

+ Switches to another filesystem as the root of the + mount tree +

+
+

+ taskset +

+
+

+ Retrieves or sets a process's CPU affinity +

+
+

+ uclampset +

+
+

+ Manipulates the utilization clamping attributes of + the system or a process +

+
+

+ ul +

+
+

+ A filter for translating underscores into escape + sequences indicating underlining for the terminal + in use +

+
+

+ umount +

+
+

+ Disconnects a file system from the system's file + tree +

+
+

+ uname26 +

+
+

+ A symbolic link to setarch +

+
+

+ unshare +

+
+

+ Runs a program with some namespaces unshared from + parent +

+
+

+ utmpdump +

+
+

+ Displays the content of the given login file in a + user-friendly format +

+
+

+ uuidd +

+
+

+ A daemon used by the UUID library to generate + time-based UUIDs in a secure and guaranteed-unique + fashion +

+
+

+ uuidgen +

+
+

+ Creates new UUIDs. Each new UUID is a random number + likely to be unique among all UUIDs created, on the + local system and on other systems, in the past and + in the future, with extremely high probability + (2128 UUIDs are possible) +

+
+

+ uuidparse +

+
+

+ A utility to parse unique identifiers +

+
+

+ wall +

+
+

+ Displays the contents of a file or, by default, its + standard input, on the terminals of all currently + logged in users +

+
+

+ wdctl +

+
+

+ Shows hardware watchdog status +

+
+

+ whereis +

+
+

+ Reports the location of the binary, source, and man + page files for the given command +

+
+

+ wipefs +

+
+

+ Wipes a filesystem signature from a device +

+
+

+ x86_64 +

+
+

+ A symbolic link to setarch +

+
+

+ zramctl +

+
+

+ A program to set up and control zram (compressed + ram disk) devices +

+
+

+ libblkid +

+
+

+ Contains routines for device identification and + token extraction +

+
+

+ libfdisk +

+
+

+ Contains routines for manipulating partition tables +

+
+

+ libmount +

+
+

+ Contains routines for block device mounting and + unmounting +

+
+

+ libsmartcols +

+
+

+ Contains routines for aiding screen output in + tabular form +

+
+

+ libuuid +

+
+

+ Contains routines for generating unique identifiers + for objects that may be accessible beyond the local + system +

+
+
+
+
+
+
+
+

+ 8.80. E2fsprogs-1.47.3 +

+
+
+
+
+
+

+ The E2fsprogs package contains the utilities for handling the + ext2 file system. It also + supports the ext3 and + ext4 journaling file systems. +

+
+
+
+ Approximate build time: + 2.4 SBU on a spinning disk, 0.5 SBU + on an SSD +
+
+ Required disk space: + 100 MB +
+
+
+
+
+

+ 8.80.1. Installation of E2fsprogs +

+

+ The E2fsprogs documentation recommends that the package be + built in a subdirectory of the source tree: +

+
mkdir -v build
+cd       build
+

+ Prepare E2fsprogs for compilation: +

+
../configure --prefix=/usr       \
+             --sysconfdir=/etc   \
+             --enable-elf-shlibs \
+             --disable-libblkid  \
+             --disable-libuuid   \
+             --disable-uuidd     \
+             --disable-fsck
+
+

+ The meaning of the configure options: +

+
+
+ --enable-elf-shlibs +
+
+

+ This creates the shared libraries which some programs + in this package use. +

+
+
+ --disable-* +
+
+

+ These prevent building and installing the libuuid and libblkid libraries, the + uuidd daemon, and the + fsck + wrapper; util-linux installs more recent versions. +

+
+
+
+

+ Compile the package: +

+
make
+

+ To run the tests, issue: +

+
make check
+

+ 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. +

+

+ Install the package: +

+
make install
+

+ Remove useless static libraries: +

+
rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
+

+ This package installs a gzipped .info file but doesn't update the + system-wide dir file. Unzip + this file and then update the system dir file using the following commands: +

+
gunzip -v /usr/share/info/libext2fs.info.gz
+install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
+

+ If desired, create and install some additional documentation + by issuing the following commands: +

+
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
+
+
+

+ 8.80.2. + Configuring E2fsprogs +

+

+ /etc/mke2fs.conf contains the + default value of various command line options of mke2fs. You may edit the + file to make the default values suitable for your needs. For + example, some utilities (not in LFS or BLFS) cannot recognize + a ext4 file system with + metadata_csum_seed feature + enabled. If you + need such a utility, you may remove the feature from the + default ext4 feature list + with the command: +

+
sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf
+

+ Read the man page mke2fs.conf(5) + for details. +

+
+
+

+ 8.80.3. Contents of E2fsprogs +

+
+
+
+ Installed programs: + badblocks, chattr, compile_et, + debugfs, dumpe2fs, e2freefrag, e2fsck, e2image, e2label, + e2mmpstatus, e2scrub, e2scrub_all, e2undo, e4crypt, + e4defrag, filefrag, fsck.ext2, fsck.ext3, fsck.ext4, + logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, + mkfs.ext4, mklost+found, resize2fs, and tune2fs +
+
+ Installed libraries: + libcom_err.so, libe2p.so, + libext2fs.so, and libss.so +
+
+ Installed directories: + /usr/include/e2p, /usr/include/et, + /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, + /usr/share/et, and /usr/share/ss +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ badblocks +

+
+

+ Searches a device (usually a disk partition) for + bad blocks +

+
+

+ chattr +

+
+

+ Changes the attributes of files on ext{234} file systems +

+
+

+ compile_et +

+
+

+ An error table compiler; it converts a table of + error-code names and messages into a C source file + suitable for use with the com_err library +

+
+

+ debugfs +

+
+

+ A file system debugger; it can be used to examine + and change the state of ext{234} file systems +

+
+

+ dumpe2fs +

+
+

+ Prints the super block and blocks group information + for the file system present on a given device +

+
+

+ e2freefrag +

+
+

+ Reports free space fragmentation information +

+
+

+ e2fsck +

+
+

+ Is used to check and optionally repair ext{234} file systems +

+
+

+ e2image +

+
+

+ Is used to save critical ext{234} file system data to a + file +

+
+

+ e2label +

+
+

+ Displays or changes the file system label on the + ext{234} file + system on a given device +

+
+

+ e2mmpstatus +

+
+

+ Checks MMP (Multiple Mount Protection) status of an + ext4 file system +

+
+

+ e2scrub +

+
+

+ Checks the contents of a mounted ext{234} file system +

+
+

+ e2scrub_all +

+
+

+ Checks all mounted ext{234} file systems for + errors +

+
+

+ e2undo +

+
+

+ Replays the undo log for an ext{234} file system found on a + device. [This can be used to undo a failed + operation by an E2fsprogs program.] +

+
+

+ e4crypt +

+
+

+ Ext4 file system + encryption utility +

+
+

+ e4defrag +

+
+

+ Online defragmenter for ext4 file systems +

+
+

+ filefrag +

+
+

+ Reports on how badly fragmented a particular file + might be +

+
+

+ fsck.ext2 +

+
+

+ By default checks ext2 file systems and is a hard + link to e2fsck +

+
+

+ fsck.ext3 +

+
+

+ By default checks ext3 file systems and is a hard + link to e2fsck +

+
+

+ fsck.ext4 +

+
+

+ By default checks ext4 file systems and is a hard + link to e2fsck +

+
+

+ logsave +

+
+

+ Saves the output of a command in a log file +

+
+

+ lsattr +

+
+

+ Lists the attributes of files on a second extended + file system +

+
+

+ mk_cmds +

+
+

+ Converts a table of command names and help messages + into a C source file suitable for use with the + libss subsystem + library +

+
+

+ mke2fs +

+
+

+ Creates an ext{234} + file system on the given device +

+
+

+ mkfs.ext2 +

+
+

+ By default creates ext2 file systems and is a hard + link to mke2fs +

+
+

+ mkfs.ext3 +

+
+

+ By default creates ext3 file systems and is a hard + link to mke2fs +

+
+

+ mkfs.ext4 +

+
+

+ By default creates ext4 file systems and is a hard + link to mke2fs +

+
+

+ mklost+found +

+
+

+ Creates a lost+found + directory on an ext{234} file system; it + pre-allocates disk blocks to this directory to + lighten the task of e2fsck +

+
+

+ resize2fs +

+
+

+ Can be used to enlarge or shrink ext{234} file systems +

+
+

+ tune2fs +

+
+

+ Adjusts tunable file system parameters on + ext{234} file + systems +

+
+

+ libcom_err +

+
+

+ The common error display routine +

+
+

+ libe2p +

+
+

+ Used by dumpe2fs, + chattr, and + lsattr +

+
+

+ libext2fs +

+
+

+ Contains routines to enable user-level programs to + manipulate ext{234} + file systems +

+
+

+ libss +

+
+

+ Used by debugfs +

+
+
+
+
+
+
+
+

+ 8.81. Sysklogd-2.7.2 +

+
+
+
+
+
+

+ The Sysklogd package contains programs for logging system + messages, such as those emitted by the kernel when unusual + things happen. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 3.9 MB +
+
+
+
+
+

+ 8.81.1. Installation of Sysklogd +

+

+ Prepare the package for compilation: +

+
./configure --prefix=/usr      \
+            --sysconfdir=/etc  \
+            --runstatedir=/run \
+            --without-logger   \
+            --disable-static   \
+            --docdir=/usr/share/doc/sysklogd-2.7.2
+

+ Compile the package: +

+
make
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.81.2. + Configuring Sysklogd +

+

+ Create a new /etc/syslog.conf + file by running the following: +

+
cat > /etc/syslog.conf << "EOF"
+# Begin /etc/syslog.conf
+
+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 *
+
+# Do not open any internet ports.
+secure_mode 2
+
+# End /etc/syslog.conf
+EOF
+
+
+

+ 8.81.3. Contents of Sysklogd +

+
+
+
+ Installed program: + syslogd +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ syslogd +

+
+

+ Logs the messages that system programs offer for + logging [Every logged message contains at least a + date stamp and a hostname, and normally the + program's name too, but that depends on how + trusting the logging daemon is told to be.] +

+
+
+
+
+
+
+
+

+ 8.82. SysVinit-3.14 +

+
+
+
+
+
+

+ The SysVinit package contains programs for controlling the + startup, running, and shutdown of the system. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 3.9 MB +
+
+
+
+
+

+ 8.82.1. Installation of SysVinit +

+

+ First, apply a patch that removes several programs installed + by other packages, clarifies a message, and fixes a compiler + warning: +

+
patch -Np1 -i ../sysvinit-3.14-consolidated-1.patch
+

+ Compile the package: +

+
make
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
make install
+
+
+

+ 8.82.2. Contents of SysVinit +

+
+
+
+ Installed programs: + bootlogd, fstab-decode, halt, init, + killall5, poweroff (link to halt), reboot (link to halt), + runlevel, shutdown, and telinit (link to init) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bootlogd +

+
+

+ Logs boot messages to a log file +

+
+

+ fstab-decode +

+
+

+ Runs a command with fstab-encoded arguments +

+
+

+ halt +

+
+

+ Normally invokes shutdown with the + -h option, + but when already in run-level 0, it tells the + kernel to halt the system; it notes in the file + /var/log/wtmp that + the system is going down +

+
+

+ init +

+
+

+ The first process to be started when the kernel has + initialized the hardware; it takes over the boot + process and starts all the processes specified in + its configuration file +

+
+

+ killall5 +

+
+

+ Sends a signal to all processes, except the + processes in its own session; it will not kill its + parent shell +

+
+

+ poweroff +

+
+

+ Tells the kernel to halt the system and switch off + the computer (see halt) +

+
+

+ reboot +

+
+

+ Tells the kernel to reboot the system (see + halt) +

+
+

+ runlevel +

+
+

+ Reports the previous and the current run-level, as + noted in the last run-level record in /run/utmp +

+
+

+ shutdown +

+
+

+ Brings the system down in a secure way, signaling + all processes and notifying all logged-in users +

+
+

+ telinit +

+
+

+ Tells init which + run-level to change to +

+
+
+
+
+
+
+
+

+ 8.83. About Debugging + Symbols +

+
+
+
+
+

+ Most programs and libraries are, by default, compiled with + debugging symbols included (with gcc's -g option). This means that when + debugging a program or library that was compiled with debugging + information, the debugger can provide not only memory + addresses, but also the names of the routines and variables. +

+

+ The inclusion of these debugging symbols enlarges a program or + library significantly. Here are two examples of the amount of + space these symbols occupy: +

+
+
    +
  • +

    + A bash + binary with debugging symbols: 1200 KB +

    +
  • +
  • +

    + A bash + binary without debugging symbols: 480 KB (60% smaller) +

    +
  • +
  • +

    + Glibc and GCC files (/lib + and /usr/lib) with + debugging symbols: 87 MB +

    +
  • +
  • +

    + Glibc and GCC files without debugging symbols: 16 MB (82% + smaller) +

    +
  • +
+
+

+ Sizes will vary depending on which compiler and C library were + used, but a program that has been stripped of debugging symbols + is usually some 50% to 80% smaller than its unstripped + counterpart. Because most users will never use a debugger on + their system software, a lot of disk space can be regained by + removing these symbols. The next section shows how to strip all + debugging symbols from the programs and libraries. +

+
+
+
+
+

+ 8.84. Stripping +

+
+
+
+
+

+ This section is optional. If the intended user is not a + programmer and does not plan to do any debugging of the system + software, the system's size can be decreased by some 2 GB by + removing the debugging symbols, and some unnecessary symbol + table entries, from binaries and libraries. This causes no real + inconvenience for a typical Linux user. +

+

+ Most people who use the commands mentioned below do not + experience any difficulties. However, it is easy to make a + mistake and render the new system unusable. So before running + the strip + commands, it is a good idea to make a backup of the LFS system + in its current state. +

+

+ A strip command + with the --strip-unneeded option removes + all debug symbols from a binary or library. It also removes all + symbol table entries not normally needed by the linker (for + static libraries) or dynamic linker (for dynamically linked + binaries and shared libraries). Using --strip-debug does not remove + symbol table entries that may be needed by some applications. + The difference between unneeded + and debug is very small. For + example, an unstripped libc.a is + 22.4 MB. After stripping with --strip-debug it is 5.9 MB. Using + --strip-unneeded only + reduces the size further to 5.8 MB. +

+

+ The debugging symbols from selected libraries are compressed + with Zstd and preserved in + separate files. That debugging information is needed to run + regression tests with + valgrind or + gdb later, in BLFS. +

+

+ Note that strip + will overwrite the binary or library file it is processing. + This can crash the processes using code or data from the file. + If the process running strip is affected, the binary + or library being stripped can be destroyed; this can make the + system completely unusable. To avoid this problem we copy some + libraries and binaries into /tmp, + strip them there, then reinstall them with the install command. (The related + entry in Section 8.2.1, “Upgrade + Issues” gives the rationale for using the install command here.) +

+
+

+ Note +

+

+ The ELF loader's name is ld-linux-x86-64.so.2 on 64-bit + systems and ld-linux.so.2 on 32-bit systems. The construct + below selects the correct name for the current architecture, + excluding anything ending with g, in case the commands below have already + been run. +

+
+
+

+ Important +

+

+ If there is any package whose version is different from the + version specified by the book (either following a security + advisory or satisfying personal preference), it may be + necessary to update the library file name in save_usrlib or online_usrlib. Failing to do so may render the system + completely unusable. +

+
+
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g])
+             libc.so.6
+             libthread_db.so.1
+             libquadmath.so.0.0.0
+             libstdc++.so.6.0.34
+             libitm.so.1.0.0
+             libatomic.so.1.2.0"
+
+cd /usr/lib
+
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug --compress-debug-sections=zstd $LIB $LIB.dbg
+    cp $LIB /tmp/$LIB
+    strip --strip-debug /tmp/$LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib
+    rm /tmp/$LIB
+done
+
+online_usrbin="bash find strip"
+online_usrlib="libbfd-2.45.so
+               libsframe.so.2.0.0
+               libhistory.so.8.3
+               libncursesw.so.6.5
+               libm.so.6
+               libreadline.so.8.3
+               libz.so.1.3.1
+               libzstd.so.1.5.7
+               $(cd /usr/lib; find libnss*.so* -type f)"
+
+for BIN in $online_usrbin; do
+    cp /usr/bin/$BIN /tmp/$BIN
+    strip --strip-debug /tmp/$BIN
+    install -vm755 /tmp/$BIN /usr/bin
+    rm /tmp/$BIN
+done
+
+for LIB in $online_usrlib; do
+    cp /usr/lib/$LIB /tmp/$LIB
+    strip --strip-debug /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib
+    rm /tmp/$LIB
+done
+
+for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
+         $(find /usr/lib -type f -name \*.a)                 \
+         $(find /usr/{bin,sbin,libexec} -type f); do
+    case "$online_usrbin $online_usrlib $save_usrlib" in
+        *$(basename $i)* )
+            ;;
+        * ) strip --strip-debug $i
+            ;;
+    esac
+done
+
+unset BIN LIB save_usrlib online_usrbin online_usrlib
+
+

+ A large number of files will be flagged as errors because their + file format is not recognized. These warnings can be safely + ignored. They indicate that those files are scripts, not + binaries. +

+
+
+
+
+

+ 8.85. Cleaning Up +

+
+
+
+
+

+ Finally, clean up some extra files left over from running + tests: +

+
rm -rf /tmp/{*,.*}
+

+ There are also several files in the /usr/lib and /usr/libexec + directories with a file name extension of .la. These are + "libtool archive" files. On a modern Linux system the libtool + .la files are only useful for libltdl. No libraries in LFS are + expected to be loaded by libltdl, and it's known that some .la + files can break BLFS package builds. Remove those files now: +

+
find /usr/lib /usr/libexec -name \*.la -delete
+

+ For more information about libtool archive files, see the + + BLFS section "About Libtool Archive (.la) files". +

+

+ The compiler built in Chapter 6 + and + Chapter 7 is still partially installed and not needed + anymore. Remove it with: +

+
find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
+

+ Finally, remove the temporary 'tester' user account created at + the beginning of the previous chapter. +

+
userdel -r tester
+
+
+
+
+
+

+ [1] The name of a shared library is the + string coded in the DT_SONAME + entry of its ELF dynamic section. You can get it with the + readelf -d <library file> | grep + SONAME command. In most cases it's suffixed + with .so.<a version + number>, but there are some cases where + it contains multiple numbers for versioning (like + libbz2.so.1.0), contains the + version number before the .so + suffix (like libbfd-2.45), or + does not contain any version number at all (for example + libmemusage.so). Generally + there is no correlation between the package version and the + version number(s) in the library name. +

+
+
+
+
+
+
+

+ Chapter 9. System + Configuration +

+
+
+
+
+
+
+
+

+ 9.1. Introduction +

+
+
+
+
+

+ Booting a Linux system involves several tasks. The process must + mount both virtual and real file systems, initialize devices, + check file systems for integrity, mount and activate any swap + partitions or files, set the system clock, bring up networking, + start any daemons required by the system, and accomplish any + other custom tasks specified by the user. This process must be + organized to ensure the tasks are performed in the correct + order and executed as quickly as possible. +

+
+

+ 9.1.1. System V +

+

+ System V is the classic boot process that has been used in + Unix and Unix-like systems such as Linux since about 1983. It + consists of a small program, init, that sets up basic + processes such as login (via getty) and runs + a script. This script, usually named rc, controls the execution + of a set of additional scripts that perform the tasks + required to initialize the system. +

+

+ The init + program is controlled by the /etc/inittab file and is organized into run + levels that can be chosen by the user. In LFS, they are used + as follows: +

+
+

+ 0 — halt
+ 1 — Single user mode
+ 2 — User definable
+ 3 — Full multiuser mode
+ 4 — User definable
+ 5 — Full multiuser mode with display manager
+ + 6 — reboot +

+
+

+ The usual default run level is 3 or 5. +

+

+ Advantages +

+
+
    +
  • +

    + Established, well understood system. +

    +
  • +
  • +

    + Easy to customize. +

    +
  • +
+
+

+ Disadvantages +

+
+
    +
  • +

    + May be slower to boot. A medium speed base LFS system + takes 8-12 seconds where the boot time is measured from + the first kernel message to the login prompt. Network + connectivity is typically established about 2 seconds + after the login prompt. +

    +
  • +
  • +

    + Serial processing of boot tasks. This is related to the + previous point. A delay in any process, such as a file + system check, will delay the entire boot process. +

    +
  • +
  • +

    + Does not directly support advanced features like + control groups (cgroups) and per-user fair share + scheduling. +

    +
  • +
  • +

    + Adding scripts requires manual, static sequencing + decisions. +

    +
  • +
+
+
+
+
+
+
+

+ 9.2. LFS-Bootscripts-20250827 +

+
+
+
+
+
+

+ The LFS-Bootscripts package contains a set of scripts to + start/stop the LFS system at bootup/shutdown. The + configuration files and procedures needed to customize the + boot process are described in the following sections. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 238 KB +
+
+
+
+
+

+ 9.2.1. Installation of LFS-Bootscripts +

+

+ Install the package: +

+
make install
+
+
+

+ 9.2.2. Contents of LFS-Bootscripts +

+
+
+
+ Installed scripts: + checkfs, cleanfs, console, + functions, halt, ifdown, ifup, localnet, modules, + mountfs, mountvirtfs, network, rc, reboot, sendsignals, + setclock, ipv4-static, swap, sysctl, sysklogd, template, + udev, and udev_retry +
+
+ Installed directories: + /etc/rc.d, /etc/init.d (symbolic + link), /etc/sysconfig, /lib/services, /lib/lsb (symbolic + link) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ checkfs +

+
+

+ Checks the integrity of the file systems before + they are mounted (with the exception of journaling + and network-based file systems) +

+
+

+ cleanfs +

+
+

+ Removes files that should not be preserved between + reboots, such as those in /run/ and /var/lock/; it re-creates + /run/utmp and removes + the possibly present /etc/nologin, /fastboot, and /forcefsck files +

+
+

+ console +

+
+

+ Loads the correct keymap table for the desired + keyboard layout; it also sets the screen font +

+
+

+ functions +

+
+

+ Contains common functions, such as error and status + checking, that are used by several bootscripts +

+
+

+ halt +

+
+

+ Halts the system +

+
+

+ ifdown +

+
+

+ Stops a network device +

+
+

+ ifup +

+
+

+ Initializes a network device +

+
+

+ localnet +

+
+

+ Sets up the system's hostname and local loopback + device +

+
+

+ modules +

+
+

+ Loads kernel modules listed in /etc/sysconfig/modules, using + arguments that are also given there +

+
+

+ mountfs +

+
+

+ Mounts all file systems, except those that are + marked noauto, or are network + based +

+
+

+ mountvirtfs +

+
+

+ Mounts virtual kernel file systems, such as + proc +

+
+

+ network +

+
+

+ Sets up network interfaces, such as network cards, + and sets up the default gateway (where applicable) +

+
+

+ rc +

+
+

+ The master run-level control script; it is + responsible for running all the other bootscripts + one-by-one, in a sequence determined by the names + of the symbolic links to those other bootscripts +

+
+

+ reboot +

+
+

+ Reboots the system +

+
+

+ sendsignals +

+
+

+ Makes sure every process is terminated before the + system reboots or halts +

+
+

+ setclock +

+
+

+ Resets the system clock to local time if the + hardware clock is not set to UTC +

+
+

+ ipv4-static +

+
+

+ Provides the functionality needed to assign a + static Internet Protocol (IP) address to a network + interface +

+
+

+ swap +

+
+

+ Enables and disables swap files and partitions +

+
+

+ sysctl +

+
+

+ Loads system configuration values from /etc/sysctl.conf, if that file + exists, into the running kernel +

+
+

+ sysklogd +

+
+

+ Starts and stops the system and kernel log daemons +

+
+

+ template +

+
+

+ A template to create custom bootscripts for other + daemons +

+
+

+ udev +

+
+

+ Prepares the /dev + directory and starts the udev daemon +

+
+

+ udev_retry +

+
+

+ Retries failed udev uevents, and copies generated + rules files from /run/udev to /etc/udev/rules.d if required +

+
+
+
+
+
+
+
+

+ 9.3. Overview of Device and + Module Handling +

+
+
+
+
+

+ In Chapter 8, + we installed the udev daemon when udev was built. Before we go into the details + regarding how udev works, a brief history of previous methods + of handling devices is in order. +

+

+ Linux systems in general traditionally used a static device + creation method, whereby a great many device nodes were created + under /dev (sometimes literally + thousands of nodes), regardless of whether the corresponding + hardware devices actually existed. This was typically done via + a MAKEDEV script, + which contained a number of calls to the mknod program with the + relevant major and minor device numbers for every possible + device that might exist in the world. +

+

+ Using the udev method, device nodes are only created for those + devices which are detected by the kernel. These device nodes + are created each time the system boots; they are stored in a + devtmpfs file system (a virtual + file system that resides entirely in system memory). Device + nodes do not require much space, so the memory that is used is + negligible. +

+
+

+ 9.3.1. History +

+

+ In February 2000, a new filesystem called devfs was merged into the 2.3.46 kernel + and was made available during the 2.4 series of stable + kernels. Although it was present in the kernel source itself, + this method of creating devices dynamically never received + overwhelming support from the core kernel developers. +

+

+ The main problem with the approach adopted by devfs was the way it handled device + detection, creation, and naming. The latter issue, that of + device node naming, was perhaps the most critical. It is + generally accepted that if device names are configurable, the + device naming policy should be chosen by system + administrators, and not imposed on them by the developer(s). + The devfs file system also + suffered from race conditions that were inherent in its + design; these could not be fixed without a substantial + revision of the kernel. devfs + was marked as deprecated for a long time, and was finally + removed from the kernel in June, 2006. +

+

+ With the development of the unstable 2.5 kernel tree, later + released as the 2.6 series of stable kernels, a new virtual + filesystem called sysfs came + to be. The job of sysfs is to + provide information about the system's hardware configuration + to userspace processes. With this userspace-visible + representation, it became possible to develop a userspace + replacement for devfs. +

+
+
+

+ 9.3.2. Udev Implementation +

+
+
+
+
+

+ 9.3.2.1. Sysfs +

+
+
+
+

+ The sysfs filesystem was + mentioned briefly above. One may wonder how sysfs knows about the devices present + on a system and what device numbers should be used for + them. Drivers that have been compiled into the kernel + register their objects in sysfs (devtmpfs internally) as they are + detected by the kernel. For drivers compiled as modules, + registration happens when the module is loaded. Once the + sysfs filesystem is mounted + (on /sys), data which the + drivers have registered with sysfs are available to userspace + processes and to udevd for processing (including + modifications to device nodes). +

+
+
+
+
+
+

+ 9.3.2.2. Device + Node Creation +

+
+
+
+

+ Device files are created by the kernel in the devtmpfs file system. Any driver that + wishes to register a device node will use the devtmpfs (via the driver core) to do + it. When a devtmpfs + instance is mounted on /dev, + the device node will initially be exposed to userspace with + a fixed name, permissions, and owner. +

+

+ A short time later, the kernel will send a uevent to + udevd. Based + on the rules specified in the files within the /etc/udev/rules.d, /usr/lib/udev/rules.d, and /run/udev/rules.d directories, + udevd will + create additional symlinks to the device node, or change + its permissions, owner, or group, or modify the internal + udevd + database entry (name) for that object. +

+

+ The rules in these three directories are numbered and all + three directories are merged together. If udevd can't find a rule + for the device it is creating, it will leave the + permissions and ownership at whatever devtmpfs used initially. +

+
+
+
+
+
+

+ 9.3.2.3. Module Loading +

+
+
+
+

+ Device drivers compiled as modules may have aliases built + into them. Aliases are visible in the output of the + modinfo + program and are usually related to the bus-specific + identifiers of devices supported by a module. For example, + the snd-fm801 driver + supports PCI devices with vendor ID 0x1319 and device ID + 0x0801, and has an alias of pci:v00001319d00000801sv*sd*bc04sc01i*. + For most devices, the bus driver exports the alias of the + driver that would handle the device via sysfs. E.g., the /sys/bus/pci/devices/0000:00:0d.0/modalias + file might contain the string pci:v00001319d00000801sv00001319sd00001319bc04sc01i00. + The default rules provided with udev will cause + udevd to call + out to /sbin/modprobe with the + contents of the MODALIAS uevent + environment variable (which should be the same as the + contents of the modalias file + in sysfs), thus loading all modules whose aliases match + this string after wildcard expansion. +

+

+ In this example, this means that, in addition to + snd-fm801, the + obsolete (and unwanted) forte driver will be loaded if + it is available. See below for ways in which the loading of + unwanted drivers can be prevented. +

+

+ The kernel itself is also able to load modules for network + protocols, filesystems, and NLS support on demand. +

+
+
+
+
+
+

+ 9.3.2.4. Handling + Hotpluggable/Dynamic Devices +

+
+
+
+

+ When you plug in a device, such as a Universal Serial Bus + (USB) MP3 player, the kernel recognizes that the device is + now connected and generates a uevent. This uevent is then + handled by udevd as described above. +

+
+
+
+

+ 9.3.3. Problems with Loading Modules and Creating Devices +

+

+ There are a few possible problems when it comes to + automatically creating device nodes. +

+
+
+
+
+

+ 9.3.3.1. A Kernel + Module Is Not Loaded Automatically +

+
+
+
+

+ Udev will only load a module if it has a bus-specific alias + and the bus driver properly exports the necessary aliases + to sysfs. In other cases, + one should arrange module loading by other means. With + Linux-6.16.1, udev is known to load properly-written + drivers for INPUT, IDE, PCI, USB, SCSI, SERIO, and FireWire + devices. +

+

+ To determine if the device driver you require has the + necessary support for udev, run modinfo with the module + name as the argument. Now try locating the device directory + under /sys/bus and check + whether there is a modalias + file there. +

+

+ If the modalias file exists + in sysfs, the driver + supports the device and can talk to it directly, but + doesn't have the alias, it is a bug in the driver. Load the + driver without the help from udev and expect the issue to + be fixed later. +

+

+ If there is no modalias file + in the relevant directory under /sys/bus, this means that the kernel + developers have not yet added modalias support to this bus + type. With Linux-6.16.1, this is the case with ISA busses. + Expect this issue to be fixed in later kernel versions. +

+

+ Udev is not intended to load “wrapper” drivers + such as snd-pcm-oss + and non-hardware drivers such as loop at all. +

+
+
+
+
+
+

+ 9.3.3.2. A Kernel + Module Is Not Loaded Automatically, and Udev Is Not + Intended to Load It +

+
+
+
+

+ If the “wrapper” module only enhances the + functionality provided by some other module (e.g., + snd-pcm-oss enhances + the functionality of snd-pcm by making the sound + cards available to OSS applications), configure + modprobe to + load the wrapper after udev loads the wrapped module. To do + this, add a “softdep” line to the corresponding + /etc/modprobe.d/<filename>.conf + file. For example: +

+
softdep snd-pcm post: snd-pcm-oss
+

+ Note that the “softdep” command also allows + pre: dependencies, or a + mixture of both pre: and + post: dependencies. See the + modprobe.d(5) + manual page for more information on “softdep” syntax + and capabilities. +

+

+ If the module in question is not a wrapper and is useful by + itself, configure the modules bootscript to + load this module on system boot. To do this, add the module + name to the /etc/sysconfig/modules file on a separate + line. This works for wrapper modules too, but is suboptimal + in that case. +

+
+
+
+
+
+

+ 9.3.3.3. Udev Loads + Some Unwanted Module +

+
+
+
+

+ Either don't build the module, or blacklist it in a + /etc/modprobe.d/blacklist.conf file as + done with the forte + module in the example below: +

+
blacklist forte
+

+ Blacklisted modules can still be loaded manually with the + explicit modprobe command. +

+
+
+
+
+
+

+ 9.3.3.4. Udev Creates a + Device Incorrectly, or Makes the Wrong Symlink +

+
+
+
+

+ This usually happens if a rule unexpectedly matches a + device. For example, a poorly-written rule can match both a + SCSI disk (as desired) and the corresponding SCSI generic + device (incorrectly) by vendor. Find the offending rule and + make it more specific, with the help of the udevadm info command. +

+
+
+
+
+
+

+ 9.3.3.5. Udev Rule + Works Unreliably +

+
+
+
+

+ This may be another manifestation of the previous problem. + If not, and your rule uses sysfs attributes, it may be a kernel + timing issue, to be fixed in later kernels. For now, you + can work around it by creating a rule that waits for the + used sysfs attribute and + appending it to the /etc/udev/rules.d/10-wait_for_sysfs.rules + file (create this file if it does not exist). Please notify + the LFS Development list if you do so and it helps. +

+
+
+
+
+
+

+ 9.3.3.6. Udev Does Not + Create a Device +

+
+
+
+

+ First, be certain that the driver is built into the kernel + or already loaded as a module, and that udev isn't creating + a misnamed device. +

+

+ If a kernel driver does not export its data to sysfs, udev lacks the information + needed to create a device node. This is most likely to + happen with third party drivers from outside the kernel + tree. Create a static device node in /usr/lib/udev/devices with the + appropriate major/minor numbers (see the file devices.txt inside the kernel + documentation or the documentation provided by the third + party driver vendor). The static device node will be copied + to /dev by udev. +

+
+
+
+
+
+

+ 9.3.3.7. Device Naming + Order Changes Randomly After Rebooting +

+
+
+
+

+ This is due to the fact that udev, by design, handles + uevents and loads modules in parallel, and thus in an + unpredictable order. This will never be “fixed.” You + should not rely upon the kernel device names being stable. + Instead, create your own rules that make symlinks with + stable names based on some stable attributes of the device, + such as a serial number or the output of various *_id + utilities installed by udev. See Section 9.4, “Managing + Devices” and Section 9.5, + “General Network Configuration” for examples. +

+
+
+
+

+ 9.3.4. Useful Reading +

+

+ Additional helpful documentation is available at the + following sites: +

+ +
+
+
+
+
+

+ 9.4. Managing Devices +

+
+
+
+
+
+

+ 9.4.1. Network Devices +

+

+ Udev, by default, names network devices according to + Firmware/BIOS data or physical characteristics like the bus, + slot, or MAC address. The purpose of this naming convention + is to ensure that network devices are named consistently, not + based on when the network card was discovered. In older + versions of Linux—on a computer with two network cards made + by Intel and Realtek, for instance—the network card + manufactured by Intel might have become eth0 while the + Realtek card became eth1. After a reboot, the cards would + sometimes get renumbered the other way around. +

+

+ In the new naming scheme, typical network device names are + something like enp5s0 or wlp3s0. If this naming convention is + not desired, the traditional naming scheme, or a custom + scheme, can be implemented. +

+
+
+
+
+

+ 9.4.1.1. Disabling + Persistent Naming on the Kernel Command Line +

+
+
+
+

+ The traditional naming scheme using eth0, eth1, etc. can be + restored by adding net.ifnames=0 on the + kernel command line. This is most appropriate for systems + that have just one ethernet device of a particular type. + Laptops often have two ethernet connections named eth0 and + wlan0; such laptops can also use this method. The command + line is in the GRUB configuration file. See Section 10.4.4, + “Creating the GRUB Configuration File.” +

+
+
+
+
+
+

+ 9.4.1.2. Creating + Custom Udev Rules +

+
+
+
+

+ The naming scheme can be customized by creating custom udev + rules. A script has been included that generates the + initial rules. Generate these rules by running: +

+
bash /usr/lib/udev/init-net-rules.sh
+

+ Now, inspect the /etc/udev/rules.d/70-persistent-net.rules + file, to find out which name was assigned to which network + device: +

+
cat /etc/udev/rules.d/70-persistent-net.rules
+
+

+ Note +

+

+ In some cases, such as when MAC addresses have been + assigned to a network card manually, or in a virtual + environment such as Qemu or Xen, the network rules file + may not be generated because addresses are not + consistently assigned. In these cases, this method cannot + be used. +

+
+

+ The file begins with a comment block, followed by two lines + for each NIC. The first line for each NIC is a commented + description showing its hardware IDs (e.g. its PCI vendor + and device IDs, if it's a PCI card), along with its driver + (in parentheses, if the driver can be found). Neither the + hardware ID nor the driver is used to determine which name + to give an interface; this information is only for + reference. The second line is the udev rule that matches + this NIC and actually assigns it a name. +

+

+ All udev rules are made up of several keywords, separated + by commas and optional whitespace. Here are the keywords, + and an explanation of each one: +

+
+
    +
  • +

    + SUBSYSTEM=="net" - This + tells udev to ignore devices that are not network + cards. +

    +
  • +
  • +

    + ACTION=="add" - This + tells udev to ignore this rule for a uevent that + isn't an add ("remove" and "change" uevents also + happen, but don't need to rename network interfaces). +

    +
  • +
  • +

    + DRIVERS=="?*" - This + exists so that udev will ignore VLAN or bridge + sub-interfaces (because these sub-interfaces do not + have drivers). These sub-interfaces are skipped + because the name that would be assigned would collide + with the parent devices. +

    +
  • +
  • +

    + ATTR{address} - The + value of this keyword is the NIC's MAC address. +

    +
  • +
  • +

    + ATTR{type}=="1" - This + ensures the rule only matches the primary interface + in the case of certain wireless drivers which create + multiple virtual interfaces. The secondary interfaces + are skipped for the same reason that VLAN and bridge + sub-interfaces are skipped: there would be a name + collision otherwise. +

    +
  • +
  • +

    + NAME - The value of this + keyword is the name that udev will assign to this + interface. +

    +
  • +
+
+

+ The value of NAME is the + important part. Make sure you know which name has been + assigned to each of your network cards before proceeding, + and be sure to use that NAME + value when creating your network configuration files. +

+

+ Even if the custom udev rule file is created, udev may + still assign one or more alternative names for a NIC based + on physical characteristics. If a custom udev rule would + rename some NIC using a name already assigned as an + alternative name of another NIC, this udev rule will fail. + If this issue happens, you may create the /etc/udev/network/99-default.link + configuration file with an empty alternative assignment + policy, overriding the default configuration file + /usr/lib/udev/network/99-default.link: +

+
sed -e '/^AlternativeNamesPolicy/s/=.*$/=/'  \
+       /usr/lib/udev/network/99-default.link \
+     > /etc/udev/network/99-default.link
+
+
+
+

+ 9.4.2. CD-ROM Symlinks +

+

+ Some software that you may want to install later (e.g., + various media players) expects the /dev/cdrom and /dev/dvd symlinks to exist, and to point to + a CD-ROM or DVD-ROM device. Also, it may be convenient to put + references to those symlinks into /etc/fstab. Udev comes with a script that + will generate rules files to create these symlinks for you, + depending on the capabilities of each device, but you need to + decide which of two modes of operation you wish to have the + script use. +

+

+ First, the script can operate in “by-path” mode + (used by default for USB and FireWire devices), where the + rules it creates depend on the physical path to the CD or DVD + device. Second, it can operate in “by-id” mode + (default for IDE and SCSI devices), where the rules it + creates depend on identification strings stored on the CD or + DVD device itself. The path is determined by udev's + path_id script, + and the identification strings are read from the hardware by + its ata_id or + scsi_id + programs, depending on which type of device you have. +

+

+ There are advantages to each approach; the correct approach + depends on what kinds of device changes may happen. If you + expect the physical path to the device (that is, the ports + and/or slots that it plugs into) to change, for example + because you plan on moving the drive to a different IDE port + or a different USB connector, then you should use the + “by-id” + mode. On the other hand, if you expect the device's + identification to change, for example because it may die, and + you intend to replace it with a different device that plugs + into the same connectors, then you should use the + “by-path” mode. +

+

+ If either type of change is possible with your drive, then + choose a mode based on the type of change you expect to + happen more often. +

+
+

+ Important +

+

+ External devices (for example, a USB-connected CD drive) + should not use by-path persistence, because each time the + device is plugged into a new external port, its physical + path will change. All externally-connected devices will + have this problem if you write udev rules to recognize them + by their physical path; the problem is not limited to CD + and DVD drives. +

+
+

+ If you wish to see the values that the udev scripts will use, + then for the appropriate CD-ROM device, find the + corresponding directory under /sys (e.g., this can be /sys/block/hdd) and run a command similar + to the following: +

+
udevadm test /sys/block/hdd
+

+ Look at the lines containing the output of various *_id + programs. The “by-id” mode will use the ID_SERIAL + value if it exists and is not empty, otherwise it will use a + combination of ID_MODEL and ID_REVISION. The “by-path” mode will + use the ID_PATH value. +

+

+ If the default mode is not suitable for your situation, then + the following modification can be made to the /etc/udev/rules.d/83-cdrom-symlinks.rules + file, as follows (where mode is one of “by-id” or + “by-path”): +

+
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
+    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
+

+ Note that it is not necessary to create the rules files or + symlinks at this time because you have bind-mounted the + host's /dev directory into the + LFS system and we assume the symlinks exist on the host. The + rules and symlinks will be created the first time you boot + your LFS system. +

+

+ However, if you have multiple CD-ROM devices, then the + symlinks generated at that time may point to different + devices than they point to on your host because devices are + not discovered in a predictable order. The assignments + created when you first boot the LFS system will be stable, so + this is only an issue if you need the symlinks on both + systems to point to the same device. If you need that, then + inspect (and possibly edit) the generated /etc/udev/rules.d/70-persistent-cd.rules + file after booting, to make sure the assigned symlinks match + your needs. +

+
+
+

+ 9.4.3. Dealing with Duplicate Devices +

+

+ As explained in Section 9.3, + “Overview of Device and Module Handling,” the order in + which devices with the same function appear in /dev is essentially random. E.g., if you + have a USB web camera and a TV tuner, sometimes /dev/video0 refers to the camera and + /dev/video1 refers to the + tuner, and sometimes after a reboot the order changes. For + all classes of hardware except sound cards and network cards, + this is fixable by creating udev rules to create persistent + symlinks. The case of network cards is covered separately in + Section 9.5, + “General Network Configuration,” and sound card + configuration can be found in + BLFS. +

+

+ For each of your devices that is likely to have this problem + (even if the problem doesn't exist in your current Linux + distribution), find the corresponding directory under + /sys/class or /sys/block. For video devices, this may be + /sys/class/video4linux/videoX. Figure out the + attributes that identify the device uniquely (usually, vendor + and product IDs and/or serial numbers work): +

+
udevadm info -a -p /sys/class/video4linux/video0
+

+ Then write rules that create the symlinks, e.g.: +

+
cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
+
+# Persistent symlinks for webcam and tuner
+KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", SYMLINK+="webcam"
+KERNEL=="video*", ATTRS{device}=="0x036f",  ATTRS{vendor}=="0x109e", SYMLINK+="tvtuner"
+
+EOF
+

+ The result is that /dev/video0 + and /dev/video1 devices still + refer randomly to the tuner and the web camera (and thus + should never be used directly), but there are symlinks + /dev/tvtuner and /dev/webcam that always point to the + correct device. +

+
+
+
+
+
+

+ 9.5. General Network + Configuration +

+
+
+
+
+
+

+ 9.5.1. Creating Network Interface Configuration Files +

+

+ The files in /etc/sysconfig/ + usually determine which interfaces are brought up and down by + the network script. This directory should contain a file for + each interface to be configured, such as ifconfig.xyz, where “xyz” describes the + network card. The interface name (e.g. eth0) is usually + appropriate. Each file contains the attributes of one + interface, such as its IP address(es), subnet masks, and so + forth. The stem of the filename must be ifconfig. +

+
+

+ Note +

+

+ If the procedure in the previous section was not used, udev + will assign network card interface names based on system + physical characteristics such as enp2s1. If you are not + sure what your interface name is, you can always run + ip link or + ls + /sys/class/net after you have booted your + system. +

+

+ The interface names depend on the implementation and + configuration of the udev daemon running on the system. The + udev daemon for LFS (installed in Section 8.76, + “Udev from Systemd-257.8”) will not run until the LFS + system is booted. So the interface names in the LFS system + cannot always be determined by running those commands on + the host distro, even in the + chroot environment. +

+
+

+ The following command creates a sample file for the + eth0 device with a + static IP address: +

+
cd /etc/sysconfig/
+cat > ifconfig.eth0 << "EOF"
+ONBOOT=yes
+IFACE=eth0
+SERVICE=ipv4-static
+IP=192.168.1.2
+GATEWAY=192.168.1.1
+PREFIX=24
+BROADCAST=192.168.1.255
+EOF
+

+ The values in italics must be changed in each file, to set + the interfaces up correctly. +

+

+ If the ONBOOT variable is set to + yes the System V network script + will bring up the Network Interface Card (NIC) during the + system boot process. If set to anything besides yes, the NIC will be ignored by the network + script and will not be started automatically. Interfaces can + be manually started or stopped with the ifup and ifdown commands. +

+

+ The IFACE variable defines the + interface name, for example, eth0. It is required for all + network device configuration files. The filename extension + must match this value. +

+

+ The SERVICE variable defines the + method used for obtaining the IP address. The LFS-Bootscripts + package has a modular IP assignment format, and creating + additional files in the /lib/services/ directory allows other IP + assignment methods. This is commonly used for Dynamic Host + Configuration Protocol (DHCP), which is addressed in the BLFS + book. +

+

+ The GATEWAY variable should + contain the default gateway IP address, if one is present. If + not, then comment out the variable entirely. +

+

+ The PREFIX variable specifies the + number of bits used in the subnet. Each segment of an IP + address is 8 bits. If the subnet's netmask is 255.255.255.0, + then it is using the first three segments (24 bits) to + specify the network number. If the netmask is + 255.255.255.240, the subnet is using the first 28 bits. + Prefixes longer than 24 bits are commonly used by DSL and + cable-based Internet Service Providers (ISPs). In this + example (PREFIX=24), the netmask is 255.255.255.0. Adjust the + PREFIX variable according to your + specific subnet. If omitted, the PREFIX defaults to 24. +

+

+ For more information see the ifup man page. +

+
+
+

+ 9.5.2. Creating + the /etc/resolv.conf File +

+

+ The system will need some means of obtaining Domain Name + Service (DNS) name resolution to resolve Internet domain + names to IP addresses, and vice versa. This is best achieved + by placing the IP address of the DNS server, available from + the ISP or network administrator, into /etc/resolv.conf. Create the file by + running the following: +

+
cat > /etc/resolv.conf << "EOF"
+# Begin /etc/resolv.conf
+
+domain <Your Domain Name>
+nameserver <IP address of your primary nameserver>
+nameserver <IP address of your secondary nameserver>
+
+# End /etc/resolv.conf
+EOF
+

+ The domain statement can be + omitted or replaced with a search statement. See the man page for + resolv.conf for more details. +

+

+ Replace <IP address of the + nameserver> with the IP address of the DNS + most appropriate for the setup. There will often be more than + one entry (requirements demand secondary servers for fallback + capability). If you only need or want one DNS server, remove + the second nameserver + line from the file. The IP address may also be a router on + the local network. +

+
+

+ Note +

+

+ The Google Public IPv4 DNS addresses are 8.8.8.8 and + 8.8.4.4. +

+
+
+
+

+ 9.5.3. Configuring the System + Hostname +

+

+ During the boot process, the file /etc/hostname is used for establishing the + system's hostname. +

+

+ Create the /etc/hostname file + and enter a hostname by running: +

+
echo "<lfs>" > /etc/hostname
+

+ <lfs> needs + to be replaced with the name given to the computer. Do not + enter the Fully Qualified Domain Name (FQDN) here. That + information goes in the /etc/hosts file. +

+
+
+

+ 9.5.4. + Customizing the /etc/hosts File +

+

+ Decide on a fully-qualified domain name (FQDN), and possible + aliases for use in the /etc/hosts file. If using static IP + addresses, you'll also need to decide on an IP address. The + syntax for a hosts file entry is: +

+
IP_address myhost.example.org aliases
+

+ Unless the computer is to be visible to the Internet (i.e., + there is a registered domain and a valid block of assigned IP + addresses—most users do not have this), make sure that the IP + address is in the private network IP address range. Valid + ranges are: +

+
Private Network Address Range      Normal Prefix
+10.0.0.1 - 10.255.255.254           8
+172.x.0.1 - 172.x.255.254           16
+192.168.y.1 - 192.168.y.254         24
+

+ x can be any number in the range 16-31. y can be any number + in the range 0-255. +

+

+ A valid private IP address could be 192.168.1.2. +

+

+ If the computer is to be visible to the Internet, a valid + FQDN can be the domain name itself, or a string resulted by + concatenating a prefix (often the hostname) and the domain + name with a “.” character. And, you need to contact + the domain provider to resolve the FQDN to your public IP + address. +

+

+ Even if the computer is not visible to the Internet, a FQDN + is still needed for certain programs, such as MTAs, to + operate properly. A special FQDN, localhost.localdomain, can be used for this + purpose. +

+

+ Create the /etc/hosts file by + running: +

+
cat > /etc/hosts << "EOF"
+# Begin /etc/hosts
+
+127.0.0.1 localhost.localdomain localhost
+127.0.1.1 <FQDN> <HOSTNAME>
+<192.168.1.2> <FQDN> <HOSTNAME> [alias1] [alias2 ...]
+::1       localhost ip6-localhost ip6-loopback
+ff02::1   ip6-allnodes
+ff02::2   ip6-allrouters
+
+# End /etc/hosts
+EOF
+

+ The <192.168.1.2>, + <FQDN>, and + <HOSTNAME> + values need to be changed for specific uses or requirements + (if assigned an IP address by a network/system administrator + and the machine will be connected to an existing network). + The optional alias name(s) can be omitted. +

+
+
+
+
+
+

+ 9.6. System V Bootscript Usage + and Configuration +

+
+
+
+
+
+

+ 9.6.1. How Do the System V Bootscripts Work? +

+

+ This version of LFS uses a special booting facility named + SysVinit, based on a series of run + levels. The boot procedure can be quite different + from one system to another; the fact that things worked one + way in a particular Linux distribution does not guarantee + they will work the same way in LFS. LFS has its own way of + doing things, but it does respect generally accepted + standards. +

+

+ There is an alternative boot procedure called systemd. We will not + discuss that boot process any further here. For a detailed + description visit + https://www.linux.com/training-tutorials/understanding-and-using-systemd/. +

+

+ SysVinit (which will be referred to as “init” from now on) + uses a run levels scheme. There are seven run levels, + numbered 0 to 6. (Actually, there are more run levels, but + the others are for special cases and are generally not used. + See init(8) for more + details.) Each one of the seven corresponds to actions the + computer is supposed to perform when it starts up or shuts + down. The default run level is 3. Here are the descriptions + of the different run levels as they are implemented in LFS: +

+
+

+ 0: halt the computer
+ 1: single-user mode
+ 2: reserved for customization, otherwise the same as 3
+ + 3: multi-user mode with networking
+ + 4: reserved for customization, otherwise the same as 3
+ + 5: same as 4, it is usually used for GUI login (like GNOME's gdm or LXDE's lxdm)
+ + 6: reboot the computer +

+
+
+

+ Note +

+

+ Classically, run level 2 above was defined as “multi-user mode without + networking,” but this was only the case many + years ago when multiple users could connect to a system via + serial ports. In today's environment it makes no sense, and + we now say it is “reserved.” +

+
+
+
+

+ 9.6.2. + Configuring SysVinit +

+

+ During kernel initialization, the first program that is run + (if not overridden on the command line) is init. This program reads + the initialization file /etc/inittab. Create this file with: +

+
cat > /etc/inittab << "EOF"
+# Begin /etc/inittab
+
+id:3:initdefault:
+
+si::sysinit:/etc/rc.d/init.d/rc S
+
+l0:0:wait:/etc/rc.d/init.d/rc 0
+l1:S1:wait:/etc/rc.d/init.d/rc 1
+l2:2:wait:/etc/rc.d/init.d/rc 2
+l3:3:wait:/etc/rc.d/init.d/rc 3
+l4:4:wait:/etc/rc.d/init.d/rc 4
+l5:5:wait:/etc/rc.d/init.d/rc 5
+l6:6:wait:/etc/rc.d/init.d/rc 6
+
+ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
+
+su:S06:once:/sbin/sulogin
+s1:1:respawn:/sbin/sulogin
+
+1:2345:respawn:/sbin/agetty --noclear tty1 9600
+2:2345:respawn:/sbin/agetty tty2 9600
+3:2345:respawn:/sbin/agetty tty3 9600
+4:2345:respawn:/sbin/agetty tty4 9600
+5:2345:respawn:/sbin/agetty tty5 9600
+6:2345:respawn:/sbin/agetty tty6 9600
+
+# End /etc/inittab
+EOF
+

+ An explanation of this initialization file is in the man page + for inittab. In LFS, + the key command is rc. The initialization file + above instructs rc to run all the scripts + starting with an S in the /etc/rc.d/rcS.d directory followed by all + the scripts starting with an S in the /etc/rc.d/rc?.d directory where the + question mark is specified by the initdefault value. +

+

+ As a convenience, the rc script reads a library + of functions in /lib/lsb/init-functions. This library also + reads an optional configuration file, /etc/sysconfig/rc.site. Any of the system + configuration parameters described in subsequent sections can + be placed in this file, allowing consolidation of all system + parameters in this one file. +

+

+ As a debugging convenience, the functions script also logs + all output to /run/var/bootlog. + Since the /run directory is a + tmpfs, this file is not persistent across boots; however, it + is appended to the more permanent file /var/log/boot.log at the end of the boot + process. +

+
+
+
+
+

+ 9.6.2.1. Changing Run Levels +

+
+
+
+

+ Changing run levels is done with init <runlevel>, + where <runlevel> is the + target run level. For example, to reboot the computer, a + user could issue the init + 6 command, which is an alias for the + reboot + command. Likewise, init + 0 is an alias for the halt command. +

+

+ There are a number of directories under /etc/rc.d that look like rc?.d (where ? is the number of the run + level) and rcS.d, all + containing a number of symbolic links. Some links begin + with a K; the others + begin with an S, and + all of them have two numbers following the initial letter. + The K means to stop (kill) a service and the S means to + start a service. The numbers determine the order in which + the scripts are run, from 00 to 99—the smaller the number, + the sooner the script runs. When init switches to another + run level, the appropriate services are either started or + stopped, depending on the run level chosen. +

+

+ The real scripts are in /etc/rc.d/init.d. They do the actual + work, and the symlinks all point to them. K links and S + links point to the same script in /etc/rc.d/init.d. This is because the + scripts can be called with different parameters like + start, stop, restart, reload, and status. When a K link is + encountered, the appropriate script is run with the + stop argument. When + an S link is encountered, the appropriate script is run + with the start + argument. +

+

+ These are descriptions of what the arguments make the + scripts do: +

+
+
+
+ start +
+
+

+ The service is started. +

+
+
+ stop +
+
+

+ The service is stopped. +

+
+
+ restart +
+
+

+ The service is stopped and then started again. +

+
+
+ reload +
+
+

+ The configuration of the service is updated. This is + used after the configuration file of a service was + modified, when the service does not need to be + restarted. +

+
+
+ status +
+
+

+ Tells if the service is running and with which PIDs. +

+
+
+
+

+ Feel free to modify the way the boot process works (after + all, it is your own LFS system). The files given here are + an example of how it can be done. +

+
+
+
+

+ 9.6.3. Udev Bootscripts +

+

+ The /etc/rc.d/init.d/udev + initscript starts udevd, triggers any + "coldplug" devices that have already been created by the + kernel, and waits for any rules to complete. The script also + unsets the uevent handler from the default of /sbin/hotplug . This is done because the + kernel no longer needs to call an external binary. Instead, + udevd will + listen on a netlink socket for uevents that the kernel + raises. +

+

+ The /etc/rc.d/init.d/udev_retry + script takes care of re-triggering events for subsystems + whose rules may rely on file systems that are not mounted + until the mountfs script is run (in + particular, /usr and + /var may cause this). This + script runs after the mountfs script, so those + rules (if re-triggered) should succeed the second time + around. It is configured by the /etc/sysconfig/udev_retry file; any words + in this file other than comments are considered subsystem + names to trigger at retry time. To find the subsystem of a + device, use udevadm info + --attribute-walk <device> where + <device> is an absolute path in /dev or /sys, such as + /dev/sr0, or /sys/class/rtc. +

+

+ For information on kernel module loading and udev, see + Section 9.3.2.3, “Module + Loading.” +

+
+
+

+ 9.6.4. + Configuring the System Clock +

+

+ The setclock + script reads the time from the hardware clock, also known as + the BIOS or Complementary Metal Oxide Semiconductor (CMOS) + clock. If the hardware clock is set to UTC, this script will + convert the hardware clock's time to the local time using the + /etc/localtime file (which + tells the hwclock program which time + zone to use). There is no way to detect whether or not the + hardware clock is set to UTC, so this must be configured + manually. +

+

+ The setclock + program is run via udev when + the kernel detects the hardware capability upon boot. It can + also be run manually with the stop parameter to store the + system time to the CMOS clock. +

+

+ If you cannot remember whether or not the hardware clock is + set to UTC, find out by running the hwclock --localtime --show + command. This will display what the current time is according + to the hardware clock. If this time matches whatever your + watch says, then the hardware clock is set to local time. If + the output from hwclock is not local time, + chances are it is set to UTC time. Verify this by adding or + subtracting the proper number of hours for your time zone to + the time shown by hwclock. For example, if + you are currently in the MST time zone, which is also known + as GMT -0700, add seven hours to the local time. +

+

+ Change the value of the UTC + variable below to a value of 0 (zero) if the hardware clock + is NOT set to UTC + time. +

+

+ Create a new file /etc/sysconfig/clock by running the + following: +

+
cat > /etc/sysconfig/clock << "EOF"
+# Begin /etc/sysconfig/clock
+
+UTC=1
+
+# Set this to any options you might need to give to hwclock,
+# such as machine hardware clock type for Alphas.
+CLOCKPARAMS=
+
+# End /etc/sysconfig/clock
+EOF
+

+ A good hint explaining how to deal with time on LFS is + available at + https://www.linuxfromscratch.org/hints/downloads/files/time.txt. + It explains issues such as time zones, UTC, and the + TZ environment variable. +

+
+

+ Note +

+

+ The CLOCKPARAMS and UTC parameters may also be set in the + /etc/sysconfig/rc.site file. +

+
+
+
+

+ 9.6.5. + Configuring the Linux Console +

+

+ This section discusses how to configure the console bootscript that + sets up the keyboard map, console font, and console kernel + log level. If non-ASCII characters (e.g., the copyright sign, + the British pound sign, and the Euro symbol) will not be used + and the keyboard is a U.S. one, much of this section can be + skipped. Without the configuration file, (or equivalent + settings in rc.site), the + console + bootscript will do nothing. +

+

+ The console + script reads the /etc/sysconfig/console file for + configuration information. Decide which keymap and screen + font will be used. Various language-specific HOWTOs can also + help with this; see https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. + If still in doubt, look in the /usr/share/keymaps and /usr/share/consolefonts directories for + valid keymaps and screen fonts. Read the loadkeys(1) + and setfont(8) + manual pages to determine the correct arguments for these + programs. +

+

+ The /etc/sysconfig/console file + should contain lines of the form: VARIABLE=value. The following variables are + recognized: +

+
+
+
+ LOGLEVEL +
+
+

+ This variable specifies the log level for kernel + messages sent to the console as set by dmesg -n. Valid + levels are from 1 (no + messages) to 8. The + default level is 7, which + is quite verbose. +

+
+
+ KEYMAP +
+
+

+ This variable specifies the arguments for the + loadkeys + program, typically, the name of the keymap to load, + e.g., it. If this variable + is not set, the bootscript will not run the + loadkeys + program, and the default kernel keymap will be used. + Note that a few keymaps have multiple versions with the + same name (cz and its variants in qwerty/ and qwertz/, + es in olpc/ and qwerty/, and trf in fgGIod/ and + qwerty/). In these cases the parent directory should + also be specified (e.g. qwerty/es) to ensure the proper + keymap is loaded. +

+
+
+ KEYMAP_CORRECTIONS +
+
+

+ This (rarely used) variable specifies the arguments for + the second call to the loadkeys program. + This is useful if the stock keymap is not completely + satisfactory and a small adjustment has to be made. + E.g., to include the Euro sign into a keymap that + normally doesn't have it, set this variable to + euro2. +

+
+
+ FONT +
+
+

+ This variable specifies the arguments for the + setfont + program. Typically, this includes the font name, + -m, and the name of the + application character map to load. E.g., in order to + load the “lat1-16” font together with the + “8859-1” application character map + (appropriate in the USA), set this variable to + lat1-16 -m 8859-1. In + UTF-8 mode, the kernel uses the application character + map to convert 8-bit key codes to UTF-8. Therefore the + argument of the "-m" parameter should be set to the + encoding of the composed key codes in the keymap. +

+
+
+ UNICODE +
+
+

+ Set this variable to 1, + yes, or true in order to put the console into + UTF-8 mode. This is useful in UTF-8 based locales and + harmful otherwise. +

+
+
+ LEGACY_CHARSET +
+
+

+ For many keyboard layouts, there is no stock Unicode + keymap in the Kbd package. The console bootscript + will convert an available keymap to UTF-8 on the fly if + this variable is set to the encoding of the available + non-UTF-8 keymap. +

+
+
+
+

+ Some examples: +

+
+
    +
  • +

    + We'll use C.UTF-8 as the + locale for interactive sessions in the Linux console in + Section 9.7, + “Configuring the System Locale,” so we should set + UNICODE to 1. And the console fonts shipped by + the Kbd package + containing the glyphs for all characters from the + program messages in the C.UTF-8 locale are LatArCyrHeb*.psfu.gz, LatGrkCyr*.psfu.gz, Lat2-Terminus16.psfu.gz, and + pancyrillic.f16.psfu.gz + in /usr/share/consolefonts (the other + shipped console fonts lack glyphs of some characters + like the Unicode left/right quotation marks and the + Unicode English dash). So set one of them, for example + Lat2-Terminus16.psfu.gz + as the default console font: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +FONT="Lat2-Terminus16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + For a non-Unicode setup, only the KEYMAP and FONT + variables are generally needed. E.g., for a Polish + setup, one would use: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="pl2"
    +FONT="lat2a-16 -m 8859-2"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + As mentioned above, it is sometimes necessary to adjust + a stock keymap slightly. The following example adds the + Euro symbol to the German keymap: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="de-latin1"
    +KEYMAP_CORRECTIONS="euro2"
    +FONT="lat0-16 -m 8859-15"
    +UNICODE="1"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + The following is a Unicode-enabled example for + Bulgarian, where a stock UTF-8 keymap exists: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="LatArCyrHeb-16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Due to the use of a 512-glyph LatArCyrHeb-16 font in + the previous example, bright colors are no longer + available on the Linux console unless a framebuffer is + used. If one wants to have bright colors without a + framebuffer and can live without characters not + belonging to his language, it is still possible to use + a language-specific 256-glyph font, as illustrated + below: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + The following example illustrates keymap autoconversion + from ISO-8859-15 to UTF-8 and enabling dead keys in + Unicode mode: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="de-latin1"
    +KEYMAP_CORRECTIONS="euro2"
    +LEGACY_CHARSET="iso-8859-15"
    +FONT="LatArCyrHeb-16 -m 8859-15"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Some keymaps have dead keys (i.e., keys that don't + produce a character by themselves, but put an accent on + the character produced by the next key) or define + composition rules (such as: “press Ctrl+. A E to get + Æ” in the default keymap). Linux-6.16.1 + interprets dead keys and composition rules in the + keymap correctly only when the source characters to be + composed together are not multibyte. This deficiency + doesn't affect keymaps for European languages, because + there accents are added to unaccented ASCII characters, + or two ASCII characters are composed together. However, + in UTF-8 mode it is a problem; e.g., for the Greek + language, where one sometimes needs to put an accent on + the letter α. The solution is either to avoid the use + of UTF-8, or to install the X window system, which + doesn't have this limitation, in its input handling. +

    +
  • +
  • +

    + For Chinese, Japanese, Korean, and some other + languages, the Linux console cannot be configured to + display the needed characters. Users who need such + languages should install the X Window System, fonts + that cover the necessary character ranges, and the + proper input method (e.g., SCIM supports a wide variety + of languages). +

    +
  • +
+
+
+

+ Note +

+

+ The /etc/sysconfig/console + file only controls the Linux text console localization. It + has nothing to do with setting the proper keyboard layout + and terminal fonts in the X Window System, with ssh + sessions, or with a serial console. In such situations, + limitations mentioned in the last two list items above do + not apply. +

+
+
+
+

+ 9.6.6. Creating Files at Boot +

+

+ At times, it is desirable to create files at boot time. For + instance, the /tmp/.ICE-unix + directory is often needed. This can be done by creating an + entry in the /etc/sysconfig/createfiles configuration + script. The format of this file is embedded in the comments + of the default configuration file. +

+
+
+

+ 9.6.7. Configuring the Sysklogd + Script +

+

+ The sysklogd script invokes the + syslogd program + as a part of System V initialization. The -m 0 option turns off the + periodic timestamp mark that syslogd writes to the log + files every 20 minutes by default. If you want to turn on + this periodic timestamp mark, edit /etc/sysconfig/rc.site and define the + variable SYSKLOGD_PARMS to the desired value. For instance, + to remove all parameters, set the variable to a null value: +

+
SYSKLOGD_PARMS=
+

+ See man + syslogd for more options. +

+
+
+

+ 9.6.8. The + rc.site File +

+

+ The optional /etc/sysconfig/rc.site file contains + settings that are automatically set for each SystemV boot + script. It can alternatively set the values specified in the + hostname, console, and clock files in the /etc/sysconfig/ directory. If the + associated variables are present in both these separate files + and rc.site, the values in the + script-specific files take effect. +

+

+ rc.site also contains + parameters that can customize other aspects of the boot + process. Setting the IPROMPT variable will enable selective + running of bootscripts. Other options are described in the + file comments. The default version of the file is as follows: +

+
# rc.site
+# Optional parameters for boot scripts.
+
+# Distro Information
+# These values, if specified here, override the defaults
+#DISTRO="Linux From Scratch" # The distro name
+#DISTRO_CONTACT="lfs-dev@lists.linuxfromscratch.org" # Bug report address
+#DISTRO_MINI="LFS" # Short name used in filenames for distro config
+
+# Define custom colors used in messages printed to the screen
+
+# Please consult `man console_codes` for more information
+# under the "ECMA-48 Set Graphics Rendition" section
+#
+# Warning: when switching from a 8bit to a 9bit font,
+# the linux console will reinterpret the bold (1;) to
+# the top 256 glyphs of the 9bit font.  This does
+# not affect framebuffer consoles
+
+# These values, if specified here, override the defaults
+#BRACKET="\\033[1;34m" # Blue
+#FAILURE="\\033[1;31m" # Red
+#INFO="\\033[1;36m"    # Cyan
+#NORMAL="\\033[0;39m"  # Grey
+#SUCCESS="\\033[1;32m" # Green
+#WARNING="\\033[1;33m" # Yellow
+
+# Use a colored prefix
+# These values, if specified here, override the defaults
+#BMPREFIX="      "
+#SUCCESS_PREFIX="${SUCCESS}  *  ${NORMAL} "
+#FAILURE_PREFIX="${FAILURE}*****${NORMAL} "
+#WARNING_PREFIX="${WARNING} *** ${NORMAL} "
+
+# Manually set the right edge of message output (characters)
+# Useful when resetting console font during boot to override
+# automatic screen width detection
+#COLUMNS=120
+
+# Interactive startup
+#IPROMPT="yes" # Whether to display the interactive boot prompt
+#itime="3"    # The amount of time (in seconds) to display the prompt
+
+# The total length of the distro welcome string, without escape codes
+#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
+#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
+
+# The total length of the interactive string, without escape codes
+#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
+#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
+
+# Set scripts to skip the file system check on reboot
+#FASTBOOT=yes
+
+# Skip reading from the console
+#HEADLESS=yes
+
+# Write out fsck progress if yes
+#VERBOSE_FSCK=no
+
+# Speed up boot without waiting for settle in udev
+#OMIT_UDEV_SETTLE=y
+
+# Speed up boot without waiting for settle in udev_retry
+#OMIT_UDEV_RETRY_SETTLE=yes
+
+# Skip cleaning /tmp if yes
+#SKIPTMPCLEAN=no
+
+# For setclock
+#UTC=1
+#CLOCKPARAMS=
+
+# For consolelog (Note that the default, 7=debug, is noisy)
+#LOGLEVEL=7
+
+# For network
+#HOSTNAME=mylfs
+
+# Delay between TERM and KILL signals at shutdown
+#KILLDELAY=3
+
+# Optional sysklogd parameters
+#SYSKLOGD_PARMS="-m 0"
+
+# Console parameters
+#UNICODE=1
+#KEYMAP="de-latin1"
+#KEYMAP_CORRECTIONS="euro2"
+#FONT="lat0-16 -m 8859-15"
+#LEGACY_CHARSET=
+
+
+
+
+
+
+

+ 9.6.8.1. Customizing + the Boot and Shutdown Scripts +

+
+
+
+

+ The LFS boot scripts boot and shut down a system in a + fairly efficient manner, but there are a few tweaks you can + make in the rc.site file to improve speed even more, and to + adjust messages according to your preferences. To do this, + adjust the settings in the /etc/sysconfig/rc.site file above. +

+
+
    +
  • +

    + During the boot script udev, there is a call to + udev + settle that requires some time to + complete. This time may or may not be required + depending on the devices in the system. If you only + have simple partitions and a single ethernet card, + the boot process will probably not need to wait for + this command. To skip it, set the variable + OMIT_UDEV_SETTLE=y. +

    +
  • +
  • +

    + The boot script udev_retry also runs udev settle by + default. This command is only needed if the + /var directory is + separately mounted, because the clock needs the + /var/lib/hwclock/adjtime file. + Other customizations may also need to wait for udev + to complete, but in many installations it is not + necessary. Skip the command by setting the variable + OMIT_UDEV_RETRY_SETTLE=y. +

    +
  • +
  • +

    + By default, the file system checks are silent. This + can appear to be a delay during the bootup process. + To turn on the fsck output, set + the variable VERBOSE_FSCK=y. +

    +
  • +
  • +

    + When rebooting, you may want to skip the filesystem + check, fsck, completely. + To do this, either create the file /fastboot or reboot the system with + the command /sbin/shutdown -f -r + now. On the other hand, you can force + all file systems to be checked by creating + /forcefsck or running + shutdown with the + -F parameter + instead of -f. +

    +

    + Setting the variable FASTBOOT=y will disable + fsck + during the boot process until it is removed. This is + not recommended on a permanent basis. +

    +
  • +
  • +

    + Normally, all files in the /tmp directory are deleted at boot + time. Depending on the number of files or directories + present, this can cause a noticeable delay in the + boot process. To skip removing these files set the + variable SKIPTMPCLEAN=y. +

    +
  • +
  • +

    + During shutdown, the init program sends + a TERM signal to each program it has started (e.g. + agetty), waits for a set time (default 3 seconds), + then sends each process a KILL signal and waits + again. This process is repeated in the sendsignals script + for any processes that are not shut down by their own + scripts. The delay for init can be set by + passing a parameter. For example to remove the delay + in init, pass the -t0 + parameter when shutting down or rebooting (e.g. + /sbin/shutdown -t0 -r + now). The delay for the sendsignals script + can be skipped by setting the parameter KILLDELAY=0. +

    +
  • +
+
+
+
+
+
+
+
+

+ 9.7. Configuring the System + Locale +

+
+
+
+
+

+ Some environment variables are necessary for native language + support. Setting them properly results in: +

+
+
    +
  • +

    + The output of programs being translated into your native + language +

    +
  • +
  • +

    + The correct classification of characters into letters, + digits and other classes. This is necessary for + bash to + properly accept non-ASCII characters in command lines in + non-English locales +

    +
  • +
  • +

    + The correct alphabetical sorting order for the country +

    +
  • +
  • +

    + The appropriate default paper size +

    +
  • +
  • +

    + The correct formatting of monetary, time, and date values +

    +
  • +
+
+

+ Replace <ll> + below with the two-letter code for your desired language (e.g., + en) and <CC> with the two-letter + code for the appropriate country (e.g., GB). <charmap> should be + replaced with the canonical charmap for your chosen locale. + Optional modifiers such as @euro + may also be present. +

+

+ The list of all locales supported by Glibc can be obtained by + running the following command: +

+
locale -a
+

+ Charmaps can have a number of aliases, e.g., ISO-8859-1 is also referred to as iso8859-1 and iso88591. Some applications cannot handle the + various synonyms correctly (e.g., require that UTF-8 is written as UTF-8, not utf8), + so it is the safest in most cases to choose the canonical name + for a particular locale. To determine the canonical name, run + the following command, where <locale name> is the + output given by locale + -a for your preferred locale (en_GB.iso88591 in our example). +

+
LC_ALL=<locale name> locale charmap
+

+ For the en_GB.iso88591 locale, the + above command will print: +

+
ISO-8859-1
+

+ This results in a final locale setting of en_GB.ISO-8859-1. It is important that the + locale found using the heuristic above is tested prior to it + being added to the Bash startup files: +

+
LC_ALL=<locale name> locale language
+LC_ALL=<locale name> locale charmap
+LC_ALL=<locale name> locale int_curr_symbol
+LC_ALL=<locale name> locale int_prefix
+

+ The above commands should print the language name, the + character encoding used by the locale, the local currency, and + the prefix to dial before the telephone number in order to get + into the country. If any of the commands above fail with a + message similar to the one shown below, this means that your + locale was either not installed in Chapter 8 or is not + supported by the default installation of Glibc. +

+
locale: Cannot set LC_* to default locale: No such file or directory
+

+ If this happens, you should either install the desired locale + using the localedef command, or + consider choosing a different locale. Further instructions + assume that there are no such error messages from Glibc. +

+

+ Other packages can also function incorrectly (but may not + necessarily display any error messages) if the locale name does + not meet their expectations. In those cases, investigating how + other Linux distributions support your locale might provide + some useful information. +

+

+ The shell program /bin/bash (here after + referred as “the + shell”) uses a collection of startup files to + help create the environment to run in. Each file has a specific + use and may affect login and interactive environments + differently. The files in the /etc directory provide global settings. If + equivalent files exist in the home directory, they may override + the global settings. +

+

+ An interactive login shell is started after a successful login, + using /bin/login, + by reading the /etc/passwd file. + An interactive non-login shell is started at the command-line + (e.g. [prompt]$/bin/bash). A non-interactive + shell is usually present when a shell script is running. It is + non-interactive because it is processing a script and not + waiting for user input between commands. +

+

+ Create the /etc/profile + once the proper locale settings have been + determined to set the desired locale, but set the + C.UTF-8 locale instead if running + in the Linux console (to prevent programs from outputting + characters that the Linux console is unable to render): +

+
cat > /etc/profile << "EOF"
+# Begin /etc/profile
+
+for i in $(locale); do
+  unset ${i%=*}
+done
+
+if [[ "$TERM" = linux ]]; then
+  export LANG=C.UTF-8
+else
+  export LANG=<ll>_<CC>.<charmap><@modifiers>
+fi
+
+# End /etc/profile
+EOF
+

+ The C (default) and en_US (the recommended one for United States + English users) locales are different. C uses the US-ASCII 7-bit character set, and + treats bytes with the high bit set as invalid characters. + That's why, e.g., the ls command substitutes them + with question marks in that locale. Also, an attempt to send + mail with such characters from Mutt or Pine results in + non-RFC-conforming messages being sent (the charset in the + outgoing mail is indicated as unknown 8-bit). It's suggested that you + use the C locale only if you are + certain that you will never need 8-bit characters. +

+
+
+
+
+

+ 9.8. Creating the /etc/inputrc + File +

+
+
+
+
+

+ The inputrc file is the + configuration file for the readline library, which provides + editing capabilities while the user is entering a line from the + terminal. It works by translating keyboard inputs into specific + actions. Readline is used by bash and most other shells as well + as many other applications. +

+

+ Most people do not need user-specific functionality so the + command below creates a global /etc/inputrc used by everyone who logs in. If + you later decide you need to override the defaults on a per + user basis, you can create a .inputrc file in the user's home directory + with the modified mappings. +

+

+ For more information on how to edit the inputrc file, see info bash under the + Readline Init File + section. info + readline is also a good source of information. +

+

+ Below is a generic global inputrc + along with comments to explain what the various options do. + Note that comments cannot be on the same line as commands. + Create the file using the following command: +

+
cat > /etc/inputrc << "EOF"
+# Begin /etc/inputrc
+# Modified by Chris Lynn <roryo@roryo.dynup.net>
+
+# Allow the command prompt to wrap to the next line
+set horizontal-scroll-mode Off
+
+# Enable 8-bit 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. Creating the /etc/shells + File +

+
+
+
+
+

+ The shells file contains a list + of login shells on the system. Applications use this file to + determine whether a shell is valid. For each shell a single + line should be present, consisting of the shell's path relative + to the root of the directory structure (/). +

+

+ For example, this file is consulted by chsh to determine whether an + unprivileged user may change the login shell for her own + account. If the command name is not listed, the user will be + denied the ability to change shells. +

+

+ It is a requirement for applications such as GDM which does not populate the face + browser if it can't find /etc/shells, or FTP daemons which + traditionally disallow access to users with shells not included + in this file. +

+
cat > /etc/shells << "EOF"
+# Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells
+EOF
+
+
+
+
+
+

+ Chapter 10. Making the LFS + System Bootable +

+
+
+
+
+
+
+
+

+ 10.1. Introduction +

+
+
+
+
+

+ It is time to make the LFS system bootable. This chapter + discusses creating the /etc/fstab + file, building a kernel for the new LFS system, and installing + the GRUB boot loader so that the LFS system can be selected for + booting at startup. +

+
+
+
+
+

+ 10.2. Creating the /etc/fstab + File +

+
+
+
+
+

+ The /etc/fstab file is used by + some programs to determine where file systems are to be mounted + by default, in which order, and which must be checked (for + integrity errors) prior to mounting. Create a new file systems + table like this: +

+
cat > /etc/fstab << "EOF"
+# Begin /etc/fstab
+
+# file system  mount-point    type     options             dump  fsck
+#                                                                order
+
+/dev/<xxx>     /              <fff>    defaults            1     1
+/dev/<yyy>     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
+tmpfs          /dev/shm       tmpfs    nosuid,nodev        0     0
+cgroup2        /sys/fs/cgroup cgroup2  nosuid,noexec,nodev 0     0
+
+# End /etc/fstab
+EOF
+

+ Replace <xxx>, + <yyy>, and + <fff> with the + values appropriate for the system, for example, sda2, sda5, and + ext4. For details on the six + fields in this file, see fstab(5). +

+

+ Filesystems with MS-DOS or Windows origin (i.e. vfat, ntfs, + smbfs, cifs, iso9660, udf) need a special option, utf8, in + order for non-ASCII characters in file names to be interpreted + properly. For non-UTF-8 locales, the value of iocharset should be set to be the same as the + character set of the locale, adjusted in such a way that the + kernel understands it. This works if the relevant character set + definition (found under File systems -> Native Language + Support when configuring the kernel) has been compiled into the + kernel or built as a module. However, if the character set of + the locale is UTF-8, the corresponding option iocharset=utf8 would make the file system case + sensitive. To fix this, use the special option utf8 instead of iocharset=utf8, for UTF-8 locales. The + “codepage” option is also needed for vfat + and smbfs filesystems. It should be set to the codepage number + used under MS-DOS in your country. For example, in order to + mount USB flash drives, a ru_RU.KOI8-R user would need the + following in the options portion of its mount line in + /etc/fstab: +

+
noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
+

+ The corresponding options fragment for ru_RU.UTF-8 users is: +

+
noauto,user,quiet,showexec,codepage=866,utf8
+

+ Note that using iocharset is the + default for iso8859-1 (which keeps + the file system case insensitive), and the utf8 option tells the kernel to convert the + file names using UTF-8 so they can be interpreted in the UTF-8 + locale. +

+

+ It is also possible to specify default codepage and iocharset + values for some filesystems during kernel configuration. The + relevant parameters are named “Default NLS Option” (CONFIG_NLS_DEFAULT), “Default Remote NLS + Option” (CONFIG_SMB_NLS_DEFAULT), “Default codepage for + FAT” (CONFIG_FAT_DEFAULT_CODEPAGE), and “Default iocharset for + FAT” (CONFIG_FAT_DEFAULT_IOCHARSET). There is no way + to specify these settings for the ntfs filesystem at kernel + compilation time. +

+
+
+
+
+

+ 10.3. Linux-6.16.1 +

+
+
+
+
+
+

+ The Linux package contains the Linux kernel. +

+
+
+
+ Approximate build time: + 0.4 - 32 SBU (typically about 2.5 + SBU) +
+
+ Required disk space: + 1.7 - 14 GB (typically about 2.3 + GB) +
+
+
+
+
+

+ 10.3.1. Installation of the kernel +

+

+ Building the kernel involves a few steps—configuration, + compilation, and installation. Read the README file in the kernel source tree for + alternative methods to the way this book configures the + kernel. +

+
+

+ Important +

+

+ Building the linux kernel for the first time is one of the + most challenging tasks in LFS. Getting it right depends on + the specific hardware for the target system and your + specific needs. There are almost 12,000 configuration items + that are available for the kernel although only about a + third of them are needed for most computers. The LFS + editors recommend that users not familiar with this process + follow the procedures below fairly closely. The objective + is to get an initial system to a point where you can log in + at the command line when you reboot later in Section 11.3, + “Rebooting the System.” At this point optimization and + customization is not a goal. +

+

+ For general information on kernel configuration see + + https://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt. + Additional information about configuring and building the + kernel can be found at https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/. + These references are a bit dated, but still give a + reasonable overview of the process. +

+

+ If all else fails, you can ask for help on the lfs-support + mailing list. Note that subscribing is required in order + for the list to avoid spam. +

+
+

+ Prepare for compilation by running the following command: +

+
make mrproper
+

+ This ensures that the kernel tree is absolutely clean. The + kernel team recommends that this command be issued prior to + each kernel compilation. Do not rely on the source tree being + clean after un-tarring. +

+

+ There are several ways to configure the kernel options. + Usually, this is done through a menu-driven interface, for + example: +

+
make menuconfig
+
+

+ The meaning of optional make environment + variables: +

+
+
+ LANG=<host_LANG_value> + LC_ALL= +
+
+

+ This establishes the locale setting to the one used on + the host. This may be needed for a proper menuconfig + ncurses interface line drawing on a UTF-8 linux text + console. +

+

+ If used, be sure to replace <host_LANG_value> + by the value of the $LANG + variable from your host. You can alternatively use + instead the host's value of $LC_ALL or $LC_CTYPE. +

+
+
+ make + menuconfig +
+
+

+ This launches an ncurses menu-driven interface. For + other (graphical) interfaces, type make help. +

+
+
+
+
+

+ Note +

+

+ A good starting place for setting up the kernel + configuration is to run make + defconfig. This will set the base + configuration to a good state that takes your current + system architecture into account. +

+

+ Be sure to enable/disable/set the following features or the + system might not work correctly or boot at all: +

+
General setup --->
+  [ ] Compile the kernel with warnings as errors                        [WERROR]
+  CPU/Task time and stats accounting --->
+    [*] Pressure stall information tracking                                [PSI]
+    [ ]   Require boot parameter to enable pressure stall information tracking
+                                                     ...  [PSI_DEFAULT_DISABLED]
+  < > Enable kernel headers through /sys/kernel/kheaders.tar.xz      [IKHEADERS]
+  [*] Control Group support --->                                       [CGROUPS]
+    [*] Memory controller                                                [MEMCG]
+  [ ] Configure standard kernel features (expert users) --->            [EXPERT]
+
+Processor type and features --->
+  [*] Build a relocatable kernel                                   [RELOCATABLE]
+  [*]   Randomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
+
+General architecture-dependent options --->
+  [*] Stack Protector buffer overflow detection                 [STACKPROTECTOR]
+  [*]   Strong Stack Protector                           [STACKPROTECTOR_STRONG]
+
+Device Drivers --->
+  Generic Driver Options --->
+    [ ] Support for uevent helper                                [UEVENT_HELPER]
+    [*] Maintain a devtmpfs filesystem to mount at /dev               [DEVTMPFS]
+    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
+                                                           ...  [DEVTMPFS_MOUNT]
+  Firmware Drivers --->
+    [*] Mark VGA/VBE/EFI FB as generic system framebuffer       [SYSFB_SIMPLEFB]
+  Graphics support --->
+    <*>    Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    [*]    Display a user-friendly message when a kernel panic occurs
+                                                                ...  [DRM_PANIC]
+    (kmsg)   Panic screen formatter                           [DRM_PANIC_SCREEN]
+    Supported DRM clients --->
+      [*] Enable legacy fbdev support for your modesetting driver
+                                                      ...  [DRM_FBDEV_EMULATION]
+    Drivers for system framebuffers --->
+      <*> Simple framebuffer driver                              [DRM_SIMPLEDRM]
+    Console display driver support --->
+      [*] Framebuffer Console support                      [FRAMEBUFFER_CONSOLE]
+

+ Enable some additional features if you are building a + 64-bit system. If you are using menuconfig, enable them in + the order of CONFIG_PCI_MSI first, then + CONFIG_IRQ_REMAP, + at last CONFIG_X86_X2APIC because an + option only shows up after its dependencies are selected. +

+
Processor type and features --->
+  [*] x2APIC interrupt controller architecture support              [X86_X2APIC]
+
+Device Drivers --->
+  [*] PCI support --->                                                     [PCI]
+    [*] Message Signaled Interrupts (MSI and MSI-X)                    [PCI_MSI]
+  [*] IOMMU Hardware Support --->                                [IOMMU_SUPPORT]
+    [*] Support for Interrupt Remapping                              [IRQ_REMAP]
+

+ If the partition for the LFS system is in a NVME SSD (i. e. + the device node for the partition is /dev/nvme* instead of /dev/sd*), enable NVME support or the LFS + system won't boot: +

+
Device Drivers --->
+  NVME Support --->
+    <*> NVM Express block device                                  [BLK_DEV_NVME]
+
+

+ There are several other options that may be desired depending + on the requirements for the system. For a list of options + needed for BLFS packages, see the + BLFS Index of Kernel Settings. +

+
+

+ Note +

+

+ If your host hardware is using UEFI and you wish to boot + the LFS system with it, you should adjust some kernel + configuration following + the BLFS page even if you'll + use the UEFI bootloader from the host + distro. +

+
+
+

+ The rationale for the above configuration + items: +

+
+
+ Randomize + the address of the kernel image + (KASLR) +
+
+

+ Enable ASLR for kernel image, to mitigate some attacks + based on fixed addresses of sensitive data or code in + the kernel. +

+
+
+ Compile + the kernel with warnings as errors +
+
+

+ This may cause building failure if the compiler and/or + configuration are different from those of the kernel + developers. +

+
+
+ Enable + kernel headers through + /sys/kernel/kheaders.tar.xz +
+
+

+ This will require cpio building the + kernel. cpio is not installed + by LFS. +

+
+
+ Configure + standard kernel features (expert + users) +
+
+

+ This will make some options show up in the + configuration interface but changing those options may + be dangerous. Do not use this unless you know what you + are doing. +

+
+
+ Strong + Stack Protector +
+
+

+ Enable SSP for the kernel. We've enabled it for the + entire userspace with --enable-default-ssp + configuring GCC, but the kernel does not use GCC + default setting for SSP. We enable it explicitly here. +

+
+
+ Support + for uevent helper +
+
+

+ Having this option set may interfere with device + management when using Udev. +

+
+
+ Maintain a + devtmpfs +
+
+

+ This will create automated device nodes which are + populated by the kernel, even without Udev running. + Udev then runs on top of this, managing permissions and + adding symlinks. This configuration item is required + for all users of Udev. +

+
+
+ Automount + devtmpfs at /dev +
+
+

+ This will mount the kernel view of the devices on /dev + upon switching to root filesystem just before starting + init. +

+
+
+ Display a + user-friendly message when a kernel panic + occurs +
+
+

+ This will make the kernel correctly display the message + in case a kernel panic happens and a running DRM driver + supports to do so. Without this, it would be more + difficult to diagnose a panic: if no DRM driver is + running, we'd be on the VGA console which can only hold + 24 lines and the relevant kernel message is often + flushed away; if a DRM driver is running, the display + is often completely messed up on panic. As of + Linux-6.12, none of the dedicated drivers for + mainstream GPU models really supports this, but it's + supported by the “Simple framebuffer driver” which + runs on the VESA (or EFI) framebuffer before the + dedicated GPU driver is loaded. If the dedicated GPU + driver is built as a module (instead of a part of the + kernel image) and no initramfs is used, this + functionality will work just fine before the root file + system is mounted and it's already enough for providing + information about most LFS configuration errors causing + a panic (for example, an incorrect root= setting in + Section 10.4, + “Using GRUB to Set Up the Boot Process”). +

+
+
+ Panic + screen formatter +
+
+

+ Set this kmsg to make sure + the last kernel messages lines are displayed when a + kernel panic happens. The default, user, would make the kernel show only + a “user + friendly” panic message which is not + helpful on diagnostic. The third choice, qr_code, would make the kernel to + compress the last kernel message lines into a QR code + and display it. The QR code can hold more message lines + than plain text and it can be decoded with an external + device (like a smart phone). But it requires a Rust + compiler that LFS does not provide. +

+
+
+ Mark + VGA/VBE/EFI FB as generic system framebuffer + and Simple framebuffer + driver +
+
+

+ These allow to use the VESA framebuffer (or the EFI + framebuffer if booting the LFS system via UEFI) as a + DRM device. The VESA framebuffer will be set up by GRUB + (or the EFI framebuffer will be set up by the UEFI + firmware), so the DRM panic handler can function before + the GPU-specific DRM driver is loaded. +

+
+
+ Enable + legacy fbdev support for your modesetting + driver and Framebuffer Console + support +
+
+

+ These are needed to display the Linux console on a GPU + driven by a DRI (Direct Rendering Infrastructure) + driver. As CONFIG_DRM + (Direct Rendering Manager) is enabled, we should enable + these two options as well or we'll see a blank screen + once the DRI driver is loaded. +

+
+
+ Support + x2apic +
+
+

+ Support running the interrupt controller of 64-bit x86 + processors in x2APIC mode. x2APIC may be enabled by + firmware on 64-bit x86 systems, and a kernel without + this option enabled will panic on boot if x2APIC is + enabled by firmware. This option has no effect, but + also does no harm if x2APIC is disabled by the + firmware. +

+
+
+
+

+ Alternatively, make + oldconfig may be more appropriate in some + situations. See the README file + for more information. +

+

+ If desired, skip kernel configuration by copying the kernel + config file, .config, from the + host system (assuming it is available) to the unpacked + linux-6.16.1 directory. + However, we do not recommend this option. It is often better + to explore all the configuration menus and create the kernel + configuration from scratch. +

+

+ Compile the kernel image and modules: +

+
make
+

+ If using kernel modules, module configuration in /etc/modprobe.d may be required. + Information pertaining to modules and kernel configuration is + located in Section 9.3, + “Overview of Device and Module Handling” and in the + kernel documentation in the linux-6.16.1/Documentation directory. Also, + modprobe.d(5) + may be of interest. +

+

+ Unless module support has been disabled in the kernel + configuration, install the modules with: +

+
make modules_install
+

+ After kernel compilation is complete, additional steps are + required to complete the installation. Some files need to be + copied to the /boot directory. +

+
+

+ Caution +

+

+ If you've decided to use a separate /boot partition for the LFS system (maybe + sharing a /boot partition + with the host distro), the files copied below should go + there. The easiest way to do that is to create the entry + for /boot in /etc/fstab first (read the previous + section for details), then issue the following command as + the root user in the + chroot environment: +

+
mount /boot
+

+ The path to the device node is omitted in the command + because mount + can read it from /etc/fstab. +

+
+

+ The path to the kernel image may vary depending on the + platform being used. The filename below can be changed to + suit your taste, but the stem of the filename should be + vmlinuz to be + compatible with the automatic setup of the boot process + described in the next section. The following command assumes + an x86 architecture: +

+
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.16.1-lfs-12.4
+

+ System.map is a symbol file for + the kernel. It maps the function entry points of every + function in the kernel API, as well as the addresses of the + kernel data structures for the running kernel. It is used as + a resource when investigating kernel problems. Issue the + following command to install the map file: +

+
cp -iv System.map /boot/System.map-6.16.1
+

+ The kernel configuration file .config produced by the make menuconfig step above + contains all the configuration selections for the kernel that + was just compiled. It is a good idea to keep this file for + future reference: +

+
cp -iv .config /boot/config-6.16.1
+

+ Install the documentation for the Linux kernel: +

+
cp -r Documentation -T /usr/share/doc/linux-6.16.1
+

+ It is important to note that the files in the kernel source + directory are not owned by root. Whenever a package is + unpacked as user root + (like we did inside chroot), the files have the user and + group IDs of whatever they were on the packager's computer. + This is usually not a problem for any other package to be + installed because the source tree is removed after the + installation. However, the Linux source tree is often + retained for a long time. Because of this, there is a chance + that whatever user ID the packager used will be assigned to + somebody on the machine. That person would then have write + access to the kernel source. +

+
+

+ Note +

+

+ In many cases, the configuration of the kernel will need to + be updated for packages that will be installed later in + BLFS. Unlike other packages, it is not necessary to remove + the kernel source tree after the newly built kernel is + installed. +

+

+ If the kernel source tree is going to be retained, run + chown -R 0:0 + on the linux-6.16.1 directory + to ensure all files are owned by user root. +

+

+ If you are updating the configuration and rebuilding the + kernel from a retained kernel source tree, normally you + should not run + the make + mrproper command. The command would purge + the .config file and all the + .o files from the previous + build. Despite it's easy to restore .config from the copy in /boot, purging all the .o files is still a waste: for a simple + configuration change, often only a few .o files need to be (re)built and the + kernel build system will correctly skip other .o files if they are not purged. +

+

+ On the other hand, if you've upgraded GCC, you should run + make clean to + purge all the .o files from + the previous build, or the new build may fail. +

+
+
+

+ Warning +

+

+ Some kernel documentation recommends creating a symlink + from /usr/src/linux pointing + to the kernel source directory. This is specific to kernels + prior to the 2.6 series and must + not be created on an LFS system as it can cause + problems for packages you may wish to build once your base + LFS system is complete. +

+
+
+
+

+ 10.3.2. + Configuring Linux Module Load Order +

+

+ Most of the time Linux modules are loaded automatically, but + sometimes it needs some specific direction. The program that + loads modules, modprobe or insmod, uses /etc/modprobe.d/usb.conf for this purpose. + This file needs to be created so that if the USB drivers + (ehci_hcd, ohci_hcd and uhci_hcd) have been built as modules, + they will be loaded in the correct order; ehci_hcd needs to + be loaded prior to ohci_hcd and uhci_hcd in order to avoid a + warning being output at boot time. +

+

+ Create a new file /etc/modprobe.d/usb.conf by running the + following: +

+
install -v -m755 -d /etc/modprobe.d
+cat > /etc/modprobe.d/usb.conf << "EOF"
+# Begin /etc/modprobe.d/usb.conf
+
+install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
+install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
+
+# End /etc/modprobe.d/usb.conf
+EOF
+
+
+

+ 10.3.3. + Contents of Linux +

+
+
+
+ Installed files: + config-6.16.1, + vmlinuz-6.16.1-lfs-12.4, and System.map-6.16.1 +
+
+ Installed directories: + /lib/modules, + /usr/share/doc/linux-6.16.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ config-6.16.1 +

+
+

+ Contains all the configuration selections for the + kernel +

+
+

+ vmlinuz-6.16.1-lfs-12.4 +

+
+

+ The engine of the Linux system. When turning on the + computer, the kernel is the first part of the + operating system that gets loaded. It detects and + initializes all components of the computer's + hardware, then makes these components available as + a tree of files to the software and turns a single + CPU into a multitasking machine capable of running + scores of programs seemingly at the same time +

+
+

+ System.map-6.16.1 +

+
+

+ A list of addresses and symbols; it maps the entry + points and addresses of all the functions and data + structures in the kernel +

+
+
+
+
+
+
+
+

+ 10.4. Using GRUB to Set Up the + Boot Process +

+
+
+
+
+
+

+ Note +

+

+ If your system has UEFI support and you wish to boot LFS with + UEFI, you should skip the instructions in this page but still + learn the syntax of grub.cfg + and the method to specify a partition in the file from this + page, and configure GRUB with UEFI support using the + instructions provided in + the BLFS page. +

+
+
+

+ 10.4.1. Introduction +

+
+

+ Warning +

+

+ Configuring GRUB incorrectly can render your system + inoperable without an alternate boot device such as a + CD-ROM or bootable USB drive. This section is not required + to boot your LFS system. You may just want to modify your + current boot loader, e.g. Grub-Legacy, GRUB2, or LILO. +

+
+

+ Ensure that an emergency boot disk is ready to “rescue” the + computer if the computer becomes unusable (un-bootable). If + you do not already have a boot device, you can create one. In + order for the procedure below to work, you need to jump ahead + to BLFS and install xorriso from the + libisoburn package. +

+
cd /tmp
+grub-mkrescue --output=grub-img.iso
+xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
+
+
+

+ 10.4.2. GRUB Naming Conventions +

+

+ GRUB uses its own naming structure for drives and partitions + in the form of (hdn,m), where n is the hard drive number and + m is the partition + number. The hard drive numbers start from zero, but the + partition numbers start from one for normal partitions (from + five for extended partitions). Note that this is different + from earlier versions where both numbers started from zero. + For example, partition sda1 is + (hd0,1) to GRUB and + sdb3 is (hd1,3). In contrast to Linux, + GRUB does not consider CD-ROM drives to be hard drives. For + example, if using a CD on hdb + and a second hard drive on hdc, + that second hard drive would still be (hd1). +

+
+
+

+ 10.4.3. Setting Up the Configuration +

+

+ GRUB works by writing data to the first physical track of the + hard disk. This area is not part of any file system. The + programs there access GRUB modules in the boot partition. The + default location is /boot/grub/. +

+

+ The location of the boot partition is a choice of the user + that affects the configuration. One recommendation is to have + a separate small (suggested size is 200 MB) partition just + for boot information. That way each build, whether LFS or + some commercial distro, can access the same boot files and + access can be made from any booted system. If you choose to + do this, you will need to mount the separate partition, move + all files in the current /boot + directory (e.g. the Linux kernel you just built in the + previous section) to the new partition. You will then need to + unmount the partition and remount it as /boot. If you do this, be sure to update + /etc/fstab. +

+

+ Leaving /boot on the current + LFS partition will also work, but configuration for multiple + systems is more difficult. +

+

+ Using the above information, determine the appropriate + designator for the root partition (or boot partition, if a + separate one is used). For the following example, it is + assumed that the root (or separate boot) partition is + sda2. +

+

+ Install the GRUB files into /boot/grub and set up the boot track: +

+
+

+ Warning +

+

+ The following command will overwrite the current boot + loader. Do not run the command if this is not desired, for + example, if using a third party boot manager to manage the + Master Boot Record (MBR). +

+
+
grub-install /dev/sda
+
+

+ Note +

+

+ If the system has been booted using UEFI, grub-install will try to + install files for the x86_64-efi target, but those + files have not been installed in Chapter 8. + If this is the case, add --target + i386-pc to the command above. +

+
+
+
+

+ 10.4.4. Creating the + GRUB Configuration File +

+

+ Generate /boot/grub/grub.cfg: +

+
cat > /boot/grub/grub.cfg << "EOF"
+# Begin /boot/grub/grub.cfg
+set default=0
+set timeout=5
+
+insmod part_gpt
+insmod ext2
+set root=(hd0,2)
+set gfxpayload=1024x768x32
+
+menuentry "GNU/Linux, Linux 6.16.1-lfs-12.4" {
+        linux   /boot/vmlinuz-6.16.1-lfs-12.4 root=/dev/sda2 ro
+}
+EOF
+

+ The insmod + commands load the GRUB + modules named part_gpt and + ext2. Despite the naming, + ext2 actually supports + ext2, ext3, and ext4 filesystems. The grub-install command has + embedded some modules into the main GRUB image (installed into the MBR or + the GRUB BIOS partition) to access the other modules (in + /boot/grub/i386-pc) without a + chicken-or-egg issue, so with a typical configuration these + two modules are already embedded and those two insmod commands will do + nothing. But they do no harm anyway, and they may be needed + with some rare configurations. +

+

+ The set + gfxpayload=1024x768x32 command sets the + resolution and color depth of the VESA framebuffer to be + passed to the kernel. It's necessary for the kernel SimpleDRM + driver to use the VESA framebuffer. You can use a different + resolution or color depth value which better suits for your + monitor. +

+
+

+ Note +

+

+ From GRUB's perspective, + the kernel files are relative to the partition used. If you + used a separate /boot partition, remove /boot from the + above linux line. + You will also need to change the set root line to point to the + boot partition. +

+
+
+

+ Note +

+

+ The GRUB designator for a partition may change if you added + or removed some disks (including removable disks like USB + thumb devices). The change may cause boot failure because + grub.cfg refers to some + “old” + designators. If you wish to avoid such a problem, you may + use the UUID of a partition and the UUID of a filesystem + instead of a GRUB designator to specify a device. Run + lsblk -o + UUID,PARTUUID,PATH,MOUNTPOINT to show the + UUIDs of your filesystems (in the UUID column) and partitions (in the + PARTUUID column). Then replace + set root=(hdx,y) with + search --set=root --fs-uuid + <UUID of the filesystem + where the kernel is installed>, and + replace root=/dev/sda2 with + root=PARTUUID=<UUID of the partition where LFS is + built>. +

+

+ Note that the UUID of a partition is completely different + from the UUID of the filesystem in this partition. Some + online resources may instruct you to use root=UUID=<filesystem + UUID> instead of root=PARTUUID=<partition + UUID>, but doing so will require an + initramfs, which is beyond the scope of LFS. +

+

+ The name of the device node for a partition in /dev may also change (this is less likely + than a GRUB designator change). You can also replace paths + to device nodes like /dev/sda1 + with PARTUUID=<partition + UUID>, in /etc/fstab, to avoid a potential boot + failure in case the device node name has changed. +

+
+

+ GRUB is an extremely powerful program and it provides a + tremendous number of options for booting from a wide variety + of devices, operating systems, and partition types. There are + also many options for customization such as graphical splash + screens, playing sounds, mouse input, etc. The details of + these options are beyond the scope of this introduction. +

+
+

+ Caution +

+

+ There is a command, grub-mkconfig, that can write a + configuration file automatically. It uses a set of scripts + in /etc/grub.d/ and will destroy any customizations that + you make. These scripts are designed primarily for + non-source distributions and are not recommended for LFS. + If you install a commercial Linux distribution, there is a + good chance that this program will be run. Be sure to back + up your grub.cfg file. +

+
+
+
+
+
+
+
+

+ Chapter 11. The End +

+
+
+
+
+
+
+
+

+ 11.1. The End +

+
+
+
+
+

+ Well done! The new LFS system is installed! We wish you much + success with your shiny new custom-built Linux system. +

+

+ It may be a good idea to create an /etc/lfs-release file. By having this file, + it is very easy for you (and for us if you need to ask for help + at some point) to find out which LFS version is installed on + the system. Create this file by running: +

+
echo 12.4 > /etc/lfs-release
+

+ Two files describing the installed system may be used by + packages that can be installed on the system later, either in + binary form or by building them. +

+

+ The first one shows the status of your new system with respect + to the Linux Standards Base (LSB). To create this file, run: +

+
cat > /etc/lsb-release << "EOF"
+DISTRIB_ID="Linux From Scratch"
+DISTRIB_RELEASE="12.4"
+DISTRIB_CODENAME="<your name here>"
+DISTRIB_DESCRIPTION="Linux From Scratch"
+EOF
+

+ The second one contains roughly the same information, and is + used by systemd and some graphical desktop environments. To + create this file, run: +

+
cat > /etc/os-release << "EOF"
+NAME="Linux From Scratch"
+VERSION="12.4"
+ID=lfs
+PRETTY_NAME="Linux From Scratch 12.4"
+VERSION_CODENAME="<your name here>"
+HOME_URL="https://www.linuxfromscratch.org/lfs/"
+RELEASE_TYPE="stable"
+EOF
+

+ Be sure to customize the fields 'DISTRIB_CODENAME' and + 'VERSION_CODENAME' to make the system uniquely yours. +

+
+
+
+
+

+ 11.2. Get Counted +

+
+
+
+
+

+ Now that you have finished the book, do you want to be counted + as an LFS user? Head over to https://www.linuxfromscratch.org/cgi-bin/lfscounter.php + and register as an LFS user by entering your name and the first + LFS version you have used. +

+

+ Let's reboot into LFS now. +

+
+
+
+
+

+ 11.3. Rebooting the System +

+
+
+
+
+

+ Now that all of the software has been installed, it is time to + reboot your computer. However, there are still a few things to + check. Here are some suggestions: +

+
+
    +
  • +

    + Install any + firmware needed if the kernel driver for your + hardware requires some firmware files to function + properly. +

    +
  • +
  • +

    + Ensure a password is set for the root user. +

    +
  • +
  • +

    + A review of the following configuration files is also + appropriate at this point. +

    +
    +
      +
    • +

      + /etc/fstab +

      +
    • +
    • +

      + /etc/hosts +

      +
    • +
    • +

      + /etc/inputrc +

      +
    • +
    • +

      + /etc/profile +

      +
    • +
    • +

      + /etc/resolv.conf +

      +
    • +
    • +

      + /etc/vimrc +

      +
    • +
    • +

      + /etc/sysconfig/ifconfig.eth0 +

      +
    • +
    +
    +
  • +
+
+

+ Now that we have said that, let's move on to booting our shiny + new LFS installation for the first time! First exit from the chroot + environment: +

+
logout
+

+ Then unmount the virtual file systems: +

+
umount -v $LFS/dev/pts
+mountpoint -q $LFS/dev/shm && umount -v $LFS/dev/shm
+umount -v $LFS/dev
+umount -v $LFS/run
+umount -v $LFS/proc
+umount -v $LFS/sys
+

+ If multiple partitions were created, unmount the other + partitions before unmounting the main one, like this: +

+
umount -v $LFS/home
+umount -v $LFS
+

+ Unmount the LFS file system itself: +

+
umount -v $LFS
+

+ Now, reboot the system. +

+

+ Assuming the GRUB boot loader was set up as outlined earlier, + the menu is set to boot LFS + 12.4 automatically. +

+

+ When the reboot is complete, the LFS system is ready for use. + What you will see is a simple “login: ” prompt. At this point, you can + proceed to the BLFS + Book where you can add more software to suit your needs. +

+

+ If your reboot is not successful, it is time to + troubleshoot. For hints on solving initial booting problems, + see https://www.linuxfromscratch.org/lfs/troubleshooting.html. +

+
+
+
+
+

+ 11.4. Additional Resources +

+
+
+
+
+

+ Thank you for reading this LFS book. We hope that you have + found this book helpful and have learned more about the system + creation process. +

+

+ Now that the LFS system is installed, you may be wondering + “What + next?” To answer that question, we have compiled + a list of resources for you. +

+
+
    +
  • +

    + Maintenance +

    +

    + Bugs and security notices are reported regularly for all + software. Since an LFS system is compiled from source, it + is up to you to keep abreast of such reports. There are + several online resources that track such reports, some of + which are shown below: +

    +
    +
      +
    • +

      + LFS + Security Advisories +

      +

      + This is a list of security vulnerabilities + discovered in the LFS book after it's published. +

      +
    • +
    • +

      + Open Source + Security Mailing List +

      +

      + This is a mailing list for discussion of security + flaws, concepts, and practices in the Open Source + community. +

      +
    • +
    +
    +
  • +
  • +

    + LFS Hints +

    +

    + The LFS Hints are a collection of educational documents + submitted by volunteers in the LFS community. The hints + are available at + https://www.linuxfromscratch.org/hints/downloads/files/. +

    +
  • +
  • +

    + Mailing lists +

    +

    + There are several LFS mailing lists you may subscribe to + if you are in need of help, want to stay current with the + latest developments, want to contribute to the project, + and more. See Chapter 1 - + Mailing Lists for more information. +

    +
  • +
  • +

    + The Linux Documentation Project +

    +

    + The goal of The Linux Documentation Project (TLDP) is to + collaborate on all of the issues of Linux documentation. + The TLDP features a large collection of HOWTOs, guides, + and man pages. It is located at https://tldp.org/. +

    +
  • +
+
+
+
+
+
+

+ 11.5. Getting + Started After LFS +

+
+
+
+
+
+

+ 11.5.1. Deciding what to do next +

+

+ Now that LFS is complete and you have a bootable system, what + do you do? The next step is to decide how to use it. + Generally, there are two broad categories to consider: + workstation or server. Indeed, these categories are not + mutually exclusive. The applications needed for each category + can be combined onto a single system, but let's look at them + separately for now. +

+

+ A server is the simpler category. Generally this consists of + a web server such as the + Apache HTTP Server and a database server such as + + MariaDB. However other services are possible. The + operating system embedded in a single use device falls into + this category. +

+

+ On the other hand, a workstation is much more complex. It + generally requires a graphical user environment such as + + LXDE, + XFCE, + KDE, or + Gnome based on a basic + graphical environment and several graphical based + applications such as the + Firefox web browser, + Thunderbird email client, or + LibreOffice office suite. These applications require many + (several hundred depending on desired capabilities) more + packages of support applications and libraries. +

+

+ In addition to the above, there is a set of applications for + system management for all kinds of systems. These + applications are all in the BLFS book. Not all packages are + needed in every environment. For example + dhcpcd, is not normally appropriate for a server and + + wireless_tools, are normally only useful for a laptop + system. +

+
+
+

+ 11.5.2. Working in a basic LFS environment +

+

+ When you initially boot into LFS, you have all the internal + tools to build additional packages. Unfortunately, the user + environment is quite sparse. There are a couple of ways to + improve this: +

+
+
+
+
+

+ 11.5.2.1. Work from the + LFS host in chroot +

+
+
+
+

+ This method provides a complete graphical environment where + a full featured browser and copy/paste capabilities are + available. This method allows using applications like the + host's version of wget to download package sources to a + location available when working in the chroot environment. +

+

+ In order to properly build packages in chroot, you will + also need to remember to mount the virtual file systems if + they are not already mounted. One way to do this is to + create a script on the HOST system: +

+
cat > ~/mount-virt.sh << "EOF"
+#!/bin/bash
+
+function mountbind
+{
+   if ! mountpoint $LFS/$1 >/dev/null; then
+     $SUDO mount --bind /$1 $LFS/$1
+     echo $LFS/$1 mounted
+   else
+     echo $LFS/$1 already mounted
+   fi
+}
+
+function mounttype
+{
+   if ! mountpoint $LFS/$1 >/dev/null; then
+     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
+     echo $LFS/$1 mounted
+   else
+     echo $LFS/$1 already mounted
+   fi
+}
+
+if [ $EUID -ne 0 ]; then
+  SUDO=sudo
+else
+  SUDO=""
+fi
+
+if [ x$LFS == x ]; then
+  echo "LFS not set"
+  exit 1
+fi
+
+mountbind dev
+mounttype dev/pts devpts devpts -o gid=5,mode=620
+mounttype proc    proc   proc
+mounttype sys     sysfs  sysfs
+mounttype run     tmpfs  run
+if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
+fi 
+
+#mountbind usr/src
+#mountbind boot
+#mountbind home
+EOF
+

+ Note that the last three commands in the script are + commented out. These are useful if those directories are + mounted as separate partitions on the host system and will + be mounted when booting the completed LFS/BLFS system. +

+

+ The script can be run with bash ~/mount-virt.sh as + either a regular user (recommended) or as root. If run as a regular user, sudo is + required on the host system. +

+

+ Another issue pointed out by the script is where to store + downloaded package files. This location is arbitrary. It + can be in a regular user's home directory such as ~/sources + or in a global location like /usr/src. Our recommendation + is not to mix BLFS sources and LFS sources in (from the + chroot environment) /sources. In any case, the packages + must be accessible inside the chroot environment. +

+

+ A last convenience feature presented here is to streamline + the process of entering the chroot environment. This can be + done with an alias placed in a user's ~/.bashrc file on the + host system: +

+
alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
+PATH=/usr/bin:/usr/sbin /bin/bash --login'
+

+ This alias is a little tricky because of the quoting and + levels of backslash characters. It must be all on a single + line. The above command has been split in two for + presentation purposes. +

+
+
+
+
+
+

+ 11.5.2.2. Work remotely + via ssh +

+
+
+
+

+ This method also provides a full graphical environment, but + first requires installing + sshd on the LFS system, usually in chroot. It also + requires a second computer. This method has the advantage + of being simple by not requiring the complexity of the + chroot environment. It also uses your LFS built kernel for + all additional packages and still provides a complete + system for installing packages. +

+

+ You may use the scp command to upload the + package sources to be built onto the LFS system. If you + want to download the sources onto the LFS system directly + instead, install + libtasn1, + p11-kit, + make-ca, and + wget in chroot (or upload their sources using + scp after + booting the LFS system). +

+
+
+
+
+
+

+ 11.5.2.3. Work from the + LFS command line +

+
+
+
+

+ This method requires installing + libtasn1, + p11-kit, + make-ca, + wget, + gpm, and + links (or + lynx) in chroot and then rebooting into the new LFS + system. At this point the default system has six virtual + consoles. Switching consoles is as easy as using the + Alt+Fx key combinations where + Fx is between + F1 and + F6. The + Alt+← and Alt+→ combinations also will + change the console. +

+

+ At this point you can log into two different virtual + consoles and run the links or lynx browser in one console + and bash in the other. GPM then allows copying commands + from the browser with the left mouse button, switching + consoles, and pasting into the other console. +

+
+

+ Note +

+

+ As a side note, switching of virtual consoles can also be + done from an X Window instance with the Ctrl+Alt+Fx key combination, but + the mouse copy operation does not work between the + graphical interface and a virtual console. You can return + to the X Window display with the Ctrl+Alt+Fx combination, where + Fx is + usually F1 + but may be F7. +

+
+
+
+
+
+
+
+
+
+

+ Part V. Appendices +

+
+
+
+
+
+
+
+

+ Appendix A. Acronyms and Terms +

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ABI +

+
+

+ Application Binary Interface +

+
+

+ ALFS +

+
+

+ Automated Linux From Scratch +

+
+

+ API +

+
+

+ Application Programming Interface +

+
+

+ ASCII +

+
+

+ American Standard Code for Information Interchange +

+
+

+ BIOS +

+
+

+ Basic Input/Output System +

+
+

+ BLFS +

+
+

+ Beyond Linux From Scratch +

+
+

+ BSD +

+
+

+ Berkeley Software Distribution +

+
+

+ chroot +

+
+

+ change root +

+
+

+ CMOS +

+
+

+ Complementary Metal Oxide Semiconductor +

+
+

+ COS +

+
+

+ Class Of Service +

+
+

+ CPU +

+
+

+ Central Processing Unit +

+
+

+ CRC +

+
+

+ Cyclic Redundancy Check +

+
+

+ CVS +

+
+

+ Concurrent Versions System +

+
+

+ DHCP +

+
+

+ Dynamic Host Configuration Protocol +

+
+

+ DNS +

+
+

+ Domain Name Service +

+
+

+ EGA +

+
+

+ Enhanced Graphics Adapter +

+
+

+ ELF +

+
+

+ Executable and Linkable Format +

+
+

+ EOF +

+
+

+ End of File +

+
+

+ EQN +

+
+

+ equation +

+
+

+ ext2 +

+
+

+ second extended file system +

+
+

+ ext3 +

+
+

+ third extended file system +

+
+

+ ext4 +

+
+

+ fourth extended file system +

+
+

+ FAQ +

+
+

+ Frequently Asked Questions +

+
+

+ FHS +

+
+

+ Filesystem Hierarchy Standard +

+
+

+ FIFO +

+
+

+ First-In, First Out +

+
+

+ FQDN +

+
+

+ Fully Qualified Domain Name +

+
+

+ FTP +

+
+

+ File Transfer Protocol +

+
+

+ GB +

+
+

+ Gigabytes +

+
+

+ GCC +

+
+

+ GNU Compiler Collection +

+
+

+ GID +

+
+

+ Group Identifier +

+
+

+ GMT +

+
+

+ Greenwich Mean Time +

+
+

+ HTML +

+
+

+ Hypertext Markup Language +

+
+

+ IDE +

+
+

+ Integrated Drive Electronics +

+
+

+ IEEE +

+
+

+ Institute of Electrical and Electronic Engineers +

+
+

+ IO +

+
+

+ Input/Output +

+
+

+ IP +

+
+

+ Internet Protocol +

+
+

+ IPC +

+
+

+ Inter-Process Communication +

+
+

+ IRC +

+
+

+ Internet Relay Chat +

+
+

+ ISO +

+
+

+ International Organization for Standardization +

+
+

+ ISP +

+
+

+ Internet Service Provider +

+
+

+ KB +

+
+

+ Kilobytes +

+
+

+ LED +

+
+

+ Light Emitting Diode +

+
+

+ LFS +

+
+

+ Linux From Scratch +

+
+

+ LSB +

+
+

+ Linux Standard Base +

+
+

+ MB +

+
+

+ Megabytes +

+
+

+ MBR +

+
+

+ Master Boot Record +

+
+

+ MD5 +

+
+

+ Message Digest 5 +

+
+

+ NIC +

+
+

+ Network Interface Card +

+
+

+ NLS +

+
+

+ Native Language Support +

+
+

+ NNTP +

+
+

+ Network News Transport Protocol +

+
+

+ NPTL +

+
+

+ Native POSIX Threading Library +

+
+

+ OSS +

+
+

+ Open Sound System +

+
+

+ PCH +

+
+

+ Pre-Compiled Headers +

+
+

+ PCRE +

+
+

+ Perl Compatible Regular Expression +

+
+

+ PID +

+
+

+ Process Identifier +

+
+

+ PTY +

+
+

+ pseudo terminal +

+
+

+ QOS +

+
+

+ Quality Of Service +

+
+

+ RAM +

+
+

+ Random Access Memory +

+
+

+ RPC +

+
+

+ Remote Procedure Call +

+
+

+ RTC +

+
+

+ Real Time Clock +

+
+

+ SBU +

+
+

+ Standard Build Unit +

+
+

+ SCO +

+
+

+ The Santa Cruz Operation +

+
+

+ SHA1 +

+
+

+ Secure-Hash Algorithm 1 +

+
+

+ TLDP +

+
+

+ The Linux Documentation Project +

+
+

+ TFTP +

+
+

+ Trivial File Transfer Protocol +

+
+

+ TLS +

+
+

+ Thread-Local Storage +

+
+

+ UID +

+
+

+ User Identifier +

+
+

+ umask +

+
+

+ user file-creation mask +

+
+

+ USB +

+
+

+ Universal Serial Bus +

+
+

+ UTC +

+
+

+ Coordinated Universal Time +

+
+

+ UUID +

+
+

+ Universally Unique Identifier +

+
+

+ VC +

+
+

+ Virtual Console +

+
+

+ VGA +

+
+

+ Video Graphics Array +

+
+

+ VT +

+
+

+ Virtual Terminal +

+
+
+
+
+
+
+

+ Appendix B. Acknowledgments +

+
+
+
+
+

+ We would like to thank the following people and organizations for + their contributions to the Linux From Scratch Project. +

+
+
    +
  • +

    + Gerard Beekmans + <gerard AT linuxfromscratch D0T org> – LFS Creator +

    +
  • +
  • +

    + Bruce Dubbs + <bdubbs AT linuxfromscratch D0T org> – LFS Managing Editor +

    +
  • +
  • +

    + Jim + Gifford <jim AT linuxfromscratch D0T org> – CLFS Project + Co-Leader +

    +
  • +
  • +

    + Pierre Labastie + <pierre AT linuxfromscratch D0T org> – BLFS Editor and ALFS + Lead +

    +
  • +
  • +

    + DJ + Lucas <dj AT linuxfromscratch D0T org> – LFS and BLFS + Editor +

    +
  • +
  • +

    + Ken + Moffat <ken AT linuxfromscratch D0T org> – BLFS Editor +

    +
  • +
  • +

    + Countless other people on the various LFS and BLFS mailing + lists who helped make this book possible by giving their + suggestions, testing the book, and submitting bug reports, + instructions, and their experiences with installing various + packages. +

    +
  • +
+
+

+ Translators +

+
+
    +
  • +

    + Manuel + Canales Esparcia <macana AT macana-es D0T com> – Spanish + LFS translation project +

    +
  • +
  • +

    + Johan Lenglet + <johan AT linuxfromscratch D0T org> – French LFS translation + project until 2008 +

    +
  • +
  • +

    + Jean-Philippe + Mengual <jmengual AT linuxfromscratch D0T org> – French + LFS translation project 2008-2016 +

    +
  • +
  • +

    + Julien Lepiller + <jlepiller AT linuxfromscratch D0T org> – French LFS + translation project 2017-present +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Portuguese LFS + translation project historical +

    +
  • +
  • +

    + Jamenson + Espindula <jafesp AT gmail D0T com> – Portuguese LFS + translation project 2022-present +

    +
  • +
  • +

    + Thomas + Reitelbach <tr AT erdfunkstelle D0T de> – German LFS + translation project +

    +
  • +
+
+

+ Mirror + Maintainers +

+

+ North + American Mirrors +

+
+
    +
  • +

    + Scott + Kveton <scott AT osuosl D0T org> – lfs.oregonstate.edu + mirror +

    +
  • +
  • +

    + William + Astle <lost AT l-w D0T net> – ca.linuxfromscratch.org + mirror +

    +
  • +
  • +

    + Eujon Sellers + <jpolen@rackspace.com> – lfs.introspeed.com mirror +

    +
  • +
  • +

    + Justin + Knierim <tim@idge.net> – lfs-matrix.net mirror +

    +
  • +
+
+

+ South + American Mirrors +

+
+ +
+

+ European + Mirrors +

+
+
    +
  • +

    + Guido + Passet <guido AT primerelay D0T net> – + nl.linuxfromscratch.org mirror +

    +
  • +
  • +

    + Bastiaan + Jacques <baafie AT planet D0T nl> – lfs.pagefault.net + mirror +

    +
  • +
  • +

    + Sven + Cranshoff <sven D0T cranshoff AT lineo D0T be> – + lfs.lineo.be mirror +

    +
  • +
  • +

    + Scarlet Belgium – lfs.scarlet.be mirror +

    +
  • +
  • +

    + Sebastian + Faulborn <info AT aliensoft D0T org> – lfs.aliensoft.org + mirror +

    +
  • +
  • +

    + Stuart + Fox <stuart AT dontuse D0T ms> – lfs.dontuse.ms mirror +

    +
  • +
  • +

    + Ralf + Uhlemann <admin AT realhost D0T de> – lfs.oss-mirror.org + mirror +

    +
  • +
  • +

    + Antonin Sprinzl + <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – + at.linuxfromscratch.org mirror +

    +
  • +
  • +

    + Fredrik Danerklint + <fredan-lfs AT fredan D0T org> – se.linuxfromscratch.org + mirror +

    +
  • +
  • +

    + Franck + <franck AT linuxpourtous D0T com> – lfs.linuxpourtous.com + mirror +

    +
  • +
  • +

    + Philippe + Baque <baque AT cict D0T fr> – lfs.cict.fr mirror +

    +
  • +
  • +

    + Vitaly + Chekasin <gyouja AT pilgrims D0T ru> – lfs.pilgrims.ru + mirror +

    +
  • +
  • +

    + Benjamin + Heil <kontakt AT wankoo D0T org> – lfs.wankoo.org mirror +

    +
  • +
  • +

    + Anton Maisak + <info AT linuxfromscratch D0T org D0T ru> – + linuxfromscratch.org.ru mirror +

    +
  • +
+
+

+ Asian + Mirrors +

+
+ +
+

+ Australian Mirrors +

+
+
    +
  • +

    + Jason + Andrade <jason AT dstc D0T edu D0T au> – + au.linuxfromscratch.org mirror +

    +
  • +
+
+

+ Former + Project Team Members +

+
+
    +
  • +

    + Christine + Barczak <theladyskye AT linuxfromscratch D0T org> – LFS + Book Editor +

    +
  • +
  • +

    + Archaic <archaic@linuxfromscratch.org> – LFS + Technical Writer/Editor, HLFS Project Leader, BLFS Editor, + Hints and Patches Project Maintainer +

    +
  • +
  • +

    + Matthew Burgess + <matthew AT linuxfromscratch D0T org> – LFS Project Leader, + LFS Technical Writer/Editor +

    +
  • +
  • +

    + Nathan Coulson + <nathan AT linuxfromscratch D0T org> – LFS-Bootscripts + Maintainer +

    +
  • +
  • +

    + Timothy Bauscher +

    +
  • +
  • +

    + Robert Briggs +

    +
  • +
  • +

    + Ian Chilton +

    +
  • +
  • +

    + Jeroen Coumans + <jeroen AT linuxfromscratch D0T org> – Website Developer, + FAQ Maintainer +

    +
  • +
  • +

    + Manuel Canales + Esparcia <manuel AT linuxfromscratch D0T org> – + LFS/BLFS/HLFS XML and XSL Maintainer +

    +
  • +
  • +

    + Alex Groenewoud – LFS Technical Writer +

    +
  • +
  • +

    + Marc Heerdink +

    +
  • +
  • +

    + Jeremy Huntwork + <jhuntwork AT linuxfromscratch D0T org> – LFS Technical + Writer, LFS LiveCD Maintainer +

    +
  • +
  • +

    + Bryan Kadzban + <bryan AT linuxfromscratch D0T org> – LFS Technical Writer +

    +
  • +
  • +

    + Mark Hymers +

    +
  • +
  • +

    + Seth W. Klein – FAQ maintainer +

    +
  • +
  • +

    + Nicholas Leippe + <nicholas AT linuxfromscratch D0T org> – Wiki Maintainer +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Website + Backend-Scripts Maintainer +

    +
  • +
  • +

    + Randy McMurchy + <randy AT linuxfromscratch D0T org> – BLFS Project Leader, + LFS Editor +

    +
  • +
  • +

    + Dan Nicholson + <dnicholson AT linuxfromscratch D0T org> – LFS and BLFS + Editor +

    +
  • +
  • +

    + Alexander E. + Patrakov <alexander AT linuxfromscratch D0T org> – LFS + Technical Writer, LFS Internationalization Editor, LFS Live + CD Maintainer +

    +
  • +
  • +

    + Simon Perreault +

    +
  • +
  • +

    + Scot Mc Pherson + <scot AT linuxfromscratch D0T org> – LFS NNTP Gateway + Maintainer +

    +
  • +
  • +

    + Douglas R. Reno + <renodr AT linuxfromscratch D0T org> – Systemd Editor +

    +
  • +
  • +

    + Ryan Oliver + <ryan AT linuxfromscratch D0T org> – CLFS Project Co-Leader +

    +
  • +
  • +

    + Greg + Schafer <gschafer AT zip D0T com D0T au> – LFS Technical + Writer and Architect of the Next Generation 64-bit-enabling + Build Method +

    +
  • +
  • +

    + Jesse Tie-Ten-Quee – LFS Technical Writer +

    +
  • +
  • +

    + James Robertson + <jwrober AT linuxfromscratch D0T org> – Bugzilla Maintainer +

    +
  • +
  • +

    + Tushar Teredesai + <tushar AT linuxfromscratch D0T org> – BLFS Book Editor, + Hints and Patches Project Leader +

    +
  • +
  • +

    + Jeremy Utley + <jeremy AT linuxfromscratch D0T org> – LFS Technical Writer, + Bugzilla Maintainer, LFS-Bootscripts Maintainer +

    +
  • +
  • +

    + Zack + Winkles <zwinkles AT gmail D0T com> – LFS Technical + Writer +

    +
  • +
+
+
+
+
+
+

+ Appendix C. Dependencies +

+
+
+
+
+

+ Every package built in LFS relies on one or more other packages + in order to build and install properly. Some packages even + participate in circular dependencies, that is, the first package + depends on the second which in turn depends on the first. Because + of these dependencies, the order in which packages are built in + LFS is very important. The purpose of this page is to document + the dependencies of each package built in LFS. +

+

+ For each package that is built, there are three, and sometimes up + to five types of dependencies listed below. The first lists what + other packages need to be available in order to compile and + install the package in question. The second lists the packages + that must be available when any programs or libraries from the + package are used at runtime. The third lists what packages, in + addition to those on the first list, need to be available in + order to run the test suites. The fourth list of dependencies are + packages that require this package to be built and installed in + its final location before they are built and installed. +

+

+ The last list of dependencies are optional packages that are not + addressed in LFS, but could be useful to the user. These packages + may have additional mandatory or optional dependencies of their + own. For these dependencies, the recommended practice is to + install them after completion of the LFS book and then go back + and rebuild the LFS package. In several cases, re-installation is + addressed in BLFS. +

+

+ Acl +

+
+ +
+
+ Installation depends on: + Attr, Bash, Binutils, Coreutils, GCC, + Gettext, Grep, M4, Make, Perl, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Attr and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Automake, Diffutils, Findutils, and + Libtool +
+
+
+
+ +
+
+ Must be installed before: + Coreutils, Sed, Tar, and Vim +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Attr +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Perl, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Automake, Diffutils, Findutils, and + Libtool +
+
+
+
+ +
+
+ Must be installed before: + Acl, Libcap, and Patch +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Autoconf +

+
+ +
+
+ Installation depends on: + Bash, Coreutils, Grep, M4, Make, Perl, + Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash, Coreutils, Grep, M4, Make, Sed, + and Texinfo +
+
+
+
+ +
+
+ Test suite depends on: + Automake, Diffutils, Findutils, GCC, + and Libtool +
+
+
+
+ +
+
+ Must be installed before: + Automake and Coreutils +
+
+
+
+ +
+
+ Optional dependencies: + + Emacs +
+
+
+

+ Automake +

+
+ +
+
+ Installation depends on: + Autoconf, Bash, Coreutils, Gettext, + Grep, M4, Make, Perl, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash, Coreutils, Grep, M4, Sed, and + Texinfo +
+
+
+
+ +
+
+ Test suite depends on: + Binutils, Bison, Bzip2, DejaGNU, + Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip, + Libtool, and Tar +
+
+
+
+ +
+
+ Must be installed before: + Coreutils +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Bash +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, + Readline, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc, Ncurses, and Readline +
+
+
+
+ +
+
+ Test suite depends on: + Expect and Shadow +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Xorg +
+
+
+

+ Bc +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, and Readline +
+
+
+
+ +
+
+ Required at runtime: + Glibc, Ncurses, and Readline +
+
+
+
+ +
+
+ Test suite depends on: + Gawk +
+
+
+
+ +
+
+ Must be installed before: + Linux +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Binutils +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + File, Flex, Gawk, GCC, Glibc, Grep, Make, Perl, Pkgconf, Sed, + Texinfo, Zlib, and Zstd +
+
+
+
+ +
+
+ Required at runtime: + Glibc, Zlib, and Zstd +
+
+
+
+ +
+
+ Test suite depends on: + DejaGNU and Expect +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + Elfutils and + Jansson +
+
+
+

+ Bison +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Gettext, Glibc, Grep, M4, Make, Perl, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils, Findutils, and Flex +
+
+
+
+ +
+
+ Must be installed before: + Kbd and Tar +
+
+
+
+ +
+
+ Optional dependencies: + + Doxygen +
+
+
+

+ Bzip2 +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Make, and Patch +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + File and Libelf +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Coreutils +

+
+ +
+
+ Installation depends on: + Autoconf, Automake, Bash, Binutils, + Coreutils, GCC, Gettext, Glibc, GMP, Grep, Libcap, Make, + OpenSSL, Patch, Perl, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils, E2fsprogs, Findutils, + Shadow, and Util-linux +
+
+
+
+ +
+
+ Must be installed before: + Bash, Diffutils, Findutils, Man-DB, and + Udev +
+
+
+
+ +
+
+ Optional dependencies: + Expect.pm and IO::Tty +
+
+
+

+ DejaGNU +

+
+ +
+
+ Installation depends on: + Bash, Coreutils, Diffutils, Expect, + GCC, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Expect and Bash +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Diffutils +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Perl +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ E2fsprogs +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Gzip, Make, Pkgconf, Sed, Texinfo, + and Util-linux +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Util-linux +
+
+
+
+ +
+
+ Test suite depends on: + Procps-ng and Psmisc +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Expat +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Python and XML::Parser +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Expect +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Patch, Sed, and Tcl +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Tcl +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Tk +
+
+
+

+ File +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bzip2, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz, and + Zlib +
+
+
+
+ +
+
+ Required at runtime: + Glibc, Bzip2, Xz, and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + libseccomp +
+
+
+

+ Findutils +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + DejaGNU, Diffutils, and Expect +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Flex +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Patch, Sed, and + Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash, Glibc, and M4 +
+
+
+
+ +
+
+ Test suite depends on: + Bison and Gawk +
+
+
+
+ +
+
+ Must be installed before: + Binutils, IProute2, Kbd, Kmod, and + Man-DB +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Flit-Core +

+
+ +
+
+ Installation depends on: + Python +
+
+
+
+ +
+
+ Required at runtime: + Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Packaging and Wheel +
+
+
+
+ +
+
+ Optional dependencies: + + pytest and testpath +
+
+
+

+ Gawk +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed, + and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash, Glibc, and Mpfr +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + libsigsegv +
+
+
+

+ GCC +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, M4, Make, + MPC, MPFR, Patch, Perl, Sed, Tar, Texinfo, and Zstd +
+
+
+
+ +
+
+ Required at runtime: + Bash, Binutils, Glibc, Mpc, and + Python +
+
+
+
+ +
+
+ Test suite depends on: + DejaGNU, Expect, and Shadow +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + GDC, GNAT, and ISL +
+
+
+

+ GDBM +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Grep, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Bash, Glibc, and Readline +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Gettext +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Acl, Bash, Gcc, and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils, Perl, and Tcl +
+
+
+
+ +
+
+ Must be installed before: + Automake and Bison +
+
+
+
+ +
+
+ Optional dependencies: + + libunistring and + libxml2 +
+
+
+

+ Glibc +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, + Make, Perl, Python, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + None +
+
+
+
+ +
+
+ Test suite depends on: + File +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ GMP +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, M4, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + GCC and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + MPFR and GCC +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Gperf +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + and Make +
+
+
+
+ +
+
+ Required at runtime: + GCC and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils and Expect +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Grep +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Gettext, Glibc, Grep, Make, Patch, Sed, and + Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Gawk +
+
+
+
+ +
+
+ Must be installed before: + Man-DB +
+
+
+
+ +
+
+ Optional dependencies: + + PCRE2 and + libsigsegv +
+
+
+

+ Groff +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, Gawk, + GCC, Glibc, Grep, Make, Patch, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + GCC, Glibc, and Perl +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Man-DB +
+
+
+
+ +
+
+ Optional dependencies: + + ghostscript and + Uchardet +
+
+
+

+ GRUB +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, + Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, + Texinfo, and Xz +
+
+
+
+ +
+
+ Required at runtime: + Bash, GCC, Gettext, Glibc, Xz, and + Sed +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Gzip +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils and Less +
+
+
+
+ +
+
+ Must be installed before: + Man-DB +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Iana-Etc +

+
+ +
+
+ Installation depends on: + Coreutils +
+
+
+
+ +
+
+ Required at runtime: + None +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Perl +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Inetutils +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Ncurses, Patch, Sed, Texinfo, and Zlib +
+
+
+
+ +
+
+ Required at runtime: + GCC, Glibc, Ncurses, and + Readline +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Tar +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Intltool +

+
+ +
+
+ Installation depends on: + Bash, Gawk, Glibc, Make, Perl, Sed, and + XML::Parser +
+
+
+
+ +
+
+ Required at runtime: + Autoconf, Automake, Bash, Glibc, Grep, + Perl, and Sed +
+
+
+
+ +
+
+ Test suite depends on: + Perl +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ IProute2 +

+
+ +
+
+ Installation depends on: + Bash, Bison, Coreutils, Flex, GCC, + Glibc, Make, Libcap, Libelf, Linux API Headers, Pkgconf, and + Zlib +
+
+
+
+ +
+
+ Required at runtime: + Bash, Coreutils, Glibc, Libcap, Libelf, + and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Berkeley DB, + iptables, libbpf, + libmnl, and + libtirpc +
+
+
+

+ Jinja2 +

+
+ +
+
+ Installation depends on: + MarkupSafe, Python, Setuptools, and + Wheel +
+
+
+
+ +
+
+ Required at runtime: + MarkupSafe and Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Udev +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Kbd +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, Flex, + GCC, Gettext, Glibc, Gzip, Make, Patch, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Bash, Coreutils, and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Linux-PAM +
+
+
+

+ Kmod +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, Flex, + GCC, Gettext, Glibc, Gzip, Make, OpenSSL, Pkgconf, Sed, Xz, + and Zlib +
+
+
+
+ +
+
+ Required at runtime: + Glibc, Xz, and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Udev +
+
+
+
+ +
+
+ Optional dependencies: + scdoc (for man + pages) +
+
+
+

+ Less +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Ncurses, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Ncurses +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Gzip +
+
+
+
+ +
+
+ Optional dependencies: + + PCRE2 or + PCRE +
+
+
+

+ Libcap +

+
+ +
+
+ Installation depends on: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Perl, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + IProute2 and Shadow +
+
+
+
+ +
+
+ Optional dependencies: + + Linux-PAM +
+
+
+

+ Libelf +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bzip2, Coreutils, GCC, + Glibc, Make, Xz, Zlib, and Zstd +
+
+
+
+ +
+
+ Required at runtime: + Bzip2, Glibc, Xz, Zlib, and Zstd +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + IProute2 and Linux +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Libffi +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + DejaGnu +
+
+
+
+ +
+
+ Must be installed before: + Python +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Libpipeline +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Check and Pkgconf +
+
+
+
+ +
+
+ Must be installed before: + Man-DB +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Libtool +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Autoconf, Automake, Bash, Binutils, + Coreutils, File, GCC, Glibc, Grep, Make, and Sed +
+
+
+
+ +
+
+ Test suite depends on: + Autoconf, Automake, and + Findutils +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Libxcrypt +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Perl, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Perl, Python, Shadow, and Udev +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Linux +

+
+ +
+
+ Installation depends on: + Bash, Bc, Binutils, Coreutils, + Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, + Make, Ncurses, OpenSSL, Perl, and Sed +
+
+
+
+ +
+
+ Required at runtime: + None +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + cpio, + LLVM (with Clang), and + Rust-bindgen +
+
+
+

+ Linux API Headers +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Findutils, + GCC, Glibc, Grep, Gzip, Make, Perl, and Sed +
+
+
+
+ +
+
+ Required at runtime: + None +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Lz4 +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + and Make +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Python +
+
+
+
+ +
+
+ Must be installed before: + Zstd +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ M4 +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Bash and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils +
+
+
+
+ +
+
+ Must be installed before: + Autoconf and Bison +
+
+
+
+ +
+
+ Optional dependencies: + + libsigsegv +
+
+
+

+ Make +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Perl and Procps-ng +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Guile +
+
+
+

+ Man-DB +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Bzip2, Coreutils, Flex, + GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, + Libpipeline, Make, Pkgconf, Sed, and Xz +
+
+
+
+ +
+
+ Required at runtime: + Bash, GDBM, Groff, Glibc, Gzip, Less, + Libpipeline, and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + Util-linux +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + libseccomp and po4a +
+
+
+

+ Man-Pages +

+
+ +
+
+ Installation depends on: + Bash, Coreutils, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + None +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ MarkupSafe +

+
+ +
+
+ Installation depends on: + Python, Setuptools, and Wheel +
+
+
+
+ +
+
+ Required at runtime: + Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Jinja2 +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Meson +

+
+ +
+
+ Installation depends on: + Ninja, Python, Setuptools, and + Wheel +
+
+
+
+ +
+
+ Required at runtime: + Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Udev +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ MPC +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed, and + Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc, GMP, and MPFR +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + GCC +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ MPFR +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc and GMP +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Gawk and GCC +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Ncurses +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Patch, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Bash, GRUB, Inetutils, Less, Procps-ng, + Psmisc, Readline, Texinfo, Util-linux, and Vim +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Ninja +

+
+ +
+
+ Installation depends on: + Binutils, Coreutils, GCC, and + Python +
+
+
+
+ +
+
+ Required at runtime: + GCC and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + + cmake +
+
+
+
+ +
+
+ Must be installed before: + Meson +
+
+
+
+ +
+
+ Optional dependencies: + + Asciidoc, + Doxygen, + Emacs, and re2c +
+
+
+

+ OpenSSL +

+
+ +
+
+ Installation depends on: + Binutils, Coreutils, GCC, Make, and + Perl +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Perl +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Coreutils, Kmod, Linux, and + Udev +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Packaging +

+
+ +
+
+ Installation depends on: + Flit-core and Python +
+
+
+
+ +
+
+ Required at runtime: + Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Wheel +
+
+
+
+ +
+
+ Optional dependencies: + + pytest +
+
+
+

+ Patch +

+
+ +
+
+ Installation depends on: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Grep, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Attr and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Ed +
+
+
+

+ Perl +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + GDBM, Glibc, Grep, Libxcrypt, Make, Sed, and Zlib +
+
+
+
+ +
+
+ Required at runtime: + GDBM, Glibc, and Libxcrypt +
+
+
+
+ +
+
+ Test suite depends on: + Iana-Etc, Less, and Procps-ng +
+
+
+
+ +
+
+ Must be installed before: + Autoconf +
+
+
+
+ +
+
+ Optional dependencies: + + Berkeley DB +
+
+
+

+ Pkgconf +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Binutils, E2fsprogs, IProute2, Kmod, + Man-DB, Procps-ng, Python, Udev, + and Util-linux +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Procps-ng +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, Ncurses, and Pkgconf +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + DejaGNU +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + elogind +
+
+
+

+ Psmisc +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Ncurses +
+
+
+
+ +
+
+ Test suite depends on: + Expect +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Python +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Expat, GCC, + Gdbm, Gettext, Glibc, Grep, Libffi, Libxcrypt, Make, Ncurses, + OpenSSL, Pkgconf, Sed, and Util-linux +
+
+
+
+ +
+
+ Required at runtime: + Bzip2, Expat, Gdbm, Glibc, Libffi, + Libxcrypt, Ncurses, OpenSSL, and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + GDB and Valgrind +
+
+
+
+ +
+
+ Must be installed before: + Ninja +
+
+
+
+ +
+
+ Optional dependencies: + + Berkeley DB, + libnsl, + SQLite, and + Tk +
+
+
+

+ Readline +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Patch, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Ncurses +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Bash, Bc, and Gawk +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Sed +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Acl, Attr, and Glibc +
+
+
+
+ +
+
+ Test suite depends on: + Diffutils and Gawk +
+
+
+
+ +
+
+ Must be installed before: + E2fsprogs, File, Libtool, and + Shadow +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Setuptools +

+
+ +
+
+ Installation depends on: + Python and Wheel +
+
+
+
+ +
+
+ Required at runtime: + Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Jinja2, MarkupSafe, and Meson +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Shadow +

+
+ +
+
+ Installation depends on: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, + Libcap, Libxcrypt, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Libxcrypt +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Coreutils +
+
+
+
+ +
+
+ Optional dependencies: + + CrackLib and + Linux-PAM +
+
+
+

+ Sysklogd +

+
+ +
+
+ Installation depends on: + Binutils, Coreutils, GCC, Glibc, Make, + and Patch +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ SysVinit +

+
+ +
+
+ Installation depends on: + Binutils, Coreutils, GCC, Glibc, Make, + and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Tar +

+
+ +
+
+ Installation depends on: + Acl, Attr, Bash, Binutils, Bison, + Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed, + and Texinfo +
+
+
+
+ +
+
+ Required at runtime: + Acl, Attr, Bzip2, Glibc, Gzip, and + Xz +
+
+
+
+ +
+
+ Test suite depends on: + Autoconf, Diffutils, Findutils, Gawk, + and Gzip +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Tcl +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Texinfo +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses, Patch, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc and Ncurses +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Udev +

+
+ +
+
+ Installation depends on: + Acl, Bash, Binutils, Coreutils, + Diffutils, Gawk, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, + Libxcrypt, Meson, OpenSSL, Pkgconf, Sed, Util-linux, and + Zstd +
+
+
+
+ +
+
+ Required at runtime: + Acl, Glibc, Libcap, OpenSSL, and + Util-linux +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Util-linux +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Util-linux +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + File, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, + Ncurses, Pkgconf, Sed, Udev, and + Zlib +
+
+
+
+ +
+
+ Required at runtime: + Glibc, Ncurses, Readline, Udev, and Zlib +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ + +
+

+ Vim +

+
+ +
+
+ Installation depends on: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, GCC, Glibc, Grep, Make, Ncurses, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Acl, Attr, Glibc, Python, Ncurses, and + Tcl +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + None +
+
+
+
+ +
+
+ Optional dependencies: + + Xorg, + GTK+2, LessTif, + Ruby, and + GPM +
+
+
+

+ Wheel +

+
+ +
+
+ Installation depends on: + Python, Flit-core, and packaging +
+
+
+
+ +
+
+ Required at runtime: + Python +
+
+
+
+ +
+
+ Test suite depends on: + No test suite available +
+
+
+
+ +
+
+ Must be installed before: + Jinja2, MarkupSafe, Meson, and + Setuptools +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ XML::Parser +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Expat, GCC, + Glibc, Make, and Perl +
+
+
+
+ +
+
+ Required at runtime: + Expat, Glibc, and Perl +
+
+
+
+ +
+
+ Test suite depends on: + Perl +
+
+
+
+ +
+
+ Must be installed before: + Intltool +
+
+
+
+ +
+
+ Optional dependencies: + LWP::UserAgent +
+
+
+

+ Xz +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, and Make +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + File, GRUB, Kmod, Libelf, Man-DB, and + Udev +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Zlib +

+
+ +
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, and Sed +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + File, Kmod, Libelf, Perl, and + Util-linux +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+

+ Zstd +

+
+ +
+
+ Installation depends on: + Binutils, Coreutils, GCC, Glibc, Gzip, + Lz4, Make, Xz, and Zlib +
+
+
+
+ +
+
+ Required at runtime: + Glibc +
+
+
+
+ +
+
+ Test suite depends on: + None +
+
+
+
+ +
+
+ Must be installed before: + Binutils, GCC, Libelf, and Udev +
+
+
+
+ +
+
+ Optional dependencies: + None +
+
+
+
+
+
+
+

+ Appendix D. Boot + and sysconfig scripts version-20250827 +

+
+
+
+
+

+ The scripts in this appendix are listed by the directory where + they normally reside. The order is /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, and + /etc/sysconfig/network-devices/services. + Within each section, the files are listed in the order they are + normally called. +

+
+
+
+

+ D.1. /etc/rc.d/init.d/rc +

+
+
+
+
+

+ The rc script is the first + script called by init and + initiates the boot process. +

+
#!/bin/bash
+########################################################################
+# Begin rc
+#
+# Description : Main Run Level Control Script
+#
+# Authors     : Gerard Beekmans  - gerard AT linuxfromscratch D0T org
+#             : DJ Lucas - dj AT linuxfromscratch D0T org
+# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Updates March 24th, 2022: new semantics of S/K files
+#               - Instead of testing that S scripts were K scripts in the
+#                 previous runlevel, test that they were not S scripts
+#               - Instead of testing that K scripts were S scripts in the
+#                 previous runlevel, test that they were not K scripts
+#               - S scripts in runlevel 0 or 6 are now run with
+#                "script start" (was "script stop" previously).
+########################################################################
+
+. /lib/lsb/init-functions
+
+print_error_msg()
+{
+   log_failure_msg
+   # $i is set when called
+   MSG="FAILURE:\n\nYou should not be reading this error message.\n\n"
+   MSG="${MSG}It means that an unforeseen error took place in\n"
+   MSG="${MSG}${i},\n"
+   MSG="${MSG}which exited with a return value of ${error_value}.\n"
+
+   MSG="${MSG}If you're able to track this error down to a bug in one of\n"
+   MSG="${MSG}the files provided by the ${DISTRO_MINI} book,\n"
+   MSG="${MSG}please be so kind to inform us at ${DISTRO_CONTACT}.\n"
+   log_failure_msg "${MSG}"
+
+   log_info_msg "Press Enter to continue..."
+   wait_for_user
+}
+
+check_script_status()
+{
+   # $i is set when called
+   if [ ! -f ${i} ]; then
+      log_warning_msg "${i} is not a valid symlink."
+      SCRIPT_STAT="1"
+   fi
+
+   if [ ! -x ${i} ]; then
+      log_warning_msg "${i} is not executable, skipping."
+      SCRIPT_STAT="1"
+   fi
+}
+
+run()
+{
+   if [ -z $interactive ]; then
+      ${1} ${2}
+      return $?
+   fi
+
+   while true; do
+      read -p "Run ${1} ${2} (Yes/no/continue)? " -n 1 runit
+      echo
+
+      case ${runit} in
+         c | C)
+            interactive=""
+            ${i} ${2}
+            ret=${?}
+            break;
+            ;;
+
+         n | N)
+            return 0
+            ;;
+
+         y | Y)
+            ${i} ${2}
+            ret=${?}
+            break
+            ;;
+      esac
+   done
+
+   return $ret
+}
+
+# Read any local settings/overrides
+[ -r /etc/sysconfig/rc.site ] && source /etc/sysconfig/rc.site
+
+DISTRO=${DISTRO:-"Linux From Scratch"}
+DISTRO_CONTACT=${DISTRO_CONTACT:-"lfs-dev@lists.linuxfromscratch.org (Registration required)"}
+DISTRO_MINI=${DISTRO_MINI:-"LFS"}
+IPROMPT=${IPROMPT:-"no"}
+
+# These 3 signals will not cause our script to exit
+trap "" INT QUIT TSTP
+
+[ "${1}" != "" ] && runlevel=${1}
+
+if [ "${runlevel}" == "" ]; then
+   echo "Usage: ${0} <runlevel>" >&2
+   exit 1
+fi
+
+previous=${PREVLEVEL}
+[ "${previous}" == "" ] && previous=N
+
+if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then
+   log_info_msg "/etc/rc.d/rc${runlevel}.d does not exist.\n"
+   exit 1
+fi
+
+if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; then IPROMPT="no"; fi
+
+# Note: In ${LOGLEVEL:-7}, it is ':' 'dash' '7', not minus 7
+if [ "$runlevel" == "S" ]; then
+   [ -r /etc/sysconfig/console ] && source /etc/sysconfig/console
+   dmesg -n "${LOGLEVEL:-7}"
+fi
+
+if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; then
+   # The total length of the distro welcome string, without escape codes
+   wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )}
+   welcome_message=${welcome_message:-"Welcome to ${INFO}${DISTRO}${NORMAL}"}
+
+   # The total length of the interactive string, without escape codes
+   ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )}
+   i_message=${i_message:-"Press '${FAILURE}I${NORMAL}' to enter interactive startup"}
+
+
+   # dcol and icol are spaces before the message to center the message
+   # on screen. itime is the amount of wait time for the user to press a key
+   wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))
+   icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 ))
+   itime=${itime:-"3"}
+
+   echo -e "\n\n"
+   echo -e "\\033[${wcol}G${welcome_message}"
+   echo -e "\\033[${icol}G${i_message}${NORMAL}"
+   echo ""
+   read -t "${itime}" -n 1 interactive 2>&1 > /dev/null
+fi
+
+# Make lower case
+[ "${interactive}" == "I" ] && interactive="i"
+[ "${interactive}" != "i" ] && interactive=""
+
+# Read the state file if it exists from runlevel S
+[ -r /run/interactive ] && source /run/interactive
+
+# Stop all services marked as K, except if marked as K in the previous
+# runlevel: it is the responsibility of the script to not try to kill
+# a non running service
+if [ "${previous}" != "N" ]; then
+   for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null)
+   do
+      check_script_status
+      if [ "${SCRIPT_STAT}" == "1" ]; then
+         SCRIPT_STAT="0"
+         continue
+      fi
+
+      suffix=${i#/etc/rc.d/rc${runlevel}.d/K[0-9][0-9]}
+      [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue
+
+      run ${i} stop
+      error_value=${?}
+
+      if [ "${error_value}" != "0" ]; then print_error_msg; fi
+   done
+fi
+
+if [ "${previous}" == "N" ]; then export IN_BOOT=1; fi
+
+if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; then
+   touch /fastboot
+fi
+
+
+# Start all services marked as S in this runlevel, except if marked as
+# S in the previous runlevel
+# it is the responsibility of the script to not try to start an already running
+# service
+for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null)
+do
+
+   if [ "${previous}" != "N" ]; then
+      suffix=${i#/etc/rc.d/rc${runlevel}.d/S[0-9][0-9]}
+      [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue
+   fi
+
+   check_script_status
+   if [ "${SCRIPT_STAT}" == "1" ]; then
+      SCRIPT_STAT="0"
+      continue
+   fi
+
+   run ${i} start
+
+   error_value=${?}
+
+   if [ "${error_value}" != "0" ]; then print_error_msg; fi
+done
+
+# Store interactive variable on switch from runlevel S and remove if not
+if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; then
+    echo "interactive=\"i\"" > /run/interactive
+else
+    rm -f /run/interactive 2> /dev/null
+fi
+
+# Copy the boot log on initial boot only
+if [ "${previous}" == "N" -a  "${runlevel}" != "S" ]; then
+   cat $BOOTLOG >> /var/log/boot.log
+
+   # Mark the end of boot
+   echo "--------" >> /var/log/boot.log
+
+   # Remove the temporary file
+   rm -f $BOOTLOG 2> /dev/null
+fi
+
+# End rc
+
+
+
+
+
+

+ D.2. /lib/lsb/init-functions +

+
+
+
+
+
#!/bin/sh
+########################################################################
+#
+# Begin /lib/lsb/init-funtions
+#
+# Description : Run Level Control Functions
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#             : DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : With code based on Matthias Benkmann's simpleinit-msb
+#               http://winterdrache.de/linux/newboot/index.html
+#
+#               The file should be located in /lib/lsb
+#
+########################################################################
+
+## Environmental setup
+# Setup default values for environment
+umask 022
+export PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+
+## Set color commands, used via echo
+# Please consult `man console_codes for more information
+# under the "ECMA-48 Set Graphics Rendition" section
+#
+# Warning: when switching from a 8bit to a 9bit font,
+# the linux console will reinterpret the bold (1;) to
+# the top 256 glyphs of the 9bit font.  This does
+# not affect framebuffer consoles
+
+NORMAL="\\033[0;39m"         # Standard console grey
+SUCCESS="\\033[1;32m"        # Success is green
+WARNING="\\033[1;33m"        # Warnings are yellow
+FAILURE="\\033[1;31m"        # Failures are red
+INFO="\\033[1;36m"           # Information is light cyan
+BRACKET="\\033[1;34m"        # Brackets are blue
+
+# Use a colored prefix
+BMPREFIX="      "
+SUCCESS_PREFIX="${SUCCESS}  *  ${NORMAL} "
+FAILURE_PREFIX="${FAILURE}*****${NORMAL} "
+WARNING_PREFIX="${WARNING} *** ${NORMAL} "
+SKIP_PREFIX="${INFO}  S   ${NORMAL}"
+
+SUCCESS_SUFFIX="${BRACKET}[${SUCCESS}  OK  ${BRACKET}]${NORMAL}"
+FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}"
+WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}"
+SKIP_SUFFIX="${BRACKET}[${INFO} SKIP ${BRACKET}]${NORMAL}"
+
+BOOTLOG=/run/bootlog
+KILLDELAY=3
+SCRIPT_STAT="0"
+
+# Set any user specified environment variables e.g. HEADLESS
+[ -r /etc/sysconfig/rc.site ]  && . /etc/sysconfig/rc.site
+
+# If HEADLESS is set, use that.  
+# If file descriptor 1 or 2 (stdout and stderr) is not open or
+# does not refer to a terminal, consider the script headless.
+[ ! -t 1 -o ! -t 2 ] && HEADLESS=${HEADLESS:-yes}
+
+if [ "x$HEADLESS" != "xyes" ]
+then 
+  ## Screen Dimensions
+  # Find current screen size
+  if [ -z "${COLUMNS}" ]; then
+    COLUMNS=$(stty size)
+    COLUMNS=${COLUMNS##* }
+  fi
+else
+   COLUMNS=80
+fi
+
+# When using remote connections, such as a serial port, stty size returns 0
+if [ "${COLUMNS}" = "0" ]; then
+   COLUMNS=80
+fi
+
+## Measurements for positioning result messages
+COL=$((${COLUMNS} - 8))
+WCOL=$((${COL} - 2))
+
+## Set Cursor Position Commands, used via echo
+SET_COL="\\033[${COL}G"      # at the $COL char
+SET_WCOL="\\033[${WCOL}G"    # at the $WCOL char
+CURS_UP="\\033[1A\\033[0G"   # Up one line, at the 0'th char
+CURS_ZERO="\\033[0G"
+
+################################################################################
+# start_daemon()                                                               #
+# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...]      #
+#                                                                              #
+# Purpose: This runs the specified program as a daemon                         #
+#                                                                              #
+# Inputs: -f: (force) run the program even if it is already running.           #
+#         -n nicelevel: specify a nice level. See 'man nice(1)'.               #
+#         -p pidfile: use the specified file to determine PIDs.                #
+#         pathname: the complete path to the specified program                 #
+#         args: additional arguments passed to the program (pathname)          #
+#                                                                              #
+# Return values (as defined by LSB exit codes):                                #
+#       0 - program is running or service is OK                                #
+#       1 - generic or unspecified error                                       #
+#       2 - invalid or excessive argument(s)                                   #
+#       5 - program is not installed                                           #
+################################################################################
+start_daemon()
+{
+    local force=""
+    local nice="0"
+    local pidfile=""
+    local pidlist=""
+    local retval=""
+
+    # Process arguments
+    while true
+    do
+        case "${1}" in
+
+            -f)
+                force="1"
+                shift 1
+                ;;
+
+            -n)
+                nice="${2}"
+                shift 2
+                ;;
+
+            -p)
+                pidfile="${2}"
+                shift 2
+                ;;
+
+            -*)
+                return 2
+                ;;
+
+            *)
+                program="${1}"
+                break
+                ;;
+        esac
+    done
+
+    # Check for a valid program
+    if [ ! -e "${program}" ]; then return 5; fi
+
+    # Execute
+    if [ -z "${force}" ]; then
+        if [ -z "${pidfile}" ]; then
+            # Determine the pid by discovery
+            pidlist=`pidofproc "${1}"`
+            retval="${?}"
+        else
+            # The PID file contains the needed PIDs
+            # Note that by LSB requirement, the path must be given to pidofproc,
+            # however, it is not used by the current implementation or standard.
+            pidlist=`pidofproc -p "${pidfile}" "${1}"`
+            retval="${?}"
+        fi
+
+        # Return a value ONLY
+        # It is the init script's (or distribution's functions) responsibility
+        # to log messages!
+        case "${retval}" in
+
+            0)
+                # Program is already running correctly, this is a
+                # successful start.
+                return 0
+                ;;
+
+            1)
+                # Program is not running, but an invalid pid file exists
+                # remove the pid file and continue
+                rm -f "${pidfile}"
+                ;;
+
+            3)
+                # Program is not running and no pidfile exists
+                # do nothing here, let start_deamon continue.
+                ;;
+
+            *)
+                # Others as returned by status values shall not be interpreted
+                # and returned as an unspecified error.
+                return 1
+                ;;
+        esac
+    fi
+
+    # Do the start!
+    nice -n "${nice}" "${@}"
+}
+
+################################################################################
+# killproc()                                                                   #
+# Usage: killproc [-p pidfile] pathname [signal]                               #
+#                                                                              #
+# Purpose: Send control signals to running processes                           #
+#                                                                              #
+# Inputs: -p pidfile, uses the specified pidfile                               #
+#         pathname, pathname to the specified program                          #
+#         signal, send this signal to pathname                                 #
+#                                                                              #
+# Return values (as defined by LSB exit codes):                                #
+#       0 - program (pathname) has stopped/is already stopped or a             #
+#           running program has been sent specified signal and stopped         #
+#           successfully                                                       #
+#       1 - generic or unspecified error                                       #
+#       2 - invalid or excessive argument(s)                                   #
+#       5 - program is not installed                                           #
+#       7 - program is not running and a signal was supplied                   #
+################################################################################
+killproc()
+{
+    local pidfile
+    local program
+    local prefix
+    local progname
+    local signal="-TERM"
+    local fallback="-KILL"
+    local nosig
+    local pidlist
+    local retval
+    local pid
+    local delay="30"
+    local piddead
+    local dtime
+
+    # Process arguments
+    while true; do
+        case "${1}" in
+            -p)
+                pidfile="${2}"
+                shift 2
+                ;;
+
+             *)
+                 program="${1}"
+                 if [ -n "${2}" ]; then
+                     signal="${2}"
+                     fallback=""
+                 else
+                     nosig=1
+                 fi
+
+                 # Error on additional arguments
+                 if [ -n "${3}" ]; then
+                     return 2
+                 else
+                     break
+                 fi
+                 ;;
+        esac
+    done
+
+    # Check for a valid program
+    if [ ! -e "${program}" ]; then return 5; fi
+
+    # Check for a valid signal
+    check_signal "${signal}"
+    if [ "${?}" -ne "0" ]; then return 2; fi
+
+    # Get a list of pids
+    if [ -z "${pidfile}" ]; then
+        # determine the pid by discovery
+        pidlist=`pidofproc "${1}"`
+        retval="${?}"
+    else
+        # The PID file contains the needed PIDs
+        # Note that by LSB requirement, the path must be given to pidofproc,
+        # however, it is not used by the current implementation or standard.
+        pidlist=`pidofproc -p "${pidfile}" "${1}"`
+        retval="${?}"
+    fi
+
+    # Return a value ONLY
+    # It is the init script's (or distribution's functions) responsibility
+    # to log messages!
+    case "${retval}" in
+
+        0)
+            # Program is running correctly
+            # Do nothing here, let killproc continue.
+            ;;
+
+        1)
+            # Program is not running, but an invalid pid file exists
+            # Remove the pid file.
+
+            progname=${program##*/}
+
+            if [[ -e "/run/${progname}.pid" ]]; then
+                pidfile="/run/${progname}.pid"
+                rm -f "${pidfile}"
+            fi
+
+            # This is only a success if no signal was passed.
+            if [ -n "${nosig}" ]; then
+                return 0
+            else
+                return 7
+            fi
+            ;;
+
+        3)
+            # Program is not running and no pidfile exists
+            # This is only a success if no signal was passed.
+            if [ -n "${nosig}" ]; then
+                return 0
+            else
+                return 7
+            fi
+            ;;
+
+        *)
+            # Others as returned by status values shall not be interpreted
+            # and returned as an unspecified error.
+            return 1
+            ;;
+    esac
+
+    # Perform different actions for exit signals and control signals
+    check_sig_type "${signal}"
+
+    if [ "${?}" -eq "0" ]; then # Signal is used to terminate the program
+
+        # Account for empty pidlist (pid file still exists and no
+        # signal was given)
+        if [ "${pidlist}" != "" ]; then
+
+            # Kill the list of pids
+            for pid in ${pidlist}; do
+
+                kill -0 "${pid}" 2> /dev/null
+
+                if [ "${?}" -ne "0" ]; then
+                    # Process is dead, continue to next and assume all is well
+                    continue
+                else
+                    kill "${signal}" "${pid}" 2> /dev/null
+
+                    # Wait up to ${delay}/10 seconds to for "${pid}" to
+                    # terminate in 10ths of a second
+
+                    while [ "${delay}" -ne "0" ]; do
+                        kill -0 "${pid}" 2> /dev/null || piddead="1"
+                        if [ "${piddead}" = "1" ]; then break; fi
+                        sleep 0.1
+                        delay="$(( ${delay} - 1 ))"
+                    done
+
+                    # If a fallback is set, and program is still running, then
+                    # use the fallback
+                    if [ -n "${fallback}" -a "${piddead}" != "1" ]; then
+                        kill "${fallback}" "${pid}" 2> /dev/null
+                        sleep 1
+                        # Check again, and fail if still running
+                        kill -0 "${pid}" 2> /dev/null && return 1
+                    fi
+                fi
+            done
+        fi
+
+        # Check for and remove stale PID files.
+        if [ -z "${pidfile}" ]; then
+            # Find the basename of $program
+            prefix=`echo "${program}" | sed 's/[^/]*$//'`
+            progname=`echo "${program}" | sed "s@${prefix}@@"`
+
+            if [ -e "/run/${progname}.pid" ]; then
+                rm -f "/run/${progname}.pid" 2> /dev/null
+            fi
+        else
+            if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2> /dev/null; fi
+        fi
+
+    # For signals that do not expect a program to exit, simply
+    # let kill do its job, and evaluate kill's return for value
+
+    else # check_sig_type - signal is not used to terminate program
+        for pid in ${pidlist}; do
+            kill "${signal}" "${pid}"
+            if [ "${?}" -ne "0" ]; then return 1; fi
+        done
+    fi
+}
+
+################################################################################
+# pidofproc()                                                                  #
+# Usage: pidofproc [-p pidfile] pathname                                       #
+#                                                                              #
+# Purpose: This function returns one or more pid(s) for a particular daemon    #
+#                                                                              #
+# Inputs: -p pidfile, use the specified pidfile instead of pidof               #
+#         pathname, path to the specified program                              #
+#                                                                              #
+# Return values (as defined by LSB status codes):                              #
+#       0 - Success (PIDs to stdout)                                           #
+#       1 - Program is dead, PID file still exists (remaining PIDs output)     #
+#       3 - Program is not running (no output)                                 #
+################################################################################
+pidofproc()
+{
+    local pidfile
+    local program
+    local prefix
+    local progname
+    local pidlist
+    local lpids
+    local exitstatus="0"
+
+    # Process arguments
+    while true; do
+        case "${1}" in
+
+            -p)
+                pidfile="${2}"
+                shift 2
+                ;;
+
+            *)
+                program="${1}"
+                if [ -n "${2}" ]; then
+                    # Too many arguments
+                    # Since this is status, return unknown
+                    return 4
+                else
+                    break
+                fi
+                ;;
+        esac
+    done
+
+    # If a PID file is not specified, try and find one.
+    if [ -z "${pidfile}" ]; then
+        # Get the program's basename
+        prefix=`echo "${program}" | sed 's/[^/]*$//'`
+
+        if [ -z "${prefix}" ]; then
+           progname="${program}"
+        else
+           progname=`echo "${program}" | sed "s@${prefix}@@"`
+        fi
+
+        # If a PID file exists with that name, assume that is it.
+        if [ -e "/run/${progname}.pid" ]; then
+            pidfile="/run/${progname}.pid"
+        fi
+    fi
+
+    # If a PID file is set and exists, use it.
+    if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
+        # Use the value in the first line of the pidfile
+        pidlist=`/bin/head -n1 "${pidfile}"`
+    else
+        # Use pidof
+        pidlist=`pidof "${program}"`
+    fi
+
+    # Figure out if all listed PIDs are running.
+    for pid in ${pidlist}; do
+        kill -0 ${pid} 2> /dev/null
+
+        if [ "${?}" -eq "0" ]; then
+            lpids="${lpids}${pid} "
+        else
+            exitstatus="1"
+        fi
+    done
+
+    if [ -z "${lpids}" -a ! -f "${pidfile}" ]; then
+        return 3
+    else
+        echo "${lpids}"
+        return "${exitstatus}"
+    fi
+}
+
+################################################################################
+# statusproc()                                                                 #
+# Usage: statusproc [-p pidfile] pathname                                      #
+#                                                                              #
+# Purpose: This function prints the status of a particular daemon to stdout    #
+#                                                                              #
+# Inputs: -p pidfile, use the specified pidfile instead of pidof               #
+#         pathname, path to the specified program                              #
+#                                                                              #
+# Return values:                                                               #
+#       0 - Status printed                                                     #
+#       1 - Input error. The daemon to check was not specified.                #
+################################################################################
+statusproc()
+{
+   local pidfile
+   local pidlist
+
+   if [ "${#}" = "0" ]; then
+      echo "Usage: statusproc [-p pidfle] {program}"
+      exit 1
+   fi
+
+   # Process arguments
+   while true; do
+       case "${1}" in
+
+           -p)
+               pidfile="${2}"
+               shift 2
+               ;;
+
+           *)
+               if [ -n "${2}" ]; then
+                   echo "Too many arguments"
+                   return 1
+               else
+                   break
+               fi
+               ;;
+       esac
+   done
+
+   if [ -n "${pidfile}" ]; then
+      pidlist=`pidofproc -p "${pidfile}" $@`
+   else
+      pidlist=`pidofproc $@`
+   fi
+
+   # Trim trailing blanks
+   pidlist=`echo "${pidlist}" | sed -r 's/ +$//'`
+
+   base="${1##*/}"
+
+   if [ -n "${pidlist}" ]; then
+      /bin/echo -e "${INFO}${base} is running with Process" \
+         "ID(s) ${pidlist}.${NORMAL}"
+   else
+      if [ -n "${base}" -a -e "/run/${base}.pid" ]; then
+         /bin/echo -e "${WARNING}${1} is not running but" \
+            "/run/${base}.pid exists.${NORMAL}"
+      else
+         if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
+            /bin/echo -e "${WARNING}${1} is not running" \
+               "but ${pidfile} exists.${NORMAL}"
+         else
+            /bin/echo -e "${INFO}${1} is not running.${NORMAL}"
+         fi
+      fi
+   fi
+}
+
+################################################################################
+# timespec()                                                                   #
+#                                                                              #
+# Purpose: An internal utility function to format a timestamp                  #
+#          a boot log file.  Sets the STAMP variable.                          #
+#                                                                              #
+# Return value: Not used                                                       #
+################################################################################
+timespec()
+{
+   STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) "
+   return 0
+}
+
+################################################################################
+# log_success_msg()                                                            #
+# Usage: log_success_msg ["message"]                                           #
+#                                                                              #
+# Purpose: Print a successful status message to the screen and                 #
+#          a boot log file.                                                    #
+#                                                                              #
+# Inputs: $@ - Message                                                         #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_success_msg()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then 
+      /bin/echo -n -e "${BMPREFIX}${@}"
+      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+    else
+      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+      /bin/echo -e "${logmessage} OK" 
+    fi
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+
+    timespec
+    /bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG}
+
+    return 0
+}
+
+log_success_msg2()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then 
+      /bin/echo -n -e "${BMPREFIX}${@}"
+      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+    else
+      echo " OK" 
+    fi
+
+    echo " OK" >> ${BOOTLOG}
+
+    return 0
+}
+
+################################################################################
+# log_failure_msg()                                                            #
+# Usage: log_failure_msg ["message"]                                           #
+#                                                                              #
+# Purpose: Print a failure status message to the screen and                    #
+#          a boot log file.                                                    #
+#                                                                              #
+# Inputs: $@ - Message                                                         #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_failure_msg()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then 
+      /bin/echo -n -e "${BMPREFIX}${@}"
+      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+    else
+      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+      /bin/echo -e "${logmessage} FAIL"
+    fi
+
+    # Strip non-printable characters from log file
+
+    timespec
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    /bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG}
+
+    return 0
+}
+
+log_failure_msg2()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then 
+      /bin/echo -n -e "${BMPREFIX}${@}"
+      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+    else
+      echo "FAIL"
+    fi
+
+    echo "FAIL" >> ${BOOTLOG}
+
+    return 0
+}
+
+################################################################################
+# log_warning_msg()                                                            #
+# Usage: log_warning_msg ["message"]                                           #
+#                                                                              #
+# Purpose: Print a warning status message to the screen and                    #
+#          a boot log file.                                                    #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_warning_msg()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then
+      /bin/echo -n -e "${BMPREFIX}${@}"
+      /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
+    else
+      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+      /bin/echo -e "${logmessage} WARN"
+    fi 
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    timespec
+    /bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG}
+
+    return 0
+}
+
+log_skip_msg()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then
+      /bin/echo -n -e "${BMPREFIX}${@}"
+      /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
+    else
+      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+      /bin/echo "SKIP"
+    fi
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    /bin/echo "SKIP" >> ${BOOTLOG}
+
+    return 0
+}
+
+################################################################################
+# log_info_msg()                                                               #
+# Usage: log_info_msg message                                                  #
+#                                                                              #
+# Purpose: Print an information message to the screen and                      #
+#          a boot log file.  Does not print a trailing newline character.      #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_info_msg()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then
+      /bin/echo -n -e "${BMPREFIX}${@}"
+    else
+      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+      /bin/echo -n -e "${logmessage}"
+    fi
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    timespec
+    /bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG}
+
+    return 0
+}
+
+log_info_msg2()
+{
+    if [ "x$HEADLESS" != "xyes" ]
+    then
+      /bin/echo -n -e "${@}"
+    else
+      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+      /bin/echo -n -e "${logmessage}"
+    fi
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    /bin/echo -n -e "${logmessage}" >> ${BOOTLOG}
+
+    return 0
+}
+
+################################################################################
+# evaluate_retval()                                                            #
+# Usage: Evaluate a return value and print success or failure as appropriate  #
+#                                                                              #
+# Purpose: Convenience function to terminate an info message                   #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+evaluate_retval()
+{
+   local error_value="${?}"
+
+   if [ ${error_value} = 0 ]; then
+      log_success_msg2
+   else
+      log_failure_msg2
+   fi
+}
+
+################################################################################
+# check_signal()                                                               #
+# Usage: check_signal [ -{signal} ]                                            #
+#                                                                              #
+# Purpose: Check for a valid signal.  This is not defined by any LSB draft,    #
+#          however, it is required to check the signals to determine if the    #
+#          signals chosen are invalid arguments to the other functions.        #
+#                                                                              #
+# Inputs: Accepts a single string value in the form of -{signal}               #
+#                                                                              #
+# Return values:                                                               #
+#       0 - Success (signal is valid                                           #
+#       1 - Signal is not valid                                                #
+################################################################################
+check_signal()
+{
+    local valsig
+
+    # Add error handling for invalid signals
+    valsig=" -ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2"
+    valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN"
+    valsig="${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP"
+    valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 -4 -5 -6 -8 -9"
+    valsig="${valsig} -11 -13 -14 -15 "
+
+    echo "${valsig}" | grep -- " ${1} " > /dev/null
+
+    if [ "${?}" -eq "0" ]; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+################################################################################
+# check_sig_type()                                                             #
+# Usage: check_signal [ -{signal} | {signal} ]                                 #
+#                                                                              #
+# Purpose: Check if signal is a program termination signal or a control signal #
+#          This is not defined by any LSB draft, however, it is required to    #
+#          check the signals to determine if they are intended to end a        #
+#          program or simply to control it.                                    #
+#                                                                              #
+# Inputs: Accepts a single string value in the form or -{signal} or {signal}   #
+#                                                                              #
+# Return values:                                                               #
+#       0 - Signal is used for program termination                             #
+#       1 - Signal is used for program control                                 #
+################################################################################
+check_sig_type()
+{
+    local valsig
+
+    # The list of termination signals (limited to generally used items)
+    valsig=" -ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15 "
+
+    echo "${valsig}" | grep -- " ${1} " > /dev/null
+
+    if [ "${?}" -eq "0" ]; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+################################################################################
+# wait_for_user()                                                              #
+#                                                                              #
+# Purpose: Wait for the user to respond if not a headless system               #
+#                                                                              #
+################################################################################
+wait_for_user()
+{
+   # Wait for the user by default
+   [ "${HEADLESS=0}" = "0" ] && read ENTER
+   return 0
+}
+
+################################################################################
+# is_true()                                                                    #
+#                                                                              #
+# Purpose: Utility to test if a variable is true | yes | 1                     #
+#                                                                              #
+################################################################################
+is_true()
+{
+   [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] ||  [ "$1" = "y" ] ||
+   [ "$1" = "t" ]
+}
+
+# End /lib/lsb/init-functions
+
+
+
+
+
+

+ D.3. /etc/rc.d/init.d/mountvirtfs +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin mountvirtfs
+#
+# Description : Ensure proc, sysfs, run, and dev are mounted
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#               Xi Ruoyao - xry111@xry111.site
+#
+# Version     : LFS 12.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            mountvirtfs
+# Required-Start:      $first
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Mounts various special fs needed at start
+# Description:         Mounts /sys and /proc virtual (kernel) filesystems.
+#                      Mounts /run (tmpfs) and /dev (devtmpfs).
+#                      This is done only if they are not already mounted.
+#                      with the kernel config proposed in the book, dev
+#                      should be automatically mounted by the kernel.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      # Make sure /run is available before logging any messages
+      if ! mountpoint /run >/dev/null; then
+         mount /run || failed=1
+      fi
+
+      mkdir -p   /run/lock 
+      chmod 1777 /run/lock
+
+      log_info_msg "Mounting virtual file systems: ${INFO}/run"
+
+      if ! mountpoint /proc >/dev/null; then
+         log_info_msg2 " ${INFO}/proc"
+         mount -o nosuid,noexec,nodev /proc || failed=1
+      fi
+
+      if ! mountpoint /sys >/dev/null; then
+         log_info_msg2 " ${INFO}/sys"
+         mount -o nosuid,noexec,nodev /sys || failed=1
+      fi
+
+      if ! mountpoint /dev >/dev/null; then
+         log_info_msg2 " ${INFO}/dev"
+         mount -o mode=0755,nosuid /dev  || failed=1
+      fi
+
+      mkdir -p /dev/shm
+      log_info_msg2 " ${INFO}/dev/shm"
+      mount -o nosuid,nodev /dev/shm || failed=1
+
+      mkdir -p /sys/fs/cgroup
+      log_info_msg2 " ${INFO}/sys/fs/cgroup"
+      mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
+
+      (exit ${failed})
+      evaluate_retval
+      if [ "${failed}" = 1 ]; then
+         exit 1
+      fi
+
+      log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin"
+      ln -sf /proc/self/fd/0 /dev/stdin  || failed=1
+
+      log_info_msg2 " ${INFO}/dev/stdout"
+      ln -sf /proc/self/fd/1 /dev/stdout || failed=1
+
+      log_info_msg2 " ${INFO}/dev/stderr"
+      ln -sf /proc/self/fd/2 /dev/stderr || failed=1
+
+      log_info_msg2 " ${INFO}/dev/fd"
+      ln -sfn /proc/self/fd  /dev/fd     || failed=1
+
+      if [ -e /proc/kcore ]; then
+         log_info_msg2 " ${INFO}/dev/core"
+         ln -sf /proc/kcore  /dev/core   || failed=1
+      fi
+
+      (exit ${failed})
+      evaluate_retval
+      exit $failed
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End mountvirtfs
+
+
+
+
+
+

+ D.4. /etc/rc.d/init.d/modules +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin modules
+#
+# Description : Module auto-loading script
+#
+# Authors     : Zack Winkles
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            modules
+# Required-Start:      mountvirtfs
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Loads required modules.
+# Description:         Loads modules listed in /etc/sysconfig/modules.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+# Assure that the kernel has module support.
+[ -e /proc/modules ] || exit 0
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      # Exit if there's no modules file or there are no
+      # valid entries
+      [ -r /etc/sysconfig/modules ]             || exit 0
+      grep -E -qv '^($|#)' /etc/sysconfig/modules || exit 0
+
+      log_info_msg "Loading modules:"
+
+      # Only try to load modules if the user has actually given us
+      # some modules to load.
+
+      while read module args; do
+
+         # Ignore comments and blank lines.
+         case "$module" in
+            ""|"#"*) continue ;;
+         esac
+
+         # Attempt to load the module, passing any arguments provided.
+         modprobe ${module} ${args} >/dev/null
+
+         # Print the module name if successful, otherwise take note.
+         if [ $? -eq 0 ]; then
+            log_info_msg2 " ${module}"
+         else
+            failedmod="${failedmod} ${module}"
+         fi
+      done < /etc/sysconfig/modules
+
+      # Print a message about successfully loaded modules on the correct line.
+      log_success_msg2
+
+      # Print a failure message with a list of any modules that
+      # may have failed to load.
+      if [ -n "${failedmod}" ]; then
+         log_failure_msg "Failed to load modules:${failedmod}"
+         exit 1
+      fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End modules
+
+
+
+
+
+

+ D.5. /etc/rc.d/init.d/udev +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin udev
+#
+# Description : Udev cold-plugging script
+#
+# Authors     : Zack Winkles, Alexander E. Patrakov
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#               Xi Ruoyao - xry111@xry111.site
+#
+# Version     : LFS 12.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev $time
+# Required-Start:      localnet
+# Should-Start:        modules
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Populates /dev with device nodes.
+# Description:         Mounts a tempfs on /dev and starts the udevd daemon.
+#                      Device nodes are created as defined by udev.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Populating /dev with device nodes... "
+      if ! grep -q '[[:space:]]sysfs' /proc/mounts; then
+         log_failure_msg2
+         msg="FAILURE:\n\nUnable to create "
+         msg="${msg}devices without a SysFS filesystem\n\n"
+         msg="${msg}After you press Enter, this system "
+         msg="${msg}will be halted and powered off.\n\n"
+         log_info_msg "$msg"
+         log_info_msg "Press Enter to continue..."
+         wait_for_user
+         /etc/rc.d/init.d/halt start
+      fi
+
+      # Start the udev daemon to continually watch for, and act on,
+      # uevents
+      SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
+
+      # Now traverse /sys in order to "coldplug" devices that have
+      # already been discovered
+      /bin/udevadm trigger --action=add    --type=subsystems
+      /bin/udevadm trigger --action=add    --type=devices
+      /bin/udevadm trigger --action=change --type=devices
+
+      # Now wait for udevd to process the uevents we triggered
+      if ! is_true "$OMIT_UDEV_SETTLE"; then
+         /bin/udevadm settle
+      fi
+
+      # If any LVM based partitions are on the system, ensure they
+      # are activated so they can be used.
+      if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi
+
+      log_success_msg2
+      ;;
+
+   *)
+      echo "Usage ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End udev
+
+
+
+
+
+

+ D.6. /etc/rc.d/init.d/swap +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin swap
+#
+# Description : Swap Control Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            swap
+# Required-Start:      udev
+# Should-Start:        modules
+# Required-Stop:       localnet
+# Should-Stop:         $local_fs
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Activates and deactivates swap partitions.
+# Description:         Activates and deactivates swap partitions defined in
+#                      /etc/fstab.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Activating all swap files/partitions..."
+      swapon -a
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Deactivating all swap files/partitions..."
+      swapoff -a
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   status)
+      log_success_msg "Retrieving swap status."
+      swapon -s
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End swap
+
+
+
+
+
+

+ D.7. /etc/rc.d/init.d/setclock +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin setclock
+#
+# Description : Setting Linux Clock
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:
+# Required-Start:
+# Should-Start:        modules
+# Required-Stop:
+# Should-Stop:         $syslog
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Stores and restores time from the hardware clock
+# Description:         On boot, system time is obtained from hwclock.  The
+#                      hardware clock can also be set on shutdown.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+[ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock
+
+
+case "${UTC}" in
+   yes|true|1)
+      CLOCKPARAMS="${CLOCKPARAMS} --utc"
+      ;;
+
+   no|false|0)
+      CLOCKPARAMS="${CLOCKPARAMS} --localtime"
+      ;;
+
+esac
+
+case ${1} in
+   start)
+      hwclock --hctosys ${CLOCKPARAMS} >/dev/null
+      ;;
+
+   stop)
+      log_info_msg "Setting hardware clock..."
+      hwclock --systohc ${CLOCKPARAMS} >/dev/null
+      evaluate_retval
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop}"
+      exit 1
+      ;;
+
+esac
+
+exit 0
+
+
+
+
+
+

+ D.8. /etc/rc.d/init.d/checkfs +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin checkfs
+#
+# Description : File System Check
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               A. Luebke - luebke@users.sourceforge.net
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Based on checkfs script from LFS-3.1 and earlier.
+#
+# From man fsck
+# 0    - No errors
+# 1    - File system errors corrected
+# 2    - System should be rebooted
+# 4    - File system errors left uncorrected
+# 8    - Operational error
+# 16   - Usage or syntax error
+# 32   - Fsck canceled by user request
+# 128  - Shared library error
+#
+#########################################################################
+
+### BEGIN INIT INFO
+# Provides:            checkfs
+# Required-Start:      udev swap
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Checks local filesystems before mounting.
+# Description:         Checks local filesystems before mounting.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      if [ -f /fastboot ]; then
+         msg="/fastboot found, will omit "
+         msg="${msg} file system checks as requested.\n"
+         log_info_msg "${msg}"
+         exit 0
+      fi
+
+      log_info_msg "Mounting root file system in read-only mode... "
+      mount -n -o remount,ro / >/dev/null
+
+      if [ ${?} != 0 ]; then
+         log_failure_msg2
+         msg="\n\nCannot check root "
+         msg="${msg}filesystem because it could not be mounted "
+         msg="${msg}in read-only mode.\n\n"
+         msg="${msg}After you press Enter, this system will be "
+         msg="${msg}halted and powered off.\n\n"
+         log_failure_msg "${msg}"
+
+         log_info_msg "Press Enter to continue..."
+         wait_for_user
+         /etc/rc.d/init.d/halt start
+      else
+         log_success_msg2
+      fi
+
+      if [ -f /forcefsck ]; then
+         msg="/forcefsck found, forcing file"
+         msg="${msg} system checks as requested."
+         log_success_msg "$msg"
+         options="-f"
+      else
+         options=""
+      fi
+
+      log_info_msg "Checking file systems..."
+      # Note: -a option used to be -p; but this fails e.g. on fsck.minix
+      if is_true "$VERBOSE_FSCK"; then
+        fsck ${options} -a -A -C -T
+      else
+        fsck ${options} -a -A -C -T >/dev/null
+      fi
+
+      error_value=${?}
+
+      if [ "${error_value}" = 0 ]; then
+         log_success_msg2
+      fi
+
+      if [ "${error_value}" = 1 ]; then
+         msg="\nWARNING:\n\nFile system errors "
+         msg="${msg}were found and have been corrected.\n"
+         msg="${msg}      You may want to double-check that "
+         msg="${msg}everything was fixed properly."
+         log_warning_msg "$msg"
+      fi
+
+      if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
+         msg="\nWARNING:\n\nFile system errors "
+         msg="${msg}were found and have been "
+         msg="${msg}corrected, but the nature of the "
+         msg="${msg}errors require this system to be rebooted.\n\n"
+         msg="${msg}After you press enter, "
+         msg="${msg}this system will be rebooted\n\n"
+         log_failure_msg "$msg"
+
+         log_info_msg "Press Enter to continue..."
+         wait_for_user
+         reboot -f
+      fi
+
+      if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then
+         msg="\nFAILURE:\n\nFile system errors "
+         msg="${msg}were encountered that could not be "
+         msg="${msg}fixed automatically.\nThis system "
+         msg="${msg}cannot continue to boot and will "
+         msg="${msg}therefore be halted until those "
+         msg="${msg}errors are fixed manually by a "
+         msg="${msg}System Administrator.\n\n"
+         msg="${msg}After you press Enter, this system will be "
+         msg="${msg}halted and powered off.\n\n"
+         log_failure_msg "$msg"
+
+         log_info_msg "Press Enter to continue..."
+         wait_for_user
+         /etc/rc.d/init.d/halt start
+      fi
+
+      if [ "${error_value}" -ge 16 ]; then
+         msg="FAILURE:\n\nUnexpected failure "
+         msg="${msg}running fsck.  Exited with error "
+         msg="${msg} code: ${error_value}.\n"
+         log_info_msg $msg
+         exit ${error_value}
+      fi
+
+      exit 0
+      ;;
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End checkfs
+
+
+
+
+
+

+ D.9. /etc/rc.d/init.d/mountfs +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin mountfs
+#
+# Description : File System Mount Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $local_fs
+# Required-Start:      udev checkfs
+# Should-Start:        modules
+# Required-Stop:       localnet
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Mounts/unmounts local filesystems defined in /etc/fstab.
+# Description:         Remounts root filesystem read/write and mounts all
+#                      remaining local filesystems defined in /etc/fstab on
+#                      start.  Remounts root filesystem read-only and unmounts
+#                      remaining filesystems on stop.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Remounting root file system in read-write mode..."
+      mount --options remount,rw / >/dev/null
+      evaluate_retval
+
+      # Remove fsck-related file system watermarks.
+      rm -f /fastboot /forcefsck
+
+      # Make sure /dev/pts exists
+      mkdir -p /dev/pts
+
+      # This will mount all filesystems that do not have _netdev in
+      # their option list.  _netdev denotes a network filesystem.
+
+      log_info_msg "Mounting remaining file systems..."
+      failed=0
+      mount --all --test-opts no_netdev >/dev/null || failed=1
+      evaluate_retval
+      exit $failed
+      ;;
+
+   stop)
+      # Don't unmount virtual file systems like /run
+      log_info_msg "Unmounting all other currently mounted file systems..."
+      # Ensure any loop devices are removed
+      losetup -D
+      umount --all --detach-loop --read-only \
+             --types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null
+      evaluate_retval
+
+      # Make sure / is mounted read only (umount bug)
+      mount --options remount,ro /
+
+      # Make all LVM volume groups unavailable, if appropriate
+      # This fails if swap or / are on an LVM partition
+      #if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi
+      if [ -r /etc/mdadm.conf ]; then
+         log_info_msg "Mark arrays as clean..."
+         mdadm --wait-clean --scan
+         evaluate_retval
+      fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop}"
+      exit 1
+      ;;
+esac
+
+# End mountfs
+
+
+
+
+
+

+ D.10. /etc/rc.d/init.d/udev_retry +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin udev_retry
+#
+# Description : Udev cold-plugging script (retry)
+#
+# Authors     : Alexander E. Patrakov
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#               Bryan Kadzban -
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev_retry
+# Required-Start:      udev
+# Should-Start:        $local_fs cleanfs
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Replays failed uevents and creates additional devices.
+# Description:         Replays any failed uevents that were skipped due to
+#                      slow hardware initialization, and creates those needed
+#                      device nodes
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Retrying failed uevents, if any..."
+
+      rundir=/run/udev
+      # From Debian: "copy the rules generated before / was mounted
+      # read-write":
+
+      for file in ${rundir}/tmp-rules--*; do
+         dest=${file##*tmp-rules--}
+         [ "$dest" = '*' ] && break
+         cat $file >> /etc/udev/rules.d/$dest
+         rm -f $file
+      done
+
+      # Re-trigger the uevents that may have failed,
+      # in hope they will succeed now
+      /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
+      while read line ; do
+         for subsystem in $line ; do
+            /bin/udevadm trigger --subsystem-match=$subsystem --action=add
+         done
+      done
+
+      # Now wait for udevd to process the uevents we triggered
+      if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then
+         /bin/udevadm settle
+      fi
+
+      evaluate_retval
+      ;;
+
+   *)
+      echo "Usage ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End udev_retry
+
+
+
+
+
+

+ D.11. /etc/rc.d/init.d/cleanfs +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin cleanfs
+#
+# Description : Clean file system
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            cleanfs
+# Required-Start:      $local_fs
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Cleans temporary directories early in the boot process.
+# Description:         Cleans temporary directories /run, /var/lock, and
+#                      optionally, /tmp.  cleanfs also creates /run/utmp
+#                      and any files defined in /etc/sysconfig/createfiles.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+# Function to create files/directory on boot.
+create_files()
+{
+   # Input to file descriptor 9 and output to stdin (redirection)
+   exec 9>&0 < /etc/sysconfig/createfiles
+
+   while read name type perm usr grp dtype maj min junk
+   do
+      # Ignore comments and blank lines.
+      case "${name}" in
+         ""|\#*) continue ;;
+      esac
+
+      # Ignore existing files.
+      if [ ! -e "${name}" ]; then
+         # Create stuff based on its type.
+         case "${type}" in
+            dir)
+               mkdir "${name}"
+               ;;
+            file)
+               :> "${name}"
+               ;;
+            dev)
+               case "${dtype}" in
+                  char)
+                     mknod "${name}" c ${maj} ${min}
+                     ;;
+                  block)
+                     mknod "${name}" b ${maj} ${min}
+                     ;;
+                  pipe)
+                     mknod "${name}" p
+                     ;;
+                  *)
+                     log_warning_msg "\nUnknown device type: ${dtype}"
+                     ;;
+               esac
+               ;;
+            *)
+               log_warning_msg "\nUnknown type: ${type}"
+               continue
+               ;;
+         esac
+
+         # Set up the permissions, too.
+         chown ${usr}:${grp} "${name}"
+         chmod ${perm} "${name}"
+      fi
+   done
+
+   # Close file descriptor 9 (end redirection)
+   exec 0>&9 9>&-
+   return 0
+}
+
+case "${1}" in
+   start)
+      log_info_msg "Cleaning file systems:"
+
+      if [ "${SKIPTMPCLEAN}" = "" ]; then
+         log_info_msg2 " /tmp"
+         cd /tmp &&
+         find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
+      fi
+
+      > /run/utmp
+
+      if grep -q '^utmp:' /etc/group ; then
+         chmod 664 /run/utmp
+         chgrp utmp /run/utmp
+      fi
+
+      (exit ${failed})
+      evaluate_retval
+
+      if grep -E -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then
+         log_info_msg "Creating files and directories... "
+         create_files      # Always returns 0
+         evaluate_retval
+      fi
+
+      exit $failed
+      ;;
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End cleanfs
+
+
+
+
+
+

+ D.12. /etc/rc.d/init.d/console +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin console
+#
+# Description : Sets keymap and screen font
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               Alexander E. Patrakov
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            console
+# Required-Start:      $local_fs
+# Should-Start:        udev_retry
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Sets up a localised console.
+# Description:         Sets up fonts and language settings for the user's
+#                      local as defined by /etc/sysconfig/console.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+# Native English speakers probably don't have /etc/sysconfig/console at all
+[ -r /etc/sysconfig/console ] && . /etc/sysconfig/console
+
+failed=0
+
+case "${1}" in
+   start)
+      # See if we need to do anything
+      if [ -z "${KEYMAP}"         ] && [ -z "${KEYMAP_CORRECTIONS}" ] &&
+         [ -z "${FONT}"           ] && [ -z "${LEGACY_CHARSET}"     ] &&
+         ! is_true "${UNICODE}"; then
+         exit 0
+      fi
+
+      # There should be no bogus failures below this line!
+      log_info_msg "Setting up Linux console..."
+
+      # Figure out if a framebuffer console is used
+      [ -d /sys/class/graphics/fbcon ] && use_fb=1 || use_fb=0
+
+      # Figure out the command to set the console into the
+      # desired mode
+      is_true "${UNICODE}" &&
+         MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" ||
+         MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a"
+
+      # On framebuffer consoles, font has to be set for each vt in
+      # UTF-8 mode. This doesn't hurt in non-UTF-8 mode also.
+
+      ! is_true "${use_fb}" || [ -z "${FONT}" ] ||
+         MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}"
+
+      # Apply that command to all consoles mentioned in
+      # /etc/inittab. Important: in the UTF-8 mode this should
+      # happen before setfont, otherwise a kernel bug will
+      # show up and the unicode map of the font will not be
+      # used.
+
+      for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab |
+         grep -o '\btty[[:digit:]]*\b'`
+      do
+         openvt -f -w -c ${TTY#tty} -- \
+            /bin/sh -c "${MODE_COMMAND}" || failed=1
+      done
+
+      # Set the font (if not already set above) and the keymap
+      [ "${use_fb}" == "1" ] || [ -z "${FONT}" ] || setfont $FONT || failed=1
+
+      [ -z "${KEYMAP}" ] ||
+         loadkeys ${KEYMAP} >/dev/null 2>&1 ||
+         failed=1
+
+      [ -z "${KEYMAP_CORRECTIONS}" ] ||
+         loadkeys ${KEYMAP_CORRECTIONS} >/dev/null 2>&1 ||
+         failed=1
+
+      # Convert the keymap from $LEGACY_CHARSET to UTF-8
+      [ -z "$LEGACY_CHARSET" ] ||
+         dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u >/dev/null 2>&1 ||
+         failed=1
+
+      # If any of the commands above failed, the trap at the
+      # top would set $failed to 1
+      ( exit $failed )
+      evaluate_retval
+
+      exit $failed
+      ;;
+
+   *)
+      echo "Usage:  ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End console
+
+
+
+
+
+

+ D.13. /etc/rc.d/init.d/localnet +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin localnet
+#
+# Description : Loopback device
+#
+# Authors     : Gerard Beekmans  - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            localnet
+# Required-Start:      mountvirtfs
+# Should-Start:        modules
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Starts the local network.
+# Description:         Sets the hostname of the machine and starts the
+#                      loopback interface.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network
+[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname`
+
+case "${1}" in
+   start)
+      log_info_msg "Bringing up the loopback interface..."
+      ip addr add 127.0.0.1/8 label lo dev lo
+      ip link set lo up
+      evaluate_retval
+
+      log_info_msg "Setting hostname to ${HOSTNAME}..."
+      hostname ${HOSTNAME}
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Bringing down the loopback interface..."
+      ip link set lo down
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   status)
+      echo "Hostname is: $(hostname)"
+      ip link show lo
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End localnet
+
+
+
+
+
+

+ D.14. /etc/rc.d/init.d/sysctl +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin sysctl
+#
+# Description : File uses /etc/sysctl.conf to set kernel runtime
+#               parameters
+#
+# Authors     : Nathan Coulson (nathan AT linuxfromscratch D0T org)
+#               Matthew Burgress (matthew AT linuxfromscratch D0T org)
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            sysctl
+# Required-Start:      mountvirtfs
+# Should-Start:        console
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Makes changes to the proc filesystem
+# Description:         Makes changes to the proc filesystem as defined in
+#                      /etc/sysctl.conf.  See 'man sysctl(8)'.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      if [ -f "/etc/sysctl.conf" ]; then
+         log_info_msg "Setting kernel runtime parameters..."
+         sysctl -q -p
+         evaluate_retval
+      fi
+      ;;
+
+   status)
+      sysctl -a
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End sysctl
+
+
+
+
+
+

+ D.15. /etc/rc.d/init.d/sysklogd +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin sysklogd
+#
+# Description : Sysklogd loader
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org LFS12.1
+#               Remove kernel log daemon.  The functionality has been
+#               merged with syslogd.                
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $syslog
+# Required-Start:      $first localnet
+# Should-Start:
+# Required-Stop:       $local_fs
+# Should-Stop:         sendsignals
+# Default-Start:       2 3 4 5
+# Default-Stop:        0 1 6
+# Short-Description:   Starts system log daemon.
+# Description:         Starts system log daemon.
+#                      /etc/fstab.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Starting system log daemon..."
+      parms=${SYSKLOGD_PARMS-'-m 0'}
+      start_daemon /sbin/syslogd $parms
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Stopping system log daemon..."
+      killproc /sbin/syslogd
+      evaluate_retval
+      ;;
+
+   reload)
+      log_info_msg "Reloading system log daemon config file..."
+      pid=`pidofproc syslogd`
+      kill -HUP "${pid}"
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   status)
+      statusproc /sbin/syslogd
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|reload|restart|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End sysklogd
+
+
+
+
+
+

+ D.16. /etc/rc.d/init.d/network +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin network
+#
+# Description : Network Control Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $network
+# Required-Start:      $local_fs localnet swap
+# Should-Start:        $syslog firewalld iptables nftables
+# Required-Stop:       $local_fs localnet swap
+# Should-Stop:         $syslog firewalld iptables nftables
+# Default-Start:       2 3 4 5
+# Default-Stop:        0 1 6
+# Short-Description:   Starts and configures network interfaces.
+# Description:         Starts and configures network interfaces.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+case "${1}" in
+   start)
+      # if the default route exists, network is already configured
+      if ip route | grep -q "^default"; then exit 0; fi
+      # Start all network interfaces
+      for file in /etc/sysconfig/ifconfig.*
+      do
+         interface=${file##*/ifconfig.}
+
+         # Skip if $file is * (because nothing was found)
+         if [ "${interface}" = "*" ]; then continue; fi
+
+         /sbin/ifup ${interface}
+      done
+      ;;
+
+   stop)
+      # Unmount any network mounted file systems
+       umount --all --force --types nfs,cifs,nfs4
+
+      # Reverse list
+      net_files=""
+      for file in  /etc/sysconfig/ifconfig.*
+      do
+         net_files="${file} ${net_files}"
+      done
+
+      # Stop all network interfaces
+      for file in ${net_files}
+      do
+         interface=${file##*/ifconfig.}
+
+         # Skip if $file is * (because nothing was found)
+         if [ "${interface}" = "*" ]; then continue; fi
+
+         # See if interface exists
+         if [ ! -e /sys/class/net/$interface ]; then continue; fi
+
+         # Is interface UP?
+         ip link show $interface 2>/dev/null | grep -q "state UP"
+         if [ $? -ne 0 ];  then continue; fi
+
+         /sbin/ifdown ${interface}
+      done
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End network
+
+
+
+
+
+

+ D.17. /etc/rc.d/init.d/sendsignals +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin sendsignals
+#
+# Description : Sendsignals Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            sendsignals
+# Required-Start:
+# Should-Start:
+# Required-Stop:       $local_fs swap localnet
+# Should-Stop:
+# Default-Start:
+# Default-Stop:        0 6
+# Short-Description:   Attempts to kill remaining processes.
+# Description:         Attempts to kill remaining processes.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   stop)
+      omit=$(pidof mdmon)
+      [ -n "$omit" ] && omit="-o $omit"
+
+      log_info_msg "Sending all processes the TERM signal..."
+      killall5 -15 $omit
+      error_value=${?}
+
+      sleep ${KILLDELAY}
+
+      if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
+         log_success_msg
+      else
+         log_failure_msg
+      fi
+
+      log_info_msg "Sending all processes the KILL signal..."
+      killall5 -9 $omit
+      error_value=${?}
+
+      sleep ${KILLDELAY}
+
+      if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
+         log_success_msg
+      else
+         log_failure_msg
+      fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {stop}"
+      exit 1
+      ;;
+
+esac
+
+exit 0
+
+# End sendsignals
+
+
+
+
+
+

+ D.18. /etc/rc.d/init.d/reboot +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin reboot
+#
+# Description : Reboot Scripts
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Update March 24th, 2022: change "stop" to "start".
+#               Add the $last facility to Required-start
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            reboot
+# Required-Start:      $last
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       6
+# Default-Stop:
+# Short-Description:   Reboots the system.
+# Description:         Reboots the System.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Restarting system..."
+      reboot -d -f -i
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+
+esac
+
+# End reboot
+
+
+
+
+
+

+ D.19. /etc/rc.d/init.d/halt +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin halt
+#
+# Description : Halt Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Update March 24th, 2022: change "stop" to "start".
+#               Add the $last facility to Required-start
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            halt
+# Required-Start:      $last
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       0
+# Default-Stop:
+# Short-Description:   Halts the system.
+# Description:         Halts the System.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+case "${1}" in
+   start)
+      halt -d -f -i -p
+      ;;
+
+   *)
+      echo "Usage: {start}"
+      exit 1
+      ;;
+esac
+
+# End halt
+
+
+
+
+
+

+ D.20. /etc/rc.d/init.d/template +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin scriptname
+#
+# Description :
+#
+# Authors     :
+#
+# Version     : LFS x.x
+#
+# Notes       :
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            template
+# Required-Start:
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description:
+# Description:
+# X-LFS-Provided-By:
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Starting..."
+    # if it is possible to use start_daemon
+      start_daemon fully_qualified_path
+    # if it is not possible to use start_daemon
+    # (command to start the daemon is not simple enough)
+      if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then
+         command_to_start_the_service
+      fi
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Stopping..."
+    # if it is possible to use killproc
+      killproc fully_qualified_path
+    # if it is not possible to use killproc
+    # (the daemon shouldn't be stopped by killing it)
+      if pidofproc daemon_name_as_reported_by_ps >/dev/null; then
+         command_to_stop_the_service
+      fi
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End scriptname
+
+
+
+
+
+

+ D.21. /etc/sysconfig/modules +

+
+
+
+
+
########################################################################
+# Begin /etc/sysconfig/modules
+#
+# Description : Module auto-loading configuration
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       : The syntax of this file is as follows:
+#               <module> [<arg1> <arg2> ...]
+#
+# Each module should be on its own line, and any options that you want
+# passed to the module should follow it.  The line deliminator is either
+# a space or a tab.
+########################################################################
+
+# End /etc/sysconfig/modules
+
+
+
+
+
+

+ D.22. /etc/sysconfig/createfiles +

+
+
+
+
+
########################################################################
+# Begin /etc/sysconfig/createfiles
+#
+# Description : Createfiles script config file
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       : The syntax of this file is as follows:
+#               if type is equal to "file" or "dir"
+#                <filename> <type> <permissions> <user> <group>
+#               if type is equal to "dev"
+#                <filename> <type> <permissions> <user> <group> <devtype>
+#             <major> <minor>
+#
+#               <filename> is the name of the file which is to be created
+#               <type> is either file, dir, or dev.
+#                       file creates a new file
+#                       dir creates a new directory
+#                       dev creates a new device
+#               <devtype> is either block, char or pipe
+#                       block creates a block device
+#                       char creates a character device
+#                       pipe creates a pipe, this will ignore the <major> and
+#           <minor> fields
+#               <major> and <minor> are the major and minor numbers used for
+#     the device.
+########################################################################
+
+# End /etc/sysconfig/createfiles
+
+
+
+
+
+

+ D.23. /etc/sysconfig/udev-retry +

+
+
+
+
+
########################################################################
+# Begin /etc/sysconfig/udev_retry
+#
+# Description : udev_retry script configuration
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       : Each subsystem that may need to be re-triggered after mountfs
+#               runs should be listed in this file.  Probable subsystems to be
+#               listed here are rtc (due to /var/lib/hwclock/adjtime) and sound
+#               (due to both /var/lib/alsa/asound.state and /usr/sbin/alsactl).
+#               Entries are whitespace-separated.
+########################################################################
+
+rtc
+
+# End /etc/sysconfig/udev_retry
+
+
+
+
+
+

+ D.24. /sbin/ifup +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin /sbin/ifup
+#
+# Description : Interface Up
+#
+# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.7
+#
+# Notes       : The IFCONFIG variable is passed to the SERVICE script
+#               in the /lib/services directory, to indicate what file the
+#               service should source to get interface specifications.
+#
+########################################################################
+
+up()
+{
+  log_info_msg "Bringing up the ${1} interface..."
+
+  if ip link show $1 > /dev/null 2>&1; then
+     link_status=`ip link show $1`
+
+     if [ -n "${link_status}" ]; then
+        if ! echo "${link_status}" | grep -q UP; then
+           ip link set $1 up
+        fi
+     fi
+
+  else
+     log_failure_msg "Interface ${IFACE} doesn't exist."
+     exit 1
+  fi
+
+  evaluate_retval
+}
+
+RELEASE="7.7"
+
+USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
+VERSTR="LFS ifup, version ${RELEASE}"
+
+while [ $# -gt 0 ]; do
+   case "$1" in
+      --help | -h)     help="y"; break ;;
+
+      --version | -V)  echo "${VERSTR}"; exit 0 ;;
+
+      -*)              echo "ifup: ${1}: invalid option" >&2
+                       echo "${USAGE}" >& 2
+                       exit 2 ;;
+
+      *)               break ;;
+   esac
+done
+
+if [ -n "$help" ]; then
+   echo "${VERSTR}"
+   echo "${USAGE}"
+   echo
+   cat << HERE_EOF
+ifup is used to bring up a network interface.  The interface
+parameter, e.g. eth0 or eth0:2, must match the trailing part of the
+interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
+
+HERE_EOF
+   exit 0
+fi
+
+file=/etc/sysconfig/ifconfig.${1}
+
+# Skip backup files
+[ "${file}" = "${file%""~""}" ] || exit 0
+
+. /lib/lsb/init-functions
+
+if [ ! -r "${file}" ]; then
+   log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed."
+   exit 1
+fi
+
+.  $file
+
+if [ "$IFACE" = "" ]; then
+   log_failure_msg "Unable to bring up ${1} interface! ${file} does not define an interface [IFACE]."
+   exit 1
+fi
+
+# Do not process this service if started by boot, and ONBOOT
+# is not set to yes
+if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then
+   exit 0
+fi
+
+# Bring up the interface
+if [ "$VIRTINT" != "yes" ]; then
+   up ${IFACE}
+fi
+
+for S in ${SERVICE}; do
+  if [ ! -x "/lib/services/${S}" ]; then
+    MSG="\nUnable to process ${file}.  Either "
+    MSG="${MSG}the SERVICE '${S} was not present "
+    MSG="${MSG}or cannot be executed."
+    log_failure_msg "$MSG"
+    exit 1
+  fi
+done
+
+#if [ "${SERVICE}" = "wpa" ]; then log_success_msg; fi
+
+# Create/configure the interface
+for S in ${SERVICE}; do
+  IFCONFIG=${file} /lib/services/${S} ${IFACE} up
+done
+
+# Set link up virtual interfaces
+if [ "${VIRTINT}" == "yes" ]; then
+   up ${IFACE}
+fi
+
+# Bring up any additional interface components
+for I in $INTERFACE_COMPONENTS; do up $I; done
+
+# Set MTU if requested. Check if MTU has a "good" value.
+if test -n "${MTU}"; then
+   if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then
+      for I in $IFACE $INTERFACE_COMPONENTS; do
+         ip link set dev $I mtu $MTU;
+      done
+   else
+      log_info_msg2 "Invalid MTU $MTU"
+   fi
+fi
+
+# Set the route default gateway if requested
+if [ -n "${GATEWAY}" ]; then
+   if ip route | grep -q default; then
+      log_warning_msg "Gateway already setup; skipping."
+   else
+      log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..."
+      ip route add default via ${GATEWAY} dev ${IFACE}
+      evaluate_retval
+   fi
+fi
+
+# End /sbin/ifup
+
+
+
+
+
+

+ D.25. /sbin/ifdown +

+
+
+
+
+
#!/bin/bash
+########################################################################
+# Begin /sbin/ifdown
+#
+# Description : Interface Down
+#
+# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : the IFCONFIG variable is passed to the scripts found
+#               in the /lib/services directory, to indicate what file the
+#               service should source to get interface specifications.
+#
+########################################################################
+
+RELEASE="7.0"
+
+USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
+VERSTR="LFS ifdown, version ${RELEASE}"
+
+while [ $# -gt 0 ]; do
+   case "$1" in
+      --help | -h)     help="y"; break ;;
+
+      --version | -V)  echo "${VERSTR}"; exit 0 ;;
+
+      -*)              echo "ifup: ${1}: invalid option" >&2
+                       echo "${USAGE}" >& 2
+                       exit 2 ;;
+
+      *)               break ;;
+   esac
+done
+
+if [ -n "$help" ]; then
+   echo "${VERSTR}"
+   echo "${USAGE}"
+   echo
+   cat << HERE_EOF
+ifdown is used to bring down a network interface.  The interface
+parameter, e.g. eth0 or eth0:2, must match the trailing part of the
+interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
+
+HERE_EOF
+   exit 0
+fi
+
+file=/etc/sysconfig/ifconfig.${1}
+
+# Skip backup files
+[ "${file}" = "${file%""~""}" ] || exit 0
+
+. /lib/lsb/init-functions
+
+if [ ! -r "${file}" ]; then
+   log_warning_msg "${file} is missing or cannot be accessed."
+   exit 1
+fi
+
+. ${file}
+
+if [ "$IFACE" = "" ]; then
+   log_failure_msg "${file} does not define an interface [IFACE]."
+   exit 1
+fi
+
+# We only need to first service to bring down the interface
+S=`echo ${SERVICE} | cut -f1 -d" "`
+
+if ip link show ${IFACE} > /dev/null 2>&1; then
+   if [ -n "${S}" -a -x "/lib/services/${S}" ]; then
+     IFCONFIG=${file} /lib/services/${S} ${IFACE} down
+   else
+     MSG="Unable to process ${file}.  Either "
+     MSG="${MSG}the SERVICE variable was not set "
+     MSG="${MSG}or the specified service cannot be executed."
+     log_failure_msg "$MSG"
+     exit 1
+  fi
+else
+   log_warning_msg "Interface ${1} doesn't exist."
+fi
+
+# Leave the interface up if there are additional interfaces in the device
+link_status=`ip link show ${IFACE} 2>/dev/null`
+
+if [ -n "${link_status}" ]; then
+   if [ "$(echo "${link_status}" | grep UP)" != "" ]; then
+      if [ "$(ip addr show ${IFACE} | grep 'inet ')" == ""  ]; then
+         log_info_msg "Bringing down the ${IFACE} interface..."
+         ip link set ${IFACE} down
+         evaluate_retval
+      fi
+   fi
+fi
+
+# End /sbin/ifdown
+
+
+
+
+
+

+ D.26. /lib/services/ipv4-static +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static
+#
+# Description : IPV4 Static Boot Script
+#
+# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+. ${IFCONFIG}
+
+if [ -z "${IP}" ]; then
+   log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue."
+   exit 1
+fi
+
+if [ -z "${PREFIX}" -a -z "${PEER}" ]; then
+   log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24."
+   PREFIX=24
+   args="${args} ${IP}/${PREFIX}"
+
+elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then
+   log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue."
+   exit 1
+
+elif [ -n "${PREFIX}" ]; then
+   args="${args} ${IP}/${PREFIX}"
+
+elif [ -n "${PEER}" ]; then
+   args="${args} ${IP} peer ${PEER}"
+fi
+
+if [ -n "${LABEL}" ]; then
+   args="${args} label ${LABEL}"
+fi
+
+if [ -n "${BROADCAST}" ]; then
+   args="${args} broadcast ${BROADCAST}"
+fi
+
+case "${2}" in
+   up)
+      if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" = "" ]; then
+         log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..."
+         ip addr add ${args} dev ${1}
+         evaluate_retval
+      else
+         log_warning_msg "Cannot add IPv4 address ${IP} to ${1}.  Already present."
+      fi
+   ;;
+
+   down)
+      if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then
+         log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..."
+         ip addr del ${args} dev ${1}
+         evaluate_retval
+      fi
+
+      if [ -n "${GATEWAY}" ]; then
+         # Only remove the gateway if there are no remaining ipv4 addresses
+         if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then
+            log_info_msg "Removing default gateway..."
+            ip route del default
+            evaluate_retval
+         fi
+      fi
+   ;;
+
+   *)
+      echo "Usage: ${0} [interface] {up|down}"
+      exit 1
+   ;;
+esac
+
+# End /lib/services/ipv4-static
+
+
+
+
+
+

+ D.27. /lib/services/ipv4-static-route +

+
+
+
+
+
#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static-route
+#
+# Description : IPV4 Static Route Script
+#
+# Authors     : Kevin P. Fleming - kpfleming@linuxfromscratch.org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+. ${IFCONFIG}
+
+case "${TYPE}" in
+   ("" | "network")
+      need_ip=1
+      need_gateway=1
+   ;;
+
+   ("default")
+      need_gateway=1
+      args="${args} default"
+      desc="default"
+   ;;
+
+   ("host")
+      need_ip=1
+   ;;
+
+   ("unreachable")
+      need_ip=1
+      args="${args} unreachable"
+      desc="unreachable "
+   ;;
+
+   (*)
+      log_failure_msg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue."
+      exit 1
+   ;;
+esac
+
+if [ -n "${GATEWAY}" ]; then
+   MSG="The GATEWAY variable cannot be set in ${IFCONFIG} for static routes.\n"
+   log_failure_msg "$MSG Use STATIC_GATEWAY only, cannot continue"
+   exit 1
+fi
+
+if [ -n "${need_ip}" ]; then
+   if [ -z "${IP}" ]; then
+      log_failure_msg "IP variable missing from ${IFCONFIG}, cannot continue."
+      exit 1
+   fi
+
+   if [ -z "${PREFIX}" ]; then
+      log_failure_msg "PREFIX variable missing from ${IFCONFIG}, cannot continue."
+      exit 1
+   fi
+
+   args="${args} ${IP}/${PREFIX}"
+   desc="${desc}${IP}/${PREFIX}"
+fi
+
+if [ -n "${need_gateway}" ]; then
+   if [ -z "${STATIC_GATEWAY}" ]; then
+      log_failure_msg "STATIC_GATEWAY variable missing from ${IFCONFIG}, cannot continue."
+      exit 1
+   fi
+   args="${args} via ${STATIC_GATEWAY}"
+fi
+
+if [ -n "${SOURCE}" ]; then
+        args="${args} src ${SOURCE}"
+fi
+
+case "${2}" in
+   up)
+      log_info_msg "Adding '${desc}' route to the ${1} interface..."
+      ip route add ${args} dev ${1}
+      evaluate_retval
+   ;;
+
+   down)
+      log_info_msg "Removing '${desc}' route from the ${1} interface..."
+      ip route del ${args} dev ${1}
+      evaluate_retval
+   ;;
+
+   *)
+      echo "Usage: ${0} [interface] {up|down}"
+      exit 1
+   ;;
+esac
+
+# End /lib/services/ipv4-static-route
+
+
+
+
+
+
+

+ Appendix E. Udev + configuration rules +

+
+
+
+
+

+ The rules in this appendix are listed for convenience. + Installation is normally done via instructions in Section 8.76, “Udev + from Systemd-257.8.” +

+
+
+
+

+ E.1. 55-lfs.rules +

+
+
+
+
+
# /etc/udev/rules.d/55-lfs.rules: Rule definitions for LFS.
+
+# Core kernel devices
+
+# This causes the system clock to be set as soon as /dev/rtc becomes available.
+SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
+KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
+
+
+
+
+
+
+
+

+ Appendix F. LFS Licenses +

+
+
+
+
+

+ This book is licensed under the Creative Commons + Attribution-NonCommercial-ShareAlike 2.0 License. +

+

+ Computer instructions may be extracted from the book under the + MIT License. +

+
+
+
+

+ F.1. Creative Commons License +

+
+
+
+
+

+ Creative Commons Legal Code +

+

+ Attribution-NonCommercial-ShareAlike 2.0 +

+
+

+ Important +

+

+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT + PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT + CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS + PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE + COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION + PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + ITS USE. +

+
+

+ License +

+

+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS + CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK + IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE + OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR + COPYRIGHT LAW IS PROHIBITED. +

+

+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT + AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE + LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION + OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. +

+
+
    +
  1. +

    + Definitions +

    +
    +
      +
    1. +

      + "Collective Work" means a work, such as a + periodical issue, anthology or encyclopedia, in + which the Work in its entirety in unmodified form, + along with a number of other contributions, + constituting separate and independent works in + themselves, are assembled into a collective whole. + A work that constitutes a Collective Work will not + be considered a Derivative Work (as defined below) + for the purposes of this License. +

      +
    2. +
    3. +

      + "Derivative Work" means a work based upon the Work + or upon the Work and other pre-existing works, such + as a translation, musical arrangement, + dramatization, fictionalization, motion picture + version, sound recording, art reproduction, + abridgment, condensation, or any other form in + which the Work may be recast, transformed, or + adapted, except that a work that constitutes a + Collective Work will not be considered a Derivative + Work for the purpose of this License. For the + avoidance of doubt, where the Work is a musical + composition or sound recording, the synchronization + of the Work in timed-relation with a moving image + ("synching") will be considered a Derivative Work + for the purpose of this License. +

      +
    4. +
    5. +

      + "Licensor" means the individual or entity that + offers the Work under the terms of this License. +

      +
    6. +
    7. +

      + "Original Author" means the individual or entity + who created the Work. +

      +
    8. +
    9. +

      + "Work" means the copyrightable work of authorship + offered under the terms of this License. +

      +
    10. +
    11. +

      + "You" means an individual or entity exercising + rights under this License who has not previously + violated the terms of this License with respect to + the Work, or who has received express permission + from the Licensor to exercise rights under this + License despite a previous violation. +

      +
    12. +
    13. +

      + "License Elements" means the following high-level + license attributes as selected by Licensor and + indicated in the title of this License: + Attribution, Noncommercial, ShareAlike. +

      +
    14. +
    +
    +
  2. +
  3. +

    + Fair Use Rights. Nothing in this license is intended to + reduce, limit, or restrict any rights arising from fair + use, first sale or other limitations on the exclusive + rights of the copyright owner under copyright law or + other applicable laws. +

    +
  4. +
  5. +

    + License Grant. Subject to the terms and conditions of + this License, Licensor hereby grants You a worldwide, + royalty-free, non-exclusive, perpetual (for the duration + of the applicable copyright) license to exercise the + rights in the Work as stated below: +

    +
    +
      +
    1. +

      + to reproduce the Work, to incorporate the Work into + one or more Collective Works, and to reproduce the + Work as incorporated in the Collective Works; +

      +
    2. +
    3. +

      + to create and reproduce Derivative Works; +

      +
    4. +
    5. +

      + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission the Work + including as incorporated in Collective Works; +

      +
    6. +
    7. +

      + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission Derivative + Works; +

      +
    8. +
    +
    +

    + The above rights may be exercised in all media and + formats whether now known or hereafter devised. The above + rights include the right to make such modifications as + are technically necessary to exercise the rights in other + media and formats. All rights not expressly granted by + Licensor are hereby reserved, including but not limited + to the rights set forth in Sections 4(e) and 4(f). +

    +
  6. +
  7. +

    + Restrictions.The license granted in Section 3 above is + expressly made subject to and limited by the following + restrictions: +

    +
    +
      +
    1. +

      + You may distribute, publicly display, publicly + perform, or publicly digitally perform the Work + only under the terms of this License, and You must + include a copy of, or the Uniform Resource + Identifier for, this License with every copy or + phonorecord of the Work You distribute, publicly + display, publicly perform, or publicly digitally + perform. You may not offer or impose any terms on + the Work that alter or restrict the terms of this + License or the recipients' exercise of the rights + granted hereunder. You may not sublicense the Work. + You must keep intact all notices that refer to this + License and to the disclaimer of warranties. You + may not distribute, publicly display, publicly + perform, or publicly digitally perform the Work + with any technological measures that control access + or use of the Work in a manner inconsistent with + the terms of this License Agreement. The above + applies to the Work as incorporated in a Collective + Work, but this does not require the Collective Work + apart from the Work itself to be made subject to + the terms of this License. If You create a + Collective Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Collective Work any reference to such Licensor or + the Original Author, as requested. If You create a + Derivative Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Derivative Work any reference to such Licensor or + the Original Author, as requested. +

      +
    2. +
    3. +

      + You may distribute, publicly display, publicly + perform, or publicly digitally perform a Derivative + Work only under the terms of this License, a later + version of this License with the same License + Elements as this License, or a Creative Commons + iCommons license that contains the same License + Elements as this License (e.g. + Attribution-NonCommercial-ShareAlike 2.0 Japan). + You must include a copy of, or the Uniform Resource + Identifier for, this License or other license + specified in the previous sentence with every copy + or phonorecord of each Derivative Work You + distribute, publicly display, publicly perform, or + publicly digitally perform. You may not offer or + impose any terms on the Derivative Works that alter + or restrict the terms of this License or the + recipients' exercise of the rights granted + hereunder, and You must keep intact all notices + that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly + display, publicly perform, or publicly digitally + perform the Derivative Work with any technological + measures that control access or use of the Work in + a manner inconsistent with the terms of this + License Agreement. The above applies to the + Derivative Work as incorporated in a Collective + Work, but this does not require the Collective Work + apart from the Derivative Work itself to be made + subject to the terms of this License. +

      +
    4. +
    5. +

      + You may not exercise any of the rights granted to + You in Section 3 above in any manner that is + primarily intended for or directed toward + commercial advantage or private monetary + compensation. The exchange of the Work for other + copyrighted works by means of digital file-sharing + or otherwise shall not be considered to be intended + for or directed toward commercial advantage or + private monetary compensation, provided there is no + payment of any monetary compensation in connection + with the exchange of copyrighted works. +

      +
    6. +
    7. +

      + If you distribute, publicly display, publicly + perform, or publicly digitally perform the Work or + any Derivative Works or Collective Works, You must + keep intact all copyright notices for the Work and + give the Original Author credit reasonable to the + medium or means You are utilizing by conveying the + name (or pseudonym if applicable) of the Original + Author if supplied; the title of the Work if + supplied; to the extent reasonably practicable, the + Uniform Resource Identifier, if any, that Licensor + specifies to be associated with the Work, unless + such URI does not refer to the copyright notice or + licensing information for the Work; and in the case + of a Derivative Work, a credit identifying the use + of the Work in the Derivative Work (e.g., "French + translation of the Work by Original Author," or + "Screenplay based on original Work by Original + Author"). Such credit may be implemented in any + reasonable manner; provided, however, that in the + case of a Derivative Work or Collective Work, at a + minimum such credit will appear where any other + comparable authorship credit appears and in a + manner at least as prominent as such other + comparable authorship credit. +

      +
    8. +
    9. +

      + For the avoidance of doubt, where the Work is a + musical composition: +

      +
      +
        +
      1. +

        + Performance Royalties Under Blanket Licenses. + Licensor reserves the exclusive right to + collect, whether individually or via a + performance rights society (e.g. ASCAP, BMI, + SESAC), royalties for the public performance + or public digital performance (e.g. webcast) + of the Work if that performance is primarily + intended for or directed toward commercial + advantage or private monetary compensation. +

        +
      2. +
      3. +

        + Mechanical Rights and Statutory Royalties. + Licensor reserves the exclusive right to + collect, whether individually or via a music + rights agency or designated agent (e.g. Harry + Fox Agency), royalties for any phonorecord + You create from the Work ("cover version") + and distribute, subject to the compulsory + license created by 17 USC Section 115 of the + US Copyright Act (or the equivalent in other + jurisdictions), if Your distribution of such + cover version is primarily intended for or + directed toward commercial advantage or + private monetary compensation. 6. Webcasting + Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive + right to collect, whether individually or via + a performance-rights society (e.g. + SoundExchange), royalties for the public + digital performance (e.g. webcast) of the + Work, subject to the compulsory license + created by 17 USC Section 114 of the US + Copyright Act (or the equivalent in other + jurisdictions), if Your public digital + performance is primarily intended for or + directed toward commercial advantage or + private monetary compensation. +

        +
      4. +
      +
      +
    10. +
    11. +

      + Webcasting Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive right to + collect, whether individually or via a + performance-rights society (e.g. SoundExchange), + royalties for the public digital performance (e.g. + webcast) of the Work, subject to the compulsory + license created by 17 USC Section 114 of the US + Copyright Act (or the equivalent in other + jurisdictions), if Your public digital performance + is primarily intended for or directed toward + commercial advantage or private monetary + compensation. +

      +
    12. +
    +
    +
  8. +
  9. +

    + Representations, Warranties and Disclaimer +

    +

    + UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN + WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO + REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE + WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, + INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, + MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, + NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER + DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, + WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT + ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH + EXCLUSION MAY NOT APPLY TO YOU. +

    +
  10. +
  11. +

    + Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY + APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO + YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, + CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT + OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR + HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +

    +
  12. +
  13. +

    + Termination +

    +
    +
      +
    1. +

      + This License and the rights granted hereunder will + terminate automatically upon any breach by You of + the terms of this License. Individuals or entities + who have received Derivative Works or Collective + Works from You under this License, however, will + not have their licenses terminated provided such + individuals or entities remain in full compliance + with those licenses. Sections 1, 2, 5, 6, 7, and 8 + will survive any termination of this License. +

      +
    2. +
    3. +

      + Subject to the above terms and conditions, the + license granted here is perpetual (for the duration + of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the + right to release the Work under different license + terms or to stop distributing the Work at any time; + provided, however that any such election will not + serve to withdraw this License (or any other + license that has been, or is required to be, + granted under the terms of this License), and this + License will continue in full force and effect + unless terminated as stated above. +

      +
    4. +
    +
    +
  14. +
  15. +

    + Miscellaneous +

    +
    +
      +
    1. +

      + Each time You distribute or publicly digitally + perform the Work or a Collective Work, the Licensor + offers to the recipient a license to the Work on + the same terms and conditions as the license + granted to You under this License. +

      +
    2. +
    3. +

      + Each time You distribute or publicly digitally + perform a Derivative Work, Licensor offers to the + recipient a license to the original Work on the + same terms and conditions as the license granted to + You under this License. +

      +
    4. +
    5. +

      + If any provision of this License is invalid or + unenforceable under applicable law, it shall not + affect the validity or enforceability of the + remainder of the terms of this License, and without + further action by the parties to this agreement, + such provision shall be reformed to the minimum + extent necessary to make such provision valid and + enforceable. +

      +
    6. +
    7. +

      + No term or provision of this License shall be + deemed waived and no breach consented to unless + such waiver or consent shall be in writing and + signed by the party to be charged with such waiver + or consent. +

      +
    8. +
    9. +

      + This License constitutes the entire agreement + between the parties with respect to the Work + licensed here. There are no understandings, + agreements or representations with respect to the + Work not specified here. Licensor shall not be + bound by any additional provisions that may appear + in any communication from You. This License may not + be modified without the mutual written agreement of + the Licensor and You. +

      +
    10. +
    +
    +
  16. +
+
+
+

+ Important +

+

+ Creative Commons is not a party to this License, and makes no + warranty whatsoever in connection with the Work. Creative + Commons will not be liable to You or any party on any legal + theory for any damages whatsoever, including without + limitation any general, special, incidental or consequential + damages arising in connection to this license. + Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor + hereunder, it shall have all rights and obligations of + Licensor. +

+

+ Except for the limited purpose of indicating to the public + that the Work is licensed under the CCPL, neither party will + use the trademark "Creative Commons" or any related trademark + or logo of Creative Commons without the prior written consent + of Creative Commons. Any permitted use will be in compliance + with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise + made available upon request from time to time. +

+

+ Creative Commons may be contacted at http://creativecommons.org/. +

+
+
+
+
+
+

+ F.2. The MIT License +

+
+
+
+
+

+ Copyright © 1999-2025 Gerard Beekmans +

+

+ Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: +

+

+ The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. +

+

+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. +

+
+
+
+
+
+
+
+

+ Index +

+
+
+
+
+

+ Packages +

+ +

+ Programs +

+ +

+ Libraries +

+ +

+ Scripts +

+ +

+ Others +

+ +
+
+
+ + diff --git a/meta/.gitignore b/meta/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/meta/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/meta/Makefile b/meta/Makefile new file mode 100644 index 0000000..a9735ec --- /dev/null +++ b/meta/Makefile @@ -0,0 +1,26 @@ +INPUTS = src/etc/X11/wdm/motd.in \ + src/etc/issue.in \ + src/etc/lsb-release.in \ + src/etc/motd.in \ + src/etc/os-release.in + +OUTPUTS = build/etc/X11/wdm/motd \ + build/etc/issue \ + build/etc/lsb-release \ + build/etc/motd \ + build/etc/os-release + +VARS = ../vars.sh + +.PHONY = all clean install + +all: $(OUTPUTS) + +clean: + rm -rf build/ + +build/%: src/%.in $(VARS) + ./render.sh $< + +install: all + cp -rv build/ "$(DESTDIR)/" diff --git a/meta/render.sh b/meta/render.sh new file mode 100755 index 0000000..6b27494 --- /dev/null +++ b/meta/render.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env /bin/bash +# Co-Authored by: Claude (Sonnet 5.5 Medium) +# Usage: render.sh src/path/file.in [../vars.sh] +set -euo pipefail + +in=$1 +vars_file=${2:-../vars.sh} + +case $in in + src/*) ;; + *) echo "render.sh: input must be under src/: $in" >&2; exit 1 ;; +esac + +# src/etc/issue.in -> build/etc/issue +out=build/${in#src/} +out=${out%.in} + +# Load variables from vars.sh and export them for envsubst +if [[ -n $vars_file ]]; then + set -a + # shellcheck disable=SC1090 + source "$vars_file" + set +a +fi + +# Only substitute ${VAR} references that actually appear in the template, +# so anything else (like \n or \l) is left untouched +refs=$(grep -oE '\$\{[A-Za-z_][A-Za-z0-9_]*\}' "$in" | sort -u || true) + +# Fail loudly on undefined variables instead of silently emitting empty strings +for ref in $refs; do + name=${ref#\$\{}; name=${name%\}} + if [[ -z ${!name+x} ]]; then + echo "render.sh: $in uses undefined variable $name" >&2 + exit 1 + fi +done + +mkdir -p "$(dirname "$out")" + +# Write to a temp file first so a failure never leaves a half-written output +tmp=$(mktemp "$out.XXXXXX") +trap 'rm -f "$tmp"' EXIT +envsubst "$(echo $refs)" < "$in" > "$tmp" +chmod 644 "$tmp" +mv "$tmp" "$out" +trap - EXIT diff --git a/meta/src/etc/X11/wdm/motd.in b/meta/src/etc/X11/wdm/motd.in new file mode 100644 index 0000000..7fd5ded --- /dev/null +++ b/meta/src/etc/X11/wdm/motd.in @@ -0,0 +1,2 @@ +ZiomekOS ${VERSION} (${CODENAME_PRETTY}) based on LFS 12.4 +Created by Tomek Wójcik | For teh lulz diff --git a/meta/src/etc/issue.in b/meta/src/etc/issue.in new file mode 100644 index 0000000..5fa24ad --- /dev/null +++ b/meta/src/etc/issue.in @@ -0,0 +1,2 @@ +ZiomekOS ${VERSION} (${CODENAME_PRETTY}) \n \l + diff --git a/meta/src/etc/lsb-release.in b/meta/src/etc/lsb-release.in new file mode 100644 index 0000000..0470b90 --- /dev/null +++ b/meta/src/etc/lsb-release.in @@ -0,0 +1,4 @@ +DISTRIB_ID="ZiomekOS" +DISTRIB_RELEASE="${VERSION}" +DISTRIB_CODENAME="${CODENAME}" +DISTRIB_DESCRIPTION="ZiomekOS ${VERSION} (${CODENAME_PRETTY})" diff --git a/meta/src/etc/motd.in b/meta/src/etc/motd.in new file mode 100644 index 0000000..d9adeae --- /dev/null +++ b/meta/src/etc/motd.in @@ -0,0 +1,12 @@ + + A + _ _ _ _ _ _ +| |__ | |_| |__ | | __ _| |__ ___ _ __ | | +| '_ \| __| '_ \| |/ _` | '_ \/ __| | '_ \| | +| |_) | |_| | | | | (_| | |_) \__ \_| |_) | | +|_.__/ \__|_| |_|_|\__,_|_.__/|___(_) .__/|_| + |_| + production + +ZiomekOS ${VERSION} (${CODENAME_PRETTY}) based on LFS 12.4 +Created by Tomek Wójcik | For teh lulz diff --git a/meta/src/etc/os-release.in b/meta/src/etc/os-release.in new file mode 100644 index 0000000..0eeeebd --- /dev/null +++ b/meta/src/etc/os-release.in @@ -0,0 +1,7 @@ +NAME="ZiomekOS" +ID=ziomekos +PRETTY_NAME="ZiomekOS ${VERSION} (${CODENAME_PRETTY})" +VERSION="${VERSION} (${CODENAME_PRETTY})" +VERSION_CODENAME="${CODENAME}" +BUILD_ID="${BUILD}" +RELEASE_TYPE="stable" diff --git a/packages/archey4-4.15.0.0/README.md b/packages/archey4-4.15.0.0/README.md new file mode 100644 index 0000000..bd4d039 --- /dev/null +++ b/packages/archey4-4.15.0.0/README.md @@ -0,0 +1,29 @@ +# archey4-4.15.0.0 + +## Introduction to Archey4 + +Archey4 is a simple _fetch-like_ tool, to display system information and +distribution logo. It's written in Python and has zero system dependencies. + +This package is known to build and work properly using ZiomekOS 26.9.26 +platform. + +## Archey4 Package Information + +N/A + +## Archey4 Dependencies + +## Required + +Python 3.13.7 + +## Installation of Archey4 + +Install WDM by running the following commands: + +``` +pip3.13 install --user archey4==4.15.0.0 +``` + +This will install Archey4 in the current user's home directory and will install the binary in `$HOME/.local/bin`. You may need to adjust your shell's environment's `PATH` to add that directory. diff --git a/packages/archey4-4.15.0.0/ziomekos/ziomekos.py b/packages/archey4-4.15.0.0/ziomekos/ziomekos.py new file mode 100644 index 0000000..a347986 --- /dev/null +++ b/packages/archey4-4.15.0.0/ziomekos/ziomekos.py @@ -0,0 +1,28 @@ +"""ZiomekOS logo""" + +from archey.colors import Colors + +COLORS = [Colors.WHITE_NORMAL, Colors.WHITE_BRIGHT] + +LOGO = [ + """{c[0]} ..:.....:{c[1]}^~^{c[0]}:.....::. """, + """{c[0]} .:{c[1]}^~{c[0]}.:{c[1]}^^{c[0]}:.^{c[1]}!YG57{c[0]}^..{c[1]}^^{c[0]}:.{c[1]}~^{c[0]}:. """, + """{c[0]} :^{c[1]}^!?{c[0]}....::::{c[1]}7PBG?{c[0]}::::....{c[1]}!~^{c[0]}::. """, + """{c[0]}.{c[1]}^^~{c[0]}:{c[1]}~!^{c[0]} .{c[1]}^^^{c[0]}:^:{c[1]}^YB5^{c[0]}.::{c[1]}^^^{c[0]}. :{c[1]}!~{c[0]}:{c[1]}^~^{c[0]}. """, + """{c[0]}{c[1]}!{c[0]}..{c[1]}~77~{c[0]} :{c[1]}^{c[0]}::: :{c[1]}7?5G57!{c[0]}: :.:{c[1]}^{c[0]}: {c[1]}~?7~{c[0]}::{c[1]}!{c[0]}.""", + """{c[0]}::.{c[1]}!7!{c[0]}....{c[1]}^^{c[0]}:.:{c[1]}7YPGP57{c[0]}:.:{c[1]}^^{c[0]}.:..{c[1]}!7~{c[0]}.:: """, + """{c[0]} :{c[1]}~~7{c[0]}::^ . .{c[1]}^75PPPPPPPY7^{c[0]}: . ^.:{c[1]}!~~{c[0]}: """, + """{c[0]} {c[1]}~~{c[0]}. .^~.{c[1]}^75GY7777777YG5?{c[0]}:.~^. .{c[1]}~^{c[0]} """, + """{c[0]} . .^:{c[1]}?GGJ:^~!7!~^:7GG?{c[0]}.!. . """, + """{c[0]} :{c[1]}!YGP?{c[0]}:.:{c[1]}^^{c[0]}::.:{c[1]}7PGY!{c[0]}:. """, + """{c[0]} .{c[1]}^7PPYJ!{c[0]}:::..::{c[1]}!JYG5!^{c[0]}. """, + """{c[0]} .~{c[1]}^5P5Y7~^^:^^~7Y5G5^{c[0]}^. """, + """{c[0]} .~~.{c[1]}^7J5YJ???7?JY5Y?^{c[0]} ~~. """, + """{c[0]} ~{c[1]}Y{c[0]}~..::{c[1]}~?YJ5GPJJJ~{c[0]}^:..~{c[1]}J{c[0]}~. """, + """{c[0]} .~{c[1]}Y!{c[0]}:~^...:.{c[1]}^~^{c[0]}:....^~^{c[1]}7J{c[0]}~. """, + """{c[0]} .{c[1]}7J7{c[0]}~^{c[1]}~~{c[0]}::{c[1]}~^{c[0]}. .{c[1]}^~{c[0]}::{c[1]}~~{c[0]}^!{c[1]}7?7{c[0]}. """, + """{c[0]} .^{c[1]}??!77{c[0]}~^{c[1]}!57{c[0]}. .{c[1]}!5!{c[0]}:^{c[1]}77!??{c[0]}:. """, + """{c[0]} .^{c[1]}~?7!!!~{c[0]}.::::{c[1]}~!~!7?^{c[0]}~: """, + """{c[0]} .::{c[1]}!!~~!??7!~~!!{c[0]}::. """, + """{c[0]} ..{c[1]}^!{c[0]}:.. """, +] diff --git a/packages/linux-6.16.1/ziomekos/config b/packages/linux-6.16.1/ziomekos/config new file mode 100644 index 0000000..ea00d8a --- /dev/null +++ b/packages/linux-6.16.1/ziomekos/config @@ -0,0 +1,11656 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 6.16.1 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="gcc (GCC) 15.2.0" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=150200 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=24500 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=24500 +CONFIG_LLD_VERSION=0 +CONFIG_RUSTC_VERSION=0 +CONFIG_RUSTC_LLVM_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_TOOLS_SUPPORT_RELR=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_CC_HAS_COUNTED_BY=y +CONFIG_CC_HAS_MULTIDIMENSIONAL_NONSTRING=y +CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y +CONFIG_PAHOLE_VERSION=0 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="-ziomekos-20260926" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_ZSTD=y +# CONFIG_KERNEL_GZIP is not set +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_KERNEL_ZSTD=y +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_WATCH_QUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_IRQ_INJECTION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST_IDLE=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +# CONFIG_NO_HZ_IDLE is not set +CONFIG_NO_HZ_FULL=y +CONFIG_CONTEXT_TRACKING_USER=y +# CONFIG_CONTEXT_TRACKING_USER_FORCE is not set +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=125 +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +# CONFIG_BPF_JIT_ALWAYS_ON is not set +CONFIG_BPF_JIT_DEFAULT_ON=y +CONFIG_BPF_UNPRIV_DEFAULT_OFF=y +# CONFIG_BPF_PRELOAD is not set +CONFIG_BPF_LSM=y +# end of BPF subsystem + +CONFIG_PREEMPT_BUILD=y +CONFIG_ARCH_HAS_PREEMPT_LAZY=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_LAZY=y +# CONFIG_PREEMPT_RT is not set +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y +CONFIG_PREEMPT_DYNAMIC=y +# CONFIG_SCHED_CORE is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_NEED_TASKS_RCU=y +CONFIG_TASKS_RCU=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_NOCB_CPU=y +# CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set +CONFIG_RCU_LAZY=y +# CONFIG_RCU_LAZY_DEFAULT_OFF is not set +# end of RCU Subsystem + +# CONFIG_IKCONFIG is not set +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +# CONFIG_PRINTK_INDEX is not set +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y + +# +# Scheduler features +# +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=5 +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC10_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y +CONFIG_GCC_NO_STRINGOP_OVERFLOW=y +CONFIG_CC_NO_STRINGOP_OVERFLOW=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_SLAB_OBJ_EXT=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +# CONFIG_CGROUP_FAVOR_DYNMODS is not set +CONFIG_MEMCG=y +# CONFIG_MEMCG_V1 is not set +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_GROUP_SCHED_WEIGHT=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_SCHED_MM_CID=y +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +# CONFIG_CGROUP_DMEM is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +# CONFIG_CPUSETS_V1 is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_MISC=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_RD_ZSTD=y +# CONFIG_BOOT_CONFIG is not set +CONFIG_INITRAMFS_PRESERVE_MTIME=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +# CONFIG_BASE_SMALL is not set +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_FUTEX_MPOL=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_CACHESTAT_SYSCALL=y +# CONFIG_PC104 is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set +CONFIG_KALLSYMS_ALL=y +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_GUEST_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y + +# +# Kexec and crash features +# +CONFIG_CRASH_RESERVE=y +CONFIG_VMCORE_INFO=y +CONFIG_KEXEC_CORE=y +CONFIG_HAVE_IMA_KEXEC=y +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +CONFIG_KEXEC_SIG=y +# CONFIG_KEXEC_SIG_FORCE is not set +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y +# CONFIG_KEXEC_JUMP is not set +# CONFIG_KEXEC_HANDOVER is not set +CONFIG_CRASH_DUMP=y +# CONFIG_CRASH_DM_CRYPT is not set +CONFIG_CRASH_HOTPLUG=y +CONFIG_CRASH_MAX_MEMORY_RANGES=8192 +# end of Kexec and crash features +# end of General setup + +CONFIG_64BIT=y +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_AUDIT_ARCH=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_X86_64_SMP=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_DYNAMIC_PHYSICAL_MASK=y +CONFIG_PGTABLE_LEVELS=5 + +# +# Processor type and features +# +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +# CONFIG_X86_POSTED_MSI is not set +CONFIG_X86_MPPARSE=y +CONFIG_X86_CPU_RESCTRL=y +# CONFIG_X86_FRED is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_XXL=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_X86_HV_CALLBACK_VECTOR=y +CONFIG_XEN=y +CONFIG_XEN_PV=y +CONFIG_XEN_512GB=y +CONFIG_XEN_PV_SMP=y +CONFIG_XEN_PV_DOM0=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_PVHVM_SMP=y +CONFIG_XEN_PVHVM_GUEST=y +CONFIG_XEN_SAVE_RESTORE=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_PVH=y +CONFIG_XEN_DOM0=y +CONFIG_XEN_PV_MSR_SAFE=y +CONFIG_KVM_GUEST=y +CONFIG_ARCH_CPUIDLE_HALTPOLL=y +CONFIG_PVH=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_JAILHOUSE_GUEST is not set +# CONFIG_ACRN_GUEST is not set +CONFIG_INTEL_TDX_GUEST=y +CONFIG_CC_HAS_MARCH_NATIVE=y +# CONFIG_X86_NATIVE_CPU is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_TSC=y +CONFIG_X86_HAVE_PAE=y +CONFIG_X86_CX8=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_IA32_FEAT_CTL=y +CONFIG_X86_VMX_FEATURE_NAMES=y +# CONFIG_PROCESSOR_SELECT is not set +CONFIG_BROADCAST_TLB_FLUSH=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +CONFIG_BOOT_VESA_SUPPORT=y +CONFIG_MAXSMP=y +CONFIG_NR_CPUS_RANGE_BEGIN=8192 +CONFIG_NR_CPUS_RANGE_END=8192 +CONFIG_NR_CPUS_DEFAULT=8192 +CONFIG_NR_CPUS=8192 +CONFIG_SCHED_CLUSTER=y +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_ACPI_MADT_WAKEUP=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCELOG_LEGACY is not set +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=m +CONFIG_PERF_EVENTS_INTEL_RAPL=m +CONFIG_PERF_EVENTS_INTEL_CSTATE=m +CONFIG_PERF_EVENTS_AMD_POWER=m +CONFIG_PERF_EVENTS_AMD_UNCORE=y +# CONFIG_PERF_EVENTS_AMD_BRS is not set +# end of Performance monitoring + +CONFIG_X86_16BIT=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_X86_IOPL_IOPERM=y +CONFIG_MICROCODE=y +# CONFIG_MICROCODE_LATE_LOADING is not set +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +CONFIG_X86_DIRECT_GBPAGES=y +# CONFIG_X86_CPA_STATISTICS is not set +CONFIG_X86_MEM_ENCRYPT=y +CONFIG_AMD_MEM_ENCRYPT=y +CONFIG_NUMA=y +CONFIG_AMD_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NODES_SHIFT=10 +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +# CONFIG_ARCH_MEMORY_PROBE is not set +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_X86_PMEM_LEGACY_DEVICE=y +CONFIG_X86_PMEM_LEGACY=m +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_X86_UMIP=y +CONFIG_CC_HAS_IBT=y +CONFIG_X86_CET=y +CONFIG_X86_KERNEL_IBT=y +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +CONFIG_ARCH_PKEY_BITS=4 +CONFIG_X86_INTEL_TSX_MODE_OFF=y +# CONFIG_X86_INTEL_TSX_MODE_ON is not set +# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set +CONFIG_X86_SGX=y +CONFIG_X86_USER_SHADOW_STACK=y +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_HANDOVER_PROTOCOL=y +CONFIG_EFI_MIXED=y +CONFIG_EFI_RUNTIME_MAP=y +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y +CONFIG_ARCH_SELECTS_KEXEC_FILE=y +CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG_FORCE=y +CONFIG_ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_JUMP=y +CONFIG_ARCH_SUPPORTS_KEXEC_HANDOVER=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y +CONFIG_ARCH_DEFAULT_CRASH_DUMP=y +CONFIG_ARCH_SUPPORTS_CRASH_HOTPLUG=y +CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION=y +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x200000 +CONFIG_RANDOMIZE_MEMORY=y +CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +CONFIG_HOTPLUG_CPU=y +# CONFIG_COMPAT_VDSO is not set +# CONFIG_LEGACY_VSYSCALL_XONLY is not set +CONFIG_LEGACY_VSYSCALL_NONE=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y +# CONFIG_STRICT_SIGALTSTACK_SIZE is not set +CONFIG_HAVE_LIVEPATCH=y +CONFIG_LIVEPATCH=y +CONFIG_X86_BUS_LOCK_DETECT=y +# end of Processor type and features + +CONFIG_CC_HAS_NAMED_AS=y +CONFIG_CC_HAS_NAMED_AS_FIXED_SANITIZERS=y +CONFIG_USE_X86_SEG_SUPPORT=y +CONFIG_CC_HAS_SLS=y +CONFIG_CC_HAS_RETURN_THUNK=y +CONFIG_CC_HAS_ENTRY_PADDING=y +CONFIG_FUNCTION_PADDING_CFI=11 +CONFIG_FUNCTION_PADDING_BYTES=16 +CONFIG_CALL_PADDING=y +CONFIG_HAVE_CALL_THUNKS=y +CONFIG_CALL_THUNKS=y +CONFIG_PREFIX_SYMBOLS=y +CONFIG_CPU_MITIGATIONS=y +CONFIG_MITIGATION_PAGE_TABLE_ISOLATION=y +CONFIG_MITIGATION_RETPOLINE=y +CONFIG_MITIGATION_RETHUNK=y +CONFIG_MITIGATION_UNRET_ENTRY=y +CONFIG_MITIGATION_CALL_DEPTH_TRACKING=y +# CONFIG_CALL_THUNKS_DEBUG is not set +CONFIG_MITIGATION_IBPB_ENTRY=y +CONFIG_MITIGATION_IBRS_ENTRY=y +CONFIG_MITIGATION_SRSO=y +CONFIG_MITIGATION_SLS=y +CONFIG_MITIGATION_GDS=y +CONFIG_MITIGATION_RFDS=y +CONFIG_MITIGATION_SPECTRE_BHI=y +CONFIG_MITIGATION_MDS=y +CONFIG_MITIGATION_TAA=y +CONFIG_MITIGATION_MMIO_STALE_DATA=y +CONFIG_MITIGATION_L1TF=y +CONFIG_MITIGATION_RETBLEED=y +CONFIG_MITIGATION_SPECTRE_V1=y +CONFIG_MITIGATION_SPECTRE_V2=y +CONFIG_MITIGATION_SRBDS=y +CONFIG_MITIGATION_SSB=y +CONFIG_MITIGATION_ITS=y +CONFIG_MITIGATION_TSA=y +CONFIG_ARCH_HAS_ADD_PAGES=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HIBERNATION_SNAPSHOT_DEV=y +CONFIG_HIBERNATION_COMP_LZO=y +# CONFIG_HIBERNATION_COMP_LZ4 is not set +CONFIG_HIBERNATION_DEF_COMP="lzo" +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +# CONFIG_DPM_WATCHDOG is not set +# CONFIG_PM_TRACE_RTC is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_ENERGY_MODEL=y +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ACPI=y +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_TABLE_LIB=y +CONFIG_ACPI_THERMAL_LIB=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_SPCR_TABLE=y +# CONFIG_ACPI_FPDT is not set +CONFIG_ACPI_LPIT=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_EC_DEBUGFS=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +# CONFIG_ACPI_TINY_POWER_BUTTON is not set +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_TAD=m +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_PLATFORM_PROFILE=m +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_HED=y +CONFIG_ACPI_BGRT=y +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ACPI_NHLT=y +CONFIG_ACPI_NFIT=m +# CONFIG_NFIT_SECURITY_DEBUG is not set +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_HMAT=y +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_EINJ=m +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +# CONFIG_ACPI_DPTF is not set +CONFIG_ACPI_WATCHDOG=y +CONFIG_ACPI_EXTLOG=y +CONFIG_ACPI_ADXL=y +# CONFIG_ACPI_CONFIGFS is not set +# CONFIG_ACPI_PFRUT is not set +CONFIG_ACPI_PCC=y +# CONFIG_ACPI_FFH is not set +CONFIG_ACPI_MRRM=y +CONFIG_PMIC_OPREGION=y +CONFIG_BYTCRC_PMIC_OPREGION=y +CONFIG_CHTCRC_PMIC_OPREGION=y +CONFIG_XPOWER_PMIC_OPREGION=y +CONFIG_BXT_WC_PMIC_OPREGION=y +CONFIG_CHT_WC_PMIC_OPREGION=y +CONFIG_CHT_DC_TI_PMIC_OPREGION=y +# CONFIG_TPS68470_PMIC_OPREGION is not set +CONFIG_ACPI_VIOT=y +CONFIG_ACPI_PRMT=y +CONFIG_X86_PM_TIMER=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_AMD_PSTATE=y +CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3 +# CONFIG_X86_AMD_PSTATE_UT is not set +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_P4_CLOCKMOD=m + +# +# shared options +# +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_CPUFREQ_ARCH_CUR_FREQ=y +# end of CPU Frequency scaling + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_CPU_IDLE_GOV_HALTPOLL=y +CONFIG_HALTPOLL_CPUIDLE=y +# end of CPU Idle + +CONFIG_INTEL_IDLE=y +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_XEN=y +CONFIG_MMCONF_FAM10H=y +# CONFIG_ISA_BUS is not set +CONFIG_ISA_DMA_API=y +CONFIG_AMD_NB=y +CONFIG_AMD_NODE=y +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +CONFIG_IA32_EMULATION=y +# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set +CONFIG_X86_X32_ABI=y +CONFIG_COMPAT_32=y +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +# end of Binary Emulations + +CONFIG_KVM_COMMON=y +CONFIG_HAVE_KVM_PFNCACHE=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_DIRTY_RING=y +CONFIG_HAVE_KVM_DIRTY_RING_TSO=y +CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y +CONFIG_KVM_MMIO=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_READONLY_MEM=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_GENERIC_PRE_FAULT_MEMORY=y +CONFIG_KVM_COMPAT=y +CONFIG_HAVE_KVM_IRQ_BYPASS=m +CONFIG_HAVE_KVM_NO_POLL=y +CONFIG_KVM_XFER_TO_GUEST_WORK=y +CONFIG_HAVE_KVM_PM_NOTIFIER=y +CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y +CONFIG_KVM_GENERIC_MMU_NOTIFIER=y +CONFIG_KVM_ELIDE_TLB_FLUSH_IF_YOUNG=y +CONFIG_KVM_MMU_LOCKLESS_AGING=y +CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES=y +CONFIG_KVM_PRIVATE_MEM=y +CONFIG_KVM_GENERIC_PRIVATE_MEM=y +CONFIG_HAVE_KVM_ARCH_GMEM_PREPARE=y +CONFIG_HAVE_KVM_ARCH_GMEM_INVALIDATE=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM_X86=m +CONFIG_KVM=m +# CONFIG_KVM_WERROR is not set +# CONFIG_KVM_SW_PROTECTED_VM is not set +CONFIG_KVM_INTEL=m +# CONFIG_KVM_INTEL_PROVE_VE is not set +CONFIG_X86_SGX_KVM=y +CONFIG_KVM_AMD=m +CONFIG_KVM_AMD_SEV=y +CONFIG_KVM_SMM=y +CONFIG_KVM_HYPERV=y +CONFIG_KVM_XEN=y +# CONFIG_KVM_PROVE_MMU is not set +CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y +CONFIG_KVM_MAX_NR_VCPUS=4096 +CONFIG_X86_REQUIRED_FEATURE_ALWAYS=y +CONFIG_X86_REQUIRED_FEATURE_NOPL=y +CONFIG_X86_REQUIRED_FEATURE_CX8=y +CONFIG_X86_REQUIRED_FEATURE_CMOV=y +CONFIG_X86_REQUIRED_FEATURE_CPUID=y +CONFIG_X86_REQUIRED_FEATURE_FPU=y +CONFIG_X86_REQUIRED_FEATURE_PAE=y +CONFIG_X86_REQUIRED_FEATURE_MSR=y +CONFIG_X86_REQUIRED_FEATURE_FXSR=y +CONFIG_X86_REQUIRED_FEATURE_XMM=y +CONFIG_X86_REQUIRED_FEATURE_XMM2=y +CONFIG_X86_REQUIRED_FEATURE_LM=y +CONFIG_X86_DISABLED_FEATURE_VME=y +CONFIG_X86_DISABLED_FEATURE_K6_MTRR=y +CONFIG_X86_DISABLED_FEATURE_CYRIX_ARR=y +CONFIG_X86_DISABLED_FEATURE_CENTAUR_MCR=y +CONFIG_X86_DISABLED_FEATURE_LAM=y +CONFIG_X86_DISABLED_FEATURE_FRED=y +CONFIG_AS_AVX512=y +CONFIG_AS_GFNI=y +CONFIG_AS_VAES=y +CONFIG_AS_VPCLMULQDQ=y +CONFIG_AS_WRUSS=y +CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y +CONFIG_ARCH_HAS_DMA_OPS=y + +# +# General architecture-dependent options +# +CONFIG_HOTPLUG_SMT=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y +CONFIG_HOTPLUG_CORE_SYNC_FULL=y +CONFIG_HOTPLUG_SPLIT_STARTUP=y +CONFIG_HOTPLUG_PARALLEL=y +CONFIG_GENERIC_ENTRY=y +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +# CONFIG_STATIC_CALL_SELFTEST is not set +CONFIG_OPTPROBES=y +CONFIG_KPROBES_ON_FTRACE=y +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_KRETPROBES=y +CONFIG_KRETPROBE_ON_RETHOOK=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y +CONFIG_ARCH_HAS_CPU_PASID=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_RUST=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_GATHER_MERGE_VMAS=y +CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HAVE_EXTRA_ELF_NOTES=y +CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_ARCH_SUPPORTS_AUTOFDO_CLANG=y +CONFIG_ARCH_SUPPORTS_PROPELLER_CLANG=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_HUGE_VMALLOC=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_PMD_MKWRITE=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_EXECMEM_ROX=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_SOFTIRQ_ON_OWN_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_PAGE_SHIFT=12 +CONFIG_HAVE_OBJTOOL=y +CONFIG_HAVE_JUMP_LABEL_HACK=y +CONFIG_HAVE_NOINSTR_HACK=y +CONFIG_HAVE_NOINSTR_VALIDATION=y +CONFIG_HAVE_UACCESS_VALIDATION=y +CONFIG_HAVE_STACK_VALIDATION=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_ISA_BUS_API=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_ARCH_SUPPORTS_RT=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_ARCH_HAS_CPU_RESCTRL=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_ARCH_HAS_CC_PLATFORM=y +CONFIG_HAVE_STATIC_CALL=y +CONFIG_HAVE_STATIC_CALL_INLINE=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y +CONFIG_ARCH_HAS_ELFCORE_COMPAT=y +CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y +CONFIG_DYNAMIC_SIGFRAME=y +CONFIG_HAVE_ARCH_NODE_DEV_GROUP=y +CONFIG_ARCH_HAS_HW_PTE_YOUNG=y +CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y +CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y +CONFIG_ARCH_VMLINUX_NEEDS_RELOCS=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_GCC_PLUGINS=y +# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +CONFIG_FUNCTION_ALIGNMENT_4B=y +CONFIG_FUNCTION_ALIGNMENT_16B=y +CONFIG_FUNCTION_ALIGNMENT=16 +CONFIG_CC_HAS_MIN_FUNCTION_ALIGNMENT=y +CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT=y +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_MODULE_SIG_FORMAT=y +CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set +CONFIG_MODVERSIONS=y +CONFIG_GENKSYMS=y +# CONFIG_GENDWARFKSYMS is not set +CONFIG_ASM_MODVERSIONS=y +# CONFIG_EXTENDED_MODVERSIONS is not set +CONFIG_BASIC_MODVERSIONS=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_MODULE_SIG=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_ALL=y +# CONFIG_MODULE_SIG_SHA1 is not set +CONFIG_MODULE_SIG_SHA256=y +# CONFIG_MODULE_SIG_SHA384 is not set +# CONFIG_MODULE_SIG_SHA512 is not set +# CONFIG_MODULE_SIG_SHA3_256 is not set +# CONFIG_MODULE_SIG_SHA3_384 is not set +# CONFIG_MODULE_SIG_SHA3_512 is not set +CONFIG_MODULE_SIG_HASH="sha256" +CONFIG_MODULE_COMPRESS=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +CONFIG_MODULE_COMPRESS_XZ=y +# CONFIG_MODULE_COMPRESS_ZSTD is not set +CONFIG_MODULE_COMPRESS_ALL=y +CONFIG_MODULE_DECOMPRESS=y +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_RQ_ALLOC_TIME=y +CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_CGROUP_PUNT_BIO=y +CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_ICQ=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_WRITE_MOUNTED=y +CONFIG_BLK_DEV_ZONED=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_WBT=y +CONFIG_BLK_WBT_MQ=y +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_FC_APPID is not set +CONFIG_BLK_CGROUP_IOCOST=y +# CONFIG_BLK_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +CONFIG_BLK_SED_OPAL=y +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +# CONFIG_AIX_PARTITION is not set +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=m +CONFIG_IOSCHED_BFQ=m +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_BFQ_CGROUP_DEBUG is not set +# end of IO Schedulers + +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=m +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_ZPOOL=y +CONFIG_SWAP=y +CONFIG_ZSWAP=y +# CONFIG_ZSWAP_DEFAULT_ON is not set +# CONFIG_ZSWAP_SHRINKER_DEFAULT_ON is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" +CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC=y +CONFIG_ZSWAP_ZPOOL_DEFAULT="zsmalloc" +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 + +# +# Slab allocator options +# +CONFIG_SLUB=y +CONFIG_KVFREE_RCU_BATCHED=y +# CONFIG_SLUB_TINY is not set +CONFIG_SLAB_MERGE_DEFAULT=y +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SLAB_BUCKETS=y +# CONFIG_SLUB_STATS is not set +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_RANDOM_KMALLOC_CACHES is not set +# end of Slab allocator options + +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_PREINIT=y +CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y +CONFIG_ARCH_WANT_HUGETLB_VMEMMAP_PREINIT=y +CONFIG_HAVE_GUP_FAST=y +CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MHP_DEFAULT_ONLINE_TYPE_OFFLINE=y +# CONFIG_MHP_DEFAULT_ONLINE_TYPE_ONLINE_AUTO is not set +# CONFIG_MHP_DEFAULT_ONLINE_TYPE_ONLINE_KERNEL is not set +# CONFIG_MHP_DEFAULT_ONLINE_TYPE_ONLINE_MOVABLE is not set +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MHP_MEMMAP_ON_MEMORY=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SPLIT_PTE_PTLOCKS=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_SPLIT_PMD_PTLOCKS=y +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 +CONFIG_PAGE_REPORTING=y +CONFIG_MIGRATION=y +CONFIG_DEVICE_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PCP_BATCH_SCALE_MAX=5 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_MM_ID=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set +CONFIG_THP_SWAP=y +# CONFIG_READ_ONLY_THP_FOR_FS is not set +# CONFIG_NO_PAGE_MAPCOUNT is not set +CONFIG_PAGE_MAPCOUNT=y +CONFIG_PGTABLE_HAS_HUGE_LEAVES=y +CONFIG_ARCH_SUPPORTS_HUGE_PFNMAP=y +CONFIG_ARCH_SUPPORTS_PMD_PFNMAP=y +CONFIG_ARCH_SUPPORTS_PUD_PFNMAP=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_CMA is not set +CONFIG_PAGE_BLOCK_ORDER=10 +CONFIG_MEM_SOFT_DIRTY=y +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_DEFERRED_STRUCT_PAGE_INIT=y +CONFIG_PAGE_IDLE_FLAG=y +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DEVICE=y +CONFIG_HMM_MIRROR=y +CONFIG_GET_FREE_REGION=y +CONFIG_DEVICE_PRIVATE=y +CONFIG_VMAP_PFN=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_HAS_PKEYS=y +CONFIG_ARCH_USES_PG_ARCH_2=y +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MAPPING_DIRTY_HELPERS=y +CONFIG_MEMFD_CREATE=y +CONFIG_SECRETMEM=y +# CONFIG_ANON_VMA_NAME is not set +CONFIG_HAVE_ARCH_USERFAULTFD_WP=y +CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y +CONFIG_USERFAULTFD=y +CONFIG_PTE_MARKER_UFFD_WP=y +CONFIG_LRU_GEN=y +CONFIG_LRU_GEN_ENABLED=y +# CONFIG_LRU_GEN_STATS is not set +CONFIG_LRU_GEN_WALKS_MMU=y +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y +CONFIG_IOMMU_MM_DATA=y +CONFIG_EXECMEM=y +CONFIG_NUMA_MEMBLKS=y +CONFIG_NUMA_EMU=y +CONFIG_ARCH_HAS_USER_SHADOW_STACK=y +CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y +CONFIG_PT_RECLAIM=y + +# +# Data Access Monitoring +# +CONFIG_DAMON=y +CONFIG_DAMON_VADDR=y +CONFIG_DAMON_PADDR=y +CONFIG_DAMON_SYSFS=y +CONFIG_DAMON_RECLAIM=y +CONFIG_DAMON_LRU_SORT=y +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y +CONFIG_NET_REDIRECT=y +CONFIG_SKB_DECRYPTED=y +CONFIG_SKB_EXTENSIONS=y +CONFIG_NET_DEVMEM=y +CONFIG_NET_SHAPER=y +CONFIG_NET_CRC32C=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=y +CONFIG_AF_UNIX_OOB=y +CONFIG_UNIX_DIAG=m +CONFIG_TLS=m +CONFIG_TLS_DEVICE=y +# CONFIG_TLS_TOE is not set +CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +# CONFIG_XFRM_USER_COMPAT is not set +CONFIG_XFRM_INTERFACE=m +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y +# CONFIG_XFRM_IPTFS is not set +CONFIG_SMC=m +CONFIG_SMC_DIAG=m +# CONFIG_SMC_LO is not set +CONFIG_XDP_SOCKETS=y +CONFIG_XDP_SOCKETS_DIAG=m +CONFIG_NET_HANDSHAKE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m +# CONFIG_INET_ESPINTCP is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_TCP_SIGPOOL=y +# CONFIG_TCP_AO is not set +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +# CONFIG_INET6_ESPINTCP is not set +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=y +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SEG6_HMAC=y +CONFIG_IPV6_SEG6_BPF=y +CONFIG_IPV6_RPL_LWTUNNEL=y +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +CONFIG_NETLABEL=y +CONFIG_MPTCP=y +CONFIG_INET_MPTCP_DIAG=m +CONFIG_MPTCP_IPV6=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +CONFIG_NETFILTER_SKIP_EGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_BPF_LINK=y +# CONFIG_NETFILTER_NETLINK_HOOK is not set +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_OVS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NF_NAT_OVS=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +# CONFIG_NFT_REJECT_NETDEV is not set +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +# CONFIG_NF_FLOW_TABLE_PROCFS is not set +CONFIG_NETFILTER_XTABLES=m +# CONFIG_NETFILTER_XTABLES_COMPAT is not set + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_TWOS=m + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_IP_NF_IPTABLES_LEGACY=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TABLES_IPV4=y +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_NFT_COMPAT_ARP=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_IPTABLES_LEGACY=m +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NF_TABLES_IPV6=y +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NF_CONNTRACK_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES_LEGACY=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_INET_SCTP_DIAG=m +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TIPC_CRYPTO=y +CONFIG_TIPC_DIAG=m +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_MRP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_ATALK=m +# CONFIG_X25 is not set +CONFIG_LAPB=m +CONFIG_PHONET=m +CONFIG_6LOWPAN=m +# CONFIG_6LOWPAN_DEBUGFS is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m +CONFIG_6LOWPAN_GHC_UDP=m +CONFIG_6LOWPAN_GHC_ICMPV6=m +CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m +CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m +CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m +CONFIG_IEEE802154=m +# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set +CONFIG_IEEE802154_SOCKET=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_MQPRIO_LIB=m +CONFIG_NET_SCH_TAPRIO=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_SKBPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_SCH_CAKE=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_FQ_PIE=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_ETS=m +CONFIG_NET_SCH_DEFAULT=y +# CONFIG_DEFAULT_FQ is not set +# CONFIG_DEFAULT_CODEL is not set +CONFIG_DEFAULT_FQ_CODEL=y +# CONFIG_DEFAULT_FQ_PIE is not set +# CONFIG_DEFAULT_SFQ is not set +# CONFIG_DEFAULT_PFIFO_FAST is not set +CONFIG_DEFAULT_NET_SCH="fq_codel" + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_MATCHALL=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_IPT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_MPLS=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CTINFO=m +CONFIG_NET_ACT_SKBMOD=m +CONFIG_NET_ACT_IFE=m +CONFIG_NET_ACT_TUNNEL_KEY=m +CONFIG_NET_ACT_CT=m +CONFIG_NET_ACT_GATE=m +CONFIG_NET_IFE_SKBMARK=m +CONFIG_NET_IFE_SKBPRIO=m +CONFIG_NET_IFE_SKBTCINDEX=m +# CONFIG_NET_TC_SKB_EXT is not set +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=m +CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BATMAN_V=y +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATMAN_ADV_MCAST=y +# CONFIG_BATMAN_ADV_DEBUG is not set +# CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_VSOCKETS=m +CONFIG_VSOCKETS_DIAG=m +CONFIG_VSOCKETS_LOOPBACK=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS_COMMON=m +CONFIG_HYPERV_VSOCKETS=m +CONFIG_NETLINK_DIAG=m +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=y +CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m +CONFIG_NET_NSH=m +CONFIG_HSR=m +CONFIG_NET_SWITCHDEV=y +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_QRTR=m +# CONFIG_QRTR_TUN is not set +CONFIG_QRTR_MHI=m +# CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_STREAM_PARSER=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_DROP_MONITOR=m +# end of Network testing +# end of Networking options + +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_YAM=m +# end of AX.25 network device drivers + +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m +CONFIG_CAN_J1939=m +CONFIG_CAN_ISOTP=m +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_LE=y +CONFIG_BT_LE_L2CAP_ECRED=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_LEDS=y +# CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set +CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_QCA=m +CONFIG_BT_MTK=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y +CONFIG_BT_HCIBTUSB_POLL_SYNC=y +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_NOKIA=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +# CONFIG_BT_HCIUART_AML is not set +CONFIG_BT_HCIBCM203X=m +# CONFIG_BT_HCIBCM4377 is not set +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +# CONFIG_BT_MTKSDIO is not set +CONFIG_BT_MTKUART=m +CONFIG_BT_HCIRSI=m +# CONFIG_BT_VIRTIO is not set +# CONFIG_BT_NXPUART is not set +CONFIG_BT_INTEL_PCIE=m +# end of Bluetooth device drivers + +CONFIG_AF_RXRPC=m +CONFIG_AF_RXRPC_IPV6=y +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=y +# CONFIG_RXGK is not set +# CONFIG_RXPERF is not set +CONFIG_AF_KCM=m +CONFIG_STREAM_PARSER=y +# CONFIG_MCTP is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_RFKILL=m +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +# CONFIG_RFKILL_GPIO is not set +CONFIG_NET_9P=m +CONFIG_NET_9P_FD=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_XEN=m +# CONFIG_NET_9P_USBG is not set +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_NCI=m +# CONFIG_NFC_NCI_SPI is not set +# CONFIG_NFC_NCI_UART is not set +CONFIG_NFC_HCI=m +# CONFIG_NFC_SHDLC is not set + +# +# Near Field Communication (NFC) devices +# +# CONFIG_NFC_TRF7970A is not set +CONFIG_NFC_MEI_PHY=m +CONFIG_NFC_SIM=m +CONFIG_NFC_PORT100=m +# CONFIG_NFC_VIRTUAL_NCI is not set +# CONFIG_NFC_FDP is not set +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN533_USB=m +# CONFIG_NFC_PN533_I2C is not set +# CONFIG_NFC_PN532_UART is not set +# CONFIG_NFC_MICROREAD_MEI is not set +# CONFIG_NFC_MRVL_USB is not set +# CONFIG_NFC_ST_NCI_I2C is not set +# CONFIG_NFC_ST_NCI_SPI is not set +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +# CONFIG_NFC_S3FWRN5_I2C is not set +# CONFIG_NFC_S3FWRN82_UART is not set +# CONFIG_NFC_ST95HF is not set +# end of Near Field Communication (NFC) devices + +CONFIG_PSAMPLE=m +CONFIG_NET_IFE=m +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_SOCK_VALIDATE_XMIT=y +CONFIG_NET_SELFTESTS=m +CONFIG_NET_SOCK_MSG=y +CONFIG_NET_DEVLINK=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_POOL_STATS=y +CONFIG_FAILOVER=m +CONFIG_ETHTOOL_NETLINK=y + +# +# Device Drivers +# +CONFIG_HAVE_PCI=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +CONFIG_PCIEAER_INJECT=m +CONFIG_PCIEAER_CXL=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +CONFIG_PCIE_DPC=y +CONFIG_PCIE_PTM=y +# CONFIG_PCIE_EDR is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_PCI_PF_STUB=m +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_PCI_ATS=y +CONFIG_PCI_DOE=y +CONFIG_PCI_LOCKLESS_CONFIG=y +CONFIG_PCI_IOV=y +# CONFIG_PCI_NPEM is not set +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +# CONFIG_PCIE_TPH is not set +CONFIG_PCI_P2PDMA=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_HYPERV=m +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +# CONFIG_HOTPLUG_PCI_OCTEONEP is not set +CONFIG_HOTPLUG_PCI_SHPC=y + +# +# PCI controller drivers +# +CONFIG_VMD=m +CONFIG_PCI_HYPERV_INTERFACE=m + +# +# Cadence-based PCIe controllers +# +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers +# +# CONFIG_PCI_MESON is not set +# CONFIG_PCIE_DW_PLAT_HOST is not set +# end of DesignWare-based PCIe controllers + +# +# Mobiveil-based PCIe controllers +# +# end of Mobiveil-based PCIe controllers + +# +# PLDA-based PCIe controllers +# +# end of PLDA-based PCIe controllers +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_PCI_PWRCTRL_SLOT is not set +CONFIG_CXL_BUS=y +CONFIG_CXL_PCI=m +# CONFIG_CXL_MEM_RAW_COMMANDS is not set +CONFIG_CXL_ACPI=m +CONFIG_CXL_PMEM=m +CONFIG_CXL_MEM=m +# CONFIG_CXL_FEATURES is not set +CONFIG_CXL_PORT=y +CONFIG_CXL_SUSPEND=y +CONFIG_CXL_REGION=y +# CONFIG_CXL_REGION_INVALIDATION_TEST is not set +CONFIG_CXL_MCE=y +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_PCCARD_NONSTATIC=y +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_AUXILIARY_BUS=y +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_COMPRESS_XZ=y +CONFIG_FW_LOADER_COMPRESS_ZSTD=y +CONFIG_FW_CACHE=y +CONFIG_FW_UPLOAD=y +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +CONFIG_HMEM_REPORTING=y +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_GENERIC_CPU_DEVICES=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=m +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_SOUNDWIRE=m +CONFIG_REGMAP_SOUNDWIRE_MBQ=m +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set +# end of Generic Driver Options + +# +# Bus devices +# +CONFIG_MHI_BUS=m +# CONFIG_MHI_BUS_DEBUG is not set +CONFIG_MHI_BUS_PCI_GENERIC=m +# CONFIG_MHI_BUS_EP is not set +# end of Bus devices + +# +# Cache Drivers +# +# end of Cache Drivers + +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_DMIID=y +CONFIG_DMI_SYSFS=y +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m +CONFIG_FW_CFG_SYSFS=m +# CONFIG_FW_CFG_SYSFS_CMDLINE is not set +CONFIG_SYSFB=y +CONFIG_SYSFB_SIMPLEFB=y +CONFIG_FW_CS_DSP=m +CONFIG_GOOGLE_FIRMWARE=y +CONFIG_GOOGLE_SMI=m +# CONFIG_GOOGLE_CBMEM is not set +CONFIG_GOOGLE_COREBOOT_TABLE=y +CONFIG_GOOGLE_MEMCONSOLE=m +# CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set +CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT=y +CONFIG_GOOGLE_MEMCONSOLE_COREBOOT=m +CONFIG_GOOGLE_VPD=m + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_ESRT=y +CONFIG_EFI_VARS_PSTORE=m +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EFI_SOFT_RESERVE=y +CONFIG_EFI_DXE_MEM_ATTRIBUTES=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_BOOTLOADER_CONTROL=m +CONFIG_EFI_CAPSULE_LOADER=m +# CONFIG_EFI_TEST is not set +CONFIG_EFI_DEV_PATH_PARSER=y +CONFIG_APPLE_PROPERTIES=y +CONFIG_RESET_ATTACK_MITIGATION=y +# CONFIG_EFI_RCI2_TABLE is not set +# CONFIG_EFI_DISABLE_PCI_DMA is not set +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +# CONFIG_EFI_DISABLE_RUNTIME is not set +# CONFIG_EFI_COCO_SECRET is not set +CONFIG_UNACCEPTED_MEMORY=y +CONFIG_EFI_EMBEDDED_FIRMWARE=y +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_X86=y + +# +# Qualcomm firmware drivers +# +# end of Qualcomm firmware drivers + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_FWCTL is not set +CONFIG_GNSS=m +CONFIG_GNSS_SERIAL=m +CONFIG_GNSS_MTK_SERIAL=m +CONFIG_GNSS_SIRF_SERIAL=m +CONFIG_GNSS_UBX_SERIAL=m +CONFIG_GNSS_USB=m +CONFIG_MTD=m +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +# CONFIG_SM_FTL is not set +CONFIG_MTD_OOPS=m +# CONFIG_MTD_PSTORE is not set +CONFIG_MTD_SWAP=m +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +# CONFIG_MTD_PHYSMAP_GPIO_ADDR is not set +CONFIG_MTD_SBC_GXX=m +# CONFIG_MTD_AMD76XROM is not set +# CONFIG_MTD_ICHXROM is not set +# CONFIG_MTD_ESB2ROM is not set +# CONFIG_MTD_CK804XROM is not set +# CONFIG_MTD_SCB2_FLASH is not set +CONFIG_MTD_NETtel=m +# CONFIG_MTD_L440GX is not set +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PLATRAM=m +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +CONFIG_MTD_DATAFLASH=m +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DATAFLASH_OTP is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_MCHP48L640 is not set +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# end of Self-contained MTD device drivers + +# +# NAND +# +CONFIG_MTD_NAND_CORE=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +# CONFIG_MTD_ONENAND_GENERIC is not set +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_RAW_NAND=m + +# +# Raw/parallel NAND flash controllers +# +# CONFIG_MTD_NAND_DENALI_PCI is not set +CONFIG_MTD_NAND_CAFE=m +# CONFIG_MTD_NAND_MXIC is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_NAND_ARASAN is not set + +# +# Misc +# +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# ECC engine support +# +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_ECC_SW_HAMMING=y +# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set +CONFIG_MTD_NAND_ECC_SW_BCH=y +# CONFIG_MTD_NAND_ECC_MXIC is not set +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +CONFIG_MTD_LPDDR=m +CONFIG_MTD_QINFO_PROBE=m +# end of LPDDR & LPDDR2 PCM memory drivers + +CONFIG_MTD_SPI_NOR=m +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +CONFIG_MTD_UBI_BLOCK=y +# CONFIG_MTD_UBI_NVMEM is not set +# CONFIG_MTD_HYPERBUS is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_PC_PCMCIA=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_NULL_BLK=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_FD_RAWCMD is not set +CONFIG_CDROM=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +CONFIG_ZRAM_BACKEND_DEFLATE=y +# CONFIG_ZRAM_BACKEND_842 is not set +# CONFIG_ZRAM_BACKEND_LZO is not set +CONFIG_ZRAM_DEF_COMP_LZ4=y +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_DEFLATE is not set +CONFIG_ZRAM_DEF_COMP="lz4" +CONFIG_ZRAM_WRITEBACK=y +CONFIG_ZRAM_TRACK_ENTRY_ACTIME=y +CONFIG_ZRAM_MEMORY_TRACKING=y +# CONFIG_ZRAM_MULTI_COMP is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=16384 +# CONFIG_CDROM_PKTCDVD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_XEN_BLKDEV_FRONTEND=m +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_VIRTIO_BLK=m +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_UBLK=m +CONFIG_BLKDEV_UBLK_LEGACY_OPCODES=y +# CONFIG_BLK_DEV_ZONED_LOOP is not set + +# +# NVME Support +# +CONFIG_NVME_KEYRING=y +CONFIG_NVME_AUTH=y +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +CONFIG_NVME_MULTIPATH=y +# CONFIG_NVME_VERBOSE_ERRORS is not set +CONFIG_NVME_HWMON=y +CONFIG_NVME_FABRICS=m +CONFIG_NVME_RDMA=m +CONFIG_NVME_FC=m +CONFIG_NVME_TCP=m +CONFIG_NVME_TCP_TLS=y +CONFIG_NVME_HOST_AUTH=y +CONFIG_NVME_TARGET=m +# CONFIG_NVME_TARGET_DEBUGFS is not set +CONFIG_NVME_TARGET_PASSTHRU=y +CONFIG_NVME_TARGET_LOOP=m +CONFIG_NVME_TARGET_RDMA=m +CONFIG_NVME_TARGET_FC=m +CONFIG_NVME_TARGET_FCLOOP=m +CONFIG_NVME_TARGET_TCP=m +CONFIG_NVME_TARGET_TCP_TLS=y +CONFIG_NVME_TARGET_AUTH=y +# end of NVME Support + +# +# Misc devices +# +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +# CONFIG_DUMMY_IRQ is not set +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +# CONFIG_RPMB is not set +# CONFIG_TI_FPC202 is not set +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_HP_ILO=m +CONFIG_APDS9802ALS=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_APDS990X=m +CONFIG_HMC6352=m +CONFIG_DS1682=m +CONFIG_VMWARE_BALLOON=m +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +# CONFIG_DW_XDATA_PCIE is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +CONFIG_MISC_RTSX=m +CONFIG_NTSYNC=m +CONFIG_NSM=m +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +CONFIG_EEPROM_EE1004=m +# end of EEPROM support + +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MEI_GSC=m +CONFIG_INTEL_MEI_VSC_HW=m +CONFIG_INTEL_MEI_VSC=m +CONFIG_INTEL_MEI_HDCP=m +CONFIG_INTEL_MEI_PXP=m +CONFIG_INTEL_MEI_GSC_PROXY=m +CONFIG_VMWARE_VMCI=m +# CONFIG_GENWQE is not set +# CONFIG_BCM_VK is not set +# CONFIG_MISC_ALCOR_PCI is not set +CONFIG_MISC_RTSX_PCI=m +CONFIG_MISC_RTSX_USB=m +# CONFIG_UACCE is not set +CONFIG_PVPANIC=y +CONFIG_PVPANIC_MMIO=m +CONFIG_PVPANIC_PCI=m +# CONFIG_GP_PCI1XXXX is not set +# CONFIG_KEBA_CP500 is not set +# CONFIG_AMD_SBRMI_I2C is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=m +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_NETLINK=y +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_BLK_DEV_SR=m +CONFIG_CHR_DEV_SG=y +CONFIG_BLK_DEV_BSG=y +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SRP_ATTRS=m +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ESAS2R=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPI3MR=m +CONFIG_SCSI_SMARTPQI=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_FLASHPOINT is not set +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_MYRS=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_HYPERV_STORAGE=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +CONFIG_SCSI_DMX3191D=m +# CONFIG_SCSI_FDOMAIN_PCI is not set +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m +# CONFIG_TCM_QLA2XXX_DEBUG is not set +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_QEDI=m +CONFIG_QEDF=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +# CONFIG_SCSI_EFCT is not set +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_WD719X=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=y +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +# CONFIG_PCMCIA_FDOMAIN is not set +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_PATA_TIMINGS=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_ZPODD=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=3 +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_AHCI_DWC is not set +# CONFIG_SATA_INIC162X is not set +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SX4=m +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +# CONFIG_SATA_DWC is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m + +# +# PATA SFF controllers with BMDMA +# +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD64X=m +# CONFIG_PATA_CYPRESS is not set +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OLDPIIX=y +# CONFIG_PATA_OPTIDMA is not set +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +# CONFIG_PATA_RADISYS is not set +CONFIG_PATA_RDC=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NS87410=m +# CONFIG_PATA_OPTI is not set +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_RZ1000=m +# CONFIG_PATA_PARPORT is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_PATA_ACPI is not set +CONFIG_ATA_GENERIC=m +CONFIG_PATA_LEGACY=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_BITMAP_FILE=y +# CONFIG_MD_LINEAR is not set +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_CLUSTER=m +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_ASYNC_REGISTRATION is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_UNSTRIPED=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_WRITECACHE=m +# CONFIG_DM_EBS is not set +CONFIG_DM_ERA=m +CONFIG_DM_CLONE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +# CONFIG_DM_MULTIPATH_HST is not set +# CONFIG_DM_MULTIPATH_IOA is not set +CONFIG_DM_DELAY=m +# CONFIG_DM_DUST is not set +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y +CONFIG_DM_VERITY_FEC=y +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_INTEGRITY=m +CONFIG_DM_ZONED=m +CONFIG_DM_AUDIT=y +CONFIG_DM_VDO=m +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_USER2=m +CONFIG_LOOPBACK_TARGET=m +CONFIG_TCM_FC=m +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TARGET_CXGB4=m +CONFIG_SBP_TARGET=m +# CONFIG_REMOTE_TARGET is not set +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +# CONFIG_FUSION_LOGGING is not set + +# +# IEEE 1394 (FireWire) support +# +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +# end of IEEE 1394 (FireWire) support + +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_WIREGUARD=m +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_OVPN=m +CONFIG_EQUALIZER=m +CONFIG_NET_FC=y +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=m +CONFIG_IPVTAP=m +CONFIG_VXLAN=m +CONFIG_GENEVE=m +# CONFIG_BAREUDP is not set +CONFIG_GTP=m +# CONFIG_PFCP is not set +# CONFIG_AMT is not set +CONFIG_MACSEC=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +# CONFIG_NETCONSOLE_EXTENDED_LOG is not set +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_TUN=m +CONFIG_TAP=m +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_NETKIT=y +CONFIG_NET_VRF=m +CONFIG_VSOCKMON=m +CONFIG_MHI_NET=m +CONFIG_SUNGEM_PHY=m +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +CONFIG_ETHERNET=y +CONFIG_MDIO=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_NET_VENDOR_AGERE=y +CONFIG_ET131X=m +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_ENA_ETHERNET=m +CONFIG_NET_VENDOR_AMD=y +CONFIG_AMD8111_ETH=m +CONFIG_PCNET32=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y +CONFIG_AMD_XGBE_HAVE_ECC=y +# CONFIG_PDS_CORE is not set +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_AQTION=m +# CONFIG_NET_VENDOR_ARC is not set +CONFIG_NET_VENDOR_ASIX=y +# CONFIG_SPI_AX88796C is not set +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +# CONFIG_CX_ECAT is not set +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +# CONFIG_BCMGENET is not set +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_TIGON3=m +CONFIG_TIGON3_HWMON=y +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +# CONFIG_SYSTEMPORT is not set +CONFIG_BNXT=m +CONFIG_BNXT_SRIOV=y +CONFIG_BNXT_FLOWER_OFFLOAD=y +CONFIG_BNXT_DCB=y +CONFIG_BNXT_HWMON=y +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +CONFIG_CAVIUM_PTP=m +CONFIG_LIQUIDIO_CORE=m +CONFIG_LIQUIDIO=m +CONFIG_LIQUIDIO_VF=m +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4_DCB=y +CONFIG_CHELSIO_T4_FCOE=y +CONFIG_CHELSIO_T4VF=m +CONFIG_CHELSIO_LIB=m +CONFIG_CHELSIO_INLINE_CRYPTO=y +# CONFIG_CHELSIO_IPSEC_INLINE is not set +# CONFIG_CHELSIO_TLS_DEVICE is not set +CONFIG_NET_VENDOR_CISCO=y +CONFIG_ENIC=m +CONFIG_NET_VENDOR_CORTINA=y +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DM9051 is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_NET_VENDOR_DLINK=y +CONFIG_DL2K=m +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_BE2=y +CONFIG_BE2NET_BE3=y +CONFIG_BE2NET_LANCER=y +CONFIG_BE2NET_SKYHAWK=y +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_NET_VENDOR_FUNGIBLE=y +# CONFIG_FUN_ETH is not set +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_GVE=m +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIBMCGE is not set +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_HINIC=m +# CONFIG_HINIC3 is not set +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_LIBETH=m +CONFIG_LIBIE=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=y +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_IPSEC=y +CONFIG_IXGBEVF=m +CONFIG_IXGBEVF_IPSEC=y +CONFIG_I40E=m +CONFIG_I40E_DCB=y +CONFIG_IAVF=m +CONFIG_I40EVF=m +CONFIG_ICE=m +CONFIG_ICE_HWMON=y +CONFIG_ICE_SWITCHDEV=y +CONFIG_ICE_HWTS=y +# CONFIG_FM10K is not set +CONFIG_IGC=m +CONFIG_IGC_LEDS=y +CONFIG_IDPF=m +# CONFIG_IDPF_SINGLEQ is not set +CONFIG_JME=m +CONFIG_NET_VENDOR_ADI=y +# CONFIG_ADIN1110 is not set +CONFIG_NET_VENDOR_LITEX=y +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +# CONFIG_OCTEON_EP is not set +# CONFIG_OCTEON_EP_VF is not set +# CONFIG_PRESTERA is not set +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_CORE_GEN2=y +CONFIG_MLX5_CORE=m +CONFIG_MLX5_FPGA=y +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_EN_ARFS=y +CONFIG_MLX5_EN_RXNFC=y +CONFIG_MLX5_MPFS=y +CONFIG_MLX5_ESWITCH=y +CONFIG_MLX5_BRIDGE=y +CONFIG_MLX5_CORE_EN_DCB=y +CONFIG_MLX5_CORE_IPOIB=y +# CONFIG_MLX5_MACSEC is not set +# CONFIG_MLX5_EN_IPSEC is not set +# CONFIG_MLX5_EN_TLS is not set +CONFIG_MLX5_SW_STEERING=y +CONFIG_MLX5_HW_STEERING=y +# CONFIG_MLX5_SF is not set +# CONFIG_MLX5_DPLL is not set +# CONFIG_MLXSW_CORE is not set +CONFIG_MLXFW=m +CONFIG_NET_VENDOR_META=y +# CONFIG_FBNIC is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +CONFIG_KSZ884X_PCI=m +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCX24J600 is not set +CONFIG_LAN743X=m +# CONFIG_LAN865X is not set +# CONFIG_VCAP is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y +CONFIG_MICROSOFT_MANA=m +CONFIG_NET_VENDOR_MYRI=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m +CONFIG_NS83820=m +CONFIG_NET_VENDOR_NETERION=y +CONFIG_S2IO=m +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NFP=m +CONFIG_NFP_APP_FLOWER=y +CONFIG_NFP_APP_ABM_NIC=y +CONFIG_NFP_NET_IPSEC=y +# CONFIG_NFP_DEBUG is not set +CONFIG_NET_VENDOR_8390=y +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=m +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_IONIC=m +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_NETXEN_NIC=m +CONFIG_QED=m +CONFIG_QED_LL2=y +CONFIG_QED_SRIOV=y +CONFIG_QEDE=m +CONFIG_QED_RDMA=y +CONFIG_QED_ISCSI=y +CONFIG_QED_FCOE=y +CONFIG_QED_OOO=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_BNA=m +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RDC=y +CONFIG_R6040=m +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_ATP is not set +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R8169=m +# CONFIG_R8169_LEDS is not set +# CONFIG_RTASE is not set +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +# CONFIG_ROCKER is not set +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +# CONFIG_NET_VENDOR_SEEQ is not set +CONFIG_NET_VENDOR_SILAN=y +CONFIG_SC92031=m +CONFIG_NET_VENDOR_SIS=y +CONFIG_SIS900=m +CONFIG_SIS190=m +CONFIG_NET_VENDOR_SOLARFLARE=y +CONFIG_SFC=m +CONFIG_SFC_MTD=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y +CONFIG_SFC_FALCON=m +CONFIG_SFC_FALCON_MTD=y +CONFIG_SFC_SIENA=m +CONFIG_SFC_SIENA_MTD=y +CONFIG_SFC_SIENA_MCDI_MON=y +CONFIG_SFC_SIENA_SRIOV=y +CONFIG_SFC_SIENA_MCDI_LOGGING=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m +# CONFIG_SMSC911X is not set +CONFIG_SMSC9420=m +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_INTEL=m +# CONFIG_STMMAC_PCI is not set +CONFIG_NET_VENDOR_SUN=y +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NIU=m +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_TEHUTI=m +# CONFIG_TEHUTI_TN40 is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +CONFIG_TLAN=m +CONFIG_NET_VENDOR_VERTEXCOM=y +# CONFIG_MSE102X is not set +CONFIG_NET_VENDOR_VIA=y +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WANGXUN=y +# CONFIG_NGBE is not set +# CONFIG_TXGBE is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_LL_TEMAC is not set +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_FDDI=y +CONFIG_DEFXX=m +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +# CONFIG_ROADRUNNER_LARGE_RINGS is not set +CONFIG_PHYLINK=m +CONFIG_PHYLIB=m +CONFIG_SWPHY=y +CONFIG_LED_TRIGGER_PHY=y +CONFIG_FIXED_PHY=m +CONFIG_SFP=m + +# +# MII PHY device drivers +# +# CONFIG_AS21XXX_PHY is not set +# CONFIG_AIR_EN8811H_PHY is not set +CONFIG_AMD_PHY=m +# CONFIG_ADIN_PHY is not set +# CONFIG_ADIN1100_PHY is not set +CONFIG_AQUANTIA_PHY=m +CONFIG_AX88796B_PHY=m +CONFIG_BROADCOM_PHY=m +# CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set +CONFIG_BCM87XX_PHY=m +CONFIG_BCM_NET_PHYLIB=m +CONFIG_BCM_NET_PHYPTP=m +CONFIG_CICADA_PHY=m +CONFIG_CORTINA_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_LXT_PHY=m +# CONFIG_INTEL_XWAY_PHY is not set +CONFIG_LSI_ET1011C_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +# CONFIG_MARVELL_88Q2XXX_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MAXLINEAR_86110_PHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set +CONFIG_MICREL_PHY=m +# CONFIG_MICROCHIP_T1S_PHY is not set +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROCHIP_T1_PHY=m +CONFIG_MICROCHIP_PHY_RDS_PTP=m +CONFIG_MICROSEMI_PHY=m +# CONFIG_MOTORCOMM_PHY is not set +CONFIG_NATIONAL_PHY=m +# CONFIG_NXP_CBTX_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_NCN26000_PHY is not set +CONFIG_QCOM_NET_PHYLIB=m +CONFIG_AT803X_PHY=m +# CONFIG_QCA83XX_PHY is not set +# CONFIG_QCA808X_PHY is not set +CONFIG_QSEMI_PHY=m +CONFIG_REALTEK_PHY=m +# CONFIG_REALTEK_PHY_HWMON is not set +CONFIG_RENESAS_PHY=m +CONFIG_ROCKCHIP_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_STE10XP=m +CONFIG_TERANETICS_PHY=m +CONFIG_DP83822_PHY=m +CONFIG_DP83TC811_PHY=m +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +# CONFIG_DP83869_PHY is not set +CONFIG_DP83TD510_PHY=m +# CONFIG_DP83TG720_PHY is not set +CONFIG_VITESSE_PHY=m +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_PSE_CONTROLLER is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_VXCAN=m +CONFIG_CAN_NETLINK=y +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_RX_OFFLOAD=y +CONFIG_CAN_CAN327=m +# CONFIG_CAN_KVASER_PCIEFD is not set +CONFIG_CAN_SLCAN=m +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_CTUCANFD_PCI is not set +# CONFIG_CAN_ESD_402_PCI is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +CONFIG_CAN_PEAK_PCIEFD=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +# CONFIG_CAN_F81601 is not set +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_SJA1000_ISA=m +# CONFIG_CAN_SJA1000_PLATFORM is not set +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m + +# +# CAN SPI interfaces +# +CONFIG_CAN_HI311X=m +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MCP251XFD=m +# CONFIG_CAN_MCP251XFD_SANITY is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB=m +# CONFIG_CAN_ETAS_ES58X is not set +# CONFIG_CAN_F81604 is not set +CONFIG_CAN_GS_USB=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_MCBA_USB=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_UCAN=m +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_MDIO_BUS=m +CONFIG_FWNODE_MDIO=m +CONFIG_ACPI_MDIO=m +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +CONFIG_MDIO_I2C=m +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_THUNDER is not set + +# +# MDIO Multiplexers +# + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=m +# end of PCS device drivers + +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set +CONFIG_PPPOE_HASH_BITS=4 +CONFIG_PPTP=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLHC=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_USB_NET_DRIVERS=m +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +CONFIG_USB_RTL8153_ECM=m +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_ADM8211=m +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +# CONFIG_ATH9K_AHB is not set +# CONFIG_ATH9K_DYNACK is not set +# CONFIG_ATH9K_WOW is not set +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_PCOEM=y +# CONFIG_ATH9K_PCI_NO_EEPROM is not set +CONFIG_ATH9K_HTC=m +# CONFIG_ATH9K_HTC_DEBUGFS is not set +# CONFIG_ATH9K_HWRNG is not set +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +# CONFIG_CARL9170_HWRNG is not set +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +# CONFIG_ATH6KL_TRACING is not set +CONFIG_AR5523=m +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y +CONFIG_WIL6210_DEBUGFS=y +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +CONFIG_ATH10K_PCI=m +# CONFIG_ATH10K_SDIO is not set +CONFIG_ATH10K_USB=m +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +CONFIG_ATH10K_LEDS=y +# CONFIG_ATH10K_TRACING is not set +# CONFIG_WCN36XX is not set +CONFIG_ATH11K=m +CONFIG_ATH11K_PCI=m +# CONFIG_ATH11K_DEBUG is not set +# CONFIG_ATH11K_TRACING is not set +CONFIG_ATH12K=m +# CONFIG_ATH12K_DEBUG is not set +# CONFIG_ATH12K_TRACING is not set +# CONFIG_ATH12K_COREDUMP is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_SDIO=y +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_DEBUG=y +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_BRCMUTIL=m +CONFIG_BRCMSMAC=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set +CONFIG_WLAN_VENDOR_INTEL=y +# CONFIG_IPW2100 is not set +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +# CONFIG_IPW2200_DEBUG is not set +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_IWLEGACY=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m + +# +# iwl3945 / iwl4965 Debugging Options +# +# CONFIG_IWLEGACY_DEBUG is not set +# end of iwl3945 / iwl4965 Debugging Options + +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLDVM=m +CONFIG_IWLMVM=m +CONFIG_IWLMLD=m +CONFIG_IWLWIFI_OPMODE_MODULAR=y + +# +# Debugging Options +# +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLWIFI_DEVICE_TRACING=y +# end of Debugging Options + +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +# CONFIG_P54_SPI is not set +CONFIG_P54_LEDS=y +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_SDIO=m +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m +CONFIG_MWL8K=m +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_MT76_CORE=m +CONFIG_MT76_LEDS=y +CONFIG_MT76_USB=m +CONFIG_MT76x02_LIB=m +CONFIG_MT76x02_USB=m +CONFIG_MT76_CONNAC_LIB=m +CONFIG_MT792x_LIB=m +CONFIG_MT792x_USB=m +CONFIG_MT76x0_COMMON=m +CONFIG_MT76x0U=m +CONFIG_MT76x0E=m +CONFIG_MT76x2_COMMON=m +CONFIG_MT76x2E=m +CONFIG_MT76x2U=m +# CONFIG_MT7603E is not set +CONFIG_MT7615_COMMON=m +CONFIG_MT7615E=m +CONFIG_MT7663_USB_SDIO_COMMON=m +CONFIG_MT7663U=m +# CONFIG_MT7663S is not set +CONFIG_MT7915E=m +CONFIG_MT7921_COMMON=m +CONFIG_MT7921E=m +# CONFIG_MT7921S is not set +CONFIG_MT7921U=m +CONFIG_MT7996E=m +CONFIG_MT7925_COMMON=m +CONFIG_MT7925E=m +CONFIG_MT7925U=m +CONFIG_WLAN_VENDOR_MICROCHIP=y +# CONFIG_WILC1000_SDIO is not set +# CONFIG_WILC1000_SPI is not set +CONFIG_WLAN_VENDOR_PURELIFI=y +# CONFIG_PLFXLC is not set +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +# CONFIG_RTL8192DU is not set +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8192D_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m +# CONFIG_RTL8XXXU_UNTESTED is not set +CONFIG_RTW88=m +CONFIG_RTW88_CORE=m +CONFIG_RTW88_PCI=m +CONFIG_RTW88_SDIO=m +CONFIG_RTW88_USB=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8723X=m +CONFIG_RTW88_8703B=m +CONFIG_RTW88_8723D=m +CONFIG_RTW88_8821C=m +CONFIG_RTW88_88XXA=m +CONFIG_RTW88_8821A=m +CONFIG_RTW88_8812A=m +CONFIG_RTW88_8814A=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BS=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CS=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723CS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW88_8821CU=m +CONFIG_RTW88_8821AU=m +CONFIG_RTW88_8812AU=m +CONFIG_RTW88_8814AE=m +CONFIG_RTW88_8814AU=m +# CONFIG_RTW88_DEBUG is not set +# CONFIG_RTW88_DEBUGFS is not set +CONFIG_RTW88_LEDS=y +CONFIG_RTW89=m +CONFIG_RTW89_CORE=m +CONFIG_RTW89_PCI=m +CONFIG_RTW89_8851B=m +CONFIG_RTW89_8852A=m +CONFIG_RTW89_8852B_COMMON=m +CONFIG_RTW89_8852B=m +CONFIG_RTW89_8852BT=m +CONFIG_RTW89_8852C=m +CONFIG_RTW89_8922A=m +CONFIG_RTW89_8851BE=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852BE=m +CONFIG_RTW89_8852BTE=m +CONFIG_RTW89_8852CE=m +CONFIG_RTW89_8922AE=m +# CONFIG_RTW89_DEBUGMSG is not set +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_RSI_91X=m +CONFIG_RSI_DEBUGFS=y +# CONFIG_RSI_SDIO is not set +CONFIG_RSI_USB=m +CONFIG_RSI_COEX=y +CONFIG_WLAN_VENDOR_SILABS=y +# CONFIG_WFX is not set +CONFIG_WLAN_VENDOR_ST=y +# CONFIG_CW1200 is not set +# CONFIG_WLAN_VENDOR_TI is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PCIE is not set +CONFIG_MAC80211_HWSIM=m +# CONFIG_VIRT_WIFI is not set +CONFIG_WAN=y +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +# CONFIG_HDLC_X25 is not set +# CONFIG_FRAMER is not set +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +# CONFIG_PC300TOO is not set +CONFIG_FARSYNC=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_ADF7242=m +# CONFIG_IEEE802154_CA8210 is not set +# CONFIG_IEEE802154_MCR20A is not set +CONFIG_IEEE802154_HWSIM=m + +# +# Wireless WAN +# +CONFIG_WWAN=m +CONFIG_WWAN_DEBUGFS=y +# CONFIG_WWAN_HWSIM is not set +CONFIG_MHI_WWAN_CTRL=m +CONFIG_MHI_WWAN_MBIM=m +CONFIG_IOSM=m +CONFIG_MTK_T7XX=m +# end of Wireless WAN + +CONFIG_XEN_NETDEV_FRONTEND=m +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_VMXNET3=m +CONFIG_FUJITSU_ES=m +CONFIG_USB4_NET=m +CONFIG_HYPERV_NET=m +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=m +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=y +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +# CONFIG_MISDN_NETJET is not set +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +CONFIG_KEYBOARD_ADP5588=m +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_APPLESPI=m +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +CONFIG_KEYBOARD_QT2160=m +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +CONFIG_KEYBOARD_LM8323=m +# CONFIG_KEYBOARD_LM8333 is not set +CONFIG_KEYBOARD_MAX7359=m +# CONFIG_KEYBOARD_MPR121 is not set +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +# CONFIG_KEYBOARD_PINEPHONE is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_CROS_EC=m +# CONFIG_KEYBOARD_CYPRESS_SF is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_SENTELIC=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_VSXXXAA=m +# CONFIG_MOUSE_GPIO is not set +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +# CONFIG_JOYSTICK_ADC is not set +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_IFORCE_232=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +# CONFIG_JOYSTICK_AS5011 is not set +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +# CONFIG_JOYSTICK_PSXPAD_SPI is not set +CONFIG_JOYSTICK_PXRC=m +# CONFIG_JOYSTICK_QWIIC is not set +# CONFIG_JOYSTICK_FSIA6B is not set +# CONFIG_JOYSTICK_SENSEHAT is not set +# CONFIG_JOYSTICK_SEESAW is not set +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TABLET_SERIAL_WACOM4=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_ADC is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set +# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP5 is not set +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_EETI=m +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +# CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C is not set +# CONFIG_TOUCHSCREEN_GOODIX_BERLIN_SPI is not set +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set +# CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_ILITEK is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +CONFIG_TOUCHSCREEN_GUNZE=m +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MSG2638 is not set +CONFIG_TOUCHSCREEN_MTOUCH=m +# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set +# CONFIG_TOUCHSCREEN_IMAGIS is not set +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +CONFIG_TOUCHSCREEN_TSC2007=m +# CONFIG_TOUCHSCREEN_TSC2007_IIO is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +CONFIG_TOUCHSCREEN_SILEAD=m +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SURFACE3_SPI=m +# CONFIG_TOUCHSCREEN_SX8654 is not set +CONFIG_TOUCHSCREEN_TPS6507X=m +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set +# CONFIG_TOUCHSCREEN_IQS7211 is not set +# CONFIG_TOUCHSCREEN_ZINITIX is not set +# CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +CONFIG_INPUT_PCSPKR=m +# CONFIG_INPUT_MMA8450 is not set +CONFIG_INPUT_APANEL=m +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_GPIO_VIBRA is not set +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +# CONFIG_INPUT_KXTJ9 is not set +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +# CONFIG_INPUT_REGULATOR_HAPTIC is not set +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_INPUT_UINPUT=m +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_PWM_BEEPER is not set +# CONFIG_INPUT_PWM_VIBRA is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_DA7280_HAPTICS is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_IQS269A is not set +# CONFIG_INPUT_IQS626A is not set +# CONFIG_INPUT_IQS7222 is not set +# CONFIG_INPUT_CMA3000 is not set +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +CONFIG_RMI4_CORE=m +# CONFIG_RMI4_I2C is not set +# CONFIG_RMI4_SPI is not set +CONFIG_RMI4_SMB=m +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_F34=y +CONFIG_RMI4_F3A=y +# CONFIG_RMI4_F54 is not set +CONFIG_RMI4_F55=y + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_SERIO_ALTERA_PS2=m +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +CONFIG_HYPERV_KEYBOARD=m +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LEGACY_TIOCSTI is not set +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCILIB=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=m +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +# CONFIG_SERIAL_8250_PCI1XXXX is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DWLIB=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_LPSS=m +CONFIG_SERIAL_8250_MID=y +CONFIG_SERIAL_8250_PERICOM=y +# CONFIG_SERIAL_8250_NI is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +# CONFIG_SERIAL_LANTIQ is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_RP2_NR_UARTS=32 +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_N_HDLC=m +CONFIG_IPWIRELESS=m +# CONFIG_N_GSM is not set +CONFIG_NOZOMI=m +# CONFIG_NULL_TTY is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +CONFIG_TTY_PRINTK=m +CONFIG_TTY_PRINTK_LEVEL=6 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_VIRTIO_CONSOLE=y +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DMI_DECODE=y +CONFIG_IPMI_PLAT_DATA=y +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +# CONFIG_HW_RANDOM_BA431 is not set +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_APPLICOM=m +CONFIG_MWAVE=m +CONFIG_DEVMEM=y +CONFIG_NVRAM=m +CONFIG_DEVPORT=y +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_TCG_TPM=y +CONFIG_TCG_TPM2_HMAC=y +CONFIG_HW_RANDOM_TPM=y +CONFIG_TCG_TIS_CORE=y +CONFIG_TCG_TIS=y +CONFIG_TCG_TIS_SPI=m +CONFIG_TCG_TIS_SPI_CR50=y +# CONFIG_TCG_TIS_I2C is not set +CONFIG_TCG_TIS_I2C_CR50=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_XEN=m +CONFIG_TCG_CRB=y +CONFIG_TCG_VTPM_PROXY=m +# CONFIG_TCG_SVSM is not set +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +# CONFIG_TCG_TIS_ST33ZP24_SPI is not set +CONFIG_TELCLOCK=m +# CONFIG_XILLYBUS is not set +# CONFIG_XILLYUSB is not set +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_MUX=m + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +# end of Multiplexer I2C Chip support + +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_CCGX_UCSI=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_AMD_MP2=m +# CONFIG_I2C_AMD_ASF is not set +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_CHT_WC=m +CONFIG_I2C_NFORCE2=m +# CONFIG_I2C_NVIDIA_GPU is not set +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +# CONFIG_I2C_ZHAOXIN is not set + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_DESIGNWARE_CORE=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_PCI=m +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_SIMTEC=m +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_LJCA=m +# CONFIG_I2C_CP2615 is not set +CONFIG_I2C_PARPORT=m +# CONFIG_I2C_PCI1XXXX is not set +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIPERBOARD=m + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_MLXCPLD is not set +CONFIG_I2C_CROS_EC_TUNNEL=m +# CONFIG_I2C_VIRTIO is not set +# end of I2C Hardware Bus support + +CONFIG_I2C_STUB=m +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y +CONFIG_SPI_OFFLOAD=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_CH341 is not set +CONFIG_SPI_CS42L43=m +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_INTEL_PCI is not set +# CONFIG_SPI_INTEL_PLATFORM is not set +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_LJCA=m +# CONFIG_SPI_MICROCHIP_CORE is not set +# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set +# CONFIG_SPI_LANTIQ_SSC is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PCI1XXXX is not set +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_PCI=m +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SIFIVE is not set +# CONFIG_SPI_MXIC is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set +# CONFIG_SPI_AMD is not set + +# +# SPI Multiplexer support +# +# CONFIG_SPI_MUX is not set + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=y +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +CONFIG_SPI_DYNAMIC=y + +# +# SPI Offload triggers +# +# CONFIG_SPI_OFFLOAD_TRIGGER_PWM is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_CLIENT_GPIO is not set +# CONFIG_PPS_GENERATOR is not set + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y +CONFIG_DP83640_PHY=m +CONFIG_PTP_1588_CLOCK_INES=m +CONFIG_PTP_1588_CLOCK_KVM=m +CONFIG_PTP_1588_CLOCK_VMCLOCK=m +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PTP_1588_CLOCK_IDTCM=m +# CONFIG_PTP_1588_CLOCK_FC3W is not set +# CONFIG_PTP_1588_CLOCK_MOCK is not set +CONFIG_PTP_1588_CLOCK_VMW=m +CONFIG_PTP_1588_CLOCK_OCP=m +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +CONFIG_PINCTRL_AMD=y +# CONFIG_PINCTRL_CY8C95X0 is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_SX150X is not set +CONFIG_PINCTRL_CS42L43=m + +# +# Intel pinctrl drivers +# +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=y +# CONFIG_PINCTRL_LYNXPOINT is not set +CONFIG_PINCTRL_INTEL=y +CONFIG_PINCTRL_INTEL_PLATFORM=m +CONFIG_PINCTRL_ALDERLAKE=m +CONFIG_PINCTRL_BROXTON=y +CONFIG_PINCTRL_CANNONLAKE=y +CONFIG_PINCTRL_CEDARFORK=y +CONFIG_PINCTRL_DENVERTON=y +CONFIG_PINCTRL_ELKHARTLAKE=m +CONFIG_PINCTRL_EMMITSBURG=m +CONFIG_PINCTRL_GEMINILAKE=y +CONFIG_PINCTRL_ICELAKE=y +CONFIG_PINCTRL_JASPERLAKE=m +CONFIG_PINCTRL_LAKEFIELD=m +CONFIG_PINCTRL_LEWISBURG=y +CONFIG_PINCTRL_METEORLAKE=m +CONFIG_PINCTRL_METEORPOINT=m +CONFIG_PINCTRL_SUNRISEPOINT=y +CONFIG_PINCTRL_TIGERLAKE=y +# end of Intel pinctrl drivers + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_GPIO_ACPI=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_REGMAP=m +CONFIG_GPIO_SWNODE_UNDEFINED=y +CONFIG_GPIO_IDIO_16=m + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_ALTERA is not set +CONFIG_GPIO_AMDPT=m +# CONFIG_GPIO_DWAPB is not set +CONFIG_GPIO_EXAR=m +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_GRANITERAPIDS is not set +# CONFIG_GPIO_ICH is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_POLARFIRE_SOC is not set +# CONFIG_GPIO_XILINX is not set +CONFIG_GPIO_AMD_FCH=m +# end of Memory mapped GPIO drivers + +# +# Port-mapped I/O GPIO drivers +# +# CONFIG_GPIO_VX855 is not set +CONFIG_GPIO_F7188X=m +# CONFIG_GPIO_IT87 is not set +# CONFIG_GPIO_SCH is not set +# CONFIG_GPIO_SCH311X is not set +# CONFIG_GPIO_WINBOND is not set +# CONFIG_GPIO_WS16C48 is not set +# end of Port-mapped I/O GPIO drivers + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_FXL6408 is not set +# CONFIG_GPIO_DS4520 is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCA9570 is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +# CONFIG_GPIO_CROS_EC is not set +# CONFIG_GPIO_CRYSTAL_COVE is not set +# CONFIG_GPIO_ELKHARTLAKE is not set +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LJCA=m +# CONFIG_GPIO_TPS68470 is not set +CONFIG_GPIO_WHISKEY_COVE=m +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_AMD8111 is not set +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_PCI_IDIO_16=m +CONFIG_GPIO_PCIE_IDIO_24=m +# CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_MPSSE=m +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +# CONFIG_GPIO_AGGREGATOR is not set +# CONFIG_GPIO_LATCH is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_VIRTIO is not set +# CONFIG_GPIO_SIM is not set +# end of Virtual GPIO drivers + +# +# GPIO Debugging utilities +# +# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set +# CONFIG_GPIO_VIRTUSER is not set +# end of GPIO Debugging utilities + +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +# CONFIG_W1_MASTER_AMD_AXI is not set +# CONFIG_W1_MASTER_MATROX is not set +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m +# CONFIG_W1_MASTER_SGI is not set +# CONFIG_W1_MASTER_UART is not set +# end of 1-wire Bus Masters + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2405=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2408_READBACK=y +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2805=m +# CONFIG_W1_SLAVE_DS2430 is not set +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2438=m +# CONFIG_W1_SLAVE_DS250X is not set +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_DS28E17=m +# end of 1-wire Slaves + +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_SEQUENCING is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_IP5XXX_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_CHAGALL is not set +# CONFIG_BATTERY_CW2015 is not set +CONFIG_BATTERY_DS2760=m +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SAMSUNG_SDI is not set +CONFIG_BATTERY_SBS=m +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +CONFIG_BATTERY_BQ27XXX=m +# CONFIG_BATTERY_BQ27XXX_I2C is not set +CONFIG_BATTERY_BQ27XXX_HDQ=m +# CONFIG_CHARGER_AXP20X is not set +# CONFIG_BATTERY_AXP20X is not set +# CONFIG_AXP20X_POWER is not set +CONFIG_AXP288_CHARGER=m +CONFIG_AXP288_FUEL_GAUGE=m +# CONFIG_BATTERY_MAX17040 is not set +CONFIG_BATTERY_MAX17042=m +# CONFIG_BATTERY_MAX1720X is not set +# CONFIG_BATTERY_MAX1721X is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_LTC4162L is not set +# CONFIG_CHARGER_MAX77976 is not set +# CONFIG_CHARGER_MAX8971 is not set +# CONFIG_CHARGER_BQ2415X is not set +CONFIG_CHARGER_BQ24190=m +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ2515X is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_BQ256XX is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_BATTERY_GOLDFISH is not set +# CONFIG_BATTERY_RT5033 is not set +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_CHARGER_RT9467 is not set +# CONFIG_CHARGER_RT9471 is not set +CONFIG_CHARGER_CROS_USBPD=m +CONFIG_CHARGER_CROS_PCHG=m +CONFIG_CHARGER_CROS_CONTROL=m +# CONFIG_FUEL_GAUGE_STC3117 is not set +# CONFIG_CHARGER_BD99954 is not set +CONFIG_CHARGER_WILCO=m +CONFIG_BATTERY_SURFACE=m +CONFIG_CHARGER_SURFACE=m +# CONFIG_BATTERY_UG3105 is not set +# CONFIG_FUEL_GAUGE_MM8013 is not set +CONFIG_HWMON=y +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +# CONFIG_SENSORS_AD7314 is not set +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +# CONFIG_SENSORS_ADM1177 is not set +CONFIG_SENSORS_ADM9240=m +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +# CONFIG_SENSORS_AHT10 is not set +CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m +# CONFIG_SENSORS_AS370 is not set +CONFIG_SENSORS_ASC7621=m +# CONFIG_SENSORS_ASUS_ROG_RYUJIN is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +# CONFIG_SENSORS_CHIPCAP2 is not set +CONFIG_SENSORS_CORSAIR_CPRO=m +CONFIG_SENSORS_CORSAIR_PSU=m +CONFIG_SENSORS_CROS_EC=m +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_I8K=y +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_FTSTEUTATES=m +# CONFIG_SENSORS_GIGABYTE_WATERFORCE is not set +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_G760A=m +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HS3001 is not set +# CONFIG_SENSORS_HTU31 is not set +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_CORETEMP=m +# CONFIG_SENSORS_ISL28022 is not set +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +# CONFIG_SENSORS_POWERZ is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LENOVO_EC is not set +CONFIG_SENSORS_LINEAGE=m +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2947_SPI is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2991 is not set +# CONFIG_SENSORS_LTC2992 is not set +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +# CONFIG_SENSORS_LTC4222 is not set +CONFIG_SENSORS_LTC4245=m +# CONFIG_SENSORS_LTC4260 is not set +CONFIG_SENSORS_LTC4261=m +# CONFIG_SENSORS_LTC4282 is not set +CONFIG_SENSORS_MAX1111=m +# CONFIG_SENSORS_MAX127 is not set +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX31760 is not set +# CONFIG_MAX31827 is not set +# CONFIG_SENSORS_MAX6620 is not set +# CONFIG_SENSORS_MAX6621 is not set +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6650=m +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MC34VR500 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_TPS23861 is not set +CONFIG_SENSORS_MENF21BMC_HWMON=m +# CONFIG_SENSORS_MR75203 is not set +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +# CONFIG_SENSORS_LM95234 is not set +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775_CORE=m +CONFIG_SENSORS_NCT6775=m +# CONFIG_SENSORS_NCT6775_I2C is not set +# CONFIG_SENSORS_NCT7363 is not set +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NPCM7XX=m +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +# CONFIG_SENSORS_NZXT_KRAKEN3 is not set +# CONFIG_SENSORS_NZXT_SMART2 is not set +# CONFIG_SENSORS_OCC_P8_I2C is not set +CONFIG_SENSORS_PCF8591=m +CONFIG_PMBUS=m +CONFIG_SENSORS_PMBUS=m +# CONFIG_SENSORS_ACBEL_FSG032 is not set +# CONFIG_SENSORS_ADM1266 is not set +# CONFIG_SENSORS_ADM1275 is not set +# CONFIG_SENSORS_ADP1050 is not set +# CONFIG_SENSORS_BEL_PFE is not set +# CONFIG_SENSORS_BPA_RS600 is not set +# CONFIG_SENSORS_CRPS is not set +# CONFIG_SENSORS_DELTA_AHE50DC_FAN is not set +# CONFIG_SENSORS_FSP_3Y is not set +# CONFIG_SENSORS_IBM_CFFPS is not set +# CONFIG_SENSORS_DPS920AB is not set +# CONFIG_SENSORS_INA233 is not set +# CONFIG_SENSORS_INSPUR_IPSPS is not set +# CONFIG_SENSORS_IR35221 is not set +# CONFIG_SENSORS_IR36021 is not set +# CONFIG_SENSORS_IR38064 is not set +# CONFIG_SENSORS_IRPS5401 is not set +# CONFIG_SENSORS_ISL68137 is not set +# CONFIG_SENSORS_LM25066 is not set +# CONFIG_SENSORS_LT3074 is not set +# CONFIG_SENSORS_LT7182S is not set +# CONFIG_SENSORS_LTC2978 is not set +# CONFIG_SENSORS_LTC3815 is not set +# CONFIG_SENSORS_LTC4286 is not set +# CONFIG_SENSORS_MAX15301 is not set +# CONFIG_SENSORS_MAX16064 is not set +# CONFIG_SENSORS_MAX16601 is not set +# CONFIG_SENSORS_MAX20730 is not set +# CONFIG_SENSORS_MAX20751 is not set +# CONFIG_SENSORS_MAX31785 is not set +# CONFIG_SENSORS_MAX34440 is not set +# CONFIG_SENSORS_MAX8688 is not set +# CONFIG_SENSORS_MP2856 is not set +# CONFIG_SENSORS_MP2888 is not set +# CONFIG_SENSORS_MP2891 is not set +# CONFIG_SENSORS_MP2975 is not set +# CONFIG_SENSORS_MP2993 is not set +# CONFIG_SENSORS_MP5023 is not set +# CONFIG_SENSORS_MP5920 is not set +# CONFIG_SENSORS_MP5990 is not set +# CONFIG_SENSORS_MP9941 is not set +# CONFIG_SENSORS_MPQ7932 is not set +# CONFIG_SENSORS_MPQ8785 is not set +# CONFIG_SENSORS_PIM4328 is not set +# CONFIG_SENSORS_PLI1209BC is not set +# CONFIG_SENSORS_PM6764TR is not set +# CONFIG_SENSORS_PXE1610 is not set +# CONFIG_SENSORS_Q54SJ108A2 is not set +# CONFIG_SENSORS_STPDDC60 is not set +# CONFIG_SENSORS_TDA38640 is not set +# CONFIG_SENSORS_TPS25990 is not set +# CONFIG_SENSORS_TPS40422 is not set +# CONFIG_SENSORS_TPS53679 is not set +# CONFIG_SENSORS_TPS546D24 is not set +# CONFIG_SENSORS_UCD9000 is not set +# CONFIG_SENSORS_UCD9200 is not set +# CONFIG_SENSORS_XDP710 is not set +# CONFIG_SENSORS_XDPE152 is not set +# CONFIG_SENSORS_XDPE122 is not set +# CONFIG_SENSORS_ZL6100 is not set +# CONFIG_SENSORS_PT5161L is not set +# CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SBTSI is not set +# CONFIG_SENSORS_SHT15 is not set +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHT4x=m +# CONFIG_SENSORS_SHTC1 is not set +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +# CONFIG_SENSORS_EMC2305 is not set +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SURFACE_FAN is not set +# CONFIG_SENSORS_SURFACE_TEMP is not set +# CONFIG_SENSORS_ADC128D818 is not set +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_AMC6821=m +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA238 is not set +# CONFIG_SENSORS_INA3221 is not set +CONFIG_SENSORS_SPD5118=m +# CONFIG_SENSORS_SPD5118_DETECT is not set +# CONFIG_SENSORS_TC74 is not set +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +# CONFIG_SENSORS_TMP464 is not set +# CONFIG_SENSORS_TMP513 is not set +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83773G=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +# CONFIG_SENSORS_XGENE is not set + +# +# ACPI drivers +# +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ASUS_WMI=m +CONFIG_SENSORS_ASUS_EC=m +CONFIG_SENSORS_HP_WMI=m +CONFIG_THERMAL=y +CONFIG_THERMAL_NETLINK=y +CONFIG_THERMAL_STATISTICS=y +# CONFIG_THERMAL_DEBUGFS is not set +# CONFIG_THERMAL_CORE_TESTING is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_PCIE_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set + +# +# Intel thermal drivers +# +CONFIG_INTEL_POWERCLAMP=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_INTEL_TCC=y +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m + +# +# ACPI INT340X thermal drivers +# +CONFIG_INT340X_THERMAL=m +CONFIG_ACPI_THERMAL_REL=m +CONFIG_INT3406_THERMAL=m +CONFIG_PROC_THERMAL_MMIO_RAPL=m +# end of ACPI INT340X thermal drivers + +CONFIG_INTEL_BXT_PMIC_THERMAL=m +CONFIG_INTEL_PCH_THERMAL=m +# CONFIG_INTEL_TCC_COOLING is not set +CONFIG_INTEL_HFI_THERMAL=y +# end of Intel thermal drivers + +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=m +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +CONFIG_WATCHDOG_SYSFS=y +CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT=y + +# +# Watchdog Pretimeout Governors +# +CONFIG_WATCHDOG_PRETIMEOUT_GOV=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m +CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP=m +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=m +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP=y +# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +# CONFIG_SOFT_WATCHDOG_PRETIMEOUT is not set +# CONFIG_CROS_EC_WATCHDOG is not set +# CONFIG_LENOVO_SE10_WDT is not set +# CONFIG_LENOVO_SE30_WDT is not set +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_WDAT_WDT=m +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ADVANTECH_EC_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +# CONFIG_EBC_C384_WDT is not set +# CONFIG_EXAR_WDT is not set +CONFIG_F71808E_WDT=m +CONFIG_SP5100_TCO=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m +# CONFIG_INTEL_OC_WATCHDOG is not set +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_KEMPLD_WDT=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_NV_TCO=m +CONFIG_60XX_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +# CONFIG_TQMX86_WDT is not set +CONFIG_VIA_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_INTEL_MEI_WDT=m +CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m +CONFIG_SIEMENS_SIMATIC_IPC_WDT=m +# CONFIG_MEN_A21_WDT is not set +CONFIG_XEN_WDT=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +# CONFIG_SSB_DRIVER_GPIO is not set +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +# CONFIG_BCMA_HOST_SOC is not set +CONFIG_BCMA_DRIVER_PCI=y +# CONFIG_BCMA_DRIVER_GMAC_CMN is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +# CONFIG_BCMA_DEBUG is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_SMPRO is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +CONFIG_MFD_AXP20X=m +CONFIG_MFD_AXP20X_I2C=m +# CONFIG_MFD_CGBC is not set +CONFIG_MFD_CROS_EC_DEV=m +CONFIG_MFD_CS42L43=m +# CONFIG_MFD_CS42L43_I2C is not set +CONFIG_MFD_CS42L43_SDW=m +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MP2629 is not set +# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTEL_SOC_PMIC_BXTWC=m +CONFIG_INTEL_SOC_PMIC_CHTWC=y +CONFIG_INTEL_SOC_PMIC_CHTDC_TI=m +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_INTEL_PMC_BXT=m +# CONFIG_MFD_IQS62X is not set +# CONFIG_MFD_JANZ_CMODIO is not set +CONFIG_MFD_KEMPLD=m +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77541 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77705 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6360 is not set +# CONFIG_MFD_MT6370 is not set +# CONFIG_MFD_MT6397 is not set +CONFIG_MFD_MENF21BMC=m +# CONFIG_MFD_OCELOT is not set +# CONFIG_EZX_PCAP is not set +CONFIG_MFD_VIPERBOARD=m +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_SY7636A is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT4831 is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RT5120 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_WCD934X is not set +# CONFIG_MFD_ATC260X_I2C is not set +# CONFIG_MFD_CS40L50_I2C is not set +# CONFIG_MFD_CS40L50_SPI is not set +# CONFIG_RAVE_SP_CORE is not set +# CONFIG_MFD_INTEL_M10_BMC_SPI is not set +# CONFIG_MFD_QNAP_MCU is not set +# CONFIG_MFD_UPBOARD_FPGA is not set +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_NETLINK_EVENTS is not set +# CONFIG_REGULATOR_88PG86X is not set +# CONFIG_REGULATOR_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ADP5055 is not set +# CONFIG_REGULATOR_AW37503 is not set +# CONFIG_REGULATOR_AXP20X is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_GPIO is not set +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77503 is not set +# CONFIG_REGULATOR_MAX77857 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8893 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX20086 is not set +# CONFIG_REGULATOR_MAX20411 is not set +# CONFIG_REGULATOR_MAX77826 is not set +# CONFIG_REGULATOR_MP8859 is not set +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PF9453 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +# CONFIG_REGULATOR_PWM is not set +# CONFIG_REGULATOR_RAA215300 is not set +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT4803 is not set +# CONFIG_REGULATOR_RT5190A is not set +# CONFIG_REGULATOR_RT5739 is not set +# CONFIG_REGULATOR_RT5759 is not set +# CONFIG_REGULATOR_RT6160 is not set +# CONFIG_REGULATOR_RT6190 is not set +# CONFIG_REGULATOR_RT6245 is not set +# CONFIG_REGULATOR_RTQ2134 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_RTQ2208 is not set +# CONFIG_REGULATOR_SLG51000 is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS65132 is not set +# CONFIG_REGULATOR_TPS6524X is not set +# CONFIG_REGULATOR_TPS68470 is not set +CONFIG_RC_CORE=m +CONFIG_LIRC=y +CONFIG_RC_MAP=m +CONFIG_RC_DECODERS=y +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +# CONFIG_IR_RCMM_DECODER is not set +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_XMP_DECODER=m +CONFIG_RC_DEVICES=y +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_IMON_RAW=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SERIAL=m +CONFIG_IR_SERIAL_TRANSMITTER=y +CONFIG_IR_STREAMZAP=m +# CONFIG_IR_TOY is not set +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_LOOPBACK=m +# CONFIG_RC_XBOX_DVD is not set +CONFIG_CEC_CORE=m +CONFIG_CEC_NOTIFIER=y + +# +# CEC support +# +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_CEC_NXP_TDA9950 is not set +CONFIG_CEC_CROS_EC=m +# CONFIG_CEC_GPIO is not set +CONFIG_CEC_SECO=m +# CONFIG_CEC_SECO_RC is not set +# CONFIG_USB_EXTRON_DA_HD_4K_PLUS_CEC is not set +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +# end of CEC support + +CONFIG_MEDIA_SUPPORT=m +# CONFIG_MEDIA_SUPPORT_FILTER is not set +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# +CONFIG_VIDEO_DEV=m +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=m +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_FWNODE=m +CONFIG_V4L2_ASYNC=m +CONFIG_V4L2_CCI=m +CONFIG_V4L2_CCI_I2C=m +# end of Video4Linux options + +# +# Media controller options +# +CONFIG_MEDIA_CONTROLLER_DVB=y +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=16 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_GL860=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y + +# +# Analog TV USB devices +# +# CONFIG_VIDEO_GO7007 is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_STK1160=m + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_CXUSB_ANALOG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +# CONFIG_VIDEO_MGB4 is not set +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_TW5864=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW686X=m +# CONFIG_VIDEO_ZORAN is not set + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_DT3155=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m +# CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m + +# +# Media capture/analog/hybrid TV support +# +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m +# CONFIG_VIDEO_COBALT is not set +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX23885=m +CONFIG_MEDIA_ALTERA_CI=m +# CONFIG_VIDEO_CX25821 is not set +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7164=m + +# +# Media digital TV PCI Adapters +# +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_DDBRIDGE=m +# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set +CONFIG_DVB_DM1105=m +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_NETUP_UNIDVB=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_VIDEO_IPU3_CIO2=m +CONFIG_VIDEO_INTEL_IPU6=m +CONFIG_INTEL_VSC=m +CONFIG_IPU_BRIDGE=m +CONFIG_RADIO_ADAPTERS=m +CONFIG_RADIO_MAXIRADIO=m +# CONFIG_RADIO_SAA7706H is not set +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +# CONFIG_RADIO_SI4713 is not set +CONFIG_RADIO_TEA575X=m +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +CONFIG_USB_DSBR=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_USB_MR800=m +CONFIG_USB_RAREMONO=m +CONFIG_RADIO_SI470X=m +CONFIG_USB_SI470X=m +# CONFIG_I2C_SI470X is not set +CONFIG_MEDIA_PLATFORM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_SDR_PLATFORM_DRIVERS is not set +# CONFIG_DVB_PLATFORM_DRIVERS is not set +CONFIG_V4L_MEM2MEM_DRIVERS=y +# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set + +# +# Allegro DVT media platform drivers +# + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# Aspeed media platform drivers +# + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +# CONFIG_VIDEO_CADENCE_CSI2RX is not set +# CONFIG_VIDEO_CADENCE_CSI2TX is not set + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# +CONFIG_VIDEO_CAFE_CCIC=m + +# +# Mediatek media platform drivers +# + +# +# Microchip Technology, Inc. media platform drivers +# + +# +# Nuvoton media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Raspberry Pi media platform drivers +# +# CONFIG_VIDEO_RP1_CFE is not set + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# Verisilicon media platform drivers +# + +# +# VIA media platform drivers +# +CONFIG_VIDEO_VIA_CAMERA=m + +# +# Xilinx media platform drivers +# + +# +# MMC/SDIO DVB adapters +# +CONFIG_SMS_SDIO_DRV=m +CONFIG_V4L_TEST_DRIVERS=y +# CONFIG_VIDEO_VIM2M is not set +# CONFIG_VIDEO_VICODEC is not set +# CONFIG_VIDEO_VIMC is not set +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_VIVID_CEC=y +CONFIG_VIDEO_VIVID_OSD=y +CONFIG_VIDEO_VIVID_MAX_DEVS=64 +# CONFIG_VIDEO_VISL is not set +# CONFIG_DVB_TEST_DRIVERS is not set + +# +# FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_MEDIA_COMMON_OPTIONS=y + +# +# common driver options +# +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_TTPCI_EEPROM=m +CONFIG_UVC_COMMON=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +# CONFIG_SMS_SIANO_DEBUGFS is not set +CONFIG_VIDEO_V4L2_TPG=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# IR I2C driver auto-selected by 'Autoselect ancillary drivers' +# +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_CAMERA_SENSOR=y +# CONFIG_VIDEO_ALVIUM_CSI2 is not set +# CONFIG_VIDEO_AR0521 is not set +# CONFIG_VIDEO_GC0308 is not set +# CONFIG_VIDEO_GC05A2 is not set +# CONFIG_VIDEO_GC08A3 is not set +# CONFIG_VIDEO_GC2145 is not set +CONFIG_VIDEO_HI556=m +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX283 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX296 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9M114 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T112 is not set +CONFIG_VIDEO_MT9V011=m +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_OG01A1B is not set +CONFIG_VIDEO_OV01A10=m +# CONFIG_VIDEO_OV02A10 is not set +# CONFIG_VIDEO_OV02E10 is not set +CONFIG_VIDEO_OV02C10=m +# CONFIG_VIDEO_OV08D10 is not set +CONFIG_VIDEO_OV08X40=m +# CONFIG_VIDEO_OV13858 is not set +CONFIG_VIDEO_OV13B10=m +CONFIG_VIDEO_OV2640=m +# CONFIG_VIDEO_OV2659 is not set +CONFIG_VIDEO_OV2680=m +# CONFIG_VIDEO_OV2685 is not set +CONFIG_VIDEO_OV2740=m +# CONFIG_VIDEO_OV4689 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +CONFIG_VIDEO_OV5670=m +# CONFIG_VIDEO_OV5675 is not set +CONFIG_VIDEO_OV5693=m +# CONFIG_VIDEO_OV5695 is not set +# CONFIG_VIDEO_OV64A40 is not set +# CONFIG_VIDEO_OV6650 is not set +CONFIG_VIDEO_OV7251=m +# CONFIG_VIDEO_OV7640 is not set +CONFIG_VIDEO_OV7670=m +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7740 is not set +CONFIG_VIDEO_OV8856=m +# CONFIG_VIDEO_OV8858 is not set +CONFIG_VIDEO_OV8865=m +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV9734 is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_VD55G1 is not set +# CONFIG_VIDEO_VD56G3 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set + +# +# Camera ISPs +# +# CONFIG_VIDEO_THP7312 is not set +# end of Camera ISPs + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9719 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + +# +# Audio decoders, processors and mixers +# +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_MSP3400=m +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_TDA1997X is not set +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_TVAUDIO=m +# CONFIG_VIDEO_UDA1342 is not set +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +CONFIG_VIDEO_SAA6588=m +# end of RDS decoders + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_LT6911UXE is not set +CONFIG_VIDEO_KS0127=m +# CONFIG_VIDEO_ML86V7667 is not set +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TC358746 is not set +# CONFIG_VIDEO_TVP514X is not set +CONFIG_VIDEO_TVP5150=m +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9900 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +CONFIG_VIDEO_VPX3220=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m +# end of Video decoders + +# +# Video encoders +# +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AK881X is not set +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +# CONFIG_VIDEO_THS8200 is not set +# end of Video encoders + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +# end of Video improvement chips + +# +# Audio/Video compression chips +# +CONFIG_VIDEO_SAA6752HS=m +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +# CONFIG_SDR_MAX2175 is not set +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_I2C is not set +CONFIG_VIDEO_M52790=m +# CONFIG_VIDEO_ST_MIPID02 is not set +# CONFIG_VIDEO_THS7303 is not set +# end of Miscellaneous helper chips + +# +# Video serializers and deserializers +# +# end of Video serializers and deserializers + +# +# Media SPI Adapters +# +# CONFIG_CXD2880_SPI_DRV is not set +# CONFIG_VIDEO_GS1662 is not set +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=m + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_AF9013=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +# CONFIG_DVB_DIB9000 is not set +CONFIG_DVB_DRXD=m +CONFIG_DVB_EC100=m +CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_L64781=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +# CONFIG_DVB_S5H1432 is not set +CONFIG_DVB_SI2168=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_ZL10353=m +# CONFIG_DVB_CXD2880 is not set + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_STV0297=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_VES1820=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +# CONFIG_DVB_MN88443X is not set +CONFIG_DVB_TC90522=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +# CONFIG_DVB_LGS8GL5 is not set +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +# CONFIG_DVB_LNBH29 is not set +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +CONFIG_DVB_DUMMY_FE=m +# end of Media ancillary drivers + +# +# Graphics support +# +CONFIG_APERTURE_HELPERS=y +CONFIG_SCREEN_INFO=y +CONFIG_VIDEO=y +# CONFIG_AUXDISPLAY is not set +# CONFIG_PANEL is not set +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_SIS=y +CONFIG_AGP_VIA=y +CONFIG_INTEL_GTT=y +CONFIG_VGA_SWITCHEROO=y +CONFIG_DRM=y + +# +# DRM debugging options +# +# CONFIG_DRM_WERROR is not set +# CONFIG_DRM_DEBUG_MM is not set +# end of DRM debugging options + +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_DRAW=y +CONFIG_DRM_PANIC=y +CONFIG_DRM_PANIC_FOREGROUND_COLOR=0xffffff +CONFIG_DRM_PANIC_BACKGROUND_COLOR=0x000000 +# CONFIG_DRM_PANIC_DEBUG is not set +CONFIG_DRM_PANIC_SCREEN="kmsg" +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set +CONFIG_DRM_CLIENT=y +CONFIG_DRM_CLIENT_LIB=y +CONFIG_DRM_CLIENT_SELECTION=y +CONFIG_DRM_CLIENT_SETUP=y + +# +# Supported DRM clients +# +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +# CONFIG_DRM_CLIENT_LOG is not set +CONFIG_DRM_CLIENT_DEFAULT_FBDEV=y +CONFIG_DRM_CLIENT_DEFAULT="fbdev" +# end of Supported DRM clients + +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_HELPER=m +CONFIG_DRM_DISPLAY_DP_AUX_CEC=y +CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV=y +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_DP_TUNNEL=y +CONFIG_DRM_DISPLAY_DSC_HELPER=y +CONFIG_DRM_DISPLAY_HDCP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +CONFIG_DRM_TTM=m +CONFIG_DRM_EXEC=m +CONFIG_DRM_GPUVM=m +CONFIG_DRM_GPUSVM=m +CONFIG_DRM_BUDDY=m +CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_SUBALLOC_HELPER=m +CONFIG_DRM_SCHED=m + +# +# Drivers for system framebuffers +# +CONFIG_DRM_SYSFB_HELPER=y +CONFIG_DRM_SIMPLEDRM=y +# end of Drivers for system framebuffers + +# +# ARM devices +# +# end of ARM devices + +CONFIG_DRM_RADEON=m +# CONFIG_DRM_RADEON_USERPTR is not set +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y +# CONFIG_DRM_AMD_ISP is not set +# CONFIG_DRM_AMDGPU_WERROR is not set + +# +# ACP (Audio CoProcessor) Configuration +# +CONFIG_DRM_AMD_ACP=y +# end of ACP (Audio CoProcessor) Configuration + +# +# Display Engine Configuration +# +CONFIG_DRM_AMD_DC=y +CONFIG_DRM_AMD_DC_FP=y +CONFIG_DRM_AMD_DC_SI=y +# CONFIG_DRM_AMD_SECURE_DISPLAY is not set +# end of Display Engine Configuration + +CONFIG_HSA_AMD=y +CONFIG_HSA_AMD_SVM=y +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +# CONFIG_NOUVEAU_DEBUG_PUSH is not set +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +# CONFIG_DRM_NOUVEAU_SVM is not set +CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y +CONFIG_DRM_NOUVEAU_CH7006=m +CONFIG_DRM_NOUVEAU_SIL164=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_FORCE_PROBE="" +CONFIG_DRM_I915_CAPTURE_ERROR=y +CONFIG_DRM_I915_COMPRESS_ERROR=y +CONFIG_DRM_I915_USERPTR=y +CONFIG_DRM_I915_GVT_KVMGT=m +CONFIG_DRM_I915_PXP=y +CONFIG_DRM_I915_DP_TUNNEL=y + +# +# drm/i915 Debugging +# +# CONFIG_DRM_I915_WERROR is not set +# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set +# CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_DEBUG_MMIO is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set +# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set +# CONFIG_DRM_I915_DEBUG_GUC is not set +# CONFIG_DRM_I915_SELFTEST is not set +# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set +# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set +# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set +# CONFIG_DRM_I915_DEBUG_WAKEREF is not set +# end of drm/i915 Debugging + +# +# drm/i915 Profile Guided Optimisation +# +CONFIG_DRM_I915_REQUEST_TIMEOUT=20000 +CONFIG_DRM_I915_FENCE_TIMEOUT=10000 +CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 +CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500 +CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 +CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500 +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 +CONFIG_DRM_I915_STOP_TIMEOUT=100 +CONFIG_DRM_I915_TIMESLICE_DURATION=1 +# end of drm/i915 Profile Guided Optimisation + +CONFIG_DRM_I915_GVT=y +CONFIG_DRM_XE=m +CONFIG_DRM_XE_DISPLAY=y +CONFIG_DRM_XE_DP_TUNNEL=y +CONFIG_DRM_XE_GPUSVM=y +CONFIG_DRM_XE_DEVMEM_MIRROR=y +CONFIG_DRM_XE_FORCE_PROBE="" + +# +# drm/Xe Debugging +# +# CONFIG_DRM_XE_WERROR is not set +# CONFIG_DRM_XE_DEBUG is not set +# CONFIG_DRM_XE_DEBUG_VM is not set +# CONFIG_DRM_XE_DEBUG_MEMIRQ is not set +# CONFIG_DRM_XE_DEBUG_SRIOV is not set +# CONFIG_DRM_XE_DEBUG_MEM is not set +# CONFIG_DRM_XE_LARGE_GUC_BUFFER is not set +# CONFIG_DRM_XE_USERPTR_INVAL_INJECT is not set +# end of drm/Xe Debugging + +# +# drm/xe Profile Guided Optimisation +# +CONFIG_DRM_XE_JOB_TIMEOUT_MAX=10000 +CONFIG_DRM_XE_JOB_TIMEOUT_MIN=1 +CONFIG_DRM_XE_TIMESLICE_MAX=10000000 +CONFIG_DRM_XE_TIMESLICE_MIN=1 +CONFIG_DRM_XE_PREEMPT_TIMEOUT=640000 +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX=10000000 +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN=1 +CONFIG_DRM_XE_ENABLE_SCHEDTIMEOUT_LIMIT=y +# end of drm/xe Profile Guided Optimisation + +CONFIG_DRM_VGEM=m +# CONFIG_DRM_VKMS is not set +CONFIG_DRM_VMWGFX=m +# CONFIG_DRM_VMWGFX_MKSSTATS is not set +CONFIG_DRM_GMA500=m +CONFIG_DRM_UDL=m +CONFIG_DRM_AST=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_QXL=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VIRTIO_GPU_KMS=y +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set +# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_APPLETBDRM is not set +CONFIG_DRM_BOCHS=m +CONFIG_DRM_CIRRUS_QEMU=m +# CONFIG_DRM_GM12U320 is not set +# CONFIG_DRM_PANEL_MIPI_DBI is not set +# CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9163 is not set +# CONFIG_TINYDRM_ILI9225 is not set +# CONFIG_TINYDRM_ILI9341 is not set +# CONFIG_TINYDRM_ILI9486 is not set +# CONFIG_TINYDRM_MI0283QT is not set +# CONFIG_TINYDRM_REPAPER is not set +# CONFIG_TINYDRM_SHARP_MEMORY is not set +CONFIG_DRM_XEN=y +CONFIG_DRM_XEN_FRONTEND=m +CONFIG_DRM_VBOXVIDEO=m +# CONFIG_DRM_GUD is not set +# CONFIG_DRM_ST7571_I2C is not set +# CONFIG_DRM_ST7586 is not set +# CONFIG_DRM_ST7735R is not set +# CONFIG_DRM_SSD130X is not set +CONFIG_DRM_HYPERV=m +CONFIG_DRM_PANEL_BACKLIGHT_QUIRKS=m +CONFIG_DRM_PRIVACY_SCREEN=y +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB=y +CONFIG_FB_HECUBA=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_ARC=m +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_I2C is not set +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +CONFIG_FB_VIA_X_COMPATIBILITY=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +# CONFIG_FB_CARMINE is not set +CONFIG_FB_SMSCUFX=m +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +CONFIG_FB_VIRTUAL=m +CONFIG_XEN_FBDEV_FRONTEND=y +# CONFIG_FB_METRONOME is not set +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_HYPERV is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DEVICE=y +CONFIG_FB_DDC=m +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYSMEM_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_IOMEM_FOPS=y +CONFIG_FB_IOMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_KTD253 is not set +# CONFIG_BACKLIGHT_KTD2801 is not set +# CONFIG_BACKLIGHT_KTZ8866 is not set +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_APPLE=m +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# CONFIG_BACKLIGHT_SAHARA is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3509 is not set +# CONFIG_BACKLIGHT_LM3630A is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_BACKLIGHT_MP3309C is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +# end of Backlight & LCD device support + +CONFIG_VGASTATE=m +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y +# end of Graphics support + +CONFIG_DRM_ACCEL=y +# CONFIG_DRM_ACCEL_AMDXDNA is not set +CONFIG_DRM_ACCEL_HABANALABS=m +CONFIG_DRM_ACCEL_IVPU=m +# CONFIG_DRM_ACCEL_IVPU_DEBUG is not set +# CONFIG_DRM_ACCEL_QAIC is not set +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_PCM_ELD=y +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_SEQ_DEVICE=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_CTL_FAST_LOOKUP=y +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_CTL_INPUT_VALIDATION is not set +# CONFIG_SND_UTIMER is not set +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_CTL_LED=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=m +CONFIG_SND_SEQ_MIDI=m +CONFIG_SND_SEQ_MIDI_EMUL=m +CONFIG_SND_SEQ_VIRMIDI=m +# CONFIG_SND_SEQ_UMP is not set +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +CONFIG_SND_PCSP=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +# CONFIG_SND_PCMTEST is not set +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_SB_COMMON=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +# CONFIG_SND_AW2 is not set +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +# +# HD-Audio +# +CONFIG_SND_HDA=m +CONFIG_SND_HDA_GENERIC_LEDS=y +CONFIG_SND_HDA_INTEL=m +# CONFIG_SND_HDA_ACPI is not set +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=1 +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CIRRUS_SCODEC=m +CONFIG_SND_HDA_SCODEC_CS35L41=m +CONFIG_SND_HDA_SCODEC_COMPONENT=m +CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L41_SPI=m +CONFIG_SND_HDA_SCODEC_CS35L56=m +CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m +CONFIG_SND_HDA_SCODEC_TAS2781=m +CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m +# CONFIG_SND_HDA_SCODEC_TAS2781_SPI is not set +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CS8409=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +# CONFIG_SND_HDA_CODEC_SENARYTECH is not set +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=10 +# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set +# CONFIG_SND_HDA_CTL_DEV_ID is not set +# end of HD-Audio + +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_EXT_CORE=m +CONFIG_SND_HDA_PREALLOC_SIZE=2048 +CONFIG_SND_INTEL_NHLT=y +CONFIG_SND_INTEL_DSP_CONFIG=m +CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_BCD2000=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_DICE=m +CONFIG_SND_OXFW=m +CONFIG_SND_ISIGHT=m +CONFIG_SND_FIREWORKS=m +CONFIG_SND_BEBOB=m +CONFIG_SND_FIREWIRE_DIGI00X=m +CONFIG_SND_FIREWIRE_TASCAM=m +CONFIG_SND_FIREWIRE_MOTU=m +CONFIG_SND_FIREFACE=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_COMPRESS=y +CONFIG_SND_SOC_TOPOLOGY=y +CONFIG_SND_SOC_ACPI=m +# CONFIG_SND_SOC_USB is not set +# CONFIG_SND_SOC_ADI is not set +CONFIG_SND_SOC_AMD_ACP=m +CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH=m +CONFIG_SND_SOC_AMD_CZ_RT5645_MACH=m +# CONFIG_SND_SOC_AMD_ST_ES8336_MACH is not set +CONFIG_SND_SOC_AMD_ACP3x=m +CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m +CONFIG_SND_SOC_AMD_RENOIR=m +CONFIG_SND_SOC_AMD_RENOIR_MACH=m +CONFIG_SND_SOC_AMD_ACP5x=m +CONFIG_SND_SOC_AMD_VANGOGH_MACH=m +CONFIG_SND_SOC_AMD_ACP6x=m +CONFIG_SND_SOC_AMD_YC_MACH=m +CONFIG_SND_AMD_ACP_CONFIG=m +CONFIG_SND_SOC_AMD_ACP_COMMON=m +CONFIG_SND_SOC_ACPI_AMD_MATCH=m +CONFIG_SND_SOC_AMD_ACP_PDM=m +CONFIG_SND_SOC_AMD_ACP_LEGACY_COMMON=m +CONFIG_SND_SOC_AMD_ACP_I2S=m +CONFIG_SND_SOC_AMD_ACPI_MACH=m +CONFIG_SND_SOC_AMD_ACP_PCM=m +CONFIG_SND_SOC_AMD_ACP_PCI=m +CONFIG_SND_AMD_ASOC_RENOIR=m +# CONFIG_SND_AMD_ASOC_REMBRANDT is not set +# CONFIG_SND_AMD_ASOC_ACP63 is not set +CONFIG_SND_AMD_ASOC_ACP70=m +CONFIG_SND_SOC_AMD_MACH_COMMON=m +CONFIG_SND_SOC_AMD_LEGACY_MACH=m +CONFIG_SND_SOC_AMD_SOF_MACH=m +# CONFIG_SND_SOC_AMD_SOF_SDW_MACH is not set +# CONFIG_SND_SOC_AMD_LEGACY_SDW_MACH is not set +CONFIG_SND_AMD_SOUNDWIRE_ACPI=m +CONFIG_SND_SOC_AMD_RPL_ACP6x=m +CONFIG_SND_SOC_AMD_ACP63_TOPLEVEL=m +CONFIG_SND_SOC_AMD_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_AMD_PS=m +CONFIG_SND_SOC_AMD_PS_MACH=m +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set +CONFIG_SND_DESIGNWARE_I2S=m +# CONFIG_SND_DESIGNWARE_PCM is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_SOC_CHV3_I2S is not set +# CONFIG_SND_I2S_HI6210_I2S is not set + +# +# SoC Audio for Loongson CPUs +# +# end of SoC Audio for Loongson CPUs + +# CONFIG_SND_SOC_IMG is not set +CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y +CONFIG_SND_SOC_INTEL_CATPT=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m +# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m +CONFIG_SND_SOC_ACPI_INTEL_MATCH=m +CONFIG_SND_SOC_ACPI_INTEL_SDCA_QUIRKS=m +CONFIG_SND_SOC_INTEL_AVS=m + +# +# Intel AVS Machine drivers +# + +# +# Available DSP configurations +# +# CONFIG_SND_SOC_INTEL_AVS_CARDNAME_OBSOLETE is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_DA7219=m +CONFIG_SND_SOC_INTEL_AVS_MACH_DMIC=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_ES8336 is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_HDAUDIO=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_I2S_TEST is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98927=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98357A is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98373=m +CONFIG_SND_SOC_INTEL_AVS_MACH_NAU8825=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_PCM3168A is not set +# CONFIG_SND_SOC_INTEL_AVS_MACH_PROBE is not set +# CONFIG_SND_SOC_INTEL_AVS_MACH_RT274 is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_RT286=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_RT298 is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5514=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5663=m +# CONFIG_SND_SOC_INTEL_AVS_MACH_RT5682 is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_SSM4567=m +# end of Intel AVS Machine drivers + +CONFIG_SND_SOC_INTEL_MACH=y +CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y +CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_REALTEK_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_CIRRUS_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_NUVOTON_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_BOARD_HELPERS=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH=m +# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set +# CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH is not set +CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m +CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m +# CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH is not set +CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH=m +CONFIG_SND_SOC_INTEL_SOF_NAU8825_MACH=m +CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_DA7219_MACH=m +CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH=m +# CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH is not set +CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH=m +# CONFIG_SND_SOC_MTK_BTCVSD is not set +CONFIG_SND_SOC_SDCA=m +CONFIG_SND_SOC_SDCA_OPTIONAL=m +CONFIG_SND_SOC_SOF_TOPLEVEL=y +CONFIG_SND_SOC_SOF_PCI_DEV=m +CONFIG_SND_SOC_SOF_PCI=m +# CONFIG_SND_SOC_SOF_ACPI is not set +CONFIG_SND_SOC_SOF_DEBUG_PROBES=m +CONFIG_SND_SOC_SOF_CLIENT=m +# CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set +CONFIG_SND_SOC_SOF=m +CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +CONFIG_SND_SOC_SOF_IPC3=y +CONFIG_SND_SOC_SOF_IPC4=y +CONFIG_SND_SOC_SOF_AMD_TOPLEVEL=m +CONFIG_SND_SOC_SOF_AMD_COMMON=m +# CONFIG_SND_SOC_SOF_AMD_RENOIR is not set +# CONFIG_SND_SOC_SOF_AMD_VANGOGH is not set +CONFIG_SND_SOC_SOF_AMD_REMBRANDT=m +CONFIG_SND_SOC_SOF_ACP_PROBES=m +# CONFIG_SND_SOC_SOF_AMD_ACP63 is not set +# CONFIG_SND_SOC_SOF_AMD_ACP70 is not set +CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y +CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m +CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m +CONFIG_SND_SOC_SOF_INTEL_COMMON=m +CONFIG_SND_SOC_SOF_MERRIFIELD=m +CONFIG_SND_SOC_SOF_INTEL_SKL=m +CONFIG_SND_SOC_SOF_SKYLAKE=m +CONFIG_SND_SOC_SOF_KABYLAKE=m +CONFIG_SND_SOC_SOF_INTEL_APL=m +CONFIG_SND_SOC_SOF_APOLLOLAKE=m +CONFIG_SND_SOC_SOF_GEMINILAKE=m +CONFIG_SND_SOC_SOF_INTEL_CNL=m +CONFIG_SND_SOC_SOF_CANNONLAKE=m +CONFIG_SND_SOC_SOF_COFFEELAKE=m +CONFIG_SND_SOC_SOF_COMETLAKE=m +CONFIG_SND_SOC_SOF_INTEL_ICL=m +CONFIG_SND_SOC_SOF_ICELAKE=m +CONFIG_SND_SOC_SOF_JASPERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_TGL=m +CONFIG_SND_SOC_SOF_TIGERLAKE=m +CONFIG_SND_SOC_SOF_ELKHARTLAKE=m +CONFIG_SND_SOC_SOF_ALDERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_MTL=m +CONFIG_SND_SOC_SOF_METEORLAKE=m +CONFIG_SND_SOC_SOF_INTEL_LNL=m +CONFIG_SND_SOC_SOF_LUNARLAKE=m +CONFIG_SND_SOC_SOF_INTEL_PTL=m +CONFIG_SND_SOC_SOF_PANTHERLAKE=m +CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_GENERIC=m +CONFIG_SND_SOC_SOF_HDA_MLINK=m +CONFIG_SND_SOC_SOF_HDA_LINK=y +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y +CONFIG_SND_SOF_SOF_HDA_SDW_BPT=m +CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_HDA=m +CONFIG_SND_SOC_SOF_HDA_PROBES=m +CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE=m +CONFIG_SND_SOC_SOF_XTENSA=m + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +CONFIG_SND_SOC_I2C_AND_SPI=m + +# +# CODEC drivers +# +CONFIG_SND_SOC_WM_ADSP=m +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set +# CONFIG_SND_SOC_ADAU1373 is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +CONFIG_SND_SOC_ADAU7002=m +# CONFIG_SND_SOC_ADAU7118_HW is not set +# CONFIG_SND_SOC_ADAU7118_I2C is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4375 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4619 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set +# CONFIG_SND_SOC_AW8738 is not set +# CONFIG_SND_SOC_AW88395 is not set +# CONFIG_SND_SOC_AW88166 is not set +# CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_AW88081 is not set +# CONFIG_SND_SOC_AW87390 is not set +# CONFIG_SND_SOC_AW88399 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CHV3_CODEC is not set +CONFIG_SND_SOC_CROS_EC_CODEC=m +CONFIG_SND_SOC_CS_AMP_LIB=m +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set +CONFIG_SND_SOC_CS35L41_LIB=m +CONFIG_SND_SOC_CS35L41=m +CONFIG_SND_SOC_CS35L41_SPI=m +CONFIG_SND_SOC_CS35L41_I2C=m +# CONFIG_SND_SOC_CS35L45_SPI is not set +# CONFIG_SND_SOC_CS35L45_I2C is not set +CONFIG_SND_SOC_CS35L56=m +CONFIG_SND_SOC_CS35L56_SHARED=m +CONFIG_SND_SOC_CS35L56_I2C=m +CONFIG_SND_SOC_CS35L56_SPI=m +CONFIG_SND_SOC_CS35L56_SDW=m +CONFIG_SND_SOC_CS42L42_CORE=m +CONFIG_SND_SOC_CS42L42=m +CONFIG_SND_SOC_CS42L42_SDW=m +CONFIG_SND_SOC_CS42L43=m +CONFIG_SND_SOC_CS42L43_SDW=m +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS42L83 is not set +# CONFIG_SND_SOC_CS42L84 is not set +# CONFIG_SND_SOC_CS4234 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS48L32 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CS530X_I2C is not set +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DA7213=m +CONFIG_SND_SOC_DA7219=m +CONFIG_SND_SOC_DMIC=m +# CONFIG_SND_SOC_ES7134 is not set +# CONFIG_SND_SOC_ES7241 is not set +CONFIG_SND_SOC_ES83XX_DSM_COMMON=m +# CONFIG_SND_SOC_ES8311 is not set +CONFIG_SND_SOC_ES8316=m +# CONFIG_SND_SOC_ES8323 is not set +CONFIG_SND_SOC_ES8326=m +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_ES8375 is not set +# CONFIG_SND_SOC_ES8389 is not set +# CONFIG_SND_SOC_GTM601 is not set +CONFIG_SND_SOC_HDAC_HDA=m +CONFIG_SND_SOC_HDA=m +# CONFIG_SND_SOC_ICS43432 is not set +# CONFIG_SND_SOC_IDT821034 is not set +# CONFIG_SND_SOC_MAX98088 is not set +CONFIG_SND_SOC_MAX98090=m +CONFIG_SND_SOC_MAX98357A=m +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +CONFIG_SND_SOC_MAX98927=m +# CONFIG_SND_SOC_MAX98520 is not set +CONFIG_SND_SOC_MAX98363=m +CONFIG_SND_SOC_MAX98373=m +CONFIG_SND_SOC_MAX98373_I2C=m +CONFIG_SND_SOC_MAX98373_SDW=m +CONFIG_SND_SOC_MAX98388=m +CONFIG_SND_SOC_MAX98390=m +# CONFIG_SND_SOC_MAX98396 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_PCM6240 is not set +# CONFIG_SND_SOC_PEB2466 is not set +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RT_SDW_COMMON=m +CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT1011=m +CONFIG_SND_SOC_RT1015=m +CONFIG_SND_SOC_RT1015P=m +# CONFIG_SND_SOC_RT1017_SDCA_SDW is not set +CONFIG_SND_SOC_RT1019=m +CONFIG_SND_SOC_RT1308=m +CONFIG_SND_SOC_RT1308_SDW=m +CONFIG_SND_SOC_RT1316_SDW=m +CONFIG_SND_SOC_RT1318_SDW=m +CONFIG_SND_SOC_RT1320_SDW=m +CONFIG_SND_SOC_RT5514=m +# CONFIG_SND_SOC_RT5616 is not set +# CONFIG_SND_SOC_RT5631 is not set +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5651=m +# CONFIG_SND_SOC_RT5659 is not set +CONFIG_SND_SOC_RT5663=m +CONFIG_SND_SOC_RT5670=m +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_SOC_RT5682=m +CONFIG_SND_SOC_RT5682_I2C=m +CONFIG_SND_SOC_RT5682_SDW=m +CONFIG_SND_SOC_RT5682S=m +CONFIG_SND_SOC_RT700=m +CONFIG_SND_SOC_RT700_SDW=m +CONFIG_SND_SOC_RT711=m +CONFIG_SND_SOC_RT711_SDW=m +CONFIG_SND_SOC_RT711_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m +CONFIG_SND_SOC_RT721_SDCA_SDW=m +CONFIG_SND_SOC_RT722_SDCA_SDW=m +CONFIG_SND_SOC_RT715=m +CONFIG_SND_SOC_RT715_SDW=m +CONFIG_SND_SOC_RT715_SDCA_SDW=m +# CONFIG_SND_SOC_RT9120 is not set +# CONFIG_SND_SOC_RT9123 is not set +# CONFIG_SND_SOC_RT9123P is not set +# CONFIG_SND_SOC_RTQ9128 is not set +CONFIG_SND_SOC_SDW_MOCKUP=m +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set +# CONFIG_SND_SOC_SMA1303 is not set +# CONFIG_SND_SOC_SMA1307 is not set +# CONFIG_SND_SOC_SPDIF is not set +# CONFIG_SND_SOC_SRC4XXX_I2C is not set +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2518 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +CONFIG_SND_SOC_SSM4567=m +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS2780 is not set +CONFIG_SND_SOC_TAS2781_COMLIB=m +CONFIG_SND_SOC_TAS2781_COMLIB_I2C=m +CONFIG_SND_SOC_TAS2781_FMWLIB=m +CONFIG_SND_SOC_TAS2781_I2C=m +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS5805M is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TFA989X is not set +# CONFIG_SND_SOC_TLV320ADC3XXX is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set +CONFIG_SND_SOC_TS3A227E=m +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set +# CONFIG_SND_SOC_UDA1342 is not set +# CONFIG_SND_SOC_WCD9335 is not set +# CONFIG_SND_SOC_WCD937X_SDW is not set +# CONFIG_SND_SOC_WCD938X_SDW is not set +# CONFIG_SND_SOC_WCD939X_SDW is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8524 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731_I2C is not set +# CONFIG_SND_SOC_WM8731_SPI is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8782 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8940 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8961 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_WSA881X is not set +# CONFIG_SND_SOC_WSA883X is not set +# CONFIG_SND_SOC_WSA884X is not set +# CONFIG_SND_SOC_ZL38060 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6357 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +CONFIG_SND_SOC_NAU8315=m +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +CONFIG_SND_SOC_NAU8821=m +# CONFIG_SND_SOC_NAU8822 is not set +CONFIG_SND_SOC_NAU8824=m +CONFIG_SND_SOC_NAU8825=m +# CONFIG_SND_SOC_NTP8918 is not set +# CONFIG_SND_SOC_NTP8835 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set +# end of CODEC drivers + +CONFIG_SND_SOC_SDW_UTILS=m +# CONFIG_SND_SIMPLE_CARD is not set +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m +CONFIG_SND_SYNTH_EMUX=m +CONFIG_SND_XEN_FRONTEND=m +CONFIG_SND_VIRTIO=m +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_ACCUTOUCH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +# CONFIG_HID_APPLETB_BL is not set +# CONFIG_HID_APPLETB_KBD is not set +CONFIG_HID_ASUS=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_BIGBEN_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CORSAIR=m +CONFIG_HID_COUGAR=m +CONFIG_HID_MACALLY=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_CMEDIA=m +CONFIG_HID_CP2112=m +CONFIG_HID_CREATIVE_SB0540=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELAN=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +# CONFIG_HID_EVISION is not set +CONFIG_HID_EZKEY=m +CONFIG_HID_FT260=m +CONFIG_HID_GEMBIRD=m +CONFIG_HID_GFRM=m +CONFIG_HID_GLORIOUS=m +CONFIG_HID_HOLTEK=m +CONFIG_HOLTEK_FF=y +CONFIG_HID_VIVALDI_COMMON=m +# CONFIG_HID_GOODIX_SPI is not set +CONFIG_HID_GOOGLE_HAMMER=m +# CONFIG_HID_GOOGLE_STADIA_FF is not set +CONFIG_HID_VIVALDI=m +CONFIG_HID_GT683R=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +# CONFIG_HID_KYSONA is not set +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_VIEWSONIC=m +# CONFIG_HID_VRC2 is not set +# CONFIG_HID_XIAOMI is not set +CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m +CONFIG_HID_ITE=m +CONFIG_HID_JABRA=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +# CONFIG_HID_LETSKETCH is not set +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MALTRON=m +CONFIG_HID_MAYFLASH=m +# CONFIG_HID_MEGAWORLD_FF is not set +CONFIG_HID_REDRAGON=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NINTENDO=m +CONFIG_NINTENDO_FF=y +CONFIG_HID_NTI=m +CONFIG_HID_NTRIG=m +# CONFIG_HID_NVIDIA_SHIELD is not set +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PLAYSTATION=m +CONFIG_PLAYSTATION_FF=y +# CONFIG_HID_PXRC is not set +# CONFIG_HID_RAZER is not set +CONFIG_HID_PRIMAX=m +CONFIG_HID_RETRODE=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SEMITEK=m +# CONFIG_HID_SIGMAMICRO is not set +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEAM=m +# CONFIG_STEAM_FF is not set +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_RMI=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_HYPERV_MOUSE=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +# CONFIG_HID_TOPRE is not set +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_UDRAW_PS3=m +CONFIG_HID_U2FZERO=m +# CONFIG_HID_UNIVERSAL_PIDFF is not set +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +# CONFIG_HID_WINWING is not set +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_ALPS=m +# CONFIG_HID_MCP2200 is not set +CONFIG_HID_MCP2221=m +# end of Special HID drivers + +# +# HID-BPF support +# +CONFIG_HID_BPF=y +# end of HID-BPF support + +CONFIG_I2C_HID=m +CONFIG_I2C_HID_ACPI=m +CONFIG_I2C_HID_OF=m +CONFIG_I2C_HID_CORE=m + +# +# Intel ISH HID support +# +CONFIG_INTEL_ISH_HID=m +# CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER is not set +# end of Intel ISH HID support + +# +# AMD SFH HID Support +# +CONFIG_AMD_SFH_HID=m +# end of AMD SFH HID Support + +# +# Surface System Aggregator Module HID support +# +CONFIG_SURFACE_HID=m +CONFIG_SURFACE_KBD=m +# end of Surface System Aggregator Module HID support + +CONFIG_SURFACE_HID_CORE=m + +# +# Intel THC HID Support +# +# CONFIG_INTEL_THC_HID is not set +# end of Intel THC HID Support + +# +# USB HID support +# +CONFIG_USB_HID=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +# end of USB HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_LED_TRIG=y +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_PCI_AMD=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_FEW_INIT_RETRIES is not set +CONFIG_USB_DYNAMIC_MINORS=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +CONFIG_USB_LEDS_TRIGGER_USBPORT=m +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_DEFAULT_AUTHORIZATION_MODE=1 +CONFIG_USB_MON=m + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PCI_RENESAS=m +CONFIG_USB_XHCI_PLATFORM=y +# CONFIG_USB_XHCI_SIDEBAND is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_SL811_HCD=m +# CONFIG_USB_SL811_HCD_ISO is not set +CONFIG_USB_SL811_CS=m +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HCD_TEST_MODE is not set +CONFIG_USB_XEN_HCD=m + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=y + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=15 +CONFIG_USBIP_VHCI_NR_HCS=8 +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m +# CONFIG_USBIP_DEBUG is not set + +# +# USB dual-mode controller drivers +# +# CONFIG_USB_CDNS_SUPPORT is not set +# CONFIG_USB_MUSB_HDRC is not set +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_DWC3_HAPS=m +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_XR=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_APPLE_MFI_FASTCHARGE=m +CONFIG_USB_LJCA=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_EZUSB_FX2=m +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +# +# USB Physical Layer drivers +# +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# end of USB Physical Layer drivers + +CONFIG_USB_GADGET=m +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +# CONFIG_U_SERIAL_CONSOLE is not set + +# +# USB Peripheral Controller +# +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +CONFIG_USB_NET2280=m +# CONFIG_USB_GOKU is not set +CONFIG_USB_EG20T=m +# CONFIG_USB_MAX3420_UDC is not set +# CONFIG_USB_CDNS2_UDC is not set +CONFIG_USB_DUMMY_HCD=m +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_F_ACM=m +CONFIG_USB_F_SS_LB=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_U_ETHER=m +CONFIG_USB_U_AUDIO=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_PHONET=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_FS=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_HID=m +CONFIG_USB_F_PRINTER=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_PHONET=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +# CONFIG_USB_CONFIGFS_F_TCM is not set + +# +# USB Gadget precomposed configurations +# +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_ETH_EEM is not set +# CONFIG_USB_G_NCM is not set +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_MASS_STORAGE=m +# CONFIG_USB_GADGET_TARGET is not set +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_NOKIA is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_RAW_GADGET is not set +# end of USB Gadget precomposed configurations + +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +# CONFIG_TYPEC_TCPCI is not set +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_WCOVE=m +CONFIG_TYPEC_UCSI=m +# CONFIG_UCSI_CCG is not set +CONFIG_UCSI_ACPI=m +# CONFIG_UCSI_STM32G0 is not set +CONFIG_CROS_EC_UCSI=m +CONFIG_TYPEC_TPS6598X=m +# CONFIG_TYPEC_ANX7411 is not set +# CONFIG_TYPEC_RT1719 is not set +# CONFIG_TYPEC_HD3SS3220 is not set +# CONFIG_TYPEC_STUSB160X is not set +# CONFIG_TYPEC_WUSB3801 is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +# CONFIG_TYPEC_MUX_FSA4480 is not set +# CONFIG_TYPEC_MUX_GPIO_SBU is not set +CONFIG_TYPEC_MUX_PI3USB30532=m +# CONFIG_TYPEC_MUX_INTEL_PMC is not set +# CONFIG_TYPEC_MUX_IT5205 is not set +# CONFIG_TYPEC_MUX_NB7VPQ904M is not set +# CONFIG_TYPEC_MUX_PS883X is not set +# CONFIG_TYPEC_MUX_PTN36502 is not set +# CONFIG_TYPEC_MUX_TUSB1046 is not set +# CONFIG_TYPEC_MUX_WCD939X_USBSS is not set +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +CONFIG_TYPEC_DP_ALTMODE=m +CONFIG_TYPEC_NVIDIA_ALTMODE=m +# CONFIG_TYPEC_TBT_ALTMODE is not set +# end of USB Type-C Alternate Mode drivers + +CONFIG_USB_ROLE_SWITCH=m +CONFIG_USB_ROLES_INTEL_XHCI=m +CONFIG_MMC=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_MINORS=256 +CONFIG_SDIO_UART=m +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_UHS2=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +# CONFIG_MMC_SDHCI_PLTFM is not set +CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m +# CONFIG_MMC_SPI is not set +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_USHC=m +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_CQHCI=m +# CONFIG_MMC_HSQ is not set +CONFIG_MMC_TOSHIBA_PCI=m +# CONFIG_MMC_MTK is not set +CONFIG_SCSI_UFSHCD=m +# CONFIG_SCSI_UFS_BSG is not set +# CONFIG_SCSI_UFS_HWMON is not set +CONFIG_SCSI_UFSHCD_PCI=m +# CONFIG_SCSI_UFS_DWC_TC_PCI is not set +# CONFIG_SCSI_UFSHCD_PLATFORM is not set +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m +# CONFIG_MS_BLOCK is not set + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +CONFIG_LEDS_CLASS_MULTICOLOR=m +CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y + +# +# LED drivers +# +CONFIG_LEDS_APU=m +# CONFIG_LEDS_AW200XX is not set +# CONFIG_LEDS_CHT_WCOVE is not set +CONFIG_LEDS_CROS_EC=m +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_LP3944=m +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP50XX is not set +CONFIG_LEDS_PCA955X=m +# CONFIG_LEDS_PCA955X_GPIO is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_PCA995X is not set +CONFIG_LEDS_DAC124S085=m +# CONFIG_LEDS_PWM is not set +CONFIG_LEDS_REGULATOR=m +# CONFIG_LEDS_BD2606MVV is not set +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_LT3593=m +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +CONFIG_LEDS_MENF21BMC=m +# CONFIG_LEDS_IS31FL319X is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_MLXCPLD is not set +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +# CONFIG_LEDS_NIC78BX is not set +# CONFIG_LEDS_SPI_BYTE is not set + +# +# Flash and Torch LED drivers +# + +# +# RGB LED drivers +# +# CONFIG_LEDS_KTD202X is not set +# CONFIG_LEDS_PWM_MULTICOLOR is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_ACTIVITY=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_LEDS_TRIGGER_NETDEV=m +CONFIG_LEDS_TRIGGER_PATTERN=m +# CONFIG_LEDS_TRIGGER_TTY is not set +CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m + +# +# Simatic LED drivers +# +CONFIG_LEDS_SIEMENS_SIMATIC_IPC=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_APOLLOLAKE=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_F7188X=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_ELKHARTLAKE=m +CONFIG_ACCESSIBILITY=y +CONFIG_A11Y_BRAILLE_CONSOLE=y + +# +# Speakup console speech +# +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +# end of Speakup console speech + +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y +CONFIG_INFINIBAND_VIRT_DMA=y +CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_CXGB4=m +# CONFIG_INFINIBAND_EFA is not set +# CONFIG_INFINIBAND_ERDMA is not set +CONFIG_INFINIBAND_HFI1=m +# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set +# CONFIG_SDMA_VERBOSITY is not set +CONFIG_INFINIBAND_IRDMA=m +CONFIG_MANA_INFINIBAND=m +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_INFINIBAND=m +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QEDR=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_USNIC=m +# CONFIG_INFINIBAND_VMWARE_PVRDMA is not set +CONFIG_INFINIBAND_RDMAVT=m +CONFIG_RDMA_RXE=m +# CONFIG_RDMA_SIW is not set +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_ISERT=m +# CONFIG_INFINIBAND_RTRS_CLIENT is not set +# CONFIG_INFINIBAND_RTRS_SERVER is not set +# CONFIG_INFINIBAND_OPA_VNIC is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +# CONFIG_EDAC_GHES is not set +# CONFIG_EDAC_SCRUB is not set +# CONFIG_EDAC_ECS is not set +# CONFIG_EDAC_MEM_REPAIR is not set +CONFIG_EDAC_AMD64=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_IE31200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_SKX=m +CONFIG_EDAC_I10NM=m +CONFIG_EDAC_PND2=m +CONFIG_EDAC_IGEN6=m +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_MAX31335 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8111 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD2405AL is not set +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX6110 is not set + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +CONFIG_RTC_DRV_CROS_EC=m + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_FTRTC010 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_RTC_DRV_GOLDFISH is not set +CONFIG_RTC_DRV_WILCO_EC=m +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DMA_ACPI=y +# CONFIG_ALTERA_MSGDMA is not set +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IDXD_BUS=m +CONFIG_INTEL_IDXD=m +# CONFIG_INTEL_IDXD_COMPAT is not set +CONFIG_INTEL_IDXD_SVM=y +CONFIG_INTEL_IDXD_PERFMON=y +CONFIG_INTEL_IOATDMA=m +# CONFIG_PLX_DMA is not set +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_XDMA is not set +# CONFIG_AMD_PTDMA is not set +# CONFIG_AMD_QDMA is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_PCI=m +# CONFIG_DW_EDMA is not set +CONFIG_HSU_DMA=y +# CONFIG_SF_PDMA is not set +# CONFIG_INTEL_LDMA is not set + +# +# DMA Clients +# +CONFIG_ASYNC_TX_DMA=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ENGINE_RAID=y + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +CONFIG_UDMABUF=y +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set +# CONFIG_DMABUF_SELFTESTS is not set +CONFIG_DMABUF_HEAPS=y +# CONFIG_DMABUF_SYSFS_STATS is not set +CONFIG_DMABUF_HEAPS_SYSTEM=y +# end of DMABUF options + +CONFIG_DCA=m +CONFIG_UIO=m +CONFIG_UIO_CIF=m +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_NETX=m +CONFIG_UIO_MF624=m +CONFIG_UIO_HV_GENERIC=m +CONFIG_VFIO=m +CONFIG_VFIO_GROUP=y +CONFIG_VFIO_CONTAINER=y +CONFIG_VFIO_IOMMU_TYPE1=m +# CONFIG_VFIO_NOIOMMU is not set +CONFIG_VFIO_VIRQFD=y +# CONFIG_VFIO_DEBUGFS is not set + +# +# VFIO support for PCI devices +# +CONFIG_VFIO_PCI_CORE=m +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PCI_IGD=y +# CONFIG_MLX5_VFIO_PCI is not set +# CONFIG_VIRTIO_VFIO_PCI is not set +# end of VFIO support for PCI devices + +CONFIG_VFIO_MDEV=m +CONFIG_IRQ_BYPASS_MANAGER=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VMGENID=y +CONFIG_VBOXGUEST=m +CONFIG_NITRO_ENCLAVES=m +# CONFIG_EFI_SECRET is not set +CONFIG_SEV_GUEST=m +CONFIG_TDX_GUEST_DRIVER=m +CONFIG_TSM_GUEST=y +CONFIG_TSM_REPORTS=m +CONFIG_TSM_MEASUREMENTS=y +CONFIG_VIRTIO_ANCHOR=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_PCI_LIB_LEGACY=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_ADMIN_LEGACY=y +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTIO_VDPA=m +CONFIG_VIRTIO_PMEM=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_MEM=m +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=m +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_DMA_SHARED_BUFFER=m +# CONFIG_VIRTIO_DEBUG is not set +# CONFIG_VIRTIO_RTC is not set +CONFIG_VDPA=m +# CONFIG_VDPA_SIM is not set +CONFIG_VDPA_USER=m +# CONFIG_IFCVF is not set +# CONFIG_MLX5_VDPA_NET is not set +# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set +# CONFIG_VP_VDPA is not set +# CONFIG_ALIBABA_ENI_VDPA is not set +# CONFIG_SNET_VDPA is not set +# CONFIG_OCTEONEP_VDPA is not set +CONFIG_VHOST_IOTLB=m +CONFIG_VHOST_TASK=y +CONFIG_VHOST=m +CONFIG_VHOST_MENU=y +CONFIG_VHOST_NET=m +CONFIG_VHOST_SCSI=m +CONFIG_VHOST_VSOCK=m +CONFIG_VHOST_VDPA=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set +CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y + +# +# Microsoft Hyper-V guest support +# +CONFIG_HYPERV=m +# CONFIG_HYPERV_VTL_MODE is not set +CONFIG_HYPERV_TIMER=y +CONFIG_HYPERV_UTILS=m +CONFIG_HYPERV_BALLOON=m +# CONFIG_MSHV_ROOT is not set +# end of Microsoft Hyper-V guest support + +# +# Xen driver support +# +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512 +CONFIG_XEN_SCRUB_PAGES_DEFAULT=y +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_BACKEND=y +CONFIG_XENFS=m +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +# CONFIG_XEN_GRANT_DMA_ALLOC is not set +CONFIG_SWIOTLB_XEN=y +CONFIG_XEN_PCI_STUB=y +CONFIG_XEN_PCIDEV_BACKEND=m +# CONFIG_XEN_PVCALLS_FRONTEND is not set +# CONFIG_XEN_PVCALLS_BACKEND is not set +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_ACPI_PROCESSOR=m +CONFIG_XEN_MCE_LOG=y +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_EFI=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_HAVE_VPMU=y +CONFIG_XEN_FRONT_PGDIR_SHBUF=m +CONFIG_XEN_UNPOPULATED_ALLOC=y +# CONFIG_XEN_VIRTIO is not set +# end of Xen driver support + +# CONFIG_GREYBUS is not set +CONFIG_COMEDI=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_ADDI_WATCHDOG=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7X3X=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1720=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=m +CONFIG_COMEDI_ADV_PCI1760=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_MF6X4=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_LABPC_PCI=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_MITE=m +CONFIG_COMEDI_NI_TIOCMD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_USB_DRIVERS=m +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMEDI_8254=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_NI_LABPC=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_NI_ROUTING=m +# CONFIG_COMEDI_TESTS is not set +CONFIG_STAGING=y +CONFIG_RTL8723BS=m + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD7816 is not set +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set +# end of Analog digital bi-direction converters + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set +# end of Network Analyzer, Impedance Converters +# end of IIO staging drivers + +# CONFIG_FB_SM750 is not set +CONFIG_STAGING_MEDIA=y +# CONFIG_INTEL_ATOMISP is not set +CONFIG_DVB_AV7110_IR=y +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_SP8870=m +CONFIG_VIDEO_IPU3_IMGU=m + +# +# StarFive media platform drivers +# +# CONFIG_STAGING_MEDIA_DEPRECATED is not set +# CONFIG_FB_TFT is not set +# CONFIG_VME_BUS is not set +# CONFIG_GPIB is not set +# CONFIG_GOLDFISH is not set +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_ACPI=m +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROMEOS_TBMC=m +CONFIG_CROS_EC=m +CONFIG_CROS_EC_I2C=m +CONFIG_CROS_EC_ISHTP=m +CONFIG_CROS_EC_SPI=m +# CONFIG_CROS_EC_UART is not set +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=m +CONFIG_CROS_KBD_LED_BACKLIGHT=m +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_LIGHTBAR=m +CONFIG_CROS_EC_DEBUGFS=m +CONFIG_CROS_EC_SENSORHUB=m +CONFIG_CROS_EC_SYSFS=m +CONFIG_CROS_EC_TYPEC_ALTMODES=y +CONFIG_CROS_EC_TYPEC=m +# CONFIG_CROS_HPS_I2C is not set +CONFIG_CROS_USBPD_LOGGER=m +CONFIG_CROS_USBPD_NOTIFY=m +CONFIG_CHROMEOS_PRIVACY_SCREEN=m +CONFIG_CROS_TYPEC_SWITCH=m +CONFIG_WILCO_EC=m +CONFIG_WILCO_EC_DEBUGFS=m +CONFIG_WILCO_EC_EVENTS=m +CONFIG_WILCO_EC_TELEMETRY=m +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_SURFACE_PLATFORMS=y +CONFIG_SURFACE3_WMI=m +CONFIG_SURFACE_3_POWER_OPREGION=m +CONFIG_SURFACE_ACPI_NOTIFY=m +# CONFIG_SURFACE_AGGREGATOR_CDEV is not set +# CONFIG_SURFACE_AGGREGATOR_HUB is not set +CONFIG_SURFACE_AGGREGATOR_REGISTRY=m +# CONFIG_SURFACE_AGGREGATOR_TABLET_SWITCH is not set +CONFIG_SURFACE_DTX=m +CONFIG_SURFACE_GPE=m +CONFIG_SURFACE_HOTPLUG=m +CONFIG_SURFACE_PLATFORM_PROFILE=m +CONFIG_SURFACE_PRO3_BUTTON=m +CONFIG_SURFACE_AGGREGATOR=m +CONFIG_SURFACE_AGGREGATOR_BUS=y +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACPI_WMI=m +CONFIG_WMI_BMOF=m +CONFIG_HUAWEI_WMI=m +CONFIG_MXM_WMI=m +CONFIG_NVIDIA_WMI_EC_BACKLIGHT=m +CONFIG_XIAOMI_WMI=m +CONFIG_GIGABYTE_WMI=m +# CONFIG_YOGABOOK is not set +# CONFIG_YT2_1380 is not set +CONFIG_ACERHDF=m +CONFIG_ACER_WIRELESS=m +CONFIG_ACER_WMI=m + +# +# AMD HSMP Driver +# +# CONFIG_AMD_HSMP_ACPI is not set +# CONFIG_AMD_HSMP_PLAT is not set +# end of AMD HSMP Driver + +CONFIG_AMD_PMF=m +# CONFIG_AMD_PMF_DEBUG is not set +CONFIG_AMD_PMC=m +CONFIG_AMD_MP2_STB=y +# CONFIG_AMD_3D_VCACHE is not set +# CONFIG_AMD_WBRF is not set +# CONFIG_AMD_ISP_PLATFORM is not set +# CONFIG_ADV_SWBUTTON is not set +CONFIG_APPLE_GMUX=m +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_WIRELESS=m +CONFIG_ASUS_WMI=m +CONFIG_ASUS_NB_WMI=m +# CONFIG_ASUS_TF103C_DOCK is not set +CONFIG_EEEPC_LAPTOP=m +CONFIG_EEEPC_WMI=m +CONFIG_X86_PLATFORM_DRIVERS_DELL=y +CONFIG_ALIENWARE_WMI=m +CONFIG_ALIENWARE_WMI_LEGACY=y +CONFIG_ALIENWARE_WMI_WMAX=y +CONFIG_DCDBAS=m +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_RBU=m +CONFIG_DELL_RBTN=m +CONFIG_DELL_PC=m +CONFIG_DELL_SMBIOS=m +CONFIG_DELL_SMBIOS_WMI=y +CONFIG_DELL_SMBIOS_SMM=y +CONFIG_DELL_SMO8800=m +# CONFIG_DELL_UART_BACKLIGHT is not set +CONFIG_DELL_WMI=m +# CONFIG_DELL_WMI_PRIVACY is not set +CONFIG_DELL_WMI_AIO=m +CONFIG_DELL_WMI_DESCRIPTOR=m +CONFIG_DELL_WMI_DDV=m +CONFIG_DELL_WMI_LED=m +CONFIG_DELL_WMI_SYSMAN=m +CONFIG_AMILO_RFKILL=m +CONFIG_FUJITSU_LAPTOP=m +CONFIG_FUJITSU_TABLET=m +CONFIG_GPD_POCKET_FAN=m +CONFIG_X86_PLATFORM_DRIVERS_HP=y +CONFIG_HP_ACCEL=m +CONFIG_HP_WMI=m +CONFIG_HP_BIOSCFG=m +# CONFIG_WIRELESS_HOTKEY is not set +CONFIG_IBM_RTL=m +CONFIG_IDEAPAD_LAPTOP=m +# CONFIG_LENOVO_WMI_HOTKEY_UTILITIES is not set +CONFIG_LENOVO_YMC=m +CONFIG_SENSORS_HDAPS=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_THINKPAD_LMI=m +CONFIG_INTEL_ATOMISP2_PDX86=y +# CONFIG_INTEL_ATOMISP2_LED is not set +CONFIG_INTEL_ATOMISP2_PM=m +CONFIG_INTEL_IFS=m +# CONFIG_INTEL_SAR_INT1092 is not set +CONFIG_INTEL_SKL_INT3472=m +CONFIG_INTEL_PMC_CORE=m +CONFIG_INTEL_PMC_SSRAM_TELEMETRY=m +CONFIG_INTEL_PMT_CLASS=m +CONFIG_INTEL_PMT_TELEMETRY=m +CONFIG_INTEL_PMT_CRASHLOG=m + +# +# Intel Speed Select Technology interface support +# +CONFIG_INTEL_SPEED_SELECT_TPMI=m +CONFIG_INTEL_SPEED_SELECT_INTERFACE=m +# end of Intel Speed Select Technology interface support + +CONFIG_INTEL_WMI=y +# CONFIG_INTEL_WMI_SBL_FW_UPDATE is not set +CONFIG_INTEL_WMI_THUNDERBOLT=m + +# +# Intel Uncore Frequency Control +# +CONFIG_INTEL_UNCORE_FREQ_CONTROL_TPMI=m +CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +# end of Intel Uncore Frequency Control + +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_INT0002_VGPIO=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_BXTWC_PMIC_TMU=m +# CONFIG_INTEL_BYTCRC_PWRSRC is not set +# CONFIG_INTEL_CHTDC_TI_PWRBTN is not set +CONFIG_INTEL_CHTWC_INT33FE=m +# CONFIG_INTEL_ISHTP_ECLITE is not set +# CONFIG_INTEL_PUNIT_IPC is not set +CONFIG_INTEL_RST=m +CONFIG_INTEL_SDSI=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_TPMI_POWER_DOMAINS=m +CONFIG_INTEL_TPMI=m +# CONFIG_INTEL_PLR_TPMI is not set +CONFIG_INTEL_TURBO_MAX_3=y +CONFIG_INTEL_VSEC=m +# CONFIG_ACPI_QUICKSTART is not set +# CONFIG_MEEGOPAD_ANX7428 is not set +CONFIG_MSI_EC=m +CONFIG_MSI_LAPTOP=m +CONFIG_MSI_WMI=m +# CONFIG_MSI_WMI_PLATFORM is not set +CONFIG_PCENGINES_APU2=m +# CONFIG_PORTWELL_EC is not set +# CONFIG_BARCO_P50_GPIO is not set +CONFIG_SAMSUNG_GALAXYBOOK=m +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_SAMSUNG_Q10=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_HAPS=m +CONFIG_TOSHIBA_WMI=m +CONFIG_ACPI_CMPC=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_LG_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SYSTEM76_ACPI=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_SERIAL_MULTI_INSTANTIATE=m +CONFIG_TOUCHSCREEN_DMI=y +# CONFIG_INSPUR_PLATFORM_PROFILE is not set +# CONFIG_LENOVO_WMI_CAMERA is not set +# CONFIG_DASHARO_ACPI is not set +CONFIG_X86_ANDROID_TABLETS=m +CONFIG_FW_ATTR_CLASS=m +CONFIG_INTEL_IPS=m +CONFIG_INTEL_SCU_IPC=y +# CONFIG_INTEL_SCU_PCI is not set +# CONFIG_INTEL_SCU_PLATFORM is not set +CONFIG_SIEMENS_SIMATIC_IPC=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT_F7188X=m +# CONFIG_SILICOM_PLATFORM is not set +# CONFIG_WINMATE_FM07_KEYS is not set +# CONFIG_SEL3350_PLATFORM is not set +# CONFIG_OXP_EC is not set +# CONFIG_TUXEDO_NB04_WMI_AB is not set +CONFIG_P2SB=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_LMK04832 is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_COMMON_CLK_SI5341 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_TPS68470 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_COMMON_CLK_PWM is not set +# CONFIG_XILINX_VCU is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKEVT_I8253=y +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +# end of Clock Source drivers + +CONFIG_MAILBOX=y +CONFIG_PCC=y +# CONFIG_ALTERA_MBOX is not set +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IO_PGTABLE=y +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set +CONFIG_IOMMU_DEFAULT_DMA_LAZY=y +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_DMA=y +CONFIG_IOMMU_SVA=y +CONFIG_IOMMU_IOPF=y +CONFIG_AMD_IOMMU=y +CONFIG_DMAR_TABLE=y +CONFIG_INTEL_IOMMU=y +CONFIG_INTEL_IOMMU_SVM=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y +CONFIG_INTEL_IOMMU_PERF_EVENTS=y +# CONFIG_IOMMUFD is not set +CONFIG_IRQ_REMAP=y +CONFIG_HYPERV_IOMMU=y +CONFIG_VIRTIO_IOMMU=m + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +CONFIG_SOUNDWIRE=m + +# +# SoundWire Devices +# +# CONFIG_SOUNDWIRE_AMD is not set +CONFIG_SOUNDWIRE_CADENCE=m +CONFIG_SOUNDWIRE_INTEL=m +CONFIG_SOUNDWIRE_QCOM=m +CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# fujitsu SoC drivers +# +# end of fujitsu SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# end of Enable LiteX SoC Builder specific drivers + +# CONFIG_WPCM450_SOC is not set + +# +# Qualcomm SoC drivers +# +CONFIG_QCOM_QMI_HELPERS=m +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# +# PM Domains +# + +# +# Amlogic PM Domains +# +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains +# end of PM Domains + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m +# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set +# CONFIG_DEVFREQ_GOV_POWERSAVE is not set +# CONFIG_DEVFREQ_GOV_USERSPACE is not set +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_EXTCON=m + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +CONFIG_EXTCON_AXP288=m +# CONFIG_EXTCON_FSA9480 is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_INTEL_INT3496 is not set +CONFIG_EXTCON_INTEL_CHT_WC=m +# CONFIG_EXTCON_LC824206XA is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +CONFIG_EXTCON_USBC_CROS_EC=m +# CONFIG_EXTCON_USBC_TUSB320 is not set +CONFIG_MEMORY=y +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_BUFFER_CB is not set +CONFIG_IIO_BUFFER_DMA=m +CONFIG_IIO_BUFFER_DMAENGINE=m +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_TRIGGERED_BUFFER=m +CONFIG_IIO_CONFIGFS=m +CONFIG_IIO_GTS_HELPER=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +CONFIG_IIO_SW_TRIGGER=m +CONFIG_IIO_TRIGGERED_EVENT=m +CONFIG_IIO_BACKEND=m + +# +# Accelerometers +# +CONFIG_ADIS16201=m +CONFIG_ADIS16209=m +# CONFIG_ADXL313_I2C is not set +# CONFIG_ADXL313_SPI is not set +CONFIG_ADXL345=m +CONFIG_ADXL345_I2C=m +CONFIG_ADXL345_SPI=m +# CONFIG_ADXL355_I2C is not set +# CONFIG_ADXL355_SPI is not set +# CONFIG_ADXL367_SPI is not set +# CONFIG_ADXL367_I2C is not set +CONFIG_ADXL372=m +CONFIG_ADXL372_SPI=m +CONFIG_ADXL372_I2C=m +# CONFIG_ADXL380_SPI is not set +# CONFIG_ADXL380_I2C is not set +CONFIG_BMA180=m +CONFIG_BMA220=m +CONFIG_BMA400=m +CONFIG_BMA400_I2C=m +CONFIG_BMA400_SPI=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_ACCEL_I2C=m +CONFIG_BMC150_ACCEL_SPI=m +# CONFIG_BMI088_ACCEL is not set +CONFIG_DA280=m +CONFIG_DA311=m +# CONFIG_DMARD06 is not set +CONFIG_DMARD09=m +CONFIG_DMARD10=m +# CONFIG_FXLS8962AF_I2C is not set +# CONFIG_FXLS8962AF_SPI is not set +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m +CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +# CONFIG_IIO_KX022A_SPI is not set +# CONFIG_IIO_KX022A_I2C is not set +CONFIG_KXSD9=m +CONFIG_KXSD9_SPI=m +CONFIG_KXSD9_I2C=m +CONFIG_KXCJK1013=m +CONFIG_MC3230=m +CONFIG_MMA7455=m +CONFIG_MMA7455_I2C=m +CONFIG_MMA7455_SPI=m +CONFIG_MMA7660=m +CONFIG_MMA8452=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m +# CONFIG_MSA311 is not set +CONFIG_MXC4005=m +CONFIG_MXC6255=m +CONFIG_SCA3000=m +# CONFIG_SCA3300 is not set +CONFIG_STK8312=m +CONFIG_STK8BA50=m +# end of Accelerometers + +# +# Analog to digital converters +# +CONFIG_AD_SIGMA_DELTA=m +# CONFIG_AD4000 is not set +# CONFIG_AD4030 is not set +# CONFIG_AD4130 is not set +# CONFIG_AD4695 is not set +# CONFIG_AD4851 is not set +CONFIG_AD7091R=m +CONFIG_AD7091R5=m +# CONFIG_AD7091R8 is not set +CONFIG_AD7124=m +# CONFIG_AD7173 is not set +# CONFIG_AD7191 is not set +CONFIG_AD7192=m +CONFIG_AD7266=m +# CONFIG_AD7280 is not set +CONFIG_AD7291=m +CONFIG_AD7292=m +CONFIG_AD7298=m +# CONFIG_AD7380 is not set +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +# CONFIG_AD7625 is not set +CONFIG_AD7766=m +CONFIG_AD7768_1=m +# CONFIG_AD7779 is not set +CONFIG_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7887=m +CONFIG_AD7923=m +# CONFIG_AD7944 is not set +CONFIG_AD7949=m +CONFIG_AD799X=m +CONFIG_AD9467=m +CONFIG_AXP20X_ADC=m +CONFIG_AXP288_ADC=m +CONFIG_CC10001_ADC=m +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_GEHC_PMC_ADC is not set +CONFIG_HI8435=m +CONFIG_HX711=m +CONFIG_INA2XX_ADC=m +# CONFIG_LTC2309 is not set +CONFIG_LTC2471=m +CONFIG_LTC2485=m +CONFIG_LTC2496=m +CONFIG_LTC2497=m +CONFIG_MAX1027=m +CONFIG_MAX11100=m +CONFIG_MAX1118=m +# CONFIG_MAX11205 is not set +# CONFIG_MAX11410 is not set +CONFIG_MAX1241=m +CONFIG_MAX1363=m +# CONFIG_MAX34408 is not set +CONFIG_MAX9611=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m +# CONFIG_MCP3564 is not set +CONFIG_MCP3911=m +CONFIG_NAU7802=m +# CONFIG_NCT7201 is not set +# CONFIG_PAC1921 is not set +# CONFIG_PAC1934 is not set +# CONFIG_ROHM_BD79124 is not set +# CONFIG_RICHTEK_RTQ6056 is not set +# CONFIG_SD_ADC_MODULATOR is not set +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC0832=m +CONFIG_TI_ADC084S021=m +CONFIG_TI_ADC108S102=m +CONFIG_TI_ADC12138=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_ADC161S626=m +CONFIG_TI_ADS1015=m +# CONFIG_TI_ADS1100 is not set +# CONFIG_TI_ADS1119 is not set +# CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_ADS1298 is not set +# CONFIG_TI_ADS131E08 is not set +# CONFIG_TI_ADS7138 is not set +# CONFIG_TI_ADS7924 is not set +CONFIG_TI_ADS7950=m +# CONFIG_TI_ADS8344 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_LMP92064 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_TI_TSC2046 is not set +# CONFIG_VF610_ADC is not set +CONFIG_VIPERBOARD_ADC=m +# CONFIG_XILINX_XADC is not set +# end of Analog to digital converters + +# +# Analog to digital and digital to analog converters +# +# CONFIG_AD74115 is not set +# CONFIG_AD74413R is not set +# end of Analog to digital and digital to analog converters + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +# CONFIG_ADA4250 is not set +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters + +# +# Chemical Sensors +# +# CONFIG_AOSONG_AGS02MA is not set +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_ENS160 is not set +# CONFIG_IAQCORE is not set +# CONFIG_MHZ19B is not set +# CONFIG_PMS7003 is not set +# CONFIG_SCD30_CORE is not set +# CONFIG_SCD4X is not set +# CONFIG_SEN0322 is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SENSIRION_SGP40 is not set +# CONFIG_SPS30_I2C is not set +# CONFIG_SPS30_SERIAL is not set +# CONFIG_SENSEAIR_SUNRISE_CO2 is not set +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +CONFIG_IIO_CROS_EC_SENSORS_CORE=m +CONFIG_IIO_CROS_EC_SENSORS=m +CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE=m + +# +# Hid Sensor IIO Common +# +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +# end of Hid Sensor IIO Common + +CONFIG_IIO_INV_SENSORS_TIMESTAMP=m +CONFIG_IIO_MS_SENSORS_I2C=m + +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +CONFIG_IIO_ST_SENSORS_I2C=m +CONFIG_IIO_ST_SENSORS_SPI=m +CONFIG_IIO_ST_SENSORS_CORE=m + +# +# Digital to analog converters +# +# CONFIG_AD3530R is not set +# CONFIG_AD3552R_HS is not set +# CONFIG_AD3552R is not set +CONFIG_AD5064=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5592R_BASE=m +CONFIG_AD5592R=m +CONFIG_AD5593R=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +# CONFIG_AD9739A is not set +# CONFIG_LTC2688 is not set +CONFIG_AD5686=m +CONFIG_AD5686_SPI=m +CONFIG_AD5696_I2C=m +CONFIG_AD5755=m +CONFIG_AD5758=m +CONFIG_AD5761=m +CONFIG_AD5764=m +# CONFIG_AD5766 is not set +CONFIG_AD5770R=m +CONFIG_AD5791=m +# CONFIG_AD7293 is not set +CONFIG_AD7303=m +# CONFIG_AD8460 is not set +CONFIG_AD8801=m +# CONFIG_BD79703 is not set +# CONFIG_DPOT_DAC is not set +CONFIG_DS4424=m +CONFIG_LTC1660=m +CONFIG_LTC2632=m +# CONFIG_LTC2664 is not set +CONFIG_M62332=m +CONFIG_MAX517=m +# CONFIG_MAX5522 is not set +# CONFIG_MAX5821 is not set +CONFIG_MCP4725=m +# CONFIG_MCP4728 is not set +# CONFIG_MCP4821 is not set +CONFIG_MCP4922=m +CONFIG_TI_DAC082S085=m +CONFIG_TI_DAC5571=m +CONFIG_TI_DAC7311=m +CONFIG_TI_DAC7612=m +# CONFIG_VF610_DAC is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# end of IIO dummy driver + +# +# Filters +# +# CONFIG_ADMV8818 is not set +# end of Filters + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +# CONFIG_ADF4371 is not set +# CONFIG_ADF4377 is not set +# CONFIG_ADMFM2000 is not set +# CONFIG_ADMV1013 is not set +# CONFIG_ADMV1014 is not set +# CONFIG_ADMV4420 is not set +# CONFIG_ADRF6780 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16260=m +CONFIG_ADXRS290=m +CONFIG_ADXRS450=m +CONFIG_BMG160=m +CONFIG_BMG160_I2C=m +CONFIG_BMG160_SPI=m +CONFIG_FXAS21002C=m +CONFIG_FXAS21002C_I2C=m +CONFIG_FXAS21002C_SPI=m +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_MPU3050=m +CONFIG_MPU3050_I2C=m +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_IIO_ST_GYRO_I2C_3AXIS=m +CONFIG_IIO_ST_GYRO_SPI_3AXIS=m +CONFIG_ITG3200=m +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_ENS210 is not set +# CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set +# CONFIG_HDC3020 is not set +# CONFIG_HID_SENSOR_HUMIDITY is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +CONFIG_ADIS16460=m +CONFIG_ADIS16475=m +CONFIG_ADIS16480=m +# CONFIG_ADIS16550 is not set +CONFIG_BMI160=m +CONFIG_BMI160_I2C=m +CONFIG_BMI160_SPI=m +# CONFIG_BMI270_I2C is not set +# CONFIG_BMI270_SPI is not set +# CONFIG_BMI323_I2C is not set +# CONFIG_BMI323_SPI is not set +# CONFIG_BOSCH_BNO055_SERIAL is not set +# CONFIG_BOSCH_BNO055_I2C is not set +CONFIG_FXOS8700=m +CONFIG_FXOS8700_I2C=m +CONFIG_FXOS8700_SPI=m +CONFIG_KMX61=m +CONFIG_INV_ICM42600=m +CONFIG_INV_ICM42600_I2C=m +CONFIG_INV_ICM42600_SPI=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_INV_MPU6050_I2C=m +CONFIG_INV_MPU6050_SPI=m +# CONFIG_SMI240 is not set +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_ST_LSM6DSX_I2C=m +CONFIG_IIO_ST_LSM6DSX_SPI=m +# CONFIG_IIO_ST_LSM9DS0 is not set +# end of Inertial measurement units + +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y + +# +# Light sensors +# +CONFIG_ACPI_ALS=m +CONFIG_ADJD_S311=m +CONFIG_ADUX1020=m +# CONFIG_AL3000A is not set +CONFIG_AL3010=m +CONFIG_AL3320A=m +# CONFIG_APDS9160 is not set +CONFIG_APDS9300=m +# CONFIG_APDS9306 is not set +CONFIG_APDS9960=m +CONFIG_AS73211=m +# CONFIG_BH1745 is not set +CONFIG_BH1750=m +CONFIG_BH1780=m +CONFIG_CM32181=m +CONFIG_CM3232=m +CONFIG_CM3323=m +# CONFIG_CM3605 is not set +CONFIG_CM36651=m +CONFIG_IIO_CROS_EC_LIGHT_PROX=m +CONFIG_GP2AP002=m +CONFIG_GP2AP020A00F=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_ISL29125=m +# CONFIG_ISL76682 is not set +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_PROX=m +CONFIG_JSA1212=m +# CONFIG_ROHM_BU27034 is not set +CONFIG_RPR0521=m +# CONFIG_LTR390 is not set +CONFIG_LTR501=m +# CONFIG_LTRF216A is not set +CONFIG_LV0104CS=m +CONFIG_MAX44000=m +CONFIG_MAX44009=m +CONFIG_NOA1305=m +CONFIG_OPT3001=m +# CONFIG_OPT4001 is not set +# CONFIG_OPT4060 is not set +CONFIG_PA12203001=m +CONFIG_SI1133=m +CONFIG_SI1145=m +CONFIG_STK3310=m +CONFIG_ST_UVIS25=m +CONFIG_ST_UVIS25_I2C=m +CONFIG_ST_UVIS25_SPI=m +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_SENSORS_TSL2563=m +CONFIG_TSL2583=m +# CONFIG_TSL2591 is not set +CONFIG_TSL2772=m +CONFIG_TSL4531=m +CONFIG_US5182D=m +CONFIG_VCNL4000=m +CONFIG_VCNL4035=m +# CONFIG_VEML3235 is not set +CONFIG_VEML6030=m +# CONFIG_VEML6040 is not set +CONFIG_VEML6070=m +# CONFIG_VEML6075 is not set +CONFIG_VL6180=m +CONFIG_ZOPT2201=m +# end of Light sensors + +# +# Magnetometer sensors +# +# CONFIG_AK8974 is not set +CONFIG_AK8975=m +CONFIG_AK09911=m +# CONFIG_ALS31300 is not set +CONFIG_BMC150_MAGN=m +CONFIG_BMC150_MAGN_I2C=m +CONFIG_BMC150_MAGN_SPI=m +CONFIG_MAG3110=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_ST_MAGN_I2C_3AXIS=m +CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_RM3100=m +CONFIG_SENSORS_RM3100_I2C=m +CONFIG_SENSORS_RM3100_SPI=m +# CONFIG_SI7210 is not set +# CONFIG_TI_TMAG5273 is not set +# CONFIG_YAMAHA_YAS530 is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set +# end of Multiplexers + +# +# Inclinometer sensors +# +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +# end of Inclinometer sensors + +# +# Triggers - standalone +# +CONFIG_IIO_HRTIMER_TRIGGER=m +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set +CONFIG_IIO_SYSFS_TRIGGER=m +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +# CONFIG_AD5110 is not set +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5432 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set +# CONFIG_TPL0102 is not set +# CONFIG_X9250 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +CONFIG_ABP060MG=m +# CONFIG_ROHM_BM1390 is not set +CONFIG_BMP280=m +CONFIG_BMP280_I2C=m +CONFIG_BMP280_SPI=m +CONFIG_IIO_CROS_EC_BARO=m +CONFIG_DLHL60D=m +CONFIG_DPS310=m +CONFIG_HID_SENSOR_PRESS=m +CONFIG_HP03=m +# CONFIG_HSC030PA is not set +CONFIG_ICP10100=m +CONFIG_MPL115=m +CONFIG_MPL115_I2C=m +CONFIG_MPL115_SPI=m +CONFIG_MPL3115=m +# CONFIG_MPRLS0025PA is not set +CONFIG_MS5611=m +# CONFIG_MS5611_I2C is not set +# CONFIG_MS5611_SPI is not set +CONFIG_MS5637=m +# CONFIG_SDP500 is not set +CONFIG_IIO_ST_PRESS=m +CONFIG_IIO_ST_PRESS_I2C=m +CONFIG_IIO_ST_PRESS_SPI=m +CONFIG_T5403=m +CONFIG_HP206C=m +CONFIG_ZPA2326=m +CONFIG_ZPA2326_I2C=m +CONFIG_ZPA2326_SPI=m +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_CROS_EC_MKBP_PROXIMITY is not set +# CONFIG_HX9023S is not set +# CONFIG_IRSD200 is not set +CONFIG_ISL29501=m +CONFIG_LIDAR_LITE_V2=m +CONFIG_MB1232=m +CONFIG_PING=m +CONFIG_RFD77402=m +CONFIG_SRF04=m +CONFIG_SX_COMMON=m +CONFIG_SX9310=m +# CONFIG_SX9324 is not set +# CONFIG_SX9360 is not set +# CONFIG_SX9500 is not set +CONFIG_SRF08=m +CONFIG_VCNL3020=m +CONFIG_VL53L0X_I2C=m +# CONFIG_AW96103 is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +CONFIG_LTC2983=m +CONFIG_MAXIM_THERMOCOUPLE=m +CONFIG_HID_SENSOR_TEMP=m +CONFIG_MLX90614=m +CONFIG_MLX90632=m +# CONFIG_MLX90635 is not set +CONFIG_TMP006=m +CONFIG_TMP007=m +# CONFIG_TMP117 is not set +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +# CONFIG_MAX30208 is not set +CONFIG_MAX31856=m +# CONFIG_MAX31865 is not set +# CONFIG_MCP9600 is not set +# end of Temperature sensors + +# CONFIG_NTB is not set +CONFIG_PWM=y +# CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_CLK is not set +CONFIG_PWM_CRC=y +CONFIG_PWM_CROS_EC=m +# CONFIG_PWM_DWC is not set +# CONFIG_PWM_GPIO is not set +CONFIG_PWM_LPSS=m +# CONFIG_PWM_LPSS_PCI is not set +CONFIG_PWM_LPSS_PLATFORM=m +# CONFIG_PWM_PCA9685 is not set + +# +# IRQ chip support +# +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_GPIO is not set +# CONFIG_RESET_SIMPLE is not set +# CONFIG_RESET_TI_SYSCON is not set +# CONFIG_RESET_TI_TPS380X is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +# CONFIG_USB_LGM_PHY is not set +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_INTEL_LGM_EMMC is not set +# end of PHY Subsystem + +CONFIG_POWERCAP=y +CONFIG_INTEL_RAPL_CORE=m +CONFIG_INTEL_RAPL=m +CONFIG_INTEL_RAPL_TPMI=m +CONFIG_IDLE_INJECT=y +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_DWC_PCIE_PMU is not set +# CONFIG_CXL_PMU is not set +# end of Performance monitor support + +CONFIG_RAS=y +CONFIG_RAS_CEC=y +# CONFIG_RAS_CEC_DEBUG is not set +CONFIG_AMD_ATL=m +CONFIG_AMD_ATL_PRM=y +CONFIG_RAS_FMPM=m +CONFIG_USB4=m +# CONFIG_USB4_DEBUGFS_WRITE is not set +# CONFIG_USB4_DMA_TEST is not set + +# +# Android +# +# CONFIG_ANDROID_BINDER_IPC is not set +# end of Android + +CONFIG_LIBNVDIMM=m +CONFIG_BLK_DEV_PMEM=m +CONFIG_ND_CLAIM=y +CONFIG_ND_BTT=m +CONFIG_BTT=y +CONFIG_ND_PFN=m +CONFIG_NVDIMM_PFN=y +CONFIG_NVDIMM_DAX=y +CONFIG_NVDIMM_KEYS=y +# CONFIG_NVDIMM_SECURITY_TEST is not set +CONFIG_DAX=y +CONFIG_DEV_DAX=m +CONFIG_DEV_DAX_PMEM=m +CONFIG_DEV_DAX_HMEM=m +CONFIG_DEV_DAX_CXL=m +CONFIG_DEV_DAX_HMEM_DEVICES=y +CONFIG_DEV_DAX_KMEM=m +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +# CONFIG_NVMEM_LAYOUTS is not set +# CONFIG_NVMEM_RMEM is not set + +# +# HW tracing support +# +CONFIG_STM=m +CONFIG_STM_PROTO_BASIC=m +CONFIG_STM_PROTO_SYS_T=m +CONFIG_STM_DUMMY=m +CONFIG_STM_SOURCE_CONSOLE=m +CONFIG_STM_SOURCE_HEARTBEAT=m +CONFIG_STM_SOURCE_FTRACE=m +CONFIG_INTEL_TH=m +CONFIG_INTEL_TH_PCI=m +CONFIG_INTEL_TH_ACPI=m +CONFIG_INTEL_TH_GTH=m +CONFIG_INTEL_TH_STH=m +CONFIG_INTEL_TH_MSU=m +CONFIG_INTEL_TH_PTI=m +# CONFIG_INTEL_TH_DEBUG is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +CONFIG_TEE=m +CONFIG_AMDTEE=m +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +CONFIG_SLIMBUS=m +# CONFIG_SLIM_QCOM_CTRL is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_PECI is not set +# CONFIG_HTE is not set +CONFIG_DPLL=y +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_FS_STACK=y +CONFIG_BUFFER_HEAD=y +CONFIG_LEGACY_DIRECT_IO=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +CONFIG_XFS_FS=m +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_SUPPORT_ASCII_CI=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_EXPERIMENTAL is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=m +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +# CONFIG_F2FS_CHECK_FS is not set +# CONFIG_F2FS_FAULT_INJECTION is not set +CONFIG_F2FS_FS_COMPRESSION=y +CONFIG_F2FS_FS_LZO=y +CONFIG_F2FS_FS_LZORLE=y +CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_LZ4HC=y +CONFIG_F2FS_FS_ZSTD=y +CONFIG_F2FS_IOSTAT=y +# CONFIG_F2FS_UNFAIR_RWSEM is not set +CONFIG_BCACHEFS_FS=m +CONFIG_BCACHEFS_QUOTA=y +# CONFIG_BCACHEFS_ERASURE_CODING is not set +CONFIG_BCACHEFS_POSIX_ACL=y +# CONFIG_BCACHEFS_DEBUG is not set +# CONFIG_BCACHEFS_TESTS is not set +# CONFIG_BCACHEFS_LOCK_TIME_STATS is not set +# CONFIG_BCACHEFS_NO_LATENCY_ACCT is not set +CONFIG_BCACHEFS_SIX_OPTIMISTIC_SPIN=y +# CONFIG_BCACHEFS_PATH_TRACEPOINTS is not set +# CONFIG_BCACHEFS_TRANS_KMALLOC_TRACE is not set +# CONFIG_BCACHEFS_ASYNC_OBJECT_LISTS is not set +CONFIG_ZONEFS_FS=m +CONFIG_FS_DAX=y +CONFIG_FS_DAX_PMD=y +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +CONFIG_EXPORTFS_BLOCK_OPS=y +CONFIG_FILE_LOCKING=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +CONFIG_FS_VERITY=y +CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_FUSE_FS=y +CONFIG_CUSE=m +CONFIG_VIRTIO_FS=y +CONFIG_FUSE_DAX=y +CONFIG_FUSE_PASSTHROUGH=y +CONFIG_FUSE_IO_URING=y +CONFIG_OVERLAY_FS=m +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set + +# +# Caches +# +CONFIG_NETFS_SUPPORT=m +CONFIG_NETFS_STATS=y +# CONFIG_NETFS_DEBUG is not set +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_ERROR_INJECTION is not set +# CONFIG_CACHEFILES_ONDEMAND is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_FAT_DEFAULT_UTF8=y +CONFIG_EXFAT_FS=m +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +CONFIG_NTFS3_FS=m +# CONFIG_NTFS3_64BIT_CLUSTER is not set +# CONFIG_NTFS3_LZX_XPRESS is not set +# CONFIG_NTFS3_FS_POSIX_ACL is not set +# CONFIG_NTFS_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_PID_ARCH_STATUS=y +CONFIG_PROC_CPU_RESCTRL=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TMPFS_INODE64=y +# CONFIG_TMPFS_QUOTA is not set +CONFIG_HUGETLBFS=y +# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y +CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=m +CONFIG_EFIVAR_FS=m +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ORANGEFS_FS=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +CONFIG_UBIFS_FS=m +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_SECURITY=y +# CONFIG_UBIFS_FS_AUTHENTICATION is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set +CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU=y +CONFIG_SQUASHFS_XATTR=y +# CONFIG_SQUASHFS_COMP_CACHE_FULL is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_RESCTRL_FS=y +CONFIG_RESCTRL_FS_PSEUDO_LOCK=y +CONFIG_ROMFS_FS=m +# CONFIG_ROMFS_BACKED_BY_BLOCK is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_BACKED_BY_BOTH=y +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROMFS_ON_MTD=y +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_COMPRESS=y +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PSTORE_ZONE=m +CONFIG_PSTORE_BLK=m +CONFIG_PSTORE_BLK_BLKDEV="" +CONFIG_PSTORE_BLK_KMSG_SIZE=64 +CONFIG_PSTORE_BLK_MAX_REASON=2 +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_UFS_DEBUG is not set +CONFIG_EROFS_FS=m +# CONFIG_EROFS_FS_DEBUG is not set +CONFIG_EROFS_FS_XATTR=y +CONFIG_EROFS_FS_POSIX_ACL=y +CONFIG_EROFS_FS_SECURITY=y +CONFIG_EROFS_FS_BACKED_BY_FILE=y +CONFIG_EROFS_FS_ZIP=y +CONFIG_EROFS_FS_ZIP_LZMA=y +CONFIG_EROFS_FS_ZIP_DEFLATE=y +CONFIG_EROFS_FS_ZIP_ZSTD=y +# CONFIG_EROFS_FS_ZIP_ACCEL is not set +# CONFIG_EROFS_FS_ONDEMAND is not set +# CONFIG_EROFS_FS_PCPU_KTHREAD is not set +CONFIG_VBOXSF_FS=m +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +# CONFIG_NFS_V4_1_MIGRATION is not set +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_NFS_FSCACHE=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +CONFIG_NFS_V4_2_READ_PLUS=y +CONFIG_NFSD=m +# CONFIG_NFSD_V2 is not set +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_PNFS=y +CONFIG_NFSD_BLOCKLAYOUT=y +# CONFIG_NFSD_SCSILAYOUT is not set +# CONFIG_NFSD_FLEXFILELAYOUT is not set +# CONFIG_NFSD_V4_2_INTER_SSC is not set +CONFIG_NFSD_V4_SECURITY_LABEL=y +# CONFIG_NFSD_LEGACY_CLIENT_TRACKING is not set +# CONFIG_NFSD_V4_DELEG_TIMESTAMPS is not set +CONFIG_GRACE_PERIOD=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +# CONFIG_NFS_LOCALIO is not set +CONFIG_NFS_V4_2_SSC_HELPER=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y +# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA is not set +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +# CONFIG_CEPH_FS_SECURITY_LABEL is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set +CONFIG_CIFS_DFS_UPCALL=y +# CONFIG_CIFS_SWN_UPCALL is not set +# CONFIG_CIFS_SMB_DIRECT is not set +CONFIG_CIFS_FSCACHE=y +# CONFIG_CIFS_COMPRESSION is not set +CONFIG_SMB_SERVER=m +# CONFIG_SMB_SERVER_SMBDIRECT is not set +CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y +CONFIG_SMB_SERVER_KERBEROS5=y +CONFIG_SMBFS=m +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +# CONFIG_AFS_DEBUG_CURSOR is not set +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_NLS_UCS2_UTILS=m +CONFIG_DLM=m +CONFIG_DLM_DEBUG=y +CONFIG_UNICODE=y +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +CONFIG_PERSISTENT_KEYRINGS=y +# CONFIG_BIG_KEYS is not set +# CONFIG_TRUSTED_KEYS is not set +CONFIG_ENCRYPTED_KEYS=y +# CONFIG_USER_DECRYPTED_DATA is not set +CONFIG_KEY_DH_OPERATIONS=y +CONFIG_SECURITY_DMESG_RESTRICT=y +CONFIG_PROC_MEM_ALWAYS_FORCE=y +# CONFIG_PROC_MEM_FORCE_PTRACE is not set +# CONFIG_PROC_MEM_NO_FORCE is not set +CONFIG_SECURITY=y +CONFIG_HAS_SECURITY_AUDIT=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_INFINIBAND is not set +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_INTEL_TXT=y +CONFIG_LSM_MMAP_MIN_ADDR=65536 +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +# CONFIG_SECURITY_SELINUX_DEBUG is not set +# CONFIG_SECURITY_SMACK is not set +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +# CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING is not set +CONFIG_SECURITY_APPARMOR=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +CONFIG_SECURITY_APPARMOR_EXPORT_BINARY=y +CONFIG_SECURITY_APPARMOR_PARANOID_LOAD=y +# CONFIG_SECURITY_LOADPIN is not set +CONFIG_SECURITY_YAMA=y +# CONFIG_SECURITY_SAFESETID is not set +CONFIG_SECURITY_LOCKDOWN_LSM=y +CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y +CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y +# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set +# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set +CONFIG_SECURITY_LANDLOCK=y +CONFIG_SECURITY_IPE=y +CONFIG_IPE_BOOT_POLICY="" +CONFIG_IPE_POLICY_SIG_SECONDARY_KEYRING=y +CONFIG_IPE_POLICY_SIG_PLATFORM_KEYRING=y + +# +# IPE Trust Providers +# +CONFIG_IPE_PROP_DM_VERITY=y +CONFIG_IPE_PROP_DM_VERITY_SIGNATURE=y +CONFIG_IPE_PROP_FS_VERITY=y +CONFIG_IPE_PROP_FS_VERITY_BUILTIN_SIG=y +# end of IPE Trust Providers + +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +# CONFIG_INTEGRITY_TRUSTED_KEYRING is not set +CONFIG_INTEGRITY_PLATFORM_KEYRING=y +CONFIG_INTEGRITY_MACHINE_KEYRING=y +# CONFIG_INTEGRITY_CA_MACHINE_KEYRING is not set +CONFIG_LOAD_UEFI_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_IMA=y +# CONFIG_IMA_KEXEC is not set +CONFIG_IMA_MEASURE_PCR_IDX=10 +CONFIG_IMA_LSM_RULES=y +# CONFIG_IMA_NG_TEMPLATE is not set +CONFIG_IMA_SIG_TEMPLATE=y +CONFIG_IMA_DEFAULT_TEMPLATE="ima-sig" +# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set +CONFIG_IMA_DEFAULT_HASH_SHA256=y +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +CONFIG_IMA_DEFAULT_HASH="sha256" +# CONFIG_IMA_WRITE_POLICY is not set +# CONFIG_IMA_READ_POLICY is not set +CONFIG_IMA_APPRAISE=y +CONFIG_IMA_ARCH_POLICY=y +# CONFIG_IMA_APPRAISE_BUILD_POLICY is not set +CONFIG_IMA_APPRAISE_BOOTPARAM=y +# CONFIG_IMA_APPRAISE_MODSIG is not set +# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set +CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y +CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS=y +CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT=y +# CONFIG_IMA_DISABLE_HTABLE is not set +CONFIG_EVM=y +CONFIG_EVM_ATTR_FSUUID=y +# CONFIG_EVM_ADD_XATTRS is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,apparmor,selinux,smack,tomoyo,bpf,ipe" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +# CONFIG_INIT_STACK_NONE is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +CONFIG_INIT_STACK_ALL_ZERO=y +# CONFIG_GCC_PLUGIN_STACKLEAK is not set +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization + +# +# Bounds checking +# +CONFIG_FORTIFY_SOURCE=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY_DEFAULT_ON=y +# end of Bounds checking + +# +# Hardening of kernel data structures +# +CONFIG_LIST_HARDENED=y +CONFIG_BUG_ON_DATA_CORRUPTION=y +# end of Hardening of kernel data structures + +CONFIG_RANDSTRUCT_NONE=y +# CONFIG_RANDSTRUCT_FULL is not set +# CONFIG_RANDSTRUCT_PERFORMANCE is not set +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_FIPS_NAME="Linux Kernel Cryptographic API" +# CONFIG_CRYPTO_FIPS_CUSTOM_VERSION is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG=y +CONFIG_CRYPTO_SIG2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_HKDF=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_SELFTESTS=y +# CONFIG_CRYPTO_SELFTESTS_FULL is not set +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_KRB5ENC=m +CONFIG_CRYPTO_BENCHMARK=m +CONFIG_CRYPTO_ENGINE=m +# end of Crypto core or helper + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_DH_RFC7919_GROUPS=y +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_ECDSA=y +CONFIG_CRYPTO_ECRDSA=m +CONFIG_CRYPTO_CURVE25519=m +# end of Public-key cryptography + +# +# Block ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_TI=m +# CONFIG_CRYPTO_ARIA is not set +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_SERPENT=m +# CONFIG_CRYPTO_SM4_GENERIC is not set +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +# end of Block ciphers + +# +# Length-preserving ciphers and modes +# +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_HCTR2 is not set +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_NHPOLY1305=m +# end of Length-preserving ciphers and modes + +# +# AEAD (authenticated encryption with associated data) ciphers +# +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GENIV=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_ESSIV=m +# end of AEAD (authenticated encryption with associated data) ciphers + +# +# Hashes, digests, and MACs +# +CONFIG_CRYPTO_BLAKE2B=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +# CONFIG_CRYPTO_SM3_GENERIC is not set +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XXHASH=m +# end of Hashes, digests, and MACs + +# +# CRCs (cyclic redundancy checks) +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32=m +# end of CRCs (cyclic redundancy checks) + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ZSTD=m +# end of Compression + +# +# Random number generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_2=y +# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_128 is not set +# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_1024 is not set +# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_8192 is not set +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 +CONFIG_CRYPTO_JITTERENTROPY_OSR=3 +# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set +CONFIG_CRYPTO_KDF800108_CTR=y +# end of Random number generation + +# +# Userspace interface +# +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set +CONFIG_CRYPTO_USER_API_AEAD=m +# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set +# end of Userspace interface + +CONFIG_CRYPTO_HASH_INFO=y + +# +# Accelerated Cryptographic Algorithms for CPU (x86) +# +CONFIG_CRYPTO_CURVE25519_X86=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +# CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +# CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64 is not set +# CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64 is not set +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_SSE2=m +CONFIG_CRYPTO_NHPOLY1305_AVX2=m +# CONFIG_CRYPTO_POLYVAL_CLMUL_NI is not set +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA512_SSSE3=m +# CONFIG_CRYPTO_SM3_AVX_X86_64 is not set +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +# end of Accelerated Cryptographic Algorithms for CPU (x86) + +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_SP_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_SP_PSP=y +# CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +CONFIG_CRYPTO_DEV_QAT=m +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_C3XXX=m +CONFIG_CRYPTO_DEV_QAT_C62X=m +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +# CONFIG_CRYPTO_DEV_QAT_420XX is not set +# CONFIG_CRYPTO_DEV_QAT_6XXX is not set +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m +CONFIG_CRYPTO_DEV_QAT_C62XVF=m +# CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION is not set +CONFIG_CRYPTO_DEV_IAA_CRYPTO=m +# CONFIG_CRYPTO_DEV_IAA_CRYPTO_STATS is not set +CONFIG_CRYPTO_DEV_CHELSIO=m +CONFIG_CRYPTO_DEV_VIRTIO=m +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +CONFIG_SIGNED_PE_FILE_VERIFICATION=y +# CONFIG_FIPS_SIGNATURE_SELFTEST is not set + +# +# Certificates for signature checking +# +CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" +CONFIG_MODULE_SIG_KEY_TYPE_RSA=y +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +CONFIG_SECONDARY_TRUSTED_KEYRING=y +# CONFIG_SECONDARY_TRUSTED_KEYRING_SIGNED_BY_BUILTIN is not set +CONFIG_SYSTEM_BLACKLIST_KEYRING=y +CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" +# CONFIG_SYSTEM_REVOCATION_LIST is not set +# CONFIG_SYSTEM_BLACKLIST_AUTH_UPDATE is not set +# end of Certificates for signature checking + +CONFIG_CRYPTO_KRB5=m +# CONFIG_CRYPTO_KRB5_SELFTESTS is not set +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_RAID6_PQ=m +CONFIG_RAID6_PQ_BENCHMARK=y +CONFIG_LINEAR_RANGES=y +CONFIG_PACKING=y +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_CORDIC=m +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_UTILS=y +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_AESCFB=y +CONFIG_CRYPTO_LIB_AESGCM=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_LIB_GF128MUL=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m +CONFIG_CRYPTO_LIB_CHACHA=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=y +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m +CONFIG_CRYPTO_LIB_CURVE25519_INTERNAL=m +CONFIG_CRYPTO_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m +CONFIG_CRYPTO_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_SHA256=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_SHA256_SIMD=y +CONFIG_CRYPTO_LIB_SHA256_GENERIC=y +CONFIG_CRYPTO_BLAKE2S_X86=y +CONFIG_CRYPTO_CHACHA20_X86_64=m +CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_SHA256_X86_64=y +# end of Crypto library routines + +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_ARCH_HAS_CRC_T10DIF=y +CONFIG_CRC_T10DIF_ARCH=y +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_ARCH_HAS_CRC32=y +CONFIG_CRC32_ARCH=y +CONFIG_CRC64=y +CONFIG_ARCH_HAS_CRC64=y +CONFIG_CRC64_ARCH=y +CONFIG_CRC8=m +CONFIG_CRC_OPTIMIZATIONS=y +CONFIG_XXHASH=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMMON=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +CONFIG_XZ_DEC_ARM64=y +# CONFIG_XZ_DEC_SPARC is not set +CONFIG_XZ_DEC_RISCV=y +CONFIG_XZ_DEC_MICROLZMA=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_BCH=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y +CONFIG_INTERVAL_TREE=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_CLOSURES=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS_HELPERS=y +CONFIG_NEED_SG_DMA_FLAGS=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y +CONFIG_SWIOTLB=y +# CONFIG_SWIOTLB_DYNAMIC is not set +CONFIG_DMA_NEED_SYNC=y +CONFIG_DMA_COHERENT_POOL=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +CONFIG_IOMMU_HELPER=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPUMASK_OFFSTACK=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m +CONFIG_CLZ_TAB=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_SIGNATURE=y +CONFIG_DIMLIB=y +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_GENERIC_VDSO_OVERFLOW_PROTECT=y +CONFIG_VDSO_GETRANDOM=y +CONFIG_GENERIC_VDSO_DATA_STORE=y +CONFIG_FONT_SUPPORT=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_6x10 is not set +# CONFIG_FONT_10x18 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +CONFIG_FONT_TER16x32=y +# CONFIG_FONT_6x8 is not set +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_MEMREGION=y +CONFIG_ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_COPY_MC=y +CONFIG_ARCH_STACKWALK=y +CONFIG_STACKDEPOT=y +CONFIG_STACKDEPOT_MAX_FRAMES=64 +CONFIG_SBITMAP=y +# CONFIG_LWQ_TEST is not set +# end of Library routines + +CONFIG_PLDMFW=y +CONFIG_FIRMWARE_TABLE=y +CONFIG_UNION_FIND=y +CONFIG_MIN_HEAP=y + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +CONFIG_AS_HAS_NON_CONST_ULEB128=y +# CONFIG_DEBUG_INFO_NONE is not set +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +CONFIG_DEBUG_INFO_COMPRESSED_NONE=y +# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set +# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_FRAME_WARN=2048 +CONFIG_STRIP_ASM_SYMS=y +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set +CONFIG_OBJTOOL=y +# CONFIG_OBJTOOL_WERROR is not set +# CONFIG_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN=y +CONFIG_UBSAN=y +# CONFIG_UBSAN_TRAP is not set +CONFIG_CC_HAS_UBSAN_BOUNDS_STRICT=y +CONFIG_UBSAN_BOUNDS=y +CONFIG_UBSAN_BOUNDS_STRICT=y +CONFIG_UBSAN_SHIFT=y +# CONFIG_UBSAN_DIV_ZERO is not set +# CONFIG_UBSAN_BOOL is not set +# CONFIG_UBSAN_ENUM is not set +# CONFIG_UBSAN_ALIGNMENT is not set +# CONFIG_TEST_UBSAN is not set +CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_KCSAN_COMPILER=y +# CONFIG_KCSAN is not set +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# CONFIG_DEBUG_NET is not set +# CONFIG_DEBUG_NET_SMALL_RTNL is not set +# end of Networking Debugging + +# +# Memory Debugging +# +CONFIG_PAGE_EXTENSION=y +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_TABLE_CHECK is not set +CONFIG_PAGE_POISONING=y +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +CONFIG_DEBUG_WX=y +CONFIG_ARCH_HAS_PTDUMP=y +CONFIG_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VFS is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_MEM_ALLOC_PROFILING is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +CONFIG_KFENCE=y +CONFIG_KFENCE_SAMPLE_INTERVAL=0 +CONFIG_KFENCE_NUM_OBJECTS=255 +# CONFIG_KFENCE_DEFERRABLE is not set +# CONFIG_KFENCE_STATIC_KEYS is not set +CONFIG_KFENCE_STRESS_TEST_FAULTS=0 +CONFIG_HAVE_ARCH_KMSAN=y +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set +CONFIG_HARDLOCKUP_DETECTOR_PERF=y +# CONFIG_HARDLOCKUP_DETECTOR_BUDDY is not set +# CONFIG_HARDLOCKUP_DETECTOR_ARCH is not set +CONFIG_HARDLOCKUP_DETECTOR_COUNTS_HRTIMER=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_DETECT_HUNG_TASK_BLOCKER=y +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# end of Scheduler Debugging + +# CONFIG_DEBUG_PREEMPT is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_NMI_CHECK_CPU is not set +# CONFIG_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +CONFIG_DEBUG_LIST=y +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CLOSURES is not set +# CONFIG_DEBUG_MAPLE_TREE is not set +# end of Debug kernel data structures + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_DEBUG_CGROUP_REF is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_RETHOOK=y +CONFIG_RETHOOK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FREGS=y +CONFIG_HAVE_FTRACE_GRAPH_FUNC=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_HAVE_FTRACE_REGS_HAVING_PT_REGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_OBJTOOL_MCOUNT=y +CONFIG_HAVE_OBJTOOL_NOP_MCOUNT=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y +CONFIG_BUILDTIME_MCOUNT_SORT=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +# CONFIG_FUNCTION_GRAPH_RETVAL is not set +# CONFIG_FUNCTION_GRAPH_RETADDR is not set +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_FPROBE=y +# CONFIG_FUNCTION_PROFILER is not set +CONFIG_STACK_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_HWLAT_TRACER is not set +# CONFIG_OSNOISE_TRACER is not set +# CONFIG_TIMERLAT_TRACER is not set +CONFIG_MMIOTRACE=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_FPROBE_EVENTS=y +CONFIG_KPROBE_EVENTS=y +# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +CONFIG_FTRACE_MCOUNT_RECORD=y +CONFIG_FTRACE_MCOUNT_USE_CC=y +CONFIG_TRACING_MAP=y +CONFIG_SYNTH_EVENTS=y +# CONFIG_USER_EVENTS is not set +CONFIG_HIST_TRIGGERS=y +# CONFIG_TRACE_EVENT_INJECT is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_FTRACE_RECORD_RECURSION is not set +# CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_FTRACE_SORT_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set +# CONFIG_MMIOTRACE_TEST is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_SYNTH_EVENT_GEN_TEST is not set +# CONFIG_KPROBE_EVENT_GEN_TEST is not set +# CONFIG_HIST_TRIGGERS_DEBUG is not set +# CONFIG_RV is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +CONFIG_IO_STRICT_DEVMEM=y + +# +# x86 Debugging +# +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +# CONFIG_EARLY_PRINTK_USB_XDBC is not set +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_IOMMU_DEBUG is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +CONFIG_X86_DEBUG_FPU=y +# CONFIG_PUNIT_ATOM_DEBUG is not set +CONFIG_UNWINDER_ORC=y +# CONFIG_UNWINDER_FRAME_POINTER is not set +# end of x86 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set +# CONFIG_FUNCTION_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +# CONFIG_KCOV is not set +CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_TEST_DHRY is not set +# CONFIG_LKDTM is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_DIV64 is not set +# CONFIG_TEST_MULDIV64 is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_TEST_REF_TRACKER is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_REED_SOLOMON_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_MAPLE_TREE is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set +CONFIG_TEST_BPF=m +# CONFIG_FIND_BIT_BENCHMARK is not set +CONFIG_TEST_FIRMWARE=m +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +CONFIG_TEST_STATIC_KEYS=m +# CONFIG_TEST_DYNAMIC_DEBUG is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_KALLSYMS is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_HMM is not set +# CONFIG_TEST_FREE_PAGES is not set +# CONFIG_TEST_FPU is not set +# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set +# CONFIG_TEST_OBJPOOL is not set +CONFIG_ARCH_USE_MEMTEST=y +CONFIG_MEMTEST=y +# CONFIG_HYPERV_TESTING is not set +# end of Kernel Testing and Coverage + +# +# Rust hacking +# +# end of Rust hacking +# end of Kernel hacking + +CONFIG_IO_URING_ZCRX=y diff --git a/packages/wdm-1.28/README.md b/packages/wdm-1.28/README.md new file mode 100644 index 0000000..bd4451c --- /dev/null +++ b/packages/wdm-1.28/README.md @@ -0,0 +1,191 @@ +# wdm-1.28 + +## Introduction to WINGs Display Manager + +The WDM package contains a display manager based on WINGs toolkit from +Window Maker. + +This package is known to build and work properly using a ZiomekOS 26.9.26 +platform. + +## WDM Package Information + +* Download (HTTP): http://deb.debian.org/debian/pool/main/w/wdm/wdm_1.28.orig.tar.gz +* Download MD5 sum: `97d75a5be4fe1d2e232d2a39106a972e` +* Download size: 400kB + +## Additional Download + +### Debian package source tarball + +This download is needed for patches. + +Download: http://deb.debian.org/debian/pool/main/w/wdm/wdm_1.28-27.debian.tar.xz + +## WDM Dependencies + +### Required + +Window Maker 0.96.0 (for WINGs), xdm 1.1.17 (for up to date configuration), BLFS Boot Scripts 20250225 (for xdm boot script) + +## Installation of WDM + +Extract patches 1 to 11 from the Debian source tarball into `patches` directory. + +Apply patches: + +``` +patch -Np1 -i ../patches/01_kfreebsd.patch +patch -Np1 -i ../patches/02_fix_login_overflow.patch +patch -Np1 -i ../patches/03_autoconf.patch +patch -Np1 -i ../patches/04_manpage_indent.patch +patch -Np1 -i ../patches/05_french_translation_name.patch +patch -Np1 -i ../patches/06_login_composite.patch +patch -Np1 -i ../patches/07_ld_no_add_needed.patch +patch -Np1 -i ../patches/08_do_not_use_dev_mem.patch +patch -Np1 -i ../patches/09_pam_session.patch +patch -Np1 -i ../patches/10_spelling_fixes.patch +patch -Np1 -i ../patches/11_usr_bin_X11_removal.patch +patch -Np1 -i ../patches/12_make_it_compile_on_lfs.patch +``` + +Since `configure.ac` has been changed, you need to rebuild `configure`: + +``` +autoreconf -i +``` + +Install WDM by running the following commands: + +``` +./configure \ + --prefix=/usr \ + --datadir=/usr/share \ + --sysconfdir=/etc/X11 \ + --localstatedir=/var/lib/wdm \ + --with-gfxdir=/usr/share/pixmaps \ + --enable-shadow \ + --enable-pam \ + --enable-aafont \ + --with-pamdir=/etc/pam.d \ + --with-wdmdir=/etc/X11/wdm \ + --with-nlsdir=/usr/share/locale && +make +``` + +This package does not come with a test suite. + +Now, as the _root_ user: + +``` +make install +``` + +## Configuring WDM + +**NOTE**: All the actions in this section must be executed as _root_. + +First, you need to update WDM config to make it inline with modern Xorg. I found the best way to do it, is just use what's delivered OOTB by xdm: + +``` +cp -v /etc/X11/xdm/{GiveConsole,TakeConsole,Xaccess,Xreset,Xresources,Xservers,Xsession,Xsetup_0,Xstartup,Xstartup} /etc/X11/wdm/ +``` + +xdm starts `xconsole` in `Xsetup_0`, which means an ever-present window on your desktop. You may want to comment out that line :). + +Next, you need to create WDM's `authdir`: + +``` +install -m0700 -o root -g root /etc/X11/wdm/authdir +``` + +You'll also need PAM configuration for WDM: + +``` +cat > /etc/pam.d/wdm << "EOF" +#%PAM-1.0 + +# Block login if they are globally disabled +auth required pam_nologin.so + +# Load environment from /etc/environment and ~/.pam_environment +auth required pam_env.so + +# Use /etc/passwd and /etc/shadow for passwords +auth required pam_unix.so + +# Check account is active, change password if required +account required pam_unix.so + +# Allow password to be changed +password required pam_unix.so + +# Setup session +session required pam_unix.so +session optional pam_systemd.so +EOF +``` + +Finally, install `.xsession` for _root_ and make it executable: + +``` +cat > /root/.xsession << "EOF" +#!/usr/bin/env /bin/bash +exec /usr/bin/twm +EOF +``` + +``` +chmod 755 /root/.xsession +``` + +## Boot Script + +**NOTE**: All the actions in this section must be executed as _root_. + +To start WDM automatically when the system is switched to runlevel 5, you'll need to install the `/etc/rc.d/init.d/xdm` script and the `/etc/sysconfig/xdm` configuration file included in the _blfs-bootscripts-20250225_ package: + +``` +make install-xdm +``` + +Adjust the `/etc/sysconfig/xdm` to use WDM: + +``` +cat > /etc/sysconfig/xdm << "EOF" +# Which display manager to use (full path): +# DISPLAY_MANAGER=/usr/sbin/gdm +# DISPLAY_MANAGER=/usr/sbin/lxdm +DISPLAY_MANAGER=/usr/bin/wdm +# DISPLAY_MANAGER=/usr/bin/sddm + +# Options to pass to the display manager: +DM_OPTIONS="" +EOF +``` + +## Starting WDM + +WDM can be started from the command line as the root user: + +``` +telinit 5 +``` + +## Starting WDM on boot + +To start WDM on boot, adjust `/etc/inittab` to set _5_ as the default runlevel: + +``` +id:5:initdefault: +``` + +## Debugging WDM + +WDM is a pretty old piece of software, largely outdated in the context of a modern system like LFS. As such, there can be potential issues. + +By default, WDM logs to `/var/log/xdm-errors.log` and that's the first place to look for issues. + +In any case, if you need to validate your display manager setup, you can adjust `/etc/sysconfig/xdm` to switch to xdm and validate your overall environment is sane. + +For the (default) _NoChange_ WM choice, each user will need an `.xsesion` file in their home directory, to start the selected window manageger or desktop environment. diff --git a/packages/wdm-1.28/patches/.gitignore b/packages/wdm-1.28/patches/.gitignore new file mode 100644 index 0000000..4ed32bc --- /dev/null +++ b/packages/wdm-1.28/patches/.gitignore @@ -0,0 +1,11 @@ +01_kfreebsd.patch +02_fix_login_overflow.patch +03_autoconf.patch +04_manpage_indent.patch +05_french_translation_name.patch +06_login_composite.patch +07_ld_no_add_needed.patch +08_do_not_use_dev_mem.patch +09_pam_session.patch +10_spelling_fixes.patch +11_usr_bin_X11_removal.patch diff --git a/packages/wdm-1.28/patches/12_make_it_compile_on_lfs.patch b/packages/wdm-1.28/patches/12_make_it_compile_on_lfs.patch new file mode 100644 index 0000000..ec24116 --- /dev/null +++ b/packages/wdm-1.28/patches/12_make_it_compile_on_lfs.patch @@ -0,0 +1,20 @@ +--- Makefile.in.orig 2026-09-24 08:23:36.968895608 +0000 ++++ Makefile.in 2026-09-24 08:26:03.833751849 +0000 +@@ -3,7 +3,7 @@ + # WARNING: Makefile.in is generated by etc/makefile.cook + # Do not send patches for this file. + +-CFLAGS = @CFLAGS@ ++CFLAGS = @CFLAGS@ -std=gnu99 + CPPFLAGS = @CPPFLAGS@ + LDFLAGS = @LDFLAGS@ + DEFS = @DEFS@ +@@ -75,7 +75,7 @@ + + install: install-bin install-config install-doc install-gfx install-nls-$(I18N) + +-all-bin: bin/TestLogin bin/wdm bin/wdmChooser bin/wdmLogin bin/wdmPrefs ++all-bin: bin/wdm bin/wdmChooser bin/wdmLogin bin/wdmPrefs + + install-bin: $(DESTDIR)$(bindir)/wdm $(DESTDIR)$(bindir)/wdmLogin + diff --git a/packages/wdm-1.28/ziomekos/motd b/packages/wdm-1.28/ziomekos/motd new file mode 100644 index 0000000..b6053da --- /dev/null +++ b/packages/wdm-1.28/ziomekos/motd @@ -0,0 +1,2 @@ +ZiomekOS 26.9.26 (First Bark) based on LFS 12.4 +Created by Tomek Wójcik | For teh lulz diff --git a/packages/wdm-1.28/ziomekos/wdm-config b/packages/wdm-1.28/ziomekos/wdm-config new file mode 100644 index 0000000..a15373d --- /dev/null +++ b/packages/wdm-1.28/ziomekos/wdm-config @@ -0,0 +1,75 @@ +! $XConsortium: xdm-conf.cpp /main/3 1996/01/15 15:17:26 gildea $ +! +! wdm configuration file input (sed in Makefile) +! +! Adjusted for ZiomekOS 26.9.26 by Tomek Wójcik +DisplayManager.errorLogFile: /var/log/xdm-errors.log +DisplayManager.pidFile: /var/run/xdm-pid +DisplayManager.keyFile: /etc/X11/wdm/xdm-keys +DisplayManager.servers: /etc/X11/wdm/Xservers +DisplayManager.accessFile: /etc/X11/wdm/Xaccess +! All displays should use authorization, but we cannot be sure +! X terminals will be configured that way, so by default +! use authorization only for local displays :0, :1, etc. +DisplayManager._0.authorize: true +DisplayManager._1.authorize: true +! The following three resources set up display :0 as the console. +DisplayManager._0.setup: /etc/X11/wdm/Xsetup_0 +DisplayManager._0.startup: /etc/X11/wdm/GiveConsole +DisplayManager._0.reset: /etc/X11/wdm/TakeConsole +! +DisplayManager*resources: /etc/X11/wdm/Xresources +DisplayManager*session: /etc/X11/wdm/Xsession +DisplayManager*authComplain: false +DisplayManager*wdmLogin: /usr/bin/wdmLogin +! +! display screen background--if not set or set to none, then the +! background is not set by wdm. +! DisplayManager*wdmBg: none +! DisplayManager*wdmBg: solid:RoyalBlue +DisplayManager*wdmBg: solid:#505075 +! DisplayManager*wdmBg: dgradient:RoyalBlue,FireBrick,Black +! DisplayManager*wdmBg: hgradient:RoyalBlue,FireBrick,Black +! DisplayManager*wdmBg: vgradient:RoyalBlue,FireBrick,Black +! DisplayManager*wdmBg: pixmap:/usr/share/pixmaps/Stars.jpg +! +! optional pixmap for logo +DisplayManager*wdmLogo: /usr/share/pixmaps/ziomekos.xpm +! +! optional help file to display in the help panel +! long lines may cause an ugly display +DisplayManager*wdmHelpFile: /etc/X11/wdm/motd +! +! optional default username and password (in clear text) +! which wdm should use if nothing is typed by the user. +! it's strongly suggested that wdm-config should be +! chmod 600 and owned by root if you want to use this +! feature, or else you could open a huge security hole +! in your system, letting anyone to log in as this default +! user. In any case if you want to use this feature do +! it with a very restricted account, and especially NOT +! WITH THE root ACCOUNT !!! +!DisplayManager*wdmDefaultUser: nobody +!DisplayManager*wdmDefaultPasswd: dumb_clear_text_passwd +! +! list of window managers which can be started +! or 'None' if you want only NoChange to appear +! e.g.: DisplayManager*wdmWm: None +DisplayManager*wdmWm: WindowMaker +! +! commands for reboot and halt +! -- be sure to edit these if the +! system is not linux. +DisplayManager*wdmReboot: /usr/sbin/shutdown -r now +DisplayManager*wdmHalt: /usr/sbin/shutdown -h now +! alternates (for Linux) +! DisplayManager*wdmReboot: /usr/sbin/shutdown -t3 -r now +! DisplayManager*wdmHalt: /usr/sbin/shutdown -t3 -h now +! +! true/false to require valid username/passwd to reboot,halt, or exit +DisplayManager*wdmVerify: true +! true/false to require root as valid username/passwd to reboot,halt, or exit +DisplayManager*wdmRoot: false +! true=enable, false=disable shake and rollup animations +DisplayManager*wdmAnimations: true + diff --git a/resources/linux-6.16.1/drivers/video/logo/logo_linux_clut224.ppm b/resources/linux-6.16.1/drivers/video/logo/logo_linux_clut224.ppm new file mode 100644 index 0000000..c47de91 --- /dev/null +++ b/resources/linux-6.16.1/drivers/video/logo/logo_linux_clut224.ppm @@ -0,0 +1,883 @@ +P3 +80 80 +255 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +56 56 55 104 104 102 88 88 86 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 56 56 55 40 40 39 40 40 39 +32 32 31 48 48 47 48 47 46 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 82 81 78 72 72 71 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 137 136 134 +88 88 86 5 6 5 5 6 5 121 120 118 72 72 71 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 88 88 86 56 56 55 56 56 55 56 56 55 193 190 182 +205 203 194 80 79 77 56 56 55 72 72 71 82 81 78 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 82 81 78 121 120 118 5 6 5 5 6 5 112 111 108 +104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 16 15 15 132 131 126 82 81 78 +5 6 5 5 6 5 5 6 5 16 15 15 24 24 23 154 152 148 121 120 118 154 152 148 +137 136 134 154 152 148 121 120 118 5 6 5 5 6 5 121 120 118 166 164 157 185 183 175 +200 197 187 183 181 174 121 120 118 5 6 5 5 6 5 137 136 134 154 152 148 137 136 134 +154 152 148 132 131 126 149 147 140 24 24 23 16 15 15 5 6 5 5 6 5 5 6 5 +40 40 39 172 170 164 16 15 15 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 121 120 118 104 104 102 5 6 5 +5 6 5 5 6 5 5 6 5 24 24 23 32 32 31 40 40 39 16 16 15 16 15 15 +5 6 5 5 6 5 40 40 39 104 104 102 56 56 55 16 15 15 137 136 134 183 181 174 +185 183 175 166 164 157 40 40 39 72 72 71 104 104 102 40 40 39 5 6 5 5 6 5 +5 6 5 16 16 15 24 24 23 40 40 39 24 24 23 5 6 5 5 6 5 5 6 5 +5 6 5 128 127 124 114 114 110 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 80 79 77 137 136 134 40 40 39 5 6 5 +5 6 5 5 6 5 63 64 63 16 15 15 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 112 111 108 200 199 195 121 120 118 188 187 183 +194 193 189 154 152 148 172 170 164 82 81 78 5 6 5 5 6 5 16 15 15 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 80 79 77 5 6 5 5 6 5 +5 6 5 24 24 23 137 136 134 112 111 108 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 166 164 157 194 193 189 194 193 189 188 187 183 48 48 47 5 6 5 +5 6 5 72 72 71 40 40 39 40 40 39 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 16 15 15 72 72 71 194 193 189 40 40 39 229 227 218 225 221 211 160 158 152 +183 181 174 160 158 152 210 208 200 82 81 78 166 164 157 80 79 77 24 24 23 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 56 56 55 56 56 55 5 6 5 +5 6 5 24 24 23 169 167 161 185 183 176 188 187 183 149 147 140 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +72 72 71 166 164 157 72 72 71 16 16 15 88 88 86 104 104 102 16 15 15 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 24 24 23 24 24 23 16 15 15 121 120 118 154 152 148 166 164 157 177 175 169 +166 164 157 185 183 175 145 143 139 137 136 134 24 24 23 40 40 39 24 24 23 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 40 40 39 121 120 118 16 15 15 56 56 55 154 152 148 56 56 55 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 121 120 118 +82 81 78 32 32 31 16 15 15 40 40 39 65 64 63 32 32 31 5 6 5 5 6 5 +16 15 15 16 15 15 5 6 5 5 6 5 5 6 5 5 6 5 16 15 15 40 40 39 +16 16 15 5 6 5 16 15 15 24 24 23 56 56 55 149 147 140 132 131 126 169 167 161 +166 164 157 166 164 157 154 152 148 88 88 86 24 24 23 16 15 15 5 6 5 16 15 15 +80 79 80 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 16 15 15 16 15 15 +5 6 5 5 6 5 40 40 39 104 104 102 24 24 23 5 6 5 16 15 15 96 95 92 +114 114 110 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 114 114 110 169 167 161 +24 24 23 5 6 5 5 6 5 24 24 23 40 40 39 24 24 23 5 6 5 16 15 15 +5 6 5 5 6 5 5 6 5 5 6 5 56 56 55 82 81 78 56 56 55 16 15 15 +16 16 15 24 24 23 5 6 5 5 6 5 16 15 15 121 120 118 154 152 148 154 152 148 +188 187 183 149 147 140 121 120 118 16 15 15 5 6 5 5 6 5 16 15 15 24 24 23 +16 15 15 40 40 39 72 72 71 72 72 71 16 15 15 5 6 5 5 6 5 5 6 5 +16 15 15 5 6 5 16 15 15 56 56 55 24 24 23 5 6 5 5 6 5 24 24 23 +149 147 140 149 147 140 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 40 40 39 24 24 23 24 24 23 +5 6 5 5 6 5 24 24 23 72 72 71 82 81 78 40 40 39 5 6 5 16 15 15 +5 6 5 5 6 5 5 6 5 16 15 15 16 15 15 40 40 39 82 81 78 72 72 71 +72 72 71 72 72 71 5 6 5 5 6 5 5 6 5 40 40 39 137 136 134 172 170 164 +183 181 174 149 147 140 48 47 46 5 6 5 5 6 5 24 24 23 72 72 71 56 56 55 +56 56 55 56 56 55 24 24 23 5 6 5 16 15 15 5 6 5 5 6 5 5 6 5 +16 15 15 5 6 5 24 24 23 104 104 102 72 72 71 40 40 39 5 6 5 5 6 5 +16 15 15 24 24 23 24 24 23 40 40 39 16 15 15 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 16 15 15 121 120 118 56 56 55 88 88 86 40 40 39 48 48 47 +5 6 5 63 64 63 104 104 102 82 81 78 121 120 118 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 32 32 31 56 56 55 72 72 71 40 40 39 16 15 15 56 56 55 +24 24 23 121 120 118 32 32 31 5 6 5 24 24 23 149 147 140 149 147 140 172 170 164 +172 170 164 154 152 148 121 120 118 24 24 23 5 6 5 48 48 47 104 104 102 24 24 23 +56 56 55 16 15 15 24 24 23 104 104 102 72 72 71 40 40 39 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 104 104 102 82 81 78 104 104 102 72 72 71 5 6 5 +40 40 39 56 56 55 104 104 102 82 81 78 114 114 110 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 121 120 118 160 158 152 104 104 102 121 120 118 40 40 39 16 15 15 +40 40 39 149 147 140 121 120 118 121 120 118 56 56 55 5 6 5 5 6 5 5 6 5 +5 6 5 82 81 78 104 104 102 169 167 161 121 120 118 121 120 118 5 6 5 24 24 23 +16 15 15 24 24 23 16 15 15 5 6 5 5 6 5 40 40 39 149 147 140 176 173 165 +183 181 174 154 152 148 72 72 71 5 6 5 5 6 5 40 40 39 40 40 39 40 40 39 +40 40 39 5 6 5 88 88 86 121 120 118 149 147 140 137 136 134 82 81 78 5 6 5 +5 6 5 5 6 5 5 6 5 40 40 39 121 120 118 137 136 134 121 120 118 40 40 39 +16 15 15 56 56 55 104 104 102 121 120 118 166 164 157 88 88 86 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 56 56 55 104 104 102 16 15 15 56 56 55 72 72 71 40 40 39 40 40 39 +72 72 71 104 104 102 88 88 86 82 81 78 40 40 39 5 6 5 5 6 5 5 6 5 +40 40 39 104 104 102 72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 16 15 15 5 6 5 72 72 71 104 104 102 149 147 140 194 193 189 +194 193 189 176 173 165 88 88 86 64 63 61 5 6 5 24 24 23 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 82 81 78 40 40 39 +5 6 5 5 6 5 5 6 5 16 15 15 104 104 102 88 88 86 104 104 102 72 72 71 +56 56 55 40 40 39 72 72 71 56 56 55 24 24 23 98 98 94 72 72 71 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +24 24 23 72 72 71 24 24 23 5 6 5 5 6 5 24 24 23 40 40 39 104 104 102 +72 72 71 104 104 102 104 104 102 72 72 71 16 15 15 5 6 5 5 6 5 40 40 39 +72 72 71 72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 63 64 63 5 6 5 98 98 94 166 164 157 145 143 139 188 187 183 +200 197 187 154 152 148 154 152 148 72 72 71 5 6 5 56 56 55 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 82 81 78 +40 40 39 5 6 5 5 6 5 5 6 5 72 72 71 98 98 94 104 104 102 82 81 78 +88 88 86 56 56 55 40 40 39 5 6 5 5 6 5 24 24 23 88 88 86 24 24 23 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +154 152 148 56 56 55 24 24 23 5 6 5 5 6 5 24 24 23 56 56 55 104 104 102 +72 72 71 104 104 102 104 104 102 56 56 55 5 6 5 5 6 5 5 6 5 104 104 102 +56 56 55 24 24 23 5 6 5 5 6 5 88 88 86 24 24 23 5 6 5 5 6 5 +5 6 5 24 24 23 145 143 139 16 15 15 121 120 118 194 193 189 149 147 140 200 197 187 +209 206 197 188 187 183 176 173 165 112 111 108 24 24 23 149 147 140 24 24 23 5 6 5 +5 6 5 5 6 5 16 15 15 88 88 86 5 6 5 5 6 5 16 15 15 56 56 55 +82 81 78 5 6 5 5 6 5 5 6 5 72 72 71 104 104 102 104 104 102 82 81 78 +98 98 94 72 72 71 40 40 39 5 6 5 5 6 5 16 15 15 63 64 63 114 114 110 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +149 147 140 56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 48 48 47 104 104 102 +63 64 63 88 88 86 82 81 78 56 56 55 5 6 5 5 6 5 56 56 55 48 48 47 +16 15 15 5 6 5 5 6 5 5 6 5 72 72 71 169 167 161 5 6 5 5 6 5 +5 6 5 16 15 15 169 167 161 104 104 102 137 136 134 96 95 92 154 152 148 205 203 194 +200 197 187 188 187 183 104 104 102 145 143 139 114 114 110 145 143 139 16 16 15 5 6 5 +5 6 5 5 6 5 174 173 168 72 72 71 5 6 5 5 6 5 5 6 5 16 15 15 +40 40 39 56 56 55 5 6 5 5 6 5 72 72 71 72 72 71 88 88 86 72 72 71 +82 81 78 80 79 80 24 24 23 5 6 5 5 6 5 5 6 5 56 56 55 104 104 102 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +40 40 39 72 72 71 5 6 5 5 6 5 5 6 5 88 88 86 72 72 71 104 104 102 +72 72 71 88 88 86 104 104 102 24 24 23 5 6 5 56 56 55 40 40 39 40 40 39 +5 6 5 16 15 15 88 88 86 5 6 5 16 15 15 40 40 39 16 15 15 5 6 5 +5 6 5 72 72 71 98 98 94 221 219 210 128 127 124 160 158 152 160 158 152 205 203 194 +205 203 194 166 164 157 137 136 134 154 152 148 188 187 183 88 88 86 88 88 86 5 6 5 +5 6 5 40 40 39 40 40 39 5 6 5 5 6 5 104 104 102 24 24 23 5 6 5 +24 24 23 56 56 55 40 40 39 5 6 5 24 24 23 88 88 86 104 104 102 82 81 78 +88 88 86 82 81 78 88 88 86 5 6 5 5 6 5 5 6 5 72 72 71 40 40 39 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 88 88 86 5 6 5 5 6 5 5 6 5 104 104 102 82 81 78 137 136 134 +104 104 102 137 136 134 104 104 102 5 6 5 5 6 5 16 15 15 32 32 31 5 6 5 +5 6 5 72 72 71 154 152 148 5 6 5 5 6 5 5 6 5 56 56 55 5 6 5 +5 6 5 24 24 23 56 56 55 137 136 134 176 173 165 205 203 194 154 152 148 194 193 189 +205 203 194 149 147 140 194 193 189 188 187 183 137 136 134 80 79 77 40 40 39 5 6 5 +5 6 5 98 98 94 5 6 5 5 6 5 5 6 5 154 152 148 72 72 71 5 6 5 +5 6 5 56 56 55 16 15 15 5 6 5 5 6 5 104 104 102 121 120 118 104 104 102 +104 104 102 104 104 102 98 98 94 5 6 5 5 6 5 5 6 5 88 88 86 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 82 81 78 88 88 86 5 6 5 16 15 15 114 114 110 88 88 86 121 120 118 +88 88 86 121 120 118 72 72 71 5 6 5 5 6 5 63 64 63 16 15 15 5 6 5 +5 6 5 16 16 15 104 104 102 114 114 110 56 56 55 88 88 86 16 15 15 5 6 5 +56 56 55 121 120 118 104 104 102 183 181 174 154 152 148 210 208 200 183 181 174 200 197 187 +209 206 197 193 190 182 200 197 187 172 170 164 188 187 183 98 98 94 104 104 102 40 40 39 +5 6 5 24 24 23 88 88 86 72 72 71 88 88 86 104 104 102 24 24 23 5 6 5 +5 6 5 16 15 15 56 56 55 5 6 5 5 6 5 72 72 71 121 120 118 104 104 102 +104 104 102 104 104 102 88 88 86 24 24 23 5 6 5 72 72 71 82 81 78 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 137 136 134 24 24 23 5 6 5 24 24 23 40 40 39 82 81 78 +56 56 55 82 81 78 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 40 40 39 40 40 39 24 24 23 5 6 5 16 15 15 +16 15 15 16 15 15 72 72 71 82 81 78 72 72 71 154 152 148 193 190 182 177 175 169 +200 197 187 188 187 183 149 147 140 82 81 78 82 81 78 72 72 71 24 24 23 24 24 23 +16 15 15 5 6 5 24 24 23 40 40 39 40 40 39 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 82 81 78 72 72 71 +72 72 71 72 72 71 40 40 39 5 6 5 24 24 23 104 104 102 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 40 40 39 132 131 126 5 6 5 24 24 23 56 56 55 145 143 139 +104 104 102 104 104 102 5 6 5 40 40 39 24 24 23 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 56 56 55 16 15 15 56 56 55 +56 56 55 166 164 157 121 120 118 183 181 174 154 152 148 172 170 164 172 170 164 185 183 175 +185 183 175 172 170 164 166 164 157 166 164 157 166 164 157 121 120 118 149 147 140 56 56 55 +40 40 39 24 24 23 56 56 55 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 16 15 15 24 24 23 5 6 5 82 81 78 88 88 86 +98 98 94 56 56 55 24 24 23 5 6 5 121 120 118 32 32 31 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 82 81 78 40 40 39 5 6 5 56 56 55 104 104 102 +72 72 71 24 24 23 5 6 5 56 56 55 56 56 55 5 6 5 5 6 5 5 6 5 +24 24 23 5 6 5 5 6 5 16 16 15 24 24 23 16 15 15 5 6 5 72 72 71 +114 114 110 132 131 126 149 147 140 200 197 187 177 175 169 210 208 200 176 173 165 183 181 174 +183 181 174 188 187 183 194 193 189 183 181 174 200 197 187 154 152 148 132 131 126 112 111 108 +72 72 71 5 6 5 5 6 5 24 24 23 24 24 23 5 6 5 5 6 5 24 24 23 +5 6 5 5 6 5 5 6 5 24 24 23 40 40 39 5 6 5 5 6 5 82 81 78 +88 88 86 72 72 71 16 15 15 72 72 71 137 136 134 16 15 15 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 16 15 15 104 104 102 16 15 15 56 56 55 104 104 102 +56 56 55 5 6 5 5 6 5 88 88 86 154 152 148 16 15 15 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 24 24 23 5 6 5 5 6 5 121 120 118 149 147 140 +145 143 139 188 187 183 172 170 164 194 193 189 154 152 148 188 187 183 149 147 140 169 167 161 +154 152 148 172 170 164 172 170 164 172 170 164 188 187 183 172 170 164 172 170 164 121 120 118 +137 136 134 121 120 118 5 6 5 5 6 5 24 24 23 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 16 15 15 183 181 174 16 15 15 5 6 5 5 6 5 72 72 71 +82 81 78 82 81 78 24 24 23 128 127 124 40 40 39 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 40 40 39 56 56 55 104 104 102 +16 15 15 5 6 5 5 6 5 5 6 5 104 104 102 24 24 23 5 6 5 40 40 39 +40 40 39 24 24 23 5 6 5 5 6 5 16 16 15 56 56 55 104 104 102 166 164 157 +172 170 164 205 203 194 166 164 157 193 191 184 137 136 134 154 152 148 56 56 55 132 131 126 +104 104 102 104 104 102 137 136 134 154 152 148 188 187 183 183 181 174 209 206 197 166 164 157 +183 181 174 104 104 102 72 72 71 16 15 15 5 6 5 5 6 5 24 24 23 56 56 55 +40 40 39 5 6 5 24 24 23 88 88 86 5 6 5 5 6 5 5 6 5 16 15 15 +72 72 71 63 64 63 56 56 55 56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 112 111 108 82 81 78 24 24 23 +5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 137 136 134 24 24 23 40 40 39 +5 6 5 5 6 5 5 6 5 82 81 78 176 173 165 183 181 174 183 181 174 200 197 187 +177 175 169 194 193 189 166 164 157 169 167 161 16 15 15 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 16 15 15 132 131 126 176 173 165 194 193 189 166 164 157 +194 193 189 177 175 169 185 183 175 183 181 174 88 88 86 5 6 5 5 6 5 16 15 15 +40 40 39 16 15 15 154 152 148 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 104 104 102 104 104 102 88 88 86 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 104 104 102 82 81 78 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 154 152 148 121 120 118 56 56 55 +40 40 39 5 6 5 5 6 5 5 6 5 24 24 23 169 167 161 205 203 194 221 219 210 +200 199 195 194 193 189 40 40 39 5 6 5 16 15 15 137 136 134 82 81 78 121 120 118 +82 81 78 104 104 102 88 88 86 16 15 15 5 6 5 64 63 61 194 193 189 194 193 189 +210 208 200 205 203 194 154 152 148 24 24 23 5 6 5 5 6 5 5 6 5 56 56 55 +48 48 47 169 167 161 169 167 161 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 82 81 78 104 104 102 96 95 92 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 112 111 108 96 95 92 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 137 136 134 56 56 55 40 40 39 +5 6 5 5 6 5 16 15 15 121 120 118 216 213 203 229 227 218 229 227 218 225 221 211 +188 187 183 56 56 55 5 6 5 48 48 47 56 56 55 88 88 86 56 56 55 104 104 102 +63 64 63 72 72 71 82 81 78 88 88 86 40 40 39 5 6 5 56 56 55 205 203 194 +216 213 203 229 227 218 229 227 218 209 206 197 137 136 134 24 24 23 5 6 5 5 6 5 +24 24 23 72 72 71 166 164 157 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 72 72 71 88 88 86 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 56 56 55 5 6 5 +5 6 5 72 72 71 188 187 183 210 208 200 229 227 218 236 232 222 210 208 200 210 208 200 +40 40 39 16 15 15 72 72 71 104 104 102 82 81 78 137 136 134 98 98 94 121 120 118 +88 88 86 104 104 102 104 104 102 88 88 86 104 104 102 56 56 55 5 6 5 63 64 63 +193 191 184 210 208 200 229 227 218 225 221 211 205 203 194 193 191 184 82 81 78 5 6 5 +5 6 5 72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 5 6 5 +5 6 5 5 6 5 16 15 15 104 104 102 221 219 210 229 227 218 221 219 210 172 170 164 +5 6 5 24 24 23 104 104 102 121 120 118 88 88 86 132 131 126 104 104 102 121 120 118 +104 104 102 104 104 102 121 120 118 104 104 102 121 120 118 104 104 102 40 40 39 5 6 5 +137 136 134 216 213 203 236 232 222 229 227 218 104 104 102 16 15 15 5 6 5 5 6 5 +5 6 5 82 81 78 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 5 6 5 +16 16 15 185 183 175 225 221 211 236 232 222 240 237 227 240 237 227 240 237 227 166 164 157 +5 6 5 169 167 161 82 81 78 5 6 5 5 6 5 72 72 71 121 120 118 121 120 118 +72 72 71 137 136 134 72 72 71 5 6 5 5 6 5 104 104 102 154 152 148 5 6 5 +154 152 148 236 232 222 240 237 227 236 232 222 240 237 227 221 219 210 154 152 148 5 6 5 +5 6 5 145 143 139 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 160 158 152 5 6 5 +5 6 5 16 15 15 104 104 102 240 237 227 231 229 218 221 219 210 221 219 210 183 181 174 +16 15 15 145 143 139 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 24 24 23 +5 6 5 56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 121 120 118 5 6 5 +154 152 148 210 208 200 221 219 210 231 229 218 221 219 210 72 72 71 16 15 15 5 6 5 +5 6 5 194 193 189 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 +98 98 94 225 221 211 229 227 218 221 219 210 216 213 203 221 219 210 154 152 148 104 104 102 +5 6 5 72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 56 56 55 16 15 15 +5 6 5 40 40 39 5 6 5 5 6 5 5 6 5 5 6 5 56 56 55 5 6 5 +82 81 78 149 147 140 210 208 200 221 219 210 194 193 189 229 227 218 221 219 210 72 72 71 +56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 98 98 94 +56 56 55 56 56 55 166 164 157 188 187 183 188 187 183 183 181 174 137 136 134 149 147 140 +24 24 23 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 16 15 15 +5 6 5 72 72 71 16 15 15 5 6 5 5 6 5 5 6 5 16 15 15 40 40 39 +145 143 139 145 143 139 166 164 157 185 183 175 188 187 183 166 164 157 56 56 55 40 40 39 +132 131 126 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +24 24 23 193 191 184 176 173 165 205 203 194 183 181 174 160 158 152 149 147 140 128 127 124 +24 24 23 63 64 63 24 24 23 24 24 23 16 15 15 72 72 71 72 72 71 16 15 15 +5 6 5 82 81 78 56 56 55 16 16 15 24 24 23 56 56 55 56 56 55 40 40 39 +121 120 118 166 164 157 172 170 164 174 173 168 177 175 169 183 181 174 176 173 165 24 24 23 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 72 72 71 +72 72 71 88 88 86 132 131 126 210 208 200 205 203 194 210 208 200 160 158 152 183 181 174 +72 72 71 5 6 5 40 40 39 72 72 71 56 56 55 88 88 86 24 24 23 16 15 15 +5 6 5 56 56 55 72 72 71 56 56 55 56 56 55 32 32 31 5 6 5 88 88 86 +172 170 164 154 152 148 200 197 187 209 206 197 221 219 210 132 131 126 56 56 55 98 98 94 +56 56 55 40 40 39 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 56 56 55 82 81 78 56 56 55 +24 24 23 137 136 134 188 187 183 193 190 182 166 164 157 114 114 110 183 181 174 210 208 200 +104 104 102 16 15 15 5 6 5 24 24 23 24 24 23 40 40 39 16 16 15 5 6 5 +5 6 5 24 24 23 40 40 39 40 40 39 24 24 23 5 6 5 16 15 15 137 136 134 +194 193 189 177 175 169 104 104 102 183 181 174 188 187 183 194 193 189 114 114 110 16 15 15 +56 56 55 104 104 102 40 40 39 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 24 24 23 5 6 5 +137 136 134 172 170 164 145 143 139 200 197 187 132 131 126 194 193 189 154 152 148 104 104 102 +88 88 86 121 120 118 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 16 15 15 121 120 118 98 98 94 +104 104 102 166 164 157 185 183 176 137 136 134 177 175 169 166 164 157 154 152 148 145 143 139 +5 6 5 32 32 31 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 +82 81 78 72 72 71 154 152 148 193 190 182 154 152 148 149 147 140 72 72 71 160 158 152 +98 98 94 72 72 71 56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 72 72 71 104 104 102 +137 136 134 72 72 71 137 136 134 176 173 165 183 181 174 176 173 165 72 72 71 82 81 78 +104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 72 72 71 +16 15 15 166 164 157 185 183 175 194 193 189 166 164 157 114 114 110 149 147 140 169 167 161 +82 81 78 80 79 77 72 72 71 104 104 102 32 32 31 5 6 5 24 24 23 82 81 78 +56 56 55 72 72 71 5 6 5 40 40 39 82 81 78 72 72 71 63 64 63 104 104 102 +149 147 140 132 131 126 88 88 86 177 175 169 194 193 189 185 183 175 149 147 140 5 6 5 +72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 16 15 15 +24 24 23 174 173 168 160 158 152 205 203 194 121 120 118 166 164 157 166 164 157 172 170 164 +72 72 71 137 136 134 40 40 39 40 40 39 24 24 23 40 40 39 40 40 39 40 40 39 +24 24 23 56 56 55 56 56 55 56 56 55 40 40 39 72 72 71 121 120 118 72 72 71 +172 170 164 154 152 148 172 170 164 132 131 126 200 197 187 172 170 164 154 152 148 16 15 15 +16 15 15 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 72 72 71 +24 24 23 104 104 102 177 175 169 194 193 189 200 197 187 194 193 189 194 193 189 166 164 157 +149 147 140 114 114 110 82 81 78 104 104 102 40 40 39 145 143 139 56 56 55 16 15 15 +5 6 5 72 72 71 121 120 118 56 56 55 82 81 78 82 81 78 104 104 102 137 136 134 +169 167 161 185 183 176 194 193 189 194 193 189 188 187 183 185 183 175 88 88 86 24 24 23 +80 79 77 82 81 78 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 82 81 78 40 40 39 +5 6 5 128 127 124 154 152 148 104 104 102 166 164 157 114 114 110 166 164 157 82 81 78 +104 104 102 104 104 102 40 40 39 82 81 78 72 72 71 24 24 23 5 6 5 5 6 5 +5 6 5 5 6 5 24 24 23 88 88 86 82 81 78 72 72 71 82 81 78 98 98 94 +82 81 78 166 164 157 104 104 102 183 181 174 104 104 102 183 181 174 104 104 102 5 6 5 +16 16 15 114 114 110 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 121 120 118 16 15 15 +5 6 5 104 104 102 40 40 39 154 152 148 121 120 118 160 158 152 104 104 102 166 164 157 +88 88 86 121 120 118 82 81 78 72 72 71 16 15 15 16 15 15 5 6 5 40 40 39 +24 24 23 5 6 5 16 15 15 24 24 23 56 56 55 82 81 78 104 104 102 98 98 94 +166 164 157 104 104 102 166 164 157 121 120 118 154 152 148 40 40 39 88 88 86 5 6 5 +16 15 15 149 147 140 112 111 108 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 80 79 77 56 56 55 40 40 39 +5 6 5 5 6 5 24 24 23 166 164 157 128 127 124 188 187 183 154 152 148 188 187 183 +154 152 148 149 147 140 114 114 110 121 120 118 63 64 63 88 88 86 56 56 55 149 147 140 +104 104 102 88 88 86 72 72 71 104 104 102 88 88 86 121 120 118 154 152 148 154 152 148 +183 181 174 169 167 161 185 183 176 121 120 118 149 147 140 16 15 15 5 6 5 5 6 5 +24 24 23 56 56 55 65 64 63 40 40 39 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 32 32 31 121 120 118 121 120 118 5 6 5 +5 6 5 5 6 5 16 16 15 104 104 102 72 72 71 194 193 189 188 187 183 193 190 182 +172 170 164 183 181 174 145 143 139 183 181 174 121 120 118 166 164 157 137 136 134 154 152 148 +149 147 140 154 152 148 154 152 148 145 143 139 166 164 157 149 147 140 172 170 164 176 173 165 +194 193 189 188 187 183 185 183 175 56 56 55 82 81 78 5 6 5 5 6 5 5 6 5 +5 6 5 137 136 134 104 104 102 56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 56 56 55 121 120 118 40 40 39 5 6 5 +5 6 5 5 6 5 72 72 71 5 6 5 16 15 15 82 81 78 166 164 157 98 98 94 +154 152 148 193 190 182 154 152 148 188 187 183 132 131 126 183 181 174 137 136 134 183 181 174 +154 152 148 166 164 157 177 175 169 154 152 148 183 181 174 166 164 157 194 193 189 145 143 139 +96 95 92 166 164 157 88 88 86 16 15 15 5 6 5 72 72 71 5 6 5 5 6 5 +5 6 5 24 24 23 121 120 118 72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 48 48 47 121 120 118 88 88 86 40 40 39 5 6 5 +5 6 5 5 6 5 72 72 71 5 6 5 5 6 5 40 40 39 88 88 86 40 40 39 +183 181 174 185 183 175 172 170 164 183 181 174 177 175 169 188 187 183 160 158 152 183 181 174 +166 164 157 172 170 164 172 170 164 194 193 189 210 208 200 166 164 157 172 170 164 166 164 157 +40 40 39 72 72 71 56 56 55 5 6 5 5 6 5 80 79 77 5 6 5 5 6 5 +5 6 5 40 40 39 72 72 71 154 152 148 24 24 23 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 132 131 126 48 48 47 121 120 118 +40 40 39 5 6 5 16 16 15 96 95 92 5 6 5 5 6 5 5 6 5 32 32 31 +149 147 140 32 32 31 193 191 184 221 219 210 98 98 94 194 193 189 205 203 194 177 175 169 +185 183 175 200 197 187 193 191 184 121 120 118 216 213 203 200 197 187 56 56 55 160 158 152 +56 56 55 5 6 5 5 6 5 5 6 5 80 79 77 5 6 5 5 6 5 32 32 31 +114 114 110 32 32 31 112 111 108 149 147 140 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 88 88 86 194 193 189 154 152 148 137 136 134 72 72 71 +5 6 5 5 6 5 5 6 5 40 40 39 40 40 39 24 24 23 5 6 5 5 6 5 +5 6 5 24 24 23 166 164 157 98 98 94 5 6 5 80 79 77 176 173 165 166 164 157 +205 203 194 176 173 165 88 88 86 5 6 5 88 88 86 188 187 183 56 56 55 5 6 5 +5 6 5 5 6 5 24 24 23 48 48 47 40 40 39 5 6 5 5 6 5 5 6 5 +56 56 55 166 164 157 149 147 140 176 173 165 82 81 78 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 72 72 71 104 104 102 96 95 92 88 88 86 24 24 23 5 6 5 +5 6 5 5 6 5 56 56 55 5 6 5 40 40 39 72 72 71 5 6 5 5 6 5 +5 6 5 5 6 5 16 15 15 5 6 5 5 6 5 98 98 94 80 79 77 166 164 157 +183 181 174 104 104 102 104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 16 15 15 56 56 55 24 24 23 5 6 5 80 79 77 5 6 5 5 6 5 +5 6 5 24 24 23 72 72 71 88 88 86 121 120 118 65 64 63 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 40 40 39 24 24 23 121 120 118 121 120 118 88 88 86 82 81 78 +5 6 5 65 64 63 24 24 23 24 24 23 24 24 23 5 6 5 98 98 94 121 120 118 +24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 +56 56 55 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 40 40 39 +104 104 102 88 88 86 5 6 5 24 24 23 40 40 39 24 24 23 72 72 71 5 6 5 +72 72 71 96 95 92 104 104 102 149 147 140 24 24 23 40 40 39 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 40 40 39 166 164 157 121 120 118 82 81 78 40 40 39 +24 24 23 166 164 157 56 56 55 149 147 140 104 104 102 5 6 5 5 6 5 5 6 5 +104 104 102 121 120 118 88 88 86 16 15 15 16 15 15 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 16 15 15 5 6 5 114 114 110 121 120 118 98 98 94 +5 6 5 5 6 5 5 6 5 121 120 118 121 120 118 72 72 71 137 136 134 24 24 23 +24 24 23 88 88 86 56 56 55 149 147 140 16 16 15 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 88 88 86 104 104 102 80 79 80 104 104 102 +72 72 71 104 104 102 80 79 80 104 104 102 16 15 15 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 154 152 148 88 88 86 154 152 148 98 98 94 169 167 161 +104 104 102 121 120 118 128 127 124 121 120 118 149 147 140 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 24 24 23 88 88 86 98 98 94 88 88 86 88 88 86 +72 72 71 104 104 102 88 88 86 112 111 108 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 188 187 183 149 147 140 121 120 118 104 104 102 121 120 118 +104 104 102 145 143 139 32 32 31 5 6 5 5 6 5 56 56 55 72 72 71 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 16 15 15 5 6 5 5 6 5 +5 6 5 72 72 71 56 56 55 5 6 5 5 6 5 40 40 39 121 120 118 137 136 134 +88 88 86 121 120 118 98 98 94 149 147 140 193 191 184 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 82 81 78 154 152 148 177 175 169 154 152 148 137 136 134 169 167 161 +112 111 108 82 81 78 5 6 5 5 6 5 16 15 15 188 187 183 56 56 55 5 6 5 +5 6 5 5 6 5 154 152 148 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 137 136 134 5 6 5 5 6 5 +5 6 5 64 63 61 169 167 161 5 6 5 5 6 5 5 6 5 56 56 55 145 143 139 +137 136 134 169 167 161 145 143 139 200 199 195 72 72 71 48 47 46 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 63 64 63 177 175 169 154 152 148 137 136 134 121 120 118 149 147 140 +104 104 102 40 40 39 56 56 55 56 56 55 104 104 102 137 136 134 104 104 102 40 40 39 +5 6 5 5 6 5 149 147 140 194 193 189 5 6 5 24 24 23 5 6 5 5 6 5 +5 6 5 5 6 5 24 24 23 5 6 5 154 152 148 114 114 110 5 6 5 5 6 5 +5 6 5 137 136 134 121 120 118 121 120 118 88 88 86 5 6 5 32 32 31 145 143 139 +112 111 108 169 167 161 145 143 139 188 187 183 185 183 175 56 56 55 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 121 120 118 24 24 23 5 6 5 145 143 139 104 104 102 72 72 71 +5 6 5 5 6 5 24 24 23 121 120 118 88 88 86 137 136 134 63 64 63 5 6 5 +5 6 5 104 104 102 166 164 157 183 181 174 88 88 86 194 193 189 5 6 5 5 6 5 +5 6 5 5 6 5 132 131 126 121 120 118 154 152 148 166 164 157 104 104 102 5 6 5 +5 6 5 40 40 39 104 104 102 104 104 102 104 104 102 82 81 78 5 6 5 5 6 5 +40 40 39 145 143 139 149 147 140 5 6 5 16 15 15 137 136 134 16 15 15 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 121 120 118 137 136 134 104 104 102 104 104 102 +40 40 39 56 56 55 82 81 78 104 104 102 88 88 86 88 88 86 16 15 15 5 6 5 +16 15 15 166 164 157 149 147 140 183 181 174 145 143 139 166 164 157 5 6 5 5 6 5 +5 6 5 5 6 5 114 114 110 149 147 140 154 152 148 154 152 148 166 164 157 5 6 5 +5 6 5 24 24 23 88 88 86 80 79 80 88 88 86 104 104 102 56 56 55 32 31 31 +88 88 86 121 120 118 121 120 118 160 158 152 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 64 63 61 183 181 174 160 158 152 137 136 134 169 167 161 +121 120 118 121 120 118 104 104 102 104 104 102 72 72 71 40 40 39 5 6 5 98 98 94 +121 120 118 172 170 164 154 152 148 193 191 184 154 152 148 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 166 164 157 169 167 161 166 164 157 166 164 157 104 104 102 +82 81 78 5 6 5 24 24 23 82 81 78 88 88 86 132 131 126 121 120 118 121 120 118 +104 104 102 154 152 148 166 164 157 194 193 189 40 40 39 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 82 81 78 72 72 71 98 98 94 149 147 140 145 143 139 +104 104 102 145 143 139 88 88 86 104 104 102 24 24 23 5 6 5 104 104 102 56 56 55 +16 15 15 137 136 134 154 152 148 166 164 157 82 81 78 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 98 98 94 160 158 152 154 152 148 149 147 140 5 6 5 +56 56 55 104 104 102 5 6 5 16 15 15 88 88 86 112 111 108 104 104 102 137 136 134 +137 136 134 169 167 161 96 95 92 40 40 39 72 72 71 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 121 120 118 104 104 102 +121 120 118 104 104 102 72 72 71 82 81 78 56 56 55 16 15 15 5 6 5 5 6 5 +16 15 15 154 152 148 121 120 118 183 181 174 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 137 136 134 128 127 124 149 147 140 5 6 5 +5 6 5 5 6 5 5 6 5 72 72 71 72 72 71 88 88 86 82 81 78 145 143 139 +88 88 86 121 120 118 104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 82 81 78 5 6 5 +24 24 23 121 120 118 72 72 71 88 88 86 56 56 55 82 81 78 72 72 71 5 6 5 +40 40 39 137 136 134 104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 16 16 15 5 6 5 5 6 5 5 6 5 121 120 118 145 143 139 24 24 23 +5 6 5 72 72 71 72 72 71 56 56 55 80 79 80 82 81 78 104 104 102 16 15 15 +5 6 5 104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 82 81 78 +24 24 23 149 147 140 145 143 139 188 187 183 137 136 134 149 147 140 72 72 71 121 120 118 +145 143 139 188 187 183 24 24 23 5 6 5 5 6 5 5 6 5 56 56 55 16 15 15 +5 6 5 88 88 86 56 56 55 5 6 5 5 6 5 24 24 23 166 164 157 149 147 140 +132 131 126 72 72 71 137 136 134 149 147 140 169 167 161 169 167 161 137 136 134 24 24 23 +72 72 71 72 72 71 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 24 24 23 +40 40 39 121 120 118 24 24 23 63 64 63 88 88 86 104 104 102 72 72 71 104 104 102 +82 81 78 24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 64 63 61 24 24 23 +5 6 5 56 56 55 121 120 118 5 6 5 5 6 5 5 6 5 24 24 23 104 104 102 +104 104 102 88 88 86 104 104 102 88 88 86 72 72 71 24 24 23 112 111 108 16 15 15 +24 24 23 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 72 72 71 82 81 78 16 16 15 121 120 118 137 136 134 98 98 94 121 120 118 +72 72 71 56 56 55 40 40 39 5 6 5 24 24 23 154 152 148 104 104 102 56 56 55 +5 6 5 104 104 102 132 131 126 72 72 71 16 15 15 24 24 23 56 56 55 82 81 78 +121 120 118 104 104 102 121 120 118 104 104 102 24 24 23 88 88 86 72 72 71 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 56 56 55 5 6 5 40 40 39 149 147 140 104 104 102 145 143 139 +137 136 134 121 120 118 82 81 78 16 15 15 72 72 71 154 152 148 104 104 102 149 147 140 +80 79 80 121 120 118 121 120 118 121 120 118 32 32 31 82 81 78 121 120 118 145 143 139 +145 143 139 121 120 118 154 152 148 40 40 39 5 6 5 72 72 71 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 72 72 71 56 56 55 5 6 5 +16 16 15 132 131 126 104 104 102 137 136 134 88 88 86 137 136 134 88 88 86 149 147 140 +114 114 110 121 120 118 137 136 134 104 104 102 121 120 118 104 104 102 121 120 118 16 15 15 +5 6 5 72 72 71 82 81 78 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 88 88 86 5 6 5 +5 6 5 16 15 15 88 88 86 169 167 161 40 40 39 56 56 55 128 127 124 154 152 148 +121 120 118 145 143 139 63 64 63 40 40 39 145 143 139 82 81 78 24 24 23 5 6 5 +5 6 5 88 88 86 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 56 56 55 5 6 5 5 6 5 82 81 78 121 120 118 +104 104 102 82 81 78 16 15 15 5 6 5 40 40 39 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 104 104 102 +104 104 102 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 +5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 + diff --git a/resources/linux-6.16.1/drivers/video/logo/logo_linux_mono.pbm b/resources/linux-6.16.1/drivers/video/logo/logo_linux_mono.pbm new file mode 100644 index 0000000..c29f494 --- /dev/null +++ b/resources/linux-6.16.1/drivers/video/logo/logo_linux_mono.pbm @@ -0,0 +1,185 @@ +P1 +80 80 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 +1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 +0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 +0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 +0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 +1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 +0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 +1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 +1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 +1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 +1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 +1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 +1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 +1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 +1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 +1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 +0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 +1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 +0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 +1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 +1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 +1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 +0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 +1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 +1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 +1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1 0 +1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 +0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 +0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 +0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 +0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 +1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 +0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 +0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 +1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 +0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 1 +1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 +1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +0 0 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 +1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 +0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 +1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 +1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 +0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 +0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 +0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 +0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 0 0 +0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 +1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 +1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 +1 1 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 +1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 +1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 +1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 +1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 +0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +0 1 1 1 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 diff --git a/resources/linux-6.16.1/drivers/video/logo/logo_linux_vga16.ppm b/resources/linux-6.16.1/drivers/video/logo/logo_linux_vga16.ppm new file mode 100644 index 0000000..5cf19b2 --- /dev/null +++ b/resources/linux-6.16.1/drivers/video/logo/logo_linux_vga16.ppm @@ -0,0 +1,678 @@ +P3 +80 80 +255 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 0 0 0 170 170 170 170 170 170 85 85 85 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 170 170 170 85 85 85 +170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 +85 85 85 170 170 170 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +85 85 85 170 170 170 170 170 170 170 170 170 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +85 85 85 170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +170 170 170 0 0 0 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 170 170 170 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 170 170 170 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 170 170 170 85 85 85 170 170 170 +170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 +85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 +85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +85 85 85 170 170 170 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 +170 170 170 85 85 85 170 170 170 170 170 170 85 85 85 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 170 170 170 85 85 85 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 170 170 170 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 170 170 170 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 0 0 0 0 0 0 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 170 170 170 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 +170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 85 85 85 +170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +170 170 170 85 85 85 170 170 170 170 170 170 170 170 170 85 85 85 +0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 85 85 85 +170 170 170 85 85 85 170 170 170 170 170 170 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 +85 85 85 170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 +170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 +170 170 170 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 170 170 170 +170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +0 0 0 85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 +85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 +85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 +170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 85 85 85 +170 170 170 85 85 85 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 +170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 170 170 170 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 +170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 85 85 85 85 85 85 +170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 +85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 0 0 0 170 170 170 170 170 170 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 170 170 170 170 170 170 0 0 0 170 170 170 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 +85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 170 170 170 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 +170 170 170 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 85 85 85 170 170 170 +85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 +170 170 170 85 85 85 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 +170 170 170 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 +170 170 170 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 85 85 85 170 170 170 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 +85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 +170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 85 85 85 +0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 170 170 170 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 +85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 85 85 85 85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 +85 85 85 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 85 85 85 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +0 0 0 85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 85 85 85 +85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 +170 170 170 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 85 85 85 +85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 +85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 +85 85 85 170 170 170 0 0 0 85 85 85 85 85 85 170 170 170 85 85 85 +85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/resources/wdm-1.28/pixmaps/ziomekos.xpm b/resources/wdm-1.28/pixmaps/ziomekos.xpm new file mode 100644 index 0000000..79e9749 --- /dev/null +++ b/resources/wdm-1.28/pixmaps/ziomekos.xpm @@ -0,0 +1,392 @@ +/* XPM */ +static char *ziomekos_new[] = { +/* columns rows colors chars-per-pixel */ +"200 130 256 2 ", +" c #5F5E5D", +". c #6F6E6D", +"X c #141413", +"o c #B9B7B0", +"O c #D7D4CA", +"+ c #A9A69E", +"@ c #403F3E", +"# c #BEBDB5", +"$ c #363635", +"% c #C1BFB9", +"& c #5F605F", +"* c #51514E", +"= c #7F807F", +"- c #121211", +"; c #CFCCC4", +": c #C9C6BE", +"> c #1F1F1E", +", c #4F4E4D", +"< c #585756", +"1 c #EEEBE1", +"2 c #92918D", +"3 c #595956", +"4 c #333332", +"5 c #494947", +"6 c #BFBEB8", +"7 c #6A6966", +"8 c #050506", +"9 c #535352", +"0 c #3B3B3A", +"q c #484745", +"w c #DDDBD2", +"e c #565655", +"r c #3D3C3B", +"t c #9E9D9A", +"y c #96958E", +"u c #AEADA9", +"i c #41403F", +"p c #787775", +"a c #302F2E", +"s c #ACABA5", +"d c #3B3A39", +"f c #373736", +"g c #323231", +"h c #676766", +"j c #A6A5A1", +"k c #3F403F", +"l c #605F5D", +"z c #D1CEC5", +"x c #353433", +"c c #D5D2C9", +"v c #B9B6AE", +"b c #B0AFAC", +"n c #82817E", +"m c #B0AEA6", +"M c #A8A7A4", +"N c #666562", +"B c #504F4D", +"V c #676665", +"C c #D9D6CD", +"Z c #8A8985", +"A c #272726", +"S c #626161", +"D c gray1", +"F c #B0ADA3", +"G c #0B0A0A", +"H c #AEADA6", +"J c #555553", +"K c #080807", +"L c #CCC9BE", +"P c #2F2F2E", +"I c #060506", +"U c gray2", +"Y c #94938D", +"T c #3F3E3D", +"R c #4F4F4E", +"E c #4B4B4A", +"W c #474746", +"Q c #5B5B5A", +"! c #B0AFA9", +"~ c #282827", +"^ c #54534F", +"/ c #A8A7A1", +"( c #61615E", +") c #8C8B86", +"_ c #686766", +"` c #2B2B2A", +"' c #2C2C2B", +"] c #8E8D87", +"[ c #A09F99", +"{ c #E5E2DA", +"} c #5B5A59", +"| c #6B6B6A", +" . c #9C9B96", +".. c #A19E96", +"X. c #CDCAC2", +"o. c #6D6D6A", +"O. c #7E7E7D", +"+. c #D9D7D0", +"@. c #DBD9CE", +"#. c #D4D2CB", +"$. c #ADACAA", +"%. c gray16", +"&. c #B4B2AB", +"*. c #181718", +"=. c #212120", +"-. c #252525", +";. c #4D4D4A", +":. c #7D7D7A", +">. c #969591", +",. c #6C6B67", +"<. c #5D5C57", +"1. c #656564", +"2. c #6E6D6D", +"3. c #908E87", +"4. c #D9D6CA", +"5. c #474645", +"6. c #EDEADD", +"7. c #050606", +"8. c #525251", +"9. c #3D3D3C", +"0. c #5F5F5E", +"q. c #B7B5AD", +"w. c #0E0E0E", +"e. c #313130", +"r. c #ABA9A2", +"t. c #D1CDC3", +"y. c #0A0909", +"u. c #242423", +"i. c #99968E", +"p. c #060606", +"a. c #C3C1BA", +"s. c #1C1B1B", +"d. c #7A7A79", +"f. c #706F6C", +"g. c #908F8B", +"h. c #D1CFC8", +"j. c #060505", +"k. c #4C4B47", +"l. c #131312", +"z. c #10100F", +"x. c #1B1B1A", +"c. c #989791", +"v. c #454543", +"b. c #787772", +"n. c #838281", +"m. c #C3C1B7", +"M. c #6F7070", +"N. c #232322", +"B. c #21201F", +"V. c #201F1F", +"C. c #4A4A49", +"Z. c #171716", +"A. c #636261", +"S. c #2E2E2D", +"D. c #6B6A69", +"F. c #F1EEE5", +"G. c #7B7A77", +"H. c #3F3F3E", +"J. c #424241", +"K. c #060605", +"L. c #807F7B", +"P. c #939392", +"I. c #E7E3D8", +"U. c #393836", +"Y. c #88867F", +"T. c #191919", +"R. c #C7C5BE", +"E. c #C9C7C1", +"W. c #E2DED5", +"Q. c #64625E", +"!. c #E1DDD2", +"~. c #888783", +"^. c #BBB9AF", +"/. c #30302F", +"(. c #A09F9C", +"). c #C9C6BB", +"_. c #414140", +"`. c #C5C2B9", +"'. c #868582", +"]. c #101010", +"[. c #7C7B76", +"{. c #090808", +"}. c #C1BEB6", +"|. c #A6A49E", +" X c #9E9C96", +".X c #868685", +"XX c #8E8D89", +"oX c #100F0F", +"OX c #71716E", +"+X c #767572", +"@X c #86857F", +"#X c #515150", +"$X c #1D1D1C", +"%X c #A3A3A2", +"&X c gray30", +"*X c #494948", +"=X c DimGray", +"-X c #151515", +";X c #989795", +":X c #141313", +">X c #4C4B49", +",X c #646362", +" U.i 7XU.K K K.U U K.p.U K.K.nXK.U 7.;.Q 7 JX_ o.3 ;.. +XDXVX;.lXj.U p.K.U U K.K.U U p.K.{.K 0 XJ ;.[ bX}.&.( 5 * ^ 6X5.p.U U U K.p.nXp.p.GX4 +X3 l.y.y.S.qXB n I D D I I I p.p.U U nXU U U U U U p.p.K.K.K.p.K.p.K.K.K.U U U U U U U U K.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U K.U U U p.U p.U K.U U I K.K.U p.nXU U U U U U U U U p.U p.p.p.U j.U K.G 0X/.5 T nX7.D > ;.u.K D K K.D nX{.U D uXS. ~ n s +XL.;Xn JXXX'.,X-XD 7.0 c.+ 4Xa.X.v pXy 5 p.U 7.wXJXZ ) +X:.tXO.JXNXmXT.lX7.D D I D :XZ >.a y.D 8 D U U U I U nXU K.U U nXU U U U nXp.7.U K.p.U U nXp.U U U U U K.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U nXU p.K.K.U U nXU U U U 7.nXU U U U U U U U U U U U U U U U nX-.~.J 3 G D D D D nX-XrX*X,X=XMXC.%.nXnXK w.zX%.A -Xy.;.8Xo c c L iXSXG $X=.aX> y.K 7.7.y.A E * UXeX, u.7.7.U D D oXe qX:.HXI D j.D D D I I U U U K.U nXU j.p.U nXU p.p.p.K.p.U p.p.K.p.nXU K.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U K.K.p.K.p.U U U p.nXU U U U U U U U U U U U p.U nXK.p.p.W AXN N.D U D I 3X$XjXMX0 < 6X3XG K p.j.7.3X` f.g.UXD.Z |.).t.+.5Xm.) f.Z d.:.` G 7.7.nX7.7.-X' 9 k 4 k gXD D D U I G Z 0XT lXI j.D I D D U U U U U j.K.U U U nXp.p.I p.nX7.p.K.p.p.p.nX8 U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U 7.U nXp.U nXK.p.j.U j.U U U K.U U U U K.U p.U K.U U U p.K.K.K.].#XZ DXf uXD 8 j.I S._.s.T.3XmXT.7.7.p.U GXK GXuXmXgXZ 6 [ 8X# R.5Xo kX3.q.@XaX$XG 7.K K 7.D 7.uX].x.-X3XE =X-XU 8 D j.I HX2.G.V I D D I D I D D D D D U U U j.p.U K.p.U p.p.p.p.p.p.p.K.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.nXU p.U U p.K.p.p.U p.K.U U nXU U U U U U U U U U U U p.y.- -.M.M.#XCXD D D D I I GX:X} %.y.7.D U nXp.lXf $X7.uXG 1X>.&.+ fXc 4.!.1 L r.* z.lXK T.9Xx.7.D D D 7.7.w.k > D y.7.U D U D *.} A..XCX{.{.I D D j.D D D I 8 I I I I U K.U p.K.p.p.nXU p.p.U U 7.K.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U 8 p.U I p.p.nXp.p.p.p.p.p.U U p.U U U p.U nXU U U U U U GX> q.M (.kXj n.S.D D I CXMXe.%.aX8 7.7.D 7.D 3XX X u.9X6X;X| r Y.O I.pX&.).kX&.m q.( SXtXR gX-.T.l.3XD 7.7.D D 7.> $ S.f %.U D I B.O.~.>./ .n HXI I D D D D I D D I j.D I K.p.K.K.p.p.p.p.U p.p.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U I I p.U p.p.p.p.p.nXp.p.p.U U U U U U U K.U K.K.U U X T ;.&XjXg %.C.R HX].U U 8 G :X- oX3XI 8 7.7.D D A P aXjXx.lXmX[.DX+X[ L a.5XC ).c + XL.Q.N.w.zXX:XD D D D I I I D I I I K.U U p.p.p.U p.K.K.K.j.p.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.U U K.p.p.p.K.p.K.p.U U U U U p.U U U U U U U p.=.+X) * $X> J wXP.2XGXD 8 %.$ T *.I j.8 8 7.6X-.T.uXp.p.l.e.` v.2 .4X}.R.#.+.C h.C q.bXF G.MXMX' -X7.7.nXl.N.aX7.U U U 7.T.' 9.=.GXD D s.A.2 S w.-X5 _ ~.$XD D D D I I D D I j.j.j.U p.p.p.p.K.p.p.K.p.p.p.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.j.U nXp.K.U K.p.p.p.p.p.U U U p.p.K.K.U U U p.w.VXe AXB.w.K x.0 E 5.y.I U U - 3X-XG j.D D 8 D -Xw.T.' -XuXp.G uX*.>X, [.:.Z / q.&.&.kXL.[ o.H.T.- y.K {.3X` < x.3X7.7.8 D D G w.l.w.8 D I l.5.h 1XZ.GXlXoX. 3 ( N.D D D D I I D I j.I I p.p.p.K.p.p.p.p.K.p.p.p.j.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.j.U p.p.U U K.p.p.U p.U U U U U U U U U {.w.X 7 W ^ z.D 7.X@ -X3XI D D D j.D I I I p.p.p.p.p.K.K.p.p.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.nXU U p.nXU U p.nXU U U U U K.D p :.AX~ -XzXCX7.D 7.&XrXe eX2.-X7.D D D U j.I I oX&X S.G -.gXQ M.gXA ,X4 e.G I HXe.VXv t.#.w z m.. ~ T y.D 5 aX1Xf ~ 6X| =.7.7.g _.C.3X7.7.D 7.D D D I lXe JXFXe &XoXU GX-XCX-.CX0XwX( GXj.j.I I I I I j.I p.p.p.p.p.p.p.p.p.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.p.p.U U p.U U p.K.U U j.U U N.hXv.S.v.B g N.A D 7.&X1.| eXeXJX7.D D U U D j.I s.N.BXLX*XLX7.K X 8.A -XM.J.s.GXI V.l ) Z iX&.q.+ y DXf.> K.K.' $ V A gX&X-XK 7.=.=X0.J.$ l.D D D D D D D {.0XS &XeX1.J U {.s.-.i 6XN 5.5..X{.D I D D j.D D I I K.K.p.p.p.p.p.K.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.p.K.U U U U p.U U U U U U G ' :.E d >X$XGXG 7.K lXC.*X3 ( FXJXD D D D D I -.rXS S g.O.*X8.K D 7.S.mX7.` -.8 8 I GX@ m { { 6.I.I.cXq.3 K.K.K.K T.P X ~ gXnXnXK | &X1XwXwXrXE aXD D D D I lXeXA.e eX8.7XuXGXI lX{.- 9XMXT iX3Xy.D j.I I I I j.I U I p.p.p.p.7.U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.p.U nXU U U j.K.U U K.7.f UXd.UX} 1._.` LXw.' rX2 KXIX=XV w.7.D 7.D U p.Z.J.< } = M.0Xn.y.U 7.Xw.D D D 7.7.-.kXhX-X&.N VX XL.r.X.c # |.y b.< [.lXsXY.~ D D D D 7.].0 (.4 D D D D 7.4 #XV K 8 nXnXy.R rX 2._ 9 JXe LXD 8 8 U U D uXe [.j.D D I I D I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U K.K.U U K.p.nXnXnXb.<.' mXD D D D 7.' g eXFXjX1XFXeX&Xf 3XD D ].gXk gXl.8 D I I I s.S |.UXj.U U 7.D l.VXc.N [.@XVXg.iXs 5X5Xm.v Y DX~.dXSX&.( -X7.nXnXnXK JX! eXmX7.7.D 7.7.zX~ K U 7.y.6XV n.g.wXIXJXtX2.FXqX8 D 8 I a :.N B D D D j.I I D D j.I I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D j.", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U 8 U U p.p.U U U K.U K.K.D G uXA mXnXD nXnX-X%.x.4 l.y.nXD ].e O..XO.1.V >.KXS &XU I I I PXn *.j.D D D 8 I I D 8 D D I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U p.p.K.K.nXnXK.K.nXK.D D D D qXU.nXnXnX].k 9 J.rXrX6X8.< e jX7.7.D 7.-.' ].D D D f g.UX$XI D 8 J.].nXnX7.x.9 SX[.8XsX[ E.v 3.u c O 4Xi.F ).! dXVX3.e k.x.nX7.l.e..g.c.Y u q.j c.hX .iX[. .b.< VXk w.-XLX$XMXx.].7.D D nXD D K.nXnXnXD U K g w.nXZ.h :.} eXM.2X3X*.j.G NXCX$XD D 8 I I D j.D 8 D I I I I D I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U j.U U K.D D D K.D K.K.D D D D K.S.SXv.- K.2XT _ D.9 ,X3X7.U f n.l.D D nXD D 7.7.7.7.8 8 :Xa , U I p.3XAXY ! kXr.t.; a.h.5XR.z z t.c L ).c ).}.O v Xs kX9.- p.7.7.0.0 ].D D D D K.K.D nXnXnXD 7.s e.nXnX7.d.R rXKXMX*.j.*.S.:.:XD D D D D I D I I D D D I D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D D K.K.K.K.D D D nXD D D x.x VX> w.g jX1.d.eX#Xw.U 7.P DX0 K D D D D mX-X8 7.D w.g ].lXI {.HXn iXy s m v 5X#.R.c +.: E.X.fXz ; ; c L R.4.m.pX/ |.dXJXT p.7.7.Z.%.X U 7.D zXZ.U D D D G =.g.` D nXD _ 0.V :.9 yXG a , N oXD D D D I I D j.I I D D D I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D D D D K.D K.D D D D D K.D D K.m.SXr S.a E 9 9.CXGXU p.* y NX-XD D D 7.w.uXD 7.7.Z.Z.GXU p.^ f.b.:.) &.+ r.# &.Y r./ ) ..M + kXr.c.r.+ kX4XH c.kXy 3 ,.) <.l.7.K l.` w.D nXuXuXK.D D D S.j J.T.D nXnXmX5.i qXjXCXa n ~.uXD D D D D D D j.I D D D D j.D j.j.j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D K.K.K.D K.D D D D D D D D D D D D u.<.*X8.:.(.%X=X$X8 U U y.3X,.7.D D D D K uX- K G 9.U 7.7.D .}.O { I.6.ZX1 1 6.1 1 W.{ { { W.6.W.!.F.6.I.F.1 1 6.6.+.L m.G.-XU 7.nXK D ].lXG G U D D D mXG.p.U U nXD w.D.g.% wX#Xd s.I D D D D D D D D I D D j.j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D K.D D K.K.D D D j.D D D K.D D D K.D , 5 a HXR qX*.8 D D D nXy.g.A D D D 6X' T.$X].7.7.K w.$X&X( :.+ |.r.L q.kXv o L.XXo.9Xf.+X( +X( J c.i.c.a.bXr.E.6 P...|.AXR N.lXK 7.D x.zX> $ e.K.K.K.$ DXnXU D D D nXlX%.1X9XP *XR G j.I D D D D D D I D D j.I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D D K.K.K.K.D D j.D D D D D D D D D D K.3 b.OXFX= Q y.U D D D nXnXQ.,.f G ~ 7.7.7.D 7.D l.Q . [ fX`.; 4.5Xz @.t.`.C ] L.L.,.C.< N 3 N AX<.b.Y.Y t.5X).C c # ).+.fX# ^.. ;.T.7.D 8 7.8 uXd K U.8X> D U D D nXD uX. Xq D j.D D D D nXD U -XV A.) d.:XD D D D j.D D I D I I I D D D I D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D D D D D D K.D K.K.K.K.K.D D K.K.D K.D D D K.d BXs.- D D D D D D D 7.D D 9XAX' %.-XD 7.D D D K N.H.g.iX2 iXkX@Xf.VX7.nXK.u.g [.[.q N +X3 8Xo.^ <.jXmXy.U oXS ] +X3.s XXL.6 6X-Xy.7.D D D 7.7.%.k * yXD D K.K.D D D D U 7.mXCXHXg {.D D D D D D D j.D I I D D 8 I I D D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D K.K.D D K.D D j.D D K.D D D K.f.b.$ GXD D D D 8 D U U 7.D A.JXk 1XK D 7.D w.mX( C #.cX4.cXw #.`.g.x U K gX=Xv.e 3 MX3 DXC.0.^ >XV A.C.e.8 I S.r.`.X.@.!.w I.X.^.G.` y.7.nXD uXe R hX9.D D j.D K.D K.D U D 7..j ~.(.2 2 2 O.h d.e.w.U 5.:...4Xq.o ; + ! E.s ( ` nXD lXgXL.g nXD nXD D D D K.nXD D 7.R N I D j.j.D D D D j.I D D D D D D D I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D j.", +"U U U U U U U U U U U U U U U U U U U U U U U U U U U U D D D D D D D D K.K.D K.K.D D D K.D D K.K.K.D D D D D K.uXuXU D D D I I I I D D D D %.JX=.U D 7.E ,.<.,X@Xv z 6 kXkXkXi j.oXLXQ 2.=XS KXM.,XM.d.( O.h 1.M.IXS UXV -.y.j.J sXq.|.}.).4XL.Q 3 :.6X7.D D K n .~ U 7.7.> ( sX; y ] kXy VXVXx D y.U.eXE h 1.1XrXrXe FX1.&X=Xe 9 1.0.8.Q FXR 2XK D -.~.VXsX/ H Y.^.kXk.x.y.D 7.K [ 9.nXD K.D K.K.K.K.K.D nXD nXU 8 I D I I D I I I I I I D j.I I I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D D K.D K.D K.K.K.K.D K.K.K.K.K.K.K.K.D D D D D D D D D I I I D I I 8 8 N.Q x.7.y.jX/ o ^.5Xw !.W.!.O ).* K.zXP.=XS.G K 7.$XQ =X1.1XgXd.KX1X%.D I D J.S n.aX8 q h.5Xw W.W.@.c ^.F sX;.7.nXG vXaXD nXK.K.K.K.K.K.K.D D 7.D D 8 I I I I I I I I I I I D I D I I D I j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D D D D D D D K.D D K.K.D nXK.K.D K.D D D D D D D U U D D I I I I I I D 8 -.1.$X7.K e.f e.e ! : ).).: |. .5 K.u.| > 7.7.7.nX7.mXJ.0.w.K 1.9XT.8 D 8 I w.=.Q -.U r |.j xX; X.4Xs < zXg x D 7.uX+X' D D D K.K.K.K.K.K.K.D U nXU I I D I D I I D D j.I I D j.D I I I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D j.", +"U U U U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D D D D D D D D D K.K.D D K.K.K.D K.D D D D K.D D D D D j.j.I D I I I D 8 8 s.&XD.l.7.uXr 7 Z L a.4X# q.>.sXq nXN.,.U U U U 7.7.7. 7 , $XD D K.K.K.K.K.D D K.D nXD nXj.I I D D I D I j.D I I D I I I I I D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D D D D D D D D D D K.K.D K.D K.K.K.D D K.K.D D D D D D D D j.j.I I I I I D I I {.PXw.9.c.4.!.w @.+.c C +.c.8Xf nXuXT U j.U 7.D D 7.gXeX7.D e %.7.D 7.8 8 D y.HXT.8 u.XXy ).t.w L ).!.@.t.iX' %.f.K.K.j.j.K.K.K.K.K.K.K.K.D nXD K.j.j.D I D I I D D j.I D I I I D I I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D D D D D D j.D D D D K.D K.K.D K.D K.K.K.K.D D D D D K.D D D D j.D I I D I D j.8 j.I U.n.g.^ J s `.v # a.}...(.AX- U K.I U D 7.7.7.7.k 0.D 7.,X' 7.7.D 7.D D 8 I 8 l.E NX[ s fXa.q.q.y d ;.Y . /.U D D D K.K.K.K.K.K.K.D K.D K.D j.j.D I j.D I I D D D I I D I I D D I D I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U U U U U U U U U U U U U U U U U U U U D D D D D D D D D D D D D D D D D D D D K.D D K.D D D K.K.K.K.K.K.K.D D D D K.K.K.D j.D I D j.D I D D I I 8X 0 6Xg , 0Xv.DX] 7 < + 3.N . X;.lXK.K.x.* X D D D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.j.D j.D j.D j.I I D I I I D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D j.", +"U U U U U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D K.K.K.K.K.D K.D D K.K.K.K.D K.K.K.D K.D D D D K.K.K.D lXU.8Xf.lXK.yX....<.9Xm.XX3 X.i.AXc.o.H.@XE aX.X_ ` 7.D 7.7.nX7.7.nX7.7.gXFXXX D D D K.SX,.K nXK.K.* * GX@Xw 4XH @X/ # m.v Y [ % t.: w I.m.sXsXq...% m.XXr.E.t.Y.D i ;.K nXD 7.2 ;.U D K.D K SXi.) d.E./.D D D K.D D K.K.D K.D D K.D K.K.K.K.K.D K.D D D D j.D D j.D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.D D D D K.D K.D K.D K.K.D K.D D D D K.D D D D D D K.K.Z.[.i.VXx U.i.r K.nXK.N.L.y.D K.K.K.j.J ..VX` &.L !.c <.[.@.; pXq.`.&.`.L dX<.X.cXC r.d @X..N I K.nXnXnXw.D.u.U D K.k.hXq N.,X.X;XnXnXD D D D D K.K.D K.K.K.K.K.K.D K.K.K.K.K.D K.D K.j.j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D nXK.K.D D nXD K.K.K.D D D D D K.K.K.D D D K.K.K.-XPXj XX 0Xs Q.x.D D D zX@ g K K.K.K.K.- x aX' ^.j %X^ x.e.iXX.X.z !.).X.Y r V.&X[ &.+ T HXBXs.j.K.nXK.G P k.X D D K.A e / ,.N :.m v.- nXD D D D K.K.D D K.K.K.D K.K.K.K.K.K.K.D D K.K.D D D j.j.j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D nXD K.K.K.D K.D D K.D D K.K.D K.D K.K.K.D K.D D D D D A 3.q.; NX>.2 0Xw.D D D K.K.uXr * i K.K.K.K.K.K.B.Y ~._.K y.3 }.L `.q.h.m.).F 7 j.w.d t dX/.j.I I j.K.K ;.<.e.].7.D U D K.- @ s ;XiXxXE.8X~ D D D D D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D K.K.D D j.j.D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.D D K.K.D D K.K.D D D D D D D K.K.D K.D D D K @ VX+XN Q.&XS.uXj.D D K.~ e.K.zXd q $XK.K.K.K.K.K x.B.K U y.* |.DXPX).fX7 8X) <.j.D U N.Z.y.j.j.j.j.{.Z.k.x Z.7.9.> D D K.K.K gX#XJ ( ~.OXU.lXD D D nXK.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D K.D K.D j.D j.D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.D D D D K.K.D D K.D D K.D D D K.K.K.D K.D D D D ~ I.m @XXX(.Z x G U D D {.i q K.K.y.@ ,.- y.y.K.K.K.nXnXD D U nXf.f.Z./ |.d 3.vXj.j.D K.K.K.j.D I GXG N.5 * D 7.7.=XP K K.K.K.K -.:..Xg.8X&.}.T D D D K.K.K.K.K.K.K.K.K.D K.K.K.K.K.K.K.D K.K.D j.D D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D D K.D j.K.K.K.D D D D D D K.K.D D K.K.K.K.y.e.> x.y ) 0XrX>.*.D I ;.d K.$XaXzXy.U 3 ,XD.u.K.D K.K.j.nXnXnXK.K.K.q < lXj.D D j.j.D K.K.K.K.HX8.OX, z.K =.aX=.7.e v.K.D ~ [ ,X( = XGXzXA z.D K.D D K.K.K.K.K.K.K.D D K.K.K.K.K.D K.D D K.D D K.j.j.D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.D nXK.D D D D D D D D D K.K.K.K.K.D D D D D D j.w.e.iXf.V S } oXGX2XD.XZ 0 y.K.D K.D K.K.K.K.K.K.K.K.K.D K.K.K.K.K.K.K.D K.K.K.K.K.D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D j.K.K.D K.K.K.K.K.K.K.K.K.K.D D D K.K.D D D D D K.D D K...PXw.G ' j KX_ O.N.G j.I *.gX= KXQ :..X$ G K.D x.:.[ ] j iXAX@X* GXU j.D j.j.k.i.L.:.>.|.XX+XCXI I I 2X9 2 M. +XO.T.7.8 oX$X2.'.p Z BXI lXjX:.X U K.D D K.K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.D K.D D K.K.K.K.K.D D D K.j.K.D D K.K.K.D K.D D D D > G nXT.Z g.OX,XKX} u.oX-.E 9 M.2.0.2.2.w.j.D K.x c.XXJX;XXXG.g.W GXD D j.D D PX2 ) VXP.iXL.2 e.I I I -X5..X0Xe M.UXk N.3XP q &X+Xo.G.>.{.I lX*.GXK.K.K.K.K.K.K.D K.K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D K.D D K.K.D nXK.K.K.K.K.D D D j.D K.K.D K.K.K.K.z.r XX2 OXIXd.= 1.2.wXKX1.n.JXQ M.x.7.z.w.~ <.Y @XJX;X'.O.Q zX8 D D j.D D zXB XXVXiX2 vXdXN V.GX].y.:X=XKXV O.:.KXUXO.KXd.P.g.o.n.kXi lXD I j.j.nXK.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.D K.K.D K.D D K.K.K.D K.D j.D K.K.K.D K.K.K.D D K.aXdX% bX>.Z ;XM O.2.d.IXUX_ & *X9XK 7.H.U.DXkXb s t 6 s ;XC.8 D D U D j.j.j.T M .$.&.c.j u 5.-. I I S.qXq V Z 2.KX= M.,X,. .P.|.R. X-.I I j.j.j.D D K.K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.D K.K.K.K.K.D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D D D K.K.D K.K.K.K.K.K.K.K.K.K.K.K.K.D K.K.D D K.D K.D ~ 7 ) oXAXD. rXJ #XS < &XJXJXZ.7.GXR :.v.K $XvXn.VXn d..OXN.p.~.yXD D j.j.j.j.K.K.K.K.D D K.K.K.K.K.D K.K.K.K.K.D K.K.K.K.D K.K.D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D D K.K.K.K.K.D D K.K.K.K.K.K.K.K.K.K.K.K.K.D K.D D K.K.nXnXnXl.8Xo.> Z d.=XD.9 jXFXaX%.w.7.nXGXnXD ' ;X8XJXs G D D D D U U j.j.I I 8 8 -.iXZ p XXa D I I I I D LXyX9 V &X&XM.d.1.p.KXo.N.I I I D D D D j.j.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D nXK.D D K.D D D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D j.D D D K.K.D D D K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D K.D K.K.K.y.B XX%.HXg _ (.O.2.P..XFXS =Xe S.nXp.T a.$.c.v.7.D D D 7.8 8 8 I I I I I w.a # $.% i I I -.e C.IXKXUX;XP.KXZ .X4 %.y.kXB l.j.U I D D D j.D D j.D K.D D K.K.D K.K.K.K.K.K.K.K.K.K.D K.D K.K.D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D D K.K.K.K.K.K.K.K.K.D K.K.K.K.K.D K.D K.D D D D D K.K.X PXzXI G >XFXgX' E k -.4 1.9.$Xp.N.U.o.( E ].D D D 7.7.D 8 8 D V.G I I D GXS 0XVXE 3XI :XBXr MXe.N.LXW gXC.1X7.7.G J > D D D D D D j.D D D D j.K.D D K.D D D K.K.K.K.K.K.K.K.K.K.D K.D K.D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.D D D D D D K.K.K.D K.K.K.K.K.K.K.K.K.D D K.K.K.D D D K.D nXD K.` dX, uXw.1.P.KX:.tX= d.tXP.A $X9X,.>.b UXZ.D U D D nX- jXD D 8 &X' G D j.j.3XVX(.u < BX2XHX NXn.D.tXtX+XwXO.uX3X9XtXU.D D D D j.j.j.I I j.D K.K.D D K.D K.K.K.D K.K.K.K.K.K.K.D K.K.D K.D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.D D D D D D K.K.D K.K.D K.K.K.K.K.K.K.K.K.K.K.K.D D D K.K.D D K.x. .> G k.t .X| tXwX2.n.M.0.KX(.g.wXn K nXnX7.D D T.jXO.D 7.8 1.0XjXI D D D ].IX+ Z wXg.8.qX(.wX.XiXP.+Xd.( G $ o K p.D U D I I I I I I I D j.D D K.K.K.K.K.K.K.K.K.K.K.K.D nXD K.K.K.D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.K.K.K.D D K.K.K.D K.K.D D K.K.K.K.K.K.D D D K.D U uXa uXuXQ.L.HX].aXUXJ =X2.9 9 KXFX&Xx.D D nX7.D 7.MXMXeX7.D D LX#X0.{.j.D I I -XAX S KXe qXUX 1.9X-XS.7 OXK -Xf 7.U U U I I I I I I D I j.j.D K.K.K.D D D K.K.K.K.K.K.K.K.D D K.D D D D K.D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D nXK.D K.K.K.K.D D D D K.K.K.K.K.K.D D K.K.D K.K.K.K.K.D K.K.D D D D K.K.D K.Z.p < G -Xh Z (.wXUXn.2 Q 7XnX7.7.nXD 7.6X2 = O.7.7.gX=X.X%X< G 8 I I I T #XO.tXd.d.NXn.IX2Xj.,.n zXnXU nXD D D U I I I D D D D D D j.D K.K.K.D K.K.K.K.K.K.K.K.K.K.D D K.D K.K.D D D D nXD D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.D K.D K.K.K.D K.D D D D K.K.D D K.K.D D D K.K.K.K.K.K.K.D D K.D K.D D D K.x 7 +X7.N.1.UX2.&X1XA.9 PXSX9 4 y.D %.S S MXe 9XK 1XeX#XV , %.I G 9.< S &Xe 2.8.&Xd.2.%.I OX^ /.nXD D D nXD U U I I I I D I I D D j.j.j.D K.K.K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.D K.K.D K.D K.D D K.K.K.K.K.K.D K.D K.K.D K.K.K.K.K.D K.D K.K.D nXD K.k.UX7.w.0 UX| FX1.JXDX<.AX*Xe.w.4 k 2.| e =X2.-.=XS e D.IXE uXa HXqXKXD.D.n.0X j T ].I KXU.nXU D U D nXD 7.8 8 I I D I D I I D j.D j.D D K.K.K.K.K.K.K.K.K.K.K.K.K.D K.K.D D D D D D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D nXK.K.D D K.D D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D K.K.K.K.K.K.K.K.K.K.K.K.K.D K.nXU nXS.JX$.eXe M.+XJXb tXUX*XP.KXtX;XJXP.tXKX$..X.Xb %Xp *XP.d.(.wX=X0XM.,X.XiXT.I D j.j.D nXnXK.nXD nXD 8 D I I D I I D j.D D D j.D K.K.D K.K.K.K.K.K.K.K.D K.K.K.K.D K.D D D D D D nXD D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D nXD K.K.D K.K.K.D K.K.K.K.K.K.K.K.K.K.K.D K.K.K.K.K.D K.K.K.D D K.K.K.D K.K.K.D j.D nXnX7.{.T.(.9Xx.7.K ~ KXh FXd.UXe 1.KXQ JX= 1.g.M.| d.D.0.:.KX7 KX2XGXI *., :.3XI D j.j.D D K.nXK.K.D nXD 8 D I I I D I I I D j.j.j.D K.K.K.K.K.K.K.D K.K.K.K.K.K.K.K.D D K.K.D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.D K.K.D K.K.K.K.K.K.K.K.D D K.K.K.K.K.K.K.K.D K.K.K.D K.K.D K.K.K.D K.D nXnXnXnXD K > .MX7.nXK -.UX'.:.KXf $ 2.,X| O.7 wXo.& J.d 1.UXZ 8XT GXj.I r XXe.I D D D D I j.j.D D K.D nXD D 8 8 I D D j.I I I I D j.D K.K.D K.K.K.D K.D K.K.K.K.K.K.K.D K.K.D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.D D D K.D K.D D K.K.K.K.K.K.K.K.D K.K.K.K.D K.K.K.K.D K.D K.K.K.K.K.K.D K.D nXD nXnX7.uX7.D D D nX7.=.% uXD nX:.iX>.%XXX$. .JX7.U 2X#.w.D D j.I I GXG I D D I D I D j.D K.D K.D nXD D D 8 I I I I I I I D j.j.D K.K.K.K.D D D K.K.K.K.K.K.K.K.K.K.D K.D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.D K.D K.K.K.D K.D D K.K.K.K.K.K.K.D D K.D D K.K.K.K.K.D K.K.D K.D nXK.K.K.K.D D D nXD 7.7.D nX8 7.D U - k 7.U 7.' * OX. AXZ ;.g 8 8 ].*XGXI D I I I I D D D D D D I j.j.D j.K.K.D D nXD U U I D D I D I I I D j.j.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.D K.K.D K.K.K.D D K.K.K.K.D D D K.D D D D nXK.K.K.K.K.K.D K.K.K.K.D K.D K.K.D K.nXnXnXD 7.D D nX7.7.D D 7.D D 7.U P ( >.d.b.-.D U 8 D D D I D D I I I D D D D D D D D D D K.K.K.K.D D U D j.I D D I j.D I I j.D j.D K.K.K.K.K.K.K.K.K.K.D D K.K.K.K.D K.K.D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D K.K.K.K.K.D K.K.D K.K.K.K.D K.K.K.K.D D D D nXK.D nXD D 7.7.7.D 7.D D D 7.7.D nXnXD uXE jXT.D U U U D U I D I I I I I D D D I D D I j.K.K.K.D K.K.K.nXD D U D D D D D I I I D j.D j.K.D K.K.D K.K.K.D K.K.K.K.K.D D D K.K.D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.D K.K.K.K.D D K.K.D K.K.K.D K.D K.K.D K.K.K.K.K.D nXK.K.K.K.K.K.K.K.K.K.K.K.D K.D D D nXD 7.7.7.D 7.D 7.7.7.7.D 7.D 7.7.7.K.U D D nXU U j.j.D I I D D I D I D I I j.j.j.K.K.K.K.K.K.D D U D j.D 8 I I I I D j.D D D K.K.K.K.K.K.K.K.K.K.K.K.D K.D D K.K.D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.K.K.D K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D nXK.K.K.D K.K.K.K.K.D nXK.nXD D nXnXD 7.7.7.D 7.7.7.7.7.D nXD 7.D D D D D D D D j.D j.I I I I I I I D D I I j.j.D K.K.K.K.K.K.K.K.j.D I I I I I I I D D D K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D K.D D D D D D D j.D D D D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D nXK.K.K.D K.K.K.K.K.K.K.D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D nXnXnX7.7.7.D nX7.D D 7.7.D D 7.D D 7.U nXnXU D j.D j.j.D I I I D j.D D I I D D j.D K.K.K.K.K.K.K.K.K.j.j.j.I I D I I D D j.j.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D D D D D D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.K.K.K.K.K.D K.K.K.K.K.K.K.D D K.D K.K.K.K.K.K.K.K.K.K.K.K.D D K.K.K.K.K.D D D nXD nXnXD 7.7.7.D D 7.D 7.7.7.D nXD D D D D nXnXD D D j.D D I I I I D D I I I I D j.j.D K.K.K.K.K.K.K.K.K.D j.D j.D D D I I I j.j.j.K.K.K.K.K.K.K.K.K.D K.K.D D K.D D D D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D ", +"U D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.D nXD 7.7.7.7.7.D 7.7.7.7.7.7.7.7.7.7.7.7.7.nXnXK.K.K.j.j.I I I I I I I I I I D j.D K.K.K.K.K.K.K.K.K.D j.D I I I I I I I D j.D K.K.K.K.K.K.K.K.K.K.K.K.D K.K.D D K.D D D D D D D D U D D D D D D D D D D D D D D D D D D D D D D D D D D " +}; diff --git a/resources/ziomekos/ZiomekOS.png b/resources/ziomekos/ZiomekOS.png new file mode 100644 index 0000000..9a05ed5 Binary files /dev/null and b/resources/ziomekos/ZiomekOS.png differ diff --git a/resources/ziomekos/ZiomekOS.txt b/resources/ziomekos/ZiomekOS.txt new file mode 100644 index 0000000..10333a1 --- /dev/null +++ b/resources/ziomekos/ZiomekOS.txt @@ -0,0 +1,20 @@ + ..:.....:^~^:.....::. + .:^~.:^^:.^!YG57^..:^:.~^:. + :^^!?....::::7PBG?::::....!~^::. + .^^~:~!^ .^^^:^:^YB5^.::^~^. :!~:^~^. + .!..~77~ :^::: :7?5G57!: :.:^: ~?7~::!. + ::.!7!....^^:.:7YPGP57:.:^^.:..!7~.:: + :~~7::^ . .^75PPPPPPPY7^: . ^.:!~~: + ~~. .^~.^75GY7777777YG5?:.~^. .~^ + . .^:?GGJ:^~!7!~^:7GG?.!. . + :!YGP?:.:^^::.:7PGY!:. + .^7PPYJ!:::..::!JYG5!^. + .~^5P5Y7~^^:^^~7Y5G5^^. + .~~.^7J5YJ???7?JY5Y?^ ~~. + ~Y~..::~?YJ5GPJJJ~^:..~J~. + .~Y!:~^...:.^~^:....^~^7J~. + .7J7~^~~::~^. .^~::~~^!7?7. + .^??!77~^!57. .!5!:^77!??:. + .^~?7!!!~.::::~!~!7?^~: + .::!!~~!??7!~~!!::. + ..^!:.. diff --git a/screenshots/01-Boot_VM.png b/screenshots/01-Boot_VM.png new file mode 100644 index 0000000..abc25a6 Binary files /dev/null and b/screenshots/01-Boot_VM.png differ diff --git a/screenshots/02-WDM.png b/screenshots/02-WDM.png new file mode 100755 index 0000000..7e93a36 Binary files /dev/null and b/screenshots/02-WDM.png differ diff --git a/screenshots/03-Desktop_VM.png b/screenshots/03-Desktop_VM.png new file mode 100755 index 0000000..3a7d9bd Binary files /dev/null and b/screenshots/03-Desktop_VM.png differ diff --git a/screenshots/04-Desktop_Swift14.png b/screenshots/04-Desktop_Swift14.png new file mode 100755 index 0000000..11849bb Binary files /dev/null and b/screenshots/04-Desktop_Swift14.png differ diff --git a/screenshots/05-Desktop_HP8000.png b/screenshots/05-Desktop_HP8000.png new file mode 100755 index 0000000..b88e22f Binary files /dev/null and b/screenshots/05-Desktop_HP8000.png differ diff --git a/screenshots/06-Doom.png b/screenshots/06-Doom.png new file mode 100644 index 0000000..b5f6531 Binary files /dev/null and b/screenshots/06-Doom.png differ diff --git a/vars.sh b/vars.sh new file mode 100644 index 0000000..474670f --- /dev/null +++ b/vars.sh @@ -0,0 +1,4 @@ +VERSION="26.9.26" +BUILD="20260926" +CODENAME="firstbark" +CODENAME_PRETTY="First Bark"