Unverified Commit 41686edb authored by Martin Weinelt's avatar Martin Weinelt Committed by GitHub
Browse files

music-assistant: build librespot fork (#447147)

parents 43b6e7fa 4e23b436
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ in
          lsof
        ]
        ++ lib.optionals (lib.elem "spotify" cfg.providers) [
          librespot
          librespot-ma
        ]
        ++ lib.optionals (lib.elem "snapcast" cfg.providers) [
          snapcast
+39 −0
Original line number Diff line number Diff line
{
  lib,
  rustPlatform,
  fetchFromGitHub,
  pkg-config,
  openssl,
}:

rustPlatform.buildRustPackage {
  pname = "librespot-ma";
  version = "0.6.0-unstable-2025-08-10";

  src = fetchFromGitHub {
    owner = "music-assistant";
    repo = "librespot";
    rev = "accecb60a16334013c0c99a5ded553794ee871b7";
    hash = "sha256-vPiI8llXB6+ahX+iad/Ut81D3iZcTSVmYGDXXwApk/w=";
  };

  cargoHash = "sha256-Lujz2revTAok9B0hzdl8NVQ5XMRY9ACJzoQHIkIgKMg=";

  nativeBuildInputs = [
    pkg-config
  ];

  buildInputs = [ openssl ];

  meta = {
    description = "Fork of librespot for use in Music Assistant only";
    homepage = "https://github.com/music-assistant/librespot";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [
      sweenu
      emilylange
    ];
    mainProgram = "librespot";
    platforms = lib.platforms.linux;
  };
}
+25 −0
Original line number Diff line number Diff line
diff --git a/music_assistant/providers/spotify/helpers.py b/music_assistant/providers/spotify/helpers.py
index 8b6c4e78f5f3f64c9dc6206028177c99ed0542ed..25ed6e468b393d2da74167e3c2ac4bdcd2e2699e 100644
--- a/music_assistant/providers/spotify/helpers.py
+++ b/music_assistant/providers/spotify/helpers.py
@@ -4,6 +4,7 @@ from __future__ import annotations

 import os
 import platform
+from shutil import which

 from music_assistant.helpers.process import check_output

@@ -20,12 +21,8 @@ async def get_librespot_binary() -> str:
         except OSError:
             return None

-    base_path = os.path.join(os.path.dirname(__file__), "bin")
-    system = platform.system().lower().replace("darwin", "macos")
-    architecture = platform.machine().lower()
-
     if bridge_binary := await check_librespot(
-        os.path.join(base_path, f"librespot-{system}-{architecture}")
+        which("librespot")
     ):
         return bridge_binary