curtin-dev team mailing list archive
-
curtin-dev team
-
Mailing list archive
-
Message #02102
[Merge] ~mwhudson/curtin:v2-fixes into curtin:master
Michael Hudson-Doyle has proposed merging ~mwhudson/curtin:v2-fixes into curtin:master.
Requested reviews:
curtin developers (curtin-dev)
For more details, see:
https://code.launchpad.net/~mwhudson/curtin/+git/curtin/+merge/415779
I don't expect to commit this as is, but I do want to see how it does in CI.
--
Your team curtin developers is requested to review the proposed merge of ~mwhudson/curtin:v2-fixes into curtin:master.
diff --git a/curtin/block/deps.py b/curtin/block/deps.py
index 38581a8..db449d8 100644
--- a/curtin/block/deps.py
+++ b/curtin/block/deps.py
@@ -96,8 +96,12 @@ def detect_required_packages_mapping(osfamily=DISTROS.debian):
if osfamily not in distro_mapping:
raise ValueError('No block package mapping for distro: %s' % osfamily)
- return {1: {'handler': storage_config_required_packages,
- 'mapping': distro_mapping.get(osfamily)}}
+ cfg_map = {
+ 'handler': storage_config_required_packages,
+ 'mapping': distro_mapping.get(osfamily),
+ }
+
+ return {1: cfg_map, 2: cfg_map}
# vi: ts=4 expandtab syntax=python
diff --git a/curtin/commands/block_meta_v2.py b/curtin/commands/block_meta_v2.py
index 772c347..5f797a4 100644
--- a/curtin/commands/block_meta_v2.py
+++ b/curtin/commands/block_meta_v2.py
@@ -53,6 +53,11 @@ def align_down(size, block_size):
FLAG_TO_GUID = {
flag: guid for (guid, (flag, typecode)) in GPT_GUID_TO_CURTIN_MAP.items()
}
+FLAG_TO_MBR_TYPE = {
+ flag: typecode[:2].upper() for (guid, (flag, typecode))
+ in GPT_GUID_TO_CURTIN_MAP.items()
+ }
+FLAG_TO_MBR_TYPE['extended'] = '05'
class SFDiskPartTable:
@@ -70,7 +75,7 @@ class SFDiskPartTable:
sfdisk_script = self.render()
LOG.debug("sfdisk input:\n---\n%s\n---\n", sfdisk_script)
util.subp(
- ['sfdisk', '--lock', '--no-tell', device],
+ ['sfdisk', device],
data=sfdisk_script.encode('ascii'))
util.subp(['partprobe', device])
@@ -144,20 +149,12 @@ class DOSPartTable(SFDiskPartTable):
for entry in self.entries:
if entry.number <= 4:
prev = entry
- break
if prev is None:
start = ONE_MIB_SECTORS
else:
start = align_up(prev.start + prev.size, ONE_MIB_SECTORS)
size = int(util.human2bytes(action['size'])) // SECTOR_BYTES
- FLAG_TO_TYPE = {
- 'extended': 'extended',
- 'boot': 'uefi',
- 'swap': 'swap',
- 'lvm': 'lvm',
- 'raid': 'raid',
- }
- type = FLAG_TO_TYPE.get(flag)
+ type = FLAG_TO_MBR_TYPE.get(flag)
if flag == 'boot':
bootable = True
else:
diff --git a/examples/tests/basic.yaml b/examples/tests/basic.yaml
index 82f5ad1..a95e914 100644
--- a/examples/tests/basic.yaml
+++ b/examples/tests/basic.yaml
@@ -4,7 +4,7 @@ swap:
size: 1GB
maxsize: 1GB
storage:
- version: 1
+ version: 2
config:
- id: sda
type: disk
diff --git a/tests/integration/test_block_meta.py b/tests/integration/test_block_meta.py
index fd119c5..a415c20 100644
--- a/tests/integration/test_block_meta.py
+++ b/tests/integration/test_block_meta.py
@@ -116,19 +116,22 @@ class TestBlockMeta(IntegrationTestCase):
psize = 40 << 20
img = self.tmp_path('image.img')
config = StorageConfigBuilder(version=version)
- config.add_image(path=img, size='100M', ptable=ptable)
+ config.add_image(path=img, size='200M', ptable=ptable)
p1 = config.add_part(size=psize, number=1)
p2 = config.add_part(size=psize, number=2)
+ p3 = config.add_part(size=psize, number=3)
self.run_bm(config.render())
with loop_dev(img) as dev:
self.assertEqual(
summarize_partitions(dev), [
- PartData(number=1, offset=1 << 20, size=psize),
- PartData(number=2, offset=(1 << 20) + psize, size=psize),
+ PartData(number=1, offset=1 << 20, size=psize),
+ PartData(number=2, offset=(1 << 20) + psize, size=psize),
+ PartData(number=3, offset=(1 << 20) + 2*psize, size=psize),
])
p1['offset'] = 1 << 20
p2['offset'] = (1 << 20) + psize
+ p3['offset'] = (1 << 20) + 2*psize
config.set_preserve()
self.run_bm(config.render())
Follow ups