From 3b7465dccbd94951eecdb71a8b028bb36f70c848 Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Mon, 31 Oct 2022 01:27:03 +0100 Subject: [PATCH] devices/{device,deviceinfo}: tolerate device variants that live inside split packages --- devices/device.py | 6 ++++-- devices/deviceinfo.py | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/devices/device.py b/devices/device.py index 586d54d..dce3d9d 100644 --- a/devices/device.py +++ b/devices/device.py @@ -128,7 +128,8 @@ def get_device(name: str, pkgbuilds: Optional[dict[str, Pkgbuild]] = None, lazy: if scan_all: devices = get_devices(pkgbuilds=pkgbuilds, lazy=lazy) if name not in devices: - raise Exception(f'Unknown device {name}!') + raise Exception(f'Unknown device {name}!\n' + f'Available: {list(devices.keys())}') return devices[name] else: pkgname = f'device-{name}' @@ -143,7 +144,8 @@ def get_device(name: str, pkgbuilds: Optional[dict[str, Pkgbuild]] = None, lazy: init_pkgbuilds() relative_path = os.path.join('device', pkgname) if not os.path.exists(os.path.join(config.get_path('pkgbuilds'), relative_path)): - raise Exception(f'unknown device "{name}": pkgbuilds/{relative_path} doesn\'t exist.') + logging.debug(f'Exact device pkgbuild path "pkgbuilds/{relative_path}" doesn\'t exist, scanning entire repo') + return get_device(name, pkgbuilds=pkgbuilds, lazy=lazy, scan_all=True) pkgbuild = [p for p in get_pkgbuild_by_path(relative_path, lazy=lazy, _config=config) if p.name == pkgname][0] device = parse_device_pkg(pkgbuild) if lazy: diff --git a/devices/deviceinfo.py b/devices/deviceinfo.py index 6848eed..9fdd73a 100644 --- a/devices/deviceinfo.py +++ b/devices/deviceinfo.py @@ -169,7 +169,9 @@ def _pmos_sanity_check(info: dict[str, str], device_name: str): codename = codename[7:] # kupfer prepends the SoC codename_alternative = codename.split('-', maxsplit=1)[1] if codename.count('-') > 1 else codename - if "codename" not in info or (codename != info["codename"] and codename_alternative != info["codename"]): + _codename = info.get('codename', None) + if not _codename or not (_codename in [codename, codename_alternative] or codename.startswith(_codename) or + codename_alternative.startswith(_codename)): raise RuntimeError(f"Please add 'deviceinfo_codename=\"{codename}\"' " f"to: {path}")