public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/rpkg] 1.70-1: Backporting some fixes and features
Date: Mon, 10 Aug 2026 21:44:09 GMT	[thread overview]
Message-ID: <178639824949.1.10041289342553466743.rpms-rpkg-667c617b5307@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/rpkg
            Branch : 1.70-1
            Commit : 667c617b5307376cd5ae162059243abeca2040bc
            Author : Ondřej Nosek <onosek@redhat.com>
            Date   : 2019-10-25T13:16:05+00:00
            Stats  : +362/-1 in 6 file(s)
            URL    : https://src.fedoraproject.org/rpms/rpkg/c/667c617b5307376cd5ae162059243abeca2040bc?branch=1.70-1

            Log:
            Backporting some fixes and features

- container-build: add --isolated and --koji-parent-build arguments
- Pass skip_build option to buildContainer
- Reuse koji_cli.lib.unique_path

Signed-off-by: Ondřej Nosek <onosek@redhat.com>

---
diff --git a/0001-Reuse-koji_cli.lib.unique_path.patch b/0001-Reuse-koji_cli.lib.unique_path.patch
new file mode 100644
index 0000000..45d3bb4
--- /dev/null
+++ b/0001-Reuse-koji_cli.lib.unique_path.patch
@@ -0,0 +1,48 @@
+From 0ee52cf747e218008984d604c468f9e1515f1ef9 Mon Sep 17 00:00:00 2001
+From: Chenxiong Qi <cqi@redhat.com>
+Date: Mon, 15 Apr 2019 11:17:21 +0800
+Subject: [PATCH 1/5] Reuse koji_cli.lib.unique_path
+
+Call this method instead of constructing the path by rpkg itself.
+
+Merges: https://pagure.io/rpkg/pull-request/336
+
+Signed-off-by: Chenxiong Qi <cqi@redhat.com>
+---
+ pyrpkg/cli.py | 11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
+index 6b584ae..7ab146d 100644
+--- a/pyrpkg/cli.py
++++ b/pyrpkg/cli.py
+@@ -18,11 +18,8 @@ import argparse
+ import getpass
+ import logging
+ import os
+-import random
+ import re
+-import string
+ import sys
+-import time
+ from gettext import gettext as _  # For `_ArgumentParser'
+ 
+ import requests
+@@ -1646,11 +1643,9 @@ see API KEY section of copr-cli(1) man page.
+         callback = None
+         if not self.args.q:
+             callback = koji_cli.lib._progress_callback
+-        # define a unique path for this upload.  Stolen from /usr/bin/koji
+-        uniquepath = 'cli-build/%r.%s' % (
+-            time.time(),
+-            ''.join([random.choice(string.ascii_letters) for i in range(8)])
+-        )
++        # Define a unique path for this upload. Learned from koji to use prefix
++        # cli-build.
++        uniquepath = koji_cli.lib.unique_path('cli-build')
+         if not name:
+             name = os.path.basename(file)
+         # Should have a try here, not sure what errors we'll get yet though
+-- 
+2.21.0
+

diff --git a/0002-Pass-skip_build-option-to-buildContainer.patch b/0002-Pass-skip_build-option-to-buildContainer.patch
new file mode 100644
index 0000000..55580a1
--- /dev/null
+++ b/0002-Pass-skip_build-option-to-buildContainer.patch
@@ -0,0 +1,29 @@
+From 48e3ce2f754ba9b30b195a3c48ffdfb2b147d1ab Mon Sep 17 00:00:00 2001
+From: Robert Cerven <rcerven@redhat.com>
+Date: Mon, 7 Oct 2019 21:32:46 +0200
+Subject: [PATCH 2/5] Pass skip_build option to buildContainer
+
+* OSBS-7711
+
+Signed-off-by: Robert Cerven <rcerven@redhat.com>
+---
+ pyrpkg/__init__.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 68aceb2..8e0960b 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -3126,7 +3126,8 @@ class Commands(object):
+ 
+             task_opts = {}
+             for key in ('scratch', 'name', 'version', 'release',
+-                        'yum_repourls', 'git_branch', 'signing_intent', 'compose_ids'):
++                        'yum_repourls', 'git_branch', 'signing_intent', 'compose_ids',
++                        'skip_build'):
+                 if key in opts:
+                     task_opts[key] = opts[key]
+ 
+-- 
+2.21.0
+

diff --git a/0003-container-build-add-isolated-argument.patch b/0003-container-build-add-isolated-argument.patch
new file mode 100644
index 0000000..ddc9f71
--- /dev/null
+++ b/0003-container-build-add-isolated-argument.patch
@@ -0,0 +1,112 @@
+From 174f61ce13d47c84a1a9f697c7c6b7c817db73f7 Mon Sep 17 00:00:00 2001
+From: Ken Dreyer <kdreyer@redhat.com>
+Date: Wed, 25 Sep 2019 11:56:21 -0600
+Subject: [PATCH 3/5] container-build: add --isolated argument
+
+Add support for a new "--isolated" argument to the container-build
+sub-command.
+
+Isolated builds will only update the {version}-{release} unique tag and
+the primary tag in target container registry. Also, OSBS's bump_release
+plugin will ignore isolated builds.
+
+Users must specify a --build-release argument when the use the
+--isolated argument.
+
+Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
+---
+ pyrpkg/__init__.py |  2 +-
+ pyrpkg/cli.py      | 13 +++++++++++++
+ tests/test_cli.py  |  4 ++++
+ 3 files changed, 18 insertions(+), 1 deletion(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 8e0960b..1aa1c2b 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -3125,7 +3125,7 @@ class Commands(object):
+             source = self.construct_build_url()
+ 
+             task_opts = {}
+-            for key in ('scratch', 'name', 'version', 'release',
++            for key in ('scratch', 'name', 'version', 'release', 'isolated',
+                         'yum_repourls', 'git_branch', 'signing_intent', 'compose_ids',
+                         'skip_build'):
+                 if key in opts:
+diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
+index 7ab146d..0845d99 100644
+--- a/pyrpkg/cli.py
++++ b/pyrpkg/cli.py
+@@ -1544,6 +1544,13 @@ see API KEY section of copr-cli(1) man page.
+             default=None,
+             help="Specify a release value for this build's NVR")
+ 
++        parser.add_argument(
++            '--isolated',
++            help='Do not auto-increment the release value or update'
++                 ' additional tags in the registry. You must use the'
++                 ' --build-release argument',
++            action="store_true")
++
+         parser.add_argument(
+             '--scratch',
+             help='Scratch build',
+@@ -1981,6 +1988,7 @@ see API KEY section of copr-cli(1) man page.
+         opts = {"scratch": self.args.scratch,
+                 "quiet": self.args.q,
+                 "release": self.args.build_release,
++                "isolated": self.args.isolated,
+                 "git_branch": self.cmd.branch_merge,
+                 "arches": self.args.arches,
+                 "skip_build": self.args.skip_build}
+@@ -1995,6 +2003,11 @@ see API KEY section of copr-cli(1) man page.
+                 "signing_intent": self.args.signing_intent,
+             })
+ 
++        if self.args.isolated and not self.args.build_release:
++            self.container_build_parser.error(
++                'missing --build-release: using --isolated requires'
++                ' --build-release option')
++
+         section_name = "%s.container-build" % self.name
+         err_msg = "Missing %(option)s option in [%(plugin.section)s] section. " \
+                   "Using %(option)s from [%(root.section)s]"
+diff --git a/tests/test_cli.py b/tests/test_cli.py
+index ae87030..35b37d6 100644
+--- a/tests/test_cli.py
++++ b/tests/test_cli.py
+@@ -224,6 +224,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'scratch': False,
+                 'quiet': False,
+                 'release': None,
++                'isolated': False,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -254,6 +255,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'scratch': False,
+                 'quiet': False,
+                 'release': None,
++                'isolated': False,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -293,6 +295,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'scratch': False,
+                 'quiet': False,
+                 'release': None,
++                'isolated': False,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -350,6 +353,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'scratch': False,
+                 'quiet': False,
+                 'release': None,
++                'isolated': False,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+                 'skip_build': False
+-- 
+2.21.0
+

diff --git a/0004-tests-add-container-build-isolated-test.patch b/0004-tests-add-container-build-isolated-test.patch
new file mode 100644
index 0000000..d3994b3
--- /dev/null
+++ b/0004-tests-add-container-build-isolated-test.patch
@@ -0,0 +1,56 @@
+From 10de8c40d2f2964ce0c4f643a143c59e5fa11f94 Mon Sep 17 00:00:00 2001
+From: Ken Dreyer <kdreyer@redhat.com>
+Date: Fri, 11 Oct 2019 09:42:22 -0600
+Subject: [PATCH 4/5] tests: add container-build --isolated test
+
+Verify the behavior of the container-build "--isolated" option.
+
+Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
+---
+ tests/test_cli.py | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+diff --git a/tests/test_cli.py b/tests/test_cli.py
+index 35b37d6..fa18647 100644
+--- a/tests/test_cli.py
++++ b/tests/test_cli.py
+@@ -271,6 +271,36 @@ class TestContainerBuildWithKoji(CliTestCase):
+             flatpak=False
+         )
+ 
++    def test_isolated(self):
++        cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'container-build',
++                   '--isolated', '--build-release', '99']
++
++        with patch('sys.argv', new=cli_cmd):
++            cli = self.new_cli()
++            cli.container_build_koji()
++
++        self.mock_container_build_koji.assert_called_once_with(
++            False,
++            opts={
++                'scratch': False,
++                'quiet': False,
++                'release': '99',
++                'isolated': True,
++                'yum_repourls': None,
++                'git_branch': 'eng-rhel-7',
++                'arches': None,
++                'signing_intent': None,
++                'compose_ids': None,
++                'skip_build': False
++            },
++            kojiconfig=None,
++            kojiprofile='koji',
++            build_client=utils.build_client,
++            koji_task_watcher=koji_cli.lib.watch_tasks,
++            nowait=False,
++            flatpak=False
++        )
++
+     def test_using_deprecated_kojiconfig(self):
+         """test_build_using_deprecated_kojiconfig
+ 
+-- 
+2.21.0
+

diff --git a/0005-container-build-add-koji-parent-build-argument.patch b/0005-container-build-add-koji-parent-build-argument.patch
new file mode 100644
index 0000000..4efcb65
--- /dev/null
+++ b/0005-container-build-add-koji-parent-build-argument.patch
@@ -0,0 +1,106 @@
+From 4b48dbcba45bf3ad44a3179380972b3ad6997616 Mon Sep 17 00:00:00 2001
+From: Ken Dreyer <kdreyer@redhat.com>
+Date: Fri, 11 Oct 2019 09:42:08 -0600
+Subject: [PATCH 5/5] container-build: add --koji-parent-build argument
+
+Add support for a new "--koji-parent-build" argument to the
+container-build sub-command.
+
+OSBS allows users to dynamically override the Dockerfile's "FROM" image
+at build time. This allows you to build your container against a
+specific parent image without pushing changes to dist-git.
+
+Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
+---
+ pyrpkg/__init__.py | 4 ++--
+ pyrpkg/cli.py      | 7 +++++++
+ tests/test_cli.py  | 5 +++++
+ 3 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 1aa1c2b..b139fe0 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -3126,8 +3126,8 @@ class Commands(object):
+ 
+             task_opts = {}
+             for key in ('scratch', 'name', 'version', 'release', 'isolated',
+-                        'yum_repourls', 'git_branch', 'signing_intent', 'compose_ids',
+-                        'skip_build'):
++                        'koji_parent_build', 'yum_repourls', 'git_branch',
++                        'signing_intent', 'compose_ids', 'skip_build'):
+                 if key in opts:
+                     task_opts[key] = opts[key]
+ 
+diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
+index 0845d99..0036136 100644
+--- a/pyrpkg/cli.py
++++ b/pyrpkg/cli.py
+@@ -1551,6 +1551,12 @@ see API KEY section of copr-cli(1) man page.
+                  ' --build-release argument',
+             action="store_true")
+ 
++        parser.add_argument(
++            '--koji-parent-build',
++            default=None,
++            help='Specify a Koji NVR for the parent container image. This'
++                 ' will override the "FROM" value in your Dockerfile.')
++
+         parser.add_argument(
+             '--scratch',
+             help='Scratch build',
+@@ -1989,6 +1995,7 @@ see API KEY section of copr-cli(1) man page.
+                 "quiet": self.args.q,
+                 "release": self.args.build_release,
+                 "isolated": self.args.isolated,
++                "koji_parent_build": self.args.koji_parent_build,
+                 "git_branch": self.cmd.branch_merge,
+                 "arches": self.args.arches,
+                 "skip_build": self.args.skip_build}
+diff --git a/tests/test_cli.py b/tests/test_cli.py
+index fa18647..0868a30 100644
+--- a/tests/test_cli.py
++++ b/tests/test_cli.py
+@@ -225,6 +225,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'quiet': False,
+                 'release': None,
+                 'isolated': False,
++                'koji_parent_build': None,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -256,6 +257,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'quiet': False,
+                 'release': None,
+                 'isolated': False,
++                'koji_parent_build': None,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -286,6 +288,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'quiet': False,
+                 'release': '99',
+                 'isolated': True,
++                'koji_parent_build': None,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -326,6 +329,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'quiet': False,
+                 'release': None,
+                 'isolated': False,
++                'koji_parent_build': None,
+                 'yum_repourls': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+@@ -384,6 +388,7 @@ class TestContainerBuildWithKoji(CliTestCase):
+                 'quiet': False,
+                 'release': None,
+                 'isolated': False,
++                'koji_parent_build': None,
+                 'git_branch': 'eng-rhel-7',
+                 'arches': None,
+                 'skip_build': False
+-- 
+2.21.0
+

diff --git a/rpkg.spec b/rpkg.spec
index a05c6f7..67ab561 100644
--- a/rpkg.spec
+++ b/rpkg.spec
@@ -4,7 +4,7 @@
 
 Name:           rpkg
 Version:        1.59
-Release:        1%{?dist}
+Release:        2%{?dist}
 
 Summary:        Python library for interacting with rpm+git
 License:        GPLv2+ and LGPLv2
@@ -21,6 +21,11 @@ Source0:        https://pagure.io/releases/rpkg/%{name}-%{version}.tar.gz
 # 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-Reuse-koji_cli.lib.unique_path.patch
+Patch2:         0002-Pass-skip_build-option-to-buildContainer.patch
+Patch3:         0003-container-build-add-isolated-argument.patch
+Patch4:         0004-tests-add-container-build-isolated-test.patch
+Patch5:         0005-container-build-add-koji-parent-build-argument.patch
 
 %if 0%{?fedora} || 0%{?rhel} > 7
 # Enable python3 build by default
@@ -271,6 +276,11 @@ nosetests tests
 
 
 %changelog
+* Fri Oct 25 2019 Ondrej Nosek <onosek@redhat.com> - 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 <onosek@redhat.com> - 1.59-1
 - Add argument to skip build option for container-build (rcerven)
 - Sorting imports (onosek)

             reply	other threads:[~2026-08-10 21:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-10 21:44  [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-08-10 21:44 [rpms/rpkg] 1.70-1: Backporting some fixes and features 

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178639824949.1.10041289342553466743.rpms-rpkg-667c617b5307@fedoraproject.org \
    --to=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox