From: Marcel van der Veldt Date: Sat, 23 Mar 2024 23:23:44 +0000 (+0100) Subject: Fix install packages using pip (#1169) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=a02e46fc99c675c7a7397a85397996121c26b016;p=music-assistant-server.git Fix install packages using pip (#1169) * Fix install packages using pip * switch opensubsonic to pinned version --- diff --git a/music_assistant/server/helpers/process.py b/music_assistant/server/helpers/process.py index fba1d477..1dfc043d 100644 --- a/music_assistant/server/helpers/process.py +++ b/music_assistant/server/helpers/process.py @@ -235,12 +235,19 @@ class AsyncProcess: task.cancel() -async def check_output(shell_cmd: str) -> tuple[int, bytes]: - """Run shell subprocess and return output.""" - proc = await asyncio.create_subprocess_shell( - shell_cmd, - stderr=asyncio.subprocess.STDOUT, - stdout=asyncio.subprocess.PIPE, - ) +async def check_output(args: str | list[str]) -> tuple[int, bytes]: + """Run subprocess and return output.""" + if isinstance(args, str): + proc = await asyncio.create_subprocess_shell( + args, + stderr=asyncio.subprocess.STDOUT, + stdout=asyncio.subprocess.PIPE, + ) + else: + proc = await asyncio.create_subprocess_exec( + *args, + stderr=asyncio.subprocess.STDOUT, + stdout=asyncio.subprocess.PIPE, + ) stdout, _ = await proc.communicate() return (proc.returncode, stdout) diff --git a/music_assistant/server/helpers/util.py b/music_assistant/server/helpers/util.py index 2236936c..c59219c7 100644 --- a/music_assistant/server/helpers/util.py +++ b/music_assistant/server/helpers/util.py @@ -18,6 +18,8 @@ from typing import TYPE_CHECKING import ifaddr import memory_tempfile +from music_assistant.server.helpers.process import check_output + if TYPE_CHECKING: from collections.abc import Iterator @@ -31,15 +33,11 @@ HA_WHEELS = "https://wheels.home-assistant.io/musllinux/" async def install_package(package: str) -> None: """Install package with pip, raise when install failed.""" LOGGER.debug("Installing python package %s", package) - cmd = f"python3 -m pip install --find-links {HA_WHEELS} {package}" - proc = await asyncio.create_subprocess_shell( - cmd, stderr=asyncio.subprocess.STDOUT, stdout=asyncio.subprocess.PIPE - ) - - stdout, _ = await proc.communicate() + args = ["python3", "-m", "pip", "install", "--find-links", HA_WHEELS, package] + return_code, output = await check_output(args) - if proc.returncode != 0: - msg = f"Failed to install package {package}\n{stdout.decode()}" + if return_code != 0: + msg = f"Failed to install package {package}\n{output.decode()}" raise RuntimeError(msg) diff --git a/music_assistant/server/providers/opensubsonic/manifest.json b/music_assistant/server/providers/opensubsonic/manifest.json index 51950ed5..a0df0083 100644 --- a/music_assistant/server/providers/opensubsonic/manifest.json +++ b/music_assistant/server/providers/opensubsonic/manifest.json @@ -3,8 +3,12 @@ "domain": "opensubsonic", "name": "Open Subsonic Media Server Library", "description": "Support for Open Subsonic based streaming providers in Music Assistant.", - "codeowners": ["@khers"], - "requirements": ["py-opensonic>=5.0.5"], + "codeowners": [ + "@khers" + ], + "requirements": [ + "py-opensonic==5.0.5" + ], "documentation": "https://music-assistant.io/music-providers/subsonic/", "multi_instance": true } diff --git a/requirements_all.txt b/requirements_all.txt index bcd67adb..dac94141 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -24,7 +24,7 @@ music-assistant-frontend==2.3.3 orjson==3.9.15 pillow==10.2.0 plexapi==4.15.10 -py-opensonic>=5.0.5 +py-opensonic==5.0.5 pyatv==0.14.5 PyChromecast==14.0.1 pycryptodome==3.20.0