public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/rpkg] 1.70-1: Patch: Pass sourcedir to rpmspec when specfile is parsed
@ 2026-08-10 21:44
0 siblings, 0 replies; only message in thread
From: @ 2026-08-10 21:44 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/rpkg
Branch : 1.70-1
Commit : 43e65a934252be7d7be28adde3d4f5fb31650452
Author : Ondřej Nosek <onosek@redhat.com>
Date : 2021-09-01T11:06:02+00:00
Stats : +114/-1 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/rpkg/c/43e65a934252be7d7be28adde3d4f5fb31650452?branch=1.70-1
Log:
Patch: Pass sourcedir to rpmspec when specfile is parsed
Signed-off-by: Ondřej Nosek <onosek@redhat.com>
---
diff --git a/0003-Pass-sourcedir-to-rpmspec-when-specfile-is-parsed.patch b/0003-Pass-sourcedir-to-rpmspec-when-specfile-is-parsed.patch
new file mode 100644
index 0000000..7ae93e8
--- /dev/null
+++ b/0003-Pass-sourcedir-to-rpmspec-when-specfile-is-parsed.patch
@@ -0,0 +1,109 @@
+From e0bf13817fc4e9d2ec56f2780bf88d9cfd5a1f27 Mon Sep 17 00:00:00 2001
+From: Otto Urpelainen <oturpe@iki.fi>
+Date: Wed, 1 Sep 2021 07:44:22 +0300
+Subject: [PATCH] Pass sourcedir to rpmspec when specfile is parsed
+
+In many cases, specfile parsing in class SpecFile failed when
+the specfile contained local sources like 'Source2: local.txt'.
+This happened because rpm sourcedir configuration was not passed
+to utility rpmspec used for parsing, leading it to default
+to '~/rpmbuild/SOURCES', which is not correct for many layouts
+supported by rpkg.
+Fixed by passing sourcedir correctly.
+
+Fixes: #559
+Relates: https://pagure.io/rpkg/pull-request/564
+Merges: https://pagure.io/rpkg/pull-request/574
+
+Signed-off-by: Otto Urpelainen <oturpe@iki.fi>
+---
+ pyrpkg/__init__.py | 3 ++-
+ pyrpkg/spec.py | 9 +++++----
+ tests/test_spec.py | 16 ++++++++++++----
+ 3 files changed, 19 insertions(+), 9 deletions(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 5e4831a..23bca5b 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -2042,7 +2042,8 @@ class Commands(object):
+ outdir = self.path
+
+ sourcesf = SourcesFile(self.sources_filename, self.source_entry_type)
+- specf = SpecFile(os.path.join(self.layout.specdir, self.spec))
++ specf = SpecFile(os.path.join(self.layout.specdir, self.spec),
++ self.layout.sourcedir)
+
+ args = dict()
+ if self.lookaside_request_params:
+diff --git a/pyrpkg/spec.py b/pyrpkg/spec.py
+index 1aa2500..6341fcd 100644
+--- a/pyrpkg/spec.py
++++ b/pyrpkg/spec.py
+@@ -17,15 +17,16 @@ class SpecFile(object):
+
+ sourcefile_expression = re.compile(r'^source[0-9]*:\s*(?P<val>.*)\s*$', re.IGNORECASE)
+
+- def __init__(self, spec):
++ def __init__(self, spec, sourcedir):
+ self.spec = spec
++ self.sourcedir = sourcedir
+ self.sources = []
+
+ self.parse()
+
+ def parse(self):
+ """Call rpmspec and find source tags from the result."""
+- stdout = run(self.spec)
++ stdout = run(self.spec, self.sourcedir)
+ for line in stdout.splitlines():
+ m = self.sourcefile_expression.match(line)
+ if not m:
+@@ -36,8 +37,8 @@ class SpecFile(object):
+ self.sources.append(val)
+
+
+-def run(spec):
+- cmdline = ['rpmspec', '-P', spec]
++def run(spec, sourcedir):
++ cmdline = ['rpmspec', '--define', "_sourcedir %s" % sourcedir, '-P', spec]
+ try:
+ process = subprocess.Popen(cmdline,
+ stdout=subprocess.PIPE,
+diff --git a/tests/test_spec.py b/tests/test_spec.py
+index 15e3730..196b470 100644
+--- a/tests/test_spec.py
++++ b/tests/test_spec.py
+@@ -36,12 +36,17 @@ class SpecFileTestCase(unittest.TestCase):
+ spec_fd.write(
+ "Source0: https://example.com/tarball.tar.gz\n"
+ "Source1: https://example.com/subdir/LICENSE.txt\n"
+- "Source2: https://another.domain.com/source.tar.gz\n")
++ "Source2: https://another.domain.com/source.tar.gz\n"
++ "Source3: local.txt\n")
+ spec_fd.close()
+
+- s = spec.SpecFile(self.specfile)
++ s = spec.SpecFile(self.specfile, self.workdir)
+ actual = s.sources
+- expected = ["tarball.tar.gz", "LICENSE.txt", "source.tar.gz"]
++ expected = [
++ "tarball.tar.gz",
++ "LICENSE.txt",
++ "source.tar.gz",
++ "local.txt"]
+ self.assertEqual(len(actual), len(expected))
+ self.assertTrue(all([a == b for a, b in zip(actual, expected)]))
+
+@@ -52,4 +57,7 @@ class SpecFileTestCase(unittest.TestCase):
+ spec_fd.write("Foo: Bar\n")
+ spec_fd.close()
+
+- self.assertRaises(rpkgError, spec.SpecFile, [self.specfile])
++ self.assertRaises(rpkgError,
++ spec.SpecFile,
++ self.specfile,
++ self.workdir)
+--
+2.31.1
+
diff --git a/rpkg.spec b/rpkg.spec
index 6e68f2a..40dc68d 100644
--- a/rpkg.spec
+++ b/rpkg.spec
@@ -1,6 +1,6 @@
Name: rpkg
Version: 1.63
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Python library for interacting with rpm+git
License: GPLv2+ and LGPLv2
@@ -19,6 +19,7 @@ Source0: https://pagure.io/releases/rpkg/%{name}-%{version}.tar.gz
Patch0: remove-koji-and-rpm-py-installer-from-requires.patch
Patch1: 0001-Do-not-use-pytest-related-dependencies-temporarily.patch
Patch2: 0002-Use-six-library-in-tests.patch
+Patch3: 0003-Pass-sourcedir-to-rpmspec-when-specfile-is-parsed.patch
# RHEL7 is currently the only release that is built for Python 2.
%if 0%{?fedora} || 0%{?rhel} > 7
@@ -238,6 +239,9 @@ example_cli_dir=$RPM_BUILD_ROOT%{_datadir}/%{name}/examples/cli
%changelog
+* Wed Sep 01 2021 Ondřej Nosek <onosek@redhat.com> - 1.63-2
+- Patch: Pass sourcedir to rpmspec when specfile is parsed
+
* Tue Aug 24 2021 Dominik Rumian <drumian@redhat.com> - 1.63-1
- Do not download unused sources during command 'sources' - #559 (oturpe)
- Added 'x-pkg verrel' for containers - #547 (jkunstle)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-10 21:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-10 21:44 [rpms/rpkg] 1.70-1: Patch: Pass sourcedir to rpmspec when specfile is parsed
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox