Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-09-15 20:11:40 +0200
committerAnton Hvornum <anton@hvornum.se>2021-09-15 20:11:40 +0200
commit9e67ce3f05bb813c997c3c2bc874c4d6ed83c5d6 (patch)
tree2b5097e0c802aba5165f13256d9439f9e36d441f
parent70af00f33dd903e1bc70a996854861038a2d919c (diff)
Making sure the drive paths are in the JSON structure, and not the class object, as it won't work seamlessly to access for instance storage['disk_layouts'][ClassInstance()] if it's not the identical mem copy of the object we're accessing, so strings are better for storage/comparisons.
-rw-r--r--archinstall/lib/disk.py18
-rw-r--r--archinstall/lib/user_interaction.py2
-rw-r--r--examples/guided.py16
3 files changed, 15 insertions, 21 deletions
diff --git a/archinstall/lib/disk.py b/archinstall/lib/disk.py
index a700c2a0..3628a4b0 100644
--- a/archinstall/lib/disk.py
+++ b/archinstall/lib/disk.py
@@ -114,13 +114,13 @@ def suggest_single_disk_layout(block_device):
MIN_SIZE_TO_ALLOW_HOME_PART = 40 # Gb
layout = {
- block_device : {
+ block_device.path : {
"wipe" : True,
"partitions" : []
}
}
- layout[block_device]['partitions'].append({
+ layout[block_device.path]['partitions'].append({
# Boot
"type" : "primary",
"start" : "1MiB",
@@ -133,7 +133,7 @@ def suggest_single_disk_layout(block_device):
"format" : "fat32"
}
})
- layout[block_device]['partitions'].append({
+ layout[block_device.path]['partitions'].append({
# Root
"type" : "primary",
"start" : "513MiB",
@@ -147,7 +147,7 @@ def suggest_single_disk_layout(block_device):
})
if block_device.size >= MIN_SIZE_TO_ALLOW_HOME_PART:
- layout[block_device]['partitions'].append({
+ layout[block_device.path]['partitions'].append({
# Home
"type" : "primary",
"encrypted" : False,
@@ -175,17 +175,17 @@ def suggest_multi_disk_layout(block_devices):
log(f"Suggesting multi-disk-layout using {len(block_devices)} disks, where {root_device} will be /root and {home_device} will be /home", level=logging.DEBUG)
layout = {
- root_device : {
+ root_device.path : {
"wipe" : True,
"partitions" : []
},
- home_device : {
+ home_device.path : {
"wipe" : True,
"partitions" : []
},
}
- layout[root_device]['partitions'].append({
+ layout[root_device.path]['partitions'].append({
# Boot
"type" : "primary",
"start" : "1MiB",
@@ -198,7 +198,7 @@ def suggest_multi_disk_layout(block_devices):
"format" : "fat32"
}
})
- layout[root_device]['partitions'].append({
+ layout[root_device.path]['partitions'].append({
# Root
"type" : "primary",
"start" : "513MiB",
@@ -211,7 +211,7 @@ def suggest_multi_disk_layout(block_devices):
}
})
- layout[home_device]['partitions'].append({
+ layout[home_device.path]['partitions'].append({
# Home
"type" : "primary",
"encrypted" : False,
diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py
index b017e41a..6854ccfd 100644
--- a/archinstall/lib/user_interaction.py
+++ b/archinstall/lib/user_interaction.py
@@ -751,7 +751,7 @@ def select_individual_blockdevice_usage(block_devices :list):
for device in block_devices:
layout = manage_new_and_existing_partitions(device)
- result[device] = layout
+ result[device.path] = layout
return result
diff --git a/examples/guided.py b/examples/guided.py
index b0f6f699..b7c75b30 100644
--- a/examples/guided.py
+++ b/examples/guided.py
@@ -58,16 +58,14 @@ def load_config():
if (dl_path := pathlib.Path(archinstall.arguments['disk_layouts'])).exists() and str(dl_path).endswith('.json'):
try:
with open(dl_path) as fh:
- archinstall.arguments['disk_layouts'] = json.load(fh)
+ archinstall.storage['disk_layouts'] = json.load(fh)
except Exception as e:
raise ValueError(f"--disk_layouts does not contain a valid JSON format: {e}")
else:
try:
- archinstall.arguments['disk_layouts'] = json.loads(archinstall.arguments['disk_layouts'])
+ archinstall.storage['disk_layouts'] = json.loads(archinstall.arguments['disk_layouts'])
except:
raise ValueError("--disk_layouts=<json> needs either a JSON file or a JSON string given with a valid disk layout.")
- archinstall.storage['disk_layouts'] = {archinstall.BlockDevice(disk) : struct for disk, struct in archinstall.arguments['disk_layouts'].items()}
-
def ask_user_questions():
"""
@@ -111,15 +109,12 @@ def ask_user_questions():
# Ask which harddrives/block-devices we will install to
# and convert them into archinstall.BlockDevice() objects.
- if archinstall.arguments.get('harddrives', None):
- if type(archinstall.arguments['harddrives']) is str:
- archinstall.arguments['harddrives'] = [archinstall.BlockDevice(BlockDev) for BlockDev in archinstall.arguments['harddrives'].split(',')]
- else:
+ if archinstall.arguments.get('harddrives', None) is None:
archinstall.arguments['harddrives'] = archinstall.generic_multi_select(archinstall.all_disks(),
text="Select one or more harddrives to use and configure (leave blank to skip this step): ",
allow_empty=True)
- if archinstall.arguments.get('harddrives', None):
+ if archinstall.arguments.get('harddrives', None) is not None and archinstall.storage.get('disk_layouts', None) is None:
archinstall.storage['disk_layouts'] = archinstall.select_disk_layout(archinstall.arguments['harddrives'])
# Get disk encryption password (or skip if blank)
@@ -256,8 +251,7 @@ def perform_filesystem_operations():
for drive in archinstall.arguments['harddrives']:
with archinstall.Filesystem(drive, mode) as fs:
- fs.load_layout(archinstall.storage['disk_layouts'][drive])
-
+ fs.load_layout(archinstall.storage['disk_layouts'][drive.path])
def perform_installation(mountpoint):
"""