From 42340df6c6e468844d826676f5342f629d0534b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Thu, 20 Jul 2017 13:20:53 +0200 Subject: [PATCH] Fixes for modular compose with gather nodeps method --- ...-Stop-requiring-comps-file-in-nodeps.patch | 34 ++++++++++++ ...le-return-rpm_obj-instead-of-the-rpm.patch | 28 ++++++++++ ...n-t-pull-multiple-debuginfo-packages.patch | 54 +++++++++++++++++++ pungi.spec | 11 +++- 4 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 0001-gather-Stop-requiring-comps-file-in-nodeps.patch create mode 100644 0002-GatherSourceModule-return-rpm_obj-instead-of-the-rpm.patch create mode 100644 0003-gather-Don-t-pull-multiple-debuginfo-packages.patch diff --git a/0001-gather-Stop-requiring-comps-file-in-nodeps.patch b/0001-gather-Stop-requiring-comps-file-in-nodeps.patch new file mode 100644 index 00000000..133746cc --- /dev/null +++ b/0001-gather-Stop-requiring-comps-file-in-nodeps.patch @@ -0,0 +1,34 @@ +From 32ca02efd6f59a271c660027c4576ab8ea09aef7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= +Date: Thu, 20 Jul 2017 13:11:06 +0200 +Subject: [PATCH 1/3] gather: Stop requiring comps file in nodeps +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When there are no groups, we shouldn't try to read comps file (because +it may very well not be there). + +Signed-off-by: Lubomír Sedlář +--- + pungi/phases/gather/methods/method_nodeps.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/pungi/phases/gather/methods/method_nodeps.py b/pungi/phases/gather/methods/method_nodeps.py +index 2979cd7..4b164be 100644 +--- a/pungi/phases/gather/methods/method_nodeps.py ++++ b/pungi/phases/gather/methods/method_nodeps.py +@@ -103,6 +103,10 @@ def expand_groups(compose, arch, groups): + + :returns: A set of tuples (pkg_name, arch) + """ ++ if not groups: ++ # No groups, nothing to do (this also covers case when there is no ++ # comps file. ++ return set() + comps_file = compose.paths.work.comps(arch, create_dir=False) + comps = CompsWrapper(comps_file) + packages = set() +-- +2.9.4 + diff --git a/0002-GatherSourceModule-return-rpm_obj-instead-of-the-rpm.patch b/0002-GatherSourceModule-return-rpm_obj-instead-of-the-rpm.patch new file mode 100644 index 00000000..1e1a41ae --- /dev/null +++ b/0002-GatherSourceModule-return-rpm_obj-instead-of-the-rpm.patch @@ -0,0 +1,28 @@ +From 5dd6b1b0e7a49d2fa71a98f653e117400d27c173 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Thu, 20 Jul 2017 13:35:53 +0200 +Subject: [PATCH 2/3] GatherSourceModule: return rpm_obj instead of the + rpm_obj.name + +Merges: https://pagure.io/pungi/pull-request/680 +Signed-off-by: Jan Kaluza +--- + pungi/phases/gather/sources/source_module.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pungi/phases/gather/sources/source_module.py b/pungi/phases/gather/sources/source_module.py +index 2845ea5..b39814c 100644 +--- a/pungi/phases/gather/sources/source_module.py ++++ b/pungi/phases/gather/sources/source_module.py +@@ -65,7 +65,7 @@ class GatherSourceModule(pungi.phases.gather.source.GatherSourceBase): + if (srpm in mmd.components.rpms.keys() and + rpm_obj.name not in mmd.filter.rpms and + rpm_obj.nevra in mmd.artifacts.rpms): +- packages.add((rpm_obj.name, None)) ++ packages.add((rpm_obj, None)) + added_rpms.setdefault(mmd_id, []) + added_rpms[mmd_id].append(str(rpm_obj.nevra)) + +-- +2.9.4 + diff --git a/0003-gather-Don-t-pull-multiple-debuginfo-packages.patch b/0003-gather-Don-t-pull-multiple-debuginfo-packages.patch new file mode 100644 index 00000000..96035685 --- /dev/null +++ b/0003-gather-Don-t-pull-multiple-debuginfo-packages.patch @@ -0,0 +1,54 @@ +From 65078ef9cfdc204994fdd4ab7c202b45b9631340 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= +Date: Thu, 20 Jul 2017 14:54:54 +0200 +Subject: [PATCH 3/3] gather: Don't pull multiple debuginfo packages +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When there is a noarch subpackage, all compatible debuginfo would be +pulled in, which is not desirable. + +Example: Server.x86_64 needs pkg.x86_64 and pkg-data.noarch. We only +want pkg-debuginfo.x86_64, but without this patch even +pkg-debuginfo.i686 would get in. + +Signed-off-by: Lubomír Sedlář +--- + pungi/phases/gather/methods/method_nodeps.py | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/pungi/phases/gather/methods/method_nodeps.py b/pungi/phases/gather/methods/method_nodeps.py +index 4b164be..c7dd891 100644 +--- a/pungi/phases/gather/methods/method_nodeps.py ++++ b/pungi/phases/gather/methods/method_nodeps.py +@@ -50,9 +50,9 @@ class GatherMethodNodeps(pungi.phases.gather.method.GatherMethodBase): + pkg = global_pkgset[i] + if not pkg_is_rpm(pkg): + continue ++ if pkg.arch not in valid_arches: ++ continue + for gathered_pkg, pkg_arch in packages: +- if pkg.arch not in valid_arches: +- continue + if (type(gathered_pkg) in [str, unicode] + and pkg.name != gathered_pkg): + continue +@@ -86,8 +86,12 @@ class GatherMethodNodeps(pungi.phases.gather.method.GatherMethodBase): + continue + if pkg.sourcerpm not in seen_srpms: + continue +- if not set(compatible_arches[pkg.arch]) & set(seen_srpms[pkg.sourcerpm]): +- # this handles stuff like i386 debuginfo in a i686 package ++ pkg_arches = set(compatible_arches[pkg.arch]) - set(['noarch']) ++ seen_arches = set(seen_srpms[pkg.sourcerpm]) - set(['noarch']) ++ if not (pkg_arches & seen_arches): ++ # We only want to pull in a debuginfo if we have a binary ++ # package for a compatible arch. Noarch packages should not ++ # pull debuginfo (they would pull in all architectures). + continue + result["debuginfo"].append({ + "path": pkg.file_path, +-- +2.9.4 + diff --git a/pungi.spec b/pungi.spec index 5d95016c..ab16837a 100644 --- a/pungi.spec +++ b/pungi.spec @@ -1,12 +1,15 @@ Name: pungi Version: 4.1.17 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Distribution compose tool Group: Development/Tools License: GPLv2 URL: https://pagure.io/pungi Source0: https://pagure.io/releases/%{name}/%{name}-%{version}.tar.bz2 +Patch0: 0001-gather-Stop-requiring-comps-file-in-nodeps.patch +Patch1: 0002-GatherSourceModule-return-rpm_obj-instead-of-the-rpm.patch +Patch2: 0003-gather-Don-t-pull-multiple-debuginfo-packages.patch BuildRequires: python-nose, python-mock BuildRequires: python-devel, python-setuptools, python2-productmd >= 1.3 @@ -84,6 +87,9 @@ notification to Fedora Message Bus. %prep %setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 %build %{__python} setup.py build @@ -129,6 +135,9 @@ cd tests && ./test_compose.sh %{_bindir}/%{name}-wait-for-signed-ostree-handler %changelog +* Thu Jul 20 2017 Lubomír Sedlář - 4.1.17-2 +- Fixes for modular compose with gather nodeps method + * Mon Jul 17 2017 Lubomír Sedlář - 4.1.17-1 - checksum: Checksum each image only once (lsedlar) - checksum: Refactor creating checksum files (lsedlar)