From 5a66b67c322a7ba523798cf60b8627e25aa34273 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
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 <alucryd@archlinux.org>
+# Contributor: Daniel Wallace <daniel.wallace@gatech.edu>
+
+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 <alucryd@gmail.com>
+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 @@
+     <setting key="device_type" type="int" value="1" configurable="0" />
+     <setting key="wake_devices_advanced" type="string" value="" configurable="0" />
+     <setting key="standby_devices_advanced" type="string" value="" configurable="0" />
+-    <setting key="double_tap_timeout_ms" type="int" min="0" value="2000" configurable="0" />
++    <setting key="double_tap_timeout_ms" type="int" min="0" value="300" configurable="0" />
+   </peripheral>
+ 
+   <peripheral vendor_product="2548:1001,2548:1002" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec">
+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 <alucryd@gmail.com>
+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 @@
+<!--#PLEX-->
+    <button>
+       <type>MENU_PLEX</type>
+       <text>Launch Plex</text>
+       <description>Open Plex Home Theater</description>
+       <action>EXEC /usr/bin/plexhometheater.sh</action>
+    </button>
+<!--#PLEX--> 
+
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

