summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac David <isacdaavid@isacdaavid.info>2016-02-18 09:32:36 -0600
committerIsaac David <isacdaavid@isacdaavid.info>2016-02-18 09:32:36 -0600
commit2059462606d1667c3f1f8c6b872344a164119dab (patch)
tree8277ebb30e2df8d66c81c204f16138ad95a09d55
parent0b0114faeb70fadcb369f6b3f095f9934a018301 (diff)
downloadabslibre-2059462606d1667c3f1f8c6b872344a164119dab.tar.gz
abslibre-2059462606d1667c3f1f8c6b872344a164119dab.tar.bz2
abslibre-2059462606d1667c3f1f8c6b872344a164119dab.zip
kodi 15.2-5: add patched package for Mali GPUs to libre-testing
-rw-r--r--libre-testing/kodi/PKGBUILD151
-rw-r--r--libre-testing/kodi/force-egl-config-mali-devices.patch10
-rw-r--r--libre-testing/kodi/kodi.install17
-rw-r--r--libre-testing/kodi/prevent-taglib-from-crashing-kodi.patch96
4 files changed, 274 insertions, 0 deletions
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 <pupykin.s+arch@gmail.com>
+# Maintainer (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com >
+# Contributor (Arch): Brad Fanella <bradfanella@archlinux.us>
+# Contributor (Arch): [vEX] <niechift.dot.vex.at.gmail.dot.com>
+# Contributor (Arch): Zeqadious <zeqadious.at.gmail.dot.com>
+# Contributor (Arch): BlackIkeEagle < ike DOT devolder AT gmail DOT com >
+# Contributor (Arch): Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+# Contributor (Arch): Maxime Gauduin <alucryd@gmail.com>
+# Maintainer: André Silva <emulatorman@parabola.nu>
+# Contributor: Isaac David <isacdaavid AT NO SPAM isacdaavid.info>
+
+_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())
+ {