]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
kernel-install/60-ukify: add helper function for locating input files
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 10 Oct 2023 16:53:55 +0000 (18:53 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 11 Oct 2023 15:34:43 +0000 (17:34 +0200)
Also rename config_file_location() to uki_conf_location() to make
it obvious which config file was meant.

src/kernel-install/60-ukify.install.in

index 01146467d1a8ccfd82538ca81d12e49483cae760..44a7750da50fa57e6eb4f146dbc23a72a74c2730 100755 (executable)
@@ -124,27 +124,35 @@ def we_are_wanted() -> bool:
     return True
 
 
-def config_file_location() -> Optional[Path]:
+def input_file_location(
+        filename: str,
+        *search_directories: str) -> Optional[Path]:
+
     if root := os.getenv('KERNEL_INSTALL_CONF_ROOT'):
-        p = Path(root) / 'uki.conf'
-    else:
-        p = Path('/etc/kernel/uki.conf')
-    if p.exists():
-        return p
+        search_directories = (root,)
+    elif not search_directories:
+        # This is the default search path.
+        search_directories = ('/etc/kernel',
+                              '/usr/lib/kernel')
+
+    for dir in search_directories:
+        p = Path(dir) / filename
+        if p.exists():
+            return p
     return None
 
 
-def kernel_cmdline_base() -> list[str]:
-    if root := os.getenv('KERNEL_INSTALL_CONF_ROOT'):
-        return Path(root).joinpath('cmdline').read_text().split()
+def uki_conf_location() -> Optional[Path]:
+    return input_file_location('uki.conf',
+                               '/etc/kernel')
 
-    for cmdline in ('/etc/kernel/cmdline',
-                    '/usr/lib/kernel/cmdline'):
-        try:
-            return Path(cmdline).read_text().split()
-        except FileNotFoundError:
-            continue
 
+def kernel_cmdline_base() -> list[str]:
+    path = input_file_location('cmdline')
+    if path:
+        return path.read_text().split()
+
+    # If we read /proc/cmdline, we need to do some additional filtering.
     options = Path('/proc/cmdline').read_text().split()
     return [opt for opt in options
             if not opt.startswith(('BOOT_IMAGE=', 'initrd='))]
@@ -193,7 +201,7 @@ def call_ukify(opts):
     # argument set to prepopulate the namespace with the defaults.
     opts2 = ukify['create_parser']().parse_args(['build'])
 
-    opts2.config = config_file_location()
+    opts2.config = uki_conf_location()
     opts2.uname = opts.kernel_version
     opts2.linux = opts.kernel_image
     opts2.initrd = initrd_list(opts)