]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ukify: default --hwids to /usr/lib/systemd/boot/hwids/<EFI_ARCH>/ 40541/head
authorLuca Boccassi <luca.boccassi@gmail.com>
Tue, 24 Feb 2026 22:00:35 +0000 (22:00 +0000)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 25 Feb 2026 13:51:31 +0000 (13:51 +0000)
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

man/ukify.xml
src/ukify/ukify.py

index a3fbbca93f565858c2bdc886e1dd60804ab3b72b..0e818dbc4fb90e9c82a6aee887d854b6ae71ea41 100644 (file)
           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>
index b7542c7eca3057d41ba82222e61a3698bdfc0f21..6f492bc9ba07f26bdcb3efb3658029a7d8554e18 100755 (executable)
@@ -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',
     ),