slackbuilds_ponce/network/mumble/mumble.SlackBuild
James Geboski 8aef445b4f network/mumble: various build fixes and enhancements
- Fixed $SLKCFLAGS not being directly passed to qmake
- Included 'mumble-overly' script; this allows for the use of the
  mumble overlay
- Added COMPAT32 option for libmumble (preloaded overlay library)

The COMPAT32 option does build a 32-bit libmumble via the -m32
CFLAG, and I'm fairly certain this is taboo for SBo.  Obviously,
-m32 requires a multilibbed system, and not all x86_64 systems
have this setup. On x86_64 systems, mumble-overly will look for
a 32-bit libmumble to use, and it helps keep compatibility. Many
of the people using this are somewhat of "gamers", and use it on
games that are not native to the system (non-free and 32-bit only,
wine, etc).

Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
2012-08-13 07:51:40 -05:00

216 lines
6 KiB
Bash

#!/bin/sh
# Slackware build script for Mumble
# Copyright 2011-2012 James Geboski <jgeboski@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS 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 AUTHOR 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.
PRGNAM=mumble
VERSION=${VERSION:-1.2.3}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
G15=${G15:-no}
OVERLAY=${OVERLAY:-no}
COMPAT32=${COMPAT32:-no}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
BUILD_G15=""
BUILD_OVERLAY=""
if [ "$G15" = "no" ]; then
BUILD_G15="CONFIG+=no-g15"
fi
if [ "$OVERLAY" = "no" ]; then
BUILD_OVERLAY="CONFIG+=no-overlay"
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
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 {} \;
# As of celt-0.11.0, the macro CELT_SET_VBR_RATE has been renamed to
# CELT_SET_BITRATE. Please make sure you have at least celt-0.11.0,
# if not comment the line below out.
patch -p1 < $CWD/patches/AudioInput-fix-for-celt-0.11.0.patch
# On GTK+ based envrionments (Ex: XFCE) the MainWindow's icon needed
# to be directly set.
patch -p1 < $CWD/patches/MainWindow-set-the-window-icon.patch
# The system's celt-0.11.0 is used, however, celt-0.7.0 is needed
# to keep compatibility with other Mumble clients.
cd celt-0.7.0-build
qmake \
QMAKE_CFLAGS+="$SLKCFLAGS" \
QMAKE_CXXFLAGS+="$SLKCFLAGS" \
-recursive \
celt-0.7.0-build.pro
make release
cd -
qmake \
-recursive \
main.pro \
QMAKE_CFLAGS+="$SLKCFLAGS" \
QMAKE_CXXFLAGS+="$SLKCFLAGS" \
DEFINES*="PLUGIN_PATH=/usr/lib${LIBDIRSUFFIX}/mumble" \
CONFIG+=no-server \
CONFIG+=no-bundled-celt \
CONFIG+=no-bundled-speex \
CONFIG+=no-pulseaudio \
CONFIG+=no-speechd \
CONFIG+=no-update \
CONFIG+=no-embed-qt-translations \
CONFIG+=no-ice \
CONFIG+=no-bonjour \
$BUILD_G15 \
$BUILD_OVERLAY
make release
mkdir -p \
$PKG/usr/bin \
$PKG/usr/lib${LIBDIRSUFFIX}/mumble \
$PKG/usr/man/man1 \
$PKG/usr/share/{applications,pixmaps}
install -m 755 \
release/mumble \
release/mumble11x \
$PKG/usr/bin
install -m 775 \
release/libcelt0.so.0.7.0 \
$PKG/usr/lib${LIBDIRSUFFIX}/mumble
cd $PKG/usr/lib${LIBDIRSUFFIX}/mumble
ln -sf libcelt0.so.0.7.0 libcelt0.so.0.7
ln -sf libcelt0.so.0.7.0 libcelt0.so.0
ln -sf libcelt0.so.0.7.0 libcelt0.so
cd -
install -m 644 \
man/mumble-overlay.1 \
man/mumble.1 \
man/mumble11x.1 \
$PKG/usr/man/man1
install -m 644 scripts/mumble.desktop $PKG/usr/share/applications
install -m 644 icons/mumble.svg $PKG/usr/share/pixmaps
find release/plugins -type f -name *.so \
-exec install -m 755 {} $PKG/usr/lib${LIBDIRSUFFIX}/mumble \;
# If the overlay was built, let's install the library for it
if [ -e release/libmumble.so.$VERSION ]; then
install -m 755 release/libmumble.so.$VERSION $PKG/usr/lib${LIBDIRSUFFIX}
install -m 755 scripts/mumble-overlay $PKG/usr/bin
cd $PKG/usr/lib${LIBDIRSUFFIX}
ln -sf libmumble.so.$VERSION libmumble.so.1.2
ln -sf libmumble.so.$VERSION libmumble.so.1
ln -sf libmumble.so.$VERSION libmumble.so
cd -
fi
# The mumble-overly script will look for a 32-bit libmumble on non-pure x86_64
# systems. If the x86_64 based system has a multilib setup, the COMPAT32
# variable can be set to 'yes' to build a 32-bit version of libmumble.
if [ "$COMPAT32" = "yes" -a "$OVERLAY" = "yes" -a "$ARCH" = "x86_64" ]; then
cd overlay_gl
make clean
qmake \
QMAKE_CFLAGS="-m32 -O2 -march=i486 -mtune=i686" \
QMAKE_CXXFLAGS="-m32 -O2 -march=i486 -mtune=i686" \
QMAKE_LFLAGS="-m32" \
overlay_gl.pro
make release DESTDIR_ADD=-32
cd -
mkdir -p $PKG/usr/lib
install -m 755 release-32/libmumble.so.$VERSION $PKG/usr/lib
cd $PKG/usr/lib
ln -sf libmumble.so.$VERSION libmumble.so.1.2
ln -sf libmumble.so.$VERSION libmumble.so.1
ln -sf libmumble.so.$VERSION libmumble.so
cd -
fi
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
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
CHANGES LICENSE README README.Linux \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}