Unable to Install or Build termusic
Environment & Versions
- System: macOS Sequoia 15.3
- Termusic version: 0.9.1
- Rust version: 1.79.0
Logs
Terminal Output
Attempted Installation via Cargo
# First, we attempted to install termusic using cargo install (without features)
cargo install termusic
Updating crates.io index
Installing termusic v0.9.1
Updating crates.io index
Locking 425 packages to latest compatible versions
Adding colored v2.2.0 (available: v3.0.0)
Adding dirs v5.0.1 (available: v6.0.0)
Adding flexi_logger v0.28.5 (available: v0.29.8)
Adding image v0.24.9 (available: v0.25.5)
Adding lofty v0.20.1 (available: v0.22.2)
Adding rand v0.8.5 (available: v0.9.0)
Adding sanitize-filename v0.5.0 (available: v0.6.0)
Adding sysinfo v0.30.13 (available: v0.33.1)
Adding tui-realm-stdlib v1.2.0 (available: v1.3.2)
Adding tui-realm-treeview v1.1.0 (available: v1.2.0)
Adding tuirealm v1.8.0 (available: v1.9.2)
Adding unicode-width v0.1.14 (available: v0.2.0)
Adding viuer v0.7.1 (available: v0.9.1)
Compiling proc-macro2 v1.0.93
Compiling unicode-ident v1.0.17
Compiling libc v0.2.170
Compiling autocfg v1.4.0
Compiling cfg-if v1.0.0
Compiling memchr v2.7.4
Compiling pin-project-lite v0.2.16
Compiling smallvec v1.14.0
Compiling once_cell v1.20.3
Compiling futures-core v0.3.31
Compiling core-foundation-sys v0.8.7
Compiling bytes v1.10.0
Compiling itoa v1.0.14
Compiling serde v1.0.218
Compiling futures-sink v0.3.31
Compiling version_check v0.9.5
Compiling futures-channel v0.3.31
Compiling futures-io v0.3.31
Compiling futures-task v0.3.31
Compiling crossbeam-utils v0.8.21
Compiling pin-utils v0.1.0
Compiling simd-adler32 v0.3.7
Compiling stable_deref_trait v1.2.0
Compiling rustix v0.38.44
Compiling getrandom v0.3.1
Compiling byteorder v1.5.0
Compiling bitflags v1.3.2
Compiling adler2 v2.0.0
Compiling log v0.4.26
Compiling bitflags v2.8.0
Compiling miniz_oxide v0.8.5
Compiling aho-corasick v1.1.3
Compiling hashbrown v0.15.2
Compiling slab v0.4.9
Compiling num-traits v0.2.19
Compiling equivalent v1.0.2
Compiling regex-syntax v0.8.5
Compiling fnv v1.0.7
Compiling syn v1.0.109
Compiling http v1.2.0
Compiling litemap v0.7.5
Compiling writeable v0.5.5
Compiling lock_api v0.4.12
Compiling indexmap v2.7.1
Compiling signal-hook v0.3.17
Compiling parking_lot_core v0.9.10
Compiling anyhow v1.0.96
Compiling http-body v1.0.1
Compiling tracing-core v0.1.33
Compiling regex-automata v0.4.9
Compiling quote v1.0.38
Compiling syn v2.0.98
Compiling crc32fast v1.4.2
Compiling scopeguard v1.2.0
Compiling icu_locid_transform_data v1.5.0
Compiling tower-service v0.3.3
Compiling rayon-core v1.12.1
Compiling either v1.14.0
Compiling itertools v0.14.0
Compiling regex v1.11.1
Compiling socket2 v0.5.8
Compiling synstructure v0.13.1
Compiling mio v1.0.3
Compiling getrandom v0.2.15
Compiling core-foundation v0.9.4
Compiling crossbeam-epoch v0.9.18
Compiling signal-hook-registry v1.4.2
Compiling mio v0.8.11
Compiling crossbeam-deque v0.8.6
Compiling flate2 v1.1.0
Compiling icu_properties_data v1.5.0
Compiling httparse v1.10.0
Compiling serde_derive v1.0.218
Compiling futures-macro v0.3.31
Compiling zerofrom-derive v0.1.6
Compiling yoke-derive v0.7.5
Compiling tokio-macros v2.5.0
Compiling zerovec-derive v0.10.3
Compiling futures-util v0.3.31
Compiling tokio v1.43.0
Compiling displaydoc v0.2.5
Compiling zerofrom v0.1.6
Compiling icu_provider_macros v1.5.0
Compiling zerocopy-derive v0.7.35
Compiling tracing-attributes v0.1.28
Compiling strsim v0.11.1
Compiling ident_case v1.0.1
Compiling percent-encoding v2.3.1
Compiling thiserror v1.0.69
Compiling darling_core v0.20.10
Compiling zerocopy v0.7.35
Compiling tracing v0.1.41
Compiling thiserror-impl v1.0.69
Compiling prost-derive v0.13.5
Compiling errno v0.3.10
Compiling signal-hook-mio v0.2.4
Compiling utf8_iter v1.0.4
Compiling try-lock v0.2.5
Compiling icu_normalizer_data v1.5.0
Compiling utf16_iter v1.0.5
Compiling write16 v1.0.0
Compiling atomic-waker v1.1.2
Compiling want v0.3.1
Compiling darling_macro v0.20.10
Compiling iana-time-zone v0.1.61
Compiling unicode-width v0.1.14
Compiling httpdate v1.0.3
Compiling parking_lot v0.12.3
Compiling ryu v1.0.19
Compiling tower-layer v0.3.3
Compiling lazy_static v1.5.0
Compiling fastrand v2.3.0
Compiling darling v0.20.10
Compiling chrono v0.4.40
Compiling security-framework-sys v2.14.0
Compiling ahash v0.8.11
Compiling sync_wrapper v1.0.2
Compiling heck v0.5.0
Compiling prettyplease v0.2.29
Compiling rayon v1.10.0
Compiling serde_json v1.0.139
Compiling powerfmt v0.2.0
Compiling shlex v1.3.0
Compiling time-core v0.1.2
Compiling bytemuck v1.21.0
Compiling num-conv v0.1.0
Compiling native-tls v0.2.14
Compiling time-macros v0.2.19
Compiling cc v1.2.16
Compiling yoke v0.7.5
Compiling http-body-util v0.1.2
Compiling deranged v0.3.11
Compiling prost v0.13.5
Compiling ppv-lite86 v0.2.20
Compiling tokio-util v0.7.13
Compiling h2 v0.4.8
Compiling security-framework v2.11.1
Compiling crossterm v0.25.0
Compiling lazy-regex-proc_macros v2.4.1
Compiling hyper v1.6.0
Compiling tempfile v3.17.1
Compiling form_urlencoded v1.2.1
Compiling rand_core v0.6.4
Compiling cookie v0.18.1
Compiling encoding_rs v0.8.35
Compiling cassowary v0.3.0
Compiling object v0.36.7
Compiling derive_builder_core v0.20.2
Compiling weezl v0.1.8
Compiling hyper-util v0.1.10
Compiling unicode-segmentation v1.12.0
Compiling fixedbitset v0.5.7
Compiling pkg-config v0.3.31
Compiling rustversion v1.0.19
Compiling mime v0.3.17
Compiling jetscii v0.5.3
Compiling system-configuration-sys v0.6.0
Compiling vcpkg v0.2.15
Compiling time v0.3.37
Compiling libsqlite3-sys v0.30.1
Compiling zerovec v0.10.4
Compiling petgraph v0.7.1
Compiling tui v0.19.0
Compiling derive_builder_macro v0.20.2
Compiling rand_chacha v0.3.1
Compiling lazy-regex v2.5.0
Compiling prost-types v0.13.5
Compiling toml_datetime v0.6.8
Compiling serde_spanned v0.6.8
Compiling tower v0.5.2
Compiling jpeg-decoder v0.3.1
Compiling tuirealm_derive v1.0.0
Compiling core-graphics-types v0.1.3
Compiling malloc_buf v0.0.6
Compiling indexmap v1.9.3
Compiling uncased v0.9.10
Compiling fdeflate v0.3.7
Compiling zune-inflate v0.2.54
Compiling half v2.4.1
Compiling lebe v0.5.2
Compiling smawk v0.3.2
Compiling color_quant v1.1.0
Compiling psl-types v2.0.11
Compiling option-ext v0.2.0
Compiling bit_field v0.10.2
Compiling litrs v0.4.1
Compiling foreign-types-shared v0.1.1
Compiling paste v1.0.15
Compiling winnow v0.7.3
Compiling unicode-linebreak v0.1.5
Compiling multimap v0.10.0
Compiling gimli v0.31.1
Compiling camino v1.1.9
Compiling hashbrown v0.14.5
Compiling prost-build v0.13.5
Compiling document-features v0.2.11
Compiling foreign-types v0.3.2
Compiling exr v1.73.0
Compiling dirs-sys v0.4.1
Compiling gif v0.13.1
Compiling png v0.17.16
Compiling toml_edit v0.22.24
Compiling addr2line v0.24.2
Compiling tiff v0.9.1
Compiling objc v0.2.7
Compiling rand v0.8.5
Compiling derive_builder v0.20.2
Compiling tokio-native-tls v0.3.1
Compiling quick-xml v0.37.2
Compiling qoi v0.4.1
Compiling rgb v0.8.50
Compiling diligent-date-parser v0.1.5
Compiling hard-xml-derive v1.36.0
Compiling async-trait v0.1.86
Compiling pin-project-internal v1.1.9
Compiling concurrent-queue v2.5.0
Compiling figment v0.10.19
Compiling never v0.1.0
Compiling semver v1.0.25
Compiling hashbrown v0.12.3
Compiling block v0.1.6
Compiling base64 v0.22.1
Compiling xmlparser v0.13.6
Compiling rustls-pki-types v1.11.0
Compiling rustc-demangle v0.1.24
Compiling tinystr v0.7.6
Compiling icu_collections v1.5.0
Compiling parking v2.2.1
Compiling pinyin v0.10.0
Compiling utf8parse v0.2.2
Compiling anstyle-parse v0.2.6
Compiling event-listener v5.4.0
Compiling rustls-pemfile v2.2.0
Compiling hard-xml v1.36.0
Compiling pin-project v1.1.9
Compiling tuirealm v1.8.0
Compiling cocoa-foundation v0.1.2
Compiling backtrace v0.3.74
Compiling axum-core v0.4.5
Compiling ansi_colours v1.2.3
Compiling image v0.24.9
Compiling hyper-tls v0.6.0
Compiling toml v0.8.20
Compiling system-configuration v0.6.1
Compiling dirs v5.0.1
Compiling core-graphics v0.22.3
Compiling atom_syndication v0.12.7
Compiling hashlink v0.9.1
Compiling tonic-build v0.12.3
Compiling serde_urlencoded v0.7.1
Compiling async-compression v0.4.20
Compiling futures-executor v0.3.31
Compiling crossterm v0.27.0
Compiling num-integer v0.1.46
Compiling lofty_attr v0.11.1
Compiling async-stream-impl v0.3.6
Compiling icu_locid v1.5.0
Compiling console v0.15.10
Compiling bstr v1.11.3
Compiling icu_provider v1.5.0
Compiling include_dir_macros v0.7.4
Compiling ogg_pager v0.6.1
Compiling os_str_bytes v6.6.1
Compiling anstyle-query v1.1.2
Compiling is_terminal_polyfill v1.70.1
Compiling entities v1.0.1
Compiling base64 v0.21.7
Compiling ipnet v2.11.0
Compiling fallible-iterator v0.3.0
Compiling matchit v0.7.3
Compiling unsafe-libyaml v0.2.11
Compiling termcolor v1.4.1
Compiling same-file v1.0.6
Compiling anstyle v1.0.10
Compiling colorchoice v1.0.3
Compiling souvlaki v0.7.3
Compiling data-encoding v2.8.0
Compiling fallible-streaming-iterator v0.1.9
Compiling anstream v0.6.18
Compiling opml v1.1.6
Compiling lofty v0.20.1
Compiling serde_yaml v0.9.34+deprecated
Compiling walkdir v2.5.0
Compiling viuer v0.7.1
Compiling tower v0.4.13
Compiling escaper v0.1.1
Compiling shellexpand v3.1.0
Compiling include_dir v0.7.4
Compiling async-stream v0.3.6
Compiling num-bigint v0.4.6
Compiling futures v0.3.31
Compiling termusic-playback v0.9.1
Compiling rss v2.0.12
Compiling cocoa v0.24.1
Compiling pathdiff v0.2.3
Compiling event-listener-strategy v0.5.3
Compiling ytd-rs v0.1.7
Compiling textwrap v0.16.1
Compiling hyper-timeout v0.5.2
Compiling tokio-stream v0.1.17
Compiling rfc822_sanitizer v0.3.6
Compiling sanitize-filename v0.5.0
Compiling id3 v1.16.2
Compiling serde_repr v0.1.19
Compiling uuid v0.8.2
Compiling quick-xml v0.36.2
Compiling dispatch v0.2.0
Compiling md5 v0.7.0
Compiling libaes v0.7.0
Compiling wildmatch v2.4.0
Compiling clap_lex v0.7.4
Compiling hex v0.4.3
Compiling urlencoding v2.1.3
Compiling clap_builder v4.5.31
Compiling icu_locid_transform v1.5.0
Compiling discord-rich-presence v0.2.5
Compiling async-channel v2.3.1
Compiling icu_properties v1.5.1
Compiling textwrap v0.15.2
Compiling clap_derive v4.5.28
Compiling orange-trees v0.1.3
Compiling glob v0.3.2
Compiling termusic v0.9.1
Compiling nu-ansi-term v0.50.1
Compiling icu_normalizer v1.5.0
Compiling flexi_logger v0.28.5
Compiling clap v4.5.31
Compiling tui-realm-stdlib v1.2.0
Compiling idna_adapter v1.2.0
Compiling tui-realm-treeview v1.1.0
Compiling idna v1.0.3
Compiling publicsuffix v2.3.0
Compiling url v2.5.4
Compiling sysinfo v0.30.13
Compiling cookie_store v0.21.1
Compiling colored v2.2.0
Compiling axum v0.7.9
Compiling tonic v0.12.3
Compiling reqwest v0.12.12
Compiling rusqlite v0.32.1
Compiling termusic-lib v0.9.1
error: No useable backend feature!
--> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:139:9
|
139 | compile_error!("No useable backend feature!");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0308]: mismatched types
--> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:130:72
|
130 | fn new_default(config: &ServerOverlay, cmd_tx: PlayerCmdSender) -> Self {
| ----------- ^^^^ expected `Backend`, found `()`
| |
| implicitly returns `()` as its body has no tail or `return` expression
error[E0004]: non-exhaustive patterns: type `&Backend` is non-empty
--> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:165:15
|
165 | match self {
| ^^^^
|
note: `Backend` defined here
--> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:100:10
|
100 | pub enum Backend {
| ^^^^^^^
= note: the matched value is of type `&Backend`
= note: references are always considered inhabited
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
|
165 ~ match self {
166 + _ => todo!(),
167 + }
|
error[E0004]: non-exhaustive patterns: type `&mut Backend` is non-empty
--> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:177:15
|
177 | match self {
| ^^^^
|
note: `Backend` defined here
--> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:100:10
|
100 | pub enum Backend {
| ^^^^^^^
= note: the matched value is of type `&mut Backend`
= note: references are always considered inhabited
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
|
177 ~ match self {
178 + _ => todo!(),
179 + }
|
Some errors have detailed explanations: E0004, E0308.
For more information about an error, try `rustc --explain E0004`.
error: could not compile `termusic-playback` (lib) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
error: failed to compile `termusic v0.9.1`, intermediate artifacts can be found at `/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-install04SgyA`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
# Since the default install failed, we explicitly tried enabling MPV as the backend
cargo install termusic --features="mpv"
Updating crates.io index
Installing termusic v0.9.1
error: failed to compile `termusic v0.9.1`, intermediate artifacts can be found at `/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-installcRoPVy`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Caused by:
the package 'termusic' does not contain this feature: mpv
# We then tried using the Symphonia backend
❯ cargo install termusic --features="symphonia"
Updating crates.io index
Installing termusic v0.9.1
error: failed to compile `termusic v0.9.1`, intermediate artifacts can be found at `/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-installpewTCY`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Caused by:
the package 'termusic' does not contain this feature: symphonia
Attempted Manual Build from Source
# Since `cargo install` was failing, we proceeded with a manual build from source
❯ git clone https://github.com/tramhao/termusic.git
❯ cd termusic
# Attempting to build from source with MPV backend
cargo build --release --no-default-features --features "playback/mpv"
error: none of the selected packages contains this feature: playback/mpv
selected packages: termusic-lib, termusic-playback, termusic-server, termusic
# Repeating the process with the Symphonia backend
❯ cargo build --release --no-default-features --features "playback/rusty"
error: none of the selected packages contains this feature: playback/rusty
selected packages: termusic-lib, termusic-playback, termusic-server, termusic
Description of the Problem
According to the documentation, termusic supports multiple playback backends, including mpv and symphonia. However, installation and feature selection are not working as expected.
Installation Issues
- Running
cargo install termusicwithout any features fails, so we attempted using--features="mpv"to explicitly enable a backend, but it was not recognized. cargo install termusic --features="symphonia"also fails for the same reason.
Manual Build Issues
- Since
cargo installwas failing, we attempted to build from source, ensuring we first cloned the repository and navigated into it before executingcargo build. - Attempting to build from source with
cargo build --release --no-default-features --features "playback/mpv"also fails, indicating that none of the selected packages contain this feature. Cargo.tomldoes not define[features]explicitly, meaning backend selection may not be implemented correctly.- We systematically ruled out backend-specific issues by repeating the build process for different backends (both MPV and Symphonia) with the same result.
Expected Behavior
A clear way to select the playback backend, either via cargo install or when building from source, as stated in the documentation.
Steps to Reproduce
Attempted Installation via Cargo
- Try installing termusic normally:
cargo install termusic - Since that fails, explicitly try installing with a backend:
cargo install termusic --features="mpv" - Since that also fails, try another backend:
cargo install termusic --features="symphonia"
Attempted Manual Build from Source
- Clone the repository and navigate into it:
git clone https://github.com/tramhao/termusic.git cd termusic - Attempt to build from source with MPV backend:
cargo build --release --no-default-features --features "playback/mpv" - Repeat with another backend to confirm:
cargo build --release --no-default-features --features "playback/rusty" - Observe that none of the feature selections work and installation remains impossible.
Do you mean macOS Sequoia? Because there’s no version 15.3 with codename Ventura On Fri, Feb 28, 2025 at 16:34 Else00 @.***> wrote:
Environment & Versions
- System: macOS Ventura 15.3
- Termusic version: 0.9.1
- Rust version: 1.79.0
Logs Terminal Output Attempted Installation via Cargo
First, we attempted to install termusic using cargo install (without features)
cargo install termusic Updating crates.io index Installing termusic v0.9.1 Updating crates.io index Locking 425 packages to latest compatible versions Adding colored v2.2.0 (available: v3.0.0) Adding dirs v5.0.1 (available: v6.0.0) Adding flexi_logger v0.28.5 (available: v0.29.8) Adding image v0.24.9 (available: v0.25.5) Adding lofty v0.20.1 (available: v0.22.2) Adding rand v0.8.5 (available: v0.9.0) Adding sanitize-filename v0.5.0 (available: v0.6.0) Adding sysinfo v0.30.13 (available: v0.33.1) Adding tui-realm-stdlib v1.2.0 (available: v1.3.2) Adding tui-realm-treeview v1.1.0 (available: v1.2.0) Adding tuirealm v1.8.0 (available: v1.9.2) Adding unicode-width v0.1.14 (available: v0.2.0) Adding viuer v0.7.1 (available: v0.9.1) Compiling proc-macro2 v1.0.93 Compiling unicode-ident v1.0.17 Compiling libc v0.2.170 Compiling autocfg v1.4.0 Compiling cfg-if v1.0.0 Compiling memchr v2.7.4 Compiling pin-project-lite v0.2.16 Compiling smallvec v1.14.0 Compiling once_cell v1.20.3 Compiling futures-core v0.3.31 Compiling core-foundation-sys v0.8.7 Compiling bytes v1.10.0 Compiling itoa v1.0.14 Compiling serde v1.0.218 Compiling futures-sink v0.3.31 Compiling version_check v0.9.5 Compiling futures-channel v0.3.31 Compiling futures-io v0.3.31 Compiling futures-task v0.3.31 Compiling crossbeam-utils v0.8.21 Compiling pin-utils v0.1.0 Compiling simd-adler32 v0.3.7 Compiling stable_deref_trait v1.2.0 Compiling rustix v0.38.44 Compiling getrandom v0.3.1 Compiling byteorder v1.5.0 Compiling bitflags v1.3.2 Compiling adler2 v2.0.0 Compiling log v0.4.26 Compiling bitflags v2.8.0 Compiling miniz_oxide v0.8.5 Compiling aho-corasick v1.1.3 Compiling hashbrown v0.15.2 Compiling slab v0.4.9 Compiling num-traits v0.2.19 Compiling equivalent v1.0.2 Compiling regex-syntax v0.8.5 Compiling fnv v1.0.7 Compiling syn v1.0.109 Compiling http v1.2.0 Compiling litemap v0.7.5 Compiling writeable v0.5.5 Compiling lock_api v0.4.12 Compiling indexmap v2.7.1 Compiling signal-hook v0.3.17 Compiling parking_lot_core v0.9.10 Compiling anyhow v1.0.96 Compiling http-body v1.0.1 Compiling tracing-core v0.1.33 Compiling regex-automata v0.4.9 Compiling quote v1.0.38 Compiling syn v2.0.98 Compiling crc32fast v1.4.2 Compiling scopeguard v1.2.0 Compiling icu_locid_transform_data v1.5.0 Compiling tower-service v0.3.3 Compiling rayon-core v1.12.1 Compiling either v1.14.0 Compiling itertools v0.14.0 Compiling regex v1.11.1 Compiling socket2 v0.5.8 Compiling synstructure v0.13.1 Compiling mio v1.0.3 Compiling getrandom v0.2.15 Compiling core-foundation v0.9.4 Compiling crossbeam-epoch v0.9.18 Compiling signal-hook-registry v1.4.2 Compiling mio v0.8.11 Compiling crossbeam-deque v0.8.6 Compiling flate2 v1.1.0 Compiling icu_properties_data v1.5.0 Compiling httparse v1.10.0 Compiling serde_derive v1.0.218 Compiling futures-macro v0.3.31 Compiling zerofrom-derive v0.1.6 Compiling yoke-derive v0.7.5 Compiling tokio-macros v2.5.0 Compiling zerovec-derive v0.10.3 Compiling futures-util v0.3.31 Compiling tokio v1.43.0 Compiling displaydoc v0.2.5 Compiling zerofrom v0.1.6 Compiling icu_provider_macros v1.5.0 Compiling zerocopy-derive v0.7.35 Compiling tracing-attributes v0.1.28 Compiling strsim v0.11.1 Compiling ident_case v1.0.1 Compiling percent-encoding v2.3.1 Compiling thiserror v1.0.69 Compiling darling_core v0.20.10 Compiling zerocopy v0.7.35 Compiling tracing v0.1.41 Compiling thiserror-impl v1.0.69 Compiling prost-derive v0.13.5 Compiling errno v0.3.10 Compiling signal-hook-mio v0.2.4 Compiling utf8_iter v1.0.4 Compiling try-lock v0.2.5 Compiling icu_normalizer_data v1.5.0 Compiling utf16_iter v1.0.5 Compiling write16 v1.0.0 Compiling atomic-waker v1.1.2 Compiling want v0.3.1 Compiling darling_macro v0.20.10 Compiling iana-time-zone v0.1.61 Compiling unicode-width v0.1.14 Compiling httpdate v1.0.3 Compiling parking_lot v0.12.3 Compiling ryu v1.0.19 Compiling tower-layer v0.3.3 Compiling lazy_static v1.5.0 Compiling fastrand v2.3.0 Compiling darling v0.20.10 Compiling chrono v0.4.40 Compiling security-framework-sys v2.14.0 Compiling ahash v0.8.11 Compiling sync_wrapper v1.0.2 Compiling heck v0.5.0 Compiling prettyplease v0.2.29 Compiling rayon v1.10.0 Compiling serde_json v1.0.139 Compiling powerfmt v0.2.0 Compiling shlex v1.3.0 Compiling time-core v0.1.2 Compiling bytemuck v1.21.0 Compiling num-conv v0.1.0 Compiling native-tls v0.2.14 Compiling time-macros v0.2.19 Compiling cc v1.2.16 Compiling yoke v0.7.5 Compiling http-body-util v0.1.2 Compiling deranged v0.3.11 Compiling prost v0.13.5 Compiling ppv-lite86 v0.2.20 Compiling tokio-util v0.7.13 Compiling h2 v0.4.8 Compiling security-framework v2.11.1 Compiling crossterm v0.25.0 Compiling lazy-regex-proc_macros v2.4.1 Compiling hyper v1.6.0 Compiling tempfile v3.17.1 Compiling form_urlencoded v1.2.1 Compiling rand_core v0.6.4 Compiling cookie v0.18.1 Compiling encoding_rs v0.8.35 Compiling cassowary v0.3.0 Compiling object v0.36.7 Compiling derive_builder_core v0.20.2 Compiling weezl v0.1.8 Compiling hyper-util v0.1.10 Compiling unicode-segmentation v1.12.0 Compiling fixedbitset v0.5.7 Compiling pkg-config v0.3.31 Compiling rustversion v1.0.19 Compiling mime v0.3.17 Compiling jetscii v0.5.3 Compiling system-configuration-sys v0.6.0 Compiling vcpkg v0.2.15 Compiling time v0.3.37 Compiling libsqlite3-sys v0.30.1 Compiling zerovec v0.10.4 Compiling petgraph v0.7.1 Compiling tui v0.19.0 Compiling derive_builder_macro v0.20.2 Compiling rand_chacha v0.3.1 Compiling lazy-regex v2.5.0 Compiling prost-types v0.13.5 Compiling toml_datetime v0.6.8 Compiling serde_spanned v0.6.8 Compiling tower v0.5.2 Compiling jpeg-decoder v0.3.1 Compiling tuirealm_derive v1.0.0 Compiling core-graphics-types v0.1.3 Compiling malloc_buf v0.0.6 Compiling indexmap v1.9.3 Compiling uncased v0.9.10 Compiling fdeflate v0.3.7 Compiling zune-inflate v0.2.54 Compiling half v2.4.1 Compiling lebe v0.5.2 Compiling smawk v0.3.2 Compiling color_quant v1.1.0 Compiling psl-types v2.0.11 Compiling option-ext v0.2.0 Compiling bit_field v0.10.2 Compiling litrs v0.4.1 Compiling foreign-types-shared v0.1.1 Compiling paste v1.0.15 Compiling winnow v0.7.3 Compiling unicode-linebreak v0.1.5 Compiling multimap v0.10.0 Compiling gimli v0.31.1 Compiling camino v1.1.9 Compiling hashbrown v0.14.5 Compiling prost-build v0.13.5 Compiling document-features v0.2.11 Compiling foreign-types v0.3.2 Compiling exr v1.73.0 Compiling dirs-sys v0.4.1 Compiling gif v0.13.1 Compiling png v0.17.16 Compiling toml_edit v0.22.24 Compiling addr2line v0.24.2 Compiling tiff v0.9.1 Compiling objc v0.2.7 Compiling rand v0.8.5 Compiling derive_builder v0.20.2 Compiling tokio-native-tls v0.3.1 Compiling quick-xml v0.37.2 Compiling qoi v0.4.1 Compiling rgb v0.8.50 Compiling diligent-date-parser v0.1.5 Compiling hard-xml-derive v1.36.0 Compiling async-trait v0.1.86 Compiling pin-project-internal v1.1.9 Compiling concurrent-queue v2.5.0 Compiling figment v0.10.19 Compiling never v0.1.0 Compiling semver v1.0.25 Compiling hashbrown v0.12.3 Compiling block v0.1.6 Compiling base64 v0.22.1 Compiling xmlparser v0.13.6 Compiling rustls-pki-types v1.11.0 Compiling rustc-demangle v0.1.24 Compiling tinystr v0.7.6 Compiling icu_collections v1.5.0 Compiling parking v2.2.1 Compiling pinyin v0.10.0 Compiling utf8parse v0.2.2 Compiling anstyle-parse v0.2.6 Compiling event-listener v5.4.0 Compiling rustls-pemfile v2.2.0 Compiling hard-xml v1.36.0 Compiling pin-project v1.1.9 Compiling tuirealm v1.8.0 Compiling cocoa-foundation v0.1.2 Compiling backtrace v0.3.74 Compiling axum-core v0.4.5 Compiling ansi_colours v1.2.3 Compiling image v0.24.9 Compiling hyper-tls v0.6.0 Compiling toml v0.8.20 Compiling system-configuration v0.6.1 Compiling dirs v5.0.1 Compiling core-graphics v0.22.3 Compiling atom_syndication v0.12.7 Compiling hashlink v0.9.1 Compiling tonic-build v0.12.3 Compiling serde_urlencoded v0.7.1 Compiling async-compression v0.4.20 Compiling futures-executor v0.3.31 Compiling crossterm v0.27.0 Compiling num-integer v0.1.46 Compiling lofty_attr v0.11.1 Compiling async-stream-impl v0.3.6 Compiling icu_locid v1.5.0 Compiling console v0.15.10 Compiling bstr v1.11.3 Compiling icu_provider v1.5.0 Compiling include_dir_macros v0.7.4 Compiling ogg_pager v0.6.1 Compiling os_str_bytes v6.6.1 Compiling anstyle-query v1.1.2 Compiling is_terminal_polyfill v1.70.1 Compiling entities v1.0.1 Compiling base64 v0.21.7 Compiling ipnet v2.11.0 Compiling fallible-iterator v0.3.0 Compiling matchit v0.7.3 Compiling unsafe-libyaml v0.2.11 Compiling termcolor v1.4.1 Compiling same-file v1.0.6 Compiling anstyle v1.0.10 Compiling colorchoice v1.0.3 Compiling souvlaki v0.7.3 Compiling data-encoding v2.8.0 Compiling fallible-streaming-iterator v0.1.9 Compiling anstream v0.6.18 Compiling opml v1.1.6 Compiling lofty v0.20.1 Compiling serde_yaml v0.9.34+deprecated Compiling walkdir v2.5.0 Compiling viuer v0.7.1 Compiling tower v0.4.13 Compiling escaper v0.1.1 Compiling shellexpand v3.1.0 Compiling include_dir v0.7.4 Compiling async-stream v0.3.6 Compiling num-bigint v0.4.6 Compiling futures v0.3.31 Compiling termusic-playback v0.9.1 Compiling rss v2.0.12 Compiling cocoa v0.24.1 Compiling pathdiff v0.2.3 Compiling event-listener-strategy v0.5.3 Compiling ytd-rs v0.1.7 Compiling textwrap v0.16.1 Compiling hyper-timeout v0.5.2 Compiling tokio-stream v0.1.17 Compiling rfc822_sanitizer v0.3.6 Compiling sanitize-filename v0.5.0 Compiling id3 v1.16.2 Compiling serde_repr v0.1.19 Compiling uuid v0.8.2 Compiling quick-xml v0.36.2 Compiling dispatch v0.2.0 Compiling md5 v0.7.0 Compiling libaes v0.7.0 Compiling wildmatch v2.4.0 Compiling clap_lex v0.7.4 Compiling hex v0.4.3 Compiling urlencoding v2.1.3 Compiling clap_builder v4.5.31 Compiling icu_locid_transform v1.5.0 Compiling discord-rich-presence v0.2.5 Compiling async-channel v2.3.1 Compiling icu_properties v1.5.1 Compiling textwrap v0.15.2 Compiling clap_derive v4.5.28 Compiling orange-trees v0.1.3 Compiling glob v0.3.2 Compiling termusic v0.9.1 Compiling nu-ansi-term v0.50.1 Compiling icu_normalizer v1.5.0 Compiling flexi_logger v0.28.5 Compiling clap v4.5.31 Compiling tui-realm-stdlib v1.2.0 Compiling idna_adapter v1.2.0 Compiling tui-realm-treeview v1.1.0 Compiling idna v1.0.3 Compiling publicsuffix v2.3.0 Compiling url v2.5.4 Compiling sysinfo v0.30.13 Compiling cookie_store v0.21.1 Compiling colored v2.2.0 Compiling axum v0.7.9 Compiling tonic v0.12.3 Compiling reqwest v0.12.12 Compiling rusqlite v0.32.1 Compiling termusic-lib v0.9.1 error: No useable backend feature! --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:139:9 | 139 | compile_error!("No useable backend feature!"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0308]: mismatched types --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:130:72 | 130 | fn new_default(config: &ServerOverlay, cmd_tx: PlayerCmdSender) -> Self { | ----------- ^^^^ expected
Backend, found()| | | implicitly returns()as its body has no tail orreturnexpressionerror[E0004]: non-exhaustive patterns: type&Backendis non-empty --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:165:15 |165 | match self { | ^^^^ |note:Backenddefined here --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:100:10 |100 | pub enum Backend { | ^^^^^^^ = note: the matched value is of type&Backend= note: references are always considered inhabitedhelp: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown |165 ~ match self {166 + _ => todo!(),167 + } |error[E0004]: non-exhaustive patterns: type&mut Backendis non-empty --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:177:15 |177 | match self { | ^^^^ |note:Backenddefined here --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:100:10 |100 | pub enum Backend { | ^^^^^^^ = note: the matched value is of type&mut Backend= note: references are always considered inhabitedhelp: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown |177 ~ match self {178 + _ => todo!(),179 + } |Some errors have detailed explanations: E0004, E0308.For more information about an error, tryrustc --explain E0004.error: could not compiletermusic-playback(lib) due to 4 previous errorswarning: build failed, waiting for other jobs to finish...error: failed to compiletermusic v0.9.1, intermediate artifacts can be found at/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-install04SgyA.To reuse those artifacts with a future compilation, set the environment variableCARGO_TARGET_DIRto that path.# Since the default install failed, we explicitly tried enabling MPV as the backendcargo install termusic --features="mpv" Updating crates.io index Installing termusic v0.9.1error: failed to compiletermusic v0.9.1, intermediate artifacts can be found at/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-installcRoPVy.To reuse those artifacts with a future compilation, set the environment variableCARGO_TARGET_DIRto that path.Caused by: the package 'termusic' does not contain this feature: mpv# We then tried using the Symphonia backend❯ cargo install termusic --features="symphonia" Updating crates.io index Installing termusic v0.9.1error: failed to compiletermusic v0.9.1, intermediate artifacts can be found at/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-installpewTCY.To reuse those artifacts with a future compilation, set the environment variableCARGO_TARGET_DIRto that path.Caused by: the package 'termusic' does not contain this feature: symphoniaAttempted Manual Build from Source
Since
cargo installwas failing, we proceeded with a manual build from source❯ git clone https://github.com/tramhao/termusic.git ❯ cd termusic
Attempting to build from source with MPV backend
cargo build --release --no-default-features --features "playback/mpv" error: none of the selected packages contains this feature: playback/mpv selected packages: termusic-lib, termusic-playback, termusic-server, termusic
Repeating the process with the Symphonia backend
❯ cargo build --release --no-default-features --features "playback/rusty" error: none of the selected packages contains this feature: playback/rusty selected packages: termusic-lib, termusic-playback, termusic-server, termusic
Description of the Problem
According to the documentation, termusic supports multiple playback backends, including mpv and symphonia. However, installation and feature selection are not working as expected. Installation Issues
- Running cargo install termusic without any features fails, so we attempted using --features="mpv" to explicitly enable a backend, but it was not recognized.
- cargo install termusic --features="symphonia" also fails for the same reason.
Manual Build Issues
- Since cargo install was failing, we attempted to build from source, ensuring we first cloned the repository and navigated into it before executing cargo build.
- Attempting to build from source with cargo build --release --no-default-features --features "playback/mpv" also fails, indicating that none of the selected packages contain this feature.
- Cargo.toml does not define [features] explicitly, meaning backend selection may not be implemented correctly.
- We systematically ruled out backend-specific issues by repeating the build process for different backends (both MPV and Symphonia) with the same result.
Expected Behavior
A clear way to select the playback backend, either via cargo install or when building from source, as stated in the documentation. Steps to Reproduce Attempted Installation via Cargo
- Try installing termusic normally:
cargo install termusic
- Since that fails, explicitly try installing with a backend:
cargo install termusic --features="mpv"
- Since that also fails, try another backend:
cargo install termusic --features="symphonia"
Attempted Manual Build from Source
- Clone the repository and navigate into it:
git clone https://github.com/tramhao/termusic.gitcd termusic
- Attempt to build from source with MPV backend:
cargo build --release --no-default-features --features "playback/mpv"
- Repeat with another backend to confirm:
cargo build --release --no-default-features --features "playback/rusty"
- Observe that none of the feature selections work and installation remains impossible.
— Reply to this email directly, view it on GitHub https://github.com/tramhao/termusic/issues/430, or unsubscribe https://github.com/notifications/unsubscribe-auth/BMLYYWSU4746OBXYPEBU2P32SBNHVAVCNFSM6AAAAABYCIVGQ6VHI2DSMVQWIX3LMV43ASLTON2WKOZSHA4DOMJQG42TENY . You are receiving this because you are subscribed to this thread.Message ID: @.***> [image: Else00]Else00 created an issue (tramhao/termusic#430) https://github.com/tramhao/termusic/issues/430 Environment & Versions
- System: macOS Ventura 15.3
- Termusic version: 0.9.1
- Rust version: 1.79.0
Logs Terminal Output Attempted Installation via Cargo
First, we attempted to install termusic using cargo install (without features)
cargo install termusic Updating crates.io index Installing termusic v0.9.1 Updating crates.io index Locking 425 packages to latest compatible versions Adding colored v2.2.0 (available: v3.0.0) Adding dirs v5.0.1 (available: v6.0.0) Adding flexi_logger v0.28.5 (available: v0.29.8) Adding image v0.24.9 (available: v0.25.5) Adding lofty v0.20.1 (available: v0.22.2) Adding rand v0.8.5 (available: v0.9.0) Adding sanitize-filename v0.5.0 (available: v0.6.0) Adding sysinfo v0.30.13 (available: v0.33.1) Adding tui-realm-stdlib v1.2.0 (available: v1.3.2) Adding tui-realm-treeview v1.1.0 (available: v1.2.0) Adding tuirealm v1.8.0 (available: v1.9.2) Adding unicode-width v0.1.14 (available: v0.2.0) Adding viuer v0.7.1 (available: v0.9.1) Compiling proc-macro2 v1.0.93 Compiling unicode-ident v1.0.17 Compiling libc v0.2.170 Compiling autocfg v1.4.0 Compiling cfg-if v1.0.0 Compiling memchr v2.7.4 Compiling pin-project-lite v0.2.16 Compiling smallvec v1.14.0 Compiling once_cell v1.20.3 Compiling futures-core v0.3.31 Compiling core-foundation-sys v0.8.7 Compiling bytes v1.10.0 Compiling itoa v1.0.14 Compiling serde v1.0.218 Compiling futures-sink v0.3.31 Compiling version_check v0.9.5 Compiling futures-channel v0.3.31 Compiling futures-io v0.3.31 Compiling futures-task v0.3.31 Compiling crossbeam-utils v0.8.21 Compiling pin-utils v0.1.0 Compiling simd-adler32 v0.3.7 Compiling stable_deref_trait v1.2.0 Compiling rustix v0.38.44 Compiling getrandom v0.3.1 Compiling byteorder v1.5.0 Compiling bitflags v1.3.2 Compiling adler2 v2.0.0 Compiling log v0.4.26 Compiling bitflags v2.8.0 Compiling miniz_oxide v0.8.5 Compiling aho-corasick v1.1.3 Compiling hashbrown v0.15.2 Compiling slab v0.4.9 Compiling num-traits v0.2.19 Compiling equivalent v1.0.2 Compiling regex-syntax v0.8.5 Compiling fnv v1.0.7 Compiling syn v1.0.109 Compiling http v1.2.0 Compiling litemap v0.7.5 Compiling writeable v0.5.5 Compiling lock_api v0.4.12 Compiling indexmap v2.7.1 Compiling signal-hook v0.3.17 Compiling parking_lot_core v0.9.10 Compiling anyhow v1.0.96 Compiling http-body v1.0.1 Compiling tracing-core v0.1.33 Compiling regex-automata v0.4.9 Compiling quote v1.0.38 Compiling syn v2.0.98 Compiling crc32fast v1.4.2 Compiling scopeguard v1.2.0 Compiling icu_locid_transform_data v1.5.0 Compiling tower-service v0.3.3 Compiling rayon-core v1.12.1 Compiling either v1.14.0 Compiling itertools v0.14.0 Compiling regex v1.11.1 Compiling socket2 v0.5.8 Compiling synstructure v0.13.1 Compiling mio v1.0.3 Compiling getrandom v0.2.15 Compiling core-foundation v0.9.4 Compiling crossbeam-epoch v0.9.18 Compiling signal-hook-registry v1.4.2 Compiling mio v0.8.11 Compiling crossbeam-deque v0.8.6 Compiling flate2 v1.1.0 Compiling icu_properties_data v1.5.0 Compiling httparse v1.10.0 Compiling serde_derive v1.0.218 Compiling futures-macro v0.3.31 Compiling zerofrom-derive v0.1.6 Compiling yoke-derive v0.7.5 Compiling tokio-macros v2.5.0 Compiling zerovec-derive v0.10.3 Compiling futures-util v0.3.31 Compiling tokio v1.43.0 Compiling displaydoc v0.2.5 Compiling zerofrom v0.1.6 Compiling icu_provider_macros v1.5.0 Compiling zerocopy-derive v0.7.35 Compiling tracing-attributes v0.1.28 Compiling strsim v0.11.1 Compiling ident_case v1.0.1 Compiling percent-encoding v2.3.1 Compiling thiserror v1.0.69 Compiling darling_core v0.20.10 Compiling zerocopy v0.7.35 Compiling tracing v0.1.41 Compiling thiserror-impl v1.0.69 Compiling prost-derive v0.13.5 Compiling errno v0.3.10 Compiling signal-hook-mio v0.2.4 Compiling utf8_iter v1.0.4 Compiling try-lock v0.2.5 Compiling icu_normalizer_data v1.5.0 Compiling utf16_iter v1.0.5 Compiling write16 v1.0.0 Compiling atomic-waker v1.1.2 Compiling want v0.3.1 Compiling darling_macro v0.20.10 Compiling iana-time-zone v0.1.61 Compiling unicode-width v0.1.14 Compiling httpdate v1.0.3 Compiling parking_lot v0.12.3 Compiling ryu v1.0.19 Compiling tower-layer v0.3.3 Compiling lazy_static v1.5.0 Compiling fastrand v2.3.0 Compiling darling v0.20.10 Compiling chrono v0.4.40 Compiling security-framework-sys v2.14.0 Compiling ahash v0.8.11 Compiling sync_wrapper v1.0.2 Compiling heck v0.5.0 Compiling prettyplease v0.2.29 Compiling rayon v1.10.0 Compiling serde_json v1.0.139 Compiling powerfmt v0.2.0 Compiling shlex v1.3.0 Compiling time-core v0.1.2 Compiling bytemuck v1.21.0 Compiling num-conv v0.1.0 Compiling native-tls v0.2.14 Compiling time-macros v0.2.19 Compiling cc v1.2.16 Compiling yoke v0.7.5 Compiling http-body-util v0.1.2 Compiling deranged v0.3.11 Compiling prost v0.13.5 Compiling ppv-lite86 v0.2.20 Compiling tokio-util v0.7.13 Compiling h2 v0.4.8 Compiling security-framework v2.11.1 Compiling crossterm v0.25.0 Compiling lazy-regex-proc_macros v2.4.1 Compiling hyper v1.6.0 Compiling tempfile v3.17.1 Compiling form_urlencoded v1.2.1 Compiling rand_core v0.6.4 Compiling cookie v0.18.1 Compiling encoding_rs v0.8.35 Compiling cassowary v0.3.0 Compiling object v0.36.7 Compiling derive_builder_core v0.20.2 Compiling weezl v0.1.8 Compiling hyper-util v0.1.10 Compiling unicode-segmentation v1.12.0 Compiling fixedbitset v0.5.7 Compiling pkg-config v0.3.31 Compiling rustversion v1.0.19 Compiling mime v0.3.17 Compiling jetscii v0.5.3 Compiling system-configuration-sys v0.6.0 Compiling vcpkg v0.2.15 Compiling time v0.3.37 Compiling libsqlite3-sys v0.30.1 Compiling zerovec v0.10.4 Compiling petgraph v0.7.1 Compiling tui v0.19.0 Compiling derive_builder_macro v0.20.2 Compiling rand_chacha v0.3.1 Compiling lazy-regex v2.5.0 Compiling prost-types v0.13.5 Compiling toml_datetime v0.6.8 Compiling serde_spanned v0.6.8 Compiling tower v0.5.2 Compiling jpeg-decoder v0.3.1 Compiling tuirealm_derive v1.0.0 Compiling core-graphics-types v0.1.3 Compiling malloc_buf v0.0.6 Compiling indexmap v1.9.3 Compiling uncased v0.9.10 Compiling fdeflate v0.3.7 Compiling zune-inflate v0.2.54 Compiling half v2.4.1 Compiling lebe v0.5.2 Compiling smawk v0.3.2 Compiling color_quant v1.1.0 Compiling psl-types v2.0.11 Compiling option-ext v0.2.0 Compiling bit_field v0.10.2 Compiling litrs v0.4.1 Compiling foreign-types-shared v0.1.1 Compiling paste v1.0.15 Compiling winnow v0.7.3 Compiling unicode-linebreak v0.1.5 Compiling multimap v0.10.0 Compiling gimli v0.31.1 Compiling camino v1.1.9 Compiling hashbrown v0.14.5 Compiling prost-build v0.13.5 Compiling document-features v0.2.11 Compiling foreign-types v0.3.2 Compiling exr v1.73.0 Compiling dirs-sys v0.4.1 Compiling gif v0.13.1 Compiling png v0.17.16 Compiling toml_edit v0.22.24 Compiling addr2line v0.24.2 Compiling tiff v0.9.1 Compiling objc v0.2.7 Compiling rand v0.8.5 Compiling derive_builder v0.20.2 Compiling tokio-native-tls v0.3.1 Compiling quick-xml v0.37.2 Compiling qoi v0.4.1 Compiling rgb v0.8.50 Compiling diligent-date-parser v0.1.5 Compiling hard-xml-derive v1.36.0 Compiling async-trait v0.1.86 Compiling pin-project-internal v1.1.9 Compiling concurrent-queue v2.5.0 Compiling figment v0.10.19 Compiling never v0.1.0 Compiling semver v1.0.25 Compiling hashbrown v0.12.3 Compiling block v0.1.6 Compiling base64 v0.22.1 Compiling xmlparser v0.13.6 Compiling rustls-pki-types v1.11.0 Compiling rustc-demangle v0.1.24 Compiling tinystr v0.7.6 Compiling icu_collections v1.5.0 Compiling parking v2.2.1 Compiling pinyin v0.10.0 Compiling utf8parse v0.2.2 Compiling anstyle-parse v0.2.6 Compiling event-listener v5.4.0 Compiling rustls-pemfile v2.2.0 Compiling hard-xml v1.36.0 Compiling pin-project v1.1.9 Compiling tuirealm v1.8.0 Compiling cocoa-foundation v0.1.2 Compiling backtrace v0.3.74 Compiling axum-core v0.4.5 Compiling ansi_colours v1.2.3 Compiling image v0.24.9 Compiling hyper-tls v0.6.0 Compiling toml v0.8.20 Compiling system-configuration v0.6.1 Compiling dirs v5.0.1 Compiling core-graphics v0.22.3 Compiling atom_syndication v0.12.7 Compiling hashlink v0.9.1 Compiling tonic-build v0.12.3 Compiling serde_urlencoded v0.7.1 Compiling async-compression v0.4.20 Compiling futures-executor v0.3.31 Compiling crossterm v0.27.0 Compiling num-integer v0.1.46 Compiling lofty_attr v0.11.1 Compiling async-stream-impl v0.3.6 Compiling icu_locid v1.5.0 Compiling console v0.15.10 Compiling bstr v1.11.3 Compiling icu_provider v1.5.0 Compiling include_dir_macros v0.7.4 Compiling ogg_pager v0.6.1 Compiling os_str_bytes v6.6.1 Compiling anstyle-query v1.1.2 Compiling is_terminal_polyfill v1.70.1 Compiling entities v1.0.1 Compiling base64 v0.21.7 Compiling ipnet v2.11.0 Compiling fallible-iterator v0.3.0 Compiling matchit v0.7.3 Compiling unsafe-libyaml v0.2.11 Compiling termcolor v1.4.1 Compiling same-file v1.0.6 Compiling anstyle v1.0.10 Compiling colorchoice v1.0.3 Compiling souvlaki v0.7.3 Compiling data-encoding v2.8.0 Compiling fallible-streaming-iterator v0.1.9 Compiling anstream v0.6.18 Compiling opml v1.1.6 Compiling lofty v0.20.1 Compiling serde_yaml v0.9.34+deprecated Compiling walkdir v2.5.0 Compiling viuer v0.7.1 Compiling tower v0.4.13 Compiling escaper v0.1.1 Compiling shellexpand v3.1.0 Compiling include_dir v0.7.4 Compiling async-stream v0.3.6 Compiling num-bigint v0.4.6 Compiling futures v0.3.31 Compiling termusic-playback v0.9.1 Compiling rss v2.0.12 Compiling cocoa v0.24.1 Compiling pathdiff v0.2.3 Compiling event-listener-strategy v0.5.3 Compiling ytd-rs v0.1.7 Compiling textwrap v0.16.1 Compiling hyper-timeout v0.5.2 Compiling tokio-stream v0.1.17 Compiling rfc822_sanitizer v0.3.6 Compiling sanitize-filename v0.5.0 Compiling id3 v1.16.2 Compiling serde_repr v0.1.19 Compiling uuid v0.8.2 Compiling quick-xml v0.36.2 Compiling dispatch v0.2.0 Compiling md5 v0.7.0 Compiling libaes v0.7.0 Compiling wildmatch v2.4.0 Compiling clap_lex v0.7.4 Compiling hex v0.4.3 Compiling urlencoding v2.1.3 Compiling clap_builder v4.5.31 Compiling icu_locid_transform v1.5.0 Compiling discord-rich-presence v0.2.5 Compiling async-channel v2.3.1 Compiling icu_properties v1.5.1 Compiling textwrap v0.15.2 Compiling clap_derive v4.5.28 Compiling orange-trees v0.1.3 Compiling glob v0.3.2 Compiling termusic v0.9.1 Compiling nu-ansi-term v0.50.1 Compiling icu_normalizer v1.5.0 Compiling flexi_logger v0.28.5 Compiling clap v4.5.31 Compiling tui-realm-stdlib v1.2.0 Compiling idna_adapter v1.2.0 Compiling tui-realm-treeview v1.1.0 Compiling idna v1.0.3 Compiling publicsuffix v2.3.0 Compiling url v2.5.4 Compiling sysinfo v0.30.13 Compiling cookie_store v0.21.1 Compiling colored v2.2.0 Compiling axum v0.7.9 Compiling tonic v0.12.3 Compiling reqwest v0.12.12 Compiling rusqlite v0.32.1 Compiling termusic-lib v0.9.1 error: No useable backend feature! --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:139:9 | 139 | compile_error!("No useable backend feature!"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0308]: mismatched types --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:130:72 | 130 | fn new_default(config: &ServerOverlay, cmd_tx: PlayerCmdSender) -> Self { | ----------- ^^^^ expected
Backend, found()| | | implicitly returns()as its body has no tail orreturnexpressionerror[E0004]: non-exhaustive patterns: type&Backendis non-empty --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:165:15 |165 | match self { | ^^^^ |note:Backenddefined here --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:100:10 |100 | pub enum Backend { | ^^^^^^^ = note: the matched value is of type&Backend= note: references are always considered inhabitedhelp: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown |165 ~ match self {166 + _ => todo!(),167 + } |error[E0004]: non-exhaustive patterns: type&mut Backendis non-empty --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:177:15 |177 | match self { | ^^^^ |note:Backenddefined here --> /Users/else/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/termusic-playback-0.9.1/src/lib.rs:100:10 |100 | pub enum Backend { | ^^^^^^^ = note: the matched value is of type&mut Backend= note: references are always considered inhabitedhelp: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown |177 ~ match self {178 + _ => todo!(),179 + } |Some errors have detailed explanations: E0004, E0308.For more information about an error, tryrustc --explain E0004.error: could not compiletermusic-playback(lib) due to 4 previous errorswarning: build failed, waiting for other jobs to finish...error: failed to compiletermusic v0.9.1, intermediate artifacts can be found at/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-install04SgyA.To reuse those artifacts with a future compilation, set the environment variableCARGO_TARGET_DIRto that path.# Since the default install failed, we explicitly tried enabling MPV as the backendcargo install termusic --features="mpv" Updating crates.io index Installing termusic v0.9.1error: failed to compiletermusic v0.9.1, intermediate artifacts can be found at/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-installcRoPVy.To reuse those artifacts with a future compilation, set the environment variableCARGO_TARGET_DIRto that path.Caused by: the package 'termusic' does not contain this feature: mpv# We then tried using the Symphonia backend❯ cargo install termusic --features="symphonia" Updating crates.io index Installing termusic v0.9.1error: failed to compiletermusic v0.9.1, intermediate artifacts can be found at/var/folders/vz/wd0r1m8x31z1sp5z_k_wjn800000gn/T/cargo-installpewTCY.To reuse those artifacts with a future compilation, set the environment variableCARGO_TARGET_DIRto that path.Caused by: the package 'termusic' does not contain this feature: symphoniaAttempted Manual Build from Source
Since
cargo installwas failing, we proceeded with a manual build from source❯ git clone https://github.com/tramhao/termusic.git ❯ cd termusic
Attempting to build from source with MPV backend
cargo build --release --no-default-features --features "playback/mpv" error: none of the selected packages contains this feature: playback/mpv selected packages: termusic-lib, termusic-playback, termusic-server, termusic
Repeating the process with the Symphonia backend
❯ cargo build --release --no-default-features --features "playback/rusty" error: none of the selected packages contains this feature: playback/rusty selected packages: termusic-lib, termusic-playback, termusic-server, termusic
Description of the Problem
According to the documentation, termusic supports multiple playback backends, including mpv and symphonia. However, installation and feature selection are not working as expected. Installation Issues
- Running cargo install termusic without any features fails, so we attempted using --features="mpv" to explicitly enable a backend, but it was not recognized.
- cargo install termusic --features="symphonia" also fails for the same reason.
Manual Build Issues
- Since cargo install was failing, we attempted to build from source, ensuring we first cloned the repository and navigated into it before executing cargo build.
- Attempting to build from source with cargo build --release --no-default-features --features "playback/mpv" also fails, indicating that none of the selected packages contain this feature.
- Cargo.toml does not define [features] explicitly, meaning backend selection may not be implemented correctly.
- We systematically ruled out backend-specific issues by repeating the build process for different backends (both MPV and Symphonia) with the same result.
Expected Behavior
A clear way to select the playback backend, either via cargo install or when building from source, as stated in the documentation. Steps to Reproduce Attempted Installation via Cargo
- Try installing termusic normally:
cargo install termusic
- Since that fails, explicitly try installing with a backend:
cargo install termusic --features="mpv"
- Since that also fails, try another backend:
cargo install termusic --features="symphonia"
Attempted Manual Build from Source
- Clone the repository and navigate into it:
git clone https://github.com/tramhao/termusic.gitcd termusic
- Attempt to build from source with MPV backend:
cargo build --release --no-default-features --features "playback/mpv"
- Repeat with another backend to confirm:
cargo build --release --no-default-features --features "playback/rusty"
- Observe that none of the feature selections work and installation remains impossible.
— Reply to this email directly, view it on GitHub https://github.com/tramhao/termusic/issues/430, or unsubscribe https://github.com/notifications/unsubscribe-auth/BMLYYWSU4746OBXYPEBU2P32SBNHVAVCNFSM6AAAAABYCIVGQ6VHI2DSMVQWIX3LMV43ASLTON2WKOZSHA4DOMJQG42TENY . You are receiving this because you are subscribed to this thread.Message ID: @.***>
Do you mean macOS Sequoia? Because there’s no version 15.3 with codename Ventura …
Yes sorry
About the backends, I tend to compile with all backends and select backends at running time. However, as you met compile error, it's best to work with default backend which is rusty. Please post the error message you met when build with cargo build.
The problem of testing is that right now the core members of this project don't have mac. I rely on
https://github.com/tramhao/termusic/blob/master/.github/workflows/build.yml to check if it's working on mac. You can check
brew install protobuf brew install sound-touch
for dependencies.
Termusic version: 0.9.1
Please note that version 0.9.1 had released with all backends optional and a compile error if none are compiled in, but the TUI still made use of it and hit it. (I was the one implementing it and it was fine locally, but after releasing it seemed there were problems with the TUI not having any backends selected).
If you want to use the TUI at 0.9.1 from crates.io try cargo install termusic --features "termusic-playback/rusty" (regardless of what backend you choose on the server)
(Note that you do not need this feature flag when building from source against current master)
Running cargo install termusic without any features fails, so we attempted using --features="mpv" to explicitly enable a backend, but it was not recognized.
Crate termusic is the TUI, which does not have backends, you need to set the features on termusic-server for the actual backend usage, though for the 0.9.1 you need to use the above workaround to install the TUI.
Attempting to build from source with cargo build --release --no-default-features --features "playback/mpv" also fails, indicating that none of the selected packages contain this feature.
This is because the crate name is termusic-playback, not just playback.
Cargo.toml does not define [features] explicitly, meaning backend selection may not be implemented correctly.
Which Cargo.toml do you mean? There are multiple in this project. (also server/Cargo.toml master (server/Cargo.toml 0.9.1) defines them)
As for why the README (in master) is not updated, that is because that reflects building from master, which has this resolved again (but no version released since).
Maybe we should consider release a version recently.
Maybe we should consider release a version recently.
Sure, do you want anything to happen before releasing?
Maybe we should consider release a version recently.
Sure, do you want anything to happen before releasing?
Maybe after you finish https://github.com/tramhao/termusic/pull/429 ?
To not de-rail this issue further, i have created #439 for next version discussion.
Try using --locked argument
cargo install termusic termusic-server --locked
I successfully installed with cargo install termusic --features "termusic-playback/rusty"
This is now solved as version v0.10.0 has been released, which makes the rusty feature non-optional again (and so not requiring a workaround for the tui)
Since 0.11.0, the TUI does not depend on termusicplayback (and so any backends) anymore, so the workaround is not required anymore.
Also for the server, the rusty backend is now non-optional since 0.10.0 again, so no more accidental no usable backends errors.