New upstream release 4.3.6

This commit is contained in:
Lubomír Sedlář 2022-08-26 12:43:34 +02:00
parent d0d84279be
commit 960180cbe7
5 changed files with 18 additions and 322 deletions

View File

@ -1,51 +0,0 @@
From 38810b3f13861aa36f832d9e8f7ac14276d181a1 Mon Sep 17 00:00:00 2001
From: Petr Písař <ppisar@redhat.com>
Date: Feb 04 2022 10:15:31 +0000
Subject: modules: Correct a typo in loading obsoletes
Pungi failed:
TypeError: argument obsoletes: Expected Modulemd.Obsoletes, but got list
Frame collect_module_obsoletes in /usr/lib/python3.10/site-packages/pungi/module_util.py at line 91
<CODE>
84 mod_index = mod_index or Modulemd.ModuleIndex()
85
86 for module_name, obsoletes in iter_module_defaults_or_obsoletes(
87 obsoletes_dir, obsoletes=True
88 ):
89 for obsolete in obsoletes:
90 if not modules_to_load or module_name in modules_to_load:
--> 91 mod_index.add_obsoletes(obsoletes)
92
93 return mod_index
</CODE>
<LOCALS>
mod_index = <Modulemd.ModuleIndex object at 0x7f01a40fae40 (ModulemdModuleIndex at 0x7f0484338f90)>
module_name = 'perl'
modules_to_load = {'perl-Date-Manip', 'subversion', 'sway', 'nginx', 'perl-YAML', 'ghc', 'perl-App-cpanminus', 'perl-XML-Parser', 'varnish', 'nodejs', 'cri-o', 'perl-DBD-Pg', 'perl-DBI', 'perl', 'swig', 'perl-FCGI', 'p
obsolete = <Modulemd.Obsoletes object at 0x7f00c0fe4a00 (ModulemdObsoletes at 0x7f024c0268b0)>
obsoletes = [<Modulemd.Obsoletes object at 0x7f00c0fe4a00 (ModulemdObsoletes at 0x7f024c0268b0)>]
obsoletes_dir = '/mnt/koji/compose/rawhide/Fedora-Rawhide-20220203.n.1/work/global/module_obsoletes'
</LOCALS>
This patches fixes the typo in add_obsoletes() argument.
https://pagure.io/releng/failed-composes/issue/3058
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
diff --git a/pungi/module_util.py b/pungi/module_util.py
index 94a0ec5..a25cb36 100644
--- a/pungi/module_util.py
+++ b/pungi/module_util.py
@@ -88,6 +88,6 @@ def collect_module_obsoletes(obsoletes_dir, modules_to_load, mod_index=None):
):
for obsolete in obsoletes:
if not modules_to_load or module_name in modules_to_load:
- mod_index.add_obsoletes(obsoletes)
+ mod_index.add_obsoletes(obsolete)
return mod_index

View File

@ -1,213 +0,0 @@
From 27e39deafcec56947d46b023b3e9395d6042c479 Mon Sep 17 00:00:00 2001
From: Lubomír Sedlář <lsedlar@redhat.com>
Date: Jul 25 2022 12:42:02 +0000
Subject: Create DVDs with xorriso
Use a different approach for building DVDs when xorriso is enabled.
The default of using genisoimage is not changed at all. When the config
option is set to use xorriso, the actual execution is different between
bootable and non-bootable images.
The non-bootable images are still created by running xorrisofs (which is
a compatibility tool with same UI as genisoimage). Since the image is
not bootable, there should be no problems with boot options.
For bootable images, Pungi will instead take the boot.iso generated by
Lorax, and use xorriso to inject all the extra files into the image.
The shell script that used to invoke all the commands to build the ISO
now runs the `xorriso` command in interactive mode and feeds another
file into it. The new file contains the xorriso commands to add the
required files to the image.
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
---
diff --git a/pungi/createiso.py b/pungi/createiso.py
index 4e1a533..4d80678 100644
--- a/pungi/createiso.py
+++ b/pungi/createiso.py
@@ -15,6 +15,7 @@ CreateIsoOpts = namedtuple(
"CreateIsoOpts",
[
"buildinstall_method",
+ "boot_iso",
"arch",
"output_dir",
"jigdo_dir",
@@ -26,6 +27,7 @@ CreateIsoOpts = namedtuple(
"hfs_compat",
"use_xorrisofs",
"iso_level",
+ "script_dir",
],
)
CreateIsoOpts.__new__.__defaults__ = (None,) * len(CreateIsoOpts._fields)
@@ -116,6 +118,27 @@ def make_jigdo(f, opts):
emit(f, cmd)
+def write_xorriso_commands(opts):
+ script = os.path.join(opts.script_dir, "xorriso-%s.txt" % id(opts))
+ with open(script, "w") as f:
+ emit(f, "-indev %s" % opts.boot_iso)
+ emit(f, "-outdev %s" % os.path.join(opts.output_dir, opts.iso_name))
+ emit(f, "-boot_image any replay")
+ emit(f, "-volid %s" % opts.volid)
+
+ with open(opts.graft_points) as gp:
+ for line in gp:
+ iso_path, fs_path = line.strip().split("=", 1)
+ emit(f, "-map %s %s" % (fs_path, iso_path))
+
+ if opts.arch == "ppc64le":
+ # This is needed for the image to be bootable.
+ emit(f, "-as mkisofs -U --")
+
+ emit(f, "-end")
+ return script
+
+
def write_script(opts, f):
if bool(opts.jigdo_dir) != bool(opts.os_tree):
raise RuntimeError("jigdo_dir must be used together with os_tree")
@@ -123,8 +146,14 @@ def write_script(opts, f):
emit(f, "#!/bin/bash")
emit(f, "set -ex")
emit(f, "cd %s" % opts.output_dir)
- make_image(f, opts)
- run_isohybrid(f, opts)
+
+ if opts.use_xorrisofs and opts.buildinstall_method:
+ script = write_xorriso_commands(opts)
+ emit(f, "xorriso -dialog on <%s" % script)
+ else:
+ make_image(f, opts)
+ run_isohybrid(f, opts)
+
implant_md5(f, opts)
make_manifest(f, opts)
if opts.jigdo_dir:
diff --git a/pungi/phases/createiso.py b/pungi/phases/createiso.py
index e237cf7..722cfb0 100644
--- a/pungi/phases/createiso.py
+++ b/pungi/phases/createiso.py
@@ -343,7 +343,10 @@ class CreateisoPhase(PhaseLoggerMixin, PhaseBase):
if bootable:
opts = opts._replace(
- buildinstall_method=self.compose.conf["buildinstall_method"]
+ buildinstall_method=self.compose.conf[
+ "buildinstall_method"
+ ],
+ boot_iso=os.path.join(os_tree, "images", "boot.iso"),
)
if self.compose.conf["create_jigdo"]:
@@ -355,10 +358,9 @@ class CreateisoPhase(PhaseLoggerMixin, PhaseBase):
# Reuse was successful, go to next ISO
continue
- script_file = os.path.join(
- self.compose.paths.work.tmp_dir(arch, variant),
- "createiso-%s.sh" % filename,
- )
+ script_dir = self.compose.paths.work.tmp_dir(arch, variant)
+ opts = opts._replace(script_dir=script_dir)
+ script_file = os.path.join(script_dir, "createiso-%s.sh" % filename)
with open(script_file, "w") as f:
createiso.write_script(opts, f)
cmd["cmd"] = ["bash", script_file]
diff --git a/pungi/phases/extra_isos.py b/pungi/phases/extra_isos.py
index 56c5f28..45d06b6 100644
--- a/pungi/phases/extra_isos.py
+++ b/pungi/phases/extra_isos.py
@@ -132,14 +132,15 @@ class ExtraIsosThread(WorkerThread):
use_xorrisofs=compose.conf.get("createiso_use_xorrisofs"),
iso_level=compose.conf.get("iso_level"),
)
+ os_tree = compose.paths.compose.os_tree(arch, variant)
if compose.conf["create_jigdo"]:
jigdo_dir = compose.paths.compose.jigdo_dir(arch, variant)
- os_tree = compose.paths.compose.os_tree(arch, variant)
opts = opts._replace(jigdo_dir=jigdo_dir, os_tree=os_tree)
if bootable:
opts = opts._replace(
- buildinstall_method=compose.conf["buildinstall_method"]
+ buildinstall_method=compose.conf["buildinstall_method"],
+ boot_iso=os.path.join(os_tree, "images", "boot.iso"),
)
# Check if it can be reused.
@@ -148,9 +149,9 @@ class ExtraIsosThread(WorkerThread):
config_hash = hash.hexdigest()
if not self.try_reuse(compose, variant, arch, config_hash, opts):
- script_file = os.path.join(
- compose.paths.work.tmp_dir(arch, variant), "extraiso-%s.sh" % filename
- )
+ script_dir = compose.paths.work.tmp_dir(arch, variant)
+ opts = opts._replace(script_dir=script_dir)
+ script_file = os.path.join(script_dir, "extraiso-%s.sh" % filename)
with open(script_file, "w") as f:
createiso.write_script(opts, f)
diff --git a/tests/test_createiso_phase.py b/tests/test_createiso_phase.py
index 02ccd8b..3948cc6 100644
--- a/tests/test_createiso_phase.py
+++ b/tests/test_createiso_phase.py
@@ -124,6 +124,7 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
os_tree=None,
hfs_compat=True,
use_xorrisofs=False,
+ script_dir="%s/work/x86_64/tmp-Server" % self.topdir,
)
],
)
@@ -240,6 +241,9 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
[
CreateIsoOpts(
output_dir="%s/compose/Server/x86_64/iso" % self.topdir,
+ boot_iso=(
+ "%s/compose/Server/x86_64/os/images/boot.iso" % self.topdir
+ ),
iso_name="image-name",
volid="test-1.0 Server.x86_64",
graft_points="dummy-graft-points",
@@ -250,6 +254,7 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
os_tree=None,
hfs_compat=True,
use_xorrisofs=False,
+ script_dir="%s/work/x86_64/tmp-Server" % self.topdir,
),
CreateIsoOpts(
output_dir="%s/compose/Server/source/iso" % self.topdir,
@@ -262,6 +267,7 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
os_tree=None,
hfs_compat=True,
use_xorrisofs=False,
+ script_dir="%s/work/src/tmp-Server" % self.topdir,
),
],
)
@@ -394,6 +400,7 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
os_tree=None,
hfs_compat=True,
use_xorrisofs=False,
+ script_dir="%s/work/src/tmp-Server" % self.topdir,
)
],
)
@@ -501,6 +508,7 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
os_tree=None,
hfs_compat=False,
use_xorrisofs=False,
+ script_dir="%s/work/x86_64/tmp-Server" % self.topdir,
)
],
)

View File

@ -1,51 +0,0 @@
From 0abf937b0eeafa96e2cbdce0c47c350a88789d5f Mon Sep 17 00:00:00 2001
From: Lubomír Sedlář <lsedlar@redhat.com>
Date: Aug 10 2022 07:52:23 +0000
Subject: Fix compatibility with jsonschema >= 4.0.0
Fedora Rawhide (to be 37) packages jsonschema 4.9.0 at the moment, so we
can no longer get by with limiting the requirements. This patch makes
the validation work with both old and new version.
Fixes: rhbz#2113607
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
---
diff --git a/pungi/checks.py b/pungi/checks.py
index bc5d908..6d4465e 100644
--- a/pungi/checks.py
+++ b/pungi/checks.py
@@ -229,7 +229,6 @@ def validate(config, offline=False, schema=None):
)
validator = DefaultValidator(
schema,
- {"array": (tuple, list), "regex": six.string_types, "url": six.string_types},
)
errors = []
warnings = []
@@ -445,6 +444,16 @@ def _extend_with_default_and_alias(validator_class, offline=False):
context=all_errors,
)
+ def is_array(checker, instance):
+ return isinstance(instance, (tuple, list))
+
+ def is_string_type(checker, instance):
+ return isinstance(instance, six.string_types)
+
+ type_checker = validator_class.TYPE_CHECKER.redefine_many(
+ {"array": is_array, "regex": is_string_type, "url": is_string_type}
+ )
+
return jsonschema.validators.extend(
validator_class,
{
@@ -455,6 +464,7 @@ def _extend_with_default_and_alias(validator_class, offline=False):
"additionalProperties": _validate_additional_properties,
"anyOf": _validate_any_of,
},
+ type_checker=type_checker,
)

View File

@ -1,17 +1,13 @@
%{?python_enable_dependency_generator}
Name: pungi
Version: 4.3.5
Release: 8%{?dist}
Version: 4.3.6
Release: 1%{?dist}
Summary: Distribution compose tool
License: GPLv2
URL: https://pagure.io/pungi
Source0: https://pagure.io/releases/%{name}/%{name}-%{version}.tar.bz2
Patch0: https://pagure.io/pungi/pull-request/1613.patch
# Downloaded from https://pagure.io/pungi/pull-request/1621.patch and removed
# irrelevant hunk.
Patch1: 1621.patch
BuildRequires: make
BuildRequires: python3-pytest
@ -142,6 +138,21 @@ rm %{buildroot}%{_bindir}/pungi
%{_bindir}/%{name}-wait-for-signed-ostree-handler
%changelog
* Fri Aug 26 2022 Lubomír Sedlář <lsedlar@redhat.com> - 4.3.6-1
- pkgset: Report better error when module is missing an arch (lsedlar)
- osbuild: add support for building ostree artifacts (ondrej)
- ostree: Add unified core mode for compose in rpm-ostree (tim)
- createiso: Make ISO level more granular (lsedlar)
- Create DVDs with xorriso (lsedlar)
- Fix compatibility with jsonschema >= 4.0.0 (lsedlar)
- Fix black complaint (lsedlar)
- doc: fix osbuild's image_types field name (ondrej)
- Convert _ssh_run output to str for python3 (hlin)
- Print more logs for git_ls_remote (hlin)
- Log time taken of each phase (hlin)
- Avoid crash when loading pickle file failed (hlin)
- extra_isos: Fix detection of changed packages (lsedlar)
* Thu Aug 11 2022 Lubomír Sedlář <lsedlar@redhat.com> - 4.3.5-8
- Backport jsonschema compatibility patch (rhbz#2113607)

View File

@ -1 +1 @@
SHA512 (pungi-4.3.5.tar.bz2) = e77dbdacddc4930bcad3916e86f34b9c003400dfb47141d0e8677e317c22706760559aee4556ff60185e39dd1864cd76598b3582c89def9388f2028d43fd1fa5
SHA512 (pungi-4.3.6.tar.bz2) = cbeb9b1064c0d0883fff9822a668fd76d166b183b163eddba9aec8aa548cdf0ad63e12ad5c04dd2973b0c35010af7482e64368e01ffa7b4875c36a273573fbe6