Backport patches to fix GCE image format not to be 'docker'
(cherry picked from commit 80ddc0cf015d582ca21376c3ba97b38ba813f5e2)
This commit is contained in:
parent
b3b4b894c7
commit
2495771f59
41
1715.patch
41
1715.patch
@ -1,41 +0,0 @@
|
|||||||
From 432b0bce0401c4bbcd1a958a89305c475a794f26 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Williamson <awilliam@redhat.com>
|
|
||||||
Date: Jan 19 2024 07:25:09 +0000
|
|
||||||
Subject: checks: don't require "repo" in the "ostree" schema
|
|
||||||
|
|
||||||
|
|
||||||
Per @siosm in https://pagure.io/pungi-fedora/pull-request/1227
|
|
||||||
this option "is deprecated and not needed anymore", so Pungi
|
|
||||||
should not be requiring it.
|
|
||||||
|
|
||||||
Merges: https://pagure.io/pungi/pull-request/1714
|
|
||||||
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
diff --git a/pungi/checks.py b/pungi/checks.py
|
|
||||||
index a340f93..db8b297 100644
|
|
||||||
--- a/pungi/checks.py
|
|
||||||
+++ b/pungi/checks.py
|
|
||||||
@@ -1066,7 +1066,6 @@ def make_schema():
|
|
||||||
"required": [
|
|
||||||
"treefile",
|
|
||||||
"config_url",
|
|
||||||
- "repo",
|
|
||||||
"ostree_repo",
|
|
||||||
],
|
|
||||||
"additionalProperties": False,
|
|
||||||
diff --git a/pungi/phases/ostree.py b/pungi/phases/ostree.py
|
|
||||||
index 90578ae..2649cdb 100644
|
|
||||||
--- a/pungi/phases/ostree.py
|
|
||||||
+++ b/pungi/phases/ostree.py
|
|
||||||
@@ -85,7 +85,7 @@ class OSTreeThread(WorkerThread):
|
|
||||||
comps_repo = compose.paths.work.comps_repo(
|
|
||||||
"$basearch", variant=variant, create_dir=False
|
|
||||||
)
|
|
||||||
- repos = shortcuts.force_list(config["repo"]) + self.repos
|
|
||||||
+ repos = shortcuts.force_list(config.get("repo", [])) + self.repos
|
|
||||||
if compose.has_comps:
|
|
||||||
repos.append(translate_path(compose, comps_repo))
|
|
||||||
repos = get_repo_dicts(repos, logger=self.pool)
|
|
||||||
|
|
211
1788.patch
Normal file
211
1788.patch
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
From 5338d3098ccd614a8fd32f837a393aed78b471bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Williamson <awilliam@redhat.com>
|
||||||
|
Date: Sep 20 2024 06:03:15 +0000
|
||||||
|
Subject: [PATCH 1/2] move osbuild/kiwi-specific EXTENSIONS to each phase
|
||||||
|
|
||||||
|
|
||||||
|
The image-build phase's EXTENSIONS dict is meant to exactly
|
||||||
|
mirror the 'formats' that exist in the context of the command
|
||||||
|
`koji image-build`, which is driven by this phase. That nice
|
||||||
|
association was lost, however, by adding a couple of items to it
|
||||||
|
which exist for the purposes of the osbuild phase (and in the
|
||||||
|
case of .iso, also the kiwibuild phase), which import this dict
|
||||||
|
and uses it for image identification.
|
||||||
|
|
||||||
|
To make the association 1:1 again and more clearly show what's
|
||||||
|
going on here, let's move those entries out into the osbuild and
|
||||||
|
kiwi phases. osbuild now has its own dict which starts out as a
|
||||||
|
copy of the image-build one before being extended. And let's
|
||||||
|
update the relevant comments.
|
||||||
|
|
||||||
|
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/pungi/phases/image_build.py b/pungi/phases/image_build.py
|
||||||
|
index cb76c1a..cd034cd 100644
|
||||||
|
--- a/pungi/phases/image_build.py
|
||||||
|
+++ b/pungi/phases/image_build.py
|
||||||
|
@@ -22,10 +22,13 @@ from productmd.rpms import Rpms
|
||||||
|
# This is a mapping from formats to file extensions. The format is what koji
|
||||||
|
# image-build command expects as argument, and the extension is what the file
|
||||||
|
# name will be ending with. The extensions are used to filter out which task
|
||||||
|
-# results will be pulled into the compose.
|
||||||
|
+# results will be pulled into the compose. This dict is also used later in
|
||||||
|
+# the process to set the image 'type' in productmd metadata terms - the type
|
||||||
|
+# is set as the first key in this dict which has the file's extension in its
|
||||||
|
+# values. This dict is imported and extended for similar purposes by other
|
||||||
|
+# phases (at least osbuild and kiwibuild).
|
||||||
|
EXTENSIONS = {
|
||||||
|
"docker": ["tar.gz", "tar.xz"],
|
||||||
|
- "iso": ["iso"],
|
||||||
|
"liveimg-squashfs": ["liveimg.squashfs"],
|
||||||
|
"qcow": ["qcow"],
|
||||||
|
"qcow2": ["qcow2"],
|
||||||
|
@@ -40,7 +43,6 @@ EXTENSIONS = {
|
||||||
|
"vdi": ["vdi"],
|
||||||
|
"vmdk": ["vmdk"],
|
||||||
|
"vpc": ["vhd"],
|
||||||
|
- "vhd-compressed": ["vhd.gz", "vhd.xz"],
|
||||||
|
"vsphere-ova": ["vsphere.ova"],
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/pungi/phases/kiwibuild.py b/pungi/phases/kiwibuild.py
|
||||||
|
index bb26812..15732ce 100644
|
||||||
|
--- a/pungi/phases/kiwibuild.py
|
||||||
|
+++ b/pungi/phases/kiwibuild.py
|
||||||
|
@@ -15,6 +15,10 @@ KIWIEXTENSIONS = [
|
||||||
|
("vhd-compressed", ["vhdfixed.xz"], "vhd.xz"),
|
||||||
|
("vagrant-libvirt", ["vagrant.libvirt.box"], "vagrant-libvirt.box"),
|
||||||
|
("vagrant-virtualbox", ["vagrant.virtualbox.box"], "vagrant-virtualbox.box"),
|
||||||
|
+ # .iso images can be of many types - boot, cd, dvd, live... -
|
||||||
|
+ # so 'boot' is just a default guess. 'iso' is not a valid
|
||||||
|
+ # productmd image type
|
||||||
|
+ ("boot", [".iso"], "iso"),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/pungi/phases/osbuild.py b/pungi/phases/osbuild.py
|
||||||
|
index 6c5b7e5..a3b5c9b 100644
|
||||||
|
--- a/pungi/phases/osbuild.py
|
||||||
|
+++ b/pungi/phases/osbuild.py
|
||||||
|
@@ -11,6 +11,16 @@ from ..linker import Linker
|
||||||
|
from ..wrappers import kojiwrapper
|
||||||
|
from .image_build import EXTENSIONS
|
||||||
|
|
||||||
|
+# copy and modify EXTENSIONS with some that osbuild produces but which
|
||||||
|
+# do not exist as `koji image-build` formats
|
||||||
|
+OSBUILDEXTENSIONS = EXTENSIONS.copy()
|
||||||
|
+OSBUILDEXTENSIONS.update(
|
||||||
|
+ {
|
||||||
|
+ "iso": ["iso"],
|
||||||
|
+ "vhd-compressed": ["vhd.gz", "vhd.xz"],
|
||||||
|
+ }
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
|
||||||
|
class OSBuildPhase(
|
||||||
|
base.PhaseLoggerMixin, base.ImageConfigMixin, base.ConfigGuardedPhase
|
||||||
|
@@ -203,7 +213,7 @@ class RunOSBuildThread(WorkerThread):
|
||||||
|
# architecture, but we don't verify that.
|
||||||
|
build_info = koji.koji_proxy.getBuild(build_id)
|
||||||
|
for archive in koji.koji_proxy.listArchives(buildID=build_id):
|
||||||
|
- if archive["type_name"] not in EXTENSIONS:
|
||||||
|
+ if archive["type_name"] not in OSBUILDEXTENSIONS:
|
||||||
|
# Ignore values that are not of required types.
|
||||||
|
continue
|
||||||
|
|
||||||
|
@@ -241,7 +251,7 @@ class RunOSBuildThread(WorkerThread):
|
||||||
|
|
||||||
|
linker.link(src_file, image_dest, link_type=compose.conf["link_type"])
|
||||||
|
|
||||||
|
- for suffix in EXTENSIONS[archive["type_name"]]:
|
||||||
|
+ for suffix in OSBUILDEXTENSIONS[archive["type_name"]]:
|
||||||
|
if archive["filename"].endswith(suffix):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
|
||||||
|
From 739062ed3c471e74ba9c5144c4047f67f9fbe8c8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Williamson <awilliam@redhat.com>
|
||||||
|
Date: Sep 20 2024 06:03:58 +0000
|
||||||
|
Subject: [PATCH 2/2] image_build: drop .tar.gz as an expected extension for docker
|
||||||
|
|
||||||
|
|
||||||
|
Koji's image-build command has not been capable of producing a
|
||||||
|
docker image with .tar.gz as its extension since 2015:
|
||||||
|
|
||||||
|
https://pagure.io/koji/c/b489f282bee7a008108534404dd2e78efb2256e7?branch=master
|
||||||
|
|
||||||
|
as that commit message implies, the files have not actually been
|
||||||
|
gzip-compressed for even longer:
|
||||||
|
|
||||||
|
https://pagure.io/koji/c/82a405c7943192e3bba3340efe7a8d07a0e26b70?branch=master
|
||||||
|
|
||||||
|
so there's no point to having this any more. It is causing the
|
||||||
|
wrong productmd 'type' to be set for GCE cloud images, which *do*
|
||||||
|
have the .tar.gz extension - because docker appears in this dict
|
||||||
|
before tar-gz, their type is being set as 'docker' not 'tar-gz'.
|
||||||
|
|
||||||
|
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/pungi/phases/image_build.py b/pungi/phases/image_build.py
|
||||||
|
index cd034cd..c28ccc2 100644
|
||||||
|
--- a/pungi/phases/image_build.py
|
||||||
|
+++ b/pungi/phases/image_build.py
|
||||||
|
@@ -28,7 +28,7 @@ from productmd.rpms import Rpms
|
||||||
|
# values. This dict is imported and extended for similar purposes by other
|
||||||
|
# phases (at least osbuild and kiwibuild).
|
||||||
|
EXTENSIONS = {
|
||||||
|
- "docker": ["tar.gz", "tar.xz"],
|
||||||
|
+ "docker": ["tar.xz"],
|
||||||
|
"liveimg-squashfs": ["liveimg.squashfs"],
|
||||||
|
"qcow": ["qcow"],
|
||||||
|
"qcow2": ["qcow2"],
|
||||||
|
diff --git a/tests/test_imagebuildphase.py b/tests/test_imagebuildphase.py
|
||||||
|
index 90f10ef..895f040 100644
|
||||||
|
--- a/tests/test_imagebuildphase.py
|
||||||
|
+++ b/tests/test_imagebuildphase.py
|
||||||
|
@@ -846,12 +846,12 @@ class TestCreateImageBuildThread(PungiTestCase):
|
||||||
|
"amd64": [
|
||||||
|
"/koji/task/1235/tdl-amd64.xml",
|
||||||
|
"/koji/task/1235/Fedora-Docker-Base-20160103.amd64.qcow2",
|
||||||
|
- "/koji/task/1235/Fedora-Docker-Base-20160103.amd64.tar.gz",
|
||||||
|
+ "/koji/task/1235/Fedora-Docker-Base-20160103.amd64.tar.xz",
|
||||||
|
],
|
||||||
|
"x86_64": [
|
||||||
|
"/koji/task/1235/tdl-x86_64.xml",
|
||||||
|
"/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.qcow2",
|
||||||
|
- "/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.tar.gz",
|
||||||
|
+ "/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.tar.xz",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -896,9 +896,9 @@ class TestCreateImageBuildThread(PungiTestCase):
|
||||||
|
link_type="hardlink-or-copy",
|
||||||
|
),
|
||||||
|
mock.call.link(
|
||||||
|
- "/koji/task/1235/Fedora-Docker-Base-20160103.amd64.tar.gz",
|
||||||
|
+ "/koji/task/1235/Fedora-Docker-Base-20160103.amd64.tar.xz",
|
||||||
|
self.topdir
|
||||||
|
- + "/compose/Client/amd64/images/Fedora-Docker-Base-20160103.amd64.tar.gz", # noqa: E501
|
||||||
|
+ + "/compose/Client/amd64/images/Fedora-Docker-Base-20160103.amd64.tar.xz", # noqa: E501
|
||||||
|
link_type="hardlink-or-copy",
|
||||||
|
),
|
||||||
|
mock.call.link(
|
||||||
|
@@ -908,9 +908,9 @@ class TestCreateImageBuildThread(PungiTestCase):
|
||||||
|
link_type="hardlink-or-copy",
|
||||||
|
),
|
||||||
|
mock.call.link(
|
||||||
|
- "/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.tar.gz",
|
||||||
|
+ "/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.tar.xz",
|
||||||
|
self.topdir
|
||||||
|
- + "/compose/Client/x86_64/images/Fedora-Docker-Base-20160103.x86_64.tar.gz", # noqa: E501
|
||||||
|
+ + "/compose/Client/x86_64/images/Fedora-Docker-Base-20160103.x86_64.tar.xz", # noqa: E501
|
||||||
|
link_type="hardlink-or-copy",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
@@ -922,8 +922,8 @@ class TestCreateImageBuildThread(PungiTestCase):
|
||||||
|
"type": "qcow2",
|
||||||
|
"arch": "amd64",
|
||||||
|
},
|
||||||
|
- "image_dir/Client/amd64/Fedora-Docker-Base-20160103.amd64.tar.gz": {
|
||||||
|
- "format": "tar.gz",
|
||||||
|
+ "image_dir/Client/amd64/Fedora-Docker-Base-20160103.amd64.tar.xz": {
|
||||||
|
+ "format": "tar.xz",
|
||||||
|
"type": "docker",
|
||||||
|
"arch": "amd64",
|
||||||
|
},
|
||||||
|
@@ -932,8 +932,8 @@ class TestCreateImageBuildThread(PungiTestCase):
|
||||||
|
"type": "qcow2",
|
||||||
|
"arch": "x86_64",
|
||||||
|
},
|
||||||
|
- "image_dir/Client/x86_64/Fedora-Docker-Base-20160103.x86_64.tar.gz": {
|
||||||
|
- "format": "tar.gz",
|
||||||
|
+ "image_dir/Client/x86_64/Fedora-Docker-Base-20160103.x86_64.tar.xz": {
|
||||||
|
+ "format": "tar.xz",
|
||||||
|
"type": "docker",
|
||||||
|
"arch": "x86_64",
|
||||||
|
},
|
||||||
|
|
@ -10,6 +10,7 @@ URL: https://pagure.io/pungi
|
|||||||
Source0: %{name}-%{version}.tar.bz2
|
Source0: %{name}-%{version}.tar.bz2
|
||||||
Patch: https://pagure.io/pungi/pull-request/1780.patch
|
Patch: https://pagure.io/pungi/pull-request/1780.patch
|
||||||
Patch: https://pagure.io/pungi/pull-request/1782.patch
|
Patch: https://pagure.io/pungi/pull-request/1782.patch
|
||||||
|
Patch: https://pagure.io/pungi/pull-request/1788.patch
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: python3-pytest
|
BuildRequires: python3-pytest
|
||||||
@ -176,6 +177,9 @@ rm %{buildroot}%{_bindir}/pungi
|
|||||||
%{_bindir}/%{name}-cache-cleanup
|
%{_bindir}/%{name}-cache-cleanup
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Oct 07 2024 Adam Williamson <awilliam@redhat.com> - 4.7.0-4
|
||||||
|
- Backport patches to fix GCE image format not to be 'docker'
|
||||||
|
|
||||||
* Mon Sep 1 2025 Aleksandra Kachanova <akachanova@almalinux.org> - 4.7.0-7
|
* Mon Sep 1 2025 Aleksandra Kachanova <akachanova@almalinux.org> - 4.7.0-7
|
||||||
- Add riscv64 to the list of supported architectures
|
- Add riscv64 to the list of supported architectures
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user