rpms/mythtv/F-18 mythtv-0.26-libcec2.patch, NONE, 1.1 ChangeLog, 1.8, 1.9 mythtv-0.26-fixes.patch, 1.5, 1.6 mythtv.spec, 1.111, 1.112

Richard Shaw hobbes1069 at rpmfusion.org
Thu Oct 3 14:05:36 CEST 2013


Author: hobbes1069

Update of /cvs/free/rpms/mythtv/F-18
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv18463

Modified Files:
	ChangeLog mythtv-0.26-fixes.patch mythtv.spec 
Added Files:
	mythtv-0.26-libcec2.patch 
Log Message:
* Tue Oct  1 2013 Richard Shaw <hobbes1069 at gmail.com> - 0.26.1-4
- Update to latest bugfix release.
- Add patch for libcec 2.
- Update to latest bugfix release.
- Add udisks as a requirement as it is required for ejecting cd/dvds.


mythtv-0.26-libcec2.patch:
 configure                     |    4 
 libs/libmythui/cecadapter.cpp |  267 +++++++++++++++++++++++++++++++-----------
 libs/libmythui/cecadapter.h   |    1 
 3 files changed, 205 insertions(+), 67 deletions(-)

--- NEW FILE mythtv-0.26-libcec2.patch ---
diff --git a/mythtv/configure b/mythtv/configure
index 7ab8aa7..7d5e39d 100755
--- a/mythtv/configure
+++ b/mythtv/configure
@@ -5178,10 +5178,12 @@ using namespace std;
 using namespace CEC;
 #include <libcec/cecloader.h>
 int main(void) {
+    if (CEC_LIB_VERSION_MAJOR == 2)
+        return 1;
     if (CEC_LIB_VERSION_MAJOR < 1 || (CEC_LIB_VERSION_MAJOR == 1 &&
                                       CEC_LIB_VERSION_MINOR < 5))
         return 0;
-    return (long) LibCecInit;
+    return 1;
 }
 EOF
 fi
diff --git a/mythtv/libs/libmythui/cecadapter.cpp b/mythtv/libs/libmythui/cecadapter.cpp
index edad8f6..5987d5d 100644
--- a/mythtv/libs/libmythui/cecadapter.cpp
+++ b/mythtv/libs/libmythui/cecadapter.cpp
@@ -14,9 +14,28 @@
 #include "cecadapter.h"
 #include <vector>
 
-#define MIN_LIBCEC_VERSION 1
+#ifdef CEC_CLIENT_VERSION_CURRENT // 2.0.3 and up
+#define CEC_CONFIG_VERSION CEC_CLIENT_VERSION_CURRENT;
+#else
+#ifdef LIBCEC_VERSION_CURRENT // 1.6.2 and up
+#define CEC_CONFIG_VERSION LIBCEC_VERSION_CURRENT;
+#else
+#define CEC_CONFIG_VERSION 0;
+#endif
+#endif
+
 #define MAX_CEC_DEVICES 10
 #define LOC QString("CECAdapter: ")
+#define OSDNAME "MythTv"
+
+// TODO remove if we have a ui.
+// hard code logical and physical address
+#define CEC_DEFAULT_DEVICE_TYPE CEC_DEVICE_TYPE_RECORDING_DEVICE
+#undef CEC_DEFAULT_HDMI_PORT
+#define CEC_DEFAULT_HDMI_PORT 2
+#undef CEC_DEFAULT_BASE_DEVICE
+#define CEC_DEFAULT_BASE_DEVICE CECDEVICE_AUDIOSYSTEM
+#define CEC_DEFAULT_PHYSICALADDRESS (quint16)0x2200
 
 #include <libcec/cec.h>
 #include <iostream>
@@ -25,17 +44,26 @@ using namespace std;
 #include <libcec/cecloader.h>
 
 QMutex* CECAdapter::gLock = new QMutex(QMutex::Recursive);
+bool resetSafe = false;
 
 class CECAdapterPriv
 {
   public:
     CECAdapterPriv()
-      : adapter(NULL), defaultDevice("auto"), defaultHDMIPort(1),
-        defaultDeviceID(CECDEVICE_PLAYBACKDEVICE1), timer(NULL), valid(false),
+      : adapter(NULL), defaultDevice("auto"), defaultHDMIPort(CEC_DEFAULT_HDMI_PORT),
+        defaultDeviceID(CEC_DEFAULT_DEVICE_TYPE), timer(NULL), valid(false),
         powerOffTV(false),  powerOffTVAllowed(false), powerOffTVOnExit(false),
         powerOnTV(false),   powerOnTVAllowed(false),  powerOnTVOnStart(false),
         switchInput(false), switchInputAllowed(true)
     {
+        callbacks.Clear();
+        callbacks.CBCecLogMessage =            LogMessages;
+        callbacks.CBCecKeyPress =              HandleKeyPresses;
+        callbacks.CBCecCommand =               HandleCommands;
+        callbacks.CBCecConfigurationChanged =  HandleConfigurationChanged;
+        callbacks.CBCecAlert =                 HandleAlerts;
+        callbacks.CBCecMenuStateChanged =      HandleMenuStateChanged;
+        callbacks.CBCecSourceActivated =       HandleSourceActivated;
     }
 
     static QString addressToString(enum cec_logical_address addr, bool source)
@@ -69,14 +97,15 @@ class CECAdapterPriv
     static QStringList GetDeviceList(void)
     {
         QStringList results;
-        cec_device_type_list list;
-        list.Clear();
-        list.Add(CEC_DEVICE_TYPE_PLAYBACK_DEVICE);
-        ICECAdapter *adapter = LibCecInit("MythTV", list);
+        libcec_configuration configuration;
+        configuration.Clear();
+        ICECAdapter *adapter = LibCecInitialise(&configuration);
         if (!adapter)
             return results;
         cec_adapter *devices = new cec_adapter[MAX_CEC_DEVICES];
         uint8_t num_devices = adapter->FindAdapters(devices, MAX_CEC_DEVICES, NULL);
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("GetDeviceList() found %1 devices(s).")
+            .arg(num_devices));
         if (num_devices < 1)
             return results;
         for (uint8_t i = 0; i < num_devices; i++)
@@ -89,39 +118,112 @@ class CECAdapterPriv
     {
         // get settings
         // N.B. these do not currently work as there is no UI
+
+        // There is no way current CEC adapters can find their physical address
+        // on their own. The are only connected to the CEC pin of the HDMI connector.
+        // To construct a valid physical address libCEC needs:
+        // - the HDMI port (number) Myth is connected to
+        // - the HDMI device (TV, Receiver) Myth is connected to (the logical address)
+
+        //The CEC adapter we want to connect to
         defaultDevice     = gCoreContext->GetSetting(LIBCEC_DEVICE, "auto").trimmed();
+        // The number of the HDMI port Myth is connected to
         QString hdmi_port = gCoreContext->GetSetting(LIBCEC_PORT, "auto");
+        // The logical address of the HDMI device Myth is connected to
+        QString base_dev  = gCoreContext->GetSetting(LIBCEC_BASE, "auto");
+        // Device type we want Myth to use
         QString device_id = gCoreContext->GetSetting(LIBCEC_DEVICEID, "auto");
         powerOffTVAllowed = (bool)gCoreContext->GetNumSetting(POWEROFFTV_ALLOWED, 1);
         powerOffTVOnExit  = (bool)gCoreContext->GetNumSetting(POWEROFFTV_ONEXIT, 1);
         powerOnTVAllowed  = (bool)gCoreContext->GetNumSetting(POWERONTV_ALLOWED, 1);
         powerOnTVOnStart  = (bool)gCoreContext->GetNumSetting(POWERONTV_ONSTART, 1);
 
-        defaultHDMIPort = 1;
         if ("auto" != hdmi_port)
         {
             defaultHDMIPort = hdmi_port.toInt();
-            if (defaultHDMIPort < 1 || defaultHDMIPort > 3)
-                defaultHDMIPort = 1;
+            if (defaultHDMIPort < CEC_MIN_HDMI_PORTNUMBER || defaultHDMIPort > CEC_MAX_HDMI_PORTNUMBER)
+                defaultHDMIPort = CEC_DEFAULT_HDMI_PORT;
+        }
+        else
+        {
+            defaultHDMIPort = CEC_DEFAULT_HDMI_PORT;
         }
-        defaultHDMIPort = defaultHDMIPort << 12;
 
-        defaultDeviceID = CECDEVICE_PLAYBACKDEVICE1;
         if ("auto" != device_id)
         {
             int id = device_id.toInt();
-            if (id < 1 || id > 3)
-                id = 1;
-            defaultDeviceID = (id == 1) ? CECDEVICE_PLAYBACKDEVICE1 :
-                             ((id == 2) ? CECDEVICE_PLAYBACKDEVICE2 :
-                                          CECDEVICE_PLAYBACKDEVICE3);
+            switch (id)
+            {
+                case CEC_DEVICE_TYPE_TV:
+                case CEC_DEVICE_TYPE_RECORDING_DEVICE:
+                case CEC_DEVICE_TYPE_RESERVED:
+                case CEC_DEVICE_TYPE_TUNER:
+                case CEC_DEVICE_TYPE_PLAYBACK_DEVICE:
+                case CEC_DEVICE_TYPE_AUDIO_SYSTEM:
+                    defaultDeviceID = (cec_device_type)id;
+                    break;
+                default:
+                    defaultDeviceID = CEC_DEFAULT_DEVICE_TYPE;
+                    break;
+            }
+        }
+        else
+        {
+            defaultDeviceID = CEC_DEFAULT_DEVICE_TYPE;
         }
 
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("base_dev= %1.")
+            .arg(base_dev));
+        if ("auto" != base_dev)
+        {
+            base_device = (cec_logical_address)base_dev.toInt();
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("base_device= %1.")
+            .arg(base_device));
+            switch (base_device)
+            {
+                case CECDEVICE_TV:
+                case CECDEVICE_RECORDINGDEVICE1:
+                case CECDEVICE_RECORDINGDEVICE2:
+                case CECDEVICE_TUNER1:
+                case CECDEVICE_PLAYBACKDEVICE1:
+                case CECDEVICE_AUDIOSYSTEM:
+                case CECDEVICE_TUNER2:
+                case CECDEVICE_TUNER3:
+                case CECDEVICE_PLAYBACKDEVICE2:
+                case CECDEVICE_RECORDINGDEVICE3:
+                case CECDEVICE_TUNER4:
+                case CECDEVICE_PLAYBACKDEVICE3:
+                case CECDEVICE_FREEUSE:
+                    break;
+                case CECDEVICE_UNKNOWN:
+                case CECDEVICE_RESERVED1:
+                case CECDEVICE_RESERVED2:
+                case CECDEVICE_BROADCAST:
+                default:
+                    base_device = (cec_logical_address)CEC_DEFAULT_BASE_DEVICE;
+                    break;
+            }
+        }
+        else
+        {
+            base_device = (cec_logical_address)CEC_DEFAULT_BASE_DEVICE;
+        }
+ 
         // create adapter interface
-        cec_device_type_list list;
-        list.Clear();
-        list.Add(CEC_DEVICE_TYPE_PLAYBACK_DEVICE);
-        adapter = LibCecInit("MythTV", list);
+        libcec_configuration configuration;
+        configuration.Clear();
+        configuration.clientVersion = LIBCEC_VERSION_CURRENT;
+        snprintf(configuration.strDeviceName, 13, "MythTV");
+        configuration.deviceTypes.Add(defaultDeviceID);
+        configuration.iPhysicalAddress = CEC_DEFAULT_PHYSICALADDRESS;
+        configuration.iHDMIPort = defaultHDMIPort;
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("using HDMI port %1.")
+            .arg(defaultHDMIPort));
+        configuration.baseDevice = base_device;
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("using base device %1.")
+            .arg(configuration.baseDevice));
+        configuration.callbacks    = &callbacks;
+        ICECAdapter *adapter = LibCecInitialise(&configuration);
 
         if (!adapter)
         {
@@ -129,12 +231,12 @@ class CECAdapterPriv
             return false;
         }
 
-        if (adapter->GetMinLibVersion() > MIN_LIBCEC_VERSION)
+        if ((configuration.serverVersion >> 12) > CEC_MIN_LIB_VERSION)
         {
             LOG(VB_GENERAL, LOG_ERR, LOC +
                 QString("The installed libCEC supports version %1 and above. "
                         "This version of MythTV only supports version %2.")
-                .arg(adapter->GetMinLibVersion()).arg(MIN_LIBCEC_VERSION));
+                .arg(configuration.serverVersion).arg(CEC_MIN_LIB_VERSION));
             return false;
         }
 
@@ -185,12 +287,6 @@ class CECAdapterPriv
         // get the vendor ID (for non-standard implementations)
         adapter->GetDeviceVendorId(CECDEVICE_TV);
 
-        // set the physical address
-        adapter->SetPhysicalAddress(defaultHDMIPort);
-
-        // set the logical address
-        adapter->SetLogicalAddress(defaultDeviceID);
-
         // switch input (if configured)
         switchInput = true;
         HandleActions();
@@ -210,7 +306,6 @@ class CECAdapterPriv
 
             // delete adapter
             adapter->Close();
-            LogMessages();
             UnloadLibCec(adapter);
 
             LOG(VB_GENERAL, LOG_INFO, LOC + "Closing down CEC.");
@@ -219,14 +314,12 @@ class CECAdapterPriv
         adapter = NULL;
     }
 
-    void LogMessages(void)
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static int LogMessages(void *, const cec_log_message &message)
+    #else
+    static int LogMessages(void *, const cec_log_message message)
+    #endif
     {
-        if (!adapter || !valid)
-            return;
-
-        cec_log_message message;
-        while (adapter->GetNextLogMessage(&message))
-        {
             QString msg(message.message);
             int lvl = LOG_UNKNOWN;
             switch (message.level)
@@ -237,19 +330,15 @@ class CECAdapterPriv
             case CEC_LOG_DEBUG:   lvl = LOG_DEBUG;   break;
             }
             LOG(VB_GENERAL, lvl, LOC + QString("%1").arg(msg));
-        }
+            return 0;
     }
 
-    void HandleCommands(void)
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static int HandleCommands(void * /*cbParam*/, const cec_command &command)
+    #else
+    static int HandleCommands(void * /*cbParam*/, const cec_command command)
+    #endif
     {
-        if (!adapter || !valid)
-            return;
-
-        LogMessages();
-
-        cec_command command;
-        while (adapter->GetNextCommand(&command))
-        {
             LOG(VB_GENERAL, LOG_DEBUG, LOC +
                 QString("Command %1 from '%2' (%3) - destination '%4' (%5)")
                 .arg(command.opcode)
@@ -260,27 +349,76 @@ class CECAdapterPriv
 
             switch (command.opcode)
             {
-                // TODO
+                // TODO handle CEC commands.
                 default:
                     break;
             }
-        }
+            return 0;
+    }
 
-        LogMessages();
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static int HandleConfigurationChanged(void * /*cbParam*/, const libcec_configuration &config)
+    #else
+    static int HandleConfigurationChanged(void * /*cbParam*/, const libcec_configuration config)
+    #endif
+    {
+        LOG(VB_GENERAL, LOG_INFO, LOC + "Adapter configuration changed.");
+        return 1;
     }
 
-    void HandleKeyPresses(void)
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static int HandleAlerts(void * /*cbParam*/, const libcec_alert type, const libcec_parameter & /*param*/)
+    #else
+    static int HandleAlerts(void * /*cbParam*/, const libcec_alert type, const libcec_parameter /*param*/)
+    #endif
     {
-        if (!adapter || !valid)
-            return;
+        switch (type) // TODO Handle alerts.
+        {
+        case CEC_ALERT_CONNECTION_LOST:
+          LOG(VB_GENERAL, LOG_ERR, LOC + "Connection lost - TODO: need to handle this!");
+          break;
+        default:
+          LOG(VB_GENERAL, LOG_ERR, LOC + "Received unknown alert.");
+          break;
+        }
+        return 0;
+    }
 
-        cec_keypress key;
-        if (!adapter->GetNextKeypress(&key))
-            return;
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static int HandleMenuStateChanged(void * /*cbParam*/, const cec_menu_state &state)
+    #else
+    static int HandleMenuStateChanged(void * /*cbParam*/, const cec_menu_state state)
+    #endif
+    {
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("CEC menu state %1")
+            .arg(state == CEC_MENU_STATE_ACTIVATED ? "Activated" : "Deactivated"));
+        return 1;
+    }
 
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static void HandleSourceActivated(void * /*cbParam*/, const cec_logical_address &address, const &uint8_t activated)
+    #else
+    static void HandleSourceActivated(void * /*cbParam*/, const cec_logical_address address, const uint8_t activated)
+    #endif
+    {
+        LOG(VB_GENERAL, LOG_INFO, LOC + QString("Source %1 %2")
+            .arg(address).arg(activated ? "Activated" : "Deactivated"));
+
+        if (activated && resetSafe)
+                GetMythUI()->ResetScreensaver();
+        else
+            resetSafe = true;
+     }
+
+    #if CEC_LIB_VERSION_MAJOR < 2
+    static int HandleKeyPresses(void * /*cbParam*/, const cec_keypress &key)
+    #else
+    static int HandleKeyPresses(void * /*cbParam*/, const cec_keypress key)
+    #endif
+    {
         // Ignore key down events and wait for the key 'up'
         if (key.duration < 1)
-            return;
+            return 0;
 
         QString code;
         int action = 0;
@@ -595,13 +733,12 @@ class CECAdapterPriv
             .arg(code).arg(0 == action ? "(Not actioned)" : ""));
 
         if (0 == action)
-            return;
+            return 0;
 
         GetMythUI()->ResetScreensaver();
         QKeyEvent* ke = new QKeyEvent(QEvent::KeyPress, action, Qt::NoModifier);
         qApp->postEvent(GetMythMainWindow(), (QEvent*)ke);
-
-        LogMessages();
+        return 0;
     }
 
     void HandleActions(void)
@@ -629,7 +766,7 @@ class CECAdapterPriv
         // HDMI input
         if (switchInput && switchInputAllowed)
         {
-            if (adapter->SetActiveView())
+            if (adapter->SetActiveSource())
                 LOG(VB_GENERAL, LOG_INFO, LOC + "Asked TV to switch to this input.");
             else
                 LOG(VB_GENERAL, LOG_ERR,  LOC + "Failed to switch to this input.");
@@ -638,14 +775,14 @@ class CECAdapterPriv
         powerOffTV  = false;
         powerOnTV   = false;
         switchInput = false;
-
-        LogMessages();
     }
 
     ICECAdapter *adapter;
+    ICECCallbacks callbacks;
     QString      defaultDevice;
     int          defaultHDMIPort;
-    cec_logical_address defaultDeviceID;
+    cec_device_type defaultDeviceID;
+    cec_logical_address base_device;
     QTimer      *timer;
     bool         valid;
     bool         powerOffTV;
@@ -728,8 +865,6 @@ void CECAdapter::Action(const QString &action)
 void CECAdapter::Process(void)
 {
     gLock->lock();
-    m_priv->HandleCommands();
-    m_priv->HandleKeyPresses();
     m_priv->HandleActions();
     gLock->unlock();
 }
diff --git a/mythtv/libs/libmythui/cecadapter.h b/mythtv/libs/libmythui/cecadapter.h
index e9cf6d6..bb5eba8 100644
--- a/mythtv/libs/libmythui/cecadapter.h
+++ b/mythtv/libs/libmythui/cecadapter.h
@@ -7,6 +7,7 @@
 #define LIBCEC_ENABLED     QString("libCECEnabled")
 #define LIBCEC_DEVICE      QString("libCECDevice")
 #define LIBCEC_PORT        QString("libCECPort")
+#define LIBCEC_BASE        QString("libCECBase")
 #define LIBCEC_DEVICEID    QString("libCECDeviceID")
 #define POWEROFFTV_ALLOWED QString("PowerOffTVAllowed")
 #define POWEROFFTV_ONEXIT  QString("PowerOffTVOnExit")


Index: ChangeLog
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-18/ChangeLog,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ChangeLog	23 Aug 2013 18:30:50 -0000	1.8
+++ ChangeLog	3 Oct 2013 12:05:36 -0000	1.9
@@ -1,19 +1,36 @@
-commit 6a46ea014907ac0ee010bed9d8896cb2ee09bc2d
-Author: Stuart Morgan <smorgan at mythtv.org>
-Date:   Mon Aug 19 14:25:56 2013 +0100
+commit 33f0177459ded1ed3ca63c319bb825e3ee3a6d56
+Author: Martin Bene <myth at bene.priv.at>
+Date:   Sat Sep 14 16:27:22 2013 -0400
 
-    Disable database logging by default.
+    Fix MythWeb's date/time handling
     
-    It can be re-enabled using --enable-dblog
+    The code in question has partially changed so I am applying part of Martin's patch
+    (the section that clears to session variables) to fix the problem.
     
-    Until we actually start using this data somewhere there is not much
-    point in storing it. Since it's already known that writing to the
-    database can affect I/O performance, especially where drives are
-    shared with recordings, this could potentially even cause a positive
-    feedback loop. The I/O starvation causes the backend to start logging
-    slow read/write warnings, which in turn increase the writes to the
-    database exacerbating the problems.
-    
-    The same problem is also true, to a greater or lesser extent with file
-    based logging but we actually need the file logs so there isn't much
-    we can do there.
+    Thank you Martin!
+    
+    Refs #9833
+    
+    Signed-off-by: Nicolas Riendeau <nriendeau at mythtv.org>
+
+commit 7326d7ef70fb86037d9c30ca7e0762d0cb01b7ff
+Author: Scott Shawcroft <scott.shawcroft at gmail.com>
+Date:   Tue Aug 27 22:34:55 2013 -0400
+
+    Fix the problem of MythWeb failing to load translations
+    
+    Refs #11513
+    
+    Signed-off-by: Nicolas Riendeau <nriendeau at mythtv.org>
+
+commit 5d8ffe109286269ada87390a2b74e142ec36e364
+Author: Karl Dietz <dekarl at mythtv.org>
+Date:   Mon Aug 26 22:39:35 2013 +0200
+
+    fix merge in schedule templates added in f97529656
+    
+    if (!$this->$name) ends up as if(!0)...
+    
+    Fixes #11775
+    
+    (cherry picked from commit 08b94cea6346ebeb94edf98ecb5d7b7dd8555560)

mythtv-0.26-fixes.patch:
 b/mythtv/bindings/python/MythTV/database.py                                  |    2 
 b/mythtv/bindings/python/MythTV/dataheap.py                                  |    6 
 b/mythtv/bindings/python/MythTV/logging.py                                   |    6 
 b/mythtv/bindings/python/MythTV/system.py                                    |   11 
 b/mythtv/bindings/python/setup.py                                            |    4 
 b/mythtv/bindings/python/tmdb3/scripts/pytmdb3.py                            |    7 
 b/mythtv/bindings/python/tmdb3/tmdb3/pager.py                                |    5 
 b/mythtv/bindings/python/tmdb3/tmdb3/tmdb_api.py                             |    2 
 b/mythtv/i18n/mythfrontend_de.qm                                             |binary
 b/mythtv/i18n/mythfrontend_de.ts                                             |   22 
 b/mythtv/libs/libmythbase/logging.cpp                                        |    4 
 b/mythtv/libs/libmythbase/mythcommandlineparser.cpp                          |    6 
 b/mythtv/libs/libmythmetadata/metadatadownload.cpp                           |    8 
 b/mythtv/libs/libmythtv/avformatdecoder.cpp                                  |    2 
 b/mythtv/libs/libmythtv/decoderbase.cpp                                      |    5 
 b/mythtv/libs/libmythtv/eithelper.cpp                                        |   29 
 b/mythtv/programs/mythfrontend/commandlineparser.cpp                         |    2 
 b/mythtv/programs/scripts/hardwareprofile/config.py                          |    5 
 b/mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/data_mythtv.py |   16 
 b/mythtv/programs/scripts/hardwareprofile/os_detect.py                       |    5 
 b/mythtv/programs/scripts/metadata/Movie/tmdb3.py                            |    8 
 mythtv/bindings/python/MythTV/tmdb/XSLT/tmdbQuery.xsl                        |   99 
 mythtv/bindings/python/MythTV/tmdb/XSLT/tmdbVideo.xsl                        |  157 -
 mythtv/bindings/python/MythTV/tmdb/tmdb_api.py                               | 1317 ----------
 mythtv/bindings/python/MythTV/tmdb/tmdb_exceptions.py                        |   45 
 mythtv/bindings/python/MythTV/tmdb/tmdb_ui.py                                |  266 --
 mythtv/programs/scripts/metadata/Movie/tmdb.py                               |  640 ----
 27 files changed, 114 insertions(+), 2565 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.5 -r 1.6 mythtv-0.26-fixes.patch
Index: mythtv-0.26-fixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-18/mythtv-0.26-fixes.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- mythtv-0.26-fixes.patch	23 Aug 2013 18:30:50 -0000	1.5
+++ mythtv-0.26-fixes.patch	3 Oct 2013 12:05:36 -0000	1.6
@@ -1,11 +1,2198 @@
- mythtv/libs/libmythbase/logging.cpp               | 2 +-
- mythtv/libs/libmythbase/mythcommandlineparser.cpp | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
+ mythtv/bindings/python/MythTV/database.py          |    2 +-
+ mythtv/bindings/python/MythTV/dataheap.py          |    6 +-
+ mythtv/bindings/python/MythTV/logging.py           |    6 +-
+ mythtv/bindings/python/MythTV/system.py            |   11 +-
+ .../bindings/python/MythTV/tmdb/XSLT/tmdbQuery.xsl |   99 --
+ .../bindings/python/MythTV/tmdb/XSLT/tmdbVideo.xsl |  157 ---
+ mythtv/bindings/python/MythTV/tmdb/__init__.py     |    0
+ mythtv/bindings/python/MythTV/tmdb/tmdb_api.py     | 1317 --------------------
+ .../bindings/python/MythTV/tmdb/tmdb_exceptions.py |   45 -
+ mythtv/bindings/python/MythTV/tmdb/tmdb_ui.py      |  266 ----
+ mythtv/bindings/python/setup.py                    |    4 +-
+ mythtv/bindings/python/tmdb3/scripts/pytmdb3.py    |    7 +-
+ mythtv/bindings/python/tmdb3/tmdb3/pager.py        |    5 +-
+ mythtv/bindings/python/tmdb3/tmdb3/tmdb_api.py     |    2 +-
+ mythtv/i18n/mythfrontend_de.qm                     |  Bin 630506 -> 630506 bytes
+ mythtv/i18n/mythfrontend_de.ts                     |   22 +-
+ mythtv/libs/libmythbase/logging.cpp                |    4 +-
+ mythtv/libs/libmythbase/mythcommandlineparser.cpp  |    6 +-
+ mythtv/libs/libmythmetadata/metadatadownload.cpp   |    8 +-
+ mythtv/libs/libmythtv/avformatdecoder.cpp          |    2 +-
+ mythtv/libs/libmythtv/decoderbase.cpp              |    5 +-
+ mythtv/libs/libmythtv/eithelper.cpp                |   29 +-
+ mythtv/programs/mythfrontend/commandlineparser.cpp |    2 +-
+ mythtv/programs/scripts/hardwareprofile/config.py  |    5 +
+ .../distros/mythtv_data/data_mythtv.py             |   16 +-
+ .../programs/scripts/hardwareprofile/os_detect.py  |    5 +
+ mythtv/programs/scripts/metadata/Movie/tmdb.py     |  640 ----------
+ mythtv/programs/scripts/metadata/Movie/tmdb3.py    |    8 +-
+ 28 files changed, 114 insertions(+), 2565 deletions(-)
 
+diff --git a/mythtv/bindings/python/MythTV/database.py b/mythtv/bindings/python/MythTV/database.py
+index 525a213..368fb9e 100644
+--- a/mythtv/bindings/python/MythTV/database.py
++++ b/mythtv/bindings/python/MythTV/database.py
+@@ -835,7 +835,7 @@ class DatabaseConfig( object ):
+     database =  QuickProperty('_database', 'mythconverg')
+ 
+     @QuickProperty('_profile', gethostname())
+-    def profile(self, value):
++    def profile(value):
+         if value == 'my-unique-identifier-goes-here':
+             raise Exception
+         return value
+diff --git a/mythtv/bindings/python/MythTV/dataheap.py b/mythtv/bindings/python/MythTV/dataheap.py
+index 4a17d6b..268d007 100644
+--- a/mythtv/bindings/python/MythTV/dataheap.py
++++ b/mythtv/bindings/python/MythTV/dataheap.py
+@@ -1136,7 +1136,7 @@ class VideoGrabber( Grabber ):
+     def __init__(self, mode, lang='en', db=None):
+         dbvalue = {'tv':'TelevisionGrabber', 'movie':'MovieGrabber'}
+         path = {'tv':'metadata/Television/ttvdb.py',
+-                'movie':'metadata/Movie/tmdb.py'}
++                'movie':'metadata/Movie/tmdb3.py'}
+         self.mode = mode.lower()
+         try:
+             Grabber.__init__(self, setting=dbvalue[self.mode], db=db,
+@@ -1144,6 +1144,10 @@ class VideoGrabber( Grabber ):
+                         prefix=os.path.join(INSTALL_PREFIX, 'share/mythtv'))
+         except KeyError:
+             raise MythError('Invalid MythVideo grabber')
++
++        if self.path[-7:] == 'tmdb.py':
++            self.path = self.path[:-7] + 'tmdb3.py'
++
+         self.append('-l',lang)
+ 
+ #### MYTHNETVISION ####
+diff --git a/mythtv/bindings/python/MythTV/logging.py b/mythtv/bindings/python/MythTV/logging.py
+index f27387f..45ace32 100644
+--- a/mythtv/bindings/python/MythTV/logging.py
++++ b/mythtv/bindings/python/MythTV/logging.py
+@@ -409,11 +409,15 @@ class MythLog( LOGLEVEL, LOGMASK, LOGFACILITY ):
+     def _logdatabase(self, mask, level, message, detail):
+         if self.db and self._DBLOG:
+             with self.db.cursor(DummyLogger()) as cursor:
++                application = argv[0]
++                if '/' in application:
++                    application = application.rsplit('/', 1)[1]
++
+                 cursor.execute("""INSERT INTO logging
+                                     (host, application, pid, thread,
+                                      msgtime, level, message)
+                                   VALUES (?, ?, ?, ?, ?, ?, ?)""",
+-                    (self.db.gethostname(), argv[0].rsplit('/', 1)[1],
++                    (self.db.gethostname(), application,
+                      os.getpid(), self.module, self.time(), level,
+                      message + (' -- {0}'.format(detail) if detail else '')))
+ 
+diff --git a/mythtv/bindings/python/MythTV/system.py b/mythtv/bindings/python/MythTV/system.py
+index f24c8a9..44803bd 100644
+--- a/mythtv/bindings/python/MythTV/system.py
++++ b/mythtv/bindings/python/MythTV/system.py
+@@ -79,10 +79,17 @@ class System( DBCache ):
+         self.path = None
+ 
+         if setting is not None:
+-            # pull setting from database, substitute from argument if needed
++            # pull local setting from database
+             host = self.gethostname()
+             self.path = self.settings[host][setting]
+-            if (self.path is None) and (path is None):
++            if self.path is None:
++                # see if that setting is applied globally
++                self.path = self.settings['NULL'][setting]
++            if self.path is None:
++                # not set globally either, use supplied default
++                self.path = path
++            if self.path is None:
++                # no default supplied, just error out
+                 raise MythDBError(MythError.DB_SETTING, setting, host)
+ 
+         if self.path is None:
+diff --git a/mythtv/bindings/python/MythTV/tmdb/XSLT/tmdbQuery.xsl b/mythtv/bindings/python/MythTV/tmdb/XSLT/tmdbQuery.xsl
+deleted file mode 100644
+index f87b72a..0000000
+--- a/mythtv/bindings/python/MythTV/tmdb/XSLT/tmdbQuery.xsl
++++ /dev/null
+@@ -1,99 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<!--
+-    themoviedb.org query result conversion to MythTV Universal Metadata Format
+-    See: http://www.mythtv.org/wiki/MythTV_Universal_Metadata_Format
+--->
+-<xsl:stylesheet version="1.0"
+-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+-    xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
+-    xmlns:tmdbXpath="http://www.mythtv.org/wiki/MythTV_Universal_Metadata_Format">
+-
+-    <xsl:output method="xml" indent="yes" version="1.0" encoding="UTF-8" omit-xml-declaration="yes"/>
+-
+-    <!--
+-        This template calls all other templates which allows for multiple sources to be processed
+-        within a single Xslt file
+-    -->
+-    <xsl:template match="/">
+-        <xsl:if test="not(string(opensearch:totalResults)='0')">
+-            <metadata>
+-                <xsl:call-template name='movieQuery'/>
+-            </metadata>
+-        </xsl:if>
+-    </xsl:template>
+-
+-    <xsl:template name="movieQuery">
+-        <xsl:for-each select="//movie">
+-            <item>
+-                <language><xsl:value-of select="normalize-space(language)"/></language>
+-                <xsl:for-each select="tmdbXpath:titleElement(string(name))">
+-                    <title><xsl:value-of select="normalize-space(./@title)"/></title>
+-                    <xsl:if test="./@subtitle">
+-                        <subtitle><xsl:value-of select="normalize-space(./@subtitle)"/></subtitle>
+-                    </xsl:if>
+-                </xsl:for-each>
+-                <inetref><xsl:value-of select="normalize-space(id)"/></inetref>
+-                <imdb><xsl:value-of select="normalize-space(substring-after(string(imdb_id), 'tt'))"/></imdb>
+-                <userrating><xsl:value-of select="normalize-space(rating)"/></userrating>
+-                <xsl:if test="./certification/text() != ''">
+-                    <certifications>
+-                        <!--
+-                            This code will need to be modified when multiple country cerification
+-                            information is supported. Right now it assumes ONLY ratings from the US.
+-                        -->
+-                        <xsl:for-each select=".//certification">
+-                            <xsl:element name="certification">
+-                                <xsl:attribute name="locale">us</xsl:attribute>
+-                                <xsl:attribute name="name"><xsl:value-of select="normalize-space(.)"/></xsl:attribute>
+-                            </xsl:element>
+-                        </xsl:for-each>
+-                    </certifications>
+-                </xsl:if>
+-                <description><xsl:value-of select="normalize-space(overview)"/></description>
+-                <releasedate><xsl:value-of select="normalize-space(released)"/></releasedate>
+-                <xsl:if test=".//image[@type='poster'] or .//image[@type='backdrop']">
+-                    <images>
+-                        <xsl:if test=".//image[@type='poster']">
+-                            <xsl:element name="image">
+-                                <xsl:attribute name="type">coverart</xsl:attribute>
+-                                <xsl:if test=".//image[@type='poster' and @size='original']">
+-                                    <xsl:attribute name="url"><xsl:value-of select="normalize-space(.//image[@type='poster' and @size='original']/@url)"/></xsl:attribute>
+-                                    <xsl:if test=".//image[@type='poster' and @size='original']/@width != ''">
+-                                        <xsl:attribute name="width"><xsl:value-of select="normalize-space(.//image[@type='poster' and @size='original']/@width)"/></xsl:attribute>
+-                                    </xsl:if>
+-                                    <xsl:if test=".//image[@type='poster' and @size='original']/@height != ''">
+-                                        <xsl:attribute name="height"><xsl:value-of select="normalize-space(.//image[@type='poster' and @size='original']/@height)"/></xsl:attribute>
+-                                    </xsl:if>
+-                                </xsl:if>
+-                                <xsl:if test=".//image[@type='poster' and @size='cover']">
+-                                    <xsl:attribute name="thumb"><xsl:value-of select="normalize-space(.//image[@type='poster' and @size='cover']/@url)"/></xsl:attribute>
+-                                </xsl:if>
[...2678 lines suppressed...]
+-            return
+-        sys.stdout.write(u'%s:%s\n' % (u'Name', data[u'name']))
+-        keys = sorted(data.keys())
+-        images = {}
+-        for key in keys:
+-            if key == u'name':
+-                continue
+-            if key in ['also_known_as', 'filmography', 'images' ]:
+-                if key == 'images':
+-                    images = {}
+-                    for k in data[key].keys():
+-                        images[k] = u''
+-                if key == 'also_known_as':
+-                    alias = u''
+-                    for k in data[key]:
+-                        alias+=u'%s|' % k.replace(u'|', u' ')
+-                    if alias:
+-                       sys.stdout.write(u'%s:%s\n' % (self.camelcase(key), alias[:-1]))
+-                    continue
+-                for k in data[key]:
+-                    if key == 'filmography':
+-                        kys = sorted(k.keys())
+-                        filmography = u''
+-                        for c in kys:
+-                            if c == u'name':
+-                                continue
+-                            filmography+=u'%s:%s|' % (self.camelcase(c.replace(u'|', u' ')), k[c].replace(u'|', u' '))
+-                        if filmography:
+-                            sys.stdout.write(u'%s:%s|%s\n' % (self.camelcase(key), k[u'name'].replace(u'|', u' '), filmography[:-1]))
+-                    elif key == 'images':
+-                        sys.stdout.write(u'%s:%s\n' % (self.camelcase(k), data[key][k]))
+-            else:
+-                sys.stdout.write(u'%s:%s\n' % (self.camelcase(key), data[key]))
+-    # end peopleData()
+-
+-    def hashData(self, hash_value):
+-        '''Get Movie data by Hash value and display "key:value" pairs to stdout
+-        '''
+-        try:
+-            self.displayMovieData(self.config['moviedb'].searchHash(hash_value))
+-        except TmdbMovieOrPersonNotFound, msg:
+-            #sys.stderr.write(u"%s\n" % msg)
+-            return
+-        except TmdHttpError, msg:
+-            sys.stderr.write(self.error_messages['TmdHttpError'] % msg)
+-            sys.exit(1)
+-        except TmdXmlError, msg:
+-            sys.stderr.write(self.error_messages['TmdXmlError'] % msg)
+-            sys.exit(1)
+-        except TmdBaseError, msg:
+-            sys.stderr.write(self.error_messages['TmdBaseError'] % msg)
+-            sys.exit(1)
+-        except TmdbUiAbort, msg:
+-            sys.stderr.write(self.error_messages['TmdbUiAbort'] % msg)
+-            sys.exit(1)
+-        except Exception, e:
+-            sys.stderr.write(u"! Error: Unknown error during a Hash value Movie information display for (%s)\nError(%s)\n" % (hash_value, e))
+-            sys.exit(1)
+-    # end hashData()
+-
+-# end Class moviedbQueries()
+-
+-
+-def main():
+-    """Gets movie details using an IMDB# and a TMDB# OR get People information using a name
+-    """
+-    # themoviedb.org api key given by Travis Bell for Mythtv
+-    apikey = "c27cb71cff5bd76e1a7a009380562c62"
+-
+-    parser = OptionParser(usage=u"%prog usage: tmdb -hdruviomMPFBDS [parameters]\n <series name or 'series and season number' or 'series and season number and episode number'>\n\nFor details on using tmdb with Mythvideo see the tmdb wiki page at:\nhttp://www.mythtv.org/wiki/tmdb.py")
+-
+-    parser.add_option(  "-d", "--debug", action="store_true", default=False, dest="debug",
+-                        help=u"Show debugging info")
+-    parser.add_option(  "-r", "--raw", action="store_true",default=False, dest="raw",
+-                        help=u"Dump raw data only")
+-    parser.add_option(  "-u", "--usage", action="store_true", default=False, dest="usage",
+-                        help=u"Display examples for executing the tmdb script")
+-    parser.add_option(  "-v", "--version", action="store_true", default=False, dest="version",
+-                        help=u"Display version and author")
+-    parser.add_option(  "-i", "--interactive", action="store_true", default=False, dest="interactive",
+-                        help=u"Interaction mode (allows selection of a specific Movie or Person)")
+-    parser.add_option(  "-l", "--language", metavar="LANGUAGE", default=u'en', dest="language",
+-                        help=u"Select data that matches the specified language fall back to english if nothing found (e.g. 'es' Español, 'de' Deutsch ... etc)")
+-    parser.add_option(  "-M", "--movielist", action="store_true", default=False, dest="movielist",
+-                        help=u"Get matching Movie list")
+-    parser.add_option(  "-D", "--moviedata", action="store_true", default=False, dest="moviedata",
+-                        help=u"Get Movie metadata including graphic URLs")
+-    parser.add_option(  "-H", "--moviehash", action="store_true", default=False, dest="moviehash",
+-                        help=u"Get Movie metadata including graphic URLs using a Hash value.\nSee: http://api.themoviedb.org/2.1/methods/Hash.getInfo")
+-    parser.add_option(  "-P", "--peoplelist", action="store_true", default=False, dest="peoplelist",
+-                        help=u"Get matching People list")
+-    parser.add_option(  "-I", "--peopleinfo", action="store_true", default=False, dest="peopleinfo",
+-                        help=u"Get A Person's metadata including graphic URLs")
+-    parser.add_option(  "-t", action="store_true", default=False, dest="test",
+-                        help=u"Test for the availability of runtime dependencies")
+-
+-    opts, args = parser.parse_args()
+-
+-    # Test mode, if we've made it here, everything is ok
+-    if opts.test:
+-        print "Everything appears to be in order"
+-        sys.exit(0)
+-
+-    # Make all command line arguments unicode utf8
+-    for index in range(len(args)):
+-        args[index] = unicode(args[index], 'utf8')
+-
+-    if opts.debug:
+-        sys.stdout.write("\nopts: %s\n" % opts)
+-        sys.stdout.write("\nargs: %s\n\n" % args)
+-
+-    # Process version command line requests
+-    if opts.version:
+-        version = etree.XML(u'<grabber></grabber>')
+-        etree.SubElement(version, "name").text = __title__
+-        etree.SubElement(version, "author").text = __author__
+-        etree.SubElement(version, "thumbnail").text = 'tmdb.png'
+-        etree.SubElement(version, "command").text = 'tmdb.py'
+-        etree.SubElement(version, "type").text = 'movie'
+-        etree.SubElement(version, "description").text = 'Search and metadata downloads for themoviedb.org'
+-        etree.SubElement(version, "version").text = __version__
+-        sys.stdout.write(etree.tostring(version, encoding='UTF-8', pretty_print=True))
+-        sys.exit(0)
+-
+-    # Process usage command line requests
+-    if opts.usage:
+-        sys.stdout.write(__usage_examples__)
+-        sys.exit(0)
+-
+-    if not len(args) == 1:
+-        sys.stderr.write("! Error: There must be one value for any option. Your options are (%s)\n" % (args))
+-        sys.exit(1)
+-
+-    if args[0] == u'':
+-        sys.stderr.write("! Error: There must be a non-empty argument, yours is empty.\n")
+-        sys.exit(1)
+-
+-    Queries = moviedbQueries(apikey,
+-                mythtv = True,
+-                interactive = opts.interactive,
+-                select_first = False,
+-                debug = opts.debug,
+-                custom_ui = None,
+-                language = opts.language,
+-                search_all_languages = False,)
+-
+-    # Display in XML format
+-    # See: http://www.mythtv.org/wiki/MythTV_Universal_Metadata_Format
+-    Queries.config['moviedb'].xml = True
+-
+-    # Process requested option
+-    if opts.movielist:                  # Movie Search -M
+-       Queries.movieSearch(args[0])
+-    elif opts.moviedata:                # Movie metadata -D
+-       Queries.movieData(args[0])
+-    elif opts.peoplelist:               # People Search -P
+-       Queries.peopleSearch(args[0])
+-    elif opts.peopleinfo:               # Person metadata -I
+-       Queries.peopleData(args[0])
+-    elif opts.moviehash:                # Movie metadata using a hash value -H
+-       Queries.hashData(args[0])
+-
+-    sys.exit(0)
+-# end main()
+-
+-if __name__ == '__main__':
+-    main()
+diff --git a/mythtv/programs/scripts/metadata/Movie/tmdb3.py b/mythtv/programs/scripts/metadata/Movie/tmdb3.py
+index cc1ca16..9e4edcb 100755
+--- a/mythtv/programs/scripts/metadata/Movie/tmdb3.py
++++ b/mythtv/programs/scripts/metadata/Movie/tmdb3.py
+@@ -11,7 +11,7 @@
+ #-----------------------
+ __title__ = "TheMovieDB.org V3"
+ __author__ = "Raymond Wagner"
+-__version__ = "0.3.5"
++__version__ = "0.3.6"
+ # 0.1.0 Initial version
+ # 0.2.0 Add language support, move cache to home directory
+ # 0.3.0 Enable version detection to allow use in MythTV
+@@ -21,6 +21,9 @@ __version__ = "0.3.5"
+ # 0.3.3 Use translated title if available
+ # 0.3.4 Add support for finding by IMDB under -D (simulate previous version)
+ # 0.3.5 Add debugging mode
++# 0.3.6 Add handling for TMDB site and library returning null results in
++#       search. This should only need to be a temporary fix, and should be
++#       resolved upstream.
+ 
+ from optparse import OptionParser
+ import sys
+@@ -116,6 +119,9 @@ def buildList(query, opts):
+ 
+     count = 0
+     for res in results:
++        if res is None:
++            continue
++
+         m = VideoMetadata()
+         for i,j in mapping:
+             if getattr(res, j):


Index: mythtv.spec
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-18/mythtv.spec,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -r1.111 -r1.112
--- mythtv.spec	23 Aug 2013 18:30:52 -0000	1.111
+++ mythtv.spec	3 Oct 2013 12:05:36 -0000	1.112
@@ -60,7 +60,7 @@
 %define desktop_vendor RPMFusion
 
 # Git revision and branch ID
-%define _gitrev v0.26.1-1-g6a46ea0
+%define _gitrev v0.26.1-24-g9fd7c61
 %define branch fixes/0.26
 
 #
@@ -76,7 +76,7 @@
 %if "%{branch}" == "master"
 Release:        0.1.git.%{_gitrev}%{?dist}
 %else
-Release:        1%{?dist}
+Release:        4%{?dist}
 %endif
 
 # The primary license is GPLv2+, but bits are borrowed from a number of
@@ -102,10 +102,12 @@
 %if 0%{?rhel}
 %define with_crystalhd     %{?_without_crystalhd:  1} %{?!_without_crystalhd:  0}
 %define with_systemd       %{?_without_systemd:    1} %{?!_without_systemd:    0}
+%define with_vpx           %{?_without_vpx:        1} %{?!_without_vpx:        0}
 
 %else
 %define with_crystalhd     %{?_without_crystalhd:  0} %{?!_without_crystalhd:  1}
 %define with_systemd       %{?_without_systemd:    0} %{?!_without_systemd:    1}
+%define with_vpx           %{?_without_vpx:        0} %{?!_without_vpx:        1}
 %endif
 
 %define with_perl          %{?_without_perl:       0} %{!?_without_perl:       1}
@@ -139,6 +141,8 @@
 Patch1:    mythlogserver-segv.patch
 Patch2:    mythtv-0.26.0-types_h.patch
 Patch3:    mythtv-0.26.1-libva_121.patch
+# http://code.mythtv.org/trac/ticket/11338
+Patch4:    mythtv-0.26-libcec2.patch
 
 Source10:  PACKAGE-LICENSING
 Source11:  ChangeLog
@@ -181,8 +185,10 @@
 BuildRequires:  qt-devel >= 4.6
 BuildRequires:  phonon-devel phonon-backend-gstreamer
 BuildRequires:  libuuid-devel
+%if 0%{?fedora}
 BuildRequires:  libcec-devel
 BuildRequires:  libvpx-devel
+%endif
 
 BuildRequires:  lm_sensors-devel
 BuildRequires:  lirc-devel
@@ -361,6 +367,7 @@
 Requires:  mysql-server >= 5, mysql >= 5
 %endif
 Requires:  xmltv
+Requires:  udisks
 
 # Generate the required mythtv-frontend-api version string here so we only
 # have to do it once.
@@ -837,6 +844,7 @@
 %patch1 -p1 -b .mythlogserver
 %patch2 -p1 -b .types_h
 %patch3 -p1 -b .libva
+%patch4 -p1 -b .libcec
 
 # Install ChangeLog
 install -m 0644 %{SOURCE11} .
@@ -909,7 +917,9 @@
     --enable-libx264                            \
     --enable-libtheora --enable-libvorbis       \
     --enable-libxvid                            \
+%if %{with_vpx}
     --enable-libvpx                             \
+%endif
 %if %{with_vdpau}
     --enable-vdpau                              \
 %endif
@@ -948,9 +958,11 @@
 %endif
     --enable-debug
 
-# Insert rpm version-release for mythbackend --version output
-    echo 'SOURCE_VERSION="%{version}-%{release} (%_gitrev)"' > VERSION
-    echo 'BRANCH="%{branch}"'                               >> VERSION
+# Set the mythtv --version string
+    cat > VERSION <<EOF
+SOURCE_VERSION=%{_gitrev}
+BRANCH=%{branch}
+EOF
 
 # Make
     make %{?_smp_mflags}
@@ -1168,6 +1180,7 @@
 usermod -a -G audio,video mythtv
 exit 0
 
+%if %{with_mythmusic}
 %pre -n mythmusic
 # Add the "mythtv" user, with membership in the audio and video group
 getent group mythtv >/dev/null || groupadd -r mythtv
@@ -1178,6 +1191,7 @@
 # or new installs.
 usermod -a -G audio,video mythtv
 exit 0
+%endif
 
 %post backend
 %if %{with_systemd}
@@ -1459,6 +1473,15 @@
 
 
 %changelog
+* Tue Oct  1 2013 Richard Shaw <hobbes1069 at gmail.com> - 0.26.1-4
+- Update to latest bugfix release.
+- Add patch for libcec 2.
+- Update to latest bugfix release.
+- Add udisks as a requirement as it is required for ejecting cd/dvds.
+
+* Mon Sep 30 2013 Nicolas Chauvet <kwizart at gmail.com> - 0.26.1-2
+- Rebuilt
+
 * Thu Aug 22 2013 Richard Shaw <hobbes1069 at gmail.com> - 0.26.1-1
 - Update to latest bugfix release.
 - Add patch for new libva 1.2.1 version in rawhide.


More information about the rpmfusion-commits mailing list