mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
59 Commits
8.2.0
...
libreelec-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dda7270a12 | ||
|
|
1a34d0ad78 | ||
|
|
08ec9e2f68 | ||
|
|
602363bcfc | ||
|
|
191ab596d7 | ||
|
|
cd35e13a04 | ||
|
|
6f41051159 | ||
|
|
52a7c157e5 | ||
|
|
a065ed50b1 | ||
|
|
8e7e78adae | ||
|
|
7219358a10 | ||
|
|
7fe1846de3 | ||
|
|
3eaed78297 | ||
|
|
8adac83b90 | ||
|
|
071ce51ca2 | ||
|
|
a038784590 | ||
|
|
faf6e178ee | ||
|
|
32ca479021 | ||
|
|
0625e3f705 | ||
|
|
9b55d0e858 | ||
|
|
b759d30b1c | ||
|
|
7f89ca5c17 | ||
|
|
8d97dc984d | ||
|
|
7cfdfb28a3 | ||
|
|
17e72d00bf | ||
|
|
35c3078930 | ||
|
|
bbe1c0efff | ||
|
|
0b5a8acf0e | ||
|
|
19662a5e8b | ||
|
|
25aa2cf3bd | ||
|
|
0f15554b24 | ||
|
|
fc1e611a73 | ||
|
|
c505664799 | ||
|
|
62b6bb6bde | ||
|
|
938c524add | ||
|
|
f50336148b | ||
|
|
9f9678d199 | ||
|
|
018ab60699 | ||
|
|
a2900fdacc | ||
|
|
9b8d0d7c14 | ||
|
|
8ecc728f7b | ||
|
|
4acd8796a5 | ||
|
|
a9bf69a09d | ||
|
|
a14fcb506e | ||
|
|
5e5bc0b540 | ||
|
|
4002953f19 | ||
|
|
5bdb65cffa | ||
|
|
e855d1ea11 | ||
|
|
8fba548a46 | ||
|
|
75170db1aa | ||
|
|
79c59908cf | ||
|
|
6285685de7 | ||
|
|
8c39d597f7 | ||
|
|
97fa217f54 | ||
|
|
ab246ebe97 | ||
|
|
4862642f6e | ||
|
|
4ab656fe61 | ||
|
|
bb4e3f354d | ||
|
|
f60c721fa0 |
35
config/addon/xbmc.service.library.xml
Normal file
35
config/addon/xbmc.service.library.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
<import addon="os.libreelec.tv" version="@OS_VERSION@"/>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.service" library="default.py">
|
||||
<provides>@PKG_ADDON_PROVIDES@</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.python.library" library="addon.py">
|
||||
<provides></provides>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@PKG_LONGDESC@
|
||||
</description>
|
||||
<disclaimer>
|
||||
@PKG_DISCLAIMER@
|
||||
</disclaimer>
|
||||
<platform>all</platform>
|
||||
<news>
|
||||
@PKG_ADDON_NEWS@
|
||||
</news>
|
||||
<assets>
|
||||
<icon>resources/icon.png</icon>
|
||||
<fanart>resources/fanart.png</fanart>
|
||||
@PKG_ADDON_SCREENSHOT@
|
||||
</assets>
|
||||
</extension>
|
||||
</addon>
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libconfuse"
|
||||
PKG_VERSION="3.0"
|
||||
PKG_VERSION="3.2"
|
||||
PKG_LICENSE="https://github.com/martinh/libconfuse/blob/master/LICENSE"
|
||||
PKG_SITE="https://github.com/martinh/libconfuse"
|
||||
PKG_URL="https://github.com/martinh/libconfuse/archive/v$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-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 <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pyalsaaudio"
|
||||
PKG_VERSION="0.8.4"
|
||||
PKG_LICENSE="PSF"
|
||||
PKG_SITE="http://larsimmisch.github.io/pyalsaaudio/"
|
||||
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain Python distutilscross:host alsa-lib"
|
||||
PKG_LONGDESC="ALSA bindings"
|
||||
|
||||
make_target() {
|
||||
export LDSHARED="$CC -shared"
|
||||
export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr"
|
||||
python setup.py build --cross-compile
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
python setup.py install --root=$INSTALL --prefix=/usr
|
||||
find $INSTALL/usr/lib -name "*.py" -exec rm -rf "{}" ";"
|
||||
rm -rf $INSTALL/usr/lib/python*/site-packages/*.egg-info \
|
||||
$INSTALL/usr/lib/python*/site-packages/*/tests
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-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 <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="rust"
|
||||
PKG_VERSION="1.20.0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://www.rust-lang.org"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS="toolchain"
|
||||
PKG_SECTION="devel"
|
||||
PKG_LONGDESC="Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety."
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
unpack() {
|
||||
:
|
||||
}
|
||||
|
||||
configure_target() {
|
||||
:
|
||||
}
|
||||
|
||||
make_target() {
|
||||
export CARGO_HOME="$ROOT/$TOOLCHAIN/.cargo"
|
||||
export RUSTUP_HOME="$CARGO_HOME"
|
||||
export PATH="$CARGO_HOME/bin:$PATH"
|
||||
rm -rf "$CARGO_HOME"
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- --no-modify-path -y
|
||||
rustup default "$PKG_VERSION"
|
||||
case "$TARGET_ARCH" in
|
||||
aarch64)
|
||||
RUST_TRIPLE="aarch64-unknown-linux-gnu"
|
||||
;;
|
||||
arm)
|
||||
RUST_TRIPLE="arm-unknown-linux-gnueabihf"
|
||||
;;
|
||||
x86_64)
|
||||
RUST_TRIPLE="x86_64-unknown-linux-gnu"
|
||||
;;
|
||||
esac
|
||||
if [ "$TARGET_ARCH" != "x86_64" ]; then
|
||||
rustup target add "$RUST_TRIPLE"
|
||||
fi
|
||||
|
||||
cat <<EOF >"$CARGO_HOME/config"
|
||||
[target.$RUST_TRIPLE]
|
||||
linker = "$CC"
|
||||
EOF
|
||||
|
||||
cat <<'EOF' >"$CARGO_HOME/env"
|
||||
export CARGO_HOME="$ROOT/$TOOLCHAIN/.cargo"
|
||||
export CARGO_TARGET_DIR="$ROOT/$PKG_BUILD/.$TARGET_NAME"
|
||||
export PATH="$CARGO_HOME/bin:$PATH"
|
||||
export RUSTUP_HOME="$CARGO_HOME"
|
||||
mkdir -p "$CARGO_TARGET_DIR"
|
||||
EOF
|
||||
|
||||
echo "CARGO_BUILD=\"cargo build --release --target $RUST_TRIPLE\"" \
|
||||
>>"$CARGO_HOME/env"
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
@@ -17,13 +17,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libvncserver"
|
||||
PKG_VERSION="0.9.10"
|
||||
PKG_VERSION="0.9.11"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libvnc.github.io/"
|
||||
PKG_URL="https://github.com/LibVNC/libvncserver/archive/LibVNCServer-$PKG_VERSION.tar.gz"
|
||||
PKG_SOURCE_DIR="libvncserver-LibVNCServer-$PKG_VERSION"
|
||||
PKG_DEPENDS_TARGET="toolchain libjpeg-turbo libpng"
|
||||
PKG_DEPENDS_TARGET="toolchain libjpeg-turbo libpng libressl"
|
||||
PKG_SECTION="libs"
|
||||
PKG_SHORTDESC="LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program."
|
||||
PKG_LONGDESC="LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program."
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="p7zip"
|
||||
PKG_VERSION="15.14"
|
||||
PKG_VERSION="16.02"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://p7zip.sourceforge.net/"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="unrar"
|
||||
PKG_VERSION="5.3.11"
|
||||
PKG_VERSION="5.4.5"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="free"
|
||||
PKG_SITE="http://www.rarlab.com"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
8.0.103
|
||||
- once a serial number is in config file then ir_disabled parameter
|
||||
needs to be localized below it (it is not global parameter anymore)
|
||||
|
||||
8.0.102
|
||||
- automatically update driver to latest version on first install
|
||||
show driver version in addon settings
|
||||
|
||||
@@ -27,6 +27,7 @@ bulk_notification=on
|
||||
|
||||
#[U123456789012]
|
||||
#initial_dvb_mode=DVBT
|
||||
#ir_disabled=1
|
||||
|
||||
#[NETWORK]
|
||||
#device=192.168.1.1:0
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="sundtek-mediatv"
|
||||
PKG_VERSION="7.0"
|
||||
PKG_REV="102"
|
||||
PKG_REV="103"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://support.sundtek.com/"
|
||||
|
||||
@@ -136,7 +136,7 @@ if [ -z "$(pidof mediasrv)" ]; then
|
||||
|
||||
if [ "$USE_NET_TUNERS" = "true" -a -n "$DEVICE1_IP" ]; then
|
||||
# delete all network tuner entries
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^[^\[]|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
@@ -168,7 +168,7 @@ if [ -z "$(pidof mediasrv)" ]; then
|
||||
fi
|
||||
else
|
||||
# delete all network tuner entries
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^[^\[]|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
@@ -197,26 +197,26 @@ if [ -z "$(pidof mediasrv)" ]; then
|
||||
[ ! -f $KEYMAP ] && KEYMAP=""
|
||||
|
||||
# remove setttings for this tuner
|
||||
awk -v val="[$SERIAL]" '$0 == val {flag=1; next} /^ir_protocol=|^rcmap=|^initial_dvb_mode=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-types
|
||||
awk -v val="[$SERIAL]" '$0 == val {flag=1; next} /^[^\[]|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-types
|
||||
mv ${SUNDTEK_CONF_TMP}-types $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
|
||||
ADDNEW=true
|
||||
if [ -n "$DVBMODE" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "initial_dvb_mode=$DVBMODE" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
if [ -n "$IRPROT" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "ir_protocol=$IRPROT" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
if [ -n "$KEYMAP" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "rcmap=$KEYMAP" >>$SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
echo "[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
|
||||
[ -n "$DVBMODE" ] && echo "initial_dvb_mode=$DVBMODE" >>$SUNDTEK_CONF_TMP
|
||||
|
||||
if [ "$ENABLE_IR_RECEIVER" = "true" ]; then
|
||||
echo "ir_disabled=0" >>$SUNDTEK_CONF_TMP
|
||||
else
|
||||
echo "ir_disabled=1" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
[ -n "$IRPROT" ] && echo "ir_protocol=$IRPROT" >>$SUNDTEK_CONF_TMP
|
||||
[ -n "$KEYMAP" ] && echo "rcmap=$KEYMAP" >>$SUNDTEK_CONF_TMP
|
||||
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
8.0.102
|
||||
103
|
||||
- Update to 77b33a6
|
||||
|
||||
102
|
||||
- Build with Linux 4.7 RPi libraries
|
||||
|
||||
8.0.101
|
||||
101
|
||||
- Move settings to Kodi
|
||||
|
||||
8.0.100
|
||||
100
|
||||
- Initial addon
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="dispmanx_vnc"
|
||||
PKG_VERSION="78e6673"
|
||||
PKG_REV="102"
|
||||
PKG_VERSION="77b33a6"
|
||||
PKG_REV="103"
|
||||
PKG_ARCH="arm"
|
||||
PKG_ADDON_PROJECTS="RPi RPi2"
|
||||
PKG_LICENSE="OSS"
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
114:
|
||||
116
|
||||
- Update to verson 3.2.27.0
|
||||
- Rename to Emby Server
|
||||
|
||||
115
|
||||
- Update to version 3.2.26.0
|
||||
|
||||
114
|
||||
- Update to version 3.2.17.0
|
||||
- Rebuild libx264, ffmpegx and imagemagick
|
||||
- Use ffmpgex by default
|
||||
|
||||
@@ -17,18 +17,18 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="emby"
|
||||
PKG_VERSION="3.2.17.0"
|
||||
PKG_REV="114"
|
||||
PKG_VERSION="3.2.27.0"
|
||||
PKG_REV="116"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://emby.media"
|
||||
PKG_URL="https://github.com/MediaBrowser/Emby/releases/download/$PKG_VERSION/Emby.Mono.zip"
|
||||
PKG_DEPENDS_TARGET="toolchain ffmpegx imagemagick"
|
||||
PKG_SECTION="service"
|
||||
PKG_SHORTDESC="Emby: a personal media server"
|
||||
PKG_LONGDESC="Emby ($PKG_VERSION) brings your home videos, music, and photos together, automatically converting and streaming your media on-the-fly to any device"
|
||||
PKG_LONGDESC="Emby Server ($PKG_VERSION) brings your home videos, music, and photos together, automatically converting and streaming your media on-the-fly to any device"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="Emby (beta)"
|
||||
PKG_ADDON_NAME="Emby Server"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_ADDON_REQUIRES="tools.mono:0.0.0"
|
||||
PKG_MAINTAINER="Anton Voyl (awiouy)"
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
103
|
||||
- Update to 2.2
|
||||
|
||||
102
|
||||
- Upgrade to 2.1
|
||||
- Update to 2.1
|
||||
|
||||
101
|
||||
- Upgrade to 2.0
|
||||
- Update to 2.0
|
||||
|
||||
100
|
||||
- Initial addon
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="inadyn"
|
||||
PKG_VERSION="2.1"
|
||||
PKG_REV="102"
|
||||
PKG_VERSION="2.2"
|
||||
PKG_REV="103"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="http://troglobit.com/inadyn.html"
|
||||
PKG_URL="https://github.com/troglobit/inadyn/archive/v$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libconfuse libite libressl"
|
||||
PKG_DEPENDS_TARGET="toolchain libconfuse libressl"
|
||||
PKG_SECTION="service/system"
|
||||
PKG_SHORTDESC="Inadyn: a small and simple Dynamic Domain Name System client"
|
||||
PKG_LONGDESC="Inadyn ($PKG_VERSION) is a small and simple Dynamic Domain Name System (DDNS) client with HTTPS support. It is commonly available in many GNU/Linux distributions, used in off-the-shelf routers and Internet gateways to automate the task of keeping your DNS record up to date with any IP address changes from your ISP. It can also be used in installations with redundant (backup) connections to the Internet."
|
||||
|
||||
25
packages/addons/service/librespot/changelog.txt
Normal file
25
packages/addons/service/librespot/changelog.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
107
|
||||
- Update to ddfc28f
|
||||
|
||||
106
|
||||
- Rework code
|
||||
- Display artist and title on track load
|
||||
|
||||
105
|
||||
- Update to 910974e
|
||||
|
||||
104
|
||||
- Switch from ffmpegx to pulseaudio to stream to Kodi
|
||||
- Wait for sound.target
|
||||
|
||||
103
|
||||
- Update system_information_string
|
||||
|
||||
102
|
||||
- Update to aa86ebf
|
||||
|
||||
101
|
||||
- Enable streaming to Kodi
|
||||
|
||||
100
|
||||
- Initial addon
|
||||
BIN
packages/addons/service/librespot/icon/icon.png
Normal file
BIN
packages/addons/service/librespot/icon/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
67
packages/addons/service/librespot/package.mk
Normal file
67
packages/addons/service/librespot/package.mk
Normal file
@@ -0,0 +1,67 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-present Team LibreELEC
|
||||
# Copyright (C) 2017 Shane Meagher (shanemeagher)
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="librespot"
|
||||
PKG_VERSION="ddfc28f"
|
||||
PKG_REV="107"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/plietar/$PKG_NAME/"
|
||||
PKG_URL="https://github.com/plietar/$PKG_NAME/archive/$PKG_VERSION.zip"
|
||||
PKG_DEPENDS_TARGET="toolchain avahi libvorbis pulseaudio pyalsaaudio rust"
|
||||
PKG_SECTION="service"
|
||||
PKG_SHORTDESC="Librespot: play Spotify through LibreELEC using a Spotify app as a remote"
|
||||
PKG_LONGDESC="Librespot ($PKG_VERSION) plays Spotify through LibreELEC using the open source librespot library using a Spotify app as a remote."
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="Librespot"
|
||||
PKG_ADDON_TYPE="xbmc.service.library"
|
||||
PKG_MAINTAINER="Anton Voyl (awiouy)"
|
||||
|
||||
configure_target() {
|
||||
. "$ROOT/$TOOLCHAIN/.cargo/env"
|
||||
export PKG_CONFIG_ALLOW_CROSS=0
|
||||
strip_lto
|
||||
}
|
||||
|
||||
make_target() {
|
||||
cd src
|
||||
$CARGO_BUILD --no-default-features --features "alsa-backend pulseaudio-backend"
|
||||
cd "$ROOT/$PKG_BUILD/.$TARGET_NAME"/*/release
|
||||
$STRIP librespot
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID"
|
||||
cp "$(get_build_dir pyalsaaudio)/.install_pkg/usr/lib/python2.7/site-packages/alsaaudio.so" \
|
||||
"$ADDON_BUILD/$PKG_ADDON_ID"
|
||||
|
||||
mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID/bin"
|
||||
cp "$PKG_BUILD/.$TARGET_NAME"/*/release/librespot \
|
||||
"$ADDON_BUILD/$PKG_ADDON_ID/bin"
|
||||
|
||||
mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID/lib"
|
||||
cp "$(get_build_dir avahi)/avahi-compat-libdns_sd/.libs/libdns_sd.so.1" \
|
||||
"$ADDON_BUILD/$PKG_ADDON_ID/lib"
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
From b0d70bed1d5f3614f0e966c53c3a4898c7b33918 Mon Sep 17 00:00:00 2001
|
||||
From: awiouy <awiouy@gmail.com>
|
||||
Date: Mon, 4 Sep 2017 23:01:38 +0200
|
||||
Subject: [PATCH] use dns-sd instead of mdns for discovery
|
||||
|
||||
---
|
||||
Cargo.lock | 19 +++++--------------
|
||||
Cargo.toml | 2 +-
|
||||
src/discovery.rs | 19 ++++++++++---------
|
||||
src/lib.rs | 2 +-
|
||||
4 files changed, 17 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index d8128db..5f54617 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -277,7 +277,7 @@ dependencies = [
|
||||
"librespot-metadata 0.1.0",
|
||||
"librespot-protocol 0.1.0",
|
||||
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "mdns 0.2.0 (git+https://github.com/plietar/rust-mdns)",
|
||||
+ "dns-sd 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num-bigint 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"portaudio-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -386,20 +386,12 @@ version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
-name = "mdns"
|
||||
-version = "0.2.0"
|
||||
-source = "git+https://github.com/plietar/rust-mdns#c0fc73502d7d752a4ffeb5268a017561405e218c"
|
||||
+name = "dns-sd"
|
||||
+version = "0.1.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
- "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "dns-parser 0.3.2 (git+https://github.com/plietar/dns-parser)",
|
||||
- "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "multimap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "net2 0.2.30 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "nix 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "rand 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "tokio-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1099,7 +1091,6 @@ dependencies = [
|
||||
"checksum magenta 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"
|
||||
"checksum magenta-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"
|
||||
"checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
|
||||
-"checksum mdns 0.2.0 (git+https://github.com/plietar/rust-mdns)" = "<none>"
|
||||
"checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"
|
||||
"checksum mime 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c5ca99d8a021c1687882fd68dca26e601ceff5c26571c7cb41cf4ed60d57cb2d"
|
||||
"checksum mio 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "dbd91d3bfbceb13897065e97b2ef177a09a438cb33612b2d371bf568819a9313"
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index f4e6349..131e4f3 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -36,7 +36,7 @@ futures = "0.1.8"
|
||||
getopts = "0.2.14"
|
||||
hyper = "0.11.2"
|
||||
log = "0.3.5"
|
||||
-mdns = { git = "https://github.com/plietar/rust-mdns" }
|
||||
+dns-sd = "0.1.3"
|
||||
num-bigint = "0.1.35"
|
||||
protobuf = "1.1"
|
||||
rand = "0.3.13"
|
||||
diff --git a/src/discovery.rs b/src/discovery.rs
|
||||
index 3eaa5f0..6f9a4ae 100644
|
||||
--- a/src/discovery.rs
|
||||
+++ b/src/discovery.rs
|
||||
@@ -6,7 +6,7 @@ use futures::sync::mpsc;
|
||||
use futures::{Future, Stream, BoxFuture, Poll, Async};
|
||||
use hyper::server::{Service, NewService, Request, Response, Http};
|
||||
use hyper::{self, Get, Post, StatusCode};
|
||||
-use mdns;
|
||||
+use dns_sd::DNSService;
|
||||
use num_bigint::BigUint;
|
||||
use rand;
|
||||
use std::collections::BTreeMap;
|
||||
@@ -203,7 +203,7 @@ impl NewService for Discovery {
|
||||
|
||||
pub struct DiscoveryStream {
|
||||
credentials: mpsc::UnboundedReceiver<Credentials>,
|
||||
- _svc: mdns::Service,
|
||||
+ _svc: DNSService,
|
||||
task: Box<Future<Item=(), Error=io::Error>>,
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ pub fn discovery(handle: &Handle, config: ConnectConfig, device_id: String)
|
||||
let (discovery, creds_rx) = Discovery::new(config.clone(), device_id);
|
||||
|
||||
let listener = TcpListener::bind(&"0.0.0.0:0".parse().unwrap(), handle)?;
|
||||
- let addr = listener.local_addr()?;
|
||||
+ let port = listener.local_addr().unwrap().port();
|
||||
|
||||
let http = Http::new();
|
||||
let handle_ = handle.clone();
|
||||
@@ -222,12 +222,13 @@ pub fn discovery(handle: &Handle, config: ConnectConfig, device_id: String)
|
||||
Ok(())
|
||||
}));
|
||||
|
||||
- let responder = mdns::Responder::spawn(&handle)?;
|
||||
- let svc = responder.register(
|
||||
- "_spotify-connect._tcp".to_owned(),
|
||||
- config.name,
|
||||
- addr.port(),
|
||||
- &["VERSION=1.0", "CPath=/"]);
|
||||
+ let svc = DNSService::register(Some(&*config.name),
|
||||
+ "_spotify-connect._tcp",
|
||||
+ None,
|
||||
+ None,
|
||||
+ port,
|
||||
+ &["VERSION=1.0", "CPath=/"])
|
||||
+ .unwrap();
|
||||
|
||||
Ok(DiscoveryStream {
|
||||
credentials: creds_rx,
|
||||
diff --git a/src/lib.rs b/src/lib.rs
|
||||
index b9c920e..dfaf5a2 100644
|
||||
--- a/src/lib.rs
|
||||
+++ b/src/lib.rs
|
||||
@@ -13,7 +13,7 @@ extern crate base64;
|
||||
extern crate crypto;
|
||||
extern crate futures;
|
||||
extern crate hyper;
|
||||
-extern crate mdns;
|
||||
+extern crate dns_sd;
|
||||
extern crate num_bigint;
|
||||
extern crate protobuf;
|
||||
extern crate rand;
|
||||
@@ -0,0 +1,110 @@
|
||||
From a20f55c268bf44d6923be4cad6c6fdfecfc5dd8a Mon Sep 17 00:00:00 2001
|
||||
From: awiouy <awiouy@gmail.com>
|
||||
Date: Tue, 12 Sep 2017 09:37:53 +0200
|
||||
Subject: [PATCH] kodi hooks
|
||||
|
||||
---
|
||||
src/player.rs | 25 +++++++++++++++++--------
|
||||
1 file changed, 17 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/player.rs b/src/player.rs
|
||||
index 29380e3..44b9a24 100644
|
||||
--- a/src/player.rs
|
||||
+++ b/src/player.rs
|
||||
@@ -1,6 +1,7 @@
|
||||
use futures::sync::oneshot;
|
||||
use futures::{future, Future};
|
||||
use std::borrow::Cow;
|
||||
+use std::env;
|
||||
use std::mem;
|
||||
use std::sync::mpsc::{RecvError, TryRecvError};
|
||||
use std::thread;
|
||||
@@ -13,7 +14,7 @@ use core::util::{self, SpotifyId, Subfile};
|
||||
use audio_backend::Sink;
|
||||
use audio::{AudioFile, AudioDecrypt};
|
||||
use audio::{VorbisDecoder, VorbisPacket};
|
||||
-use metadata::{FileFormat, Track, Metadata};
|
||||
+use metadata::{Artist, FileFormat, Track, Metadata};
|
||||
use mixer::AudioFilter;
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -215,7 +216,7 @@ impl PlayerInternal {
|
||||
|
||||
None => {
|
||||
self.sink.stop().unwrap();
|
||||
- self.run_onstop();
|
||||
+ info!("onstop 1");
|
||||
|
||||
let old_state = mem::replace(&mut self.state, PlayerState::Stopped);
|
||||
old_state.signal_end_of_track();
|
||||
@@ -227,6 +228,12 @@ impl PlayerInternal {
|
||||
debug!("command={:?}", cmd);
|
||||
match cmd {
|
||||
PlayerCommand::Load(track_id, play, position, end_of_track) => {
|
||||
+ let track = Track::get(&self.session, track_id).wait().unwrap();
|
||||
+ let artist = Artist::get(&self.session, track.artists[0]).wait().unwrap();
|
||||
+ env::set_var("LS_ARTIST", artist.name);
|
||||
+ env::set_var("LS_TITLE", track.name);
|
||||
+ self.run_onstart();
|
||||
+
|
||||
if self.state.is_playing() {
|
||||
self.sink.stop().unwrap();
|
||||
}
|
||||
@@ -235,7 +242,7 @@ impl PlayerInternal {
|
||||
Some(decoder) => {
|
||||
if play {
|
||||
if !self.state.is_playing() {
|
||||
- self.run_onstart();
|
||||
+ info!("onstart 1");
|
||||
}
|
||||
self.sink.start().unwrap();
|
||||
|
||||
@@ -245,7 +252,7 @@ impl PlayerInternal {
|
||||
};
|
||||
} else {
|
||||
if self.state.is_playing() {
|
||||
- self.run_onstop();
|
||||
+ info!("onstop 2");
|
||||
}
|
||||
|
||||
self.state = PlayerState::Paused {
|
||||
@@ -258,7 +265,7 @@ impl PlayerInternal {
|
||||
None => {
|
||||
end_of_track.complete(());
|
||||
if self.state.is_playing() {
|
||||
- self.run_onstop();
|
||||
+ info!("onstop 3");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -279,7 +286,7 @@ impl PlayerInternal {
|
||||
if let PlayerState::Paused { .. } = self.state {
|
||||
self.state.paused_to_playing();
|
||||
|
||||
- self.run_onstart();
|
||||
+ info!("onstart 2");
|
||||
self.sink.start().unwrap();
|
||||
} else {
|
||||
warn!("Player::play called from invalid state");
|
||||
@@ -291,17 +298,19 @@ impl PlayerInternal {
|
||||
self.state.playing_to_paused();
|
||||
|
||||
self.sink.stop().unwrap();
|
||||
- self.run_onstop();
|
||||
+ info!("onstop 4");
|
||||
} else {
|
||||
warn!("Player::pause called from invalid state");
|
||||
}
|
||||
}
|
||||
|
||||
PlayerCommand::Stop => {
|
||||
+ self.run_onstop();
|
||||
+
|
||||
match self.state {
|
||||
PlayerState::Playing { .. } => {
|
||||
self.sink.stop().unwrap();
|
||||
- self.run_onstop();
|
||||
+ info!("onstop 5");
|
||||
self.state = PlayerState::Stopped;
|
||||
}
|
||||
PlayerState::Paused { .. } => {
|
||||
@@ -0,0 +1,28 @@
|
||||
From e9bb269936ea26b1c0c698b8d05aaf68e2e79bcc Mon Sep 17 00:00:00 2001
|
||||
From: awiouy <awiouy@gmail.com>
|
||||
Date: Tue, 12 Sep 2017 09:41:14 +0200
|
||||
Subject: [PATCH] use librespot_sink pulseadio sink
|
||||
|
||||
---
|
||||
src/audio_backend/pulseaudio.rs | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/audio_backend/pulseaudio.rs b/src/audio_backend/pulseaudio.rs
|
||||
index 3b9a09b..ce78062 100644
|
||||
--- a/src/audio_backend/pulseaudio.rs
|
||||
+++ b/src/audio_backend/pulseaudio.rs
|
||||
@@ -23,12 +23,13 @@ impl Open for PulseAudioSink {
|
||||
|
||||
let name = CString::new("librespot").unwrap();
|
||||
let description = CString::new("A spoty client library").unwrap();
|
||||
+ let sink = CString::new("librespot_sink").unwrap();
|
||||
|
||||
let s = unsafe {
|
||||
pa_simple_new(null(), // Use the default server.
|
||||
name.as_ptr(), // Our application's name.
|
||||
PA_STREAM_PLAYBACK,
|
||||
- null(), // Use the default device.
|
||||
+ sink.as_ptr(), // Our sink.
|
||||
description.as_ptr(), // Description of our stream.
|
||||
&ss, // Our sample format.
|
||||
null(), // Use default channel map
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016-2017 Team LibreELEC
|
||||
# Copyright (C) 2017-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
|
||||
@@ -16,13 +16,24 @@
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libite"
|
||||
PKG_VERSION="1.8.3"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/troglobit/libite"
|
||||
PKG_URL="https://github.com/troglobit/libite/archive/v$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="That missing frog DNA you've been looking for"
|
||||
PKG_AUTORECONF="yes"
|
||||
import alsaaudio as alsa
|
||||
import xbmcaddon
|
||||
import xbmcgui
|
||||
|
||||
|
||||
dialog = xbmcgui.Dialog()
|
||||
strings = xbmcaddon.Addon().getLocalizedString
|
||||
while True:
|
||||
pcms = alsa.pcms()[1:]
|
||||
if len(pcms) == 0:
|
||||
dialog.ok(xbmcaddon.Addon().getAddonInfo('name'), strings(30210))
|
||||
break
|
||||
pcmx = dialog.select(strings(30112), pcms)
|
||||
if pcmx == -1:
|
||||
break
|
||||
pcm = pcms[pcmx]
|
||||
xbmcaddon.Addon().setSetting('ls_o', pcm)
|
||||
break
|
||||
del dialog
|
||||
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared"
|
||||
@@ -0,0 +1,2 @@
|
||||
LS_PORT="6666"
|
||||
LS_SINK="librespot_sink"
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
echo -e "play\n$LS_ARTIST\n$LS_TITLE" > "$LS_FIFO"
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
echo -e "stop" > "$LS_FIFO"
|
||||
124
packages/addons/service/librespot/source/bin/librespot.start
Executable file
124
packages/addons/service/librespot/source/bin/librespot.start
Executable file
@@ -0,0 +1,124 @@
|
||||
#!/bin/sh
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-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 <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
activate_card() {
|
||||
if [ -e "/proc/asound/$1" ]; then
|
||||
return
|
||||
fi
|
||||
case "$LIBREELEC_ARCH" in
|
||||
RPi*.arm)
|
||||
if [ "$1" = "ALSA" ]; then
|
||||
dtparam audio=on
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unable to activate card $1 on $LIBREELEC_ARCH"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
init_alsa() {
|
||||
. /etc/os-release
|
||||
|
||||
if [ ! "$(cat /proc/asound/pcm 2> /dev/null)" ]; then
|
||||
case "$LIBREELEC_ARCH" in
|
||||
RPi*.arm)
|
||||
activate_card "ALSA"
|
||||
;;
|
||||
*)
|
||||
echo "Unable to activate an audio interface on $LIBREELEC_ARCH"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$ls_o" in
|
||||
*:CARD=*)
|
||||
card="${ls_o##*:CARD=}"
|
||||
card="${card%%,*}"
|
||||
activate_card "$card"
|
||||
index="$(readlink /proc/asound/$card)"
|
||||
index="${index##*card}"
|
||||
;;
|
||||
hw:*,*)
|
||||
echo "The hw:d,s specification is unreliable, use device:CARD=card instead"
|
||||
index="${ls_o##hw:}"
|
||||
index="${index%%,*}"
|
||||
card="card$index"
|
||||
activate_card "$card"
|
||||
;;
|
||||
*)
|
||||
if [ -n "$ls_o" ]; then
|
||||
echo "Unknown playback device specification $ls_o"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$LIBREELEC_ARCH" in
|
||||
RPi*.arm)
|
||||
[ "$(readlink /proc/asound/ALSA)" == "card$index" ] && [ "$pcm_3" ] &&
|
||||
amixer -c "$index" cset name="PCM Playback Route" "$pcm_3"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
. /etc/profile
|
||||
oe_setup_addon service.librespot
|
||||
|
||||
LIBRESPOT="librespot --cache \"$ADDON_HOME/cache\" \
|
||||
--disable-audio-cache \
|
||||
--name \"Librespot@$HOSTNAME\" \
|
||||
--onstart librespot.onstart \
|
||||
--onstop librespot.onstop"
|
||||
|
||||
if [ -n "$ls_b" -a "$ls_b" != "-" ]; then
|
||||
LIBRESPOT="$LIBRESPOT --bitrate $ls_b"
|
||||
fi
|
||||
|
||||
if [ -n "$ls_p" -a -n "$ls_u" ]; then
|
||||
LIBRESPOT="$LIBRESPOT --disable-discovery \
|
||||
--password \"$ls_p\" \
|
||||
--username \"$ls_u\""
|
||||
fi
|
||||
|
||||
if [ "$ls_O" == "Kodi" ]; then
|
||||
LIBRESPOT="$LIBRESPOT --backend pulseaudio --device-type TV"
|
||||
else
|
||||
init_alsa
|
||||
if [ -n "$ls_o" ]; then
|
||||
LIBRESPOT="$LIBRESPOT --device \"$ls_o\""
|
||||
fi
|
||||
LIBRESPOT="$LIBRESPOT --device-type Speaker"
|
||||
fi
|
||||
|
||||
if [ -z "$(pactl list short modules | grep sink_name=$LS_SINK)" ]; then
|
||||
pactl load-module module-null-sink sink_name="$LS_SINK" > /dev/null
|
||||
fi
|
||||
pactl suspend-sink "$LS_SINK" 1
|
||||
if [ -z "$(pactl list short modules | grep source=$LS_SINK.monitor)" ]; then
|
||||
pactl load-module module-rtp-send source="$LS_SINK.monitor" \
|
||||
destination_ip=127.0.0.1 port="$LS_PORT" source_ip=127.0.0.1 > /dev/null
|
||||
fi
|
||||
|
||||
export LS_FIFO="$ADDON_DIR/rc"
|
||||
|
||||
eval $LIBRESPOT
|
||||
132
packages/addons/service/librespot/source/default.py
Normal file
132
packages/addons/service/librespot/source/default.py
Normal file
@@ -0,0 +1,132 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-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 <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import stat
|
||||
import subprocess
|
||||
import sys
|
||||
import threading
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
import xbmcgui
|
||||
|
||||
PORT = '6666'
|
||||
SINK = 'librespot_sink'
|
||||
|
||||
|
||||
def suspendSink(bit):
|
||||
subprocess.call(['pactl', 'suspend-sink', SINK, bit])
|
||||
|
||||
def systemctl(command):
|
||||
subprocess.call(['systemctl', command, xbmcaddon.Addon().getAddonInfo('id')])
|
||||
|
||||
|
||||
class Controller(threading.Thread):
|
||||
|
||||
FIFO = os.path.join(xbmcaddon.Addon().getAddonInfo('path'), 'rc')
|
||||
|
||||
def __init__(self, player):
|
||||
super(Controller, self).__init__()
|
||||
self.player = player
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
os.unlink(self.FIFO)
|
||||
except OSError:
|
||||
pass
|
||||
os.mkfifo(self.FIFO)
|
||||
while os.path.exists(self.FIFO) and stat.S_ISFIFO(os.stat(self.FIFO).st_mode):
|
||||
with open(self.FIFO, 'r') as fifo:
|
||||
command = fifo.read().splitlines()
|
||||
if len(command) == 0:
|
||||
break
|
||||
elif command[0] == 'play' and len(command) == 3:
|
||||
dialog = xbmcgui.Dialog()
|
||||
dialog.notification(command[1],
|
||||
command[2],
|
||||
icon=xbmcaddon.Addon().getAddonInfo('icon'),
|
||||
sound=False)
|
||||
del dialog
|
||||
self.player.play()
|
||||
elif command[0] == 'stop':
|
||||
self.player.stop()
|
||||
|
||||
def stop(self):
|
||||
try:
|
||||
os.unlink(self.FIFO)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
|
||||
class Player(xbmc.Player):
|
||||
|
||||
ITEM = 'rtp://127.0.0.1:{port}'.format(port=PORT)
|
||||
|
||||
def __init__(self):
|
||||
super(Player, self).__init__(self)
|
||||
self.window = xbmcgui.Window(12006)
|
||||
if self.isPlaying():
|
||||
self.onPlayBackStarted()
|
||||
|
||||
def onPlayBackEnded(self):
|
||||
suspendSink('1')
|
||||
xbmc.sleep(1000)
|
||||
if not self.isPlaying():
|
||||
systemctl('restart')
|
||||
|
||||
def onPlayBackStarted(self):
|
||||
if self.getPlayingFile() != self.ITEM:
|
||||
suspendSink('1')
|
||||
systemctl('stop')
|
||||
|
||||
def onPlayBackStopped(self):
|
||||
systemctl('restart')
|
||||
|
||||
def play(self):
|
||||
if not self.isPlaying() and xbmcaddon.Addon().getSetting('ls_O') == 'Kodi':
|
||||
suspendSink('0')
|
||||
listitem = xbmcgui.ListItem(xbmcaddon.Addon().getAddonInfo('name'))
|
||||
listitem.setArt({'thumb': xbmcaddon.Addon().getAddonInfo('icon')})
|
||||
super(Player, self).play(self.ITEM, listitem)
|
||||
del listitem
|
||||
self.window.show()
|
||||
|
||||
def stop(self):
|
||||
suspendSink('1')
|
||||
if self.isPlaying() and self.getPlayingFile() == self.ITEM:
|
||||
super(Player, self).stop()
|
||||
else:
|
||||
systemctl('restart')
|
||||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def __init__(self, player):
|
||||
super(Monitor, self).__init__(self)
|
||||
self.player = player
|
||||
|
||||
def onSettingsChanged(self):
|
||||
self.player.stop()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
player = Player()
|
||||
controller = Controller(player)
|
||||
controller.start()
|
||||
Monitor(player).waitForAbort()
|
||||
controller.stop()
|
||||
@@ -0,0 +1,76 @@
|
||||
# Kodi Media Center language file
|
||||
# Addon Name: librespot
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30100"
|
||||
msgid "Librespot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30101"
|
||||
msgid "Bit rate"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30102"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30103"
|
||||
msgid "96"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30104"
|
||||
msgid "160"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30105"
|
||||
msgid "320"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30106"
|
||||
msgid "Output"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30107"
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30108"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30109"
|
||||
msgid "Discovery mode (set username and password to disable)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30110"
|
||||
msgid "ALSA"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30111"
|
||||
msgid "Configuration wizard"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30112"
|
||||
msgid "Playback device"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30113"
|
||||
msgid "Playback route"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30114"
|
||||
msgid "auto detect"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30115"
|
||||
msgid "headphone jack"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30116"
|
||||
msgid "HDMI"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30210"
|
||||
msgid "Could not find a playback device"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
<category label="30100" >
|
||||
<setting label="30101" type="labelenum" id="ls_b" lvalues="30102|30103|30104|30105" />
|
||||
<setting label="30106" type="labelenum" id="ls_O" lvalues="ALSA|Kodi" />
|
||||
<setting label="30107" type="text" id="ls_u" />
|
||||
<setting label="30108" type="text" id="ls_p" option="hidden" visible="!eq(-1,)" />
|
||||
<setting label="30109" type="bool" id="ls_d" default="true" enable="false" visible="eq(-1,)|eq(-2,)" />
|
||||
<setting label="30109" type="bool" id="ls_D" default="false" enable="false" visible="!eq(-2,)+!eq(-3,)" />
|
||||
</category>
|
||||
<category label="30110" >
|
||||
<setting label="30106" type="labelenum" id="ls_O" lvalues="ALSA|Kodi" visible="false" />
|
||||
<setting label="30111" type="action" action="RunAddon(service.librespot)" enable="eq(-1,0)" />
|
||||
<setting label="30112" type="text" id="ls_o" default="" enable="eq(-2,0)" />
|
||||
<setting label="30113" type="enum" id="pcm_3" lvalues="30114|30115|30116" enable="eq(-3,0)" visible="eq(-1,default:CARD=ALSA)|eq(-1,sysdefault:CARD=ALSA)" />
|
||||
</category>
|
||||
</settings>
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=librespot
|
||||
After=kodi.service network-online.target sound.target
|
||||
Requires=kodi.service network-online.target sound.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/storage/.kodi/addons/service.librespot/bin/librespot.env
|
||||
ExecStart=/bin/sh /storage/.kodi/addons/service.librespot/bin/librespot.start
|
||||
ExecStopPost=/usr/bin/pactl suspend-sink "$LS_SINK" 1
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
||||
@@ -1,19 +1,31 @@
|
||||
105:
|
||||
109
|
||||
- Update to 5.4.1.6
|
||||
|
||||
108
|
||||
- Update to 5.4.0.201
|
||||
|
||||
107
|
||||
- Update to 5.2.0.224
|
||||
|
||||
106
|
||||
- Update to 5.2.0.215
|
||||
|
||||
105
|
||||
- Update to 5.0.1.1
|
||||
|
||||
104:
|
||||
104
|
||||
- Update to 5.0.0.100
|
||||
|
||||
103:
|
||||
103
|
||||
- Update to 4.8.1.0
|
||||
|
||||
102:
|
||||
102
|
||||
- Update to 4.8.0.495
|
||||
|
||||
101:
|
||||
101
|
||||
- Update to 4.2.1.102
|
||||
- Build static for all projects and architectures
|
||||
- Remove uneeded binaries and libraries
|
||||
|
||||
100:
|
||||
100
|
||||
- Initial release
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="mono"
|
||||
PKG_VERSION="5.0.1.1"
|
||||
PKG_REV="105"
|
||||
PKG_VERSION="5.4.1.6"
|
||||
PKG_REV="109"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.mono-project.com"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
107
|
||||
- Bump p7zip and unrar
|
||||
|
||||
106
|
||||
- Bump screen, fix colors issue
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="system-tools"
|
||||
PKG_VERSION=""
|
||||
PKG_REV="106"
|
||||
PKG_REV="107"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE=""
|
||||
|
||||
@@ -36,3 +36,7 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared \
|
||||
--disable-oggtest \
|
||||
--disable-docs \
|
||||
--disable-examples"
|
||||
|
||||
pre_configure_target() {
|
||||
export CFLAGS="$CFLAGS -fPIC"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ ccode=CN
|
||||
regrev=38
|
||||
mimo_bw_cap=1
|
||||
PM=0
|
||||
nv_by_chip=2 \
|
||||
nv_by_chip=3 \
|
||||
17221 6 nvram_ap6255.txt \
|
||||
17200 4 nvram_ap6330.txt \
|
||||
17209 1 nvram_ap6335.txt
|
||||
|
||||
@@ -6,6 +6,7 @@ ACTION!="add", GOTO="end"
|
||||
SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa962", GOTO="begin"
|
||||
SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", GOTO="begin"
|
||||
SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4335", GOTO="begin"
|
||||
SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa9bf", GOTO="begin"
|
||||
GOTO="end"
|
||||
LABEL="begin"
|
||||
### Broadcom bcm43362/bcm20710a1 bluetooth device
|
||||
@@ -20,6 +21,10 @@ ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", \
|
||||
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4335", \
|
||||
ENV{brcm_device}="bcm4335c0"
|
||||
|
||||
### Broadcom bcm4345c0 bluetooth device
|
||||
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa9bf", \
|
||||
ENV{brcm_device}="bcm4345c0"
|
||||
|
||||
ENV{brcm_device}=="bcm*", ACTION=="add", \
|
||||
TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware@$env{brcm_device}.service"
|
||||
LABEL="end"
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="wlan-firmware-aml"
|
||||
PKG_VERSION="b74369c"
|
||||
PKG_VERSION="5f5fae7"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
PKG_SITE="http://openlinux.amlogic.com:8000/download/ARM/wifi/"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_URL="https://github.com/openwetek/wlan-firmware-aml/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="firmware"
|
||||
PKG_SHORTDESC="wlan-firmware-aml: Firmware for various WLAN chips used in the devices based on Amlogic SoCs"
|
||||
@@ -37,10 +37,17 @@ make_target() {
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/firmware/brcm
|
||||
|
||||
# AP6255
|
||||
cp -PR bcm_ampak/config/6255/fw_bcm43455c0_*.bin $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/6255/nvram.txt $INSTALL/usr/lib/firmware/brcm/nvram_ap6255.txt
|
||||
cp -P bcm_ampak/config/6255/BT/BCM4345C0.hcd $INSTALL/usr/lib/firmware/brcm/bcm4345c0.hcd
|
||||
|
||||
# AP6330
|
||||
cp -PR bcm_ampak/config/AP6330/Wi-Fi/fw_bcm40183b2*.bin $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/AP6330/Wi-Fi/nvram_ap6330.txt $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/AP6330/BT/bcm40183b2.hcd $INSTALL/usr/lib/firmware/brcm
|
||||
|
||||
# AP6335
|
||||
cp -PR bcm_ampak/config/6335/fw_bcm4339a0_*.bin $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/6335/nvram.txt $INSTALL/usr/lib/firmware/brcm/nvram_ap6335.txt
|
||||
cp -P bcm_ampak/config/6335/BT/bcm4335c0.hcd $INSTALL/usr/lib/firmware/brcm
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="audiodecoder.asap"
|
||||
PKG_VERSION="e56a821"
|
||||
PKG_VERSION="6c13ee6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="audiodecoder.upse"
|
||||
PKG_VERSION="23a5430"
|
||||
PKG_VERSION="de58ded"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="audiodecoder.usf"
|
||||
PKG_VERSION="ce4b75c"
|
||||
PKG_VERSION="99c17c9"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="audiodecoder.wsr"
|
||||
PKG_VERSION="746fcbb"
|
||||
PKG_VERSION="ac3e274"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="inputstream.adaptive"
|
||||
PKG_VERSION="f23ba39"
|
||||
PKG_VERSION="f2904b5"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/liberty-developer/inputstream.adaptive/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_URL="https://github.com/peak3d/inputstream.adaptive/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain kodi-platform"
|
||||
PKG_SECTION=""
|
||||
PKG_SHORTDESC="inputstream.adaptive"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.hts"
|
||||
PKG_VERSION="4e2a833"
|
||||
PKG_VERSION="d0b6f1f"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.iptvsimple"
|
||||
PKG_VERSION="d782816"
|
||||
PKG_VERSION="2a649d7"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.mythtv"
|
||||
PKG_VERSION="c4259bf"
|
||||
PKG_VERSION="91cd558"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.octonet"
|
||||
PKG_VERSION="ff2d4a7"
|
||||
PKG_VERSION="d4077a1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.vdr.vnsi"
|
||||
PKG_VERSION="4ed7d60"
|
||||
PKG_VERSION="fa1e4f5"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.vuplus"
|
||||
PKG_VERSION="25c4883"
|
||||
PKG_VERSION="c1e6a22"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="visualization.pictureit"
|
||||
PKG_VERSION="66f88ff"
|
||||
PKG_VERSION="8eb74a6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -228,7 +228,6 @@ PKG_CMAKE_OPTS_TARGET="-DNATIVEPREFIX=$ROOT/$TOOLCHAIN \
|
||||
$KODI_OPENMAX \
|
||||
$KODI_VDPAU \
|
||||
$KODI_VAAPI \
|
||||
$KODI_JOYSTICK \
|
||||
$KODI_CEC \
|
||||
$KODI_XORG \
|
||||
$KODI_SAMBA \
|
||||
|
||||
@@ -67,7 +67,7 @@ PKG_CONFIGURE_OPTS_TARGET="py_cv_mod_gtk_=yes \
|
||||
--disable-manpages \
|
||||
--disable-xmltoman \
|
||||
--disable-tests \
|
||||
--disable-compat-libdns_sd \
|
||||
--enable-compat-libdns_sd \
|
||||
--disable-compat-howl \
|
||||
--with-xml=expat \
|
||||
--with-avahi-user=avahi \
|
||||
@@ -101,6 +101,7 @@ post_makeinstall_target() {
|
||||
rm -f $INSTALL/usr/bin/avahi-bookmarks
|
||||
rm -f $INSTALL/usr/bin/avahi-publish*
|
||||
rm -f $INSTALL/usr/bin/avahi-resolve*
|
||||
rm -f $INSTALL/usr/lib/libdns_sd*
|
||||
|
||||
mkdir -p $INSTALL/usr/share/services
|
||||
cp -P $PKG_DIR/default.d/*.conf $INSTALL/usr/share/services
|
||||
|
||||
@@ -43,6 +43,10 @@ if [ "$MEDIACENTER" = "kodi" ]; then
|
||||
pycrypto"
|
||||
# other packages
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET LibreELEC-settings \
|
||||
xmlstarlet \
|
||||
peripheral.joystick"
|
||||
xmlstarlet"
|
||||
|
||||
if [ "$JOYSTICK_SUPPORT" = "yes" ]; then
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET peripheral.joystick"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user