From 179c103cddf930b91ffa82a9feee37c7f2487ed8 Mon Sep 17 00:00:00 2001 From: Timothy Pidashev Date: Sun, 30 Jan 2022 02:01:04 -0800 Subject: Synchronize `archlinux-keyring` when running guided.py (#917) * Update guided.py * Update guided.py * Update guided.py * Fix typo * Format string properly; elaborate log msg * Make change consistent to mirror-check * Update documentation --- archinstall/lib/networking.py | 10 ++++++++++ docs/archinstall/general.rst | 2 ++ examples/guided.py | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/archinstall/lib/networking.py b/archinstall/lib/networking.py index 6b09deba..82754b58 100644 --- a/archinstall/lib/networking.py +++ b/archinstall/lib/networking.py @@ -40,6 +40,16 @@ def check_mirror_reachable() -> bool: return False +def update_keyring() -> bool: + log("Updating archlinux-keyring ...", level=logging.INFO) + if SysCommand("pacman -Sy archlinux-keyring").exit_code == 0: + return True + + elif os.geteuid() != 0: + log("update_keyring() uses 'pacman -Sy archlinux-keyring' which requires root.", level=logging.ERROR, fg="red") + + return False + def enrich_iface_types(interfaces: Union[Dict[str, Any], List[str]]) -> Dict[str, str]: result = {} diff --git a/docs/archinstall/general.rst b/docs/archinstall/general.rst index 804d4416..53847139 100644 --- a/docs/archinstall/general.rst +++ b/docs/archinstall/general.rst @@ -74,6 +74,8 @@ Networking .. autofunction:: archinstall.check_mirror_reachable +.. autofunction:: archinstall.update_keyring + .. autofunction:: archinstall.enrich_iface_types .. autofunction:: archinstall.get_interface_from_mac diff --git a/examples/guided.py b/examples/guided.py index 9092d8f6..22e0f883 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -309,6 +309,11 @@ if not (archinstall.check_mirror_reachable() or archinstall.arguments.get('skip- archinstall.log(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red") exit(1) +if not (archinstall.update_keyring() or archinstall.arguments.get('skip-keyring-update', False)): + log_file = os.path.join(archinstall.storage.get('LOG_PATH', None), archinstall.storage.get('LOG_FILE', None)) + archinstall.log(f"Failed to update the keyring. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red") + exit(1) + load_config() if not archinstall.arguments.get('silent'): ask_user_questions() -- cgit v1.2.3-70-g09d2