ukify: default --hwids to /usr/lib/systemd/boot/hwids/<EFI_ARCH>/

If the option is not manually specified, and the hwids directory exists
for the target EFI architecture, default to it. Allow passing '' to skip.

Fixes https://github.com/systemd/systemd/issues/40542
This commit is contained in:
Luca Boccassi
2026-02-25 13:51:31 +00:00
parent 6d5018487c
commit 117ec9db7e
2 changed files with 14 additions and 7 deletions
+5 -3
View File
@@ -452,9 +452,11 @@
Here <literal>Example Laptop 16 Gen 7</literal> is the device <literal>name</literal> (as defined
by the manufacturer), <literal>example,laptop-16-g7</literal> is the <literal>compatible</literal>
(as defined by the kernel) and <literal>hwids</literal> is an array of CHIDs/HWIDs (extracted i.e.
from <command>fwupdtool hwids</command> output). If not specified, the section will not be
present. It is recommended to specify this parameter if automatically selectable DeviceTrees are
to be used.</para>
from <command>fwupdtool hwids</command> output). If not specified, and the
<literal>/usr/lib/systemd/boot/hwids/[EFI_ARCH]/</literal> directory exists, then the section will
be automatically populated from that directory (specify an empty string as the parameter for this
option to disable this behavior), otherwise it will not be present. It is recommended to specify
this parameter if automatically selectable DeviceTrees are to be used.</para>
<xi:include href="version-info.xml" xpointer="v257"/></listitem>
</varlistentry>
+9 -4
View File
@@ -273,7 +273,7 @@ class UkifyConfig:
devicetree: Path
devicetree_auto: list[Path]
efi_arch: str
hwids: Path
hwids: Union[str, Path, None]
initrd: list[Path]
efifw: list[Path]
join_profiles: list[Path]
@@ -1397,8 +1397,14 @@ def make_uki(opts: UkifyConfig) -> None:
hwids = None
if opts.hwids is not None:
hwids = parse_hwid_dir(opts.hwids)
if opts.hwids != '':
if opts.hwids is not None:
hwids = parse_hwid_dir(Path(opts.hwids))
else:
hwids_dir = Path(f'/tmp/s/usr/lib/systemd/boot/hwids/{opts.efi_arch}')
if hwids_dir.is_dir():
print(f'Automatically building .hwids section from {hwids_dir}', file=sys.stderr)
hwids = parse_hwid_dir(hwids_dir)
sections = [
# name, content, measure?
@@ -1994,7 +2000,6 @@ CONFIG_ITEMS = [
ConfigItem(
'--hwids',
metavar='DIR',
type=Path,
help='Directory with HWID text files [.hwids section]',
config_key='UKI/HWIDs',
),