Use new PyCapsule API instead of former PyCObjects API.
Signed-off-by: Adam Tkac <atkac@redhat.com>
This commit is contained in:
parent
564120b220
commit
ca6fe127cf
@ -4,12 +4,13 @@
|
||||
Summary: Connects C/C++/Objective C to some high-level programming languages
|
||||
Name: swig
|
||||
Version: 2.0.0
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
License: GPLv3+ and BSD
|
||||
Group: Development/Tools
|
||||
URL: http://swig.sourceforge.net/
|
||||
Source: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz
|
||||
Patch1: swig-1.3.23-pylib.patch
|
||||
Patch2: swig200-rh623854.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildRequires: perl, python-devel
|
||||
@ -42,7 +43,7 @@ This package contains documentation for SWIG and useful examples
|
||||
%prep
|
||||
%setup -q -n swig-%{version}
|
||||
%patch1 -p1 -b .pylib
|
||||
|
||||
%patch2 -p1 -b .rh623854
|
||||
|
||||
# as written on https://fedoraproject.org/wiki/Packaging_talk:Perl, section 2
|
||||
# (specific req/prov filtering). Before you remove this hack make sure you don't
|
||||
@ -114,6 +115,9 @@ rm -rf %{buildroot}
|
||||
%doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT
|
||||
|
||||
%changelog
|
||||
* Tue Aug 17 2010 Adam Tkac <atkac redhat com> 2.0.0-3
|
||||
- python: use new PyCapsule API instead of former PyCObjects API
|
||||
|
||||
* Mon Jul 12 2010 Adam Tkac <atkac redhat com> 2.0.0-2
|
||||
- add LICENSE-GPL, LICENSE-UNIVERSITIES and COPYRIGHT to %%doc
|
||||
- include all license files in the -doc subpkg
|
||||
|
86
swig200-rh623854.patch
Normal file
86
swig200-rh623854.patch
Normal file
@ -0,0 +1,86 @@
|
||||
diff -up swig-2.0.0/Lib/python/pyrun.swg.rh623854 swig-2.0.0/Lib/python/pyrun.swg
|
||||
--- swig-2.0.0/Lib/python/pyrun.swg.rh623854 2010-08-17 14:18:36.998343153 +0200
|
||||
+++ swig-2.0.0/Lib/python/pyrun.swg 2010-08-17 14:32:16.880249117 +0200
|
||||
@@ -45,8 +45,18 @@
|
||||
#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg
|
||||
#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code)
|
||||
#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg)
|
||||
-#define SWIG_fail goto fail
|
||||
+#define SWIG_fail goto fail
|
||||
|
||||
+/*
|
||||
+ * Python 2.7 and newer and Python 3.1 and newer should use Capsules API instead of
|
||||
+ * CObjects API.
|
||||
+ */
|
||||
+#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
|
||||
+ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0))
|
||||
+#define USE_CAPSULES
|
||||
+#define TYPE_POINTER_NAME \
|
||||
+ ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer" SWIG_TYPE_TABLE_NAME)
|
||||
+#endif
|
||||
|
||||
/* Runtime API implementation */
|
||||
|
||||
@@ -1356,8 +1366,12 @@ SWIG_Python_GetModule(void) {
|
||||
#ifdef SWIG_LINK_RUNTIME
|
||||
type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
|
||||
#else
|
||||
+#ifdef USE_CAPSULES
|
||||
+ type_pointer = PyCapsule_Import(TYPE_POINTER_NAME, 0);
|
||||
+#else
|
||||
type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
|
||||
(char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
|
||||
+#endif
|
||||
if (PyErr_Occurred()) {
|
||||
PyErr_Clear();
|
||||
type_pointer = (void *)0;
|
||||
@@ -1402,9 +1416,14 @@ PyModule_AddObject(PyObject *m, char *na
|
||||
SWIGRUNTIME void
|
||||
SWIG_Python_DestroyModule(void *vptr)
|
||||
{
|
||||
+ size_t i;
|
||||
+#ifdef USE_CAPSULES
|
||||
+ swig_module_info *swig_module =
|
||||
+ (swig_module_info *) PyCapsule_GetPointer(vptr, TYPE_POINTER_NAME);
|
||||
+#else
|
||||
swig_module_info *swig_module = (swig_module_info *) vptr;
|
||||
+#endif
|
||||
swig_type_info **types = swig_module->types;
|
||||
- size_t i;
|
||||
for (i =0; i < swig_module->size; ++i) {
|
||||
swig_type_info *ty = types[i];
|
||||
if (ty->owndata) {
|
||||
@@ -1426,7 +1445,12 @@ SWIG_Python_SetModule(swig_module_info *
|
||||
PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
|
||||
swig_empty_runtime_method_table);
|
||||
#endif
|
||||
+#ifdef USE_CAPSULES
|
||||
+ PyObject *pointer = PyCapsule_New((void *)swig_module, TYPE_POINTER_NAME,
|
||||
+ SWIG_Python_DestroyModule);
|
||||
+#else
|
||||
PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
|
||||
+#endif
|
||||
if (pointer && module) {
|
||||
PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
|
||||
} else {
|
||||
@@ -1449,12 +1473,20 @@ SWIG_Python_TypeQuery(const char *type)
|
||||
PyObject *obj = PyDict_GetItem(cache, key);
|
||||
swig_type_info *descriptor;
|
||||
if (obj) {
|
||||
+#ifdef USE_CAPSULES
|
||||
+ descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, type);
|
||||
+#else
|
||||
descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
|
||||
+#endif
|
||||
} else {
|
||||
swig_module_info *swig_module = SWIG_Python_GetModule();
|
||||
descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
|
||||
if (descriptor) {
|
||||
+#ifdef USE_CAPSULES
|
||||
+ obj = PyCapsule_New(descriptor, type, NULL);
|
||||
+#else
|
||||
obj = PyCObject_FromVoidPtr(descriptor, NULL);
|
||||
+#endif
|
||||
PyDict_SetItem(cache, key, obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
Loading…
Reference in New Issue
Block a user