diff options
author | Eric Hameleers <alien@slackware.com> | 2008-12-14 16:32:24 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2008-12-14 16:32:24 +0000 |
commit | 16dc2caf18bb64330ed2a3862874a2385b7a51f1 (patch) | |
tree | ab9a401dffee7975e5d440076b066cc94f5b0723 /MPlayer | |
parent | afcf2251f1433f2618d9d77f9fbde52d8a8a226e (diff) | |
download | asb-16dc2caf18bb64330ed2a3862874a2385b7a51f1.tar.gz asb-16dc2caf18bb64330ed2a3862874a2385b7a51f1.tar.xz |
Updated to building SVN versions (also tested on slackware64)
Diffstat (limited to 'MPlayer')
-rwxr-xr-x | MPlayer/build/MPlayer.SlackBuild | 292 |
1 files changed, 146 insertions, 146 deletions
diff --git a/MPlayer/build/MPlayer.SlackBuild b/MPlayer/build/MPlayer.SlackBuild index 387c1034..325e0518 100755 --- a/MPlayer/build/MPlayer.SlackBuild +++ b/MPlayer/build/MPlayer.SlackBuild @@ -57,6 +57,10 @@ # 1.0rc2-3: 10/mar/2008 by Eric Hameleers <alien@slackware.com> # * Apply a patch that allows compilation against the ivtv driver # in the 2.6.24.x kernels. +# r28148-1: 14/dec/2008 by Eric Hameleers <alien@slackware.com> +# * Build SVN snapshot - remove support for *all* patented or +# questionable software if "USE_PATENTS" is set to "NO" - think +# of DECSS dvd decryption code, and mp3/aac/amr audio encoders. # # Run 'sh MPlayer.SlackBuild --cleanup' to build a Slackware package. # The package (.tgz) plus descriptive .txt file are created in /tmp . @@ -67,20 +71,53 @@ # Set initial variables: PRGNAM=MPlayer -VERSION=${VERSION:-1.0rc2} +VERSION=${VERSION:-r28148} ARCH=${ARCH:-i486} -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} TAG=${TAG:-alien} -DOCS="AUTHORS Changelog Copyright LICENSE README DOCS/HTML DOCS/tech" +DOCS="AUTHORS Changelog Copyright LICENSE README DOCS/HTML-single DOCS/tech" CODECSDIR=/usr/lib/codecs # Where the WIN32 codecs are expected for instance DEFSKIN=${DEFSKIN:-"Blue"} # Download more skins at the following url: SKINVER=${SKINVER:-"1.7"} # http://www.mplayerhq.hu/design7/dload.html +# Available languages: all bg cs de dk el en es fr hu it ja +# ko mk nb nl pl ro ru sk sv tr uk pt_BR zh_CN zh_TW LANGUAGES="en nl fr de es" # The default is to just add "en" documentation +if [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +else + LIBDIRSUFFIX="" +fi + +# --------------------------------------------------------------------------- +# -- PATENT ALERT! -- +# MPlayer source contains an internal copy of 'libdvdcss' for reading DVD's. +# This is considered illegal software in some countries. +# Also, MPLayer can be built with MP3 (lame) and AMR audio encoders +# (needed for FLV and .3GP videos) but these libraries are 'contaminated' +# with patents from Fraunhofer and GGP. +# Also, the AAC encoder has patent issues. +# You can build these patended algorithms into ffmpeg, and if you are an +# ordinary end user, no one will bother you for using them. +# For the binaries based on this SlackBuild that I distribute, it is a +# different story. I am not allowed to distribute binary packages that +# incorporate patented code. So here you go. My Slackware package was +# built with "USE_PATENTS=NO" i.e. without using +# the lame mp3, faac, AMR and dvdcss libraries. +# This also means that this creates a version of MPlayer that is unable +# to play encrypted DVD's (which is most DVD's on the market). If it is +# allowed in your country to use libdvdcss, this is not a big problem though. +# Install a libdvdcss package and it will be picked up automatically by +# MPlayer's internal libdvdread library, so that MPlayer will again be able +# to play encrypted DVD's. +# --------------------------------------------------------------------------- +#USE_PATENTS="NO" +USE_PATENTS=${USE_PATENTS:-"YES"} + # MPlayer will try to use one of the TrueType fonts present on the target # system for it's On Screen Display (OSD) font. # Slackware 11.0 ships with the Vera and DejaVu fonts, you may want to add @@ -92,52 +129,51 @@ LANGUAGES="en nl fr de es" # The default is to just add "en" documentation OSDFONTS="LiberationSans-Regular.ttf Arialuni.ttf arial.ttf \ DejaVuSans.ttf Vera.ttf" -# MPlayer source contains an internal copy of 'libdvdcss' for reading DVD's. -# This is considered illegal software in some countries. -# The SlackBuild removes support for this this library before building MPlayer -# so that the resulting binary can be distributed without legal concerns. -# This also means that this SlackBuild creates a version of MPlayer that is -# unable to play encrypted DVD's (which is most DVD's on the market). If it is -# allowed in your country to use libdvdcss, this is not a big problem though. -# Install a copy of libdvdcss and it will be picked up automatically by -# MPlayer's internal libdvdread library, so that MPlayer will again be able -# to play encrypted DVD's. -# Set REMOVECSS="no" if you want MPLayer to use it's internal decss code. -REMOVECSS=${REMOVECSS:-"yes"} - -# 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 -[ "$XPREF" == "" ] && XPREF='/usr/X11R6' - # 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} - -# Input URL: http://www4.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc2.tar.bz2 SOURCE[0]="$SRCDIR/${PRGNAM}-${VERSION}.tar.bz2" -SRCURL[0]="http://www4.mplayerhq.hu/${PRGNAM}/releases/${PRGNAM}-${VERSION}.tar.bz2" +#SRCURL[0]="http://www4.mplayerhq.hu/${PRGNAM}/releases/${PRGNAM}-${VERSION}.tar.bz2" +SRCURL[0]="" # The default skin to use (we need to add at least one) SOURCE[1]="$SRCDIR/${DEFSKIN}-${SKINVER}.tar.bz2" SRCURL[1]="http://www.mplayerhq.hu/MPlayer/skins/${DEFSKIN}-${SKINVER}.tar.bz2" -# Patches: -SOURCE[2]="$SRCDIR/demux_audio_fix_20080129.diff" -SRCURL[2]="http://www.mplayerhq.hu/MPlayer/patches/demux_audio_fix_20080129.diff" - -SOURCE[3]="$SRCDIR/demux_mov_fix_20080129.diff" -SRCURL[3]="http://www.mplayerhq.hu/MPlayer/patches/demux_mov_fix_20080129.diff" - -SOURCE[4]="$SRCDIR/url_fix_20080120.diff" -SRCURL[4]="http://www.mplayerhq.hu/MPlayer/patches/url_fix_20080120.diff" +# 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[$1] tarball should be created. + # Determine the tarball extension: + PEXT=$(echo "${2}" | sed -r -e 's/.*[^.].(tar.gz|tar.bz2|tgz).*/\1/') + if [ "$PEXT" == "${2}" ]; then # we did not find a allowed extension + echo "Archive can only have extension '.tar.gz' '.tar.bz2' or '.tgz'" + exit 1 + else + [ "$PEXT" = "tar.bz2" ] && TARCOMP="j" || TARCOMP="z" + fi + case ${1} in + 0) # mplayer + mkdir mplayertemp-$$ \ + && cd mplayertemp-$$ \ + && svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer \ + && mv mplayer MPlayer-$VERSION \ + && find . -type d -name '.svn' -depth | xargs rm -rf \ + && chown -R root:root . \ + && tar -${TARCOMP}cf ${2} MPlayer-${VERSION} + cd .. + rm -rf mplayertemp-$$ + ;; + *) # Do nothing + ;; + esac +} -SOURCE[5]="$SRCDIR/stream_cddb_fix_20080120.diff" -SRCURL[5]="http://www.mplayerhq.hu/MPlayer/patches/stream_cddb_fix_20080120.diff" +# Place to build (TMP) package (PKG) and output (OUTPUT) the program: +TMP=${TMP:-/tmp/build} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} ## ## --- with a little luck, you won't have to edit below this point --- ## @@ -150,34 +186,6 @@ trap 'echo "$0 FAILED at line $LINENO!" | tee $OUTPUT/error-${PRGNAM}.log' ERR 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 - -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 @@ -188,10 +196,10 @@ mkdir -p $OUTPUT # place for the package to be saved # Source file availability: 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 ! [ "x${SRCURL[$i]}" == "x" ]; then - # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT - [ -w "$SRCDIR" ] || SOURCE[$i]="$OUTPUT/$(basename ${SOURCE[$i]})" - echo "Source '$(basename ${SOURCE[$i]})' not available yet..." 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 @@ -200,6 +208,11 @@ for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do 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 @@ -218,42 +231,43 @@ echo "|| $PRGNAM-$VERSION" echo "++" # Warn about libdvdread requirement: -if [ "$REMOVECSS" == "yes" ]; then - cat <<-"EOT" - ** - ** Removing internal DECSS library. - ** If you want to play encrypted DVD's you need to install libdvdcss separately. - ** - ** If you do not want to remove libdvdcss, then - ** edit this SlackBuild script and change the line: - ** REMOVECSS=${REMOVECSS:-"yes"} - ** to: - ** REMOVECSS="no" - ** - EOT +if [ "$USE_PATENTS" != "YES" ]; then + cat <<"EOT" +** +** Removing internal DECSS library. +** If you want to play encrypted DVD's you need to install libdvdcss separately. +** +** If you do not want to remove libdvdcss, then +** edit this SlackBuild script and change the line: +** USE_PATENTS=${USE_PATENTS:-"NO"} +** to: +** USE_PATENTS="YES" +** +EOT sleep 2 fi cd $TMP/tmp-$PRGNAM echo "Extracting the source archive(s) for $PRGNAM..." -tar -xjvf ${SOURCE[0]} +tar -xvf ${SOURCE[0]} chown -R root:root * chmod -R u+w,go+r-w,a-s * cd ${PRGNAM}-${VERSION} -# Apply official security patches: -( cd libmpdemux ; patch -p0 < ${SOURCE[2]} ; cd .. - cd libmpdemux ; patch -p0 < ${SOURCE[3]} ; cd .. - cd stream ; patch -p0 < ${SOURCE[4]} ; cd .. - cd stream ; patch -p0 < ${SOURCE[5]} ; cd .. -) 2>&1 | tee $OUTPUT/patch-$PRGNAM.log -# Apply fix to let it build against kernel 2.6.24.x with the ivtv driver -patch -p1 < $SRCDIR/ivtv_2.6.24.patch \ - 2>&1 | tee -a $OUTPUT/patch-$PRGNAM.log - -# Remove potentially illegal dvdcss code (in which case, make sure you have -# libdvdread installed before you start the compile!): -[ "$REMOVECSS" == "yes" ] && DO_CSS="--disable-libdvdcss-internal" \ - || DO_CSS=" " + +# 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 +[ "$XPREF" == "" ] && XPREF='/usr/X11R6' + +# Remove support for patent encumbered and possibly illegal code: +if [ "$USE_PATENTS" != "YES" ]; then + DO_PATENTED="--disable-libdvdcss-internal \ + --disable-mp3lame --disable-mp3lame-lavc \ + --disable-faac --disable-faac-lavc \ + --disable-libamr_nb --disable-libamr_nb" +else + DO_PATENTED="" +fi echo Building ... # MPlayer wants to automatically determine compiler flags, @@ -270,7 +284,7 @@ echo Building ... --win32codecsdir=${CODECSDIR} \ --realcodecsdir=${CODECSDIR} \ --language="${LANGUAGES}" \ - ${DO_CSS} \ + ${DO_PATENTED} \ 2>&1 | tee $OUTPUT/configure-${PRGNAM}.log make 2>&1 | tee $OUTPUT/make-${PRGNAM}.log @@ -283,14 +297,17 @@ else make DESTDIR=$PKG install 2>&1 |tee $OUTPUT/install-${PRGNAM}.log fi +# Build the html documentation (not all languages are available): +( cd DOCS/xml + for i in $(echo $LANGUAGES | tr , ' ') ; do + [ -d $i ] && make html-single-$i ; + done +) + # Prepare the configfile: mkdir -p $PKG/etc/mplayer cp etc/example.conf $PKG/etc/mplayer/mplayer.conf.new -# Fix the .desktop file -sed -i -e 's#^Icon=mplayer.xpm$#Icon=/usr/share/pixmaps/mplayer.xpm#' \ - $PKG/usr/share/applications/mplayer.desktop - # Install our default skin: cd $PKG/usr/share/mplayer/skins tar -xvf ${SOURCE[1]} @@ -322,10 +339,10 @@ config() { # Configure a default TrueType font to use for the OSD : if [ ! -f usr/share/mplayer/subfont.ttf ]; then for font in ${OSDFONTS}; do - if [ -f .${XPREF}/lib/X11/fonts/TTF/\${font} ]; then - cd usr/share/mplayer/ - ln -sf ${XPREF}/lib/X11/fonts/TTF/\${font} subfont.ttf - cd - + if [ -f .${XPREF}/lib${LIBDIRSUFFIX}/X11/fonts/TTF/\${font} ]; then + ( cd usr/share/mplayer/ + ln -sf ${XPREF}/lib${LIBDIRSUFFIX}/X11/fonts/TTF/\${font} subfont.ttf + ) break fi done @@ -334,23 +351,20 @@ fi # Prepare the new configuration file config etc/mplayer/mplayer.conf.new +if [ -x /usr/bin/update-desktop-database ]; then + chroot . /usr/bin/update-desktop-database -q usr/share/applications +fi + EOINS # Add documentation: mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true cp -a $SRCDIR/$(basename $0) $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild -# Only keep the docs for languages that we want: -mv $PKG/usr/doc/$PRGNAM-$VERSION/HTML $PKG/usr/doc/$PRGNAM-$VERSION/html -mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/HTML -for i in $LANGUAGES; do - [ -d $PKG/usr/doc/$PRGNAM-$VERSION/html/$i ] && \ - mv $PKG/usr/doc/$PRGNAM-$VERSION/html/$i $PKG/usr/doc/$PRGNAM-$VERSION/HTML/ -done -rm -rf $PKG/usr/doc/$PRGNAM-$VERSION/html +mv $PKG/usr/doc/$PRGNAM-$VERSION/HTML-single $PKG/usr/doc/$PRGNAM-$VERSION/html # Save a sample of all configuration files: for i in etc/*.conf ; do - cp $i $PKG/usr/doc/$PRGNAM-$VERSION/`basename $i`-sample + cp $i $PKG/usr/doc/$PRGNAM-$VERSION/$(basename $i)-sample done # Save a transcript of all configured options for this specific build: if [ -n $OUTPUT/configure-${PRGNAM}.log ]; then @@ -368,10 +382,8 @@ if [ -d $PKG/usr/man ]; then fi # 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 - +( 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 @@ -379,9 +391,6 @@ 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 @@ -390,30 +399,21 @@ cd $OUTPUT md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz.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 - -# Clean up the extra stuff: -if [ "$P1" = "--cleanup" ]; then - rm -rf $TMP/tmp-$PRGNAM - rm -rf $PKG -fi # Warn about libdvdcss requirement (again): -if [ "$REMOVECSS" == "yes" ]; then - cat <<-"EOT" - ** - ** Internal DECSS library was not built. - ** If you want to play encrypted DVD's you need to install libdvdcss separately. - ** - ** If you do not care about patent issues, - ** and want to keep support for internal libdvdcss, then - ** edit this SlackBuild script and change the line: - ** REMOVECSS=${REMOVECSS:-"yes"} - ** to: - ** REMOVECSS="no" - ** - EOT +if [ "$USE_PATENTS" != "YES" ]; then + cat <<"EOT" +** +** Internal DECSS library was not built. +** If you want to play encrypted DVD's you need to install libdvdcss separately. +** +** If you do not care about patent issues, +** and want to keep support for internal libdvdcss, then +** edit this SlackBuild script and change the line: +** USE_PATENTS=${USE_PATENTS:-"NO"} +** to: +** USE_PATENTS="YES" +** +EOT fi |