public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/rpkg] 1.70-1: Patches for undo rpmautospec processing
Date: Mon, 10 Aug 2026 21:44:39 GMT	[thread overview]
Message-ID: <178639827980.1.4891894449742997938.rpms-rpkg-b34edfe5f21f@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/rpkg
            Branch : 1.70-1
            Commit : b34edfe5f21fedb41e49e7dd256008617f0e26dc
            Author : Ondřej Nosek <onosek@redhat.com>
            Date   : 2023-11-21T23:20:21+00:00
            Stats  : +488/-2 in 4 file(s)
            URL    : https://src.fedoraproject.org/rpms/rpkg/c/b34edfe5f21fedb41e49e7dd256008617f0e26dc?branch=1.70-1

            Log:
            Patches for undo rpmautospec processing

- Patch: *pkg import: Don't delete changelog generated by `rpmautospec convert`
- Patch: *pkg import: Undo rpmautospec processing
- Patch: Unittests for "Undo rpmautospec processing"

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

---
diff --git a/0029-pkg-import-Don-t-delete-changelog-generated-by-rpmau.patch b/0029-pkg-import-Don-t-delete-changelog-generated-by-rpmau.patch
new file mode 100644
index 0000000..7f9685a
--- /dev/null
+++ b/0029-pkg-import-Don-t-delete-changelog-generated-by-rpmau.patch
@@ -0,0 +1,30 @@
+From 2fdb7806aa947d4997aea6cb33f3e893a2b7d876 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Thu, 5 Oct 2023 17:03:39 +0200
+Subject: [PATCH 1/5] *pkg import: Don't delete changelog generated by
+ `rpmautospec convert`
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Miro Hrončok <miro@hroncok.cz>
+---
+ pyrpkg/__init__.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 5928d47..b257fec 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -2040,7 +2040,7 @@ class Commands(object):
+         # not be removed by import command.
+         reserved_ourfiles = [
+             'README.md', 'gating.yaml', 'tests/*', '*.rpmlintrc',
+-            '.fmf/*', '*.fmf']
++            '.fmf/*', '*.fmf', 'changelog']
+ 
+         # Get a list of files we're currently tracking
+         ourfiles = self.repo.git.ls_files().split('\n')
+-- 
+2.41.0
+

diff --git a/0030-pkg-import-Undo-rpmautospec-processing.patch b/0030-pkg-import-Undo-rpmautospec-processing.patch
new file mode 100644
index 0000000..131e076
--- /dev/null
+++ b/0030-pkg-import-Undo-rpmautospec-processing.patch
@@ -0,0 +1,162 @@
+From ebb5c4b82caec5160544fdbb2d539fd1b5a3abfb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Thu, 5 Oct 2023 16:59:22 +0200
+Subject: [PATCH 2/5] *pkg import: Undo rpmautospec processing
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes https://pagure.io/fedpkg/issue/527
+
+Depends-on: https://pagure.io/fedora-infra/rpmautospec/pull-request/312
+
+Signed-off-by: Miro Hrončok <miro@hroncok.cz>
+---
+ pyrpkg/__init__.py | 22 ++++++-------
+ pyrpkg/utils.py    | 77 ++++++++++++++++++++++++++++++++++++++++------
+ 2 files changed, 78 insertions(+), 21 deletions(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index b257fec..f562e71 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -53,7 +53,7 @@ from pyrpkg.sources import SourcesFile
+ from pyrpkg.spec import SpecFile
+ from pyrpkg.utils import (cached_property, extract_srpm, find_me,
+                           is_file_tracked, is_lookaside_eligible_file,
+-                          log_result, spec_file_processed_by_rpmautospec)
++                          log_result, spec_file_undo_rpmautospec)
+ 
+ from .gitignore import GitIgnore
+ 
+@@ -1473,16 +1473,6 @@ class Commands(object):
+                     uploadfiles.append(file)
+                 else:
+                     files.append(file)
+-
+-                # Check all specfiles in SRPM. At this point (the 'import' command can run under
+-                # 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))
+-
+         finally:
+             shutil.rmtree(target_dir)
+ 
+@@ -2081,6 +2071,16 @@ class Commands(object):
+             os.chdir(oldpath)
+             raise rpkgError("Got an error from rpm2cpio: %s" % err)
+ 
++        # Undo rpmautospec from all the spec files.
++        # At this point (the 'import' command can run under the dist-git repo
++        # without any specfiles - right after initialization) we are
++        # not able determine which the main specfile is.
++        if not self.allow_pre_generated_srpm:
++            for file in files:
++                if file.endswith('.spec') and not file.startswith('.'):
++                    if spec_file_undo_rpmautospec(file):
++                        self.log.debug("rpmautospec processing removed from {0}".format(file))
++
+         # And finally add all the files we know about (and our stock files)
+         for file in ('.gitignore', 'sources'):
+             if not os.path.exists(file):
+diff --git a/pyrpkg/utils.py b/pyrpkg/utils.py
+index 3337bdb..f3c8b25 100644
+--- a/pyrpkg/utils.py
++++ b/pyrpkg/utils.py
+@@ -336,22 +336,79 @@ def is_lookaside_eligible_file(file_name, dir_path=None):
+     return encoding == "binary"
+ 
+ 
+-def spec_file_processed_by_rpmautospec(file_name, dir_path=None):
++def _replace_lines(lines, startline, endline, replacement_lines=None, strip_endline=False):
++    replacement_lines = replacement_lines or []
++    try:
++        start = lines.index(startline)
++        end = lines.index(endline, start)
++    except ValueError:
++        # if both are missing, nothing to do, all good
++        # if only one of them is present, we better not touch it
++        return lines, False
++    else:
++        # rpmautospec adds an empty line after the end
++        # we want to remove it, but only if it is actually empty
++        if strip_endline and lines[end+1] == "\n":
++            end += 1
++        lines = lines[:start] + replacement_lines + lines[end+1:]
++        return lines, True
++
++
++def spec_file_undo_rpmautospec(file_name, dir_path=None):
++    """
++    Given a path to specfile, undo changes generated by rpmautospec.
++    Iff there is something to undo, the specfile will be overwritten.
++
++    Namely:
++
++     1. Removes everything between the following lines:
++          ## START: Set by rpmautospec
++          ## END: Set by rpmautospec
++     2. Replaces everything between the following lines with %autochangelog:
++          ## START: Generated by rpmautospec
++          ## END: Generated by rpmautospec
++
++    Both of the steps only happen once. If the specfile contains multiple such sections,
++    only the first one is removed/replaced.
++
++    The saved spec file is not guaranteed to be bit-by-bit identical with the original
++    spec file used as an input to rpmautospec.
++    However, subsequent repeated conversions there and back should be quite stable.
++
++    The return value says whether the specfile was overwritten.
++    """
+     file_path = os.path.join(dir_path or "", file_name)
+ 
+     try:
+-        contents = open(file_path).readlines()
++        with open(file_path) as f:
++            contents = f.readlines()
+     except Exception:
+-        # if we can't read it, let's assume the answer is "no".
++        # if we can't read it, let's do nothing
+         return False
+ 
+-    # Check for the %autorelease header prepended to the file
+-    if any('START: Set by rpmautospec' in line for line in contents[:10]):
++    # remove the generated macro section near the beginning of the specfile
++    contents, was_removed = _replace_lines(
++        contents,
++        '## START: Set by rpmautospec\n',
++        '## END: Set by rpmautospec\n',
++        strip_endline=True)
++
++    # replace the generated changelog with %autochangelog
++    # note that this does not generally produce content identical to the original
++    # e.g. the macro could have been conditionalized or in curly brackets
++    # most importantly, the %changelog section might have been omitted entirely
++    # however, this should be Good Enough for most of us
++    contents, was_replaced = _replace_lines(
++        contents,
++        '## START: Generated by rpmautospec\n',
++        '## END: Generated by rpmautospec\n',
++        ['%autochangelog\n'])
++
++    # finally, replace the spec if needed
++    # if we cannot write it, better blow up
++    if was_removed or was_replaced:
++        with open(file_path, 'w') as f:
++            f.writelines(contents)
+         return True
+ 
+-    # It seems that currently there's no mechanism to detect
+-    # %autochangelog processing. But most packages would use both
+-    # %autochangelog and %autorelease together, so we should catch
+-    # most cases by checking for %autorelease only.
+-    # https://pagure.io/fedora-infra/rpmautospec/issue/269
+     return False
+-- 
+2.41.0
+

diff --git a/0031-Unittests-for-Undo-rpmautospec-processing.patch b/0031-Unittests-for-Undo-rpmautospec-processing.patch
new file mode 100644
index 0000000..d3c3469
--- /dev/null
+++ b/0031-Unittests-for-Undo-rpmautospec-processing.patch
@@ -0,0 +1,289 @@
+From 2bd726d20f3e5d1502a2191d0d263d0b6132982b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
+Date: Thu, 12 Oct 2023 01:40:36 +0200
+Subject: [PATCH 3/5] Unittests for "Undo rpmautospec processing"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Merges: https://pagure.io/rpkg/pull-request/699
+Signed-off-by: Ondřej Nosek <onosek@redhat.com>
+---
+ Jenkinsfile                                   |  2 +-
+ jenkins_test.dockerfile                       |  3 +-
+ pyrpkg/utils.py                               |  6 +--
+ tests/fixtures/docpkg/docpkg-rpmautospec.spec | 53 +++++++++++++++++++
+ tests/test_cli.py                             | 40 +++++++-------
+ tests/test_utils.py                           | 36 ++++++++++++-
+ 6 files changed, 116 insertions(+), 24 deletions(-)
+ create mode 100644 tests/fixtures/docpkg/docpkg-rpmautospec.spec
+
+diff --git a/Jenkinsfile b/Jenkinsfile
+index 7b6742f..e6d6394 100644
+--- a/Jenkinsfile
++++ b/Jenkinsfile
+@@ -50,7 +50,7 @@ git fetch proposed
+ git checkout "origin/$params.BRANCH_TO"
+ git merge --no-ff "proposed/$params.BRANCH" -m "Merge PR"
+ 
+-podman run --rm -v .:/src:Z quay.io/exd-guild-source-tools/rpkg-test:latest tox -e py36,py39,flake8,bandit --workdir /tmp/tox ${TOX_POSARGS}
++podman run --rm -v .:/src:Z quay.io/exd-guild-source-tools/rpkg-test:latest tox -e py36,py39,py311,flake8,bandit --workdir /tmp/tox ${TOX_POSARGS}
+ # disabled py27 environment for now; keep just flake8 for Python 2
+ podman run --rm -v .:/src:Z quay.io/exd-guild-source-tools/rpkg-test-py2:latest tox -e flake8python2 --workdir /tmp/tox ${TOX_POSARGS}
+                         """
+diff --git a/jenkins_test.dockerfile b/jenkins_test.dockerfile
+index df8762e..d217a55 100644
+--- a/jenkins_test.dockerfile
++++ b/jenkins_test.dockerfile
+@@ -1,4 +1,4 @@
+-FROM fedora:37
++FROM fedora:38
+ LABEL \
+     name="rpkg test" \
+     description="Run tests using tox with Python 3" \
+@@ -9,6 +9,7 @@ RUN dnf -y update && dnf -y install \
+         python3-devel \
+         python3-openidc-client \
+         python3-libmodulemd \
++        python3-rpmautospec \
+         python3-setuptools \
+         rpmlint \
+         rpm-build \
+diff --git a/pyrpkg/utils.py b/pyrpkg/utils.py
+index f3c8b25..fc01c7d 100644
+--- a/pyrpkg/utils.py
++++ b/pyrpkg/utils.py
+@@ -104,7 +104,7 @@ def log_result(log_func, result, level=0, indent=2):
+     elif isinstance(result, dict):
+         for key, value in result.items():
+             _log_value(log_func, key, level, indent, ':')
+-            log_result(log_func, value, level+1)
++            log_result(log_func, value, level + 1)
+     else:
+         _log_value(log_func, result, level, indent)
+ 
+@@ -348,9 +348,9 @@ def _replace_lines(lines, startline, endline, replacement_lines=None, strip_endl
+     else:
+         # rpmautospec adds an empty line after the end
+         # we want to remove it, but only if it is actually empty
+-        if strip_endline and lines[end+1] == "\n":
++        if strip_endline and lines[end + 1] == "\n":
+             end += 1
+-        lines = lines[:start] + replacement_lines + lines[end+1:]
++        lines = lines[:start] + replacement_lines + lines[end + 1:]
+         return lines, True
+ 
+ 
+diff --git a/tests/fixtures/docpkg/docpkg-rpmautospec.spec b/tests/fixtures/docpkg/docpkg-rpmautospec.spec
+new file mode 100644
+index 0000000..5974b57
+--- /dev/null
++++ b/tests/fixtures/docpkg/docpkg-rpmautospec.spec
+@@ -0,0 +1,53 @@
++## START: Set by rpmautospec
++## (rpmautospec version 0.3.5)
++## RPMAUTOSPEC: autorelease, autochangelog
++%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
++    release_number = 8;
++    base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
++    print(release_number + base_release_number - 1);
++}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
++## END: Set by rpmautospec
++
++# autogenerated specfile
++Summary: Dummy summary
++Name: docpkg-rpmautospec
++Version: 0.2
++Release: 1%{dist}
++License: GPL
++Group: Applications/Productivity
++
++BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
++Source0: hello-world.txt
++Source1: docpkg.tar.gz
++Source2: source-without-extension
++# added empty dir just to test import srpm `fedpkg import`. It should skip the dir.
++Source3: EMPTY_DIR
++
++%description
++This is a dummy description.
++
++%prep
++cp %{SOURCE0} .
++
++%build
++
++%clean
++rm -rf $$RPM_BUILD_ROOT
++%install
++rm -rf $RPM_BUILD_ROOT
++mkdir $RPM_BUILD_ROOT
++mkdir -p $RPM_BUILD_ROOT/usr/share/doc
++cp %{SOURCE0} $RPM_BUILD_ROOT/usr/share/doc/hello-world.txt
++
++%files
++%doc "/usr/share/doc/hello-world.txt"
++
++%changelog
++## START: Generated by rpmautospec
++* Sun Jan  1 2006 tester <tester@example.com> - 0.2-1
++- - New release 0.2-1
++
++* Sun Jan  1 2006 John Doe <jdoe@example.com> - 0.2-1
++- Initial version
++
++## END: Generated by rpmautospec
+diff --git a/tests/test_cli.py b/tests/test_cli.py
+index f2e68df..3d90f36 100644
+--- a/tests/test_cli.py
++++ b/tests/test_cli.py
+@@ -1706,10 +1706,10 @@ class TestFailureImportSrpm(CliTestCase):
+ class TestImportSrpm(LookasideCacheMock, CliTestCase):
+ 
+     @staticmethod
+-    def build_srpm(srcrpmdir):
++    def build_srpm(srcrpmdir, specfile_name='docpkg.spec'):
+         """Build a fake SRPM used by this test case"""
+         docpkg_dir = os.path.join(fixtures_dir, 'docpkg')
+-        specfile = os.path.join(docpkg_dir, 'docpkg.spec')
++        specfile = os.path.join(docpkg_dir, specfile_name)
+         rpmbuild = [
+             'rpmbuild', '-bs',
+             '--define', '_topdir {0}'.format(srcrpmdir),
+@@ -1735,6 +1735,9 @@ class TestImportSrpm(LookasideCacheMock, CliTestCase):
+ 
+         self.srcrpmdir = tempfile.mkdtemp(prefix='test-import-srpm-topdir-')
+         self.srpm_file = TestImportSrpm.build_srpm(self.srcrpmdir)
++        self.srpm_file_rpmautospec = TestImportSrpm.build_srpm(
++            self.srcrpmdir,
++            specfile_name='docpkg-rpmautospec.spec')
+ 
+         self.chaos_repo = tempfile.mkdtemp(prefix='rpkg-tests-chaos-repo-')
+         cmds = (
+@@ -1827,40 +1830,29 @@ 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):
++    def test_import_srpm_not_processed_by_rpmautospec(self):
+         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):
++    def test_import_srpm_processed_by_rpmautospec(self):
+         cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg',
+-                   'import', '--skip-diffs', self.srpm_file]
++                   'import', '--skip-diffs', self.srpm_file_rpmautospec]
+ 
+-        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()
++                cli.import_srpm()
+ 
+-    @patch('pyrpkg.spec_file_processed_by_rpmautospec')
++    @patch('pyrpkg.spec_file_undo_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
+@@ -1868,6 +1860,18 @@ class TestImportSrpm(LookasideCacheMock, CliTestCase):
+                 cli.import_srpm()  # no exception should be raised
+             rpmautospec_processed.assert_not_called()
+ 
++    @patch('pyrpkg.spec_file_undo_rpmautospec')
++    def test_import_srpm_processed_by_rpmautospec_not_allowed(self, rpmautospec_processed):
++        cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg',
++                   'import', '--skip-diffs', self.srpm_file]
++
++        with patch('sys.argv', new=cli_cmd):
++            cli = self.new_cli()
++            cli.cmd.allow_pre_generated_srpm = False  # or None
++            with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload):
++                cli.import_srpm()  # no exception should be raised
++            rpmautospec_processed.assert_called_once()
++
+ 
+ class TestMockbuild(CliTestCase):
+     """Test mockbuild command"""
+diff --git a/tests/test_utils.py b/tests/test_utils.py
+index 34188c5..0cd62d8 100644
+--- a/tests/test_utils.py
++++ b/tests/test_utils.py
+@@ -1,15 +1,22 @@
+ import os
++import shutil
+ import tempfile
+ import unittest
+ import warnings
+ 
++try:
++    import rpmautospec
++except ImportError:
++    rpmautospec = None
++
+ try:
+     from unittest import mock
+ except ImportError:
+     import mock
+ 
+ from pyrpkg.utils import (cached_property, is_file_in_directory,
+-                          is_file_tracked, log_result, warn_deprecated)
++                          is_file_tracked, log_result,
++                          spec_file_undo_rpmautospec, warn_deprecated)
+ 
+ from utils import CommandTestCase
+ 
+@@ -287,3 +294,30 @@ class FileTrackedTestCase(CommandTestCase):
+                 self.repo_path
+             )
+         )
++
++
++@unittest.skipIf(
++    rpmautospec is None,
++    "Skip test on releases where rpmautospec is not available (RHEL)")
++class SpecFileUndoRpmautospec(CommandTestCase):
++    def test_remove_autospec_from_specfile(self):
++        fixtures_dir = os.path.join(os.path.dirname(__file__), "fixtures", "docpkg")
++
++        specfile_without_rpmautospec = os.path.join(fixtures_dir, "docpkg.spec")
++        specfile_without_rpmautospec_copy = os.path.join(self.repo_path, "docpkg.spec")
++        shutil.copy2(specfile_without_rpmautospec, specfile_without_rpmautospec_copy)
++        self.assertFalse(rpmautospec.specfile_uses_rpmautospec(specfile_without_rpmautospec_copy))
++        self.assertFalse(spec_file_undo_rpmautospec(specfile_without_rpmautospec_copy))
++        self.assertFalse(rpmautospec.specfile_uses_rpmautospec(specfile_without_rpmautospec_copy))
++        os.remove(specfile_without_rpmautospec_copy)
++
++        specfile_with_rpmautospec = os.path.join(fixtures_dir, "docpkg-rpmautospec.spec")
++        specfile_with_rpmautospec_copy = os.path.join(self.repo_path, "docpkg-rpmautospec.spec")
++        shutil.copy2(specfile_with_rpmautospec, specfile_with_rpmautospec_copy)
++        # returns True if the specfile was modified
++        self.assertTrue(spec_file_undo_rpmautospec(specfile_with_rpmautospec_copy))
++        self.assertFalse(rpmautospec.specfile_uses_rpmautospec(
++            specfile_with_rpmautospec_copy, check_autochangelog=False, check_autorelease=True))
++        self.assertTrue(rpmautospec.specfile_uses_rpmautospec(
++            specfile_with_rpmautospec_copy, check_autochangelog=True, check_autorelease=False))
++        os.remove(specfile_with_rpmautospec_copy)
+-- 
+2.41.0
+

diff --git a/rpkg.spec b/rpkg.spec
index 7bb1f29..1f4dcc2 100644
--- a/rpkg.spec
+++ b/rpkg.spec
@@ -1,6 +1,6 @@
 Name:           rpkg
 Version:        1.66
-Release:        12%{?dist}
+Release:        13%{?dist}
 
 Summary:        Python library for interacting with rpm+git
 License:        GPLv2+ and LGPLv2
@@ -169,7 +169,7 @@ Requires:       libmodulemd
 Requires:       python3-requests-kerberos
 %else
 Requires:       python3-libmodulemd
-Requires:       python3-rpmautospec
+Requires:       python3-rpmautospec >= 0.3.8
 %endif
 Requires:       python3-rpm
 Requires:       python3-pycurl
@@ -278,6 +278,11 @@ example_cli_dir=$RPM_BUILD_ROOT%{_datadir}/%{name}/examples/cli
 
 
 %changelog
+* Wed Nov 22 2023 Ondřej Nosek <onosek@redhat.com> - 1.66-13
+- Patch: *pkg import: Don't delete changelog generated by `rpmautospec convert`
+- Patch: *pkg import: Undo rpmautospec processing
+- Patch: Unittests for "Undo rpmautospec processing"
+
 * Mon Sep 25 2023 Ondřej Nosek <onosek@redhat.com> - 1.66-12
 - Patch: Fix flake8 complaints
 - Patch: Prepare the lookaside cache code for retries

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

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=178639827980.1.4891894449742997938.rpms-rpkg-b34edfe5f21f@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