Xorg Libraries

Introduction to Xorg Libraries

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

[Note]

Note

This may take a while to build. Feel free to do something else while this is building.

Xorg Libraries Dependencies

Required

Fontconfig-2.16.2 and libxcb-1.17.0

Optional

ncompress (for some tests) and W3m (to generate additional PDF or text documentation for the libXfont package).

Downloading Xorg Libraries

First, create a list of files to be downloaded:

cat > lib-7-list << "EOF"
xtrans-1.6.0.tar.xz
libX11-1.8.12.tar.xz
libXext-1.3.6.tar.xz
libFS-1.0.10.tar.xz
libICE-1.1.2.tar.xz
libSM-1.2.6.tar.xz
libXScrnSaver-1.2.4.tar.xz
libXt-1.3.1.tar.xz
libXmu-1.2.1.tar.xz
libXpm-3.5.17.tar.xz
libXaw-1.0.16.tar.xz
libXfixes-6.0.1.tar.xz
libXcomposite-0.4.6.tar.xz
libXrender-0.9.12.tar.xz
libXcursor-1.2.3.tar.xz
libXdamage-1.1.6.tar.xz
libfontenc-1.1.8.tar.xz
libXfont2-2.0.7.tar.xz
libXft-2.3.9.tar.xz
libXi-1.8.2.tar.xz
libXinerama-1.1.5.tar.xz
libXrandr-1.5.4.tar.xz
libXres-1.2.2.tar.xz
libXtst-1.2.5.tar.xz
libXv-1.0.13.tar.xz
libXvMC-1.0.14.tar.xz
libXxf86dga-1.1.6.tar.xz
libXxf86vm-1.1.6.tar.xz
libpciaccess-0.18.1.tar.xz
libxkbfile-1.1.3.tar.xz
libxshmfence-1.3.3.tar.xz
libXpresent-1.0.1.tar.xz
EOF

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

mkdir lib &&
cd lib &&
grep -v '^#' ../lib-7-list | wget -i- -c \
    -B https://www.x.org/pub/individual/lib/

Installation of Xorg Libraries

[Note]

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 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

GLFS 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-list)
do
  packagedir=${package%.tar.?z*}
  echo "Building $packagedir"

  tar -xf $package
  pushd $packagedir
  docdir="--docdir=/usr/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=/usr --buildtype=release ..
        ninja
        #ninja test
        as_root ninja install
      popd     # $packagedir
      rm -rf $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

For multilib, install all of the lib32 variants of the packages by running the following commands:

for package in $(grep -v '^#' ../lib-7-list)
do
  case $package in xtrans* )
    continue
  ;;
  esac
  packagedir=${package%.tar.?z*}
  echo "Building lib32-$packagedir"

  tar -xf $package
  pushd $packagedir
  libdir="--libdir=/usr/lib32"
  docdir="--docdir=/usr/share/doc/$packagedir"
  host="--host=i686-pc-linux-gnu"
  
  case $packagedir in
    libXfont2-[0-9]* )
      CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig  \
      ./configure $XORG_CONFIG $libdir $host $docdir --disable-devel-docs
    ;;

    libXt-[0-9]* )
      CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
      ./configure $XORG_CONFIG $libdir $host $docdir                    \
                  --with-appdefaultdir=/etc/X11/app-defaults
    ;;

    libXpm-[0-9]* )
      CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig  \
      ./configure $XORG_CONFIG $libdir $host $docdir --disable-open-zfile
    ;;
  
    libpciaccess* )
      mkdir build
      cd    build
        CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
        meson setup --prefix=/usr $libdir --buildtype=release ..
        ninja
        #ninja test
        DESTDIR=$PWD/DESTDIR ninja install
        as_root cp -vr DESTDIR/usr/lib32/* /usr/lib32
        rm -rf DESTDIR
        as_root /sbin/ldconfig
      popd     # $packagedir
      rm -rf $packagedir
      continue # for loop
    ;;

    * )
      CC="gcc -m32" CXX="g++ -m32"                   \
      PKG_CONFIG_PATH=/usr/lib32/pkgconfig   \
      ./configure $XORG_CONFIG $libdir $host $docdir
    ;;
  esac

  make
  #make check 2>&1 | tee ../$packagedir-make_check.log
  make DESTDIR=$PWD/DESTDIR install
  as_root cp -vr DESTDIR/usr/lib32/* /usr/lib32
  rm -rf DESTDIR
  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 is installed without a text browser. Omit this parameter (or the entire case statement) if a text browser is installed.

Contents

Installed Programs: cxpm and sxpm
Installed Libraries: libfontenc, libFS, libICE, libpciaccess, libSM, libX11, libX11-xcb, libXaw6, libXaw7, libXaw, libXcomposite, libXcursor, libXdamage, libXext, libXfixes, libXfont2, libXft, libXinerama, libXi, libxkbfile, libXmu, libXmuu, libXpm, libXpresent, libXrandr, libXrender, libXRes, libxshmfence, libXss, libXt, libXtst, libXvMC, libXvMCW, libXv, libXxf86dga and libXxf86vm
Installed Directories: /usr/include/X11/fonts, /usr/include/X11/ICE, /usr/include/X11/SM, /usr/include/X11/Xmu, /usr/include/X11/Xtrans, /usr/share/doc/libFS, /usr/share/doc/libICE-1.1.2, /usr/share/doc/libSM-1.2.6, /usr/share/doc/libX11-1.8.12, /usr/share/doc/libXaw, /usr/share/doc/libXext, /usr/share/doc/libXi, /usr/share/doc/libXmu-1.2.1, /usr/share/doc/libXrender, /usr/share/doc/libXt, /usr/share/doc/libXtst, /usr/share/doc/libXvMC, /usr/share/doc/xtrans and /usr/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

is the X11 font encoding library

libFS

is the library interface to the X Font Server

libICE

is the X Inter Client Exchange Library

libpciaccess

is the generic PCI Access library for X

libSM

is the X Session Management Library

libX11

is the Xlib Library

libXaw6

is the X Athena Widgets Library, version 6

libXaw7

is the X Athena Widgets Library, version 7

libXaw

are symbolic links to the current X Athena Widgets Library, version 7

libXcomposite

is the X Composite Library

libXcursor

is the X Cursor management library

libXdamage

is the X Damage Library

libXext

is the Misc X Extension Library

libXfixes

provides augmented versions of core protocol requests

libXfont2

is the X font library

libXft

is the X FreeType interface library

libXinerama

is the Xinerama Library

libXi

is the X Input Extension Library

libxkbfile

is the xkbfile Library

libXmu

is the X interface library for miscellaneous utilities not part of the Xlib standard

libXmuu

is the Mini Xmu Library

libXpm

is the X Pixmap Library

libXpresent

is the library interface to the X Present Extension

libXrandr

is the X Resize, Rotate and Reflection extension library

libXrender

is the X Render Library

libXRes

is the X-Resource extension client library

libxshmfence

exposes an event API on top of Linux futexes

libXss

is the X11 Screen Saver extension client library

libXt

is the X Toolkit Library

libXtst

is the Xtst Library

libXvMC

is the X-Video Motion Compensation Library

libXvMCW

is the XvMC Wrapper including the Nonstandard VLD extension

libXv

is the X Window System video extension library

libXxf86dga

is the client library for the XFree86-DGA extension

libXxf86vm

is the client library for the XFree86-VidMode X extension