@@ -59,17 +59,6 @@ def _process_kernel_modules_multi(self, module: str) -> None:
5959 else :
6060 dependencies += sofdeps
6161
62- if firmware := modinfo .get ('firmware' ):
63- if self .get ('kmod_pull_firmware' ):
64- self .logger .info ("[%s] Adding firmware to dependencies: %s" % (module , firmware ))
65- for file in firmware :
66- try :
67- self ['dependencies' ] = Path ('/lib/firmware/' ) / file
68- except FileNotFoundError :
69- self .logger .warning ("[%s] Unable to find referenced firmware file: %s" % (module , file ))
70- else :
71- self .logger .warning ("Firmware was detected, but is being ignored: %s" % firmware )
72-
7362 for dependency in dependencies :
7463 if dependency in self ['kmod_ignore' ]:
7564 self .logger .error ("Kernel module dependency is in ignore list: %s" % dependency )
@@ -101,12 +90,10 @@ def _get_kmod_info(self, module: str):
10190 Runs modinfo on a kernel module, parses the output and stored the results in self.config_dict['_kmod_modinfo']
10291 """
10392 if module in self ['_kmod_modinfo' ]:
104- self .logger .debug ( "Module info already exists for: %s" % module )
93+ self .logger .log ( 5 , "Module info already exists for: %s" % module )
10594 return
10695
107- self .logger .debug ("Getting modinfo for: %s" % module )
10896 args = ['modinfo' , module ]
109-
11097 # Set kernel version if it exists, otherwise use the running kernel
11198 if self .get ('kernel_version' ):
11299 args += ['--set-version' , self ['kernel_version' ]]
@@ -247,12 +234,34 @@ def calculate_modules(self) -> None:
247234
248235 if self .config_dict ['_kmod_depend' ]:
249236 self .logger .info ("Adding internal dependencies to kmod_init: %s" % self .config_dict ['_kmod_depend' ])
250- self .config_dict ['kmod_init' ] = self .config_dict ['_kmod_depend' ]
237+ self .config_dict ['kmod_init' ] = self .config_dict ['_kmod_depend' ]. copy () # Copy because _kmood_depend may shrink during iteration
251238
252239 self .logger .info ("Included kernel modules: %s" % self .config_dict ['kernel_modules' ])
253240 process_module_metadata (self )
254241
255242
243+ def process_modules (self ) -> None :
244+ """
245+ Processes all kernel modules, adding dependencies to the initramfs
246+ """
247+ for kmod in self .config_dict ['kernel_modules' ]:
248+ self .logger .debug ("Processing kernel module: %s" % kmod )
249+ modinfo = self .config_dict ['_kmod_modinfo' ][kmod ]
250+ # Add the module itself to the dependencies
251+ self .config_dict ['dependencies' ] = Path (modinfo ['filename' ])
252+ # If the module has firmware, add it to the dependencies
253+ if firmware := modinfo .get ('firmware' ):
254+ if self .get ('kmod_pull_firmware' ):
255+ self .logger .info ("[%s] Adding firmware to dependencies: %s" % (kmod , firmware ))
256+ for file in firmware :
257+ try :
258+ self ['dependencies' ] = Path ('/lib/firmware/' ) / file
259+ except FileNotFoundError :
260+ self .logger .warning ("[%s] Unable to find referenced firmware file: %s" % (kmod , file ))
261+ else :
262+ self .logger .warning ("Firmware was detected, but is being ignored: %s" % firmware )
263+
264+
256265def load_modules (self ) -> None :
257266 """
258267 Creates a bash script which loads all kernel modules in kmod_init
0 commit comments