Files
darkforge/toolchain/scripts/README-CHAPTER8.md
2026-03-20 15:09:30 +01:00

6.6 KiB
Raw Permalink Blame History

LFS Chapter 8 Build Scripts

This directory contains 13 build scripts that construct the complete base system for DarkForge Linux inside a chroot environment.

Quick Reference

Run these scripts in sequence inside the chroot:

cd /sources/toolchain-scripts

# Foundation (required before anything else)
./101-man-pages.sh
./102-iana-etc.sh
./103-glibc.sh          # CRITICAL — System transitions to native here

# Compression libraries
./104-zlib.sh
./105-bzip2.sh
./106-xz.sh
./107-lz4.sh
./108-zstd.sh

# Utilities and build tools
./109-file.sh
./110-readline.sh
./111-m4.sh
./112-bc.sh
./113-flex.sh

Scripts

101-man-pages.sh

  • Package: Man-Pages 6.12
  • Purpose: System call and library function documentation
  • LFS Reference: Chapter 8.3
  • Time: < 1 minute (just installation, no compilation)
  • Critical deps: None

102-iana-etc.sh

  • Package: IANA-Etc 20250306
  • Purpose: Protocol and service name definitions (/etc/services, /etc/protocols)
  • LFS Reference: Chapter 8.4
  • Time: < 1 minute (just installation)
  • Critical deps: None

103-glibc.sh CRITICAL

  • Package: Glibc 2.43
  • Purpose: The GNU C Library (complete native version)
  • LFS Reference: Chapter 8.5
  • Time: 5-10 minutes
  • Key additions:
    • Applies glibc-fhs-1.patch for FHS compliance
    • Generates en_US.UTF-8 locale
    • Sets up timezone data (defaults to UTC)
    • Creates /etc/nsswitch.conf
    • Runs comprehensive sanity checks
  • Critical deps: Previous toolchain (binutils, gcc cross-compiled), Linux headers
  • Post-build verification:
    /usr/lib/libc.so.6 exists
    ldd works
    Simple C program executes
    

104-zlib.sh

  • Package: Zlib 1.3.2
  • Purpose: Compression library (critical for many tools)
  • LFS Reference: Chapter 8.6
  • Time: < 2 minutes
  • Includes: make check test suite
  • Critical deps: Glibc (103)

105-bzip2.sh

  • Package: Bzip2 1.0.8
  • Purpose: Bzip2 compression utility and library
  • LFS Reference: Chapter 8.7
  • Time: < 2 minutes
  • Special: Applies bzip2-1.0.8-install_docs-1.patch for documentation
  • Non-standard build: Uses Makefile-libbz2_so for dynamic library
  • Critical deps: Glibc (103)

106-xz.sh

  • Package: XZ Utils 5.8.1
  • Purpose: LZMA compression utilities (needed for .tar.xz files)
  • LFS Reference: Chapter 8.8
  • Time: 2-3 minutes
  • Note: Handles both .tar.gz and .tar.xz tarball formats
  • Critical deps: Glibc (103)

107-lz4.sh

  • Package: LZ4 1.10.0
  • Purpose: Fast LZ4 compression library and tools
  • LFS Reference: Chapter 8.9
  • Time: < 1 minute
  • Non-standard: Custom Makefile (not autoconf)
  • Critical deps: Glibc (103)

108-zstd.sh

  • Package: Zstd 1.5.7
  • Purpose: Zstandard compression (modern compression algorithm)
  • LFS Reference: Chapter 8.10
  • Time: 3-5 minutes (heavy optimization)
  • Non-standard: Custom Makefile (not autoconf)
  • Critical deps: Glibc (103)

109-file.sh

  • Package: File 5.47
  • Purpose: File type detection command and libmagic library
  • LFS Reference: Chapter 8.11
  • Time: < 2 minutes
  • Includes: make check test suite
  • Critical deps: Glibc (103), Zlib (104)

110-readline.sh

  • Package: Readline 8.3
  • Purpose: Command-line editing and history library
  • LFS Reference: Chapter 8.12
  • Time: < 2 minutes
  • Includes: Documentation installation
  • Links with: ncurses library
  • Critical deps: Glibc (103), ncurses (from earlier phases)

111-m4.sh

  • Package: M4 1.4.21
  • Purpose: Macro processing language (required for autoconf/automake)
  • LFS Reference: Chapter 8.14
  • Time: < 2 minutes
  • Includes: make check test suite
  • Critical deps: Glibc (103)

112-bc.sh

  • Package: Bc 7.0.3
  • Purpose: Arbitrary-precision calculator
  • LFS Reference: Chapter 8.15
  • Time: 1-2 minutes
  • Non-standard: Custom configure script (not typical GNU autoconf)
  • Includes: make test suite
  • Critical deps: Glibc (103)

113-flex.sh

  • Package: Flex 2.6.4
  • Purpose: Lexical scanner generator (replaces older 'lex')
  • LFS Reference: Chapter 8.16
  • Time: 2-3 minutes
  • Includes: make check test suite
  • Special: Creates /usr/bin/lex symlink for legacy compatibility
  • Critical deps: Glibc (103)

Environment

All scripts automatically source /sources/toolchain-scripts/100-chroot-env.sh, which provides:

# AMD Zen 5 specific compilation flags
CFLAGS="-march=znver5 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1,--as-needed"
MAKEFLAGS="-j32"                      # Full CPU utilization (16 cores × 2)

# Helper functions
pkg_extract(TARBALL)   # Extract and cd into source dir
pkg_cleanup(DIRNAME)   # Remove source directory after build

Troubleshooting

General Issues

  1. "Permission denied" when running script

    chmod +x 10X-*.sh
    
  2. "file not found" for tarball

    • Ensure /sources/ contains all tarballs
    • Check 100-download-phase3.sh for correct filenames
  3. "patch does not apply"

    • Verify you're in the correct directory after extraction
    • Check patch is in /sources/ with correct filename

Build Failures

  • All scripts use set -euo pipefail, so they stop immediately on errors
  • Check the error output for missing dependencies or configuration issues
  • Ensure previous scripts completed successfully before running the next one

Most Common Issue

Glibc (103) fails — This is usually because:

  1. The FHS patch didn't apply correctly
  2. Linux headers are missing from /usr/include/
  3. Previous cross-compiled toolchain is broken

Verify all Phase 0-2 scripts ran successfully before attempting Phase 3.

Documentation

For detailed information about each package and the build process, see:

  • /sessions/awesome-gallant-bell/mnt/lfs_auto_install/docs/CHAPTER8-SCRIPTS.md

For the complete LFS reference:

  • /sessions/awesome-gallant-bell/mnt/lfs_auto_install/reference/LFS-BOOK-r13.0-4-NOCHUNKS.html

Statistics

  • Total scripts: 13
  • Total size: ~20 KB
  • Estimated total build time: 30-45 minutes (on 16-core CPU)
  • Line of code: ~450 lines (across all scripts)

Next Steps

After these 13 scripts complete successfully:

  1. Continue with Phase 3 remaining packages (Chapter 8.17+)
  2. Build the Linux kernel (Phase 4)
  3. Configure init system (sysvinit) (Phase 5)
  4. Install desktop environment (dwl/Wayland) (Phase 6+)

Created: 2026-03-20 Target: DarkForge Linux (AMD Zen 5 build) Reference: LFS 13.0 Chapter 8