- fix python match iterator regression wrt boolean representation
This commit is contained in:
parent
ecc5d6babb
commit
7d0e69f0b5
57
rpm-4.8.0-python-mibool.patch
Normal file
57
rpm-4.8.0-python-mibool.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
commit 40f788a7bf3741f9c613ff302d4e1b0ceec2658c
|
||||||
|
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
Date: Wed Mar 24 09:53:25 2010 +0200
|
||||||
|
|
||||||
|
Add __bool__() / __nonzero__() method to python rpmmi objects (ticket #153)
|
||||||
|
- Objects supporting __len__() use (len > 0) for boolean representation,
|
||||||
|
which normally makes sense but as the match iterator count is often
|
||||||
|
zero despite the iterator actually existing and returning something,
|
||||||
|
and breaks existing code (rpmlint at least)
|
||||||
|
- Adding a __bool__() (known as __nonzero__() in Python < 3) method
|
||||||
|
returning true for non-NULL iterator fixes this and gives more
|
||||||
|
meaningful answers than pre 4.8.0 which simply always returned True
|
||||||
|
|
||||||
|
diff --git a/python/rpmmi-py.c b/python/rpmmi-py.c
|
||||||
|
index f6dd802..b7bfb1b 100644
|
||||||
|
--- a/python/rpmmi-py.c
|
||||||
|
+++ b/python/rpmmi-py.c
|
||||||
|
@@ -137,11 +137,30 @@ static Py_ssize_t rpmmi_length(rpmmiObject * s)
|
||||||
|
return s->mi ? rpmdbGetIteratorCount(s->mi) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int rpmmi_bool(rpmmiObject *s)
|
||||||
|
+{
|
||||||
|
+ return (s->mi != NULL);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
PyMappingMethods rpmmi_as_mapping = {
|
||||||
|
(lenfunc) rpmmi_length, /* mp_length */
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
|
||||||
|
+static PyNumberMethods rpmmi_as_number = {
|
||||||
|
+ 0, /* nb_add */
|
||||||
|
+ 0, /* nb_subtract */
|
||||||
|
+ 0, /* nb_multiply */
|
||||||
|
+ 0, /* nb_divide */
|
||||||
|
+ 0, /* nb_remainder */
|
||||||
|
+ 0, /* nb_divmod */
|
||||||
|
+ 0, /* nb_power */
|
||||||
|
+ 0, /* nb_negative */
|
||||||
|
+ 0, /* nb_positive */
|
||||||
|
+ 0, /* nb_absolute */
|
||||||
|
+ (inquiry)rpmmi_bool, /* nb_bool/nonzero */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static char rpmmi_doc[] =
|
||||||
|
"";
|
||||||
|
|
||||||
|
@@ -156,7 +175,7 @@ PyTypeObject rpmmi_Type = {
|
||||||
|
0, /* tp_setattr */
|
||||||
|
0, /* tp_compare */
|
||||||
|
0, /* tp_repr */
|
||||||
|
- 0, /* tp_as_number */
|
||||||
|
+ &rpmmi_as_number, /* tp_as_number */
|
||||||
|
0, /* tp_as_sequence */
|
||||||
|
&rpmmi_as_mapping, /* tp_as_mapping */
|
||||||
|
0, /* tp_hash */
|
7
rpm.spec
7
rpm.spec
@ -21,7 +21,7 @@
|
|||||||
Summary: The RPM package management system
|
Summary: The RPM package management system
|
||||||
Name: rpm
|
Name: rpm
|
||||||
Version: %{rpmver}
|
Version: %{rpmver}
|
||||||
Release: 12%{?dist}
|
Release: 13%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Url: http://www.rpm.org/
|
Url: http://www.rpm.org/
|
||||||
Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2
|
Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2
|
||||||
@ -49,6 +49,7 @@ Patch204: rpm-4.8.0-lazy-statfs.patch
|
|||||||
Patch205: rpm-4.8.0-erasure-dsi.patch
|
Patch205: rpm-4.8.0-erasure-dsi.patch
|
||||||
Patch206: rpm-4.8.0-prep-keep-empty.patch
|
Patch206: rpm-4.8.0-prep-keep-empty.patch
|
||||||
Patch207: rpm-4.8.0-python-nocontexts.patch
|
Patch207: rpm-4.8.0-python-nocontexts.patch
|
||||||
|
Patch208: rpm-4.8.0-python-mibool.patch
|
||||||
|
|
||||||
# These are not yet upstream
|
# These are not yet upstream
|
||||||
Patch301: rpm-4.6.0-niagara.patch
|
Patch301: rpm-4.6.0-niagara.patch
|
||||||
@ -203,6 +204,7 @@ packages on a system.
|
|||||||
%patch205 -p1 -b .erasure-dsi
|
%patch205 -p1 -b .erasure-dsi
|
||||||
%patch206 -p1 -b .prep-keep-empty
|
%patch206 -p1 -b .prep-keep-empty
|
||||||
%patch207 -p1 -b .python-nocontexts
|
%patch207 -p1 -b .python-nocontexts
|
||||||
|
%patch208 -p1 -b .python-mibool
|
||||||
|
|
||||||
%patch301 -p1 -b .niagara
|
%patch301 -p1 -b .niagara
|
||||||
%patch302 -p1 -b .geode
|
%patch302 -p1 -b .geode
|
||||||
@ -419,6 +421,9 @@ exit 0
|
|||||||
%doc doc/librpm/html/*
|
%doc doc/librpm/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Mar 24 2010 Panu Matilainen <pmatilai@redhat.com> - 4.8.0-13
|
||||||
|
- fix python match iterator regression wrt boolean representation
|
||||||
|
|
||||||
* Wed Mar 17 2010 Panu Matilainen <pmatilai@redhat.com> - 4.8.0-12
|
* Wed Mar 17 2010 Panu Matilainen <pmatilai@redhat.com> - 4.8.0-12
|
||||||
- unbreak find-lang --with-man from yesterdays braindamage
|
- unbreak find-lang --with-man from yesterdays braindamage
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user