summaryrefslogtreecommitdiffstats
path: root/abs/core/mythtv
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/mythtv')
-rw-r--r--abs/core/mythtv/stable-0.25/mythtv/PKGBUILD8
-rwxr-xr-xabs/core/mythtv/stable-0.25/mythtv/myth_settings-2.patch38
-rw-r--r--abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch234
3 files changed, 193 insertions, 87 deletions
diff --git a/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD
index c5100fa..c173e20 100644
--- a/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD
@@ -6,7 +6,7 @@
pkgname=mythtv
pkgver=0.25
-pkgrel=13
+pkgrel=18
commit_hash=`cat ../git_src/git_hash`
pkgdesc="A Homebrew PVR project $commit_hash"
arch=('i686' 'x86_64')
@@ -62,7 +62,8 @@ groups=('pvr')
#options=(!strip)
#MAKEFLAGS="-j6"
install='mythtv.install'
-patchs=('myth_settings.patch' 'myth_settings-2.patch')
+#patchs=('myth_settings.patch' 'myth_settings-2.patch')
+patchs=('myth_settings.patch' )
optdepends=('xmltv: to download tv listings')
replaces=('mythvideo' 'myththemes')
conflicts=('mythvideo' 'myththemes')
@@ -143,8 +144,7 @@ package() {
md5sums=('7ef6de58240e7aad389a0b13d91b1cf6'
'2babd4b8e146a7538d18dcd55695b0be'
- 'c4db7784c5107ae846fd795a4dabe0bc'
- '08634edc00f738b8732bfa7f574e22fd'
+ '322f48528b350f0e6aebfff6eab4c4ee'
'f735805a80b0d1180dee01f9df1b7004'
'f407d6af23e74a49540755420f84fa58'
'5469d9921b726db750b991c87d226158')
diff --git a/abs/core/mythtv/stable-0.25/mythtv/myth_settings-2.patch b/abs/core/mythtv/stable-0.25/mythtv/myth_settings-2.patch
deleted file mode 100755
index 4e83473..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/myth_settings-2.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/mythtv/programs/mythutil/settingsutils.cpp b/mythtv/programs/mythutil/settingsutils.cpp
-index ff7e509..d229f27 100644
---- a/mythtv/programs/mythutil/settingsutils.cpp
-+++ b/mythtv/programs/mythutil/settingsutils.cpp
-@@ -382,6 +382,17 @@ static int ImportSettings(const MythUtilCommandLineParser &cmdline)
- 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);
- }
-@@ -454,7 +465,6 @@ static int ExportSettings(const MythUtilCommandLineParser &cmdline)
- 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" )
-@@ -500,6 +510,7 @@ static int ExportSettings(const MythUtilCommandLineParser &cmdline)
- }
- }
- QFile file( export_filename );
-+
- if( !file.open(QIODevice::WriteOnly) )
- return -1;
-
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;
+