From 2059462606d1667c3f1f8c6b872344a164119dab Mon Sep 17 00:00:00 2001 From: Isaac David Date: Thu, 18 Feb 2016 09:32:36 -0600 Subject: kodi 15.2-5: add patched package for Mali GPUs to libre-testing --- libre-testing/kodi/PKGBUILD | 151 +++++++++++++++++++++ .../kodi/force-egl-config-mali-devices.patch | 10 ++ libre-testing/kodi/kodi.install | 17 +++ .../kodi/prevent-taglib-from-crashing-kodi.patch | 96 +++++++++++++ 4 files changed, 274 insertions(+) create mode 100644 libre-testing/kodi/PKGBUILD create mode 100644 libre-testing/kodi/force-egl-config-mali-devices.patch create mode 100644 libre-testing/kodi/kodi.install create mode 100644 libre-testing/kodi/prevent-taglib-from-crashing-kodi.patch (limited to 'libre-testing/kodi') diff --git a/libre-testing/kodi/PKGBUILD b/libre-testing/kodi/PKGBUILD new file mode 100644 index 000000000..7dd2d5ca9 --- /dev/null +++ b/libre-testing/kodi/PKGBUILD @@ -0,0 +1,151 @@ +# vim:set ts=2 sw=2 et: +# $Id: PKGBUILD 160018 2016-02-02 19:43:22Z idevolder $ +# Maintainer (Arch): Sergej Pupykin +# Maintainer (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com > +# Contributor (Arch): Brad Fanella +# Contributor (Arch): [vEX] +# Contributor (Arch): Zeqadious +# Contributor (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com > +# Contributor (Arch): Bartłomiej Piotrowski +# Contributor (Arch): Maxime Gauduin +# Maintainer: André Silva +# Contributor: Isaac David + +_pkgbase=kodi-libre +pkgbase=kodi +pkgname=kodi +pkgver=15.2 +_codename=Isengard +pkgrel=5.parabola3 +arch=('i686' 'x86_64' 'armv7h') +url="http://kodi.tv" +license=('GPL2') +makedepends=( + 'afpfs-ng' 'bluez-libs' 'boost' 'cmake' 'curl' 'cwiid' 'doxygen' 'git' 'glew' + 'gperf' 'hicolor-icon-theme' 'jasper' 'java-runtime' 'libaacs' 'libass' + 'libbluray' 'libcdio' 'libcec' 'libgl' 'libmariadbclient' 'libmicrohttpd' + 'libmodplug' 'libmpeg2' 'libnfs' 'libplist' 'libpulse' 'libssh' 'libva' + 'libxrandr' 'libxslt' 'lzo' 'mesa' 'nasm' 'nss-mdns' + 'python2-pillow' 'python2-pybluez' 'python2-simplejson' 'rtmpdump' 'sdl2' + 'sdl_image' 'shairplay' 'smbclient' 'swig' 'taglib' 'tinyxml' 'unzip' 'upower' + 'yajl' 'zip' +) +[ "$CARCH" != "armv7h" ] && makedepends+=('libvdpau') +mksource=( + "$pkgname-$pkgver-$_codename.tar.gz::https://github.com/xbmc/xbmc/archive/$pkgver-$_codename.tar.gz" +) +source=( + "https://repo.parabola.nu/other/$_pkgbase/$_pkgbase-$pkgver-$_codename.tar.gz" + 'prevent-taglib-from-crashing-kodi.patch' # can stay in even with new taglib release + 'force-egl-config-mali-devices.patch' # https://lists.parabola.nu/pipermail/dev/2016-February/003790.html +) +mksha256sums=( + 'dd8aeb942e6de5d1488e243e1346cff3f6597e21b5131a3ba72ff5cc82037110' +) +sha256sums=( + '08ba84d69db5910966ac6b6118e64ba369065fbe68f0be8ce0dbdb7b35cf15e6' + 'c588153311adbccd7484cc7381f5852b4199301fe04d917279c0a2535891159f' + '3abfdf28081341323c386211b7e07aade4abcdbcb2dfcabf006941b841ae6338' +) + +mksource() { + cd "$srcdir/xbmc-$pkgver-$_codename" + + msg2 "remove nonfree unRAR utility files from the source" + rm -rv lib/UnrarXLib +} + +prepare() { + cd "$srcdir/xbmc-$pkgver-$_codename" + + 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/kodi.sh.in + sed 's/shell python/shell python2/' -i tools/EventClients/Makefile.in + msg2 "Use addons.xml from Parabola server (without nonfree addons support)" + sed -i -e 's|mirrors[.]kodi[.]tv/addons/gotham/addons.xml|repo.parabola.nu/other/kodi-libre/addons/gotham/addons.xml|' addons/repository.xbmc.org/addon.xml + sed -i -e 's|mirrors[.]kodi[.]tv/addons/helix/addons.xml|repo.parabola.nu/other/kodi-libre/addons/helix/addons.xml|' addons/repository.xbmc.org/addon.xml + sed -i -e 's|mirrors[.]kodi[.]tv/addons/isengard/addons.xml|repo.parabola.nu/other/kodi-libre/addons/isengard/addons.xml|' addons/repository.xbmc.org/addon.xml + + # patches + patch -p0 -i "$srcdir/prevent-taglib-from-crashing-kodi.patch" + echo simon + patch -p0 -i "$srcdir/force-egl-config-mali-devices.patch" +} + +build() { + cd "$srcdir/xbmc-$pkgver-$_codename" + + # Bootstrapping + MAKEFLAGS=-j1 ./bootstrap + + #./configure --help + #return 1 + + # Configuring XBMC + export PYTHON_VERSION=2 # external python v2 + [ "$CARCH" = "armv7h" ] && configure_extra="--disable-vaapi" + ./configure --prefix=/usr --exec-prefix=/usr \ + --disable-debug \ + --enable-optimizations \ + --enable-libbluray \ + --enable-shared-libraries \ + --with-lirc-device=/run/lirc/lircd \ + --disable-non-free \ + $configure_extra \ + ac_cv_type__Bool=yes + + # Now (finally) build + make +} + +package_kodi() { + pkgdesc="A software media player and entertainment hub for digital media, without nonfree decompression engine for RAR archives and support for nonfree addons" + + # depends expected for kodi plugins: + # 'python2-pillow' 'python2-pybluez' 'python2-simplejson' + # depends expeced in FEH.py + # 'mesa-demos' 'xorg-xdpyinfo' + depends=( + 'python2-pillow' 'python2-pybluez' 'python2-simplejson' + 'mesa-demos' 'xorg-xdpyinfo' + 'bluez-libs' 'fribidi' 'glew' 'hicolor-icon-theme' 'libass' 'libcdio' + 'libjpeg-turbo' 'libmariadbclient' 'libmicrohttpd' 'libpulse' 'libssh' + 'libva' 'libxrandr' 'libxslt' 'lzo' 'sdl2' 'smbclient' 'taglib' 'tinyxml' + 'yajl' + ) + optdepends=( + 'afpfs-ng: Apple shares support' + 'bluez: Blutooth support' + 'libnfs: NFS shares support' + 'libplist: AirPlay support' + 'libcec: Pulse-Eight USB-CEC adapter support' + 'lirc: Remote controller support' + 'pulseaudio: PulseAudio support' + 'shairplay: AirPlay support' + 'udisks: Automount external drives' + 'unzip: Archives support' + 'upower: Display battery level' + 'lsb-release: log distro information in crashlog' + ) + install="kodi.install" + provides=('xbmc' 'xbmc-lts') + conflicts=('xbmc' 'xbmc-lts') + replaces=('xbmc' 'xbmc-lts') + + cd "$srcdir/xbmc-$pkgver-$_codename" + # Running make install + make DESTDIR="$pkgdir" install + + # We will no longer support the xbmc name + rm "$pkgdir/usr/share/xsessions/xbmc.desktop" + rm "$pkgdir/usr/bin/"xbmc{,-standalone} + # we will leave /usr/{include,lib,share}/xbmc for now + + # Licenses + install -dm755 ${pkgdir}/usr/share/licenses/${pkgname} + for licensef in LICENSE.GPL copying.txt; do + mv ${pkgdir}/usr/share/doc/kodi/${licensef} \ + ${pkgdir}/usr/share/licenses/${pkgname} + done +} diff --git a/libre-testing/kodi/force-egl-config-mali-devices.patch b/libre-testing/kodi/force-egl-config-mali-devices.patch new file mode 100644 index 000000000..335ff0423 --- /dev/null +++ b/libre-testing/kodi/force-egl-config-mali-devices.patch @@ -0,0 +1,10 @@ +--- xbmc/windowing/X11/WinSystemX11.cpp.orig 2016-02-18 05:07:52.587476844 +0000 ++++ xbmc/windowing/X11/WinSystemX11.cpp 2016-02-18 05:09:07.183434519 +0000 +@@ -497,6 +497,7 @@ + EGLint attributes[] = + { + EGL_DEPTH_SIZE, 24, ++ EGL_CONFIG_ID, 1, + EGL_NONE + }; + EGLint numConfigs; diff --git a/libre-testing/kodi/kodi.install b/libre-testing/kodi/kodi.install new file mode 100644 index 000000000..31897532c --- /dev/null +++ b/libre-testing/kodi/kodi.install @@ -0,0 +1,17 @@ +post_install() { + update_icons +} + +post_upgrade() { + update_icons +} + +post_remove() { + update_icons +} + +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 + return 0 +} diff --git a/libre-testing/kodi/prevent-taglib-from-crashing-kodi.patch b/libre-testing/kodi/prevent-taglib-from-crashing-kodi.patch new file mode 100644 index 000000000..79c2b79aa --- /dev/null +++ b/libre-testing/kodi/prevent-taglib-from-crashing-kodi.patch @@ -0,0 +1,96 @@ +--- xbmc/music/tags/TagLoaderTagLib.cpp.orig 2015-12-26 07:34:56.449019063 +0100 ++++ xbmc/music/tags/TagLoaderTagLib.cpp 2015-12-26 08:26:13.905598496 +0100 +@@ -134,48 +134,55 @@ + TagLib::RIFF::WAV::File * wavFile = NULL; + TagLib::RIFF::AIFF::File * aiffFile = NULL; + +- if (strExtension == "ape") +- file = apeFile = new APE::File(stream); +- else if (strExtension == "asf" || strExtension == "wmv" || strExtension == "wma") +- file = asfFile = new ASF::File(stream); +- else if (strExtension == "flac") +- file = flacFile = new FLAC::File(stream, ID3v2::FrameFactory::instance()); +- else if (strExtension == "it") +- file = itFile = new IT::File(stream); +- else if (strExtension == "mod" || strExtension == "module" || strExtension == "nst" || strExtension == "wow") +- file = modFile = new Mod::File(stream); +- else if (strExtension == "mp4" || strExtension == "m4a" || +- strExtension == "m4r" || strExtension == "m4b" || +- strExtension == "m4p" || strExtension == "3g2") +- file = mp4File = new MP4::File(stream); +- else if (strExtension == "mpc") +- file = mpcFile = new MPC::File(stream); +- else if (strExtension == "mp3" || strExtension == "aac") +- file = mpegFile = new MPEG::File(stream, ID3v2::FrameFactory::instance()); +- else if (strExtension == "s3m") +- file = s3mFile = new S3M::File(stream); +- else if (strExtension == "tta") +- file = ttaFile = new TrueAudio::File(stream, ID3v2::FrameFactory::instance()); +- else if (strExtension == "wv") +- file = wvFile = new WavPack::File(stream); +- else if (strExtension == "aif" || strExtension == "aiff") +- file = aiffFile = new RIFF::AIFF::File(stream); +- else if (strExtension == "wav") +- file = wavFile = new RIFF::WAV::File(stream); +- else if (strExtension == "xm") +- file = xmFile = new XM::File(stream); +- else if (strExtension == "ogg") +- file = oggVorbisFile = new Ogg::Vorbis::File(stream); +- else if (strExtension == "oga") // Leave this madness until last - oga container can have Vorbis or FLAC ++ try + { +- file = oggFlacFile = new Ogg::FLAC::File(stream); +- if (!file || !file->isValid()) +- { +- delete file; +- oggFlacFile = NULL; ++ if (strExtension == "ape") ++ file = apeFile = new APE::File(stream); ++ else if (strExtension == "asf" || strExtension == "wmv" || strExtension == "wma") ++ file = asfFile = new ASF::File(stream); ++ else if (strExtension == "flac") ++ file = flacFile = new FLAC::File(stream, ID3v2::FrameFactory::instance()); ++ else if (strExtension == "it") ++ file = itFile = new IT::File(stream); ++ else if (strExtension == "mod" || strExtension == "module" || strExtension == "nst" || strExtension == "wow") ++ file = modFile = new Mod::File(stream); ++ else if (strExtension == "mp4" || strExtension == "m4a" || ++ strExtension == "m4r" || strExtension == "m4b" || ++ strExtension == "m4p" || strExtension == "3g2") ++ file = mp4File = new MP4::File(stream); ++ else if (strExtension == "mpc") ++ file = mpcFile = new MPC::File(stream); ++ else if (strExtension == "mp3" || strExtension == "aac") ++ file = mpegFile = new MPEG::File(stream, ID3v2::FrameFactory::instance()); ++ else if (strExtension == "s3m") ++ file = s3mFile = new S3M::File(stream); ++ else if (strExtension == "tta") ++ file = ttaFile = new TrueAudio::File(stream, ID3v2::FrameFactory::instance()); ++ else if (strExtension == "wv") ++ file = wvFile = new WavPack::File(stream); ++ else if (strExtension == "aif" || strExtension == "aiff") ++ file = aiffFile = new RIFF::AIFF::File(stream); ++ else if (strExtension == "wav") ++ file = wavFile = new RIFF::WAV::File(stream); ++ else if (strExtension == "xm") ++ file = xmFile = new XM::File(stream); ++ else if (strExtension == "ogg") + file = oggVorbisFile = new Ogg::Vorbis::File(stream); ++ else if (strExtension == "oga") // Leave this madness until last - oga container can have Vorbis or FLAC ++ { ++ file = oggFlacFile = new Ogg::FLAC::File(stream); ++ if (!file || !file->isValid()) ++ { ++ delete file; ++ oggFlacFile = NULL; ++ file = oggVorbisFile = new Ogg::Vorbis::File(stream); ++ } + } + } ++ catch (const std::exception& ex) ++ { ++ CLog::Log(LOGERROR, "Taglib exception: %s", ex.what()); ++ } + + if (!file || !file->isOpen()) + { -- cgit v1.2.3