New issue 2737: pyhash fails to build with pypy https://bitbucket.org/pypy/pypy/issues/2737/pyhash-fails-to-build-with-pypy
Corentin Chary: See https://github.com/flier/pyfasthash/issues/20#issuecomment-358857011 ``` $ pip install pyhash Collecting pyhash Using cached pyhash-0.8.2.tar.gz Building wheels for collected packages: pyhash Running setup.py bdist_wheel for pyhash ... error Complete output from command /home/cchary/dev/graphite/carbon/venv/bin/pypy -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-MsOBgl/pyhash/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpInZIz0pip-wheel- --python-tag pp258: running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-2.7 copying pyhash.py -> build/lib.linux-x86_64-2.7 running build_ext building '_pyhash' extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src creating build/temp.linux-x86_64-2.7/src/fnv creating build/temp.linux-x86_64-2.7/src/smhasher creating build/temp.linux-x86_64-2.7/src/lookup3 creating build/temp.linux-x86_64-2.7/src/SuperFastHash cc -pthread -DNDEBUG -O2 -fPIC -DBOOST_PYTHON_STATIC_LIB -I/home/cchary/dev/graphite/carbon/venv/include -c src/Hash.cpp -o build/temp.linux-x86_64-2.7/src/Hash.o -DSUPPORT_INT128=1 -msse4.2 -maes In file included from src/Hash.cpp:1:0: src/Hash.h: In function ‘PyObject* internal::convert(const T&) [with T = __int128 unsigned; PyObject = _object]’: src/Hash.h:72:36: error: invalid conversion from ‘const unsigned char*’ to ‘unsigned char*’ [-fpermissive] return ::_PyLong_FromByteArray((const unsigned char*) &value, sizeof(uint128_t), /*little_endian*/ 1, /*is_signed*/ 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/cchary/dev/graphite/carbon/venv/include/Python.h:141:0, from /usr/include/boost/python/detail/wrap_python.hpp:151, from /usr/include/boost/python/detail/prefix.hpp:13, from /usr/include/boost/python/args.hpp:8, from /usr/include/boost/python.hpp:11, from src/Hash.h:3, from src/Hash.cpp:1: /usr/lib/pypy/include/pypy_decl.h:1047:24: note: initializing argument 1 of ‘PyObject* _PyPyLong_FromByteArray(unsigned char*, long unsigned int, int, int)’ PyAPI_FUNC(PyObject *) _PyLong_FromByteArray(unsigned char *arg0, Unsigned arg1, int arg2, int arg3); ^ In file included from src/Hash.cpp:1:0: src/Hash.h: In function ‘T extract_hash_value(PyObject*) [with T = __int128 unsigned; PyObject = _object]’: src/Hash.h:152:5: error: ‘_PyLong_AsByteArray’ was not declared in this scope _PyLong_AsByteArray((PyLongObject *)obj, (unsigned char *) &value, sizeof(uint128_t), /*little_endian*/ 1, /*is_signed*/ 0); ^~~~~~~~~~~~~~~~~~~ src/Hash.h:152:5: note: suggested alternative: ‘_PyLong_FromByteArray’ _PyLong_AsByteArray((PyLongObject *)obj, (unsigned char *) &value, sizeof(uint128_t), /*little_endian*/ 1, /*is_signed*/ 0); ^~~~~~~~~~~~~~~~~~~ _PyLong_FromByteArray In file included from src/Hash.cpp:1:0: src/Hash.h: In static member function ‘static boost::python::api::object Hasher<T>::CallWithArgs(boost::python::tuple, boost::python::dict)’: src/Hash.h:237:50: error: there are no arguments to ‘PyUnicode_AsUTF16String’ that depend on a template parameter, so a declaration of ‘PyUnicode_AsUTF16String’ must be available [-fpermissive] py::object utf16 = py::object(py::handle<>(PyUnicode_AsUTF16String(arg.ptr()))); ^~~~~~~~~~~~~~~~~~~~~~~ src/Hash.h:237:50: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) src/Hash.h: In instantiation of ‘static boost::python::api::object Hasher<T>::CallWithArgs(boost::python::tuple, boost::python::dict) [with T = city_hash_t<__int128 unsigned>]’: src/CityHash.h:155:57: required from here src/Hash.h:237:73: error: ‘PyUnicode_AsUTF16String’ was not declared in this scope py::object utf16 = py::object(py::handle<>(PyUnicode_AsUTF16String(arg.ptr()))); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~ src/Hash.h:237:73: note: suggested alternative: ‘PyUnicode_AsUTF8String’ ``` Looks like the first error could be fixed in pypy (the missing `const`). The second comes from the fact that `Py_UNICODE_WIDE` is defined even if UTF16 function do not seem to be implemented _______________________________________________ pypy-issue mailing list [email protected] https://mail.python.org/mailman/listinfo/pypy-issue
