Xorg Libraries

#### Beyond Linux® From Scratch (systemd Edition) - Version 12.2

### Chapter 24. Graphical Environments

- Prev

  libxcb-1.17.0

- Next

  libxcvt-0.1.2

- Up
- Home

# Xorg Libraries

## Introduction to Xorg Libraries

The Xorg libraries provide library routines that are used within all X Window applications.

This package is known to build and work properly using an LFS 12.2 platform.

### Package Information

- Download (HTTP): https://www.x.org/pub/individual/lib/

- Download size: 12 MB

- Estimated disk space required: 225 MB (34 MB installed) - if source directories not deleted

- Estimated build time: 2.1 SBU

### Xorg Libraries Dependencies

#### Required

Fontconfig-2.15.0 and libxcb-1.17.0

#### Optional

asciidoc-10.2.1, xmlto-0.0.29 with one or more of the following: fop-2.9, Links-2.30, Lynx-2.9.2, ncompress (for some tests), and W3m (to generate additional PDF or text documentation for the libXfont package).

#### Recommended at runtime

dbus-1.14.10

## Downloading Xorg Libraries

First, create a list of files to be downloaded. This file will also be used to verify the integrity of the downloads when complete:

    cat > lib-7.md5 << "EOF"
    12344cd74a1eb25436ca6e6a2cf93097  xtrans-1.5.0.tar.xz
    5b8fa54e0ef94136b56f887a5e6cf6c9  libX11-1.8.10.tar.xz
    e59476db179e48c1fb4487c12d0105d1  libXext-1.3.6.tar.xz
    c5cc0942ed39c49b8fcd47a427bd4305  libFS-1.0.10.tar.xz
    b444a0e4c2163d1bbc7b046c3653eb8d  libICE-1.1.1.tar.xz
    ffa434ed96ccae45533b3d653300730e  libSM-1.2.4.tar.xz
    e613751d38e13aa0d0fd8e0149cec057  libXScrnSaver-1.2.4.tar.xz
    4ea21d3b5a36d93a2177d9abed2e54d4  libXt-1.3.0.tar.xz
    85edefb7deaad4590a03fccba517669f  libXmu-1.2.1.tar.xz
    05b5667aadd476d77e9b5ba1a1de213e  libXpm-3.5.17.tar.xz
    2a9793533224f92ddad256492265dd82  libXaw-1.0.16.tar.xz
    65b9ba1e9ff3d16c4fa72915d4bb585a  libXfixes-6.0.1.tar.xz
    af0a5f0abb5b55f8411cd738cf0e5259  libXcomposite-0.4.6.tar.xz
    ebf7fb3241ec03e8a3b2af72f03b4631  libXrender-0.9.11.tar.xz
    bf3a43ad8cb91a258b48f19c83af8790  libXcursor-1.2.2.tar.xz
    ca55d29fa0a8b5c4a89f609a7952ebf8  libXdamage-1.1.6.tar.xz
    8816cc44d06ebe42e85950b368185826  libfontenc-1.1.8.tar.xz
    66e03e3405d923dfaf319d6f2b47e3da  libXfont2-2.0.7.tar.xz
    cea0a3304e47a841c90fbeeeb55329ee  libXft-2.3.8.tar.xz
    89ac74ad6829c08d5c8ae8f48d363b06  libXi-1.8.1.tar.xz
    228c877558c265d2f63c56a03f7d3f21  libXinerama-1.1.5.tar.xz
    24e0b72abe16efce9bf10579beaffc27  libXrandr-1.5.4.tar.xz
    66c9e9e01b0b53052bb1d02ebf8d7040  libXres-1.2.2.tar.xz
    b62dc44d8e63a67bb10230d54c44dcb7  libXtst-1.2.5.tar.xz
    70bfdd14ca1a563c218794413f0c1f42  libXv-1.0.12.tar.xz
    a90a5f01102dc445c7decbbd9ef77608  libXvMC-1.0.14.tar.xz
    74d1acf93b83abeb0954824da0ec400b  libXxf86dga-1.1.6.tar.xz
    5b913dac587f2de17a02e17f9a44a75f  libXxf86vm-1.1.5.tar.xz
    57c7efbeceedefde006123a77a7bc825  libpciaccess-0.18.1.tar.xz
    229708c15c9937b6e5131d0413474139  libxkbfile-1.1.3.tar.xz
    faa74f7483074ce7d4349e6bdc237497  libxshmfence-1.3.2.tar.xz
    bdd3ec17c6181fd7b26f6775886c730d  libXpresent-1.0.1.tar.xz
    EOF

To download the needed files using Wget-1.24.5, use the following commands:

    mkdir lib &&
    cd lib &&
    grep -v '^#' ../lib-7.md5 | awk '{print $2}' | wget -i- -c \
        -B https://www.x.org/pub/individual/lib/ &&
    md5sum -c ../lib-7.md5

## Installation of Xorg Libraries

### Note

When installing multiple packages in a script, the installation needs to be done as the root user. There are three general options that can be used to do this:

1. Run the entire script as the root user (not recommended).

2. Use the sudo command from the Sudo-1.9.15p5 package.

3. Use su -c "command arguments" (quotes required) which will ask for the root password for every iteration of the loop.

One way to handle this situation is to create a short bash function that automatically selects the appropriate method. Once the command is set in the environment, it does not need to be set again.

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

    export -f as_root

Some libraries come with a test suite. If you wish to execute them, either comment out the rm -rf ... below, so that, after all libraries are installed, you can come back to the corresponding directory and run make check, or do individual builds, running the tests for each of those distributed with working test suites. Alternatively, you can uncomment the line #make check ..., and at the end, check the test results with:

    grep -A9 summary *make_check.log

BLFS developers have confirmed that libX11, libXt, libXmu, libXpm, and libxshmfence are distributed with working test suites.

First, start a subshell that will exit on error:

    bash -e

Install all of the packages by running the following commands:

    for package in $(grep -v '^#' ../lib-7.md5 | awk '{print $2}')
    do
      packagedir=${package%.tar.?z*}
      echo "Building $packagedir"

      tar -xf $package
      pushd $packagedir
      docdir="--docdir=$XORG_PREFIX/share/doc/$packagedir"

      case $packagedir in
        libXfont2-[0-9]* )
          ./configure $XORG_CONFIG $docdir --disable-devel-docs
        ;;

        libXt-[0-9]* )
          ./configure $XORG_CONFIG $docdir \
                      --with-appdefaultdir=/etc/X11/app-defaults
        ;;

        libXpm-[0-9]* )
          ./configure $XORG_CONFIG $docdir --disable-open-zfile
        ;;

        libpciaccess* )
          mkdir build
          cd    build
            meson setup --prefix=$XORG_PREFIX --buildtype=release ..
            ninja
            #ninja test
            as_root ninja install
          popd     # $packagedir
          continue # for loop
        ;;

        * )
          ./configure $XORG_CONFIG $docdir
        ;;
      esac

      make
      #make check 2>&1 | tee ../$packagedir-make_check.log
      as_root make install
      popd
      rm -rf $packagedir
      as_root /sbin/ldconfig
    done

Finally, exit the shell that was started earlier:

    exit

## Command Explanations

`--disable-open-zfile`: Allow libXpm to build without the optional compress command present.

`--disable-devel-docs`: Disable generation of text documentation in the libXfont2 package if xmlto-0.0.29 is installed without a text browser. Omit this parameter (or the entire case statement) if a text browser is installed.

`--with-fop`: Use fop-2.9 to generate PDF documentation (only for the libXfont package).

## Configuration of Xorg Libraries

If you've chosen to install Xorg into `/usr`, then no further configuration is necessary and you can skip the rest of this section. If you've opted for an alternate prefix, you should create two symlinks to satisfy the expected environment of several packages. Execute the following commands as the root user:

    ln -sv $XORG_PREFIX/lib/X11 /usr/lib/X11 &&
    ln -sv $XORG_PREFIX/include/X11 /usr/include/X11

## Contents

Installed Programs: cxpm and sxpm
Installed Libraries: libfontenc.so, libFS.so, libICE.so, libpciaccess.so, libSM.so, libX11.so, libX11-xcb, libXaw6.so, libXaw7.so, libXaw.so, libXcomposite.so, libXcursor.so, libXdamage.so, libXext.so, libXfixes.so, libXfont2.so, libXft.so, libXinerama.so, libXi.so, libxkbfile.so, libXmu.so, libXmuu.so, libXpm.so, libXpresent.so, libXrandr.so, libXrender.so, libXRes.so, libxshmfence.so, libXss.so, libXt.so, libXtst.so, libXvMC.so, libXvMCW.so, libXv.so, libXxf86dga.so and libXxf86vm.so
Installed Directories: `$XORG_PREFIX`/include/X11/fonts, `$XORG_PREFIX`/include/X11/ICE, `$XORG_PREFIX`/include/X11/SM, `$XORG_PREFIX`/include/X11/Xmu, `$XORG_PREFIX`/include/X11/Xtrans, `$XORG_PREFIX`/share/doc/libFS, `$XORG_PREFIX`/share/doc/libICE-1.1.1, `$XORG_PREFIX`/share/doc/libSM-1.2.4, `$XORG_PREFIX`/share/doc/libX11-1.8.10, `$XORG_PREFIX`/share/doc/libXaw, `$XORG_PREFIX`/share/doc/libXext, `$XORG_PREFIX`/share/doc/libXi, `$XORG_PREFIX`/share/doc/libXmu-1.2.1, `$XORG_PREFIX`/share/doc/libXrender, `$XORG_PREFIX`/share/doc/libXt, `$XORG_PREFIX`/share/doc/libXtst, `$XORG_PREFIX`/share/doc/libXvMC, `$XORG_PREFIX`/share/doc/xtrans and `$XORG_PREFIX`/share/X11/locale

### Short Descriptions

cxpm | checks the format of an XPM file
sxpm | shows an XPM file and/or converts XPM 1 or 2 files to XPM 3
`libfontenc.so` | is the X11 font encoding library
`libFS.so` | is the library interface to the X Font Server
`libICE.so` | is the X Inter Client Exchange Library
`libpciaccess.so` | is the generic PCI Access library for X
`libSM.so` | is the X Session Management Library
`libX11.so` | is the Xlib Library
`libXaw6.so` | is the X Athena Widgets Library, version 6
`libXaw7.so` | is the X Athena Widgets Library, version 7
`libXaw.so` | are symbolic links to the current X Athena Widgets Library, version 7
`libXcomposite.so` | is the X Composite Library
`libXcursor.so` | is the X Cursor management library
`libXdamage.so` | is the X Damage Library
`libXext.so` | is the Misc X Extension Library
`libXfixes.so` | provides augmented versions of core protocol requests
`libXfont2.so` | is the X font library
`libXft.so` | is the X FreeType interface library
`libXinerama.so` | is the Xinerama Library
`libXi.so` | is the X Input Extension Library
`libxkbfile.so` | is the xkbfile Library
`libXmu.so` | is the X interface library for miscellaneous utilities not part of the Xlib standard
`libXmuu.so` | is the Mini Xmu Library
`libXpm.so` | is the X Pixmap Library
`libXpresent.so` | is the library interface to the X Present Extension
`libXrandr.so` | is the X Resize, Rotate and Reflection extension library
`libXrender.so` | is the X Render Library
`libXRes.so` | is the X-Resource extension client library
`libxshmfence.so` | exposes an event API on top of Linux futexes
`libXss.so` | is the X11 Screen Saver extension client library
`libXt.so` | is the X Toolkit Library
`libXtst.so` | is the Xtst Library
`libXvMC.so` | is the X-Video Motion Compensation Library
`libXvMCW.so` | is the XvMC Wrapper including the Nonstandard VLD extension
`libXv.so` | is the X Window System video extension library
`libXxf86dga.so` | is the client library for the XFree86-DGA extension
`libXxf86vm.so` | is the client library for the XFree86-VidMode X extension

- Prev

  libxcb-1.17.0

- Next

  libxcvt-0.1.2

- Up
- Home