Date: Sun, 03 Apr 2016 17:49:44 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-ports-bugs@FreeBSD.org Subject: [Bug 208486] lang/python27 lang/python33 lang/python34 lang/python35: Message-ID: <bug-208486-13@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D208486 Bug ID: 208486 Summary: lang/python27 lang/python33 lang/python34 lang/python35: Product: Ports & Packages Version: Latest Hardware: Any OS: Any Status: New Severity: Affects Many People Priority: --- Component: Individual Port(s) Assignee: python@FreeBSD.org Reporter: dim@FreeBSD.org Assignee: python@FreeBSD.org Flags: maintainer-feedback?(python@FreeBSD.org) Created attachment 168932 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D168932&action= =3Dedit Fix python issue 10910 for lang/python[27,33,34,35] During the exp-run in bug 208158, it was found that pyport.h (from the vari= ous lang/python ports) result in compilation errors with libc++ 3.8.0 [1], for instance with science/py-scipy: In file included from scipy/interpolate/src/_interpolate.cpp:4: In file included from scipy/interpolate/src/interpolate.h:3: In file included from /usr/include/c++/v1/iostream:38: In file included from /usr/include/c++/v1/ios:216: /usr/include/c++/v1/__locale:468:15: error: C++ requires a type specifier f= or all declarations char_type toupper(char_type __c) const ^ /usr/local/include/python2.7/pyport.h:731:29: note: expanded from macro 'toupper' #define toupper(c) towupper(btowc(c)) ^ This is because pyport.h contains a rather nasty workaround for very old FreeBSD ctype issue, which was added in August 2004 [2]: /* On 4.4BSD-descendants, ctype functions serves the whole range of * wchar_t character set rather than single byte code points only. * This characteristic can break some operations of string object * including str.upper() and str.split() on UTF-8 locales. This * workaround was provided by Tim Robbins of FreeBSD project. */ #ifdef __FreeBSD__ #include <osreldate.h> #if __FreeBSD_version > 500039 # define _PY_PORT_CTYPE_UTF8_ISSUE #endif #endif #if defined(__APPLE__) # define _PY_PORT_CTYPE_UTF8_ISSUE #endif #ifdef _PY_PORT_CTYPE_UTF8_ISSUE #include <ctype.h> #include <wctype.h> #undef isalnum #define isalnum(c) iswalnum(btowc(c)) #undef isalpha #define isalpha(c) iswalpha(btowc(c)) #undef islower #define islower(c) iswlower(btowc(c)) #undef isspace #define isspace(c) iswspace(btowc(c)) #undef isupper #define isupper(c) iswupper(btowc(c)) #undef tolower #define tolower(c) towlower(btowc(c)) #undef toupper #define toupper(c) towupper(btowc(c)) #endif Re-defining the macros like this causes trouble with some standard C++ libraries, which explicitly undefine such macros, and create them as inline functions instead. This problem was already reported to upstream Python in 2011, as issue 10910 [3]. The approach there is to wrap the workaround in an #ifdef __cplusplus, but after some digging, I found out that the original bug in ctype, which for example gave back 'True' for isspace('\xa0'), has already been solved in October 2007 by Andrey Chernov, in r172619 [4]. The ctype fixes were MFC'd= to stable/6 and stable/7 in r172929 [5]. I propose to add the attached patch to lang/python[27,33,34,35], which inst= ead corrects the __FreeBSD_version check to the following: #if (__FreeBSD_version >=3D 500040 && __FreeBSD_version < 602113) || \ (__FreeBSD_version >=3D 700000 && __FreeBSD_version < 700054) || \ (__FreeBSD_version >=3D 800000 && __FreeBSD_version < 800001) # define _PY_PORT_CTYPE_UTF8_ISSUE #endif Alternatively, since we don't really support such old FreeBSD versions anym= ore, the whole check and workaround can be removed instead. However, I also submitted the same change to upstream Python, in issue 10910, so hopefully = this fix will appear in future Python releases. [1] http://package18.nyi.freebsd.org/data/headamd64PR208158-default/2016-03-22_= 18h30m05s/logs/errors/py27-scipy-0.16.1.log [2] https://hg.python.org/cpython/rev/adfe7d39a049 [3] http://bugs.python.org/issue10910 [4] https://svnweb.freebsd.org/base?view=3Drevision&revision=3D172619 [5] https://svnweb.freebsd.org/base?view=3Drevision&revision=3D172929 --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-208486-13>