diff options
author | CoprDistGit <infra@openeuler.org> | 2025-03-23 09:45:02 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2025-03-23 09:45:02 +0000 |
commit | 388caf1db3e96321693dcff28c53b97ef93aa57b (patch) | |
tree | d69caf59de3465277fab0a6f67849fee9d5a8b07 | |
parent | 36135071814baf52814dc88b8ac911002dd9d5e9 (diff) |
automatic import of rpkg
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | 0002-Remove-pytest-coverage-execution.patch | 26 | ||||
-rw-r--r-- | 0004-fedpkg-local-does-not-show-rpmbuild-output.patch | 114 | ||||
-rw-r--r-- | 0005-Fixes-for-exploded-SRPM-layouts.patch | 227 | ||||
-rw-r--r-- | 0006-mockbuild-escape-rpm-command-under-mock.patch | 59 | ||||
-rw-r--r-- | rpkg.spec | 28 | ||||
-rw-r--r-- | sources | 2 |
7 files changed, 19 insertions, 438 deletions
@@ -1 +1,2 @@ /rpkg-1.65.tar.gz +/rpkg-1.67.tar.gz diff --git a/0002-Remove-pytest-coverage-execution.patch b/0002-Remove-pytest-coverage-execution.patch index fbc9cb7..d746c7b 100644 --- a/0002-Remove-pytest-coverage-execution.patch +++ b/0002-Remove-pytest-coverage-execution.patch @@ -1,25 +1,11 @@ -From 8bf7c3b1336738ed5938f679fc4d450c3f8f0a62 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek <onosek@redhat.com> -Date: Wed, 7 Sep 2022 00:11:56 +0200 -Subject: [PATCH] Remove pytest coverage execution - -Signed-off-by: Ondrej Nosek <onosek@redhat.com> ---- - setup.cfg | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/setup.cfg b/setup.cfg -index 5e29c2f..4fe73fa 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -5,7 +5,6 @@ test = pytest +--- a/setup.cfg 2023-12-11 18:21:45.586656058 +0100 ++++ b/setup.cfg 2024-06-26 02:33:53.017645612 +0200 +@@ -5,8 +5,4 @@ max-line-length = 100 [tool:pytest] +-# additional values for 'addopts' can be: +-# --cov-report html +-# -ra -q -addopts = --cov=pyrpkg testpaths = tests - - [egg_info] --- -2.37.2 - diff --git a/0004-fedpkg-local-does-not-show-rpmbuild-output.patch b/0004-fedpkg-local-does-not-show-rpmbuild-output.patch deleted file mode 100644 index 30f3e8e..0000000 --- a/0004-fedpkg-local-does-not-show-rpmbuild-output.patch +++ /dev/null @@ -1,114 +0,0 @@ -From fef9715d4acb690dff1cc9f08545721d69bf208d Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek <onosek@redhat.com> -Date: Wed, 7 Sep 2022 19:53:05 +0200 -Subject: [PATCH] `fedpkg local` does not show rpmbuild output - -subprocess.communicate() method didn't allow a direct pipe output -to the shell and therefore wasn't shown to the user. Switched to -check_call method. -Additionally, the correct exit code is returned when the first part -of the command fails. - -Resolves: rhbz#2124809 -JIRA: RHELCMP-9960 - -Signed-off-by: Ondrej Nosek <onosek@redhat.com> ---- - pyrpkg/__init__.py | 12 +++++------- - tests/test_cli.py | 26 ++++++++++++++------------ - 2 files changed, 19 insertions(+), 19 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index a672dd2..1b6a0c4 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -2818,14 +2818,12 @@ class Commands(object): - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT - ) -- tee = subprocess.Popen( -+ subprocess.check_call( - ("tee", logfile), -- stdin=rpmbuild.stdout, -- stdout=subprocess.PIPE) -- rpmbuild.stdout.close() -- tee.communicate() -- -- except subprocess.SubprocessError: -+ stdin=rpmbuild.stdout) -+ rpmbuild.communicate() # without this, 'returncode' is None (=unfinished process) -+ sys.exit(rpmbuild.returncode) -+ except subprocess.CalledProcessError: - raise rpkgError(debug_cmd) - finally: - self._cleanup_tmp_dir(tmpdir) -diff --git a/tests/test_cli.py b/tests/test_cli.py -index 254bfac..97ae0ce 100644 ---- a/tests/test_cli.py -+++ b/tests/test_cli.py -@@ -846,10 +846,12 @@ class TestLocal(CliTestCase): - - create_repo_per_test = False - -+ @patch('sys.exit') -+ @patch('pyrpkg.subprocess.check_call') - @patch('subprocess.Popen') - @patch('pyrpkg.Commands.rel') - @patch('pyrpkg.Commands.ver') -- def test_local(self, ver, rel, popen): -+ def test_local(self, ver, rel, popen, check_call, system_exit): - cli_cmd = ['rpkg', '--path', self.cloned_repo_path, '--release', 'rhel-6', 'local'] - - rel.__str__ = Mock() -@@ -868,20 +870,21 @@ class TestLocal(CliTestCase): - popen.assert_has_calls([ - # at the beginning of this list, there are other calls from load_nameverrel - call(rpmbuild, stdout=-1, stderr=-2), -- # I can't match this call - stdin=Mock has it's dynamic id. Therefore any_oreder=True -- # call(tee, stdin=Mock(), stdout=-1), # check call [-3] separately -- call().stdout.close(), - call().communicate(), -- ], any_order=True) -+ ], any_order=False) - -- tee_call_arg = popen.mock_calls[-3] -+ tee_call_arg = check_call.mock_calls[0] - if 'args' in dir(tee_call_arg): # doesn't work in <=py36 - self.assertEqual(tee, tee_call_arg.args[0]) - -+ system_exit.assert_called_once() -+ -+ @patch('sys.exit') -+ @patch('pyrpkg.subprocess.check_call') - @patch('subprocess.Popen') - @patch('pyrpkg.Commands.rel') - @patch('pyrpkg.Commands.ver') -- def test_local_with_options(self, ver, rel, popen): -+ def test_local_with_options(self, ver, rel, popen, check_call, system_exit): - builddir = os.path.join(self.cloned_repo_path, 'this-builddir') - buildrootdir = os.path.join(self.cloned_repo_path, 'this-buildrootdir') - -@@ -913,16 +916,15 @@ class TestLocal(CliTestCase): - popen.assert_has_calls([ - # at the beginning of this list, there are other calls from load_nameverrel - call(rpmbuild, stdout=-1, stderr=-2), -- # I can't match this call - stdin=Mock has it's dynamic id. Therefore any_oreder=True -- # call(tee, stdin=Mock(), stdout=-1), # check call [-3] separately -- call().stdout.close(), - call().communicate(), -- ], any_order=True) -+ ], any_order=False) - -- tee_call_arg = popen.mock_calls[-3] -+ tee_call_arg = check_call.mock_calls[0] - if 'args' in dir(tee_call_arg): # doesn't work in <=py36 - self.assertEqual(tee, tee_call_arg.args[0]) - -+ system_exit.assert_called_once() -+ - - class TestVerifyFiles(CliTestCase): - --- -2.37.2 - diff --git a/0005-Fixes-for-exploded-SRPM-layouts.patch b/0005-Fixes-for-exploded-SRPM-layouts.patch deleted file mode 100644 index f2b57b3..0000000 --- a/0005-Fixes-for-exploded-SRPM-layouts.patch +++ /dev/null @@ -1,227 +0,0 @@ -From fc4dc6882c802e9a8b7ece3101033cb662928adf Mon Sep 17 00:00:00 2001 -From: Troy Dawson <tdawson@redhat.com> -Date: Fri, 23 Sep 2022 14:38:34 -0700 -Subject: [PATCH 1/2] Fixes for exploded SRPM layouts - -sources_filename incorrectly set when using SRPMLayout. - -Fixes: #633 -JIRA: RHELCMP-9992 -Merges: https://pagure.io/rpkg/pull-request/634 - -Signed-off-by: Troy Dawson <tdawson@redhat.com> ---- - pyrpkg/__init__.py | 21 +++++++++++---------- - pyrpkg/cli.py | 2 +- - pyrpkg/sources.py | 30 +++++++++++++++++++++++++----- - tests/test_cli.py | 2 +- - tests/test_sources.py | 33 +++++++++++++++++++++++++++++++++ - 5 files changed, 71 insertions(+), 17 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 1b6a0c4..a40fa5a 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -1153,7 +1153,8 @@ class Commands(object): - def sources_filename(self): - if self.layout is None: - return os.path.join(self.path, 'sources') -- return os.path.join(self.path, self.layout.sources_file_template) -+ return os.path.join( -+ self.path, self.layout.sources_file_template.replace("{0.repo_name}", self.repo_name)) - - @property - def osbs_config_filename(self): -@@ -2163,9 +2164,9 @@ class Commands(object): - self.log.info("sources file doesn't exist. Source files download skipped.") - return - -- # Default to putting the files where the repository is -+ # Default to putting the files in the layout sourcedir - if not outdir: -- outdir = self.path -+ outdir = self.layout.sourcedir - - sourcesf = SourcesFile(self.sources_filename, self.source_entry_type) - -@@ -2578,7 +2579,7 @@ class Commands(object): - cmd.append('--nocheck') - if self.quiet: - cmd.append('--quiet') -- cmd.extend(['-bc', os.path.join(self.path, self.spec)]) -+ cmd.extend(['-bc', os.path.join(self.layout.specdir, self.spec)]) - # Run the command - self._run_command(cmd) - -@@ -2657,7 +2658,7 @@ class Commands(object): - if buildrootdir: - cmd.extend(["--define", "_buildrootdir {0}".format( - os.path.abspath(buildrootdir))]) -- cmd.extend(['-bi', os.path.join(self.path, self.spec)]) -+ cmd.extend(['-bi', os.path.join(self.layout.specdir, self.spec)]) - # Run the command - self._run_command(cmd) - return -@@ -2798,7 +2799,7 @@ class Commands(object): - if not hashtype == 'sha256': - cmd.extend(["--define", "_source_filedigest_algorithm %s" % hashtype, - "--define", "_binary_filedigest_algorithm %s" % hashtype]) -- specpath = os.path.join(self.path, self.spec) -+ specpath = os.path.join(self.layout.specdir, self.spec) - tmpdir = None - try: - if not self.uses_rpmautospec or not rpmautospec_process_distgit: -@@ -3180,7 +3181,7 @@ class Commands(object): - if buildrootdir: - cmd.extend(["--define", "_buildrootdir {0}".format( - os.path.abspath(buildrootdir))]) -- cmd.extend(['--nodeps', '-bp', os.path.join(self.path, self.spec)]) -+ cmd.extend(['--nodeps', '-bp', os.path.join(self.layout.specdir, self.spec)]) - # Run the command - self._run_command(cmd) - -@@ -3238,7 +3239,7 @@ class Commands(object): - if not hashtype == 'sha256': - cmd.extend(["--define", "_source_filedigest_algorithm %s" % hashtype, - "--define", "_binary_filedigest_algorithm %s" % hashtype]) -- specpath = os.path.join(self.path, self.spec) -+ specpath = os.path.join(self.layout.specdir, self.spec) - tmpdir = None - try: - if not self.uses_rpmautospec or not rpmautospec_process_distgit: -@@ -3262,7 +3263,7 @@ class Commands(object): - # Create a list for unused patches - unused = [] - # Get the content of spec into memory for fast searching -- with open(os.path.join(self.path, self.spec), 'r') as f: -+ with open(os.path.join(self.layout.specdir, self.spec), 'r') as f: - data = f.read() - if six.PY2: - try: -@@ -3340,7 +3341,7 @@ class Commands(object): - if buildrootdir: - cmd.extend(["--define", "_buildrootdir {0}".format( - os.path.abspath(buildrootdir))]) -- cmd.extend(['-bl', os.path.join(self.path, self.spec)]) -+ cmd.extend(['-bl', os.path.join(self.layout.specdir, self.spec)]) - # Run the command - self._run_command(cmd) - -diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py -index 9694f14..b0a16fb 100644 ---- a/pyrpkg/cli.py -+++ b/pyrpkg/cli.py -@@ -1484,7 +1484,7 @@ class cliClient(object): - 'sources', help='Download source files', - description='Download source files') - sources_parser.add_argument( -- '--outdir', default=os.curdir, -+ '--outdir', - help='Directory to download files into (defaults to pwd)') - sources_parser.set_defaults(command=self.sources) - -diff --git a/pyrpkg/sources.py b/pyrpkg/sources.py -index 858461d..cdd5275 100644 ---- a/pyrpkg/sources.py -+++ b/pyrpkg/sources.py -@@ -67,15 +67,35 @@ class SourcesFile(object): - return self.entry_type(m.group('hashtype'), m.group('file'), - m.group('hash')) - -- # Try falling back on the old format -+ # Try falling back on the old Fedora format - try: - hash, file = stripped.split(' ', 1) - - except ValueError: -- raise MalformedLineError( -- 'sources has invalid content: {0}\n' -- 'Please note that sources file must not be modified manually.' -- .format(stripped)) -+ # Try old Centos Format -+ try: -+ hash, file_path = stripped.split(' ', 1) -+ if len(hash) == 128: -+ hashtype = 'sha512' -+ elif len(hash) == 64: -+ hashtype = 'sha256' -+ elif len(hash) == 40: -+ hashtype = 'sha1' -+ elif len(hash) == 32: -+ hashtype = 'md5' -+ else: -+ raise MalformedLineError( -+ 'sources has invalid content: {0}\n' -+ 'Please note that sources file must not be modified manually.' -+ .format(stripped)) -+ file = os.path.split(file_path)[1] -+ return self.entry_type(hashtype, file, hash) -+ -+ except ValueError: -+ raise MalformedLineError( -+ 'sources has invalid content: {0}\n' -+ 'Please note that sources file must not be modified manually.' -+ .format(stripped)) - - return self.entry_type('md5', file, hash) - -diff --git a/tests/test_cli.py b/tests/test_cli.py -index 97ae0ce..dd1399a 100644 ---- a/tests/test_cli.py -+++ b/tests/test_cli.py -@@ -1579,7 +1579,7 @@ class TestSources(LookasideCacheMock, CliTestCase): - # NOTE: without --outdir, whatever to run sources command in package - # repository, sources file is downloaded into current working - # directory. Is this a bug, or need to improve? -- self.assertTrue(os.path.exists('readme.patch')) -+ self.assertTrue(os.path.exists(os.path.join(self.cloned_repo_path, 'readme.patch'))) - - def test_sources_to_outdir(self): - cli_cmd = ['rpkg', '--path', self.cloned_repo_path, -diff --git a/tests/test_sources.py b/tests/test_sources.py -index cfacc51..f041373 100644 ---- a/tests/test_sources.py -+++ b/tests/test_sources.py -@@ -66,6 +66,39 @@ class SourcesFileTestCase(unittest.TestCase): - self.assertEqual(entry.file, 'afile') - self.assertEqual(str(entry), newline) - -+ def test_parse_old_style_centos_line(self): -+ s = sources.SourcesFile(self.sourcesfile, 'old') -+ -+ my_hash = 'abababab01010101010101010101010101010101' -+ my_file = 'SUBDIR/afile' -+ -+ line = '{0} {1}\n'.format(my_hash, my_file) -+ newline = '{0} {1}\n'.format(my_hash, 'afile') -+ entry = s.parse_line(line) -+ -+ self.assertTrue(isinstance(entry, sources.SourceFileEntry)) -+ self.assertEqual(entry.hashtype, 'sha1') -+ self.assertEqual(entry.hash, my_hash) -+ self.assertEqual(entry.file, 'afile') -+ self.assertEqual(str(entry), newline) -+ -+ def test_migrate_old_style_centos_line(self): -+ s = sources.SourcesFile(self.sourcesfile, 'bsd') -+ -+ my_hash = 128 * 'x' -+ my_file = 'SUBDIR/afile' -+ -+ line = '{0} {1}\n'.format(my_hash, my_file) -+ newline = '{0} {1}\n'.format(my_hash, 'afile') -+ newline = 'SHA512 (afile) = {0}\n'.format(my_hash) -+ entry = s.parse_line(line) -+ -+ self.assertTrue(isinstance(entry, sources.SourceFileEntry)) -+ self.assertEqual(entry.hashtype, 'sha512') -+ self.assertEqual(entry.hash, my_hash) -+ self.assertEqual(entry.file, 'afile') -+ self.assertEqual(str(entry), newline) -+ - def test_parse_entry_line(self): - s = sources.SourcesFile(self.sourcesfile, 'bsd') - --- -2.37.3 - diff --git a/0006-mockbuild-escape-rpm-command-under-mock.patch b/0006-mockbuild-escape-rpm-command-under-mock.patch deleted file mode 100644 index e0d97e9..0000000 --- a/0006-mockbuild-escape-rpm-command-under-mock.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 7cefc5fe35a514637b1b0b68e044f0de0d188e22 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek <onosek@redhat.com> -Date: Wed, 5 Oct 2022 03:45:22 +0200 -Subject: [PATCH 2/2] mockbuild: escape rpm command under mock - -Arguments of the 'rpm' part after 'mock --shell' needs to be escaped. -Example: - - mock -r xxx --chroot ... --shell rpm --define '_sourcedir xxx' ... - -JIRA: RHELCMP-10150 -Resolves: rhbz#2130349 - -Signed-off-by: Ondrej Nosek <onosek@redhat.com> ---- - pyrpkg/__init__.py | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index a40fa5a..1595344 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -22,6 +22,7 @@ import os - import posixpath - import random - import re -+import shlex - import shutil - import subprocess - import sys -@@ -43,13 +44,14 @@ from six.moves.urllib.parse import urljoin - - from pyrpkg import layout - from pyrpkg.errors import (AlreadyUploadedError, HashtypeMixingError, -- UnknownTargetError, rpkgAuthError, rpkgError, NoSourcesError) -+ NoSourcesError, UnknownTargetError, rpkgAuthError, -+ rpkgError) - from pyrpkg.lookaside import CGILookasideCache - from pyrpkg.sources import SourcesFile - from pyrpkg.spec import SpecFile - from pyrpkg.utils import (cached_property, extract_srpm, find_me, - is_file_tracked, is_lookaside_eligible_file, -- spec_file_processed_by_rpmautospec, log_result) -+ log_result, spec_file_processed_by_rpmautospec) - - from .gitignore import GitIgnore - -@@ -813,6 +815,8 @@ class Commands(object): - # listing for each subpackage. We only care about the first. - rpm_cmd.extend(["-q", "--qf", "??%{NAME} %{EPOCH} %{VERSION} %{RELEASE}??", - "--specfile", "%s" % os.path.join(tmp_root, self.spec)]) -+ # escape whole 'rpm' command because it will be executed under mock command -+ rpm_cmd = [shlex.quote(item) for item in rpm_cmd] - main_cmd = cmd + ['--shell'] + rpm_cmd \ - + ['> ' + os.path.join(tmp_root, 'output')] - --- -2.37.3 - @@ -1,9 +1,9 @@ Name: rpkg -Version: 1.65 +Version: 1.67 Release: 1 Summary: Python library for interacting with rpm+git -License: GPLv2+ and LGPLv2 +License: GPL-2.0-or-later AND LicenseRef-Callaway-LGPLv2 URL: https://pagure.io/rpkg BuildArch: noarch Source0: https://pagure.io/releases/rpkg/%{name}-%{version}.tar.gz @@ -18,21 +18,9 @@ Source1: rpkg.rpmlintrc PYTHONDONTWRITEBYTECODE=1\\\ %{?__pytest_addopts:PYTEST_ADDOPTS="${PYTEST_ADDOPTS:-} %{__pytest_addopts}"}\\\ %__pytest} - -# Fix for bug 1579367 -# Due to https://pagure.io/koji/issue/912, python[23]-koji package does not -# have egginfo. -# rpm-py-installer is required as a proxy to install RPM python binding -# library, so rpm is the actual requirement that must be present in the -# requires.txt. But, rpkg has to work in all active Fedora and EPEL releases, -# and there is only old rpm-python package in EL6 and 7, so just simply to -# remove rpm-py-installer for now. Patch0: remove-koji-and-rpm-py-installer-from-requires.patch Patch1: 0001-Do-not-use-pytest-related-dependencies-temporarily.patch Patch2: 0002-Remove-pytest-coverage-execution.patch -Patch4: 0004-fedpkg-local-does-not-show-rpmbuild-output.patch -Patch5: 0005-Fixes-for-exploded-SRPM-layouts.patch -Patch6: 0006-mockbuild-escape-rpm-command-under-mock.patch %description Python library for interacting with rpm+git @@ -41,6 +29,8 @@ Python library for interacting with rpm+git Summary: %{summary} BuildRequires: python3-devel +BuildRequires: python3-pip +BuildRequires: python3-hatchling BuildRequires: python3-GitPython BuildRequires: python3-koji >= 1.24 BuildRequires: python3-libmodulemd @@ -98,11 +88,13 @@ Common files for python2-%{name} and python3-%{name}. sed -i -n '/extras_require/,/}/!p' setup.py %build -%py3_build +%pyproject_build + %install -%py3_install +%pyproject_install + # Create configuration directory to holding downstream clients config files # that are built on top of rpkg @@ -128,12 +120,14 @@ example_cli_dir=$RPM_BUILD_ROOT%{_datadir}/%{name}/examples/cli %doc README.rst CHANGELOG.rst %license COPYING COPYING-koji LGPL %{python3_sitelib}/pyrpkg -%{python3_sitelib}/%{name}-%{version}-py*.egg-info +%{python3_sitelib}/%{name}-%{version}.dist-info %files common %{_datadir}/%{name} %{_sysconfdir}/rpkg %changelog +* Sun Mar 23 2025 lichaoran <pkwarcraft@hotmail.com> - 1.67-1 +- Upgrade to 1.67 * Fri Mar 24 2023 lichaoran <pkwarcraft@hotmail.com> - 1.65-1 - Initial package @@ -1 +1 @@ -c863a3a59686ee280eb686ede22b5747 rpkg-1.65.tar.gz +ee44e31788a4732016527a64f0e913fe rpkg-1.67.tar.gz |