Add media-sound/spotifyd and media-sound/spotify-tui

This commit is contained in:
2024-08-23 08:50:54 +02:00
parent 191a581b15
commit cb6985571a
4 changed files with 1415 additions and 0 deletions

View File

@ -0,0 +1,446 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="A Spotify playing daemon"
HOMEPAGE="https://github.com/Spotifyd/spotifyd"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
IUSE="pulseaudio alsa portaudio +dbus -systemd"
REQUIRED_USE="|| ( pulseaudio alsa portaudio )"
COMMON_DEPEND="
dbus? ( >=sys-apps/dbus-1.12.20-r1 )
alsa? ( >=media-libs/alsa-lib-1.2.5.1 )
pulseaudio? ( >=media-sound/pulseaudio-13.0-r1 )
portaudio? ( media-libs/portaudio )"
RDEPEND="
${COMMON_DEPEND}
>=media-libs/libogg-1.3.5"
DEPEND="${COMMON_DEPEND}"
BDEPEND=">=virtual/rust-1.53.0"
CRATES="
addr2line-0.17.0
adler-1.0.2
aes-0.6.0
aes-0.7.5
aes-ctr-0.6.0
aes-soft-0.6.4
aesni-0.10.0
aho-corasick-0.7.19
alsa-0.5.0
alsa-0.6.0
alsa-sys-0.3.1
android_system_properties-0.1.5
ansi_term-0.12.1
async-io-1.9.0
async-trait-0.1.57
atty-0.2.14
autocfg-1.1.0
backtrace-0.3.66
base64-0.13.0
bindgen-0.59.2
bitflags-1.3.2
block-buffer-0.9.0
block-buffer-0.10.3
block-modes-0.8.1
block-padding-0.2.1
boxfnonce-0.1.1
bumpalo-3.11.0
byteorder-1.4.3
bytes-0.4.12
bytes-0.5.6
bytes-1.2.1
cache-padded-1.2.0
cc-1.0.73
cesu8-1.1.0
cexpr-0.6.0
cfg-if-0.1.10
cfg-if-1.0.0
chrono-0.4.22
chunked_transfer-1.4.0
cipher-0.2.5
cipher-0.3.0
clang-sys-1.4.0
clap-2.34.0
cloudabi-0.0.3
color-eyre-0.5.11
color-spantrace-0.1.6
combine-4.6.6
concurrent-queue-1.2.4
cookie-0.16.0
cookie_store-0.16.1
core-foundation-0.9.3
core-foundation-sys-0.8.3
coreaudio-rs-0.10.0
coreaudio-sys-0.2.10
cpal-0.13.5
cpufeatures-0.2.5
crossbeam-utils-0.7.2
crypto-common-0.1.6
crypto-mac-0.11.1
ctr-0.6.0
daemonize-0.4.1
darling-0.13.4
darling_core-0.13.4
darling_macro-0.13.4
dbus-0.9.6
dbus-crossroads-0.4.0
dbus-tokio-0.7.5
derivative-2.2.0
digest-0.9.0
digest-0.10.5
dirs-4.0.0
dirs-sys-0.3.7
enumflags2-0.6.4
enumflags2_derive-0.6.4
env_logger-0.7.1
error-chain-0.11.0
eyre-0.6.8
fastrand-1.8.0
fern-0.6.1
fnv-1.0.7
form_urlencoded-1.1.0
fuchsia-zircon-0.3.3
fuchsia-zircon-sys-0.3.3
futures-0.1.31
futures-0.3.24
futures-channel-0.3.24
futures-core-0.3.24
futures-executor-0.3.24
futures-io-0.3.24
futures-lite-1.12.0
futures-macro-0.3.24
futures-sink-0.3.24
futures-task-0.3.24
futures-util-0.3.24
gcc-0.3.55
generic-array-0.14.6
gethostname-0.2.3
getrandom-0.2.7
gimli-0.26.2
glob-0.3.0
hashbrown-0.12.3
heck-0.3.3
heck-0.4.0
hermit-abi-0.1.19
hex-0.4.3
hkdf-0.11.0
hmac-0.11.0
hostname-0.3.1
http-0.2.8
http-body-0.4.5
httparse-1.8.0
httpdate-1.0.2
humantime-1.3.0
hyper-0.14.20
iana-time-zone-0.1.50
ident_case-1.0.1
idna-0.2.3
idna-0.3.0
if-addrs-0.6.7
if-addrs-sys-0.3.2
indenter-0.3.3
indexmap-1.9.1
instant-0.1.12
iovec-0.1.4
itoa-1.0.3
jni-0.19.0
jni-sys-0.3.0
jobserver-0.1.25
js-sys-0.3.60
kernel32-sys-0.2.2
keyring-0.10.4
lazy_static-1.4.0
lazycell-1.3.0
lewton-0.10.2
libc-0.2.133
libdbus-sys-0.2.2
libloading-0.7.3
libmdns-0.6.2
libpulse-binding-2.26.0
libpulse-simple-binding-2.25.0
libpulse-simple-sys-1.19.2
libpulse-sys-1.19.3
librespot-audio-0.2.0
librespot-connect-0.2.0
librespot-core-0.2.0
librespot-metadata-0.2.0
librespot-playback-0.2.0
librespot-protocol-0.2.0
librespot-tremor-0.2.0
lock_api-0.3.4
lock_api-0.4.9
log-0.4.17
mach-0.3.2
match_cfg-0.1.0
matches-0.1.9
maybe-async-0.2.6
maybe-uninit-2.0.0
memchr-2.5.0
memoffset-0.6.5
minimal-lexical-0.2.1
miniz_oxide-0.5.4
mio-0.6.23
mio-0.8.4
miow-0.2.2
multimap-0.8.3
nb-connect-1.2.0
ndk-0.6.0
ndk-context-0.1.1
ndk-glue-0.6.2
ndk-macro-0.3.0
ndk-sys-0.3.0
net2-0.2.37
nix-0.20.0
nix-0.22.3
nix-0.23.1
nom-7.1.1
num-0.4.0
num-bigint-0.4.3
num-complex-0.4.2
num-derive-0.3.3
num-integer-0.1.45
num-iter-0.1.43
num-rational-0.4.1
num-traits-0.2.15
num_cpus-1.13.1
num_enum-0.5.7
num_enum_derive-0.5.7
num_threads-0.1.6
object-0.29.0
oboe-0.4.6
oboe-sys-0.4.5
ogg-0.8.0
ogg-sys-0.0.9
once_cell-1.15.0
opaque-debug-0.3.0
owo-colors-1.3.0
parking-2.0.0
parking_lot-0.9.0
parking_lot-0.11.2
parking_lot_core-0.6.2
parking_lot_core-0.8.5
pbkdf2-0.8.0
peeking_take_while-0.1.2
percent-encoding-2.2.0
pin-project-lite-0.1.12
pin-project-lite-0.2.9
pin-utils-0.1.0
pkg-config-0.3.25
polling-2.3.0
portaudio-rs-0.3.2
portaudio-sys-0.1.1
ppv-lite86-0.2.16
priority-queue-1.2.3
proc-macro-crate-0.1.5
proc-macro-crate-1.2.1
proc-macro-error-1.0.4
proc-macro-error-attr-1.0.4
proc-macro2-1.0.44
protobuf-2.14.0
protobuf-codegen-2.14.0
protobuf-codegen-pure-2.14.0
psl-types-2.0.11
publicsuffix-2.2.2
quick-error-1.2.3
quote-1.0.21
rand-0.8.5
rand_chacha-0.3.1
rand_core-0.6.4
redox_syscall-0.1.57
redox_syscall-0.2.16
redox_users-0.4.3
regex-1.6.0
regex-syntax-0.6.27
remove_dir_all-0.5.3
ring-0.16.20
rodio-0.13.1
rspotify-0.11.5
rspotify-http-0.11.5
rspotify-macros-0.11.5
rspotify-model-0.11.5
rustc-demangle-0.1.21
rustc-hash-1.1.0
rustc-serialize-0.3.24
rustc_version-0.2.3
rustc_version-0.4.0
rustls-0.20.6
rustversion-1.0.9
ryu-1.0.11
same-file-1.0.6
scoped-tls-1.0.0
scopeguard-1.1.0
sct-0.7.0
secret-service-2.0.2
security-framework-2.7.0
security-framework-sys-2.6.1
semver-0.9.0
semver-1.0.14
semver-parser-0.7.0
serde-1.0.145
serde_derive-1.0.145
serde_json-1.0.85
serde_repr-0.1.9
sha-1-0.9.8
sha2-0.9.9
sha2-0.10.6
shannon-0.2.0
sharded-slab-0.1.4
shell-words-1.1.0
shlex-1.1.0
signal-hook-registry-1.4.0
slab-0.4.7
smallvec-0.6.14
smallvec-1.9.0
socket2-0.4.7
spin-0.5.2
static_assertions-1.1.0
stdweb-0.1.3
strsim-0.8.0
strsim-0.10.0
structopt-0.3.26
structopt-derive-0.4.18
strum-0.24.1
strum_macros-0.24.3
subtle-2.4.1
syn-1.0.100
synstructure-0.12.6
syslog-4.0.1
tempfile-3.3.0
termcolor-1.1.3
textwrap-0.11.0
thiserror-1.0.36
thiserror-impl-1.0.36
thread_local-1.1.4
time-0.1.44
time-0.3.14
time-macros-0.2.4
tinyvec-1.6.0
tinyvec_macros-0.1.0
tokio-0.2.25
tokio-1.21.1
tokio-compat-0.1.6
tokio-compat-02-0.2.0
tokio-current-thread-0.1.7
tokio-executor-0.1.10
tokio-io-0.1.13
tokio-macros-1.8.0
tokio-reactor-0.1.12
tokio-stream-0.1.10
tokio-sync-0.1.8
tokio-timer-0.2.13
tokio-util-0.6.10
toml-0.5.9
tower-service-0.3.2
tracing-0.1.36
tracing-attributes-0.1.22
tracing-core-0.1.29
tracing-error-0.1.2
tracing-subscriber-0.2.25
try-lock-0.2.3
typenum-1.15.0
unicode-bidi-0.3.8
unicode-ident-1.0.4
unicode-normalization-0.1.22
unicode-segmentation-1.10.0
unicode-width-0.1.10
unicode-xid-0.2.4
untrusted-0.7.1
ureq-2.5.0
url-2.3.1
uuid-0.8.2
valuable-0.1.0
vec_map-0.8.2
vergen-3.2.0
version_check-0.9.4
waker-fn-1.1.0
walkdir-2.3.2
want-0.3.0
wasi-0.10.0+wasi-snapshot-preview1
wasi-0.11.0+wasi-snapshot-preview1
wasm-bindgen-0.2.83
wasm-bindgen-backend-0.2.83
wasm-bindgen-macro-0.2.83
wasm-bindgen-macro-support-0.2.83
wasm-bindgen-shared-0.2.83
web-sys-0.3.60
webpki-0.22.0
webpki-roots-0.22.5
wepoll-ffi-0.1.2
whoami-0.9.0
winapi-0.2.8
winapi-0.3.9
winapi-build-0.1.1
winapi-i686-pc-windows-gnu-0.4.0
winapi-util-0.1.5
winapi-x86_64-pc-windows-gnu-0.4.0
windows-sys-0.36.1
windows_aarch64_msvc-0.36.1
windows_i686_gnu-0.36.1
windows_i686_msvc-0.36.1
windows_x86_64_gnu-0.36.1
windows_x86_64_msvc-0.36.1
ws2_32-sys-0.2.1
xdg-2.4.1
zbus-1.9.3
zbus_macros-1.9.3
zerocopy-0.3.0
zerocopy-derive-0.2.0
zvariant-2.10.0
zvariant_derive-2.10.0
"
inherit cargo
SRC_URI="
https://github.com/Spotifyd/spotifyd/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
$(cargo_crate_uris ${CRATES})"
# Don't search the gentoo mirrors for this, you won't find it
RESTRICT="mirror"
src_configure() {
local myfeatures=(
$(use alsa && echo "alsa_backend")
$(use pulseaudio && echo "pulseaudio_backend")
$(use portaudio && echo "portaudio_backend")
$(if use dbus ; then
echo "dbus_keyring"
echo "dbus_mpris"
fi)
)
cargo_src_configure --no-default-features
}
src_install() {
cargo_src_install
dodoc "${S}/README.md"
# install the .service file if systemd (work/contrib/spotifyd.service)
if ( use systemd ) then
USERSERVICEDIR="/etc/systemd/user/"
einfo "Copying systemd service file to ${USERSERVICEDIR}"
dodir $USERSERVICEDIR
insinto $USERSERVICEDIR
doins "${S}/contrib/spotifyd.service"
fi
}
pkg_postinst() {
einfo "You'll need to provide some info to the spotifyd process in order to play songs."
einfo "This can be done by starting spotifyd with the proper arguments or by"
einfo "setting up a configuration file at ~/.config/spotifyd ."
elog "See https://spotifyd.github.io/spotifyd/config/File.html for more information."
}