From 597be76d886177caa1ee79a2ecf65034e2371d16f03e9ee4b28ee0091f590955 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Wed, 14 Nov 2012 08:16:14 +0000 Subject: [PATCH] Accepting request 141145 from devel:languages:python - Add numpy-python33.patch to fix compilation with Python 3.3 OBS-URL: https://build.opensuse.org/request/show/141145 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-numpy?expand=0&rev=24 --- numpy-python33.patch | 71 +++++++++++++++++++++++++++++++++++++++++++ python-numpy-doc.spec | 13 ++++---- python-numpy.spec | 7 +++-- python3-numpy.changes | 5 +++ python3-numpy.spec | 12 +++++--- 5 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 numpy-python33.patch diff --git a/numpy-python33.patch b/numpy-python33.patch new file mode 100644 index 0000000..db71307 --- /dev/null +++ b/numpy-python33.patch @@ -0,0 +1,71 @@ +Index: numpy-1.6.2/numpy/core/src/multiarray/scalarapi.c +=================================================================== +--- numpy-1.6.2.orig/numpy/core/src/multiarray/scalarapi.c ++++ numpy-1.6.2/numpy/core/src/multiarray/scalarapi.c +@@ -652,6 +652,34 @@ PyArray_Scalar(void *data, PyArray_Descr + itemsize = (((itemsize - 1) >> 2) + 1) << 2; + } + } ++#if PY_VERSION_HEX >= 0x03030000 ++ if (type_num == NPY_UNICODE) { ++ PyObject *u, *args; ++ int byteorder; ++#if NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN ++ byteorder = -1; ++#elif NPY_BYTE_ORDER == NPY_BIG_ENDIAN ++ byteorder = +1; ++#else ++ #error Endianness undefined ? ++#endif ++ if (swap) byteorder *= -1; ++ ++ u = PyUnicode_DecodeUTF32(data, itemsize, NULL, &byteorder); ++ if (u == NULL) { ++ return NULL; ++ } ++ args = Py_BuildValue("(O)", u); ++ if (args == NULL) { ++ Py_DECREF(u); ++ return NULL; ++ } ++ obj = type->tp_new(type, args, NULL); ++ Py_DECREF(u); ++ Py_DECREF(args); ++ return obj; ++ } ++#endif + if (type->tp_itemsize != 0) { + /* String type */ + obj = type->tp_alloc(type, itemsize); +@@ -688,6 +716,7 @@ PyArray_Scalar(void *data, PyArray_Descr + memcpy(destptr, data, itemsize); + return obj; + } ++#if PY_VERSION_HEX < 0x0303000 + else if (type_num == PyArray_UNICODE) { + /* tp_alloc inherited from Python PyBaseObject_Type */ + PyUnicodeObject *uni = (PyUnicodeObject*)obj; +@@ -759,6 +788,7 @@ PyArray_Scalar(void *data, PyArray_Descr + #endif + return obj; + } ++#endif // PY_VERSION_HEX < 0x03030000 + else { + PyVoidScalarObject *vobj = (PyVoidScalarObject *)obj; + vobj->base = NULL; +Index: numpy-1.6.2/numpy/core/src/multiarray/scalartypes.c.src +=================================================================== +--- numpy-1.6.2.orig/numpy/core/src/multiarray/scalartypes.c.src ++++ numpy-1.6.2/numpy/core/src/multiarray/scalartypes.c.src +@@ -2323,7 +2323,11 @@ finish: + *((npy_@name@ *)dest) = *((npy_@name@ *)src); + #elif @default@ == 1 /* unicode and strings */ + if (itemsize == 0) { /* unicode */ ++#if PY_VERSION_HEX >= 0x03030000 ++ itemsize = PyUnicode_GetLength(robj) * PyUnicode_KIND(robj); ++#else + itemsize = ((PyUnicodeObject *)robj)->length * sizeof(Py_UNICODE); ++#endif + } + memcpy(dest, src, itemsize); + /* @default@ == 2 won't get here */ diff --git a/python-numpy-doc.spec b/python-numpy-doc.spec index d2d60b4..5e8eced 100644 --- a/python-numpy-doc.spec +++ b/python-numpy-doc.spec @@ -15,12 +15,13 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + %define modname numpy Name: python-%{modname}-doc %define docname numpydoc Version: 1.6.2 -%define docvers 0.4 Release: 0 +%define docvers 0.4 Url: http://sourceforge.net/projects/numpy Summary: Documentation for python-numpy License: BSD-3-Clause @@ -28,19 +29,19 @@ Group: Development/Libraries/Python Source: %{modname}-%{version}.tar.gz Patch1: numpy-buildfix.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: python-devel -BuildRequires: python-Sphinx -BuildRequires: python-matplotlib -BuildRequires: python-numpy-devel BuildRequires: blas-devel BuildRequires: lapack-devel +BuildRequires: python-Sphinx +BuildRequires: python-devel +BuildRequires: python-matplotlib +BuildRequires: python-numpy-devel BuildRequires: texlive-latex BuildRequires: zip Provides: python-numpydoc = %{version} Obsoletes: python-numpydoc < %{version} %if 0%{?suse_version} -BuildRequires: gcc-fortran BuildRequires: fdupes +BuildRequires: gcc-fortran %if 0%{?suse_version} <= 1110 %{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %else diff --git a/python-numpy.spec b/python-numpy.spec index 19ffc69..4a9ed87 100644 --- a/python-numpy.spec +++ b/python-numpy.spec @@ -15,6 +15,7 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + %define modname numpy Name: python-%{modname} Version: 1.6.2 @@ -26,14 +27,14 @@ Group: Development/Libraries/Python Source: %{modname}-%{version}.tar.gz Patch1: numpy-buildfix.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: python-devel BuildRequires: blas-devel BuildRequires: lapack-devel +BuildRequires: python-devel Requires: python >= %{py_ver} Provides: numpy = %{version} %if 0%{?suse_version} -BuildRequires: gcc-fortran BuildRequires: fdupes +BuildRequires: gcc-fortran # FIXME: atlas is horribly broken # %if 0%{?suse_version} <= 1210 # BuildRequires: libatlas3-devel @@ -67,9 +68,9 @@ basic linear algebra and random number generation. Summary: Development files for %{modname} applications Group: Development/Libraries/Python Requires: %{name} = %{version} -Requires: python-devel Requires: blas-devel Requires: lapack-devel +Requires: python-devel %if 0%{?suse_version} Requires: gcc-fortran %py_requires -d diff --git a/python3-numpy.changes b/python3-numpy.changes index ebd8503..bcfb64f 100644 --- a/python3-numpy.changes +++ b/python3-numpy.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Nov 13 12:23:18 UTC 2012 - idonmez@suse.com + +- Add numpy-python33.patch to fix compilation with Python 3.3 + ------------------------------------------------------------------- Fri Aug 17 08:20:36 UTC 2012 - toddrme2178@gmail.com diff --git a/python3-numpy.spec b/python3-numpy.spec index b816823..f577c09 100644 --- a/python3-numpy.spec +++ b/python3-numpy.spec @@ -15,6 +15,7 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + %define modname numpy Name: python3-%{modname} Version: 1.6.2 @@ -25,12 +26,13 @@ License: BSD-3-Clause Group: Development/Libraries/Python Source: %{modname}-%{version}.tar.gz Patch1: numpy-buildfix.patch +Patch2: numpy-python33.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: blas-devel +BuildRequires: lapack-devel BuildRequires: python3 BuildRequires: python3-2to3 BuildRequires: python3-devel -BuildRequires: blas-devel -BuildRequires: lapack-devel # FIXME: atlas is horribly broken # %if 0%{?suse_version} <= 1210 # BuildRequires: libatlas3-devel @@ -40,8 +42,8 @@ BuildRequires: lapack-devel %{!?py3_ver: %global py3_ver %(python3 -c "import sys; version=str(sys.version_info[0]) + '.' + str(sys.version_info[1]); print(version)" 2>/dev/null || echo PYTHON-NOT-FOUND)} %endif %if 0%{?suse_version} -BuildRequires: gcc-fortran BuildRequires: fdupes +BuildRequires: gcc-fortran %else BuildRequires: gcc-gfortran %endif @@ -84,7 +86,9 @@ This package contains files for developing applications using %{modname}. %prep %setup -q -n %{modname}-%{version} -%patch1 -p0 +%patch1 +%patch2 -p1 + sed -i "1d" %{modname}/{compat/setup{,scons},distutils/{conv_template,cpuinfo,exec_command,from_template,setup,setupscons,system_info},f2py/{auxfuncs,capi_maps,cb_rules,cfuncs,common_rules,crackfortran,diagnose,docs/usersguide/setup_example,f2py2e,f90mod_rules,func2subr,__init__,rules,setup,setupscons,use_rules},ma/setup{,scons},matrixlib/setup{,scons},setup,setupscons,testing/print_coercion_tables,testing/setup{,scons}}.py # Fix non-executable scripts %build