diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 03fdb0c5b..3e384a018 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -474,6 +474,14 @@ def run(): libcalamares.utils.warning( "EFI system, but nothing mounted on {!s}".format(efi_system_partition) ) return None - prepare_bootloader(fw_type) + try: + prepare_bootloader(fw_type) + except subprocess.CalledProcessError as e: + libcalamares.utils.warning(str(e)) + libcalamares.utils.debug("stdout:" + str(e.stdout)) + libcalamares.utils.debug("stderr:" + str(e.stderr)) + return (_("Bootloader installation error"), + _("The bootloader could not be installed. The installation command
{!s}
returned error code {!s}.") + .format(e.cmd, e.returncode)) return None diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index b6d7a4b2a..61f6b0e9f 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -372,15 +372,23 @@ def run(): root_btrfs = (root_partitions[0] == "btrfs") if root_partitions else False if root_btrfs: partitions.append( dict(fs="swap", mountPoint=None, claimed=True, device="/swap/swapfile", uuid=None) ) - else: + else: partitions.append( dict(fs="swap", mountPoint=None, claimed=True, device="/swapfile", uuid=None) ) else: swap_choice = None libcalamares.job.setprogress(0.1) - mount_options = conf["mountOptions"] + mount_options = conf.get("mountOptions", {}) ssd_extra_mount_options = conf.get("ssdExtraMountOptions", {}) crypttab_options = conf.get("crypttabOptions", "luks") + + # We rely on mount_options having a default; if there wasn't one, + # bail out with a meaningful error. + if not mount_options: + return (_("Configuration Error"), + _("No
{!s}
configuration is given for
{!s}
to use.") + .format("mountOptions", "fstab")) + generator = FstabGenerator(partitions, root_mount_point, mount_options, diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index c3cc2ad7d..9be079dac 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -579,11 +579,27 @@ def run(): update_db = libcalamares.job.configuration.get("update_db", False) if update_db and libcalamares.globalstorage.value("hasInternet"): - pkgman.update_db() + try: + pkgman.update_db() + except subprocess.CalledProcessError as e: + libcalamares.utils.warning(str(e)) + libcalamares.utils.debug("stdout:" + str(e.stdout)) + libcalamares.utils.debug("stderr:" + str(e.stderr)) + return (_("Package Manager error"), + _("The package manager could not prepare updates. The command
{!s}
returned error code {!s}.") + .format(e.cmd, e.returncode)) update_system = libcalamares.job.configuration.get("update_system", False) if update_system and libcalamares.globalstorage.value("hasInternet"): - pkgman.update_system() + try: + pkgman.update_system() + except subprocess.CalledProcessError as e: + libcalamares.utils.warning(str(e)) + libcalamares.utils.debug("stdout:" + str(e.stdout)) + libcalamares.utils.debug("stderr:" + str(e.stderr)) + return (_("Package Manager error"), + _("The package manager could not update the system. The command
{!s}
returned error code {!s}.") + .format(e.cmd, e.returncode)) operations = libcalamares.job.configuration.get("operations", []) if libcalamares.globalstorage.contains("packageOperations"): @@ -603,11 +619,18 @@ def run(): for entry in operations: group_packages = 0 libcalamares.utils.debug(pretty_name()) - run_operations(pkgman, entry) + try: + run_operations(pkgman, entry) + except subprocess.CalledProcessError as e: + libcalamares.utils.warning(str(e)) + libcalamares.utils.debug("stdout:" + str(e.stdout)) + libcalamares.utils.debug("stderr:" + str(e.stderr)) + return (_("Package Manager error"), + _("The package manager could make changes to the installed system. The command
{!s}
returned error code {!s}.") + .format(e.cmd, e.returncode)) mode_packages = None libcalamares.job.setprogress(1.0) - libcalamares.utils.debug(pretty_name()) return None