Date: Sunday, May 18, 2014 @ 15:43:16 Author: idevolder Revision: 111419
archrelease: copy trunk to community-testing-i686, community-testing-x86_64 Added: xbmc/repos/community-testing-i686/ xbmc/repos/community-testing-i686/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch (from rev 111418, xbmc/trunk/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch) xbmc/repos/community-testing-i686/PKGBUILD (from rev 111418, xbmc/trunk/PKGBUILD) xbmc/repos/community-testing-i686/enable-external-ffmpeg.patch (from rev 111418, xbmc/trunk/enable-external-ffmpeg.patch) xbmc/repos/community-testing-i686/polkit.rules (from rev 111418, xbmc/trunk/polkit.rules) xbmc/repos/community-testing-i686/xbmc.install (from rev 111418, xbmc/trunk/xbmc.install) xbmc/repos/community-testing-i686/xbmc.service (from rev 111418, xbmc/trunk/xbmc.service) xbmc/repos/community-testing-x86_64/ xbmc/repos/community-testing-x86_64/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch (from rev 111418, xbmc/trunk/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch) xbmc/repos/community-testing-x86_64/PKGBUILD (from rev 111418, xbmc/trunk/PKGBUILD) xbmc/repos/community-testing-x86_64/enable-external-ffmpeg.patch (from rev 111418, xbmc/trunk/enable-external-ffmpeg.patch) xbmc/repos/community-testing-x86_64/polkit.rules (from rev 111418, xbmc/trunk/polkit.rules) xbmc/repos/community-testing-x86_64/xbmc.install (from rev 111418, xbmc/trunk/xbmc.install) xbmc/repos/community-testing-x86_64/xbmc.service (from rev 111418, xbmc/trunk/xbmc.service) ------------------------------------------------------------------------------------------+ community-testing-i686/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch | 75 +++++ community-testing-i686/PKGBUILD | 141 ++++++++++ community-testing-i686/enable-external-ffmpeg.patch | 100 +++++++ community-testing-i686/polkit.rules | 12 community-testing-i686/xbmc.install | 28 + community-testing-i686/xbmc.service | 16 + community-testing-x86_64/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch | 75 +++++ community-testing-x86_64/PKGBUILD | 141 ++++++++++ community-testing-x86_64/enable-external-ffmpeg.patch | 100 +++++++ community-testing-x86_64/polkit.rules | 12 community-testing-x86_64/xbmc.install | 28 + community-testing-x86_64/xbmc.service | 16 + 12 files changed, 744 insertions(+) Copied: xbmc/repos/community-testing-i686/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch (from rev 111418, xbmc/trunk/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch) =================================================================== --- community-testing-i686/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch (rev 0) +++ community-testing-i686/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,75 @@ +From a58bcbb0a35ac8e26a880be477705d833330ecc5 Mon Sep 17 00:00:00 2001 +From: Jonathan Marshall <jmarsh...@xbmc.org> +Date: Tue, 6 May 2014 19:40:17 +1200 +Subject: [PATCH 1/7] [rtmp] check m_rtmp for non-NULL - fixes crashes with + missing librtmp + +--- + .../dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp +index b02792a..93fc6f0 100644 +--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp ++++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp +@@ -104,7 +104,8 @@ CDVDInputStreamRTMP::~CDVDInputStreamRTMP() + m_sStreamPlaying = NULL; + + Close(); +- m_libRTMP.Free(m_rtmp); ++ if (m_rtmp) ++ m_libRTMP.Free(m_rtmp); + m_rtmp = NULL; + m_bPaused = false; + } +@@ -139,7 +140,7 @@ bool CDVDInputStreamRTMP::Open(const char* strFile, const std::string& content) + m_sStreamPlaying = NULL; + } + +- if (!CDVDInputStream::Open(strFile, "video/x-flv")) ++ if (!m_rtmp || !CDVDInputStream::Open(strFile, "video/x-flv")) + return false; + + CSingleLock lock(m_RTMPSection); +@@ -181,7 +182,8 @@ void CDVDInputStreamRTMP::Close() + CSingleLock lock(m_RTMPSection); + CDVDInputStream::Close(); + +- m_libRTMP.Close(m_rtmp); ++ if (m_rtmp) ++ m_libRTMP.Close(m_rtmp); + + m_optionvalues.clear(); + m_eof = true; +@@ -190,6 +192,9 @@ void CDVDInputStreamRTMP::Close() + + int CDVDInputStreamRTMP::Read(uint8_t* buf, int buf_size) + { ++ if (!m_rtmp) ++ return -1; ++ + int i = m_libRTMP.Read(m_rtmp, (char *)buf, buf_size); + if (i < 0) + m_eof = true; +@@ -210,7 +215,7 @@ bool CDVDInputStreamRTMP::SeekTime(int iTimeInMsec) + CLog::Log(LOGNOTICE, "RTMP Seek to %i requested", iTimeInMsec); + CSingleLock lock(m_RTMPSection); + +- if (m_libRTMP.SendSeek(m_rtmp, iTimeInMsec)) ++ if (m_rtmp && m_libRTMP.SendSeek(m_rtmp, iTimeInMsec)) + return true; + + return false; +@@ -229,7 +234,8 @@ bool CDVDInputStreamRTMP::Pause(double dTime) + + CLog::Log(LOGNOTICE, "RTMP Pause %s requested", m_bPaused ? "TRUE" : "FALSE"); + +- m_libRTMP.Pause(m_rtmp, m_bPaused); ++ if (m_rtmp) ++ m_libRTMP.Pause(m_rtmp, m_bPaused); + + return true; + } +-- +1.9.1 + Copied: xbmc/repos/community-testing-i686/PKGBUILD (from rev 111418, xbmc/trunk/PKGBUILD) =================================================================== --- community-testing-i686/PKGBUILD (rev 0) +++ community-testing-i686/PKGBUILD 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,141 @@ +# $Id$ +# Maintainer: Sergej Pupykin <pupykin.s+a...@gmail.com> +# Contributor: Brad Fanella <bradfane...@archlinux.us> +# Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com> +# Contributor: Zeqadious <zeqadious.at.gmail.dot.com> +# Contributor: BlackIkeEagle < ike DOT devolder AT gmail DOT com > +# Contributor: Bartłomiej Piotrowski <bpiotrow...@archlinux.org> +# Contributor: Maxime Gauduin <aluc...@gmail.com> + +_prefix=/usr + +pkgname=xbmc +pkgver=13.0 +_codename=Gotham_r2 +pkgrel=4 +pkgdesc="A software media player and entertainment hub for digital media" +arch=('i686' 'x86_64') +url="http://xbmc.org" +license=('GPL2') +depends=( +'avahi' 'ffmpeg' 'hicolor-icon-theme' 'libcdio' 'libmad' 'libmicrohttpd' +'libmpeg2' 'libmysqlclient' 'libsamplerate' 'libssh' 'libxrandr' 'libxslt' +'lzo2' 'mesa' 'mesa-demos' 'python2' 'sdl_image' 'sdl_mixer' 'smbclient' +'taglib' 'tinyxml' 'unzip' 'xorg-xdpyinfo' 'yajl' +) +makedepends=( +'afpfs-ng' 'libnfs' 'libplist' 'shairplay' 'libcec' 'boost' 'cmake' 'doxygen' +'gperf' 'jasper' 'java-runtime-headless' 'nasm' 'swig' 'taglib' 'udisks' +'upower' 'zip' +) +optdepends=( +'afpfs-ng: Apple File Protocol suport' +'libnfs: NFS Share support' +'libplist: AirPlay support' +'shairplay: AirPlay support' +'libcec: Pulse-Eight USB-CEC adapter support' +'pulseaudio: for pulseaudio support' +'lirc: remote controller support' +'unrar: access compressed files without unpacking them' +'xorg-xinit: autostart xbmc' +'udisks: automount external drives' +) +install="${pkgname}.install" +source=( + "xbmc-$pkgver.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz" + 'xbmc.service' + 'polkit.rules' + 'enable-external-ffmpeg.patch' + '0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch' +) +sha256sums=( + '663b99f3e196ead51d90f06ccfa864b4e5ade385dfc5972acb0f854d525f2903' + 'f83097388e6c9b301cac78de95cf1797d4aaa11e4021734c28d643320e76d919' + '4ea78374a08e13a64dcf6a424b111b8bfc11de03ed5829744fc6d9b5fc1ec96e' + '0239e33e87292c7340ed2092f2b5f1e82f5e283b1f763fb125b3aee78f50c355' + '4d643f1bc5a0f9a6bba36c8c2c2d220351acb58172c57d86417b67c02d39fa2b' +) + +prepare() { + cd "$srcdir/xbmc-$pkgver-$_codename" + patch -p1 -i "$srcdir/enable-external-ffmpeg.patch" + patch -p1 -i "$srcdir/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch" + + find -type f -name *.py -exec sed 's|^#!.*python$|#!/usr/bin/python2|' -i "{}" + + sed 's|^#!.*python$|#!/usr/bin/python2|' -i tools/depends/native/rpl-native/rpl + sed 's/python/python2/' -i tools/Linux/xbmc.sh.in +} + +build() { + cd "$srcdir/xbmc-$pkgver-$_codename" + + # Bootstrapping XBMC + ./bootstrap + + # Configuring XBMC + export PYTHON_VERSION=2 # external python v2 + ./configure --prefix=$_prefix --exec-prefix=$_prefix \ + --disable-debug \ + --enable-optimizations \ + --enable-gl \ + --enable-sdl \ + --enable-vaapi \ + --enable-vdpau \ + --enable-xvba \ + --enable-joystick \ + --enable-xrandr \ + --enable-rsxs \ + --enable-projectm \ + --enable-x11 \ + --enable-rtmp \ + --enable-samba \ + --enable-nfs \ + --enable-afpclient \ + --enable-airplay \ + --enable-airtunes \ + --enable-ffmpeg-libvorbis \ + --enable-dvdcss \ + --disable-hal \ + --enable-avahi \ + --enable-webserver \ + --enable-optical-drive \ + --enable-libbluray \ + --enable-texturepacker \ + --enable-udev \ + --enable-libusb \ + --enable-libcec \ + --enable-external-libraries + + + # Now (finally) build + make +} + +package() { + cd "$srcdir/xbmc-$pkgver-$_codename" + # Running make install + make DESTDIR="$pkgdir" install + + # Tools + install -D -m 0755 "$srcdir/xbmc-$pkgver-$_codename/tools/TexturePacker/TexturePacker" \ + "${pkgdir}$_prefix/lib/xbmc/" + + # Licenses + install -dm755 "${pkgdir}$_prefix/share/licenses/$pkgname" + for licensef in LICENSE.GPL copying.txt; do + mv "${pkgdir}$_prefix/share/doc/xbmc/$licensef" \ + "${pkgdir}$_prefix/share/licenses/$pkgname" + done + + # install systemd service + install -Dm0644 "$srcdir/xbmc.service" "$pkgdir/usr/lib/systemd/system/xbmc.service" + + # install polkit rules + install -dm700 "$pkgdir/user/share/polkit-1/rules.d" + install -Dm0644 "$srcdir/polkit.rules" "$pkgdir/user/share/polkit-1/rules.d/10-xbmc.rules" + + # XBMC user home + install -dm 700 "${pkgdir}"/var/lib/xbmc + chown 420:420 "${pkgdir}"/var/lib/xbmc +} +# vim:set ts=2 sw=2 et: Copied: xbmc/repos/community-testing-i686/enable-external-ffmpeg.patch (from rev 111418, xbmc/trunk/enable-external-ffmpeg.patch) =================================================================== --- community-testing-i686/enable-external-ffmpeg.patch (rev 0) +++ community-testing-i686/enable-external-ffmpeg.patch 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,100 @@ +diff -rupN a/configure.in b/configure.in +--- a/configure.in 2014-05-03 21:03:25.000000000 +0000 ++++ b/configure.in 2014-05-07 09:56:30.039177391 +0000 +@@ -600,7 +600,7 @@ PKG_PROG_PKG_CONFIG + MAKE="${MAKE:-make}" + OBJDUMP="${OBJDUMP:-objdump}" + +-use_external_ffmpeg=no ++use_external_ffmpeg=yes + use_static_ffmpeg=no + + # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os +@@ -632,7 +632,7 @@ case $host in + use_arch="x86" + use_cpu="i686" + fi +- use_static_ffmpeg=yes ++ use_static_ffmpeg=no + ;; + x86_64-*-linux-gnu*|x86_64-*-linux-uclibc*) + ARCH="x86_64-linux" +@@ -640,7 +640,7 @@ case $host in + use_arch="x86_64" + use_cpu="x86_64" + fi +- use_static_ffmpeg=yes ++ use_static_ffmpeg=no + ;; + i386-*-freebsd*) + ARCH="x86-freebsd" +@@ -696,7 +696,7 @@ case $host in + use_sdl=no + use_x11=no + use_wayland=no +- use_static_ffmpeg=yes ++ use_static_ffmpeg=no + ;; + arm*-*linux-android*) + target_platform=target_android +diff -rupN a/lib/DllAvCodec.h b/lib/DllAvCodec.h +--- a/lib/DllAvCodec.h 2014-05-03 21:03:25.000000000 +0000 ++++ b/lib/DllAvCodec.h 2014-05-07 10:10:06.298165915 +0000 +@@ -43,6 +43,7 @@ extern "C" { + + #if (defined USE_EXTERNAL_FFMPEG) + #include <libavcodec/avcodec.h> ++ #include <libavutil/frame.h> + #else + #include "libavcodec/avcodec.h" + #endif +diff -rupN a/lib/DllAvUtil.h b/lib/DllAvUtil.h +--- a/lib/DllAvUtil.h 2014-05-03 21:03:25.000000000 +0000 ++++ b/lib/DllAvUtil.h 2014-05-07 10:17:31.415798448 +0000 +@@ -31,33 +31,19 @@ + #endif + + extern "C" { +-#if (defined USE_EXTERNAL_FFMPEG) +- #include <libavutil/avutil.h> +- // for av_get_default_channel_layout +- #include <libavutil/audioconvert.h> +- #include <libavutil/crc.h> +- #include <libavutil/fifo.h> +- // for LIBAVCODEC_VERSION_INT: +- #include <libavcodec/avcodec.h> +- // for enum AVSampleFormat +- #include <libavutil/samplefmt.h> +- #include <libavutil/opt.h> +- #include <libavutil/mem.h> +- #include <libavutil/mathematics.h> +- #if (defined USE_LIBAV_HACKS) +- #include "xbmc-libav-hacks/libav_hacks.h" +- #endif +-#else +- #include "libavutil/avutil.h" +- //for av_get_default_channel_layout +- #include "libavutil/audioconvert.h" +- #include "libavutil/crc.h" +- #include "libavutil/opt.h" +- #include "libavutil/mem.h" +- #include "libavutil/fifo.h" +- // for enum AVSampleFormat +- #include "libavutil/samplefmt.h" +-#endif ++#include <libavutil/avutil.h> ++#include <libavutil/frame.h> ++// for av_get_default_channel_layout ++#include <libavutil/audioconvert.h> ++#include <libavutil/crc.h> ++#include <libavutil/fifo.h> ++// for LIBAVCODEC_VERSION_INT: ++#include <libavcodec/avcodec.h> ++// for enum AVSampleFormat ++#include <libavutil/samplefmt.h> ++#include <libavutil/opt.h> ++#include <libavutil/mem.h> ++#include <libavutil/mathematics.h> + } + + #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,29,100) Copied: xbmc/repos/community-testing-i686/polkit.rules (from rev 111418, xbmc/trunk/polkit.rules) =================================================================== --- community-testing-i686/polkit.rules (rev 0) +++ community-testing-i686/polkit.rules 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,12 @@ +polkit.addRule(function(action, subject) { + if (subject.user == "xbmc") { + polkit.log("action=" + action); + polkit.log("subject=" + subject); + if (action.id.indexOf("org.freedesktop.login1.") == 0) { + return polkit.Result.YES; + } + if (action.id.indexOf("org.freedesktop.udisks.") == 0) { + return polkit.Result.YES; + } + } +}); Copied: xbmc/repos/community-testing-i686/xbmc.install (from rev 111418, xbmc/trunk/xbmc.install) =================================================================== --- community-testing-i686/xbmc.install (rev 0) +++ community-testing-i686/xbmc.install 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,28 @@ +post_install() { + update_icons + getent group xbmc > /dev/null || groupadd -g 420 xbmc + getent passwd xbmc > /dev/null || useradd -c 'XBMC user' -u 420 -g xbmc -G audio,video,network,optical -d /var/lib/xbmc -s /sbin/nologin xbmc + passwd -l xbmc > /dev/null +} + +post_upgrade() { + post_install $1 + if ! getent group xbmc | cut -d: -f3 | grep 420 > /dev/null 2>&1; then + groupmod -g 420 xbmc + fi + if ! id -u xbmc | grep 420 > /dev/null 2>&1; then + usermod -u 420 xbmc + chown -R xbmc:xbmc /var/lib/xbmc + fi +} + +post_remove() { + update_icons + getent passwd xbmc > /dev/null 2>&1 && userdel xbmc + getent group xbmc > /dev/null 2>&1 && groupdel xbmc +} + +update_icons() { + type -p gtk-update-icon-cache > /dev/null 2>&1 && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor + type -p update-desktop-database > /dev/null 2>&1 && usr/bin/update-desktop-database -q usr/share/applications +} Copied: xbmc/repos/community-testing-i686/xbmc.service (from rev 111418, xbmc/trunk/xbmc.service) =================================================================== --- community-testing-i686/xbmc.service (rev 0) +++ community-testing-i686/xbmc.service 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,16 @@ +[Unit] +Description = Starts instance of XBMC using xinit +After = systemd-user-sessions.service +Conflicts=getty@tty7.service + +[Service] +User = xbmc +Group = xbmc +PAMName=login +Type = simple +TTYPath=/dev/tty7 +ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/xbmc-standalone -l /run/lirc/lircd -- :0 -nolisten tcp vt7 +Restart = on-abort + +[Install] +WantedBy = multi-user.target Copied: xbmc/repos/community-testing-x86_64/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch (from rev 111418, xbmc/trunk/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch) =================================================================== --- community-testing-x86_64/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch (rev 0) +++ community-testing-x86_64/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,75 @@ +From a58bcbb0a35ac8e26a880be477705d833330ecc5 Mon Sep 17 00:00:00 2001 +From: Jonathan Marshall <jmarsh...@xbmc.org> +Date: Tue, 6 May 2014 19:40:17 +1200 +Subject: [PATCH 1/7] [rtmp] check m_rtmp for non-NULL - fixes crashes with + missing librtmp + +--- + .../dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp +index b02792a..93fc6f0 100644 +--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp ++++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp +@@ -104,7 +104,8 @@ CDVDInputStreamRTMP::~CDVDInputStreamRTMP() + m_sStreamPlaying = NULL; + + Close(); +- m_libRTMP.Free(m_rtmp); ++ if (m_rtmp) ++ m_libRTMP.Free(m_rtmp); + m_rtmp = NULL; + m_bPaused = false; + } +@@ -139,7 +140,7 @@ bool CDVDInputStreamRTMP::Open(const char* strFile, const std::string& content) + m_sStreamPlaying = NULL; + } + +- if (!CDVDInputStream::Open(strFile, "video/x-flv")) ++ if (!m_rtmp || !CDVDInputStream::Open(strFile, "video/x-flv")) + return false; + + CSingleLock lock(m_RTMPSection); +@@ -181,7 +182,8 @@ void CDVDInputStreamRTMP::Close() + CSingleLock lock(m_RTMPSection); + CDVDInputStream::Close(); + +- m_libRTMP.Close(m_rtmp); ++ if (m_rtmp) ++ m_libRTMP.Close(m_rtmp); + + m_optionvalues.clear(); + m_eof = true; +@@ -190,6 +192,9 @@ void CDVDInputStreamRTMP::Close() + + int CDVDInputStreamRTMP::Read(uint8_t* buf, int buf_size) + { ++ if (!m_rtmp) ++ return -1; ++ + int i = m_libRTMP.Read(m_rtmp, (char *)buf, buf_size); + if (i < 0) + m_eof = true; +@@ -210,7 +215,7 @@ bool CDVDInputStreamRTMP::SeekTime(int iTimeInMsec) + CLog::Log(LOGNOTICE, "RTMP Seek to %i requested", iTimeInMsec); + CSingleLock lock(m_RTMPSection); + +- if (m_libRTMP.SendSeek(m_rtmp, iTimeInMsec)) ++ if (m_rtmp && m_libRTMP.SendSeek(m_rtmp, iTimeInMsec)) + return true; + + return false; +@@ -229,7 +234,8 @@ bool CDVDInputStreamRTMP::Pause(double dTime) + + CLog::Log(LOGNOTICE, "RTMP Pause %s requested", m_bPaused ? "TRUE" : "FALSE"); + +- m_libRTMP.Pause(m_rtmp, m_bPaused); ++ if (m_rtmp) ++ m_libRTMP.Pause(m_rtmp, m_bPaused); + + return true; + } +-- +1.9.1 + Copied: xbmc/repos/community-testing-x86_64/PKGBUILD (from rev 111418, xbmc/trunk/PKGBUILD) =================================================================== --- community-testing-x86_64/PKGBUILD (rev 0) +++ community-testing-x86_64/PKGBUILD 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,141 @@ +# $Id$ +# Maintainer: Sergej Pupykin <pupykin.s+a...@gmail.com> +# Contributor: Brad Fanella <bradfane...@archlinux.us> +# Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com> +# Contributor: Zeqadious <zeqadious.at.gmail.dot.com> +# Contributor: BlackIkeEagle < ike DOT devolder AT gmail DOT com > +# Contributor: Bartłomiej Piotrowski <bpiotrow...@archlinux.org> +# Contributor: Maxime Gauduin <aluc...@gmail.com> + +_prefix=/usr + +pkgname=xbmc +pkgver=13.0 +_codename=Gotham_r2 +pkgrel=4 +pkgdesc="A software media player and entertainment hub for digital media" +arch=('i686' 'x86_64') +url="http://xbmc.org" +license=('GPL2') +depends=( +'avahi' 'ffmpeg' 'hicolor-icon-theme' 'libcdio' 'libmad' 'libmicrohttpd' +'libmpeg2' 'libmysqlclient' 'libsamplerate' 'libssh' 'libxrandr' 'libxslt' +'lzo2' 'mesa' 'mesa-demos' 'python2' 'sdl_image' 'sdl_mixer' 'smbclient' +'taglib' 'tinyxml' 'unzip' 'xorg-xdpyinfo' 'yajl' +) +makedepends=( +'afpfs-ng' 'libnfs' 'libplist' 'shairplay' 'libcec' 'boost' 'cmake' 'doxygen' +'gperf' 'jasper' 'java-runtime-headless' 'nasm' 'swig' 'taglib' 'udisks' +'upower' 'zip' +) +optdepends=( +'afpfs-ng: Apple File Protocol suport' +'libnfs: NFS Share support' +'libplist: AirPlay support' +'shairplay: AirPlay support' +'libcec: Pulse-Eight USB-CEC adapter support' +'pulseaudio: for pulseaudio support' +'lirc: remote controller support' +'unrar: access compressed files without unpacking them' +'xorg-xinit: autostart xbmc' +'udisks: automount external drives' +) +install="${pkgname}.install" +source=( + "xbmc-$pkgver.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz" + 'xbmc.service' + 'polkit.rules' + 'enable-external-ffmpeg.patch' + '0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch' +) +sha256sums=( + '663b99f3e196ead51d90f06ccfa864b4e5ade385dfc5972acb0f854d525f2903' + 'f83097388e6c9b301cac78de95cf1797d4aaa11e4021734c28d643320e76d919' + '4ea78374a08e13a64dcf6a424b111b8bfc11de03ed5829744fc6d9b5fc1ec96e' + '0239e33e87292c7340ed2092f2b5f1e82f5e283b1f763fb125b3aee78f50c355' + '4d643f1bc5a0f9a6bba36c8c2c2d220351acb58172c57d86417b67c02d39fa2b' +) + +prepare() { + cd "$srcdir/xbmc-$pkgver-$_codename" + patch -p1 -i "$srcdir/enable-external-ffmpeg.patch" + patch -p1 -i "$srcdir/0001-rtmp-check-m_rtmp-for-non-NULL-fixes-crashes-with-mi.patch" + + find -type f -name *.py -exec sed 's|^#!.*python$|#!/usr/bin/python2|' -i "{}" + + sed 's|^#!.*python$|#!/usr/bin/python2|' -i tools/depends/native/rpl-native/rpl + sed 's/python/python2/' -i tools/Linux/xbmc.sh.in +} + +build() { + cd "$srcdir/xbmc-$pkgver-$_codename" + + # Bootstrapping XBMC + ./bootstrap + + # Configuring XBMC + export PYTHON_VERSION=2 # external python v2 + ./configure --prefix=$_prefix --exec-prefix=$_prefix \ + --disable-debug \ + --enable-optimizations \ + --enable-gl \ + --enable-sdl \ + --enable-vaapi \ + --enable-vdpau \ + --enable-xvba \ + --enable-joystick \ + --enable-xrandr \ + --enable-rsxs \ + --enable-projectm \ + --enable-x11 \ + --enable-rtmp \ + --enable-samba \ + --enable-nfs \ + --enable-afpclient \ + --enable-airplay \ + --enable-airtunes \ + --enable-ffmpeg-libvorbis \ + --enable-dvdcss \ + --disable-hal \ + --enable-avahi \ + --enable-webserver \ + --enable-optical-drive \ + --enable-libbluray \ + --enable-texturepacker \ + --enable-udev \ + --enable-libusb \ + --enable-libcec \ + --enable-external-libraries + + + # Now (finally) build + make +} + +package() { + cd "$srcdir/xbmc-$pkgver-$_codename" + # Running make install + make DESTDIR="$pkgdir" install + + # Tools + install -D -m 0755 "$srcdir/xbmc-$pkgver-$_codename/tools/TexturePacker/TexturePacker" \ + "${pkgdir}$_prefix/lib/xbmc/" + + # Licenses + install -dm755 "${pkgdir}$_prefix/share/licenses/$pkgname" + for licensef in LICENSE.GPL copying.txt; do + mv "${pkgdir}$_prefix/share/doc/xbmc/$licensef" \ + "${pkgdir}$_prefix/share/licenses/$pkgname" + done + + # install systemd service + install -Dm0644 "$srcdir/xbmc.service" "$pkgdir/usr/lib/systemd/system/xbmc.service" + + # install polkit rules + install -dm700 "$pkgdir/user/share/polkit-1/rules.d" + install -Dm0644 "$srcdir/polkit.rules" "$pkgdir/user/share/polkit-1/rules.d/10-xbmc.rules" + + # XBMC user home + install -dm 700 "${pkgdir}"/var/lib/xbmc + chown 420:420 "${pkgdir}"/var/lib/xbmc +} +# vim:set ts=2 sw=2 et: Copied: xbmc/repos/community-testing-x86_64/enable-external-ffmpeg.patch (from rev 111418, xbmc/trunk/enable-external-ffmpeg.patch) =================================================================== --- community-testing-x86_64/enable-external-ffmpeg.patch (rev 0) +++ community-testing-x86_64/enable-external-ffmpeg.patch 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,100 @@ +diff -rupN a/configure.in b/configure.in +--- a/configure.in 2014-05-03 21:03:25.000000000 +0000 ++++ b/configure.in 2014-05-07 09:56:30.039177391 +0000 +@@ -600,7 +600,7 @@ PKG_PROG_PKG_CONFIG + MAKE="${MAKE:-make}" + OBJDUMP="${OBJDUMP:-objdump}" + +-use_external_ffmpeg=no ++use_external_ffmpeg=yes + use_static_ffmpeg=no + + # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os +@@ -632,7 +632,7 @@ case $host in + use_arch="x86" + use_cpu="i686" + fi +- use_static_ffmpeg=yes ++ use_static_ffmpeg=no + ;; + x86_64-*-linux-gnu*|x86_64-*-linux-uclibc*) + ARCH="x86_64-linux" +@@ -640,7 +640,7 @@ case $host in + use_arch="x86_64" + use_cpu="x86_64" + fi +- use_static_ffmpeg=yes ++ use_static_ffmpeg=no + ;; + i386-*-freebsd*) + ARCH="x86-freebsd" +@@ -696,7 +696,7 @@ case $host in + use_sdl=no + use_x11=no + use_wayland=no +- use_static_ffmpeg=yes ++ use_static_ffmpeg=no + ;; + arm*-*linux-android*) + target_platform=target_android +diff -rupN a/lib/DllAvCodec.h b/lib/DllAvCodec.h +--- a/lib/DllAvCodec.h 2014-05-03 21:03:25.000000000 +0000 ++++ b/lib/DllAvCodec.h 2014-05-07 10:10:06.298165915 +0000 +@@ -43,6 +43,7 @@ extern "C" { + + #if (defined USE_EXTERNAL_FFMPEG) + #include <libavcodec/avcodec.h> ++ #include <libavutil/frame.h> + #else + #include "libavcodec/avcodec.h" + #endif +diff -rupN a/lib/DllAvUtil.h b/lib/DllAvUtil.h +--- a/lib/DllAvUtil.h 2014-05-03 21:03:25.000000000 +0000 ++++ b/lib/DllAvUtil.h 2014-05-07 10:17:31.415798448 +0000 +@@ -31,33 +31,19 @@ + #endif + + extern "C" { +-#if (defined USE_EXTERNAL_FFMPEG) +- #include <libavutil/avutil.h> +- // for av_get_default_channel_layout +- #include <libavutil/audioconvert.h> +- #include <libavutil/crc.h> +- #include <libavutil/fifo.h> +- // for LIBAVCODEC_VERSION_INT: +- #include <libavcodec/avcodec.h> +- // for enum AVSampleFormat +- #include <libavutil/samplefmt.h> +- #include <libavutil/opt.h> +- #include <libavutil/mem.h> +- #include <libavutil/mathematics.h> +- #if (defined USE_LIBAV_HACKS) +- #include "xbmc-libav-hacks/libav_hacks.h" +- #endif +-#else +- #include "libavutil/avutil.h" +- //for av_get_default_channel_layout +- #include "libavutil/audioconvert.h" +- #include "libavutil/crc.h" +- #include "libavutil/opt.h" +- #include "libavutil/mem.h" +- #include "libavutil/fifo.h" +- // for enum AVSampleFormat +- #include "libavutil/samplefmt.h" +-#endif ++#include <libavutil/avutil.h> ++#include <libavutil/frame.h> ++// for av_get_default_channel_layout ++#include <libavutil/audioconvert.h> ++#include <libavutil/crc.h> ++#include <libavutil/fifo.h> ++// for LIBAVCODEC_VERSION_INT: ++#include <libavcodec/avcodec.h> ++// for enum AVSampleFormat ++#include <libavutil/samplefmt.h> ++#include <libavutil/opt.h> ++#include <libavutil/mem.h> ++#include <libavutil/mathematics.h> + } + + #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,29,100) Copied: xbmc/repos/community-testing-x86_64/polkit.rules (from rev 111418, xbmc/trunk/polkit.rules) =================================================================== --- community-testing-x86_64/polkit.rules (rev 0) +++ community-testing-x86_64/polkit.rules 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,12 @@ +polkit.addRule(function(action, subject) { + if (subject.user == "xbmc") { + polkit.log("action=" + action); + polkit.log("subject=" + subject); + if (action.id.indexOf("org.freedesktop.login1.") == 0) { + return polkit.Result.YES; + } + if (action.id.indexOf("org.freedesktop.udisks.") == 0) { + return polkit.Result.YES; + } + } +}); Copied: xbmc/repos/community-testing-x86_64/xbmc.install (from rev 111418, xbmc/trunk/xbmc.install) =================================================================== --- community-testing-x86_64/xbmc.install (rev 0) +++ community-testing-x86_64/xbmc.install 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,28 @@ +post_install() { + update_icons + getent group xbmc > /dev/null || groupadd -g 420 xbmc + getent passwd xbmc > /dev/null || useradd -c 'XBMC user' -u 420 -g xbmc -G audio,video,network,optical -d /var/lib/xbmc -s /sbin/nologin xbmc + passwd -l xbmc > /dev/null +} + +post_upgrade() { + post_install $1 + if ! getent group xbmc | cut -d: -f3 | grep 420 > /dev/null 2>&1; then + groupmod -g 420 xbmc + fi + if ! id -u xbmc | grep 420 > /dev/null 2>&1; then + usermod -u 420 xbmc + chown -R xbmc:xbmc /var/lib/xbmc + fi +} + +post_remove() { + update_icons + getent passwd xbmc > /dev/null 2>&1 && userdel xbmc + getent group xbmc > /dev/null 2>&1 && groupdel xbmc +} + +update_icons() { + type -p gtk-update-icon-cache > /dev/null 2>&1 && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor + type -p update-desktop-database > /dev/null 2>&1 && usr/bin/update-desktop-database -q usr/share/applications +} Copied: xbmc/repos/community-testing-x86_64/xbmc.service (from rev 111418, xbmc/trunk/xbmc.service) =================================================================== --- community-testing-x86_64/xbmc.service (rev 0) +++ community-testing-x86_64/xbmc.service 2014-05-18 13:43:16 UTC (rev 111419) @@ -0,0 +1,16 @@ +[Unit] +Description = Starts instance of XBMC using xinit +After = systemd-user-sessions.service +Conflicts=getty@tty7.service + +[Service] +User = xbmc +Group = xbmc +PAMName=login +Type = simple +TTYPath=/dev/tty7 +ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/xbmc-standalone -l /run/lirc/lircd -- :0 -nolisten tcp vt7 +Restart = on-abort + +[Install] +WantedBy = multi-user.target