Skip to content

Commit e825039

Browse files
committed
fixed kmod autodetction ignoring, added nonetwork module
Signed-off-by: Zen <[email protected]>
1 parent b17f85b commit e825039

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed

readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,9 @@ The following parameters can be used to change the kernel module pulling and ini
223223

224224
Some helper modules have been created to make importing required kernel modules easier.
225225

226-
`base.ugrd.kmod_nvme`, `kmod_usb`, and `kmod_fat` can be used to load modules for NVME's, USB storage, and the FAT file system respectively.
226+
`ugrd.kmod.nvme`, `usb`, and `fat` can be used to load modules for NVME's, USB storage, and the FAT file system respectively.
227227

228-
Similarly `base.ugrd.kmod_novideo` and `kmod_nosound` exist to ignore video and sound devices that may appear when autodetecting modules.
228+
Similarly `ugrd.kmod.novideo` `nonetwork`, and `nosound` exist to ignore video, network, and sound devices that may appear when autodetecting modules.
229229

230230
### Filesystem modules
231231

ugrd/kmod/kmod.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ def _process_kmod_ignore(self, module: str) -> None:
3030
self[key].remove(module)
3131

3232

33+
def _process_kernel_modules_multi(self, module: str) -> None:
34+
"""
35+
Adds the passed kernel module to self['kernel_modules']
36+
Checks if the module is ignored
37+
"""
38+
if module in self['kmod_ignore']:
39+
self.logger.warning("Not adding ignored kernel module to kernel_modules: %s" % module)
40+
return
41+
42+
self.logger.debug("Adding kernel module to kernel_modules: %s", module)
43+
self['kernel_modules'].append(module)
44+
45+
3346
def _process_kmod_init_multi(self, module: str) -> None:
3447
"""
3548
Adds init modules to self['kernel_modules'].
@@ -113,7 +126,7 @@ def process_kmod(self, module: str):
113126

114127
if firmware := modinfo.get('firmware'):
115128
if self.config_dict.get('kmod_pull_firmware'):
116-
self.logger.info("Adding firmware to dependencies: %s" % firmware)
129+
self.logger.info("[%s] Adding firmware to dependencies: %s" % (module, firmware))
117130
for file in firmware:
118131
try:
119132
self.config_dict['dependencies'] = Path('/lib/firmware/') / file
@@ -149,7 +162,7 @@ def get_lspci_modules(self) -> list[str]:
149162
except RuntimeError as e:
150163
raise DependencyResolutionError("Failed to get list of kernel modules") from e
151164

152-
raw_modules = set()
165+
modules = set()
153166
# Iterate over all output lines
154167
for line in cmd.stdout.decode('utf-8').split('\n'):
155168
# If the line contains the string 'Kernel modules:' or 'Kernel driver in use:', it contains the name of a kernel module
@@ -158,13 +171,13 @@ def get_lspci_modules(self) -> list[str]:
158171
if ',' in module:
159172
# If there are multiple modules, split them and add them to the module set
160173
for module in module.split(','):
161-
raw_modules.add(module.strip())
174+
modules.add(module.strip())
162175
else:
163176
# Add the single module to the module set
164-
raw_modules.add(module.strip())
177+
modules.add(module.strip())
165178

166-
self.logger.debug("Kernel modules in use by hardware: %s" % raw_modules)
167-
return list(raw_modules)
179+
self.logger.debug("Kernel modules in use by hardware: %s" % modules)
180+
return list(modules)
168181

169182

170183
def get_lsmod_modules(self) -> list[str]:
@@ -184,7 +197,7 @@ def get_lsmod_modules(self) -> list[str]:
184197
raise DependencyResolutionError('Failed to get list of kernel modules') from e
185198

186199
raw_modules = cmd.stdout.decode('utf-8').split('\n')[1:]
187-
modules = []
200+
modules = set
188201
# Remove empty lines, header, and ignored modules
189202
for module in raw_modules:
190203
if not module:
@@ -193,10 +206,10 @@ def get_lsmod_modules(self) -> list[str]:
193206
self.logger.log(5, "Dropping header line")
194207
else:
195208
self.logger.debug("Adding kernel module: %s", module.split()[0])
196-
modules.append(module.split()[0])
209+
modules.add(module.split()[0])
197210

198211
self.logger.debug(f'Found {len(modules)} active kernel modules')
199-
return modules
212+
return list(modules)
200213

201214

202215
def process_module_metadata(self) -> None:

ugrd/kmod/kmod.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ _kmod_depend = "NoDupFlatList" # Meant to be used internally, defines kernel mo
1818
_kmod_modinfo = "dict" # Used internally, caches modinfo output for kernel modules
1919

2020
[imports.config_processing]
21-
"ugrd.kmod.kmod" = [ "_process_kmod_init_multi", "_process_kmod_ignore" ]
21+
"ugrd.kmod.kmod" = [ "_process_kmod_init_multi", "_process_kernel_modules_multi", "_process_kmod_ignore" ]
2222

2323
[imports.build_pre]
2424
"ugrd.kmod.kmod" = [ "calculate_modules" ]

ugrd/kmod/nonetwork.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
mod_depends = ['ugrd.kmod.kmod']
2+
3+
kmod_ignore = ['r8169', 'iwlwifi', 'r8169']

0 commit comments

Comments
 (0)