Mercurial > mplayer.hg
view TOOLS/binary_codecs.sh @ 28063:a318969a4f45
Set the base size window manager hint, otherwise some subtract the minimum
size of 4x4 from the numbers displayed to the user which might be confusing.
Based on patch by Bert Wesarg [bert wesarg googlemail com].
author | reimar |
---|---|
date | Fri, 05 Dec 2008 19:01:49 +0000 |
parents | e0aa87d3f88f |
children | dd89d439c911 |
line wrap: on
line source
#!/bin/sh set -e # This script will download binary codecs for MPlayer unto a Debian system. # Author: thuglife, mennucc1 # CODECDIR=/usr/lib/codecs PREFDIR=/var/lib/mplayer/prefs MYSITE='http://people.debian.org/~mennucc1/mplayer' dpkgarch=$(dpkg --print-installation-architecture) [ -d $PREFDIR ] || mkdir -v $PREFDIR [ -d $CODECDIR ] || mkdir -v $CODECDIR cd $CODECDIR [ -d mplayer_binary_codecs ] || mkdir -v mplayer_binary_codecs choosemirror () { cd $PREFDIR #if [ ! -r mirrors ] || find mirrors -mtime +20 ; then echo Downloading mirrors list.. wget -nv -c -N $MYSITE/mirrors || true #fi if [ ! -r bestsites ] || [ mirrors -nt bestsites ] || \ find bestsites -mtime +20 > /dev/null ; then if which netselect > /dev/null ; then echo Choosing best mirrors using netselect.... netselect -s 5 $( cat mirrors ) | awk '{print $2}' > bestsites elif which fping > /dev/null ; then fping -C 1 $( sed 's#.*//##;s#/.*##' mirrors ) 2>&1 | \ egrep -v 'bytes.*loss' | sort -n -k3 | \ grep -v ': *-' | awk '/:/{print $1}' | head -5 > bestsites else echo "(If you install 'netselect', it will select the best mirror for you" echo " you may wish to stop this script and rerun after installation)" sleep 5 head -3 mirrors > bestsites fi fi } INSTALL () { filename="$3" dir="$2" url="$1" cd $CODECDIR/mplayer_binary_codecs if [ -r $filename ] ; then cp $filename $filename.bak fi if [ "$url" = @MAINSITE@ ] ; then cat $PREFDIR/bestsites | while read mainsite ; do echo Downloading $filename from $mainsite ... wget -v -c -N $mainsite/$dir/$filename || true if [ -r "$filename" ] ; then UNPACK "$filename" [ -r $filename.bak ] && rm $filename.bak return 0 fi done else wget -v -c -N $url/$dir/$filename || true if [ -r "$filename" ] ; then UNPACK "$filename" [ -r $filename.bak ] && rm $filename.bak return 0 fi fi } UNPACK () { filename="$1" if [ ! -r $filename.bak ] || ! cmp $filename.bak $filename ; then echo Installing $filename ... if [ -r $filename.list ] ; then tr '\n' '\000' < $filename.list | xargs -r0 rm || true UNLINK $filename.list rm $filename.list fi case "$filename" in *.tar.gz) tar xvzf $filename > $filename.list #rm $filename ;; *.tgz) tar xvzf $filename > $filename.list #rm $filename ;; *.tar.bz2) tar --bzip2 -xvf $filename > $filename.list #rm $filename ;; esac LINK $filename.list echo "Installed $filename Succesfully!" fi } LINK () { cd $CODECDIR/ cat $CODECDIR/mplayer_binary_codecs/$1 | while read f ; do ln -sbf mplayer_binary_codecs/"$f" . done } UNLINK () { ### FIXME # cd $CODECDIR # cat $CODECDIR/mplayer_binary_codecs/$1 | while f do # ln -sbf mplayer_binary_codecs/"$f" # done if which symlinks > /dev/null ; then symlinks -d $CODECDIR fi } if [ `whoami` != root ]; then echo "You must be 'root' to use this script. Login as root first!" exit 1 fi case "$1" in install) choosemirror cd $PREFDIR #if [ ! -r codecs_list ] || find codecs_list -mtime +20 ; then echo 'Getting codecs list ...' wget -nv -c -N $MYSITE/codecs_list || true #fi if grep -q "^$dpkgarch" $PREFDIR/codecs_list ] ; then egrep -v "^[[:space:]]*(#|$)" $PREFDIR/codecs_list | \ while read arch url dir file info ; do if [ "$dpkgarch" = "$arch" ]; then echo Installing $file $info... INSTALL "$url" "$dir" "$file" n=1 fi done else echo "Sorry, no codecs for your arch '$dpkgarch'. Sorry dude :(" exit 1 fi ;; uninstall) cd $CODECDIR/ rm -rf mplayer_binary_codecs #FIXME we need a better clean system if which symlinks > /dev/null ; then symlinks -d . else echo "please install the package 'symlinks' and run 'symlinks -d $CODECDIR' " fi echo "Uninstalled Succesfully!" ;; *) echo "Usage: {install|uninstall}" echo "This program will install binary codecs for MPlayer." exit 1 ;; esac exit 0