From b273f59ada01412951e0738f0a4d3ec2a8f4c83d Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sat, 10 Jul 2021 03:05:45 +0000 Subject: [PATCH 1/9] jellyfin: initial release Co-authored-by: CvH <1355173+CvH@users.noreply.github.com> --- .../addons/service/jellyfin/changelog.txt | 2 + .../addons/service/jellyfin/icon/icon.png | Bin 0 -> 45337 bytes packages/addons/service/jellyfin/package.mk | 33 +++++++++ .../jellyfin/source/bin/jellyfin-downloader | 65 ++++++++++++++++++ .../jellyfin/source/bin/jellyfin-start | 21 ++++++ .../addons/service/jellyfin/source/default.py | 46 +++++++++++++ .../resources/language/English/strings.po | 14 ++++ .../jellyfin/source/resources/settings.xml | 6 ++ .../jellyfin/source/settings-default.xml | 3 + .../source/system.d/service.jellyfin.service | 13 ++++ 10 files changed, 203 insertions(+) create mode 100644 packages/addons/service/jellyfin/changelog.txt create mode 100644 packages/addons/service/jellyfin/icon/icon.png create mode 100644 packages/addons/service/jellyfin/package.mk create mode 100644 packages/addons/service/jellyfin/source/bin/jellyfin-downloader create mode 100644 packages/addons/service/jellyfin/source/bin/jellyfin-start create mode 100644 packages/addons/service/jellyfin/source/default.py create mode 100644 packages/addons/service/jellyfin/source/resources/language/English/strings.po create mode 100644 packages/addons/service/jellyfin/source/resources/settings.xml create mode 100644 packages/addons/service/jellyfin/source/settings-default.xml create mode 100644 packages/addons/service/jellyfin/source/system.d/service.jellyfin.service diff --git a/packages/addons/service/jellyfin/changelog.txt b/packages/addons/service/jellyfin/changelog.txt new file mode 100644 index 0000000000..fe01f1b4fe --- /dev/null +++ b/packages/addons/service/jellyfin/changelog.txt @@ -0,0 +1,2 @@ +100 +- Initial release diff --git a/packages/addons/service/jellyfin/icon/icon.png b/packages/addons/service/jellyfin/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8a6246430e3b6e07e3e9ab01e8c8d374e102e0 GIT binary patch literal 45337 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%0ATAZSR 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 B)3pEq literal 0 HcmV?d00001 diff --git a/packages/addons/service/jellyfin/package.mk b/packages/addons/service/jellyfin/package.mk new file mode 100644 index 0000000000..4768c1e61b --- /dev/null +++ b/packages/addons/service/jellyfin/package.mk @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="jellyfin" +PKG_VERSION="1.0" +PKG_VERSION_NUMBER="10.7.6" +PKG_REV="100" +PKG_ARCH="any" +PKG_LICENSE="GPLv2" +PKG_SITE="https://jellyfin.org/" +PKG_DEPENDS_TARGET="toolchain" +PKG_SECTION="service" +PKG_SHORTDESC="Jellyfin: The Free Software Media System" +PKG_LONGDESC="Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. Stream to any device from your own server. Your media, your server, your way." +PKG_TOOLCHAIN="manual" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="Jellyfin" +PKG_ADDON_TYPE="xbmc.service" +PKG_ADDON_REQUIRES="tools.ffmpeg-tools:0.0.0 tools.dotnet-runtime:0.0.0" +PKG_ADDON_PROVIDES="executable" + +make_target() { + : +} + +addon() { + : +} + +post_install_addon() { + sed -e "s/@JELLYFIN_VERSION@/${PKG_VERSION_NUMBER}/g" -i "${INSTALL}/bin/jellyfin-downloader" +} diff --git a/packages/addons/service/jellyfin/source/bin/jellyfin-downloader b/packages/addons/service/jellyfin/source/bin/jellyfin-downloader new file mode 100644 index 0000000000..9dd3b69a3d --- /dev/null +++ b/packages/addons/service/jellyfin/source/bin/jellyfin-downloader @@ -0,0 +1,65 @@ +#!/bin/bash + +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +. /etc/profile +oe_setup_addon service.jellyfin + +ICON="$ADDON_DIR/resources/icon.png" +CONTROL_FILE="/tmp/curl.done" +DATA_FILE="/tmp/curl.data" +JELLYFIN_FILE="jellyfin_@JELLYFIN_VERSION@.tar.gz" + +# check for enough free disk space +if [ $(df . | awk 'END {print $4}') -lt 200000 ]; then + kodi-send --action="Notification(Not enough disk space, at least 200MB are required,30000,${ICON})" >/dev/null + exit 0; +fi + +# remove install status and folders +if [ -f $ADDON_DIR/extract.ok ]; then + rm $ADDON_DIR/extract.ok +fi + +if [ -d $ADDON_DIR/libs ]; then + rm -rf $ADDON_DIR/libs +fi + +if [ -d $ADDON_DIR/tmp_download ]; then + rm -rf $ADDON_DIR/tmp_download +fi + +# create tmp download dir +mkdir -p $ADDON_DIR/tmp_download +cd $ADDON_DIR/tmp_download + +echo "Downloading Jellyfin" + +# download Jellyfin +rm -f ${CONTROL_FILE} ${DATA_FILE} +( + curl -L -# -O -C - https://repo.jellyfin.org/releases/server/portable/versions/stable/combined/@JELLYFIN_VERSION@/${JELLYFIN_FILE} 2>${DATA_FILE} + touch ${CONTROL_FILE} +) | \ + while [ : ]; do + [ -f ${DATA_FILE} ] && prog="$(tr '\r' '\n' < ${DATA_FILE} | tail -n 1 | sed -r 's/^[# ]+/#/;s/^[^0-9]*//g')" || prog= + kodi-send --action="Notification(Downloading Jellyfin,\"${prog:-0.0%}\",3000,${ICON})" >/dev/null + [ -f ${CONTROL_FILE} ] && break + sleep 4 + done + +rm -f ${CONTROL_FILE} ${DATA_FILE} + +# extract Jellyfin +kodi-send --action="Notification(Extracting Jellyfin,Starting,1000,${ICON})" >/dev/null + +# extract JELLYFIN_FILE to libs directory +mkdir $ADDON_DIR/libs +tar xf ${JELLYFIN_FILE} -C $ADDON_DIR/libs --strip-components=2 + +# cleanup +cd $ADDON_DIR +rm -rf $ADDON_DIR/tmp_download +touch $ADDON_DIR/extract.ok +kodi-send --action="Notification(Extracting Jellyfin,Finished,1000,${ICON})" >/dev/null diff --git a/packages/addons/service/jellyfin/source/bin/jellyfin-start b/packages/addons/service/jellyfin/source/bin/jellyfin-start new file mode 100644 index 0000000000..b38f8c4026 --- /dev/null +++ b/packages/addons/service/jellyfin/source/bin/jellyfin-start @@ -0,0 +1,21 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +. /etc/profile +oe_setup_addon service.jellyfin + +# check if jellyfin is already successful installed +if [ ! -f "$ADDON_DIR/extract.ok" ]; then + cd $ADDON_DIR + jellyfin-downloader +fi + +libs="${ADDON_DIR}/libs" +ff="/storage/.kodi/addons/tools.ffmpeg-tools/bin" + +exec \ +nice -n "$jellyfin_nice" \ +dotnet "${libs}/jellyfin.dll" \ + --datadir "${ADDON_HOME}" \ + --ffmpeg "${ff}/ffmpeg" diff --git a/packages/addons/service/jellyfin/source/default.py b/packages/addons/service/jellyfin/source/default.py new file mode 100644 index 0000000000..b97536c2ab --- /dev/null +++ b/packages/addons/service/jellyfin/source/default.py @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) + +import json +import subprocess +import xbmc +import xbmcaddon +import xbmcgui + + +def jsonrpc(request): + return json.loads(xbmc.executeJSONRPC(json.dumps(request))) + + +def disable_conflicting(conficting, + message='{that} conflicts with {this} and has been disabled'): + is_enabled = {'jsonrpc': '2.0', 'method': 'Addons.GetAddonDetails', 'id': 1, + 'params': {'addonid': conficting, 'properties': ['enabled']}} + disable = {'jsonrpc': '2.0', 'method': 'Addons.SetAddonEnabled', 'id': 1, + 'params': {'addonid': conficting, 'enabled': False}} + try: + if jsonrpc(is_enabled)['result']['addon']['enabled']: + this = xbmcaddon.Addon().getAddonInfo('name') + that = xbmcaddon.Addon(conficting).getAddonInfo('name') + jsonrpc(disable) + dialog = xbmcgui.Dialog() + dialog.ok(this, message.format( + this=this, that=that)) + del dialog + except KeyError: + pass + + +class Monitor(xbmc.Monitor): + + def __init__(self, *args, **kwargs): + xbmc.Monitor.__init__(self) + self.id = xbmcaddon.Addon().getAddonInfo('id') + + def onSettingsChanged(self): + subprocess.call(['systemctl', 'restart', self.id]) + + +if __name__ == '__main__': + disable_conflicting('service.emby') + Monitor().waitForAbort() diff --git a/packages/addons/service/jellyfin/source/resources/language/English/strings.po b/packages/addons/service/jellyfin/source/resources/language/English/strings.po new file mode 100644 index 0000000000..7b7065e349 --- /dev/null +++ b/packages/addons/service/jellyfin/source/resources/language/English/strings.po @@ -0,0 +1,14 @@ +# Kodi Media Center language file +# Addon Name: jellyfin +# Addon id: service.jellyfin +# Addon Provider: Team LibreELEC +msgid "" +msgstr "" + +msgctxt "#30000" +msgid "Configuration" +msgstr "" + +msgctxt "#30001" +msgid "Priority (nice, 0=max, 19=min)" +msgstr "" diff --git a/packages/addons/service/jellyfin/source/resources/settings.xml b/packages/addons/service/jellyfin/source/resources/settings.xml new file mode 100644 index 0000000000..2d559b14de --- /dev/null +++ b/packages/addons/service/jellyfin/source/resources/settings.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/addons/service/jellyfin/source/settings-default.xml b/packages/addons/service/jellyfin/source/settings-default.xml new file mode 100644 index 0000000000..f83e31b2be --- /dev/null +++ b/packages/addons/service/jellyfin/source/settings-default.xml @@ -0,0 +1,3 @@ + + 10 + diff --git a/packages/addons/service/jellyfin/source/system.d/service.jellyfin.service b/packages/addons/service/jellyfin/source/system.d/service.jellyfin.service new file mode 100644 index 0000000000..9e30bdfcb3 --- /dev/null +++ b/packages/addons/service/jellyfin/source/system.d/service.jellyfin.service @@ -0,0 +1,13 @@ +[Unit] +Description=Jellyfin - The Free Software Media System +Documentation=https://jellyfin.org/ +Wants=multi-user.target +After=multi-user.target + +[Service] +SyslogIdentifier=%N +ExecStart=/bin/sh /storage/.kodi/addons/%N/bin/jellyfin-start +Restart=always + +[Install] +WantedBy=multi-user.target From 712d893cd3dd891d872ec1b77ed3936a9aef030e Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sat, 10 Jul 2021 09:09:12 +0000 Subject: [PATCH 2/9] dotnet3-runtime: initial addon Co-authored-by: CvH <1355173+CvH@users.noreply.github.com> --- .../dotnet3-runtime/package.mk | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 packages/addons/addon-depends/dotnet-runtime-depends/dotnet3-runtime/package.mk diff --git a/packages/addons/addon-depends/dotnet-runtime-depends/dotnet3-runtime/package.mk b/packages/addons/addon-depends/dotnet-runtime-depends/dotnet3-runtime/package.mk new file mode 100644 index 0000000000..dca1421513 --- /dev/null +++ b/packages/addons/addon-depends/dotnet-runtime-depends/dotnet3-runtime/package.mk @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="dotnet3-runtime" +PKG_VERSION="3.1.16" +PKG_LICENSE="MIT" +PKG_SITE="https://dotnet.microsoft.com/" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="ASP.NET Core Runtime runs applications built with .NET Core, a cross-platform .NET implementation." +PKG_TOOLCHAIN="manual" + +case "${ARCH}" in + "aarch64") + PKG_SHA256="b76c049484efd86466d2e1cd88994521633c399d090adb1c6804128603816abe" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/64353333-3080-45f7-a3d5-33e391e4596c/e9d5d53cb318628485e8d1fbd26ec30d/aspnetcore-runtime-3.1.16-linux-arm64.tar.gz" + ;; + "arm") + PKG_SHA256="a0163cd5c5ceae228bfffb40053f3509e155a110c23e81c38705757a870e24cc" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/bd734390-3b5f-402a-826f-e0eae538b8ba/5914dd937ede96cb9297e6e7a80f46f3/aspnetcore-runtime-3.1.16-linux-arm.tar.gz" + ;; + "x86_64") + PKG_SHA256="b1a2f61d8a49e2a3ca5eb9daa103b83eb49ea1bcf14914560e601222e94a3022" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/c20a5ac5-5174-46b8-a875-b916a416050d/b2ddd212a183260569178d880899bd94/aspnetcore-runtime-3.1.16-linux-x64.tar.gz" + ;; +esac +PKG_SOURCE_NAME="aspnetcore3-runtime_${PKG_VERSION}_${ARCH}.tar.gz" From af7283bdb0bb17e9f57c0c549561aa4d9ae7a9fa Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sat, 10 Jul 2021 09:07:47 +0000 Subject: [PATCH 3/9] dotnet-runtime: enables both ASP.NET 3.x and ASP.NET 5.x and addon (114) .NET 3.1.16 which includes both .NET and ASP.NET Core Runtimes have been relocated to the dotnet3-runtime package to enable both 3.x, 5.x to be available to applications. Also added .NET Runtime 5.0.7 and ASP.NET Core Runtime 5.0.7 The following additional packages have been added as dependancies of this package. - add aspnet5-runtime (used by Jellyfin) - add dotnet3-runtime (used by Emby4) - add dotnet5-runtime (used by Jellyfin) --- .../addons/tools/dotnet-runtime/changelog.txt | 4 +++ .../addons/tools/dotnet-runtime/package.mk | 33 ++++++------------- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/packages/addons/tools/dotnet-runtime/changelog.txt b/packages/addons/tools/dotnet-runtime/changelog.txt index 76b27338b9..4bed217e70 100644 --- a/packages/addons/tools/dotnet-runtime/changelog.txt +++ b/packages/addons/tools/dotnet-runtime/changelog.txt @@ -1,3 +1,7 @@ +114 +- Add .NET Runtime 5.0.7 +- Add ASP.NET Core Runtime 5.0.7 + 113 - Update to ASP.NET Core Runtime 3.1.16 diff --git a/packages/addons/tools/dotnet-runtime/package.mk b/packages/addons/tools/dotnet-runtime/package.mk index 9a080e88a7..6521c9098c 100644 --- a/packages/addons/tools/dotnet-runtime/package.mk +++ b/packages/addons/tools/dotnet-runtime/package.mk @@ -2,42 +2,29 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="dotnet-runtime" -PKG_VERSION="3.1.16" -PKG_REV="113" +PKG_REV="114" PKG_ARCH="any" PKG_LICENSE="MIT" PKG_SITE="https://dotnet.microsoft.com/" -PKG_DEPENDS_TARGET="toolchain icu" +PKG_DEPENDS_TARGET="toolchain icu aspnet5-runtime dotnet3-runtime dotnet5-runtime icu" PKG_SECTION="tools" -PKG_SHORTDESC=".NET Core Runtime" -PKG_LONGDESC=".NET Core Runtime (${PKG_VERSION}) runs applications built with .NET Core, a cross-platform .NET implementation." +PKG_SHORTDESC="ASP.NET Core Runtime" +PKG_LONGDESC="ASP.NET Core Runtimes ($(get_pkg_version dotnet3-runtime)) and ($(get_pkg_version dotnet5-runtime)) enables you to run existing console/web/server applications." PKG_TOOLCHAIN="manual" PKG_IS_ADDON="yes" -PKG_ADDON_NAME=".Net Core Runtime" +PKG_ADDON_NAME="ASP.Net Core Runtimes" PKG_ADDON_PROJECTS="any !RPi1" PKG_ADDON_TYPE="xbmc.python.script" PKG_MAINTAINER="Anton Voyl (awiouy)" -case "${ARCH}" in - "aarch64") - PKG_SHA256="b76c049484efd86466d2e1cd88994521633c399d090adb1c6804128603816abe" - PKG_URL="https://download.visualstudio.microsoft.com/download/pr/64353333-3080-45f7-a3d5-33e391e4596c/e9d5d53cb318628485e8d1fbd26ec30d/aspnetcore-runtime-3.1.16-linux-arm64.tar.gz" - ;; - "arm") - PKG_SHA256="a0163cd5c5ceae228bfffb40053f3509e155a110c23e81c38705757a870e24cc" - PKG_URL="https://download.visualstudio.microsoft.com/download/pr/bd734390-3b5f-402a-826f-e0eae538b8ba/5914dd937ede96cb9297e6e7a80f46f3/aspnetcore-runtime-3.1.16-linux-arm.tar.gz" - ;; - "x86_64") - PKG_SHA256="b1a2f61d8a49e2a3ca5eb9daa103b83eb49ea1bcf14914560e601222e94a3022" - PKG_URL="https://download.visualstudio.microsoft.com/download/pr/c20a5ac5-5174-46b8-a875-b916a416050d/b2ddd212a183260569178d880899bd94/aspnetcore-runtime-3.1.16-linux-x64.tar.gz" - ;; -esac -PKG_SOURCE_NAME="aspnetcore-runtime_${PKG_VERSION}_${ARCH}.tar.gz" - addon() { mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin - cp -r ${PKG_BUILD}/* \ + cp -r $(get_build_dir dotnet3-runtime)/* \ + ${ADDON_BUILD}/${PKG_ADDON_ID}/bin + cp -r $(get_build_dir dotnet5-runtime)/* \ + ${ADDON_BUILD}/${PKG_ADDON_ID}/bin + cp -r $(get_build_dir aspnet5-runtime)/* \ ${ADDON_BUILD}/${PKG_ADDON_ID}/bin mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/lib From ec94e742ae387c98255574b3b30ed97d8d0cc65f Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sat, 10 Jul 2021 07:48:15 +0000 Subject: [PATCH 4/9] dotnet5-runtime: initial addon Co-authored-by: CvH <1355173+CvH@users.noreply.github.com> --- .../dotnet5-runtime/package.mk | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 packages/addons/addon-depends/dotnet-runtime-depends/dotnet5-runtime/package.mk diff --git a/packages/addons/addon-depends/dotnet-runtime-depends/dotnet5-runtime/package.mk b/packages/addons/addon-depends/dotnet-runtime-depends/dotnet5-runtime/package.mk new file mode 100644 index 0000000000..18cc0d0416 --- /dev/null +++ b/packages/addons/addon-depends/dotnet-runtime-depends/dotnet5-runtime/package.mk @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="dotnet5-runtime" +PKG_VERSION="5.0.7" +PKG_LICENSE="MIT" +PKG_SITE="https://dotnet.microsoft.com/" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC=".NET Runtime runs applications built with .NET Core, a cross-platform .NET implementation." +PKG_TOOLCHAIN="manual" + +case "${ARCH}" in + "aarch64") + PKG_SHA256="375956c3d326f5030a1eff2cafdba8b994ed0e1b87db2dd812ce17e0bca5fb27" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/a9a37d9f-6158-43a4-a610-f0f9e8c2cb73/c69c6d22c668cb09b2d00bea8209335b/dotnet-runtime-5.0.7-linux-arm64.tar.gz" + ;; + "arm") + PKG_SHA256="fcc811f37cb6914bf3aa1c96040b1a46fad42939e6b1e1e7e0f513a9be1de680" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/09a24e9f-0096-454a-b761-70cdf9504775/eafe9578bbedd15c9319b7580d5a20d9/dotnet-runtime-5.0.7-linux-arm.tar.gz" + ;; + "x86_64") + PKG_SHA256="ed864299f0e736f9d284b655e62d8a29aee97c14741ef8baf13d5ff493f83a47" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/f229fc63-747e-46c8-89ac-88563c2e0b7d/8e59115deda958a26e1546f603cbad9a/dotnet-runtime-5.0.7-linux-x64.tar.gz" + ;; +esac +PKG_SOURCE_NAME="dotnet-runtime_${PKG_VERSION}_${ARCH}.tar.gz" From 87503cb36ecbe4d8d99ff4a537f3dfd1c3a48db9 Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sat, 10 Jul 2021 09:09:46 +0000 Subject: [PATCH 5/9] aspnet5-runtime: initial addon Co-authored-by: CvH <1355173+CvH@users.noreply.github.com> --- .../aspnet5-runtime/package.mk | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 packages/addons/addon-depends/dotnet-runtime-depends/aspnet5-runtime/package.mk diff --git a/packages/addons/addon-depends/dotnet-runtime-depends/aspnet5-runtime/package.mk b/packages/addons/addon-depends/dotnet-runtime-depends/aspnet5-runtime/package.mk new file mode 100644 index 0000000000..991cec7ff9 --- /dev/null +++ b/packages/addons/addon-depends/dotnet-runtime-depends/aspnet5-runtime/package.mk @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="aspnet5-runtime" +PKG_VERSION="5.0.7" +PKG_LICENSE="MIT" +PKG_SITE="https://dotnet.microsoft.com/" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="ASP.NET Core Runtime enables you to run existing web/server applications." +PKG_TOOLCHAIN="manual" + +case "${ARCH}" in + "aarch64") + PKG_SHA256="219f233d4e23e2381d93dc99a7cbdbe55c55e45da2e025b5d139d1338d11d62a" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/d0a22fa3-b916-49ce-8284-97131b424cb3/cb884163ad34b83f1ae1dbd33e09d77a/aspnetcore-runtime-5.0.7-linux-arm64.tar.gz" + ;; + "arm") + PKG_SHA256="c14e64527f2bf7356d1de154132a07b86de4a30c62129e138f3ca95a43c2dd54" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/2f690848-1342-4768-a7d7-45fa476a4a22/50dd1c50ed7864140b04fec057bb8bd6/aspnetcore-runtime-5.0.7-linux-arm.tar.gz" + ;; + "x86_64") + PKG_SHA256="22f9f93b4d6a00e76980918b721f7f62654421d7582d486e830ec478c365707c" + PKG_URL="https://download.visualstudio.microsoft.com/download/pr/d6be94b3-458f-43c4-8bb5-9ba261de8c9c/bbe13b54208d088b5fdf428759b5bc0a/aspnetcore-runtime-5.0.7-linux-x64.tar.gz" + ;; +esac +PKG_SOURCE_NAME="aspnetcore-runtime_${PKG_VERSION}_${ARCH}.tar.gz" From b28a019e09d7514d2117c93df09fcece12f63e4b Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sun, 11 Jul 2021 00:23:39 +0000 Subject: [PATCH 6/9] x265: update INSTALL_PREFIX cmake defaults the install directory to /usr/local on UNIX. - https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html This results is the x265.pc file located in /usr/local/lib/pkgconfig instead of /usr/lib/pkgconfig and not being found when pkg-config is called. --- packages/addons/addon-depends/ffmpegx-depends/x265/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/addons/addon-depends/ffmpegx-depends/x265/package.mk b/packages/addons/addon-depends/ffmpegx-depends/x265/package.mk index bae256f78d..4ac57301c3 100644 --- a/packages/addons/addon-depends/ffmpegx-depends/x265/package.mk +++ b/packages/addons/addon-depends/ffmpegx-depends/x265/package.mk @@ -14,5 +14,5 @@ PKG_TOOLCHAIN="make" pre_configure_target() { LDFLAGS+=" -ldl" - cmake -G "Unix Makefiles" ./source + cmake -DCMAKE_INSTALL_PREFIX=/usr -G "Unix Makefiles" ./source } From a27a0b96220e92fd2263f2027c8e685a6a1a0c78 Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sun, 11 Jul 2021 01:15:14 +0000 Subject: [PATCH 7/9] ffmpegx: update build and depends without using `--pkg-config-flags="--static"` as a build option the Libs.private: as tagged in a .pc file does not return correct information necessary to link against the archive, an example of this is opus.pc which is tagged as `Libs.private: -lm` Add lame and x265 to the depends to support the "${PKG_FFMPEG_ENCODERS}" --- packages/addons/addon-depends/ffmpegx/package.mk | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/addons/addon-depends/ffmpegx/package.mk b/packages/addons/addon-depends/ffmpegx/package.mk index 292174f55a..49c0aef487 100644 --- a/packages/addons/addon-depends/ffmpegx/package.mk +++ b/packages/addons/addon-depends/ffmpegx/package.mk @@ -7,7 +7,7 @@ PKG_SHA256="06b10a183ce5371f915c6bb15b7b1fffbe046e8275099c96affc29e17645d909" PKG_LICENSE="LGPLv2.1+" PKG_SITE="https://ffmpeg.org" PKG_URL="https://ffmpeg.org/releases/ffmpeg-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain aom bzip2 gnutls libvorbis opus x264 zlib" +PKG_DEPENDS_TARGET="toolchain aom bzip2 gnutls lame libvorbis opus x264 x265 zlib" PKG_LONGDESC="FFmpegx is an complete FFmpeg build to support encoding and decoding." PKG_BUILD_FLAGS="-gold -sysroot" @@ -61,6 +61,12 @@ pre_configure_target() { --enable-hwaccel=vp8_vaapi \ --enable-hwaccel=vp9_vaapi \ --enable-hwaccel=wmv3_vaapi" + + PKG_FFMPEG_X26x_GENERIC="\ + --enable-libx264 \ + --enable-encoder=x264 \ + --enable-libx265 \ + --enable-encoder=x265" fi # Encoders @@ -69,10 +75,7 @@ pre_configure_target() { --enable-libvpx \ --enable-encoder=libvpx_vp8 \ --enable-encoder=libvpx_vp9 \ - --enable-libx264 \ - --enable-encoder=x264 \ - --enable-libx265 \ - --enable-encoder=x265 \ + ${PKG_FFMPEG_X26x_GENERIC} \ --enable-libaom \ --enable-encoder=libaom_av1 \ \ @@ -109,6 +112,7 @@ configure_target() { \ `#Static and Shared` \ --enable-static \ + --pkg-config-flags="--static" \ --disable-shared \ \ `#Licensing options` \ @@ -120,6 +124,8 @@ configure_target() { `#Hardware accelerated decoding encoding` \ ${PKG_FFMPEG_HW_ENCODERS_GENERIC} \ \ + ${PKG_FFMPEG_ENCODERS} \ + \ `#General options` \ --enable-avresample \ --disable-lzma \ From 1e2ae5446ee230ede081783184d84698fc454c32 Mon Sep 17 00:00:00 2001 From: heitbaum Date: Mon, 12 Jul 2021 10:00:19 +0000 Subject: [PATCH 8/9] jellyfin: update downloader to use mktemp --- .../jellyfin/source/bin/jellyfin-downloader | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/addons/service/jellyfin/source/bin/jellyfin-downloader b/packages/addons/service/jellyfin/source/bin/jellyfin-downloader index 9dd3b69a3d..5f2fe0edfb 100644 --- a/packages/addons/service/jellyfin/source/bin/jellyfin-downloader +++ b/packages/addons/service/jellyfin/source/bin/jellyfin-downloader @@ -6,7 +6,7 @@ . /etc/profile oe_setup_addon service.jellyfin -ICON="$ADDON_DIR/resources/icon.png" +ICON="${ADDON_DIR}/resources/icon.png" CONTROL_FILE="/tmp/curl.done" DATA_FILE="/tmp/curl.data" JELLYFIN_FILE="jellyfin_@JELLYFIN_VERSION@.tar.gz" @@ -18,21 +18,24 @@ if [ $(df . | awk 'END {print $4}') -lt 200000 ]; then fi # remove install status and folders -if [ -f $ADDON_DIR/extract.ok ]; then - rm $ADDON_DIR/extract.ok +if [ -f ${ADDON_DIR}/extract.ok ]; then + rm ${ADDON_DIR}/extract.ok fi -if [ -d $ADDON_DIR/libs ]; then - rm -rf $ADDON_DIR/libs -fi - -if [ -d $ADDON_DIR/tmp_download ]; then - rm -rf $ADDON_DIR/tmp_download +if [ -d ${ADDON_DIR}/libs ]; then + rm -rf ${ADDON_DIR}/libs fi # create tmp download dir -mkdir -p $ADDON_DIR/tmp_download -cd $ADDON_DIR/tmp_download +TEMP_DIR=`mktemp -d` + +mkdir -p ${TEMP_DIR}/tmp_download +if [ -d ${TEMP_DIR}/tmp_download ]; then + cd ${TEMP_DIR}/tmp_download +else + kodi-send --action="Notification(Unable to download Jellyfin - no temp directory,30000,${ICON})" >/dev/null + exit 0 +fi echo "Downloading Jellyfin" @@ -55,11 +58,12 @@ rm -f ${CONTROL_FILE} ${DATA_FILE} kodi-send --action="Notification(Extracting Jellyfin,Starting,1000,${ICON})" >/dev/null # extract JELLYFIN_FILE to libs directory -mkdir $ADDON_DIR/libs -tar xf ${JELLYFIN_FILE} -C $ADDON_DIR/libs --strip-components=2 +mkdir ${ADDON_DIR}/libs +tar xf ${JELLYFIN_FILE} -C ${ADDON_DIR}/libs --strip-components=2 # cleanup -cd $ADDON_DIR -rm -rf $ADDON_DIR/tmp_download -touch $ADDON_DIR/extract.ok +cd ${ADDON_DIR} +rm -rf ${TEMP_DIR}/tmp_download +rmdir ${TEMP_DIR} +touch ${ADDON_DIR}/extract.ok kodi-send --action="Notification(Extracting Jellyfin,Finished,1000,${ICON})" >/dev/null From 010b1b57738626764482ca60db4832d9ba4ed7b4 Mon Sep 17 00:00:00 2001 From: heitbaum Date: Tue, 17 Aug 2021 17:41:11 +1000 Subject: [PATCH 9/9] jellyfin: update icon --- .../addons/service/jellyfin/icon/icon.png | Bin 45337 -> 9544 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/addons/service/jellyfin/icon/icon.png b/packages/addons/service/jellyfin/icon/icon.png index fe8a6246430e3b6e07e3e9ab01e8c8d374e102e0..07bfcc57578e640e9c590940055a5559ff5f55ab 100644 GIT binary patch literal 9544 zcmbVyXHZj7yKX`tv;d(>KwyKR_oh-!=uHr$BS;BFI!G^)07?}CQdF8!L;>m2MTG#N zOA(N!Kxk5wh=3w`;&N7F$Fn~ZHCPM=q3lIp5 z|M#PVP_rz|YUm#>U3S$H&dh&CAQn!^49>Aefn%Sy@?`n3z~tSm1DYKBoVvGokDz zA=kaX!iiAe+UFiQTH?}I>1C9QTfadZc$@uX;T++XI-MlL~~|t#Ew-u_Ocg#%<>qB^B=UkGj1I>u9Pu- z9rr%Pn`ni79~3fNb)#1}XZG#ew|-$GdiN$@+~`F-p1T!3`oN?AYQn@Lw|>5dbN9Ul zWbq%Qvu19_j2S0Rq}?Jq#E$bmoJ;Z{(mq`{_WPSPYQWy;CP>4`Hz zGi3_rH+a{V$o2RmbIE+B=K#EDJ}Pi1$Gtx=bR@xdFgG{XJAA}3W{ja^-ZpNWqK-_j z0jA>loSYn0IbCHrRW+3>iWkjnG(1G*wY_y>`8+Z?m2^Z=4tUqMvL=Do^}-~?q!n(Y z=_#A)X#0d1C5KxTPft%slT_8ROenBv#@bh_UoutH_SC+SW2$T` zg;cz%>Bw*DuMpMB$0r^|Ho0T+fJ?)QLqx$X z@QsX^hW6F)r*<7NF)@-s&j0}_D{Fkjt!`Nv<>lpNQ&ZDRiGvs7S`4v6`XO!BL7lAJ z{Pwr%Q?8XHIX1He7Q*1{qQa7XesACoQE($yce8X)tB34-Na0i>JI6WX1@UM0Zy2)s z0Z}t=gO zN(vJvf`f}^XlRJ%!8nYO@$N0c6Q{T5@;_9&kBdu)UzL*N2Y~>Pp$^(IVt%hEGKRzb z@xa={wAd@GMuqJtrmXVYqTC7lUN(Hycu+B1nb9VOirX8&3TZFfzfh7_Y zgkb*k@MRf|`f_x@^m78}CTO*EMZ){kixqF4uEp>hlq|_%cevp70FL-}fy*TeWxwZxTD3@=C z|ILeNkPCZ9FJfuLZKg)?4v1jqI{scB!u5*u3LIJcnHjWtehFhMHVY8b{Z|ea?bet; z1Vo2m?5UQ8o`9}+?B=otQ-Ax_gK`o}OLi7Z~n|#NTDCoDym97?L9< z(*Knbg8)m`BO%n84I9H2VVDrb%mcOi^R&T9{kh(zz?3^Cq!De)zc%10dh6`?gDSrK z@k=W#!4KfHP@d}exyatC4B90!#cY_E)OXqLr#xtYU31ba5tl4;z?xJ^K!A+x{)cxTf`>EgoEp#~SEHt$ z-vU~1+4O*YLXH(XXo%$-NT$D&^EAOpwL!~0`&V5BnH081FO{8vlFwWvoz#q-qV!5I zP_oBQ3Ksqed;&IxkwS2vMrX{&>OM

RJPU^jP#rnZHX`?Z$JJ{8TjemPKwRoKq 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%0ATAZSR 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 B)3pEq