diff options
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 |
commit | c718af6323a9443621053300c2808ccf934ad3c0 (patch) | |
tree | 8e7ad2ccd3bfc33c64f0f14abdb4beefcb98925f /handbrake/build/handbrake.SlackBuild | |
parent | 4b35a2d5136ec03ab596979fecbf9186227b24c8 (diff) | |
download | asb-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-x | handbrake/build/handbrake.SlackBuild | 304 |
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 \ |