From b123561fde1fd4d3f00b8ecb712dcda7adb663fd Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Sun, 5 Jul 2015 13:40:53 +0300 Subject: [PATCH 1/3] kodi: added special setting __addonpath__ to libXBMC_addon::GetSettings() returns the path for an addon --- .../kodi/patches/kodi-995.01-addonpath.patch | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 packages/mediacenter/kodi/patches/kodi-995.01-addonpath.patch diff --git a/packages/mediacenter/kodi/patches/kodi-995.01-addonpath.patch b/packages/mediacenter/kodi/patches/kodi-995.01-addonpath.patch new file mode 100644 index 0000000000..7e260e40cd --- /dev/null +++ b/packages/mediacenter/kodi/patches/kodi-995.01-addonpath.patch @@ -0,0 +1,28 @@ +From 2a2ddb51f931d5f606638a0a3d6d76c261f09659 Mon Sep 17 00:00:00 2001 +From: Arne Morten Kvarving +Date: Sun, 10 Aug 2014 10:01:15 +0200 +Subject: [PATCH] added: special setting __addonpath__ to + libXBMC_addon::GetSettings() + +returns the path for an addon +--- + xbmc/addons/AddonCallbacksAddon.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/xbmc/addons/AddonCallbacksAddon.cpp b/xbmc/addons/AddonCallbacksAddon.cpp +index b789648..40f1dde 100644 +--- a/xbmc/addons/AddonCallbacksAddon.cpp ++++ b/xbmc/addons/AddonCallbacksAddon.cpp +@@ -187,6 +187,12 @@ bool CAddonCallbacksAddon::GetAddonSetting(void *addonData, const char *strSetti + { + CLog::Log(LOGDEBUG, "CAddonCallbacksAddon - %s - add-on '%s' requests setting '%s'", __FUNCTION__, addonHelper->m_addon->Name().c_str(), strSettingName); + ++ if (strcasecmp(strSettingName, "__addonpath__") == 0) ++ { ++ strcpy((char*) settingValue, addonHelper->m_addon->Path().c_str()); ++ return true; ++ } ++ + if (!addonHelper->m_addon->ReloadSettings()) + { + CLog::Log(LOGERROR, "CAddonCallbacksAddon - %s - could't get settings for add-on '%s'", __FUNCTION__, addonHelper->m_addon->Name().c_str()); From 668f53f3f2f36d571525c96ac47ffca4ff610f86 Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Sun, 5 Jul 2015 13:42:04 +0300 Subject: [PATCH 2/3] scripts/create_addon: allow packages to ship multiple addons --- scripts/create_addon | 45 +++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/scripts/create_addon b/scripts/create_addon index b54007e8b1..2148feb305 100755 --- a/scripts/create_addon +++ b/scripts/create_addon @@ -47,21 +47,8 @@ if [ -n "$PKG_ADDON_REPOVERSION" -a ! "$PKG_ADDON_REPOVERSION" = "$ADDON_VERSION exit 0 fi -if [ "$PKG_IS_ADDON" = "yes" ] ; then - $SCRIPTS/build $@ - - printf "%${BUILD_INDENT}c CREATE ADDON ($PROJECT/$TARGET_ARCH) $1\n" ' '>&$SILENT_OUT - export BUILD_INDENT=$((${BUILD_INDENT:-1}+$BUILD_INDENT_SIZE)) - - rm -rf $ADDON_BUILD - - if [ "$(type -t addon)" = "function" ]; then - addon - else - echo "*** unsupported package format. please convert your package ***" - exit 1 - fi +pack_addon() { IFS=" " for i in $PKG_ADDON_REQUIRES; do REQUIRES_ADDONNAME=`echo $i | cut -f1 -d ":"` @@ -120,7 +107,7 @@ if [ "$PKG_IS_ADDON" = "yes" ] ; then ADDON_INSTALL_DIR="$TARGET/$ADDONS/$ADDON_VERSION/$PROJECT/$TARGET_ARCH/$PKG_ADDON_ID" if [ -f $ADDON_INSTALL_DIR/$PKG_ADDON_ID-$ADDONVER.zip ] ; then echo "*** WARNING: $PKG_ADDON_ID-$ADDONVER.zip already exists. not overwriting it ***" - exit 0 + return 0 fi cd $ADDON_BUILD echo "*** compressing Addon $PKG_ADDON_ID ... ***" @@ -136,4 +123,32 @@ if [ "$PKG_IS_ADDON" = "yes" ] ; then cp $ADDON_BUILD/$PKG_ADDON_ID/icon.png $ADDON_INSTALL_DIR/icon.png fi fi +} + +if [ "$PKG_IS_ADDON" = "yes" ] ; then + $SCRIPTS/build $@ + + printf "%${BUILD_INDENT}c CREATE ADDON ($PROJECT/$TARGET_ARCH) $1\n" ' '>&$SILENT_OUT + export BUILD_INDENT=$((${BUILD_INDENT:-1}+$BUILD_INDENT_SIZE)) + + rm -rf $ADDON_BUILD + + if [ "$(type -t addon)" = "function" ]; then + addon + else + echo "*** unsupported package format. please convert your package ***" + exit 1 + fi + + # HACK for packages tat provide multiple addons like screensavers.rsxs + # addon's addon() in package.mk should take care for exporting + # MULTI_ADDONS="addon.boo1 addon.boo2 addon.boo3" + if [ -n "$MULTI_ADDONS" ] ; then + for _ADDON in $MULTI_ADDONS ; do + PKG_ADDON_ID=$_ADDON + pack_addon + done + else + pack_addon + fi fi From aa463751690c0b0e68922e64775fe81fc54b33ff Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Sun, 5 Jul 2015 13:43:00 +0300 Subject: [PATCH 3/3] binary addons: add screensavers.rsxs --- .../screensavers.rsxs/package.mk | 62 +++++++++++++++++++ tools/mkpkg/mkpkg_screensavers.rsxs | 43 +++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk create mode 100755 tools/mkpkg/mkpkg_screensavers.rsxs diff --git a/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk b/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk new file mode 100644 index 0000000000..526651b8fe --- /dev/null +++ b/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk @@ -0,0 +1,62 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) +# +# OpenELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# OpenELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC. If not, see . +################################################################################ + +PKG_NAME="screensavers.rsxs" +PKG_VERSION="195e0ec" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.kodi.tv" +PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" +PKG_DEPENDS_TARGET="toolchain kodi-platform" +PKG_PRIORITY="optional" +PKG_SECTION="" +PKG_SHORTDESC="screensavers.rsxs" +PKG_LONGDESC="screensavers.rsxs" +PKG_AUTORECONF="no" + +PKG_IS_ADDON="yes" +PKG_ADDON_TYPE="xbmc.ui.screensaver" + +if [ "$OPENGL" = "no" ] ; then + exit 0 +fi + +configure_target() { + cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \ + -DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \ + .. +} + +addon() { + for _ADDON in $PKG_BUILD/.install_pkg/usr/share/kodi/addons/* ; do + _ADDON_ID=$(basename $_ADDON) + + mkdir -p $ADDON_BUILD/$_ADDON_ID/ + cp -PR $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$_ADDON_ID/* $ADDON_BUILD/$_ADDON_ID/ + cp -PL $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$_ADDON_ID/*.so $ADDON_BUILD/$_ADDON_ID/ + + MULTI_ADDONS="$MULTI_ADDONS $_ADDON_ID" + done + + # export MULTI_ADDONS so create_addon knows multiple addons + # were installed in $ADDON_BUILD/ + export MULTI_ADDONS="$MULTI_ADDONS" +} diff --git a/tools/mkpkg/mkpkg_screensavers.rsxs b/tools/mkpkg/mkpkg_screensavers.rsxs new file mode 100755 index 0000000000..7413ba198b --- /dev/null +++ b/tools/mkpkg/mkpkg_screensavers.rsxs @@ -0,0 +1,43 @@ +#!/bin/sh +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +echo "getting sources..." + if [ ! -d screensavers.rsxs.git ]; then + git clone https://github.com/notspiff/screensavers.rsxs.git screensavers.rsxs.git + fi + + cd screensavers.rsxs.git + git pull + GIT_REV=`git log -n1 --format=%h` + cd .. + +echo "copying sources..." + rm -rf screensavers.rsxs-$GIT_REV + cp -R screensavers.rsxs.git screensavers.rsxs-$GIT_REV + +echo "cleaning sources..." + rm -rf screensavers.rsxs-$GIT_REV/.git + +echo "packing sources..." + tar cvJf screensavers.rsxs-$GIT_REV.tar.xz screensavers.rsxs-$GIT_REV + +echo "remove temporary sourcedir..." + rm -rf screensavers.rsxs-$GIT_REV