diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index bf7d91ba..40049c53 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -131,6 +131,7 @@ class Installer: self._zram_enabled = False self._disable_fstrim = False + self._keyring_synced = True self.pacman = Pacman(self.target, silent) @@ -228,6 +229,10 @@ class Installer: while self._service_state('archlinux-keyring-wkd-sync.service') not in ('dead', 'failed', 'exited'): time.sleep(1) + if self._service_state('archlinux-keyring-wkd-sync.service') == 'failed': + self._keyring_synced = False + warn('archlinux-keyring-wkd-sync failed, custom mirror configuration will be skipped') + def _verify_boot_part(self) -> None: """ Check that mounted /boot device has at minimum size for installation @@ -246,6 +251,10 @@ class Installer: f'Please resize it to at least 200MiB and re-run the installation.', ) + @property + def keyring_synced(self) -> bool: + return self._keyring_synced + def sanity_check( self, offline: bool = False, diff --git a/archinstall/scripts/guided.py b/archinstall/scripts/guided.py index 6f484910..1355d18f 100644 --- a/archinstall/scripts/guided.py +++ b/archinstall/scripts/guided.py @@ -12,7 +12,7 @@ from archinstall.lib.disk.utils import disk_layouts from archinstall.lib.general.general_menu import PostInstallationAction, select_post_installation from archinstall.lib.global_menu import GlobalMenu from archinstall.lib.installer import Installer, accessibility_tools_in_use, run_custom_user_commands -from archinstall.lib.log import debug, error, info +from archinstall.lib.log import debug, error, info, warn from archinstall.lib.menu.util import delayed_warning from archinstall.lib.mirror.mirror_handler import MirrorListHandler from archinstall.lib.models import Bootloader @@ -98,7 +98,10 @@ def perform_installation( installation.generate_key_files() if mirror_config := config.mirror_config: - installation.set_mirrors(mirror_list_handler, mirror_config, on_target=False) + if installation.keyring_synced: + installation.set_mirrors(mirror_list_handler, mirror_config, on_target=False) + else: + warn('Skipping custom mirror configuration due to keyring sync failure') installation.minimal_installation( optional_repositories=optional_repositories, @@ -109,7 +112,10 @@ def perform_installation( ) if mirror_config := config.mirror_config: - installation.set_mirrors(mirror_list_handler, mirror_config, on_target=True) + if installation.keyring_synced: + installation.set_mirrors(mirror_list_handler, mirror_config, on_target=True) + else: + warn('Skipping target mirror configuration due to keyring sync failure') if config.swap and config.swap.enabled: installation.setup_swap(algo=config.swap.algorithm)