diff --git a/0001-Revert-Move-ostree-phase-and-pipelines-for-running-p.patch b/0001-Revert-Move-ostree-phase-and-pipelines-for-running-p.patch index 25c3b67b..b38c4037 100644 --- a/0001-Revert-Move-ostree-phase-and-pipelines-for-running-p.patch +++ b/0001-Revert-Move-ostree-phase-and-pipelines-for-running-p.patch @@ -1,7 +1,7 @@ -From 9dc20c455df71f95a7f131ac10b7013042c5f71d Mon Sep 17 00:00:00 2001 +From 36a88c877baa0be5ff3318ddcf9b97cf2057d748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 11 Apr 2018 09:18:59 +0200 -Subject: [PATCH 1/5] Revert "Move ostree phase and pipelines for running +Subject: [PATCH 1/3] Revert "Move ostree phase and pipelines for running phases" This reverts commit 660c04368ba1abed310f121d01f0fa029eea5f11. diff --git a/0002-Revert-Other-repo-for-OstreeInstaller.patch b/0002-Revert-Other-repo-for-OstreeInstaller.patch index ac7287a4..cf527496 100644 --- a/0002-Revert-Other-repo-for-OstreeInstaller.patch +++ b/0002-Revert-Other-repo-for-OstreeInstaller.patch @@ -1,7 +1,7 @@ -From 883a69645b92b243787312af232aeb804cf53292 Mon Sep 17 00:00:00 2001 +From 208c5e88a14a0caea8180b5958d41ffd5f046bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 11 Apr 2018 09:19:53 +0200 -Subject: [PATCH 2/5] Revert "Other repo for OstreeInstaller" +Subject: [PATCH 2/3] Revert "Other repo for OstreeInstaller" This reverts commit 5c081cb545715c2a912ff50fa57554e89d905868. --- @@ -12,10 +12,10 @@ This reverts commit 5c081cb545715c2a912ff50fa57554e89d905868. 4 files changed, 29 insertions(+), 67 deletions(-) diff --git a/pungi/checks.py b/pungi/checks.py -index 017fab23..61d42b89 100644 +index 53fc615e..35390022 100644 --- a/pungi/checks.py +++ b/pungi/checks.py -@@ -1009,7 +1009,7 @@ def make_schema(): +@@ -1020,7 +1020,7 @@ def make_schema(): "tag_ref": {"type": "boolean"}, "ostree_ref": {"type": "string"}, }, @@ -24,7 +24,7 @@ index 017fab23..61d42b89 100644 "additionalProperties": False, }), ] -@@ -1030,6 +1030,7 @@ def make_schema(): +@@ -1041,6 +1041,7 @@ def make_schema(): "template_repo": {"type": "string"}, "template_branch": {"type": "string"}, }, @@ -69,10 +69,10 @@ index 587ff2c5..861d9db1 100644 output_dir = os.path.join(compose.paths.work.topdir(arch), variant.uid, 'ostree_installer') util.makedirs(os.path.dirname(output_dir)) diff --git a/pungi/util.py b/pungi/util.py -index 78a9c9be..31e763b5 100644 +index 65f3fe61..f878febe 100644 --- a/pungi/util.py +++ b/pungi/util.py -@@ -688,8 +688,6 @@ def get_repo_url(compose, repo, arch='$basearch'): +@@ -691,8 +691,6 @@ def get_repo_url(compose, repo, arch='$basearch'): Convert repo to repo URL. @param compose - required for access to variants @@ -81,7 +81,7 @@ index 78a9c9be..31e763b5 100644 @param repo - string or a dict which at least contains 'baseurl' key @param arch - string to be used as arch in repo url """ -@@ -700,17 +698,14 @@ def get_repo_url(compose, repo, arch='$basearch'): +@@ -703,17 +701,14 @@ def get_repo_url(compose, repo, arch='$basearch'): raise RuntimeError('Baseurl is required in repo dict %s' % str(repo)) if '://' not in repo: # this is a variant name @@ -103,7 +103,7 @@ index 78a9c9be..31e763b5 100644 """ Convert repos to a list of repo URLs. -@@ -721,11 +716,7 @@ def get_repo_urls(compose, repos, arch='$basearch', logger=None): +@@ -724,11 +719,7 @@ def get_repo_urls(compose, repos, arch='$basearch', logger=None): urls = [] for repo in repos: repo = get_repo_url(compose, repo, arch=arch) @@ -116,7 +116,7 @@ index 78a9c9be..31e763b5 100644 return urls -@@ -783,7 +774,7 @@ def get_repo_dicts(repos, logger=None): +@@ -786,7 +777,7 @@ def get_repo_dicts(repos, logger=None): repo_dict = get_repo_dict(repo) if repo_dict == {}: if logger: @@ -126,7 +126,7 @@ index 78a9c9be..31e763b5 100644 repo_dicts.append(repo_dict) return repo_dicts diff --git a/tests/test_ostree_installer_phase.py b/tests/test_ostree_installer_phase.py -index 7569e348..25227689 100644 +index 80e68d42..459ae063 100644 --- a/tests/test_ostree_installer_phase.py +++ b/tests/test_ostree_installer_phase.py @@ -14,7 +14,6 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) diff --git a/0003-Revert-Ostree-can-use-pkgset-repos.patch b/0003-Revert-Ostree-can-use-pkgset-repos.patch index 6be94f00..61220dd5 100644 --- a/0003-Revert-Ostree-can-use-pkgset-repos.patch +++ b/0003-Revert-Ostree-can-use-pkgset-repos.patch @@ -1,7 +1,7 @@ -From 079177c5bf498fe21c1f0b03d127bfa25fa09fe0 Mon Sep 17 00:00:00 2001 +From 1fc1fe8a84417d213a9ed6f787c3a61e0f859df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 11 Apr 2018 09:20:51 +0200 -Subject: [PATCH 3/5] Revert "Ostree can use pkgset repos" +Subject: [PATCH 3/3] Revert "Ostree can use pkgset repos" This reverts commit c7cc200246300c6a3946b2e3a9f5f7693896a7d6. --- @@ -31,10 +31,10 @@ index 2918fff8..0550b18c 100644 # copy the original config and update before save to a json file new_config = copy.copy(config) diff --git a/pungi/util.py b/pungi/util.py -index 31e763b5..9f0aab69 100644 +index f878febe..d8eac880 100644 --- a/pungi/util.py +++ b/pungi/util.py -@@ -728,16 +728,19 @@ def _translate_url_to_repo_id(url): +@@ -731,16 +731,19 @@ def _translate_url_to_repo_id(url): return ''.join([s if s in list(_REPOID_CHARS) else '_' for s in url]) @@ -59,7 +59,7 @@ index 31e763b5..9f0aab69 100644 """ repo_dict = {} if isinstance(repo, dict): -@@ -747,8 +750,10 @@ def get_repo_dict(repo): +@@ -750,8 +753,10 @@ def get_repo_dict(repo): if name is None: name = _translate_url_to_repo_id(url) else: @@ -72,7 +72,7 @@ index 31e763b5..9f0aab69 100644 repo['name'] = name repo['baseurl'] = url return repo -@@ -759,24 +764,24 @@ def get_repo_dict(repo): +@@ -762,24 +767,24 @@ def get_repo_dict(repo): repo_dict['name'] = _translate_url_to_repo_id(repo) repo_dict['baseurl'] = repo else: @@ -128,7 +128,7 @@ index 031a15a4..c73fe126 100644 interp = 'python2' if six.PY2 else 'python3' p = subprocess.Popen([interp, PUNGI_CONFIG_VALIDATE, DUMMY_CONFIG], diff --git a/tests/test_ostree_phase.py b/tests/test_ostree_phase.py -index ad14eca4..3a9ebf32 100644 +index c2986bc8..4ce66bbd 100644 --- a/tests/test_ostree_phase.py +++ b/tests/test_ostree_phase.py @@ -118,7 +118,7 @@ class OSTreeThreadTest(helpers.PungiTestCase): @@ -226,10 +226,10 @@ index ad14eca4..3a9ebf32 100644 if __name__ == '__main__': unittest.main() diff --git a/tests/test_util.py b/tests/test_util.py -index 739ea9e1..ab4f3459 100644 +index 9e247cde..2b93e496 100644 --- a/tests/test_util.py +++ b/tests/test_util.py -@@ -587,35 +587,43 @@ class GetRepoFuncsTestCase(unittest.TestCase): +@@ -624,35 +624,43 @@ class GetRepoFuncsTestCase(unittest.TestCase): self.assertEqual(util.get_repo_urls(self.compose, repos), expect) def test_get_repo_dict_from_normal_url(self): diff --git a/0004-Fix-Koji-search-for-modules-with-dash-in-stream.patch b/0004-Fix-Koji-search-for-modules-with-dash-in-stream.patch deleted file mode 100644 index e5e06cd0..00000000 --- a/0004-Fix-Koji-search-for-modules-with-dash-in-stream.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 97787114f6b081c1761560663dd8b3ad80305def Mon Sep 17 00:00:00 2001 -From: Jan Kaluza -Date: Wed, 18 Jul 2018 10:22:33 +0200 -Subject: [PATCH 4/5] Fix Koji search for modules with dash in stream - -MBS replaces the dash by underscore. We have to match that. - -Merges: https://pagure.io/pungi/pull-request/1005 -Signed-off-by: Jan Kaluza ---- - pungi/phases/pkgset/sources/source_koji.py | 12 +++++++++--- - tests/test_pkgset_source_koji.py | 10 +++++----- - 2 files changed, 14 insertions(+), 8 deletions(-) - -diff --git a/pungi/phases/pkgset/sources/source_koji.py b/pungi/phases/pkgset/sources/source_koji.py -index 3381d792..8c76e1ba 100644 ---- a/pungi/phases/pkgset/sources/source_koji.py -+++ b/pungi/phases/pkgset/sources/source_koji.py -@@ -114,9 +114,15 @@ def get_koji_modules(compose, koji_wrapper, module_info_str): - - module_info = variant_dict_from_str(compose, module_info_str) - -- # we need to format the query string to koji reguirements -- query_str = "%s-%s-%s.%s" % (module_info["name"], module_info["stream"], -- module_info.get("version", "*"), module_info.get("context", "*")) -+ # We need to format the query string to koji reguirements. The -+ # transformation to NVR for use in Koji has to match what MBS is doing when -+ # importing the build. -+ query_str = "%s-%s-%s.%s" % ( -+ module_info["name"], -+ module_info["stream"].replace("-", "_"), -+ module_info.get("version", "*"), -+ module_info.get("context", "*"), -+ ) - query_str = query_str.replace('*.*', '*') - - koji_builds = koji_proxy.search(query_str, "build", "glob") -diff --git a/tests/test_pkgset_source_koji.py b/tests/test_pkgset_source_koji.py -index b6a85f93..a24d2e27 100644 ---- a/tests/test_pkgset_source_koji.py -+++ b/tests/test_pkgset_source_koji.py -@@ -341,7 +341,7 @@ class TestGetPackageSetFromKoji(helpers.PungiTestCase): - self.assertEqual(pkgsets, expected) - - def test_get_koji_modules(self): -- mock_build_ids = [{'id': 1065873, 'name': 'testmodule2-master-20180406051653.96c371af'}] -+ mock_build_ids = [{'id': 1065873, 'name': 'testmodule2-master_dash-20180406051653.96c371af'}] - mock_extra = { - 'typeinfo': { - 'module': { -@@ -355,10 +355,10 @@ class TestGetPackageSetFromKoji(helpers.PungiTestCase): - 'epoch': None, - 'extra': mock_extra, - 'name': 'testmodule2', -- 'nvr': 'testmodule2-master-20180406051653.2e6f5e0a', -+ 'nvr': 'testmodule2-master_dash-20180406051653.2e6f5e0a', - 'release': '20180406051653.2e6f5e0a', - 'state': 1, -- 'version': 'master', -+ 'version': 'master_dash', - } - ] - mock_archives = [ -@@ -392,7 +392,7 @@ class TestGetPackageSetFromKoji(helpers.PungiTestCase): - self.koji_wrapper.koji_proxy.listArchives.return_value = mock_archives - self.koji_wrapper.koji_proxy.listRPMs.return_value = mock_rpms - -- module_info_str = "testmodule2:master:20180406051653:96c371af" -+ module_info_str = "testmodule2:master-dash:20180406051653:96c371af" - result = source_koji.get_koji_modules(self.compose, self.koji_wrapper, module_info_str) - - assert type(result) is list -@@ -405,7 +405,7 @@ class TestGetPackageSetFromKoji(helpers.PungiTestCase): - assert "stream" in module - assert "context" in module - -- expected_query = "testmodule2-master-20180406051653.96c371af" -+ expected_query = "testmodule2-master_dash-20180406051653.96c371af" - self.koji_wrapper.koji_proxy.search.assert_called_once_with(expected_query, "build", - "glob") - self.koji_wrapper.koji_proxy.getBuild.assert_called_once_with(mock_build_ids[0]["id"]) --- -2.14.4 - diff --git a/0005-Fix-tests-for-DNF-3.patch b/0005-Fix-tests-for-DNF-3.patch deleted file mode 100644 index b047dd78..00000000 --- a/0005-Fix-tests-for-DNF-3.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 346bf883593e3d4a3531c1dce15abbc696130c6e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Wed, 4 Jul 2018 09:16:51 +0200 -Subject: [PATCH 5/5] Fix tests for DNF 3 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The configuration for modules has changed. - -Lookaside handling has changed, and there are now test failures. This -is a not a bug in DNF, so we need to fix it on our side. - -Relates: https://bugzilla.redhat.com/show_bug.cgi?id=1603123 -Signed-off-by: Lubomír Sedlář ---- - pungi/gather_dnf.py | 19 ++++++++++++++++++- - tests/test_gather.py | 6 +++++- - 2 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/pungi/gather_dnf.py b/pungi/gather_dnf.py -index 328d69c8..1d6c510a 100644 ---- a/pungi/gather_dnf.py -+++ b/pungi/gather_dnf.py -@@ -227,10 +227,27 @@ class Gather(GatherBase): - if not package_list: - return [] - -+ # The list can contain packages from lookaside and outside of -+ # lookaside. If the package is in both, we want to prefer the version -+ # from lookaside. This can be achieved by removing any package that is -+ # also in lookaside from the list. -+ lookaside_pkgs = set() -+ for pkg in package_list: -+ if pkg.repoid in self.opts.lookaside_repos: -+ lookaside_pkgs.add("{0.name}-{0.evr}".format(pkg)) -+ - if self.opts.greedy_method == "all": - return list(package_list) - -- all_pkgs = list(package_list) -+ all_pkgs = [] -+ for pkg in package_list: -+ # Remove packages that are also in lookaside -+ if ( -+ "{0.name}-{0.evr}".format(pkg) not in lookaside_pkgs -+ or pkg.repoid in self.opts.lookaside_repos -+ ): -+ all_pkgs.append(pkg) -+ - native_pkgs = self.q_native_binary_packages.filter(pkg=all_pkgs).apply() - multilib_pkgs = self.q_multilib_binary_packages.filter(pkg=all_pkgs).apply() - -diff --git a/tests/test_gather.py b/tests/test_gather.py -index 25dfc399..60085b89 100644 ---- a/tests/test_gather.py -+++ b/tests/test_gather.py -@@ -22,6 +22,7 @@ os.environ['PATH'] = '%s:%s' % (BINDIR, os.environ['PATH']) - - from pungi.wrappers.pungi import PungiWrapper - try: -+ from dnf import __version__ as dnf_version - from pungi.dnf_wrapper import DnfWrapper, Conf - from pungi.gather_dnf import Gather, GatherOptions, PkgFlag - HAS_DNF = True -@@ -1810,7 +1811,10 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase): - conf = Conf(base_arch) - conf.persistdir = persistdir - conf.cachedir = self.cachedir -- conf.modulesdir = os.path.join(persistdir, 'modules.d') -+ if int(dnf_version.split('.')[0]) < 3: -+ conf.modulesdir = os.path.join(persistdir, 'modules.d') -+ else: -+ conf.modulesdir._set(os.path.join(persistdir, 'modules.d')) - if exclude: - conf.exclude = exclude - dnf = DnfWrapper(conf) --- -2.14.4 - diff --git a/pungi.spec b/pungi.spec index 0b14250d..e8df35ae 100644 --- a/pungi.spec +++ b/pungi.spec @@ -1,6 +1,6 @@ Name: pungi -Version: 4.1.26 -Release: 2%{?dist} +Version: 4.1.27 +Release: 1%{?dist} Summary: Distribution compose tool Group: Development/Tools @@ -10,8 +10,6 @@ Source0: https://pagure.io/releases/%{name}/%{name}-%{version}.tar.bz2 Patch0: 0001-Revert-Move-ostree-phase-and-pipelines-for-running-p.patch Patch1: 0002-Revert-Other-repo-for-OstreeInstaller.patch Patch2: 0003-Revert-Ostree-can-use-pkgset-repos.patch -Patch3: 0004-Fix-Koji-search-for-modules-with-dash-in-stream.patch -Patch4: 0005-Fix-tests-for-DNF-3.patch BuildRequires: python3-nose BuildRequires: python3-mock @@ -75,6 +73,7 @@ Requires: libmodulemd >= 1.3.0 Requires: python3-gobject Requires: python3-pdc-client Requires: python3-createrepo_c +Requires: python3-PyYAML Requires: python3-%{name} = %{version}-%{release} @@ -181,6 +180,31 @@ nosetests-3 --exe %{_bindir}/%{name}-wait-for-signed-ostree-handler %changelog +* Fri Aug 17 2018 Lubomír Sedlář - 4.1.27-1 +- extra-iso: Rename test data file (lsedlar) +- createiso: Use correct python version (lsedlar) +- ostree: Update tests for working with YAML file (lsedlar) +- pungi/ostree: Convert rpm-ostree YAML to JSON (walters) +- createrepo: Allow passing arbitrary arguments (lsedlar) +- gather: Get modular packages from fus (lsedlar) +- util: Remove escaping spaces from volume ID (lsedlar) +- Allow removing non-alnum chars from volid (lsedlar) +- extra-isos: Include treeinfo pointing to all variants (lsedlar) +- createiso: Use unique paths for breaking hardlinks (lsedlar) +- gather: Detect hybrid variant with additional packages (lsedlar) +- Include exact version of pungi in the logs (mboddu) +- gather: Allow empty result for gather (lsedlar) +- gather: Add langpacks in hybrid solver (lsedlar) +- comps: Add get_langpacks function (lsedlar) +- pungi-legacy: Add --joliet-long option (lsedlar) +- gather: Early exit for non-comps sources (lsedlar) +- tests: Use unittest2 when available (lsedlar) +- buildinstall: Make output world readable (lsedlar) +- buildinstall: Copy file without preserving owner (lsedlar) +- Report failed failable deliverables as errors (lsedlar) +- Stop importing PDCClient (lsedlar) +- spec: build require python-multilib (lsedlar) + * Fri Jul 20 2018 Lubomír Sedlář - 4.1.26-2 - Backport patch for DNF 3 compatibility - Fix querying Koji about modules with dash in stream diff --git a/sources b/sources index 90414aca..d22075b2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pungi-4.1.26.tar.bz2) = 8b6aef74ea27b6e64f8d64297f0f6014dd7280f74754cf955f3e9680122e987ca0dedde5c96eeccb105958ced40133d62d9e52aa19097f33067ada9275d8dcd4 +SHA512 (pungi-4.1.27.tar.bz2) = 110da14aec38fba0c6b07a843fc6c67e261d06258cfea291f513736d489f3a4a16d7144c5dd8986ed8d36d2b8022ae9f78fd5f07e8cde1a13ea6aacf636c3b8e