index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2021-02-07 15:25:34 +0100 |
---|---|---|
committer | Anton Hvornum <anton@hvornum.se> | 2021-02-07 15:25:34 +0100 |
commit | a5a6ff4d31aa23dfaceca3973166a24dba4ccd0f (patch) | |
tree | 4ed3edee8193f77dc1c93f7f3ba522e50f9ae5ee | |
parent | 759b7787439e49c03cc330cf0500977c0b83696e (diff) |
-rw-r--r-- | archinstall/lib/disk.py | 18 | ||||
-rw-r--r-- | archinstall/lib/exceptions.py | 2 |
diff --git a/archinstall/lib/disk.py b/archinstall/lib/disk.py index 93d24613..e23e354c 100644 --- a/archinstall/lib/disk.py +++ b/archinstall/lib/disk.py @@ -138,14 +138,26 @@ class Partition(): self.mountpoint = partition_info['target'] self.filesystem = partition_info['fstype'] + # We perform a dummy format on /dev/null with the given filesystem-type + # in order to determain if we support it or not. + try: + self.format(self.filesystem, '/dev/null') + except DiskError: + pass # We supported it, but /dev/null is not formatable as expected + except UnknownFilesystemFormat as err: + raise err + def __repr__(self, *args, **kwargs): if self.encrypted: return f'Partition(path={self.path}, real_device={self.real_device}, fs={self.filesystem}, mounted={self.mountpoint})' else: return f'Partition(path={self.path}, fs={self.filesystem}, mounted={self.mountpoint})' - def format(self, filesystem): - log(f'Formatting {self} -> {filesystem}', level=LOG_LEVELS.Info) + def format(self, filesystem, path=None): + if not path: + path = self.path + + log(f'Formatting {path} -> {filesystem}', level=LOG_LEVELS.Info) if filesystem == 'btrfs': o = b''.join(sys_command(f'/usr/bin/mkfs.btrfs -f {self.path}')) if b'UUID' not in o: @@ -169,7 +181,7 @@ class Partition(): raise DiskError(f'Could not format {self.path} with {filesystem} because: {b"".join(handle)}') self.filesystem = 'f2fs' else: - raise DiskError(f'Fileformat {filesystem} is not yet implemented.') + raise UnknownFilesystemFormat(f'Fileformat '{filesystem}' is not yet implemented.') return True def find_parent_of(self, data, name, parent=None): diff --git a/archinstall/lib/exceptions.py b/archinstall/lib/exceptions.py index 84e6a766..a7864a23 100644 --- a/archinstall/lib/exceptions.py +++ b/archinstall/lib/exceptions.py @@ -2,6 +2,8 @@ class RequirementError(BaseException): pass class DiskError(BaseException): pass +class UnknownFilesystemFormat(BaseException): + pass class ProfileError(BaseException): pass class SysCallError(BaseException): |