Compare commits

...
Sign in to create a new pull request.

36 commits

Author SHA1 Message Date
Packit
6efa30bf3b Update to 0.38.0 upstream release
Upstream tag: 0.38.0
Upstream commit: a07560dd

Commit authored by Packit automation (https://packit.dev/)
2026-01-08 13:48:33 +00:00
Packit
62f2ad8d8a Update to 0.37.1 upstream release
Upstream tag: 0.37.1
Upstream commit: 21a45baa

Commit authored by Packit automation (https://packit.dev/)
2025-10-03 12:55:04 +00:00
Packit
eea0fd26e6 Update to 0.37.0 upstream release
Upstream tag: 0.37.0
Upstream commit: aafca33c

Commit authored by Packit automation (https://packit.dev/)
2025-09-05 11:38:01 +00:00
Packit
02e4a45c28 Update to 0.36.0 upstream release
Upstream tag: 0.36.0
Upstream commit: 24206539

Commit authored by Packit automation (https://packit.dev/)
2025-05-30 13:11:41 +00:00
Packit
9cf6dcd35e Update to 0.35.0 upstream release
Upstream tag: 0.35.0
Upstream commit: e059c302

Commit authored by Packit automation (https://packit.dev/)
2025-04-13 19:46:18 +00:00
Packit
9d32543db9 Update to 0.34.2 upstream release
Upstream tag: 0.34.2
Upstream commit: 875f03ed

Commit authored by Packit automation (https://packit.dev/)
2025-03-18 07:27:04 +00:00
Packit
b470d55f1d Update to 0.34.1 upstream release
Upstream tag: 0.34.1
Upstream commit: 192a081a

Commit authored by Packit automation (https://packit.dev/)
2025-02-07 14:33:54 +00:00
Packit
a14e4fb7dc Update to 0.34.0 upstream release
- Resolves: rhbz#2342178

Upstream tag: 0.34.0
Upstream commit: 84d6f3b4

Commit authored by Packit automation (https://packit.dev/)
2025-01-28 16:28:52 +01:00
Packit
9f3db48171 Update to 0.33.0 upstream release
- Resolves: rhbz#2332288

Upstream tag: 0.33.0
Upstream commit: c0a98a85

Commit authored by Packit automation (https://packit.dev/)
2024-12-16 08:23:04 +00:00
Packit
2a5b426ef4 Update to 0.32.6 upstream release
- Resolves: rhbz#2318011

Upstream tag: 0.32.6
Upstream commit: 442e2a97

Commit authored by Packit automation (https://packit.dev/)
2024-11-14 12:16:54 +00:00
Packit
2cbf320d45 Update to 0.32.5 upstream release
Upstream tag: 0.32.5
Upstream commit: c38cfaad

Commit authored by Packit automation (https://packit.dev/)
2024-10-26 21:34:10 +00:00
Packit
15f5835784 Update to 0.32.3 upstream release
- Resolves: rhbz#2299289

Upstream tag: 0.32.3
Upstream commit: c2be0297

Commit authored by Packit automation (https://packit.dev/)
2024-09-30 09:52:29 +00:00
Packit
658fc921d0 Update to 0.32.2 upstream release
Upstream tag: 0.32.2
Upstream commit: 514fbded

Commit authored by Packit automation (https://packit.dev/)
2024-09-15 20:57:49 +00:00
Packit
e7dfbaab7c Update to 0.32.1 upstream release
Upstream tag: 0.32.1
Upstream commit: 8aac26db

Commit authored by Packit automation (https://packit.dev/)
2024-07-29 15:25:45 +00:00
Packit
d297978483 Update to 0.32.0 upstream release
Upstream tag: 0.32.0
Upstream commit: 122eefa5

Commit authored by Packit automation (https://packit.dev/)
2024-07-22 07:12:44 +00:00
Packit
f265b34054 Update to 0.31.0 upstream release
- Resolves: rhbz#2294393

Upstream tag: 0.31.0
Upstream commit: 8aba712b

Commit authored by Packit automation (https://packit.dev/)
2024-07-09 10:26:28 +00:00
Packit
0784e702fe Update to 0.30.0 upstream release
Upstream tag: 0.30.0
Upstream commit: 85a0b40d

Commit authored by Packit automation (https://packit.dev/)
2024-06-26 12:23:26 +00:00
Packit
29e5998725 Update to 0.29.0 upstream release
Upstream tag: 0.29.0
Upstream commit: 0ba5f9ff

Commit authored by Packit automation (https://packit.dev/)
2024-06-06 13:57:24 +00:00
Packit
9220d7b4a3 Update to 0.28.3 upstream release
Upstream tag: 0.28.3
Upstream commit: 557c33bd

Commit authored by Packit automation (https://packit.dev/)
2024-05-23 11:20:19 +00:00
Packit
d6d6aa1ca1 [packit] 0.28.0 upstream release
Upstream tag: 0.28.0
Upstream commit: cdf06f20
2024-03-17 15:11:13 +00:00
Packit
cb0e0cd234 [packit] 0.27.0 upstream release
Upstream tag: 0.27.0
Upstream commit: 1789f9c6
2024-01-19 13:28:11 +00:00
Packit
e39cf146f0 [packit] 0.25.0 upstream release
Upstream tag: 0.25.0
Upstream commit: 78f50b4a
2023-11-20 14:58:35 +00:00
Packit
f4001f1694 [packit] 0.24.0 upstream release
Upstream tag: 0.24.0
Upstream commit: 2efbd9ce
2023-11-06 17:20:30 +00:00
Packit
19f7f156e3 [packit] 0.23.0 upstream release
Upstream tag: 0.23.0
Upstream commit: 0e110df4
2023-10-30 09:16:20 +00:00
Packit
ea0fc83faf [packit] 0.22.1 upstream release
Upstream tag: 0.22.1
Upstream commit: 0af08c92
2023-10-06 13:10:16 +00:00
ef25d82ff9 [packit] 0.21.0 upstream release
Upstream tag: 0.21.0
Upstream commit: 56360c0a
2023-08-11 15:29:34 +02:00
Matej Focko
2fccea07ff
chore: be explicit about GPG keys in Packit config
Signed-off-by: Matej Focko <mfocko@redhat.com>
(cherry picked from commit 4c376af84d)
2023-08-11 14:45:20 +02:00
Matej Focko
fb84ce5e6c
chore: add GitHub's GPG key to Packit config
Signed-off-by: Matej Focko <mfocko@redhat.com>
(cherry picked from commit c90a1932f9)
2023-08-11 14:27:48 +02:00
Packit
28abf74e05 [packit] 0.20.2 upstream release
Upstream tag: 0.20.2
Upstream commit: 4486a88c

If you need to do any change in this pull request, you need to locally fetch the source branch of it and push it (with a fix) to your fork (as it is not possible to push to the branch created in the Packit’s fork):
```
git fetch https://src.fedoraproject.org/forks/packit/rpms/python-specfile.git refs/heads/*:refs/remotes/packit/*
git checkout packit/0.20.2-epel8-update-propose_downstream
```
2023-07-31 13:17:33 +00:00
Packit
83e96e1562 [packit] 0.7.0 upstream release
Upstream tag: 0.7.0
Upstream commit: e121363b

Signed-off-by: Packit <hello@packit.dev>
2022-10-07 14:33:43 +00:00
Packit
ab94cc7d9a [packit] 0.6.0 upstream release
Upstream tag: 0.6.0
Upstream commit: 8b0a6cc4

Signed-off-by: Packit <hello@packit.dev>
2022-08-25 13:16:39 +00:00
Packit
1918ea1c70 [packit] 0.5.1 upstream release
Upstream tag: 0.5.1
Upstream commit: a03b8972

Signed-off-by: Packit <hello@packit.dev>
2022-08-10 14:44:30 +00:00
Packit
6da75bfee8 [packit] 0.5.0 upstream release
Upstream tag: 0.5.0
Upstream commit: e4f80e56

Signed-off-by: Packit <hello@packit.dev>
2022-07-22 08:03:58 +00:00
Packit
686c1782a4 [packit] 0.4.0 upstream release
Upstream tag: 0.4.0
Upstream commit: d3b97670

Signed-off-by: Packit <hello@packit.dev>
2022-06-21 13:32:17 +00:00
Packit
0ba51c0f42 [packit] 0.3.0 upstream release
Upstream tag: 0.3.0
Upstream commit: df62e212

Signed-off-by: Packit <hello@packit.dev>
2022-05-16 12:15:07 +00:00
Packit
921cff8bf6 [packit] 0.2.0 upstream release
Upstream tag: 0.2.0
Upstream commit: a15b0918

Signed-off-by: Packit <hello@packit.dev>
2022-04-01 07:44:17 +00:00
13 changed files with 815 additions and 0 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

34
.gitignore vendored Normal file
View file

@ -0,0 +1,34 @@
/specfile-0.2.0.tar.gz
/specfile-0.3.0.tar.gz
/specfile-0.4.0.tar.gz
/specfile-0.5.0.tar.gz
/specfile-0.5.1.tar.gz
/specfile-0.6.0.tar.gz
/specfile-0.7.0.tar.gz
/specfile-0.20.2.tar.gz
/specfile-0.21.0.tar.gz
/specfile-0.22.1.tar.gz
/specfile-0.23.0.tar.gz
/specfile-0.24.0.tar.gz
/specfile-0.25.0.tar.gz
/specfile-0.27.0.tar.gz
/specfile-0.28.0.tar.gz
/specfile-0.28.3.tar.gz
/specfile-0.29.0.tar.gz
/specfile-0.30.0.tar.gz
/specfile-0.31.0.tar.gz
/specfile-0.32.0.tar.gz
/specfile-0.32.1.tar.gz
/specfile-0.32.2.tar.gz
/specfile-0.32.3.tar.gz
/specfile-0.32.5.tar.gz
/specfile-0.32.6.tar.gz
/specfile-0.33.0.tar.gz
/specfile-0.34.0.tar.gz
/specfile-0.34.1.tar.gz
/specfile-0.34.2.tar.gz
/specfile-0.35.0.tar.gz
/specfile-0.36.0.tar.gz
/specfile-0.37.0.tar.gz
/specfile-0.37.1.tar.gz
/specfile-0.38.0.tar.gz

287
.packit.yaml Normal file
View file

@ -0,0 +1,287 @@
---
packit_instances: ["prod", "stg"]
upstream_project_url: https://github.com/packit/specfile
issue_repository: https://github.com/packit/specfile
# PEP440
prerelease_suffix_pattern: "([.\\-_]?)(a(lpha)?|b(eta)?|r?c|pre(view)?)([.\\-_]?\\d+)?"
prerelease_suffix_macro: prerelease
copy_upstream_release_description: true
packages:
specfile: &specfile
upstream_package_name: specfile
downstream_package_name: python-specfile
specfile_path: &specfile_path fedora/python-specfile.spec
files_to_sync:
- *specfile_path
- .packit.yaml
- src: plans/
dest: plans/
- src: .fmf/
dest: .fmf/
srpm_build_deps:
- python3-build
- python3-setuptools_scm
actions: &actions
pre-sync:
- python3 plans/git_reference.py
create-archive:
- python3 -m build --sdist --outdir ./fedora/
- bash -c "ls -1t ./fedora/*.tar.gz | head -n 1"
get-current-version: python3 -m setuptools_scm
specfile-epel8:
<<: *specfile
specfile_path: &specfile_path_epel8 epel8/python-specfile.spec
files_to_sync:
- *specfile_path_epel8
- .packit.yaml
- src: plans/
dest: plans/
- src: .fmf/
dest: .fmf/
actions:
<<: *actions
create-archive:
- python3 setup.py sdist --dist-dir ./epel8/
- bash -c "ls -1t ./epel8/*.tar.gz | head -n 1"
specfile-epel10:
<<: *specfile
specfile_path: &specfile_path_epel10 epel10/python-specfile.spec
files_to_sync:
- *specfile_path_epel10
- .packit.yaml
- src: plans/
dest: plans/
- src: .fmf/
dest: .fmf/
actions:
<<: *actions
create-archive:
- python3 setup.py sdist --dist-dir ./epel10/
- bash -c "ls -1t ./epel10/*.tar.gz | head -n 1"
# docs: https://gitlab.com/CentOS/Integration/packit-cbs/docs
specfile-centos-integration-sig:
<<: *specfile
specfile_path: &specfile_path_centos_sig centos-integration-sig/python-specfile.spec
files_to_sync:
- *specfile_path_centos_sig
- .packit.yaml
- src: plans/
dest: plans/
- src: .fmf/
dest: .fmf/
actions:
<<: *actions
create-archive:
- python3 -m build --sdist --outdir ./centos-integration-sig/
- bash -c "ls -1t ./centos-integration-sig/*.tar.gz | head -n 1"
dist_git_base_url: https://gitlab.com
dist_git_namespace: CentOS/Integration/packit-cbs/rpms
sig: Integration/packit-cbs
pkg_tool: centpkg-sig
jobs:
- &copr_build_pr
job: copr_build
trigger: pull_request
packages: [specfile]
targets:
- fedora-all
- fedora-all-aarch64
- epel-9
- <<: *copr_build_pr
packages: [specfile-epel8]
targets:
- epel-8
- <<: *copr_build_pr
packages: [specfile-epel10]
targets:
- epel-10-all
- &copr_build_commit_main
job: copr_build
trigger: commit
branch: main
packages: [specfile]
targets:
- fedora-all
- fedora-all-aarch64
- epel-9
project: packit-dev
list_on_homepage: True
preserve_project: True
- <<: *copr_build_commit_main
packages: [specfile-epel8]
targets:
- epel-8
- <<: *copr_build_commit_main
packages: [specfile-epel10]
targets:
- epel-10-all
- &copr_build_commit_stable
job: copr_build
trigger: commit
branch: stable
packages: [specfile]
targets:
- fedora-stable
- fedora-stable-aarch64
project: packit-stable
list_on_homepage: True
preserve_project: True
- &copr_build_release
job: copr_build
trigger: release
packages: [specfile]
targets:
- fedora-all
- fedora-all-aarch64
- epel-9
project: packit-releases
list_on_homepage: True
preserve_project: True
- <<: *copr_build_release
packages: [specfile-epel8]
targets:
- epel-8
- <<: *copr_build_release
packages: [specfile-epel10]
targets:
- epel-10-all
- &tests
job: tests
trigger: pull_request
packages: [specfile]
tmt_plan: "smoke|full|packit-integration"
targets:
- fedora-all
- epel-9
- <<: *tests
identifier: performance
tmt_plan: performance
targets:
- fedora-rawhide
- <<: *tests
packages: [specfile-epel8]
tmt_plan: "smoke|full"
use_internal_tf: true
targets:
epel-8-x86_64:
distros: [RHEL-8.10.0-Nightly]
# enable EPEL
tf_extra_params:
environments:
- kickstart:
post-install: |
%post --log=/dev/console
set -x
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
%end
- <<: *tests
packages: [specfile-epel10]
tmt_plan: "smoke|full"
targets:
- epel-10-all
- &propose_downstream
job: propose_downstream
trigger: release
packages: [specfile]
dist_git_branches:
rawhide:
fast_forward_merge_into:
- fedora-branched
- eln
epel-9: {}
- <<: *propose_downstream
packages: [specfile-epel8]
dist_git_branches:
- epel-8
- <<: *propose_downstream
packages: [specfile-epel10]
dist_git_branches:
epel-10:
fast_forward_merge_into:
- epel-10-branched
- <<: *propose_downstream
packages: [specfile-centos-integration-sig]
dist_git_branches:
- c9-sig-integration
- &pull_from_upstream
job: pull_from_upstream
trigger: release
packages: [specfile]
dist_git_branches:
rawhide:
fast_forward_merge_into:
- fedora-branched
- eln
epel-9: {}
- <<: *pull_from_upstream
packages: [specfile-epel8]
dist_git_branches:
- epel-8
- <<: *pull_from_upstream
packages: [specfile-epel10]
dist_git_branches:
epel-10:
fast_forward_merge_into:
- epel-10-branched
- <<: *pull_from_upstream
packages: [specfile-centos-integration-sig]
dist_git_branches:
- c9-sig-integration
- &koji_build
job: koji_build
trigger: commit
packages: [specfile]
packit_instances: ["stg"]
allowed_pr_authors: ["packit-stg", "packit"]
dist_git_branches:
- epel-9
- <<: *koji_build
packages: [specfile-epel8]
dist_git_branches:
- epel-8
- <<: *koji_build
packages: [specfile-epel10]
dist_git_branches:
- epel-10-all
- <<: *koji_build
packages: [specfile-centos-integration-sig]
dist_git_branches:
- c9-sig-integration
- <<: *koji_build
sidetag_group: packit-specfile-ogr-releases
dependents:
- packit
dist_git_branches:
- fedora-all
- &bodhi_update
job: bodhi_update
trigger: commit
packages: [specfile]
packit_instances: ["stg"]
allowed_builders: ["packit-stg", "packit"]
dist_git_branches:
- epel-9
- <<: *bodhi_update
packages: [specfile-epel8]
dist_git_branches:
- epel-8
- <<: *bodhi_update
packages: [specfile-epel10]
dist_git_branches:
- epel-10-all

View file

@ -0,0 +1,160 @@
From 29574b3e7d1a314e0242e3e160a0b1b7c7e6287e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
Date: Tue, 28 Jan 2025 15:19:39 +0100
Subject: [PATCH] Remove the walrus operator for Python 3.6 compatibility
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Nikola Forró <nforro@redhat.com>
---
tests/unit/test_changelog.py | 94 ++++++++++++++++++++----------------
1 file changed, 52 insertions(+), 42 deletions(-)
diff --git a/tests/unit/test_changelog.py b/tests/unit/test_changelog.py
index 6691381..ba74dc4 100644
--- a/tests/unit/test_changelog.py
+++ b/tests/unit/test_changelog.py
@@ -257,47 +257,35 @@ def test_suse_style_changelog_parse():
"changelog",
data=[
"-------------------------------------------------------------------",
- (
- hdr1 := "Tue Dec 17 14:21:37 UTC 2024 - "
- + (dc := "Dan Čermák <dan.cermak@cgc-instruments.com>")
- ),
+ "Tue Dec 17 14:21:37 UTC 2024 - Dan Čermák <dan.cermak@cgc-instruments.com>",
"",
- (content1 := "- First version"),
+ "- First version",
"",
"-------------------------------------------------------------------",
- (hdr2 := f"Mon Nov 4 17:47:23 UTC 2024 - {dc}"),
+ "Mon Nov 4 17:47:23 UTC 2024 - Dan Čermák <dan.cermak@cgc-instruments.com>",
"",
- (content2 := "- # [0.9.37] - September 4th, 2024"),
+ "- # [0.9.37] - September 4th, 2024",
"",
"-------------------------------------------------------------------",
- (
- hdr3 := "Fri May 17 09:14:20 UTC 2024 - "
- + "Dominique Leuenberger <dimstar@opensuse.org>"
- ),
+ "Fri May 17 09:14:20 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>",
"",
- (content3 := "- Use %patch -P N instead of deprecated %patchN syntax."),
+ "- Use %patch -P N instead of deprecated %patchN syntax.",
"",
"-------------------------------------------------------------------",
- (
- hdr4 := "Mon Oct 10 13:27:24 UTC 2022 - Stephan Kulow <coolo@suse.com>"
- ),
+ "Mon Oct 10 13:27:24 UTC 2022 - Stephan Kulow <coolo@suse.com>",
"",
- (content4_1 := "updated to version 0.9.28"),
- (content4_2 := " see installed CHANGELOG.md"),
+ "updated to version 0.9.28",
+ " see installed CHANGELOG.md",
"",
"",
"-------------------------------------------------------------------",
- (
- hdr5 := "Fri Jun 25 07:31:34 UTC 2021 - Dan Čermák <dcermak@suse.com>"
- ),
+ "Fri Jun 25 07:31:34 UTC 2021 - Dan Čermák <dcermak@suse.com>",
"",
- (content5_1 := "- New upstream release 0.9.26"),
+ "- New upstream release 0.9.26",
"",
- (content5_2 := " - Add support for Ruby 3.0 and fix tests"),
- (
- content5_3 := " - Fix support for `frozen_string_literal: false`"
- + " magic comments (#1363)"
- ),
+ " - Add support for Ruby 3.0 and fix tests",
+ " - Fix support for `frozen_string_literal: false`"
+ " magic comments (#1363)",
"",
"",
],
@@ -309,14 +297,28 @@ def test_suse_style_changelog_parse():
for changelog_entry, hdr, content in zip(
changelog,
- reversed((hdr1, hdr2, hdr3, hdr4, hdr5)),
reversed(
(
- [content1],
- [content2],
- [content3],
- [content4_1, content4_2],
- [content5_1, "", content5_2, content5_3],
+ "Tue Dec 17 14:21:37 UTC 2024 - Dan Čermák <dan.cermak@cgc-instruments.com>",
+ "Mon Nov 4 17:47:23 UTC 2024 - Dan Čermák <dan.cermak@cgc-instruments.com>",
+ "Fri May 17 09:14:20 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>",
+ "Mon Oct 10 13:27:24 UTC 2022 - Stephan Kulow <coolo@suse.com>",
+ "Fri Jun 25 07:31:34 UTC 2021 - Dan Čermák <dcermak@suse.com>",
+ )
+ ),
+ reversed(
+ (
+ ["- First version"],
+ ["- # [0.9.37] - September 4th, 2024"],
+ ["- Use %patch -P N instead of deprecated %patchN syntax."],
+ ["updated to version 0.9.28", " see installed CHANGELOG.md"],
+ [
+ "- New upstream release 0.9.26",
+ "",
+ " - Add support for Ruby 3.0 and fix tests",
+ " - Fix support for `frozen_string_literal: false`"
+ " magic comments (#1363)",
+ ],
)
),
):
@@ -336,27 +338,35 @@ def test_suse_style_changelog_parse():
(
datetime.datetime(2021, 6, 25, 7, 31, 34),
"Dan Čermák <dcermak@suse.com>",
- content_1 := ["", "New upstream release 0.9.26"],
+ ["", "New upstream release 0.9.26"],
ChangelogEntry(
- header=_OPENSUSE_CHANGELOG_SEPARATOR
- + "\n"
- + "Fri Jun 25 07:31:34 UTC 2021 - Dan Čermák <dcermak@suse.com>",
- content=content_1,
+ header=(
+ _OPENSUSE_CHANGELOG_SEPARATOR
+ + "\n"
+ + "Fri Jun 25 07:31:34 UTC 2021 - Dan Čermák <dcermak@suse.com>"
+ ),
+ content=["", "New upstream release 0.9.26"],
),
),
(
datetime.date(2021, 6, 25),
"Dan Čermák <dcermak@suse.de>",
- content_2 := [
+ [
"",
"New upstream release 0.26",
"Fixed a major regression in Foo",
],
ChangelogEntry(
- header=_OPENSUSE_CHANGELOG_SEPARATOR
- + "\n"
- + "Fri Jun 25 12:00:00 UTC 2021 - Dan Čermák <dcermak@suse.de>",
- content=content_2,
+ header=(
+ _OPENSUSE_CHANGELOG_SEPARATOR
+ + "\n"
+ + "Fri Jun 25 12:00:00 UTC 2021 - Dan Čermák <dcermak@suse.de>"
+ ),
+ content=[
+ "",
+ "New upstream release 0.26",
+ "Fixed a major regression in Foo",
+ ],
),
),
]

3
README.packit Normal file
View file

@ -0,0 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 1.13.0.post1.dev2+g84134016c.

18
plans/full.fmf Normal file
View file

@ -0,0 +1,18 @@
summary:
Unit & integration tests
discover+:
filter: tier:1
adjust:
- when: "distro == rhel-8"
because: "only platform-python is installed on RHEL 8 by default"
prepare+:
- how: install
package: python3
- when: "distro == rhel-10 or distro == centos-10 or distro == centos-stream-10"
because: "flexmock is not in EPEL 10: https://bugzilla.redhat.com/show_bug.cgi?id=2351835"
prepare+:
- how: install
package: python3-pip
- how: shell
script: pip3 install flexmock

32
plans/git_reference.py Normal file
View file

@ -0,0 +1,32 @@
#!/usr/bin/python
# Copyright Contributors to the Packit project.
# SPDX-License-Identifier: MIT
import subprocess
from pathlib import Path
import fmf
# Set discover of specfile tests to a fixed commit
tree_root = Path.cwd().absolute()
tree = fmf.Tree(tree_root)
main_node = tree.find("/plans")
with main_node as data:
data["discover"]["url"] = "https://github.com/packit/specfile.git"
data["discover"]["ref"] = (
subprocess.check_output(["git", "rev-parse", "HEAD"]).decode().strip()
)
# Set discover of packit integration tests to the current main
packit_node = tree.find("/plans/packit-integration")
with packit_node as data:
data["discover"]["ref"] = (
subprocess.check_output(
["git", "ls-remote", "https://github.com/packit/packit", "main"]
)
.decode()
.strip()
.split()[0]
)

6
plans/main.fmf Normal file
View file

@ -0,0 +1,6 @@
discover:
how: fmf
url: https://github.com/packit/specfile.git
ref: a07560dd2609cf23add5deeadc103033611b7b22
execute:
how: tmt

View file

@ -0,0 +1,29 @@
discover:
how: fmf
url: https://github.com/packit/packit
filter: tag:full
ref: 87042fcac49435dd55a1b989ed0c6ead290e703d
prepare:
- how: install
copr: packit/packit-dev
- how: shell
script: sed -i -n '/^priority=/!p;$apriority=5'
/etc/yum.repos.d/*:packit:packit-dev.repo
adjust:
- when: how == integration
because: provide latest python-specfile rpm when running locally
prepare+:
- name: python3-specfile rpm
how: install
directory: noarch/
- when: distro == rhel-9 or distro == centos-9 or distro == centos-stream-9
because: 'build and deepdiff are not in EPEL 9: https://bugzilla.redhat.com/show_bug.cgi?id=2120251'
prepare+:
- how: install
package: python3-pip
- how: shell
script: pip3 install build 'deepdiff < 8.0.0'
- when: |
distro == rhel-8 or distro == centos-8 or distro == centos-stream-8 or distro == rhel-9 or distro == centos-9 or distro == centos-stream-9
because: packit doesn't support EL 8
enabled: false

15
plans/performance.fmf Normal file
View file

@ -0,0 +1,15 @@
summary:
Performance tests
discover+:
filter: tier:3
prepare:
- how: install
package: python3-pip
- how: shell
script: pip3 install pytest-fail-slow
- how: shell
script: curl --output-dir /tmp -O https://src.fedoraproject.org/rpms/texlive/raw/rawhide/f/texlive.spec
adjust:
- when: "initiator != packit"
because: "skip this plan on dist-git pull requests"
enabled: false

10
plans/smoke.fmf Normal file
View file

@ -0,0 +1,10 @@
summary:
Basic smoke test
discover+:
filter: tier:0
adjust:
- when: "distro == rhel-8"
because: "only platform-python is installed on RHEL 8 by default"
prepare+:
- how: install
package: python3

219
python-specfile.spec Normal file
View file

@ -0,0 +1,219 @@
%global desc %{expand:
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.}
%global base_version 0.38.0
#global prerelease rc1
%global package_version %{base_version}%{?prerelease:~%{prerelease}}
%global pypi_version %{base_version}%{?prerelease}
Name: python-specfile
Version: %{package_version}
Release: 1%{?dist}
Summary: A library for parsing and manipulating RPM spec files
License: MIT
URL: https://github.com/packit/specfile
Source0: %{pypi_source specfile %{pypi_version}}
BuildArch: noarch
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: %{py3_dist setuptools setuptools-scm}
BuildRequires: %{py3_dist importlib-metadata dataclasses rpm typing-extensions}
BuildRequires: %{py3_dist flexmock pytest}
BuildRequires: git-core
%description
%{desc}
%package -n python%{python3_pkgversion}-specfile
Summary: %{summary}
%description -n python%{python3_pkgversion}-specfile
%{desc}
%prep
%autosetup -p1 -n specfile-%{pypi_version}
# Remove bundled egg-info
rm -rf specfile.egg-info
%build
%py3_build
%install
%py3_install
%check
%pytest --verbose tests/unit tests/integration
%files -n python%{python3_pkgversion}-specfile
%license LICENSE
%doc README.md
%{python3_sitelib}/specfile
%{python3_sitelib}/specfile-%{version}-py%{python3_version}.egg-info
%changelog
* Thu Jan 08 2026 Packit <hello@packit.dev> - 0.38.0-1
- 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)
* Fri Oct 03 2025 Packit <hello@packit.dev> - 0.37.1-1
- We have solved a FutureWarning in our codebase. (#485)
* Fri Sep 05 2025 Packit <hello@packit.dev> - 0.37.0-1
- Added support for Elbrus E2K CPU architectures. (#484)
* Fri May 30 2025 Packit <hello@packit.dev> - 0.36.0-1
- We have fixed a bug that caused specfile to traceback when section names with conditional macro expansions containing spaces were present in the spec file. (#476)
* Sun Apr 13 2025 Packit <hello@packit.dev> - 0.35.0-1
- Added support for creating Specfile instances from file objects and strings. (#458)
- The `context_management` type stubs now use `ParamSpec` from `typing_extensions` to support Python < 3.10. (#466)
* Tue Mar 18 2025 Packit <hello@packit.dev> - 0.34.2-1
- context_management: add a type stub override to fix typing. Type checkers like mypy and pyright can now correctly determine the types for `.sources()`, `.sections()`, and the other `Specfile` methods that return context managers. (#457)
* Fri Feb 07 2025 Packit <hello@packit.dev> - 0.34.1-1
- Removed the usage of a walrus operator for Python 3.6 compatibility. (#450)
* Mon Jan 27 2025 Packit <hello@packit.dev> - 0.34.0-1
- Added support for detached (open)SUSE style changelogs (#444)
- Resolves: rhbz#2342178
* Mon Dec 16 2024 Packit <hello@packit.dev> - 0.33.0-1
- There is a new convenience method `Sections.get_or_create()` that allows you to manipulate a section
without checking if it exists first. If a section doesn't exist, it will be appended to the end. (#441)
For example, this will work properly even on spec files without `%%changelog`:
```
with spec.sections() as sections:
changelog = sections.get_or_create("changelog")
changelog[:] = ["%%autochangelog"]
```
- Resolves: rhbz#2332288
* Thu Nov 14 2024 Packit <hello@packit.dev> - 0.32.6-1
- New minor release for testing in CBS Koji
- Resolves: rhbz#2318011
* Sat Oct 26 2024 Packit <hello@packit.dev> - 0.32.5-1
- We have fixed our parser to take in account the deprecations introduced in Python 3.8 (#420)
* Mon Sep 30 2024 Packit <hello@packit.dev> - 0.32.3-1
- specfile can now handle multi-line tag values (enclosed in a macro body, e.g. `%%shrink`). (#412)
- Resolves: rhbz#2299289
* Sun Sep 15 2024 Packit <hello@packit.dev> - 0.32.2-1
- Explicitly invalidate the global parse hash when a SpecParser instance is created to prevent this issue. (#409)
* Mon Jul 29 2024 Packit <hello@packit.dev> - 0.32.1-1
- Fixed two issues related to condition parsing. (#405)
* Mon Jul 22 2024 Packit <hello@packit.dev> - 0.32.0-1
- It is now possible to bump a release in a manner similar to `rpmdev-bumpspec` using `Specfile.bump_release()` method. (#399)
* Tue Jul 09 2024 Packit <hello@packit.dev> - 0.31.0-1
- Value of a `Tag` no longer includes trailing whitespace (if any). (#393)
- specfile now tries to expand macros before processing conditions to be able to resolve conditional expressions defined by macros, for example OpenSUSE Tumbleweed defines `%%ifpython3` macro as `%%if "%%{python_flavor}" == "python3"`. (#394)
- Resolves: rhbz#2294393
* Wed Jun 26 2024 Packit <hello@packit.dev> - 0.30.0-1
- Fixed an exception that occured when accessing the `Specfile.has_autochangelog` property while having unparseable lines (e.g. lines ending with unescaped `%`) in `%%changelog`. (#387)
* Thu Jun 06 2024 Packit <hello@packit.dev> - 0.29.0-1
- Improved compatibility with RPM 4.20 (alpha version is currently in Fedora Rawhide). (#380)
* Thu May 23 2024 Packit <hello@packit.dev> - 0.28.3-1
- Fixed several minor issues such as processing seemingly commented-out macro definitions (e.g. `#%%global prerel rc1`) and treating `SourceLicense` tag as a source. (#374, #376)
- Made `EVR`, `NEVR` and `NEVRA` objects comparable. (#379)
* Sun Mar 17 2024 Packit <hello@packit.dev> - 0.28.0-1
- A trailing newline is no longer added to spec files without one upon saving. (#353)
* Fri Jan 19 2024 Packit <hello@packit.dev> - 0.27.0-1
- Improved handling of commented-out macro definitions and fixed related logic in `Specfile.update_value()`. (#338)
* Mon Nov 20 2023 Packit <hello@packit.dev> - 0.25.0-1
- There is a new method, `Specfile.update_version()`, that allows updating spec file version even if it is a pre-release. (#317)
* Mon Nov 06 2023 Packit <hello@packit.dev> - 0.24.0-1
- Improved type annotations for `UserList` subclasses. (#299)
- Macro definitions gained a new `commented_out` property indicating that a macro definition is commented out. Another new property, `comment_out_style`, determines if it is achieved by using a `%%dnl` (discard next line) directive (e.g. `%%dnl %%global prerelease beta2`) or by replacing the starting `%` with `#` (e.g. `#global prerelease beta2`). (#298)
* Mon Oct 30 2023 Packit <hello@packit.dev> - 0.23.0-1
- Sources now have a `valid` property that indicates whether a source is valid in the current context, meaning it is not present in a false branch of any condition. (#295)
* Fri Oct 06 2023 Packit <hello@packit.dev> - 0.22.1-1
- Removed dependency on setuptools-scm-git-archive. (#290)
* Fri Aug 11 2023 Nikola Forró <nforro@redhat.com> - 0.21.0-1
- `specfile` no longer tracebacks when some sources are missing and can't be _emulated_. In such case the spec file is parsed without them at the cost of `%%setup` and `%%patch` macros potentially expanding differently than with the sources present. (#271)
- Specfile's license in RPM spec file is now confirmed to be SPDX compatible. (#269)
* Mon Jul 31 2023 Packit <hello@packit.dev> - 0.20.2-1
- Fixed Packit config to work properly with `propose-downstream` and `pull-from-upstream` jobs. (#261)
* Fri Oct 07 2022 Packit <hello@packit.dev> - 0.7.0-1
- It is now possible to filter changelog entries by specifying lower bound EVR, upper bound EVR or both. (#104)
- Added support for filenames specified in source URL fragments, for example: `https://example.com/foo/1.0/download.cgi#/%{name}-%{version}.tar.gz` (#100)
* Thu Aug 25 2022 Packit <hello@packit.dev> - 0.6.0-1
- Switched to our own implementation of working with `%changelog` timestamps and removed dependency on arrow (#88)
- Fixed requires of EPEL 8 rpm (#86)
* Wed Aug 10 2022 Packit <hello@packit.dev> - 0.5.1-1
- Added new `%conf` section (#74)
- Switched to rpm-py-installer (#75)
- Fixed detecting extended timestamp format in `%changelog` (#77, #81)
* Fri Jul 22 2022 Packit <hello@packit.dev> - 0.5.0-1
- Strict optional typing is now enforced (#68)
- Fixed deduplication of tag names (#69)
- Sources and patches can now be removed by number (#69)
- Number of digits in a source number is now expressed the same way as packit does it (#69)
- Empty lines are now compressed when deleting tags (#69)
- Added convenience property for getting texts of tag comments (#69)
- Added convenience method for adding a patch (#69)
* Tue Jun 21 2022 Packit <hello@packit.dev> - 0.4.0-1
- Added convenience properties for most used tags (#63)
- Hardened linting by ignoring only specific mypy errors (#64)
- Fixed list of valid tag names and ensured newly added tags are not part of a condition block (#66)
- Initial patch number and its default number of digits are now honored (#66)
- Fixed a bug in `%prep` macro stringification (#67)
* Mon May 16 2022 Packit <hello@packit.dev> - 0.3.0-1
- Made `Sources` a `MutableSequence` (#36)
- Started using consistent terminology for source numbers and added the option to insert a source with a specific number (#47)
- Added support for implicit source numbering (#48)
- Documented sources and `%prep` macros in README (#49)
- Implemented high-level manipulation of version and release (#54)
- Added support for `* Mon May 16 2022 John Doe <packager@example.com> - 0.3.0-1.fc35
- local build` (#56)
- Added `remote` property to sources and enabled addition of `Sources` (#59)
- Implemented mid-level manipulation of `%prep` section, including modification of `%prep` macros (#37, #52)
* Wed Mar 30 2022 Nikola Forró <nforro@redhat.com> - 0.2.0-1
- New upstream release 0.2.0
* Mon Feb 21 2022 Nikola Forró <nforro@redhat.com> - 0.1.1-1
- New upstream release 0.1.1
* Tue Feb 08 2022 Nikola Forró <nforro@redhat.com> - 0.1.0-1
- Initial package

1
sources Normal file
View file

@ -0,0 +1 @@
SHA512 (specfile-0.38.0.tar.gz) = bfd60434b868fd191fb68d5b2fa319db45df80397b6c1000a63d9fe947e998a8a86fcf6a76c0ae9b6ef3321d2b04d4dd9bc565a610bfb117faa64180342fda4d