[GH-ISSUE #350] Comprehensive CI suite #187

Open
opened 2026-03-02 23:45:19 +03:00 by kerem · 4 comments
Owner

Originally created by @LucasFA on GitHub (Jan 26, 2024).
Original GitHub issue: https://github.com/aome510/spotify-player/issues/350

Originally assigned to: @LucasFA on GitHub.

Well, we just had #349, an issue about breaking with rust versions up to and including 1.73. That was a case from the bump in MSVR in souvlaki: Sinono3/souvlaki#46, breaking pulseaudio. Let's test this doesn't happen.

There's quite a few features, so we can't check each combination, but we could at least check each backend and feature once and use more sparse testing with the rest of the feature space. Another with as many features as possible, too.

There's also some interaction between target features and target OS, at least around the daemon code, so there's even more combinations.

I'm going to list all possible features (if I miss any please warn)

Audio backends

  • Rodio (default)
  • rodiojack (rodio with a jackaudio feature in librespot I think)
  • jackaudio
  • alsa
  • pulseaudio
  • portaudio
  • sdl
  • gstreamer

Each requires their own dependencies to compile.

Features

  • Streaming (enabled by default, requires Audio backend)
  • Lyrics (disabled)
  • Clipboard (enabled)
  • Media control (enabled by default, A:)
  • Image (disabled)
  • Sixel (disabled, implies Image)
  • Daemon (disabled, requires B)

A: Media control is compiled in by default but only actually active on Linux by default because of what seems described as a bug or something.
B: requires: 1. not(Windows) (README), 2. streaming (code), 3. not((W || macOS) && media-control) (code, C), 4.
C: I don't know if what I found was intended. As written it's that way, I think. Lines 285 of spotify-player/main.rs. Also, I think some of these can be turned into compile time errors.

Originally created by @LucasFA on GitHub (Jan 26, 2024). Original GitHub issue: https://github.com/aome510/spotify-player/issues/350 Originally assigned to: @LucasFA on GitHub. Well, we just had #349, an issue about breaking with rust versions up to and including 1.73. That was a case from the bump in MSVR in souvlaki: Sinono3/souvlaki#46, breaking pulseaudio. Let's test this doesn't happen. There's quite a few features, so we can't check each combination, but we could at least check each backend and feature once and use more sparse testing with the rest of the feature space. Another with as many features as possible, too. There's also some interaction between target features and target OS, at least around the daemon code, so there's even more combinations. I'm going to list all possible features (if I miss any please warn) ## Audio backends - Rodio (default) - rodiojack (rodio with a jackaudio feature in librespot I think) - jackaudio - alsa - pulseaudio - portaudio - sdl - gstreamer Each requires their own [dependencies](https://github.com/librespot-org/librespot/wiki/Compiling#general-dependencies) to compile. ## Features - Streaming (enabled by default, requires Audio backend) - Lyrics (disabled) - Clipboard (enabled) - Media control (enabled by default, A:) - Image (disabled) - Sixel (disabled, implies Image) - Daemon (disabled, requires B) **A**: Media control is compiled in by default but only actually active on Linux by default because of what seems described as a bug or something. **B**: requires: 1. `not(Windows)` (README), 2. `streaming` (code), 3. `not((W || macOS) && media-control)` (code, C), 4. **C**: I don't know if what I found was intended. As written it's that way, I think. Lines 285 of `spotify-player/main.rs`. Also, I think some of these can be turned into compile time errors.
Author
Owner

@LucasFA commented on GitHub (Mar 2, 2024):

There's #385, but I am still puzzles by this tangent: the Daemon feature requires

  • not be on Windows (according to the README)
  • not to have the media-control feature enabled, if on Windows or Mac (according to the main.rs, which leads to a sys exit of 1)

One way or the other this can be turned into a compile time error - but to confirm, compiling on Windows with the daemon feature just doesn't work, right? I don't want to write a compile_error! only to find out it does work

<!-- gh-comment-id:1974875078 --> @LucasFA commented on GitHub (Mar 2, 2024): There's #385, but I am still puzzles by this tangent: the Daemon feature requires - not be on Windows (according to the README) - not to have the media-control feature enabled, if on Windows or Mac (according to the `main.rs`, which leads to a sys exit of 1) One way or the other this can be turned into a compile time error - but to confirm, compiling on Windows with the daemon feature just doesn't work, right? I don't want to write a `compile_error!` only to find out it does work
Author
Owner

@aome510 commented on GitHub (Mar 4, 2024):

but to confirm, compiling on Windows with the daemon feature just doesn't work, right?

I'm not sure if it will fail to compile. The readme was added based on https://github.com/aome510/spotify-player/pull/263#issuecomment-1742623193.

One way or the other this can be turned into a compile time error

Sounds good to me but maybe only for "not to have the media-control feature enabled, if on Windows or Mac". I haven't confirmed the first one.

<!-- gh-comment-id:1975651361 --> @aome510 commented on GitHub (Mar 4, 2024): > but to confirm, compiling on Windows with the daemon feature just doesn't work, right? I'm not sure if it will fail to compile. The readme was added based on https://github.com/aome510/spotify-player/pull/263#issuecomment-1742623193. > One way or the other this can be turned into a compile time error Sounds good to me but maybe only for "not to have the media-control feature enabled, if on Windows or Mac". I haven't confirmed the first one.
Author
Owner

@LucasFA commented on GitHub (Mar 4, 2024):

I'm not sure if it will fail to compile. The readme was added based on https://github.com/aome510/spotify-player/pull/263#issuecomment-1742623193.

FWIW, I just cargo b --features daemon --target x86_64-pc-windows-gnu and the daemonize crate does fail to compile, starting with

error[E0433]: failed to resolve: could not find `unix` in `os`
  --> /home/lucasfa/.local/share/cargo/registry/src/index.crates.io-6f17d22bba15001f/daemonize-0.5.0/src/lib.rs:55:14
   |
55 | use std::os::unix::ffi::OsStringExt;
   |              ^^^^ could not find `unix` in `os`

Which I'd take to mean that the crate only supports unix-likes.

maybe only for "not to have the media-control feature enabled, if on Windows or Mac".

Sounds good

<!-- gh-comment-id:1976526442 --> @LucasFA commented on GitHub (Mar 4, 2024): >I'm not sure if it will fail to compile. The readme was added based on https://github.com/aome510/spotify-player/pull/263#issuecomment-1742623193. FWIW, I just `cargo b --features daemon --target x86_64-pc-windows-gnu` and the `daemonize` crate does fail to compile, starting with ``` error[E0433]: failed to resolve: could not find `unix` in `os` --> /home/lucasfa/.local/share/cargo/registry/src/index.crates.io-6f17d22bba15001f/daemonize-0.5.0/src/lib.rs:55:14 | 55 | use std::os::unix::ffi::OsStringExt; | ^^^^ could not find `unix` in `os` ``` Which I'd take to mean that the crate only supports unix-likes. >maybe only for "not to have the media-control feature enabled, if on Windows or Mac". Sounds good
Author
Owner

@aome510 commented on GitHub (Mar 4, 2024):

FWIW, I just cargo b --features daemon --target x86_64-pc-windows-gnu and the daemonize crate does fail to compile, starting with

Got it. Thanks for the confirmation.

<!-- gh-comment-id:1976670748 --> @aome510 commented on GitHub (Mar 4, 2024): > FWIW, I just cargo b --features daemon --target x86_64-pc-windows-gnu and the daemonize crate does fail to compile, starting with Got it. Thanks for the confirmation.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/spotify-player#187
No description provided.