[PATCH modular] renamed: build.sh -> xorg-build
walter harms
wharms at bfs.de
Wed Jan 25 00:15:18 PST 2012
hi Trevor,
would you mind to drop a line or two why this is needed ?
re,
wh
Am 24.01.2012 22:58, schrieb Trevor Woerner:
> From: Trevor Woerner <twoerner at gmail.com>
>
> Signed-off-by: Trevor Woerner <twoerner at gmail.com>
> ---
> build.sh | 1360 ------------------------------------------------------------
> xorg-build | 1360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 1360 insertions(+), 1360 deletions(-)
> delete mode 100755 build.sh
> create mode 100755 xorg-build
>
> diff --git a/build.sh b/build.sh
> deleted file mode 100755
> index 94202c2..0000000
> --- a/build.sh
> +++ /dev/null
> @@ -1,1360 +0,0 @@
> -#!/bin/sh
> -#
> -# Note on portability:
> -# This script is intended to run on any platform supported by X.Org.
> -# The Autoconf generated configure script is a good reference as to what is permitted.
> -# Basically, it should be able to run in a Bourne shell.
> -
> -envoptions() {
> -cat << EOF
> -Environment variables specific to build.sh:
> - PREFIX Install architecture-independent files in PREFIX [/usr/local]
> - Each module/components is invoked with --prefix
> - EPREFIX Install architecture-dependent files in EPREFIX [PREFIX]
> - Each module/components is invoked with --exec-prefix
> - BINDIR Install user executables [EPREFIX/bin]
> - Each module/components is invoked with --bindir
> - DATAROOTDIR Install read-only arch-independent data root [PREFIX/share]
> - Each module/components is invoked with --datarootdir
> - DATADIR Install read-only architecture-independent data [DATAROOTDIR]
> - Each module/components is invoked with --datadir
> - LIBDIR Install object code libraries [EPREFIX/lib]
> - Each module/components is invoked with --libdir
> - LOCALSTATEDIR Modifiable single-machine data [PREFIX/var]
> - Each module/components is invoked with --localstatedir
> - QUIET Do not print messages saying which checks are being made
> - Each module/components is invoked with --quite
> - GITROOT Source code repository path [git://anongit.freedesktop.org/git]
> - Optional when using --clone to update source code before building
> - CONFFLAGS Configure options to pass to all Autoconf configure scripts
> - Refer to 'configure --help' from any module/components
> -
> -Environment variables defined by the GNU Build System:
> - ACLOCAL The aclocal cmd name [aclocal -I \${DESTDIR}/\${DATADIR}/aclocal]
> - DESTDIR Path to the staging area where installed objects are relocated
> - MAKE The name of the make command [make]
> - MAKEFLAGS: Options to pass to all \$(MAKE) invocations
> - CC C compiler command
> - CFLAGS C compiler flags
> - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
> - nonstandard directory <lib dir>
> - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
> - you have headers in a nonstandard directory <include dir>
> - CPP C preprocessor
> -
> -Environment variables defined by the shell:
> - PATH List of directories that the shell searches for commands
> - \$DESTDIR/\$BINDIR is prepended
> -
> -Environment variables defined by the dynamic linker:
> - LD_LIBRARY_PATH List directories that the linker searches for shared objects
> - \$DESTDIR/\$LIBDIR is prepended
> -
> -Environment variables defined by the pkg-config system:
> - PKG_CONFIG_PATH List directories that pkg-config searches for libraries
> - \$DESTDIR/\$DATADIR/pkgconfig and
> - \$DESTDIR/\$LIBDIR/pkgconfig are prepended
> -EOF
> -}
> -
> -setup_buildenv() {
> -
> - # Remember if the user had supplied a value through env var or cmd line
> - # A value from cmd line takes precedence of the shell environment
> - PREFIX_USER=${PREFIX:+yes}
> - EPREFIX_USER=${EPREFIX:+yes}
> - BINDIR_USER=${BINDIR:+yes}
> - DATAROOTDIR_USER=${DATAROOTDIR:+yes}
> - DATADIR_USER=${DATADIR:+yes}
> - LIBDIR_USER=${LIBDIR:+yes}
> - LOCALSTATEDIR_USER=${LOCALSTATEDIR:+yes}
> -
> - # Assign a default value if no value was supplied by the user
> - PREFIX=${PREFIX:-/usr/local}
> - EPREFIX=${EPREFIX:-$PREFIX}
> - BINDIR=${BINDIR:-$EPREFIX/bin}
> - DATAROOTDIR=${DATAROOTDIR:-$PREFIX/share}
> - DATADIR=${DATADIR:-$DATAROOTDIR}
> - LIBDIR=${LIBDIR:-$EPREFIX/lib}
> - LOCALSTATEDIR=${LOCALSTATEDIR:-$PREFIX/var}
> -
> - # Support previous usage of LIBDIR which was a subdir relative to PREFIX
> - # We use EPREFIX as this is what PREFIX really meant at the time
> - if [ X"$LIBDIR" != X ]; then
> - if [ X"`expr $LIBDIR : "\(.\)"`" != X/ ]; then
> - echo ""
> - echo "Warning: this usage of \$LIBDIR is deprecated. Use a full path name."
> - echo "The supplied value \"$LIBDIR\" has been replaced with $EPREFIX/$LIBDIR."
> - echo ""
> - LIBDIR=$EPREFIX/$LIBDIR
> - fi
> - fi
> -
> - # All directories variables must be full path names
> - check_full_path $PREFIX PREFIX
> - check_full_path $EPREFIX EPREFIX
> - check_full_path $BINDIR BINDIR
> - check_full_path $DATAROOTDIR DATAROOTDIR
> - check_full_path $DATADIR DATADIR
> - check_full_path $LIBDIR LIBDIR
> - check_full_path $LOCALSTATEDIR LOCALSTATEDIR
> -
> - # This will catch the case where user forgets to set PREFIX
> - # and does not have write permission in the /usr/local default location
> - check_writable_dir ${DESTDIR}${PREFIX} PREFIX
> -
> - # Must create local aclocal dir or aclocal fails
> - ACLOCAL_LOCALDIR="${DESTDIR}${DATADIR}/aclocal"
> - $SUDO mkdir -p ${ACLOCAL_LOCALDIR}
> -
> - # The following is required to make aclocal find our .m4 macros
> - ACLOCAL=${ACLOCAL:="aclocal"}
> - ACLOCAL="${ACLOCAL} -I ${ACLOCAL_LOCALDIR}"
> - export ACLOCAL
> -
> - # The following is required to make pkg-config find our .pc metadata files
> - PKG_CONFIG_PATH=${DESTDIR}${DATADIR}/pkgconfig:${DESTDIR}${LIBDIR}/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}
> - export PKG_CONFIG_PATH
> -
> - # Set the library path so that locally built libs will be found by apps
> - LD_LIBRARY_PATH=${DESTDIR}${LIBDIR}${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
> - export LD_LIBRARY_PATH
> -
> - # Set the path so that locally built apps will be found and used
> - PATH=${DESTDIR}${BINDIR}${PATH+:$PATH}
> - export PATH
> -
> - # Choose which make program to use
> - MAKE=${MAKE:="make"}
> -
> - # Create the log file directory
> - $SUDO mkdir -p ${DESTDIR}${LOCALSTATEDIR}/log
> -}
> -
> -# explain where a failure occurred
> -# if you find this message in the build output it can help tell you where the failure occurred
> -# arguments:
> -# $1 - which command failed
> -# $2/$3 - which module/component failed
> -# returns:
> -# (irrelevant)
> -failed() {
> - cmd=$1
> - module=$2
> - component=$3
> - echo "build.sh: \"$cmd\" failed on $module/$component"
> - failed_components="$failed_components $module/$component"
> -}
> -
> -# print a pretty title to separate the processing of each module
> -# arguments:
> -# $1 - module
> -# $2 - component
> -# $3 - configuration options
> -# returns:
> -# (irrelevant)
> -module_title() {
> - module=$1
> - component=$2
> - confopts="$3"
> - # preconds
> - if [ X"$module" = X ]; then
> - return
> - fi
> -
> - echo ""
> - echo "======================================================================"
> - echo "== Processing module/component: \"$module/$component\""
> - echo "== configuration options: $CONFFLAGS $confopts"
> -}
> -
> -checkfortars() {
> - module=$1
> - component=$2
> - case $module in
> - "data")
> - case $component in
> - "cursors") component="xcursor-themes" ;;
> - "bitmaps") component="xbitmaps" ;;
> - esac
> - ;;
> - "font")
> - if [ X"$component" != X"encodings" ]; then
> - component="font-$component"
> - fi
> - ;;
> - "lib")
> - case $component in
> - "libXRes") component="libXres" ;;
> - "libxtrans") component="xtrans" ;;
> - esac
> - ;;
> - "pixman")
> - module="lib"
> - component="pixman"
> - ;;
> - "proto")
> - case $component in
> - "x11proto") component="xproto" ;;
> - esac
> - ;;
> - "util")
> - case $component in
> - "cf") component="xorg-cf-files" ;;
> - "macros") component="util-macros" ;;
> - esac
> - ;;
> - "xcb")
> - case $component in
> - "proto")
> - module="xcb/proto"
> - component="xcb-proto"
> - ;;
> - "pthread-stubs")
> - module="xcb/pthread-stubs"
> - component="libpthread-stubs"
> - ;;
> - "libxcb")
> - module="xcb/libxcb"
> - component="libxcb"
> - ;;
> - util*)
> - module="xcb/$component"
> - component="xcb-$component"
> - ;;
> - esac
> - ;;
> - "mesa")
> - case $component in
> - "drm")
> - module="mesa/drm"
> - component="libdrm"
> - ;;
> - "mesa")
> - module="mesa/mesa"
> - component="MesaLib"
> - ;;
> - esac
> - ;;
> - "xkeyboard-config")
> - component="xkeyboard-config"
> - ;;
> - "xserver")
> - component="xorg-server"
> - ;;
> - esac
> - for ii in $module .; do
> - for jj in bz2 gz; do
> - TARFILE=`ls -1rt $ii/$component-*.tar.$jj 2> /dev/null | tail -n 1`
> - if [ X"$TARFILE" != X ]; then
> - SRCDIR=`echo $TARFILE | sed "s,.tar.$jj,,"`
> - SRCDIR=`echo $SRCDIR | sed "s,MesaLib,Mesa,"`
> - if [ ! -d $SRCDIR ]; then
> - TAROPTS=xjf
> - if [ X"$jj" = X"gz" ]; then
> - TAROPTS=xzf
> - fi
> - tar $TAROPTS $TARFILE -C $ii
> - if [ $? -ne 0 ]; then
> - failed tar $module $component
> - return 1
> - fi
> - fi
> - return 0
> - fi
> - done
> - done
> -
> - return 0
> -}
> -
> -# perform a clone of a git repository
> -# this function provides the mapping between module/component names
> -# and their location in the fd.o repository
> -# arguments:
> -# $1 - module
> -# $2 - component (optional)
> -# returns:
> -# 0 - good
> -# 1 - bad
> -clone() {
> - module=$1
> - component=$2
> - # preconds
> - if [ X"$module" = X ]; then
> - echo "clone() required first argument is missing"
> - return 1
> - fi
> -
> - case $module in
> - "pixman")
> - BASEDIR=""
> - ;;
> - "xcb")
> - BASEDIR=""
> - ;;
> - "mesa")
> - BASEDIR=""
> - ;;
> - "xkeyboard-config")
> - BASEDIR=""
> - ;;
> - *)
> - BASEDIR="xorg/"
> - ;;
> - esac
> -
> - DIR="$module/$component"
> - GITROOT=${GITROOT:="git://anongit.freedesktop.org/git"}
> -
> - if [ ! -d "$DIR" ]; then
> - git clone "$GITROOT/$BASEDIR$DIR" "$DIR"
> - if [ $? -ne 0 ]; then
> - echo "Failed to clone $module module component $component. Ignoring."
> - clonefailed_components="$clonefailed_components $module/$component"
> - return 1
> - fi
> - old_pwd=`pwd`
> - cd $DIR
> - if [ $? -ne 0 ]; then
> - echo "Failed to cd to $module module component $component. Ignoring."
> - clonefailed_components="$clonefailed_components $module/$component"
> - return 1
> - return 1
> - fi
> - git submodule init
> - if [ $? -ne 0 ]; then
> - echo "Failed to initialize $module module component $component submodule. Ignoring."
> - clonefailed_components="$clonefailed_components $module/$component"
> - return 1
> - fi
> - git submodule update
> - if [ $? -ne 0 ]; then
> - echo "Failed to update $module module component $component submodule. Ignoring."
> - clonefailed_components="$clonefailed_components $module/$component"
> - return 1
> - fi
> - cd ${old_pwd}
> - else
> - echo "git cannot clone into an existing directory $module/$component"
> - return 1
> - fi
> -
> - return 0
> -}
> -
> -# perform processing of each module/component
> -# arguments:
> -# $1 - module
> -# $2 - component
> -# $3 - configure options
> -# returns:
> -# 0 - good
> -# 1 - bad
> -process() {
> - needs_config=0
> -
> - module=$1
> - component=$2
> - confopts="$3"
> - # preconds
> - if [ X"$module" = X ]; then
> - echo "process() required first argument is missing"
> - return 1
> - fi
> -
> - module_title $module "$component" "$confopts"
> -
> - SRCDIR=""
> - CONFCMD=""
> - if [ -f $module/$component/autogen.sh ]; then
> - SRCDIR="$module/$component"
> - CONFCMD="autogen.sh"
> - elif [ X"$CLONE" != X ]; then
> - clone $module $component
> - if [ $? -eq 0 ]; then
> - SRCDIR="$module/$component"
> - CONFCMD="autogen.sh"
> - fi
> - needs_config=1
> - else
> - checkfortars $module $component
> - CONFCMD="configure"
> - fi
> -
> - if [ X"$SRCDIR" = X ]; then
> - echo "$module module component $component does not exist, skipping."
> - nonexistent_components="$nonexistent_components $module/$component"
> - return 0
> - fi
> -
> - if [ X"$BUILT_MODULES_FILE" != X ]; then
> - echo "$module/$component" >> $BUILT_MODULES_FILE
> - fi
> -
> - old_pwd=`pwd`
> - cd $SRCDIR
> - if [ $? -ne 0 ]; then
> - failed cd1 $module $component
> - return 1
> - fi
> -
> - if [ X"$GITCMD" != X ]; then
> - $GITCMD
> - rtn=$?
> - cd $old_pwd
> -
> - if [ $rtn -ne 0 ]; then
> - failed "$GITCMD" $module $component
> - return 1
> - fi
> - return 0
> - fi
> -
> - if [ X"$PULL" != X ]; then
> - git pull --rebase
> - if [ $? -ne 0 ]; then
> - failed "git pull" $module $component
> - cd $old_pwd
> - return 1
> - fi
> - # The parent module knows which commit the submodule should be at
> - git submodule update
> - if [ $? -ne 0 ]; then
> - failed "git submodule update" $module $component
> - return 1
> - fi
> - fi
> -
> - # Build outside source directory
> - if [ X"$DIR_ARCH" != X ] ; then
> - mkdir -p "$DIR_ARCH"
> - if [ $? -ne 0 ]; then
> - failed mkdir $module $component
> - cd $old_pwd
> - return 1
> - fi
> - cd "$DIR_ARCH"
> - if [ $? -ne 0 ]; then
> - failed cd2 $module $component
> - cd ${old_pwd}
> - return 1
> - fi
> - fi
> -
> - # Use "sh autogen.sh" since some scripts are not executable in CVS
> - if [ $needs_config -eq 1 ] || [ X"$NOAUTOGEN" = X ]; then
> - sh ${DIR_CONFIG}/${CONFCMD} \
> - ${PREFIX_USER:+--prefix="$PREFIX"} \
> - ${EPREFIX_USER:+--exec-prefix="$EPREFIX"} \
> - ${BINDIR_USER:+--bindir="$BINDIR"} \
> - ${DATAROOTDIR_USER:+--datarootdir="$DATAROOTDIR"} \
> - ${DATADIR_USER:+--datadir="$DATADIR"} \
> - ${LIBDIR_USER:+--libdir="$LIBDIR"} \
> - ${LOCALSTATEDIR_USER:+--localstatedir="$LOCALSTATEDIR"} \
> - ${QUIET:+--quiet} \
> - ${CONFFLAGS} $confopts \
> - ${CC:+CC="$CC"} \
> - ${CPP:+CPP="$CPP"} \
> - ${CPPFLAGS:+CPPFLAGS="$CPPFLAGS"} \
> - ${CFLAGS:+CFLAGS="$CFLAGS"} \
> - ${LDFLAGS:+LDFLAGS="$LDFLAGS"}
> - if [ $? -ne 0 ]; then
> - failed ${CONFCMD} $module $component
> - cd $old_pwd
> - return 1
> - fi
> - fi
> -
> - # A custom 'make' target list was supplied through --cmd option
> - if [ X"$MAKECMD" != X ]; then
> - ${MAKE} $MAKEFLAGS $MAKECMD
> - rtn=$?
> - cd $old_pwd
> -
> - if [ $rtn -ne 0 ]; then
> - failed "$MAKE $MAKEFLAGS $MAKECMD" $module $component
> - return 1
> - fi
> - return 0
> - fi
> -
> - ${MAKE} $MAKEFLAGS
> - if [ $? -ne 0 ]; then
> - # Rerun with Automake silent rules disabled to see failing gcc statement
> - if [ X"$RETRY_VERBOSE" != X ]; then
> - echo ""
> - echo "build.sh: Rebuilding $component with Automake silent rules disabled"
> - ${MAKE} $MAKEFLAGS V=1
> - fi
> - failed "$MAKE $MAKEFLAGS" $module $component
> - cd $old_pwd
> - return 1
> - fi
> -
> - if [ X"$CHECK" != X ]; then
> - ${MAKE} $MAKEFLAGS check
> - if [ $? -ne 0 ]; then
> - failed "$MAKE $MAKEFLAGS check" $module $component
> - cd $old_pwd
> - return 1
> - fi
> - fi
> -
> - if [ X"$CLEAN" != X ]; then
> - ${MAKE} $MAKEFLAGS clean
> - if [ $? -ne 0 ]; then
> - failed "$MAKE $MAKEFLAGS clean" $module $component
> - cd $old_pwd
> - return 1
> - fi
> - fi
> -
> - if [ X"$DIST" != X ]; then
> - ${MAKE} $MAKEFLAGS dist
> - if [ $? -ne 0 ]; then
> - failed "$MAKE $MAKEFLAGS dist" $module $component
> - cd $old_pwd
> - return 1
> - fi
> - fi
> -
> - if [ X"$DISTCHECK" != X ]; then
> - ${MAKE} $MAKEFLAGS distcheck
> - if [ $? -ne 0 ]; then
> - failed "$MAKE $MAKEFLAGS distcheck" $module $component
> - cd $old_pwd
> - return 1
> - fi
> - fi
> -
> - $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ${MAKE} $MAKEFLAGS install
> - if [ $? -ne 0 ]; then
> - failed "$SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH $MAKE $MAKEFLAGS install" $module $component
> - cd $old_pwd
> - return 1
> - fi
> -
> - cd ${old_pwd}
> - return 0
> -}
> -
> -# process each module/component and handle:
> -# LISTONLY, RESUME, NOQUIT, and BUILD_ONE
> -# arguments:
> -# $1 - module
> -# $2 - component
> -# $3 - configure options
> -# returns:
> -# 0 - good
> -# 1 - bad
> -build() {
> - module=$1
> - component=$2
> - confopts="$3"
> - if [ X"$LISTONLY" != X ]; then
> - echo "$module/$component"
> - return 0
> - fi
> -
> - if [ X"$RESUME" != X ]; then
> - if [ X"$RESUME" = X"$module/$component" ]; then
> - unset RESUME
> - # Resume build at this module
> - else
> - echo "Skipping $module module component $component..."
> - return 0
> - fi
> - fi
> -
> - process $module "$component" "$confopts"
> - if [ $? -ne 0 ]; then
> - echo "build.sh: error processing module/component: \"$module/$component\""
> - if [ X"$NOQUIT" = X ]; then
> - exit 1
> - fi
> - fi
> -
> - if [ X"$BUILD_ONE" != X ]; then
> - echo "Single-component build complete"
> - exit 0
> - fi
> -}
> -
> -# protocol headers have no build order dependencies
> -build_proto() {
> - case $HOST_OS in
> - Darwin)
> - build proto applewmproto
> - ;;
> - CYGWIN*)
> - build proto windowswmproto
> - ;;
> - esac
> - build proto bigreqsproto
> - build proto compositeproto
> - build proto damageproto
> - build proto dmxproto
> - build proto dri2proto
> - build proto fixesproto
> - build proto fontsproto
> - build proto glproto
> - build proto inputproto
> - build proto kbproto
> - build proto randrproto
> - build proto recordproto
> - build proto renderproto
> - build proto resourceproto
> - build proto scrnsaverproto
> - build proto videoproto
> - build proto x11proto
> - build proto xcmiscproto
> - build proto xextproto
> - build proto xf86bigfontproto
> - build proto xf86dgaproto
> - build proto xf86driproto
> - build proto xf86vidmodeproto
> - build proto xineramaproto
> - build xcb proto
> -}
> -
> -# bitmaps is needed for building apps, so has to be done separately first
> -# cursors depends on apps/xcursorgen
> -# xkbdata is obsolete - use xkbdesc from xkeyboard-config instead
> -build_data() {
> -# build data bitmaps
> - build data cursors
> -}
> -
> -# All protocol modules must be installed before the libs (okay, that's an
> -# overstatement, but all protocol modules should be installed anyway)
> -#
> -# the libraries have a dependency order:
> -# xtrans, Xau, Xdmcp before anything else
> -# fontenc before Xfont
> -# ICE before SM
> -# X11 before Xext
> -# (X11 and SM) before Xt
> -# Xt before Xmu and Xpm
> -# Xext before any other extension library
> -# Xfixes before Xcomposite
> -# Xp before XprintUtil before XprintAppUtil
> -#
> -build_lib() {
> - build lib libxtrans
> - build lib libXau
> - build lib libXdmcp
> - build xcb pthread-stubs
> - build xcb libxcb
> - build xcb util
> - build xcb util-image
> - build xcb util-keysyms
> - build xcb util-renderutil
> - build xcb util-wm
> - build lib libX11
> - build lib libXext
> - case $HOST_OS in
> - Darwin)
> - build lib libAppleWM
> - ;;
> - CYGWIN*)
> - build lib libWindowsWM
> - ;;
> - esac
> - build lib libdmx
> - build lib libfontenc
> - build lib libFS
> - build lib libICE
> - build lib libSM
> - build lib libXt
> - build lib libXmu
> - build lib libXpm
> - build lib libXaw
> - build lib libXfixes
> - build lib libXcomposite
> - build lib libXrender
> - build lib libXdamage
> - build lib libXcursor
> - build lib libXfont
> - build lib libXft
> - build lib libXi
> - build lib libXinerama
> - build lib libxkbfile
> - build lib libXrandr
> - build lib libXRes
> - build lib libXScrnSaver
> - build lib libXtst
> - build lib libXv
> - build lib libXvMC
> - build lib libXxf86dga
> - build lib libXxf86vm
> - build lib libpciaccess
> - build pixman ""
> -}
> -
> -# Most apps depend at least on libX11.
> -#
> -# bdftopcf depends on libXfont
> -# mkfontscale depends on libfontenc and libfreetype
> -# mkfontdir depends on mkfontscale
> -#
> -# TODO: detailed breakdown of which apps require which libs
> -build_app() {
> - build app appres
> - build app bdftopcf
> - build app beforelight
> - build app bitmap
> - build app editres
> - build app fonttosfnt
> - build app fslsfonts
> - build app fstobdf
> - build app iceauth
> - build app ico
> - build app listres
> - build app luit
> - build app mkcomposecache
> - build app mkfontdir
> - build app mkfontscale
> - build app oclock
> - build app rgb
> - build app rendercheck
> - build app rstart
> - build app scripts
> - build app sessreg
> - build app setxkbmap
> - build app showfont
> - build app smproxy
> - build app twm
> - build app viewres
> - build app x11perf
> - build app xauth
> - build app xbacklight
> - build app xbiff
> - build app xcalc
> - build app xclipboard
> - build app xclock
> - build app xcmsdb
> - build app xconsole
> - build app xcursorgen
> - build app xdbedizzy
> - build app xditview
> - build app xdm
> - build app xdpyinfo
> - build app xdriinfo
> - build app xedit
> - build app xev
> - build app xeyes
> - build app xf86dga
> - build app xfd
> - build app xfontsel
> - build app xfs
> - build app xfsinfo
> - build app xgamma
> - build app xgc
> - build app xhost
> - build app xinit
> - build app xinput
> - build app xkbcomp
> - build app xkbevd
> - build app xkbprint
> - build app xkbutils
> - build app xkill
> - build app xload
> - build app xlogo
> - build app xlsatoms
> - build app xlsclients
> - build app xlsfonts
> - build app xmag
> - build app xman
> - build app xmessage
> - build app xmh
> - build app xmodmap
> - build app xmore
> - build app xprop
> - build app xrandr
> - build app xrdb
> - build app xrefresh
> - build app xscope
> - build app xset
> - build app xsetmode
> - build app xsetroot
> - build app xsm
> - build app xstdcmap
> - build app xvidtune
> - build app xvinfo
> - build app xwd
> - build app xwininfo
> - build app xwud
> -}
> -
> -build_mesa() {
> - build mesa drm
> - build mesa mesa
> -}
> -
> -# The server requires at least the following libraries:
> -# Xfont, Xau, Xdmcp, pciaccess
> -build_xserver() {
> - build xserver ""
> -}
> -
> -build_driver_input() {
> - # Some drivers are only buildable on some OS'es
> - case $HOST_OS in
> - Linux)
> - build driver xf86-input-evdev
> - build driver xf86-input-joystick
> - ;;
> - FreeBSD | NetBSD | OpenBSD | Dragonfly | GNU/kFreeBSD)
> - build driver xf86-input-joystick
> - ;;
> - esac
> -
> - # And some drivers are only buildable on some CPUs.
> - case $HOST_CPU in
> - i*86 | amd64 | x86_64)
> - build driver xf86-input-vmmouse
> - ;;
> - esac
> -
> - build driver xf86-input-keyboard
> - build driver xf86-input-mouse
> - build driver xf86-input-synaptics
> - build driver xf86-input-void
> -}
> -
> -build_driver_video() {
> - # Some drivers are only buildable on some OS'es
> - case $HOST_OS in
> - FreeBSD)
> - case $HOST_CPU in
> - sparc64)
> - build driver xf86-video-sunffb
> - ;;
> - esac
> - ;;
> - NetBSD | OpenBSD)
> - build driver xf86-video-wsfb
> - build driver xf86-video-sunffb
> - ;;
> - Linux)
> - build driver xf86-video-sisusb
> - build driver xf86-video-sunffb
> - build driver xf86-video-v4l
> - build driver xf86-video-xgixp
> - case $HOST_CPU in
> - i*86)
> - # AMD Geode CPU. Driver contains 32 bit assembler code
> - build driver xf86-video-geode
> - ;;
> - esac
> - ;;
> - esac
> -
> - # Some drivers are only buildable on some architectures
> - case $HOST_CPU in
> - sparc | sparc64)
> - build driver xf86-video-suncg14
> - build driver xf86-video-suncg3
> - build driver xf86-video-suncg6
> - build driver xf86-video-sunleo
> - build driver xf86-video-suntcx
> - ;;
> - i*86 | amd64 | x86_64)
> - build driver xf86-video-i740
> - build driver xf86-video-intel
> - ;;
> - esac
> -
> - build driver xf86-video-apm
> - build driver xf86-video-ark
> - build driver xf86-video-ast
> - build driver xf86-video-ati
> - build driver xf86-video-chips
> - build driver xf86-video-cirrus
> - build driver xf86-video-dummy
> - build driver xf86-video-fbdev
> -# build driver xf86-video-glide
> - build driver xf86-video-glint
> - build driver xf86-video-i128
> - build driver xf86-video-mach64
> - build driver xf86-video-mga
> - build driver xf86-video-neomagic
> - build driver xf86-video-newport
> - build driver xf86-video-nv
> - build driver xf86-video-rendition
> - build driver xf86-video-r128
> - build driver xf86-video-s3
> - build driver xf86-video-s3virge
> - build driver xf86-video-savage
> - build driver xf86-video-siliconmotion
> - build driver xf86-video-sis
> - build driver xf86-video-tdfx
> - build driver xf86-video-tga
> - build driver xf86-video-trident
> - build driver xf86-video-tseng
> - build driver xf86-video-vesa
> - build driver xf86-video-vmware
> - build driver xf86-video-voodoo
> - build driver xf86-video-xgi
> -}
> -
> -# The server must be built before the drivers
> -build_driver() {
> - # XQuartz doesn't need these...
> - case $HOST_OS in
> - Darwin) return 0 ;;
> - esac
> -
> - build_driver_input
> - build_driver_video
> -}
> -
> -# All fonts require mkfontscale and mkfontdir to be available
> -#
> -# The following fonts require bdftopcf to be available:
> -# adobe-100dpi, adobe-75dpi, adobe-utopia-100dpi, adobe-utopia-75dpi,
> -# arabic-misc, bh-100dpi, bh-75dpi, bh-lucidatypewriter-100dpi,
> -# bh-lucidatypewriter-75dpi, bitstream-100dpi, bitstream-75dpi,
> -# cronyx-cyrillic, cursor-misc, daewoo-misc, dec-misc, isas-misc,
> -# jis-misc, micro-misc, misc-cyrillic, misc-misc, mutt-misc,
> -# schumacher-misc, screen-cyrillic, sony-misc, sun-misc and
> -# winitzki-cyrillic
> -#
> -# The font util component must be built before any of the fonts, since they
> -# use the fontutil.m4 installed by it. (As do several other modules, such
> -# as libfontenc and app/xfs, which is why it is moved up to the top.)
> -#
> -# The alias component is recommended to be installed after the other fonts
> -# since the fonts.alias files reference specific fonts installed from the
> -# other font components
> -build_font() {
> - build font encodings
> - build font adobe-100dpi
> - build font adobe-75dpi
> - build font adobe-utopia-100dpi
> - build font adobe-utopia-75dpi
> - build font adobe-utopia-type1
> - build font arabic-misc
> - build font bh-100dpi
> - build font bh-75dpi
> - build font bh-lucidatypewriter-100dpi
> - build font bh-lucidatypewriter-75dpi
> - build font bh-ttf
> - build font bh-type1
> - build font bitstream-100dpi
> - build font bitstream-75dpi
> - build font bitstream-speedo
> - build font bitstream-type1
> - build font cronyx-cyrillic
> - build font cursor-misc
> - build font daewoo-misc
> - build font dec-misc
> - build font ibm-type1
> - build font isas-misc
> - build font jis-misc
> - build font micro-misc
> - build font misc-cyrillic
> - build font misc-ethiopic
> - build font misc-meltho
> - build font misc-misc
> - build font mutt-misc
> - build font schumacher-misc
> - build font screen-cyrillic
> - build font sony-misc
> - build font sun-misc
> - build font winitzki-cyrillic
> - build font xfree86-type1
> - build font alias
> -}
> -
> -# makedepend requires xproto
> -build_util() {
> - build util cf
> - build util imake
> - build util gccmakedep
> - build util lndir
> -
> - build xkeyboard-config ""
> -}
> -
> -# xorg-docs requires xorg-sgml-doctools
> -build_doc() {
> - build doc xorg-sgml-doctools
> - build doc xorg-docs
> -}
> -
> -# just process the sub-projects supplied in the given file ($MODFILE)
> -# in the order in which they are found in the list
> -# (prerequisites and ordering are the responsibility of the user)
> -# globals used:
> -# $MODFILE - readable file containing list of modules to process
> -# and their optional configuration options
> -# arguments:
> -# (none)
> -# returns:
> -# 0 - good
> -# 1 - bad
> -process_module_file() {
> - # preconds
> - if [ X"$MODFILE" = X ]; then
> - echo "internal process_module_file() error, \$MODFILE is empty"
> - return 1
> - fi
> - if [ ! -r "$MODFILE" ]; then
> - echo "module file '$MODFILE' is not readable or does not exist"
> - return 1
> - fi
> -
> - # read from input file, skipping blank and comment lines
> - while read line; do
> - # skip blank lines
> - if [ X"$line" = X ]; then
> - continue
> - fi
> -
> - # skip comment lines
> - echo "$line" | grep "^#" > /dev/null
> - if [ $? -eq 0 ]; then
> - continue
> - fi
> -
> - module=`echo $line | cut -d' ' -f1 | cut -d'/' -f1`
> - component=`echo $line | cut -d' ' -f1 | cut -d'/' -f2`
> - confopts_check=`echo $line | cut -d' ' -f2-`
> - if [ "$module/$component" = "$confopts_check" ]; then
> - confopts=""
> - else
> - confopts="$confopts_check"
> - fi
> - build $module "$component" "$confopts"
> - done <"$MODFILE"
> -
> - return 0
> -}
> -
> -usage() {
> - basename="`expr "//$0" : '.*/\([^/]*\)'`"
> - echo "Usage: $basename [options] [prefix]"
> - echo "Options:"
> - echo " -a Do NOT run auto config tools (autogen.sh, configure)"
> - echo " -b Use .build.unknown build directory"
> - echo " -c Run make clean in addition to \"all install\""
> - echo " -D Run make dist in addition to \"all install\""
> - echo " -d Run make distcheck in addition \"all install\""
> - echo " -g Compile and link with debug information"
> - echo " -h, --help Display this help and exit successfully"
> - echo " -n Do not quit after error; just print error message"
> - echo " -o <module/component> Build just this <module/component>"
> - echo " -p Update source code before building (git pull --rebase)"
> - echo " -s <sudo> The command name providing superuser privilege"
> - echo " --autoresume <file> Append module being built to, and autoresume from, <file>"
> - echo " --check Run make check in addition \"all install\""
> - echo " --clone Clone non-existing repositories (uses \$GITROOT if set)"
> - echo " --cmd <cmd> Execute arbitrary git, gmake, or make command <cmd>"
> - echo " --confflags <options> Pass <options> to autgen.sh/configure of all modules"
> - echo " --modfile <file> Only process the module/components specified in <file>"
> - echo " Any text after, and on the same line as, the module/component"
> - echo " is assumed to be configuration options for the configuration"
> - echo " of each module/component specifically"
> - echo " --retry-v1 Remake 'all' on failure with Automake silent rules disabled"
> - echo ""
> - echo "Usage: $basename -L"
> - echo " -L : just list modules to build"
> - echo ""
> - envoptions
> -}
> -
> -# Ensure the named variable value contains a full path name
> -# arguments:
> -# $1 - the variable value (the path to examine)
> -# $2 - the name of the variable
> -# returns:
> -# returns nothing or exit on error with message
> -check_full_path () {
> - path=$1
> - varname=$2
> - if [ X"`expr $path : "\(.\)"`" != X/ ]; then
> - echo "The path \"$path\" supplied by \"$varname\" must be a full path name"
> - echo ""
> - usage
> - exit 1
> - fi
> -}
> -
> -# Ensure the named variable value contains a writable directory
> -# arguments:
> -# $1 - the variable value (the path to examine)
> -# $2 - the name of the variable
> -# returns:
> -# returns nothing or exit on error with message
> -check_writable_dir () {
> - path=$1
> - varname=$2
> - if [ X"$SUDO" = X ]; then
> - if [ ! -d "$path" ] || [ ! -w "$path" ]; then
> - echo "The path \"$path\" supplied by \"$varname\" must be a writable directory"
> - echo ""
> - usage
> - exit 1
> - fi
> - fi
> -}
> -
> -# perform sanity checks on cmdline args which require arguments
> -# arguments:
> -# $1 - the option being examined
> -# $2 - the argument to the option
> -# returns:
> -# if it returns, everything is good
> -# otherwise it exit's
> -required_arg() {
> - option=$1
> - arg=$2
> - # preconds
> - if [ X"$option" = X ]; then
> - echo "internal required_arg() error, missing first argument"
> - exit 1
> - fi
> -
> - # check for an argument
> - if [ X"$arg" = X ]; then
> - echo "the '$option' option is missing its required argument"
> - echo ""
> - usage
> - exit 1
> - fi
> -
> - # does the argument look like an option?
> - echo $arg | grep "^-" > /dev/null
> - if [ $? -eq 0 ]; then
> - echo "the argument '$arg' of option '$option' looks like an option itself"
> - echo ""
> - usage
> - exit 1
> - fi
> -}
> -
> -#------------------------------------------------------------------------------
> -# Script main line
> -#------------------------------------------------------------------------------
> -
> -# Initialize variables controlling end of run reports
> -failed_components=""
> -nonexistent_components=""
> -clonefailed_components=""
> -
> -# Set variables supporting multiple binaries for a single source tree
> -HAVE_ARCH="`uname -i`"
> -DIR_ARCH=""
> -DIR_CONFIG="."
> -
> -# Set variables for conditionally building some components
> -HOST_OS=`uname -s`
> -export HOST_OS
> -HOST_CPU=`uname -m`
> -export HOST_CPU
> -
> -# Process command line args
> -while [ $# != 0 ]
> -do
> - case $1 in
> - -a)
> - NOAUTOGEN=1
> - ;;
> - -b)
> - DIR_ARCH=".build.$HAVE_ARCH"
> - DIR_CONFIG=".."
> - ;;
> - -c)
> - CLEAN=1
> - ;;
> - -D)
> - DIST=1
> - ;;
> - -d)
> - DISTCHECK=1
> - ;;
> - -g)
> - CFLAGS="${CFLAGS} -g3 -O0"
> - ;;
> - -h|--help)
> - usage
> - exit 0
> - ;;
> - -L)
> - LISTONLY=1
> - ;;
> - -n)
> - NOQUIT=1
> - ;;
> - -o)
> - required_arg $1 $2
> - shift
> - RESUME=$1
> - BUILD_ONE=1
> - ;;
> - -p)
> - PULL=1
> - ;;
> - -s)
> - required_arg $1 $2
> - shift
> - SUDO=$1
> - ;;
> - --autoresume)
> - required_arg $1 $2
> - shift
> - BUILT_MODULES_FILE=$1
> - [ -f $1 ] && RESUME=`tail -n 1 $1`
> - ;;
> - --check)
> - CHECK=1
> - ;;
> - --clone)
> - CLONE=1
> - ;;
> - --cmd)
> - required_arg $1 $2
> - shift
> - cmd1=`echo $1 | cut -d' ' -f1`
> - cmd2=`echo $1 | cut -d' ' -f2`
> -
> - # verify the command exists
> - which $cmd1 > /dev/null 2>&1
> - if [ $? -ne 0 ]; then
> - echo "The specified command '$cmd1' does not appear to exist"
> - echo ""
> - usage
> - exit 1
> - fi
> -
> - case X"$cmd1" in
> - X"git")
> - GITCMD=$1
> - ;;
> - X"make" | X"gmake")
> - MAKECMD=$cmd2
> - ;;
> - *)
> - echo "The script can only process 'make', 'gmake', or 'git' commands"
> - echo "It can't process '$cmd1' commands"
> - echo ""
> - usage
> - exit 1
> - ;;
> - esac
> - ;;
> - --confflags)
> - shift
> - CONFFLAGS=$1
> - ;;
> - --modfile)
> - required_arg $1 $2
> - shift
> - if [ ! -r "$1" ]; then
> - echo "can't find/read file '$1'"
> - exit 1
> - fi
> - MODFILE=$1
> - ;;
> - --retry-v1)
> - RETRY_VERBOSE=1
> - ;;
> - *)
> - if [ X"$too_many" = Xyes ]; then
> - echo "unrecognized and/or too many command-line arguments"
> - echo " PREFIX: $PREFIX"
> - echo " Extra arguments: $1"
> - echo ""
> - usage
> - exit 1
> - fi
> -
> - # check that 'prefix' doesn't look like an option
> - echo $1 | grep "^-" > /dev/null
> - if [ $? -eq 0 ]; then
> - echo "'prefix' appears to be an option"
> - echo ""
> - usage
> - exit 1
> - fi
> -
> - PREFIX=$1
> - too_many=yes
> - ;;
> - esac
> -
> - shift
> -done
> -
> -# All user input has been obtained, set-up the user shell variables
> -if [ X"$LISTONLY" = X ]; then
> - setup_buildenv
> - echo "Building to run $HOST_OS / $HOST_CPU ($HOST)"
> - date
> -fi
> -
> -if [ X"$MODFILE" = X ]; then
> - # We must install the global macros before anything else
> - build util macros
> - build font util
> -
> - build_doc
> - build_proto
> - # Required by mesa and depends on xproto
> - build util makedepend
> - build_lib
> - build_mesa
> -
> - build data bitmaps
> - build_app
> - build_xserver
> - build_driver
> - build_data
> - build_font
> - build_util
> -else
> - process_module_file
> -fi
> -
> -if [ X"$LISTONLY" != X ]; then
> - exit 0
> -fi
> -
> -# Print the end date/time to compare with the start date/time
> -date
> -
> -# Report about components that failed for one reason or another
> -if [ X"$nonexistent_components" != X ]; then
> - echo ""
> - echo "***** Skipped components (not available) *****"
> - echo "Could neither find a git repository (at the <module/component> paths)"
> - echo "or a tarball (at the <module/> paths or ./) for:"
> - echo " <module/component>"
> - for mod in $nonexistent_components; do
> - echo " $mod"
> - done
> - echo "You may want to provide the --clone option to build.sh"
> - echo "to automatically git-clone the missing components"
> - echo ""
> -fi
> -
> -if [ X"$failed_components" != X ]; then
> - echo ""
> - echo "***** Failed components *****"
> - for mod in $failed_components; do
> - echo " $mod"
> - done
> - echo ""
> -fi
> -
> -if [ X"$CLONE" != X ] && [ X"$clonefailed_components" != X ]; then
> - echo ""
> - echo "***** Components failed to clone *****"
> - for mod in $clonefailed_components; do
> - echo " $mod"
> - done
> - echo ""
> -fi
> -
> diff --git a/xorg-build b/xorg-build
> new file mode 100755
> index 0000000..94202c2
> --- /dev/null
> +++ b/xorg-build
> @@ -0,0 +1,1360 @@
> +#!/bin/sh
> +#
> +# Note on portability:
> +# This script is intended to run on any platform supported by X.Org.
> +# The Autoconf generated configure script is a good reference as to what is permitted.
> +# Basically, it should be able to run in a Bourne shell.
> +
> +envoptions() {
> +cat << EOF
> +Environment variables specific to build.sh:
> + PREFIX Install architecture-independent files in PREFIX [/usr/local]
> + Each module/components is invoked with --prefix
> + EPREFIX Install architecture-dependent files in EPREFIX [PREFIX]
> + Each module/components is invoked with --exec-prefix
> + BINDIR Install user executables [EPREFIX/bin]
> + Each module/components is invoked with --bindir
> + DATAROOTDIR Install read-only arch-independent data root [PREFIX/share]
> + Each module/components is invoked with --datarootdir
> + DATADIR Install read-only architecture-independent data [DATAROOTDIR]
> + Each module/components is invoked with --datadir
> + LIBDIR Install object code libraries [EPREFIX/lib]
> + Each module/components is invoked with --libdir
> + LOCALSTATEDIR Modifiable single-machine data [PREFIX/var]
> + Each module/components is invoked with --localstatedir
> + QUIET Do not print messages saying which checks are being made
> + Each module/components is invoked with --quite
> + GITROOT Source code repository path [git://anongit.freedesktop.org/git]
> + Optional when using --clone to update source code before building
> + CONFFLAGS Configure options to pass to all Autoconf configure scripts
> + Refer to 'configure --help' from any module/components
> +
> +Environment variables defined by the GNU Build System:
> + ACLOCAL The aclocal cmd name [aclocal -I \${DESTDIR}/\${DATADIR}/aclocal]
> + DESTDIR Path to the staging area where installed objects are relocated
> + MAKE The name of the make command [make]
> + MAKEFLAGS: Options to pass to all \$(MAKE) invocations
> + CC C compiler command
> + CFLAGS C compiler flags
> + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
> + nonstandard directory <lib dir>
> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
> + you have headers in a nonstandard directory <include dir>
> + CPP C preprocessor
> +
> +Environment variables defined by the shell:
> + PATH List of directories that the shell searches for commands
> + \$DESTDIR/\$BINDIR is prepended
> +
> +Environment variables defined by the dynamic linker:
> + LD_LIBRARY_PATH List directories that the linker searches for shared objects
> + \$DESTDIR/\$LIBDIR is prepended
> +
> +Environment variables defined by the pkg-config system:
> + PKG_CONFIG_PATH List directories that pkg-config searches for libraries
> + \$DESTDIR/\$DATADIR/pkgconfig and
> + \$DESTDIR/\$LIBDIR/pkgconfig are prepended
> +EOF
> +}
> +
> +setup_buildenv() {
> +
> + # Remember if the user had supplied a value through env var or cmd line
> + # A value from cmd line takes precedence of the shell environment
> + PREFIX_USER=${PREFIX:+yes}
> + EPREFIX_USER=${EPREFIX:+yes}
> + BINDIR_USER=${BINDIR:+yes}
> + DATAROOTDIR_USER=${DATAROOTDIR:+yes}
> + DATADIR_USER=${DATADIR:+yes}
> + LIBDIR_USER=${LIBDIR:+yes}
> + LOCALSTATEDIR_USER=${LOCALSTATEDIR:+yes}
> +
> + # Assign a default value if no value was supplied by the user
> + PREFIX=${PREFIX:-/usr/local}
> + EPREFIX=${EPREFIX:-$PREFIX}
> + BINDIR=${BINDIR:-$EPREFIX/bin}
> + DATAROOTDIR=${DATAROOTDIR:-$PREFIX/share}
> + DATADIR=${DATADIR:-$DATAROOTDIR}
> + LIBDIR=${LIBDIR:-$EPREFIX/lib}
> + LOCALSTATEDIR=${LOCALSTATEDIR:-$PREFIX/var}
> +
> + # Support previous usage of LIBDIR which was a subdir relative to PREFIX
> + # We use EPREFIX as this is what PREFIX really meant at the time
> + if [ X"$LIBDIR" != X ]; then
> + if [ X"`expr $LIBDIR : "\(.\)"`" != X/ ]; then
> + echo ""
> + echo "Warning: this usage of \$LIBDIR is deprecated. Use a full path name."
> + echo "The supplied value \"$LIBDIR\" has been replaced with $EPREFIX/$LIBDIR."
> + echo ""
> + LIBDIR=$EPREFIX/$LIBDIR
> + fi
> + fi
> +
> + # All directories variables must be full path names
> + check_full_path $PREFIX PREFIX
> + check_full_path $EPREFIX EPREFIX
> + check_full_path $BINDIR BINDIR
> + check_full_path $DATAROOTDIR DATAROOTDIR
> + check_full_path $DATADIR DATADIR
> + check_full_path $LIBDIR LIBDIR
> + check_full_path $LOCALSTATEDIR LOCALSTATEDIR
> +
> + # This will catch the case where user forgets to set PREFIX
> + # and does not have write permission in the /usr/local default location
> + check_writable_dir ${DESTDIR}${PREFIX} PREFIX
> +
> + # Must create local aclocal dir or aclocal fails
> + ACLOCAL_LOCALDIR="${DESTDIR}${DATADIR}/aclocal"
> + $SUDO mkdir -p ${ACLOCAL_LOCALDIR}
> +
> + # The following is required to make aclocal find our .m4 macros
> + ACLOCAL=${ACLOCAL:="aclocal"}
> + ACLOCAL="${ACLOCAL} -I ${ACLOCAL_LOCALDIR}"
> + export ACLOCAL
> +
> + # The following is required to make pkg-config find our .pc metadata files
> + PKG_CONFIG_PATH=${DESTDIR}${DATADIR}/pkgconfig:${DESTDIR}${LIBDIR}/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}
> + export PKG_CONFIG_PATH
> +
> + # Set the library path so that locally built libs will be found by apps
> + LD_LIBRARY_PATH=${DESTDIR}${LIBDIR}${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
> + export LD_LIBRARY_PATH
> +
> + # Set the path so that locally built apps will be found and used
> + PATH=${DESTDIR}${BINDIR}${PATH+:$PATH}
> + export PATH
> +
> + # Choose which make program to use
> + MAKE=${MAKE:="make"}
> +
> + # Create the log file directory
> + $SUDO mkdir -p ${DESTDIR}${LOCALSTATEDIR}/log
> +}
> +
> +# explain where a failure occurred
> +# if you find this message in the build output it can help tell you where the failure occurred
> +# arguments:
> +# $1 - which command failed
> +# $2/$3 - which module/component failed
> +# returns:
> +# (irrelevant)
> +failed() {
> + cmd=$1
> + module=$2
> + component=$3
> + echo "build.sh: \"$cmd\" failed on $module/$component"
> + failed_components="$failed_components $module/$component"
> +}
> +
> +# print a pretty title to separate the processing of each module
> +# arguments:
> +# $1 - module
> +# $2 - component
> +# $3 - configuration options
> +# returns:
> +# (irrelevant)
> +module_title() {
> + module=$1
> + component=$2
> + confopts="$3"
> + # preconds
> + if [ X"$module" = X ]; then
> + return
> + fi
> +
> + echo ""
> + echo "======================================================================"
> + echo "== Processing module/component: \"$module/$component\""
> + echo "== configuration options: $CONFFLAGS $confopts"
> +}
> +
> +checkfortars() {
> + module=$1
> + component=$2
> + case $module in
> + "data")
> + case $component in
> + "cursors") component="xcursor-themes" ;;
> + "bitmaps") component="xbitmaps" ;;
> + esac
> + ;;
> + "font")
> + if [ X"$component" != X"encodings" ]; then
> + component="font-$component"
> + fi
> + ;;
> + "lib")
> + case $component in
> + "libXRes") component="libXres" ;;
> + "libxtrans") component="xtrans" ;;
> + esac
> + ;;
> + "pixman")
> + module="lib"
> + component="pixman"
> + ;;
> + "proto")
> + case $component in
> + "x11proto") component="xproto" ;;
> + esac
> + ;;
> + "util")
> + case $component in
> + "cf") component="xorg-cf-files" ;;
> + "macros") component="util-macros" ;;
> + esac
> + ;;
> + "xcb")
> + case $component in
> + "proto")
> + module="xcb/proto"
> + component="xcb-proto"
> + ;;
> + "pthread-stubs")
> + module="xcb/pthread-stubs"
> + component="libpthread-stubs"
> + ;;
> + "libxcb")
> + module="xcb/libxcb"
> + component="libxcb"
> + ;;
> + util*)
> + module="xcb/$component"
> + component="xcb-$component"
> + ;;
> + esac
> + ;;
> + "mesa")
> + case $component in
> + "drm")
> + module="mesa/drm"
> + component="libdrm"
> + ;;
> + "mesa")
> + module="mesa/mesa"
> + component="MesaLib"
> + ;;
> + esac
> + ;;
> + "xkeyboard-config")
> + component="xkeyboard-config"
> + ;;
> + "xserver")
> + component="xorg-server"
> + ;;
> + esac
> + for ii in $module .; do
> + for jj in bz2 gz; do
> + TARFILE=`ls -1rt $ii/$component-*.tar.$jj 2> /dev/null | tail -n 1`
> + if [ X"$TARFILE" != X ]; then
> + SRCDIR=`echo $TARFILE | sed "s,.tar.$jj,,"`
> + SRCDIR=`echo $SRCDIR | sed "s,MesaLib,Mesa,"`
> + if [ ! -d $SRCDIR ]; then
> + TAROPTS=xjf
> + if [ X"$jj" = X"gz" ]; then
> + TAROPTS=xzf
> + fi
> + tar $TAROPTS $TARFILE -C $ii
> + if [ $? -ne 0 ]; then
> + failed tar $module $component
> + return 1
> + fi
> + fi
> + return 0
> + fi
> + done
> + done
> +
> + return 0
> +}
> +
> +# perform a clone of a git repository
> +# this function provides the mapping between module/component names
> +# and their location in the fd.o repository
> +# arguments:
> +# $1 - module
> +# $2 - component (optional)
> +# returns:
> +# 0 - good
> +# 1 - bad
> +clone() {
> + module=$1
> + component=$2
> + # preconds
> + if [ X"$module" = X ]; then
> + echo "clone() required first argument is missing"
> + return 1
> + fi
> +
> + case $module in
> + "pixman")
> + BASEDIR=""
> + ;;
> + "xcb")
> + BASEDIR=""
> + ;;
> + "mesa")
> + BASEDIR=""
> + ;;
> + "xkeyboard-config")
> + BASEDIR=""
> + ;;
> + *)
> + BASEDIR="xorg/"
> + ;;
> + esac
> +
> + DIR="$module/$component"
> + GITROOT=${GITROOT:="git://anongit.freedesktop.org/git"}
> +
> + if [ ! -d "$DIR" ]; then
> + git clone "$GITROOT/$BASEDIR$DIR" "$DIR"
> + if [ $? -ne 0 ]; then
> + echo "Failed to clone $module module component $component. Ignoring."
> + clonefailed_components="$clonefailed_components $module/$component"
> + return 1
> + fi
> + old_pwd=`pwd`
> + cd $DIR
> + if [ $? -ne 0 ]; then
> + echo "Failed to cd to $module module component $component. Ignoring."
> + clonefailed_components="$clonefailed_components $module/$component"
> + return 1
> + return 1
> + fi
> + git submodule init
> + if [ $? -ne 0 ]; then
> + echo "Failed to initialize $module module component $component submodule. Ignoring."
> + clonefailed_components="$clonefailed_components $module/$component"
> + return 1
> + fi
> + git submodule update
> + if [ $? -ne 0 ]; then
> + echo "Failed to update $module module component $component submodule. Ignoring."
> + clonefailed_components="$clonefailed_components $module/$component"
> + return 1
> + fi
> + cd ${old_pwd}
> + else
> + echo "git cannot clone into an existing directory $module/$component"
> + return 1
> + fi
> +
> + return 0
> +}
> +
> +# perform processing of each module/component
> +# arguments:
> +# $1 - module
> +# $2 - component
> +# $3 - configure options
> +# returns:
> +# 0 - good
> +# 1 - bad
> +process() {
> + needs_config=0
> +
> + module=$1
> + component=$2
> + confopts="$3"
> + # preconds
> + if [ X"$module" = X ]; then
> + echo "process() required first argument is missing"
> + return 1
> + fi
> +
> + module_title $module "$component" "$confopts"
> +
> + SRCDIR=""
> + CONFCMD=""
> + if [ -f $module/$component/autogen.sh ]; then
> + SRCDIR="$module/$component"
> + CONFCMD="autogen.sh"
> + elif [ X"$CLONE" != X ]; then
> + clone $module $component
> + if [ $? -eq 0 ]; then
> + SRCDIR="$module/$component"
> + CONFCMD="autogen.sh"
> + fi
> + needs_config=1
> + else
> + checkfortars $module $component
> + CONFCMD="configure"
> + fi
> +
> + if [ X"$SRCDIR" = X ]; then
> + echo "$module module component $component does not exist, skipping."
> + nonexistent_components="$nonexistent_components $module/$component"
> + return 0
> + fi
> +
> + if [ X"$BUILT_MODULES_FILE" != X ]; then
> + echo "$module/$component" >> $BUILT_MODULES_FILE
> + fi
> +
> + old_pwd=`pwd`
> + cd $SRCDIR
> + if [ $? -ne 0 ]; then
> + failed cd1 $module $component
> + return 1
> + fi
> +
> + if [ X"$GITCMD" != X ]; then
> + $GITCMD
> + rtn=$?
> + cd $old_pwd
> +
> + if [ $rtn -ne 0 ]; then
> + failed "$GITCMD" $module $component
> + return 1
> + fi
> + return 0
> + fi
> +
> + if [ X"$PULL" != X ]; then
> + git pull --rebase
> + if [ $? -ne 0 ]; then
> + failed "git pull" $module $component
> + cd $old_pwd
> + return 1
> + fi
> + # The parent module knows which commit the submodule should be at
> + git submodule update
> + if [ $? -ne 0 ]; then
> + failed "git submodule update" $module $component
> + return 1
> + fi
> + fi
> +
> + # Build outside source directory
> + if [ X"$DIR_ARCH" != X ] ; then
> + mkdir -p "$DIR_ARCH"
> + if [ $? -ne 0 ]; then
> + failed mkdir $module $component
> + cd $old_pwd
> + return 1
> + fi
> + cd "$DIR_ARCH"
> + if [ $? -ne 0 ]; then
> + failed cd2 $module $component
> + cd ${old_pwd}
> + return 1
> + fi
> + fi
> +
> + # Use "sh autogen.sh" since some scripts are not executable in CVS
> + if [ $needs_config -eq 1 ] || [ X"$NOAUTOGEN" = X ]; then
> + sh ${DIR_CONFIG}/${CONFCMD} \
> + ${PREFIX_USER:+--prefix="$PREFIX"} \
> + ${EPREFIX_USER:+--exec-prefix="$EPREFIX"} \
> + ${BINDIR_USER:+--bindir="$BINDIR"} \
> + ${DATAROOTDIR_USER:+--datarootdir="$DATAROOTDIR"} \
> + ${DATADIR_USER:+--datadir="$DATADIR"} \
> + ${LIBDIR_USER:+--libdir="$LIBDIR"} \
> + ${LOCALSTATEDIR_USER:+--localstatedir="$LOCALSTATEDIR"} \
> + ${QUIET:+--quiet} \
> + ${CONFFLAGS} $confopts \
> + ${CC:+CC="$CC"} \
> + ${CPP:+CPP="$CPP"} \
> + ${CPPFLAGS:+CPPFLAGS="$CPPFLAGS"} \
> + ${CFLAGS:+CFLAGS="$CFLAGS"} \
> + ${LDFLAGS:+LDFLAGS="$LDFLAGS"}
> + if [ $? -ne 0 ]; then
> + failed ${CONFCMD} $module $component
> + cd $old_pwd
> + return 1
> + fi
> + fi
> +
> + # A custom 'make' target list was supplied through --cmd option
> + if [ X"$MAKECMD" != X ]; then
> + ${MAKE} $MAKEFLAGS $MAKECMD
> + rtn=$?
> + cd $old_pwd
> +
> + if [ $rtn -ne 0 ]; then
> + failed "$MAKE $MAKEFLAGS $MAKECMD" $module $component
> + return 1
> + fi
> + return 0
> + fi
> +
> + ${MAKE} $MAKEFLAGS
> + if [ $? -ne 0 ]; then
> + # Rerun with Automake silent rules disabled to see failing gcc statement
> + if [ X"$RETRY_VERBOSE" != X ]; then
> + echo ""
> + echo "build.sh: Rebuilding $component with Automake silent rules disabled"
> + ${MAKE} $MAKEFLAGS V=1
> + fi
> + failed "$MAKE $MAKEFLAGS" $module $component
> + cd $old_pwd
> + return 1
> + fi
> +
> + if [ X"$CHECK" != X ]; then
> + ${MAKE} $MAKEFLAGS check
> + if [ $? -ne 0 ]; then
> + failed "$MAKE $MAKEFLAGS check" $module $component
> + cd $old_pwd
> + return 1
> + fi
> + fi
> +
> + if [ X"$CLEAN" != X ]; then
> + ${MAKE} $MAKEFLAGS clean
> + if [ $? -ne 0 ]; then
> + failed "$MAKE $MAKEFLAGS clean" $module $component
> + cd $old_pwd
> + return 1
> + fi
> + fi
> +
> + if [ X"$DIST" != X ]; then
> + ${MAKE} $MAKEFLAGS dist
> + if [ $? -ne 0 ]; then
> + failed "$MAKE $MAKEFLAGS dist" $module $component
> + cd $old_pwd
> + return 1
> + fi
> + fi
> +
> + if [ X"$DISTCHECK" != X ]; then
> + ${MAKE} $MAKEFLAGS distcheck
> + if [ $? -ne 0 ]; then
> + failed "$MAKE $MAKEFLAGS distcheck" $module $component
> + cd $old_pwd
> + return 1
> + fi
> + fi
> +
> + $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ${MAKE} $MAKEFLAGS install
> + if [ $? -ne 0 ]; then
> + failed "$SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH $MAKE $MAKEFLAGS install" $module $component
> + cd $old_pwd
> + return 1
> + fi
> +
> + cd ${old_pwd}
> + return 0
> +}
> +
> +# process each module/component and handle:
> +# LISTONLY, RESUME, NOQUIT, and BUILD_ONE
> +# arguments:
> +# $1 - module
> +# $2 - component
> +# $3 - configure options
> +# returns:
> +# 0 - good
> +# 1 - bad
> +build() {
> + module=$1
> + component=$2
> + confopts="$3"
> + if [ X"$LISTONLY" != X ]; then
> + echo "$module/$component"
> + return 0
> + fi
> +
> + if [ X"$RESUME" != X ]; then
> + if [ X"$RESUME" = X"$module/$component" ]; then
> + unset RESUME
> + # Resume build at this module
> + else
> + echo "Skipping $module module component $component..."
> + return 0
> + fi
> + fi
> +
> + process $module "$component" "$confopts"
> + if [ $? -ne 0 ]; then
> + echo "build.sh: error processing module/component: \"$module/$component\""
> + if [ X"$NOQUIT" = X ]; then
> + exit 1
> + fi
> + fi
> +
> + if [ X"$BUILD_ONE" != X ]; then
> + echo "Single-component build complete"
> + exit 0
> + fi
> +}
> +
> +# protocol headers have no build order dependencies
> +build_proto() {
> + case $HOST_OS in
> + Darwin)
> + build proto applewmproto
> + ;;
> + CYGWIN*)
> + build proto windowswmproto
> + ;;
> + esac
> + build proto bigreqsproto
> + build proto compositeproto
> + build proto damageproto
> + build proto dmxproto
> + build proto dri2proto
> + build proto fixesproto
> + build proto fontsproto
> + build proto glproto
> + build proto inputproto
> + build proto kbproto
> + build proto randrproto
> + build proto recordproto
> + build proto renderproto
> + build proto resourceproto
> + build proto scrnsaverproto
> + build proto videoproto
> + build proto x11proto
> + build proto xcmiscproto
> + build proto xextproto
> + build proto xf86bigfontproto
> + build proto xf86dgaproto
> + build proto xf86driproto
> + build proto xf86vidmodeproto
> + build proto xineramaproto
> + build xcb proto
> +}
> +
> +# bitmaps is needed for building apps, so has to be done separately first
> +# cursors depends on apps/xcursorgen
> +# xkbdata is obsolete - use xkbdesc from xkeyboard-config instead
> +build_data() {
> +# build data bitmaps
> + build data cursors
> +}
> +
> +# All protocol modules must be installed before the libs (okay, that's an
> +# overstatement, but all protocol modules should be installed anyway)
> +#
> +# the libraries have a dependency order:
> +# xtrans, Xau, Xdmcp before anything else
> +# fontenc before Xfont
> +# ICE before SM
> +# X11 before Xext
> +# (X11 and SM) before Xt
> +# Xt before Xmu and Xpm
> +# Xext before any other extension library
> +# Xfixes before Xcomposite
> +# Xp before XprintUtil before XprintAppUtil
> +#
> +build_lib() {
> + build lib libxtrans
> + build lib libXau
> + build lib libXdmcp
> + build xcb pthread-stubs
> + build xcb libxcb
> + build xcb util
> + build xcb util-image
> + build xcb util-keysyms
> + build xcb util-renderutil
> + build xcb util-wm
> + build lib libX11
> + build lib libXext
> + case $HOST_OS in
> + Darwin)
> + build lib libAppleWM
> + ;;
> + CYGWIN*)
> + build lib libWindowsWM
> + ;;
> + esac
> + build lib libdmx
> + build lib libfontenc
> + build lib libFS
> + build lib libICE
> + build lib libSM
> + build lib libXt
> + build lib libXmu
> + build lib libXpm
> + build lib libXaw
> + build lib libXfixes
> + build lib libXcomposite
> + build lib libXrender
> + build lib libXdamage
> + build lib libXcursor
> + build lib libXfont
> + build lib libXft
> + build lib libXi
> + build lib libXinerama
> + build lib libxkbfile
> + build lib libXrandr
> + build lib libXRes
> + build lib libXScrnSaver
> + build lib libXtst
> + build lib libXv
> + build lib libXvMC
> + build lib libXxf86dga
> + build lib libXxf86vm
> + build lib libpciaccess
> + build pixman ""
> +}
> +
> +# Most apps depend at least on libX11.
> +#
> +# bdftopcf depends on libXfont
> +# mkfontscale depends on libfontenc and libfreetype
> +# mkfontdir depends on mkfontscale
> +#
> +# TODO: detailed breakdown of which apps require which libs
> +build_app() {
> + build app appres
> + build app bdftopcf
> + build app beforelight
> + build app bitmap
> + build app editres
> + build app fonttosfnt
> + build app fslsfonts
> + build app fstobdf
> + build app iceauth
> + build app ico
> + build app listres
> + build app luit
> + build app mkcomposecache
> + build app mkfontdir
> + build app mkfontscale
> + build app oclock
> + build app rgb
> + build app rendercheck
> + build app rstart
> + build app scripts
> + build app sessreg
> + build app setxkbmap
> + build app showfont
> + build app smproxy
> + build app twm
> + build app viewres
> + build app x11perf
> + build app xauth
> + build app xbacklight
> + build app xbiff
> + build app xcalc
> + build app xclipboard
> + build app xclock
> + build app xcmsdb
> + build app xconsole
> + build app xcursorgen
> + build app xdbedizzy
> + build app xditview
> + build app xdm
> + build app xdpyinfo
> + build app xdriinfo
> + build app xedit
> + build app xev
> + build app xeyes
> + build app xf86dga
> + build app xfd
> + build app xfontsel
> + build app xfs
> + build app xfsinfo
> + build app xgamma
> + build app xgc
> + build app xhost
> + build app xinit
> + build app xinput
> + build app xkbcomp
> + build app xkbevd
> + build app xkbprint
> + build app xkbutils
> + build app xkill
> + build app xload
> + build app xlogo
> + build app xlsatoms
> + build app xlsclients
> + build app xlsfonts
> + build app xmag
> + build app xman
> + build app xmessage
> + build app xmh
> + build app xmodmap
> + build app xmore
> + build app xprop
> + build app xrandr
> + build app xrdb
> + build app xrefresh
> + build app xscope
> + build app xset
> + build app xsetmode
> + build app xsetroot
> + build app xsm
> + build app xstdcmap
> + build app xvidtune
> + build app xvinfo
> + build app xwd
> + build app xwininfo
> + build app xwud
> +}
> +
> +build_mesa() {
> + build mesa drm
> + build mesa mesa
> +}
> +
> +# The server requires at least the following libraries:
> +# Xfont, Xau, Xdmcp, pciaccess
> +build_xserver() {
> + build xserver ""
> +}
> +
> +build_driver_input() {
> + # Some drivers are only buildable on some OS'es
> + case $HOST_OS in
> + Linux)
> + build driver xf86-input-evdev
> + build driver xf86-input-joystick
> + ;;
> + FreeBSD | NetBSD | OpenBSD | Dragonfly | GNU/kFreeBSD)
> + build driver xf86-input-joystick
> + ;;
> + esac
> +
> + # And some drivers are only buildable on some CPUs.
> + case $HOST_CPU in
> + i*86 | amd64 | x86_64)
> + build driver xf86-input-vmmouse
> + ;;
> + esac
> +
> + build driver xf86-input-keyboard
> + build driver xf86-input-mouse
> + build driver xf86-input-synaptics
> + build driver xf86-input-void
> +}
> +
> +build_driver_video() {
> + # Some drivers are only buildable on some OS'es
> + case $HOST_OS in
> + FreeBSD)
> + case $HOST_CPU in
> + sparc64)
> + build driver xf86-video-sunffb
> + ;;
> + esac
> + ;;
> + NetBSD | OpenBSD)
> + build driver xf86-video-wsfb
> + build driver xf86-video-sunffb
> + ;;
> + Linux)
> + build driver xf86-video-sisusb
> + build driver xf86-video-sunffb
> + build driver xf86-video-v4l
> + build driver xf86-video-xgixp
> + case $HOST_CPU in
> + i*86)
> + # AMD Geode CPU. Driver contains 32 bit assembler code
> + build driver xf86-video-geode
> + ;;
> + esac
> + ;;
> + esac
> +
> + # Some drivers are only buildable on some architectures
> + case $HOST_CPU in
> + sparc | sparc64)
> + build driver xf86-video-suncg14
> + build driver xf86-video-suncg3
> + build driver xf86-video-suncg6
> + build driver xf86-video-sunleo
> + build driver xf86-video-suntcx
> + ;;
> + i*86 | amd64 | x86_64)
> + build driver xf86-video-i740
> + build driver xf86-video-intel
> + ;;
> + esac
> +
> + build driver xf86-video-apm
> + build driver xf86-video-ark
> + build driver xf86-video-ast
> + build driver xf86-video-ati
> + build driver xf86-video-chips
> + build driver xf86-video-cirrus
> + build driver xf86-video-dummy
> + build driver xf86-video-fbdev
> +# build driver xf86-video-glide
> + build driver xf86-video-glint
> + build driver xf86-video-i128
> + build driver xf86-video-mach64
> + build driver xf86-video-mga
> + build driver xf86-video-neomagic
> + build driver xf86-video-newport
> + build driver xf86-video-nv
> + build driver xf86-video-rendition
> + build driver xf86-video-r128
> + build driver xf86-video-s3
> + build driver xf86-video-s3virge
> + build driver xf86-video-savage
> + build driver xf86-video-siliconmotion
> + build driver xf86-video-sis
> + build driver xf86-video-tdfx
> + build driver xf86-video-tga
> + build driver xf86-video-trident
> + build driver xf86-video-tseng
> + build driver xf86-video-vesa
> + build driver xf86-video-vmware
> + build driver xf86-video-voodoo
> + build driver xf86-video-xgi
> +}
> +
> +# The server must be built before the drivers
> +build_driver() {
> + # XQuartz doesn't need these...
> + case $HOST_OS in
> + Darwin) return 0 ;;
> + esac
> +
> + build_driver_input
> + build_driver_video
> +}
> +
> +# All fonts require mkfontscale and mkfontdir to be available
> +#
> +# The following fonts require bdftopcf to be available:
> +# adobe-100dpi, adobe-75dpi, adobe-utopia-100dpi, adobe-utopia-75dpi,
> +# arabic-misc, bh-100dpi, bh-75dpi, bh-lucidatypewriter-100dpi,
> +# bh-lucidatypewriter-75dpi, bitstream-100dpi, bitstream-75dpi,
> +# cronyx-cyrillic, cursor-misc, daewoo-misc, dec-misc, isas-misc,
> +# jis-misc, micro-misc, misc-cyrillic, misc-misc, mutt-misc,
> +# schumacher-misc, screen-cyrillic, sony-misc, sun-misc and
> +# winitzki-cyrillic
> +#
> +# The font util component must be built before any of the fonts, since they
> +# use the fontutil.m4 installed by it. (As do several other modules, such
> +# as libfontenc and app/xfs, which is why it is moved up to the top.)
> +#
> +# The alias component is recommended to be installed after the other fonts
> +# since the fonts.alias files reference specific fonts installed from the
> +# other font components
> +build_font() {
> + build font encodings
> + build font adobe-100dpi
> + build font adobe-75dpi
> + build font adobe-utopia-100dpi
> + build font adobe-utopia-75dpi
> + build font adobe-utopia-type1
> + build font arabic-misc
> + build font bh-100dpi
> + build font bh-75dpi
> + build font bh-lucidatypewriter-100dpi
> + build font bh-lucidatypewriter-75dpi
> + build font bh-ttf
> + build font bh-type1
> + build font bitstream-100dpi
> + build font bitstream-75dpi
> + build font bitstream-speedo
> + build font bitstream-type1
> + build font cronyx-cyrillic
> + build font cursor-misc
> + build font daewoo-misc
> + build font dec-misc
> + build font ibm-type1
> + build font isas-misc
> + build font jis-misc
> + build font micro-misc
> + build font misc-cyrillic
> + build font misc-ethiopic
> + build font misc-meltho
> + build font misc-misc
> + build font mutt-misc
> + build font schumacher-misc
> + build font screen-cyrillic
> + build font sony-misc
> + build font sun-misc
> + build font winitzki-cyrillic
> + build font xfree86-type1
> + build font alias
> +}
> +
> +# makedepend requires xproto
> +build_util() {
> + build util cf
> + build util imake
> + build util gccmakedep
> + build util lndir
> +
> + build xkeyboard-config ""
> +}
> +
> +# xorg-docs requires xorg-sgml-doctools
> +build_doc() {
> + build doc xorg-sgml-doctools
> + build doc xorg-docs
> +}
> +
> +# just process the sub-projects supplied in the given file ($MODFILE)
> +# in the order in which they are found in the list
> +# (prerequisites and ordering are the responsibility of the user)
> +# globals used:
> +# $MODFILE - readable file containing list of modules to process
> +# and their optional configuration options
> +# arguments:
> +# (none)
> +# returns:
> +# 0 - good
> +# 1 - bad
> +process_module_file() {
> + # preconds
> + if [ X"$MODFILE" = X ]; then
> + echo "internal process_module_file() error, \$MODFILE is empty"
> + return 1
> + fi
> + if [ ! -r "$MODFILE" ]; then
> + echo "module file '$MODFILE' is not readable or does not exist"
> + return 1
> + fi
> +
> + # read from input file, skipping blank and comment lines
> + while read line; do
> + # skip blank lines
> + if [ X"$line" = X ]; then
> + continue
> + fi
> +
> + # skip comment lines
> + echo "$line" | grep "^#" > /dev/null
> + if [ $? -eq 0 ]; then
> + continue
> + fi
> +
> + module=`echo $line | cut -d' ' -f1 | cut -d'/' -f1`
> + component=`echo $line | cut -d' ' -f1 | cut -d'/' -f2`
> + confopts_check=`echo $line | cut -d' ' -f2-`
> + if [ "$module/$component" = "$confopts_check" ]; then
> + confopts=""
> + else
> + confopts="$confopts_check"
> + fi
> + build $module "$component" "$confopts"
> + done <"$MODFILE"
> +
> + return 0
> +}
> +
> +usage() {
> + basename="`expr "//$0" : '.*/\([^/]*\)'`"
> + echo "Usage: $basename [options] [prefix]"
> + echo "Options:"
> + echo " -a Do NOT run auto config tools (autogen.sh, configure)"
> + echo " -b Use .build.unknown build directory"
> + echo " -c Run make clean in addition to \"all install\""
> + echo " -D Run make dist in addition to \"all install\""
> + echo " -d Run make distcheck in addition \"all install\""
> + echo " -g Compile and link with debug information"
> + echo " -h, --help Display this help and exit successfully"
> + echo " -n Do not quit after error; just print error message"
> + echo " -o <module/component> Build just this <module/component>"
> + echo " -p Update source code before building (git pull --rebase)"
> + echo " -s <sudo> The command name providing superuser privilege"
> + echo " --autoresume <file> Append module being built to, and autoresume from, <file>"
> + echo " --check Run make check in addition \"all install\""
> + echo " --clone Clone non-existing repositories (uses \$GITROOT if set)"
> + echo " --cmd <cmd> Execute arbitrary git, gmake, or make command <cmd>"
> + echo " --confflags <options> Pass <options> to autgen.sh/configure of all modules"
> + echo " --modfile <file> Only process the module/components specified in <file>"
> + echo " Any text after, and on the same line as, the module/component"
> + echo " is assumed to be configuration options for the configuration"
> + echo " of each module/component specifically"
> + echo " --retry-v1 Remake 'all' on failure with Automake silent rules disabled"
> + echo ""
> + echo "Usage: $basename -L"
> + echo " -L : just list modules to build"
> + echo ""
> + envoptions
> +}
> +
> +# Ensure the named variable value contains a full path name
> +# arguments:
> +# $1 - the variable value (the path to examine)
> +# $2 - the name of the variable
> +# returns:
> +# returns nothing or exit on error with message
> +check_full_path () {
> + path=$1
> + varname=$2
> + if [ X"`expr $path : "\(.\)"`" != X/ ]; then
> + echo "The path \"$path\" supplied by \"$varname\" must be a full path name"
> + echo ""
> + usage
> + exit 1
> + fi
> +}
> +
> +# Ensure the named variable value contains a writable directory
> +# arguments:
> +# $1 - the variable value (the path to examine)
> +# $2 - the name of the variable
> +# returns:
> +# returns nothing or exit on error with message
> +check_writable_dir () {
> + path=$1
> + varname=$2
> + if [ X"$SUDO" = X ]; then
> + if [ ! -d "$path" ] || [ ! -w "$path" ]; then
> + echo "The path \"$path\" supplied by \"$varname\" must be a writable directory"
> + echo ""
> + usage
> + exit 1
> + fi
> + fi
> +}
> +
> +# perform sanity checks on cmdline args which require arguments
> +# arguments:
> +# $1 - the option being examined
> +# $2 - the argument to the option
> +# returns:
> +# if it returns, everything is good
> +# otherwise it exit's
> +required_arg() {
> + option=$1
> + arg=$2
> + # preconds
> + if [ X"$option" = X ]; then
> + echo "internal required_arg() error, missing first argument"
> + exit 1
> + fi
> +
> + # check for an argument
> + if [ X"$arg" = X ]; then
> + echo "the '$option' option is missing its required argument"
> + echo ""
> + usage
> + exit 1
> + fi
> +
> + # does the argument look like an option?
> + echo $arg | grep "^-" > /dev/null
> + if [ $? -eq 0 ]; then
> + echo "the argument '$arg' of option '$option' looks like an option itself"
> + echo ""
> + usage
> + exit 1
> + fi
> +}
> +
> +#------------------------------------------------------------------------------
> +# Script main line
> +#------------------------------------------------------------------------------
> +
> +# Initialize variables controlling end of run reports
> +failed_components=""
> +nonexistent_components=""
> +clonefailed_components=""
> +
> +# Set variables supporting multiple binaries for a single source tree
> +HAVE_ARCH="`uname -i`"
> +DIR_ARCH=""
> +DIR_CONFIG="."
> +
> +# Set variables for conditionally building some components
> +HOST_OS=`uname -s`
> +export HOST_OS
> +HOST_CPU=`uname -m`
> +export HOST_CPU
> +
> +# Process command line args
> +while [ $# != 0 ]
> +do
> + case $1 in
> + -a)
> + NOAUTOGEN=1
> + ;;
> + -b)
> + DIR_ARCH=".build.$HAVE_ARCH"
> + DIR_CONFIG=".."
> + ;;
> + -c)
> + CLEAN=1
> + ;;
> + -D)
> + DIST=1
> + ;;
> + -d)
> + DISTCHECK=1
> + ;;
> + -g)
> + CFLAGS="${CFLAGS} -g3 -O0"
> + ;;
> + -h|--help)
> + usage
> + exit 0
> + ;;
> + -L)
> + LISTONLY=1
> + ;;
> + -n)
> + NOQUIT=1
> + ;;
> + -o)
> + required_arg $1 $2
> + shift
> + RESUME=$1
> + BUILD_ONE=1
> + ;;
> + -p)
> + PULL=1
> + ;;
> + -s)
> + required_arg $1 $2
> + shift
> + SUDO=$1
> + ;;
> + --autoresume)
> + required_arg $1 $2
> + shift
> + BUILT_MODULES_FILE=$1
> + [ -f $1 ] && RESUME=`tail -n 1 $1`
> + ;;
> + --check)
> + CHECK=1
> + ;;
> + --clone)
> + CLONE=1
> + ;;
> + --cmd)
> + required_arg $1 $2
> + shift
> + cmd1=`echo $1 | cut -d' ' -f1`
> + cmd2=`echo $1 | cut -d' ' -f2`
> +
> + # verify the command exists
> + which $cmd1 > /dev/null 2>&1
> + if [ $? -ne 0 ]; then
> + echo "The specified command '$cmd1' does not appear to exist"
> + echo ""
> + usage
> + exit 1
> + fi
> +
> + case X"$cmd1" in
> + X"git")
> + GITCMD=$1
> + ;;
> + X"make" | X"gmake")
> + MAKECMD=$cmd2
> + ;;
> + *)
> + echo "The script can only process 'make', 'gmake', or 'git' commands"
> + echo "It can't process '$cmd1' commands"
> + echo ""
> + usage
> + exit 1
> + ;;
> + esac
> + ;;
> + --confflags)
> + shift
> + CONFFLAGS=$1
> + ;;
> + --modfile)
> + required_arg $1 $2
> + shift
> + if [ ! -r "$1" ]; then
> + echo "can't find/read file '$1'"
> + exit 1
> + fi
> + MODFILE=$1
> + ;;
> + --retry-v1)
> + RETRY_VERBOSE=1
> + ;;
> + *)
> + if [ X"$too_many" = Xyes ]; then
> + echo "unrecognized and/or too many command-line arguments"
> + echo " PREFIX: $PREFIX"
> + echo " Extra arguments: $1"
> + echo ""
> + usage
> + exit 1
> + fi
> +
> + # check that 'prefix' doesn't look like an option
> + echo $1 | grep "^-" > /dev/null
> + if [ $? -eq 0 ]; then
> + echo "'prefix' appears to be an option"
> + echo ""
> + usage
> + exit 1
> + fi
> +
> + PREFIX=$1
> + too_many=yes
> + ;;
> + esac
> +
> + shift
> +done
> +
> +# All user input has been obtained, set-up the user shell variables
> +if [ X"$LISTONLY" = X ]; then
> + setup_buildenv
> + echo "Building to run $HOST_OS / $HOST_CPU ($HOST)"
> + date
> +fi
> +
> +if [ X"$MODFILE" = X ]; then
> + # We must install the global macros before anything else
> + build util macros
> + build font util
> +
> + build_doc
> + build_proto
> + # Required by mesa and depends on xproto
> + build util makedepend
> + build_lib
> + build_mesa
> +
> + build data bitmaps
> + build_app
> + build_xserver
> + build_driver
> + build_data
> + build_font
> + build_util
> +else
> + process_module_file
> +fi
> +
> +if [ X"$LISTONLY" != X ]; then
> + exit 0
> +fi
> +
> +# Print the end date/time to compare with the start date/time
> +date
> +
> +# Report about components that failed for one reason or another
> +if [ X"$nonexistent_components" != X ]; then
> + echo ""
> + echo "***** Skipped components (not available) *****"
> + echo "Could neither find a git repository (at the <module/component> paths)"
> + echo "or a tarball (at the <module/> paths or ./) for:"
> + echo " <module/component>"
> + for mod in $nonexistent_components; do
> + echo " $mod"
> + done
> + echo "You may want to provide the --clone option to build.sh"
> + echo "to automatically git-clone the missing components"
> + echo ""
> +fi
> +
> +if [ X"$failed_components" != X ]; then
> + echo ""
> + echo "***** Failed components *****"
> + for mod in $failed_components; do
> + echo " $mod"
> + done
> + echo ""
> +fi
> +
> +if [ X"$CLONE" != X ] && [ X"$clonefailed_components" != X ]; then
> + echo ""
> + echo "***** Components failed to clone *****"
> + for mod in $clonefailed_components; do
> + echo " $mod"
> + done
> + echo ""
> +fi
> +
More information about the xorg-devel
mailing list