Backport PR #1810 to use new container types

(cherry picked from commit ddef475081f9efea390c60c2666d9e22536d70c1)
This commit is contained in:
Adam Williamson 2025-01-06 22:21:41 +02:00 committed by Stepan Oksanichenko
parent 80e22467e7
commit 4137092e7f
2 changed files with 99 additions and 2 deletions

91
1810.patch Normal file
View File

@ -0,0 +1,91 @@
From 3cb8992d56f2cee8a7cb151253125e30931ccd6d Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Dec 12 2024 01:52:40 +0000
Subject: Use new container and bootable-container productmd types
In https://github.com/release-engineering/productmd/pull/181 I
added new `bootable-container` and `container` types to
productmd. This makes pungi always use the bootable-container
type for ostree_container images (previously 'ociarchive'), and
default to using the container type for Kiwi-built oci.tar.xz
container images (previously 'docker').
This is a significant change for anything that relies on
productmd/fedfind conventions to 'identify' images, as these
images will now have a different identity. But I think it's a
valuable improvement in their identities. 'ociarchive' never made
any sense as an image 'type' - it's a format - and 'docker'
wasn't a very good type for images that are explicitly OCI
container images, not Docker-native ones. We also can now easily
distinguish between 'regular' container images and ones that are
intended to be bootable.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
diff --git a/pungi/phases/kiwibuild.py b/pungi/phases/kiwibuild.py
index 400ea6a..9b75dd7 100644
--- a/pungi/phases/kiwibuild.py
+++ b/pungi/phases/kiwibuild.py
@@ -25,6 +25,7 @@ KIWIEXTENSIONS = [
("fex", ["squashfs.xz"], "squashfs.xz"),
("fex", ["squashfs.gz"], "squashfs.gz"),
("fex", ["squashfs"], "squashfs"),
+ ("container", ["oci.tar.xz"], "tar.xz"),
]
@@ -242,13 +243,15 @@ class RunKiwiBuildThread(WorkerThread):
def _find_type_and_format(path):
- for type_, suffixes in EXTENSIONS.items():
- for suffix in suffixes:
- if path.endswith(suffix):
- return type_, suffix
# these are our kiwi-exclusive mappings for images whose extensions
- # aren't quite the same as imagefactory
+ # aren't quite the same as imagefactory. they come first as we
+ # want our oci.tar.xz mapping to win over the tar.xz one in
+ # EXTENSIONS
for type_, suffixes, format_ in KIWIEXTENSIONS:
if any(path.endswith(suffix) for suffix in suffixes):
return type_, format_
+ for type_, suffixes in EXTENSIONS.items():
+ for suffix in suffixes:
+ if path.endswith(suffix):
+ return type_, suffix
return None, None
diff --git a/pungi/phases/ostree_container.py b/pungi/phases/ostree_container.py
index c50633d..c017962 100644
--- a/pungi/phases/ostree_container.py
+++ b/pungi/phases/ostree_container.py
@@ -164,9 +164,9 @@ class OSTreeContainerThread(WorkerThread):
# Update image manifest
img = Image(compose.im)
- # Get the manifest type from the config if supplied, otherwise we
- # determine the manifest type based on the koji output
- img.type = "ociarchive"
+ # these are hardcoded as they should always be correct, we
+ # could potentially allow overriding them via config though
+ img.type = "bootable-container"
img.format = "ociarchive"
img.path = os.path.relpath(fullpath, compose.paths.compose.topdir())
img.mtime = util.get_mtime(fullpath)
diff --git a/setup.py b/setup.py
index fd249c0..839400b 100755
--- a/setup.py
+++ b/setup.py
@@ -56,7 +56,7 @@ setup(
"jsonschema",
"kobo",
"lxml",
- "productmd>=1.23",
+ "productmd>=1.43",
"dogpile.cache",
],
extras_require={':python_version=="2.7"': ["enum34", "lockfile"]},

View File

@ -2,12 +2,15 @@
Name: pungi
Version: 4.8.0
Release: 1%{?dist}.alma.1
Release: 2%{?dist}.alma.1
Summary: Distribution compose tool
License: GPL-2.0-only
URL: https://pagure.io/pungi
Source0: %{name}-%{version}.tar.bz2
# https://pagure.io/pungi/pull-request/1810
# Use container and bootable-container productmd types
Patch: 1810.patch
BuildRequires: make
BuildRequires: python3-pytest
@ -69,7 +72,7 @@ Requires: python3-libmodulemd >= 2.8.0
Requires: python3-gobject
Requires: python3-createrepo_c >= 0.20.1
Requires: python3-PyYAML
Requires: python3-productmd >= 1.38
Requires: python3-productmd >= 1.43
Requires: python3-flufl-lock
%if %{rhel} == 10
Requires: xorriso
@ -172,6 +175,9 @@ gzip _build/man/pungi.1
%{_bindir}/%{name}-cache-cleanup
%changelog
* Mon Jan 06 2025 Adam Williamson <awilliam@redhat.com> - 4.8.0-2
- Backport PR #1810 to use new container types
* Fri Nov 29 2024 Lubomír Sedlář <lsedlar@redhat.com> - 4.8.0-1
- Drop spec file (lsedlar)
- Remove python 2.7 from tox configuration (lsedlar)