forked from Mirror/pmbootstrap
pmb: introduce deviceinfo_chassis (MR 1933)
"Chassis" defines the what kind of device a device is. Currently the following standardized types exist: "desktop", "laptop", "convertible", "server", "tablet", "handset", "watch", "embedded", "vm", "container" This property is exposed by org.freedesktop.hostname1 (e.g. openrc-settingsd) and can be used by applications for example to display appropriate strings instead of "About this phone" for non-phone devices.
This commit is contained in:
parent
c5d0f76005
commit
6bb7f022b1
4 changed files with 32 additions and 3 deletions
|
@ -44,6 +44,15 @@ def ask_for_year(args):
|
||||||
validation_regex=r'^[1-9]\d{3,}$')
|
validation_regex=r'^[1-9]\d{3,}$')
|
||||||
|
|
||||||
|
|
||||||
|
def ask_for_chassis(args):
|
||||||
|
types = pmb.config.deviceinfo_chassis_types
|
||||||
|
|
||||||
|
logging.info("What type of device is it?")
|
||||||
|
logging.info("Valid types are: " + ", ".join(types))
|
||||||
|
return pmb.helpers.cli.ask(args, "Chassis", None, None, True,
|
||||||
|
validation_regex='|'.join(types), complete=types)
|
||||||
|
|
||||||
|
|
||||||
def ask_for_keyboard(args):
|
def ask_for_keyboard(args):
|
||||||
return pmb.helpers.cli.confirm(args, "Does the device have a hardware keyboard?")
|
return pmb.helpers.cli.confirm(args, "Does the device have a hardware keyboard?")
|
||||||
|
|
||||||
|
@ -120,7 +129,7 @@ def generate_deviceinfo_fastboot_content(args, bootimg=None):
|
||||||
|
|
||||||
|
|
||||||
def generate_deviceinfo(args, pkgname, name, manufacturer, year, arch,
|
def generate_deviceinfo(args, pkgname, name, manufacturer, year, arch,
|
||||||
has_keyboard, has_external_storage,
|
chassis, has_keyboard, has_external_storage,
|
||||||
flash_method, bootimg=None):
|
flash_method, bootimg=None):
|
||||||
codename = "-".join(pkgname.split("-")[1:])
|
codename = "-".join(pkgname.split("-")[1:])
|
||||||
# Note: New variables must be added to pmb/config/__init__.py as well
|
# Note: New variables must be added to pmb/config/__init__.py as well
|
||||||
|
@ -138,6 +147,7 @@ def generate_deviceinfo(args, pkgname, name, manufacturer, year, arch,
|
||||||
deviceinfo_arch="{arch}"
|
deviceinfo_arch="{arch}"
|
||||||
|
|
||||||
# Device related
|
# Device related
|
||||||
|
deviceinfo_chassis="{chassis}"
|
||||||
deviceinfo_keyboard="{"true" if has_keyboard else "false"}"
|
deviceinfo_keyboard="{"true" if has_keyboard else "false"}"
|
||||||
deviceinfo_external_storage="{"true" if has_external_storage else "false"}"
|
deviceinfo_external_storage="{"true" if has_external_storage else "false"}"
|
||||||
deviceinfo_screen_width="800"
|
deviceinfo_screen_width="800"
|
||||||
|
@ -232,6 +242,7 @@ def generate(args, pkgname):
|
||||||
manufacturer = ask_for_manufacturer(args)
|
manufacturer = ask_for_manufacturer(args)
|
||||||
name = ask_for_name(args, manufacturer)
|
name = ask_for_name(args, manufacturer)
|
||||||
year = ask_for_year(args)
|
year = ask_for_year(args)
|
||||||
|
chassis = ask_for_chassis(args)
|
||||||
has_keyboard = ask_for_keyboard(args)
|
has_keyboard = ask_for_keyboard(args)
|
||||||
has_external_storage = ask_for_external_storage(args)
|
has_external_storage = ask_for_external_storage(args)
|
||||||
flash_method = ask_for_flash_method(args)
|
flash_method = ask_for_flash_method(args)
|
||||||
|
@ -240,6 +251,6 @@ def generate(args, pkgname):
|
||||||
bootimg = ask_for_bootimg(args)
|
bootimg = ask_for_bootimg(args)
|
||||||
|
|
||||||
generate_deviceinfo(args, pkgname, name, manufacturer, year, arch,
|
generate_deviceinfo(args, pkgname, name, manufacturer, year, arch,
|
||||||
has_keyboard, has_external_storage,
|
chassis, has_keyboard, has_external_storage,
|
||||||
flash_method, bootimg)
|
flash_method, bootimg)
|
||||||
generate_apkbuild(args, pkgname, name, arch, flash_method)
|
generate_apkbuild(args, pkgname, name, arch, flash_method)
|
||||||
|
|
|
@ -304,6 +304,7 @@ deviceinfo_attributes = [
|
||||||
"arch",
|
"arch",
|
||||||
|
|
||||||
# device
|
# device
|
||||||
|
"chassis",
|
||||||
"keyboard",
|
"keyboard",
|
||||||
"external_storage",
|
"external_storage",
|
||||||
"screen_width",
|
"screen_width",
|
||||||
|
@ -348,6 +349,20 @@ deviceinfo_attributes = [
|
||||||
"keymaps",
|
"keymaps",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Valid types for the 'chassis' atribute in deviceinfo
|
||||||
|
# See https://www.freedesktop.org/software/systemd/man/machine-info.html
|
||||||
|
deviceinfo_chassis_types = [
|
||||||
|
"desktop",
|
||||||
|
"laptop",
|
||||||
|
"convertible",
|
||||||
|
"server",
|
||||||
|
"tablet",
|
||||||
|
"handset",
|
||||||
|
"watch",
|
||||||
|
"embedded",
|
||||||
|
"vm"
|
||||||
|
]
|
||||||
|
|
||||||
#
|
#
|
||||||
# INITFS
|
# INITFS
|
||||||
#
|
#
|
||||||
|
|
|
@ -54,7 +54,7 @@ def generate(args, monkeypatch, answers):
|
||||||
"""
|
"""
|
||||||
# Patched function
|
# Patched function
|
||||||
def fake_ask(args, question="Continue?", choices=["y", "n"], default="n",
|
def fake_ask(args, question="Continue?", choices=["y", "n"], default="n",
|
||||||
lowercase_answer=True, validation_regex=None):
|
lowercase_answer=True, validation_regex=None, complete=None):
|
||||||
for substr, answer in answers.items():
|
for substr, answer in answers.items():
|
||||||
if substr in question:
|
if substr in question:
|
||||||
logging.info(question + ": " + answer)
|
logging.info(question + ": " + answer)
|
||||||
|
@ -117,6 +117,7 @@ def test_aportgen_device_wizard(args, monkeypatch):
|
||||||
"Manufacturer": "Testsuite",
|
"Manufacturer": "Testsuite",
|
||||||
"Name": "Testsuite Testdevice",
|
"Name": "Testsuite Testdevice",
|
||||||
"Year": "1337",
|
"Year": "1337",
|
||||||
|
"Chassis": "handset",
|
||||||
"Type": "isorec",
|
"Type": "isorec",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +138,7 @@ def test_aportgen_device_wizard(args, monkeypatch):
|
||||||
assert deviceinfo["manufacturer"] == answers["Manufacturer"]
|
assert deviceinfo["manufacturer"] == answers["Manufacturer"]
|
||||||
assert deviceinfo["arch"] == "armhf"
|
assert deviceinfo["arch"] == "armhf"
|
||||||
assert deviceinfo["year"] == "1337"
|
assert deviceinfo["year"] == "1337"
|
||||||
|
assert deviceinfo["chassis"] == "handset"
|
||||||
assert deviceinfo["keyboard"] == "false"
|
assert deviceinfo["keyboard"] == "false"
|
||||||
assert deviceinfo["external_storage"] == "true"
|
assert deviceinfo["external_storage"] == "true"
|
||||||
assert deviceinfo["flash_method"] == "heimdall-isorec"
|
assert deviceinfo["flash_method"] == "heimdall-isorec"
|
||||||
|
|
|
@ -12,6 +12,7 @@ deviceinfo_flash_method="fastboot"
|
||||||
deviceinfo_arch="armhf"
|
deviceinfo_arch="armhf"
|
||||||
|
|
||||||
# Device related
|
# Device related
|
||||||
|
deviceinfo_chassis="handset"
|
||||||
deviceinfo_keyboard="false"
|
deviceinfo_keyboard="false"
|
||||||
deviceinfo_screen_width="768"
|
deviceinfo_screen_width="768"
|
||||||
deviceinfo_screen_height="1280"
|
deviceinfo_screen_height="1280"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue