diff options
author | Bartłomiej Piotrowski | 2018-01-07 18:35:14 +0100 |
---|---|---|
committer | Bartłomiej Piotrowski | 2018-01-07 18:35:14 +0100 |
commit | a7c0c9ee87f33624da7acb46b265d4c9dd0db477 (patch) | |
tree | 7a84e515070c5975c54cc0ad0ebb2923d7be25c1 | |
download | aur-a7c0c9ee87f33624da7acb46b265d4c9dd0db477.tar.gz |
Import from official repositories
-rw-r--r-- | .SRCINFO | 66 | ||||
-rw-r--r-- | 99-mythbackend.rules | 6 | ||||
-rw-r--r-- | PKGBUILD | 77 | ||||
-rw-r--r-- | libcec4.patch | 551 | ||||
-rw-r--r-- | loggingserver.patch | 11 | ||||
-rw-r--r-- | mythbackend.service | 16 | ||||
-rw-r--r-- | mythtv.install | 21 | ||||
-rw-r--r-- | qt510.patch | 601 |
8 files changed, 1349 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..97eba96db391 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,66 @@ +pkgbase = mythtv + pkgdesc = A Homebrew PVR project + pkgver = 29.0 + pkgrel = 5 + epoch = 1 + url = http://www.mythtv.org/ + install = mythtv.install + arch = x86_64 + license = GPL + makedepends = glew + makedepends = libcec + makedepends = libxml2 + makedepends = mesa + makedepends = mesa-libgl + makedepends = openssl + makedepends = yasm + makedepends = x264 + makedepends = gdb + depends = avahi + depends = fftw + depends = lame + depends = libass + depends = libavc1394 + depends = libcdio + depends = libiec61883 + depends = libgl + depends = libpulse + depends = libva + depends = libvpx + depends = libxinerama + depends = lirc + depends = mariadb-clients + depends = mysql-python + depends = perl-dbd-mysql + depends = perl-io-socket-inet6 + depends = perl-libwww + depends = perl-net-upnp + depends = python2-lxml + depends = qt5-webkit + depends = qt5-script + depends = taglib + depends = urlgrabber + depends = libx264 + depends = libvdpau + depends = exiv2 + depends = libxrandr + depends = jack + optdepends = glew: for GPU commercial flagging + optdepends = libcec: for consumer electronics control capabilities + optdepends = libxml2: to read blu-ray metadata + optdepends = openssl: for AirTunes (RAOP) support + conflicts = myththemes + conflicts = mythplugins-mythvideo + replaces = myththemes + replaces = mythplugins-mythvideo + source = mythtv-29.0.tar.gz::https://github.com/MythTV/mythtv/archive/v29.0.tar.gz + source = mythbackend.service + source = 99-mythbackend.rules + source = qt510.patch + sha512sums = 6d79d943b95b1816b4fce52f3de3e01ebcdcc2779f852ec8cf5e3a81f8be4c730a254ff78b52e36ac522ff99b125501f0cba33a2d4c01571552e09fb4dba18c2 + sha512sums = 41533da5d8ef694d8c12f60d956673d9e49fb6781ae58d6bfd0bf31e4f380fddb508f9cad3b91264a3ad55853c24c6932bdf83bb5b711c34c0836d71b46be02c + sha512sums = fc02c190f01dbfb803b87ea0a6cdf408ce7706dc1ed74fba939931c129fdeb5dab1105caf9f71f029843a4d74db888084f92173c3be240d8492454633311f7c8 + sha512sums = 5070b4e8ad5ebd4208a3e8393ebabb55118615c2966cb1ba585e94084c4ad643dc5644bfca9267eb81e6c27be16b088e541aa8118a43cbebaf9d28c52e15a35c + +pkgname = mythtv + diff --git a/99-mythbackend.rules b/99-mythbackend.rules new file mode 100644 index 000000000000..0c7cb1b59110 --- /dev/null +++ b/99-mythbackend.rules @@ -0,0 +1,6 @@ +# +# Create systemd device units for capture devices +# +SUBSYSTEM=="video4linux", TAG+="systemd" +SUBSYSTEM=="dvb", TAG+="systemd" +SUBSYSTEM=="firewire", TAG+="systemd" diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..ddec3d0ad8ac --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,77 @@ +# $Id: PKGBUILD 277487 2017-12-30 21:51:59Z alucryd $ +# Maintainer: Jonathan Conder <jonno.conder@gmail.com> +# Contributor: Giovanni Scafora <giovanni@archlinux.org> +# Contributor: Juergen Hoetzel <juergen@archlinux.org> +# Contributor: <kleptophobiac@gmail.com> +# Contributor: dorphell <dorphell@archlinux.org> + +pkgname=mythtv +pkgver=29.0 +pkgrel=5 +epoch=1 +pkgdesc="A Homebrew PVR project" +arch=('x86_64') +url="http://www.mythtv.org/" +license=('GPL') +depends=('avahi' 'fftw' 'lame' 'libass' 'libavc1394' 'libcdio' 'libiec61883' + 'libgl' 'libpulse' 'libva' 'libvpx' 'libxinerama' 'lirc' 'mariadb-clients' + 'mysql-python' 'perl-dbd-mysql' 'perl-io-socket-inet6' 'perl-libwww' + 'perl-net-upnp' 'python2-lxml' 'qt5-webkit' 'qt5-script' 'taglib' 'urlgrabber' + 'libx264' 'libvdpau' 'exiv2' 'libxrandr' 'jack') +makedepends=('glew' 'libcec' 'libxml2' 'mesa' 'mesa-libgl' 'openssl' 'yasm' 'x264' 'gdb') +optdepends=('glew: for GPU commercial flagging' + 'libcec: for consumer electronics control capabilities' + 'libxml2: to read blu-ray metadata' + 'openssl: for AirTunes (RAOP) support') +conflicts=('myththemes' 'mythplugins-mythvideo') +replaces=('myththemes' 'mythplugins-mythvideo') +install='mythtv.install' +source=("$pkgname-$pkgver.tar.gz::https://github.com/MythTV/$pkgname/archive/v$pkgver.tar.gz" + 'mythbackend.service' '99-mythbackend.rules' 'qt510.patch') +sha512sums=('6d79d943b95b1816b4fce52f3de3e01ebcdcc2779f852ec8cf5e3a81f8be4c730a254ff78b52e36ac522ff99b125501f0cba33a2d4c01571552e09fb4dba18c2' + '41533da5d8ef694d8c12f60d956673d9e49fb6781ae58d6bfd0bf31e4f380fddb508f9cad3b91264a3ad55853c24c6932bdf83bb5b711c34c0836d71b46be02c' + 'fc02c190f01dbfb803b87ea0a6cdf408ce7706dc1ed74fba939931c129fdeb5dab1105caf9f71f029843a4d74db888084f92173c3be240d8492454633311f7c8' + '5070b4e8ad5ebd4208a3e8393ebabb55118615c2966cb1ba585e94084c4ad643dc5644bfca9267eb81e6c27be16b088e541aa8118a43cbebaf9d28c52e15a35c') + +prepare() { + cd $pkgname-$pkgver/$pkgname + + patch -Np2 -i ../../qt510.patch + + find 'bindings/python' 'contrib' 'programs/scripts' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@' +} + +build() { + cd $pkgname-$pkgver/$pkgname + + ARCH="${CARCH/_/-}" + ./configure --prefix=/usr \ + --cpu="$ARCH" \ + --disable-altivec \ + --disable-audio-jack \ + --disable-ccache \ + --disable-distcc \ + --enable-libfftw3 \ + --enable-libmp3lame \ + --enable-libvpx \ + --enable-libx264 \ + --enable-vaapi \ + --python=python2 \ + --perl-config-opts=INSTALLDIRS=vendor + make +} + +package() { + cd $pkgname-$pkgver/$pkgname + make INSTALL_ROOT="$pkgdir" install + + install -D -m644 "$srcdir/mythbackend.service" "$pkgdir/usr/lib/systemd/system/mythbackend.service" + install -D -m644 'database/mc.sql' "$pkgdir/usr/share/mythtv/mc.sql" + + mkdir -p "$pkgdir/usr/share/mythtv" + cp -R 'contrib' "$pkgdir/usr/share/mythtv" + mkdir -p "$pkgdir/var/log/mythtv" + +# Install udev rules https://www.mythtv.org/wiki/Systemd_mythbackend_Configuration#Delay_starting_the_backend_until_tuners_have_initialized + install -Dm644 "$srcdir"/99-mythbackend.rules "$pkgdir"/usr/lib/udev/rules.d/99-mythbackend.rules +} diff --git a/libcec4.patch b/libcec4.patch new file mode 100644 index 000000000000..93fa165cae39 --- /dev/null +++ b/libcec4.patch @@ -0,0 +1,551 @@ +diff --git a/mythtv/libs/libmythui/cecadapter.cpp b/mythtv/libs/libmythui/cecadapter.cpp +index 00a8c73..06a8f3d 100644 +--- a/mythtv/libs/libmythui/cecadapter.cpp ++++ b/mythtv/libs/libmythui/cecadapter.cpp +@@ -33,17 +33,31 @@ QWaitCondition* CECAdapter::gActionsReady = new QWaitCondition(); + // libcec1's callback parameters are pass-by-ref + #define CEC_CALLBACK_PARAM_TYPE & + #else +-// libcec2's callback parameters are pass-by-value ++#if CEC_LIB_VERSION_MAJOR <= 3 ++// libcec2 and 3 callback parameters are pass-by-value + #define CEC_CALLBACK_PARAM_TYPE + #endif ++#endif + + // The libCEC callback functions ++#if CEC_LIB_VERSION_MAJOR <= 3 + static int CECLogMessageCallback(void *adapter, const cec_log_message CEC_CALLBACK_PARAM_TYPE message); + static int CECKeyPressCallback(void *adapter, const cec_keypress CEC_CALLBACK_PARAM_TYPE keypress); + static int CECCommandCallback(void *adapter, const cec_command CEC_CALLBACK_PARAM_TYPE command); ++#endif ++#if CEC_LIB_VERSION_MAJOR >= 4 ++static void CECLogMessageCallback(void *adapter, const cec_log_message* message); ++static void CECKeyPressCallback(void *adapter, const cec_keypress* keypress); ++static void CECCommandCallback(void *adapter, const cec_command* command); ++#endif + + #if CEC_LIB_VERSION_MAJOR >= 2 ++#if CEC_LIB_VERSION_MAJOR <= 3 + static int CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter CEC_CALLBACK_PARAM_TYPE data); ++#endif ++#if CEC_LIB_VERSION_MAJOR >= 4 ++static void CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter data); ++#endif + static void CECSourceActivatedCallback(void *adapter, const cec_logical_address address, const uint8_t activated); + #endif + +@@ -107,13 +121,24 @@ class CECAdapterPriv + } + + // Set up the callbacks ++#if CEC_LIB_VERSION_MAJOR <= 3 + callbacks.CBCecLogMessage = &CECLogMessageCallback; + callbacks.CBCecKeyPress = &CECKeyPressCallback; + callbacks.CBCecCommand = &CECCommandCallback; +-#if CEC_LIB_VERSION_MAJOR >= 2 ++#endif ++#if CEC_LIB_VERSION_MAJOR >= 4 ++ callbacks.logMessage = &CECLogMessageCallback; ++ callbacks.keyPress = &CECKeyPressCallback; ++ callbacks.commandReceived = &CECCommandCallback; ++#endif ++#if CEC_LIB_VERSION_MAJOR >= 2 && CEC_LIB_VERSION_MAJOR <= 3 + callbacks.CBCecAlert = &CECAlertCallback; + callbacks.CBCecSourceActivated = &CECSourceActivatedCallback; + #endif ++#if CEC_LIB_VERSION_MAJOR >= 4 ++ callbacks.alert = &CECAlertCallback; ++ callbacks.sourceActivated = &CECSourceActivatedCallback; ++#endif + configuration.callbackParam = this; + configuration.callbacks = &callbacks; + +@@ -127,8 +152,13 @@ class CECAdapterPriv + } + + // find adapters ++#if CEC_LIB_VERSION_MAJOR >= 4 ++ cec_adapter_descriptor *devices = new cec_adapter_descriptor[MAX_CEC_DEVICES]; ++ uint8_t num_devices = adapter->DetectAdapters(devices, MAX_CEC_DEVICES, NULL, true); ++#else + cec_adapter *devices = new cec_adapter[MAX_CEC_DEVICES]; + uint8_t num_devices = adapter->FindAdapters(devices, MAX_CEC_DEVICES, NULL); ++#endif + if (num_devices < 1) + { + LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to find any CEC devices."); +@@ -143,22 +173,37 @@ class CECAdapterPriv + .arg(num_devices)); + for (uint8_t i = 0; i < num_devices; i++) + { ++#if CEC_LIB_VERSION_MAJOR >= 4 ++ QString comm = QString::fromLatin1(devices[i].strComName); ++ QString path = QString::fromLatin1(devices[i].strComPath); ++#else + QString comm = QString::fromLatin1(devices[i].comm); ++ QString path = QString::fromLatin1(devices[i].path); ++#endif + bool match = find ? (comm == defaultDevice) : (i == 0); + devicenum = match ? i : devicenum; + LOG(VB_GENERAL, LOG_INFO, LOC + + QString("Device %1: path '%2' com port '%3' %4").arg(i + 1) +- .arg(QString::fromLatin1(devices[i].path)).arg(comm) ++ .arg(path).arg(comm) + .arg(match ? "SELECTED" : "")); + } + + // open adapter +- QString path = QString::fromLatin1(devices[devicenum].path); ++#if CEC_LIB_VERSION_MAJOR >= 4 ++ QString comm = QString::fromLatin1(devices[devicenum].strComName); ++ QString path = QString::fromLatin1(devices[devicenum].strComPath); ++#else + QString comm = QString::fromLatin1(devices[devicenum].comm); ++ QString path = QString::fromLatin1(devices[devicenum].path); ++#endif + LOG(VB_GENERAL, LOG_INFO, LOC + QString("Trying to open device %1 (%2).") + .arg(path).arg(comm)); + ++#if CEC_LIB_VERSION_MAJOR >= 4 ++ if (!adapter->Open(devices[devicenum].strComName)) ++#else + if (!adapter->Open(devices[devicenum].comm)) ++#endif + { + LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to open device."); + return false; +@@ -213,6 +258,20 @@ class CECAdapterPriv + return 1; + } + ++ void LogMessage(const cec_log_message* message) ++ { ++ QString msg(message->message); ++ int lvl = LOG_UNKNOWN; ++ switch (message->level) ++ { ++ case CEC_LOG_ERROR: lvl = LOG_ERR; break; ++ case CEC_LOG_WARNING: lvl = LOG_WARNING; break; ++ case CEC_LOG_NOTICE: lvl = LOG_INFO; break; ++ case CEC_LOG_DEBUG: lvl = LOG_DEBUG; break; ++ } ++ LOG(VB_GENERAL, lvl, LOC + QString("%1").arg(msg)); ++ } ++ + // NOTE - libcec2 changes the callbacks + // to be pass-by-value. + // For simplicity, this function remains as pass-by-ref +@@ -241,6 +300,29 @@ class CECAdapterPriv + return 1; + } + ++ void HandleCommand(const cec_command* command) ++ { ++ if (!adapter || !valid) ++ return; ++ ++ LOG(VB_GENERAL, LOG_DEBUG, LOC + ++ QString("Command %1 from '%2' (%3) - destination '%4' (%5)") ++ .arg(command->opcode) ++ .arg(adapter->ToString(command->initiator)) ++ .arg(command->initiator) ++ .arg(adapter->ToString(command->destination)) ++ .arg(command->destination)); ++ ++ switch (command->opcode) ++ { ++ // TODO ++ default: ++ break; ++ } ++ gCoreContext->SendSystemEvent(QString("CEC_COMMAND_RECEIVED COMMAND %1") ++ .arg(command->opcode)); ++ } ++ + int HandleKeyPress(const cec_keypress &key) + { + if (!adapter || !valid) +@@ -572,6 +654,335 @@ class CECAdapterPriv + return 1; + } + ++ void HandleKeyPress(const cec_keypress* key) ++ { ++ if (!adapter || !valid) ++ return; ++ ++ // Ignore key down events and wait for the key 'up' ++ if (key->duration < 1) ++ return; ++ ++ QString code; ++ int action = 0; ++ switch (key->keycode) ++ { ++ case CEC_USER_CONTROL_CODE_NUMBER0: ++ action = Qt::Key_0; ++ code = "0"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER1: ++ action = Qt::Key_1; ++ code = "1"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER2: ++ action = Qt::Key_2; ++ code = "2"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER3: ++ action = Qt::Key_3; ++ code = "3"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER4: ++ action = Qt::Key_4; ++ code = "4"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER5: ++ action = Qt::Key_5; ++ code = "5"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER6: ++ action = Qt::Key_6; ++ code = "6"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER7: ++ action = Qt::Key_7; ++ code = "7"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER8: ++ action = Qt::Key_8; ++ code = "8"; ++ break; ++ case CEC_USER_CONTROL_CODE_NUMBER9: ++ action = Qt::Key_9; ++ code = "9"; ++ break; ++ case CEC_USER_CONTROL_CODE_SELECT: ++ action = Qt::Key_Select; ++ code = "SELECT"; ++ break; ++ case CEC_USER_CONTROL_CODE_ENTER: ++ action = Qt::Key_Enter; ++ code = "ENTER"; ++ break; ++ case CEC_USER_CONTROL_CODE_UP: ++ action = Qt::Key_Up; ++ code = "UP"; ++ break; ++ case CEC_USER_CONTROL_CODE_DOWN: ++ action = Qt::Key_Down; ++ code = "DOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_LEFT: ++ action = Qt::Key_Left; ++ code = "LEFT"; ++ break; ++ case CEC_USER_CONTROL_CODE_LEFT_UP: ++ action = Qt::Key_Left; ++ code = "LEFT_UP"; ++ break; ++ case CEC_USER_CONTROL_CODE_LEFT_DOWN: ++ action = Qt::Key_Left; ++ code = "LEFT_DOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_RIGHT: ++ action = Qt::Key_Right; ++ code = "RIGHT"; ++ break; ++ case CEC_USER_CONTROL_CODE_RIGHT_UP: ++ action = Qt::Key_Right; ++ code = "RIGHT_UP"; ++ break; ++ case CEC_USER_CONTROL_CODE_RIGHT_DOWN: ++ action = Qt::Key_Right; ++ code = "RIGHT_DOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_ROOT_MENU: ++ action = Qt::Key_M; ++ code = "ROOT_MENU"; ++ break; ++ case CEC_USER_CONTROL_CODE_EXIT: ++ action = Qt::Key_Escape; ++ code = "EXIT"; ++ break; ++ case CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL: ++ action = Qt::Key_H; ++ code = "PREVIOUS_CHANNEL"; ++ break; ++ case CEC_USER_CONTROL_CODE_SOUND_SELECT: ++ action = Qt::Key_Plus; ++ code = "SOUND_SELECT"; ++ break; ++ case CEC_USER_CONTROL_CODE_VOLUME_UP: ++ action = Qt::Key_VolumeUp; ++ code = "VOLUME_UP"; ++ break; ++ case CEC_USER_CONTROL_CODE_VOLUME_DOWN: ++ action = Qt::Key_VolumeDown; ++ code = "VOLUME_DOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_MUTE: ++ action = Qt::Key_VolumeMute; ++ code = "MUTE"; ++ break; ++ case CEC_USER_CONTROL_CODE_PLAY: ++ action = Qt::Key_P; ++ code = "PLAY"; ++ break; ++ case CEC_USER_CONTROL_CODE_PAUSE: ++ action = Qt::Key_P; // same as play ++ code = "PAUSE"; ++ break; ++ case CEC_USER_CONTROL_CODE_STOP: ++ action = Qt::Key_Stop; ++ code = "STOP"; ++ break; ++ case CEC_USER_CONTROL_CODE_RECORD: ++ action = Qt::Key_R; ++ code = "RECORD"; ++ break; ++ case CEC_USER_CONTROL_CODE_CLEAR: ++ action = Qt::Key_Clear; ++ code = "CLEAR"; ++ break; ++ case CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION: ++ action = Qt::Key_I; ++ code = "DISPLAY_INFORMATION"; ++ break; ++ case CEC_USER_CONTROL_CODE_PAGE_UP: ++ action = Qt::Key_PageUp; ++ code = "PAGE_UP"; ++ break; ++ case CEC_USER_CONTROL_CODE_PAGE_DOWN: ++ action = Qt::Key_PageDown; ++ code = "PAGE_DOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_EJECT: ++ action = Qt::Key_Eject; ++ code = "EJECT"; ++ break; ++ case CEC_USER_CONTROL_CODE_FORWARD: ++ action = Qt::Key_Forward; ++ code = "FORWARD"; ++ break; ++ case CEC_USER_CONTROL_CODE_BACKWARD: ++ action = Qt::Key_Back; ++ code = "BACKWARD"; ++ break; ++ case CEC_USER_CONTROL_CODE_F1_BLUE: ++ action = Qt::Key_F5; // NB F1 is help and we normally map blue to F5 ++ code = "F1_BLUE"; ++ break; ++ case CEC_USER_CONTROL_CODE_F2_RED: ++ action = Qt::Key_F2; ++ code = "F2_RED"; ++ break; ++ case CEC_USER_CONTROL_CODE_F3_GREEN: ++ action = Qt::Key_F3; ++ code = "F3_GREEN"; ++ break; ++ case CEC_USER_CONTROL_CODE_F4_YELLOW: ++ action = Qt::Key_F4; ++ code = "F4_YELLOW"; ++ break; ++ case CEC_USER_CONTROL_CODE_SETUP_MENU: ++ action = Qt::Key_M; // Duplicate of Root Menu ++ code = "SETUP_MENU"; ++ break; ++ case CEC_USER_CONTROL_CODE_CONTENTS_MENU: ++ action = Qt::Key_M; // Duplicate of Root Menu ++ code = "CONTENTS_MENU"; ++ break; ++ case CEC_USER_CONTROL_CODE_FAVORITE_MENU: ++ action = Qt::Key_M; // Duplicate of Root Menu ++ code = "FAVORITE_MENU"; ++ break; ++ case CEC_USER_CONTROL_CODE_DOT: ++ action = Qt::Key_Period; ++ code = "DOT"; ++ break; ++ case CEC_USER_CONTROL_CODE_NEXT_FAVORITE: ++ action = Qt::Key_Slash; ++ code = "NEXT_FAVORITE"; ++ break; ++ case CEC_USER_CONTROL_CODE_INPUT_SELECT: ++ action = Qt::Key_C; ++ code = "INPUT_SELECT"; ++ break; ++ case CEC_USER_CONTROL_CODE_HELP: ++ action = Qt::Key_F1; ++ code = "HELP"; ++ break; ++ case CEC_USER_CONTROL_CODE_STOP_RECORD: ++ action = Qt::Key_R; // Duplicate of Record ++ code = "STOP_RECORD"; ++ break; ++ case CEC_USER_CONTROL_CODE_SUB_PICTURE: ++ action = Qt::Key_V; ++ code = "SUB_PICTURE"; ++ break; ++ case CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE: ++ action = Qt::Key_S; ++ code = "ELECTRONIC_PROGRAM_GUIDE"; ++ break; ++ case CEC_USER_CONTROL_CODE_POWER: ++ action = Qt::Key_PowerOff; ++ code = "POWER"; ++ break; ++ ++ // these codes have 'non-standard' Qt key mappings to ensure ++ // each code has a unique key mapping ++ case CEC_USER_CONTROL_CODE_CHANNEL_DOWN: ++ action = Qt::Key_F20; // to differentiate from Up ++ code = "CHANNEL_DOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_CHANNEL_UP: ++ action = Qt::Key_F21; // to differentiate from Down ++ code = "CHANNEL_UP"; ++ break; ++ case CEC_USER_CONTROL_CODE_REWIND: ++ action = Qt::Key_F22; // to differentiate from Left ++ code = "REWIND"; ++ break; ++ case CEC_USER_CONTROL_CODE_FAST_FORWARD: ++ action = Qt::Key_F23; // to differentiate from Right ++ code = "FAST_FORWARD"; ++ break; ++ case CEC_USER_CONTROL_CODE_ANGLE: ++ action = Qt::Key_F24; ++ code = "ANGLE"; ++ break; ++ case CEC_USER_CONTROL_CODE_F5: ++ action = Qt::Key_F6; // NB! ++ code = "F5"; ++ break; ++ ++ // codes with no obvious MythTV action ++ case CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION: ++ code = "INITIAL_CONFIGURATION"; ++ break; ++ case CEC_USER_CONTROL_CODE_PAUSE_RECORD: ++ code = "PAUSE_RECORD"; ++ break; ++ case CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND: ++ code = "VIDEO_ON_DEMAND"; ++ break; ++ case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING: ++ code = "TIMER_PROGRAMMING"; ++ break; ++ case CEC_USER_CONTROL_CODE_UNKNOWN: ++ code = "UNKNOWN"; ++ break; ++ case CEC_USER_CONTROL_CODE_DATA: ++ code = "DATA"; ++ break; ++ ++ // Functions aren't implemented (similar to macros?) ++ case CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION: ++ code = "POWER_ON_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_PLAY_FUNCTION: ++ code = "PLAY_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION: ++ code = "PAUSE_PLAY_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_RECORD_FUNCTION: ++ code = "RECORD_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION: ++ code = "PAUSE_RECORD_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_STOP_FUNCTION: ++ code = "STOP_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_MUTE_FUNCTION: ++ code = "MUTE_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION: ++ code = "RESTORE_VOLUME_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_TUNE_FUNCTION: ++ code = "TUNE_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION: ++ code = "SELECT_MEDIA_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION: ++ code = "SELECT_AV_INPUT_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION: ++ code = "SELECT_AUDIO_INPUT_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION: ++ code = "POWER_TOGGLE_FUNCTION"; ++ break; ++ case CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION: ++ code = "POWER_OFF_FUNCTION"; ++ break; ++ } ++ ++ LOG(VB_GENERAL, LOG_DEBUG, LOC + QString("Keypress %1 %2") ++ .arg(code).arg(0 == action ? "(Not actioned)" : "")); ++ ++ if (0 == action) ++ return; ++ ++ GetMythUI()->ResetScreensaver(); ++ QKeyEvent* ke = new QKeyEvent(QEvent::KeyPress, action, Qt::NoModifier); ++ qApp->postEvent(GetMythMainWindow(), (QEvent*)ke); ++ } ++ + #if CEC_LIB_VERSION_MAJOR >= 2 + int HandleAlert(const libcec_alert alert, const libcec_parameter &data) + { +@@ -764,6 +1175,7 @@ void CECAdapter::Action(const QString &action) + gActionsReady->wakeAll(); + } + ++#if CEC_LIB_VERSION_MAJOR <= 3 + static int CECLogMessageCallback(void *adapter, const cec_log_message CEC_CALLBACK_PARAM_TYPE message) + { + return ((CECAdapterPriv*)adapter)->LogMessage(message); +@@ -778,13 +1190,37 @@ static int CECCommandCallback(void *adapter, const cec_command CEC_CALLBACK_PARA + { + return ((CECAdapterPriv*)adapter)->HandleCommand(command); + } ++#endif ++#if CEC_LIB_VERSION_MAJOR >= 4 ++static void CECLogMessageCallback(void *adapter, const cec_log_message* message) ++{ ++ ((CECAdapterPriv*)adapter)->LogMessage(message); ++} ++ ++static void CECKeyPressCallback(void *adapter, const cec_keypress* keypress) ++{ ++ ((CECAdapterPriv*)adapter)->HandleKeyPress(keypress); ++} ++ ++static void CECCommandCallback(void *adapter, const cec_command* command) ++{ ++ ((CECAdapterPriv*)adapter)->HandleCommand(command); ++} ++#endif + + #if CEC_LIB_VERSION_MAJOR >= 2 ++#if CEC_LIB_VERSION_MAJOR <= 3 + static int CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter CEC_CALLBACK_PARAM_TYPE data) + { + return ((CECAdapterPriv*)adapter)->HandleAlert(alert, data); + } +- ++#endif ++#if CEC_LIB_VERSION_MAJOR >= 4 ++static void CECAlertCallback(void *adapter, const libcec_alert alert, const libcec_parameter data) ++{ ++ ((CECAdapterPriv*)adapter)->HandleAlert(alert, data); ++} ++#endif + static void CECSourceActivatedCallback(void *adapter, const cec_logical_address address, const uint8_t activated) + { + ((CECAdapterPriv*)adapter)->HandleSourceActivated(address, activated); diff --git a/loggingserver.patch b/loggingserver.patch new file mode 100644 index 000000000000..7ec37626e3c0 --- /dev/null +++ b/loggingserver.patch @@ -0,0 +1,11 @@ +--- a/mythtv/libs/libmythbase/loggingserver.cpp 2017-02-13 21:15:14.150339977 +0100 ++++ b/mythtv/libs/libmythbase/loggingserver.cpp 2017-02-13 21:15:08.738490693 +0100 +@@ -722,7 +722,7 @@ + if (!item) + continue; + +- if (item->message()[0] != '\0') ++ if (item->message()[0] != QChar('\0')) + { + qLock.unlock(); + bool logged = m_logger->logqmsg(*query, item); diff --git a/mythbackend.service b/mythbackend.service new file mode 100644 index 000000000000..2adbc3d07d2b --- /dev/null +++ b/mythbackend.service @@ -0,0 +1,16 @@ +[Unit] +Description=MythTV Backend +Wants=network-online.target +After=network.target mysqld.service + +[Service] +Type=simple +Environment=HOME=/var/lib/mythtv +User=mythtv +ExecStart=/usr/bin/mythbackend --logpath /var/log/mythtv +ExecStop=/usr/bin/mythshutdown --setscheduledwakeup +#ExecStop=/usr/bin/mythshutdown --shutdown +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/mythtv.install b/mythtv.install new file mode 100644 index 000000000000..9cc74a40b04f --- /dev/null +++ b/mythtv.install @@ -0,0 +1,21 @@ +post_upgrade() { + if ! getent passwd mythtv &>/dev/null; then + getent group mythtv &>/dev/null || groupadd -r mythtv >/dev/null + useradd -rmd /var/lib/mythtv -g mythtv -G video,audio,optical -s /bin/bash mythtv >/dev/null + chmod 755 "$pkgdir/var/lib/mythtv" + fi + + echo -e "You may need to load time zone tables in MySQL.\nSee http://www.mythtv.org/wiki/MySQL_Time_Zone_Tables" +} + +post_install() { + echo -e "For installation information, visit:\nhttps://wiki.archlinux.org/index.php/MythTV" + + post_upgrade +} + +post_remove() { + echo -e "The MythTV database was not removed. To remove it, run:\n mysql -u root -e 'drop database mythconverg;'" + [ -d var/lib/mythtv ] && echo "The MythTV home directory /var/lib/mythtv can also be removed." + echo -e "The 'mythtv' user and group can also be removed." +} diff --git a/qt510.patch b/qt510.patch new file mode 100644 index 000000000000..89c1e3201150 --- /dev/null +++ b/qt510.patch @@ -0,0 +1,601 @@ +diff --git a/mythtv/configure b/mythtv/configure +index 8b7ba2ed6f..32fbe2bf60 100755 +--- a/mythtv/configure ++++ b/mythtv/configure +@@ -6099,21 +6099,26 @@ enable_weak_pic() { + + enabled pic && enable_weak_pic + +-is_qmake5(){ +- $1 --version 2>&1 | egrep -q -e "Qt version 5\.[2-9]\.[0-9]" ++version2string(){ ++ # accepts version as in 1.10.4 and turns it into 0001.0010.0004.0000.0000 which can be compared as a string ++ echo $1 | awk -F. '{ printf("%04d.%04d.%04d.%04d.%04d", $1, $2, $3, $4, $5); };' + } + ++# Minimum supported Qt version ++qt_minimum_version="5.2" ++ + # qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake + if [ x"$qmake" = "xqmake" ]; then +- CHECK_QMAKE=`which qmake-qt5 2>&1`" /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake `which $qmake 2>&1`" ++ CHECK_QMAKE=`which -a qmake-qt5 2>/dev/null`" /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake `which -a $qmake 2>/dev/null`" + else +- CHECK_QMAKE=`which $qmake 2>&1`" "`which qmake-qt5 2>&1`" /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake" ++ CHECK_QMAKE=`which -a $qmake 2>/dev/null`" "`which -a qmake-qt5 2>/dev/null`" /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake" + fi + # try to find a qt5 qmake to use + found_qmake='' + for i in $CHECK_QMAKE; do + if test -e $i ; then +- if is_qmake5 $i; then ++ qmake_version=`$i --version | sed -n "s/.*Qt version \([0-9]*\.[0-9]*\.[0-9]*\) .*/\1/p"` ++ if ! [ $(version2string $qmake_version) \< $(version2string $qt_minimum_version) ]; then + found_qmake=$i + check_cxxflags -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 + break; +@@ -6124,7 +6129,7 @@ for i in $CHECK_QMAKE; do + fi + done + if [ x"$found_qmake" = "x" ]; then +- die "qmake for Qt5.2 or newer not found.\nPlease specify the correct qmake with --qmake=" ++ die "qmake for Qt version $qt_minimum_version or newer not found. Please specify the correct qmake with --qmake=" + else + qmake=$found_qmake + fi +diff --git a/mythtv/libs/libmyth/libmyth.pro b/mythtv/libs/libmyth/libmyth.pro +index 24ec735b18..1fd5cc01c0 100644 +--- a/mythtv/libs/libmyth/libmyth.pro ++++ b/mythtv/libs/libmyth/libmyth.pro +@@ -1,10 +1,8 @@ + include ( ../../settings.pro ) + + QT += network xml sql script +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets + android: QT += androidextras +-} + + TEMPLATE = lib + TARGET = myth-$$LIBVERSION +@@ -177,11 +175,7 @@ unix:!cygwin { + SOURCES += mediamonitor-unix.cpp + HEADERS += mediamonitor-unix.h + !android { +- contains(QT_VERSION, ^5\\.[0-9]\\..*) { + using_qtdbus: QT += dbus +- } else { +- using_qtdbus: CONFIG += qdbus +- } + } + } + +diff --git a/mythtv/libs/libmyth/test/test_audioconvert/test_audioconvert.pro b/mythtv/libs/libmyth/test/test_audioconvert/test_audioconvert.pro +index 9e73a8ca23..d0d77e8027 100644 +--- a/mythtv/libs/libmyth/test/test_audioconvert/test_audioconvert.pro ++++ b/mythtv/libs/libmyth/test/test_audioconvert/test_audioconvert.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_audioconvert +diff --git a/mythtv/libs/libmyth/test/test_audioutils/test_audioutils.pro b/mythtv/libs/libmyth/test/test_audioutils/test_audioutils.pro +index 3d62f741cb..df659aeb19 100644 +--- a/mythtv/libs/libmyth/test/test_audioutils/test_audioutils.pro ++++ b/mythtv/libs/libmyth/test/test_audioutils/test_audioutils.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_audioutils +diff --git a/mythtv/libs/libmyth/test/test_programinfo/test_programinfo.pro b/mythtv/libs/libmyth/test/test_programinfo/test_programinfo.pro +index bfd9d24287..e59584844d 100644 +--- a/mythtv/libs/libmyth/test/test_programinfo/test_programinfo.pro ++++ b/mythtv/libs/libmyth/test/test_programinfo/test_programinfo.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_programinfo +diff --git a/mythtv/libs/libmythbase/libmythbase.pro b/mythtv/libs/libmythbase/libmythbase.pro +index aa7ac151db..444abea063 100644 +--- a/mythtv/libs/libmythbase/libmythbase.pro ++++ b/mythtv/libs/libmythbase/libmythbase.pro +@@ -153,10 +153,7 @@ win32-msvc* { + } + + QT += xml sql network +- +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + include ( ../libs-targetfix.pro ) + +diff --git a/mythtv/libs/libmythbase/test/test_mythsystem/test_mythsystem.pro b/mythtv/libs/libmythbase/test/test_mythsystem/test_mythsystem.pro +index fee4e38226..159dcb28f3 100644 +--- a/mythtv/libs/libmythbase/test/test_mythsystem/test_mythsystem.pro ++++ b/mythtv/libs/libmythbase/test/test_mythsystem/test_mythsystem.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_mythsystem +diff --git a/mythtv/libs/libmythbase/test/test_mythsystemlegacy/test_mythsystemlegacy.pro b/mythtv/libs/libmythbase/test/test_mythsystemlegacy/test_mythsystemlegacy.pro +index b116e7a5ae..d97c6c8112 100644 +--- a/mythtv/libs/libmythbase/test/test_mythsystemlegacy/test_mythsystemlegacy.pro ++++ b/mythtv/libs/libmythbase/test/test_mythsystemlegacy/test_mythsystemlegacy.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_mythsystemlegacy +diff --git a/mythtv/libs/libmythbase/test/test_mythtimer/test_mythtimer.pro b/mythtv/libs/libmythbase/test/test_mythtimer/test_mythtimer.pro +index d0e332b74d..91c6a3f773 100644 +--- a/mythtv/libs/libmythbase/test/test_mythtimer/test_mythtimer.pro ++++ b/mythtv/libs/libmythbase/test/test_mythtimer/test_mythtimer.pro +@@ -1,11 +1,6 @@ + include ( ../../../../settings.pro ) + +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_mythtimer +diff --git a/mythtv/libs/libmythbase/test/test_template/test_template.pro b/mythtv/libs/libmythbase/test/test_template/test_template.pro +index 2cf0a3e615..c8229039b7 100644 +--- a/mythtv/libs/libmythbase/test/test_template/test_template.pro ++++ b/mythtv/libs/libmythbase/test/test_template/test_template.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_template +diff --git a/mythtv/libs/libmythmetadata/libmythmetadata.pro b/mythtv/libs/libmythmetadata/libmythmetadata.pro +index d06405c930..695900c985 100644 +--- a/mythtv/libs/libmythmetadata/libmythmetadata.pro ++++ b/mythtv/libs/libmythmetadata/libmythmetadata.pro +@@ -1,9 +1,7 @@ + include ( ../../settings.pro ) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = lib + TARGET = mythmetadata-$$LIBVERSION +diff --git a/mythtv/libs/libmythmetadata/test/test_videometadata/test_videometadata.pro b/mythtv/libs/libmythmetadata/test/test_videometadata/test_videometadata.pro +index 218378d363..cc283b73c0 100644 +--- a/mythtv/libs/libmythmetadata/test/test_videometadata/test_videometadata.pro ++++ b/mythtv/libs/libmythmetadata/test/test_videometadata/test_videometadata.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_videometadata +diff --git a/mythtv/libs/libmythprotoserver/libmythprotoserver.pro b/mythtv/libs/libmythprotoserver/libmythprotoserver.pro +index d9c5643ec8..a1d2446cc1 100644 +--- a/mythtv/libs/libmythprotoserver/libmythprotoserver.pro ++++ b/mythtv/libs/libmythprotoserver/libmythprotoserver.pro +@@ -1,9 +1,7 @@ + include ( ../../settings.pro ) + + QT += network sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = lib + TARGET = mythprotoserver-$$LIBVERSION +diff --git a/mythtv/libs/libmythtv/libmythtv.pro b/mythtv/libs/libmythtv/libmythtv.pro +index 77dd7917a0..b88964a3ea 100644 +--- a/mythtv/libs/libmythtv/libmythtv.pro ++++ b/mythtv/libs/libmythtv/libmythtv.pro +@@ -1,9 +1,7 @@ + include ( ../../settings.pro ) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = lib + TARGET = mythtv-$$LIBVERSION +diff --git a/mythtv/libs/libmythtv/test/test_copyframes/test_copyframes.pro b/mythtv/libs/libmythtv/test/test_copyframes/test_copyframes.pro +index b365d57cd3..15a39d0986 100644 +--- a/mythtv/libs/libmythtv/test/test_copyframes/test_copyframes.pro ++++ b/mythtv/libs/libmythtv/test/test_copyframes/test_copyframes.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_copyframes +diff --git a/mythtv/libs/libmythtv/test/test_eitfixups/test_eitfixups.pro b/mythtv/libs/libmythtv/test/test_eitfixups/test_eitfixups.pro +index 6e8881b4eb..a6be44cc62 100644 +--- a/mythtv/libs/libmythtv/test/test_eitfixups/test_eitfixups.pro ++++ b/mythtv/libs/libmythtv/test/test_eitfixups/test_eitfixups.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_eitfixups +diff --git a/mythtv/libs/libmythtv/test/test_iptvrecorder/test_iptvrecorder.pro b/mythtv/libs/libmythtv/test/test_iptvrecorder/test_iptvrecorder.pro +index c051d80319..bbc9e89a46 100644 +--- a/mythtv/libs/libmythtv/test/test_iptvrecorder/test_iptvrecorder.pro ++++ b/mythtv/libs/libmythtv/test/test_iptvrecorder/test_iptvrecorder.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_iptvrecorder +diff --git a/mythtv/libs/libmythtv/test/test_mpegtables/test_mpegtables.pro b/mythtv/libs/libmythtv/test/test_mpegtables/test_mpegtables.pro +index 62f3124bb5..b280b0eaa7 100644 +--- a/mythtv/libs/libmythtv/test/test_mpegtables/test_mpegtables.pro ++++ b/mythtv/libs/libmythtv/test/test_mpegtables/test_mpegtables.pro +@@ -1,13 +1,7 @@ + include ( ../../../../settings.pro ) + + QT += xml sql network +- +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-CONFIG += qtestlib +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += testlib +-} + + TEMPLATE = app + TARGET = test_mpegtables +diff --git a/mythtv/libs/libmythui/libmythui.pro b/mythtv/libs/libmythui/libmythui.pro +index 6b534ad2c2..092098dd4a 100644 +--- a/mythtv/libs/libmythui/libmythui.pro ++++ b/mythtv/libs/libmythui/libmythui.pro +@@ -1,10 +1,7 @@ + include ( ../../settings.pro ) + + QT += xml sql network opengl +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-QT += webkit +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*):using_qtwebkit { ++using_qtwebkit { + QT += widgets + QT += webkitwidgets + android: QT += androidextras +diff --git a/mythtv/programs/mythavtest/mythavtest.pro b/mythtv/programs/mythavtest/mythavtest.pro +index b993647179..35ed274fd9 100644 +--- a/mythtv/programs/mythavtest/mythavtest.pro ++++ b/mythtv/programs/mythavtest/mythavtest.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythbackend/mythbackend.pro b/mythtv/programs/mythbackend/mythbackend.pro +index ab59bcbbe1..5e54d3bfeb 100644 +--- a/mythtv/programs/mythbackend/mythbackend.pro ++++ b/mythtv/programs/mythbackend/mythbackend.pro +@@ -10,9 +10,7 @@ mingw | win32-msvc* { + # need the following for QUrl::addQueryItem + DEFINES += QT_DISABLE_DEPRECATED_BEFORE + } +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythccextractor/mythccextractor.pro b/mythtv/programs/mythccextractor/mythccextractor.pro +index fbe8c2e50a..a0e70a9ef7 100644 +--- a/mythtv/programs/mythccextractor/mythccextractor.pro ++++ b/mythtv/programs/mythccextractor/mythccextractor.pro +@@ -2,9 +2,7 @@ include (../../settings.pro) + include ( ../programs-libs.pro ) + + QT += sql network +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythcommflag/mythcommflag.pro b/mythtv/programs/mythcommflag/mythcommflag.pro +index 997966e295..a3fde4f4bd 100644 +--- a/mythtv/programs/mythcommflag/mythcommflag.pro ++++ b/mythtv/programs/mythcommflag/mythcommflag.pro +@@ -2,9 +2,7 @@ include (../../settings.pro) + include (../../version.pro) + include ( ../programs-libs.pro ) + +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythfilerecorder/mythfilerecorder.pro b/mythtv/programs/mythfilerecorder/mythfilerecorder.pro +index 73300742f1..ba568e091a 100644 +--- a/mythtv/programs/mythfilerecorder/mythfilerecorder.pro ++++ b/mythtv/programs/mythfilerecorder/mythfilerecorder.pro +@@ -3,9 +3,7 @@ include (../../version.pro) + include ( ../programs-libs.pro ) + + QT += network xml sql script +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythfilldatabase/mythfilldatabase.pro b/mythtv/programs/mythfilldatabase/mythfilldatabase.pro +index 52e6e0a256..0f4f944cf7 100644 +--- a/mythtv/programs/mythfilldatabase/mythfilldatabase.pro ++++ b/mythtv/programs/mythfilldatabase/mythfilldatabase.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythfrontend/mythfrontend.pro b/mythtv/programs/mythfrontend/mythfrontend.pro +index 744fe1f2bb..2e5f313243 100644 +--- a/mythtv/programs/mythfrontend/mythfrontend.pro ++++ b/mythtv/programs/mythfrontend/mythfrontend.pro +@@ -7,11 +7,7 @@ mingw | win32-msvc* { + # script debugger currently only enabled for WIN32 builds + QT += scripttools + } +-contains(QT_VERSION, ^4\\.[0-9]\\..*) { +-QT += webkit +-using_qtdbus: CONFIG += qdbus +-} +-contains(QT_VERSION, ^5\\.[0-9]\\..*):using_qtwebkit { ++using_qtwebkit { + QT += widgets + QT += webkitwidgets + using_qtdbus: QT += dbus +diff --git a/mythtv/programs/mythjobqueue/mythjobqueue.pro b/mythtv/programs/mythjobqueue/mythjobqueue.pro +index 9405ab597f..389eec7843 100644 +--- a/mythtv/programs/mythjobqueue/mythjobqueue.pro ++++ b/mythtv/programs/mythjobqueue/mythjobqueue.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro) + include ( ../programs-libs.pro) + + QT += sql network +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + CONFIG -= opengl + +diff --git a/mythtv/programs/mythlcdserver/mythlcdserver.pro b/mythtv/programs/mythlcdserver/mythlcdserver.pro +index fd0a98bf91..766715ee61 100644 +--- a/mythtv/programs/mythlcdserver/mythlcdserver.pro ++++ b/mythtv/programs/mythlcdserver/mythlcdserver.pro +@@ -3,9 +3,8 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} ++ + using_opengl:QT += opengl + + TEMPLATE = app +diff --git a/mythtv/programs/mythlogserver/mythlogserver.pro b/mythtv/programs/mythlogserver/mythlogserver.pro +index fbe8c2e50a..a0e70a9ef7 100644 +--- a/mythtv/programs/mythlogserver/mythlogserver.pro ++++ b/mythtv/programs/mythlogserver/mythlogserver.pro +@@ -2,9 +2,7 @@ include (../../settings.pro) + include ( ../programs-libs.pro ) + + QT += sql network +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythmediaserver/mythmediaserver.pro b/mythtv/programs/mythmediaserver/mythmediaserver.pro +index 2f9a804939..e042941fba 100644 +--- a/mythtv/programs/mythmediaserver/mythmediaserver.pro ++++ b/mythtv/programs/mythmediaserver/mythmediaserver.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythpreviewgen/mythpreviewgen.pro b/mythtv/programs/mythpreviewgen/mythpreviewgen.pro +index d21797ede9..3d085385ba 100644 +--- a/mythtv/programs/mythpreviewgen/mythpreviewgen.pro ++++ b/mythtv/programs/mythpreviewgen/mythpreviewgen.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythscreenwizard/mythscreenwizard.pro b/mythtv/programs/mythscreenwizard/mythscreenwizard.pro +index 42c4669620..5a4d08d417 100644 +--- a/mythtv/programs/mythscreenwizard/mythscreenwizard.pro ++++ b/mythtv/programs/mythscreenwizard/mythscreenwizard.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro) + include ( ../programs-libs.pro) + + QT += sql network +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythtranscode/mythtranscode.pro b/mythtv/programs/mythtranscode/mythtranscode.pro +index 4d4c3bcbcb..1f66fade2b 100644 +--- a/mythtv/programs/mythtranscode/mythtranscode.pro ++++ b/mythtv/programs/mythtranscode/mythtranscode.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro) + include ( ../programs-libs.pro) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythtv-setup/mythtv-setup.pro b/mythtv/programs/mythtv-setup/mythtv-setup.pro +index 24a9255fb7..9ef3f1c61a 100644 +--- a/mythtv/programs/mythtv-setup/mythtv-setup.pro ++++ b/mythtv/programs/mythtv-setup/mythtv-setup.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network xml sql +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + INCLUDEPATH += ../../libs/libmythtv/channelscan + DEPENDPATH += ../../libs/libmythtv/channelscan +diff --git a/mythtv/programs/mythutil/mythutil.pro b/mythtv/programs/mythutil/mythutil.pro +index ab8897f17c..0ad14ef856 100644 +--- a/mythtv/programs/mythutil/mythutil.pro ++++ b/mythtv/programs/mythutil/mythutil.pro +@@ -3,9 +3,7 @@ include ( ../../version.pro ) + include ( ../programs-libs.pro ) + + QT += network sql xml +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread +diff --git a/mythtv/programs/mythwelcome/mythwelcome.pro b/mythtv/programs/mythwelcome/mythwelcome.pro +index edddbf18a6..fa83a39852 100644 +--- a/mythtv/programs/mythwelcome/mythwelcome.pro ++++ b/mythtv/programs/mythwelcome/mythwelcome.pro +@@ -3,9 +3,7 @@ include (../../version.pro) + include (../programs-libs.pro) + + QT += xml sql network +-contains(QT_VERSION, ^5\\.[0-9]\\..*) { + QT += widgets +-} + + TEMPLATE = app + CONFIG += thread |