From 08617722a40d8b3c849c3c37efaa79ec61a51414 Mon Sep 17 00:00:00 2001 From: Anri Dellal Date: Wed, 31 Mar 2021 14:12:15 +0300 Subject: [PATCH] init: Hide unsupported UIs (MR 2043) Hides user interfaces which require GPU acceleration for unsupported devices. Device support is identified by deviceinfo property `deviceinfo_gpu_accelerated`. UI which has GPU acceleration as requirement, must have `pmb:gpu-accel` in APKBUILD's options. --- pmb/config/__init__.py | 1 + pmb/config/init.py | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/pmb/config/__init__.py b/pmb/config/__init__.py index 87f473ed..cff80693 100644 --- a/pmb/config/__init__.py +++ b/pmb/config/__init__.py @@ -529,6 +529,7 @@ apkbuild_custom_valid_options = [ "pmb:kconfigcheck-containers", "pmb:kconfigcheck-nftables", "pmb:cross-native", + "pmb:gpu-accel", "pmb:strict", ] diff --git a/pmb/config/init.py b/pmb/config/init.py index f2c45c94..66cb0735 100644 --- a/pmb/config/init.py +++ b/pmb/config/init.py @@ -114,12 +114,29 @@ def ask_for_channel(args): def ask_for_ui(args, device): info = pmb.parse.deviceinfo(args, device) ui_list = pmb.helpers.ui.list(args, info["arch"]) - logging.info("Available user interfaces (" + - str(len(ui_list) - 1) + "): ") + hidden_ui_count = 0 + device_is_accelerated = info.get("gpu_accelerated") == "true" + if not device_is_accelerated: + for i in reversed(range(len(ui_list))): + pkgname = f"postmarketos-ui-{ui_list[i][0]}" + apkbuild = pmb.helpers.pmaports.get(args, pkgname, + subpackages=False, + must_exist=False) + if apkbuild and "pmb:gpu-accel" in apkbuild["options"]: + ui_list.pop(i) + hidden_ui_count += 1 + + logging.info(f"Available user interfaces ({len(ui_list) - 1}): ") ui_completion_list = [] for ui in ui_list: - logging.info("* " + ui[0] + ": " + ui[1]) + logging.info(f"* {ui[0]}: {ui[1]}") ui_completion_list.append(ui[0]) + if hidden_ui_count > 0: + logging.info(f"NOTE: {hidden_ui_count} user interfaces are not" + " available. If device supports GPU acceleration," + " set \"deviceinfo_gpu_accelerated\" to make UIs" + " available. See: