diff --git a/xbmc/FEH.sh b/xbmc/FEH.sh deleted file mode 100644 index e040a7862..000000000 --- a/xbmc/FEH.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -RETVAL=0 - -if [[ -z $(glxinfo | grep "direct rendering.*Yes" | uniq) ]]; then - echo "XBMC needs hardware accelerated OpenGL rendering." - echo "Install an appropriate graphics driver." - echo - echo "Please consult XBMC Wiki for supported hardware" - echo "http://xbmc.org/wiki/?title=Supported_hardware" - echo - RETVAL=1 -fi - -if [[ -z $(xdpyinfo | grep "depth of root.*24" | uniq) ]]; then - echo "XBMC cannot run unless the" - echo "screen color depth is atleast 24 bit." - echo - echo "Please reconfigure your screen." - RETVAL=1 -fi - -exit ${RETVAL} - diff --git a/xbmc/PKGBUILD b/xbmc/PKGBUILD index 6c571275f..bb775b812 100644 --- a/xbmc/PKGBUILD +++ b/xbmc/PKGBUILD @@ -3,7 +3,8 @@ pkgname=xbmc pkgver=12.3 -pkgrel=2 +_codename=Frodo +pkgrel=3 pkgdesc="XBMC Media Center" arch=('x86_64') url="http://xbmc.org" @@ -29,17 +30,27 @@ screenshot=('http://xbmc.org/wp-content/gallery/back-row/screenshot000.jpg') install=${pkgname}.install options=('makeflags') source=("http://mirrors.xbmc.org/releases/source/xbmc-${pkgver}.tar.gz" - "FEH.sh" - "${pkgname}.service") + "${pkgname}.service" + "polkit.rules" + "libass.patch::https://bugs.archlinux.org/index.php?getfile=11285") sha256sums=('3e15c960d034efdea5f92a7b74716cb48094842d077b076025fd8640754ede73' - '1b391dfbaa07f81e5a5a7dfd1288bf2bdeab8dc50bbb6dbf39a80d8797dfaeb0' - '547e06f3141866cd34b1df34025517e9826992b67543af7621d954bcdfa0ba94') + '547e06f3141866cd34b1df34025517e9826992b67543af7621d954bcdfa0ba94' + '4ea78374a08e13a64dcf6a424b111b8bfc11de03ed5829744fc6d9b5fc1ec96e' + 'e157ec0ff047b7573777aa93844c4c15eafc4f9d7506529047ba22ad439daf21') + +prepare() { + cd xbmc-$pkgver-$_codename + + patch -p0 <$srcdir/libass.patch + + # fix lsb_release dependency + sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/arch-release:' xbmc/utils/SystemInfo.cpp + sed -i -e 's:#include :#include :' xbmc/filesystem/{SmbFile,SMBDirectory}.cpp +} build() { - cd xbmc-${pkgver}-Frodo - sed -i -e 's:#include :#include :' xbmc/filesystem/{SmbFile,SMBDirectory}.cpp + cd xbmc-${pkgver}-$_codename - msg "Bootstrapping XBMC" ./bootstrap @@ -76,30 +87,21 @@ build() { --disable-debug msg "Running make" - make - make -C lib/addons/script.module.pil + make } package() { - cd xbmc-${pkgver}-Frodo + cd xbmc-${pkgver}-$_codename msg "Running make install" - make prefix="${pkgdir}/usr" install - - # Replace FEH.py with FEH.sh (and thus remove external python dependency) - install -D -m 0755 "${srcdir}/FEH.sh" "${pkgdir}/usr/share/xbmc/FEH.sh" - sed -i -e 's/^python \(.*\)FEH.py \(.*\)$/\1FEH.sh \2/' "${pkgdir}/usr/bin/xbmc" + make DESTDIR="${pkgdir}" install # lsb_release fix - sed -i -e 's/which lsb_release &> \/dev\/null/\[ -f \/etc\/arch-release ]/g' "${pkgdir}/usr/bin/xbmc" - sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/arch-release/g" "${pkgdir}/usr/bin/xbmc" - - # .desktop files - install -D -m 0644 "${srcdir}/xbmc-$pkgver-Frodo/tools/Linux/xbmc.desktop" "${pkgdir}/usr/share/applications/xbmc.desktop" - install -D -m 0644 "${srcdir}/xbmc-$pkgver-Frodo/tools/Linux/xbmc-48x48.png" "${pkgdir}/usr/share/pixmaps/xbmc.png" + sed -i -e 's/which lsb_release &> \/dev\/null/\[ -f \/etc\/chakra-release ]/g' "${pkgdir}/usr/bin/xbmc" + sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/chakra-release/g" "${pkgdir}/usr/bin/xbmc" # Tools - install -D -m 0755 "${srcdir}/xbmc-$pkgver-Frodo/xbmc-xrandr" "${pkgdir}/usr/share/xbmc/xbmc-xrandr" - install -D -m 0755 "${srcdir}/xbmc-$pkgver-Frodo/tools/TexturePacker/TexturePacker" "${pkgdir}/usr/share/xbmc/" + install -D -m 0755 "${srcdir}/xbmc-$pkgver-$_codename/xbmc-xrandr" "${pkgdir}/usr/share/xbmc/xbmc-xrandr" + install -D -m 0755 "${srcdir}/xbmc-$pkgver-$_codename/tools/TexturePacker/TexturePacker" "${pkgdir}/usr/share/xbmc/" # Licenses install -d -m 0755 "${pkgdir}/usr/share/licenses/${pkgname}" @@ -107,15 +109,8 @@ package() { mv "${pkgdir}/usr/share/doc/xbmc/${licensef}" "${pkgdir}/usr/share/licenses/${pkgname}" done - # Docs - install -d -m 0755 "${pkgdir}/usr/share/doc/${pkgname}" - - # cleanup some stuff - msg "Cleanup unneeded files" - rm -rf "${pkgdir}/usr/share/xsessions" - rm -f "${pkgdir}/usr/share/xbmc/FEH.py" - rm -f "${pkgdir}/usr/share/icons/hicolor/icon-theme.cache" - # Systemd service install -Dm0644 "${srcdir}/xbmc.service" "${pkgdir}/usr/lib/systemd/system/xbmc.service" + install -Dm0644 $srcdir/polkit.rules $pkgdir/usr/share/polkit-1/rules.d/10-xbmc.rules + chmod 0700 $pkgdir/usr/share/polkit-1/rules.d/ } diff --git a/xbmc/polkit.rules b/xbmc/polkit.rules new file mode 100644 index 000000000..4b6d0fda0 --- /dev/null +++ b/xbmc/polkit.rules @@ -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; + } + } +}); diff --git a/xbmc/xbmc.install b/xbmc/xbmc.install index 431582f1b..dbf63d6c1 100644 --- a/xbmc/xbmc.install +++ b/xbmc/xbmc.install @@ -1,13 +1,19 @@ -[Unit] -Description = Starts instance of XBMC using xinit -After = remote-fs.target +post_install() { + [[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor + [[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications + getent group xbmc > /dev/null || groupadd -r xbmc + getent passwd xbmc > /dev/null || useradd -r -m -d /var/lib/xbmc -g xbmc xbmc + usermod -a -G xbmc,audio,video,power,network,optical,storage,disk xbmc + mkdir -p var/lib/xbmc + chown -R xbmc:xbmc var/lib/xbmc +} -[Service] -User = xbmc -Group = xbmc -Type = simple -ExecStart = /usr/bin/xinit /usr/bin/xbmc-standalone -- :0 -nolisten tcp -Restart = always +post_upgrade() { + post_install $1 +} -[Install] -WantedBy = multi-user.target +post_remove() { + [[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor + [[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications + getent passwd xbmc > /dev/null && userdel xbmc +}