*,
include: Iterable[str],
exclude: Iterable[str],
-) -> list[Path]:
+) -> list[str]:
logging.debug(f"Kernel modules include: {' '.join(include)}")
logging.debug(f"Kernel modules exclude: {' '.join(exclude)}")
logging.debug(f"Including {len(modules)}/{n_modules} kernel modules.")
- return sorted(modules)
+ return sorted(module_path_to_name(m) for m in modules)
def filter_firmware(
# installed we have to take the slow path to make sure we don't copy firmware into the initrd that is not
# depended on by any kernel modules.
if modules_include or modules_exclude or (context.root / firmwared).glob("*"):
- modules = filter_kernel_modules(context.root, kver, include=modules_include, exclude=modules_exclude)
- names = [module_path_to_name(m) for m in modules]
- mods, firmware = resolve_module_dependencies(context, kver, names)
+ modules, firmware = resolve_module_dependencies(
+ context,
+ kver,
+ modules=filter_kernel_modules(
+ context.root,
+ kver,
+ include=modules_include,
+ exclude=modules_exclude,
+ ),
+ )
else:
logging.debug(
"No modules excluded and no firmware installed, using kernel modules generation fast path"
)
with chdir(context.root):
- mods = set(modulesd.rglob("*.ko*"))
+ modules = set(modulesd.rglob("*.ko*"))
firmware = set()
# Include or exclude firmware explicitly configured
itertools.chain(
{
p.relative_to(context.root)
- for f in mods | firmware
+ for f in modules | firmware
for p in parents_below(context.root / f, context.root / "usr/lib")
},
- mods,
+ modules,
firmware,
(p.relative_to(context.root) for p in (context.root / modulesd).glob("modules*")),
)
)
if (modulesd / "vdso").exists():
- if not mods:
+ if not modules:
yield from (
p.relative_to(context.root)
for p in parents_below(context.root / modulesd / "vdso", context.root / "usr/lib")