From 7f01747efcb15375b8e8601edafa2d9b89e38061 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 2 Feb 2022 08:18:12 +0100 Subject: Torxed fix sys command calls (#932) * Fixed exceptions in is_vm() and virtualization() * Added exception handling for parted in BlockDevice.free_space --- archinstall/lib/disk/blockdevice.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'archinstall/lib/disk/blockdevice.py') diff --git a/archinstall/lib/disk/blockdevice.py b/archinstall/lib/disk/blockdevice.py index 5ffa06a8..fac258ef 100644 --- a/archinstall/lib/disk/blockdevice.py +++ b/archinstall/lib/disk/blockdevice.py @@ -8,7 +8,7 @@ from typing import Optional, Dict, Any, Iterator, Tuple, List, TYPE_CHECKING if TYPE_CHECKING: from .partition import Partition -from ..exceptions import DiskError +from ..exceptions import DiskError, SysCallError from ..output import log from ..general import SysCommand from ..storage import storage @@ -189,10 +189,13 @@ class BlockDevice: # that is "outside" the disk. in /dev/sr0 this is usually the case with Archiso, # so the free will ignore the ESP partition and just give the "free" space. # Doesn't harm us, but worth noting in case something weird happens. - for line in SysCommand(f"parted -s --machine {self.path} print free"): - if 'free' in (free_space := line.decode('UTF-8')): - _, start, end, size, *_ = free_space.strip('\r\n;').split(':') - yield (start, end, size) + try: + for line in SysCommand(f"parted -s --machine {self.path} print free"): + if 'free' in (free_space := line.decode('UTF-8')): + _, start, end, size, *_ = free_space.strip('\r\n;').split(':') + yield (start, end, size) + except SysCallError as error: + log(f"Could not get free space on {self.path}: {error}", level=logging.INFO) @property def largest_free_space(self) -> List[str]: -- cgit v1.2.3-70-g09d2