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:
[](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:
[](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:
[](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"