Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/installer.py
diff options
context:
space:
mode:
authorDaniel Girtler <blackrabbit256@gmail.com>2022-06-07 01:28:46 +1000
committerGitHub <noreply@github.com>2022-06-06 17:28:46 +0200
commita7ca037a26de53fd242f89bc6a90fd53337b4d13 (patch)
tree5919ce42f32a7dac45b543ac15835a11086bd41b /archinstall/lib/installer.py
parent2d4b2620462a0fb4c9496ed0629d7ab8930fc73a (diff)
Update the subvolume menu - fix for #1278 (#1297)
* Update subvolume * Add mypy compliance Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com> Co-authored-by: Anton Hvornum <anton@hvornum.se>
Diffstat (limited to 'archinstall/lib/installer.py')
-rw-r--r--archinstall/lib/installer.py55
1 files changed, 17 insertions, 38 deletions
diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py
index bf296c2e..97c2492d 100644
--- a/archinstall/lib/installer.py
+++ b/archinstall/lib/installer.py
@@ -24,6 +24,7 @@ from .disk.partition import get_mount_fs_type
from .exceptions import DiskError, ServiceException, RequirementError, HardwareIncompatibilityError, SysCallError
from .hsm import fido2_enroll
from .models.users import User
+from .models.subvolume import Subvolume
if TYPE_CHECKING:
_: Any
@@ -263,47 +264,25 @@ class Installer:
hsm_device_path = storage['arguments']['HSM']
fido2_enroll(hsm_device_path, partition['device_instance'], password)
- # we manage the btrfs partitions
- if any(btrfs_subvolumes := [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', {})]):
- for partition in btrfs_subvolumes:
- if mount_options := ','.join(partition.get('filesystem',{}).get('mount_options',[])):
- self.mount(partition['device_instance'], "/", options=mount_options)
- else:
- self.mount(partition['device_instance'], "/")
-
- setup_subvolumes(
- installation=self,
- partition_dict=partition
- )
+ btrfs_subvolumes = [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', [])]
- partition['device_instance'].unmount()
+ for partition in btrfs_subvolumes:
+ device_instance = partition['device_instance']
+ mount_options = partition.get('filesystem', {}).get('mount_options', [])
+ self.mount(device_instance, "/", options=','.join(mount_options))
+ setup_subvolumes(installation=self, partition_dict=partition)
+ device_instance.unmount()
# We then handle any special cases, such as btrfs
- if any(btrfs_subvolumes := [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', {})]):
- for partition_information in btrfs_subvolumes:
- for name, mountpoint in sorted(partition_information['btrfs']['subvolumes'].items(), key=lambda item: item[1]):
- btrfs_subvolume_information = {}
-
- match mountpoint:
- case str(): # backwards-compatability
- btrfs_subvolume_information['mountpoint'] = mountpoint
- btrfs_subvolume_information['options'] = []
- case dict():
- btrfs_subvolume_information['mountpoint'] = mountpoint.get('mountpoint', None)
- btrfs_subvolume_information['options'] = mountpoint.get('options', [])
- case _:
- continue
-
- if mountpoint_parsed := btrfs_subvolume_information.get('mountpoint'):
- # We cache the mount call for later
- mount_queue[mountpoint_parsed] = lambda device=partition_information['device_instance'], \
- name=name, \
- subvolume_information=btrfs_subvolume_information: mount_subvolume(
- installation=self,
- device=device,
- name=name,
- subvolume_information=subvolume_information
- )
+ for partition in btrfs_subvolumes:
+ subvolumes: List[Subvolume] = partition['btrfs']['subvolumes']
+ for subvolume in sorted(subvolumes, key=lambda item: item.mountpoint):
+ # We cache the mount call for later
+ mount_queue[subvolume.mountpoint] = lambda sub_vol=subvolume, device=partition['device_instance']: mount_subvolume(
+ installation=self,
+ device=device,
+ subvolume=sub_vol
+ )
# We mount ordinary partitions, and we sort them by the mountpoint
for partition in sorted([entry for entry in list_part if entry.get('mountpoint', False)], key=lambda part: part['mountpoint']):