diff --git a/0001-Skip-tests-involving-lookaside-with-new-DNF.patch b/0001-Fix-tests-for-DNF-3.patch similarity index 66% rename from 0001-Skip-tests-involving-lookaside-with-new-DNF.patch rename to 0001-Fix-tests-for-DNF-3.patch index 76eddb0b..4e32974a 100644 --- a/0001-Skip-tests-involving-lookaside-with-new-DNF.patch +++ b/0001-Fix-tests-for-DNF-3.patch @@ -1,21 +1,24 @@ -From 622ba38a84d3e748ee1fa8b278f22af74c8aa393 Mon Sep 17 00:00:00 2001 +From a6c0cf38c05e67e616a424dad16194d5de36134a 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] Skip tests involving lookaside with new DNF +Subject: [PATCH] Fix tests for DNF 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -DNF 3 seems to work differently than previous versions in terms of -handling lookaside. Disable the the tests for now. +The configuration for modules has changed. + +Lookaside handling has changed, and there are now test failures. This +could be a bug in DNF, or maybe Pungi is not setting things up +correctly. As a temporary workaround we can skip the tests. Signed-off-by: Lubomír Sedlář --- - tests/test_gather.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + tests/test_gather.py | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/test_gather.py b/tests/test_gather.py -index 25dfc399..2ea3e324 100644 +index 25dfc399..8ccbf2f8 100644 --- a/tests/test_gather.py +++ b/tests/test_gather.py @@ -22,6 +22,7 @@ os.environ['PATH'] = '%s:%s' % (BINDIR, os.environ['PATH']) @@ -26,15 +29,19 @@ index 25dfc399..2ea3e324 100644 from pungi.dnf_wrapper import DnfWrapper, Conf from pungi.gather_dnf import Gather, GatherOptions, PkgFlag HAS_DNF = True -@@ -1810,7 +1811,6 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase): +@@ -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) -@@ -1888,6 +1888,7 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase): +@@ -1888,6 +1892,7 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase): "dummy-glibc-debuginfo-common-2.14-5.x86_64.rpm", ]) @@ -42,7 +49,7 @@ index 25dfc399..2ea3e324 100644 def test_firefox_selfhosting_with_krb5_lookaside(self): super(DNFDepsolvingTestCase, self).test_firefox_selfhosting_with_krb5_lookaside() self.assertFlags("dummy-krb5-devel-1.10-5.x86_64", [PkgFlag.lookaside]) -@@ -1910,3 +1911,7 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase): +@@ -1910,3 +1915,7 @@ class DNFDepsolvingTestCase(DepsolvingBase, unittest.TestCase): ]) self.assertItemsEqual(pkg_map["debuginfo"], [ ]) 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 e720dc5a..2679d302 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 c6bb04041867c242629c9becd83d47f2722b2432 Mon Sep 17 00:00:00 2001 +From 9dc20c455df71f95a7f131ac10b7013042c5f71d 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/6] 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. @@ -15,10 +15,10 @@ This reverts commit 660c04368ba1abed310f121d01f0fa029eea5f11. delete mode 100644 pungi/phases/weaver.py diff --git a/bin/pungi-koji b/bin/pungi-koji -index b3b49de5..e797ce86 100755 +index 42dcb424..f6971591 100755 --- a/bin/pungi-koji +++ b/bin/pungi-koji -@@ -365,27 +365,41 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): +@@ -367,27 +367,41 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): # Store the password compose.conf["signing_key_password"] = signing_key_password @@ -71,7 +71,7 @@ index b3b49de5..e797ce86 100755 # write treeinfo before ISOs are created for variant in compose.get_variants(): -@@ -401,17 +415,12 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): +@@ -403,17 +417,12 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): pungi.metadata.write_media_repo(compose, arch, variant, timestamp) # Start all phases for image artifacts @@ -95,7 +95,7 @@ index b3b49de5..e797ce86 100755 image_checksum_phase.start() image_checksum_phase.stop() -@@ -420,6 +429,7 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): +@@ -422,6 +431,7 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): compose.im.dump(compose.paths.compose.metadata("images.json")) osbs_phase.dump_metadata() @@ -615,5 +615,5 @@ index ba80afe3..a8b9469a 100644 if __name__ == "__main__": -- -2.14.3 +2.14.4 diff --git a/0002-Revert-Other-repo-for-OstreeInstaller.patch b/0002-Revert-Other-repo-for-OstreeInstaller.patch index 0d7493dc..a78b4a48 100644 --- a/0002-Revert-Other-repo-for-OstreeInstaller.patch +++ b/0002-Revert-Other-repo-for-OstreeInstaller.patch @@ -1,21 +1,21 @@ -From 376f52f1c18e5c8500fa8afd9c91ba9a6e4c4ae0 Mon Sep 17 00:00:00 2001 +From 883a69645b92b243787312af232aeb804cf53292 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/6] Revert "Other repo for OstreeInstaller" +Subject: [PATCH 2/3] Revert "Other repo for OstreeInstaller" This reverts commit 5c081cb545715c2a912ff50fa57554e89d905868. --- - pungi/checks.py | 3 ++- - pungi/phases/ostree_installer.py | 11 ++------ - pungi/util.py | 21 +++++---------- - tests/test_ostree_installer_phase.py | 50 +++++++++++++----------------------- - 4 files changed, 28 insertions(+), 57 deletions(-) + pungi/checks.py | 3 +- + pungi/phases/ostree_installer.py | 18 ++---------- + pungi/util.py | 21 ++++---------- + tests/test_ostree_installer_phase.py | 54 +++++++++++++----------------------- + 4 files changed, 29 insertions(+), 67 deletions(-) diff --git a/pungi/checks.py b/pungi/checks.py -index 2ddd7164..03cab460 100644 +index 017fab23..61d42b89 100644 --- a/pungi/checks.py +++ b/pungi/checks.py -@@ -998,7 +998,7 @@ def make_schema(): +@@ -1009,7 +1009,7 @@ def make_schema(): "tag_ref": {"type": "boolean"}, "ostree_ref": {"type": "string"}, }, @@ -24,7 +24,7 @@ index 2ddd7164..03cab460 100644 "additionalProperties": False, }), ] -@@ -1019,6 +1019,7 @@ def make_schema(): +@@ -1030,6 +1030,7 @@ def make_schema(): "template_repo": {"type": "string"}, "template_branch": {"type": "string"}, }, @@ -33,7 +33,7 @@ index 2ddd7164..03cab460 100644 }), diff --git a/pungi/phases/ostree_installer.py b/pungi/phases/ostree_installer.py -index 2eac49f7..abcb1572 100644 +index 587ff2c5..861d9db1 100644 --- a/pungi/phases/ostree_installer.py +++ b/pungi/phases/ostree_installer.py @@ -9,7 +9,7 @@ from kobo import shortcuts @@ -45,27 +45,34 @@ index 2eac49f7..abcb1572 100644 from ..wrappers import kojiwrapper, iso, lorax, scm -@@ -62,14 +62,7 @@ class OstreeInstallerThread(WorkerThread): +@@ -62,21 +62,7 @@ class OstreeInstallerThread(WorkerThread): self.pool.log_info('[BEGIN] %s' % msg) self.logdir = compose.paths.log.topdir('%s/%s/ostree_installer-%s' % (arch, variant, self.num)) - repo_baseurl = compose.paths.work.arch_repo('$basearch', create_dir=False) -- comps_baseurl = compose.paths.work.comps_repo('$basearch', variant=variant, create_dir=False) - repos = get_repo_urls(None, # compose==None. Special value says that method should ignore deprecated variant-type repo - shortcuts.force_list(config['repo']) -- + shortcuts.force_list(translate_path(compose, repo_baseurl)) -- + shortcuts.force_list(translate_path(compose, comps_baseurl)), +- + shortcuts.force_list(translate_path(compose, repo_baseurl)), - arch=arch, - logger=self.pool) +- if compose.has_comps: +- repos.append( +- translate_path( +- compose, +- compose.paths.work.comps_repo( +- '$basearch', variant=variant, create_dir=False +- ), +- ) +- ) + repos = get_repo_urls(compose, shortcuts.force_list(config['repo']), arch=arch) repos = [url.replace('$arch', arch) for url in repos] 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 ea0f6e48..3150e26c 100644 +index 78a9c9be..31e763b5 100644 --- a/pungi/util.py +++ b/pungi/util.py -@@ -686,8 +686,6 @@ def get_repo_url(compose, repo, arch='$basearch'): +@@ -688,8 +688,6 @@ def get_repo_url(compose, repo, arch='$basearch'): Convert repo to repo URL. @param compose - required for access to variants @@ -74,7 +81,7 @@ index ea0f6e48..3150e26c 100644 @param repo - string or a dict which at least contains 'baseurl' key @param arch - string to be used as arch in repo url """ -@@ -698,17 +696,14 @@ def get_repo_url(compose, repo, arch='$basearch'): +@@ -700,17 +698,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 @@ -96,7 +103,7 @@ index ea0f6e48..3150e26c 100644 """ Convert repos to a list of repo URLs. -@@ -719,11 +714,7 @@ def get_repo_urls(compose, repos, arch='$basearch', logger=None): +@@ -721,11 +716,7 @@ def get_repo_urls(compose, repos, arch='$basearch', logger=None): urls = [] for repo in repos: repo = get_repo_url(compose, repo, arch=arch) @@ -109,7 +116,7 @@ index ea0f6e48..3150e26c 100644 return urls -@@ -781,7 +772,7 @@ def get_repo_dicts(repos, logger=None): +@@ -783,7 +774,7 @@ def get_repo_dicts(repos, logger=None): repo_dict = get_repo_dict(repo) if repo_dict == {}: if logger: @@ -119,7 +126,7 @@ index ea0f6e48..3150e26c 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 ee3294e5..f44ca4ef 100644 +index 7569e348..25227689 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__), '..')) @@ -130,7 +137,7 @@ index ee3294e5..f44ca4ef 100644 LOG_PATH = 'logs/x86_64/Everything/ostree_installer-1' -@@ -96,9 +95,6 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -98,9 +97,6 @@ class OstreeThreadTest(helpers.PungiTestCase): 'koji_profile': 'koji', 'runroot_tag': 'rrt', 'image_volid_formats': ['{release_short}-{variant}-{arch}'], @@ -140,7 +147,7 @@ index ee3294e5..f44ca4ef 100644 }) def assertImageAdded(self, compose, ImageCls, iso): -@@ -125,7 +121,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -127,7 +123,7 @@ class OstreeThreadTest(helpers.PungiTestCase): ] for s in force_list(sources): @@ -149,7 +156,7 @@ index ee3294e5..f44ca4ef 100644 lorax_cmd.append('--variant=Everything') lorax_cmd.append('--nomacboot') -@@ -179,7 +175,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -182,7 +178,7 @@ class OstreeThreadTest(helpers.PungiTestCase): self.compose.supported = False pool = mock.Mock() cfg = { @@ -158,7 +165,7 @@ index ee3294e5..f44ca4ef 100644 'release': '20160321.n.0', } koji = KojiWrapper.return_value -@@ -197,8 +193,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -200,8 +196,7 @@ class OstreeThreadTest(helpers.PungiTestCase): t.process((self.compose, self.compose.variants['Everything'], 'x86_64', cfg), 1) self.assertRunrootCall(koji, @@ -168,7 +175,7 @@ index ee3294e5..f44ca4ef 100644 cfg['release'], extra=['--logfile=%s/%s/lorax.log' % (self.topdir, LOG_PATH)]) self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path) -@@ -233,12 +228,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -236,12 +231,7 @@ class OstreeThreadTest(helpers.PungiTestCase): t.process((self.compose, self.compose.variants['Everything'], 'x86_64', cfg), 1) @@ -182,7 +189,7 @@ index ee3294e5..f44ca4ef 100644 extra=['--logfile=%s/%s/lorax.log' % (self.topdir, LOG_PATH)]) self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path) self.assertImageAdded(self.compose, ImageCls, iso) -@@ -257,7 +247,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -260,7 +250,7 @@ class OstreeThreadTest(helpers.PungiTestCase): cfg = { 'release': '20160321.n.0', 'repo': [ @@ -191,7 +198,7 @@ index ee3294e5..f44ca4ef 100644 'https://example.com/extra-repo1.repo', 'https://example.com/extra-repo2.repo', ], -@@ -274,10 +264,9 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -277,10 +267,9 @@ class OstreeThreadTest(helpers.PungiTestCase): t.process((self.compose, self.compose.variants['Everything'], 'x86_64', cfg), 1) sources = [ @@ -204,7 +211,7 @@ index ee3294e5..f44ca4ef 100644 ] self.assertRunrootCall(koji, sources, cfg['release'], isfinal=True, -@@ -296,8 +285,8 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -299,8 +288,8 @@ class OstreeThreadTest(helpers.PungiTestCase): cfg = { 'release': '20160321.n.0', 'repo': [ @@ -215,7 +222,7 @@ index ee3294e5..f44ca4ef 100644 'https://example.com/extra-repo1.repo', 'https://example.com/extra-repo2.repo', ], -@@ -314,10 +303,10 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -317,10 +306,10 @@ class OstreeThreadTest(helpers.PungiTestCase): t.process((self.compose, self.compose.variants['Everything'], 'x86_64', cfg), 1) sources = [ @@ -229,7 +236,18 @@ index ee3294e5..f44ca4ef 100644 ] self.assertRunrootCall(koji, sources, cfg['release'], isfinal=True, -@@ -368,7 +357,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -353,9 +342,7 @@ class OstreeThreadTest(helpers.PungiTestCase): + + t.process((self.compose, self.compose.variants['Everything'], 'x86_64', cfg), 1) + +- sources = [ +- 'http://example.com/work/$basearch/repo', +- ] ++ sources = [] + + self.assertRunrootCall(koji, sources, cfg['release'], isfinal=True, + extra=['--logfile=%s/%s/lorax.log' % (self.topdir, LOG_PATH)]) +@@ -405,7 +392,7 @@ class OstreeThreadTest(helpers.PungiTestCase): get_dir_from_scm): pool = mock.Mock() cfg = { @@ -238,7 +256,7 @@ index ee3294e5..f44ca4ef 100644 'release': '20160321.n.0', 'add_template': ['some_file.txt'], 'add_arch_template': ['other_file.txt'], -@@ -395,8 +384,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -432,8 +419,7 @@ class OstreeThreadTest(helpers.PungiTestCase): 'branch': 'f24', 'dir': '.'}, templ_dir, logger=pool._logger)]) self.assertRunrootCall(koji, @@ -248,7 +266,7 @@ index ee3294e5..f44ca4ef 100644 cfg['release'], isfinal=True, extra=['--add-template=%s/some_file.txt' % templ_dir, -@@ -417,7 +405,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -454,7 +440,7 @@ class OstreeThreadTest(helpers.PungiTestCase): get_file_size, get_mtime, ImageCls, copy_all): pool = mock.Mock() cfg = { @@ -257,7 +275,7 @@ index ee3294e5..f44ca4ef 100644 'release': '!RELEASE_FROM_LABEL_DATE_TYPE_RESPIN', "installpkgs": ["fedora-productimg-atomic"], "add_template": ["/spin-kickstarts/atomic-installer/lorax-configure-repo.tmpl"], -@@ -449,8 +437,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -486,8 +472,7 @@ class OstreeThreadTest(helpers.PungiTestCase): self.assertRunrootCall( koji, @@ -267,7 +285,7 @@ index ee3294e5..f44ca4ef 100644 '20151203.t.0', isfinal=True, extra=['--installpkgs=fedora-productimg-atomic', -@@ -479,7 +466,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -516,7 +501,7 @@ class OstreeThreadTest(helpers.PungiTestCase): get_file_size, get_mtime, ImageCls, copy_all): pool = mock.Mock() cfg = { @@ -276,7 +294,7 @@ index ee3294e5..f44ca4ef 100644 'release': None, "installpkgs": ["fedora-productimg-atomic"], "add_template": ["/spin-kickstarts/atomic-installer/lorax-configure-repo.tmpl"], -@@ -511,8 +498,7 @@ class OstreeThreadTest(helpers.PungiTestCase): +@@ -548,8 +533,7 @@ class OstreeThreadTest(helpers.PungiTestCase): self.assertRunrootCall( koji, @@ -287,5 +305,5 @@ index ee3294e5..f44ca4ef 100644 isfinal=True, extra=['--installpkgs=fedora-productimg-atomic', -- -2.14.3 +2.14.4 diff --git a/0003-Revert-Ostree-can-use-pkgset-repos.patch b/0003-Revert-Ostree-can-use-pkgset-repos.patch index f1457493..27750d4c 100644 --- a/0003-Revert-Ostree-can-use-pkgset-repos.patch +++ b/0003-Revert-Ostree-can-use-pkgset-repos.patch @@ -1,7 +1,7 @@ -From 836750b9c53aa4c6330b986e7fb28f92d940df55 Mon Sep 17 00:00:00 2001 +From 079177c5bf498fe21c1f0b03d127bfa25fa09fe0 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/6] 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 3150e26c..7cfbb4e6 100644 +index 31e763b5..9f0aab69 100644 --- a/pungi/util.py +++ b/pungi/util.py -@@ -726,16 +726,19 @@ def _translate_url_to_repo_id(url): +@@ -728,16 +728,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 3150e26c..7cfbb4e6 100644 """ repo_dict = {} if isinstance(repo, dict): -@@ -745,8 +748,10 @@ def get_repo_dict(repo): +@@ -747,8 +750,10 @@ def get_repo_dict(repo): if name is None: name = _translate_url_to_repo_id(url) else: @@ -72,7 +72,7 @@ index 3150e26c..7cfbb4e6 100644 repo['name'] = name repo['baseurl'] = url return repo -@@ -757,24 +762,24 @@ def get_repo_dict(repo): +@@ -759,24 +764,24 @@ def get_repo_dict(repo): repo_dict['name'] = _translate_url_to_repo_id(repo) repo_dict['baseurl'] = repo else: @@ -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 1f22b63e..322301ff 100644 +index 739ea9e1..ab4f3459 100644 --- a/tests/test_util.py +++ b/tests/test_util.py -@@ -588,35 +588,43 @@ class GetRepoFuncsTestCase(unittest.TestCase): +@@ -587,35 +587,43 @@ class GetRepoFuncsTestCase(unittest.TestCase): self.assertEqual(util.get_repo_urls(self.compose, repos), expect) def test_get_repo_dict_from_normal_url(self): @@ -283,5 +283,5 @@ index 1f22b63e..322301ff 100644 -- -2.14.3 +2.14.4 diff --git a/0004-kojiwrapper-Make-result-of-runroot-world-readable.patch b/0004-kojiwrapper-Make-result-of-runroot-world-readable.patch deleted file mode 100644 index f10ef0f5..00000000 --- a/0004-kojiwrapper-Make-result-of-runroot-world-readable.patch +++ /dev/null @@ -1,107 +0,0 @@ -From c8e03cfba196719e80c953c3d197653ef84716ed Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Tue, 29 May 2018 08:38:09 +0200 -Subject: [PATCH 4/6] kojiwrapper: Make result of runroot world readable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The commands in runroot run as root every time. If they create files -that are not readable to other users, the reset of compose could have -problems with it if it does not run as root too. Particularly updates -composes in Bodhi run under apache user. - -Relates: https://pagure.io/pungi/issue/932 -Signed-off-by: Lubomír Sedlář ---- - pungi/phases/ostree_installer.py | 3 ++- - pungi/wrappers/kojiwrapper.py | 7 ++++++- - tests/test_koji_wrapper.py | 18 ++++++++++++++++++ - tests/test_ostree_installer_phase.py | 3 ++- - 4 files changed, 28 insertions(+), 3 deletions(-) - -diff --git a/pungi/phases/ostree_installer.py b/pungi/phases/ostree_installer.py -index abcb1572..572edbbb 100644 ---- a/pungi/phases/ostree_installer.py -+++ b/pungi/phases/ostree_installer.py -@@ -174,7 +174,8 @@ class OstreeInstallerThread(WorkerThread): - channel=runroot_channel, - use_shell=True, task_id=True, - packages=packages, mounts=[compose.topdir], -- weight=compose.conf['runroot_weights'].get('ostree_installer')) -+ weight=compose.conf['runroot_weights'].get('ostree_installer'), -+ destdir=output_dir) - output = koji.run_runroot_cmd(koji_cmd, log_file=log_file) - if output["retcode"] != 0: - raise RuntimeError("Runroot task failed: %s. See %s for more details." -diff --git a/pungi/wrappers/kojiwrapper.py b/pungi/wrappers/kojiwrapper.py -index f89640ca..b8d56791 100644 ---- a/pungi/wrappers/kojiwrapper.py -+++ b/pungi/wrappers/kojiwrapper.py -@@ -66,7 +66,9 @@ class KojiWrapper(object): - def _get_cmd(self, *args): - return ["koji", "--profile=%s" % self.profile] + list(args) - -- def get_runroot_cmd(self, target, arch, command, quiet=False, use_shell=True, channel=None, packages=None, mounts=None, weight=None, task_id=True, new_chroot=False): -+ def get_runroot_cmd(self, target, arch, command, quiet=False, use_shell=True, -+ channel=None, packages=None, mounts=None, weight=None, -+ task_id=True, new_chroot=False, destdir=None): - cmd = self._get_cmd("runroot") - - if quiet: -@@ -109,6 +111,9 @@ class KojiWrapper(object): - - # HACK: remove rpmdb and yum cache - command = "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; " + command -+ -+ if destdir: -+ command += "; chmod a+r %s" % shlex_quote(destdir) - cmd.append(command) - - return cmd -diff --git a/tests/test_koji_wrapper.py b/tests/test_koji_wrapper.py -index 7bf13773..4a14aed6 100644 ---- a/tests/test_koji_wrapper.py -+++ b/tests/test_koji_wrapper.py -@@ -416,6 +416,24 @@ class RunrootKojiWrapperTest(KojiWrapperBaseTestCase): - '--task-id', '--weight=1000', '--package=some_other_package', - '--package=lorax', '--mount=/tmp']) - -+ def test_with_destdir(self): -+ cmd = self.koji.get_runroot_cmd('tgt', 's390x', ['/bin/echo', '&'], -+ quiet=True, channel='chan', -+ packages=['lorax', 'some_other_package'], -+ mounts=['/tmp'], weight=1000, destdir="/output dir") -+ self.assertEqual(len(cmd), 14) -+ self.assertEqual(cmd[:3], ['koji', '--profile=custom-koji', 'runroot']) -+ self.assertEqual(cmd[-3], 'tgt') -+ self.assertEqual(cmd[-2], 's390x') -+ self.assertEqual( -+ cmd[-1], -+ "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; /bin/echo '&'; chmod a+r '/output dir'" -+ ) -+ self.assertItemsEqual(cmd[3:-3], -+ ['--channel-override=chan', '--quiet', '--use-shell', -+ '--task-id', '--weight=1000', '--package=some_other_package', -+ '--package=lorax', '--mount=/tmp']) -+ - @mock.patch('pungi.wrappers.kojiwrapper.run') - def test_run_runroot_cmd_no_task_id(self, run): - cmd = ['koji', 'runroot'] -diff --git a/tests/test_ostree_installer_phase.py b/tests/test_ostree_installer_phase.py -index f44ca4ef..859b18da 100644 ---- a/tests/test_ostree_installer_phase.py -+++ b/tests/test_ostree_installer_phase.py -@@ -142,7 +142,8 @@ class OstreeThreadTest(helpers.PungiTestCase): - 'rm -rf %s && %s' % (outdir, ' '.join(lorax_cmd)), - channel=None, mounts=[self.topdir], - packages=['pungi', 'lorax', 'ostree'], -- task_id=True, use_shell=True, weight=weight)]) -+ task_id=True, use_shell=True, weight=weight, -+ destdir=outdir)]) - self.assertEqual(koji.run_runroot_cmd.call_args_list, - [mock.call(koji.get_runroot_cmd.return_value, - log_file='%s/%s/runroot.log' % (self.topdir, LOG_PATH))]) --- -2.14.3 - diff --git a/0005-kojiwrapper-Don-t-mark-runroot-as-successful-by-chmo.patch b/0005-kojiwrapper-Don-t-mark-runroot-as-successful-by-chmo.patch deleted file mode 100644 index c5702aae..00000000 --- a/0005-kojiwrapper-Don-t-mark-runroot-as-successful-by-chmo.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 80cb233b2225abd8fcb687aa61a522e6e8280617 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Thu, 31 May 2018 14:50:03 +0200 -Subject: [PATCH 5/6] kojiwrapper: Don't mark runroot as successful by chmod -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Lubomír Sedlář ---- - pungi/wrappers/kojiwrapper.py | 2 +- - tests/test_koji_wrapper.py | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pungi/wrappers/kojiwrapper.py b/pungi/wrappers/kojiwrapper.py -index b8d56791..bcfb5303 100644 ---- a/pungi/wrappers/kojiwrapper.py -+++ b/pungi/wrappers/kojiwrapper.py -@@ -113,7 +113,7 @@ class KojiWrapper(object): - command = "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; " + command - - if destdir: -- command += "; chmod a+r %s" % shlex_quote(destdir) -+ command += " && chmod a+r %s" % shlex_quote(destdir) - cmd.append(command) - - return cmd -diff --git a/tests/test_koji_wrapper.py b/tests/test_koji_wrapper.py -index 4a14aed6..30037b27 100644 ---- a/tests/test_koji_wrapper.py -+++ b/tests/test_koji_wrapper.py -@@ -427,7 +427,7 @@ class RunrootKojiWrapperTest(KojiWrapperBaseTestCase): - self.assertEqual(cmd[-2], 's390x') - self.assertEqual( - cmd[-1], -- "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; /bin/echo '&'; chmod a+r '/output dir'" -+ "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; /bin/echo '&' && chmod a+r '/output dir'" - ) - self.assertItemsEqual(cmd[3:-3], - ['--channel-override=chan', '--quiet', '--use-shell', --- -2.14.3 - diff --git a/0006-kojiwrapper-Call-chmod-recursively.patch b/0006-kojiwrapper-Call-chmod-recursively.patch deleted file mode 100644 index 4d3b4b90..00000000 --- a/0006-kojiwrapper-Call-chmod-recursively.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 210037ad48aa7f91d0391dc7c9330d4fd5c7172e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Mon, 4 Jun 2018 08:31:08 +0200 -Subject: [PATCH 6/6] kojiwrapper: Call chmod recursively -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Related: https://pagure.io/pungi/issue/932 -Signed-off-by: Lubomír Sedlář ---- - pungi/wrappers/kojiwrapper.py | 2 +- - tests/test_koji_wrapper.py | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pungi/wrappers/kojiwrapper.py b/pungi/wrappers/kojiwrapper.py -index bcfb5303..abcdecb9 100644 ---- a/pungi/wrappers/kojiwrapper.py -+++ b/pungi/wrappers/kojiwrapper.py -@@ -113,7 +113,7 @@ class KojiWrapper(object): - command = "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; " + command - - if destdir: -- command += " && chmod a+r %s" % shlex_quote(destdir) -+ command += " && chmod -R a+r %s" % shlex_quote(destdir) - cmd.append(command) - - return cmd -diff --git a/tests/test_koji_wrapper.py b/tests/test_koji_wrapper.py -index 30037b27..0f20562a 100644 ---- a/tests/test_koji_wrapper.py -+++ b/tests/test_koji_wrapper.py -@@ -427,7 +427,7 @@ class RunrootKojiWrapperTest(KojiWrapperBaseTestCase): - self.assertEqual(cmd[-2], 's390x') - self.assertEqual( - cmd[-1], -- "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; /bin/echo '&' && chmod a+r '/output dir'" -+ "rm -f /var/lib/rpm/__db*; rm -rf /var/cache/yum/*; set -x; /bin/echo '&' && chmod -R a+r '/output dir'" - ) - self.assertItemsEqual(cmd[3:-3], - ['--channel-override=chan', '--quiet', '--use-shell', --- -2.14.3 - diff --git a/pungi.spec b/pungi.spec index bc8a11cc..80fc5aa5 100644 --- a/pungi.spec +++ b/pungi.spec @@ -1,6 +1,6 @@ Name: pungi -Version: 4.1.25 -Release: 7%{?dist} +Version: 4.1.26 +Release: 1%{?dist} Summary: Distribution compose tool Group: Development/Tools @@ -10,10 +10,7 @@ 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-kojiwrapper-Make-result-of-runroot-world-readable.patch -Patch4: 0005-kojiwrapper-Don-t-mark-runroot-as-successful-by-chmo.patch -Patch5: 0006-kojiwrapper-Call-chmod-recursively.patch -Patch6: 0001-Skip-tests-involving-lookaside-with-new-DNF.patch +Patch3: 0001-Fix-tests-for-DNF-3.patch BuildRequires: python3-nose BuildRequires: python3-mock @@ -41,6 +38,7 @@ BuildRequires: python3-PyYAML BuildRequires: libmodulemd >= 1.3.0 BuildRequires: python3-gobject BuildRequires: python3-pdc-client +BuildRequires: python3-createrepo_c #deps for doc building BuildRequires: python3-sphinx, texlive-collection-fontsrecommended @@ -75,6 +73,7 @@ Requires: python3-koji Requires: libmodulemd >= 1.3.0 Requires: python3-gobject Requires: python3-pdc-client +Requires: python3-createrepo_c Requires: python3-%{name} = %{version}-%{release} @@ -181,6 +180,37 @@ nosetests-3 --exe %{_bindir}/%{name}-wait-for-signed-ostree-handler %changelog +* Mon Jul 16 2018 Lubomír Sedlář - 4.1.26-1 +- gather: Add a hybrid depsolver backend (lsedlar) +- Always use lookasides for repoclosure (lsedlar) +- doc: closing parentheses for require_all_comps_packages (kdreyer) +- osbs: Generate unique repo names (lsedlar) +- Expand version field during image_build using version_generator (sinny) +- createrepo: Stop including modulemd in debug repos (lsedlar) +- Simplify iterating over module defaults (lsedlar) +- pkgset: Apply module filters on pkgset level (lsedlar) +- init: Validate whitespace in comps groups (lsedlar) +- createrepo: Include empty modules (lsedlar) +- createiso: Break hardlinks by copying files (lsedlar) +- pkgset: Query Koji instead of PDC (mcurlej) +- config: Report variants validity issues (lsedlar) +- variants: Reject values with whitespace (lsedlar) +- osbs: Fresh koji session for getting metadata (lsedlar) +- gather: Ignore comps in lookaside repo (lsedlar) +- init: Test that init phase correctly clones defaults (lsedlar) +- init: Add tests for cloning module defaults (lsedlar) +- init: Add validation for module defaults (lsedlar) +- ostree-installer: Skip comps repo if there are no comps (lsedlar) +- Add test for getting licenses from a repo (lsedlar) +- Add content_licenses to module metadata (sgallagh) +- Update virtualenv instructions (lsedlar) +- Allow extracting koji event from another compose (lsedlar) +- Copy modules instead of reparsing them (sgallagh) +- Silence config warnings in quiet mode (lsedlar) +- osbs: Add nvr to metadata (lsedlar) +- Always get old compose with release type suffix (patrick) +- Make ostree_installer check if buildinstall is skipped correctly (puiterwijk) + * Fri Jul 13 2018 Fedora Release Engineering - 4.1.25-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild diff --git a/sources b/sources index d1d3c18c..90414aca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pungi-4.1.25.tar.bz2) = 6f58f6693619345fd517cab9ad833f961a544772d9f16ed75cf37d3c9b3905ea9c7c372c1906c1900bd18311a0ed0c182100e2017716db65f80595b51914ba96 +SHA512 (pungi-4.1.26.tar.bz2) = 8b6aef74ea27b6e64f8d64297f0f6014dd7280f74754cf955f3e9680122e987ca0dedde5c96eeccb105958ced40133d62d9e52aa19097f33067ada9275d8dcd4