Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-specfile for openSUSE:Factory 
checked in at 2026-01-13 21:35:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-specfile (Old)
 and      /work/SRC/openSUSE:Factory/.python-specfile.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-specfile"

Tue Jan 13 21:35:21 2026 rev:38 rq:1327015 version:0.38.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-specfile/python-specfile.changes  
2025-11-05 16:21:49.542959013 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-specfile.new.1928/python-specfile.changes    
    2026-01-13 21:35:44.494913254 +0100
@@ -1,0 +2,9 @@
+Tue Jan 13 11:08:56 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 0.38.0
+  * A bug leading to incorrect EVR expansion has been fixed. (#492)
+  * Prevented side-effects during condition evaluation that could
+    occur when expanding macros that manipulate other macros, leading
+    to misinterpreted validity of condition branches. (#499)
+
+-------------------------------------------------------------------

Old:
----
  specfile-0.37.1.tar.gz

New:
----
  specfile-0.38.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-specfile.spec ++++++
--- /var/tmp/diff_new_pack.CFLKfq/_old  2026-01-13 21:35:45.214942994 +0100
+++ /var/tmp/diff_new_pack.CFLKfq/_new  2026-01-13 21:35:45.218943159 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-specfile
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-specfile
-Version:        0.37.1
+Version:        0.38.0
 Release:        0
 Summary:        A library for parsing and manipulating RPM spec files
 License:        MIT

++++++ specfile-0.37.1.tar.gz -> specfile-0.38.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/.packit.yaml 
new/specfile-0.38.0/.packit.yaml
--- old/specfile-0.37.1/.packit.yaml    2025-10-03 14:46:26.000000000 +0200
+++ new/specfile-0.38.0/.packit.yaml    2026-01-08 14:44:07.000000000 +0100
@@ -200,6 +200,7 @@
       rawhide:
         fast_forward_merge_into:
           - fedora-branched
+          - eln
       epel-9: {}
   - <<: *propose_downstream
     packages: [specfile-epel8]
@@ -224,6 +225,7 @@
       rawhide:
         fast_forward_merge_into:
           - fedora-branched
+          - eln
       epel-9: {}
   - <<: *pull_from_upstream
     packages: [specfile-epel8]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/.pre-commit-config.yaml 
new/specfile-0.38.0/.pre-commit-config.yaml
--- old/specfile-0.37.1/.pre-commit-config.yaml 2025-10-03 14:46:26.000000000 
+0200
+++ new/specfile-0.38.0/.pre-commit-config.yaml 2026-01-08 14:44:07.000000000 
+0100
@@ -84,3 +84,8 @@
           - LICENSE_HEADER.txt
           - --comment-style
           - "#"
+  - repo: https://github.com/crate-ci/typos
+    rev: v1.36.2
+    hooks:
+      - id: typos
+        args: [--config, _typos.toml]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/CHANGELOG.md 
new/specfile-0.38.0/CHANGELOG.md
--- old/specfile-0.37.1/CHANGELOG.md    2025-10-03 14:46:26.000000000 +0200
+++ new/specfile-0.38.0/CHANGELOG.md    2026-01-08 14:44:07.000000000 +0100
@@ -1,3 +1,8 @@
+# 0.38.0
+
+- A bug leading to incorrect EVR expansion has been fixed. (#492)
+- Prevented side-effects during condition evaluation that could occur when 
expanding macros that manipulate other macros, leading to misinterpreted 
validity of condition branches. (#499)
+
 # 0.37.1
 
 - We have solved a FutureWarning in our codebase. (#485)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/PKG-INFO new/specfile-0.38.0/PKG-INFO
--- old/specfile-0.37.1/PKG-INFO        2025-10-03 14:46:33.126232400 +0200
+++ new/specfile-0.38.0/PKG-INFO        2026-01-08 14:44:14.616140600 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: specfile
-Version: 0.37.1
+Version: 0.38.0
 Summary: A library for parsing and manipulating RPM spec files.
 Home-page: https://github.com/packit/specfile
 Author: Red Hat
@@ -38,6 +38,10 @@
 
 # specfile
 
+[![CI][badge-build]][build]
+[![Documentation][docs-badge]][docs]
+[![License][badge-license]][license]
+
 Python library for parsing and manipulating RPM spec files. Main focus is on 
modifying existing spec files, any change should result in a minimal diff.
 
 ## Motivation
@@ -348,3 +352,10 @@
 Here is a demo showcasing the `Specfile.update_tag()` method and its use cases:
 
 [![Demo of Specfile.update_tag() 
functionality](https://img.youtube.com/vi/yzMfBPdFXZY/0.jpg)](https://www.youtube.com/watch?v=yzMfBPdFXZY)
+
+[badge-build]: 
https://softwarefactory-project.io/zuul/api/tenant/packit-service/badge?project=packit/specfile&pipeline=check
+[build]: 
https://softwarefactory-project.io/zuul/t/packit-service/buildsets?project=packit%2Fspecfile&pipeline=check&skip=0
+[docs-badge]: https://img.shields.io/badge/documentation-3572A5
+[docs]: https://packit.dev/specfile/api/specfile
+[badge-license]: https://img.shields.io/github/license/packit/specfile.svg
+[license]: ./LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/README.md 
new/specfile-0.38.0/README.md
--- old/specfile-0.37.1/README.md       2025-10-03 14:46:26.000000000 +0200
+++ new/specfile-0.38.0/README.md       2026-01-08 14:44:07.000000000 +0100
@@ -1,5 +1,9 @@
 # specfile
 
+[![CI][badge-build]][build]
+[![Documentation][docs-badge]][docs]
+[![License][badge-license]][license]
+
 Python library for parsing and manipulating RPM spec files. Main focus is on 
modifying existing spec files, any change should result in a minimal diff.
 
 ## Motivation
@@ -310,3 +314,10 @@
 Here is a demo showcasing the `Specfile.update_tag()` method and its use cases:
 
 [![Demo of Specfile.update_tag() 
functionality](https://img.youtube.com/vi/yzMfBPdFXZY/0.jpg)](https://www.youtube.com/watch?v=yzMfBPdFXZY)
+
+[badge-build]: 
https://softwarefactory-project.io/zuul/api/tenant/packit-service/badge?project=packit/specfile&pipeline=check
+[build]: 
https://softwarefactory-project.io/zuul/t/packit-service/buildsets?project=packit%2Fspecfile&pipeline=check&skip=0
+[docs-badge]: https://img.shields.io/badge/documentation-3572A5
+[docs]: https://packit.dev/specfile/api/specfile
+[badge-license]: https://img.shields.io/github/license/packit/specfile.svg
+[license]: ./LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/_typos.toml 
new/specfile-0.38.0/_typos.toml
--- old/specfile-0.37.1/_typos.toml     1970-01-01 01:00:00.000000000 +0100
+++ new/specfile-0.38.0/_typos.toml     2026-01-08 14:44:07.000000000 +0100
@@ -0,0 +1,7 @@
+[default]
+extend-ignore-re = [
+    "From:.*=\\?UTF-8\\?q\\?.*",  # Ignore encoded email headers
+]
+
+# Allow these as valid words
+extend-words = { SOURCEN = "SOURCEN" }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/specfile-0.37.1/centos-integration-sig/python-specfile.spec 
new/specfile-0.38.0/centos-integration-sig/python-specfile.spec
--- old/specfile-0.37.1/centos-integration-sig/python-specfile.spec     
2025-10-03 14:46:26.000000000 +0200
+++ new/specfile-0.38.0/centos-integration-sig/python-specfile.spec     
2026-01-08 14:44:07.000000000 +0100
@@ -7,7 +7,7 @@
 in a minimal diff.}
 
 
-%global base_version 0.37.1
+%global base_version 0.38.0
 #global prerelease   rc1
 
 %global package_version %{base_version}%{?prerelease:~%{prerelease}}
@@ -77,6 +77,9 @@
 
 
 %changelog
+* Thu Jan 08 2026 Packit Team <[email protected]> - 0.38.0-1
+- New upstream release 0.38.0
+
 * Fri Oct 03 2025 Packit Team <[email protected]> - 0.37.1-1
 - New upstream release 0.37.1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/epel10/python-specfile.spec 
new/specfile-0.38.0/epel10/python-specfile.spec
--- old/specfile-0.37.1/epel10/python-specfile.spec     2025-10-03 
14:46:26.000000000 +0200
+++ new/specfile-0.38.0/epel10/python-specfile.spec     2026-01-08 
14:44:07.000000000 +0100
@@ -7,7 +7,7 @@
 in a minimal diff.}
 
 
-%global base_version 0.37.1
+%global base_version 0.38.0
 #global prerelease   rc1
 
 %global package_version %{base_version}%{?prerelease:~%{prerelease}}
@@ -77,6 +77,9 @@
 
 
 %changelog
+* Thu Jan 08 2026 Packit Team <[email protected]> - 0.38.0-1
+- New upstream release 0.38.0
+
 * Fri Oct 03 2025 Packit Team <[email protected]> - 0.37.1-1
 - New upstream release 0.37.1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/epel8/python-specfile.spec 
new/specfile-0.38.0/epel8/python-specfile.spec
--- old/specfile-0.37.1/epel8/python-specfile.spec      2025-10-03 
14:46:26.000000000 +0200
+++ new/specfile-0.38.0/epel8/python-specfile.spec      2026-01-08 
14:44:07.000000000 +0100
@@ -4,7 +4,7 @@
 in a minimal diff.}
 
 
-%global base_version 0.37.1
+%global base_version 0.38.0
 #global prerelease   rc1
 
 %global package_version %{base_version}%{?prerelease:~%{prerelease}}
@@ -68,6 +68,9 @@
 
 
 %changelog
+* Thu Jan 08 2026 Packit Team <[email protected]> - 0.38.0-1
+- New upstream release 0.38.0
+
 * Fri Oct 03 2025 Packit Team <[email protected]> - 0.37.1-1
 - New upstream release 0.37.1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/fedora/python-specfile.spec 
new/specfile-0.38.0/fedora/python-specfile.spec
--- old/specfile-0.37.1/fedora/python-specfile.spec     2025-10-03 
14:46:26.000000000 +0200
+++ new/specfile-0.38.0/fedora/python-specfile.spec     2026-01-08 
14:44:07.000000000 +0100
@@ -7,7 +7,7 @@
 in a minimal diff.}
 
 
-%global base_version 0.37.1
+%global base_version 0.38.0
 #global prerelease   rc1
 
 %global package_version %{base_version}%{?prerelease:~%{prerelease}}
@@ -77,6 +77,9 @@
 
 
 %changelog
+* Thu Jan 08 2026 Packit Team <[email protected]> - 0.38.0-1
+- New upstream release 0.38.0
+
 * Fri Oct 03 2025 Packit Team <[email protected]> - 0.37.1-1
 - New upstream release 0.37.1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/specfile/macros.py 
new/specfile-0.38.0/specfile/macros.py
--- old/specfile-0.37.1/specfile/macros.py      2025-10-03 14:46:26.000000000 
+0200
+++ new/specfile-0.38.0/specfile/macros.py      2026-01-08 14:44:07.000000000 
+0100
@@ -2,6 +2,7 @@
 # SPDX-License-Identifier: MIT
 
 import collections
+import functools
 import re
 from enum import IntEnum
 from typing import List, Optional
@@ -131,12 +132,13 @@
         return cls._parse([line.decode() for line in stderr])
 
     @staticmethod
-    def expand(expression: str) -> str:
+    def expand(expression: str, safe: bool = True) -> str:
         """
         Expands an expression in the global context.
 
         Args:
             expression: Expression to expand.
+            safe: Whether to disable macro manipulation during expansion.
 
         Returns:
             Expanded expression.
@@ -144,11 +146,22 @@
         Raises:
             RPMException: If expansion error occurs.
         """
+        cleanups = []
+        if safe:
+            # override macros that can affect other macros
+            # this should avoid any side-effects caused by the expansion
+            for macro in ("global", "define", "undefine"):
+                rpm.addMacro(macro, "%{nil}")
+                cleanups.append(functools.partial(rpm.delMacro, macro))
         try:
-            with capture_stderr() as stderr:
-                return rpm.expandMacro(expression)
-        except rpm.error as e:
-            raise RPMException(stderr=stderr) from e
+            try:
+                with capture_stderr() as stderr:
+                    return rpm.expandMacro(expression)
+            except rpm.error as e:
+                raise RPMException(stderr=stderr) from e
+        finally:
+            while cleanups:
+                cleanups.pop(0)()
 
     @classmethod
     def remove(cls, macro: str) -> None:
@@ -169,7 +182,10 @@
         while retry < MAX_REMOVAL_RETRIES:
             rpm.delMacro(macro)
             try:
-                if cls.expand(f"%{{{macro}}}") == f"%{{{macro.replace('%%', 
'%')}}}":
+                if (
+                    cls.expand(f"%{{{macro}}}", safe=False)
+                    == f"%{{{macro.replace('%%', '%')}}}"
+                ):
                     break
             except RPMException:
                 # the macro can't be expanded, but it still exists
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/specfile/specfile.py 
new/specfile-0.38.0/specfile/specfile.py
--- old/specfile-0.37.1/specfile/specfile.py    2025-10-03 14:46:26.000000000 
+0200
+++ new/specfile-0.38.0/specfile/specfile.py    2026-01-08 14:44:07.000000000 
+0100
@@ -611,7 +611,15 @@
                 if self.contains_autochangelog(section):
                     continue
                 if evr is None:
-                    evr = "%{?epoch:%{epoch}:}%{version}-%{release}"
+                    with self.tags() as tags:
+                        try:
+                            evr = f"{tags.epoch.expanded_value}:"
+                        except AttributeError:
+                            evr = ""
+                        evr += f"{tags.version.expanded_value}-"
+                        evr += self.expand(
+                            tags.release.value, extra_macros=[("dist", "")]
+                        )
                 with self.changelog(section) as changelog:
                     if changelog is None:
                         return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/specfile.egg-info/PKG-INFO 
new/specfile-0.38.0/specfile.egg-info/PKG-INFO
--- old/specfile-0.37.1/specfile.egg-info/PKG-INFO      2025-10-03 
14:46:33.000000000 +0200
+++ new/specfile-0.38.0/specfile.egg-info/PKG-INFO      2026-01-08 
14:44:14.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: specfile
-Version: 0.37.1
+Version: 0.38.0
 Summary: A library for parsing and manipulating RPM spec files.
 Home-page: https://github.com/packit/specfile
 Author: Red Hat
@@ -38,6 +38,10 @@
 
 # specfile
 
+[![CI][badge-build]][build]
+[![Documentation][docs-badge]][docs]
+[![License][badge-license]][license]
+
 Python library for parsing and manipulating RPM spec files. Main focus is on 
modifying existing spec files, any change should result in a minimal diff.
 
 ## Motivation
@@ -348,3 +352,10 @@
 Here is a demo showcasing the `Specfile.update_tag()` method and its use cases:
 
 [![Demo of Specfile.update_tag() 
functionality](https://img.youtube.com/vi/yzMfBPdFXZY/0.jpg)](https://www.youtube.com/watch?v=yzMfBPdFXZY)
+
+[badge-build]: 
https://softwarefactory-project.io/zuul/api/tenant/packit-service/badge?project=packit/specfile&pipeline=check
+[build]: 
https://softwarefactory-project.io/zuul/t/packit-service/buildsets?project=packit%2Fspecfile&pipeline=check&skip=0
+[docs-badge]: https://img.shields.io/badge/documentation-3572A5
+[docs]: https://packit.dev/specfile/api/specfile
+[badge-license]: https://img.shields.io/github/license/packit/specfile.svg
+[license]: ./LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/specfile.egg-info/SOURCES.txt 
new/specfile-0.38.0/specfile.egg-info/SOURCES.txt
--- old/specfile-0.37.1/specfile.egg-info/SOURCES.txt   2025-10-03 
14:46:33.000000000 +0200
+++ new/specfile-0.38.0/specfile.egg-info/SOURCES.txt   2026-01-08 
14:44:14.000000000 +0100
@@ -12,6 +12,7 @@
 LICENSE_HEADER.txt
 Makefile
 README.md
+_typos.toml
 pyproject.toml
 setup.cfg
 setup.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/specfile-0.37.1/tests/unit/test_macros.py 
new/specfile-0.38.0/tests/unit/test_macros.py
--- old/specfile-0.37.1/tests/unit/test_macros.py       2025-10-03 
14:46:26.000000000 +0200
+++ new/specfile-0.38.0/tests/unit/test_macros.py       2026-01-08 
14:44:07.000000000 +0100
@@ -114,3 +114,20 @@
 def test_macros_reinit():
     Macros.reinit(MacroLevel.BUILTIN)
     assert all(m.level == MacroLevel.BUILTIN for m in Macros.dump())
+
+
[email protected](
+    rpm.__version__ <= "4.16.1.3",
+    reason="rpm <= 4.16.1.3 treats builtin macros specially and overriding 
them has no effect",
+)
+def test_macros_sideeffects():
+    rpm.reloadConfig()
+    rpm.addMacro("with_feature", "1")
+    assert rpm.expandMacro("%with_feature") == "1"
+    Macros.expand("%{expand:%global with_feature 0}", safe=False)
+    assert rpm.expandMacro("%with_feature") == "0"
+    rpm.reloadConfig()
+    rpm.addMacro("with_feature", "1")
+    assert rpm.expandMacro("%with_feature") == "1"
+    Macros.expand("%{expand:%global with_feature 0}", safe=True)
+    assert rpm.expandMacro("%with_feature") == "1"

Reply via email to