From 539f908adbc83d753828c259d5f5b128fb49414c Mon Sep 17 00:00:00 2001 From: cvh Date: Thu, 25 Jan 2018 15:14:05 +0100 Subject: [PATCH] minidlna: initial addon --- .../addons/service/minidlna/changelog.txt | 2 + .../addons/service/minidlna/icon/icon.png | Bin 0 -> 51493 bytes packages/addons/service/minidlna/package.mk | 56 +++++++++++++ .../patches/minidlna-01-fix-config.patch | 23 +++++ .../minidlna/source/bin/minidlna.start | 36 ++++++++ .../minidlna/source/config/minidlna.conf | 79 ++++++++++++++++++ .../addons/service/minidlna/source/default.py | 35 ++++++++ .../resources/language/English/strings.po | 14 ++++ .../minidlna/source/resources/settings.xml | 6 ++ .../minidlna/source/settings-default.xml | 3 + .../minidlna/source/sleep.d/minidlna.power | 40 +++++++++ .../source/system.d/service.minidlna.service | 13 +++ 12 files changed, 307 insertions(+) create mode 100644 packages/addons/service/minidlna/changelog.txt create mode 100755 packages/addons/service/minidlna/icon/icon.png create mode 100644 packages/addons/service/minidlna/package.mk create mode 100644 packages/addons/service/minidlna/patches/minidlna-01-fix-config.patch create mode 100755 packages/addons/service/minidlna/source/bin/minidlna.start create mode 100644 packages/addons/service/minidlna/source/config/minidlna.conf create mode 100644 packages/addons/service/minidlna/source/default.py create mode 100644 packages/addons/service/minidlna/source/resources/language/English/strings.po create mode 100644 packages/addons/service/minidlna/source/resources/settings.xml create mode 100644 packages/addons/service/minidlna/source/settings-default.xml create mode 100644 packages/addons/service/minidlna/source/sleep.d/minidlna.power create mode 100644 packages/addons/service/minidlna/source/system.d/service.minidlna.service diff --git a/packages/addons/service/minidlna/changelog.txt b/packages/addons/service/minidlna/changelog.txt new file mode 100644 index 0000000000..939a143a03 --- /dev/null +++ b/packages/addons/service/minidlna/changelog.txt @@ -0,0 +1,2 @@ +100 +- initial LibreELEC version diff --git a/packages/addons/service/minidlna/icon/icon.png b/packages/addons/service/minidlna/icon/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..d3cfd67d43e5d824964ee2050b0665597004ef52 GIT binary patch literal 51493 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 literal 0 HcmV?d00001 diff --git a/packages/addons/service/minidlna/package.mk b/packages/addons/service/minidlna/package.mk new file mode 100644 index 0000000000..61d0d5ae74 --- /dev/null +++ b/packages/addons/service/minidlna/package.mk @@ -0,0 +1,56 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2018-present Team LibreELEC +# +# LibreELEC 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. +# +# LibreELEC 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 LibreELEC. If not, see . +################################################################################ + +PKG_NAME="minidlna" +PKG_VERSION="138d03d" +PKG_SHA256="efd780aa7c7e076dee273694b73d2f03598b0201ca79335b2975779c24469f97" +PKG_REV="100" +PKG_ARCH="any" +PKG_LICENSE="BSD-3c/GPLv2" +PKG_SITE="https://sourceforge.net/projects/minidlna/" +PKG_URL="http://repo.or.cz/minidlna.git/snapshot/$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain libiconv libid3tag libexif libjpeg-turbo libogg libvorbis ffmpeg flac sqlite" +PKG_SECTION="service" +PKG_SHORTDESC="MiniDLNA (ReadyMedia): a fully compliant DLNA/UPnP-AV server" +PKG_LONGDESC="MiniDLNA ($PKG_VERSION) (ReadyMedia) is a media server, with the aim of being fully compliant with DLNA/UPnP-AV clients." +PKG_TOOLCHAIN="autotools" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="MiniDLNA (ReadyMedia)" +PKG_ADDON_TYPE="xbmc.service" + +PKG_CONFIGURE_OPTS_TARGET="--disable-static \ + --disable-nls \ + --without-libiconv-prefix \ + --without-libintl-prefix \ + --with-os-name="$DISTRONAME" \ + --with-db-path="/storage/.kodi/userdata/addon_data/service.minidlna/db" \ + --with-os-url="https://libreelec.tv"" + +pre_configure_target() { + export LDFLAGS="$LDFLAGS -L$(get_build_dir ffmpeg)/.install_pkg/usr/lib" + export LIBS="$LIBS -lid3tag -lFLAC -logg -lz -lpthread -ldl -lm" +} + +addon() { + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $PKG_BUILD/.install_pkg/usr/sbin/minidlnad $ADDON_BUILD/$PKG_ADDON_ID/bin + + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib + cp -p $(get_build_dir libexif)/.install_pkg/usr/lib/libexif.so.12 $ADDON_BUILD/$PKG_ADDON_ID/lib +} diff --git a/packages/addons/service/minidlna/patches/minidlna-01-fix-config.patch b/packages/addons/service/minidlna/patches/minidlna-01-fix-config.patch new file mode 100644 index 0000000000..7880b27f91 --- /dev/null +++ b/packages/addons/service/minidlna/patches/minidlna-01-fix-config.patch @@ -0,0 +1,23 @@ +disabling editing of the configfiles at buildtime +--- a/Makefile.am ++++ b/Makefile.am +@@ -73,19 +73,6 @@ testupnpdescgen_LDADD = \ + @LIBEXIF_LIBS@ \ + -lFLAC $(flacogglibs) $(vorbislibs) $(avahilibs) + +-SUFFIXES = .tmpl . +- +-.tmpl: +- sed -e s@:SBINDIR:@${sbindir}@ <$< >$@ +- +-GENERATED_FILES = \ +- linux/minidlna.init.d.script +- +-TEMPLATES = \ +- linux/minidlna.init.d.script.tmpl +- +-CLEANFILES = $(GENERATED_FILES) +- + ACLOCAL_AMFLAGS = -I m4 + + EXTRA_DIST = m4/ChangeLog $(TEMPLATES) diff --git a/packages/addons/service/minidlna/source/bin/minidlna.start b/packages/addons/service/minidlna/source/bin/minidlna.start new file mode 100755 index 0000000000..01318689d1 --- /dev/null +++ b/packages/addons/service/minidlna/source/bin/minidlna.start @@ -0,0 +1,36 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2018-present Team LibreELEC +# +# LibreELEC 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. +# +# LibreELEC 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 LibreELEC. If not, see . +################################################################################ + +. /etc/profile + +oe_setup_addon service.minidlna + +if [ ! -f "$ADDON_HOME/config/minidlna.conf" ]; then + mkdir -p $ADDON_HOME/config + cp $ADDON_DIR/config/minidlna.conf $ADDON_HOME/config +fi + +if [ ! -d "$ADDON_HOME/db" ]; then + mkdir -p $ADDON_HOME/db +fi + +chmod a+x $ADDON_DIR/bin/* + +exec $ADDON_DIR/bin/minidlnad -S -f $ADDON_HOME/config/minidlna.conf -p $minidlna_port &>$ADDON_HOME/service.log diff --git a/packages/addons/service/minidlna/source/config/minidlna.conf b/packages/addons/service/minidlna/source/config/minidlna.conf new file mode 100644 index 0000000000..8cb4a4d8e2 --- /dev/null +++ b/packages/addons/service/minidlna/source/config/minidlna.conf @@ -0,0 +1,79 @@ +# set this to the directory you want scanned +# + "A" for audio (eg. media_dir=A,/storage/music) +# + "V" for video (eg. media_dir=V,/storage/videos) +# + "P" for images (eg. media_dir=P,/storage/pictures) +# + "PV" for pictures and video (eg. media_dir=PV,/storage/digital_camera) +media_dir=V,/storage/videos +media_dir=V,/storage/tvshows +media_dir=P,/storage/pictures +media_dir=A,/storage/music + +# set this if you want to customize the name that shows up on your clients +friendly_name=DLNA Server + +# network interfaces to serve, comma delimited (8 interfaces max) +#network_interface=eth0 + +# set this to merge all media_dir base contents into the root container +# note: the default is no +#merge_media_dirs=no + +# set this to change the verbosity of the information that is logged +# each section can use a different level: off, fatal, error, warn, info, or debug +#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn + +# this should be a list of file names to check for when searching for album art +# note: names should be delimited with a forward slash ("/") +album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg + +# set this to no to disable inotify monitoring to automatically discover new files +# note: the default is yes +inotify=yes + +# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO +enable_tivo=no + +# set this to beacon to use legacy broadcast discovery method +# defauts to bonjour if avahi is available +tivo_discovery=bonjour + +# set this to strictly adhere to DLNA standards. +# * This will allow server-side downscaling of very large JPEG images, +# which may hurt JPEG serving performance on (at least) Sony DLNA products. +strict_dlna=no + +# default presentation url is http address on port 80 +#presentation_url=http://www.mylan/index.php + +# notify interval in seconds. default is 895 seconds. +notify_interval=1800 + +# serial and model number the daemon will report to clients +# in its XML description +serial=12345678 +model_number=1 + +# use different container as root of the tree +# possible values: +# + "." - use standard container (this is the default) +# + "B" - "Browse Directory" +# + "M" - "Music" +# + "V" - "Video" +# + "P" - "Pictures" +# + Or, you can specify the ObjectID of your desired root container (eg. 1$F for Music/Playlists) +# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root +#root_container=. + +# always force SortCriteria to this value, regardless of the SortCriteria passed by the client +# note: you can prepend the sort criteria with "!" to alter the titles of the objects so that they +# will be alphanumerically sorted in the order you specify here, to work around clients that do their +# own alphanumeric sorting. +#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title + +# maximum number of simultaneous connections +# note: many clients open several simultaneous connections while streaming +#max_connections=50 + +# enable subtitle support by default on unknown clients. +# note: the default is yes +#enable_subtitles=yes diff --git a/packages/addons/service/minidlna/source/default.py b/packages/addons/service/minidlna/source/default.py new file mode 100644 index 0000000000..a75b598442 --- /dev/null +++ b/packages/addons/service/minidlna/source/default.py @@ -0,0 +1,35 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2018-present Team LibreELEC +# +# LibreELEC 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. +# +# LibreELEC 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 LibreELEC. If not, see . +################################################################################ + +import subprocess +import xbmc +import xbmcaddon + + +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__": + Monitor().waitForAbort() diff --git a/packages/addons/service/minidlna/source/resources/language/English/strings.po b/packages/addons/service/minidlna/source/resources/language/English/strings.po new file mode 100644 index 0000000000..7f9ba3813d --- /dev/null +++ b/packages/addons/service/minidlna/source/resources/language/English/strings.po @@ -0,0 +1,14 @@ +# Kodi Media Center language file +# Addon Name: minidlna +# Addon id: service.minidlna +# Addon Provider: Team LibreELEC +msgid "" +msgstr "" + +msgctxt "#30000" +msgid "Configuration" +msgstr "" + +msgctxt "#30001" +msgid "Port" +msgstr "" diff --git a/packages/addons/service/minidlna/source/resources/settings.xml b/packages/addons/service/minidlna/source/resources/settings.xml new file mode 100644 index 0000000000..5dc0437e50 --- /dev/null +++ b/packages/addons/service/minidlna/source/resources/settings.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/addons/service/minidlna/source/settings-default.xml b/packages/addons/service/minidlna/source/settings-default.xml new file mode 100644 index 0000000000..02b57fb1f8 --- /dev/null +++ b/packages/addons/service/minidlna/source/settings-default.xml @@ -0,0 +1,3 @@ + + + diff --git a/packages/addons/service/minidlna/source/sleep.d/minidlna.power b/packages/addons/service/minidlna/source/sleep.d/minidlna.power new file mode 100644 index 0000000000..0bc5fe9ca6 --- /dev/null +++ b/packages/addons/service/minidlna/source/sleep.d/minidlna.power @@ -0,0 +1,40 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2018-present Team LibreELEC +# +# LibreELEC 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. +# +# LibreELEC 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 LibreELEC. If not, see . +################################################################################ + +. /etc/profile + +oe_setup_addon service.minidlna + +SERVICE="service.minidlna" + +if [ "$RESTART_ON_RESUME" == "true" ] ; then + case "$1" in + pre) + if systemctl is-active "$SERVICE" &>/dev/null ; then + systemctl stop "$SERVICE" + fi + ;; + post) + if systemctl is-enabled "$SERVICE" &>/dev/null ; then + systemctl start "$SERVICE" + fi + ;; + esac +fi diff --git a/packages/addons/service/minidlna/source/system.d/service.minidlna.service b/packages/addons/service/minidlna/source/system.d/service.minidlna.service new file mode 100644 index 0000000000..fad4788058 --- /dev/null +++ b/packages/addons/service/minidlna/source/system.d/service.minidlna.service @@ -0,0 +1,13 @@ +[Unit] +Description=minidlna +After=graphical.target + +[Service] +ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.minidlna/bin/minidlna.start" +TimeoutStopSec=1 +Restart=always +RestartSec=2 +StartLimitInterval=0 + +[Install] +WantedBy=kodi.target