From d71150502c9d930c7df7742bbcbff292c3de6a70 Mon Sep 17 00:00:00 2001 From: Evan Goode Date: Wed, 22 Apr 2026 12:34:54 -0400 Subject: [PATCH] swig: Add missing %template for std::vector Resolves: RHEL-154736 --- ...-template-for-std-vector-Transaction.patch | 35 +++++++++++++++++++ libdnf.spec | 7 +++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 0031-swig-Add-missing-template-for-std-vector-Transaction.patch diff --git a/0031-swig-Add-missing-template-for-std-vector-Transaction.patch b/0031-swig-Add-missing-template-for-std-vector-Transaction.patch new file mode 100644 index 0000000..4a6f557 --- /dev/null +++ b/0031-swig-Add-missing-template-for-std-vector-Transaction.patch @@ -0,0 +1,35 @@ +From afa4363a521ab5abf6b5b39b94920b0b5561db98 Mon Sep 17 00:00:00 2001 +From: Evan Goode +Date: Mon, 9 Mar 2026 22:23:45 -0400 +Subject: [PATCH] swig: Add missing %template for + std::vector + +MergedTransaction::listPersistences() returns std::vector, +but no SWIG %template was declared for this type. Without it, SWIG wraps the +return value as an opaque pointer instead of a Python list, causing memory leak +warnings and preventing Python code from iterating over the values. + +Add the missing template, matching the existing TransactionStateVector pattern. + +For: https://github.com/rpm-software-management/libdnf/issues/1744 + +Assisted-by: Claude Opus 4.6 +--- + bindings/swig/transaction.i | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/bindings/swig/transaction.i b/bindings/swig/transaction.i +index c5fe04d8e..e1299b05f 100644 +--- a/bindings/swig/transaction.i ++++ b/bindings/swig/transaction.i +@@ -80,6 +80,7 @@ typedef libdnf::CompsPackageType CompsPackageType; + %template() std::vector >; + %template() std::vector >; + %template(TransactionStateVector) std::vector; ++%template(TransactionPersistenceVector) std::vector; + + %template() std::vector; + %template() std::vector; +-- +2.53.0 + diff --git a/libdnf.spec b/libdnf.spec index 472bae2..fba3d83 100644 --- a/libdnf.spec +++ b/libdnf.spec @@ -56,7 +56,7 @@ Name: libdnf Version: %{libdnf_major_version}.%{libdnf_minor_version}.%{libdnf_micro_version} -Release: 15%{?dist} +Release: 16%{?dist} Summary: Library providing simplified C and Python API to libsolv License: LGPL-2.1-or-later URL: https://github.com/rpm-software-management/libdnf @@ -91,6 +91,7 @@ Patch27: 0027-Log-identifiers-of-keys-imported-by-dnf_keyring_add_.patch Patch28: 0028-Fix-dnf_keyring_add_public_key-to-add-all-keys-from-.patch Patch29: 0029-Fix-dnf_keyring_add_public_key-to-add-keys-from-all-.patch Patch30: 0030-Fix-formatting-error-messages-when-importing-subkeys.patch +Patch31: 0031-swig-Add-missing-template-for-std-vector-Transaction.patch BuildRequires: cmake BuildRequires: gcc @@ -334,6 +335,10 @@ popd %endif %changelog +* Wed Apr 22 2026 Evan Goode - 0.73.1-16 +- swig: Add missing %template for std::vector + (RHEL-154736) + * Mon Apr 13 2026 Petr Pisar - 0.73.1-15 - Fix dnf_keyring_add_public_key() to add multiple keys from a single file (RHEL-156063)