Updatemythtv
Appearance
Change Log since 1.8.8[edit | edit source]
- 1.9.2 - Miner Bug Fixes
- 1.9.1 - Added MythStream Support under the "full" install.
- 1.9.0 - Added 'clean-download' to remove the SVN dirs and download a fresh copy, then backup the just downloaded copy.
- 1.8.9.2 - Do NOT kill mythbackend during Mythbackend install.
- 1.8.9.1 - Fixed Backend bug, Only copy 'etc.rc.d.init.d.mythbackend' if /etc/sysconfig/mythbackend is missing.
- 1.8.9.0 - Fixed OSD bug, Now shows the currect SVN number for the OSD
The Script[edit | edit source]
# /bin/bash # By Matt Rude [email protected] # System Varables REV="Rev 1.9.2 2007-April-19" URL=http://svn.mythtv.org/svn/trunk #URL=http://svn.mythtv.org/svn/branches/release-0-20-fixes SVNDIR=/tmp/svn BULIDDIR=/usr/local HTTPDIR=/var/www/html # Most likly you will have no reson to change anything below here. ############################################################################### LOG=$SVNDIR/log/build.log MLOG=$SVNDIR/log/mythtv-compile.log PLOG=$SVNDIR/log/mythplugings-compile.log TLOG=$SVNDIR/log/myththemes-compile.log SVNLOG=$SVNDIR/log/svn.log ELOG=$SVNDIR/log/build-error.log MELOG=$SVNDIR/log/mythtv-compile-error.log PELOG=$SVNDIR/log/mythplugings-compile-error.log TELOG=$SVNDIR/log/myththemes-compile-error.log clear log () { tee -a $LOG } mkdir -p $SVNDIR/log echo "`date +%T` - Current Verison is: $REV" Download-svn () { echo "`date +%T` - Removeing old svn config files & dirs" rm -rf $SVNDIR/log/* rm -rf $SVNDIR/*/config/ rm -rf $SVNDIR/*/config.* echo "`date +%T` - Starting Mythtv Download from svn." |log SVN=`svn info $URL |grep "Last Changed Rev:" |awk '{print $4 }'` echo "`date +%T` - Current Mythtv SVN Version is $SVN" |log svn co $URL/mythtv $SVNDIR/mythtv >> $SVNLOG 2> $ELOG svn co $URL/mythplugins $SVNDIR/mythplugins >> $SVNLOG 2> $ELOG svn co $URL/myththemes $SVNDIR/myththemes >> $SVNLOG 2> $ELOG } Clean-Download-svn () { echo "`date +%T` - Deleting Mythtv SVN Dirctory's" rm -rf $SVNDIR/log/* rm -rf $SVNDIR/mythtv rm -rf $SVNDIR/mythplugins rm -rf $SVNDIR/myththemes mkdir -p $SVNDIR/log echo "`date +%T` - Starting Mythtv Download from svn." |log SVN=`svn info $URL |grep "Last Changed Rev:" |awk '{print $4 }'` echo "`date +%T` - Current Mythtv SVN Version is $SVN" |log svn co $URL/mythtv $SVNDIR/mythtv >> $SVNLOG 2> $ELOG svn co $URL/mythplugins $SVNDIR/mythplugins >> $SVNLOG 2> $ELOG svn co $URL/myththemes $SVNDIR/myththemes >> $SVNLOG 2> $ELOG echo "`date +%T` - Finished Mythtv Download from svn." |log echo "`date +%T` - Starting to Archiving Downloaded Files." echo "`date +%T` - Archiving Files to: $SVNDIR/Mythtv.svn$SVN.tgz" cd $SVNDIR tar -czf Mythtv.svn$SVN.tgz log mythtv mythplugins myththemes chmod 666 $SVNDIR/Mythtv.svn$SVN.tgz chown mythtv:mythtv $SVNDIR/Mythtv.svn$SVN.tgz echo "`date +%T` - Finished Archiving Downloaded Files." |log } Compile-Mythtv () { echo "`date +%T` - Starting to Compile Mythtv." >> $LOG echo "`date +%T` - Starting to Compile Mythtv." cd $SVNDIR/mythtv >> $LOG 2> $ELOG make distclean >> $LOG 2> $ELOG ./configure --prefix=/usr/local --with-bindings=perl --disable-firewire --disable-dbox2 --disable-hdhomerun --enable-xvmc-opengl --enable-xvmc --enable-opengl-vsync >> $LOG #./configure --prefix=/usr/local --compile-type=debug --with-bindings=perl --disable-firewire --disable-dbox2 --disable-hdhomerun --enable-xvmc-opengl --enable-xvmc --enable-opengl-vsync --xvmc-lib=XvMCNVIDIA --enable-xvmc-opengl>> $LOG qmake PREFIX=/usr/local mythtv.pro >> $LOG make >> $MLOG 2> $MELOG if [ -e $BULIDDIR/mythtv.diff ]; then cp -f $BULIDDIR/mythtv.diff $SVNDIR/mythtv/mythtv.diff cat mythtv.diff |patch -p0 -N >> $LOG 2> $ELOG else echo "" > /dev/null fi echo "`date +%T` - Finished Compiling Mythtv." >> $LOG echo "`date +%T` - Finished Compiling Mythtv." } Compile-MythPlugins () { echo "`date +%T` - Starting to Compile MythPlugins." >> $LOG echo "`date +%T` - Starting to Compile MythPlugins." cd $SVNDIR/mythplugins >> $LOG 2> $ELOG make distclean >> $LOG 2> $ELOG ./configure --prefix=/usr/local --enable-faad --enable-aac --disable-mythbrowser --disable-mythflix --disable-mythgallery --disable-mythgame --disable-mythnews --disable-mythphone --disable-zoneminder >> $LOG 2> $ELOG qmake mythplugins.pro >> $LOG 2> $ELOG make >> $PLOG 2> $PELOG if [ -e $BULIDDIR/mythplugins.diff ]; then cp -f $BULIDDIR/mythplugins.diff $SVNDIR/mythplugins/mythplugins.diff cat mythplugins.diff |patch -p0 -N >> $LOG 2> $ELOG else echo "" > /dev/null fi echo "`date +%T` - Finished Compiling MythPlugins." >> $LOG echo "`date +%T` - Finished Compiling MythPlugins." } Compile-MythThemes () { echo "`date +%T` - Starting to Compile MythThemes." |log cd $SVNDIR/myththemes >> $LOG 2> $ELOG make distclean >> $LOG 2> $ELOG ./configure --prefix=/usr/local >> $LOG 2> $ELOG make >> $TLOG 2> $TELOG if [ -e $BULIDDIR/myththemes.diff ]; then cp -f $BULIDDIR/myththemes.difvf $SVNDIR/myththemes/myththemes.diff cat myththemes.diff |patch -p0 -N >> $LOG 2> $ELOG else echo "" > /dev/null fi echo "`date +%T` - Finished Compiling MythThemes." |log } Install-MythPlugins () { echo "`date +%T` - Starting to Install MythPlugins." |log cd $SVNDIR/mythplugins make install >> $LOG 2> $ELOG echo "`date +%T` - Finished Installing MythPlugins." |log } Install-MythWeb () { echo "`date +%T` - Starting to configuring Mythweb." |log cd $SVNDIR/mythplugins >> $LOG 2> $ELOG rm -rf $HTTPDIR/mythweb >> $LOG 2> $ELOG cp -r mythweb $HTTPDIR/ >> $LOG 2> $ELOG rm -rf /etc/httpd/conf.d/mythweb.conf cp -p mythweb/mythweb.conf.apache /etc/httpd/conf.d/mythweb.conf chown apache:apache /etc/httpd/conf.d/mythweb.conf ln -s /mythtv/Music $HTTPDIR/mythweb/data/music |log chown -R apache:apache $HTTPDIR/mythweb echo "`date +%T` - Finished configuring Mythweb." |log } Install-MythThemes () { echo "`date +%T` - Starting to Install MythThemes." |log cd $SVNDIR/myththemes >> $LOG 2> $ELOG make install >> $LOG 2> $ELOG echo "`date +%T` - Finished Installing MythThemes." |log } Install-Mythtv() { echo "`date +%T` - Installing Mythtv-Frontend Mythtv-Backend & Mythtv-Setup" |log cd $SVNDIR/mythtv if [ "`ps -e |grep monit`" = "" ]; then echo "`date +%T` - Monit is not running" else echo "`date +%T` - Stopping Monit Monitoring of Mythbackend" monit unmonitor mythbackend fi echo -n "`date +%T` - " |tee -a $LOG /sbin/service mythbackend stop |tee -a $LOG sleep 5 killall mythfrontend >> $LOG 2> $ELOG # rpm -qa | grep myth | xargs rpm -e >> $LOG 2> $ELOG echo "`date +%T` - Installing Mythtv." |log make install >> $LOG 2> $ELOG echo "`date +%T` - Configuring Mythtv." |log cd $SVNDIR/mythtv/contrib >> $LOG 2> $ELOG if [ -e /etc/sysconfig/mythbackend ]; then echo "" > /dev/null else cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend >> $LOG 2> $ELOG chmod a+x /etc/rc.d/init.d/mythbackend >> $LOG 2> $ELOG cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend >> $LOG 2> $ELOG /sbin/chkconfig --level 345 mythbackend on >> $LOG 2> $ELOG echo "/usr/local/lib" >> /etc/ld.so.conf >> $LOG 2> $ELOG /sbin/chkconfig mythbackend on >> $LOG 2> $ELOG sleep 30 fi echo -n "`date +%T` - " |tee -a $LOG /sbin/service mythbackend start |tee -a $LOG if [ "`ps -e |grep monit`" = "" ]; then echo "" > /dev/null else echo "`date +%T` - Starting Monit Monitoring of Mythbackend" monit monitor mythbackend fi /sbin/ldconfig >> $LOG 2> $ELOG echo "`date +%T` - Mythtv is now Configured." |log echo "`date +%T` - Finished Installing Mythtv-Frontend Mythtv-Backend & Mythtv-Setup" |log } MythStream () { echo "`date +%T` - Starting MythStream Download, Compile, & Install" cd /tmp/svn/ >> $LOG 2> $ELOG rm -rf mythstream* >> $LOG 2> $ELOG wget http://home.kabelfoon.nl/~moongies/sw9vc4htz2/mythstream-v0.17_2.tar.gz >> $LOG 2> $ELOG tar -xzf mythstream-v0.17_2.tar.gz >> $LOG 2> $ELOG mv mythstream-0.17_2 mythstream >> $LOG 2> $ELOG rm -f mythstream-v0.17_2.tar.gz >> $LOG 2> $ELOG cd mythstream >> $LOG 2> $ELOG echo "7,8c7,8 >> $LOG 2> $ELOG < #PREFIX = /usr/local < PREFIX = /usr --- > PREFIX = /usr/local > #PREFIX = /usr" > mythstream.diff echo -n "`date +%T` - MythStream is " patch settings.pro mythstream.diff qmake mythstream.pro >> $LOG 2> $ELOG make >> $LOG 2> $ELOG make install >> $LOG 2> $ELOG cd /tmp/svn/mythplugins/mythmusic/mythmusic echo "43a44,50 > <type>STREAM</type> > <text>Internet Streams</text> > <action>PLUGIN mythstream</action> > <depends>mythstream</depends> > </button> > > <button> " > musicmenu.diff echo -n "`date +%T` - MythStream is " patch musicmenu.xml musicmenu.diff echo "43a44,50 > <type>STREAM</type> > <text>Stream Settings</text> > <action>CONFIGPLUGIN mythstream</action> > <depends>mythstream</depends> > </button> > > <button> " > music_settings.diff echo -n "`date +%T` - MythStream is " patch music_settings.xml music_settings.diff >> $LOG 2> $ELOG echo "`date +%T` - MythStream is Finished" } Finishing-Up () { echo "`date +%T` - Mythtv Updating is Finished." } ############################################################################### AutoMythtv () { echo "`date +%T` - Removeing old Config files & dirs in Mythtv." rm -f $SVNDIR/mythtv/config.* rm -f $SVNDIR/mythtv/config/* echo "`date +%T` - Starting MythTV Download from svn." |log svn co $URL/mythtv $SVNDIR/mythtv >> $SVNLOG 2> $ELOG Compile-Mythtv if [ -e $BULIDDIR/mythtv.diff ]; then rm -f $SVNDIR/mythtv/mythtv.diff cp $BULIDDIR/mythtv.diff $SVNDIR/mythtv/mythtv.diff cat $SVNDIR/mythtv/mythtv.diff |patch -p0 -N >> $LOG 2> $ELOG else echo "" > /dev/null fi echo "`date +%T` - Finished MythTV Download from svn." |log Install-Mythtv } AutoMythPlugins () { echo "`date +%T` - Removeing old Config files & dirs in MythPlugins." rm -f $SVNDIR/mythtv/config.* rm -f $SVNDIR/mythtv/config/* echo "`date +%T` - Starting MythPlugins Download from svn." |log svn co $URL/mythplugins $SVNDIR/mythplugins >> $SVNLOG 2> $ELOG echo "`date +%T` - Finished MythPlugins Download from svn." |log Compile-MythPlugins if [ -e $BULIDDIR/mythplugins.diff ]; then rm -f $SVNDIR/mythplugins/mythplugins.diff cp $BULIDDIR/mythplugins.diff $SVNDIR/mythplugins/mythplugins.diff cat $SVNDIR/mythplugins/mythplugins.diff |patch -p0 -N >> $LOG 2> $ELOG else echo "" > /dev/null fi Install-MythPlugins Install-MythWeb } AutoMythThemes () { echo "`date +%T` - Removeing old Config files & dirs in MythThemes." rm -f $SVNDIR/myththems/config.* rm -f $SVNDIR/myththems/config/* echo "`date +%T` - Starting MythThemes Download from svn." |log svn co $URL/myththemes $SVNDIR/myththemes >> $SVNLOG 2> $ELOG Compile-MythThemes if [ -e $BULIDDIR/myththemes.diff ]; then rm -f $SVNDIR/myththemes/myththemes.diff cp $BULIDDIR/myththemes.diff $SVNDIR/myththemes/myththemes.diff cat $SVNDIR/myththemes/mythtthemes.diff |patch -p0 -N >> $LOG 2> $ELOG else echo "" > /dev/null fi echo "`date +%T` - Finished MythThemes Download from svn." |log Install-MythThemes } ############################################################################### case "$1" in download) Download-svn ;; clean-download) Clean-Download-svn ;; compile) SVN=`svn info $SVNDIR/mythtv |grep "Revision: " |awk '{print $2 }'` Compile-Mythtv Compile-MythPlugins Compile-MythThemes mythtvosd --template=scroller --scroll_text="`hostname -s` is done compileing the latest updates. Please install the updates. The current svn version number is: $SVN" > /dev/null ;; install) Install-Mythtv Install-MythPlugins Install-MythThemes Install-MythWeb Finishing-Up ;; full) Clean-Download-svn Compile-Mythtv Compile-MythPlugins Compile-MythThemes MythStream Install-Mythtv Install-MythPlugins Install-MythWeb Install-MythThemes Finishing-Up ;; status) echo "`date +%T` - Staring Mythtv Tunk Status Check." MYTHSVN=`svn info $URL/mythtv |grep "Last Changed Rev:" |awk '{print $4 }'` PLUGSVN=`svn info $URL/mythplugins |grep "Last Changed Rev:" |awk '{print $4 }'` THEMSVN=`svn info $URL/myththemes |grep "Last Changed Rev:" |awk '{print $4 }'` MYTHLOCSVN=`svn info $SVNDIR/mythtv |grep "Last Changed Rev:" |awk '{print $4 }'` PLUGLOCSVN=`svn info $SVNDIR/mythplugins |grep "Last Changed Rev:" |awk '{print $4 }'` THEMLOCSVN=`svn info $SVNDIR/myththemes |grep "Last Changed Rev:" |awk '{print $4 }'` if [ $MYTHSVN = $MYTHLOCSVN ] ; then echo "`date +%T` - Mythtv Dose NOT need to be updated Current Version is: $MYTHSVN" else echo "`date +%T` - Mythtv Should Be Updated" echo "`date +%T` - Mythtv's Local Install is at $MYTHLOCSVN" echo "`date +%T` - But the Current Version is at $MYTHSVN" fi if [ $PLUGSVN = $PLUGLOCSVN ] ; then echo "`date +%T` - MythPlugins Dose NOT need to be updated Current Version is: $PLUGSVN" else echo "`date +%T` - MythPlugins Should Be Updated" echo "`date +%T` - MythPlugins' Local Install is at $PLUGLOCSVN" echo "`date +%T` - But the Current Version is at $PLUGSVN" fi if [ $THEMSVN = $THEMLOCSVN ] ; then echo "`date +%T` - MythThemes Dose NOT need to be updated Current Version is: $THEMSVN" else echo "`date +%T` - MythThemes Should Be Updated" echo "`date +%T` - MythThemes' Local Install is at $THEMLOCSVN" echo "`date +%T` - But the Current Version is at $THEMSVN" fi ;; clear) echo "`date +%T` - Stopping and cleaning Mythtv" echo "`date +%T` - You will need to reinstall Mythtv when this is done." echo -n "`date +%T` - Do you wish to Delete all Mythtv Files? " read DELFILES case "$DELFILES" in y|Y|yes|YES|Yes) echo "`date +%T` - OK Here we go." ;; n|N|no|NO|No) echo "`date +%T` - Fine then I didn't wont to delete the files anyways." exit 0 ;; *) echo "`date +%T` - You need to answer this Yes or No." exit 0 esac if [ "`ps -e |grep monit`" = "" ]; then echo "`date +%T` - Monit is not running" else echo "`date +%T` - Stopping Monit Monitoring of Mythbackend" monit unmonitor mythbackend fi echo -n "`date +%T` - " /sbin/service mythbackend stop sleep 5 killall mythfrontend >> $LOG 2> $ELOG killall mythwelcome >> $LOG 2> $ELOG killall mtd >> $LOG 2> $ELOG rm -rf $BULIDDIR/bin/myth* $BULIDDIR/bin/mtd $BULIDDIR/include/mythtv $BULIDDIR/lib/libmyth* $BULIDDIR/lib/mythtv $BULIDDIR/share/mythtv >> $LOG 2> $ELOG echo "`date +%T` - Mythtv Cleaning is done." ;; auto) echo "`date +%T` - Staring Auto update of the Mythtv Tunk." MYTHSVN=`svn info $URL/mythtv |grep "Last Changed Rev:" |awk '{print $4 }'` PLUGSVN=`svn info $URL/mythplugins |grep "Last Changed Rev:" |awk '{print $4 }'` THEMSVN=`svn info $URL/myththemes |grep "Last Changed Rev:" |awk '{print $4 }'` if [ -e $SVNDIR/mythtv/README ]; then MYTHLOCSVN=`svn info $SVNDIR/mythtv |grep "Last Changed Rev:" |awk '{print $4 }'` else rm -rf $SVNDIR/mythtv MYTHLOCSVN=None fi if [ -e $SVNDIR/mythplugins/README ]; then PLUGLOCSVN=`svn info $SVNDIR/mythplugins |grep "Last Changed Rev:" |awk '{print $4 }'` else rm -rf $SVNDIR/mythplugins PLUGLOCSVN=None fi if [ -e $SVNDIR/myththemes/README ]; then THEMLOCSVN=`svn info $SVNDIR/myththemes |grep "Last Changed Rev:" |awk '{print $4 }'` else rm -rf $SVNDIR/myththemes THEMLOCSVN=None fi if [ $MYTHSVN = $MYTHLOCSVN ] ; then echo "`date +%T` - Mythtv Dose NOT need to be updated Current Version is: $MYTHSVN" else echo "`date +%T` - Mythtv Will Be Updated" echo "`date +%T` - Mythtv's Local Install is at $MYTHLOCSVN" echo "`date +%T` - But the Current Version is at $MYTHSVN" AUTOMYTH=AutoMythtv fi if [ $PLUGSVN = $PLUGLOCSVN ] ; then echo "`date +%T` - MythPlugins Dose NOT need to be updated Current Version is: $PLUGSVN" else echo "`date +%T` - MythPlugins Will Be Updated" echo "`date +%T` - MythPlugins' Local Install is at $PLUGLOCSVN" echo "`date +%T` - But the Current Version is at $PLUGSVN" AUTOPLUG=AutoMythPlugins fi if [ $THEMSVN = $THEMLOCSVN ] ; then echo "`date +%T` - MythThemes Dose NOT need to be updated Current Version is: $THEMSVN" else echo "`date +%T` - MythThemes Will Be Updated" echo "`date +%T` - MythThemes' Local Install is at $THEMLOCSVN" echo "`date +%T` - But the Current Version is at $THEMSVN" AUTOTHEM=AutoMythThemes fi $AUTOMYTH $AUTOPLUG $AUTOTHEM #Install-MythThemes Finishing-Up ;; *) echo "" echo "Updatemyth will check the current Mythtv SVN Release and if the" echo "system needs a update will download and install JUST the updates." echo "UpdateMyth's Valid Commands are:" echo "" echo "auto # Check, Download, Compile & Install the Latest Release" echo "full # Force a Clean Download, Compile & Install the Latest SVN Release" echo "download # Download the Latest Release" echo "clean-download # Delete the SVN dir, then Download the Latest Release" echo "compile # Check, Download and Compile the Latest SVN Release" echo "install # Install the Last Compiled SVN Release" echo "status # Check to see if the current install is up to date" echo "clear # This will stop and Clean out all the myth files on the system" echo "" exit 0 ;; esac
Update this Page[edit | edit source]
cat /home/mythtv/bin/updatemyth |sed 's/^/ /' > /mythtv/updatemyth.txt