summaryrefslogtreecommitdiffstats
path: root/handbrake
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2015-09-30 08:36:44 +0000
committer Eric Hameleers <alien@slackware.com>2015-09-30 08:36:44 +0000
commitc718af6323a9443621053300c2808ccf934ad3c0 (patch)
tree8e7ad2ccd3bfc33c64f0f14abdb4beefcb98925f /handbrake
parent4b35a2d5136ec03ab596979fecbf9186227b24c8 (diff)
downloadasb-c718af6323a9443621053300c2808ccf934ad3c0.tar.gz
asb-c718af6323a9443621053300c2808ccf934ad3c0.tar.xz
handbrake: attempt to compile the GTK3 support into the package as static libraries
Diffstat (limited to 'handbrake')
-rwxr-xr-xhandbrake/build/handbrake.SlackBuild304
-rwxr-xr-xhandbrake/build/handbrake_static.SlackBuild642
2 files changed, 913 insertions, 33 deletions
diff --git a/handbrake/build/handbrake.SlackBuild b/handbrake/build/handbrake.SlackBuild
index 1824d88d..25812336 100755
--- a/handbrake/build/handbrake.SlackBuild
+++ b/handbrake/build/handbrake.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
# $Id$
-# Copyright 2009, 2010, 2011, 2012, 2013, 2014 Eric Hameleers, Eindhoven, NL
+# Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 Eric Hameleers, Eindhoven, NL
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for
@@ -52,7 +52,9 @@
# 0.9.9-1: 03/jun/2013 by Eric Hameleers <alien@slackware.com>
# * New release.
# 0.10.0-1: 24/nov/2014 by Eric Hameleers <alien@slackware.com>
-# * New release.
+# * New release. Was not able to compile.
+# 0.10.1-1: 21/mar/2015 by Eric Hameleers <alien@slackware.com>
+# * New release. New attempt at compilation failed.
#
# Run 'sh handbrake.SlackBuild' to build a Slackware package.
# The package (.txz) and .txt file as well as build logs are created in /tmp .
@@ -63,15 +65,23 @@
# Set initial variables:
PRGNAM=handbrake
-VERSION=${VERSION:-0.10.0}
+VERSION=${VERSION:-0.10.1}
# Find the revision for a release tag using (example release 0.9.9):
# svn info svn://svn.handbrake.fr/HandBrake/tags/0.9.9
-RELREV=${RELREV:-"6536"}
+RELREV=${RELREV:-"6980"}
BUILD=${BUILD:-1}
TAG=${TAG:-alien}
DOCS="AUTHORS BUILD COPYING* CREDITS NEWS THANKS TRANSLATIONS"
+# Versions of the GTK stack we need to statically compile:
+ATK=2.12.0 # 2.15.1
+FFI=3.0.13
+GDKPIXBUF=2.30.8 # 2.31.2
+GLIB=2.40.2 # 2.43.0
+GTK=3.12.2 # 3.14.4
+PANGO=1.36.8
+
# Versions of the contribs most of which are compiled-in:
ASS=0.10.0-1
BLURAY="0.5.0"
@@ -89,7 +99,7 @@ THEORA=1.1.0
VORBIS="aotuv_b6.03"
VPX="v1.3.0"
X264="r2479-dd79a61"
-X265="8768-5e604833c5aa-1.4"
+X265="9329-0d30d2641875-1.5"
XML2="2.7.7"
# Where do we look for sources?
@@ -100,50 +110,94 @@ TMP=${TMP:-/tmp/build}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-SOURCE[0]="$SRCDIR/HandBrake-${VERSION}.tar.bz2"
+# We need to compile additional dependencies or else Handbrake fails to build:
+HBDEPSDIR="$TMP/tmp-$PRGNAM/hbdeps"
+mkdir -p $HBDEPSDIR/usr/{bin,doc,include,lib${LIBDIRSUFFIX},man}
+
+# Dynamic array index:
+DLI=0
+
+# Download locations of sources:
+SOURCE[$DLI]="$SRCDIR/HandBrake-${VERSION}.tar.bz2"
if [ -n "$RELREV" ]; then
# Download release tag from SVN so that we can create a "release" build,
# which shows the actual version in the about box instead of a SVN revision
# ... how twisted can you get.
- SRCURL[0]=""
+ SRCURL[$DLI]=""
else
- SRCURL[0]="http://downloads.sourceforge.net/${PRGNAM}/HandBrake-${VERSION}.tar.bz2"
+ SRCURL[$DLI]="http://downloads.sourceforge.net/${PRGNAM}/HandBrake-${VERSION}.tar.bz2"
fi
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/gtk+-$GTK.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/gnome/sources/gtk+/$(echo $GTK |cut -d. -f1,2)/gtk+-$GTK.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/glib-$GLIB.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/gnome/sources/glib/$(echo $GLIB | cut -d. -f1,2)/glib-$GLIB.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/atk-$ATK.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/GNOME/sources/atk/$(echo $ATK | cut -d. -f1,2)/atk-$ATK.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/pango-$PANGO.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/GNOME/sources/pango/$(echo $PANGO | cut -d. -f1,2)/pango-$PANGO.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/gdk-pixbuf-$GDKPIXBUF.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/$(echo $GDKPIXBUF | cut -d. -f1,2)/gdk-pixbuf-$GDKPIXBUF.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libffi-$FFI.tar.gz"
+SRCURL[$DLI]="ftp://sourceware.org/pub/libffi/libffi-$FFI.tar.gz"
+
+GTKI=$DLI
CONTRIBURL="http://download.handbrake.fr/handbrake/contrib"
-SOURCE[1]="$SRCDIR/libass-$ASS.tar.gz"
-SRCURL[1]="$CONTRIBURL/libass-$ASS.tar.gz"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libass-$ASS.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/libass-$ASS.tar.gz"
-SOURCE[2]="$SRCDIR/libbluray-$BLURAY.tar.bz2"
-SRCURL[2]="$CONTRIBURL/libbluray-$BLURAY.tar.bz2"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libbluray-$BLURAY.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/libbluray-$BLURAY.tar.bz2"
-SOURCE[3]="$SRCDIR/fdk-aac-$FDKAAC.tar.bz2"
-SRCURL[3]="$CONTRIBURL/fdk-aac-$FDKAAC.tar.bz2"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/fdk-aac-$FDKAAC.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/fdk-aac-$FDKAAC.tar.bz2"
-SOURCE[4]="$SRCDIR/libav-$FFMPEG.tar.bz2"
-SRCURL[4]="$CONTRIBURL/libav-$FFMPEG.tar.bz2"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libav-$FFMPEG.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/libav-$FFMPEG.tar.bz2"
-SOURCE[5]="$SRCDIR/fribidi-$FRIBIDI.tar.gz"
-SRCURL[5]="$CONTRIBURL/fribidi-$FRIBIDI.tar.gz"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/fribidi-$FRIBIDI.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/fribidi-$FRIBIDI.tar.gz"
-SOURCE[6]="$SRCDIR/lame-$LAME.tar.gz"
-SRCURL[6]="$CONTRIBURL/lame-$LAME.tar.gz"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/lame-$LAME.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/lame-$LAME.tar.gz"
-SOURCE[7]="$SRCDIR/libdvdnav-$DVDNAV.tar.gz"
-SRCURL[7]="$CONTRIBURL/libdvdnav-$DVDNAV.tar.gz"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libdvdnav-$DVDNAV.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/libdvdnav-$DVDNAV.tar.gz"
-SOURCE[8]="$SRCDIR/libdvdread-$DVDREAD.tar.gz"
-SRCURL[8]="$CONTRIBURL/libdvdread-$DVDREAD.tar.gz"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libdvdread-$DVDREAD.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/libdvdread-$DVDREAD.tar.gz"
-SOURCE[9]="$SRCDIR/libvpx-$VPX.tar.bz2"
-SRCURL[9]="$CONTRIBURL/libvpx-$VPX.tar.bz2"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libvpx-$VPX.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/libvpx-$VPX.tar.bz2"
-SOURCE[10]="$SRCDIR/x264-$X264.tar.gz"
-SRCURL[10]="$CONTRIBURL/x264-$X264.tar.gz"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/x264-$X264.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/x264-$X264.tar.gz"
-SOURCE[11]="$SRCDIR/x265-$X265.tar.bz2"
-SRCURL[11]="$CONTRIBURL/x265-$X265.tar.bz2"
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/x265-$X265.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/x265-$X265.tar.bz2"
##
## --- with a little luck, you won't have to edit below this point --- ##
@@ -176,6 +230,11 @@ case "$ARCH" in
;;
esac
+case "$ARCH" in
+ arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
+ *) TARGET=$ARCH-slackware-linux ;;
+esac
+
# Exit the script on errors:
set -e
trap 'echo "$0 FAILED at line ${LINENO}" | tee $OUTPUT/error-${PRGNAM}.log' ERR
@@ -275,18 +334,192 @@ echo "|| $PRGNAM-$VERSION"
echo "++"
cd $TMP/tmp-$PRGNAM
-echo "Extracting the source archive(s) for $PRGNAM..."
+
+#
+# ---------------------------------------------------------------------------
+#
+
+for FF in $(seq 1 $GTKI); do
+ tar xvf ${SOURCE[$FF]}
+done
+chown -R root:root .
+chmod -R u+w,go+r-w,a+X-s .
+
+echo "Compiling ffi static libraries:"
+cd libffi-${FFI}
+ cat $SRCDIR/patches/libffi.includedir.diff | patch -p1 --verbose \
+ 2>&1 | tee $OUTPUT/patch-${PRGNAM}_ffi.log
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=$HBDEPSDIR/etc \
+ --localstatedir=$HBDEPSDIR/var \
+ --mandir=$HBDEPSDIR/usr/man \
+ --infodir=$HBDEPSDIR/usr/info \
+ --docdir=$HBDEPSDIR/usr/doc/$PRGNAM-$VERSION \
+ --enable-static\
+ --disable-shared \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ffi.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_ffi.log
+ make install \
+ 2>&1 | tee $OUTPUT/install-${PRGNAM}_ffi.log
+cd -
+
+echo "Compiling glib2 static libraries:"
+cd glib-${GLIB}
+ # Silly upstream, using the bleeding edge. Reconf:
+ autoreconf --force --install
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lpthread -lffi" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-static\
+ --disable-shared \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_glib.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_glib.log
+ make install \
+ 2>&1 | tee $OUTPUT/install-${PRGNAM}_glib.log
+cd -
+
+echo "Compiling atk static libraries:"
+cd atk-$ATK
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-static \
+ --disable-shared \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_atk.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_atk.log
+ make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_atk.log
+cd -
+
+echo "Compiling gdk-pixbuf static libraries:"
+cd gdk-pixbuf-$GDKPIXBUF
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lz" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-static \
+ --disable-shared \
+ --enable-introspection \
+ --with-x11 \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_gdkpixbuf.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_gdkpixbuf.log
+ make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_gdkpixbuf.log
+cd -
+
+echo "Compiling pango static libraries:"
+cd pango-$PANGO
+ # Fix for x86_64 (does not hurt the other archs but note that we will start
+ # using /etc/pango/$host instead of /etc/pango/ now):
+ zcat $SRCDIR/patches/pango.etc.host.location.diff.gz | patch -p1 --verbose \
+ 2>&1 | tee $OUTPUT/patch-${PRGNAM}_pango.log
+
+ # Autoconf changes linux to linux-gnu.
+ # Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu:
+ sed -i -e 's#linux|linux-gnu|#linux|linux|#' config.sub
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --with-xft \
+ --enable-static \
+ --disable-shared \
+ --build=$TARGET \
+ --host=$TARGET \
+ --target=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_pango.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_pango.log
+ make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_pango.log
+cd -
+
+echo "Compiling gtk+3 static libraries:"
+cd gtk+-${GTK}
+ # Regenerate ./configure:
+ libtoolize --copy --force
+ autoreconf -vif
+
+ # Autoconf changes linux to linux-gnu.
+ # Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu:
+ sed -i -e 's#linux|linux-gnu|#linux|linux|#' build-aux/config.sub
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-gtk2-dependency \
+ --enable-xkb \
+ --disable-modules \
+ --disable-shared \
+ --enable-static \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_gtk.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_gtk.log
+ make install \
+ RUN_QUERY_IMMODULES_TEST=false RUN_QUERY_LOADER_TEST=false \
+ 2>&1 | tee $OUTPUT/install-${PRGNAM}_gtk.log
+cd -
+
+#
+# ---------------------------------------------------------------------------
+#
+
+echo "Continuing with $PRGNAM:"
tar -xvf ${SOURCE[0]}
cd HandBrake-${VERSION}
touch $OUTPUT/patch-${PRGNAM}.log
# Handbrake thinks all Linux systems come with libass, lame and x264:
-cat $SRCDIR/handbrake.static_fribidi_libass.patch | patch -p1 --verbose \
+cat $SRCDIR/patches/handbrake.static_fribidi_libass.patch |patch -p1 --verbose \
+ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log
+# Add our own PKG_CONFIG_PATH to make it find our private GTK+3:
+cat $SRCDIR/patches/gtk/gtk_use_my_pkgconfigpath.patch \
+ | sed -e "s,@PKGCONFIGPATH@,${HBDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig/," \
+ | patch -p1 --verbose \
2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log
+# Add some of our own patches to the build:
+HBTOPDIR=$(pwd)
+cd $SRCDIR/patches
+ cp -a --parent contrib $HBTOPDIR/
+cd -
+
mkdir download
-for FF in $(seq 1 $(( ${#SOURCE[@]} -1 ))); do
+for FF in $(seq $(($GTKI+1)) $(( ${#SOURCE[@]} -1 ))); do
cp ${SOURCE[$FF]} download/
done
chown -R root:root .
@@ -309,6 +542,11 @@ if [ "$SVNVER" != "1.6" -a -e .svn ]; then
fi
# This will build the commandline and GTK programs
+CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+CXXFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lpthread -lffi" \
+PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+PKG_CONFIG="pkg-config --static" \
./configure \
--prefix=/usr \
--disable-gtk-update-checks \
diff --git a/handbrake/build/handbrake_static.SlackBuild b/handbrake/build/handbrake_static.SlackBuild
new file mode 100755
index 00000000..25812336
--- /dev/null
+++ b/handbrake/build/handbrake_static.SlackBuild
@@ -0,0 +1,642 @@
+#!/bin/sh
+# $Id$
+# Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 Eric Hameleers, Eindhoven, NL
+# 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.
+# -----------------------------------------------------------------------------
+#
+# Slackware SlackBuild script
+# ===========================
+# By: Eric Hameleers <alien@slackware.com>
+# For: handbrake
+# Descr: video transcoder and ripper
+# URL: http://handbrake.fr/
+# Needs: vlc or libdvdcss (to read encrypted DVD's)
+# Changelog:
+# r2606-1: 23/Jun/2009 by Eric Hameleers, Eindhoven, NL
+# * Initial build.
+# Note, that handbrake will download a lot of other dependencies
+# on it's own, so it will require an Internet connection during
+# compilation.
+# r2830-1: 20/sep/2009 by Eric Hameleers <alien@slackware.com>
+# * Update.
+# 0.9.4-1: 26/nov/2009 by Eric Hameleers <alien@slackware.com>
+# * Stable release, first in a year!
+# 0.9.4-2: 01/jun/2010 by Eric Hameleers <alien@slackware.com>
+# * Rebuild for Slackware 13.1; package can now be built without
+# an internet connection.
+# 0.9.5-1: 04/jan/2011 by Eric Hameleers <alien@slackware.com>
+# * Finally, a new release. Also, make it show an icon in the
+# XFCE menu. This package no longer depends on webkitgtk.
+# 0.9.6-1: 13/apr/2012 by Eric Hameleers <alien@slackware.com>
+# * New release.
+# 0.9.8-1: 31/aug/2012 by Eric Hameleers <alien@slackware.com>
+# * New release.
+# 0.9.9-1: 03/jun/2013 by Eric Hameleers <alien@slackware.com>
+# * New release.
+# 0.10.0-1: 24/nov/2014 by Eric Hameleers <alien@slackware.com>
+# * New release. Was not able to compile.
+# 0.10.1-1: 21/mar/2015 by Eric Hameleers <alien@slackware.com>
+# * New release. New attempt at compilation failed.
+#
+# Run 'sh handbrake.SlackBuild' to build a Slackware package.
+# The package (.txz) and .txt file as well as build logs are created in /tmp .
+# Install it using 'installpkg'.
+#
+# -----------------------------------------------------------------------------
+
+# Set initial variables:
+
+PRGNAM=handbrake
+VERSION=${VERSION:-0.10.1}
+# Find the revision for a release tag using (example release 0.9.9):
+# svn info svn://svn.handbrake.fr/HandBrake/tags/0.9.9
+RELREV=${RELREV:-"6980"}
+BUILD=${BUILD:-1}
+TAG=${TAG:-alien}
+
+DOCS="AUTHORS BUILD COPYING* CREDITS NEWS THANKS TRANSLATIONS"
+
+# Versions of the GTK stack we need to statically compile:
+ATK=2.12.0 # 2.15.1
+FFI=3.0.13
+GDKPIXBUF=2.30.8 # 2.31.2
+GLIB=2.40.2 # 2.43.0
+GTK=3.12.2 # 3.14.4
+PANGO=1.36.8
+
+# Versions of the contribs most of which are compiled-in:
+ASS=0.10.0-1
+BLURAY="0.5.0"
+FDKAAC="v0.1.1-6-gbae4553"
+FFMPEG="v10.1"
+FONTCONFIG=2.8.0
+FREETYPE=2.4.7
+FRIBIDI=0.19.2
+LAME=3.98
+DVDNAV=5.0.1-0-gaa3659d
+DVDREAD=5.0.0-6-gcb1ae87
+OGG=1.3.0
+SAMPLERATE=0.1.4
+THEORA=1.1.0
+VORBIS="aotuv_b6.03"
+VPX="v1.3.0"
+X264="r2479-dd79a61"
+X265="9329-0d30d2641875-1.5"
+XML2="2.7.7"
+
+# Where do we look for sources?
+SRCDIR=$(cd $(dirname $0); pwd)
+
+# Place to build (TMP) package (PKG) and output (OUTPUT) the program:
+TMP=${TMP:-/tmp/build}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+# We need to compile additional dependencies or else Handbrake fails to build:
+HBDEPSDIR="$TMP/tmp-$PRGNAM/hbdeps"
+mkdir -p $HBDEPSDIR/usr/{bin,doc,include,lib${LIBDIRSUFFIX},man}
+
+# Dynamic array index:
+DLI=0
+
+# Download locations of sources:
+SOURCE[$DLI]="$SRCDIR/HandBrake-${VERSION}.tar.bz2"
+if [ -n "$RELREV" ]; then
+ # Download release tag from SVN so that we can create a "release" build,
+ # which shows the actual version in the about box instead of a SVN revision
+ # ... how twisted can you get.
+ SRCURL[$DLI]=""
+else
+ SRCURL[$DLI]="http://downloads.sourceforge.net/${PRGNAM}/HandBrake-${VERSION}.tar.bz2"
+fi
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/gtk+-$GTK.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/gnome/sources/gtk+/$(echo $GTK |cut -d. -f1,2)/gtk+-$GTK.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/glib-$GLIB.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/gnome/sources/glib/$(echo $GLIB | cut -d. -f1,2)/glib-$GLIB.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/atk-$ATK.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/GNOME/sources/atk/$(echo $ATK | cut -d. -f1,2)/atk-$ATK.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/pango-$PANGO.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/GNOME/sources/pango/$(echo $PANGO | cut -d. -f1,2)/pango-$PANGO.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/gdk-pixbuf-$GDKPIXBUF.tar.xz"
+SRCURL[$DLI]="http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/$(echo $GDKPIXBUF | cut -d. -f1,2)/gdk-pixbuf-$GDKPIXBUF.tar.xz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libffi-$FFI.tar.gz"
+SRCURL[$DLI]="ftp://sourceware.org/pub/libffi/libffi-$FFI.tar.gz"
+
+GTKI=$DLI
+CONTRIBURL="http://download.handbrake.fr/handbrake/contrib"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libass-$ASS.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/libass-$ASS.tar.gz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libbluray-$BLURAY.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/libbluray-$BLURAY.tar.bz2"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/fdk-aac-$FDKAAC.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/fdk-aac-$FDKAAC.tar.bz2"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libav-$FFMPEG.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/libav-$FFMPEG.tar.bz2"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/fribidi-$FRIBIDI.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/fribidi-$FRIBIDI.tar.gz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/lame-$LAME.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/lame-$LAME.tar.gz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libdvdnav-$DVDNAV.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/libdvdnav-$DVDNAV.tar.gz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libdvdread-$DVDREAD.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/libdvdread-$DVDREAD.tar.gz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/libvpx-$VPX.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/libvpx-$VPX.tar.bz2"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/x264-$X264.tar.gz"
+SRCURL[$DLI]="$CONTRIBURL/x264-$X264.tar.gz"
+
+DLI=$(($DLI+1))
+SOURCE[$DLI]="$SRCDIR/x265-$X265.tar.bz2"
+SRCURL[$DLI]="$CONTRIBURL/x265-$X265.tar.bz2"
+
+##
+## --- with a little luck, you won't have to edit below this point --- ##
+##
+
+# Automatically determine the architecture we're building on:
+MARCH=$( uname -m )
+if [ -z "$ARCH" ]; then
+ case "$MARCH" in
+ i?86) export ARCH=i486 ;;
+ armv7hl) export ARCH=$MARCH ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$MARCH ;;
+ esac
+fi
+
+case "$ARCH" in
+ i486) SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ SLKLDFLAGS=""; LIBDIRSUFFIX=""
+ ;;
+ x86_64) SLKCFLAGS="-O2 -fPIC"
+ SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
+ ;;
+ armv7hl) SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16"
+ SLKLDFLAGS=""; LIBDIRSUFFIX=""
+ ;;
+ *) SLKCFLAGS="-O2"
+ SLKLDFLAGS=""; LIBDIRSUFFIX=""
+ ;;
+esac
+
+case "$ARCH" in
+ arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
+ *) TARGET=$ARCH-slackware-linux ;;
+esac
+
+# Exit the script on errors:
+set -e
+trap 'echo "$0 FAILED at line ${LINENO}" | tee $OUTPUT/error-${PRGNAM}.log' ERR
+# Catch unitialized variables:
+set -u
+P1=${1:-1}
+
+# Save old umask and set to 0022:
+_UMASK_=$(umask)
+umask 0022
+
+# Create working directories:
+mkdir -p $OUTPUT # place for the package to be saved
+mkdir -p $TMP/tmp-$PRGNAM # location to build the source
+mkdir -p $PKG # place for the package to be built
+rm -rf $PKG/* # always erase old package's contents
+rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build
+rm -rf $OUTPUT/{patch,configure,make,install,error,makepkg}-$PRGNAM.log
+ # remove old log files
+
+# Use the src_checkout() function if no downloadable tarball exists.
+# This function checks out sources from SVN/CVS and creates a tarball of them.
+src_checkout() {
+ # Param #1 : index in the SOURCE[] array.
+ # Param #2 : full path to where SOURCE[$i] tarball should be created.
+ # Determine the tarball extension:
+ PEXT=$(echo "${2}" | sed -r -e 's/.*[^.].(tar.xz|tar.gz|tar.bz2|tgz).*/\1/')
+ case "$PEXT" in
+ "tar.xz") TARCOMP="J" ;;
+ "tar.gz") TARCOMP="z" ;;
+ "tgz") TARCOMP="z" ;;
+ "tar.bz2") TARCOMP="j" ;;
+ *) echo "Archive can only have extension 'tar.xz', '.tar.gz' '.tar.bz2' or '.tgz'" ; exit 1 ;;
+ esac
+ case ${1} in
+ 0) # HandBrake-${VERSION}
+ if [ "$(echo ${VERSION}|cut -c1)" == 'r' ]; then # revision instead of date
+ REV=$(echo ${VERSION} | cut -c2-)
+ SVNURI="svn://svn.handbrake.fr/HandBrake/trunk"
+ elif [ -z "$RELREV" ]; then
+ REV="{${VERSION}}"
+ SVNURI="svn://svn.handbrake.fr/HandBrake/trunk"
+ else
+ REV="${RELREV}"
+ SVNURI="svn://svn.handbrake.fr/HandBrake/tags/$VERSION"
+ fi
+ mkdir HandBrake-${VERSION} \
+ && cd HandBrake-${VERSION} \
+ && svn co --revision $REV $SVNURI . \
+ && chown -R root:root . \
+ && cd .. \
+ && tar -${TARCOMP}cf ${2} HandBrake-${VERSION}
+ rm -rf HandBrake-${VERSION}
+ ;;
+ *) # Do nothing
+ ;;
+ esac
+}
+
+# Regular URL downloads follow:
+for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do
+ if ! [ -f ${SOURCE[$i]} ]; then
+ echo "Source '$(basename ${SOURCE[$i]})' not available yet..."
+ # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT
+ [ -w "$SRCDIR" ] || SOURCE[$i]="$OUTPUT/$(basename ${SOURCE[$i]})"
+ if [ -f ${SOURCE[$i]} ]; then echo "Ah, found it!"; continue; fi
+ if ! [ "x${SRCURL[$i]}" == "x" ]; then
+ echo "Will download file to $(dirname $SOURCE[$i])"
+ wget -nv -T 20 -O "${SOURCE[$i]}" "${SRCURL[$i]}" || true
+ if [ $? -ne 0 -o ! -s "${SOURCE[$i]}" ]; then
+ echo "Fail to download '$(basename ${SOURCE[$i]})'. Aborting the build."
+ mv -f "${SOURCE[$i]}" "${SOURCE[$i]}".FAIL
+ exit 1
+ fi
+ else
+ # Try if we have a SVN/CVS download routine for ${SOURCE[$i]}
+ echo "Will checkout sources to $(dirname $SOURCE[$i])"
+ src_checkout $i "${SOURCE[$i]}" \
+ 2>&1 > $OUTPUT/checkout-$(basename ${SOURCE[$i]}).log
+ fi
+ if [ ! -f "${SOURCE[$i]}" -o ! -s "${SOURCE[$i]}" ]; then
+ echo "File '$(basename ${SOURCE[$i]})' not available. Aborting the build."
+ exit 1
+ fi
+ fi
+done
+
+if [ "$P1" == "--download" ]; then
+ echo "Download complete."
+ exit 0
+fi
+
+# --- PACKAGE BUILDING ---
+
+echo "++"
+echo "|| $PRGNAM-$VERSION"
+echo "++"
+
+cd $TMP/tmp-$PRGNAM
+
+#
+# ---------------------------------------------------------------------------
+#
+
+for FF in $(seq 1 $GTKI); do
+ tar xvf ${SOURCE[$FF]}
+done
+chown -R root:root .
+chmod -R u+w,go+r-w,a+X-s .
+
+echo "Compiling ffi static libraries:"
+cd libffi-${FFI}
+ cat $SRCDIR/patches/libffi.includedir.diff | patch -p1 --verbose \
+ 2>&1 | tee $OUTPUT/patch-${PRGNAM}_ffi.log
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=$HBDEPSDIR/etc \
+ --localstatedir=$HBDEPSDIR/var \
+ --mandir=$HBDEPSDIR/usr/man \
+ --infodir=$HBDEPSDIR/usr/info \
+ --docdir=$HBDEPSDIR/usr/doc/$PRGNAM-$VERSION \
+ --enable-static\
+ --disable-shared \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_ffi.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_ffi.log
+ make install \
+ 2>&1 | tee $OUTPUT/install-${PRGNAM}_ffi.log
+cd -
+
+echo "Compiling glib2 static libraries:"
+cd glib-${GLIB}
+ # Silly upstream, using the bleeding edge. Reconf:
+ autoreconf --force --install
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lpthread -lffi" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-static\
+ --disable-shared \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_glib.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_glib.log
+ make install \
+ 2>&1 | tee $OUTPUT/install-${PRGNAM}_glib.log
+cd -
+
+echo "Compiling atk static libraries:"
+cd atk-$ATK
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-static \
+ --disable-shared \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_atk.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_atk.log
+ make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_atk.log
+cd -
+
+echo "Compiling gdk-pixbuf static libraries:"
+cd gdk-pixbuf-$GDKPIXBUF
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lz" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-static \
+ --disable-shared \
+ --enable-introspection \
+ --with-x11 \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_gdkpixbuf.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_gdkpixbuf.log
+ make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_gdkpixbuf.log
+cd -
+
+echo "Compiling pango static libraries:"
+cd pango-$PANGO
+ # Fix for x86_64 (does not hurt the other archs but note that we will start
+ # using /etc/pango/$host instead of /etc/pango/ now):
+ zcat $SRCDIR/patches/pango.etc.host.location.diff.gz | patch -p1 --verbose \
+ 2>&1 | tee $OUTPUT/patch-${PRGNAM}_pango.log
+
+ # Autoconf changes linux to linux-gnu.
+ # Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu:
+ sed -i -e 's#linux|linux-gnu|#linux|linux|#' config.sub
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --with-xft \
+ --enable-static \
+ --disable-shared \
+ --build=$TARGET \
+ --host=$TARGET \
+ --target=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_pango.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_pango.log
+ make install 2>&1 | tee $OUTPUT/install-${PRGNAM}_pango.log
+cd -
+
+echo "Compiling gtk+3 static libraries:"
+cd gtk+-${GTK}
+ # Regenerate ./configure:
+ libtoolize --copy --force
+ autoreconf -vif
+
+ # Autoconf changes linux to linux-gnu.
+ # Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu:
+ sed -i -e 's#linux|linux-gnu|#linux|linux|#' build-aux/config.sub
+
+ CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+ LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS" \
+ PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure \
+ --prefix=$HBDEPSDIR/usr \
+ --libdir=$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} \
+ --enable-gtk2-dependency \
+ --enable-xkb \
+ --disable-modules \
+ --disable-shared \
+ --enable-static \
+ --build=$TARGET \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}_gtk.log
+
+ make 2>&1 | tee $OUTPUT/make-${PRGNAM}_gtk.log
+ make install \
+ RUN_QUERY_IMMODULES_TEST=false RUN_QUERY_LOADER_TEST=false \
+ 2>&1 | tee $OUTPUT/install-${PRGNAM}_gtk.log
+cd -
+
+#
+# ---------------------------------------------------------------------------
+#
+
+echo "Continuing with $PRGNAM:"
+tar -xvf ${SOURCE[0]}
+cd HandBrake-${VERSION}
+
+touch $OUTPUT/patch-${PRGNAM}.log
+
+# Handbrake thinks all Linux systems come with libass, lame and x264:
+cat $SRCDIR/patches/handbrake.static_fribidi_libass.patch |patch -p1 --verbose \
+ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log
+# Add our own PKG_CONFIG_PATH to make it find our private GTK+3:
+cat $SRCDIR/patches/gtk/gtk_use_my_pkgconfigpath.patch \
+ | sed -e "s,@PKGCONFIGPATH@,${HBDEPSDIR}/usr/lib${LIBDIRSUFFIX}/pkgconfig/," \
+ | patch -p1 --verbose \
+ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log
+
+# Add some of our own patches to the build:
+HBTOPDIR=$(pwd)
+cd $SRCDIR/patches
+ cp -a --parent contrib $HBTOPDIR/
+cd -
+
+mkdir download
+for FF in $(seq $(($GTKI+1)) $(( ${#SOURCE[@]} -1 ))); do
+ cp ${SOURCE[$FF]} download/
+done
+chown -R root:root .
+chmod -R u+w,go+r-w,a+X-s .
+
+# Pre-req test:
+if ! which yasm 1>/dev/null 2>&1 ; then
+ echo "Could not find 'yasm'. Please install yasm and restart '$(basename $0)'"
+ exit 1
+fi
+
+echo Building ...
+# Make sure the "svn info" command does not fail (which causes configure to
+# decide that this is a developer build:
+# The reason being that svn 1.7 on Slackware 14 won't accept the metadata
+# format as created by the svn checkout I make on Slackware 13.37.
+SVNVER=$(LANG=C svn --version |grep ' version ' |cut -f 3 -d' ' |cut -f1,2 -d.)
+if [ "$SVNVER" != "1.6" -a -e .svn ]; then
+ svn upgrade
+fi
+
+# This will build the commandline and GTK programs
+CFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+CXXFLAGS="-I$HBDEPSDIR/usr/include $SLKCFLAGS" \
+LDFLAGS="-L$HBDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lpthread -lffi" \
+PKG_CONFIG_PATH="$HBDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \
+PKG_CONFIG="pkg-config --static" \
+./configure \
+ --prefix=/usr \
+ --disable-gtk-update-checks \
+ --launch --launch-jobs=0 \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}.log
+make 2>&1 | tee $OUTPUT/make-${PRGNAM}.log
+
+# Install the GTK gui and commandline client:
+( cd build
+ make install DESTDIR=$PKG
+)
+
+# Show an icon in the XFCE menu:
+mkdir -p $PKG/usr/share/pixmaps
+cp -a $PKG/usr/share/icons/hicolor/128x128/apps/hb-icon.png \
+ $PKG/usr/share/pixmaps/
+
+# Remove this cache file, it will get in our way:
+[ -f $PKG/usr/share/icons/hicolor/icon-theme.cache ] \
+ && rm -f $PKG/usr/share/icons/hicolor/icon-theme.cache
+
+# Add this to the doinst.sh:
+! [ -d $PKG/install ] && mkdir -p $PKG/install
+cat <<EOT >> $PKG/install/doinst.sh
+# Update the desktop database:
+if [ -x usr/bin/update-desktop-database ]; then
+ chroot . /usr/bin/update-desktop-database usr/share/applications > /dev/null 2> /dev/null
+fi
+
+# Update the mime database:
+if [ -x usr/bin/update-mime-database ]; then
+ chroot . /usr/bin/update-mime-database usr/share/mime 1> /dev/null 2> /dev/null
+fi
+
+# Update hicolor theme cache:
+if [ -d usr/share/icons/hicolor ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ chroot . /usr/bin/gtk-update-icon-cache -f -t usr/share/icons/hicolor 1> /dev/null 2> /dev/null
+ fi
+fi
+
+EOT
+
+# Add documentation:
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/gtk
+cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION/ || true
+( cd build/contrib
+ find . -iname "LICENS*" -o -iname "COPYING*" -exec cp --parents {} $PKG/usr/doc/$PRGNAM-$VERSION/ \;
+)
+cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION
+find $PKG/usr/doc -type f -exec chmod 644 {} \;
+
+# Compress the man page(s):
+if [ -d $PKG/usr/man ]; then
+ find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
+ for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+fi
+
+# Compress info pages and remove the package's dir file:
+if [ -d $PKG/usr/info ]; then
+ rm -f $PKG/usr/info/dir
+ gzip -9f $PKG/usr/info/*.info*
+fi
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a package description:
+mkdir -p $PKG/install
+cat $SRCDIR/slack-desc > $PKG/install/slack-desc
+if [ -f $SRCDIR/doinst.sh ]; then
+ cat $SRCDIR/doinst.sh >> $PKG/install/doinst.sh
+fi
+if [ -f $SRCDIR/slack-required ]; then
+ cat $SRCDIR/slack-required > $PKG/install/slack-required
+fi
+
+# Build the package:
+cd $PKG
+makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txz 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log
+cd $OUTPUT
+md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txz.md5
+cd -
+cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txt
+if [ -f $PKG/install/slack-required ]; then
+ cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.dep
+fi
+
+# Restore the original umask:
+umask ${_UMASK_}
+