feat(moonraker): sync moonraker changes to SysDepsParser

206fd4828d

72b89d905e
This commit is contained in:
dw-0
2025-09-29 20:29:38 +02:00
parent aff63665de
commit 6cee0252ee
2 changed files with 26 additions and 5 deletions

View File

@@ -61,6 +61,9 @@ class SysDepsParser:
version = distro_info.get("distro_version") version = distro_info.get("distro_version")
if version: if version:
self.distro_version = _convert_version(version) self.distro_version = _convert_version(version)
self.vendor: str = ""
if pathlib.Path("/etc/rpi-issue").is_file():
self.vendor = "raspberry-pi"
def _parse_spec(self, full_spec: str) -> str | None: def _parse_spec(self, full_spec: str) -> str | None:
parts = full_spec.split(";", maxsplit=1) parts = full_spec.split(";", maxsplit=1)
@@ -109,6 +112,9 @@ class SysDepsParser:
elif req_var == "distro_id": elif req_var == "distro_id":
left_op: str | Tuple[int | str, ...] = self.distro_id left_op: str | Tuple[int | str, ...] = self.distro_id
right_op = dep_parts[2].strip().strip("\"'") right_op = dep_parts[2].strip().strip("\"'")
elif req_var == "vendor":
left_op = self.vendor
right_op = dep_parts[2].strip().strip("\"'")
elif req_var == "distro_version": elif req_var == "distro_version":
if not self.distro_version: if not self.distro_version:
logging.info( logging.info(

View File

@@ -153,11 +153,20 @@ import shlex
import re import re
import pathlib import pathlib
import logging import logging
import json
from typing import Tuple, Dict, List, Any from typing import Tuple, Dict, List, Any
def _get_distro_info() -> Dict[str, Any]: def _get_distro_info() -> Dict[str, Any]:
try:
import distro
except ModuleNotFoundError:
pass
else:
return dict(
distro_id=distro.id(),
distro_version=distro.version(),
aliases=distro.like().split()
)
release_file = pathlib.Path("/etc/os-release") release_file = pathlib.Path("/etc/os-release")
release_info: Dict[str, str] = {} release_info: Dict[str, str] = {}
with release_file.open("r") as f: with release_file.open("r") as f:
@@ -193,6 +202,9 @@ class SysDepsParser:
version = distro_info.get("distro_version") version = distro_info.get("distro_version")
if version: if version:
self.distro_version = _convert_version(version) self.distro_version = _convert_version(version)
self.vendor: str = ""
if pathlib.Path("/etc/rpi-issue").is_file():
self.vendor = "raspberry-pi"
def _parse_spec(self, full_spec: str) -> str | None: def _parse_spec(self, full_spec: str) -> str | None:
parts = full_spec.split(";", maxsplit=1) parts = full_spec.split(";", maxsplit=1)
@@ -237,6 +249,9 @@ class SysDepsParser:
elif req_var == "distro_id": elif req_var == "distro_id":
left_op: str | Tuple[int | str, ...] = self.distro_id left_op: str | Tuple[int | str, ...] = self.distro_id
right_op = dep_parts[2].strip().strip("\"'") right_op = dep_parts[2].strip().strip("\"'")
elif req_var == "vendor":
left_op = self.vendor
right_op = dep_parts[2].strip().strip("\"'")
elif req_var == "distro_version": elif req_var == "distro_version":
if not self.distro_version: if not self.distro_version:
logging.info( logging.info(
@@ -305,12 +320,12 @@ system_deps = {
"python3-virtualenv", "python3-dev", "libopenjp2-7", "libsodium-dev", "python3-virtualenv", "python3-dev", "libopenjp2-7", "libsodium-dev",
"zlib1g-dev", "libjpeg-dev", "packagekit", "zlib1g-dev", "libjpeg-dev", "packagekit",
"wireless-tools; distro_id != 'ubuntu' or distro_version <= '24.04'", "wireless-tools; distro_id != 'ubuntu' or distro_version <= '24.04'",
"iw; distro_id == 'ubuntu' and distro_version >= '24.10'", "curl", "iw; distro_id == 'ubuntu' and distro_version >= '24.10'",
"build-essential" "python3-libcamera; vendor == 'raspberry-pi' and distro_version >= '11'",
"curl", "build-essential"
], ],
} }
system_deps_json = pathlib.Path("$package_json") # *** SYSTEM DEPENDENCIES END ***
system_deps = json.loads(system_deps_json.read_bytes())
parser = SysDepsParser() parser = SysDepsParser()
pkgs = parser.parse_dependencies(system_deps) pkgs = parser.parse_dependencies(system_deps)
if pkgs: if pkgs: