Install the package `alsa-firmware` if required (#1812)

This commit is contained in:
codefiles 2023-05-12 08:01:24 -04:00 committed by GitHub
parent 128db1cdf6
commit 06f35fd289
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 17 deletions

View File

@ -86,6 +86,21 @@ class _SysInfo:
def mem_info_by_key(self, key: str) -> int:
return self.mem_info[key]
@cached_property
def loaded_modules(self) -> List[str]:
"""
Returns loaded kernel modules
"""
modules_path = Path('/proc/modules')
modules: List[str] = []
with modules_path.open() as file:
for line in file:
module = line.split(maxsplit=1)[0]
modules.append(module)
return modules
_sys_info = _SysInfo()
@ -171,20 +186,9 @@ class SysInfo:
return False
@staticmethod
def _loaded_modules() -> List[str]:
"""
Returns loaded kernel modules
"""
modules_path = Path('/proc/modules')
modules: List[str] = []
with modules_path.open() as file:
for line in file:
module = line.split(maxsplit=1)[0]
modules.append(module)
return modules
def requires_sof_fw() -> bool:
return 'snd_sof' in _sys_info.loaded_modules
@staticmethod
def requires_sof() -> bool:
return 'snd_sof' in SysInfo._loaded_modules()
def requires_alsa_fw() -> bool:
return 'snd_emu10k1' in _sys_info.loaded_modules

View File

@ -183,8 +183,11 @@ def perform_installation(mountpoint: Path):
elif audio == 'pulseaudio':
installation.add_additional_packages("pulseaudio")
if SysInfo.requires_sof():
if SysInfo.requires_sof_fw():
installation.add_additional_packages('sof-firmware')
if SysInfo.requires_alsa_fw():
installation.add_additional_packages('alsa-firmware')
else:
info("No audio server will be installed")

View File

@ -162,8 +162,11 @@ def perform_installation(mountpoint: Path):
elif audio == 'pulseaudio':
installation.add_additional_packages("pulseaudio")
if SysInfo.requires_sof():
if SysInfo.requires_sof_fw():
installation.add_additional_packages('sof-firmware')
if SysInfo.requires_alsa_fw():
installation.add_additional_packages('alsa-firmware')
else:
info("No audio server will be installed.")