From 5a66b67c322a7ba523798cf60b8627e25aa34273 Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Tue, 25 Nov 2014 19:19:06 +0000 Subject: plex-home-theater: initial inclusion. refs #981 --- abs/extra/plex-home-theater/PKGBUILD | 77 ++++++++++++++ abs/extra/plex-home-theater/__changelog | 2 + .../plex-home-theater/plex-ffmpeg-compat.patch | 29 ++++++ .../plex-home-theater/plex-home-theater.install | 7 ++ .../plex-home-theater/plex-libcec-2.2.0.patch | 114 +++++++++++++++++++++ abs/extra/plex-home-theater/plex-lirc-socket.patch | 56 ++++++++++ abs/extra/plex-home-theater/plex_lib.conf | 9 ++ abs/extra/plex-home-theater/plexhometheater.sh | 5 + 8 files changed, 299 insertions(+) create mode 100755 abs/extra/plex-home-theater/PKGBUILD create mode 100644 abs/extra/plex-home-theater/__changelog create mode 100755 abs/extra/plex-home-theater/plex-ffmpeg-compat.patch create mode 100644 abs/extra/plex-home-theater/plex-home-theater.install create mode 100644 abs/extra/plex-home-theater/plex-libcec-2.2.0.patch create mode 100644 abs/extra/plex-home-theater/plex-lirc-socket.patch create mode 100644 abs/extra/plex-home-theater/plex_lib.conf create mode 100755 abs/extra/plex-home-theater/plexhometheater.sh diff --git a/abs/extra/plex-home-theater/PKGBUILD b/abs/extra/plex-home-theater/PKGBUILD new file mode 100755 index 0000000..42c7df2 --- /dev/null +++ b/abs/extra/plex-home-theater/PKGBUILD @@ -0,0 +1,77 @@ +# $Id$ +# Maintainer: Maxime Gauduin +# Contributor: Daniel Wallace + +pkgname=plex-home-theater +pkgver=1.2.2 +pkgrel=6 +pkgdesc='Plex Home Theater' +arch=('i686' 'x86_64') +url='http://www.plexapp.com/' +license=('GPL2') +depends=('boost-libs' 'curl' 'ffmpeg-compat' 'glew' 'libcdio' 'libmad' + 'libmicrohttpd' 'libmpeg2' 'libsamplerate' 'libssh' 'libusb-compat' + 'libvdpau' 'libxrandr' 'lzo' 'sdl_image' 'sdl_mixer' 'smbclient' + 'taglib' 'tinyxml' 'yajl') +makedepends=('boost' 'cmake' 'doxygen' 'java-environment' 'libcec' 'libplist' + 'libshairport' 'nasm' 'swig' 'unzip' 'zip') +optdepends=('libplist: AirPlay support' + 'libshairport: AirPlay support' + 'libcec: Pulse-Eight USB-CEC adapter support' + 'pulseaudio: PulseAudio support') +install="${pkgname}.install" +source=("https://github.com/plexinc/plex-home-theater-public/archive/pht-v${pkgver}.tar.gz" + 'plex-ffmpeg-compat.patch' + 'plex-libcec-2.2.0.patch' + 'plex-lirc-socket.patch' + 'plexhometheater.sh' + 'plex_lib.conf') + +prepare() { + cd plex-home-theater-public-pht-v${pkgver} + + patch -Np1 -i ../plex-libcec-2.2.0.patch + patch -Np1 -i ../plex-lirc-socket.patch + patch -Np1 -i ../plex-ffmpeg-compat.patch +} + +build() { + cd plex-home-theater-public-pht-v${pkgver} + + if [[ -d build ]]; then + rm -rf build + fi + mkdir build && cd build + + cmake .. -DCMAKE_INSTALL_PREFIX='/usr' \ + -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include" \ + -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include" \ + -DENABLE_{AUTOUPDATE,DUMP_SYMBOLS}='FALSE' -DENABLE_PYTHON='TRUE' \ + -DPYTHON_EXEC='/usr/bin/python2' -DUSE_INTERNAL_FFMPEG='FALSE' \ + -DCREATE_BUNDLE='FALSE' + make +} + +package() { + cd plex-home-theater-public-pht-v${pkgver}/build + + make DESTDIR="${pkgdir}" install + install -dm 755 "${pkgdir}"/usr/{lib/plexhometheater,share/{applications,pixmaps}} + mv "${pkgdir}"/usr/bin/{system,xbmc-xrandr} "${pkgdir}"/usr/lib/plexhometheater/ + mv "${pkgdir}"/usr/share/XBMC "${pkgdir}"/usr/share/plexhometheater + install -m 755 "${srcdir}"/plexhometheater.sh "${pkgdir}"/usr/bin/ + install -m 644 ../plex/Resources/plexhometheater.desktop "${pkgdir}"/usr/share/applications/ + install -m 644 ../plex/Resources/plex-icon-256.png "${pkgdir}"/usr/share/pixmaps/plexhometheater.png + + # LinHES stuff + #add in plex_lib.conf + install -D -m0744 ${srcdir}/plex_lib.conf ${pkgdir}/etc/gen_lib_xml.d/plex_lib.conf +} + +# vim: ts=2 sw=2 et: +md5sums=('10bc6dd7be91a33eba9b666c96f50a20' + '6704244166497db7fa6b3ddd43a0e53b' + '066484ad4949f96ddddaa8b1d4d709e1' + 'b96a1d70174d80d3f2272bdc5b48e4a3' + '8fae1350cc36f40ed65fbf96128a02d0' + '8735a4e7857bc85085482c4f8bcb1d01') diff --git a/abs/extra/plex-home-theater/__changelog b/abs/extra/plex-home-theater/__changelog new file mode 100644 index 0000000..17b9dc6 --- /dev/null +++ b/abs/extra/plex-home-theater/__changelog @@ -0,0 +1,2 @@ +PKGBUILD - Added plex_lib.conf, this file goes in /etc/gen_lib_xml.d/ +plexhometheater.install - add gen_lib_xml.py to post_install and post_remove diff --git a/abs/extra/plex-home-theater/plex-ffmpeg-compat.patch b/abs/extra/plex-home-theater/plex-ffmpeg-compat.patch new file mode 100755 index 0000000..1601500 --- /dev/null +++ b/abs/extra/plex-home-theater/plex-ffmpeg-compat.patch @@ -0,0 +1,29 @@ +diff -rupN plex-home-theater.orig/plex/CMakeModules/FindFFmpeg.cmake plex-home-theater/plex/CMakeModules/FindFFmpeg.cmake +--- plex-home-theater.orig/plex/CMakeModules/FindFFmpeg.cmake 2014-09-15 11:46:21.751638700 +0200 ++++ plex-home-theater/plex/CMakeModules/FindFFmpeg.cmake 2014-09-15 11:43:25.678039000 +0200 +@@ -41,7 +41,7 @@ MACRO(FFMPEG_FIND varname shortname head + /opt/csw/include # Blastwave + /opt/include + /usr/freeware/include +- PATH_SUFFIXES ffmpeg ++ PATH_SUFFIXES ffmpeg-compat + DOC "Location of FFMPEG Headers" + ) + +@@ -62,7 +62,7 @@ MACRO(FFMPEG_FIND varname shortname head + /opt/csw/include # Blastwave + /opt/include + /usr/freeware/include +- PATH_SUFFIXES ffmpeg ++ PATH_SUFFIXES ffmpeg-compat + DOC "Location of FFMPEG Headers" + ) + ENDIF(NOT FFMPEG_${varname}_INCLUDE_DIRS) +@@ -85,6 +85,7 @@ MACRO(FFMPEG_FIND varname shortname head + /opt/csw/lib + /opt/lib + /usr/freeware/lib64 ++ PATH_SUFFIXES ffmpeg-compat + DOC "Location of FFMPEG Libraries" + ) + diff --git a/abs/extra/plex-home-theater/plex-home-theater.install b/abs/extra/plex-home-theater/plex-home-theater.install new file mode 100644 index 0000000..3633bdc --- /dev/null +++ b/abs/extra/plex-home-theater/plex-home-theater.install @@ -0,0 +1,7 @@ +post_install() { + gen_lib_xml.py +} + +post_remove() { + gen_lib_xml.py +} diff --git a/abs/extra/plex-home-theater/plex-libcec-2.2.0.patch b/abs/extra/plex-home-theater/plex-libcec-2.2.0.patch new file mode 100644 index 0000000..8c35296 --- /dev/null +++ b/abs/extra/plex-home-theater/plex-libcec-2.2.0.patch @@ -0,0 +1,114 @@ +From e62cdd0c9ae9818c5c35c6b6b57ba8ff322ca052 Mon Sep 17 00:00:00 2001 +From: Maxime Gauduin +Date: Tue, 4 Nov 2014 17:07:10 +0100 +Subject: [PATCH] libCEC 2.2.0 fixes + +--- + project/BuildDependencies/scripts/0_package.list | 1 + + project/BuildDependencies/scripts/libcec_d.bat | 15 --------------- + project/BuildDependencies/scripts/libcec_d.txt | 2 +- + system/peripherals.xml | 2 +- + xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp | 2 ++ + xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 11 ++++++++--- + 6 files changed, 13 insertions(+), 20 deletions(-) + delete mode 100644 project/BuildDependencies/scripts/libcec_d.bat + +diff --git a/project/BuildDependencies/scripts/0_package.list b/project/BuildDependencies/scripts/0_package.list +index d2a00aa..6f441f3 100644 +--- a/project/BuildDependencies/scripts/0_package.list ++++ b/project/BuildDependencies/scripts/0_package.list +@@ -11,4 +11,5 @@ libnfs-1.6.0-win32 + libshairplay-d689c6-win32 + libjpeg-turbo-1.2.0-win32 + libbluray-0.2.3-win32 ++libcec-2.2.0-win32-1 + taglib-1.8beta-win32 +diff --git a/project/BuildDependencies/scripts/libcec_d.bat b/project/BuildDependencies/scripts/libcec_d.bat +deleted file mode 100644 +index 0b41b8a..0000000 +--- a/project/BuildDependencies/scripts/libcec_d.bat ++++ /dev/null +@@ -1,15 +0,0 @@ +-@ECHO OFF +- +-SET LOC_PATH=%CD% +-SET FILES=%LOC_PATH%\libcec_d.txt +- +-CALL dlextract.bat libcec %FILES% +- +-cd %TMP_PATH% +- +-mkdir "%CUR_PATH%\include\libcec" +-xcopy libcec\include\* "%CUR_PATH%\include\libcec\." /E /Q /I /Y +- +-copy libcec\libcec.dll "%XBMC_PATH%\system\." +- +-cd %LOC_PATH% +diff --git a/project/BuildDependencies/scripts/libcec_d.txt b/project/BuildDependencies/scripts/libcec_d.txt +index 065ce3a..3d0265e 100644 +--- a/project/BuildDependencies/scripts/libcec_d.txt ++++ b/project/BuildDependencies/scripts/libcec_d.txt +@@ -1,3 +1,3 @@ + ; filename source of the file + +-libcec-2.1.1.zip http://mirrors.xbmc.org/build-deps/win32/ ++libcec-2.2.0-win32.zip http://mirrors.xbmc.org/build-deps/win32/ +diff --git a/system/peripherals.xml b/system/peripherals.xml +index 68205df..ea0bb17 100644 +--- a/system/peripherals.xml ++++ b/system/peripherals.xml +@@ -28,7 +28,7 @@ + + + +- ++ + + + +diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp +index da169c1..f3c8149 100644 +--- a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp ++++ b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp +@@ -101,6 +101,8 @@ bool CPeripheralBusCEC::PerformDeviceScan(PeripheralScanResults &results) + break; + case ADAPTERTYPE_RPI: + result.m_mappedBusType = PERIPHERAL_BUS_RPI; ++ // the Pi's adapter cannot be removed, no need to rescan ++ m_bNeedsPolling = false; + break; + default: + break; +diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp +index 056a77e..9823427 100644 +--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp ++++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp +@@ -1302,8 +1302,8 @@ void CPeripheralCecAdapter::SetConfigurationFromLibCEC(const CEC::libcec_configu + + void CPeripheralCecAdapter::SetConfigurationFromSettings(void) + { +- // use the same client version as libCEC version +- m_configuration.clientVersion = CEC_CLIENT_VERSION_CURRENT; ++ // client version matches the version of libCEC that we originally used the API from ++ m_configuration.clientVersion = CEC_CLIENT_VERSION_2_2_0; + + // device name 'XBMC' + snprintf(m_configuration.strDeviceName, 13, "%s", GetSettingString("device_name").c_str()); +@@ -1378,8 +1378,13 @@ void CPeripheralCecAdapter::SetConfigurationFromSettings(void) + m_configuration.bPowerOffOnStandby = iStandbyAction == 13011 ? 1 : 0; + m_configuration.bShutdownOnStandby = iStandbyAction == 13005 ? 1 : 0; + +- // double tap prevention timeout in ms ++#if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD) ++ // double tap prevention timeout in ms. libCEC uses 50ms units for this in 2.2.0, so divide by 50 ++ m_configuration.iDoubleTapTimeout50Ms = GetSettingInt("double_tap_timeout_ms") / 50; ++#else ++ // backwards compatibility. will be removed once the next major release of libCEC is out + m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms"); ++#endif + } + + void CPeripheralCecAdapter::ReadLogicalAddresses(const CStdString &strString, cec_logical_addresses &addresses) +-- +2.1.3 + diff --git a/abs/extra/plex-home-theater/plex-lirc-socket.patch b/abs/extra/plex-home-theater/plex-lirc-socket.patch new file mode 100644 index 0000000..7110252 --- /dev/null +++ b/abs/extra/plex-home-theater/plex-lirc-socket.patch @@ -0,0 +1,56 @@ +From c20e1deb62521acaca945fe6af780cdfb477610b Mon Sep 17 00:00:00 2001 +From: Maxime Gauduin +Date: Thu, 30 Oct 2014 09:43:48 +0100 +Subject: [PATCH] Fix lirc socket path + +--- + configure.in | 4 ++-- + plex/CMakeModules/PlatformConfigLINUX.cmake | 2 +- + plex/CMakeModules/PlatformConfigRPI.cmake | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.in b/configure.in +index 002245a..85ad398 100644 +--- a/configure.in ++++ b/configure.in +@@ -452,9 +452,9 @@ AC_ARG_ENABLE([texturepacker], + + AC_ARG_WITH([lirc-device], + [AS_HELP_STRING([--with-lirc-device=file], +- [specify the default LIRC device (default is /dev/lircd)])], ++ [specify the default LIRC device (default is /var/run/lirc/lircd)])], + [lirc_device=$withval], +- [lirc_device=/dev/lircd]) ++ [lirc_device=/var/run/lirc/lircd]) + AC_DEFINE_UNQUOTED([LIRC_DEVICE], ["$lirc_device"], [Default LIRC device]) + + AC_ARG_ENABLE([udev], +diff --git a/plex/CMakeModules/PlatformConfigLINUX.cmake b/plex/CMakeModules/PlatformConfigLINUX.cmake +index 078fafb..3afa5c1 100644 +--- a/plex/CMakeModules/PlatformConfigLINUX.cmake ++++ b/plex/CMakeModules/PlatformConfigLINUX.cmake +@@ -126,7 +126,7 @@ if(DEFINED OPENGL_FOUND) + endif() + + #### default lircdevice +-set(LIRC_DEVICE "/dev/lircd") ++set(LIRC_DEVICE "/var/run/lirc/lircd") + + #### on linux we want to use a "easy" name + set(EXECUTABLE_NAME "plexhometheater") +diff --git a/plex/CMakeModules/PlatformConfigRPI.cmake b/plex/CMakeModules/PlatformConfigRPI.cmake +index 82aa751..367cdc9 100644 +--- a/plex/CMakeModules/PlatformConfigRPI.cmake ++++ b/plex/CMakeModules/PlatformConfigRPI.cmake +@@ -103,7 +103,7 @@ list(APPEND CONFIG_INTERNAL_LIBS lib_dllsymbols) + + + #### default lircdevice +-set(LIRC_DEVICE "/dev/lircd") ++set(LIRC_DEVICE "/var/run/lirc/lircd") + + #### on linux we want to use a "easy" name + set(EXECUTABLE_NAME "plexhometheater") +-- +2.1.3 + diff --git a/abs/extra/plex-home-theater/plex_lib.conf b/abs/extra/plex-home-theater/plex_lib.conf new file mode 100644 index 0000000..70db20a --- /dev/null +++ b/abs/extra/plex-home-theater/plex_lib.conf @@ -0,0 +1,9 @@ + + + + diff --git a/abs/extra/plex-home-theater/plexhometheater.sh b/abs/extra/plex-home-theater/plexhometheater.sh new file mode 100755 index 0000000..53276ff --- /dev/null +++ b/abs/extra/plex-home-theater/plexhometheater.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +export XBMC_BIN_HOME='/usr/lib/plexhometheater' +export XBMC_HOME='/usr/share/plexhometheater' +exec plexhometheater -- cgit v0.12