Skip to the content.

OS Using Xfce Desktop Step

Tables

0. Base configuration

export CFLAGS='-O2 -march=native -pipe'
export CXXFLAGS='-O2 -march=native -pipe'
export MAKEFLAGS='-j2'
# /etc/fstab
/dev/sda1 /boot ext4 defaults 1 2
cp linux-6.1.11/arch/x86_64/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3-2
cp linux-6.1.11/System.map /boot/System.map-6.1.11-2
cp linux-6.1.11/.config /boot/config-6.1.11-2
# /boot/grub/grub.cfg
menuentry "" (
    linux   /boot/vmlinuz-6.1.11-2 root=/dev/sda2 ro
)
vim /etc/sysconfig/ifconfig.enp0s3
edit ip & gateway & broadcast
/etc/init.d/network restart

1. Install Wget


1.1 Wget-1.21.3

cd /sources
mkdir BLFS
cd BLFS/
tar -xf wget-1.21.3.tar.gz
cd wget-1.21.3
./configure --prefix=/usr      \
            --sysconfdir=/etc  \
            --with-ssl=openssl &&
make
su -c "make install"
cd ..
rm -rf wget-1.21.3

2. Install GPM


2.1 GPM-1.20.7

cd /sources/linux-6.1.11
make menuconfig
Device Drivers  --->
  Input device support ---> [CONFIG_INPUT]
    <*/M> Mouse interface   [CONFIG_INPUT_MOUSEDEV]
make
cp linux-6.1.11/arch/x86_64/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3-2
cp linux-6.1.11/System.map /boot/System.map-6.1.11-2
cp linux-6.1.11/.config /boot/config-6.1.11-2
vim /boot/grub/grub.cfg
menuentry "" (
    linux   /boot/vmlinuz-6.1.11-2 root=/dev/sda2 ro
)
tar -xf gpm-1.20.7.tar.bz2
cd gpm-1.20.7
patch -Np1 -i ../gpm-1.20.7-consolidated-1.patch &&
./autogen.sh                                     &&
./configure --prefix=/usr --sysconfdir=/etc      &&
make
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
cd /sources/BLFS
tar -xf  blfs-bootscripts-20230101.tar.xz
cd  blfs-bootscripts-20230101
make install-gpm
cat > /etc/sysconfig/mouse << "EOF"
# Begin /etc/sysconfig/mouse

MDEVICE="/dev/input/mice"
PROTOCOL="imps2"
GPMOPTS=""

# End /etc/sysconfig/mouse
EOF
/etc/init.d/gpm start
cd ..
rm -rf gpm-1.20.7

3.Lynx & OpenSSH


3.1 Lynx-2.8.9rel.1

tar -xf lynx2.8.9rel.1.tar.bz2
cd lynx2.8.9rel.1
patch -p1 -i ../lynx-2.8.9rel.1-security_fix-1.patch
./configure --prefix=/usr          \
            --sysconfdir=/etc/lynx \
            --datadir=/usr/share/doc/lynx-2.8.9rel.1 \
            --with-zlib            \
            --with-bzlib           \
            --with-ssl             \
            --with-screen=ncursesw \
            --enable-nls           \
            --enable-locale-charset &&
make
make install-full &&
chgrp -v -R root /usr/share/doc/lynx-2.8.9rel.1/lynx_doc
sed -e '/#LOCALE/     a LOCALE_CHARSET:TRUE'     \
    -i /etc/lynx/lynx.cfg
sed -e '/#DEFAULT_ED/ a DEFAULT_EDITOR:vi'       \
    -i /etc/lynx/lynx.cfg
sed -e '/#PERSIST/    a PERSISTENT_COOKIES:TRUE' \
    -i /etc/lynx/lynx.cfg
cd ..
rm -rf lynx2.8.9rel.1

3.2 OpenSSH-9.2p1

tar -xf openssh-9.2p1.tar.gz
cd openssh-9.2p1
install  -v -m700 -d /var/lib/sshd &&
chown    -v root:sys /var/lib/sshd &&

groupadd -g 50 sshd        &&
useradd  -c 'sshd PrivSep' \
         -d /var/lib/sshd  \
         -g sshd           \
         -s /bin/false     \
         -u 50 sshd
./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
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-9.2p1     &&
install -v -m644    INSTALL LICENCE OVERVIEW README* \
                    /usr/share/doc/openssh-9.2p1
cd /sources/BLFS/blfs-bootscripts-20230101
make install-sshd
cd /sources/BLFS
rm -rf openssh-9.2p1

4. ch2 scripts


4.1 Important Information

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
/usr/sbin/remove-la-files.sh
vim /usr/bin/checkman.sh
#!/bin/sh
# Begin checkman.sh
# Usage: find /usr/share/man -type f | xargs checkman.sh
for a in "$@"
do
    # echo "Checking $a..."
    # Pure-ASCII manual page (possibly except comments) is OK
    grep -v '.\\"' "$a" | iconv -f US-ASCII -t US-ASCII >/dev/null 2>&1 \
        && continue
    # Non-UTF-8 manual page is OK
    iconv -f UTF-8 -t UTF-8 "$a" >/dev/null 2>&1 || continue
    # Found a UTF-8 manual page, bad.
    echo "UTF-8 manual page: $a" >&2
done
# End checkman.sh
chmod u+x /usr/bin/checkman.sh
find /usr/share/man -type f | xargs checkman.sh

5. ch3 configuration


5.1 After LFS Configuration Issues

/usr/sbin/useradd -D
mkdir /etc/skel
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}

# Set up a red prompt for root and a green one for users.
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

for script in /etc/profile.d/*.sh ; do
        if [ -r $script ] ; then
                . $script
        fi
done

unset script RED GREEN NORMAL

# End /etc/profile
EOF
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
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
install --directory --mode=0755 --owner=root --group=root /etc/bash_completion.d
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

alias ls='ls --color=auto'
alias grep='grep --color=auto'
EOF
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/man  MANPATH
pathappend /usr/share/info INFOPATH
EOF
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
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
cat > /etc/profile.d/i18n.sh << "EOF"
# Set up i18n variables
export LANG=en_US.utf8
EOF
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 non-login 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

shopt -s histappend
PROMPT_COMMAND='history -a'
export IGNOREEOF=1

export CFLAGS="-O2 -march=native -pipe"
export CXXFLAGS="-O2 -march=native -pipe"
export MAKEFLAGS="-j2"

# End /etc/bashrc
EOF
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
cp .bash_profile /etc/skel
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
cp .profile /etc/skel
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
cp .bashrc /etc/skel
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
cp .bash_logout /etc/skel
dircolors -p > /etc/dircolors
cp /etc/dircolors /etc/skel/.dircolors
vim .vimrc
" Begin .vimrc

set columns=80
" set wrapmargin=8
set ruler
" set showcmd
set mouse=r

" End .vimrc
clear > /etc/issue
vim /etc/issue
Baud Rate:      \b
Date:           \d
Time:           \t
System:         \s
Teletype:       \l
Machine:        \m
Hostname:       \n
Dimain Name:    \o
Kernel:         \r
Currently:      \U
kernel Built:   \v

This is \n.\o (\s \m \r) \t
cd /sources/BLFS/blfs-bootscripts-20230101
make install-random
/etc/init.d/random start
cd /etc/skel
chmod g-r .*
chmod o-r .*
useradd -m phoebus
passwd phoebus
cd /sources
chown phoebus BLFS

6. make-ca 1


Starting use normal user: phoebus

6.1 UnZip-6.0

tar -xf unzip60.tar.gz
cd unzip60
patch -Np1 -i ../unzip-6.0-consolidated_fixes-1.patch
make -f unix/Makefile generic
su
make prefix=/usr MANDIR=/usr/share/man/man1 \
 -f unix/Makefile install
exit
cd ..
rm -rf unzip60

6.2 SQLite-3.40.1

tar -xf sqlite-autoconf-3400100.tar.gz
cd sqlite-autoconf-3400100
unzip -q ../sqlite-doc-3400100.zip
./configure --prefix=/usr     \
            --disable-static  \
            --enable-fts5     \
            CPPFLAGS="-DSQLITE_ENABLE_FTS3=1            \
                      -DSQLITE_ENABLE_FTS4=1            \
                      -DSQLITE_ENABLE_COLUMN_METADATA=1 \
                      -DSQLITE_ENABLE_UNLOCK_NOTIFY=1   \
                      -DSQLITE_ENABLE_DBSTAT_VTAB=1     \
                      -DSQLITE_SECURE_DELETE=1          \
                      -DSQLITE_ENABLE_FTS3_TOKENIZER=1" &&
make
su
make install
install -v -m755 -d /usr/share/doc/sqlite-3.40.1 &&
cp -v -R sqlite-doc-3400100/* /usr/share/doc/sqlite-3.40.1
exit
cd ..
rm -rf sqlite-autoconf-3400100

6.3 NSPR-4.35

tar -xf nspr-4.35.tar.gz
cd nspr-4.35
cd nspr                                                     &&
sed -ri '/^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
su -c "make install"
cd ..
rm -rf nspr-4.35

7. make-ca 2


7.1 NSS-3.88.1

tar -xf nss-3.88.1.tar.gz
cd nss-3.88.1
patch -Np1 -i ../nss-3.88.1-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)
cd tests &&
HOST=localhost DOMSUF=localdomain ./all.sh
cd ../
su
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      &&
chmod -v 644                                  /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
exit
cd ..
rm -rf nss-3.88.1

8. make-ca 3


8.1 libtasn1-4.19.0

tar -xf libtasn1-4.19.0.tar.gz
cd libtasn1-4.19.0
./configure --prefix=/usr --disable-static &&
make
su -c "make install"
cd ..
rm -rf libtasn1-4.19.0

8.2 p11-kit-0.24.1

tar -xf p11-kit-0.24.1.tar.xz
cd p11-kit-0.24.1
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
mkdir p11-build &&
cd    p11-build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dtrust_paths=/etc/pki/anchors &&
ninja
su
ninja install &&
ln -sfv /usr/libexec/p11-kit/trust-extract-compat \
        /usr/bin/update-ca-certificates
exit
su
ln -sfv ./pkcs11/p11-kit-trust.so /usr/lib/libnssckbi.so
exit
cd ../..
rm -rf p11-kit-0.24.1

8.3 make-ca-1.12

tar -xf make-ca-1.12.tar.xz
cd make-ca-1.12
su
make install &&
install -vdm755 /etc/ssl/local
/usr/sbin/make-ca -g
exit
su
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
exit
cd ..
rm -rf make-ca-1.12

9. shadow


9.1 libtirpc

tar -xf libtirpc-1.3.3.tar.bz2
cd libtirpc-1.3.3/
./configure --prefix=/usr                                   \
            --sysconfdir=/etc                               \
            --disable-static                                \
            --disable-gssapi                                &&
make
su -c "make install"
cd ..
rm -rf libtirpc-1.3.3

9.2 rpcsvc-proto-1.4.3

tar -xf rpcsvc-proto-1.4.3.tar.xz
cd rpcsvc-proto-1.4.3/
./configure --sysconfdir=/etc &&
make
su -c "make install"
cd ..
rm -rf rpcsvc-proto-1.4.3

9.3 libnsl-2.0.0

tar -xf libnsl-2.0.0.tar.xz
cd libnsl-2.0.0
./configure --sysconfdir=/etc --disable-static &&
make
su -c "make install"
cd ..
rm -rf libnsl-2.0.0

9.4 Sharutils-4.15.2

tar -xf sharutils-4.15.2.tar.xz
cd sharutils-4.15.2
sed -i 's/BUFSIZ/rw_base_size/' src/unshar.c &&
sed -i '/program_name/s/^/extern /' src/*opts.h
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c        &&
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h &&

./configure --prefix=/usr &&
make
su -c "make install"
cd ..
rm -rf sharutils-4.15.2

9.5 Berkeley DB-5.3.28

tar -xf db-5.3.28.tar.gz
cd db-5.3.28
sed -i 's/\(__atomic_compare_exchange\)/\1_db/' src/dbinc/atomic.h
cd build_unix                        &&
../dist/configure --prefix=/usr      \
                  --enable-compat185 \
                  --enable-dbm       \
                  --disable-static   \
                  --enable-cxx       &&
make
su
make docdir=/usr/share/doc/db-5.3.28 install &&

chown -v -R root:root                        \
      /usr/bin/db_*                          \
      /usr/include/db{,_185,_cxx}.h          \
      /usr/lib/libdb*.{so,la}                \
      /usr/share/doc/db-5.3.28
exit
cd ..
rm -rf db-5.3.28

9.6 CrackLib-2.9.8

tar -xf cracklib-2.9.8.tar.bz2
cd cracklib-2.9.8
autoreconf -fiv &&

PYTHON=python3               \
./configure --prefix=/usr    \
            --disable-static \
            --with-default-dict=/usr/lib/cracklib/pw_dict &&
make
su -c "make install"
install -v -m644 -D    ../cracklib-words-2.9.8.bz2 \
                         /usr/share/dict/cracklib-words.bz2    &&

bunzip2 -v               /usr/share/dict/cracklib-words.bz2    &&
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
cd ..
rm -rf cracklib-2.9.8

9.7 libpwquality-1.4.5

tar -xf libpwquality-1.4.5.tar.bz2
cd libpwquality-1.4.5
./configure --prefix=/usr                      \
            --disable-static                   \
            --with-securedir=/usr/lib/security \
            --with-python-binary=python3       &&
make
su -c "make install"
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 sha512 hash for encryption, use shadow, and use the
# authentication token (chosen password) set by pam_pwquality
# above (or any previous modules). Also set the number of crypt rounds
# to the value used in shadow.
password  required    pam_unix.so        sha512 shadow use_authtok \
                                         rounds=500000

# End /etc/pam.d/system-password
EOF
cd ..
rm -rf libpwquality-1.4.5

9.8 Linux-PAM-1.5.2

tar -xf Linux-PAM-1.5.2.tar.xz
cd Linux-PAM-1.5.2
sed -e /service_DATA/d \
    -i modules/pam_namespace/Makefile.am &&
autoreconf
tar -xf ../Linux-PAM-1.5.2-docs.tar.xz --strip-components=1
sed -e 's/dummy elinks/dummy lynx/'                                    \
    -e 's/-no-numbering -no-references/-force-html -nonumbers -stdin/' \
    -i configure
./configure --prefix=/usr                        \
            --sbindir=/usr/sbin                  \
            --sysconfdir=/etc                    \
            --libdir=/usr/lib                    \
            --enable-securedir=/usr/lib/security \
            --docdir=/usr/share/doc/Linux-PAM-1.5.2 &&
make
su
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
rm -fv /etc/pam.d/other
make install &&
chmod -v 4755 /usr/sbin/unix_chkpwd
exit
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 sha512 hash for encryption, use shadow, and try to use any previously
# defined authentication token (chosen password) set by any prior module.
# Use the same number of rounds as shadow.
password  required    pam_unix.so       sha512 shadow try_first_pass \
                                        rounds=500000

# End /etc/pam.d/system-password
EOF
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
cd ..
rm -rf Linux-PAM-1.5.2

9.9 Shadow-4.13

tar -xf shadow-4.13.tar.xz
cd shadow-4.13
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
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 SHA512@' \
    -e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@'       \
    -e 's@/var/spool/mail@/var/mail@'                 \
    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
    -i etc/login.defs                                 &&

./configure --sysconfdir=/etc               \
            --disable-static                \
            --with-group-name-max-length=32 &&
make
su -c "make exec_prefix=/usr install"
su -c "make -C man install-man"
su
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            \
                CRACKLIB_DICTPATH        \
                PASS_CHANGE_TRIES        \
                PASS_ALWAYS_WARN         \
                CHFN_AUTH ENCRYPT_METHOD \
                ENVIRON_FILE
do
    sed -i "s/^${FUNCTION}/# &/" /etc/login.defs
done
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 date of last login - Disabled by default
#session   optional    pam_lastlog.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
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd

password  include     system-password

# End /etc/pam.d/passwd
EOF
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
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
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
if [ -f /etc/login.access ]; then mv -v /etc/login.access{,.NOUSE}; fi
if [ -f /etc/limits ]; then mv -v /etc/limits{,.NOUSE}; fi
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
exit
cd ..
rm -rf shadow-4.13

10.revisiting shadow


None.

11. sudo


11.1 cyrus-sasl-2.1.28

tar -xf cyrus-sasl-2.1.28.tar.gz
cd cyrus-sasl-2.1.28
./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --enable-auth-sasldb \
            --with-dbpath=/var/lib/sasl/sasldb2 \
            --with-sphinx-build=no              \
            --with-ldap                         \
            --with-saslauthd=/var/run/saslauthd &&
make -j1
su
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
exit
cd ..
rm -rf cyrus-sasl-2.1.28

11.2 openldap-2.6.4

tar -xf openldap-2.6.4.tgz
cd openldap-2.6.4
patch -Np1 -i ../openldap-2.6.4-consolidated-1.patch &&
autoconf &&

./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-static  \
            --enable-dynamic  \
            --enable-versioning=yes  \
            --disable-debug   \
            --disable-slapd &&

make depend &&
make
sudo make install
cd ..
rm -rf openldap-2.6.4

11.3 procmail-3.22

tar -xf procmail-3.22.tar.gz
cd procmail-3.22
su
sed -i 's/getline/get_line/' src/*.[ch]                   &&
patch -Np1 -i ../procmail-3.22-consolidated_fixes-1.patch &&

make LOCKINGTEST=/tmp MANDIR=/usr/share/man install       &&
make install-suid
exit
cd ..
rm -rf procmail-3.22

11.4 sendmail.8.17.1

tar -xf sendmail.8.17.1.tar.gz
cd sendmail.8.17.1
su
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
exit
cat >> devtools/Site/site.config.m4 << "EOF"
APPENDDEF(`confENVDEF',`-DOPENSSL -DSASL -DLDAPMAP -DHASFLOCK')
APPENDDEF(`confLIBS', `-lssl -lcrypto -lsasl2 -lldap -llber -ldb')
APPENDDEF(`confINCDIRS', `-I/usr/include/sasl')
EOF
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
su
chown phoebus:phoebus devtools/Site/site.config.m4
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.17.1/{cf,sendmail} &&

install -v -m644 CACerts FAQ KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \
        /usr/share/doc/sendmail-8.17.1 &&

install -v -m644 sendmail/{README,SECURITY,TRACEFLAGS,TUNING} \
        /usr/share/doc/sendmail-8.17.1/sendmail &&

install -v -m644 cf/README /usr/share/doc/sendmail-8.17.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
exit
cd doc/op                                       &&
sed -i 's/groff/GROFF_NO_SGR=1 groff/' Makefile &&
make op.txt op.pdf
su
install -v -d -m755 /usr/share/doc/sendmail-8.17.1 &&
install -v -m644 op.ps op.txt op.pdf /usr/share/doc/sendmail-8.17.1 &&
cd ../..
exit
su
echo $(hostname) > /etc/mail/local-host-names
cat > /etc/mail/aliases << "EOF"
postmaster: root
MAILER-DAEMON: root

EOF
chmod g-w /etc/mail/aliases
newaliases
cd /etc/mail &&
m4 m4/cf.m4 sendmail.mc > sendmail.cf
cd /sources/BLFS/blfs-bootscripts-20230101
make install-sendmail
exit
cd /sources/BLFS
rm -rf sendmail.8.17.1

11.5 reinstall procmail-3.22

tar -xf procmail-3.22.tar.gz
cd procmail-3.22
su
/etc/init.d/sendmail start
sed -i 's/getline/get_line/' src/*.[ch]                   &&
patch -Np1 -i ../procmail-3.22-consolidated_fixes-1.patch &&

make LOCKINGTEST=/tmp MANDIR=/usr/share/man install       &&
make install-suid
exit
cd ..
rm -rf procmail-3.22

11.6 sudo-1.9.13p1

tar -xf sudo-1.9.13p1.tar.gz
cd sudo-1.9.13p1
./configure --prefix=/usr              \
            --libexecdir=/usr/lib      \
            --with-secure-path         \
            --with-all-insults         \
            --with-env-editor          \
            --docdir=/usr/share/doc/sudo-1.9.13p1 \
            --with-passprompt="[sudo] password for %p: " &&
make
su
make install &&
ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0
exit
cd ..
rm -rf sudo-1.9.13p1

12. reinstall wget


12.1 pcre2-10.42

tar -xf pcre2-10.42.tar.bz2
cd pcre2-10.42
./configure --prefix=/usr                       \
            --docdir=/usr/share/doc/pcre2-10.42 \
            --enable-unicode                    \
            --enable-jit                        \
            --enable-pcre2-16                   \
            --enable-pcre2-32                   \
            --enable-pcre2grep-libz             \
            --enable-pcre2grep-libbz2           \
            --enable-pcre2test-libreadline      \
            --disable-static                    &&
make
sudo make install
cd ..
rm -rf pcre2-10.42

12.2 libunistring-1.1

tar -xf libunistring-1.1
./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libunistring-1.1 &&
make
sudo make install
cd ..
rm -rf libunistring-1.1

12.3 libidn2-2.3.4

tar -xf libidn2-2.3.4.tar.gz
cd libidn2-2.3.4
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf libidn2-2.3.4

12.4 libpsl-0.21.2

tar -xf libpsl-0.21.2.tar.gz
cd libpsl-0.21.2
sed -i 's/env python/&3/' src/psl-make-dafsa              &&
./configure --prefix=/usr --disable-static PYTHON=python3 &&
make
sudo make install
cd ..
rm -rf libpsl-0.21.2

12.5 wget-1.21.3

tar -xf wget-1.21.3.tar.gz
cd wget-1.21.3
./configure --prefix=/usr      \
            --sysconfdir=/etc  \
            --with-ssl=openssl &&
make
sudo make install
cd ..
rm -rf wget-1.21.3

13. reinstall Lynx


13.1 zip30

tar -xf zip30.tar.gz
cd zip30
make -f unix/Makefile generic_gcc
sudo make prefix=/usr MANDIR=/usr/share/man/man1 -f unix/Makefile install
cd ..
rm -rf zip30

13.2 lynx2.8.9rel.1

tar -xf lynx2.8.9rel.1.tar.bz2c
cd lynx2.8.9rel.1
patch -p1 -i ../lynx-2.8.9rel.1-security_fix-1.patch
./configure --prefix=/usr          \
            --sysconfdir=/etc/lynx \
            --datadir=/usr/share/doc/lynx-2.8.9rel.1 \
            --with-zlib            \
            --with-bzlib           \
            --with-ssl             \
            --with-screen=ncursesw \
            --enable-nls           \
            --enable-locale-charset &&
make
sudo su
make install-full &&
chgrp -v -R root /usr/share/doc/lynx-2.8.9rel.1/lynx_doc
exit
sudo su
sed -e '/#LOCALE/     a LOCALE_CHARSET:TRUE'     \
    -i /etc/lynx/lynx.cfg
sed -e '/#DEFAULT_ED/ a DEFAULT_EDITOR:vi'       \
    -i /etc/lynx/lynx.cfg
sed -e '/#PERSIST/    a PERSISTENT_COOKIES:TRUE' \
    -i /etc/lynx/lynx.cfg
exit
cd ..
rm -rf lynx2.8.9rel.1

================

14. X window 1


14.1 Introduction to Xorg-7

export XORG_PREFIX="/opt/xorg"
export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
    --localstatedir=/var --disable-static"
sudo su
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
cat > /etc/sudoers.d/xorg << EOF
Defaults env_keep += XORG_PREFIX
Defaults env_keep += XORG_CONFIG
EOF
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
source /etc/profile.d/xorg.sh
echo "$XORG_PREFIX/lib" >> /etc/ld.so.conf
sed -e "s@X11R6/man@X11R6/share/man@g" \
    -e "s@/usr/X11R6@$XORG_PREFIX@g"   \
    -i /etc/man_db.conf
ln -svf $XORG_PREFIX/share/X11 /usr/share/X11
ln -svf $XORG_PREFIX /usr/X11R6
exit

15. X Window 2


15.1 util-macros-1.20.0

tar -xf util-macros-1.20.0.tar.xz
cd util-macros-1.20.0
./configure $XORG_CONFIG
sudo make install
cd ..
rm -rf util-macros-1.20.0

15.2 xorgproto-2022.2

tar -xf xorgproto-2022.2.tar.xz
cd xorgproto-2022.2
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX -Dlegacy=true .. &&
ninja
sudo su
ninja install &&
mv -v $XORG_PREFIX/share/doc/xorgproto{,-2022.2}
exit
cd ../..
rm -rf xorgproto-2022.2

15.3 libXau-1.0.11

tar -xf libXau-1.0.11.tar.xz
cd libXau-1.0.11
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf libXau-1.0.11

15.4 libXdmcp-1.1.4

tar -xf libXdmcp-1.1.4.tar.xz
cd libXdmcp-1.1.4
./configure $XORG_CONFIG --docdir=/usr/share/doc/libXdmcp-1.1.4 &&
make
sudo make install
cd ..
rm -rf libXdmcp-1.1.4

15.5 icu4c-72_1-src

tar -xf icu4c-72_1-src.tgz
cd icu4c-72_1-src
cd source                                    &&

./configure --prefix=/usr                    &&
make
sudo make install
cd ..
rm -rf icu4c-72_1-src

15.6 libxml2-2.10.3

tar -xf libxml2-2.10.3.tar.xz
cd libxml2-2.10.3
./configure --prefix=/usr           \
            --sysconfdir=/etc       \
            --disable-static        \
            --with-history          \
            --with-icu              \
            PYTHON=/usr/bin/python3 \
            --docdir=/usr/share/doc/libxml2-2.10.3 &&
make
tar xf ../xmlts20130923.tar.gz
sudo make install
cd ..
rm -rf libxml2-2.10.3

16. X Window 3


16.1 xcb-proto-1.15.2

tar -xf xcb-proto-1.15.2.tar.xz
cd xcb-proto-1.15.2
PYTHON=python3 ./configure $XORG_CONFIG
sudo make install
sudo rm -f $XORG_PREFIX/lib/pkgconfig/xcb-proto.pc
cd ..
rm -rf xcb-proto-1.15.2

16.2 libxcb-1.15

tar -xf libxcb-1.15.tar.xz
cd libxcb-1.15
PYTHON=python3                \
./configure $XORG_CONFIG      \
            --without-doxygen \
            --docdir='${datadir}'/doc/libxcb-1.15 &&
make
sudo make install
cd ..
rm -rf libxcb-1.15

16.3 pcre-8.45

tar -xf pcre-8.45.tar.bz2
cd pcre-8.45
./configure --prefix=/usr                     \
            --docdir=/usr/share/doc/pcre-8.45 \
            --enable-unicode-properties       \
            --enable-pcre16                   \
            --enable-pcre32                   \
            --enable-pcregrep-libz            \
            --enable-pcregrep-libbz2          \
            --enable-pcretest-libreadline     \
            --enable-jit                      \
            --disable-static                 &&
make
sudo make install
cd ..
rm -rf pcre-8.45

16.4 dbus-1.14.6

tar -xf dbus-1.14.6.tar.xz
cd dbus-1.14.6
./configure --prefix=/usr                        \
            --sysconfdir=/etc                    \
            --localstatedir=/var                 \
            --runstatedir=/run                   \
            --enable-user-session                \
            --disable-doxygen-docs               \
            --disable-xml-docs                   \
            --disable-static                     \
            --with-systemduserunitdir=no         \
            --with-systemdsystemunitdir=no       \
            --docdir=/usr/share/doc/dbus-1.14.6  \
            --with-system-socket=/run/dbus/system_bus_socket &&
make
sudo make install
ln -sfv /var/lib/dbus/machine-id /etc
sudo su
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
cd /sources/BLFS/blfs-bootscripts-20230101/
sudo make install-dbus
exit
cd /sources/BLFS
rm -rf dbus-1.14.6

16.5 elogind-246.10

cd /sources/linux-6.1.11
sudo su
make menuconfig
General setup --->
    [*]     Control Group support                        [CONFIG_CGROUPS]
File systems --->
    [*]     Inotify support for userspace                [CONFIG_INOTIFY_USER]
            Pseudo filesystems --->
                [*]    Tmpfs POSIX Access Control Lists  [CONFIG_TMPFS_POSIX_ACL]
-*- Cryptographic API --->                               [CONFIG_CRYPTO]
   <M/*> Userspace cryptographic algorithm configuration [CONFIG_CRYPTO_USER]
   <M/*> User-space interface for hash algorithms        [CONFIG_CRYPTO_USER_API_HASH]
make
cp linux-6.1.11/arch/x86_64/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3-2
cp linux-6.1.11/System.map /boot/System.map-6.1.11-2
cp linux-6.1.11/.config /boot/config-6.1.11-2
exit
tar -xf elogind-246.10.tar.gz
cd elogind-246.10
sed -i '/Disable polkit/,+8 d' meson.build &&

sed '/request_name/i\
r = sd_bus_set_exit_on_disconnect(m->bus, true);\
if (r < 0)\
    return log_error_errno(r, "Failed to set exit on disconnect: %m");' \
    -i src/login/logind.c &&

mkdir build &&
cd    build &&

meson --prefix=/usr                        \
      --buildtype=release                  \
      -Dcgroup-controller=elogind          \
      -Ddbuspolicydir=/etc/dbus-1/system.d \
      -Dman=auto                           \
      ..  &&
ninja
sudo su
ninja install                                           &&
ln -sfv  libelogind.pc /usr/lib/pkgconfig/libsystemd.pc &&
ln -sfvn elogind /usr/include/systemd
exit
sudo su
sed -e '/\[Login\]/a KillUserProcesses=no' \
    -i /etc/elogind/logind.conf
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
exit
cd ../..
rm -rf elogind-246.10

16.6 freetype-2.13.0

tar -xf freetype-2.13.0.tar.xz
cd freetype-2.13.0
tar -xf ../freetype-doc-2.13.0.tar.xz --strip-components=2 -C docs
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
sudo make install
sudo su
install -v -m755 -d /usr/share/doc/freetype-2.13.0 &&
cp -v -R docs/*     /usr/share/doc/freetype-2.13.0 &&
rm -v /usr/share/doc/freetype-2.13.0/freetype-config.1
exit
cd ..
rm -rf freetype-2.13.0

16.7 fontconfig-2.14.2

tar -xf fontconfig-2.14.2.tar.xz
cd fontconfig-2.14.2
./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --disable-docs       \
            --docdir=/usr/share/doc/fontconfig-2.14.2 &&
make
sudo make install
sudo su
install -v -dm755 \
        /usr/share/{man/man{1,3,5},doc/fontconfig-2.14.2/fontconfig-devel} &&
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/fontconfig-devel/* \
                                  /usr/share/doc/fontconfig-2.14.2/fontconfig-devel &&
install -v -m644 doc/*.{pdf,sgml,txt,html} \
                                  /usr/share/doc/fontconfig-2.14.2
exit
cd ..
rm -rf fontconfig-2.14.2

17. X Window 4


17.1 Xorg Libraries

cd /sources/BLFS
mkdir lib
cat > lib-7.md5 << "EOF"
ce2fb8100c6647ee81451ebe388b17ad  xtrans-1.4.0.tar.bz2
e932752126240f0846b35eef6b1f2c3d  libX11-1.8.4.tar.xz
964942427fcc5a9fa0539661421857c8  libXext-1.3.5.tar.xz
742863a552ecd53cdb957b7b276213cc  libFS-1.0.9.tar.xz
b444a0e4c2163d1bbc7b046c3653eb8d  libICE-1.1.1.tar.xz
ffa434ed96ccae45533b3d653300730e  libSM-1.2.4.tar.xz
e613751d38e13aa0d0fd8e0149cec057  libXScrnSaver-1.2.4.tar.xz
b122ff9a7ec70c94dbbfd814899fffa5  libXt-1.2.1.tar.bz2
ed52d396115fbc4d05300762aab79685  libXmu-1.1.4.tar.xz
b3c58c94e284fd6940d3615e660a0007  libXpm-3.5.15.tar.xz
c1ce21c296bbf3da3e30cf651649563e  libXaw-1.0.14.tar.bz2
86f182f487f4f54684ef6b142096bb0f  libXfixes-6.0.0.tar.bz2
af0a5f0abb5b55f8411cd738cf0e5259  libXcomposite-0.4.6.tar.xz
ebf7fb3241ec03e8a3b2af72f03b4631  libXrender-0.9.11.tar.xz
4cdd1886fe5cce6f68554296edb46db8  libXcursor-1.2.1.tar.xz
ca55d29fa0a8b5c4a89f609a7952ebf8  libXdamage-1.1.6.tar.xz
6d3f1b15bb5b0bb71ae9f0a5103c1fc4  libfontenc-1.1.7.tar.xz
c179daa707f5f432f1bc13977e5bb329  libXfont2-2.0.6.tar.xz
69dc24ba444a0f6bd99423dbf8fd0260  libXft-2.3.7.tar.xz
74055672a111a98ce2841d2ec4057b05  libXi-1.8.tar.bz2
228c877558c265d2f63c56a03f7d3f21  libXinerama-1.1.5.tar.xz
850cbc7c921c9d5d0135734b114ff6ac  libXrandr-1.5.3.tar.xz
66c9e9e01b0b53052bb1d02ebf8d7040  libXres-1.2.2.tar.xz
02f128fbf809aa9c50d6e54c8e57cb2e  libXtst-1.2.4.tar.xz
70bfdd14ca1a563c218794413f0c1f42  libXv-1.0.12.tar.xz
11a358e7229fa28dc9801c1e64fe2e18  libXvMC-1.0.13.tar.xz
74d1acf93b83abeb0954824da0ec400b  libXxf86dga-1.1.6.tar.xz
5b913dac587f2de17a02e17f9a44a75f  libXxf86vm-1.1.5.tar.xz
d2f1f0ec68ac3932dd7f1d9aa0a7a11c  libdmx-1.1.4.tar.bz2
1466cf950c914ad2db1dbb76c9a724db  libpciaccess-0.17.tar.xz
8af2275955d40166bb647b14e4896ab1  libxkbfile-1.1.2.tar.xz
faa74f7483074ce7d4349e6bdc237497  libxshmfence-1.3.2.tar.xz
EOF

All packages download to /sources/BLFS/lib.

cd /sources/BLFS/lib
md5sum -c ../lib-7.md5
as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root
bash -e
for package in $(grep -v '^#' ../lib-7.md5 | awk '{print $2}')
do
  packagedir=${package%.tar.?z*}
  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]* )
      sed -i '/TestAll.*TRUE/s|^|//|' test/TestAllFiles.h
      ./configure $XORG_CONFIG $docdir --disable-open-zfile
    ;;
    
    * )
      ./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
exit
grep -A9 summary *make_check.log

18. X Window 5


18.1 xcb-util-0.4.1

tar -xf xcb-util-0.4.1.tar.xz
cd xcb-util-0.4.1
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xcb-util-0.4.1

18.2 xcb-util-image-0.4.1

tar -xf xcb-util-image-0.4.1.tar.xz
cd xcb-util-image-0.4.1
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xcb-util-image-0.4.1

18.3 xcb-util-keysyms-0.4.1

tar -xf xcb-util-keysyms-0.4.1.tar.xz
cd xcb-util-keysyms-0.4.1
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xcb-util-keysyms-0.4.1

18.4 xcb-util-renderutil-0.3.10

tar -xf xcb-util-renderutil-0.3.10.tar.xz
cd xcb-util-renderutil-0.3.10
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xcb-util-renderutil-0.3.10

18.5 xcb-util-wm-0.4.2

tar -xf xcb-util-wm-0.4.2.tar.xz
cd xcb-util-wm-0.4.2
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xcb-util-wm-0.4.2

18.6 xcb-util-cursor-0.1.4

tar -xf xcb-util-cursor-0.1.4.tar.xz
cd xcb-util-cursor-0.1.4
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xcb-util-cursor-0.1.4

19. Mesa 1


19.1 MarkupSafe-2.1.2

tar -xf MarkupSafe-2.1.2.tar.gz
cd MarkupSafe-2.1.2
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user markupsafe
cd ..
rm -rf MarkupSafe-2.1.2

19.2 Mako-1.2.4

tar -xf Mako-1.2.4.tar.gz
cd Mako-1.2.4
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user Mako
cd ..
rm -rf Mako-1.2.4

19.3 libdrm-2.4.115

cd /sources/linux-6.1.11
sudo su
make menuconfig
CONFIG_DRM_VMWGFX=y
CONFIG_DRM_VMWGFX_FBCON=y
CONFIG_DRM_VMWGFX_MKSSTATS=y
make
exit
cp linux-6.1.11/arch/x86_64/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3-2
cp linux-6.1.11/System.map /boot/System.map-6.1.11-2
cp linux-6.1.11/.config /boot/config-6.1.11-2
tar -xf libdrm-2.4.115.tar.xz
cd libdrm-2.4.115
mkdir build &&
cd    build &&

meson setup  --prefix=$XORG_PREFIX \
             --buildtype=release   \
             -Dudev=true           \
             -Dvalgrind=disabled   &&
ninja
sudo ninja install
cd ../..
rm -rf libdrm-2.4.115

20. Mesa 2


20.1 libuv-v1.44.2

tar -xf libuv-v1.44.2.tar.gz
cd libuv-v1.44.2
sh autogen.sh                              &&
./configure --prefix=/usr --disable-static &&
make 
sudo make install
cd ..
rm -rf libuv-v1.44.2

20.2 curl-7.88.1

tar -xf curl-7.88.1.tar.xz
cd curl-7.88.1
./configure --prefix=/usr                           \
            --disable-static                        \
            --with-openssl                          \
            --enable-threaded-resolver              \
            --with-ca-path=/etc/ssl/certs &&
make
sudo su
make install &&

rm -rf docs/examples/.deps &&

find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&

install -v -d -m755 /usr/share/doc/curl-7.88.1 &&
cp -v -R docs/*     /usr/share/doc/curl-7.88.1
exit
cd ..
rm -rf curl-7.88.1

20.3 nettle-3.8.1

tar -xf nettle-3.8.1.tar.gz
cd nettle-3.8.1
./configure --prefix=/usr --disable-static &&
make
sudo su
make install &&
chmod   -v   755 /usr/lib/lib{hogweed,nettle}.so &&
install -v -m755 -d /usr/share/doc/nettle-3.8.1 &&
install -v -m644 nettle.html /usr/share/doc/nettle-3.8.1
exit
cd ..
rm -rf nettle-3.8.1

20.4 lzo-2.10

tar -xf lzo-2.10.tar.gz
cd lzo-2.10
./configure --prefix=/usr                    \
            --enable-shared                  \
            --disable-static                 \
            --docdir=/usr/share/doc/lzo-2.10 &&
make
sudo make install
cd ..
rm -rf lzo-2.10

20.5 libarchive-3.6.2

tar -xf libarchive-3.6.2.tar.xz
cd libarchive-3.6.2
./configure --prefix=/usr --disable-static &&
make
sudo make install
sudo sed -i "s/iconv //" /usr/lib/pkgconfig/libarchive.pc
cd ..
rm -rf libarchive-3.6.2

20.6 nghttp2-1.52.0

tar -xf nghttp2-1.52.0.tar.xz
cd nghttp2-1.52.0
./configure --prefix=/usr     \
            --disable-static  \
            --enable-lib-only \
            --docdir=/usr/share/doc/nghttp2-1.52.0 &&
make
sudo make install
cd ..
rm -rf nghttp2-1.52.0

21. Mesa 3


21.1 cmake-3.25.2

tar -xf cmake-3.25.2.tar.gz
cd cmake-3.25.2
sed -i '/"lib64"/s/64//' Modules/GNUInstallDirs.cmake &&

./bootstrap --prefix=/usr        \
            --system-libs        \
            --mandir=/share/man  \
            --no-system-jsoncpp  \
            --no-system-librhash \
            --parallel=2         \
            --docdir=/share/doc/cmake-3.25.2 &&
make
sudo make install
cd ..
rm -rf cmake-3.25.2

22. Mesa 4


22.1 libva-2.17.0

tar -xf libva-2.17.0.tar.bz2
cd libva-2.17.0
./configure $XORG_CONFIG &&
make
sudo make install
tar -xvf ../intel-vaapi-driver-2.4.1.tar.bz2 &&
cd intel-vaapi-driver-2.4.1
./configure $XORG_CONFIG &&
make
sudo make install
cd /sources/BLFS
rm -rf libva-2.17.0

23. Mesa 5


23.1 llvm-15.0.7.src

tar -xf llvm-15.0.7.src.tar.xz
cd llvm-15.0.7.src
tar -xf ../llvm-cmake-15.0.7.src.tar.xz &&
sed '/LLVM_COMMON_CMAKE_UTILS/s@../cmake@cmake-15.0.7.src@' \
    -i CMakeLists.txt
tar -xf ../clang-15.0.7.src.tar.xz -C tools &&
mv tools/clang-15.0.7.src tools/clang
tar -xf ../compiler-rt-15.0.7.src.tar.xz -C projects &&
mv projects/compiler-rt-15.0.7.src projects/compiler-rt
grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'
patch -Np2 -d tools/clang <../clang-15.0.7-enable_default_ssp-1.patch
mkdir -v build &&
cd       build &&

CC=gcc CXX=g++                                  \
cmake -DCMAKE_INSTALL_PREFIX=/usr               \
      -DLLVM_ENABLE_FFI=ON                      \
      -DCMAKE_BUILD_TYPE=Release                \
      -DLLVM_BUILD_LLVM_DYLIB=ON                \
      -DLLVM_LINK_LLVM_DYLIB=ON                 \
      -DLLVM_ENABLE_RTTI=ON                     \
      -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF" \
      -DLLVM_BINUTILS_INCDIR=/usr/include       \
      -DLLVM_INCLUDE_BENCHMARKS=OFF             \
      -DCLANG_DEFAULT_PIE_ON_LINUX=ON           \
      -Wno-dev -G Ninja ..                      &&
ninja
ninja docs-clang-html docs-clang-man
sudo su
ninja install &&
cp bin/FileCheck /usr/bin
exit
cd /sources/BLFS
rm -rf llvm-15.0.7.src

24. Mesa 6


24.1 mesa-22.3.5

tar -xf mesa-22.3.5.tar.xz
cd mesa-22.3.5
patch -Np1 -i ../mesa-22.3.5-add_xdemos-1.patch
mkdir build &&
cd    build &&

meson setup                   \
      --prefix=$XORG_PREFIX   \
      --buildtype=release     \
      -Dplatforms=x11,wayland \
      -Dgallium-drivers=auto  \
      -Dvulkan-drivers=""     \
      -Dvalgrind=disabled     \
      -Dlibunwind=disabled    \
      ..                      &&

ninja
sudo ninja install
cd ../..
rm -rf 

25. X Window 12


25.1 xbitmaps-1.1.2

tar -xf xbitmaps-1.1.2.tar.bz2
cd xbitmaps-1.1.2
./configure $XORG_CONFIG
sudo make install
cd ..
rm -rf xbitmaps-1.1.2

25.2 libpng-1.6.39

tar -xf libpng-1.6.39.tar.xz
cd libpng-1.6.39
gzip -cd ../libpng-1.6.39-apng.patch.gz | patch -p1
./configure --prefix=/usr --disable-static &&
make
sudo su
make install &&
mkdir -v /usr/share/doc/libpng-1.6.39 &&
cp -v README libpng-manual.txt /usr/share/doc/libpng-1.6.39
exit
cd ..
rm -rf libpng-1.6.39

25.3 Xorg Applications

cat > app-7.md5 << "EOF"
5d3feaa898875484b6b340b3888d49d8  iceauth-1.0.9.tar.xz
c4a3664e08e5a47c120ff9263ee2f20c  luit-1.1.1.tar.bz2
fd2e6e5a297ac2bf3d7d54799bf69de0  mkfontscale-1.2.2.tar.xz
05423bb42a006a6eb2c36ba10393de23  sessreg-1.1.3.tar.xz
2f72c7170cdbadc8ef786b2f9cfd4a69  setxkbmap-1.3.3.tar.xz
9f7a4305f0e79d5a46c3c7d02df9437d  smproxy-1.0.7.tar.xz
e96b56756990c56c24d2d02c2964456b  x11perf-1.6.1.tar.bz2
dbcf944eb59343b84799b2cc70aace16  xauth-1.1.2.tar.xz
5b6405973db69c0443be2fba8e1a8ab7  xbacklight-1.2.3.tar.bz2
82a90e2feaeab5c5e7610420930cc0f4  xcmsdb-1.0.6.tar.xz
89e81a1c31e4a1fbd0e431425cd733d7  xcursorgen-1.0.8.tar.xz
f67116760888f2e06486ee3d179875d2  xdpyinfo-1.3.3.tar.xz
34aff1f93fa54d6a64cbe4fee079e077  xdriinfo-1.0.7.tar.xz
61219e492511b3d78375da76defbdc97  xev-1.2.5.tar.xz
41afaa5a68cdd0de7e7ece4805a37f11  xgamma-1.0.7.tar.xz
48ac13856838d34f2e7fca8cdc1f1699  xhost-1.0.9.tar.xz
ac6b7432726008b2f50eba82b0e2dbe4  xinput-1.6.3.tar.bz2
a11d4d6eeda762f13818684c0670f89f  xkbcomp-1.4.6.tar.xz
05ce1abd8533a400572784b1186a44d0  xkbevd-1.1.5.tar.xz
cf65ca1aaf4c28772ca7993cfd122563  xkbutils-1.0.5.tar.xz
f62b99839249ce9a7a8bb71a5bab6f9d  xkill-1.0.6.tar.xz
da5b7a39702841281e1d86b7349a03ba  xlsatoms-1.1.4.tar.xz
ab4b3c47e848ba8c3e47c021230ab23a  xlsclients-1.1.5.tar.xz
f33841b022db1648c891fdc094014aee  xmessage-1.0.6.tar.xz
0d66e07595ea083871048c4b805d8b13  xmodmap-1.0.11.tar.xz
9cf272cba661f7acc35015f2be8077db  xpr-1.1.0.tar.xz
33c090d8632a300e63efbf36edd6a333  xprop-1.2.6.tar.xz
f822a8d5f233e609d27cc22d42a177cb  xrandr-1.5.2.tar.xz
85f04a810e2fb6b41ab872b421dce1b1  xrdb-1.2.1.tar.bz2
33b04489e417d73c90295bd2a0781cbb  xrefresh-1.0.7.tar.xz
18ff5cdff59015722431d568a5c0bad2  xset-1.2.5.tar.xz
fa9a24fe5b1725c52a4566a62dd0a50d  xsetroot-1.1.3.tar.xz
d698862e9cad153c5fefca6eee964685  xvinfo-1.1.5.tar.xz
f783a209f2e3fa13253cedb65eaf9cdb  xwd-1.0.8.tar.bz2
26d46f7ef0588d3392da3ad5802be420  xwininfo-1.1.5.tar.bz2
5ff5dc120e8e927dc3c331c7fee33fc3  xwud-1.0.6.tar.xz
EOF
cd /sources/BLFS
mkdir app
cd app/

Download all packages to /sources/BLFS/app.

md5sum -c ../app-7.md5
as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root
bash -e
for package in $(grep -v '^#' ../app-7.md5 | awk '{print $2}')
do
  packagedir=${package%.tar.?z*}
  tar -xf $package
  pushd $packagedir
     case $packagedir in
       luit-[0-9]* )
         sed -i -e "/D_XOPEN/s/5/6/" configure
       ;;
     esac

     ./configure $XORG_CONFIG
     make
     as_root make install
  popd
  rm -rf $packagedir
done
exit
as_root rm -f $XORG_PREFIX/bin/xkeystone

26. X Window 13


26.1 xcursor-themes-1.0.6

tar -xf xcursor-themes-1.0.6.tar.bz2
cd xcursor-themes-1.0.6
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xcursor-themes-1.0.6

26.2 Xorg Fonts

cat > font-7.md5 << "EOF"
ec6cea7a46c96ed6be431dfbbb78f366  font-util-1.4.0.tar.xz
c2bcfdc52b8b6462228342cedae2fed9  encodings-1.0.6.tar.xz
0497de0176a0dfa5fac2b0552a4cf380  font-alias-1.0.4.tar.bz2
fcf24554c348df3c689b91596d7f9971  font-adobe-utopia-type1-1.0.4.tar.bz2
e8ca58ea0d3726b94fe9f2c17344be60  font-bh-ttf-1.0.3.tar.bz2
53ed9a42388b7ebb689bdfc374f96a22  font-bh-type1-1.0.3.tar.bz2
bfb2593d2102585f45daa960f43cb3c4  font-ibm-type1-1.0.3.tar.bz2
4ee18ab6c1edf636b8e75b73e6037371  font-misc-ethiopic-1.0.4.tar.bz2
3eeb3fb44690b477d510bbd8f86cf5aa  font-xfree86-type1-1.0.4.tar.bz2
EOF
cd /sources/BLFS
mkdir font
cd font/

Download all packages to /source/BLFS/font.

md5sum -c ../font-7.md5
tar -xf dejavu-fonts-ttf-2.37.tar.bz2
cd dejavu-fonts-ttf-2.37
install -v -d -m755 /usr/share/fonts/dejavu &&
install -v -m644 ttf/*.ttf /usr/share/fonts/dejavu &&
fc-cache -v /usr/share/fonts/dejavu
fc-list -b
as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root
bash -e
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
exit

27. X Window 14


27.1 xkeyboard-config-2.38

tar -xf xkeyboard-config-2.38.tar.xz
cd xkeyboard-config-2.38
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf xkeyboard-config-2.38

27.2 libepoxy-1.5.10

tar -xf libepoxy-1.5.10.tar.xz
cd libepoxy-1.5.10
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf libepoxy-1.5.10

27.3 libxcvt-0.1.2

tar -xf libxcvt-0.1.2.tar.xz
cd libxcvt-0.1.2
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf libxcvt-0.1.2

27.4 pixman-0.42.2

tar -xf pixman-0.42.2.tar.gz
cd pixman-0.42.2
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release &&
ninja
sudo ninja install
cd ../..
rm -rf pixman-0.42.2

27.5 xorg-server-21.1.7

tar -xf xorg-server-21.1.7.tar.xz
cd xorg-server-21.1.7
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX \
      --localstatedir=/var  \
      -Dsuid_wrapper=true   \
      -Dxkb_output_dir=/var/lib/xkb &&
ninja
sudo su
ninja install &&
mkdir -pv /etc/X11/xorg.conf.d &&
cat >> /etc/sysconfig/createfiles << "EOF"
/tmp/.ICE-unix dir 1777 root root
/tmp/.X11-unix dir 1777 root root
EOF
exit
cd ../..
rm -rf xorg-server-21.1.7

28. X Window 15


28.1 which-2.21

tar -xf which-2.21.tar.gz
cd which-2.21
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf which-2.21

28.2 pciutils-3.9.0

tar -xf pciutils-3.9.0.tar.gz
cd pciutils-3.9.0
make PREFIX=/usr                \
     SHAREDIR=/usr/share/hwdata \
     SHARED=yes
sudo su
make PREFIX=/usr                \
     SHAREDIR=/usr/share/hwdata \
     SHARED=yes                 \
     install install-lib        &&

chmod -v 755 /usr/lib/libpci.so
cat > /etc/cron.weekly/update-pciids.sh << "EOF" &&
#!/bin/bash
/usr/sbin/update-pciids
EOF
chmod 754 /etc/cron.weekly/update-pciids.sh
exit
cd ..
rm -rf pciutils-3.9.0

28.3 libevdev-1.13.0

cd /sources/linux-6.1.11
sudo su
make menuconfig
Device Drivers  --->
  Input device support --->
    <*> Generic input layer (needed for keyboard, mouse, ...) [CONFIG_INPUT]
    <*>   Event interface                   [CONFIG_INPUT_EVDEV]
    [*]   Miscellaneous devices  --->       [CONFIG_INPUT_MISC]
      <*/m>    User level driver support    [CONFIG_INPUT_UINPUT]
make
cp linux-6.1.11/arch/x86_64/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3-2
cp linux-6.1.11/System.map /boot/System.map-6.1.11-2
cp linux-6.1.11/.config /boot/config-6.1.11-2
tar -xf libevdev-1.13.0.tar.xz
cd libevdev-1.13.0
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX    \
      --buildtype=release      \
      -Ddocumentation=disabled &&
ninja
sudo ninja install
cd ../..
rm -rf libevdev-1.13.0

28.4 mtdev-1.1.6

tar -xf mtdev-1.1.6.tar.bz2
cd mtdev-1.1.6
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf mtdev-1.1.6

28.5 xf86-input-evdev-2.10.6

tar -xf xf86-input-evdev-2.10.6.tar.bz2
cd xf86-input-evdev-2.10.6
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xf86-input-evdev-2.10.6

28.6 xf86-video-vmware-13.4.0

tar -xf xf86-video-vmware-13.4.0.tar.xz
cd xf86-video-vmware-13.4.0
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xf86-video-vmware-13.4.0

29. X Window 16


29.1 twm-1.0.12

tar -xf twm-1.0.12.tar.xz
cd twm-1.0.12
sed -i -e '/^rcdir =/s,^\(rcdir = \).*,\1/etc/X11/app-defaults,' src/Makefile.in &&
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf twm-1.0.12

29.2 xterm-379

tar -xf xterm-379.tgz
cd xterm-379
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
sudo su
make install    &&
make install-ti &&

mkdir -pv /usr/share/applications &&
cp -v *.desktop /usr/share/applications/
cat >> /etc/X11/app-defaults/XTerm << "EOF"
*VT100*locale: true
*VT100*faceName: Monospace
*VT100*faceSize: 10
*backarrowKeyIsErase: true
*ptyInitialErase: true
EOF
exit
cd ..
rm -rf xterm-379

29.3 xclock-1.1.1

tar -xf xclock-1.1.1.tar.xz
cd xclock-1.1.1
./configure $XORG_CONFIG &&
make
sudo make install
cd ..
rm -rf xclock-1.1.1

29.4 xinit-1.4.2

tar -xf xinit-1.4.2.tar.xz
cd xinit-1.4.2
./configure $XORG_CONFIG --with-xinitdir=/etc/X11/app-defaults &&
make
sudo su
make install &&
ldconfig
chmod u+s $XORG_PREFIX/libexec/Xorg
sed -i '/$serverargs $vtarg/ s/serverargs/: #&/' $XORG_PREFIX/bin/startx
exit
cd ..
rm -rf xinit-1.4.2

30. X Window 17


30.1 Tuning Fontconfig

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.

    hintmedium: poorly documented, maybe a synonym for hintfull.
    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
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

30.2 Xorg Legacy

cat > legacy.dat << "EOF"
2a455d3c02390597feb9cefb3fe97a45 bdftopcf-1.1.tar.bz2
1347c3031b74c9e91dc4dfa53b12f143 font-adobe-100dpi-1.0.3.tar.bz2
6c9f26c92393c0756f3e8d614713495b font-adobe-75dpi-1.0.3.tar.bz2
cb7b57d7800fd9e28ec35d85761ed278 font-jis-misc-1.0.3.tar.bz2
0571bf77f8fab465a5454569d9989506 font-daewoo-misc-1.0.3.tar.bz2
a2401caccbdcf5698e001784dbd43f1a font-isas-misc-1.0.3.tar.bz2
c88eb44b3b903d79fb44b860a213e623 font-misc-misc-1.1.2.tar.bz2
EOF
cd /sources/BLFS
mkdir legacy
cd legacy
md5sum -c ../legacy.md5
as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root
bash -e
for package in $(grep -v '^#' ../legacy.md5 | awk '{print $2}')
do
  packagedir=${package%.tar.bz2}
  tar -xf $package
  pushd $packagedir
    ./configure $XORG_CONFIG
    make
    as_root make install
  popd
  rm -rf $packagedir
  as_root /sbin/ldconfig
done
exit

================

31. At-spi2-core and Dependencies


31.1 dbus-1.14.6

tar -xf dbus-1.14.6.tar.xz
cd dbus-1.14.6
./configure --prefix=/usr                        \
            --sysconfdir=/etc                    \
            --localstatedir=/var                 \
            --runstatedir=/run                   \
            --enable-user-session                \
            --disable-doxygen-docs               \
            --disable-xml-docs                   \
            --disable-static                     \
            --with-systemduserunitdir=no         \
            --with-systemdsystemunitdir=no       \
            --docdir=/usr/share/doc/dbus-1.14.6  \
            --with-system-socket=/run/dbus/system_bus_socket &&
make
sudo make install
sudo su
ln -sfv /var/lib/dbus/machine-id /etc
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
cd /sources/BLFS/blfs-bootscripts-20230101
make install-dbus
exit
cd /sources/BLFS
rm -rf dbus-1.14.6

31.2 sgml-common-0.6.3

tar -xf sgml-common-0.6.3.tgz
cd sgml-common-0.6.3
patch -Np1 -i ../sgml-common-0.6.3-manpage-1.patch &&
autoreconf -f -i
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo su
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
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
exit
cd ..
rm -rf sgml-common-0.6.3

31.3 docbook-xml-4.5

tar -xf docbook-xml-4.5.zip
cd docbook-xml-4.5
sudo su
install -v -d -m755 /usr/share/xml/docbook/xml-dtd-4.5 &&
install -v -d -m755 /etc/xml &&
chown -R root:root . &&
cp -v -af docbook.cat *.dtd ent/ *.mod \
    /usr/share/xml/docbook/xml-dtd-4.5
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
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
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
exit
cd ..
rm -rf docbook-xml-4.5

31.4 docbook-xsl-nons-1.79.2

tar -xf docbook-xsl-nons-1.79.2.tar.bz2
cd docbook-xsl-nons-1.79.2
patch -Np1 -i ../docbook-xsl-nons-1.79.2-stack_fix-1.patch
tar -xf ../docbook-xsl-doc-1.79.2.tar.bz2 --strip-components=1
sudo su
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
cp -v -R doc/* /usr/share/doc/docbook-xsl-nons-1.79.2
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" \
           "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" \
           "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" \
           "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" \
           "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
exit
cd ..
rm -rf docbook-xsl-nons-1.79.2

31.5 libxslt-1.1.37

tar -xf libxslt-1.1.37.tar.xz
cd libxslt-1.1.37
./configure --prefix=/usr                          \
            --disable-static                       \
            --docdir=/usr/share/doc/libxslt-1.1.37 \
            PYTHON=/usr/bin/python3 &&
make
sudo make install
cd ..
rm -rf libxslt-1.1.37

31.6 GLib-2.74.5

tar -xf glib-2.74.5.tar.xz
cd glib-2.74.5
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dman=true          \
      ..                  &&
ninja
sudo su
ninja install &&

mkdir -p /usr/share/doc/glib-2.74.5 &&
cp -r ../docs/reference/{gio,glib,gobject} /usr/share/doc/glib-2.74.5
exit
cd ../..
rm -rf glib-2.74.5

31.7 gobject-introspection-1.74.0

tar -xf gobject-introspection-1.74.0.tar.xz
cd gobject-introspection-1.74.0
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf gobject-introspection-1.74.0

31.8 gsettings-desktop-schemas-43.0

tar -xf gsettings-desktop-schemas-43.0.tar.xz
cd gsettings-desktop-schemas-43.0
sed -i -r 's:"(/system):"/org/gnome\1:g' schemas/*.in &&

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf gsettings-desktop-schemas-43.0

31.9 at-spi2-core-2.46.0

tar -xf at-spi2-core-2.46.0.tar.xz
cd at-spi2-core-2.46.0
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dsystemd_user_dir=/tmp .. &&
ninja
sudo su
ninja install &&
rm /tmp/at-spi-dbus-bus.service
exit
cd ../..
rm -rf at-spi2-core-2.46.0

32. Shared-mime-info and dependencies


32.1 libjpeg-turbo-2.1.5.1

tar -xf libjpeg-turbo-2.1.5.1.tar.xz
cd libjpeg-turbo-2.1.5.1
mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=RELEASE  \
      -DENABLE_STATIC=FALSE       \
      -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/libjpeg-turbo-2.1.5.1 \
      -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib  \
      .. &&
make
sudo make install
cd ../..
rm -rf libjpeg-turbo-2.1.5.1

32.2 libpng-1.6.39

tar -xf libpng-1.6.39.tar.xz
cd libpng-1.6.39
gzip -cd ../libpng-1.6.39-apng.patch.gz | patch -p1
./configure --prefix=/usr --disable-static &&
make
sudo su
make install &&
mkdir -v /usr/share/doc/libpng-1.6.39 &&
cp -v README libpng-manual.txt /usr/share/doc/libpng-1.6.39
exit
cd ..
rm -rf libpng-1.6.39

32.3 shared-mime-info-2.2

tar -xf shared-mime-info-2.2.tar.gz
cd shared-mime-info-2.2
tar -xf ../xdgmime.tar.xz &&
make -C xdgmime
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release -Dupdate-mimedb=true .. &&
ninja
sudo ninja install
cd ../..
rm -rf shared-mime-info-2.2

33. GTK+3 1


33.1 Markdown-3.4.1

tar -xf Markdown-3.4.1
cd Markdown-3.4.1
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user Markdown
cd ..
rm -rf Markdown-3.4.1

33.2 MarkupSafe-2.1.2

tar -xf MarkupSafe-2.1.2.tar.gz
cd MarkupSafe-2.1.2
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user markupsafe
cd ..
rm -rf MarkupSafe-2.1.2

33.3 Pygments-2.14.0

tar -xf Pygments-2.14.0
cd Pygments-2.14.0
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user Pygments
cd ..
rm -rf Pygments-2.14.0

33.4 Jinja2-3.1.2

tar -xf Jinja2-3.1.2.tar.gz
cd Jinja2-3.1.2
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user Jinja2
cd ..
rm -rf Jinja2-3.1.2

33.5 smartypants-2.0.1

tar -xf smartypants-2.0.1
cd smartypants-2.0.1
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user smartypants
cd ..
rm -rf smartypants-2.0.1

33.6 typogrify-2.0.7

tar -xf typogrify-2.0.7.tar.gz
cd typogrify-2.0.7
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo pip3 install --no-index --find-links dist --no-cache-dir --no-user typogrify
cd ..
rm -rf typogrify-2.0.7

33.7 docutils-0.19

tar -xf docutils-0.19.tar.gz
cd docutils-0.19
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
sudo su
pip3 install --no-index --find-links dist --no-cache-dir --no-user docutils &&

for f in /usr/bin/rst*.py; do
  ln -svf $(basename $f) /usr/bin/$(basename $f .py)
done
rm -rfv /usr/bin/__pycache__
exit
cd ..
rm -rf docutils-0.19

33.8 gdk-pixbuf-2.42.10

tar -xf gdk-pixbuf-2.42.10.tar.xz
cd gdk-pixbuf-2.42.10
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release --wrap-mode=nofallback .. &&
ninja
sudo ninja install
cd ../..
rm -rf gdk-pixbuf-2.42.10

33.9 libepoxy-1.5.10

tar -xf libepoxy-1.5.10.tar.xz
cd libepoxy-1.5.10
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf libepoxy-1.5.10

34. GTK+3 2


34.1 FriBidi-1.0.12

tar -xf fribidi-1.0.12.tar.xz
cd fribidi-1.0.12
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf fribidi-1.0.12

34.2 Graphite2-1.3.14

tar -xf graphite2-1.3.14.tgz
cd graphite2-1.3.14
sed -i '/cmptest/d' tests/CMakeLists.txt
mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr .. &&
make
sudo make install
cd ../..
rm -rf graphite2-1.3.14

34.3 HarfBuzz-7.0.0

tar -xf harfbuzz-7.0.0.tar.xz
cd harfbuzz-7.0.0
mkdir build &&
cd    build &&

meson --prefix=/usr        \
      --buildtype=release  \
      -Dgraphite2=enabled  &&
ninja
sudo ninja install
cd ../..
rm -rf harfbuzz-7.0.0

34.4 FreeType-2.13.0

tar -xf freetype-2.13.0.tar.xz
cd freetype-2.13.0
tar -xf ../freetype-doc-2.13.0.tar.xz --strip-components=2 -C docs
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
sudo make install
sudo su
install -v -m755 -d /usr/share/doc/freetype-2.13.0 &&
cp -v -R docs/*     /usr/share/doc/freetype-2.13.0 &&
rm -v /usr/share/doc/freetype-2.13.0/freetype-config.1
exit
cd ..
rm -rf freetype-2.13.0

34.5 Fontconfig-2.14.2

tar -xf fontconfig-2.14.2.tar.xz
cd fontconfig-2.14.2
./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --disable-docs       \
            --docdir=/usr/share/doc/fontconfig-2.14.2 &&
make
sudo make install
sudo su
install -v -dm755 \
        /usr/share/{man/man{1,3,5},doc/fontconfig-2.14.2/fontconfig-devel} &&
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/fontconfig-devel/* \
                                  /usr/share/doc/fontconfig-2.14.2/fontconfig-devel &&
install -v -m644 doc/*.{pdf,sgml,txt,html} \
                                  /usr/share/doc/fontconfig-2.14.2
exit
cd ..
rm -rf fontconfig-2.14.2

34.6 Cairo-1.17.6

tar -xf cairo-1.17.6.tar.xz
cd cairo-1.17.6
sed 's/PTR/void */' -i util/cairo-trace/lookup-symbol.c
sed -e "/@prefix@/a exec_prefix=@exec_prefix@" \
    -i util/cairo-script/cairo-script-interpreter.pc.in
./configure --prefix=/usr    \
            --disable-static \
            --enable-tee &&
make
sudo make install
cd ..
rm -rf cairo-1.17.6

34.7 Pango-1.50.12

tar -xf pango-1.50.12.tar.xz
cd pango-1.50.12
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release --wrap-mode=nofallback .. &&
ninja
sudo ninja install
cd ../..
rm -rf pango-1.50.12

35. GTK+3 3


35.1 Wayland-1.21.0

tar -xf wayland-1.21.0.tar.xz
cd wayland-1.21.0
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Ddocumentation=false &&
ninja
sudo ninja install
cd ../..
rm -rf wayland-1.21.0

35.2 wayland-protocols-1.31

tar -xf wayland-protocols-1.31.tar.xz
cd wayland-protocols-1.31
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release &&
ninja
ninja install
cd ../..
rm -rf wayland-protocols-1.31

35.3 libxkbcommon-1.5.0

tar -xf libxkbcommon-1.5.0.tar.xz
cd libxkbcommon-1.5.0
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Denable-docs=false .. &&
ninja
sudo ninja install
cd ../..
rm -rf libxkbcommon-1.5.0

35.4 GTK+-3.24.36

tar -xf gtk+-3.24.36.tar.xz
cd gtk+-3.24.36
mkdir build &&
cd    build &&
meson setup --prefix=/usr           \
            --buildtype=release     \
            -Dman=true              \
            -Dbroadway_backend=true \
            .. &&
ninja
sudo ninja install
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
cat > ~/.config/gtk-3.0/gtk.css << "EOF"
*  {
   -GtkScrollbar-has-backward-stepper: 1;
   -GtkScrollbar-has-forward-stepper: 1;
}
EOF
cd ../..
rm -rf gtk+-3.24.36

36. Exo and dependencies


36.1 libxfce4util-4.18.1

tar -xf libxfce4util-4.18.1.tar.bz2
cd libxfce4util-4.18.1
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf libxfce4util-4.18.1

36.2 Xfconf-4.18.0

tar -xf xfconf-4.18.0.tar.bz2
cd xfconf-4.18.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfconf-4.18.0

36.3 libxfce4ui-4.18.2

tar -xf libxfce4ui-4.18.2.tar.bz2
cd libxfce4ui-4.18.2
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
cd ..
rm -rf libxfce4ui-4.18.2

36.4 Exo-4.18.0

tar -xf exo-4.18.0.tar.bz2
cd exo-4.18.0
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
cd ..
rm -rf exo-4.18.0

37. LightDM 1


37.1 libgpg-error-1.46

tar -xf libgpg-error-1.46.tar.bz2
cd libgpg-error-1.46
./configure --prefix=/usr &&
make
sudo make install
sudo install -v -m644 -D README /usr/share/doc/libgpg-error-1.46/README
cd ..
rm -rf libgpg-error-1.46

37.2 libgcrypt-1.10.1

tar -xf libgcrypt-1.10.1.tar.bz2
cd libgcrypt-1.10.1
./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
make -C doc pdf
sudo su
make install &&
install -v -dm755   /usr/share/doc/libgcrypt-1.10.1 &&
install -v -m644    README doc/{README.apichanges,fips*,libgcrypt*} \
                    /usr/share/doc/libgcrypt-1.10.1 &&

install -v -dm755   /usr/share/doc/libgcrypt-1.10.1/html &&
install -v -m644 doc/gcrypt.html/* \
                    /usr/share/doc/libgcrypt-1.10.1/html &&
install -v -m644 doc/gcrypt_nochunks.html \
                    /usr/share/doc/libgcrypt-1.10.1      &&
install -v -m644 doc/gcrypt.{txt,texi} \
                    /usr/share/doc/libgcrypt-1.10.1
install -v -m644 doc/gcrypt.{pdf,ps,dvi} \
                    /usr/share/doc/libgcrypt-1.10.1
exit
cd ..
rm -rf libgcrypt-1.10.1

38. LightDM 2


38.1 libxml2-2.10.3

tar -xf libxml2-2.10.3.tar.xz
cd libxml2-2.10.3
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Denable-docs=false .. &&
ninja
sudo ninja install
cd ../..
rm -rf libxml2-2.10.3

38.2 itstool-2.0.7

tar -xf itstool-2.0.7.tar.bz2
cd itstool-2.0.7
PYTHON=/usr/bin/python3 ./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf itstool-2.0.7

39. LightDM 3


39.1 Xorg-Server-21.1.7

tar -xf xorg-server-21.1.7.tar.xz
cd xorg-server-21.1.7
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX \
      --localstatedir=/var  \
      -Dsuid_wrapper=true   \
      -Dxkb_output_dir=/var/lib/xkb &&
ninja
sudo su
ninja install &&
mkdir -pv /etc/X11/xorg.conf.d &&
cat >> /etc/sysconfig/createfiles << "EOF"
/tmp/.ICE-unix dir 1777 root root
/tmp/.X11-unix dir 1777 root root
EOF
exit
cd ../..
rm -rf xorg-server-21.1.7

40. LightDM 4


40.1 ISO Codes-4.12.0

tar -xf iso-codes_4.12.0.orig.tar.xz
cd iso-codes_4.12.0.orig
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf iso-codes_4.12.0.orig

40.2 libxklavier-5.4

tar -xf libxklavier-5.4.tar.bz2
cd libxklavier-5.4
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf libxklavier-5.4

41. LightDM 5


41.1 lightdm-1.32.0

tar -xf lightdm-1.32.0.tar.xz
cd lightdm-1.32.0
sudo su
groupadd -g 65 lightdm       &&
useradd  -c "Lightdm Daemon" \
         -d /var/lib/lightdm \
         -u 65 -g lightdm    \
         -s /bin/false lightdm
exit
sed -i s/systemd/elogind/ data/pam/*
./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
sudo su
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
exit
tar -xf ../lightdm-gtk-greeter-2.0.8.tar.gz &&
cd lightdm-gtk-greeter-2.0.8 &&

./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.8 &&
make
sudo make install
cd /sources/BLFS/blfs-bootscripts-20230101
sudo make install-lightdm
sudo telinit 5
cd /sources/BLFS
rm -rf lightdm-1.32.0

================

42. Gstreamer


42.1 gstreamer-1.22.0

tar -xf gstreamer-1.22.0.tar.xz
cd gstreamer-1.22.0
mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dgst_debug=false   \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja
sudo ninja install
cd ../..
rm -rf gstreamer-1.22.0

42.2 gst-plugins-base-1.22.0

tar -xf gst-plugins-base-1.22.0.tar.xz
cd gst-plugins-base-1.22.0
mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS"    \
       --wrap-mode=nodownload &&
ninja
sudo ninja install
cd ../..
rm -rf gst-plugins-base-1.22.0

42.3 gst-plugins-good-1.22.0

tar -xf gst-plugins-good-1.22.0.tar.xz
cd gst-plugins-good-1.22.0
mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja
sudo ninja install
cd ../..
rm -rf gst-plugins-good-1.22.0

42.4 gst-plugins-bad-1.22.0

tar -xf gst-plugins-bad-1.22.0.tar.xz
cd gst-plugins-bad-1.22.0
mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dgpl=enabled       \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja
sudo ninja install
cd ../..
rm -rf gst-plugins-bad-1.22.0

42.5 gst-plugins-ugly-1.22.0

tar -xf gst-plugins-ugly-1.22.0.tar.xz
cd gst-plugins-ugly-1.22.0
mkdir build &&
cd    build &&

meson  --prefix=/usr       \
       --buildtype=release \
       -Dgpl=enabled       \
       -Dpackage-origin=https://www.linuxfromscratch.org/blfs/view/11.3/ \
       -Dpackage-name="GStreamer 1.22.0 BLFS" &&
ninja
sudo ninja install
cd ../..
rm -rf gst-plugins-ugly-1.22.0

43. Notification


43.1 libogg-1.3.5

tar -xf libogg-1.3.5.tar.xz
cd libogg-1.3.5
./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/libogg-1.3.5 &&
make
sudo make install
cd ..
rm -rf libogg-1.3.5

43.2 libvorbis-1.3.7

tar -xf libvorbis-1.3.7.tar.xz
cd libvorbis-1.3.7
./configure --prefix=/usr --disable-static &&
make
sudo make install
sudo install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.3.7
cd ..
rm -rf libvorbis-1.3.7

43.3 libcanberra-0.30

tar -xf libcanberra-0.30.tar.xz
cd libcanberra-0.30
patch -Np1 -i ../libcanberra-0.30-wayland-1.patch
./configure --prefix=/usr --disable-oss &&
make
sudo make docdir=/usr/share/doc/libcanberra-0.30 install
cd ..
rm -rf libcanberra-0.30

43.4 notification-daemon-3.20.0

tar -xf notification-daemon-3.20.0.tar.xz
cd notification-daemon-3.20.0
./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-static  &&
make
sudo make install
pgrep -l notification-da &&
notify-send -i info Information "Hi ${USER}, This is a Test"
cd ..
rm -rf notification-daemon-3.20.0

43.5 libnotify-0.8.1

tar -xf libnotify-0.8.1.tar.xz
cd libnotify-0.8.1
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dgtk_doc=false     \
      -Dman=false .. &&
ninja
sudo su
ninja install &&
mv -v /usr/share/doc/libnotify{,-0.8.1}
exit
cd ../..
rm -rf libnotify-0.8.1

44. Xfce 1


44.1 taglib-1.13

tar -xf taglib-1.13.tar.gz
cd taglib-1.13
mkdir build &&
cd    build &&

cmake -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_BUILD_TYPE=Release  \
      -DBUILD_SHARED_LIBS=ON \
      .. &&
make
sudo make install
cd ../..
rm -rf taglib-1.13

44.2 Garcon-4.18.0

tar -xf garcon-4.18.0.tar.bz2
cd garcon-4.18.0
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
cd ..
rm -rf garcon-4.18.0

44.3 libwnck-43.0

tar -xf libwnck-43.0.tar.xz
cd libwnck-43.0
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf libwnck-43.0

44.4 xfce4-panel-4.18.2

tar -xf xfce4-panel-4.18.2.tar.bz2
cd xfce4-panel-4.18.2
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
cd ..
rm -rf xfce4-panel-4.18.2

44.5 hicolor-icon-theme-0.17

tar -xf hicolor-icon-theme-0.17.tar.xz
cd hicolor-icon-theme-0.17
./configure --prefix=/usr
sudo make install
cd ..
rm -rf hicolor-icon-theme-0.17

44.6 thunar-4.18.4

tar -xf thunar-4.18.4.tar.bz2
cd thunar-4.18.4
sed -i 's/\tinstall-systemd_userDATA/\t/' Makefile.in
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --docdir=/usr/share/doc/thunar-4.18.4 &&
make
sudo make install
cd ..
rm -rf thunar-4.18.4

44.7 libgudev-237

tar -xf libgudev-237.tar.xz
cd libgudev-237
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
cd ../..
rm -rf libgudev-237

44.8 thunar-volman-4.18.0

tar -xf thunar-volman-4.18.0.tar.bz2
cd thunar-volman-4.18.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf thunar-volman-4.18.0

45. Xfce 2


45.1 tumbler-4.18.0

tar -xf tumbler-4.18.0.tar.bz2
cd tumbler-4.18.0
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
cd ..
rm -rf tumbler-4.18.0

45.2 xfce4-appfinder-4.18.0

tar -xf xfce4-appfinder-4.18.0.tar.bz2
cd xfce4-appfinder-4.18.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfce4-appfinder-4.18.0

46. Xfce 3


46.1 libusb-1.0.26

tar -xf libusb-1.0.26.tar.bz2
cd libusb-1.0.26
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf libusb-1.0.26
Device Drivers --->
  [*] USB support --->                   [CONFIG_USB_SUPPORT]
    <*/M> Support for Host-side USB      [CONFIG_USB]
    (Select any USB hardware device drivers you may need on the same page)

It is already ok for current kernel configure. Do nothing.

46.2 duktape-2.7.0

tar -xf duktape-2.7.0.tar.xz
cd duktape-2.7.0
sed -i 's/-Os/-O2/' Makefile.sharedlibrary
make -f Makefile.sharedlibrary INSTALL_PREFIX=/usr
sudo make -f Makefile.sharedlibrary INSTALL_PREFIX=/usr install
cd ..
rm -rf duktape-2.7.0

46.3 Polkit-122

tar -xf polkit-122.tar.gz
cd polkit-122
sudo su
groupadd -fg 27 polkitd &&
useradd -c "PolicyKit Daemon Owner" -d /etc/polkit-1 -u 27 \
        -g polkitd -s /bin/false polkitd
exit
mkdir build &&
cd    build &&

meson --prefix=/usr                 \
      --buildtype=release           \
      -Dman=true                    \
      -Dsession_tracking=libelogind \
      -Dsystemdsystemunitdir=/tmp   \
      -Dtests=true                  \
      -Djs_engine=duktape           \
      ..                            &&
ninja
sudo su
ninja install &&
rm -v /tmp/*.service
cat > /etc/pam.d/polkit-1 << "EOF"
# Begin /etc/pam.d/polkit-1

auth     include        system-auth
account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/polkit-1
EOF
exit
cd ../..
rm -rf polkit-122

46.4 UPower-1.90.0

tar -xf upower-v1.90.0.tar.bz2
cd upower-v1.90.0


cd ..
rm -rf upower-v1.90.0

46.5 xfce4-power-manager-4.18.1

tar -xf xfce4-appfinder-4.18.0.tar.bz2
cd xfce4-appfinder-4.18.0
sed '/parse_version/d' -i src/linux/integration-test.py
mkdir build                         &&
cd    build                         &&
meson --prefix=/usr                        \
      --buildtype=release                  \
      -Dgtk-doc=false                      \
      -Dman=false                          \
      -Dsystemdsystemunitdir=no            \
      -Dudevrulesdir=/usr/lib/udev/rules.d \
      ..                            &&
ninja
sudo ninja install
cd ../..
rm -rf xfce4-appfinder-4.18.0

47. Xfce 4


47.1 XML-Simple-2.25

tar -xf XML-Simple-2.25.tar.gz
cd XML-Simple-2.25
perl Makefile.PL &&
make             &&
make test
sudo make install
cd ..
rm -rf XML-Simple-2.25

47.2 icon-naming-utils-0.8.90

tar -xf icon-naming-utils-0.8.90.tar.bz2
cd icon-naming-utils-0.8.90
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf icon-naming-utils-0.8.90

47.3 gnome-icon-theme-3.12.0

tar -xf gnome-icon-theme-3.12.0.tar.xz
cd gnome-icon-theme-3.12.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf gnome-icon-theme-3.12.0

47.4 xfce4-settings-4.18.2

tar -xf xfce4-settings-4.18.2.tar.bz2
cd xfce4-settings-4.18.2
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
cd ..
rm -rf xfce4-settings-4.18.2

48. Xfce 5


48.1 startup-notification-0.12

tar -xf startup-notification-0.12.tar.gz
cd startup-notification-0.12
./configure --prefix=/usr --disable-static &&
make
sudo su
make install &&
install -v -m644 -D doc/startup-notification.txt \
    /usr/share/doc/startup-notification-0.12/startup-notification.txt
exit
cd ..
rm -rf startup-notification-0.12

48.2 Xfdesktop-4.18.1

tar -xf xfdesktop-4.18.1.tar.bz2
cd xfdesktop-4.18.1
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfdesktop-4.18.1

48.3 Xfwm4-4.18.0

tar -xf xfwm4-4.18.0.tar.bz2
cd xfwm4-4.18.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfwm4-4.18.0

49. Xfce 6


49.1 desktop-file-utils-0.26

tar -xf desktop-file-utils-0.26.tar.xz
cd desktop-file-utils-0.26
sudo rm -fv /usr/bin/desktop-file-edit
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja
sudo ninja install
sudo su
install -vdm755 /usr/share/applications &&
update-desktop-database /usr/share/applications
exit
cd ../..
rm -rf desktop-file-utils-0.26

49.2 GTK+-2.24.33

tar -xf gtk+-2.24.33.tar.xz
cd gtk+-2.24.33
sed -e 's#l \(gtk-.*\).sgml#& -o \1#' \
    -i docs/{faq,tutorial}/Makefile.in      &&

./configure --prefix=/usr --sysconfdir=/etc &&

make
sudo make install
cat > ~/.gtkrc-2.0 << "EOF"
include "/usr/share/themes/Glider/gtk-2.0/gtkrc"
gtk-icon-theme-name = "hicolor"
EOF
cat > /etc/gtk-2.0/gtkrc << "EOF"
include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"
gtk-icon-theme-name = "elementary"
EOF
cd ..
rm -rf gtk+-2.24.33

49.3 libglade-2.6.4

tar -xf libglade-2.6.4.tar.bz2
cd libglade-2.6.4
sed -i '/DG_DISABLE_DEPRECATED/d' glade/Makefile.in &&
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf libglade-2.6.4

49.4 GLU-9.0.2

tar -xf glu-9.0.2.tar.xz
cd glu-9.0.2
mkdir build &&
cd    build &&

meson --prefix=$XORG_PREFIX -Dgl_provider=gl --buildtype=release .. &&
ninja
sudo ninja install
sudo rm -vf /usr/lib/libGLU.a
cd ../..
rm -rf glu-9.0.2

49.5 XScreenSaver-6.06

tar -xf xscreensaver-6.06.tar.gz
cd xscreensaver-6.06
sed -i 's/-lsystemd/-lelogind/' driver/Makefile.in
./configure --prefix=/usr &&
make
sudo make install
sudo su
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
exit
cd ..
rm -rf xscreensaver-6.06

49.6 shared-mime-info-2.2

tar -xf shared-mime-info-2.2.tar.gz
cd shared-mime-info-2.2
tar -xf ../xdgmime.tar.xz &&
make -C xdgmime
mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release -Dupdate-mimedb=true .. &&
ninja
sudo ninja install
cd ../..
rm -rf shared-mime-info-2.2

49.7 Graphviz-7.1.0

tar -xf graphviz-7.1.0.bz2
cd graphviz-7.1.0
sed -i '/LIBPOSTFIX="64"/s/64//' configure.ac &&

./autogen.sh              &&
./configure --prefix=/usr \
            --docdir=/usr/share/doc/graphviz-7.1.0
sed -i "s/0/$(date +%Y%m%d)/" builddate.h
make
sudo make install
cd ..
rm -rf graphviz-7.1.0

49.8 Vala-0.56.4

tar -xf vala-0.56.4.tar.xz
cd vala-0.56.4
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf vala-0.56.4

49.9 AccountsService-22.08.8

tar -xf accountsservice-22.08.8.tar.xz
cd accountsservice-22.08.8
mkdir build &&
cd build &&

meson --prefix=/usr             \
      --buildtype=release       \
      -Dadmin_group=adm         \
      -Delogind=true            \
      -Dsystemdsystemunitdir=no \
      .. &&
ninja
sudo ninja install
cat > /etc/polkit-1/rules.d/40-adm.rules << "EOF"
polkit.addAdminRule(function(action, subject) {
   return ["unix-group:adm"];
   });
EOF
cd ../..
rm -rf accountsservice-22.08.8

49.10 polkit-gnome-0.105

tar -xf polkit-gnome-0.105.tar.xz
cd polkit-gnome-0.105
patch -Np1 -i ../polkit-gnome-0.105-consolidated_fixes-1.patch
./configure --prefix=/usr &&
make
sudo make install
sudo su
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
exit
cd ..
rm -rf polkit-gnome-0.105

49.11 xfce4-session-4.18.1

tar -xf xfce4-session-4.18.1.tar.bz2
cd xfce4-session-4.18.1
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --disable-legacy-sm &&
make
sudo make install
cd ..
rm -rf xfce4-session-4.18.1

50. Xfce 7


50.1 dbus-glib-0.112

tar -xf dbus-glib-0.112.tar.gz
cd dbus-glib-0.112
./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-static &&
make
sudo make install
cd ..
rm -rf dbus-glib-0.112

50.2 Parole-4.18.0

tar -xf parole-4.18.0.tar.bz2
cd parole-4.18.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf parole-4.18.0

51. Xfce 8


51.1 GnuTLS-3.8.0

tar -xf gnutls-3.8.0.tar.xz
cd gnutls-3.8.0
./configure --prefix=/usr \
            --docdir=/usr/share/doc/gnutls-3.8.0 \
            --with-default-trust-store-pkcs11="pkcs11:" &&
make
sudo make install
cd ..
rm -rf gnutls-3.8.0

51.2 VTE-0.70.3

tar -xf vte-0.70.3.tar.gz
cd vte-0.70.3
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Dfribidi=false     \
      -D_systemd=false .. &&
ninja
sudo ninja install
sudo rm -v /etc/profile.d/vte.*
cd ../..
rm -rf vte-0.70.3

51.3 xfce4-terminal-1.0.4

tar -xf xfce4-terminal-1.0.4.tar.bz2
cd xfce4-terminal-1.0.4
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfce4-terminal-1.0.4

52. Xfce 9


52.1 libburn-1.5.4

tar -xf libburn-1.5.4.tar.gz
cd libburn-1.5.4
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf libburn-1.5.4

52.2 libisofs-1.5.4

tar -xf libisofs-1.5.4.tar.gz
cd libisofs-1.5.4
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf libisofs-1.5.4

52.3 Xfburn-0.6.2

tar -xf xfburn-0.6.2.tar.bz2
cd xfburn-0.6.2
./configure --prefix=/usr --disable-static &&
make
sudo make install
cd ..
rm -rf xfburn-0.6.2

53. Xfce 10


53.1 libexif-0.6.24

tar -xf libexif-0.6.24.tar.bz2
cd libexif-0.6.24
./configure --prefix=/usr    \
            --disable-static \
            --with-doc-dir=/usr/share/doc/libexif-0.6.24 &&
make
sudo make install
cd ..
rm -rf libexif-0.6.24

53.2 Ristretto-0.13.0

tar -xf ristretto-0.13.0.tar.bz2
cd ristretto-0.13.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf ristretto-0.13.0

54. Xfce 11


54.1 xfce4-dev-tools-4.18.0

tar -xf xfce4-dev-tools-4.18.0.tar.bz2
cd xfce4-dev-tools-4.18.0
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfce4-dev-tools-4.18.0

54.2 xfce4-notifyd-0.8.1

tar -xf xfce4-notifyd-0.8.1.tar.bz2
cd xfce4-notifyd-0.8.1
./configure --prefix=/usr --sysconfdir=/etc &&
make
sudo make install
notify-send -i info Information "Hi ${USER}, This is a Test"
cd ..
rm -rf xfce4-notifyd-0.8.1

55. Xfce 12


55.1 libsndfile-1.2.0

tar -xf libsndfile-1.2.0.tar.xz
cd libsndfile-1.2.0
./configure --prefix=/usr    \
            --docdir=/usr/share/doc/libsndfile-1.2.0 &&
make
sudo make install
cd ..
rm -rf libsndfile-1.2.0

55.2 PulseAudio-16.1

tar -xf pulseaudio-16.1.tar.xz
cd pulseaudio-16.1
mkdir build &&
cd    build &&

meson --prefix=/usr       \
      --buildtype=release \
      -Ddatabase=gdbm     \
      -Ddoxygen=false     \
      -Dbluez5=disabled   &&
ninja
sudo ninja install
sudo rm -fv /etc/dbus-1/system.d/pulseaudio-system.conf
cd ../..
rm -rf pulseaudio-16.1

55.3 xfce4-pulseaudio-plugin-0.4.5

tar -xf xfce4-pulseaudio-plugin-0.4.5.tar.bz2
cd xfce4-pulseaudio-plugin-0.4.5
./configure --prefix=/usr &&
make
sudo make install
cd ..
rm -rf xfce4-pulseaudio-plugin-0.4.5

Base on BLFS 11.3 System V.