summaryrefslogtreecommitdiffstats
path: root/handbrake/build/handbrake.SlackBuild
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/build/handbrake.SlackBuild
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/build/handbrake.SlackBuild')
-rwxr-xr-xhandbrake/build/handbrake.SlackBuild304
1 files changed, 271 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 \