diff options
Diffstat (limited to 'abs/core/mythtv/stable-0.25')
31 files changed, 815 insertions, 473 deletions
diff --git a/abs/core/mythtv/stable-0.25/git_src/git_hash b/abs/core/mythtv/stable-0.25/git_src/git_hash index ae0574c..e29adf1 100644 --- a/abs/core/mythtv/stable-0.25/git_src/git_hash +++ b/abs/core/mythtv/stable-0.25/git_src/git_hash @@ -1 +1 @@ -f0e2ad85dbdd6dd4041a8b1e7d8b17e7b8746b63 +79a24c90efd3308895880cbad4a4e550986aedda diff --git a/abs/core/mythtv/stable-0.25/git_src/git_hash_web b/abs/core/mythtv/stable-0.25/git_src/git_hash_web index 814e09b..bf76f69 100644 --- a/abs/core/mythtv/stable-0.25/git_src/git_hash_web +++ b/abs/core/mythtv/stable-0.25/git_src/git_hash_web @@ -1 +1 @@ -8c43d8da31d738c75ec6abc9daff2772b16310c8 +89a347c85284c5cf3ca3ad7250f21c7e698af858 diff --git a/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD index 2ebe525..e5dea15 100644 --- a/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD +++ b/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD @@ -12,7 +12,7 @@ pkgname=('mytharchive' 'mythweather' 'mythzoneminder') pkgver=0.25 -pkgrel=4 +pkgrel=17 arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -49,7 +49,7 @@ build() { #find . -name '*.py' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@' cd ${srcdir}/${pkgbase} ./configure --prefix=/usr \ - --enable-all + --enable-all --python=/usr/bin/python2 qmake mythplugins.pro || return 1 make || return 1 @@ -57,11 +57,11 @@ build() { package_mytharchive() { pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows" - depends=("mythtv>=${pkgver}" 'libxmu' 'pil' 'dvdauthor' 'm2vrequantiser') + depends=("mythtv>=${pkgver}" 'libxmu' 'pil' 'dvdauthor' 'm2vrequantiser' 'mjpegtools' 'cdrkit' 'dvd+rw-tools') # replaces=('mytharchive') cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive" -# patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py.patch || return 1 + patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py.patch || return 1 make INSTALL_ROOT="${pkgdir}" install || return 1 } @@ -99,9 +99,7 @@ package_mythmusic() { package_mythnetvision() { pkgdesc="MythNetvision plugin for MythTV" - - - depends=("mythtv>=${pkgver}" 'python-pycurl' 'python-oauth' 'python-lxml' ) + depends=("mythtv>=${pkgver}" 'python-pycurl' 'python-oauth' 'python2-lxml' 'python2' ) # replaces=('mythnetvision') cd "${srcdir}/${_gitname}/${pkgbase}/mythnetvision" make INSTALL_ROOT="${pkgdir}" install || return 1 @@ -127,11 +125,11 @@ package_mythweather() { package_mythzoneminder() { pkgdesc="Allows for viewing of CCTV cameras through zoneminder" - depends=("mythtv>=${pkgver}" zoneminder) + depends=("mythtv>=${pkgver}") # replaces=('mythzoneminder') # install=mythplugins-mythzoneminder.install cd "${srcdir}/${_gitname}/${pkgbase}/mythzoneminder" make INSTALL_ROOT="${pkgdir}" install || return 1 } -md5sums=('cc7e6887acda167fcc5336af33f29411') +md5sums=('19446f65722769926bafad220bbc6551') diff --git a/abs/core/mythtv/stable-0.25/mythplugins/__changelog b/abs/core/mythtv/stable-0.25/mythplugins/__changelog new file mode 100644 index 0000000..48cdce8 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythplugins/__changelog @@ -0,0 +1 @@ +placeholder diff --git a/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch b/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch index abac7df..380385b 100644 --- a/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch +++ b/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch @@ -1,23 +1,32 @@ ---- mythburn.py.orig 2011-09-16 13:41:43.000000000 -0500 -+++ mythburn.py 2011-09-17 10:51:36.000000000 -0500 -@@ -38,7 +38,7 @@ - #****************************************************************************** +--- mythburn.py.orig 2012-12-16 15:23:41.000000000 -0600 ++++ mythburn.py 2012-12-18 14:23:56.000000000 -0600 +@@ -44,7 +44,7 @@ + # version of script - change after each update --VERSION="0.1.20101206-1" -+VERSION="0.1.20110821-1" +-VERSION="0.1.20120304-1" ++VERSION="0.1.20121218-1" # keep all temporary files for debugging purposes # set this to True before a first run through when testing -@@ -75,6 +75,7 @@ +@@ -93,6 +93,7 @@ from fcntl import ioctl import CDROM from shutil import copy +from subprocess import Popen, PIPE - # media types (should match the enum in mytharchivewizard.h) - DVD_SL = 0 -@@ -606,7 +607,7 @@ + import MythTV + from MythTV.altdict import OrdDict +@@ -425,7 +426,7 @@ + os.remove(os.path.join(root, name)) + + ############################################################# +-# Romoves all the objects from a directory ++# Removes all the objects from a directory + + def deleteEverythingInFolder(folder): + for root, dirs, files in os.walk(folder, topdown=False): +@@ -615,7 +616,7 @@ # of a video file from its stream info file def getVideoParams(folder): @@ -26,7 +35,7 @@ #open the XML containing information about this file infoDOM = xml.dom.minidom.parse(os.path.join(folder, 'streaminfo.xml')) -@@ -642,14 +643,14 @@ +@@ -651,14 +652,14 @@ # Gets the aspect ratio of a video file from its stream info file def getAspectRatioOfVideo(index): @@ -44,65 +53,85 @@ video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0] if video.attributes["aspectratio"].value != 'N/A': aspect_ratio = float(video.attributes["aspectratio"].value) -@@ -1762,6 +1763,37 @@ +@@ -679,7 +680,7 @@ + + #error out if its the wrong XML + if infoDOM.documentElement.tagName != "file": +- fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml')) ++ fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml')) + + video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0] + video_start = float(video.attributes["start_time"].value) +@@ -1432,9 +1433,23 @@ + + data.rating = str(vid.userrating) + +- if doesFileExist(vid.coverfile): +- data.coverfile = vid.coverfile ++ data.coverfile = None + ++ #Check filename for valid path. If valid return nothing. ++ if os.path.isfile(str(vid.coverfile)): ++ write("Coverart is in local directory: %s" % vid.coverfile) ++ data.coverfile = vid.coverfile ++ else: ++ # iterate through storage group directories to get Coverart ++ for sg in DB.getStorageGroup(groupname='Coverart', hostname=DB.gethostname()): ++ if os.path.isfile(os.path.join(sg.dirname, str(vid.coverfile))): ++ write("Coverart is in Storage Groups: %s%s" % (sg.dirname, vid.coverfile)) ++ data.coverfile = os.path.join(sg.dirname, str(vid.coverfile)) ++ break ++ ++ if data.coverfile == None: ++ write("No Coverart Found") ++ + elif file.attributes["type"].value=="file": + data.type = file.attributes["type"].value + data.filename = file.attributes["filename"].value +@@ -1485,6 +1500,30 @@ ############################################################# -+# Finds the path of a video file from the local video path -+# or Storage Group ++# Finds the path of a video file from a Storage Group + +def getVideoPath(filename): -+ # connect -+ db = getDatabaseConnection() -+ # create a cursor -+ cursor = db.cursor() -+ # execute SQL statement -+ cursor.execute("""SELECT dirname -+ FROM storagegroup -+ WHERE groupname='Videos'""") -+ # get the resultset as a tuple -+ result = cursor.fetchall() -+ # make result a list and add local video path if exists -+ result = [videopath] + list(result) -+ -+ # iterate through result set -+ for sg in result: -+ if doesFileExist(os.path.join("".join(sg), filename)) == True: -+ filepath = "".join(sg) -+ write("Video Path: %s" % filepath) -+ return (filepath) -+ break -+ -+ db.close() -+ del db -+ del cursor ++ ++ filepath = None + ++ #Check filename for valid path. If valid return nothing. ++ if os.path.isfile(filename): ++ write("Video is in local video directory: %s" % filename) ++ return (filepath) ++ else: ++ # iterate through storage group directories ++ for sg in DB.getStorageGroup(groupname='Videos', hostname=DB.gethostname()): ++ wholepath = os.path.join(sg.dirname, filename) ++ if os.path.isfile(wholepath): ++ write("Video is in Storage Groups: %s" % wholepath) ++ filepath = "".join(sg.dirname) ++ return (filepath) ++ break ++ ++ if filepath == None: ++ write("Video is not in local video directory or Storage Groups") + +############################################################# # Pre-process a single video/recording file def preProcessFile(file, folder, count): -@@ -1775,11 +1807,11 @@ - #3. Extract a single frame from the video to use as a thumbnail and resolution check - mediafile="" - -- if file.attributes["type"].value == "recording": -+ if file.attributes["type"].value=="recording": +@@ -1501,7 +1540,7 @@ + if file.attributes["type"].value == "recording": mediafile = file.attributes["filename"].value -- elif file.attributes["type"].value == "video": + elif file.attributes["type"].value == "video": - mediafile = os.path.join(videopath, file.attributes["filename"].value) -- elif file.attributes["type"].value == "file": -+ elif file.attributes["type"].value=="video": + mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value) -+ elif file.attributes["type"].value=="file": + elif file.attributes["type"].value == "file": mediafile = file.attributes["filename"].value else: - fatalError("Unknown type of video file it must be 'recording', 'video' or 'file'.") -@@ -1935,9 +1967,39 @@ +@@ -1661,6 +1700,37 @@ + fatalError("Failed while running mytharchivehelper to get stream information.\n" + "Result: %d, Command was %s" % (result, command)) - if result <> 0: - fatalError("Failed while running mytharchivehelper to get stream information from %s" % filename) -+ + #open the XML containing information about this file + infoDOM = xml.dom.minidom.parse(xmlFilename) + @@ -114,7 +143,7 @@ + video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0] + + #use ffmpeg to get display aspect ratio (DAR) of video -+ cmd = path_ffmpeg[0] + " -i " + quoteFilename(file.attributes["filename"].value) + " 2>&1" ++ cmd = "mythffmpeg -i " + quoteCmdArg(file.attributes["filename"].value) + " 2>&1" + aspect_ratio = Popen(cmd, shell=True, stdout=PIPE).stdout.read() + if "DAR" in aspect_ratio: + #clean DAR string @@ -133,74 +162,66 @@ + video.setAttribute("aspectratio",str(aspect_ratio)) + + WriteXMLToFile (infoDOM,xmlFilename) - ++ # print out the streaminfo.xml file to the log -- infoDOM = xml.dom.minidom.parse(xmlFilename) - write("streaminfo.xml :-\n" + infoDOM.toprettyxml(" ", ""), False) + infoDOM = xml.dom.minidom.parse(xmlFilename) + write(xmlFilename + ":-\n" + infoDOM.toprettyxml(" ", ""), False) +@@ -1707,7 +1777,7 @@ + write("Using cutlist: %s" % cutlist_s) - ############################################################# -@@ -2322,7 +2384,7 @@ + if (localfile != ""): +- localfile = quoteFilename(localfile) ++ localfile = quoteCmdArg(localfile) + if usecutlist == True: + command = "mythtranscode --mpeg2 --honorcutlist %s --infile %s --outfile %s" % (cutlist_s, quoteCmdArg(localfile), quoteCmdArg(destination)) + else: +@@ -1973,7 +2043,7 @@ ############################################################# # Re-encodes a file to mpeg2 -def encodeVideoToMPEG2(source, destvideofile, video, audio1, audio2, aspectratio, profile): +def encodeVideoToMPEG2(source, destvideofile, video, folder, audio1, audio2, aspectratio, profile): - """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use ffmpeg""" + """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use mythffmpeg""" profileNode = findEncodingProfile(profile) -@@ -2347,6 +2409,18 @@ - value = quoteFilename(destvideofile) +@@ -1998,7 +2068,36 @@ + value = quoteCmdArg(destvideofile) if value == "%aspect": value = aspectratio + if value == "720x480" or value == "720x576": -+ #add padding to correct for aspects > than 1.9:1 + videores, fps, videoAR = getVideoParams(folder) ++ videoWidth = int(videores.split("x")[0]) ++ videoHeight = int(videores.split("x")[1]) ++ ++ #add padding to correct for aspects > than 1.9:1 + if float(videoAR) >= 1.9: ++ #check which video type and set the correct height + if videomode == "ntsc": -+ videoheight = 480 ++ videoModeHeight = 480 + else: -+ videoheight = 576 -+ -+ croppixels = videoheight - (720 / float(videoAR)) -+ write("CropPixels Total: %s" % croppixels) -+ value = "720x%d -vf pad=720:%d:0:%d:black" % (videoheight - croppixels, videoheight, croppixels / 2) ++ videoModeHeight = 576 ++ #calculate the video height based on the aspect ratio of the video ++ #multiply by 1.185 to compensate for dvds non-square pixels ++ calVideoHeight = int(round((720 / float(videoAR)) * 1.185)) ++ if calVideoHeight % 2 == 1: ++ calVideoHeight = calVideoHeight + 1 ++ #write("calVideoHeight: %s" % calVideoHeight) ++ ++ #use original video height if the calculated video height is close ++ if (calVideoHeight + 20 < videoHeight) or (calVideoHeight - 20 > videoHeight): ++ videoHeight = calVideoHeight ++ ++ cropPixels = videoModeHeight - videoHeight ++ ++ write("Crop Pixels Total: %s" % cropPixels) ++ name = "-vf" ++ value = "\"scale=720:%d, setsar=1:1, pad=720:%d:0:%d:black\"" % (videoModeHeight - cropPixels, videoModeHeight, cropPixels / 2) ++ # only re-encode the audio if it is not already in AC3 format if audio1[AUDIO_CODEC] == "AC3": -@@ -2383,12 +2457,12 @@ - command += " -newaudio" - - #make sure we get the correct stream(s) that we want -- command += " -map 0:%d -map 0:%d " % (video[VIDEO_INDEX], audio1[AUDIO_INDEX]) -+ command += " -map 0:%d -map 0:%d" % (video[VIDEO_INDEX], audio1[AUDIO_INDEX]) - if audio2[AUDIO_ID] != -1: - command += "-map 0:%d" % (audio2[AUDIO_INDEX]) - - if passes == 1: -- write(command) -+ write("Running ffmpeg: %s" % command) - result = runCommand(command) - if result!=0: - fatalError("Failed while running ffmpeg to re-encode video.\n" -@@ -2399,7 +2473,7 @@ - - pass1 = string.replace(command, "%passno","1") - pass1 = string.replace(pass1, "%passlogfile", passLog) -- write("Pass 1 - " + pass1) -+ write("Running ffmpeg Pass 1: %s" % pass1) - result = runCommand(pass1) - - if result!=0: -@@ -2411,7 +2485,7 @@ - - pass2 = string.replace(command, "%passno","2") - pass2 = string.replace(pass2, "%passlogfile", passLog) -- write("Pass 2 - " + pass2) -+ write("Running ffmpeg Pass 2: %s" % pass2) - result = runCommand(pass2) - - if result!=0: -@@ -2443,10 +2517,6 @@ + if name == "-acodec": +@@ -2094,10 +2193,6 @@ outaudiosamplerate = 48000 outaudiocodec = "ac3" deinterlace = 0 @@ -211,7 +232,7 @@ qmin = 5 qmax = 31 qdiff = 31 -@@ -2470,14 +2540,6 @@ +@@ -2121,14 +2216,6 @@ outvideores = value if name == "-deinterlace": deinterlace = 1 @@ -226,78 +247,39 @@ if name == "-qmin": qmin = value if name == "-qmax": -@@ -2526,7 +2588,6 @@ - command += "-aspect %s -r %s " % (aspectratio, fps) - if (deinterlace == 1): - command += "-deinterlace " -- command += "-croptop %s -cropright %s -cropbottom %s -cropleft %s " % (croptop, cropright, cropbottom, cropleft) - command += "-s %s -b %s -vcodec mpeg2video " % (outvideores, outvideobitrate) - command += "-qmin %s -qmax %s -qdiff %s " % (qmin, qmax, qdiff) - command += "-ab %s -ar %s -acodec %s " % (outaudiobitrate, outaudiosamplerate, outaudiocodec) -@@ -2543,7 +2604,7 @@ - if (not(doesFileExist(os.path.join(folder, "audout")) and doesFileExist(os.path.join(folder, "vidout")))): - fatalError("Waited too long for mythtranscode to create the fifos - giving up!!") - -- write("Running ffmpeg") -+ write("Running ffmpeg: %s" % command) - result = runCommand(command) - if result != 0: - os.kill(PID, signal.SIGKILL) -@@ -4724,7 +4785,7 @@ +@@ -4409,7 +4496,7 @@ elif file.attributes["type"].value=="recording": mediafile = file.attributes["filename"].value elif file.attributes["type"].value=="video": - mediafile=os.path.join(videopath, file.attributes["filename"].value) -+ mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value) ++ mediafile=os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value) elif file.attributes["type"].value=="file": mediafile=file.attributes["filename"].value else: -@@ -4834,8 +4895,7 @@ - starttime = -1 - usecutlist = -1 - -- encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder, -- profile, usecutlist) -+ encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder, profile, usecutlist) - mediafile = os.path.join(folder, 'newfile2.mpg') - else: - #we need to re-encode the file, make sure we get the right video/audio streams -@@ -4861,8 +4921,7 @@ - profile = defaultEncodingProfile +@@ -4547,7 +4634,7 @@ #do the re-encode -- encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, + encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, - audio1, audio2, aspectratio, profile) -+ encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, folder, audio1, audio2, aspectratio, profile) ++ folder, audio1, audio2, aspectratio, profile) mediafile = os.path.join(folder, 'newfile2.mpg') #remove the old mediafile that was run through mythtranscode -@@ -4936,7 +4995,7 @@ +@@ -4621,7 +4708,7 @@ elif file.attributes["type"].value=="recording": mediafile = file.attributes["filename"].value elif file.attributes["type"].value=="video": - mediafile=os.path.join(videopath, file.attributes["filename"].value) -+ mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value) ++ mediafile=os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value) elif file.attributes["type"].value=="file": mediafile=file.attributes["filename"].value else: -@@ -4988,8 +5047,7 @@ - starttime = -1 - usecutlist = -1 - -- encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder, -- profile, usecutlist) -+ encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder, profile, usecutlist) - mediafile = os.path.join(folder, 'newfile2.mpg') - else: - #we need to re-encode the file, make sure we get the right video/audio streams -@@ -5015,8 +5073,7 @@ - profile = defaultEncodingProfile +@@ -4701,7 +4788,7 @@ #do the re-encode -- encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, + encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, - audio1, audio2, aspectratio, profile) -+ encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, folder, audio1, audio2, aspectratio, profile) ++ folder, audio1, audio2, aspectratio, profile) mediafile = os.path.join(folder, 'newfile2.mpg') #remove an intermediate file diff --git a/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install b/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install index 142212b..a4e0c0d 100644 --- a/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install +++ b/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install @@ -1,3 +1,11 @@ post_install() { - echo "If you want to use this plugin, install zoneminder from AUR." + . /etc/systemconfig + if [ $SystemType = Master_backend -o $SystemType = Standalone ] + then + echo "This looks a zoneminder server install" + echo "Installing zoneminder" + #for reference the pacman statement below will not work because of a db lock. + pacman -S zoneminder + fi + } diff --git a/abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch b/abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch new file mode 100644 index 0000000..d8f4a0c --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch @@ -0,0 +1,52 @@ +From b20171597097f8b933065ef3291c63194d310fbf Mon Sep 17 00:00:00 2001 +From: George Nassas <george@nassas.com> +Date: Sun, 10 Jun 2012 13:36:42 -0400 +Subject: [PATCH] protect metadata loads from multiple threads + +--- + mythtv/libs/libmythmetadata/dbaccess.cpp | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +diff --git a/mythtv/libs/libmythmetadata/dbaccess.cpp b/mythtv/libs/libmythmetadata/dbaccess.cpp +index 67cd904..46adb7a 100644 +--- a/mythtv/libs/libmythmetadata/dbaccess.cpp ++++ b/mythtv/libs/libmythmetadata/dbaccess.cpp +@@ -47,8 +47,11 @@ class SingleValueImp + + virtual ~SingleValueImp() {} + ++ mutable QMutex mutex; ++ + void load_data() + { ++ QMutexLocker locker(&mutex); + if (!m_ready) + { + fill_from_db(); +@@ -271,8 +274,11 @@ class MultiValueImp + .arg(m_value_name).arg(m_table_name).arg(m_id_name); + } + ++ mutable QMutex mutex; ++ + void load_data() + { ++ QMutexLocker locker(&mutex); + if (!m_ready) + { + fill_from_db(); +@@ -730,8 +736,11 @@ class FileAssociationsImp + } + } + ++ mutable QMutex mutex; ++ + void load_data() + { ++ QMutexLocker locker(&mutex); + if (!m_ready) + { + fill_from_db(); +-- +1.7.2.5 + diff --git a/abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch b/abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch new file mode 100644 index 0000000..440a37a --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch @@ -0,0 +1,27 @@ +From 2fb4b7bb111d7ec256f0b0f96c7271bcc0f61766 Mon Sep 17 00:00:00 2001 +From: George Nassas <george@nassas.com> +Date: Fri, 24 Aug 2012 00:17:08 -0400 +Subject: [PATCH 4/4] restore fe netcontrol play/resume functionality + +--- + mythtv/programs/mythfrontend/playbackbox.cpp | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/mythtv/programs/mythfrontend/playbackbox.cpp b/mythtv/programs/mythfrontend/playbackbox.cpp +index 734cce1..44bb343 100644 +--- a/mythtv/programs/mythfrontend/playbackbox.cpp ++++ b/mythtv/programs/mythfrontend/playbackbox.cpp +@@ -3723,7 +3723,9 @@ void PlaybackBox::processNetworkControlCommand(const QString &command) + + pginfo.SetPathname(pginfo.GetPlaybackURL()); + +- PlayX(pginfo, true, true); ++ bool ignoreBookmark = tokens[1] == "PLAY"; ++ ++ PlayX(pginfo, ignoreBookmark, true); + } + else + { +-- +1.7.2.5 + diff --git a/abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch b/abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch new file mode 100644 index 0000000..ff1f4b6 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch @@ -0,0 +1,19 @@ +*** a/mythtv/bindings/php/MythBase.php.old 2011-04-03 06:05:31.000000000 -0500 +--- b/mythtv/bindings/php/MythBase.php 2012-03-27 05:05:16.000000000 -0500 +*************** +*** 51,57 **** + + public function __destruct() { + if (!is_null($this->cacheKey)) +! Cache::setObject($this->cacheKey, &$this, $this->cacheLifetime); + $this->cacheKey = null; + } + +--- 51,57 ---- + + public function __destruct() { + if (!is_null($this->cacheKey)) +! Cache::setObject($this->cacheKey, $this, $this->cacheLifetime); + $this->cacheKey = null; + } + diff --git a/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD index 0d5f979..3da2079 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD +++ b/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD @@ -6,30 +6,31 @@ pkgname=mythtv pkgver=0.25 -pkgrel=9 +pkgrel=25 commit_hash=`cat ../git_src/git_hash` pkgdesc="A Homebrew PVR project $commit_hash" arch=('i686' 'x86_64') url="http://www.mythtv.org/" license=('GPL') -depends=('mysql-clients' +depends=('mysql-clients' 'qt' + 'qtwebkit' 'lame' 'lirc-utils' - 'ffmpeg-svn' + 'ffmpeg' 'fribidi' 'perl-soap-lite' - 'perl-date-manip' + 'perl-date-manip' 'perl-xml-sax' 'perl-math-round' 'perl-net-upnp' 'perl-dbd-mysql' 'perl-time-hires' - 'libavc1394' - 'wget' + 'libavc1394' + 'wget' 'libiec61883' 'mysql-python' - 'python-lxml' + 'python2-lxml' 'mesa' 'libxinerama' 'libxrandr' @@ -43,7 +44,10 @@ depends=('mysql-clients' 'perl-io-socket-inet6' 'glew' 'openssl' - 'libxml2') + 'libxml2' + 'lsdvd' + 'dvdbackup' + 'x264') #glew for gpu commerical flagging #openssl for roap @@ -57,7 +61,16 @@ groups=('pvr') #options=(!strip) #MAKEFLAGS="-j6" install='mythtv.install' -patchs=('myth_settings.patch') + +#http://code.mythtv.org/trac/ticket/10504 mythweb php +#http://code.mythtv.org/trac/ticket/10773 mythexpress +#http://code.mythtv.org/trac/ticket/10825 mythexpress +#http://code.mythtv.org/trac/ticket/11032 mythexpress +patchs=('myth_settings.patch' 'MythBase.php.patch' + 'bonjour-correction.patch' + '0001-protect-metadata-loads-from-multiple-threads.patch' + '0004-restore-fe-netcontrol-play-resume-functionality.patch') + optdepends=('xmltv: to download tv listings') replaces=('mythvideo' 'myththemes') conflicts=('mythvideo' 'myththemes') @@ -90,6 +103,9 @@ build() { #sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro #find bindings/python contrib -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@' + #Fix Python DepreciationWarning + sed -i 's/return super(Artwork, cls).__new__(cls, attr, parent, imagetype)/return super(Artwork, cls).__new__(cls)/' ${srcdir}/mythtv/bindings/python/MythTV/dataheap.py + ARCH=${CARCH/_/-} ./configure --prefix=/usr --cpu=${ARCH} \ --disable-audio-jack \ @@ -100,6 +116,8 @@ build() { --enable-vdpau \ --enable-crystalhd \ --dvb-path=/usr/include \ + --enable-libmp3lame \ + --enable-libx264 \ --with-bindings=perl,python --python=python2 || return 1 make all || return 1 @@ -123,7 +141,7 @@ package() { patch -p0 < ${startdir}/menu-xml/mainmenu.xml.patch || return 1 patch -p0 < ${startdir}/menu-xml/optical_menu.xml.patch || return 1 patch -p0 < ${startdir}/menu-xml/library.xml.patch || return 1 - patch -p0 < ${startdir}/menu-xml/util_menu.xml.patch || return 1 + #patch -p0 < ${startdir}/menu-xml/util_menu.xml.patch || return 1 # make log dir mkdir -p ${pkgdir}/var/log/mythtv @@ -136,7 +154,11 @@ package() { md5sums=('7ef6de58240e7aad389a0b13d91b1cf6' '2babd4b8e146a7538d18dcd55695b0be' - 'c4db7784c5107ae846fd795a4dabe0bc' + '322f48528b350f0e6aebfff6eab4c4ee' + '9ec33d6956464283636c1f9a781dd4fd' + '8e2a055bb3beae04c88a8e603e080422' + '67f7316c750fba17fa578d10840b9dbd' + 'ae23e6a8cffbe335fa37bf59978bf7a2' 'f735805a80b0d1180dee01f9df1b7004' 'f407d6af23e74a49540755420f84fa58' '5469d9921b726db750b991c87d226158') diff --git a/abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch b/abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch new file mode 100644 index 0000000..9456809 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch @@ -0,0 +1,32 @@ +From 8929314e77dfc5fe9bcc58f4ace4e7ba6fea9bef Mon Sep 17 00:00:00 2001 +From: George Nassas <george@nassas.com> +Date: Tue, 29 May 2012 10:11:38 -0400 +Subject: [PATCH] make backend's bonjour service name dns-compliant + +--- + mythtv/programs/mythbackend/mediaserver.cpp | 7 ++----- + 1 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/mythtv/programs/mythbackend/mediaserver.cpp b/mythtv/programs/mythbackend/mediaserver.cpp +index 043140d..19d0eb9 100644 +--- a/mythtv/programs/mythbackend/mediaserver.cpp ++++ b/mythtv/programs/mythbackend/mediaserver.cpp +@@ -256,13 +256,10 @@ void MediaServer::Init(bool bIsMaster, bool bDisableUPnp /* = false */) + m_bonjour = new BonjourRegister(); + if (m_bonjour) + { +- QByteArray dummy; + QByteArray name("Mythbackend on "); + name.append(gCoreContext->GetHostName()); +- m_bonjour->Register(nPort, +- bIsMaster ? "_mythbackend-master._tcp" : +- "_mythbackend-slave._tcp", +- name, dummy); ++ QByteArray txt(bIsMaster ? "\x0Clevel=master" : "\x0Blevel=slave"); ++ m_bonjour->Register(nPort, "_mythbackend._tcp", name, txt); + } + #endif + } +-- +1.7.2.5 + diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml index c436423..b1fa6b5 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml @@ -1,96 +1,98 @@ <mythmenu name="HOST_SETTINGS"> + <button> + <type>MV_ACCESS_SETUP_MENU</type> + <text>Access Control</text> + <action>EXEC mythinstall -s accesscontrol </action> + </button> + + <button> + <type>MV_SOFTWARE_MENU</type> + <text>Add/Remove software</text> + <action>EXEC mythinstall -s plugins,software </action> + </button> + + <button> + <type>MV_ADVANCED_SETUP_MENU</type> + <text>Advanced</text> + <action>EXEC mythinstall -s advanced</action> + </button> + + <button> + <type>MV_AUDIO_SETUP_MENU</type> + <text>Audio Settings</text> + <action>EXEC mythinstall -s sound </action> + </button> + + <button> + <type>MV_ADVANCED_X_SETUP_MENU</type> + <text>Display</text> + <action>EXEC mythinstall -s advancedX</action> + </button> + + <button> + <type>MV_NETWORK_SETUP_MENU</type> + <text>Dynamic DNS</text> + <action>EXEC mythinstall -s ddns </action> + </button> <button> - <type>MV_NETWORK_SETUP_MENU</type> - <text>Network Settings</text> - <action>EXEC mythinstall -s network </action> + <type>MV_FILESHARES_MENU</type> + <text>File Shares</text> + <action>EXEC mythinstall -s fileshare</action> </button> <button> - <type>MV_NETWORK_SETUP_MENU</type> - <text>DDNS Settings</text> - <action>EXEC mythinstall -s ddns </action> - </button> - <button> - <type>MV_SYSTEM_SETUP_MENU</type> - <text>System Type</text> - <action>EXEC mythinstall -s hostype </action> + <type>MV_MISC_SETUP_MENU</type> + <text>Miscellanous</text> + <action>EXEC mythinstall -s misc </action> </button> <button> - <type>MV_SCREENSAVER_SETUP_MENU</type> - <text>Screensaver Settings</text> - <action>EXEC mythinstall -s screensaver </action> + <type>MV_NETWORK_SETUP_MENU</type> + <text>Network</text> + <action>EXEC mythinstall -s network </action> </button> <button> - <type>MV_IR_SETUP_MENU</type> - <text>Remotes</text> + <type>MV_IR_SETUP_MENU</type> + <text>Remotes</text> <action>EXEC mythinstall -s ir </action> </button> <button> - <type>MV_MISC_SETUP_MENU</type> - <text>Miscellanous Settings</text> - <action>EXEC mythinstall -s misc </action> - </button> - - <button> - <type>MV_SOFTWARE_MENU</type> - <text>Software</text> - <action>EXEC mythinstall -s plugins,software </action> - </button> - - - - <button> - <type>MV_SHUTDOWN_SETUP_MENU</type> - <text>Shutdown Settings</text> - <action>EXEC mythinstall -s sleep </action> - </button> - - <button> - <type>MV_ADVANCED_X_SETUP_MENU</type> - <text>Display Settings</text> - <action>EXEC mythinstall -s advancedX</action> - </button> - - <button> - <type>MV_ADVANCED_SETUP_MENU</type> - <text>Advanced Settings</text> - <action>EXEC mythinstall -s advanced</action> + <type>MV_SCREENSAVER_SETUP_MENU</type> + <text>Screensaver</text> + <action>EXEC mythinstall -s screensaver </action> </button> <button> - <type>MV_AUDIO_SETUP_MENU</type> - <text>Audio Settings</text> - <action>EXEC mythinstall -s sound </action> + <type>MV_SHUTDOWN_SETUP_MENU</type> + <text>Shutdown Settings</text> + <action>EXEC mythinstall -s sleep </action> </button> <button> - <type>MV_ACCESS_SETUP_MENU</type> - <text>Access Control</text> - <action>EXEC mythinstall -s accesscontrol </action> + <type>MV_SYSTEM_SETUP_MENU</type> + <text>System Type</text> + <action>EXEC mythinstall -s hostype </action> </button> <button> - <type>MV_USER_SETUP_MENU</type> - <text>User Accounts</text> - <action>EXEC mythinstall -s user </action> + <type>MV_USER_SETUP_MENU</type> + <text>User Accounts</text> + <action>EXEC mythinstall -s user </action> </button> <button> - <type>MV_WEBACCESS_SETUP_MENU</type> - <text>Web Security</text> - <action>EXEC mythinstall -s webuser </action> + <type>MV_VNC_SETUP_MENU</type> + <text>VNC Service</text> + <action>EXEC mythinstall -s vnc </action> </button> - <!-- <button> - <type>SETUP_MENU</type> - <text>Settings Profile Manager</text> - <action>EXEC mythinstall -t </action> + <type>MV_WEBACCESS_SETUP_MENU</type> + <text>Web Security</text> + <action>EXEC mythinstall -s webuser </action> </button> - --> </mythmenu> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml new file mode 100644 index 0000000..2647d81 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<mythmenu name="OPTICAL_DISK"> + + <button> + <type>DVD_RIP</type> + <text>Mirror DVD</text> + <description>Creates a mirror of your DVD</description> + <action>EXEC /usr/LH/bin/ripD_eject.sh m &</action> + </button> + + <button> + <type>DVD_RIP</type> + <text>ISO of DVD</text> + <description>Creates an ISO of your DVD</description> + <action>EXEC /usr/LH/bin/ripD_eject.sh i &</action> + </button> + + <button> + <type>DVD_RIP</type> + <text>High Quality</text> + <description>Creates a high quality MPEG4 of your DVD</description> + <action>EXEC /usr/LH/bin/ripD_eject.sh h &</action> + </button> + + <button> + <type>DVD_RIP</type> + <text>Normal Quality</text> + <description>Creates a normal quality MPEG4 of your DVD</description> + <action>EXEC /usr/LH/bin/ripD_eject.sh n &</action> + </button> + + <button> + <type>DVD_RIP</type> + <text>Low Quality</text> + <description>Creates a low quality MPEG4 of your DVD</description> + <action>EXEC /usr/LH/bin/ripD_eject.sh l &</action> + </button> + +</mythmenu> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml new file mode 100644 index 0000000..017f90b --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<mythmenu name="INFO"> + + <button> + <type>NEWS</type> + <text>News Feeds</text> + <description>Keep up with the news</description> + <action>PLUGIN mythnews</action> + <depends>mythnews</depends> + </button> + + <button> + <type>MYTHTWITTER_TIMELINE</type> + <text>Twitter</text> + <description>Send and receive tweets</description> + <action>JUMP MythTwitter_Timeline</action> + <depends>mythtwitter</depends> + </button> + + <button> + <type>WEATHER</type> + <text>Weather</text> + <action>PLUGIN mythweather</action> + <description>Local weather forecast</description> + <depends>mythweather</depends> + </button> + + <button> + <type>WEATHER</type> + <text>Weather Station</text> + <action>PLUGIN mythwstation</action> + <depends>mythwstation</depends> + </button> + + <button> + <type>WEBPAGE</type> + <text>Web</text> + <description>Browse the web</description> + <action>PLUGIN mythbrowser</action> + <depends>mythbrowser</depends> + </button> + + <button> + <type>RECIPE</type> + <text>Recipes</text> + <description>Start cooking!</description> + <action>PLUGIN mythRecipe</action> + <depends>mythrecipe</depends> + </button> + + <button> + <type>TV_STATUS</type> + <text>System Status</text> + <description>See what your system is doing</description> + <action>TV_STATUS</action> + </button> + + <button> + <type>ZONEMINDER</type> + <text>ZoneMinder</text> + <description>Home surveillance</description> + <action>PLUGIN mythzoneminder</action> + <depends>mythzoneminder</depends> + </button> + +<!-- + <button> + <type>SMOLT</type> + <text>Hardware profile</text> + <description>Tell us what hardware you have so we can support it</description> + <action>PLUGIN mythsmolt</action> + <depends>mythsmolt</depends> + </button> + --> + +</mythmenu> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch index fb695f0..8c36a62 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch @@ -7,7 +7,7 @@ + <type>STREAM</type> + <text>Play Online Streams</text> + <description></description> -+ <action>MENU is.xml</action> ++ <action>MENU gen_is.xml</action> + </button> + + <button> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml index 01b6ffa..342766d 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml @@ -34,6 +34,7 @@ <button> <type>LINHES_SETUP</type> <text>LinHES Configuration</text> + <description>Configure LinHES</description> <action>MENU HOST_SETTINGS.xml</action> </button> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch index 9b083ac..73a8940 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch @@ -1,5 +1,5 @@ ---- themes/defaultmenu/mainmenu.xml.orig 2012-04-21 17:33:52.176349680 +0000 -+++ themes/defaultmenu/mainmenu.xml 2012-04-21 17:35:03.369680109 +0000 +--- themes/defaultmenu/mainmenu.xml.orig 2012-07-29 21:39:46.000000000 +0000 ++++ themes/defaultmenu/mainmenu.xml 2012-07-29 21:41:50.000000000 +0000 @@ -1,5 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <mythmenu name="MAIN"> @@ -12,7 +12,7 @@ <button> <type>MENU_MEDIA_LIBRARY</type> -@@ -30,17 +36,10 @@ +@@ -30,18 +36,11 @@ </button> <button> @@ -27,9 +27,11 @@ - <text>Setup</text> - <description>Configure MythTV and plugins</description> - <action>MENU main_settings.xml</action> +- <password>SetupPinCode</password> + <text>Service Menu</text> + <description>Configure your system</description> -+ <action>MENU linhes.xml</action> ++ <action>MENU linhes.xml</action> ++ <password>SetupPinCode</password> </button> </mythmenu> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml index 5914b33..7890d88 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml @@ -1,17 +1,17 @@ <mythmenu name="LinHES"> - <button> <type>BACKUP</type> <text>Do you wish to backup?</text> + <description></description> <action>NONE</action> </button> <button> <type>BACKUP</type> <text>Yes</text> - <action>EXEC sudo /usr/LH/bin/mythbackup</action> + <action>EXEC sudo /usr/LH/bin/lh_system_backup &</action> </button> - + <button> <type>BACKUP</type> <text>No</text> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml index 8f5c285..161f13f 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml @@ -3,15 +3,16 @@ <button> <type>RESTORE</type> <text>Do you wish to restore?</text> + <description>This will restore from most recent backup.</description> <action>NONE</action> </button> <button> <type>RESTORE</type> <text>Yes</text> - <action>EXEC sudo /usr/LH/bin/mythrestore</action> + <action>EXEC sudo /usr/LH/bin/lh_system_restore &</action> </button> - + <button> <type>BACKUP</type> <text>No</text> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch index 143424f..1ff2db2 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch +++ b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch @@ -1,10 +1,17 @@ ---- themes/defaultmenu/optical_menu.xml.orig 2010-11-06 00:39:43.000000000 +0000 -+++ themes/defaultmenu/optical_menu.xml 2010-11-06 00:42:59.000000000 +0000 -@@ -26,6 +26,13 @@ +--- themes/defaultmenu/optical_menu.xml.orig 2012-05-02 18:41:38.000000000 +0000 ++++ themes/defaultmenu/optical_menu.xml 2012-07-30 05:33:03.000000000 +0000 +@@ -17,6 +17,20 @@ </button> <button> + <type>DVD_RIP</type> ++ <text>Backup DVD</text> ++ <description>Backup your DVDs</description> ++ <action>MENU dvd_backup.xml</action> ++ </button> ++ ++ <button> ++ <type>DVD_RIP</type> + <text>Import video files from DVD</text> + <description>Import video files from a data DVD</description> + <action>EXEC /usr/LH/bin/importfiles.sh</action> diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/setup.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/setup.xml deleted file mode 100644 index f56bb6f..0000000 --- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/setup.xml +++ /dev/null @@ -1,111 +0,0 @@ -<mythmenu name="MAIN"> - - <button> - <type>SETUP_GENERAL</type> - <text>1. General</text> - <text lang="IT">1. Generale</text> - <text lang="PT">1. Geral</text> - <text lang="SV">1. Generellt</text> - <text lang="JA">1. 一般</text> - <text lang="DE">1. Allgemeines</text> - <text lang="FI">1. Yleiset</text> - <text lang="FR">1. Général</text> - <text lang="SI">1. Splošno</text> - <text lang="ET">1. Üldine</text> - <text lang="NB">1 Generelt</text> - <text lang="DK">1. Generelt</text> - <text lang="ES">1. General</text> - <text lang="CZ">1. Obecný</text> - <text lang="RU">1. Общие</text> - <action>GENERAL</action> - </button> - - <button> - <type>SETUP_CAPTURE_CARDS</type> - <text>2. Capture cards</text> - <text lang="IT">2. Schede di Acquisizione</text> - <text lang="PT">2. Placas de Captura</text> - <text lang="SV">2. TV-kort</text> - <text lang="JA">2. キャプチャカード</text> - <text lang="DE">2. TV-Karten</text> - <text lang="FI">2. TV-kortit</text> - <text lang="FR">2. Cartes d'acquisition</text> - <text lang="SI">2. Kartice za zajem</text> - <text lang="ET">2. TV-kaardid</text> - <text lang="NB">2 TV-kort</text> - <text lang="DK">2. TV-kort</text> - <text lang="ES">2. Capturadoras</text> - <text lang="CZ">2. Zachytávací karty</text> - <text lang="RU">2. Карты захвата</text> - <action>CAPTURE CARDS</action> - </button> - - <button> - <type>SETUP_VIDEO_SOURCES</type> - <text>3. Video sources</text> - <text lang="IT">3. Fonte Video</text> - <text lang="PT">3. Fontes de Vídeo</text> - <text lang="SV">3. Videokällor</text> - <text lang="JA">3. ビデオソース</text> - <text lang="DE">3. Videoquellen</text> - <text lang="FI">3. Kuvanlähteet</text> - <text lang="FR">3. Sources vidéo</text> - <text lang="SI">3. Video viri</text> - <text lang="ET">3. Videosisendid</text> - <text lang="NB">3 Videokilder</text> - <text lang="DK">3. Videokilder</text> - <text lang="ES">3. Fuentes de Vídeo</text> - <text lang="CZ">3. Zdroje obrazu</text> - <text lang="RU">3. Видео источники</text> - <action>VIDEO SOURCES</action> - </button> - - <button> - <type>SETUP_INPUT_CONNECTIONS</type> - <text>4. Input connections</text> - <text lang="IT">4. Connessioni di Ingresso</text> - <text lang="PT">4. Ligações de Entrada</text> - <text lang="SV">4. Anslutningar</text> - <text lang="JA">4. 入力とソースの接続</text> - <text lang="DE">4. Verknüpfungen</text> - <text lang="FI">4. Sisääntuloasetukset</text> - <text lang="FR">4. Entrées Vidéos</text> - <text lang="SI">4. Vhodne povezave</text> - <text lang="ET">4. Sisendite ühendused</text> - <text lang="NB">4 Inndata</text> - <text lang="DK">4. Indgange</text> - <text lang="ES">4. Conexiones</text> - <text lang="CZ">4. Připojení vstupů</text> - <text lang="RU">4. Соединение входов</text> - <action>CARD INPUTS</action> - </button> - - <button> - <type>SETUP_CHANNEL_EDITOR</type> - <text>5. Channel Editor</text> - <text lang="IT">5. Modifica Canali</text> - <text lang="SV">5. Kanaleditor</text> - <text lang="JA">5. チャンネル設定</text> - <text lang="DE">5. Sender bearbeiten</text> - <text lang="FI">5. Kanavanviritys</text> - <text lang="FR">5. Editeur de chaînes</text> - <text lang="SI">5. Urejanje kanalov</text> - <text lang="ET">5. Kanaliredaktor</text> - <text lang="NB">5 Kanalredigerer</text> - <text lang="DK">5. Kanal opsætning</text> - <text lang="ES">5. Editor Canales</text> - <text lang="CZ">5. Editor kanálů</text> - <text lang="RU">5. Редактор каналов</text> - <action>CHANNEL EDITOR</action> - </button> - - <button> - <type>SETUP_STORAGE_GROUPS</type> - <text>6. Storage Directories</text> - <text lang="IT">6. Cartelle</text> - <text lang="FI">Tallennusryhmät</text> - <text lang="SV">Lagringsgrupper</text> - <action>STORAGE GROUPS</action> - </button> - -</mythmenu> diff --git a/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch b/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch index ebc6264..a96051b 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch +++ b/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch @@ -1,5 +1,13 @@ +commit 9b4205fa320c06afde8c6d866b854cb12d3ec99c +Author: root <root@localhost.localdomain> +Date: Fri Sep 28 14:25:06 2012 -0500 + + new patch + + Signed-off-by: root <root@localhost.localdomain> + diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp -index ad58f59..809d662 100644 +index 84cb01a..6e3c54a 100644 --- a/mythtv/libs/libmythbase/mythcorecontext.cpp +++ b/mythtv/libs/libmythbase/mythcorecontext.cpp @@ -1260,6 +1260,90 @@ void MythCoreContext::ResetLanguage(void) @@ -80,11 +88,11 @@ index ad58f59..809d662 100644 +QMap<QString, QMap<QString,QString> > MythCoreContext::export_settings( + QString src_hostname, + QString saved_settingsgroupname, -+ QStringList table_list) ++ QStringList table_list, bool skip_host ) +{ + return d->m_database->export_settings(src_hostname, + saved_settingsgroupname, -+ table_list); ++ table_list , skip_host ); +} + +//END JM ADDED @@ -94,10 +102,10 @@ index ad58f59..809d662 100644 { if (!d->m_locale) diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h -index 0917313..db3bbb9 100644 +index 0917313..3f6d5f8 100644 --- a/mythtv/libs/libmythbase/mythcorecontext.h +++ b/mythtv/libs/libmythbase/mythcorecontext.h -@@ -168,6 +168,39 @@ class MBASE_PUBLIC MythCoreContext : public MythObservable, public MythSocketCBs +@@ -168,6 +168,40 @@ class MBASE_PUBLIC MythCoreContext : public MythObservable, public MythSocketCBs QString GetLanguageAndVariant(void); void ResetLanguage(void); @@ -131,14 +139,15 @@ index 0917313..db3bbb9 100644 + QMap<QString,QMap <QString,QString> > export_settings( + QString src_hostname, + QString saved_settingsgroupname, -+ QStringList table_list); ++ QStringList table_list, ++ bool skip_host = FALSE ); + //END JM ADDED + private: MythCoreContextPrivate *d; diff --git a/mythtv/libs/libmythbase/mythdb.cpp b/mythtv/libs/libmythbase/mythdb.cpp -index ea30783..730fc3e 100644 +index ea30783..e4c1781 100644 --- a/mythtv/libs/libmythbase/mythdb.cpp +++ b/mythtv/libs/libmythbase/mythdb.cpp @@ -774,7 +774,7 @@ void MythDB::OverrideSettingForSession( @@ -150,7 +159,7 @@ index ea30783..730fc3e 100644 QString("ERROR: Refusing to allow override for '%1'.").arg(key)); return; } -@@ -1055,6 +1055,901 @@ void MythDB::WriteDelayedSettings(void) +@@ -1055,6 +1055,1015 @@ void MythDB::WriteDelayedSettings(void) } } @@ -168,6 +177,7 @@ index ea30783..730fc3e 100644 + QString hostname_clause; + table_list.append("settings"); + table_list.append("keybindings"); ++ table_list.append("jumppoints"); + if ( src_hostname == "GLOBAL" ) + hostname_clause = "hostname IS NULL"; + else @@ -228,6 +238,7 @@ index ea30783..730fc3e 100644 + + table_list.append("settings"); + table_list.append("keybindings"); ++ table_list.append("jumppoints"); + QString hostname_clause; + if ( delete_hostname == "GLOBAL" ) + hostname_clause = "hostname IS NULL"; @@ -490,6 +501,7 @@ index ea30783..730fc3e 100644 + { + table_list.append("settings"); + table_list.append("keybindings"); ++ table_list.append("jumppoints"); + } + + for ( it = table_list.begin(); it != table_list.end(); ++it ) @@ -587,7 +599,14 @@ index ea30783..730fc3e 100644 + else + hostname_clause ="hostname = :HOSTNAME"; + -+ if ( settings_check ( dest_hostname , saved_settingsgroupname ) ) ++ bool table_check; ++ if ( saved_settingsgroupname == "distro_default" ) ++ table_check = settings_check ( "distro_default" , saved_settingsgroupname ); ++ else ++ table_check = settings_check ( dest_hostname , saved_settingsgroupname ); ++ ++ ++ if ( table_check == TRUE ) + { + MSqlQuery query(MSqlQuery::InitCon()); + QStringList::Iterator it; @@ -596,6 +615,7 @@ index ea30783..730fc3e 100644 + { + table_list.append("settings"); + table_list.append("keybindings"); ++ table_list.append("jumppoints"); + } + + for ( it = table_list.begin(); it != table_list.end(); ++it ) @@ -606,22 +626,54 @@ index ea30783..730fc3e 100644 + saved_settingsgroupname); + + QString temptable="temp_table_" + src_tablename; -+ ++ if ( ! does_table_exist(src_tablename)) ++ { ++ LOG(VB_GENERAL, LOG_NOTICE, QString("table does not exist: %1") ++ .arg(src_tablename)); ++ continue; ++ } + // create temp table for merging settings + create_temp_table(temptable, current_table ); + + //could copy in current settings here to account for new stuff + ++ ++ + // copy in stored settings -+ QString query_string = QString("REPLACE INTO %1 " -+ "(SELECT * from %2 WHERE %3)") -+ .arg(temptable) -+ .arg(src_tablename) -+ .arg(hostname_clause); ++ QString query_string; ++ if ( saved_settingsgroupname == "distro_default" ) ++ { //special case for restoring default settings ++ query_string = QString("REPLACE INTO %1 " ++ "(SELECT * from %2 WHERE %3)") ++ .arg(temptable) ++ .arg(src_tablename) ++ .arg(hostname_clause); + -+ query.prepare(query_string); -+ query.bindValue(":HOSTNAME",dest_hostname ); -+ query.exec(); ++ query.prepare(query_string); ++ query.bindValue(":HOSTNAME", "distro_default" ); ++ query.exec(); ++ ++ // update hostname in temp table from distro_default ++ query_string = QString("UPDATE %1 set hostname = :HOSTNAME") ++ .arg(temptable); ++ ++ query.prepare(query_string); ++ query.bindValue(":HOSTNAME" , dest_hostname ); ++ query.exec(); ++ ++ } ++ else ++ { //normal use case ++ query_string = QString("REPLACE INTO %1 " ++ "(SELECT * from %2 WHERE %3)") ++ .arg(temptable) ++ .arg(src_tablename) ++ .arg(hostname_clause); ++ ++ query.prepare(query_string); ++ query.bindValue(":HOSTNAME",dest_hostname ); ++ query.exec(); ++ } + + //Remove current settings. + //Need to remove because the old table allows for duplicates @@ -875,13 +927,69 @@ index ea30783..730fc3e 100644 + } + } + } ++ //JUMP POINTS ++ else if (table.startsWith("jumppoints")) ++ { ++ if ( table != "jumppoints" ) ++ create_new_table(table,"jumppoints"); ++ QString hostname = vp_map.value("hostname"); ++ QString description = vp_map.value("description"); ++ QString destination = vp_map.value("destination"); ++ QString keylist = vp_map.value("keylist"); ++ ++ QString query_string=QString("SELECT destination, keylist " ++ "FROM %1 " ++ "WHERE hostname = :HOSTNAME AND " ++ "destination = :DESTINATION " ++ "AND keylist = :KEYLIST ").arg(table); ++ query.prepare(query_string); ++ query.bindValue(":HOSTNAME", hostname); ++ query.bindValue(":DESTINATION", destination); ++ query.bindValue(":KEYLIST", keylist); ++ ++ if (query.exec() && query.isActive()) ++ { ++ MSqlQuery sub_query(MSqlQuery::InitCon()); ++ if ( query.size() > 0 ) ++ { ++ query_string = QString("UPDATE " ++ " %1 " ++ "set keylist = :KEYLIST " ++ "WHERE hostname = :HOSTNAME AND " ++ "destination = :DESTINATION ").arg(table); ++ ++ sub_query.prepare(query_string); ++ sub_query.bindValue(":HOSTNAME", hostname); ++ sub_query.bindValue(":KEYLIST", keylist); ++ sub_query.bindValue(":DESTINATION", destination); ++ sub_query.exec(); ++ } ++ else ++ { ++ query_string = QString("INSERT INTO " ++ " %1 " ++ " (description , destination, keylist , hostname) " ++ " VALUES( " ++ " :DESCRIPTION ," ++ " :DESTINATION , " ++ " :KEYLIST , " ++ " :HOSTNAME)").arg(table) ; + ++ sub_query.prepare(query_string); ++ sub_query.bindValue(":HOSTNAME", hostname); ++ sub_query.bindValue(":KEYLIST", keylist); ++ sub_query.bindValue(":DESTINATION", destination); ++ sub_query.bindValue(":DESCRIPTION", description); ++ sub_query.exec(); ++ } ++ } ++ } +}; //end import_settings + +QMap<QString, QMap<QString,QString> > + MythDB::export_settings(QString src_hostname, + QString saved_settingsgroupname, -+ QStringList table_list) ++ QStringList table_list, bool skip_host ) +{ + QMap<QString, QMap<QString,QString> > result_set; + QStringList::Iterator it; @@ -892,6 +1000,7 @@ index ea30783..730fc3e 100644 + { + table_list.append("settings"); + table_list.append("keybindings"); ++ table_list.append("jumppoints"); + } + + MSqlQuery query(MSqlQuery::InitCon()); @@ -909,10 +1018,11 @@ index ea30783..730fc3e 100644 + saved_settingsgroupname); + + QString hostname_clause; -+ if ( src_hostname == "GLOBAL" ) -+ hostname_clause = "hostname IS NULL"; -+ else -+ hostname_clause ="hostname = :HOSTNAME"; ++ if ( src_hostname == "GLOBAL" ) ++ hostname_clause = "hostname IS NULL"; ++ else ++ hostname_clause ="hostname = :HOSTNAME"; ++ + // find field names + query_string = QString("SHOW COLUMNS from %1").arg(table_name); + query.prepare(query_string); @@ -929,12 +1039,25 @@ index ea30783..730fc3e 100644 + field_query += tempItem; + } + } ++ // when working with settings table skip HOST if skip_host is true ++ if ( current_table == "settings" && skip_host == TRUE ) ++ { ++ QString skip_host_clause; ++ skip_host_clause = " VALUE not like 'HOST%' AND DATA not like 'HardwareProfile%UUID'" ; ++ query_string = QString("SELECT %1 FROM %2 WHERE %3 AND %4") ++ .arg(field_query) ++ .arg(table_name) ++ .arg(hostname_clause) ++ .arg(skip_host_clause); + -+ query_string = QString("SELECT %1 FROM %2 WHERE %3") -+ .arg(field_query) -+ .arg(table_name) -+ .arg(hostname_clause); -+ ++ } ++ else ++ { ++ query_string = QString("SELECT %1 FROM %2 WHERE %3") ++ .arg(field_query) ++ .arg(table_name) ++ .arg(hostname_clause); ++ } + query.prepare(query_string); + query.bindValue(":HOSTNAME" , src_hostname); + @@ -986,7 +1109,7 @@ index ea30783..730fc3e 100644 +void MythDB::drop_temp_table (QString table_name) +{ + MSqlQuery query(MSqlQuery::InitCon()); -+ if (table_name == "settings" | table_name == "keybindings") ++ if (table_name == "settings" | table_name == "keybindings" | table_name == "jumppoints") + return; + QString query_string = QString("DROP TABLE %1").arg(table_name); + query.prepare(query_string); @@ -1053,10 +1176,10 @@ index ea30783..730fc3e 100644 * \brief Set a flag indicating we have successfully connected to the database */ diff --git a/mythtv/libs/libmythbase/mythdb.h b/mythtv/libs/libmythbase/mythdb.h -index 79abe56..fe3c91c 100644 +index 79abe56..fd6044e 100644 --- a/mythtv/libs/libmythbase/mythdb.h +++ b/mythtv/libs/libmythbase/mythdb.h -@@ -75,6 +75,48 @@ class MBASE_PUBLIC MythDB +@@ -75,6 +75,49 @@ class MBASE_PUBLIC MythDB void WriteDelayedSettings(void); @@ -1090,7 +1213,8 @@ index 79abe56..fe3c91c 100644 + QMap<QString,QMap <QString,QString> > export_settings( + QString src_hostname, + QString saved_settingsgroupname, -+ QStringList table_list); ++ QStringList table_list, ++ bool skip_host = FALSE); + + void create_new_table (QString create_table_name,QString like_name); + void drop_temp_table (QString table_name); @@ -1106,10 +1230,10 @@ index 79abe56..fe3c91c 100644 void SetHaveSchema(bool schema); bool HaveSchema(void) const; diff --git a/mythtv/programs/mythutil/commandlineparser.cpp b/mythtv/programs/mythutil/commandlineparser.cpp -index 7f00e50..6fb2fc2 100644 +index f4a6035..fdeeb8e 100644 --- a/mythtv/programs/mythutil/commandlineparser.cpp +++ b/mythtv/programs/mythutil/commandlineparser.cpp -@@ -114,6 +114,37 @@ void MythUtilCommandLineParser::LoadArguments(void) +@@ -118,6 +118,37 @@ void MythUtilCommandLineParser::LoadArguments(void) << add("--print-template", "printtemplate", false, "Print the template to be sent to the frontend", "") ->SetGroup("Messaging") @@ -1147,7 +1271,7 @@ index 7f00e50..6fb2fc2 100644 ); // mpegutils.cpp -@@ -136,6 +167,59 @@ void MythUtilCommandLineParser::LoadArguments(void) +@@ -140,6 +171,59 @@ void MythUtilCommandLineParser::LoadArguments(void) add("--bcastaddr", "bcastaddr", "127.0.0.1", "(optional) IP address to send to", "") ->SetChildOf("message"); @@ -1229,10 +1353,10 @@ index 418ea01..bd4a1f4 100644 bool cmdFound = false; int cmdResult = GENERIC_EXIT_OK; diff --git a/mythtv/programs/mythutil/mythutil.pro b/mythtv/programs/mythutil/mythutil.pro -index 774528f..5be3ec7 100644 +index 066e618..87d7952 100644 --- a/mythtv/programs/mythutil/mythutil.pro +++ b/mythtv/programs/mythutil/mythutil.pro -@@ -10,7 +11,7 @@ TARGET = mythutil +@@ -10,7 +10,7 @@ TARGET = mythutil target.path = $${PREFIX}/bin INSTALLS = target @@ -1241,7 +1365,7 @@ index 774528f..5be3ec7 100644 INCLUDEPATH += ../../libs/libmythbase QMAKE_CLEAN += $(TARGET) -@@ -19,8 +20,10 @@ QMAKE_CLEAN += $(TARGET) +@@ -19,8 +19,10 @@ QMAKE_CLEAN += $(TARGET) HEADERS += mythutil.h commandlineparser.h HEADERS += backendutils.h fileutils.h jobutils.h markuputils.h HEADERS += messageutils.h mpegutils.h @@ -1255,10 +1379,10 @@ index 774528f..5be3ec7 100644 mingw: LIBS += -lwinmm -lws2_32 diff --git a/mythtv/programs/mythutil/settingsutils.cpp b/mythtv/programs/mythutil/settingsutils.cpp new file mode 100644 -index 0000000..ff7e509 +index 0000000..8fc7b0e --- /dev/null +++ b/mythtv/programs/mythutil/settingsutils.cpp -@@ -0,0 +1,566 @@ +@@ -0,0 +1,586 @@ +// C++ includes +#include <iostream> + @@ -1643,6 +1767,17 @@ index 0000000..ff7e509 + else + value_pair_map[record_element.nodeName()] = record_element.text(); + } ++ if (import_filename.endsWith("syssettings.xml")) ++ { ++ if ( value_pair_map["value"] == "BackendServerIP") ++ { ++ out_string = "sysettings, ignoring backendserver ip record"; ++ cout << out_string.toLocal8Bit().constData() << endl; ++ } ++ else ++ gCoreContext->import_settings(value_pair_map,table_name); ++ } ++ else + //perform insert + gCoreContext->import_settings(value_pair_map,table_name); + } @@ -1659,6 +1794,10 @@ index 0000000..ff7e509 + QString tablestring; + bool distro_default = FALSE; + bool generic = FALSE; ++ bool skip_host = FALSE; ++ ++ ++ + QDomDocument doc("mythutils_exported_settings"); + + if (cmdline.toBool("groupname")) @@ -1672,18 +1811,22 @@ index 0000000..ff7e509 + src_hostname = gCoreContext->GetHostName(); + + if (cmdline.toBool("distro-default")) ++ { + distro_default = TRUE; -+ ++ skip_host = TRUE; ++ } + if (cmdline.toBool("generic")) ++ { + generic = TRUE; -+ ++ //skip_host = TRUE; ++ } + if (cmdline.toBool("table_list")) + { + tablestring = QString(cmdline.toString("table_list")); + table_list = tablestring.split(",", QString::SkipEmptyParts); + } + else -+ table_list << "settings" <<"keybindings" ; ++ table_list << "settings" <<"keybindings" <<"jumppoints" ; + + if (cmdline.toString("outfile").isEmpty()) + { @@ -1693,7 +1836,8 @@ index 0000000..ff7e509 + + QString export_filename = cmdline.toString("outfile"); + -+ records = gCoreContext->export_settings(src_hostname,groupname,table_list); ++ records = gCoreContext->export_settings(src_hostname,groupname, ++ table_list, skip_host); + + QDomElement exported_xml = doc.createElement("exported_xml"); + doc.appendChild(exported_xml); @@ -1715,7 +1859,6 @@ index 0000000..ff7e509 + QDomElement tag = doc.createElement(y.key()); + record.appendChild(tag); + QDomText t; -+ + if ( distro_default == TRUE ) + { // If exporting distro_default then change hostname + table + if ( y.key() == "hostname" ) @@ -1761,6 +1904,7 @@ index 0000000..ff7e509 + } + } + QFile file( export_filename ); ++ + if( !file.open(QIODevice::WriteOnly) ) + return -1; + diff --git a/abs/core/mythtv/stable-0.25/mythtv/mythtv.install b/abs/core/mythtv/stable-0.25/mythtv/mythtv.install index 3f2e304..3b44668 100644 --- a/abs/core/mythtv/stable-0.25/mythtv/mythtv.install +++ b/abs/core/mythtv/stable-0.25/mythtv/mythtv.install @@ -1,60 +1,22 @@ # arg 1: the new package version post_install() { - if [ ! -d /var/log/mythtv ] - then - mkdir -p /var/log/mythv - chown -R mythtv /var/log/mythtv - echo "---" > /var/log/mythtv/mythbackend.log - chown mythtv /var/log/mythtv/mythbackend.log - fi - ln -s /usr/share/mythtv/themes/defaultmenu/is.xml /usr/share/mythtv/is.xml + gen_is_xml.py + gen_lib_xml.py } pre_upgrade() { - if [ ! -L /usr/share/mythtv/is.xml ] - then - mv /usr/share/mythtv/is.xml /usr/share/mythtv/is.xml.pre - else - mv /usr/share/mythtv/themes/defaultmenu/is.xml /usr/share/mythtv/themes/defaultmenu/is.xml.pre - fi + /bin/true } post_upgrade() { - if [ ! -d /var/log/mythtv ] - then - mkdir -p /var/log/mythv - chown -R mythtv /var/log/mythtv - fi - if [ -e /usr/share/mythtv/is.xml.pre ] - then - rm -fr /usr/share/mythtv/themes/defaultmenu/is.xml - mv /usr/share/mythtv/is.xml.pre /usr/share/mythtv/themes/defaultmenu/is.xml - ln -s /usr/share/mythtv/themes/defaultmenu/is.xml /usr/share/mythtv/is.xml - else - mv /usr/share/mythtv/themes/defaultmenu/is.xml.pre /usr/share/mythtv/themes/defaultmenu/is.xml - fi - pacxmbc=`pacman -Q xbmc` - if [ -z "$pacxbmc" ] - then - mv /usr/share/mythtv/themes/defaultmenu/library.xml /tmp - grep -v -e /mythmenu /tmp/library.xml > /tmp/library.xml.tmp - echo "<!--#XBMC-->" >> /tmp/library.xml.tmp - echo " <button>" >> /tmp/library.xml.tmp - echo " <type>MENU_XBMC</type>" >> /tmp/library.xml.tmp - echo " <text>Launch XBMC</text>" >> /tmp/library.xml.tmp - echo " <action>EXEC /usr/bin/xbmc</action>" >> /tmp/library.xml.tmp - echo " </button>" >> /tmp/library.xml.tmp - echo "<!--#XBMC-->" >> /tmp/library.xml.tmp - echo "" >> /tmp/library.xml.tmp - echo "</mythmenu>" >> /tmp/library.xml.tmp - mv /tmp/library.xml.tmp /usr/share/mythtv/themes/defaultmenu/library.xml - fi + gen_is_xml.py + gen_lib_xml.py } # arg 1: the old package version post_remove() { - /bin/true + /bin/true } diff --git a/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD b/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD index 6ec3453..5e1c853 100644 --- a/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD +++ b/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD @@ -1,6 +1,6 @@ pkgname=mythweb pkgver=0.25 -pkgrel=3 +pkgrel=6 commit_hash=`cat ../git_src/git_hash_web` @@ -11,25 +11,26 @@ arch=('i686' 'x86_64') depends=('mythtv>=0.25' 'lighttpd' 'php' 'local-website') groups=('mythtv-extras') +install=mythweb.install +#http://code.mythtv.org/trac/ticket/10504 +patches=(schedules.php.patch sorting.php.patch tv-schedules.php.patch) +source=(`echo ${patches[@]:0}` mythweb.include mythweb_gen_light.conf) -patches=() -source=(`echo ${patches[@]:0}`) - -DOCROOT=/data/srv/httpd/htdocs/mythweb +DOCROOT=/data/srv/httpd/mythweb build() { if [ -e ${srcdir}/mythweb ] then rm -rf ${srcdir}/mythweb fi - + cd ${startdir} msg "copy in myth web src" cp -rp ../git_src/mythweb $srcdir cd ${srcdir}/${pkgbase} - - - + + + msg "The local files are updated." @@ -45,7 +46,7 @@ build() { patch -Np0 -i ${srcdir}/$i || return 1 done echo "--------------------------done applying patches-----------------------------------------------" - + [ "$CARCH" = "i686" ] && ARCH="i686" [ "$CARCH" = "x86_64" ] && ARCH="x86-64" @@ -59,5 +60,16 @@ build() { # http://code.mythtv.org/trac/ticket/9255 cd ${pkgdir}/${DOCROOT} ln -s modules modules_path + + #install conf files for lighttpd + mkdir -p $pkgdir/etc/lighttpd + install -D -m 644 $srcdir/mythweb.include $pkgdir/etc/lighttpd/ + #gen_light_conf + install -D -m0744 ${srcdir}/mythweb_gen_light.conf ${pkgdir}/etc/gen_light_conf.d/mythweb.conf + } -md5sums=('45703fa3899c4ee84d1b087bfcc6654e') +md5sums=('392e570594859c026ac12194920246d8' + '53cc59d6a8bf144027b25d5dcbfffc66' + '515e29fda503c199888a91553e1815a0' + '7645a6399434cbba35639713ac5d88e0' + 'df190116b3aba35720fb6631885f973f') diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb.include b/abs/core/mythtv/stable-0.25/mythweb/mythweb.include new file mode 100644 index 0000000..18e9be1 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythweb/mythweb.include @@ -0,0 +1,8 @@ +alias.url += ( "/mythweb" => "/data/srv/httpd/mythweb/") + +url.rewrite-once = ( +"^/{1,2}mythweb/(css|data|images|js|themes|skins|[a-z_]+\.(php|pl)).*" => "$0", +"^/{1,2}mythweb/(pl(/.*)?)$" => "/mythweb/mythweb.pl/$1", +"^/{1,2}mythweb/(.+)$" => "/mythweb/mythweb.php/$1", +"^/{1,2}mythweb/(.*)$" => "/mythweb/mythweb.php" +)
\ No newline at end of file diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb.install b/abs/core/mythtv/stable-0.25/mythweb/mythweb.install new file mode 100644 index 0000000..0073499 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythweb/mythweb.install @@ -0,0 +1,18 @@ +post_install() { + gen_light_include.py + /sbin/sv hup /service/lighttpd +} +post_upgrade() { + post_install + +} + +post_remove() { + gen_light_include.py + echo + echo "==> Forcing a re-read of lighttpd's configuration file." + echo "" + /sbin/sv hup /service/lighttpd +#-- + +} diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb.php.patch b/abs/core/mythtv/stable-0.25/mythweb/mythweb.php.patch deleted file mode 100644 index 4525e68..0000000 --- a/abs/core/mythtv/stable-0.25/mythweb/mythweb.php.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- mythweb.php.orig 2011-02-01 03:33:56.000000000 +0000 -+++ mythweb.php 2011-02-01 03:34:20.000000000 +0000 -@@ -30,7 +30,7 @@ - if (Modules::getModule($Path[0])) { - // Add the current module directory to our search path, so modules can - // define includes, etc. -- ini_set('include_path', ini_get('include_path').':'.modules_path.'/'.$Path[0]); -+ ini_set('include_path', ini_get('include_path').':'.modules.'/'.$Path[0]); - // Load the module handler - require_once 'handler.php'; - } diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf b/abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf new file mode 100644 index 0000000..ddf0d2f --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf @@ -0,0 +1 @@ +include "/etc/lighttpd/mythweb.include" diff --git a/abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch b/abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch new file mode 100644 index 0000000..1d41711 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch @@ -0,0 +1,16 @@ +*** modules/tv/tmpl/default/schedules.php.old 2011-04-03 06:05:31.000000000 -0500 +--- modules/tv/tmpl/default/schedules.php 2012-03-27 05:37:40.000000000 -0500 +*************** +*** 90,95 **** +--- 90,100 ---- + </tr> + </thead> + <?php ++ // Hack: Disable warnings about "Creating default ++ // object from empty value" from below line ++ // "$schedule->channel->name = '[ '.t('Any').' ]';" ++ ini_set('error_reporting', E_ERROR); ++ + $prev_group = ''; + $cur_group = ''; + foreach ($the_schedules as $schedule) { diff --git a/abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch b/abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch new file mode 100644 index 0000000..2f76216 --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch @@ -0,0 +1,19 @@ +*** includes/sorting.php.old 2011-04-03 06:05:31.000000000 -0500 +--- includes/sorting.php 2012-03-27 05:05:51.000000000 -0500 +*************** +*** 123,129 **** + function by_user_choice(&$a, &$b) { + foreach ($GLOBALS['user_sort_choice'] as $sort) { + $function = 'by_'.$sort['field']; +! $response = $function(&$a, &$b); + // Identical response, go on to the next sort choice + if (!$response) + continue; +--- 123,129 ---- + function by_user_choice(&$a, &$b) { + foreach ($GLOBALS['user_sort_choice'] as $sort) { + $function = 'by_'.$sort['field']; +! $response = $function($a, $b); + // Identical response, go on to the next sort choice + if (!$response) + continue; diff --git a/abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch b/abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch new file mode 100644 index 0000000..29e4ccb --- /dev/null +++ b/abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch @@ -0,0 +1,15 @@ +*** modules/tv/schedules.php.orig 2012-06-05 09:05:32.935946957 +0200 +--- modules/tv/schedules.php 2012-06-05 09:05:36.633022229 +0200 +*************** +*** 47,52 **** +--- 47,56 ---- + if (count($the_schedules)) + sort_programs($the_schedules, 'schedules_sortby'); + ++ // Hack: Disable warnings about "Creating default ++ // object from empty value" from below line ++ // "$schedule->channel->name = '[ '.t('Any').' ]';" ++ ini_set('error_reporting', E_ERROR); + // Load the class for this page + require_once tmpl_dir.'schedules.php'; + |