add python3 subpackage (#985288)

This commit is contained in:
Kamil Dudka 2013-08-08 14:09:15 +02:00
parent c2150c3aea
commit c73ce635bc
2 changed files with 138 additions and 2 deletions

View File

@ -0,0 +1,101 @@
From 1b2df1bd709c6fffc830bc3d5f5a06ebe2f7c8b5 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Thu, 8 Aug 2013 13:56:50 +0200
Subject: [PATCH] python3: use Py_TYPE(obj) instead of obj->ob_type
---
src/pycurl.c | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/pycurl.c b/src/pycurl.c
index 87dac7e..fcd8880 100644
--- a/src/pycurl.c
+++ b/src/pycurl.c
@@ -382,7 +382,7 @@ get_thread_state(const CurlObject *self)
*/
if (self == NULL)
return NULL;
- assert(self->ob_type == p_Curl_Type);
+ assert(Py_TYPE(self) == p_Curl_Type);
if (self->state != NULL)
{
/* inside perform() */
@@ -412,7 +412,7 @@ get_thread_state_multi(const CurlMultiObject *self)
*/
if (self == NULL)
return NULL;
- assert(self->ob_type == p_CurlMulti_Type);
+ assert(Py_TYPE(self) == p_CurlMulti_Type);
if (self->state != NULL)
{
/* inside multi_perform() */
@@ -455,7 +455,7 @@ static void
assert_share_state(const CurlShareObject *self)
{
assert(self != NULL);
- assert(self->ob_type == p_CurlShare_Type);
+ assert(Py_TYPE(self) == p_CurlShare_Type);
#ifdef WITH_THREAD
assert(self->lock != NULL);
#endif
@@ -467,7 +467,7 @@ static void
assert_curl_state(const CurlObject *self)
{
assert(self != NULL);
- assert(self->ob_type == p_Curl_Type);
+ assert(Py_TYPE(self) == p_Curl_Type);
#ifdef WITH_THREAD
(void) get_thread_state(self);
#endif
@@ -479,7 +479,7 @@ static void
assert_multi_state(const CurlMultiObject *self)
{
assert(self != NULL);
- assert(self->ob_type == p_CurlMulti_Type);
+ assert(Py_TYPE(self) == p_CurlMulti_Type);
#ifdef WITH_THREAD
if (self->state != NULL) {
assert(self->multi_handle != NULL);
@@ -1061,7 +1061,7 @@ util_curl_close(CurlObject *self)
/* Zero handle and thread-state to disallow any operations to be run
* from now on */
assert(self != NULL);
- assert(self->ob_type == p_Curl_Type);
+ assert(Py_TYPE(self) == p_Curl_Type);
handle = self->handle;
self->handle = NULL;
if (handle == NULL) {
@@ -2351,7 +2351,7 @@ do_curl_setopt(CurlObject *self, PyObject *args)
return Py_None;
}
}
- if (obj->ob_type != p_CurlShare_Type) {
+ if (Py_TYPE(obj) != p_CurlShare_Type) {
PyErr_SetString(PyExc_TypeError, "invalid arguments to setopt");
return NULL;
}
@@ -3093,7 +3093,7 @@ do_multi_info_read(CurlMultiObject *self, PyObject *args)
Py_DECREF(ok_list);
CURLERROR_MSG("Unable to fetch curl handle from curl object");
}
- assert(co->ob_type == p_Curl_Type);
+ assert(Py_TYPE(co) == p_Curl_Type);
if (msg->msg != CURLMSG_DONE) {
/* FIXME: what does this mean ??? */
}
@@ -3684,9 +3684,9 @@ initpycurl(void)
p_Curl_Type = &Curl_Type;
p_CurlMulti_Type = &CurlMulti_Type;
p_CurlShare_Type = &CurlShare_Type;
- Curl_Type.ob_type = &PyType_Type;
- CurlMulti_Type.ob_type = &PyType_Type;
- CurlShare_Type.ob_type = &PyType_Type;
+ Py_TYPE(&Curl_Type) = &PyType_Type;
+ Py_TYPE(&CurlMulti_Type) = &PyType_Type;
+ Py_TYPE(&CurlShare_Type) = &PyType_Type;
/* Create the module and add the functions */
m = Py_InitModule3("pycurl", curl_methods, module_doc);
--
1.7.1

View File

@ -2,7 +2,7 @@
Name: python-pycurl
Version: 7.19.0
Release: 18.20130315git8d654296%{?dist}
Release: 19.20130315git8d654296%{?dist}
Summary: A Python interface to libcurl
Group: Development/Languages
@ -17,8 +17,12 @@ Patch0: 0000-pycurl-7.19.7-8d654296.patch
Patch1: 0001-do_curl_getinfo-fix-misplaced-endif.patch
Patch2: 0002-runwsgi.py-start-the-server-explicitly-at-127.0.0.1.patch
# for Python3 compatibility
Patch3: 0003-python3-use-Py_TYPE-obj-instead-of-obj-ob_type.patch
Requires: keyutils-libs
BuildRequires: python-devel
BuildRequires: python3-devel
BuildRequires: curl-devel >= 7.19.0
BuildRequires: openssl-devel
BuildRequires: python-bottle
@ -44,6 +48,15 @@ objects identified by a URL from a Python program, similar to the
urllib Python module. PycURL is mature, very fast, and supports a lot
of features.
%package -n python3-pycurl
Summary: A Python interface to libcurl for Python 3
%description -n python3-pycurl
PycURL is a Python interface to libcurl. PycURL can be used to fetch
objects identified by a URL from a Python program, similar to the
urllib Python module. PycURL is mature, very fast, and supports a lot
of features.
%prep
%setup0 -q -n pycurl-%{version}
@ -56,6 +69,7 @@ find -type f | xargs sed -i 's/\$Id: [^$]*\$/$Id$/'
# patches not yet upstream
%patch1 -p1
%patch2 -p1
%patch3 -p1
# remove a test specific to OpenSSL-powered libcurl
rm -f tests/certinfo_test.py
@ -63,22 +77,43 @@ rm -f tests/certinfo_test.py
# temporarily disable intermittently failing test-case
rm -f tests/multi_socket_select_test.py
# copy the whole directory for the python3 build
cp -a . %{py3dir}
%build
CFLAGS="$RPM_OPT_FLAGS -DHAVE_CURL_OPENSSL" %{__python} setup.py build
export CFLAGS="$RPM_OPT_FLAGS -DHAVE_CURL_OPENSSL"
%{__python} setup.py build
pushd %{py3dir}
%{__python3} setup.py build
popd
%check
export PYTHONPATH=$RPM_BUILD_ROOT%{python_sitearch}
make test PYTHON=%{__python}
pushd %{py3dir}
export PYTHONPATH=$RPM_BUILD_ROOT%{python3_sitearch}
make test PYTHON=%{__python3}
popd
%install
%{__python} setup.py install -O1 --skip-build --root %{buildroot}
pushd %{py3dir}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot}
popd
rm -rf %{buildroot}%{_datadir}/doc/pycurl
%files
%doc COPYING COPYING2 ChangeLog README.rst TODO examples doc tests
%{python_sitearch}/*
%files -n python3-pycurl
%doc COPYING COPYING2 ChangeLog README.rst TODO examples doc tests
%{python3_sitearch}/*
%changelog
* Thu Aug 08 2013 Kamil Dudka <kdudka@redhat.com> - 7.19.0-19.20130315git8d654296
- add python3 subpackage (#985288)
* Thu Aug 08 2013 Kamil Dudka <kdudka@redhat.com> - 7.19.0-18.20130315git8d654296
- sync with upstream 8d654296