mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
137 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be17d1a881 | ||
|
|
aac8699972 | ||
|
|
306f95e759 | ||
|
|
d9d3cc772f | ||
|
|
87f0d3fe32 | ||
|
|
778feb5727 | ||
|
|
fe5fadab7f | ||
|
|
bd5fdddff9 | ||
|
|
2a272e45bb | ||
|
|
1e5a905006 | ||
|
|
ccf5126912 | ||
|
|
ff37e94538 | ||
|
|
6b700cec52 | ||
|
|
fd01286926 | ||
|
|
b5595a3425 | ||
|
|
22e3b2072c | ||
|
|
15b9a35125 | ||
|
|
bcb40164ef | ||
|
|
fba0a0a555 | ||
|
|
a9ba436900 | ||
|
|
62b2f7d853 | ||
|
|
320955e602 | ||
|
|
c4b8e0fba5 | ||
|
|
bcbad5f53f | ||
|
|
e8cbfd8544 | ||
|
|
7eef75bce3 | ||
|
|
156db87de6 | ||
|
|
f54de24693 | ||
|
|
6a668a4d6e | ||
|
|
3471983723 | ||
|
|
84288dfd96 | ||
|
|
c49c61f114 | ||
|
|
9fa76ef360 | ||
|
|
cc3e84c487 | ||
|
|
91854b56c0 | ||
|
|
e952674ef6 | ||
|
|
50d1681bcf | ||
|
|
78c5f3d37e | ||
|
|
42662da0ce | ||
|
|
e2f1868f5d | ||
|
|
5596ef7449 | ||
|
|
5cda64d6a1 | ||
|
|
c7625eb403 | ||
|
|
2d0bc2770d | ||
|
|
d9507c5d1a | ||
|
|
1d7e1cafa7 | ||
|
|
1d5ceba87c | ||
|
|
703c4ddaa0 | ||
|
|
5955423a1b | ||
|
|
7dc2832dfd | ||
|
|
a222d5d8db | ||
|
|
6616e9995a | ||
|
|
05b8058c98 | ||
|
|
3ab9e80fe7 | ||
|
|
d20c7bc0e9 | ||
|
|
e529657f48 | ||
|
|
a1100ce859 | ||
|
|
646e420c94 | ||
|
|
123b5db2ca | ||
|
|
5cba9a8374 | ||
|
|
967bb6328a | ||
|
|
1c61a2c625 | ||
|
|
a80cc28745 | ||
|
|
0e5a2c5f36 | ||
|
|
21c886f95f | ||
|
|
43ba8f3c85 | ||
|
|
4056094b51 | ||
|
|
db212b01df | ||
|
|
40e7ac1d3a | ||
|
|
b3c3f73f6c | ||
|
|
7a29858847 | ||
|
|
30c64498ae | ||
|
|
beafeb58fb | ||
|
|
c13b14ca00 | ||
|
|
ca7f0f6535 | ||
|
|
17f466aaea | ||
|
|
f8b66fc45a | ||
|
|
8199f35673 | ||
|
|
9f5368e6ea | ||
|
|
4aa47ed279 | ||
|
|
ce231f0700 | ||
|
|
cfc89de6a7 | ||
|
|
153f3d3658 | ||
|
|
b17719236c | ||
|
|
e5dc90f3c7 | ||
|
|
d3510b5a96 | ||
|
|
3fefed3376 | ||
|
|
f8c86fe50e | ||
|
|
e2059c7d5a | ||
|
|
6049513bc8 | ||
|
|
10f86efaab | ||
|
|
1eb1667808 | ||
|
|
34bc314c90 | ||
|
|
68d7776712 | ||
|
|
0039390c4c | ||
|
|
cecb05a5d7 | ||
|
|
f54d9091c3 | ||
|
|
645af48ea2 | ||
|
|
e0bf72d476 | ||
|
|
db017e9137 | ||
|
|
3739f6189e | ||
|
|
97a309f14f | ||
|
|
5364e44eec | ||
|
|
989622fe32 | ||
|
|
9f92e69844 | ||
|
|
663ffedb05 | ||
|
|
0d5bde5cb1 | ||
|
|
1fef9f9329 | ||
|
|
4902c19a46 | ||
|
|
04407050ef | ||
|
|
fe446d0370 | ||
|
|
86c09012b9 | ||
|
|
4ff4d2ca74 | ||
|
|
3e890efe59 | ||
|
|
cc1fd2257d | ||
|
|
8a1103d445 | ||
|
|
f68e3e72fa | ||
|
|
cd9403962b | ||
|
|
e05b618ec9 | ||
|
|
03253f885c | ||
|
|
074a450813 | ||
|
|
33dfe1b85f | ||
|
|
25f7154217 | ||
|
|
013b530345 | ||
|
|
a25dd368e4 | ||
|
|
16919f74df | ||
|
|
043b334218 | ||
|
|
2a66340077 | ||
|
|
988af35036 | ||
|
|
e82d2c8db1 | ||
|
|
5cb676e1c6 | ||
|
|
e994d9ca75 | ||
|
|
2a764c82c6 | ||
|
|
01bc69bfd0 | ||
|
|
797bada893 | ||
|
|
fceeb1b2e3 | ||
|
|
9d3282937c |
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="krb5"
|
||||
PKG_VERSION="1.17-final"
|
||||
PKG_SHA256="bd170f6aadea5d753cc9a93a3a915a5bde07bd3d294a00651ed647dcf964e867"
|
||||
PKG_VERSION="1.18.1-final"
|
||||
PKG_SHA256="5d11bfcc8151a8a752177636e10cdcc6ace88407662949b5f031dd44ec42ffc7"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://web.mit.edu/kerberos/"
|
||||
PKG_URL="https://github.com/krb5/krb5/archive/krb5-$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="lttng-ust"
|
||||
PKG_VERSION="2.10.4"
|
||||
PKG_SHA256="9df458fbfeac5a380672751decbd9b57356075acbfe106cb8820e803a94a0d96"
|
||||
PKG_VERSION="2.12.0"
|
||||
PKG_SHA256="ae9a7c7a9730deabacc6c690dcf1ba1c988f7f474326ba33d30b3f339d27a059"
|
||||
PKG_LICENSE="LGPLv2.1"
|
||||
PKG_SITE="https://lttng.org/"
|
||||
PKG_URL="https://github.com/lttng/lttng-ust/archive/v$PKG_VERSION.tar.gz"
|
||||
@@ -11,7 +11,7 @@ PKG_DEPENDS_TARGET="toolchain userspace-rcu"
|
||||
PKG_LONGDESC="LTTng is an open source tracing framework for Linux"
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-man-pages"
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-man-pages --disable-numa"
|
||||
|
||||
makeinstall_target() {
|
||||
make install DESTDIR=$INSTALL $PKG_MAKEINSTALL_OPTS_TARGET
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="userspace-rcu"
|
||||
PKG_VERSION="0.11.1"
|
||||
PKG_SHA256="a0ed8995edfbeac5f5eb2f152a8f3654040ecfc99a746bfe3da3bccf435b7d5d"
|
||||
PKG_VERSION="0.12.0"
|
||||
PKG_SHA256="6b0cdee07a651c56daea8d03285f379afab898ebc83c785a23927320e45a3012"
|
||||
PKG_LICENSE="LGPLv2.1"
|
||||
PKG_SITE="http://liburcu.org"
|
||||
PKG_URL="https://github.com/urcu/userspace-rcu/archive/v$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="imagemagick"
|
||||
PKG_VERSION="7.0.8-60"
|
||||
PKG_SHA256="a0ffa621051aa66b4eec919761d1a741aefea8b993acc2425e3ed5855c540156"
|
||||
PKG_VERSION="7.0.10-9"
|
||||
PKG_SHA256="ea08c7379b0ce40217656699e664d51a93eac819dde778f50ca457b110ffc5e3"
|
||||
PKG_LICENSE="http://www.imagemagick.org/script/license.php"
|
||||
PKG_SITE="http://www.imagemagick.org/"
|
||||
PKG_URL="https://github.com/ImageMagick/ImageMagick/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="apache-ant"
|
||||
PKG_VERSION="1.10.6"
|
||||
PKG_SHA256="a4adf371696089e1730d4f55fd4d0c6f3784dea1eee402fcc981f2330f8d6fc1"
|
||||
PKG_VERSION="1.10.7"
|
||||
PKG_SHA256="c8d68b396d9e44b49668bafe0c82f8c89497915254b5395d73d6f6e41d7a0e25"
|
||||
PKG_LICENSE="Apache License 2.0"
|
||||
PKG_SITE="https://ant.apache.org/"
|
||||
PKG_URL="https://archive.apache.org/dist/ant/source/${PKG_NAME}-${PKG_VERSION}-src.tar.xz"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
102
|
||||
- support for latest Chrome
|
||||
|
||||
101
|
||||
- fix download url
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
PKG_NAME="chrome"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="101"
|
||||
PKG_REV="102"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="Custom"
|
||||
PKG_SITE="http://www.google.com/chrome"
|
||||
@@ -56,25 +56,26 @@ addon() {
|
||||
cp -PL $(get_build_dir harfbuzz)/.$TARGET_NAME/src/.libs/libharfbuzz-icu.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libatk-bridge
|
||||
cp -PL $(get_build_dir at-spi2-atk)/.$TARGET_NAME/atk-adaptor/libatk-bridge-2.0.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir at-spi2-atk)/.$TARGET_NAME/atk-adaptor/libatk-bridge-2.0.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libatspi
|
||||
cp -PL $(get_build_dir at-spi2-core)/.$TARGET_NAME/atspi/libatspi.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir at-spi2-core)/.$TARGET_NAME/atspi/libatspi.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libcups
|
||||
cp -PL $(get_build_dir cups)/cups/libcups.so.2 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libxcb
|
||||
cp -PL $(get_build_dir chrome-libxcb)/.$TARGET_NAME/src/.libs/libxcb.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir chrome-libxcb)/.$TARGET_NAME/src/.libs/libxcb.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir chrome-libxcb)/.$TARGET_NAME/src/.libs/libxcb-dri3.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libXcomposite
|
||||
cp -PL $(get_build_dir chrome-libXcomposite)/.$TARGET_NAME/src/.libs/libXcomposite.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir chrome-libXcomposite)/.$TARGET_NAME/src/.libs/libXcomposite.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libXcursor
|
||||
cp -PL $(get_build_dir libXcursor)/.$TARGET_NAME/src/.libs/libXcursor.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir libXcursor)/.$TARGET_NAME/src/.libs/libXcursor.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libXdamage
|
||||
cp -PL $(get_build_dir chrome-libXdamage)/.$TARGET_NAME/src/.libs/libXdamage.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir chrome-libXdamage)/.$TARGET_NAME/src/.libs/libXdamage.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libXfixes
|
||||
cp -PL $(get_build_dir chrome-libXfixes)/.$TARGET_NAME/src/.libs/libXfixes.so.3 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
@@ -86,7 +87,7 @@ addon() {
|
||||
cp -PL $(get_build_dir chrome-libXrender)/.$TARGET_NAME/src/.libs/libXrender.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libxss
|
||||
cp -PL $(get_build_dir libxss)/.$TARGET_NAME/src/.libs/libXss.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir libxss)/.$TARGET_NAME/src/.libs/libXss.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# libXtst
|
||||
cp -PL $(get_build_dir chrome-libXtst)/.$TARGET_NAME/src/.libs/libXtst.so.6 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
@@ -98,5 +99,4 @@ addon() {
|
||||
|
||||
# unclutter
|
||||
cp -P $(get_build_dir unclutter)/.install_pkg/usr/bin/unclutter $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
107
|
||||
- Update ImageMagick to 7.0.10-9
|
||||
|
||||
106
|
||||
- Update to 4.4.2.0
|
||||
|
||||
105
|
||||
- Update to 4.2.1.0
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="emby4"
|
||||
PKG_VERSION="4.2.1.0"
|
||||
PKG_SHA256="684a47c36700063141257c6325bbb2519ba11a7c7711e54e128d96f30adecdff"
|
||||
PKG_REV="105"
|
||||
PKG_VERSION="4.4.2.0"
|
||||
PKG_SHA256="36c65cfbd41ec83d415c098384032cd414da4f670e77013da7eb901bd16afe27"
|
||||
PKG_REV="107"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="prop."
|
||||
PKG_SITE="http://emby.media"
|
||||
@@ -13,7 +13,7 @@ PKG_SOURCE_DIR="system"
|
||||
PKG_DEPENDS_TARGET="toolchain imagemagick"
|
||||
PKG_SECTION="service"
|
||||
PKG_SHORTDESC="Emby Server: a personal media server"
|
||||
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_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_TOOLCHAIN="manual"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
. /etc/profile
|
||||
oe_setup_addon service.emby4
|
||||
|
||||
LD_PRELOAD="$ADDON_DIR/lib/libMagickCore-7.Q16HDRI.so.6 \
|
||||
LD_PRELOAD="$ADDON_DIR/lib/libMagickCore-7.Q16HDRI.so.7 \
|
||||
$ADDON_DIR/lib/CORE_RL_Wand_.so" \
|
||||
nice -n "$emby_nice" \
|
||||
le_dotnet $ADDON_DIR/emby/EmbyServer.dll \
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
[Unit]
|
||||
Description=Emby 4 - streaming server
|
||||
Documentation=http://emby.media
|
||||
Wants=kodi.service
|
||||
After=kodi.service
|
||||
Wants=multi-user.target
|
||||
After=multi-user.target
|
||||
Conflicts=service.emby.service
|
||||
|
||||
[Service]
|
||||
@@ -10,4 +10,4 @@ ExecStart=/bin/sh /storage/.kodi/addons/service.emby4/bin/emby4.start
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.service
|
||||
WantedBy=mult-user.target
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
123
|
||||
- Handle non ascii track information
|
||||
|
||||
122
|
||||
- Improve track information: fanart, podcast
|
||||
- Improve settings: autoplay, name, RTP port
|
||||
- Drop system.d
|
||||
|
||||
121
|
||||
- Update to 66f8a98 (2020-02-26)
|
||||
- Gapless playback
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
PKG_NAME="librespot"
|
||||
PKG_VERSION="66f8a98ad2f5bf35be4daecd788dad6f0d87fb7c"
|
||||
PKG_SHA256="b027c983341aa53d940412d5624cfe91392958ea9836ba597289680a4430b253"
|
||||
PKG_VERSION_DATE="2020-02-26"
|
||||
PKG_REV="121"
|
||||
PKG_VERSION_DATE="2020-02-27"
|
||||
PKG_REV="123"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/librespot-org/librespot/"
|
||||
@@ -24,20 +24,16 @@ PKG_ADDON_REQUIRES="script.module.requests:0.0.0"
|
||||
PKG_MAINTAINER="Anton Voyl (awiouy)"
|
||||
|
||||
make_target() {
|
||||
. "$(get_build_dir rust)/cargo/env"
|
||||
. $(get_build_dir rust)/cargo/env
|
||||
cargo build \
|
||||
--release \
|
||||
--no-default-features \
|
||||
--features "alsa-backend pulseaudio-backend with-dns-sd with-vorbis"
|
||||
"$STRIP" $PKG_BUILD/.$TARGET_NAME/*/release/librespot
|
||||
--features "alsa-backend pulseaudio-backend with-vorbis"
|
||||
$STRIP $PKG_BUILD/.$TARGET_NAME/*/release/librespot
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p "$ADDON_BUILD/$PKG_ADDON_ID/bin"
|
||||
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"
|
||||
$ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
commit 0623a601115f5c62d2b30645a85d9496546d5cba
|
||||
commit 93ad8ce6f94e51bb14547ddf9e7a234c41adc266
|
||||
Author: awiouy <awiouy@gmail.com>
|
||||
Date: Tue Dec 3 23:21:35 2019 +0100
|
||||
|
||||
@@ -42,40 +42,27 @@ index 0f71110..931167d 100644
|
||||
}
|
||||
}
|
||||
diff --git a/playback/src/player.rs b/playback/src/player.rs
|
||||
index ef7484c..5b56782 100644
|
||||
index ef7484c..22ecb2c 100644
|
||||
--- a/playback/src/player.rs
|
||||
+++ b/playback/src/player.rs
|
||||
@@ -4,7 +4,8 @@ use futures::{future, Async, Future, Poll, Stream};
|
||||
use std;
|
||||
use std::borrow::Cow;
|
||||
use std::cmp::max;
|
||||
-use std::io::{Read, Result, Seek, SeekFrom};
|
||||
+use std::fs::OpenOptions;
|
||||
+use std::io::{Read, Result, Seek, SeekFrom, Write};
|
||||
use std::mem;
|
||||
use std::thread;
|
||||
use std::time::{Duration, Instant};
|
||||
@@ -1415,6 +1416,12 @@ impl PlayerInternal {
|
||||
@@ -1415,6 +1415,10 @@ impl PlayerInternal {
|
||||
}
|
||||
}
|
||||
|
||||
+ fn notify_kodi(&mut self, event: String) {
|
||||
+ // println!("Librespot fifo = {}", event);
|
||||
+ let mut file = OpenOptions::new().write(true).open("/tmp/librespot").unwrap();
|
||||
+ writeln!(&mut file, "{}", event).unwrap();
|
||||
+ eprintln!("@{}", event);
|
||||
+ }
|
||||
+
|
||||
fn send_event(&mut self, event: PlayerEvent) {
|
||||
let mut index = 0;
|
||||
while index < self.event_senders.len() {
|
||||
@@ -1425,6 +1432,17 @@ impl PlayerInternal {
|
||||
@@ -1425,6 +1429,16 @@ impl PlayerInternal {
|
||||
}
|
||||
}
|
||||
}
|
||||
+ if self.config.notify_kodi {
|
||||
+ use PlayerEvent::*;
|
||||
+ match event {
|
||||
+ Paused { .. } => self.notify_kodi("Paused".to_string()),
|
||||
+ Playing {track_id, .. } => self.notify_kodi(["Playing",
|
||||
+ &track_id.audio_type.to_string(),
|
||||
+ &track_id.to_base62()].join(" ")),
|
||||
@@ -87,7 +74,7 @@ index ef7484c..5b56782 100644
|
||||
|
||||
fn load_track(
|
||||
diff --git a/src/main.rs b/src/main.rs
|
||||
index 70a2dff..3e63308 100644
|
||||
index f749a52..5a9f75d 100644
|
||||
--- a/src/main.rs
|
||||
+++ b/src/main.rs
|
||||
@@ -171,6 +171,11 @@ fn setup(args: &[String]) -> Setup {
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
From 389276e5d361da5f2a2116d11724c815ce4b6ec8 Mon Sep 17 00:00:00 2001
|
||||
From: Konstantin Seiler <list@kseiler.de>
|
||||
Date: Wed, 11 Mar 2020 13:49:52 +1100
|
||||
Subject: [PATCH] Enable pulseaudio device names
|
||||
|
||||
---
|
||||
playback/src/audio_backend/pulseaudio.rs | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/playback/src/audio_backend/pulseaudio.rs b/playback/src/audio_backend/pulseaudio.rs
|
||||
index e844b0d6..8a833d65 100644
|
||||
--- a/playback/src/audio_backend/pulseaudio.rs
|
||||
+++ b/playback/src/audio_backend/pulseaudio.rs
|
||||
@@ -12,6 +12,7 @@ pub struct PulseAudioSink {
|
||||
ss: pa_sample_spec,
|
||||
name: CString,
|
||||
desc: CString,
|
||||
+ device: Option<CString>,
|
||||
}
|
||||
|
||||
fn call_pulseaudio<T, F, FailCheck>(
|
||||
@@ -56,10 +57,6 @@ impl Open for PulseAudioSink {
|
||||
fn open(device: Option<String>) -> PulseAudioSink {
|
||||
debug!("Using PulseAudio sink");
|
||||
|
||||
- if device.is_some() {
|
||||
- panic!("pulseaudio sink does not support specifying a device name");
|
||||
- }
|
||||
-
|
||||
let ss = pa_sample_spec {
|
||||
format: PA_SAMPLE_S16LE,
|
||||
channels: 2, // stereo
|
||||
@@ -74,6 +71,7 @@ impl Open for PulseAudioSink {
|
||||
ss: ss,
|
||||
name: name,
|
||||
desc: description,
|
||||
+ device: device.and_then(|s| CString::new(s).ok()),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,13 +79,17 @@ impl Open for PulseAudioSink {
|
||||
impl Sink for PulseAudioSink {
|
||||
fn start(&mut self) -> io::Result<()> {
|
||||
if self.s == null_mut() {
|
||||
+ let device = match &self.device {
|
||||
+ None => null(),
|
||||
+ Some(device) => device.as_ptr(),
|
||||
+ };
|
||||
self.s = call_pulseaudio(
|
||||
|err| unsafe {
|
||||
pa_simple_new(
|
||||
null(), // Use the default server.
|
||||
self.name.as_ptr(), // Our application's name.
|
||||
PA_STREAM_PLAYBACK,
|
||||
- null(), // Use the default device.
|
||||
+ device,
|
||||
self.desc.as_ptr(), // desc of our stream.
|
||||
&self.ss, // Our sample format.
|
||||
null(), // Use default channel map
|
||||
@@ -1,27 +0,0 @@
|
||||
commit 88ba7c3ad879e784ce55714c2c834911b2573ce1
|
||||
Author: awiouy <awiouy@gmail.com>
|
||||
Date: Tue Dec 3 23:22:55 2019 +0100
|
||||
|
||||
Use own pulseaudio sink
|
||||
|
||||
diff --git a/playback/src/audio_backend/pulseaudio.rs b/playback/src/audio_backend/pulseaudio.rs
|
||||
index e844b0d..0320f65 100644
|
||||
--- a/playback/src/audio_backend/pulseaudio.rs
|
||||
+++ b/playback/src/audio_backend/pulseaudio.rs
|
||||
@@ -80,6 +80,7 @@ impl Open for PulseAudioSink {
|
||||
|
||||
impl Sink for PulseAudioSink {
|
||||
fn start(&mut self) -> io::Result<()> {
|
||||
+ let sink = CString::new("librespot_sink").unwrap();
|
||||
if self.s == null_mut() {
|
||||
self.s = call_pulseaudio(
|
||||
|err| unsafe {
|
||||
@@ -87,7 +88,7 @@ impl Sink for PulseAudioSink {
|
||||
null(), // Use the default server.
|
||||
self.name.as_ptr(), // Our application's name.
|
||||
PA_STREAM_PLAYBACK,
|
||||
- null(), // Use the default device.
|
||||
+ sink.as_ptr(), // Our sink.
|
||||
self.desc.as_ptr(), // desc of our stream.
|
||||
&self.ss, // Our sample format.
|
||||
null(), // Use default channel map
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
. /etc/profile
|
||||
oe_setup_addon service.librespot
|
||||
|
||||
PORT="6666"
|
||||
SINK_NAME="librespot_sink"
|
||||
|
||||
if ! pactl list modules short | grep "sink_name=$SINK_NAME"; then
|
||||
pactl load-module module-null-sink sink_name="$SINK_NAME" > /dev/null
|
||||
fi
|
||||
if ! pactl list modules short | grep "source=$SINK_NAME"; then
|
||||
pactl load-module module-rtp-send source="$SINK_NAME.monitor" \
|
||||
destination_ip=127.0.0.1 port="$PORT" source_ip=127.0.0.1 > /dev/null
|
||||
fi
|
||||
pactl suspend-sink "$SINK_NAME" 1
|
||||
|
||||
LIBRESPOT="librespot \
|
||||
--backend pulseaudio \
|
||||
--bitrate 320 \
|
||||
--cache \"$ADDON_HOME/cache\" \
|
||||
--device-type TV \
|
||||
--disable-audio-cache \
|
||||
--name \"Kodi ($HOSTNAME)\" \
|
||||
--notify-kodi"
|
||||
|
||||
if [ "$ls_a" = "true" -a -n "$ls_p" -a -n "$ls_u" ]; then
|
||||
LIBRESPOT="$LIBRESPOT \
|
||||
--disable-discovery \
|
||||
--password \"$ls_p\" \
|
||||
--username \"$ls_u\""
|
||||
fi
|
||||
|
||||
eval $LIBRESPOT
|
||||
@@ -1,240 +1,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
import base64
|
||||
import os
|
||||
import stat
|
||||
import subprocess
|
||||
import threading
|
||||
import time
|
||||
import requests
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
import xbmcgui
|
||||
import sys
|
||||
|
||||
ADDON = xbmcaddon.Addon()
|
||||
ADDON_ID = ADDON.getAddonInfo('id')
|
||||
ADDON_NAME = ADDON.getAddonInfo('name')
|
||||
FIFO = '/tmp/librespot'
|
||||
LOG_LEVEL = xbmc.LOGNOTICE
|
||||
LOG_MESSAGE = ADDON.getAddonInfo('name') + ': {}'
|
||||
SINK_NAME = "librespot_sink"
|
||||
STREAM_CODEC = 'pcm_s16be'
|
||||
STREAM_PORT = '6666'
|
||||
STREAM_URL = 'rtp://127.0.0.1:{}'.format(STREAM_PORT)
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), 'resources', 'lib'))
|
||||
|
||||
from ls_monitor import Monitor as Monitor
|
||||
|
||||
def log(message):
|
||||
xbmc.log(LOG_MESSAGE.format(message), LOG_LEVEL)
|
||||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def __init__(self):
|
||||
log('monitor started')
|
||||
self.player = Player()
|
||||
|
||||
def onSettingsChanged(self):
|
||||
log('settings changed')
|
||||
self.player.update()
|
||||
|
||||
def waitForAbort(self):
|
||||
super(Monitor, self).waitForAbort()
|
||||
log('abort requested')
|
||||
self.player.abort()
|
||||
|
||||
|
||||
class Player(threading.Thread, xbmc.Player):
|
||||
|
||||
def __init__(self):
|
||||
log('player started')
|
||||
super(Player, self).__init__()
|
||||
self.aborted = False
|
||||
self.isLibrespotStarted = True
|
||||
self.listitem = xbmcgui.ListItem()
|
||||
self.listitem.addStreamInfo('audio', {'codec': STREAM_CODEC})
|
||||
self.listitem.setPath(STREAM_URL)
|
||||
self.spotify = Spotify()
|
||||
if self.isPlaying():
|
||||
self.onAVStarted()
|
||||
else:
|
||||
self.playingFile = ''
|
||||
self.onPlayBackStopped()
|
||||
self.start()
|
||||
|
||||
def abort(self):
|
||||
log('aborting player')
|
||||
self.aborted = True
|
||||
with open(FIFO, 'w') as fifo:
|
||||
fifo.close()
|
||||
self.join()
|
||||
|
||||
def onAVChange(self):
|
||||
self.onAVStarted()
|
||||
|
||||
def onAVStarted(self):
|
||||
log('playback started')
|
||||
self.playingFile = self.getPlayingFile()
|
||||
if self.isLibrespotStarted and (self.playingFile != STREAM_URL):
|
||||
self.isLibrespotStarted = False
|
||||
self.systemctl('stop')
|
||||
|
||||
def onPlayBackEnded(self):
|
||||
self.onPlayBackStopped()
|
||||
|
||||
def onPlayBackError(self):
|
||||
self.onPlayBackStopped()
|
||||
|
||||
def onPlayBackStopped(self):
|
||||
log('playback stopped')
|
||||
if self.playingFile == STREAM_URL:
|
||||
self.systemctl('restart')
|
||||
elif not self.isLibrespotStarted:
|
||||
self.systemctl('start')
|
||||
self.isLibrespotStarted = True
|
||||
|
||||
def pauseLibrespot(self):
|
||||
if self.isPlaying() and (self.getPlayingFile() == STREAM_URL):
|
||||
log('pausing librespot playback')
|
||||
self.pause()
|
||||
|
||||
def playLibrespot(self, type, id):
|
||||
info = self.spotify.getInfo(type, id)
|
||||
self.listitem.setArt(info.getArt())
|
||||
self.listitem.setInfo('music', info.getInfo())
|
||||
if not self.isPlaying():
|
||||
subprocess.call(['pactl', 'suspend-sink', SINK_NAME, '0'])
|
||||
log('starting librespot playback')
|
||||
self.play(STREAM_URL, self.listitem)
|
||||
elif self.getPlayingFile() == STREAM_URL:
|
||||
log('updating librespot playback')
|
||||
self.updateInfoTag(self.listitem)
|
||||
|
||||
def run(self):
|
||||
log('control pipe started')
|
||||
try:
|
||||
os.unlink(FIFO)
|
||||
except OSError:
|
||||
pass
|
||||
while not self.aborted:
|
||||
if not os.path.exists(FIFO):
|
||||
os.mkfifo(FIFO)
|
||||
with open(FIFO, 'r') as fifo:
|
||||
command = fifo.readline()
|
||||
log('control pipe {}'.format(command))
|
||||
if command == '':
|
||||
continue
|
||||
command = command.split()
|
||||
if command[0] in ['Paused']:
|
||||
self.pauseLibrespot()
|
||||
elif command[0] in ['Playing']:
|
||||
self.playLibrespot(command[1], command[2])
|
||||
elif command[0] in ['Stopped']:
|
||||
self.stopLibrespot()
|
||||
try:
|
||||
os.unlink(FIFO)
|
||||
except OSError:
|
||||
pass
|
||||
log('control pipe stopped')
|
||||
|
||||
def stopLibrespot(self):
|
||||
if self.isPlaying() and (self.getPlayingFile() == STREAM_URL):
|
||||
log('stopping librespot playback')
|
||||
self.stop()
|
||||
|
||||
def systemctl(self, command):
|
||||
log('{} librespot'.format(command))
|
||||
subprocess.call(['systemctl', command, ADDON_ID])
|
||||
|
||||
def update(self):
|
||||
log('updating player')
|
||||
if self.isLibrespotStarted:
|
||||
self.systemctl('restart')
|
||||
|
||||
|
||||
class Spotify():
|
||||
|
||||
def __init__(self):
|
||||
self.headers = None
|
||||
self.expiration = time.time()
|
||||
|
||||
def getHeaders(self):
|
||||
if time.time() > self.expiration:
|
||||
log('token expired')
|
||||
token = requests.post(
|
||||
url='https://accounts.spotify.com/api/token',
|
||||
data={'grant_type': 'client_credentials'},
|
||||
headers={
|
||||
'Authorization': 'Basic MTY5ZGY1NTMyZGVlNDdhNTk5MTNmODUyOGU4M2FlNzE6MWYzZDhiNTA3YmJlNGY2OGJlYjNhNDQ3MmU4YWQ0MTE='}
|
||||
).json()
|
||||
print(token)
|
||||
log('new token expires in {} seconds'.format(token['expires_in']))
|
||||
self.expiration = time.time() + float(token['expires_in']) - 15
|
||||
self.headers = {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'Bearer {}'.format(token['access_token'])
|
||||
}
|
||||
|
||||
def getEndpoint(self, url):
|
||||
try:
|
||||
self.getHeaders()
|
||||
return requests.get(
|
||||
url=url,
|
||||
headers=self.headers
|
||||
).json()
|
||||
except Exception as e:
|
||||
log('failed to get endpoint from Spotify {}'.format(e))
|
||||
return {}
|
||||
|
||||
def getInfo(self, type, id):
|
||||
if type == 'Track':
|
||||
return TrackInfo(self.getEndpoint('https://api.spotify.com/v1/tracks/{}'.format(id)))
|
||||
else:
|
||||
return UnknownInfo(type, id)
|
||||
|
||||
|
||||
class UnknownInfo:
|
||||
|
||||
def __init__(self, type, id):
|
||||
self.id = id
|
||||
self.type = type
|
||||
|
||||
def get(self, default, *indices):
|
||||
tree = self.info
|
||||
try:
|
||||
for index in indices:
|
||||
tree = tree[index]
|
||||
except LookupError:
|
||||
tree = default
|
||||
return tree
|
||||
|
||||
def getArt(self):
|
||||
return {'thumb': ''}
|
||||
|
||||
def getInfo(self):
|
||||
return {'album': '', 'artist': self.type, 'title': self.id}
|
||||
|
||||
|
||||
class TrackInfo(UnknownInfo):
|
||||
|
||||
def __init__(self, info):
|
||||
self.info = info
|
||||
|
||||
def getArt(self):
|
||||
return {
|
||||
'thumb': self.get('', 'album', 'images', 0, 'url')
|
||||
}
|
||||
|
||||
def getInfo(self):
|
||||
return {
|
||||
'album': self.get('', 'album', 'name'),
|
||||
'artist': self.get('', 'artists', 0, 'name'),
|
||||
'title': self.get('', 'name')
|
||||
}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
log('service started')
|
||||
Monitor().waitForAbort()
|
||||
log('service stopped')
|
||||
Monitor().run()
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PORT="6666"
|
||||
SINK_NAME="librespot_sink"
|
||||
@@ -8,13 +8,25 @@ msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30101"
|
||||
msgid "User mode"
|
||||
msgid "Autoplay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30102"
|
||||
msgid "Username"
|
||||
msgid "Discovery"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30103"
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30104"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30105"
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30106"
|
||||
msgid "RTP Port"
|
||||
msgstr ""
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import os
|
||||
import socket
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
import xbmcgui
|
||||
|
||||
|
||||
DEFAULTS = dict(
|
||||
autoplay='true',
|
||||
bitrate='320',
|
||||
device='librespot',
|
||||
discovery='true',
|
||||
name='Librespot@{}',
|
||||
password='',
|
||||
rtp_dest='127.0.0.1',
|
||||
rtp_port='24642',
|
||||
username='',
|
||||
)
|
||||
|
||||
ADDON = xbmcaddon.Addon()
|
||||
ADDON_HOME = xbmc.translatePath(ADDON.getAddonInfo('profile'))
|
||||
ADDON_ICON = ADDON.getAddonInfo('icon')
|
||||
ADDON_NAME = ADDON.getAddonInfo('name')
|
||||
ADDON_PATH = ADDON.getAddonInfo('path')
|
||||
ADDON_ENVT = dict(PATH=os.path.join(ADDON_PATH, 'bin'))
|
||||
DIALOG = xbmcgui.Dialog()
|
||||
|
||||
|
||||
def get_settings():
|
||||
if not os.path.exists(ADDON_HOME):
|
||||
os.makedirs(ADDON_HOME)
|
||||
settings = dict()
|
||||
for id in DEFAULTS.keys():
|
||||
value = ADDON.getSetting(id)
|
||||
settings[id] = DEFAULTS[id] if value == '' else value
|
||||
settings['name'] = settings['name'].format(socket.gethostname())
|
||||
return settings
|
||||
|
||||
|
||||
def log(message):
|
||||
xbmc.log('{}: {}'.format(ADDON_NAME, message), xbmc.LOGNOTICE)
|
||||
|
||||
|
||||
def notification(message):
|
||||
DIALOG.notification(ADDON_NAME, message, ADDON_ICON)
|
||||
@@ -0,0 +1,164 @@
|
||||
import pipes
|
||||
import shlex
|
||||
import subprocess
|
||||
import threading
|
||||
import xbmc
|
||||
import xbmcgui
|
||||
|
||||
from ls_addon import ADDON_ENVT as ADDON_ENVT
|
||||
from ls_addon import ADDON_HOME as ADDON_HOME
|
||||
from ls_addon import get_settings as get_settings
|
||||
from ls_addon import log as log
|
||||
from ls_pulseaudio import Pulseaudio as Pulseaudio
|
||||
from ls_spotify import SPOTIFY as SPOTIFY
|
||||
|
||||
|
||||
LIBRESPOT = 'librespot' \
|
||||
' --backend pulseaudio' \
|
||||
' --bitrate {bitrate}' \
|
||||
' --cache cache' \
|
||||
' --device {device}' \
|
||||
' --device-type TV' \
|
||||
' --disable-audio-cache' \
|
||||
' --name {name}' \
|
||||
' --notify-kodi'
|
||||
LIBRESPOT_AUTOPLAY = ' --autoplay'
|
||||
LIBRESPOT_AUTHENTICATE = ' --disable-discovery' \
|
||||
' --password {password}' \
|
||||
' --username {username}'
|
||||
|
||||
CODEC = 'pcm_s16be'
|
||||
MAX_PANICS = 3
|
||||
|
||||
|
||||
class Librespot(xbmc.Player):
|
||||
|
||||
def __init__(self):
|
||||
super(Librespot, self).__init__()
|
||||
settings = get_settings()
|
||||
quoted = {k: pipes.quote(v) for (k, v) in settings.items()}
|
||||
command = LIBRESPOT
|
||||
if settings['autoplay'] == 'true':
|
||||
command += LIBRESPOT_AUTOPLAY
|
||||
if (settings['discovery'] == 'false' and
|
||||
settings['password'] != '' and
|
||||
settings['username'] != ''):
|
||||
command += LIBRESPOT_AUTHENTICATE
|
||||
self.command = shlex.split(command.format(**quoted))
|
||||
log(shlex.split(command.format(**dict(quoted, password='*obfuscated*'))))
|
||||
self.is_aborted = False
|
||||
self.is_dead = False
|
||||
self.pulseaudio = Pulseaudio(settings)
|
||||
self.listitem = xbmcgui.ListItem()
|
||||
self.listitem.addStreamInfo('audio', {'codec': CODEC})
|
||||
self.listitem.setPath(path=self.pulseaudio.url)
|
||||
|
||||
def __enter__(self):
|
||||
self.pulseaudio.load_modules()
|
||||
self.panics = 0
|
||||
self.librespot = None
|
||||
self.is_playing_librespot = False
|
||||
if not self.isPlaying():
|
||||
self.start_librespot()
|
||||
|
||||
def __exit__(self, *args):
|
||||
self.stop_librespot()
|
||||
self.pulseaudio.unload_modules()
|
||||
|
||||
def on_event_panic(self):
|
||||
self.pulseaudio.suspend_sink(1)
|
||||
self.panics += 1
|
||||
log('event panic {}/{}'.format(self.panics, MAX_PANICS))
|
||||
self.is_dead = self.panics >= MAX_PANICS
|
||||
self.stop_librespot(True)
|
||||
|
||||
def on_event_playing(self, type, id):
|
||||
log('event playing')
|
||||
SPOTIFY.update_listitem(self.listitem, type, id, self.country)
|
||||
if not self.isPlaying():
|
||||
log('starting librespot playback')
|
||||
self.pulseaudio.suspend_sink(0)
|
||||
self.play(self.pulseaudio.url, self.listitem)
|
||||
elif self.is_playing_librespot:
|
||||
log('updating librespot playback')
|
||||
self.updateInfoTag(self.listitem)
|
||||
|
||||
def on_event_stopped(self):
|
||||
self.pulseaudio.suspend_sink(1)
|
||||
log('event stopped')
|
||||
self.panics = 0
|
||||
self.stop()
|
||||
|
||||
def onPlayBackEnded(self):
|
||||
self.onPlayBackStopped()
|
||||
|
||||
def onPlayBackError(self):
|
||||
self.onPlayBackStopped()
|
||||
|
||||
def onPlayBackStarted(self):
|
||||
log('Kodi playback started')
|
||||
self.is_playing_librespot = self.getPlayingFile() == self.pulseaudio.url
|
||||
if not self.is_playing_librespot:
|
||||
self.stop_librespot()
|
||||
|
||||
def onPlayBackStopped(self):
|
||||
if self.is_playing_librespot:
|
||||
log('librespot playback stopped')
|
||||
self.is_playing_librespot = False
|
||||
self.stop_librespot(True)
|
||||
else:
|
||||
log('Kodi playback stopped')
|
||||
self.start_librespot()
|
||||
|
||||
def run_librespot(self):
|
||||
log('librespot thread started')
|
||||
self.restart = True
|
||||
while self.restart and not self.is_dead:
|
||||
self.librespot = subprocess.Popen(
|
||||
self.command,
|
||||
cwd=ADDON_HOME,
|
||||
env=ADDON_ENVT,
|
||||
stderr=subprocess.STDOUT,
|
||||
stdout=subprocess.PIPE)
|
||||
log('librespot started')
|
||||
with self.librespot.stdout:
|
||||
while True:
|
||||
line = self.librespot.stdout.readline()
|
||||
if line == '':
|
||||
break
|
||||
words = line.split()
|
||||
if words[0] == '@Playing':
|
||||
self.on_event_playing(words[1], words[2])
|
||||
elif words[0] == '@Stopped':
|
||||
self.on_event_stopped()
|
||||
elif words[0] == 'stack':
|
||||
self.on_event_panic()
|
||||
else:
|
||||
log(line.rstrip())
|
||||
if 'Country:' in line:
|
||||
self.country = words[-1].strip('"')
|
||||
log('country={}'.format(self.country))
|
||||
self.pulseaudio.suspend_sink(1)
|
||||
self.stop()
|
||||
self.librespot.wait()
|
||||
log('librespot stopped')
|
||||
self.librespot = None
|
||||
log('librespot thread stopped')
|
||||
|
||||
def start_librespot(self):
|
||||
if self.librespot is None:
|
||||
self.thread = threading.Thread(target=self.run_librespot)
|
||||
self.thread.start()
|
||||
|
||||
def stop(self):
|
||||
if self.is_playing_librespot and not self.is_aborted:
|
||||
log('stopping librespot playback')
|
||||
self.is_playing_librespot = False
|
||||
super(Librespot, self).stop()
|
||||
|
||||
def stop_librespot(self, restart=False):
|
||||
self.restart = restart
|
||||
if self.librespot is not None:
|
||||
self.librespot.terminate()
|
||||
if not restart:
|
||||
self.thread.join()
|
||||
@@ -0,0 +1,35 @@
|
||||
import xbmc
|
||||
|
||||
from ls_addon import log as log
|
||||
from ls_addon import notification as notification
|
||||
from ls_librespot import Librespot as Librespot
|
||||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def onSettingsChanged(self):
|
||||
self.is_changed = True
|
||||
|
||||
def run(self):
|
||||
log('monitor started')
|
||||
is_aborted = False
|
||||
is_dead = False
|
||||
while not (is_aborted or is_dead):
|
||||
self.is_changed = False
|
||||
librespot = Librespot()
|
||||
with librespot:
|
||||
while True:
|
||||
is_aborted = self.waitForAbort(1)
|
||||
if is_aborted:
|
||||
log('monitor aborted')
|
||||
librespot.is_aborted = True
|
||||
break
|
||||
is_dead = librespot.is_dead
|
||||
if is_dead:
|
||||
log('librespot died')
|
||||
notification('Too many errors')
|
||||
break
|
||||
if self.is_changed:
|
||||
log('settings changed')
|
||||
break
|
||||
log('monitor stopped')
|
||||
@@ -0,0 +1,46 @@
|
||||
import subprocess
|
||||
|
||||
from ls_addon import log as log
|
||||
|
||||
|
||||
def run(command):
|
||||
return subprocess.check_output(command.split())
|
||||
|
||||
|
||||
class Pulseaudio:
|
||||
|
||||
def __init__(self, settings):
|
||||
self.null_sink = dict(
|
||||
module='module-null-sink',
|
||||
args='sink_name={device}'.format(**settings)
|
||||
)
|
||||
self.rtp_send = dict(
|
||||
module='module-rtp-send',
|
||||
args='destination_ip={rtp_dest} port={rtp_port}'
|
||||
' source={device}.monitor'.format(**settings)
|
||||
)
|
||||
self.suspend = 'pactl suspend-sink {device} {{}}'.format(**settings)
|
||||
self.url = 'rtp://{rtp_dest}:{rtp_port}'.format(**settings)
|
||||
|
||||
def list_modules(self):
|
||||
return [module.split('\t')
|
||||
for module in run('pactl list modules short').splitlines()[::-1]]
|
||||
|
||||
def load_modules(self):
|
||||
args = [module[2] for module in self.list_modules()]
|
||||
for module in [self.null_sink, self.rtp_send]:
|
||||
if module['args'] not in args:
|
||||
run('pactl load-module {} {}'.format(
|
||||
module['module'], module['args']))
|
||||
log('loaded {} {}'.format(module['module'], module['args']))
|
||||
self.suspend_sink(1)
|
||||
|
||||
def suspend_sink(self, bit):
|
||||
run(self.suspend.format(bit))
|
||||
log('suspended sink {}'.format(bit))
|
||||
|
||||
def unload_modules(self):
|
||||
for module in self.list_modules():
|
||||
if module[2] in [self.null_sink['args'], self.rtp_send['args']]:
|
||||
run('pactl unload-module {}'.format(module[0]))
|
||||
log('unloaded {} {}'.format(module[1], module[2]))
|
||||
@@ -0,0 +1,80 @@
|
||||
import requests
|
||||
import time
|
||||
|
||||
|
||||
from ls_addon import ADDON_ICON as ADDON_ICON
|
||||
from ls_addon import log as log
|
||||
|
||||
|
||||
SPOTIFY_ENDPOINT_EPISODES = 'https://api.spotify.com/v1/episodes/'
|
||||
SPOTIFY_ENDPOINT_TRACKS = 'https://api.spotify.com/v1/tracks/'
|
||||
SPOTIFY_HEADERS = {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
SPOTIFY_REQUEST_TOKEN = {
|
||||
'url': 'https://accounts.spotify.com/api/token',
|
||||
'data': {'grant_type': 'client_credentials'},
|
||||
'headers': {'Authorization': 'Basic MTY5ZGY1NTMyZGVlNDdhNTk5MTNmODUyOGU4M2FlNzE6MWYzZDhiNTA3YmJlNGY2OGJlYjNhNDQ3MmU4YWQ0MTE='}
|
||||
}
|
||||
|
||||
|
||||
def get(info, indices, default):
|
||||
try:
|
||||
for index in indices:
|
||||
info = info[index]
|
||||
return info.encode('utf-8')
|
||||
except LookupError:
|
||||
return default
|
||||
|
||||
|
||||
class Spotify:
|
||||
|
||||
def __init__(self):
|
||||
self.headers = SPOTIFY_HEADERS
|
||||
self.expiration = time.time()
|
||||
|
||||
def get_headers(self):
|
||||
if time.time() > self.expiration:
|
||||
log('token expired')
|
||||
token = requests.post(**SPOTIFY_REQUEST_TOKEN).json()
|
||||
log(token)
|
||||
self.expiration = time.time() + float(token['expires_in']) - 5
|
||||
self.headers['Authorization'] = 'Bearer {}'.format(
|
||||
token['access_token'])
|
||||
|
||||
def get_endpoint(self, endpoint, id, market):
|
||||
try:
|
||||
self.get_headers()
|
||||
return requests.get(url=endpoint + id,
|
||||
headers=self.headers,
|
||||
params=dict(market=market)).json()
|
||||
except Exception as e:
|
||||
log('failed to get {} from Spotify {}'.format(endpoint, e))
|
||||
return {}
|
||||
|
||||
def update_listitem(self, listitem, type, id, market='SE'):
|
||||
if type == 'Podcast':
|
||||
info = self.get_endpoint(SPOTIFY_ENDPOINT_EPISODES, id, market)
|
||||
album = get(info, ['show', 'name'], 'unknown show',)
|
||||
artist = get(info, ['show', 'publisher'], 'unknown publisher')
|
||||
thumb = get(info, ['images', 0, 'url'], ADDON_ICON)
|
||||
title = get(info, ['name'], 'unknown episode')
|
||||
elif type == 'Track':
|
||||
info = self.get_endpoint(SPOTIFY_ENDPOINT_TRACKS, id, market)
|
||||
album = get(info, ['album', 'name'], 'unknown album')
|
||||
artist = get(info, ['artists', 0, 'name'], 'unknown artist')
|
||||
thumb = get(info, ['album', 'images', 0, 'url'], ADDON_ICON)
|
||||
title = get(info, ['name'], 'unknown title')
|
||||
else:
|
||||
album = ''
|
||||
artist = 'Unknown Media Type'
|
||||
thumb = ADDON_ICON
|
||||
title = ''
|
||||
listitem.setArt(dict(fanart=thumb, thumb=thumb))
|
||||
listitem.setInfo('music', dict(
|
||||
album=album, artist=artist, title=title))
|
||||
log('{}#{}#{}#{}'.format(title, artist, album, thumb))
|
||||
|
||||
|
||||
SPOTIFY = Spotify()
|
||||
@@ -1,8 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
<category label="30100">
|
||||
<setting label="30101" id="ls_a" type="bool" default="false" />
|
||||
<setting label="30102" id="ls_u" type="text" default="" subsetting="true" visible="eq(-1,true)" />
|
||||
<setting label="30103" id="ls_p" type="text" default="" subsetting="true" visible="eq(-2,true)" option="hidden" />
|
||||
<setting label="30101" id="autoplay" type="bool" default="true" />
|
||||
<setting label="30102" id="discovery" type="bool" default="true" />
|
||||
<setting label="30103" id="username" type="text" default="" subsetting="true" visible="eq(-1,false)" />
|
||||
<setting label="30104" id="password" type="text" default="" subsetting="true" visible="eq(-2,false)" option="hidden" />
|
||||
<setting label="30105" id="name" type="text" default="Librespot@{}" />
|
||||
<setting label="30106" id="rtp_port" type="number" default="24642" />
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<settings version="2">
|
||||
<setting id="ls_a" default="true">false</setting>
|
||||
<setting id="ls_p" default="true"></setting>
|
||||
<setting id="ls_u" default="true"></setting>
|
||||
</settings>
|
||||
@@ -1,13 +0,0 @@
|
||||
[Unit]
|
||||
Description=librespot
|
||||
Wants=kodi.service
|
||||
After=kodi.service
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/storage/.kodi/addons/service.librespot/ls_env.py
|
||||
ExecStart=/bin/sh /storage/.kodi/addons/service.librespot/bin/librespot.start
|
||||
ExecStopPost=-/usr/bin/pactl suspend-sink librespot_sink 1
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.service
|
||||
@@ -1,3 +1,6 @@
|
||||
109
|
||||
- Update to 1.4.2
|
||||
|
||||
108
|
||||
- Update to 1.2.0
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="syncthing"
|
||||
PKG_VERSION="1.2.0"
|
||||
PKG_SHA256="0339877effdcf3bf8aa7d4d1e50b878992792e4752ff778f27788bf71eccecd0"
|
||||
PKG_REV="108"
|
||||
PKG_VERSION="1.4.2"
|
||||
PKG_SHA256="061af43c1bbfcdf949499cdc50a325fff7cd67fb48f9d270adb52b4decbab899"
|
||||
PKG_REV="109"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MPLv2"
|
||||
PKG_SITE="https://syncthing.net/"
|
||||
@@ -21,19 +21,15 @@ PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_MAINTAINER="Anton Voyl (awiouy)"
|
||||
|
||||
configure_target() {
|
||||
export GOLANG=$TOOLCHAIN/lib/golang/bin/go
|
||||
|
||||
cd $PKG_BUILD
|
||||
$GOLANG generate -v ./lib/auto ./cmd/strelaypoolsrv/auto
|
||||
|
||||
export GOOS=linux
|
||||
export CGO_CFLAGS=${CFLAGS}
|
||||
export CGO_ENABLED=1
|
||||
export CGO_NO_EMULATION=1
|
||||
export CGO_CFLAGS=$CFLAGS
|
||||
export LDFLAGS="-w -linkmode external -extldflags -Wl,--unresolved-symbols=ignore-in-shared-libs -extld $CC -X main.Version=v$PKG_VERSION"
|
||||
export GOPATH=$PKG_BUILD:$PKG_BUILD/Godeps/_workspace
|
||||
export GOROOT=$TOOLCHAIN/lib/golang
|
||||
export PATH=$PATH:$GOROOT/bin
|
||||
export GOLANG=${TOOLCHAIN}/lib/golang/bin/go
|
||||
export GOOS=linux
|
||||
export GOROOT=${TOOLCHAIN}/lib/golang
|
||||
export LDFLAGS="-w -linkmode external -extldflags -Wl,--unresolved-symbols=ignore-in-shared-libs -extld ${CC} \
|
||||
-X github.com/syncthing/syncthing/lib/build.Version=v${PKG_VERSION}"
|
||||
export PATH=${PATH}:${GOROOT}/bin
|
||||
|
||||
case $TARGET_ARCH in
|
||||
x86_64)
|
||||
@@ -57,14 +53,10 @@ configure_target() {
|
||||
}
|
||||
|
||||
make_target() {
|
||||
mkdir -p $PKG_BUILD/src/github.com/syncthing
|
||||
ln -sf $PKG_BUILD $PKG_BUILD/src/github.com/syncthing/syncthing
|
||||
cd $PKG_BUILD/src/github.com/syncthing/syncthing
|
||||
mkdir bin
|
||||
$GOLANG build -v -o bin/syncthing -a -ldflags "$LDFLAGS" ./cmd/syncthing
|
||||
${GOLANG} build -v -o bin/syncthing -a -ldflags "${LDFLAGS}" ./cmd/syncthing
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/bin/syncthing $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
cp -P ${PKG_BUILD}/bin/syncthing ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
. /etc/profile
|
||||
oe_setup_addon service.system.syncthing
|
||||
|
||||
chmod +x $ADDON_DIR/bin/*
|
||||
|
||||
STNODEFAULTFOLDER="y" syncthing -home=$ADDON_HOME \
|
||||
-gui-address="$gui_address" \
|
||||
-logflags=0 \
|
||||
|
||||
@@ -8,13 +8,13 @@ import xbmcaddon
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
xbmc.Monitor.__init__(self)
|
||||
self.id = xbmcaddon.Addon().getAddonInfo('id')
|
||||
def __init__(self, *args, **kwargs):
|
||||
xbmc.Monitor.__init__(self)
|
||||
self.id = xbmcaddon.Addon().getAddonInfo('id')
|
||||
|
||||
def onSettingsChanged(self):
|
||||
subprocess.call(['systemctl', 'restart', self.id])
|
||||
def onSettingsChanged(self):
|
||||
subprocess.call(['systemctl', 'restart', self.id])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
Monitor().waitForAbort()
|
||||
if __name__ == '__main__':
|
||||
Monitor().waitForAbort()
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
122
|
||||
- update gnutls to 3.6.13
|
||||
|
||||
121
|
||||
- update to 4.2.8-36
|
||||
- update comskip to 2019-11-03
|
||||
|
||||
@@ -5,7 +5,7 @@ PKG_NAME="tvheadend42"
|
||||
PKG_VERSION="5bdcfd8ac97b3337e1c7911ae24127df76fa693a"
|
||||
PKG_SHA256="b562a26248cdc02dc94cc62038deea172668fa4c079b2ea4e1b4220f3b1d34f5"
|
||||
PKG_VERSION_NUMBER="4.2.8-36"
|
||||
PKG_REV="121"
|
||||
PKG_REV="122"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.tvheadend.org"
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
109
|
||||
- Fix x86_64 url
|
||||
|
||||
108
|
||||
- Update to 3.1.3
|
||||
|
||||
107
|
||||
- Update to 2.2.6
|
||||
|
||||
|
||||
@@ -4,24 +4,24 @@
|
||||
case "$ARCH" in
|
||||
"aarch64")
|
||||
PKG_NC_ARCH="arm64"
|
||||
PKG_SHA256="48d58ac6ff958ec7155befe76f83e276aceff50c4a7d1f578444a9a40720e412"
|
||||
PKG_URL="https://download.visualstudio.microsoft.com/download/pr/f5e04830-50fc-435c-8bb5-fcd4629da944/8aa7cce5c3fcb6a7db180b923d3574ef/dotnet-runtime-2.2.6-linux-arm64.tar.gz"
|
||||
PKG_SHA256="72fbe81a7fb789914be83c0f70c22826137d30183984bc22974b8fc1e1876b5a"
|
||||
PKG_URL="https://download.visualstudio.microsoft.com/download/pr/aec14e02-5c01-4447-b3f4-fa205b7c0603/7beea31e0c9faa20f5d692537cde54a5/dotnet-runtime-3.1.3-linux-arm64.tar.gz"
|
||||
;;
|
||||
"arm")
|
||||
PKG_NC_ARCH="arm"
|
||||
PKG_SHA256="a4f2e63471c296b7b173105a2c1d5feb95b81e0a8131f73aeecc00440fa5f544"
|
||||
PKG_URL="https://download.visualstudio.microsoft.com/download/pr/428aaa32-f66c-4847-b845-aa21f90504e4/1cf033db866414997140c2672bd75069/dotnet-runtime-2.2.6-linux-arm.tar.gz"
|
||||
PKG_SHA256="2c7cd1ced5d2c5aa2b63d2980cba0d62f8bb07ce9ae18e692cfc3c8c5989bef9"
|
||||
PKG_URL="https://download.visualstudio.microsoft.com/download/pr/c11e9248-404f-4e5b-bd99-175079419d6f/83902a43e06f9fb4e45a4c6a6d5afc0b/dotnet-runtime-3.1.3-linux-arm.tar.gz"
|
||||
;;
|
||||
"x86_64")
|
||||
PKG_NC_ARCH="x64"
|
||||
PKG_SHA256="e30d4568c62d747b030e3c74f3d528ecb8d5c90e844e506bc0e3fcbce52b8cb1"
|
||||
PKG_URL="https://download.visualstudio.microsoft.com/download/pr/9f21e352-9d2c-4e3b-af45-915da89158db/0e8a7ea83cc08d4bcf417a927a36ed6f/dotnet-runtime-2.2.6-linux-x64.tar.gz"
|
||||
PKG_SHA256="e0a9d4a206caece4de6d39e7d95245b2357ae69280b1f3e1b19fb9de8e1c1174"
|
||||
PKG_URL="https://download.visualstudio.microsoft.com/download/pr/c1d419e7-4312-4464-b272-27bee7676560/22e7bb584ff56f3089c85d98b21c0445/dotnet-runtime-3.1.3-linux-x64.tar.gz"
|
||||
;;
|
||||
esac
|
||||
|
||||
PKG_NAME="dotnet-runtime"
|
||||
PKG_VERSION="2.2.6"
|
||||
PKG_REV="107"
|
||||
PKG_VERSION="3.1.3"
|
||||
PKG_REV="109"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://dotnet.github.io/"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
110
|
||||
- Update gnutls to 3.6.13
|
||||
|
||||
109
|
||||
- Update AV1 to 2019-11-15
|
||||
- Update FFmpeg to 4.2.1
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
PKG_NAME="ffmpeg-tools"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="109"
|
||||
PKG_REV="110"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
104
|
||||
- drop iw
|
||||
|
||||
103
|
||||
- added rar2fs
|
||||
- updated iperf to 3.6
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
PKG_NAME="network-tools"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="103"
|
||||
PKG_REV="104"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
@@ -11,7 +11,7 @@ PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="virtual"
|
||||
PKG_SHORTDESC="A bundle of network tools and programs"
|
||||
PKG_LONGDESC="This bundle currently includes bwm-ng, iftop, iperf, irssi, iw, lftp, ncftp, ngrep, nmap, rar2fs, rsync, sshfs, tcpdump, udpxy and wireless_tools."
|
||||
PKG_LONGDESC="This bundle currently includes bwm-ng, iftop, iperf, irssi, lftp, ncftp, ngrep, nmap, rar2fs, rsync, sshfs, tcpdump, udpxy and wireless_tools."
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="Network Tools"
|
||||
@@ -22,7 +22,6 @@ PKG_DEPENDS_TARGET="toolchain \
|
||||
iftop \
|
||||
iperf \
|
||||
irssi \
|
||||
iw \
|
||||
lftp \
|
||||
ncftp \
|
||||
ngrep \
|
||||
@@ -49,9 +48,6 @@ addon() {
|
||||
# irssi
|
||||
cp -P $(get_build_dir irssi)/.$TARGET_NAME/src/fe-text/irssi $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
# iw
|
||||
cp -P $(get_build_dir iw)/iw $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
# lftp
|
||||
cp -P $(get_build_dir lftp)/.$TARGET_NAME/src/lftp $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
|
||||
2
packages/audio/alsa-lib/modprobe.d/intel-audio.conf
Normal file
2
packages/audio/alsa-lib/modprobe.d/intel-audio.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
# work around no audio issue on Intel NUCs
|
||||
blacklist snd_soc_skl
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-2048"
|
||||
PKG_VERSION="c5e0df2a74c4e25657095db114d62c2cefac9f52"
|
||||
PKG_SHA256="d73185fc25813dca2fbd232f987a2d03bfb5fa519c4efdd946345a10babd471f"
|
||||
PKG_VERSION="74d10e41b86111d42309103d3bd7e8910263b1d1"
|
||||
PKG_SHA256="56cb85b12f8050dff1bf4331dee7a18dcc7b532dea0ec6c9125d9e75e133596e"
|
||||
PKG_LICENSE="Public domain"
|
||||
PKG_SITE="https://github.com/libretro/libretro-2048"
|
||||
PKG_URL="https://github.com/libretro/libretro-2048/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-beetle-ngp"
|
||||
PKG_VERSION="cb1cb865a434008e06e51189b41538a1009de1f1"
|
||||
PKG_SHA256="eb6453a998751faead7eb1e61d3003733fe1570f365f581a2d8dab56f828bca6"
|
||||
PKG_VERSION="6f15532b6ad17a2d5eb9dc8241d6af62416e796b"
|
||||
PKG_SHA256="4b88ab57bac0d5d61a24c7f9d5aa193cd21a6feb3a95b2c54611b165b79f8c19"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/beetle-ngp-libretro"
|
||||
PKG_URL="https://github.com/libretro/beetle-ngp-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-beetle-pce-fast"
|
||||
PKG_VERSION="914240864815cdbab88e0ef363cdef5684061e86"
|
||||
PKG_SHA256="989ea67a0aa10bf6137ba4a6f3968284e38c7710bc69c8eba07fca3d1fdcd5d4"
|
||||
PKG_VERSION="019179ce335b68a22dcba94ae6c51cad8135ee16"
|
||||
PKG_SHA256="0304948b3a5300e16d14907d6c19ce21a353f25f46e77648d3ce8244c89ccabf"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/beetle-pce-fast-libretro"
|
||||
PKG_URL="https://github.com/libretro/beetle-pce-fast-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-beetle-psx"
|
||||
PKG_VERSION="55ced791707f1b1d861719e8eef547e5773c343c"
|
||||
PKG_SHA256="f605094fa14d214d63943e99e0bc3bbfb666b86de504577a1e62c741be26062b"
|
||||
PKG_VERSION="c7c8ffd3d2cf1c780ccf98417e60908f9adf970d"
|
||||
PKG_SHA256="61e1495f49a6584038c19bcd797668a430bc74fd94cd7be24fbd9ce31158dfa4"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/beetle-psx-libretro"
|
||||
PKG_URL="https://github.com/libretro/beetle-psx-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-beetle-supergrafx"
|
||||
PKG_VERSION="8d28dfb1ecfb9f1a5c01b0c67d53ecfcbac41da7"
|
||||
PKG_SHA256="f6f255b85441c1b9b51ba3e60f964d99c50a7d44d683c0d08b9c8b02e8caee66"
|
||||
PKG_VERSION="fadef23d59fa5ec17bc99e1e722cfd9e10535695"
|
||||
PKG_SHA256="2059ab1e76b9bf22224683cc33205d81b7ec0edfdd8487ac431c2bbfbdf3e9dd"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/beetle-supergrafx-libretro"
|
||||
PKG_URL="https://github.com/libretro/beetle-supergrafx-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-bluemsx"
|
||||
PKG_VERSION="aace4ae8acf5dbe8b02e6fb49b703fdcb6c5603a"
|
||||
PKG_SHA256="6969eb0eeffdc3a978e6137b7b212bf0969aaa81b8e46951253b29e623b072f5"
|
||||
PKG_VERSION="7a1d40e750860580ab7cc21fbc244b5bc6db6586"
|
||||
PKG_SHA256="b6b97088339da982b9a8f2de2c4a4bf0a62ee91e611942b8e5b36ebff7fe7918"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/blueMSX-libretro"
|
||||
PKG_URL="https://github.com/libretro/blueMSX-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-fceumm"
|
||||
PKG_VERSION="f5e2b4051438869ef88890afca87bc2e25ae8187"
|
||||
PKG_SHA256="3b50386b9ef3e9ebedc0812c8dbfbc3822d3e27fdbf8aa754c6b41617fa5e4d6"
|
||||
PKG_VERSION="0d569e9bab054f215f828184c1d63fa69f8abd0c"
|
||||
PKG_SHA256="1aae47c75abaf3d5a8e1250498956abc484cfcfbfec111ebadb46cbec63df36e"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/libretro-fceumm"
|
||||
PKG_URL="https://github.com/libretro/libretro-fceumm/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-fuse"
|
||||
PKG_VERSION="37c8a3c8c0306f7f2d6a356c41bae96fc656d983"
|
||||
PKG_SHA256="60c59fbb4c129664bd050b957cd29792109a504916693efaf3331cce97feb71f"
|
||||
PKG_VERSION="ef603d165914afc3f54971d082e69adea187c8ec"
|
||||
PKG_SHA256="a9e70f5413eca8f3e277fba1ed9076197b2b03e81abb0350c667fc6bfcdfd8eb"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/fuse-libretro"
|
||||
PKG_URL="https://github.com/libretro/fuse-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-gambatte"
|
||||
PKG_VERSION="6f3bde124d45836bcb8b328d7c2bd31863a13aba"
|
||||
PKG_SHA256="c3bd30aecdc8fc743783c139959b7c9e940dadea7cdf480b469173f0588ecb1e"
|
||||
PKG_VERSION="132f36e990dfc6effdafa6cf261373432464f9bf"
|
||||
PKG_SHA256="ff56bb165b49de091c53d5dc25db2beadc334319f3b02c392702565c1200312f"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/gambatte-libretro"
|
||||
PKG_URL="https://github.com/libretro/gambatte-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-genplus"
|
||||
PKG_VERSION="92b35285bb07b7ab82f0d2aae12a7ab8f17107e7"
|
||||
PKG_SHA256="66b9516828ceafb37de9ca6658c96991c6b917aac9bbf6057fcd62a5a9e6f3a0"
|
||||
PKG_VERSION="50551066f71f8a5ea782ea3747891fd6d24ebe67"
|
||||
PKG_SHA256="624da10a2f770aa64c350f9c4a466a5dd2634d0fde1e0ea7edaa862c4b6485e4"
|
||||
PKG_LICENSE="Modified BSD / LGPLv2.1"
|
||||
PKG_SITE="https://github.com/libretro/Genesis-Plus-GX"
|
||||
PKG_URL="https://github.com/libretro/Genesis-Plus-GX/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-handy"
|
||||
PKG_VERSION="10f515163f875af5bd20c5170cb1ce7139de6fe4"
|
||||
PKG_SHA256="a3beef3b62ff0504653c9b6d52156500c491a2ddf4dc46a485569437c40df41b"
|
||||
PKG_VERSION="5ff55817eafbb1930e222ea2493c22804c872904"
|
||||
PKG_SHA256="b04334edcc041db9e8c0ae9e3c75dc9b074adda44db12db434f157f8b5b0159e"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/libretro-handy"
|
||||
PKG_URL="https://github.com/libretro/libretro-handy/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-hatari"
|
||||
PKG_VERSION="ec1b59c4b6c7ca7d0d23d60cfe2cb61911b11173"
|
||||
PKG_SHA256="4deea8ba40e7ce026db731b511e01bea5caa5a51b3499aa4473405841cbedd67"
|
||||
PKG_VERSION="c312475ce14fd8120b343a0ad11961cfd709778c"
|
||||
PKG_SHA256="ad60265f35a5173d91035536a6e1cce8d31bd4889d3823b216af8d2b26462aef"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/hatari"
|
||||
PKG_URL="https://github.com/libretro/hatari/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mame"
|
||||
PKG_VERSION="7cf10a3a9d8f3ee15ed7110d710fd73f2b402303"
|
||||
PKG_SHA256="b88c4192e2e6c0f403fac416d91960deac49d673a464a8a471f273dbd66af0d8"
|
||||
PKG_VERSION="cdff081ffdd0f4b599874d9f8e18b0fe008b75a7"
|
||||
PKG_SHA256="cac90f3d9876f44a9e377cf60ccb06c1bb6a11425ec07cdedb9473fc8adb988d"
|
||||
PKG_ARCH="x86_64 arm"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/mame"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mame2003_plus"
|
||||
PKG_VERSION="123e0ecb3684afb48feb471c67f6c5ea0456817a"
|
||||
PKG_SHA256="8f66b40976969f2d4933499cc5dc97bf777a5cc28de1c61e2f7ed00a3269d88b"
|
||||
PKG_VERSION="0134c428b75882aa474f78dbbf2c6ecde49b97b7"
|
||||
PKG_SHA256="ecd4e6be29eea975543590864ef06e177313c963e5274ec2622fbc1c57d50ef0"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/mame2003-plus-libretro"
|
||||
PKG_URL="https://github.com/libretro/mame2003-plus-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mame2015"
|
||||
PKG_VERSION="37333ed6fda4c798a1d6b055fe4708f9f0dcf5a7"
|
||||
PKG_SHA256="909fe0177352e149f78a1cc8eee90f1460594975c32fc753c767372ccf44ec4c"
|
||||
PKG_VERSION="e1362eac25aa84a3864492c8175b4c48605d7d70"
|
||||
PKG_SHA256="88a12bb7b0d3ead20178b3b5ab0ccfa31874805ce3eee826e4e6f37bb541f3e5"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/mame2015-libretro"
|
||||
PKG_URL="https://github.com/libretro/mame2015-libretro/archive/${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mame2016"
|
||||
PKG_VERSION="ea4c1ffa75eb3fb0096158b71706b8b84d86d12c"
|
||||
PKG_SHA256="71916b18794d854a420cf317ceb95d5f1dad7a142bf7717d5cdab4ff1bf991f7"
|
||||
PKG_VERSION="02987af9b81a9c3294af8fb9d5a34f9826a2cf4d"
|
||||
PKG_SHA256="d09ce628901f8b19417f05a84aa7cb1bc2b567b05b0de2bb425451d62f897507"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/mame2016-libretro"
|
||||
PKG_URL="https://github.com/libretro/mame2016-libretro/archive/${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mesen"
|
||||
PKG_VERSION="66eb9ad84427d3b849dd725dfda0c79f115793d5"
|
||||
PKG_SHA256="abeb59b73de67641cd6c28fc4f4dc55e75405acb0adfd3ba52526db30ce6b658"
|
||||
PKG_VERSION="cfc5bf6976f62ebd42ea30d5a803c138fc357509"
|
||||
PKG_SHA256="e7abf319920241caf70572dd811363cf16a3622f3b78a14b9873852584b82010"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/SourMesen/Mesen/"
|
||||
PKG_URL="https://github.com/SourMesen/Mesen/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mgba"
|
||||
PKG_VERSION="3120769ed79e74e6f5230cd42c16a09d67cc17ed"
|
||||
PKG_SHA256="c873489a18d0d62db903eeff5db332d44faa01dc2df75fd6e8df5910a2b3c7e8"
|
||||
PKG_VERSION="f87f9ef6cb38537e07dcaedeb82aecac6537d42e"
|
||||
PKG_SHA256="35a587435cc71aee69628da075aff93a49e522b5a2817bb483fa8edcb9a73dc2"
|
||||
PKG_LICENSE="MPL 2.0"
|
||||
PKG_SITE="https://github.com/libretro/mgba"
|
||||
PKG_URL="https://github.com/libretro/mgba/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-mrboom"
|
||||
PKG_VERSION="c777f1059c9a4b3fcefe6e2a19cfe9f81a13740b"
|
||||
PKG_SHA256="ef29851278c2f2ba5f5dc8672088a585e1147b0dea5f6fcd4d9538ca8a516e42"
|
||||
PKG_VERSION="a47e81ce1c4126a977780f6b0d797990161ddd20"
|
||||
PKG_SHA256="175feef1844993ae886abafedd1e094124837062fa1e8c4dd302c6166546f65a"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/mrboom-libretro"
|
||||
PKG_URL="https://github.com/libretro/mrboom-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-o2em"
|
||||
PKG_VERSION="1420afb09b8fe50e9481f14d5689c35e80af4d18"
|
||||
PKG_SHA256="40d033358387bac2db02d3245f4e461aa7891f8840668c87824fe0aacf0511cc"
|
||||
PKG_VERSION="b23a796dd3490e979ff43710317df6d43bd661e1"
|
||||
PKG_SHA256="3477782a9f8b46ceafa04722ab6a5e14585922448de840e5983a93eae47c7bce"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/libretro-o2em"
|
||||
PKG_URL="https://github.com/libretro/libretro-o2em/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-pcsx-rearmed"
|
||||
PKG_VERSION="9017270187ac21fdb2cb61b2a3ae97d24887d4a2"
|
||||
PKG_SHA256="c7feda068260bd04ac7156079c8e08e3fc622b91ec8d183416b8e7e764547270"
|
||||
PKG_VERSION="3c4ac5bb44b41d23eec217369eaa34f4e155f733"
|
||||
PKG_SHA256="9ab6a392266319b8897f2129dff88f025990218fb4a47354879649c2e9e4befe"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/pcsx_rearmed"
|
||||
PKG_URL="https://github.com/libretro/pcsx_rearmed/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-picodrive"
|
||||
PKG_VERSION="8cbbdceaf4e080949edcdda2fe9e52bd7f2a3f8a"
|
||||
PKG_SHA256="6fc56086d8a1e41b8e8968ca19f3961b6d4f98e5b85a2b3991cb86b8689abe14"
|
||||
PKG_VERSION="600894ec6eb657586a972a9ecd268f50907a279c"
|
||||
PKG_SHA256="2142883e7d1f83572dbd8a19685c286905758f87485463472cce8e58dfda0152"
|
||||
PKG_LICENSE="MAME"
|
||||
PKG_SITE="https://github.com/libretro/picodrive"
|
||||
PKG_URL="https://github.com/libretro/picodrive/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-pokemini"
|
||||
PKG_VERSION="4f2a6a2e3009d14b2c25007544c5c6c47d2b3525"
|
||||
PKG_SHA256="242b197f2126249fb6cfdc94a7f0f046ab06133bb88c2ecc947930b2f02a2f6a"
|
||||
PKG_VERSION="d2ea2ef52f97ea6f7bfff57b5367d95083474414"
|
||||
PKG_SHA256="7bfd711a69159208107f1fd95c8c18c56ecdb17cc5225105798529ef28869bd3"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/pokemini"
|
||||
PKG_URL="https://github.com/libretro/pokemini/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-prboom"
|
||||
PKG_VERSION="0d729b7a5c3471dcf36059b6ad9608a081e97839"
|
||||
PKG_SHA256="ae4034e3c539497e9d454331d493ed9f0bc6aab6ea5c45afda666c229b5ffbf2"
|
||||
PKG_VERSION="e3fd54321f385b7843fdb11cef1aeb000d450f00"
|
||||
PKG_SHA256="0b348abd4500810e61b6740594064da26527f36618c11863eac772a61418d07d"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/libretro-prboom"
|
||||
PKG_URL="https://github.com/libretro/libretro-prboom/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-scummvm"
|
||||
PKG_VERSION="0c777c88c556e21acb9a0772790c7519acf499c6"
|
||||
PKG_SHA256="aa4af7c05b8e7d8b96802af9da4e9a681cb30bffaec62368cf0e939b5a25b861"
|
||||
PKG_VERSION="440d5d37ed8b4e0f7d0e312b74cae1bf3506a8fd"
|
||||
PKG_SHA256="e7cc8ef3979d62911ada5917fa1dd46c799dd937dfb6e23b60fa15b2ee0bc06f"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/libretro/scummvm"
|
||||
PKG_URL="https://github.com/libretro/scummvm/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-uae"
|
||||
PKG_VERSION="d38f5176ad76eb62010e3ca2e51632e116e860f4"
|
||||
PKG_SHA256="c7358d95d6dd7c89d50cf154f16e901e3b4d5524b510cba6b2e351dbec89f01d"
|
||||
PKG_VERSION="16a5fd7932b7ede88317e08b7464762fde0880c5"
|
||||
PKG_SHA256="ce358b3b660f894e0d5855b3809e0f50006b82e1dfa8942aed467fbb12b11738"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/libretro/libretro-uae"
|
||||
PKG_URL="https://github.com/libretro/libretro-uae/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-vbam"
|
||||
PKG_VERSION="7d88e045a2fe44e56b3f84846beec446b4c4b2d9"
|
||||
PKG_SHA256="2d0c15b2b0a456c91f4b7747689402be203003f1e79a6836c7a2e5e03af9ce17"
|
||||
PKG_VERSION="29dffc0120681853855c2ce57911f9e2d33607dc"
|
||||
PKG_SHA256="559de9343f007cac59f5d86450a4ac5ffa1f1bfbf50eebbc8c7b93fe13cebea6"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/vbam-libretro"
|
||||
PKG_URL="https://github.com/libretro/vbam-libretro/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libretro-yabause"
|
||||
PKG_VERSION="9a2f8f12ee9a244bff3edee587e876f056d30621"
|
||||
PKG_SHA256="af5bfdeb2949bf1a060a064c5ebe41dcc24333463198afc70f274bb721598924"
|
||||
PKG_VERSION="9be109f9032afa793d2a79b837c4cc232cea5929"
|
||||
PKG_SHA256="e1bd8e4850d48e5e74a605aa5a794baaf34ea7ce1b5162d07db53ad579cba12d"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/yabause"
|
||||
PKG_URL="https://github.com/libretro/yabause/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="02bff4e75712094ffb1ab2ec58a8115ca3e52290"
|
||||
PKG_SHA256="5057fa0ff96e0dde797868e46238842c505c3567bed9e5e3e98b78c54142241f"
|
||||
PKG_VERSION="62fc8c01165a80021054a430182b504f7b877c2d"
|
||||
PKG_SHA256="00cd04ae1c5b73de10e1a189b2b643fa349f08f06324d966227f147e72243bd9"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://www.broadcom.com"
|
||||
PKG_URL="${DISTRO_SRC}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
||||
11
packages/graphics/lcms2/package.mk
Normal file
11
packages/graphics/lcms2/package.mk
Normal file
@@ -0,0 +1,11 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="lcms2"
|
||||
PKG_VERSION="2.9"
|
||||
PKG_SHA256="8e23a09dc81af856db37941a4ea26acdf6a45b0281ec5b7ee94b5a4e9f7afbf7"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.littlecms.com"
|
||||
PKG_URL="https://github.com/mm2/Little-CMS/archive/lcms${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain tiff"
|
||||
PKG_LONGDESC="An small-footprint color management engine, with special focus on accuracy and performance."
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libprojectM"
|
||||
PKG_VERSION="3.1.1-rc4"
|
||||
PKG_SHA256="a0a3cf3a24e372ddfaab43c509c679ed8f5f0e962093228d2982c58e59eb2034"
|
||||
PKG_VERSION="v3.1.2"
|
||||
PKG_SHA256="d59f61806f4e0e89bb42c494514ee295b3a7c4893432a1d38607777040a90823"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/projectM-visualizer/projectm"
|
||||
PKG_URL="https://github.com/projectM-visualizer/projectm/archive/$PKG_VERSION.tar.gz"
|
||||
@@ -17,7 +17,8 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
|
||||
--enable-static \
|
||||
--disable-qt \
|
||||
--disable-pulseaudio \
|
||||
--disable-jack"
|
||||
--disable-jack \
|
||||
--enable-preset-subdirs"
|
||||
|
||||
# workaround due broken release files, remove at next bump
|
||||
pre_configure_target() {
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libraw"
|
||||
PKG_VERSION="0.19.2"
|
||||
PKG_SHA256="400d47969292291d297873a06fb0535ccce70728117463927ddd9452aa849644"
|
||||
PKG_VERSION="0.19.5"
|
||||
PKG_SHA256="40a262d7cc71702711a0faec106118ee004f86c86cc228281d12d16da03e02f5"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="http://www.libraw.org/"
|
||||
PKG_URL="http://www.libraw.org/data/LibRaw-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libjpeg-turbo"
|
||||
PKG_DEPENDS_TARGET="toolchain libjpeg-turbo lcms2"
|
||||
PKG_LONGDESC="A library for reading RAW files obtained from digital photo cameras (CRW/CR2, NEF, RAF, DNG, and others)"
|
||||
PKG_BUILD_FLAGS="+pic"
|
||||
|
||||
@@ -16,5 +16,5 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-static \
|
||||
--disable-openmp \
|
||||
--enable-jpeg \
|
||||
--disable-jasper \
|
||||
--disable-lcms \
|
||||
--enable-lcms \
|
||||
--disable-examples"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="RTL8812AU"
|
||||
PKG_VERSION="bdfef37665b34be7a84835fba97e44447b30f98c"
|
||||
PKG_SHA256="44ccdeb90da2e750330108e71e6986e1a9000ba2e6b5709460a271d570a75769"
|
||||
PKG_VERSION="d88d8b2e2a1b33ebdd62b8a5de307b37c39d8477"
|
||||
PKG_SHA256="c5b2fcc6cbf6901e63f75ece49a8ce3219004536cfc585b9815b34d943c9f311"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/MilhouseVH/RTL8812AU"
|
||||
PKG_URL="https://github.com/MilhouseVH/RTL8812AU/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -23,8 +23,8 @@ case "$LINUX" in
|
||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||
;;
|
||||
raspberrypi)
|
||||
PKG_VERSION="742cb761fa7f2a25e9fc57afd72deb0c47b0c864" # 4.19.106
|
||||
PKG_SHA256="51ca9832bacceb5405d8e862b1559f6a16a2110b01586362a99855980c2a23e5"
|
||||
PKG_VERSION="f0e620550b8b422fef4adcabb2d0e8e69f1fec75" # 4.19.122
|
||||
PKG_SHA256="33601014b658e2257a51c9b474bd590f75193e11cf78ac200fa5e6dea0caf6d8"
|
||||
PKG_URL="https://github.com/raspberrypi/linux/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||
;;
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="LibreELEC-settings"
|
||||
PKG_VERSION="6f6ca1e46c230d1e5045e6bb92a03889e1f1c71a"
|
||||
PKG_SHA256="fc76c674bfc07e281874b7251df7cc3e1044b84359bd78016146cd9d507a80d3"
|
||||
PKG_VERSION="42acf2613927fa93d9d8ec9aa1d3135d101db0e0"
|
||||
PKG_SHA256="5f904cde29454902ea4da3980e88d38a1432ef8eb91995436d3d6ffbddfd260c"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
PKG_URL="https://github.com/LibreELEC/service.libreelec.settings/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="audiodecoder.timidity"
|
||||
PKG_VERSION="2.0.4-Leia"
|
||||
PKG_SHA256="3ddd560b1c907f092f30e51dfc1f0b19e3cf77071fa557cb949d6fc3d9133497"
|
||||
PKG_VERSION="2.0.5-Leia"
|
||||
PKG_SHA256="b20a3a23056aaf76c216c755f36dff03e943d7c086d3e3fca4c920b93113e073"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.2048"
|
||||
PKG_VERSION="1.0.0.110-Leia"
|
||||
PKG_SHA256="523b456d0c161e2ca7599129481b2291a0d6c310abe653ce2133d09348c2ee46"
|
||||
PKG_VERSION="1.0.0.111-Leia"
|
||||
PKG_SHA256="be0e4daf7aee22f55310f57b6eee64e601c7aedb891d6d349a50fffd83325c40"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-bsnes"
|
||||
PKG_VERSION="0.9.26.6-Leia"
|
||||
PKG_SHA256="5f205dd10986b730b87fcd917226ae5576f7b4f957766af32c0a5445bb5a4619"
|
||||
PKG_VERSION="0.9.26.7-Leia"
|
||||
PKG_SHA256="4fc1772740ac349154248bfda5882c8f4ca461c5a313cfd2afc6d186c1da69b2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-gba"
|
||||
PKG_VERSION="0.9.36.5-Leia"
|
||||
PKG_SHA256="16a0af7beb3732ec65b66a8e7eda2497073e77f73d933d4550cbb616f7a59103"
|
||||
PKG_VERSION="0.9.36.6-Leia"
|
||||
PKG_SHA256="1fb08219575c862ed9b10f194fb7a6f3bd0c9e92ccc8949c15779d7b21401ffd"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-lynx"
|
||||
PKG_VERSION="1.24.0.8-Leia"
|
||||
PKG_SHA256="d06edf696d5f9a32cbfc4007776618c72295d0d69ed21dc686689e00b5309503"
|
||||
PKG_VERSION="1.24.0.9-Leia"
|
||||
PKG_SHA256="d321c83ecb7c90b6718f222fee9b3121a6f233d2086cc9d47390e74e0cdfadeb"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-ngp"
|
||||
PKG_VERSION="0.9.36.7-Leia"
|
||||
PKG_SHA256="e50e466277904602aecd6bc11174de32c3e9580d813641c9a1cd6faa7642c088"
|
||||
PKG_VERSION="0.9.36.8-Leia"
|
||||
PKG_SHA256="d7ff9ea91945afefd9257b6fb2396df27d77b2cb2bb026aa80091d8a5b532344"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-pce-fast"
|
||||
PKG_VERSION="0.9.38.6-Leia"
|
||||
PKG_SHA256="9dd43ee8215742331efcfd95e17482de3353f31970e1c6f520acfea73c760b94"
|
||||
PKG_VERSION="0.9.38.7-Leia"
|
||||
PKG_SHA256="abb2169d8afabfa3069bb29d3e37522a207a0023361501f56fe14da9aae9a544"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-pcfx"
|
||||
PKG_VERSION="0.9.36.5-Leia"
|
||||
PKG_SHA256="63dcce910a1a3abea812ff6c843004fcb02deec318e0e3baa287d15bcfd07de9"
|
||||
PKG_VERSION="0.9.36.6-Leia"
|
||||
PKG_SHA256="d150fc88f821b98c79c018a2c8de5ec8ea78da143c15559690d04c7c36ad38c6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-psx"
|
||||
PKG_VERSION="0.9.44.11-Leia"
|
||||
PKG_SHA256="00c7f1fe66992c1f8dc763f8289cdb90fb58745f04e67543f4258b9b48b2663d"
|
||||
PKG_VERSION="0.9.44.12-Leia"
|
||||
PKG_SHA256="26fcf0cdad7cc13ce2d160b7cc227d74161109e53a162a7010c39ca9051e6519"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-saturn"
|
||||
PKG_VERSION="1.22.2.8-Leia"
|
||||
PKG_SHA256="b70054849e99ccb114271c71e906248e687a601a0674b20548cfa07d30de84bd"
|
||||
PKG_VERSION="1.22.2.9-Leia"
|
||||
PKG_SHA256="939a3421ff62a721ee35fd57c88a7e6b7d27da575ba0d34ce39eb5c143185203"
|
||||
PKG_REV="1"
|
||||
# no openGL suport in retroplayer yet
|
||||
PKG_ARCH="none"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-supergrafx"
|
||||
PKG_VERSION="1.23.0.6-Leia"
|
||||
PKG_SHA256="4bd93dbcce83f40f60044fb9d31ae1a3c808380a6ecfbae364b0a15d6769b1ee"
|
||||
PKG_VERSION="1.23.0.7-Leia"
|
||||
PKG_SHA256="b78ea91838b1e77f6e83fef8964e4856bd7a5b198eaaf504bcdaa3d772ca436c"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-vb"
|
||||
PKG_VERSION="0.9.36.7-Leia"
|
||||
PKG_SHA256="5bc398524d22f40b4b65adafd0f816d8ab2e4d357ebc0c1d7f04a4187bf1567c"
|
||||
PKG_VERSION="0.9.36.8-Leia"
|
||||
PKG_SHA256="5d9c41cea5947adff053952b7c90c80f90a0c1642243efb5ce783557882bb860"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.beetle-wswan"
|
||||
PKG_VERSION="0.9.35.7-Leia"
|
||||
PKG_SHA256="d13b5b9708596853818d79c6378623a0e20db80c3b29363686e6720c1705026e"
|
||||
PKG_VERSION="0.9.35.8-Leia"
|
||||
PKG_SHA256="8b4b145912f6bff45b02a8c57f96947a4551c40f7b8d9a87b940756570e6afd5"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.bluemsx"
|
||||
PKG_VERSION="0.0.1.9-Leia"
|
||||
PKG_SHA256="722adda7ba5bdec48cdd6e8bbcd08b4b084db91201d4df7fb3e9747814987bba"
|
||||
PKG_VERSION="0.0.1.10-Leia"
|
||||
PKG_SHA256="9864d784b417c549e2d26b7e42609654eff282048f9641b70be776f1c23a0b21"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.bnes"
|
||||
PKG_VERSION="0.83.0.6-Leia"
|
||||
PKG_SHA256="3414c97a48a5c8bea21710732bce5b394654a982a451f5083a474a5b62d952db"
|
||||
PKG_VERSION="0.83.0.7-Leia"
|
||||
PKG_SHA256="3014397ee79b5a71c77a04d4d0fc86196b995fa85eccf89d73e50b0415e05bba"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.bsnes-mercury-accuracy"
|
||||
PKG_VERSION="0.94.0.4-Leia"
|
||||
PKG_SHA256="be7e6a2bd004a0c4ea16541f4bbf70965dee8c719ab185496ac734f8d2ff42e8"
|
||||
PKG_VERSION="0.94.0.5-Leia"
|
||||
PKG_SHA256="ea35dd9ee19bbbdd873f350936f9988474e7718e29aef4488067dbbdaa25168e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.bsnes-mercury-balanced"
|
||||
PKG_VERSION="0.94.0.4-Leia"
|
||||
PKG_SHA256="cc830240af7675352d75b0157f969cb0ec9b55f8ea2217e83e3fec08264492e4"
|
||||
PKG_VERSION="0.94.0.5-Leia"
|
||||
PKG_SHA256="81f0070e504c33795c95ea216fe225099b0813a7ffad4f20e564f590a57b2a62"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.bsnes-mercury-performance"
|
||||
PKG_VERSION="0.94.0.4-Leia"
|
||||
PKG_SHA256="d5a81c7e6173d9932050be025ea6fd31dcf85008e41fb8a62e9256c54f485e6e"
|
||||
PKG_VERSION="0.94.0.5-Leia"
|
||||
PKG_SHA256="21cb9b29ab62b794f1f571f136f607497ae468e78f9daced537a7b5861a565b8"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.cap32"
|
||||
PKG_VERSION="4.5.0.6-Leia"
|
||||
PKG_SHA256="f958c56c9b281f55be29901ea7a464c5e4c045371b3aae0d3d5df5938095bfff"
|
||||
PKG_VERSION="4.5.0.7-Leia"
|
||||
PKG_SHA256="80133172348f4bc93be956e7ba047dc3709fadafaee6e9adbe9b88b9f76876af"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.desmume"
|
||||
PKG_VERSION="0.0.1.4-Leia"
|
||||
PKG_SHA256="b04dfa794884dbdf41d74980980d513b2fc57d5bcd176b51d859be92febbbe80"
|
||||
PKG_VERSION="0.0.1.5-Leia"
|
||||
PKG_SHA256="57ac254e1b49041b3fb79ed475ae767fd012819d7b5b94c9b6f124cf431707f0"
|
||||
PKG_REV="1"
|
||||
# no openGL suport in retroplayer yet
|
||||
PKG_ARCH="none"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.dinothawr"
|
||||
PKG_VERSION="1.0.0.7-Leia"
|
||||
PKG_SHA256="557e1bcfc4f6aea6d7c9b801d95f3921d0f7ce0f6b53e5580558419936109a7b"
|
||||
PKG_VERSION="1.0.0.8-Leia"
|
||||
PKG_SHA256="9a0eae45381541d283858cdcac66b4e85a3cbbded19bf79ea7b7928c05ee5b91"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.dosbox"
|
||||
PKG_VERSION="0.74.0.5-Leia"
|
||||
PKG_SHA256="8b5a257a534743af5bb46e5dde2e75310a3b09e0bbc1e07c00046f3bcf1bde34"
|
||||
PKG_VERSION="0.74.0.6-Leia"
|
||||
PKG_SHA256="245f3e74c040f6d9d212b9b0d07df217547fc501ab15f0382636c7a29199fb70"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.fceumm"
|
||||
PKG_VERSION="0.0.1.13-Leia"
|
||||
PKG_SHA256="d789764d9012124c67a05b5fd0a71d1520d4dfae6da3655ac1584b21c5204436"
|
||||
PKG_VERSION="0.0.1.14-Leia"
|
||||
PKG_SHA256="517b60314ad6aa91c203bd8dbcdab1724876e7dfa3e31855e2eedab4218c9f8b"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.libretro.fmsx"
|
||||
PKG_VERSION="4.9.0.7-Leia"
|
||||
PKG_SHA256="b3f7734acde6ef091bc3a67dbc49bbda11ee799dfe7f66c39400a69c73a9f030"
|
||||
PKG_VERSION="4.9.0.8-Leia"
|
||||
PKG_SHA256="567b0707440c8bf81afd332bea29ab959b03cd633eb574db565d3576e563421e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user