diff options
author | Eric Hameleers <alien@slackware.com> | 2007-11-10 23:34:40 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2007-11-10 23:34:40 +0000 |
commit | e164a6595fe2d7562ca3f69233632bf15f9f95b2 (patch) | |
tree | d69f9a87d607ca69836e687b58065e112e78b7ca /xawtv | |
parent | 682266f456dc5f91fea39f0c585312ed5c3a359c (diff) | |
download | asb-e164a6595fe2d7562ca3f69233632bf15f9f95b2.tar.gz asb-e164a6595fe2d7562ca3f69233632bf15f9f95b2.tar.xz |
This one works.
Diffstat (limited to 'xawtv')
-rwxr-xr-x | xawtv/build/xawtv.SlackBuild | 298 |
1 files changed, 192 insertions, 106 deletions
diff --git a/xawtv/build/xawtv.SlackBuild b/xawtv/build/xawtv.SlackBuild index 65711f3a..92855ee5 100755 --- a/xawtv/build/xawtv.SlackBuild +++ b/xawtv/build/xawtv.SlackBuild @@ -1,57 +1,139 @@ #!/bin/sh +# $Id$ +# Copyright (c) 2007 Eric Hameleers <alien@slackware.com> +# 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@sox.homeip.net> -# For: xawtv -# URL: http://bytesex.org/xawtv/ -# Needs: +# By: Eric Hameleers <alien@slackware.com> +# For: xawtv +# Descr: TV application with webcam support +# URL: http://linux.bytesex.org/xawtv/ +# Needs: zvbi # Changelog: -# 3.94-1: 01/Aug/2005 by Eric Hameleers <alien@sox.homeip.net> -# * Initial build. +# 3.94-1: 01/Aug/2005 by Eric Hameleers <alien@sox.homeip.net> +# * Initial build. +# 20070625-1: 10/Nov/2007 by Eric Hameleers <alien@slackware.com> +# * Upgraded to CVS snapshot (no official release since 2005). +# Use the zvbi library for teletext support. # -# Run 'sh SlackBuild --cleanup' to build a Slackware package. +# Run 'sh xawtv.SlackBuild --cleanup' to build a Slackware package. # The package (.tgz) plus descriptive .txt file are created in /tmp . # Install using 'installpkg'. # # ----------------------------------------------------------------------------- -# --- INIT --- # Set initial variables: -CWD=`pwd` -if [ "$TMP" = "" ]; then - TMP=/tmp -fi PRGNAM=xawtv -VERSION=3.94 +VERSION=${VERSION:-20070625} ARCH=${ARCH:-i486} -BUILD=1 - -if [ "$ARCH" = "i386" ]; then - SLKCFLAGS="-O2 -march=i386 -mcpu=i686" -elif [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mcpu=i686" -elif [ "$ARCH" = "s390" ]; then - SLKCFLAGS="-O2" -elif [ "$ARCH" = "x86_64" ]; then - SLKCFLAGS="-O2" -elif [ "$ARCH" = "athlon-xp" ]; then - SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer" +BUILD=${BUILD:-1} -fi +DOCS="COPYING Changes TODO README* contrib/frequencies*" -PKG=$TMP/package-$PRGNAM +# Where do we look for sources? +CWD=$(pwd) +SRCDIR=$(dirname $0) +[ "${SRCDIR:0:1}" == "." ] && SRCDIR=${CWD}/${SRCDIR} -if [ ! -d $TMP/tmp-$PRGNAM ]; then - mkdir -p $TMP/tmp-$PRGNAM # location to build the source +# Place to build (TMP) package (PKG) and output (OUTPUT) the program: +TMP=${TMP:-/tmp/build} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +# Input URL: http://dl.bytesex.org/cvs-snapshots/xawtv-20070625-114215.tar.gz +SOURCE="$SRCDIR/${PRGNAM}-${VERSION}.tar.gz" +SRCURL="http://dl.bytesex.org/cvs-snapshots/${PRGNAM}-${VERSION}-114215.tar.gz" + +## +## --- with a little luck, you won't have to edit below this point --- ## +## + +# 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} + +# Slackware 11 and up need other option (gcc > 3.3.x) +if [ $(gcc -dumpversion | tr -d '.' |cut -c 1-2) -gt 33 ]; then + MOPT=tune +else + MOPT=cpu fi -if [ ! -d $PKG ]; then - mkdir -p $PKG # place for the package to be built + +case "$ARCH" in + i386) SLKCFLAGS="-O2 -march=i386 -m${MOPT}=i686" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + i486) SLKCFLAGS="-O2 -march=i486 -m${MOPT}=i686" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + s390) SLKCFLAGS="-O2" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + powerpc) SLKCFLAGS="-O2" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; + x86_64) SLKCFLAGS="-O2 -fPIC" + SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64" + ;; + athlon-xp) SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer" + SLKLDFLAGS=""; LIBDIRSUFFIX="" + ;; +esac + +# Create working directories: +mkdir -p $TMP/tmp-$PRGNAM # location to build the source +rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build +mkdir -p $PKG # place for the package to be built +rm -rf $PKG/* # We always erase old package's contents: +mkdir -p $OUTPUT # place for the package to be saved + +# Source file availability: +if ! [ -f ${SOURCE} ]; then + if ! [ "x${SRCURL}" == "x" ]; then + # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT + [ -w "$SRCDIR" ] || SOURCE="$OUTPUT/$(basename $SOURCE)" + echo "Source '$(basename ${SOURCE})' not available yet..." + echo "Will download file to $(dirname $SOURCE)" + wget -nv --connect-timeout=30 -O "${SOURCE}" "${SRCURL}" || true + if [ $? -ne 0 -o ! -s "${SOURCE}" ]; then + echo "Downloading '$(basename ${SOURCE})' failed... aborting the build." + mv -f "${SOURCE}" "${SOURCE}".FAIL + exit 1 + fi + else + echo "File '$(basename ${SOURCE})' not available... aborting the build." + exit 1 + fi fi +if [ "$P1" == "--download" ]; then + echo "Download complete." + exit 0 +fi # --- PACKAGE BUILDING --- @@ -59,102 +141,106 @@ echo "++" echo "|| $PRGNAM-$VERSION" echo "++" -rm -rf $PKG/* - -cd $PKG - -# Explode the package framework: -if [ -f $CWD/_$PRGNAM.tar.gz ]; then - explodepkg $CWD/_$PRGNAM.tar.gz -fi - cd $TMP/tmp-$PRGNAM - - -# --- TARBALL EXTRACTION,PATCH,MODIFY --- - -echo "Extracting the program tarball for $PRGNAM..." -tar -xzvf $CWD/${PRGNAM}-${VERSION}.tar.gz - +echo "Extracting the source archive(s) for $PRGNAM..." +if $(file ${SOURCE} | grep -q ": bzip2"); then + tar -xjvf ${SOURCE} +elif $(file ${SOURCE} | grep -q ": gzip"); then + tar -xzvf ${SOURCE} +fi +mv ${PRGNAM} ${PRGNAM}-${VERSION} cd ${PRGNAM}-${VERSION} - -chown -R root.root * -find . -perm 777 -exec chmod 755 {} \; - - -# --- BUILDING --- +find . -type d -name CVS -exec rm -rf {} \; 2>/dev/null || true +chown -R root:root . +chmod -R u+w,go+r-w,a-s . + +# Determine what X we're running (the modular X returns the prefix +# in the next command, while older versions stay silent): +XPREF=`pkg-config --variable=prefix x11` || true +if [ "$XPREF" == "" ]; then + XPREF='/usr/X11R6' +fi echo Building ... -CFLAGS="$SLKCFLAGS" \ -./configure --prefix=/usr/X11R6 \ - 2>&1 | tee $CWD/configure-${PRGNAM}.log -make 2>&1 | tee $CWD/make-${PRGNAM}.log +export LDFLAGS="$SLKLDFLAGS" +export CFLAGS="$SLKCFLAGS" +[ ! -r configure ] && ./autogen.sh +./configure --prefix=$XPREF \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --disable-arts \ + --enable-zvbi \ + --enable-alsa \ + --program-prefix="" \ + --program-suffix="" \ + --build=$ARCH-slackware-linux \ + 2>&1 | tee $OUTPUT/configure-${PRGNAM}.log + # --enable-aa \ This generates a compiletime error. + # The CVS support for aalib is broken. +make 2>&1 | tee $OUTPUT/make-${PRGNAM}.log -# # Install all the needed stuff to the package dir -# -# Use installwatch if available: -( cd build - which installwatch > /dev/null 2>&1 - if [ $? == 0 ]; then - installwatch -o $CWD/install-${PRGNAM}.log \ - make DESTDIR=$PKG SUID_ROOT="" install - else - make DESTDIR=$PKG SUID_ROOT="" install 2>&1 |tee $CWD/install-${PRGNAM}.log - fi -) - -# --- DOCUMENTATION --- +# Use installwatch if available, to produce a logfile of the installation +# process that is more easily readable: +if $(which installwatch > /dev/null 2>&1); then + installwatch -o $OUTPUT/install-${PRGNAM}.log \ + make DESTDIR=$PKG SUID_ROOT="" install +else + make DESTDIR=$PKG SUID_ROOT="" install \ + 2>&1 |tee $OUTPUT/install-${PRGNAM}.log +fi -DOCS="COPYING Changes TODO README README.* contrib/frequencies*" +# Add the .desktop files and icons: +mkdir -p $PKG/usr/share/{applications,pixmaps} +cp contrib/xawtv*.xpm $PKG/usr/share/pixmaps/ +cp gtk/logo.xpm $PKG/usr/share/pixmaps/xawtv.xpm +cp desktop/*.desktop $PKG/usr/share/applications/ +for dtf in $PKG/usr/share/applications/* ; do + ! `grep -q "^Icon=" $dtf` && echo "Icon=/usr/share/pixmaps/xawtv.xpm" >> $dtf +done +# Add documentation: mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a $DOCS \ - $PKG/usr/doc/$PRGNAM-$VERSION +cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/* -# Compress the man page(s) -gzip -9f $PKG/usr/X11R6/man/*/* -gzip -9f $PKG/usr/X11R6/man/*/*/* - -# Strip binaries -( cd $PKG - find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null - find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -) - - -# --- OWNERSHIP, RIGHTS --- - -chmod -R o-w $PKG -chown root:bin $PKG/usr/bin/* $PKG/usr/sbin/* $PKG/bin/* $PKG/sbin/* \ - $PKG/usr/X11R6/bin/* $PKG/opt/kde/bin/* 2>/dev/null -chmod 4711 $PKG/usr/X11R6/bin/v4l-conf +# 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 -# --- PACKAGE DESCRIPTION --- +# Strip binaries: +cd $PKG +find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +cd - +# Add a package description: mkdir -p $PKG/install -cat $CWD/slack-desc > $PKG/install/slack-desc -if [ -f $CWD/doinst.sh ]; then - cat $CWD/doinst.sh > $PKG/install/doinst.sh +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 - - -# --- BUILDING --- # Build the package: cd $PKG -makepkg --linkadd y --chown n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz \ - 2>&1 | tee $CWD/makepkg-${PRGNAM}.log -(cd $TMP && md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz.md5) -cat $CWD/slack-desc | grep "^${PRGNAM}" > $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txt - - -# --- CLEANUP --- +makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log +cd $OUTPUT +md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz.md5 +cd - +cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txt +if [ -f $PKG/install/slack-required ]; then + cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.dep +fi # Clean up the extra stuff: -if [ "$1" = "--cleanup" ]; then +if [ "$P1" = "--cleanup" ]; then rm -rf $TMP/tmp-$PRGNAM rm -rf $PKG fi |