Apply upstream fixes for unit tests
Add patches needed for the unit tests to pass on RHEL-8 - https://github.com/osbuild/osbuild/pull/1316 - https://github.com/osbuild/osbuild/pull/1317 Related: rhbz#2174845 Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
parent
997ba9631d
commit
eba57a46bf
169
PR1316.patch
Normal file
169
PR1316.patch
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
From 3e780762cb92f3cbb1c80c78669f1768613f163e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozza?= <thozza@redhat.com>
|
||||||
|
Date: Thu, 25 May 2023 13:12:08 +0200
|
||||||
|
Subject: [PATCH] stages/sgdisk: option to not quote partition names passed to
|
||||||
|
sgdisk
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The partition name in the sgdisk stage was previously quoted when
|
||||||
|
passed to sgdisk as an argument. I think that this was done because
|
||||||
|
the sgdisk man page states that:
|
||||||
|
|
||||||
|
```
|
||||||
|
If you want to set a name that includes a space, enclose it in
|
||||||
|
quotation marks, as in sgdisk -c 1:"Sample Name" /dev/sdb.
|
||||||
|
```
|
||||||
|
|
||||||
|
However, this should apply only when sgdisk is run in a shell, so that
|
||||||
|
the argument is not split by shell into multiple arguments and passes
|
||||||
|
as a single string.
|
||||||
|
|
||||||
|
The stage is executing sgdisk using Python `subprocess` module, which
|
||||||
|
does not need strings with spaces to be quoted, because they are passed
|
||||||
|
to the command as separate items which are not split in any way.
|
||||||
|
|
||||||
|
The previous behavior of the stage was that these quotes became part of
|
||||||
|
the actual partition name in the partition table.
|
||||||
|
|
||||||
|
After a discussion within the team, we determined that this is a bug.
|
||||||
|
However, fixing it would result in osbuild producing a different
|
||||||
|
artifact for the same manifest, compared to osbuild version without such
|
||||||
|
fix. This is undesired.
|
||||||
|
|
||||||
|
For backward compatibility, a new `quote_partition_name` property is
|
||||||
|
added to the stage options, which can be used to make the stage not
|
||||||
|
quote the partition name when passed to `sgdisk`. As a result, the
|
||||||
|
partition name won't be quoted in the partition table.
|
||||||
|
|
||||||
|
The default stage behavior us kept.
|
||||||
|
|
||||||
|
Modify unit tests to use this option by default.
|
||||||
|
|
||||||
|
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
|
||||||
|
---
|
||||||
|
stages/org.osbuild.sgdisk | 13 ++++++++++---
|
||||||
|
test/data/stages/sgdisk/disk.img.json | 8 ++++----
|
||||||
|
test/data/stages/sgdisk/sgdisk.json | 1 +
|
||||||
|
test/data/stages/sgdisk/sgdisk.mpp.json | 1 +
|
||||||
|
4 files changed, 16 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/stages/org.osbuild.sgdisk b/stages/org.osbuild.sgdisk
|
||||||
|
index c90d4e6..13d9696 100755
|
||||||
|
--- a/stages/org.osbuild.sgdisk
|
||||||
|
+++ b/stages/org.osbuild.sgdisk
|
||||||
|
@@ -30,6 +30,11 @@ SCHEMA_2 = r"""
|
||||||
|
"description": "UUID for the disk image's partition table",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
+ "quote_partition_name": {
|
||||||
|
+ "description": "Quote partition names passed to sgdisk, so that they end up quoted in the partition table. This is old behavior kept for backward compatibility.",
|
||||||
|
+ "type": "boolean",
|
||||||
|
+ "default": true
|
||||||
|
+ },
|
||||||
|
"partitions": {
|
||||||
|
"description": "Partition layout ",
|
||||||
|
"type": "array",
|
||||||
|
@@ -109,7 +114,7 @@ class PartitionTable:
|
||||||
|
def __getitem__(self, key) -> Partition:
|
||||||
|
return self.partitions[key]
|
||||||
|
|
||||||
|
- def write_to(self, target):
|
||||||
|
+ def write_to(self, target, quote_partition_name):
|
||||||
|
"""Write the partition table to disk"""
|
||||||
|
# generate the command for sfdisk to create the table
|
||||||
|
|
||||||
|
@@ -138,8 +143,9 @@ class PartitionTable:
|
||||||
|
]
|
||||||
|
|
||||||
|
if part.name:
|
||||||
|
+ part_name = f'"{part.name}"' if quote_partition_name else part.name
|
||||||
|
cmd += [
|
||||||
|
- "-c", f'{idx}:"{part.name}"'
|
||||||
|
+ "-c", f"{idx}:{part_name}"
|
||||||
|
]
|
||||||
|
|
||||||
|
if part.uuid:
|
||||||
|
@@ -180,12 +186,13 @@ def main(devices, options):
|
||||||
|
device = devices["device"]["path"]
|
||||||
|
|
||||||
|
ptuuid = options["uuid"]
|
||||||
|
+ quote_partition_name = options.get("quote_partition_name", True)
|
||||||
|
partitions = options.get("partitions")
|
||||||
|
|
||||||
|
parts = [partition_from_json(p) for p in partitions]
|
||||||
|
pt = PartitionTable(ptuuid, parts)
|
||||||
|
|
||||||
|
- pt.write_to(device)
|
||||||
|
+ pt.write_to(device, quote_partition_name)
|
||||||
|
|
||||||
|
subprocess.run(["sgdisk", "-p", device],
|
||||||
|
encoding='utf8',
|
||||||
|
diff --git a/test/data/stages/sgdisk/disk.img.json b/test/data/stages/sgdisk/disk.img.json
|
||||||
|
index 18c048d..89a5199 100644
|
||||||
|
--- a/test/data/stages/sgdisk/disk.img.json
|
||||||
|
+++ b/test/data/stages/sgdisk/disk.img.json
|
||||||
|
@@ -13,7 +13,7 @@
|
||||||
|
"size": 1024000,
|
||||||
|
"type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
|
||||||
|
"uuid": "80B68AE7-3531-478C-A5FF-9B80F1CB07E9",
|
||||||
|
- "name": "\"EFI System Partition\"",
|
||||||
|
+ "name": "EFI System Partition",
|
||||||
|
"attrs": "LegacyBIOSBootable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
"size": 1024000,
|
||||||
|
"type": "BC13C2FF-59E6-4262-A352-B275FD6F7172",
|
||||||
|
"uuid": "CFE2BEB6-0BB8-4FB6-9075-2E79413AB707",
|
||||||
|
- "name": "\"boot\"",
|
||||||
|
+ "name": "boot",
|
||||||
|
"attrs": "LegacyBIOSBootable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
@@ -31,7 +31,7 @@
|
||||||
|
"size": 4096,
|
||||||
|
"type": "FAC7F1FB-3E8D-4137-A512-961DE09A5549",
|
||||||
|
"uuid": "6E2E131D-14C4-4278-876A-5067C40EAECD",
|
||||||
|
- "name": "\"BIOS boot\""
|
||||||
|
+ "name": "BIOS boot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"node": "disk.img4",
|
||||||
|
@@ -39,7 +39,7 @@
|
||||||
|
"size": 18917343,
|
||||||
|
"type": "E6D6D379-F507-44C2-A23C-238F2A3DF928",
|
||||||
|
"uuid": "646E1B09-9358-4A9C-B630-E3C0C296F7C6",
|
||||||
|
- "name": "\"LVM\""
|
||||||
|
+ "name": "LVM"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
diff --git a/test/data/stages/sgdisk/sgdisk.json b/test/data/stages/sgdisk/sgdisk.json
|
||||||
|
index 05d8dcf..29725ec 100644
|
||||||
|
--- a/test/data/stages/sgdisk/sgdisk.json
|
||||||
|
+++ b/test/data/stages/sgdisk/sgdisk.json
|
||||||
|
@@ -375,6 +375,7 @@
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"uuid": "68ad7ade-3fa7-4844-8b2f-1c4cd30bef70",
|
||||||
|
+ "quote_partition_name": false,
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"uuid": "80b68ae7-3531-478c-a5ff-9b80f1cb07e9",
|
||||||
|
diff --git a/test/data/stages/sgdisk/sgdisk.mpp.json b/test/data/stages/sgdisk/sgdisk.mpp.json
|
||||||
|
index f4024e1..11b57c1 100644
|
||||||
|
--- a/test/data/stages/sgdisk/sgdisk.mpp.json
|
||||||
|
+++ b/test/data/stages/sgdisk/sgdisk.mpp.json
|
||||||
|
@@ -31,6 +31,7 @@
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"uuid": "68ad7ade-3fa7-4844-8b2f-1c4cd30bef70",
|
||||||
|
+ "quote_partition_name": false,
|
||||||
|
"partitions": [
|
||||||
|
{
|
||||||
|
"uuid": "80b68ae7-3531-478c-a5ff-9b80f1cb07e9",
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
1263
PR1317.patch
Normal file
1263
PR1317.patch
Normal file
File diff suppressed because it is too large
Load Diff
14
osbuild.spec
14
osbuild.spec
@ -9,12 +9,19 @@ Version: 85
|
|||||||
%global pkgdir %{_prefix}/lib/%{pypi_name}
|
%global pkgdir %{_prefix}/lib/%{pypi_name}
|
||||||
|
|
||||||
Name: %{pypi_name}
|
Name: %{pypi_name}
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
|
|
||||||
URL: %{forgeurl}
|
URL: %{forgeurl}
|
||||||
|
|
||||||
Source0: %{forgesource}
|
Source0: %{forgesource}
|
||||||
|
|
||||||
|
# Add patches needed for the unit tests to pass on RHEL-8
|
||||||
|
# https://github.com/osbuild/osbuild/pull/1316
|
||||||
|
Patch0: PR1316.patch
|
||||||
|
# https://github.com/osbuild/osbuild/pull/1317
|
||||||
|
Patch1: PR1317.patch
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
Summary: A build system for OS images
|
Summary: A build system for OS images
|
||||||
|
|
||||||
@ -121,7 +128,7 @@ Contains additional tools and utilities for development of
|
|||||||
manifests and osbuild.
|
manifests and osbuild.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%forgesetup
|
%forgeautosetup -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%py3_build
|
%py3_build
|
||||||
@ -252,6 +259,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue May 30 2023 Tomáš Hozza <thozza@redhat.com> - 85-2
|
||||||
|
- Backport upstream fixes for unit tests on RHEL-8 (PR#1316, PR#1317)
|
||||||
|
|
||||||
* Thu May 11 2023 imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> - 85-1
|
* Thu May 11 2023 imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> - 85-1
|
||||||
- New upstream release
|
- New upstream release
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user