diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-29 12:17:42 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-29 12:17:42 +0000 |
commit | 32b09cdd8fcfe7c5d49db5dc9964be987ce5a0a9 (patch) | |
tree | c0e3b2d4d05680f57d6521d85a7396b7580acc23 /0020-Use-release-s-rpmdefines-in-unused-sources-check.patch | |
parent | 42c179873afdc4ea9634b0e0fbaf391298880998 (diff) |
automatic import of rpkg
Diffstat (limited to '0020-Use-release-s-rpmdefines-in-unused-sources-check.patch')
-rw-r--r-- | 0020-Use-release-s-rpmdefines-in-unused-sources-check.patch | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/0020-Use-release-s-rpmdefines-in-unused-sources-check.patch b/0020-Use-release-s-rpmdefines-in-unused-sources-check.patch deleted file mode 100644 index 6be7cee..0000000 --- a/0020-Use-release-s-rpmdefines-in-unused-sources-check.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 8667d5379161183b306bdd4a6733c666cd2ef310 Mon Sep 17 00:00:00 2001 -From: Otto Liljalaakso <otto.liljalaakso@iki.fi> -Date: Sun, 2 Apr 2023 17:21:00 +0300 -Subject: [PATCH 1/2] Use release's rpmdefines in unused sources check - -Conditional Source: tags are problematic and, in fact, forbidden in at -least Fedora. However, there are packages that conditionalize packages -based on macros such as %{rhel} or %{fedora}. 'x-pkg sources' did not -handle such packages correctly, because when the specfile was parsed -to check for unused sources, values for those macros were not set. This -was different from other commands which set such macros based on the -value of --release parameter or Git branch name. - -Improve support for conditional Source: tags by using the standard set -of rpmdefines when the specfile is parsed in 'fedpkg sources'. - -Fixes: #671 -JIRA: RHELCMP-11465 -Merges: https://pagure.io/rpkg/pull-request/678 - -Signed-off-by: Otto Liljalaakso <otto.liljalaakso@iki.fi> ---- - pyrpkg/__init__.py | 21 +++++++++++++++------ - pyrpkg/spec.py | 12 +++++++----- - tests/test_cli.py | 21 ++++++++++++++++++++- - tests/test_spec.py | 8 ++++++-- - 4 files changed, 48 insertions(+), 14 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 3f934d3..817ef33 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -2261,13 +2261,22 @@ class Commands(object): - sourcesf = SourcesFile(self.sources_filename, self.source_entry_type) - - try: -- specf = SpecFile(os.path.join(self.layout.specdir, self.spec), -- self.layout.sourcedir) -- spec_parsed = True -- except Exception: -- self.log.warning("Parsing specfile for used sources failed. " -- "Falling back to downloading all sources.") -+ # Try resolving rpmdefines separately. This produces a clear error -+ # message in the common failure case of custom branch name. -+ self.rpmdefines -+ except Exception as err: -+ self.log.warning("Parsing specfile for used sources failed: %s" % err) -+ self.log.warning("Falling back to downloading all sources.") - spec_parsed = False -+ else: -+ try: -+ specf = SpecFile(os.path.join(self.layout.specdir, self.spec), -+ self.rpmdefines) -+ spec_parsed = True -+ except Exception: -+ self.log.warning("Parsing specfile for used sources failed. " -+ "Falling back to downloading all sources.") -+ spec_parsed = False - - args = dict() - if self.lookaside_request_params: -diff --git a/pyrpkg/spec.py b/pyrpkg/spec.py -index d72f1fb..5400de3 100644 ---- a/pyrpkg/spec.py -+++ b/pyrpkg/spec.py -@@ -18,16 +18,16 @@ class SpecFile(object): - r'^((source[0-9]*|patch[0-9]*)\s*:\s*(?P<val>.*))\s*$', - re.IGNORECASE) - -- def __init__(self, spec, sourcedir): -+ def __init__(self, spec, rpmdefines): - self.spec = spec -- self.sourcedir = sourcedir -+ self.rpmdefines = rpmdefines - self.sources = [] - - self.parse() - - def parse(self): - """Call rpmspec and find source tags from the result.""" -- stdout = run(self.spec, self.sourcedir) -+ stdout = run(self.spec, self.rpmdefines) - for line in stdout.splitlines(): - m = self.sourcefile_expression.match(line) - if not m: -@@ -38,8 +38,10 @@ class SpecFile(object): - self.sources.append(val) - - --def run(spec, sourcedir): -- cmdline = ['rpmspec', '--define', "_sourcedir %s" % sourcedir, '-P', spec] -+def run(spec, rpmdefines): -+ cmdline = ['rpmspec'] -+ cmdline.extend(rpmdefines) -+ cmdline.extend(['-P', spec]) - try: - process = subprocess.Popen(cmdline, - stdout=subprocess.PIPE, -diff --git a/tests/test_cli.py b/tests/test_cli.py -index 02620ef..58df047 100644 ---- a/tests/test_cli.py -+++ b/tests/test_cli.py -@@ -1607,6 +1607,25 @@ class TestSources(LookasideCacheMock, CliTestCase): - def test_unused_sources_are_not_downloaded(self): - self._upload_unused() - -+ cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'sources'] -+ with patch('sys.argv', new=cli_cmd): -+ with patch('pyrpkg.Commands.rpmdefines', -+ new=['--define', '_sourcedir %s' % self.cloned_repo_path]): -+ cli = self.new_cli() -+ with patch('pyrpkg.lookaside.CGILookasideCache.download', -+ new=self.lookasidecache_download): -+ cli.sources() -+ -+ path = os.path.join(self.cloned_repo_path, 'unused.patch') -+ self.assertFalse(os.path.exists(path)) -+ -+ @patch('pyrpkg.Commands.load_rpmdefines') -+ def test_download_sources_including_unused(self, rpmdefines): -+ self._upload_unused() -+ # SpecFile parsing executes 'rpmspec', that needs '--define' arguments from rpmdefines -+ # when rpmdefines raises eception, SpecFile parsing fails --> all sources are downloaded. -+ rpmdefines.side_effect = rpkgError -+ - cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'sources'] - with patch('sys.argv', new=cli_cmd): - cli = self.new_cli() -@@ -1615,7 +1634,7 @@ class TestSources(LookasideCacheMock, CliTestCase): - cli.sources() - - path = os.path.join(self.cloned_repo_path, 'unused.patch') -- self.assertFalse(os.path.exists(path)) -+ self.assertTrue(os.path.exists(path)) - - def test_force_option_downloads_unused_sources(self): - self._upload_unused() -diff --git a/tests/test_spec.py b/tests/test_spec.py -index eefc475..0c7907a 100644 ---- a/tests/test_spec.py -+++ b/tests/test_spec.py -@@ -10,6 +10,10 @@ from pyrpkg.errors import rpkgError - class SpecFileTestCase(unittest.TestCase): - def setUp(self): - self.workdir = tempfile.mkdtemp(prefix='rpkg-tests.') -+ self.rpmdefines = ["--define", "_sourcedir %s" % self.workdir, -+ "--define", "_specdir %s" % self.workdir, -+ "--define", "_builddir %s" % self.workdir, -+ "--eval", "%%undefine rhel"] - self.specfile = os.path.join(self.workdir, self._testMethodName) - - # Write common header -@@ -43,7 +47,7 @@ class SpecFileTestCase(unittest.TestCase): - "PAtch999: https://remote.patch-sourcce.org/another-patch.bz2\n") - spec_fd.close() - -- s = spec.SpecFile(self.specfile, self.workdir) -+ s = spec.SpecFile(self.specfile, self.rpmdefines) - actual = s.sources - expected = [ - "tarball.tar.gz", -@@ -65,4 +69,4 @@ class SpecFileTestCase(unittest.TestCase): - self.assertRaises(rpkgError, - spec.SpecFile, - self.specfile, -- self.workdir) -+ self.rpmdefines) --- -2.40.0 - |