From 59f256885f143673ec8addff2f6d0bb0a5d676c0 Mon Sep 17 00:00:00 2001 From: Ondřej Nosek Date: Apr 25 2023 18:28:42 +0000 Subject: Orphaned for 6+ weeks --- diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a29257e..0000000 --- a/.gitignore +++ /dev/null @@ -1,64 +0,0 @@ -/rpkg-1.1.tar.gz -/rpkg-1.2.tar.gz -/rpkg-1.3.tar.gz -/rpkg-1.4.tar.gz -/rpkg-1.5.tar.gz -/rpkg-1.6.tar.gz -/rpkg-1.7.tar.gz -/rpkg-1.8.tar.gz -/rpkg-1.9.tar.gz -/rpkg-1.10.tar.gz -/rpkg-1.11.tar.gz -/rpkg-1.12.tar.gz -/rpkg-1.13.tar.gz -/rpkg-1.14.tar.gz -/rpkg-1.15.tar.gz -/rpkg-1.16.tar.gz -/rpkg-1.17.tar.gz -/rpkg-1.18.tar.gz -/rpkg-1.19.tar.gz -/rpkg-1.20.tar.gz -/rpkg-1.21.tar.gz -/rpkg-1.24.tar.gz -/rpkg-1.25.tar.gz -/rpkg-1.26.tar.gz -/rpkg-1.27.tar.gz -/rpkg-1.28.tar.gz -/rpkg-1.30.tar.gz -/rpkg-1.31.tar.gz -/rpkg-1.32.tar.gz -/rpkg-1.33.tar.gz -/rpkg-1.34.tar.gz -/rpkg-1.35.tar.gz -/rpkg-1.36.tar.gz -/rpkg-1.37.tar.gz -/rpkg-1.38.tar.gz -/rpkg-1.39.tar.gz -/rpkg-1.40.tar.gz -/rpkg-1.41.tar.gz -/rpkg-1.42.tar.gz -/rpkg-1.43.tar.gz -/rpkg-1.44.tar.gz -/rpkg-1.45.tar.bz2 -/rpkg-1.45.tar.gz -/rpkg-1.46.tar.gz -/rpkg-1.47.tar.gz -/rpkg-1.48.tar.gz -/rpkg-1.49.tar.gz -/rpkg-1.50.tar.gz -/rpkg-1.51.tar.gz -/rpkg-1.52.tar.gz -/rpkg-1.53.tar.gz -/rpkg-1.54.tar.gz -/rpkg-1.55.tar.gz -/rpkg-1.56.tar.gz -/rpkg-1.57.tar.gz -/rpkg-1.58.tar.gz -/rpkg-1.59.tar.gz -/rpkg-1.60.tar.gz -/rpkg-1.61.tar.gz -/rpkg-1.62.tar.gz -/rpkg-1.63.tar.gz -/rpkg-1.64.tar.gz -/rpkg-1.65.tar.gz -/rpkg-1.66.tar.gz diff --git a/0001-Do-not-use-pytest-related-dependencies-temporarily.patch b/0001-Do-not-use-pytest-related-dependencies-temporarily.patch deleted file mode 100644 index 70d12b0..0000000 --- a/0001-Do-not-use-pytest-related-dependencies-temporarily.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 50caf547ff288d8146ea5e277ab7bfcf7e8b095c Mon Sep 17 00:00:00 2001 -From: Dominik Rumian -Date: Tue, 24 Aug 2021 16:24:47 +0200 -Subject: [PATCH] [PATCH] Do not use pytest-related dependencies temporarily - -Signed-off-by: Dominik Rumian ---- - setup.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/setup.py b/setup.py -index 9c6d881..557cf5f 100755 ---- a/setup.py -+++ b/setup.py -@@ -49,7 +49,6 @@ setup( - license="GPLv2+", - url="https://pagure.io/rpkg", - packages=find_packages(), -- setup_requires=['setuptools_scm', 'pytest-runner'], - install_requires=install_requires, - tests_require=tests_require, - dependency_links=dep_links, --- -2.31.1 - diff --git a/0002-Remove-pytest-coverage-execution.patch b/0002-Remove-pytest-coverage-execution.patch deleted file mode 100644 index fbc9cb7..0000000 --- a/0002-Remove-pytest-coverage-execution.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 8bf7c3b1336738ed5938f679fc4d450c3f8f0a62 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Wed, 7 Sep 2022 00:11:56 +0200 -Subject: [PATCH] Remove pytest coverage execution - -Signed-off-by: Ondrej Nosek ---- - 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 - max-line-length = 100 - - [tool:pytest] --addopts = --cov=pyrpkg - testpaths = tests - - [egg_info] --- -2.37.2 - diff --git a/0003-Remove-Environment-Markers-syntax.patch b/0003-Remove-Environment-Markers-syntax.patch deleted file mode 100644 index f596ce9..0000000 --- a/0003-Remove-Environment-Markers-syntax.patch +++ /dev/null @@ -1,24 +0,0 @@ -From ac1c2995d17b106bbfd0ab6c84ab022da8b18e3d Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Mon, 7 Feb 2022 03:01:11 +0100 -Subject: [PATCH] Remove "Environment Markers" syntax - -Signed-off-by: Ondrej Nosek ---- - requirements/test-pypi.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/requirements/test-pypi.txt b/requirements/test-pypi.txt -index 830d8c3..b732dcb 100644 ---- a/requirements/test-pypi.txt -+++ b/requirements/test-pypi.txt -@@ -1,5 +1,5 @@ - coverage --mock == 1.0.1;python_version<"3.3" -+mock == 1.0.1 - flake8 - pytest - pytest-cov --- -2.34.1 - diff --git a/0004-Process-source-URLs-with-fragment-in-pre-push-hook.patch b/0004-Process-source-URLs-with-fragment-in-pre-push-hook.patch deleted file mode 100644 index e252038..0000000 --- a/0004-Process-source-URLs-with-fragment-in-pre-push-hook.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 6d813d40aff91345b171323512b3ae641a168d45 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Mon, 27 Feb 2023 08:36:20 +0100 -Subject: [PATCH] Process source URLs with fragment in pre-push hook -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some download services do not have the actual filename in the URL. -Packagers work around that by adding a fragment to the URL. This is then -ignored by any server, but tricks RPM into getting the correct filename. - -Example: - - Source0: https://crates.io/api/v1/crates/actix/0.13.0/download#/actix-0.13.0.crate - -The filename is obviously `actix-0.13.0.crate`, but rpkg without this -patch will come up with `download`. - -Signed-off-by: Lubomír Sedlář ---- - pyrpkg/__init__.py | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 6a0e9eb..c650851 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -4464,7 +4464,9 @@ class Commands(object): - # find out the format of the source file path. From URL use just the file name. - # We want to keep hierarchy of the files if possible - res = urllib.parse.urlparse(file_location) -- if res.scheme and res.netloc: -+ if res.scheme and res.fragment: -+ source_files.append(os.path.basename(res.fragment)) -+ elif res.scheme and res.netloc: - source_files.append(os.path.basename(res.path)) - else: - source_files.append(file_location) --- -2.39.2 - diff --git a/0005-container-build-update-signing-intent-help-for-OSBS-.patch b/0005-container-build-update-signing-intent-help-for-OSBS-.patch deleted file mode 100644 index 4ead6a3..0000000 --- a/0005-container-build-update-signing-intent-help-for-OSBS-.patch +++ /dev/null @@ -1,30 +0,0 @@ -From e38cfe4b688b600c411a9745922b77ebb9c14122 Mon Sep 17 00:00:00 2001 -From: Ken Dreyer -Date: Tue, 28 Feb 2023 16:17:03 -0500 -Subject: [PATCH] container-build: update --signing-intent help for OSBS 2 - -OSBS 2 logs the reactor configuration in a slightly different way. -Update the --help text for --signing-intent to point users at the new -location. - -Signed-off-by: Ken Dreyer ---- - pyrpkg/cli.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py -index 41c4354..c3672b3 100644 ---- a/pyrpkg/cli.py -+++ b/pyrpkg/cli.py -@@ -1724,7 +1724,7 @@ class cliClient(object): - " server. If unspecified, the server will use the signing intent" - " of the compose_ids you specify, or the server's" - " default_signing_intent. To view the full list of possible" -- " names, see REACTOR_CONFIG in orchestrator.log.") -+ " names, see atomic_reactor.config in osbs-build.log.") - - parser.add_argument( - '--skip-remote-rules-validation', --- -2.39.2 - diff --git a/0006-Do-not-generate-pre-push-hook-script-in-some-cases.patch b/0006-Do-not-generate-pre-push-hook-script-in-some-cases.patch deleted file mode 100644 index 3369959..0000000 --- a/0006-Do-not-generate-pre-push-hook-script-in-some-cases.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 30f189736137a50da4b740acf775ff6675a15a70 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Wed, 8 Mar 2023 16:39:16 +0100 -Subject: [PATCH] Do not generate pre-push hook script in some cases - -Some rpkg users don't use fedpkg or similar tool for cloning -and therefore there is no tool to execute the pre-push-check -function. Do not generate the hook script in this case. - -Fixes: #665 -JIRA: RHELCMP-11392 -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index acdad22..776cb21 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -1795,6 +1795,13 @@ class Commands(object): - for possible user mistakes. - """ - tool_name = os.path.basename(sys.argv[0]) # rhpkg|fedpkg|... -+ if not tool_name: -+ # empty argv - this functionality is not executed from x-pkg tool -+ # and therefore there isn't a program that can run pre-push-check. -+ # Example: the COPR team executes 'clone' by their own script. -+ self.log.debug('Pre-push hook script was NOT added - missing ' -+ 'the packaging tool like fedpkg, rhpkg, ...') -+ return - hook_content = textwrap.dedent(""" - #!/bin/bash - --- -2.39.2 - diff --git a/0007-More-robust-spec-file-presence-checking.patch b/0007-More-robust-spec-file-presence-checking.patch deleted file mode 100644 index a1dde64..0000000 --- a/0007-More-robust-spec-file-presence-checking.patch +++ /dev/null @@ -1,292 +0,0 @@ -From 1108810bdefd0d880517b274acd6a3bd0d4156e0 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Tue, 21 Mar 2023 02:44:04 +0100 -Subject: [PATCH 07/12] More robust spec file presence checking - -Some commands (verrel, sources, prep, import, ...) need to check -whether the dist-git repository is in the correct state. It means -at least the presence of the specfile. -In the beginning, rpkg detects layouts. Layouts determine the file -structure of the repository. For example, most commands can't -be executed for the RetiredLayout (there is no specfile). -When the repository directory exists, some layout can be always -detected. Therefore '--path' argument is now checked for -a valid directory. -The timeout change in the request fixes the new bandit's finding. - -Fixes: #663 -JIRA: RHELCMP-11387 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 9 ++++--- - pyrpkg/cli.py | 8 +++--- - pyrpkg/layout/__init__.py | 4 +-- - pyrpkg/utils.py | 14 ++++++++++ - tests/commands/test_push.py | 54 +++++++++++++++++++------------------ - tests/test_cli.py | 12 ++++++--- - 6 files changed, 63 insertions(+), 38 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 776cb21..028d195 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -923,9 +923,8 @@ class Commands(object): - def load_spec(self): - """This sets the spec attribute""" - -- if self.layout is None: -+ if self.layout is None or isinstance(self.layout, layout.IncompleteLayout): - raise rpkgError('Spec file is not available') -- - if self.is_retired(): - raise rpkgError('This package or module is retired. The action has stopped.') - -@@ -1166,8 +1165,10 @@ class Commands(object): - - @property - def sources_filename(self): -- if self.layout is None: -- return os.path.join(self.path, 'sources') -+ if self.layout is None or isinstance(self.layout, layout.IncompleteLayout): -+ raise rpkgError('Spec file is not available') -+ if self.is_retired(): -+ raise rpkgError('This package or module is retired. The action has stopped.') - return os.path.join( - self.path, self.layout.sources_file_template.replace("{0.repo_name}", self.repo_name)) - -diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py -index c3672b3..1bcf6e4 100644 ---- a/pyrpkg/cli.py -+++ b/pyrpkg/cli.py -@@ -386,7 +386,7 @@ class cliClient(object): - help='Run Koji commands as a different user') - # Let the user define a path to work in rather than cwd - self.parser.add_argument('--path', default=None, -- type=utils.u, -+ type=utils.validate_path, - help='Define the directory to work in ' - '(defaults to cwd)') - # Verbosity -@@ -911,8 +911,9 @@ class cliClient(object): - if 'path' in args: - # Without "path", we can't really test... - url = '%(protocol)s://%(host)s/%(path)s/info/refs?service=git-receive-pack' % args -- resp = requests.head(url, auth=HTTPBasicAuth(args['username'], -- args['password'])) -+ resp = requests.head(url, -+ auth=HTTPBasicAuth(args['username'], args['password']), -+ timeout=15) - if resp.status_code == 401: - return self.oidc_client.report_token_issue() - -@@ -2363,6 +2364,7 @@ class cliClient(object): - - def import_srpm(self): - uploadfiles = self.cmd.import_srpm(self.args.srpm) -+ self.load_cmd() # to reload layouts - because a specfile could appear during import - if uploadfiles: - try: - self.cmd.upload(uploadfiles, replace=True, offline=self.args.offline) -diff --git a/pyrpkg/layout/__init__.py b/pyrpkg/layout/__init__.py -index 762af0d..850ddc2 100644 ---- a/pyrpkg/layout/__init__.py -+++ b/pyrpkg/layout/__init__.py -@@ -12,8 +12,8 @@ - from pyrpkg.errors import LayoutError - - from .base import MetaLayout --from .layouts import (DistGitLayout, IncompleteLayout, # noqa: F401 -- RetiredLayout, SRPMLayout) -+from .layouts import (DistGitLayout, DistGitResultsDirLayout, # noqa: F401 -+ IncompleteLayout, RetiredLayout, SRPMLayout) - - - def build(path, hint=None): -diff --git a/pyrpkg/utils.py b/pyrpkg/utils.py -index ceb4906..3337bdb 100644 ---- a/pyrpkg/utils.py -+++ b/pyrpkg/utils.py -@@ -26,11 +26,25 @@ if six.PY3: - def u(s): - return s - -+ def validate_path(s): -+ abspath = os.path.abspath(s) -+ if os.path.exists(abspath): -+ return s -+ else: -+ raise argparse.ArgumentTypeError('given path \'{0}\' doesn\'t exist'.format(abspath)) -+ - getcwd = os.getcwd - else: - def u(s): - return s.decode('utf-8') - -+ def validate_path(s): -+ abspath = os.path.abspath(s.decode('utf-8')) -+ if os.path.exists(abspath): -+ return s.decode('utf-8') -+ else: -+ raise argparse.ArgumentTypeError('given path \'{0}\' doesn\'t exist'.format(abspath)) -+ - getcwd = os.getcwdu - - -diff --git a/tests/commands/test_push.py b/tests/commands/test_push.py -index ef8057a..79c3a8b 100644 ---- a/tests/commands/test_push.py -+++ b/tests/commands/test_push.py -@@ -1,9 +1,13 @@ - # -*- coding: utf-8 -*- - - import os -+import subprocess - - import git - -+import pyrpkg -+from pyrpkg.sources import SourcesFile -+ - from . import CommandTestCase - - SPECFILE_TEMPLATE = """Name: test -@@ -22,11 +26,6 @@ Test - %%install - rm -f $RPM_BUILD_ROOT%%{_sysconfdir}/""" - --CLONE_CONFIG = ''' -- bz.default-component %(module)s -- sendemail.to %(module)s-owner@fedoraproject.org --''' -- - - class CommandPushTestCase(CommandTestCase): - -@@ -45,28 +44,30 @@ class CommandPushTestCase(CommandTestCase): - - self.make_new_git(self.module) - -- import pyrpkg -- cmd = pyrpkg.Commands(self.path, self.lookaside, -- self.lookasidehash, -- self.lookaside_cgi, self.gitbaseurl, -- self.anongiturl, self.branchre, self.kojiprofile, -- self.build_client, self.user, self.dist, -- self.target, self.quiet) -- cmd.clone_config_rpms = CLONE_CONFIG -- cmd.clone(self.module, anon=True) -- cmd.path = os.path.join(self.path, self.module) -- os.chdir(os.path.join(self.path, self.module)) -+ moduledir = os.path.join(self.gitroot, self.module) -+ subprocess.check_call(['git', 'clone', 'file://%s' % moduledir], -+ cwd=self.path, stdout=subprocess.PIPE, -+ stderr=subprocess.PIPE) -+ -+ self.cloned_dir = os.path.join(self.path, self.module) -+ self.cmd = pyrpkg.Commands(self.cloned_dir, self.lookaside, -+ self.lookasidehash, -+ self.lookaside_cgi, self.gitbaseurl, -+ self.anongiturl, self.branchre, self.kojiprofile, -+ self.build_client, self.user, self.dist, -+ self.target, self.quiet) -+ os.chdir(self.cloned_dir) - - spec_file = 'module.spec' - with open(spec_file, 'w') as f: - f.write(SPECFILE_TEMPLATE % '') - -- cmd.repo.index.add([spec_file]) -- cmd.repo.index.commit("add SPEC") -+ self.cmd.repo.index.add([spec_file]) -+ self.cmd.repo.index.commit("add SPEC") - - # Now, change directory to parent and test the push - os.chdir(self.path) -- cmd.push(no_verify=True) -+ self.cmd.push(no_verify=True) - - - class TestPushWithPatches(CommandTestCase): -@@ -76,18 +77,20 @@ class TestPushWithPatches(CommandTestCase): - - self.make_new_git(self.module) - -- import pyrpkg -- self.cmd = pyrpkg.Commands(self.path, self.lookaside, -+ moduledir = os.path.join(self.gitroot, self.module) -+ subprocess.check_call(['git', 'clone', 'file://%s' % moduledir], -+ cwd=self.path, stdout=subprocess.PIPE, -+ stderr=subprocess.PIPE) -+ -+ self.cloned_dir = os.path.join(self.path, self.module) -+ self.cmd = pyrpkg.Commands(self.cloned_dir, self.lookaside, - self.lookasidehash, - self.lookaside_cgi, self.gitbaseurl, - self.anongiturl, self.branchre, - self.kojiprofile, - self.build_client, self.user, self.dist, - self.target, self.quiet) -- self.cmd.clone_config_rpms = CLONE_CONFIG -- self.cmd.clone(self.module, anon=True) -- self.cmd.path = os.path.join(self.path, self.module) -- os.chdir(os.path.join(self.path, self.module)) -+ os.chdir(self.cloned_dir) - - # Track SPEC and a.patch in git - spec_file = 'module.spec' -@@ -103,7 +106,6 @@ Patch3: d.path - f.write(patch_file) - - # Track c.patch in sources -- from pyrpkg.sources import SourcesFile - sources_file = SourcesFile(self.cmd.sources_filename, - self.cmd.source_entry_type) - file_hash = self.cmd.lookasidecache.hash_file('c.patch') -diff --git a/tests/test_cli.py b/tests/test_cli.py -index df053aa..868ad1f 100644 ---- a/tests/test_cli.py -+++ b/tests/test_cli.py -@@ -1841,9 +1841,11 @@ class TestMockbuild(CliTestCase): - @patch('pyrpkg.Commands._config_dir_basic') - @patch('pyrpkg.Commands._config_dir_other') - @patch('os.path.exists', return_value=False) -+ @patch('pyrpkg.utils.validate_path') - def test_use_mock_config_got_from_koji( -- self, exists, config_dir_other, config_dir_basic): -+ self, validate_path, exists, config_dir_other, config_dir_basic): - mock_layout = layout.DistGitLayout(root_dir=self.cloned_repo_path) -+ validate_path.return_value = self.cloned_repo_path - with patch('pyrpkg.layout.build', return_value=mock_layout): - config_dir_basic.return_value = '/path/to/config-dir' - -@@ -1859,9 +1861,11 @@ class TestMockbuild(CliTestCase): - - @patch('pyrpkg.Commands._config_dir_basic') - @patch('os.path.exists', return_value=False) -+ @patch('pyrpkg.utils.validate_path') - def test_fail_to_store_mock_config_in_created_config_dir( -- self, exists, config_dir_basic): -+ self, validate_path, exists, config_dir_basic): - config_dir_basic.side_effect = rpkgError -+ validate_path.return_value = self.cloned_repo_path - - cli_cmd = ['rpkg', '--path', self.cloned_repo_path, - '--release', 'rhel-7', 'mockbuild'] -@@ -1870,10 +1874,12 @@ class TestMockbuild(CliTestCase): - @patch('pyrpkg.Commands._config_dir_basic') - @patch('pyrpkg.Commands._config_dir_other') - @patch('os.path.exists', return_value=False) -+ @patch('pyrpkg.utils.validate_path') - def test_fail_to_populate_mock_config( -- self, exists, config_dir_other, config_dir_basic): -+ self, validate_path, exists, config_dir_other, config_dir_basic): - config_dir_basic.return_value = '/path/to/config-dir' - config_dir_other.side_effect = rpkgError -+ validate_path.return_value = self.cloned_repo_path - - cli_cmd = ['rpkg', '--path', self.cloned_repo_path, - '--release', 'rhel-7', 'mockbuild'] --- -2.39.2 - diff --git a/0008-Update-to-spec-file-presence-checking.patch b/0008-Update-to-spec-file-presence-checking.patch deleted file mode 100644 index 723415f..0000000 --- a/0008-Update-to-spec-file-presence-checking.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 791fd03b4de1324508583ab53c89cc67459db355 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Tue, 21 Mar 2023 13:44:38 +0100 -Subject: [PATCH 08/12] Update to spec file presence checking - -Using a different approach to checking the layout. Older way prevented -`retire` function working correctly. Layouts are detected at the -beginning of the run and the result stays the same, unlike the direct -checking files like dead.package in function `is_retired`. - -Fixes: #663 -JIRA: RHELCMP-11387 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 028d195..e8f4886 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -925,7 +925,7 @@ class Commands(object): - - if self.layout is None or isinstance(self.layout, layout.IncompleteLayout): - raise rpkgError('Spec file is not available') -- if self.is_retired(): -+ if isinstance(self.layout, layout.RetiredLayout): - raise rpkgError('This package or module is retired. The action has stopped.') - - # Get a list of ".spec" files in the path we're looking at -@@ -1167,7 +1167,7 @@ class Commands(object): - def sources_filename(self): - if self.layout is None or isinstance(self.layout, layout.IncompleteLayout): - raise rpkgError('Spec file is not available') -- if self.is_retired(): -+ if isinstance(self.layout, layout.RetiredLayout): - raise rpkgError('This package or module is retired. The action has stopped.') - return os.path.join( - self.path, self.layout.sources_file_template.replace("{0.repo_name}", self.repo_name)) --- -2.39.2 - diff --git a/0009-Add-more-information-about-pre-push-hook.patch b/0009-Add-more-information-about-pre-push-hook.patch deleted file mode 100644 index 60bad27..0000000 --- a/0009-Add-more-information-about-pre-push-hook.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0393dc39bf450cf20df9db63bac135c078f64a14 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Tue, 28 Mar 2023 08:53:30 +0200 -Subject: [PATCH 09/12] Add more information about pre-push hook -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It's not obvious to many users where the check is coming from, and they -have the power to edit the script or delete it completely. Let's try to -improve that a bit. - -Signed-off-by: Lubomír Sedlář ---- - pyrpkg/__init__.py | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index e8f4886..7a3c9c6 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -1806,6 +1806,10 @@ class Commands(object): - hook_content = textwrap.dedent(""" - #!/bin/bash - -+ # This file was generated by {0} when cloning the repository. -+ # You can edit it to your liking or delete completely. It will not -+ # be recreated. -+ - _remote="$1" - _url="$2" - -@@ -4429,7 +4433,7 @@ class Commands(object): - return self._repo_name, version, release - - def pre_push_check(self, ref): -- show_hint = ('Hint: this check (pre-push hook script) can be bypassed by adding ' -+ show_hint = ('Hint: this check (.git/hooks/pre-push script) can be bypassed by adding ' - 'the argument \'--no-verify\' argument to the push command.') - try: - commit = self.repo.commit(ref) --- -2.39.2 - diff --git a/0010-pre-push-check-have-to-use-spectool-with-define.patch b/0010-pre-push-check-have-to-use-spectool-with-define.patch deleted file mode 100644 index bfe7094..0000000 --- a/0010-pre-push-check-have-to-use-spectool-with-define.patch +++ /dev/null @@ -1,146 +0,0 @@ -From d5be51eec99108c3809551b615064d0c5cbe628a Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Tue, 28 Mar 2023 19:58:06 +0200 -Subject: [PATCH 10/12] `pre-push-check` have to use spectool with --define - -To get all defined source files and patches from the specfile, -the 'spectool' utility needs '--define' argument(s) to set specific -paths for the repository. - -JIRA: RHELCMP-11466 -Fixes: #672 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 57 +++++++++++++++------------ - tests/commands/test_pre_push_check.py | 3 +- - 2 files changed, 33 insertions(+), 27 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 7a3c9c6..584c141 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -4442,30 +4442,41 @@ class Commands(object): - sys.exit(1) - - try: -+ clone_dir = tempfile.mkdtemp(prefix="pre_push_hook_") -+ for cmd in [ -+ ('git', 'clone', self.path, clone_dir), -+ ('git', 'checkout', ref), -+ ]: -+ ret, _, _ = self._run_command(cmd, cwd=clone_dir, -+ # suppress unwanted printing of command line messages -+ return_stdout=True, return_stderr=True) -+ if ret != 0: -+ self.log.error('Command \'{0}\' failed. Push operation ' -+ 'was cancelled.'.format(' '.join(cmd))) -+ self.log.warning(show_hint) -+ sys.exit(2) -+ -+ # get all source files from the specfile (including patches) - # Assume, that specfile names are same in the active branch - # and in the pushed branch (git checkout f37 && git push origin rawhide) - # in this case 'f37' is active branch and 'rawhide' is pushed branch. - specfile_path_absolute = os.path.join(self.layout.specdir, self.spec) - # convert to relative path - specfile_path = os.path.relpath(specfile_path_absolute, start=self.path) -- spec_content = self.repo.git.cat_file("-p", "{0}:{1}".format(ref, specfile_path)) -- except Exception: -- # It might be the case of an empty commit -- self.log.warning('Specfile doesn\'t exist. Push operation continues.') -- return -- -- # load specfile content from pushed branch and save it into a temporary file -- with tempfile.NamedTemporaryFile(mode="w+") as temporary_spec: -- temporary_spec.write(spec_content) -- temporary_spec.flush() -- # get all source files from the specfile (including patches) -- cmd = ('spectool', '-l', temporary_spec.name) -- ret, stdout, _ = self._run_command(cmd, return_text=True, return_stdout=True) -+ cmd = ['spectool', '-l', os.path.join(clone_dir, specfile_path)] -+ # extract just '--define' arguments from rpmdefines -+ for opt, val in zip(self.rpmdefines[0::2], self.rpmdefines[1::2]): -+ if opt == '--define': -+ cmd.extend((opt, val)) -+ ret, stdout, _ = self._run_command(cmd, cwd=clone_dir, -+ return_text=True, return_stdout=True) - if ret != 0: - self.log.error('Command \'{0}\' failed. Push operation ' - 'was cancelled.'.format(' '.join(cmd))) - self.log.warning(show_hint) -- sys.exit(2) -+ sys.exit(3) -+ finally: -+ self._cleanup_tmp_dir(clone_dir) - - source_files = [] - # extract source files from the spectool's output -@@ -4490,22 +4501,16 @@ class Commands(object): - sources_file_path_absolute = self.sources_filename - # convert to relative path - sources_file_path = os.path.relpath(sources_file_path_absolute, start=self.path) -- sources_file_content = self.repo.git.cat_file( -- '-p', '{0}:{1}'.format(ref, sources_file_path)) -+ -+ # parse 'sources' files content -+ sourcesf = SourcesFile(sources_file_path, self.source_entry_type) -+ sourcesf_entries = set(item.file for item in sourcesf.entries) - except Exception: - self.log.warning('\'sources\' file doesn\'t exist. Push operation continues.') - # NOTE: check doesn't fail when 'sources' file doesn't exist. Just skips the rest. - # it might be the case of the push without 'sources' = retiring the repository - return - -- # load 'sources' file content from pushed branch and save it into a temporary file -- with tempfile.NamedTemporaryFile(mode="w+") as temporary_sources_file: -- temporary_sources_file.write(sources_file_content) -- temporary_sources_file.flush() -- # parse 'sources' files content -- sourcesf = SourcesFile(temporary_sources_file.name, self.source_entry_type) -- sourcesf_entries = set(item.file for item in sourcesf.entries) -- - # list of all files (their relative paths) in the commit - repo_entries = set(item.path for item in commit.tree.traverse() if item.type != "tree") - -@@ -4518,7 +4523,7 @@ class Commands(object): - 'nor tracked in git. ' - 'Push operation was cancelled'.format(source_file)) - self.log.warning(show_hint) -- sys.exit(3) -+ sys.exit(4) - - # verify all file entries in 'sources' were uploaded to the lookaside cache - for entry in sourcesf.entries: -@@ -4532,6 +4537,6 @@ class Commands(object): - self.log.error('Source file (or tarball) \'{}\' wasn\'t uploaded to the lookaside ' - 'cache. Push operation was cancelled.'.format(filename)) - self.log.warning(show_hint) -- sys.exit(4) -+ sys.exit(5) - - return 0 # The push operation continues -diff --git a/tests/commands/test_pre_push_check.py b/tests/commands/test_pre_push_check.py -index 5e314b9..ee151c1 100644 ---- a/tests/commands/test_pre_push_check.py -+++ b/tests/commands/test_pre_push_check.py -@@ -37,6 +37,7 @@ class TestPrePushCheck(CommandTestCase): - def setUp(self): - super(TestPrePushCheck, self).setUp() - -+ self.dist = "rhel-8" - self.make_new_git(self.module) - - moduledir = os.path.join(self.gitroot, self.module) -@@ -87,7 +88,7 @@ Patch3: d.patch - with self.assertRaises(SystemExit) as exc: - self.cmd.pre_push_check("HEAD") - -- self.assertEqual(exc.exception.code, 3) -+ self.assertEqual(exc.exception.code, 4) - log_error.assert_called_once_with("Source file 'b.patch' was neither listed in the " - "'sources' file nor tracked in git. Push operation " - "was cancelled") --- -2.39.2 - diff --git a/0011-A-HEAD-query-into-a-lookaside-cache.patch b/0011-A-HEAD-query-into-a-lookaside-cache.patch deleted file mode 100644 index a3281b2..0000000 --- a/0011-A-HEAD-query-into-a-lookaside-cache.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 77cd608e596af94811c22a16ff58a265d9c7381e Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Fri, 31 Mar 2023 14:09:09 +0200 -Subject: [PATCH 11/12] A HEAD query into a lookaside cache - -A query about whether some file is present in the lookaside cache was -under authentication and it prevented using command `pre-push-check` -for those without the 'packager' permission. -Added another method (based on HTTP HEAD), that allows the same check -without authentication. - -JIRA: RHELCMP-11485 -Fixes: https://pagure.io/fedpkg/issue/513 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 2 +- - pyrpkg/lookaside.py | 36 ++++++++++++++++++++++++++++++++++-- - 2 files changed, 35 insertions(+), 3 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 584c141..15203b7 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -4529,7 +4529,7 @@ class Commands(object): - for entry in sourcesf.entries: - filename = entry.file - hash = entry.hash -- file_exists_in_lookaside = self.lookasidecache.remote_file_exists( -+ file_exists_in_lookaside = self.lookasidecache.remote_file_exists_head( - self.ns_repo_name if self.lookaside_namespaced else self.repo_name, - filename, - hash) -diff --git a/pyrpkg/lookaside.py b/pyrpkg/lookaside.py -index 90f0f1e..ecbf12b 100644 ---- a/pyrpkg/lookaside.py -+++ b/pyrpkg/lookaside.py -@@ -22,7 +22,7 @@ import sys - - import pycurl - import six --from six.moves import http_client -+from six.moves import http_client, urllib - - from .errors import (AlreadyUploadedError, DownloadError, InvalidHashType, - UploadError) -@@ -157,7 +157,7 @@ class CGILookasideCache(object): - return - - self.log.info("Downloading %s", filename) -- urled_file = filename.replace(' ', '%20') -+ urled_file = urllib.parse.quote(filename) - url = self.get_download_url(name, urled_file, hash, hashtype, **kwargs) - if isinstance(url, six.text_type): - url = url.encode('utf-8') -@@ -200,6 +200,38 @@ class CGILookasideCache(object): - if not self.file_is_valid(outfile, hash, hashtype=hashtype): - raise DownloadError('%s failed checksum' % filename) - -+ def remote_file_exists_head(self, name, filename, hash): -+ """Verify whether a file exists on the lookaside cache. -+ Uses a HTTP HEAD request and doesn't require authentication. -+ -+ :param str name: The name of the module. (usually the name of the -+ SRPM). This can include the namespace as well (depending on what -+ the server side expects). -+ :param str filename: The name of the file to check for. -+ :param str hash: The known good hash of the file. -+ """ -+ -+ urled_file = urllib.parse.quote(filename) -+ url = self.get_download_url(name, urled_file, hash, self.hashtype) -+ -+ c = pycurl.Curl() -+ c.setopt(pycurl.URL, url) -+ c.setopt(pycurl.NOBODY, True) -+ c.setopt(pycurl.FOLLOWLOCATION, 1) -+ -+ try: -+ c.perform() -+ status = c.getinfo(pycurl.RESPONSE_CODE) -+ except Exception as e: -+ raise DownloadError(e) -+ finally: -+ c.close() -+ -+ if status != 200: -+ self.log.debug('Unavailable file \'%s\' at %s' % (filename, url)) -+ return False -+ return True -+ - def remote_file_exists(self, name, filename, hash): - """Verify whether a file exists on the lookaside cache - --- -2.39.2 - diff --git a/0012-pre-push-hook-script-contains-a-user-s-config.patch b/0012-pre-push-hook-script-contains-a-user-s-config.patch deleted file mode 100644 index ff2676d..0000000 --- a/0012-pre-push-hook-script-contains-a-user-s-config.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 1f03eb9102f765c36cc201a499d815732e67dd39 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Mon, 27 Mar 2023 23:34:12 +0200 -Subject: [PATCH 12/12] pre-push hook script contains a user's config - -When the `clone` command is called with an argument --C|--config -this argument is placed to the generated pre-push script. - -Fixes: #667 -JIRA: RHELCMP-11394 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 23 ++++++++++++------- - pyrpkg/cli.py | 6 +++-- - tests/commands/test_clone.py | 44 ++++++++++++++++++++++++++++++++++++ - 3 files changed, 63 insertions(+), 10 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 15203b7..9996402 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -1566,7 +1566,8 @@ class Commands(object): - return - - def clone(self, repo, path=None, branch=None, bare_dir=None, -- anon=False, target=None, depth=None, extra_args=None): -+ anon=False, target=None, depth=None, extra_args=None, -+ config_path=None): - """Clone a repo, optionally check out a specific branch. - - :param str repo: the name of the repository to clone. -@@ -1583,6 +1584,7 @@ class Commands(object): - to the specified number of commits. - :param list extra_args: additional arguments that are passed to - the clone command. -+ :param str config_path: path to the global config file - """ - - if not path: -@@ -1638,7 +1640,7 @@ class Commands(object): - - if not bare_dir: - self._add_git_excludes(os.path.join(path, git_dir)) -- self._add_git_pre_push_hook(os.path.join(path, git_dir)) -+ self._add_git_pre_push_hook(os.path.join(path, git_dir), config_path) - - return - -@@ -1654,7 +1656,7 @@ class Commands(object): - return repo - - def clone_with_dirs(self, repo, anon=False, target=None, depth=None, -- extra_args=None): -+ extra_args=None, config_path=None): - """Clone a repo old style with subdirs for each branch. - - :param str repo: name of the repository to clone. -@@ -1666,6 +1668,7 @@ class Commands(object): - to the specified number of commits. - :param list extra_args: additional arguments that are passed to - the clone command. -+ :param str config_path: path to the global config file - """ - - self._push_url = None -@@ -1724,7 +1727,7 @@ class Commands(object): - - # Add excludes - self._add_git_excludes(branch_path) -- self._add_git_pre_push_hook(branch_path) -+ self._add_git_pre_push_hook(branch_path, config_path) - except (git.GitCommandError, OSError) as e: - raise rpkgError('Could not locally clone %s from %s: %s' - % (branch, repo_path, e)) -@@ -1787,7 +1790,7 @@ class Commands(object): - git_excludes.write() - self.log.debug('Git-excludes patterns were added into %s' % git_excludes_path) - -- def _add_git_pre_push_hook(self, conf_dir): -+ def _add_git_pre_push_hook(self, repo_dir, config_path=None): - """ - Create pre-push hook script and write it in the location: - /.git/hooks/pre-push -@@ -1803,6 +1806,10 @@ class Commands(object): - self.log.debug('Pre-push hook script was NOT added - missing ' - 'the packaging tool like fedpkg, rhpkg, ...') - return -+ -+ # in case the clone command run with 'x-pkg -C clone ' -+ config_arg = ' -C "{0}"'.format(os.path.realpath(config_path)) if config_path else "" -+ - hook_content = textwrap.dedent(""" - #!/bin/bash - -@@ -1818,7 +1825,7 @@ class Commands(object): - do - command -v {0} >/dev/null 2>&1 || {{ echo >&2 "Warning: '{0}' is missing, \\ - pre-push check is omitted. See .git/hooks/pre-push"; exit 0; }} -- {0} pre-push-check "$local_sha" -+ {0}{1} pre-push-check "$local_sha" - ret_code=$? - if [ $ret_code -ne 0 ] && [ $exit_code -eq 0 ]; then - exit_code=$ret_code -@@ -1826,8 +1833,8 @@ class Commands(object): - done - - exit $exit_code -- """).strip().format(tool_name) -- git_pre_push_hook_path = os.path.join(conf_dir, '.git/hooks/pre-push') -+ """).strip().format(tool_name, config_arg) -+ git_pre_push_hook_path = os.path.join(repo_dir, '.git/hooks/pre-push') - if not os.path.exists(os.path.dirname(git_pre_push_hook_path)): - # prepare ".git/hooks" directory if it is missing - os.makedirs(os.path.dirname(git_pre_push_hook_path)) -diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py -index 1bcf6e4..3d8ce33 100644 ---- a/pyrpkg/cli.py -+++ b/pyrpkg/cli.py -@@ -2182,14 +2182,16 @@ class cliClient(object): - anon=self.args.anonymous, - target=self.args.clone_target, - depth=self.args.depth, -- extra_args=self.extra_args) -+ extra_args=self.extra_args, -+ config_path=self.args.config) - else: - self.cmd.clone(self.args.repo[0], - branch=self.args.branch, - anon=self.args.anonymous, - target=self.args.clone_target, - depth=self.args.depth, -- extra_args=self.extra_args) -+ extra_args=self.extra_args, -+ config_path=self.args.config) - - def commit(self): - if self.args.with_changelog and not self.args.message: -diff --git a/tests/commands/test_clone.py b/tests/commands/test_clone.py -index f741864..6ef1300 100644 ---- a/tests/commands/test_clone.py -+++ b/tests/commands/test_clone.py -@@ -95,6 +95,50 @@ class CommandCloneTestCase(CommandTestCase): - - shutil.rmtree(altpath) - -+ def test_clone_anonymous_pre_push_hook(self): -+ self.make_new_git(self.module) -+ -+ altpath = tempfile.mkdtemp(prefix='rpkg-tests.') -+ -+ cmd = pyrpkg.Commands(self.path, self.lookaside, self.lookasidehash, -+ self.lookaside_cgi, self.gitbaseurl, -+ self.anongiturl, self.branchre, self.kojiprofile, -+ self.build_client, self.user, self.dist, -+ self.target, self.quiet) -+ cmd.clone(self.module, anon=True, config_path=None) -+ -+ moduledir = os.path.join(self.path, self.module) -+ self.assertTrue(os.path.isfile(os.path.join(moduledir, '.git/hooks/pre-push'))) -+ -+ with open(os.path.join(moduledir, '.git/hooks/pre-push')) as git_hook_script: -+ content = git_hook_script.read() -+ pattern = '__main__.py pre-push-check "$local_sha"' -+ self.assertIn(pattern, content) -+ -+ shutil.rmtree(altpath) -+ -+ def test_clone_anonymous_pre_push_hook_config(self): -+ self.make_new_git(self.module) -+ -+ altpath = tempfile.mkdtemp(prefix='rpkg-tests.') -+ -+ cmd = pyrpkg.Commands(self.path, self.lookaside, self.lookasidehash, -+ self.lookaside_cgi, self.gitbaseurl, -+ self.anongiturl, self.branchre, self.kojiprofile, -+ self.build_client, self.user, self.dist, -+ self.target, self.quiet) -+ cmd.clone(self.module, anon=True, config_path="/home/conf/rhpkg.conf") -+ -+ moduledir = os.path.join(self.path, self.module) -+ self.assertTrue(os.path.isfile(os.path.join(moduledir, '.git/hooks/pre-push'))) -+ -+ with open(os.path.join(moduledir, '.git/hooks/pre-push')) as git_hook_script: -+ content = git_hook_script.read() -+ pattern = '__main__.py -C "/home/conf/rhpkg.conf" pre-push-check "$local_sha"' -+ self.assertIn(pattern, content) -+ -+ shutil.rmtree(altpath) -+ - def test_clone_anonymous_with_branch(self): - self.make_new_git(self.module, - branches=['rpkg-tests-1', 'rpkg-tests-2']) --- -2.39.2 - diff --git a/0013-Fix-unittests-for-clone-and-pre-push-hook-script.patch b/0013-Fix-unittests-for-clone-and-pre-push-hook-script.patch deleted file mode 100644 index 991fb22..0000000 --- a/0013-Fix-unittests-for-clone-and-pre-push-hook-script.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 1d82b7eaf98e695689a7dc10bd308030e3c13eea Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Sat, 1 Apr 2023 01:34:34 +0200 -Subject: [PATCH] Fix unittests for `clone` and pre-push hook script - -Signed-off-by: Ondrej Nosek ---- - tests/commands/test_clone.py | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/tests/commands/test_clone.py b/tests/commands/test_clone.py -index 6ef1300..85fdfd1 100644 ---- a/tests/commands/test_clone.py -+++ b/tests/commands/test_clone.py -@@ -1,5 +1,6 @@ - import os - import shutil -+import sys - import tempfile - - import git -@@ -110,9 +111,10 @@ class CommandCloneTestCase(CommandTestCase): - moduledir = os.path.join(self.path, self.module) - self.assertTrue(os.path.isfile(os.path.join(moduledir, '.git/hooks/pre-push'))) - -+ clonned_by = os.path.basename(sys.argv[0]) - with open(os.path.join(moduledir, '.git/hooks/pre-push')) as git_hook_script: - content = git_hook_script.read() -- pattern = '__main__.py pre-push-check "$local_sha"' -+ pattern = '{0} pre-push-check "$local_sha"'.format(clonned_by) - self.assertIn(pattern, content) - - shutil.rmtree(altpath) -@@ -132,9 +134,11 @@ class CommandCloneTestCase(CommandTestCase): - moduledir = os.path.join(self.path, self.module) - self.assertTrue(os.path.isfile(os.path.join(moduledir, '.git/hooks/pre-push'))) - -+ clonned_by = os.path.basename(sys.argv[0]) - with open(os.path.join(moduledir, '.git/hooks/pre-push')) as git_hook_script: - content = git_hook_script.read() -- pattern = '__main__.py -C "/home/conf/rhpkg.conf" pre-push-check "$local_sha"' -+ pattern = '{0} -C "/home/conf/rhpkg.conf" pre-push-check ' \ -+ '"$local_sha"'.format(clonned_by) - self.assertIn(pattern, content) - - shutil.rmtree(altpath) --- -2.39.2 - diff --git a/0014-import_srpm-allow-pre-generated-srpms.patch b/0014-import_srpm-allow-pre-generated-srpms.patch deleted file mode 100644 index f596265..0000000 --- a/0014-import_srpm-allow-pre-generated-srpms.patch +++ /dev/null @@ -1,105 +0,0 @@ -From d87cb37fa2fea2ed535b9085a1f4c607083e1c2e Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Tue, 4 Apr 2023 01:40:23 +0200 -Subject: [PATCH 1/6] import_srpm: allow pre-generated srpms - -When active, do not care specfile in the srpm is processed by -rpmautospec. Can be activated only directly via pyrpkg 'Commands' -object. - -Relates: https://github.com/fedora-copr/copr/issues/2317 -Fixes: #655 -RHELCMP-11085 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 6 +++++- - tests/test_cli.py | 41 +++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 46 insertions(+), 1 deletion(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 9996402..ecb99c9 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -110,7 +110,7 @@ class Commands(object): - build_client, user=None, - dist=None, target=None, quiet=False, - distgit_namespaced=False, realms=None, lookaside_namespaced=False, -- git_excludes=None, results_dir='root'): -+ git_excludes=None, results_dir='root', allow_pre_generated_srpm=False): - """Init the object and some configuration details.""" - - # Path to operate on, most often pwd -@@ -239,6 +239,9 @@ class Commands(object): - # Layout setup - self.layout = layout.build(self.path, - 'resultsdir' if self.results_dir == 'subdir' else None) -+ # A Configuration value used in 'import_srpm' command (comes from the Copr team) -+ # If pre-generated srpms are allowed, don't care specfile is processed by rpmautospec -+ self.allow_pre_generated_srpm = allow_pre_generated_srpm - - # Define properties here - # Properties allow us to "lazy load" various attributes, which also means -@@ -1471,6 +1474,7 @@ class Commands(object): - # the dist-git repo without any specfiles - right after initialization) we are - # not able determine which the main specfile is. - if file.endswith('.spec') and not file.startswith('.') \ -+ and not self.allow_pre_generated_srpm \ - and spec_file_processed_by_rpmautospec(file, target_dir): - raise rpkgError('SRPM was processed by rpmautospec ' - '(specfile "{}" was analyzed)'.format(file)) -diff --git a/tests/test_cli.py b/tests/test_cli.py -index 868ad1f..02620ef 100644 ---- a/tests/test_cli.py -+++ b/tests/test_cli.py -@@ -1784,6 +1784,47 @@ class TestImportSrpm(LookasideCacheMock, CliTestCase): - self.assertFilesExist(['package.rpmlintrc'], search_dir=self.chaos_repo) - self.assertFilesNotExist(['the_file_is_not_in_reserved.yaml'], search_dir=self.chaos_repo) - -+ @patch('pyrpkg.spec_file_processed_by_rpmautospec') -+ def test_import_srpm_not_processed_by_rpmautospec(self, rpmautospec_processed): -+ cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg', -+ 'import', '--skip-diffs', self.srpm_file] -+ -+ rpmautospec_processed.return_value = False -+ with patch('sys.argv', new=cli_cmd): -+ cli = self.new_cli() -+ with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload): -+ cli.import_srpm() # no exception should be raised -+ rpmautospec_processed.assert_called_once() -+ -+ @patch('pyrpkg.spec_file_processed_by_rpmautospec') -+ def test_import_srpm_processed_by_rpmautospec(self, rpmautospec_processed): -+ cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg', -+ 'import', '--skip-diffs', self.srpm_file] -+ -+ rpmautospec_processed.return_value = True -+ with patch('sys.argv', new=cli_cmd): -+ cli = self.new_cli() -+ with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload): -+ six.assertRaisesRegex( -+ self, -+ rpkgError, -+ 'SRPM was processed by rpmautospec', -+ cli.import_srpm) -+ rpmautospec_processed.assert_called_once() -+ -+ @patch('pyrpkg.spec_file_processed_by_rpmautospec') -+ def test_import_srpm_processed_by_rpmautospec_allowed(self, rpmautospec_processed): -+ cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg', -+ 'import', '--skip-diffs', self.srpm_file] -+ -+ rpmautospec_processed.return_value = True -+ with patch('sys.argv', new=cli_cmd): -+ cli = self.new_cli() -+ cli.cmd.allow_pre_generated_srpm = True -+ with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload): -+ cli.import_srpm() # no exception should be raised -+ rpmautospec_processed.assert_not_called() -+ - - class TestMockbuild(CliTestCase): - """Test mockbuild command""" --- -2.39.2 - diff --git a/0015-Ignore-missing-spec-file-in-pre-push-hook.patch b/0015-Ignore-missing-spec-file-in-pre-push-hook.patch deleted file mode 100644 index b32833c..0000000 --- a/0015-Ignore-missing-spec-file-in-pre-push-hook.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 3ebfeae20c74de0ca4b26b22135e1996265ea4ce Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Wed, 5 Apr 2023 11:41:23 +0200 -Subject: [PATCH 2/6] Ignore missing spec file in pre-push hook -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -For modules or containers there will be no spec file, and there is -nothing to block the push on. - -Signed-off-by: Lubomír Sedlář ---- - pyrpkg/__init__.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index ecb99c9..d3a7a1c 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -4471,7 +4471,12 @@ class Commands(object): - # Assume, that specfile names are same in the active branch - # and in the pushed branch (git checkout f37 && git push origin rawhide) - # in this case 'f37' is active branch and 'rawhide' is pushed branch. -- specfile_path_absolute = os.path.join(self.layout.specdir, self.spec) -+ try: -+ specfile_path_absolute = os.path.join(self.layout.specdir, self.spec) -+ except rpkgError: -+ # No specfile found, nothing to check -+ return -+ - # convert to relative path - specfile_path = os.path.relpath(specfile_path_absolute, start=self.path) - cmd = ['spectool', '-l', os.path.join(clone_dir, specfile_path)] --- -2.39.2 - diff --git a/0016-Check-remote-file-with-correct-hash.patch b/0016-Check-remote-file-with-correct-hash.patch deleted file mode 100644 index 9bf9eac..0000000 --- a/0016-Check-remote-file-with-correct-hash.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 4bd4ab1823a7d4bc218b8057b7f00808fabf7648 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= -Date: Wed, 5 Apr 2023 09:34:33 +0200 -Subject: [PATCH 3/6] Check remote file with correct hash -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The configured hashtype doesn't have to actually be used. There can be -old repos that still use md5. - -JIRA: RHELCMP-11508 -Signed-off-by: Lubomír Sedlář ---- - pyrpkg/__init__.py | 3 ++- - pyrpkg/lookaside.py | 5 +++-- - 2 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index d3a7a1c..0b9a869 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -4548,7 +4548,8 @@ class Commands(object): - file_exists_in_lookaside = self.lookasidecache.remote_file_exists_head( - self.ns_repo_name if self.lookaside_namespaced else self.repo_name, - filename, -- hash) -+ hash, -+ hashtype=entry.hashtype) - if not file_exists_in_lookaside: - self.log.error('Source file (or tarball) \'{}\' wasn\'t uploaded to the lookaside ' - 'cache. Push operation was cancelled.'.format(filename)) -diff --git a/pyrpkg/lookaside.py b/pyrpkg/lookaside.py -index ecbf12b..3efcd88 100644 ---- a/pyrpkg/lookaside.py -+++ b/pyrpkg/lookaside.py -@@ -200,7 +200,7 @@ class CGILookasideCache(object): - if not self.file_is_valid(outfile, hash, hashtype=hashtype): - raise DownloadError('%s failed checksum' % filename) - -- def remote_file_exists_head(self, name, filename, hash): -+ def remote_file_exists_head(self, name, filename, hash, hashtype): - """Verify whether a file exists on the lookaside cache. - Uses a HTTP HEAD request and doesn't require authentication. - -@@ -209,10 +209,11 @@ class CGILookasideCache(object): - the server side expects). - :param str filename: The name of the file to check for. - :param str hash: The known good hash of the file. -+ :param str hashtype: The type of hash - """ - - urled_file = urllib.parse.quote(filename) -- url = self.get_download_url(name, urled_file, hash, self.hashtype) -+ url = self.get_download_url(name, urled_file, hash, hashtype or self.hashtype) - - c = pycurl.Curl() - c.setopt(pycurl.URL, url) --- -2.39.2 - diff --git a/0017-Allow-empty-commits-when-uses_rpmautospec.patch b/0017-Allow-empty-commits-when-uses_rpmautospec.patch deleted file mode 100644 index 448cbc9..0000000 --- a/0017-Allow-empty-commits-when-uses_rpmautospec.patch +++ /dev/null @@ -1,35 +0,0 @@ -From d2c63c32306732695b7fe5f9dda3deecb7899f4f Mon Sep 17 00:00:00 2001 -From: Jiri Kyjovsky -Date: Sat, 15 Apr 2023 13:46:21 +0200 -Subject: [PATCH 4/6] Allow empty commits when `uses_rpmautospec` - -To avoid situations where the command `commit` by default does -commit when no change in repo is present. - -Fixes: #677 -JIRA: RHELCMP-11489 -Merges: https://pagure.io/rpkg/pull-request/688 - -Signed-off-by: Jiri Kyjovsky ---- - pyrpkg/__init__.py | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 0b9a869..187796e 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -1867,7 +1867,9 @@ class Commands(object): - - # construct the git command - # We do this via subprocess because the git module is terrible. -- cmd = ['git', 'commit', '--allow-empty'] -+ cmd = ['git', 'commit'] -+ if not self.is_retired() and self.uses_rpmautospec: -+ cmd.append('--allow-empty') - if signoff: - cmd.append('-s') - if self.quiet: --- -2.39.2 - diff --git a/0018-Config-file-option-to-skip-the-hook-script-creation.patch b/0018-Config-file-option-to-skip-the-hook-script-creation.patch deleted file mode 100644 index fa9aa01..0000000 --- a/0018-Config-file-option-to-skip-the-hook-script-creation.patch +++ /dev/null @@ -1,126 +0,0 @@ -From b48eb502d330ec7a543805d7f185ea270df75b90 Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Wed, 12 Apr 2023 00:42:04 +0200 -Subject: [PATCH 5/6] Config file option to skip the hook script creation - -A new option named "skip_hooks" can be added to the config file -(into the main section). It accepts boolean values and when -the option is present and set, it prevents creating the pre-push -hook script during cloning a dist-git repository. - -Fixes: https://pagure.io/fedpkg/issue/515 -JIRA: RHELCMP-11491 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 14 ++++++++++---- - pyrpkg/cli.py | 13 +++++++++++-- - 2 files changed, 21 insertions(+), 6 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 187796e..7fddff7 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -1571,7 +1571,7 @@ class Commands(object): - - def clone(self, repo, path=None, branch=None, bare_dir=None, - anon=False, target=None, depth=None, extra_args=None, -- config_path=None): -+ config_path=None, skip_hooks=None): - """Clone a repo, optionally check out a specific branch. - - :param str repo: the name of the repository to clone. -@@ -1589,6 +1589,7 @@ class Commands(object): - :param list extra_args: additional arguments that are passed to - the clone command. - :param str config_path: path to the global config file -+ :param bool skip_hooks: skip creation pre-push hook script - """ - - if not path: -@@ -1644,7 +1645,8 @@ class Commands(object): - - if not bare_dir: - self._add_git_excludes(os.path.join(path, git_dir)) -- self._add_git_pre_push_hook(os.path.join(path, git_dir), config_path) -+ if not skip_hooks: -+ self._add_git_pre_push_hook(os.path.join(path, git_dir), config_path) - - return - -@@ -1660,7 +1662,7 @@ class Commands(object): - return repo - - def clone_with_dirs(self, repo, anon=False, target=None, depth=None, -- extra_args=None, config_path=None): -+ extra_args=None, config_path=None, skip_hooks=None): - """Clone a repo old style with subdirs for each branch. - - :param str repo: name of the repository to clone. -@@ -1673,6 +1675,7 @@ class Commands(object): - :param list extra_args: additional arguments that are passed to - the clone command. - :param str config_path: path to the global config file -+ :param bool skip_hooks: skip creation pre-push hook script - """ - - self._push_url = None -@@ -1731,7 +1734,8 @@ class Commands(object): - - # Add excludes - self._add_git_excludes(branch_path) -- self._add_git_pre_push_hook(branch_path, config_path) -+ if not skip_hooks: -+ self._add_git_pre_push_hook(branch_path, config_path) - except (git.GitCommandError, OSError) as e: - raise rpkgError('Could not locally clone %s from %s: %s' - % (branch, repo_path, e)) -@@ -1820,6 +1824,8 @@ class Commands(object): - # This file was generated by {0} when cloning the repository. - # You can edit it to your liking or delete completely. It will not - # be recreated. -+ # Creating this file can be also prevented by adding an option -+ # "skip_hooks = True" into the {0}'s config file; [{0}] section. - - _remote="$1" - _url="$2" -diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py -index 3d8ce33..a1f3f44 100644 ---- a/pyrpkg/cli.py -+++ b/pyrpkg/cli.py -@@ -2177,13 +2177,21 @@ class cliClient(object): - self.log.warning("Repo name should't contain '.git' suffix. " - "Correcting the repo name: '%s'" % repo) - -+ skip_hooks = None -+ if self.config.has_option(self.name, "skip_hooks"): -+ try: -+ skip_hooks = self.config.getboolean(self.name, "skip_hooks") -+ except ValueError: -+ self.log.error("Error: config file option 'skip_hooks'") -+ raise - if self.args.branches: - self.cmd.clone_with_dirs(self.args.repo[0], - anon=self.args.anonymous, - target=self.args.clone_target, - depth=self.args.depth, - extra_args=self.extra_args, -- config_path=self.args.config) -+ config_path=self.args.config, -+ skip_hooks=skip_hooks) - else: - self.cmd.clone(self.args.repo[0], - branch=self.args.branch, -@@ -2191,7 +2199,8 @@ class cliClient(object): - target=self.args.clone_target, - depth=self.args.depth, - extra_args=self.extra_args, -- config_path=self.args.config) -+ config_path=self.args.config, -+ skip_hooks=skip_hooks) - - def commit(self): - if self.args.with_changelog and not self.args.message: --- -2.39.2 - diff --git a/0019-Pre-push-hook-won-t-check-private-branches.patch b/0019-Pre-push-hook-won-t-check-private-branches.patch deleted file mode 100644 index 37a7c52..0000000 --- a/0019-Pre-push-hook-won-t-check-private-branches.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 4553da364d7d8a974ab0c08834ee0a54320da2cb Mon Sep 17 00:00:00 2001 -From: Ondrej Nosek -Date: Tue, 18 Apr 2023 16:06:43 +0200 -Subject: [PATCH 6/6] Pre-push hook won't check private branches - -The pre-push hook script was failing the when user tried to push -a private branch. It required using the --release argument with -the pre-push-check command and passing additional arguments into -the hook script. That was found unreliable and private branches -won't be checked. - -Fixes: #683 -JIRA: RHELCMP-11528 - -Signed-off-by: Ondrej Nosek ---- - pyrpkg/__init__.py | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py -index 7fddff7..3f934d3 100644 ---- a/pyrpkg/__init__.py -+++ b/pyrpkg/__init__.py -@@ -4489,9 +4489,15 @@ class Commands(object): - specfile_path = os.path.relpath(specfile_path_absolute, start=self.path) - cmd = ['spectool', '-l', os.path.join(clone_dir, specfile_path)] - # extract just '--define' arguments from rpmdefines -- for opt, val in zip(self.rpmdefines[0::2], self.rpmdefines[1::2]): -- if opt == '--define': -- cmd.extend((opt, val)) -+ try: -+ for opt, val in zip(self.rpmdefines[0::2], self.rpmdefines[1::2]): -+ if opt == '--define': -+ cmd.extend((opt, val)) -+ except rpkgError: -+ # this exception was caused probably by using a private branch -+ self.log.warning('The pre-push script can\'t check private branches. ' -+ 'Push operation continues.') -+ return - ret, stdout, _ = self._run_command(cmd, cwd=clone_dir, - return_text=True, return_stdout=True) - if ret != 0: --- -2.39.2 - diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..5204a84 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Orphaned for 6+ weeks diff --git a/remove-koji-and-rpm-py-installer-from-requires.patch b/remove-koji-and-rpm-py-installer-from-requires.patch deleted file mode 100644 index 90adee0..0000000 --- a/remove-koji-and-rpm-py-installer-from-requires.patch +++ /dev/null @@ -1,29 +0,0 @@ -From ec0c8b368fd560b319c6603f35dda803fe4b2e99 Mon Sep 17 00:00:00 2001 -From: Dominik Rumian -Date: Tue, 24 Aug 2021 12:51:17 +0200 -Subject: [PATCH] [PATCH] remove koji and rpm-py-installer from requires - -Signed-off-by: Dominik Rumian ---- - setup.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/setup.py b/setup.py -index 9c6d881..8c92aae 100755 ---- a/setup.py -+++ b/setup.py -@@ -34,6 +34,11 @@ install_requires, dep_links = read_requirements(pypi_txt) - tests_require, test_dep_links = read_requirements(test_pypi_txt) - dep_links += test_dep_links - -+install_requires = [ -+ item for item in install_requires -+ if not item.startswith('koji') and not item.startswith('rpm-py-installer') -+] -+ - readme_rst = os.path.join(setup_py_path, 'README.rst') - with open(readme_rst, 'r') as readme: - long_description = readme.read().rstrip() --- -2.31.1 - diff --git a/rpkg.rpmlintrc b/rpkg.rpmlintrc deleted file mode 100644 index db34bbe..0000000 --- a/rpkg.rpmlintrc +++ /dev/null @@ -1,3 +0,0 @@ -from Config import * - -addFilter('/usr/share/rpkg/examples/cli/') diff --git a/rpkg.spec b/rpkg.spec deleted file mode 100644 index 60d99d1..0000000 --- a/rpkg.spec +++ /dev/null @@ -1,1498 +0,0 @@ -Name: rpkg -Version: 1.66 -Release: 6%{?dist} - -Summary: Python library for interacting with rpm+git -License: GPLv2+ and LGPLv2 -URL: https://pagure.io/rpkg -BuildArch: noarch -Source0: https://pagure.io/releases/rpkg/%{name}-%{version}.tar.gz - -# RHEL7 is currently the only release that is built for Python 2. -%if 0%{?rhel} == 7 -%global with_python2 1 -%global with_python3 0 -# sitelib for noarch packages, sitearch for others (remove the unneeded one) -%{!?__python2: %global __python2 %{__python}} -%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} -%else -# Disable python2 build by default -%global with_python2 0 -# Enable python3 build by default -%global with_python3 1 -%endif - - -# 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 -%if 0%{?with_python2} -Patch3: 0003-Remove-Environment-Markers-syntax.patch -%endif -Patch4: 0004-Process-source-URLs-with-fragment-in-pre-push-hook.patch -Patch5: 0005-container-build-update-signing-intent-help-for-OSBS-.patch -Patch6: 0006-Do-not-generate-pre-push-hook-script-in-some-cases.patch -Patch7: 0007-More-robust-spec-file-presence-checking.patch -Patch8: 0008-Update-to-spec-file-presence-checking.patch -Patch9: 0009-Add-more-information-about-pre-push-hook.patch -Patch10: 0010-pre-push-check-have-to-use-spectool-with-define.patch -Patch11: 0011-A-HEAD-query-into-a-lookaside-cache.patch -Patch12: 0012-pre-push-hook-script-contains-a-user-s-config.patch -Patch13: 0013-Fix-unittests-for-clone-and-pre-push-hook-script.patch -Patch14: 0014-import_srpm-allow-pre-generated-srpms.patch -Patch15: 0015-Ignore-missing-spec-file-in-pre-push-hook.patch -Patch16: 0016-Check-remote-file-with-correct-hash.patch -Patch17: 0017-Allow-empty-commits-when-uses_rpmautospec.patch -Patch18: 0018-Config-file-option-to-skip-the-hook-script-creation.patch -Patch19: 0019-Pre-push-hook-won-t-check-private-branches.patch - -%description -Python library for interacting with rpm+git - - -%if 0%{?with_python2} -%package -n python2-%{name} -Summary: %{summary} -%{?python_provide:%python_provide python2-%{name}} - -BuildRequires: python2-devel - -# We br these things for man page generation due to imports -BuildRequires: rpmlint -BuildRequires: rpmdevtools -BuildRequires: python2-koji >= 1.21 -BuildRequires: python2-cccolutils -BuildRequires: PyYAML -BuildRequires: GitPython -BuildRequires: python-pycurl -BuildRequires: python-requests -BuildRequires: python-requests-kerberos -BuildRequires: python-six >= 1.9.0 -BuildRequires: python2-argcomplete -BuildRequires: python2-mock -BuildRequires: python2-nose -BuildRequires: python2-setuptools - -Requires: mock -Requires: redhat-rpm-config -Requires: rpm-build -Requires: rpmlint -Requires: rpmdevtools -Requires: python2-argcomplete -Requires: python2-cccolutils -Requires: python2-koji >= 1.21 -Requires: PyYAML -Requires: GitPython >= 0.2.0 -Requires: python-pycurl -Requires: python-requests -Requires: python-requests-kerberos -Requires: python-six >= 1.9.0 -Requires: rpm-python - -Requires: %{name}-common = %{version}-%{release} - -Conflicts: fedpkg < 1.26 - -# Backward compatibility with capability pyrpkg -Provides: pyrpkg = %{version}-%{release} -# All old versions before 1.49-1 should not be used anymore -Obsoletes: pyrpkg < 1.49-2 - - -%description -n python2-%{name} -A python library for managing RPM package sources in a git repository. -%endif -# end of python2 section - - -%if 0%{?with_python3} -%package -n python3-%{name} -Summary: %{summary} -%{?python_provide:%python_provide python3-%{name}} -# Obsolete python2-rpkg (remove after Fedora29) -%if 0%{?with_python2} == 0 -Obsoletes: python2-rpkg < %{version}-%{release} -%endif - -BuildRequires: python3-devel -BuildRequires: python3-GitPython -BuildRequires: python3-koji >= 1.24 -%if 0%{?rhel} -BuildRequires: python3-gobject-base -BuildRequires: libmodulemd -BuildRequires: python3-requests-kerberos -%else -BuildRequires: python3-libmodulemd -%endif -BuildRequires: python3-argcomplete -BuildRequires: python3-cccolutils -BuildRequires: python3-openidc-client -BuildRequires: python3-pycurl -BuildRequires: python3-six >= 1.9.0 -BuildRequires: python3-requests -BuildRequires: python3-setuptools -BuildRequires: python3-pytest -BuildRequires: python3-PyYAML -BuildRequires: rpmlint -BuildRequires: rpmdevtools - -Requires: mock -Requires: redhat-rpm-config -Requires: rpm-build -Requires: rpmlint -Requires: rpmdevtools - -Requires: python3-argcomplete -Requires: python3-GitPython >= 0.2.0 -Requires: python3-cccolutils -Requires: python3-koji >= 1.24 -%if 0%{?rhel} -Requires: python3-gobject-base -Requires: libmodulemd -Requires: python3-requests-kerberos -%else -Requires: python3-libmodulemd -Requires: python3-rpmautospec -%endif -Requires: python3-rpm -Requires: python3-pycurl -Requires: python3-six >= 1.9.0 -Requires: python3-PyYAML - -Requires: %{name}-common = %{version}-%{release} - -Conflicts: fedpkg < 1.26 - -%description -n python3-%{name} -A python library for managing RPM package sources in a git repository. -%endif -# end of python3 section - - -%package common -Summary: Common files for %{name} - -# Files were moved from python2-rpkg in that version -Conflicts: python2-rpkg < 1.52-2 -Conflicts: pyrpkg < 1.52-2 - -%description common -Common files for python2-%{name} and python3-%{name}. - - -%prep -%autosetup -p1 - -# Removes section from setup.py that is relevant only for pip and -# is not compatible with in RHEL-6 tools -sed -i -n '/extras_require/,/}/!p' setup.py - -%build -%if 0%{?with_python2} -%{__python2} setup.py build -%endif - -%if 0%{?with_python3} -%py3_build -%endif - - -%install -%if 0%{?with_python2} -%{__python2} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT -%endif - -%if 0%{?with_python3} -%py3_install -%endif - - -# Create configuration directory to holding downstream clients config files -# that are built on top of rpkg -%{__install} -d $RPM_BUILD_ROOT%{_sysconfdir}/rpkg - -example_cli_dir=$RPM_BUILD_ROOT%{_datadir}/%{name}/examples/cli -%{__install} -d $example_cli_dir - -# Install example CLI to rpkg own data directory -%{__install} -d ${example_cli_dir}%{_bindir} -%{__install} -d ${example_cli_dir}%{_sysconfdir}/bash_completion.d -%{__install} -d ${example_cli_dir}%{_sysconfdir}/rpkg - -%{__install} -p -m 0644 bin/rpkg ${example_cli_dir}%{_bindir} -%{__install} -p -m 0644 etc/bash_completion.d/rpkg.bash ${example_cli_dir}%{_sysconfdir}/bash_completion.d -%{__install} -p -m 0644 etc/rpkg/rpkg.conf ${example_cli_dir}%{_sysconfdir}/rpkg - - -%check -%if 0%{?with_python2} -%{__python2} -m nose tests -%endif - -%if 0%{?with_python3} -%pytest -%endif - - -%if 0%{?with_python2} -%files -n python2-%{name} -%doc README.rst CHANGELOG.rst -%if 0%{?rhel} && 0%{?rhel} < 7 -%doc COPYING COPYING-koji LGPL -%else -%license COPYING COPYING-koji LGPL -%endif -# For noarch packages: sitelib -%{python2_sitelib}/pyrpkg -%{python2_sitelib}/%{name}-%{version}-py*.egg-info -%endif - -%if 0%{?with_python3} -%files -n python3-%{name} -%doc README.rst CHANGELOG.rst -%license COPYING COPYING-koji LGPL -%{python3_sitelib}/pyrpkg -%{python3_sitelib}/%{name}-%{version}-py*.egg-info -%endif - -%files common -%{_datadir}/%{name} -%{_sysconfdir}/rpkg - - -%changelog -* Tue Apr 18 2023 Ondřej Nosek - 1.66-6 -- Patch: Pre-push hook won't check private branches -- Patch: Config file option to skip the hook script creation -- Patch: Allow empty commits when `uses_rpmautospec` -- Patch: Check remote file with correct hash -- Patch: Ignore missing spec file in pre-push hook -- Patch: import_srpm: allow pre-generated srpms - -* Sat Apr 1 2023 Ondřej Nosek - 1.66-5 -- Patch: Fix unittests for `clone` and pre-push hook script -- Patch: pre-push hook script contains a user's config -- Patch: A HEAD query into a lookaside cache -- Patch: `pre-push-check` have to use spectool with --define -- Patch: Add more information about pre-push hook -- Patch: Update to spec file presence checking -- Patch: More robust spec file presence checking - -* Fri Mar 10 2023 Ondřej Nosek - 1.66-4 -- Patch: Do not generate pre-push hook script in some cases - -* Wed Mar 1 2023 Ondřej Nosek - 1.66-3 -- Patch: Process source URLs with fragment in pre-push hook -- Patch: container-build: update --signing-intent help for OSBS 2 - -* Tue Feb 21 2023 Ondřej Nosek - 1.66-2 -- rebuild for unification of all branches - -* Mon Feb 20 2023 Ondřej Nosek - 1.66-1 -- container-build: document --compose-ids overrides any new composes (kdreyer) -- Use srpm when scratch-building from dirty repo - #652 (otto.liljalaakso) -- Code cleanup in tests/test_cli.py (otto.liljalaakso) -- Reduce indentation in assert_build helper (otto.liljalaakso) -- Allow empty commits - 494 (msuchy) -- Allow forcing download of all sources - #650 (otto.liljalaakso) -- Add test case for not downloading unused sources (otto.liljalaakso) -- Support 'results_dir=subdir' when building from srpm - #648 - (otto.liljalaakso) -- Use local branch name as release when there is no remote (otto.liljalaakso) -- Allow downstreams to define a default release (otto.liljalaakso) -- Switch load_branch_merge to use multiple return (otto.liljalaakso) -- Unittests for 'git push' hook script (onosek) -- Checking a repo configuration before 'git push' with a git hook script - 491 - (onosek) -- Fix skipping NVR check with autorelease (nils) -- pyrpkg.spec.SpecFile: More lenient parser for Source/Patch lines (fweimer) -- Fix URL in CHANGELOG.rst (tmz) -- Add Jenkinsfile for CI (onosek) -- mockbuild: escape rpm command under mock - rhbz#2130349 (onosek) -- Fixes for exploded SRPM layouts - #633 (tdawson) -- `fedpkg local` does not show rpmbuild output - rhbz#2124809 (onosek) - -* Mon Oct 10 2022 Ondřej Nosek - 1.65-3 -- Patch: Fixes for exploded SRPM layouts -- Patch: mockbuild: escape rpm command under mock - -* Wed Sep 7 2022 Ondřej Nosek - 1.65-2 -- Patch: `fedpkg local` does not show rpmbuild output - -* Wed Sep 7 2022 Ondřej Nosek - 1.65-1 -- Extra arguments now use shell-escaping - revert (onosek -- Remove pytest warnings (onosek) -- Refuse import of packages processed by rpmautospec (zbyszek) -- follow redirects for lookaside (tkopecek) -- Repair flake8 complaints (onosek) -- Fix high level bandit findings (onosek) -- container-build: improve help text for --compose-ids argument (kdreyer) -- CONTRIBUTING.md fix links (onosek) -- Improve change management process documentation (onosek) -- Removing bandit issues from cli.py (drumian) -- Extract source RPMs with rpm2archive if possible (praiskup) -- Set up bandit scanner for rpkg (onosek) -- Refuse to "commit -c" when using %autochangelog - 454 (drumian) -- Refactoring loading rpmautospec feature (onosek) -- add --background option for container-build which allows to create build with - lower priority (rcerven) -- 'clean --dry-run' deprecation warning (drumian) -- Better exit code for connection error (drumian) -- Fix generation of optional parameters in man page (mspacek) -- Use absolute path for mock results in `lint` (onosek) -- contaner-build does not check for existence of kojisession.buildContainer - - 532 (drumian) -- Fix: 'lint' subcommand should not invoke rpmlint on debuginfo packages - - rhbz#2052451 (drumian) -- Add `--custom-user-metadata` to build command (onosek) -- Fix: 'lint -i/--info' does not work - rhbz#2016616 (drumian) -- Fix: AlreadyUploadedError when package has no sources - 604 (drumian) -- Fix: Extra arguments now use shell-escaping - 587 (drumian) - -* Fri Aug 19 2022 Ondřej Nosek - 1.64-9 -- Patch: Extract source RPMs with rpm2archive if possible - -* Thu Aug 18 2022 Ondřej Nosek - 1.64-8 -- Patch: Repair flake8 complaints -- Patch: follow redirects for lookaside - -* Sat Jul 23 2022 Fedora Release Engineering - 1.64-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Tue Jun 14 2022 Python Maint - 1.64-6 -- Rebuilt for Python 3.11 - -* Mon Apr 18 2022 Ondřej Nosek - 1.64-5 -- Patch: add --background option for container-build which allows - to create build - -* Tue Apr 05 2022 Ondřej Nosek - 1.64-4 -- Patch: Better exit code for connection error - -* Fri Mar 18 2022 Ondřej Nosek - 1.64-3 -- Patch: Add `--custom-user-metadata` to build command - -* Tue Feb 08 2022 Ondřej Nosek - 1.64-2 -- Upload correct tarball - -* Tue Jan 25 2022 Ondřej Nosek - 1.64-1 -- Fix: *pkg now takes into account --path parameter while building SRPM - 580 - (drumian) -- 'lint' can run with different 'rpmlint' versions - rhbz#1967821 (onosek) -- Support building SRPMs in target mock - #495 (onosek) -- Use unittest.mock on Python 3 (miro) -- Add support for mockbuild in lint command (oturpe) -- Fix srpm and binary rpm lookup in lint subcommand - #586 (oturpe) -- mockbuild: allow enforcing local mock config in fedpkg (praiskup) -- list-side-tags - fix unavailable username (sergio) -- Accept also ~/.config/mock/.cfg files (praiskup) -- improve srpm --help description (kdreyer) -- Improve how the .spec file is selected (mads) -- Include `fmf` config in the list of reserved files - 452 (psplicha) -- Fix flake8 syntax (onosek) -- Continue execution if specfile parsing fails - #583 (oturpe) -- Consider Patch tags in specfile parser - rhbz#2010518 (oturpe) -- Support for custom completers (onosek) -- Fixes import fail with sources already imported - #573 (drumian) -- Also document Python 3.10 support in the README (miro) -- Test and support Python 3.10 (miro) -- Print SpecFile parsing debug info - rhbz#2000556 (onosek) -- Pass sourcedir to rpmspec when specfile is parsed - #559 (oturpe) -- Fix unittests to be Python 2 compatible (drumian) -- Changing escaping of dash in docs - older releases (onosek) -- Changing escaping of dash in docs. (drumian) - -* Fri Jan 21 2022 Fedora Release Engineering - 1.63-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Tue Dec 14 2021 Ondřej Nosek - 1.63-6 -- drop nosetests for Python3 -- disable pytest coverage during build - -* Wed Dec 01 2021 Ondřej Nosek - 1.63-5 -- Patch: Continue execution if specfile parsing fails -- Patch: Consider Patch tags in specfile parser - -* Mon Nov 29 2021 Ondřej Nosek - 1.63-4 -- Patch: Fixes import fail with sources already imported - -* Mon Sep 13 2021 Ondřej Nosek - 1.63-3 -- Add python-requests-kerberos as a new dependency for RHEL packages -- Patch: Print SpecFile parsing debug info - -* Wed Sep 01 2021 Ondřej Nosek - 1.63-2 -- Patch: Pass sourcedir to rpmspec when specfile is parsed - -* Tue Aug 24 2021 Dominik Rumian - 1.63-1 -- Do not download unused sources during command 'sources' - #559 (oturpe) -- Added 'x-pkg verrel' for containers - #547 (jkunstle) -- container-build: improve help text for --signing-intent argument (kdreyer) -- Make sure all commits have a proper subject (sgallagh) -- Fix unittest for previous commit (onosek) -- better new-sources output when all sources already exist Fixes: #533 JIRA: - RHELCMP-5529 (drumian) -- Added 'remote' to rpkg from rhpkg - 439 (jkunstle) -- Add --offline cli argument for new-sources (oturpe) -- Tests: Fix setting branch name with old git (nils) -- Add and augment tests for rpmautospec (nils) -- Reflect %autorelease when parsing spec files (nils) -- Preprocess spec files using rpmautospec features (nils) -- Detect generic use of rpmautospec features (nils) -- Fix remaining Python3 SafeConfigParser warnings (nils) -- Tests: specify branch name on `git init` (nils) -- Remove leftover deprecated arguments (abisoi) -- Remove deprecated arguments --dist and --module-name (abisoi) -- Skip NVR check if the %autorelease macro is used - 109 (nils) -- Don't access unset variable (nils) -- Improve help in fedpkg clone command - #367 (abisoi) -- Fix rpkg container-build ignoring values when same argument is specified - multiple times - #537 (abisoi) -- list-side-tags: show creator of the tag - 358 (onosek) -- Drop Python 2.6 support (onosek) -- Enable flatpak tests that require libmodulemd (onosek) -- Added .rpmlintrc to the list of files ignored by fedpkg import - - rhbz#1946688 (abisoi) -- Jenkins unittests run in docker container (onosek) -- Add support for side tag suffix (lsedlar) -- Check whether sources file is not a directory - #541 (onosek) -- Add config option for writing dist-git build results to a subdirectory - (oturpe) -- ca cert was removed on koji-1.24.0 (sergio) -- Improve automatic test suite (oturpe) -- Better hint when running 'prep' on detached branch - rhbz#1907964 (onosek) -- Update description of the clean command - rhbz#1909461 (onosek) -- Add --skip-nvr-check to the scratch-build command - rhbz#1671012 (onosek) - -* Fri Jul 23 2021 Fedora Release Engineering - 1.62-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Jul 08 2021 Ondřej Nosek - 1.62-6 -- Patch: Preprocess spec files using rpmautospec features and use %%autorelease when parsing spec files -- Patch: Skip NVR check if the %%autorelease macro is used - -* Fri Jun 04 2021 Python Maint - 1.62-5 -- Rebuilt for Python 3.10 - -* Fri Apr 02 2021 Ondřej Nosek - 1.62-4 -- Patch: Add support for side tag suffix - -* Wed Feb 24 2021 Ondřej Nosek - 1.62-3 -- Patch: ca cert was removed on koji-1.24.0 - -* Wed Jan 27 2021 Fedora Release Engineering - 1.62-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Dec 02 2020 Ondřej Nosek - 1.62-1 -- Allow skipping nvr checking for chain-build - rhbz#1890701 (onosek) -- Code-style improvement - imports are sorted (onosek) -- Fix Jenkinks tests (onosek) -- Avoid blank lines in log files for lookaside (contyk) -- container-build: fix help text for --isolated argument (kdreyer) -- Add --signing-intent and --repo-url to 'flatpak-build' (otaylor) -- Add hashtype to lookaside download path - #521 (turivniy) -- Add new layout for packages that missing specfile - rhbz#1885771 (onosek) - -* Mon Sep 07 2020 Ondřej Nosek - 1.61-1 -- Pytest update and MANIFEST.in prune (onosek) -- Re-enable clog tests (onosek) -- Skip directories inside of imported srpm file - rhbz#1866297 (onosek) -- Skip 'sources' file when it is missing - rhbz#1867440 (onosek) -- New layout for retired packages - rhbz#1867822 (onosek) -- added a extendable layout module to deal with different package layouts - within the CLI (2183506+odra) -- Add (onosek) -- Pytest replaces nosetests - #501 (onosek) -- Disable some test for 'clog' functionality (onosek) -- Suggest a way to track remote branch - update (onosek) -- Suggest a way to track remote branch in the error log (cqi) -- Remove deprecated support for kojiconfig (onosek) -- Switch from krb_login to gssapi_login - rhbz#1830430 (onosek) -- Disable test method's docstring in nosetests list (onosek) -- Check repo name for correct format (onosek) -- Unittests for passing additional arguments (onosek) -- Passing additional arguments to underlaying commands - #432 (onosek) -- Updated supported plaforms in documentation (onosek) -- Repair compatible formatting for Python 2.6 (onosek) -- Repair downloading sources into external directory (onosek) - -* Mon Aug 31 2020 Ondřej Nosek - 1.60-8 -- Patch: Skip 'sources' file when it is missing - -* Fri Aug 07 2020 Ondřej Nosek - 1.60-7 -- Patch: added layout module to deal with different package layouts -- Patch: clog tests workaround - -* Sat Aug 01 2020 Fedora Release Engineering - 1.60-6 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 1.60-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon May 25 2020 Miro Hrončok - 1.60-4 -- Rebuilt for Python 3.9 - -* Tue May 19 2020 Ondřej Nosek - 1.60-3 -- Patch: Switch from krb_login to gssapi_login - -* Mon May 11 2020 Ondřej Nosek - 1.60-2 -- Releasing the epel8 version - -* Fri Mar 20 2020 Ondřej Nosek - 1.60-1 -- More transparent check of retired package (onosek) -- Run newer version of sphinx-build tool (onosek) -- Lookaside cache upload is not based on an extension - #484 (onosek) -- container-build: additional warning when using --release (mlangsdo) -- allow compose-id with repo-url for container_build (rcerven) -- Clone config customization for namespaces - 231 (onosek) -- Repair Jenkins tests (onosek) -- (new-)sources should fail with git tracked files - 241 (onosek) -- Handle new cachito dependency replacement argument (athoscr) -- module-build optional key help - 280 (onosek) -- Modify watch-cancel message (sgallagh) -- Create stats for module builds in 'init' state (csomh) -- RPM 4.15 changed header returns from type 'bytes' to 'string'. Handle either - by converting to 'string' if necessary. (mmathesi) -- Don't expect module build tasks to have "rpms" (mulaieva) -- Propagate module_hotfixes to getMockConfig - rhbz#1780228 (lsedlar) -- Add check for wrong repo name format during clone - 353 (onosek) -- Simplify methods for getting namespace giturl (onosek) -- Use a single thread pool while watching module builds (csomh) -- Also capture stderr in logfile (orion) -- Line up descriptions for better code readability (onosek) -- Isolated container-build should allow arches override (rcerven) -- container-build: add --koji-parent-build argument (kdreyer) -- tests: add container-build --isolated test (kdreyer) -- container-build: add --isolated argument (kdreyer) -- Pass skip_build option to buildContainer (rcerven) -- Reuse koji_cli.lib.unique_path (cqi) - -* Thu Jan 30 2020 Fedora Release Engineering - 1.59-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jan 02 2020 Ondřej Nosek - 1.59-5 -- Some patches: -- Propagate module_hotfixes to getMockConfig -- Don't expect module build tasks to have "rpms" -- RPM 4.15 changed header - type conversion -- Create stats for module builds in 'init' state - -* Tue Dec 03 2019 Ondřej Nosek - 1.59-4 -- Patch: limited thread pool for watching module builds - -* Thu Nov 14 2019 Ondřej Nosek - 1.59-3 -- Backport: Isolated container-build should allow arches override - -* Fri Oct 25 2019 Ondrej Nosek - 1.59-2 -- Backport: container-build: add --isolated and --koji-parent-build arguments -- Backport: Pass skip_build option to buildContainer -- Backport: Reuse koji_cli.lib.unique_path - -* Mon Sep 16 2019 Ondřej Nosek - 1.59-1 -- Add argument to skip build option for container-build (rcerven) -- Sorting imports (onosek) -- Ignore error when adding exclude patterns - 1733862 (onosek) -- Path to lookaside repo fix (onosek) -- Add commands for interacting with Koji side-tag plugin - 329 (lsedlar) -- Do not delete files related to gating on import (onosek) -- Support integer values in the optional module-build arguments (mprahl) -- container-build: add --build-release argument (kdreyer) -- Allow some arguments for container-build together (onosek) -- git-changelog: Fix running on Python 3 - 3 (onosek) -- Port to libmodulemd 2 API (lsedlar) -- Module-overview allows filtering by owner - 325 (onosek) -- Different import --offline command behavior - #445 (onosek) -- Show nvr in container-build (onosek) -- Custom handler for koji watch_tasks (onosek) -- Unittests for clone command (onosek) -- Fix clone --branches - rhbz#1707223 (tmz) -- Make gitbuildhash work for windows builds (lsedlar) - -* Mon Sep 16 2019 Ondřej Nosek - 1.58-10 -- Update koji dependency - -* Sat Aug 17 2019 Miro Hrončok - 1.58-9 -- Rebuilt for Python 3.8 - -* Thu Aug 01 2019 Ondřej Nosek - 1.58-8 -- Obsoletes python2-rpkg after upgrade to Fedora30 - -* Wed Jul 31 2019 Stephen Gallagher - 1.58-7 -- Fix libmodulemd requirements - -* Fri Jul 26 2019 Fedora Release Engineering - 1.58-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Mon Jun 10 2019 Ondřej Nosek - 1.58-5 -- Now again, libmodulemd is required instead of python3-libmodulemd because - it was causing troubles with upgrades. - -* Mon Jun 10 2019 Ondřej Nosek - 1.58-4 -- Modify required version of koji package - -* Mon May 27 2019 Ondřej Nosek - 1.58-3 -- Backport: Custom handler for koji watch_tasks -- Backport: Show nvr in container-build -- Backport: Different import --offline command behavior - -* Thu May 09 2019 Ondrej Nosek - 1.58-2 -- Backport: fixed 'clone --branch' command - -* Mon Apr 29 2019 Ondřej Nosek - 1.58-1 -- Ignore files in a cloned repository - #355 (onosek) -- Handle data from python RPM binding as UTF-8 string (zebob.m) -- srpm_import: be compatible with rhbz#1693751 (praiskup) -- Pass --enable-network to mock - 314 (onosek) -- Enhance 'module-overview' sub-command to show scratch status of modules. - (mmathesi) -- Remove the ability to parse a module's branch automatically to determine the - base module stream override (mprahl) -- Improvements for scratch module builds (mmathesi) -- Updates to support scratch module builds (mmathesi) -- Refactor fake Koji credential handling from TestBuildPackage class into new - FakeKojiCreds class so it can be shared with TestModulesCli class. (mmathesi) -- Make Koji upload methods more generic so they can be reused. (mmathesi) -- Allow passing --offline and -r to mbs-manager build_module_locally. (jkaluza) -- Depth param for clone - tuning (onosek) -- Depth param for clone - #363 (onosek) -- Pass --disablerepo and --enablerepo to mock - 313 (onosek) -- Import srpm without uploading sources - rhbz#1175262 (onosek) -- Ignore any specified profile when finding the Flatpak build target (otaylor) -- Show module build links in output from command module-build (cqi) -- Add 'retire' command supporting both packages and modules (mmathesi) -- Fix "push --force" (tim) -- Container-build returns its status to command-line - #415 (onosek) -- Upload .crate files to lookaside cache - 312 (onosek) -- Restrict version of PyYAML on Python 2.6 (lsedlar) -- Simplify srpm method (onosek) -- Permit setting arbitrary rpm macros during build (riehecky) -- Add the ability to configure multiple regex expressions for - base_module_stream_regex_from_branch (mprahl) -- Do not require PyGObject in setup.py - rhbz#1679365 (onosek) -- Fixing failing Jenkins tests (onosek) -- Unify update-docs script with fedpkg version (onosek) -- README: add links (onosek) -- Watch multiple module builds (cqi) -- Added update-docs script (onosek) - -* Thu Apr 25 2019 Ondřej Nosek - 1.57-9 -- yet another compat fix with RPM after rhbz#1693751 - -* Fri Apr 19 2019 Pavel Raiskup - 1.57-8 -- compat fix with RPM after rhbz#1693751 - -* Wed Mar 20 2019 Igor Gnatenko - 1.57-7 -- Backport patch for uploading *.crate into lookaside - -* Thu Feb 07 2019 Ondřej Nosek - 1.57-6 -- Revert previous change. - Now python-gobject-base & libmodulemd are removed from epel7 and RHEL7 - -* Tue Feb 05 2019 Ondřej Nosek - 1.57-5 -- python-gobject-base & libmodulemd also for epel7 and RHEL7 - -* Mon Feb 04 2019 Lubomír Sedlář - 1.57-4 -- Disable Py2 package on F30+ - -* Sat Feb 02 2019 Fedora Release Engineering - 1.57-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Thu Jan 03 2019 Ondřej Nosek - 1.57-2 -- Merge changes of the .spec files for Fedora and RHEL - -* Thu Dec 13 2018 Ondřej Nosek - 1.57-1 -- Use idna 2.7 for Python 2.6 (lsedlar) -- Imports are sorted (onosek) -- libmodulemd is missing on el7 - #402 (onosek) -- Initialize bash autocompletion (onosek) -- Set configuration in case of "clone --branches" as well (tim) -- Fix fake spec file for clog tests (cqi) -- Move argparse fix from fedpkg - #398 (onosek) -- Send source mtime to dist-git - 220 (lsedlar) -- Fix tests for mock package manager (lsedlar) -- Specify package manager for mock-config (lsedlar) -- Add contributing guide (onosek) -- Validate the module build optional argument when parsing the argument - (mprahl) -- Add config options to parse the base module (e.g. platform) stream from the - dist-git branch and apply a buildrequire override (mprahl) -- Add the ability to pass in buildrequire and require overrides on a module - build (mprahl) -- Raise an error if the module build command receives optional arguments that - conflict (mprahl) -- Silence Python3 SafeConfigParser warnings (mmathesi) -- Allow to pass posargs to tox from make (cqi) -- Specify dependent packages in one place (cqi) -- Don't registry flatpak-build command on Python-2.6 (otaylor) -- Add flatpak-build subcommand (otaylor) -- Don't pass the MBS API URL around as a parameter (otaylor) -- TestContainerBuildWithKoji: tear down the mock appropriately (otaylor) -- Refine test runner for py26 (cqi) - -* Thu Nov 15 2018 Ondřej Nosek - 1.56-4 -- Allow build for RHEL-8 (onosek) - -* Wed Nov 14 2018 Ondřej Nosek - 1.56-3 -- No mock warning (onosek) - -* Fri Sep 7 2018 Owen Taylor - 1.56-2 -- Add patch from upstream pull-request to add a flatpak-build subcommand -- Add PyYAML dependencies so that the spec file at least builds on epel6/epel7 - -* Tue Aug 21 2018 Chenxiong Qi - 1.56-1 -- Validate greenwave policy early in Commands.build (cqi) -- Refine error message for failure gating.yaml validation (cqi) -- explain mbs-manager exception handling (nils) -- test for missing mbs-manager with errno set (nils) -- catch errno == ENOENT if mbs-manager is missing (nils) -- add missing method docstring (nils) -- Show full error from MBS (lsedlar) -- Fix tests for greenwave policy validation (cqi) -- Add testenv for building docs (cqi) -- New option --buildrootdir - rhbz#1583822 (cqi) -- Add --shell option to mockbuild - rhbz#1438685 (cqi) -- Validate gating.yaml file for Greenwave gating (gnaponie) -- Update README (cqi) -- Reduce the number of repo creation for tests (cqi) -- Fix flake8 error (cqi) -- Drop rpm-py-installer from requires - #357 (cqi) -- Allow _run_command to capture and return output to stdout or stderr (cqi) -- Claim Python 3.7 in README and package classifiers (cqi) -- Fix a bad test teardown (otaylor) -- Refactor build command (cqi) -- Remove rpmfluff package (cqi) -- Set PYCURL_SSL_LIBRARY directly for installing pycurl (cqi) -- Add py37 testenv (cqi) - -* Thu Jul 26 2018 Chenxiong Qi - 1.55-2 -- Remove dependency python-rpmfluff - -* Mon Jul 23 2018 Chenxiong Qi - 1.55-1 -- Fix installing pycurl for running tests (cqi) -- Replace extra module_name with repo_name (cqi) -- Replace name module with repo in tests/fixtures/rpkg*.conf (cqi) -- Add --fail-fast functionality - #331 (tibbs) -- Fix fake spec for build in rawhide (cqi) -- Avoid to upload a file with different checksum - #204 (cqi) -- Give more information when sources has invalid content - #227 (cqi) -- Reserve README.md while import srpm - #149 (cqi) -- Set to repo_name property when --name is specified (cqi) -- Do not restrict argparse version (cqi) -- Check old format args only if there is clone config (cqi) -- Fix typo and reword option help and deprecation message (cqi) -- Massive replacement of module (cqi) -- Deprecate module_name inside rpkg internal (cqi) -- Add new option --name and --namespace - #301 (cqi) -- Man generator indent workaround (onosek) -- Fixing imports in unittests (onosek) -- Minor fixes to doc build (cqi) -- Fix mistakes during rebase (cqi) -- Run document generator script in Py3 explictly (cqi) -- Remove warning of nonexisting source/_static/ during doc build (cqi) -- Do not generate document for sample rpkg app (cqi) -- Exclude subcommand which does not have help (cqi) -- Ensure to clean files for generating HTML documents (cqi) -- Fix rebase error: add module_build_watch back (cqi) -- Fix MANIFEST.in to list files for building doc (cqi) -- Rename generate_man_pages.py (cqi) -- Generate HTML document and manpage for sample rpkg (cqi) -- Simplify doc Makefile (cqi) -- Generate commands HTML and man pages (cqi) -- Update existing docstrings (cqi) -- Generate documents by sphinx - #50 (cqi) -- README: new code should be py3 compatible (ktdreyer) -- Provide base_module to clone_config templates - #326 (tmz) -- Refactor man generator to be reusable (puiterwijk) -- Make sure gitcred doesn't land in man (puiterwijk) -- Don't inject the credential helper to push if OIDC is unconfigured - (puiterwijk) -- Add docblocks to gitcred methods and don't quit if OpenIDC is unconfigured - (puiterwijk) -- Also inject the credential helper with rpkg push (puiterwijk) -- Create a "gitcred" command that functions as an OIDC git-credential helper - (puiterwijk) - -* Sat Jul 14 2018 Fedora Release Engineering - 1.54-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Tue Jun 19 2018 Miro Hrončok - 1.54-3 -- Rebuilt for Python 3.7 - -* Mon May 21 2018 Chenxiong Qi - 1.54-2 -- Remove koji and rpm-py-installer Python package requires -- Fix argparse version for el6 - -* Fri May 11 2018 Chenxiong Qi - 1.54-1 -- Pass the -s/--set-default-stream to mbs-manager for module local builds. - (jkaluza) -- Write mock config correctly when run in Py 3 (cqi) -- Add --with and --without options to 'local' - rhbz#1533416 (tmz) -- Add a test for 3f93433 (cqi) -- Raise error if rpm command returns non-zero (cqi) -- Use getpass.getuser() instead of pwd.getpwuid(os.getuid())[0] (jpopelka) -- Allow setting custom MBS config file and config section in rpkg.conf. - (jkaluza) -- Remove py35 testenv (cqi) -- Ignore .env and tags (cqi) -- Remove question mark from giturl (cqi) -- Added custom ArgumentParser (supports allow_abbrev) (jkucera) -- Grab the correct first line in case of rpm output (zebob.m) - -* Mon Apr 16 2018 Chenxiong Qi - 1.53-2 -- Require python2-koji 1.15 as the minimum version -- Refine BuildRequires - -* Tue Apr 10 2018 Chenxiong Qi - 1.53-1 -- Use NSVs and not build IDs with module-build-local --add-local-build (mprahl) -- Fix docstring of test_module_build_local_with_skiptests (mprahl) -- Add long_description to package (cqi) -- Support local module builds when there are uncommitted changes (mprahl) -- Fix clarifying error that occurs when mbs-manager is not installed (mprahl) -- Add support for Module Stream Expansion (MBS API v2) (mprahl) -- Show errors when a module build fails (mprahl) -- Move full download url construction to separate method (frostyx) -- Fix compose related params for container-build (lucarval) -- Avoid calling /usr/bin/python in tests (miro) -- Change default rpmlint configuration file (athoscr) -- Use koji.grab_session_options() rather than opencoding it (cfergeau) - -* Mon Mar 05 2018 Miro Hrončok - 1.52-2 -- Introduce python3 subpackage - -* Thu Feb 22 2018 Chenxiong Qi - 1.52-1 -- Mock ThreadPool in test_module_overview (cqi) -- Drop rpmfluff in test (cqi) -- Fix hardcoded directory name in test (lsedlar) -- Improve testenv for py26 (cqi) -- Run tests with old GitPython in py26 testenv (cqi) -- Compile pycurl with openssl after F27 (cqi) -- Ignore .egg/ from git (cqi) -- Add py26 to testenv (cqi) -- Install koji from PyPI (cqi) -- Make compose-id and repo-url to take one or more values (csomh) -- Let git ignore more directories (cqi) -- Exclude pyc and __pycache__ globally in sdist (cqi) -- Handle nonexisting mbs-manager (cqi) -- Add dependent packages for Python 2.6 in setup.py (cqi) -- Updated module cli API (mcurlej) -- Declare Python versions rpkg can work with - #278 (cqi) -- Fix flake8 errors (cqi) -- Fix tests that do not work with Python 3 (cqi) -- Fix tests: not impact by dict.items call (cqi) -- Add py36 to testenv - #274 (cqi) -- Run tox to run tests and check code styles - #276 (cqi) -- Use flake8 3.5.0 (cqi) -- Add files under requirements/ to sdist package (cqi) -- Install Koji shared library via setuptools (cqi) -- Set install and tests requires in setup.py (cqi) -- Split pypi requirements and refine versions (cqi) -- Change type of compose id from string to int (bfontecc) -- Install RPM Python binding from PyPI (cqi) -- Fix test test_lint_each_file_once (cqi) -- Add compose-id and signing-intent arguments (bfontecc) -- Use env's python (lucarval) -- Use progress callback and TaskWatcher from koji_cli.lib (cqi) -- Get buildhash from git+https:// url (lsedlar) -- lint: Avoid checking rpm's multiple times (tmz) -- Fix giturl as well by calling construct_build_url (cqi) -- Fix construct anongiturl for chain-build (cqi) -- Fix mock openidc_client (cqi) - -* Fri Feb 09 2018 Fedora Release Engineering - 1.51-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Jan 23 2018 Chenxiong Qi - 1.51-3 -- Backport: Add compose-id and signing-intent arguments -- Backport: Change type of compose id from string to int - -* Wed Nov 08 2017 Chenxiong Qi - 1.51-2 -- Backport: Fix construct anongiturl for chain-build -- Backport: Fix giturl as well by calling construct_build_url - -* Fri Oct 20 2017 Chenxiong Qi - 1.51-1 -- Ignore TestModulesCli if openidc-client is unavailable (cqi) -- Port mbs-build to rpkg (mprahl) -- Add .vscode to .gitignore (mprahl) -- Fix TestPatch.test_rediff in order to run with old version of mock (cqi) -- Allow to specify alternative Copr config file - #184 (cqi) -- Tests for patch command (cqi) -- More Tests for mockbuild command (cqi) -- More tests for getting spec file (cqi) -- Tests for container-build-setup command (cqi) -- Test for container-build to use custom config (cqi) -- Suppress output from git command within setUp (cqi) -- Skip test if rpmfluff is not available (lsedlar) -- Allow to override build URL (cqi) -- Test for mock-config command (cqi) -- Tests for copr-build command (cqi) -- Fix arch-override for container-build (lucarval) -- Remove unsupported osbs for container-build (lucarval) -- cli: add --arches support for koji_cointainerbuild (mlangsdo) -- Strip refs/heads/ from branch only once (lsedlar) -- Don't install bin and config files (cqi) -- Fix kojiprofile selection in cliClient.container_build_koji (cqi) -- Avoid branch detection for 'rpkg sources' (praiskup) -- Fix encoding in new command (cqi) -- Minor wording improvement in help (pgier) -- Fix indentation (pviktori) -- Add --with and --without options to mockbuild (pviktori) - -* Thu Aug 31 2017 Chenxiong Qi - 1.50-2 -- Backport: Fix kojiprofile selection in cliClient.container_build_koji (cqi) - -* Thu Aug 10 2017 Chenxiong Qi - 1.50-1 -- Fix PEP8 error (cqi) -- Spelling fixes (ville.skytta) -- Reword help and description of new-sources and upload commands - rhbz#1248737 - (cqi) -- Set autorebuild enabled by default (bfontecc) -- Add commands to whitelist_externals (cqi) -- Declare Python 3 versions to support in setup.py (cqi) -- Replace unicode with six.text_type (cqi) -- Run tests in both Python 2 and 3 with tox (cqi) -- Make tests and covered code compatible with Py3 (cqi) -- Add requirements files (cqi) -- Do not build srpm in test (cqi) -- Do not actually run git-diff in tests (cqi) -- Remove deprecated modules used in koji (cqi) -- Non-zero exit when rpmbuild fails in local command (cqi) -- Report deprecation of config via logger (lsedlar) -- Print --dist deprecation warning explicitly (lsedlar) -- utils: Avoid DeprecationWarning for messages for users (lsedlar) -- Supply namespace to lookaside (if enabled) (lsedlar) -- Support reading koji config from profile - #187 (cqi) -- Remove kitchen (cqi) -- Fix string format (cqi) -- Recommend --release instead of --dist in mockbuild --help (tmz) -- Allow overriding container build target by downstream (lsedlar) -- Add a separate property for namespace (lsedlar) -- Allow container builds from any namespace (maxamillion) -- Make osbs support optional (cqi) -- make osbs dependency optional (pavlix) -- Allow explicit namespaces with slashes (lsedlar) -- Do not hang indefinitely when lookaside cache server stops sending data - (jkaluza) -- Make --module-name work with namespaces - #216 (lsedlar) -- Include README.rst in dist package (cqi) -- More document in README - #189 (cqi) -- Make new command be able to print unicode - #205 (cqi) -- Allow to specify custom info to a dummy commit (cqi) -- Load module name correctly even if push url ends in slash - #192 (cqi) -- Replace fedorahosted.org with pagure.io - #202 (cqi) -- Fix rpm command to get changelog from SPEC - rhbz#1412224 (cqi) -- Rewrite tests to avoid running rpmbuild and rpmlint (cqi) -- Use fake value to make Command in test (cqi) -- Python 3.6 invalid escape sequence deprecation fixes (ville.skytta) - -* Thu Jul 27 2017 Fedora Release Engineering - 1.49-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 10 2017 Chenxiong Qi - 1.49-6 -- Rename koji to python2-koji - -* Thu Jun 29 2017 Lubomír Sedlář - 1.49-5 -- Allow using namespace in --module-name attribute - -* Thu Jun 22 2017 Chenxiong Qi - 1.49-4 -- Remove python-osbs-client - -* Fri Jun 16 2017 Chenxiong Qi - 1.49-3 -- Backport to make osbs optional - -* Mon Mar 27 2017 Chenxiong Qi - 1.49-2 -- Rebuilt to rename pyrpkg to python2-rpkg - -* Wed Feb 22 2017 Chenxiong Qi - 1.49-1 -- More upload PyCURL fixes for EL 7 (merlin) -- Move tag inheritance check into a separate method (cqi) - -* Sat Feb 11 2017 Fedora Release Engineering - 1.48-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Feb 1 2017 Lubomír Sedlář - 1.48-2 -- Backport patch to move tag inheritance check to separate method - -* Thu Dec 22 2016 Chenxiong Qi - 1.48-1 -- Better message when fail to authenticate via Kerberos - #180 (cqi) - -* Mon Dec 19 2016 Chenxiong Qi - 1.47-7 -- Refactor Commands._srpmdetails (cqi) - -* Thu Dec 15 2016 Chenxiong Qi - 1.47-6 -- Add missing import koji.ssl.SSLCommon - BZ#1404102 (cqi) -- Fix upload with old PyCURL - BZ#1241059 (lsedlar) - -* Mon Dec 12 2016 Lubomír Sedlář - 1.47-5 -- Fix default value for krb_rdns options - -* Mon Dec 12 2016 Lubomír Sedlář - 1.47-4 -- Add krb_rdns koji config - -* Thu Dec 08 2016 Lubomír Sedlář - 1.47-3 -- Conflict with too old fedpkg - -* Wed Dec 07 2016 Chenxiong Qi - 1.47-2 -- Fix test that fails on a Koji ARM builder - -* Fri Dec 02 2016 Chenxiong Qi - 1.47-1 -- New upstream release 1.47 - -* Tue Oct 25 2016 Lubomír Sedlář - 1.46-5 -- Allow using gssapi for lookaside caches - -* Tue Sep 06 2016 Lubomír Sedlář - 1.46-4 -- Update dependencies for python-argparse and python-hashlib - -* Thu Aug 25 2016 Chenxiong Qi - 1.46-3 -- python-six-1.9.0 is the minimum version rpkg depends - -* Tue Jul 19 2016 Fedora Release Engineering - 1.46-2 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Fri Jul 15 2016 Chenxiong Qi - 1.46-1 -- Warning untracked patches when push (cqi) -- handle correct spec path when push from outside the repo (cqi) -- Remove support for BuildContainer release task opt (lucarval) - -* Mon Jun 27 2016 Chenxiong Qi - 1.45-2 -- Depend on python-six to be compatible with Python 3 - -* Mon Jun 27 2016 Chenxiong Qi - 1.45-1 -- add missing git-config in the git repo for testing (cqi) -- Don't print download/upload progress outside of TTY (lsedlar) -- Merge #58 `Rebase of #28 with conflict resolved` (cqi) -- Get correct login without TTY (vgologuz) -- Merge #63 `More Python 3 compatibility fixes` (lubomir.sedlar) -- fix broken when non-ASCII in path (cqi) -- More Python 3 compatibility fixes (ville.skytta) -- Fix push called without argument (lsedlar) -- Use logging.warning instead of deprecated logging.warn (ville.skytta) -- Use assertEqual instead of deprecated assertEquals (ville.skytta) -- Spelling fixes (ville.skytta) -- Add missing dependencies to setup.py (ville.skytta) -- Add tests for cloning with a namespace (lsedlar) -- Fix cloning with -B and namespaced module (lsedlar) -- Adjust figuring out the path of the git repo cloned (pingou) -- Only clone into the bare_dir if no target was specified (pingou) -- Add to the CLI the possibility to specify a target folder for the clone - (pingou) -- Add unit-tests for cloning into a specified directory (pingou) -- Let rpkg support cloning into a specified directory (pingou) -- Python 3 fixes (ville.skytta) -- rewrite test_commands.setup_module using git (cqi) -- Merge #40 `push: check for missing patches` (lubomir.sedlar) - -* Thu Jun 02 2016 Lubomír Sedlář - 1.44-1 -- Log container-build task results (lucarval) -- Add support for BuildContainer release task opt (lucarval) -- handle exception from getTaskInfo correctly (cqi) -- fix failure of test_load_spec_where_path_contains_space on RHEL (cqi) -- allow space appearing in path to cloned repo (cqi) -- fix docstring of Commands.compile (cqi) -- Make 'Failed to get ns_module_name from Git url or pushurl' message a warning - (issue #42) (orion) -- pyrpkg: use git remote get-url --push (mathstuf) - -* Wed Mar 23 2016 Lubomír Sedlář - 1.43-1 -- Print warning when using old git configuration (lsedlar) -- Add rpms namespace for checkouts without namespace (lsedlar) - -* Wed Mar 16 2016 Lubomír Sedlář - 1.42-1 -- Fix problems with namespacing (maxamillion) - -* Mon Mar 14 2016 Lubomír Sedlář - 1.41-2 -- Depend on python-osbs directly to avoid python3 - -* Mon Mar 14 2016 Lubomír Sedlář - 1.41-1 -- Update upstream URL (lsedlar) -- Fixes based on lsedlar's feedback (maxamillion) -- add distgit namespacing for non-rpm content (docker, xdg-app, etc) (maxamillion) -- Container-build: dont't allow to build with unpushed changes (araszka) -- Suggest --dist option when can't get OS ver from branch (araszka) -- fix: print all tags without filter (araszka) -- Fix lookaside upload when --path is specified (araszka) -- Lookaside: encoding repo name to UTF-8 (araszka) -- Fix errors on Python 2.6 (lsedlar) -- Add test and docstring to byte offset convertor (araszka) -- Decode .spec file with UTF-8 (araszka) -- 1271741 - add copr command (Recommends: copr-cli) (msuchy) -- Suggest --target option when unknown target (araszka) - -* Thu Feb 04 2016 Fedora Release Engineering - 1.40-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Oct 23 2015 Pavol Babincak - 1.40-1 -- don't use assertRaises (ttomecek) -- refactor test_clone: set clone config in the same test file (pbabinca) -- Fix clone test to not use constructor to set clone_config (pbabinca) -- Fix test clone test (pbabinca) -- Make use of clone_config attribute backwards compatible (pbabinca) - -* Thu Oct 22 2015 Pavol Babincak - 1.39-1 -- Replace deprecated BaseException.message with str(BaseException) (pbabinca) -- Don't print exception message during check repo tests (pbabinca) -- Add support for setting post-clone git config (ville.skytta) - -* Wed Oct 21 2015 Pavol Babincak - 1.38-1 -- Fix parse error (pbabinca) - -* Wed Oct 21 2015 Pavol Babincak - 1.37-1 -- Add support for --nocheck (orion) -- container-build: check repo (ttomecek) -- move repo checking to a method (ttomecek) -- Add 'oxt' and 'xpi' extensions to UPLOADEXTS (dsilakov) -- Switch-branch: give more info about error (araszka) -- Recognize binary files with .oxt and .xpi extensions (dsilakov) -- Container-build: add --nowait option (araszka) -- bash autocompletion: support for command container-build-config (pbabinca) -- Implement getter for autorebuild value, use 'true' and 'false' for values - (bkabrda) -- Add a command and option to change container build setup (bkabrda) -- Edit tests for python2.6 - EL6 (araszka) -- tests: Don't use assertNotIn (araszka) -- tests: Don't use assertRaises as context manager (araszka) -- tests: Don't use check_output (araszka) -- Typo in import --help descriptions (araszka) -- change the url for rpkg (dennis) - -* Wed Jul 15 2015 Pavol Babincak - 1.36-1 -- container-build: support yum repos with --build-with=koji (pbabinca) -- container-build: move --scratch option to koji group (pbabinca) -- Print task info for container-build (pbabinca) - -* Thu Jun 18 2015 Fedora Release Engineering - 1.35-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Tue May 26 2015 Dennis Gilmore - 1.35-2 -- pyrpkg Requires python-osbs - -* Tue May 26 2015 Pavol Babincak - 1.35-1 -- Test for scratch opt in the actual argument of container_build_koji - (pbabinca) -- Move the GitIgnore class to its own module (bochecha) -- Modernize the gitignore-handling code (bochecha) -- gitignore: Properly handle adding matching lines (bochecha) -- Refactor: remove unnecessary code (pbabinca) -- Move custom UnknownTargetError to errors module (pbabinca) -- New command: container-build (jluza) -- lookaside: Take over file uploads (bochecha) -- Remove unnecessary log message (bochecha) -- Stop making source files read-only (bochecha) -- Drop some useless comments (bochecha) -- Only report we're uploading when we actually are (bochecha) -- lookaside: Check if a file already was uploaded (bochecha) -- lookaside: Allow client-side and custom CA certificates (bochecha) -- lookaside: Be more flexible when building the download URL (bochecha) -- lookaside: Use the hashtype for the URL interpolation (bochecha) -- lookaside: Add a progress callback (bochecha) -- lookaside: Handle downloading of source files (bochecha) -- lookaside: Move handling of file verification (bochecha) -- lookaside: Move handling of file hashing (bochecha) -- utils: Add a new warn_deprecated helper (bochecha) -- Add a new lookaside module (bochecha) -- Add a new utils module (bochecha) -- Properly set the logger (bochecha) -- Move our custom errors to their own module (bochecha) -- Don't assume MD5 for the lookaside cache (bochecha) -- Remove dead code (bochecha) -- Use the proper exception syntax (bochecha) - -* Thu Apr 16 2015 Pavol Babincak - 1.34-1 -- tests: Don't use assertIsNone (bochecha) -- tests: Don't use assertRaises as a context manager (bochecha) -- Add long --verbose option to -v, new --debug and -d option (pbabinca) - -* Mon Apr 13 2015 Pavol Babincak - 1.33-1 -- New mockbuild options: --no-clean --no-cleanup-after (jskarvad) -- Catch ssl auth problems and print more helpful messages (pbabinca) -- New exception - rpkgAuthError to allow clients detect auth problems - (pbabinca) - -* Mon Mar 23 2015 Pavol Babincak - 1.32-1 -- tests: Properly open/close the file (bochecha) -- sources: Support writing in either the old or new format (bochecha) -- sources: Reindent code (bochecha) - -* Fri Mar 06 2015 Pavol Babincak - 1.31-1 -- Refactor: remove unused imports from test_sources (pbabinca) -- Don't do several times the same thing (bochecha) -- sources: Forbid mixing hash types (bochecha) -- sources: Move to the new file format (bochecha) -- Rewrite the sources module (bochecha) - -* Wed Dec 03 2014 Pavol Babincak - 1.30-2 -- Use %%{__python} instead of %%{__python2} as it might be not defined - -* Wed Oct 08 2014 Pavol Babincak - 1.30-1 -- add python-nose as BuildRequires as run tests in check section (pbabinca) -- pass extra data to the Commands object via properties instead of __init__() - (mikeb) -- clean up Koji login, and properly support password auth (mikeb) -- add --runas option (mikeb) -- run os.path.expanduser on the kojiconfig attribute in case the path is in the - user's home directory (bstinson) -- Override GIT_EDITOR in tests (pbabinca) -- Massive Flake8 fix (bochecha) -- Fix some more Flake8 issues (bochecha) -- Fix some flake8 issues (bochecha) -- Simplify some code (bochecha) -- Fix typo (bochecha) -- tests: Ensure functioning of Commands.list_tag (bochecha) -- list_tags: Stop executing a command (bochecha) -- list_tags: Fix the docstring (bochecha) -- delete_tag: Stop executing a command (bochecha) -- tests: Ensure functioning of Commands.delete_tag (bochecha) -- add_tag: Run the tag command in the right directory (bochecha) -- tests: Ensure proper functioning of Commands.add_tag (bochecha) -- tests: Factor out some code (bochecha) -- tests: Ensure functioning of Commands.clone (bochecha) -- gitignore: Make sure each line ends with a \n (bochecha) -- gitignore: We're not modified any more after we wrote to disk (bochecha) -- tests: Ensure proper functioning of GitIgnore (bochecha) -- tests: Use nose (bochecha) -- Remove unused import (bochecha) -- Some more PEP8 (bochecha) -- Add classifiers to setup.py (pbabinca) -- Add new sources file parser even with unit tests (pbabinca) -- If source file doesn't exist continue without downloading files (pbabinca) -- Reformat setup.py to be compliant with PEP 8 (pbabinca) - -* Tue Sep 30 2014 Pavol Babincak - 1.28-1 -- Compare fuller remote branch name with local branch before build - -* Fri Sep 26 2014 Pavol Babincak - 1.27-1 -- Explicitly define pyrpkg's client name for man pages (pbabinca) -- Refactor mock results dir to property (pbabinca) -- Add skip-diffs option for import_srpms (lars) -- Properly remove possible .py when creating man pages (lars) -- Process srpm imports to empty repositories more explicitly (pbabinca) -- Make UPLOADEXTS a class variable that can be extended (lars) -- Introduce self.default_branch_remote for fresh clones (pbabinca) -- On self.path change reset properties which could used old value (pbabinca) -- Remove empty entry from git ls-files to not confuse following code (pbabinca) -- Remove file names during srpm import in more extensible way (pbabinca) -- Fix issue causing all current local builds via fedpkg to use md5 rather than - sha256 (spot) -- License replaced with official GPL 2.0 license from gnu.org (pbabinca) -- Allow "rpkg commit -s" (pjones) - -* Tue Jul 29 2014 Pavol Babincak - 1.26-1 -- rpkg doesn't have a python module so use pyrpkg instead (pbabinca) - -* Tue Jul 29 2014 Pavol Babincak - 1.25-1 -- 1.25 release (pbabinca) -- Note to do_imports() doc. (pbabinca) -- Change default option for switch-branch from --no-fetch to --fetch (pbabinca) -- Allow default name of the library to be set by subclasses (pbabinca) -- Use name attribute of cliClient to get configuration (pbabinca) -- Make setup.py executable (pbabinca) -- Use direct git call for fetches (pbabinca) -- Print reason for failed switch-branch (pbabinca) -- Match whole branch with remote name when switching branch (pbabinca) -- Refactor: deduplicate remote & branch_merge (pbabinca) -- De-hardcode 'origin' as the remote name (bochecha) -- Fallback the remote on 'origin' (bochecha) - -* Mon Jun 09 2014 Pavol Babincak - 1.24-1 -- 1.24 release (pbabinca) -- Work around signed srpms (Till Maas) -- Properly raise the error (bochecha) -- Ability to skip NVR construction altogether for builds (pbabinca) -- If we failed to parse NVRE from rpm output use better error message - (pbabinca) -- If command to get NVRE printed anything to stderr log that command (pbabinca) -- Refactor: correctly split string on multi lines (pbabinca) -- Use nvr_check as an optional argument for build (pbabinca) -- 1.23 release (pbabinca) -- Use module_name setter instead of constructor parameter (pbabinca) -- Set pushurl & branch_remote by default (pbabinca) -- 1.22 release (pbabinca) -- Define module name from command line, git url and lastly from spec (pbabinca) -- Revert "Define module name from command line, git url and lastly from spec" - (pbabinca) - -* Sun Jun 08 2014 Fedora Release Engineering - 1.21-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Mon Mar 24 2014 Pavol Babincak - 1.21-1 -- Refactor: split strings on multi lines without spaces from indentation - (pbabinca) -- Refactor: remove spaces at the end of lines (pbabinca) -- Define module name from command line, git url and lastly from spec (pbabinca) -- Option to skip NVR existence check in build system before build (pbabinca) -- Add an 'epoch' property to pyrpkg.Commands (bochecha) -- Fetch remotes before switch-branch by default (pbabinca) -- Protect rhpkg's --arches argument (pbabinca) - -* Tue Feb 18 2014 Dennis Gilmore - 1.20-1 -- read krbservice from the koji config file (dennis) -- We can assume that rpkg is installed if the (ville.skytta) -- clog: Don't require empty line between changelog entries. (ville.skytta) -- Spelling fixes. (ville.skytta) -- expand %%{name} and %%{verion} macros when checking for unused_patches check - for .patch and .diff files as patches (dennis) -- clean up some language ambiguities (dennis) -- clog: Support %%changelog tag written in non-lowercase. (ville.skytta) -- add spkg as a binary file extention rhbz#972903 (dennis) -- Fixed version to 1.19 (pbabinca) -- Don't track spec file here (pbabinca) -- 1.20 (pbabinca) -- Mock config temp dir in the form $(target)-$(localarch).$(mktemp)mockconfig - (pbabinca) - -* Sun Aug 04 2013 Fedora Release Engineering - 1.19-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Mon Apr 08 2013 Pavol Babincak - 1.19-1 -- Generate mock-config for mockbuild if needed (rhbz#856928) (pbabinca) - -* Thu Feb 14 2013 Fedora Release Engineering - 1.18-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Fri Aug 10 2012 Robert Scheck - 1.18-3 -- Require %%{version}-%%{release} rather %%{name}-%%{version} - -* Sat Jul 21 2012 Fedora Release Engineering - 1.18-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Apr 16 2012 Jesse Keating - 1.18-1 -- Use rpmdefines when querying for package name - -* Mon Apr 09 2012 Jesse Keating - 1.17-1 -- Don't assume master branch for chain builds (jkeating) - -* Mon Mar 26 2012 Jesse Keating - 1.16-1 -- Only read from .koji/config (jkeating) - -* Wed Mar 21 2012 Jesse Keating - 1.15-1 -- Fix branch push warning (jkeating) -- Handle CVS based builds when getting build hash (jkeating) - -* Mon Mar 12 2012 Jesse Keating - 1.14-1 -- Warn if the checked out branch cannot be pushed (jkeating) -- Warn if commit or tag fails and we don't push (#21) (jkeating) -- Honor ~/.koji/config (rhbz#785776) (jkeating) -- Update help output for switch-branch (rhbz#741742) (jkeating) - -* Thu Mar 01 2012 Jesse Keating - 1.13-1 -- Return proper exit code from builds (#20) (jkeating) -- Fix md5 option in the build parser (jkeating) -- More completion fixes (jkeating) -- Add mock-config and mockbuild completion (jkeating) -- Simplify test for rpkg availability. (ville.skytta) -- Fix ~/... path completion. (ville.skytta (jkeating) -- Add a --raw option to clog (#15) (jkeating) -- Make things quiet when possible (jkeating) -- Fix up figuring out srpm hash type (jkeating) -- Allow defining an alternative builddir (jkeating) -- Conflict with older fedpkg (jkeating) -- Attempt to automatically set the md5 flag (jkeating) -- Use -C not -c for config. (#752411) (jkeating) -- Don't check gpg sigs when importing srpms (ticket #16) (jkeating) -- Enable md5 option in mockbuild (twaugh) (jkeating) - -* Tue Jan 24 2012 Jesse Keating - 1.12-1 -- Fix mock-config (ticket #13) (jkeating) -- Make md5 a common build argument (jkeating) -- Move arches to be a common build argument (ticket #3) (jkeating) -- Find remote branch to track better (jkeating) - -* Fri Jan 13 2012 Jesse Keating - 1.11-1 -- Change clog output to be more git-like (sochotnicky) -- Fix mockconfig property (bochecha) -- Use only new-style classes everywhere. (bochecha) -- Testing for access before opening a file is unsafe (bochecha) -- Add a gitbuildhash command (jkeating) -- Always make sure you have a absolute path (aj) (jkeating) -- don't try to import brew, just do koji (jkeating) - -* Mon Nov 21 2011 Jesse Keating - 1.10-1 -- Use -C for --config shortcut (jkeating) -- Don't leave a directory on failure (#754082) (jkeating) -- Fix chain build (#754189) (jkeating) -- Don't hardcode brew here (jkeating) - -* Mon Nov 07 2011 Jesse Keating - 1.9-1 -- Don't upload if there is nothing to upload. (jkeating) -- --branch option for import is not supported yet (jkeating) -- Add epilog about mock-config generation (jkeating) -- Don't assume we can create a folder named after the module. (bochecha) -- Fix passing the optional mock root to mockbuild (bochecha) -- Add missing registration for mockbuild target (bochecha) -- Make the clean target work with --path. (bochecha) -- Fix typo in a comment. (bochecha) -- Fix syntax error in main script. (bochecha) -- Fix typo. (bochecha) - -* Fri Oct 28 2011 Jesse Keating - 1.8-1 -- Get more detailed error output from lookaside (jkeating) -- Move the curl call out to it's own function (jkeating) -- Hide build_common from help/usage (jkeating) -- Fix the help command (jkeating) - -* Tue Oct 25 2011 Jesse Keating - 1.7-1 -- Support a manually specified mock root (jkeating) -- Add a mock-config subcommand (jkeating) -- Fix a traceback on error. (jkeating) -- Remove debugging code (jkeating) -- More git api updates (jkeating) -- Add topurl as a koji config and property (jkeating) -- Add a mockconfig property (jkeating) -- Turn the latest commit into a property (jkeating) - -* Tue Sep 20 2011 Jesse Keating - 1.6-1 -- Allow name property to load by itself (jkeating) - -* Mon Sep 19 2011 Jesse Keating - 1.5-1 -- Fix tag listing (#717528) (jkeating) -- Revamp n-v-r property loading (#721389) (jkeating) -- Don't use os.getlogin (jkeating) -- Code style changes (jkeating) -- Allow fedpkg lint to be configurable and to check spec file. (pingou) -- Handle non-scratch srpm builds better (jkeating) - -* Wed Aug 17 2011 Jesse Keating - 1.4-1 -- Be more generic when no spec file is found (jkeating) -- Hint about use of git status when dirty (jkeating) -- Don't use print when we can log.info it (jkeating) -- Don't exit from a library (jkeating) -- Do the rpm query in our module path (jkeating) -- Use git's native ability to checkout a branch (jkeating) -- Use keyword arg with clone (jkeating) -- Allow the on-demand generation of an srpm (jkeating) -- Fix up exit codes (jkeating) - -* Mon Aug 01 2011 Jesse Keating - 1.3-1 -- Fix a debug string (jkeating) -- Set the right property (jkeating) -- Make sure we have a default hashtype (jkeating) -- Use underscore for the dist tag (jkeating) -- Fix the kojiweburl property (jkeating) - -* Wed Jul 20 2011 Jesse Keating - 1.2-1 -- Fill out the krb_creds function (jkeating) -- Fix the log message (jkeating) -- site_setup is no longer needed (jkeating) -- Remove some rhtisms (jkeating) -- Wire up the patch command in client code (jkeating) -- Add a patch command (jkeating) - -* Fri Jun 17 2011 Jesse Keating - 1.1-2 -- Use version macro in files - -* Fri Jun 17 2011 Jesse Keating - 1.1-1 -- New tarball release with correct license files - -* Fri Jun 17 2011 Jesse Keating - 1.0-2 -- Fix up things found in review - -* Tue Jun 14 2011 Jesse Keating - 1.0-1 -- Initial package diff --git a/sources b/sources deleted file mode 100644 index d98b3f9..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (rpkg-1.66.tar.gz) = 14a6947146cd5a8f9baa2d3fba0a37bb0d7ab5bd69e29c04282c882e1f249831c8faf443d4dd94adfe1bf385f6525cefef84b10d44a3949d815fd293d5f5fccc