summaryrefslogblamecommitdiffstats
path: root/deps/xorg-server/xorg-server.SlackBuild
blob: 1921d5a61e312f2fef1abc5b9f762187f48ea465 (plain) (tree)
1
2
         
                                                             





















                                                                               
                                                            



                                                                        
                          
                 









































































































                                                                                                                                                                                                                                                                                             
                                   































































































































                                                                                 
#!/bin/sh
# Copyright 2007-2018  Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
#   Permission to use, copy, modify, and distribute this software for
#   any purpose with or without fee is hereby granted, provided that
#   the above copyright notice and this permission notice appear in all
#   copies.
#
#   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
#   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
#   IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#   SUCH DAMAGE.
# -----------------------------------------------------------------------------

# Condensed from the modular x11.SlackBuild
#   2016, 2017, 2018 by Eric Hameleers <alien@slackware.com>
# Note: this package contains _all_ X servers.  Not just Xorg, but also:
#   Xnest, Xephyr, Xvfb, Xwayland.

PKGNAM=xorg-server
VERSION=${VERSION:-1.19.6}
BUILD=${BUILD:-2}

CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM

if [ -e $CWD/machine.conf ]; then
  . $CWD/machine.conf ]
elif [ -e /etc/slackbuild/machine.conf ]; then
  . /etc/slackbuild/machine.conf ]
else
  # Automatically determine the architecture we're building on:
  MARCH=$( uname -m )
  if [ -z "$ARCH" ]; then
    case "$MARCH" in
      i?86)    export ARCH=i486 ;;
      arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
      # Unless $ARCH is already set, use uname -m for all other archs:
      *)       export ARCH=$MARCH ;;
    esac
  fi
  # Set CFLAGS/CXXFLAGS and LIBDIRSUFFIX:
  if [ "$ARCH" = "i486" ]; then
    SLKCFLAGS="-O2 -march=i486 -mtune=i686"
    LIBDIRSUFFIX=""
  elif [ "$ARCH" = "s390" ]; then
    SLKCFLAGS="-O2"
    LIBDIRSUFFIX=""
  elif [ "$ARCH" = "x86_64" ]; then
    SLKCFLAGS="-O2 -fPIC"
    LIBDIRSUFFIX="64"
  elif [ "$ARCH" = "armv7hl" ]; then
    SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
    LIBDIRSUFFIX=""
  elif [ "$ARCH" = "arm" ]; then
    SLKCFLAGS="-O2 -march=armv5te"
    LIBDIRSUFFIX=""
  else
    SLKCFLAGS="-O2"
    LIBDIRSUFFIX=""
  fi
fi

case "$ARCH" in
    arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
    *)    TARGET=$ARCH-slackware-linux ;;
esac

rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf $PKGNAM-$VERSION
tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
cd $PKGNAM-$VERSION || exit 1

# Apply patches:
cat $CWD/patches/x11.startwithblackscreen.diff | patch -p1 --verbose || exit 1
cat $CWD/patches/xorg-server.combo.mouse.keyboard.layout.patch | patch -p1 --verbose || exit 1

# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

# Servers to build:
BUILD_SERVERS=" \
  --enable-xorg \
  --enable-dmx \
  --enable-xvfb \
  --enable-xnest \
  --enable-glamor \
  --enable-kdrive \
  --enable-xephyr \
  --enable-xfbdev \
  --enable-xwayland \
  --enable-config-udev \
  --enable-kdrive-evdev \
  --enable-kdrive-kbd \
  --enable-kdrive-mouse \
  --disable-config-hal \
  --disable-systemd-logind"

#MESA_VERSION=${MESA_VERSION:-7.5}      # unused in 1.7+

# Default font paths to be used by the X server
DEF_FONTPATH="/usr/share/fonts/local,/usr/share/fonts/TTF,/usr/share/fonts/OTF,/usr/share/fonts/Type1,/usr/share/fonts/misc,/usr/share/fonts/CID,/usr/share/fonts/75dpi/:unscaled,/usr/share/fonts/100dpi/:unscaled,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/cyrillic"

# Reconf (don't remove this plz):
autoreconf -vif

CFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --infodir=/usr/info \
  --mandir=/usr/man \
  --disable-static \
  --with-pic \
  --enable-suid-wrapper \
  --with-int10=x86emu \
  --with-default-font-path="${DEF_FONTPATH}" \
  --with-module-dir=/usr/lib${LIBDIRSUFFIX}/xorg/modules \
  --with-os-name="Slackware 15.0" \
  --with-os-vendor="Slackware Linux Project" \
  --with-xkb-path=/etc/X11/xkb \
  --with-xkb-output=/var/lib/xkb \
  $BUILD_SERVERS \
  --build=$TARGET

#  --with-dri-driver-path=/usr/lib${LIBDIRSUFFIX}/xorg/modules/dri

if [ "$ARCH" = "x86_64" ]; then
  # To prevent the error "No rule to make target `-ldl'"
  sed -i -e 's#-ldl##' hw/xfree86/Makefile
  sed -i -e 's#-lm#-lm -ldl#' hw/xfree86/Makefile
fi

# Build and install:
make || exit 1
make install DESTDIR=$PKG || exit 1

# Fix suid setting, Makefile gets the order of install and chmod wrong:
chmod u+s $PKG/usr/libexec/Xorg.wrap

# Create the configuration directories for xorg-server 1.9.x
mkdir -p $PKG/etc/X11/xorg.conf.d $PKG/usr/share/X11/xorg.conf.d

# Create a sample keyboard layout 
# Enable zapping by default
cat << EOF > $PKG/usr/share/X11/xorg.conf.d/90-keyboard-layout-evdev.conf
Section "InputClass"
	Identifier "keyboard-all"
	MatchIsKeyboard "on"
	MatchDevicePath "/dev/input/event*"
	Driver "evdev"
	Option "XkbLayout" "us"
	#Option "XkbVariant" ""
	Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

# READ THIS FOR CUSTOM KEYBOARD INFORMATION
#
#  If you want to add a custom model/layout/variant to X, you will need to COPY
#  this file to /etc/X11/xorg.conf.d/ and edit that copy.  After editing it to
#  suit, you will need to restart X.
#
#  Here's an example of the lines from above:
#
# Section "InputClass"
#	Identifier "keyboard-all"
#	MatchIsKeyboard "on"
#	MatchDevicePath "/dev/input/event*"
#	Driver "evdev"
#	Option "XkbLayout" "us"
#	Option "XkbVariant" "intl"
#	Option "XkbOptions" "compose:rwin,terminate:ctrl_alt_bksp"
# EndSection
#
#  Many desktop environments, including KDE and Xfce, have their own methods to
#  configure keyboard layouts and such if you'd like to use them.
#
#  If you prefer to use the "old" way of configuring keyboards (without input 
#  device hotplugging), then you'll need to add the following lines to the 
#  ServerFlags section of /etc/X11/xorg.conf:
#    Option   "AllowEmptyInput"     "false"
#    Option   "AutoAddDevices"      "false"
#    Option   "AutoEnableDevices"   "false"
#  Alternatively, you can break this up into separate "stubs" in the xorg.conf.d/
#  directory, but that's your call.  Assuming you elect to keep a monolithic 
#  /etc/X11/xorg.conf file, you can now edit the Keyboard section as usual.

EOF

## Nope, we will not include 91-keyboard-layout-libinput.conf in the
## xorg-server package.  It is better to put it into the xf86-input-libinput
## package so that if that driver is removed, then X.Org will fall back to
## using evdev.  Perhaps we'll revisit this arrangement when evdev is a little
## bit more obsolete.  :-)
##
#sed -e 's,Identifier "keyboard-all",Identifier "libinput keyboard catchall",g' \
#    -e 's,Driver "evdev",Driver "libinput",g' \
#    $PKG/usr/share/X11/xorg.conf.d/90-keyboard-layout-evdev.conf > \
#    $PKG/usr/share/X11/xorg.conf.d/91-keyboard-layout-libinput.conf

# Don't mess with my /var/log/ permissions:
rmdir $PKG/var/log 2>/dev/null
rmdir $PKG/var 2>/dev/null

# While I hate to have X11 take over another generic-sounding
# piece of prime filesystem real estate, this symlink will
# direct (for now) proprietary X drivers into the corrent
# location:

( cd $PKG/usr/lib${LIBDIRSUFFIX}
  rm -rf modules
  ln -sf xorg/modules .
)

# Strip binaries:
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
  grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
  ( cd $PKG/usr/man
    for manpagedir in $(find . -type d -name "man*") ; do
      ( cd $manpagedir
        for eachpage in $( find . -type l -maxdepth 1) ; do
          ln -s $( readlink $eachpage ).gz $eachpage.gz
          rm $eachpage
        done
        gzip -9 *.?
      )
    done
  )
fi

# Add documentation:
mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a \
  COPYING ChangeLog INSTALL README TODO \
  $PKG/usr/doc/$PKGNAM-$VERSION

# Add a description:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

# Create the package:
cd $PKG
/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz