MagicStack / MagicStack/asyncpg
fails to compile under pypy
未关闭
还没有人认领这个 Issue。
- 主要语言
- Python
- 星标
- 8.1k
- 派生
- 468
- PR 合并指标
- 30 天内没有已合并 PR
描述
Details
- Python version: Python 3.5.3 (a39af0be3a22, Jun 05 2017, 20:18:00); [PyPy 5.8.0-beta0 with GCC 6.2.0 20160901]
- Platform: Ubuntu 18.04.1 LTS
- Do you use pgbouncer?: N/A, failed to install
- Did you install asyncpg with pip?: Tried to
- If you built asyncpg locally, which version of Cython did you use?: Installed from pypi
- Can the issue be reproduced under both asyncio and
uvloop?: N/A, failed to install
Build log
$ cd $(mktemp -d)
$ pypy3 -m venv .
$ source bin/activate
$ pypy3 -m pip install asyncpg
Collecting asyncpg
Using cached https://files.pythonhosted.org/packages/bb/78/2a2a0fcfe9b0b08cdf5d03907251502fd127395d50c21f430a1645490293/asyncpg-0.17.0.tar.gz
DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.
Installing collected packages: asyncpg
Running setup.py install for asyncpg ... error
Complete output from command /tmp/tmp.3Bm2olgKoj/bin/pypy3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-k9_z22sp/asyncpg/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-eonpx9k1-record/install-record.txt --single-version-externally-managed --compile --install-headers /tmp/tmp.3Bm2olgKoj/include/site/python3.5/asyncpg:
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.5
creating build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/utils.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/prepared_stmt.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/connection.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/transaction.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/__init__.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/types.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/cursor.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/introspection.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/connresource.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/serverversion.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/connect_utils.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/cluster.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/compat.py -> build/lib.linux-x86_64-3.5/asyncpg
copying asyncpg/pool.py -> build/lib.linux-x86_64-3.5/asyncpg
running egg_info
writing asyncpg.egg-info/PKG-INFO
writing dependency_links to asyncpg.egg-info/dependency_links.txt
writing requirements to asyncpg.egg-info/requires.txt
writing top-level names to asyncpg.egg-info/top_level.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file 'asyncpg.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.py' under directory 'examples'
writing manifest file 'asyncpg.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-3.5/asyncpg/_testbase
copying asyncpg/_testbase/__init__.py -> build/lib.linux-x86_64-3.5/asyncpg/_testbase
copying asyncpg/_testbase/fuzzer.py -> build/lib.linux-x86_64-3.5/asyncpg/_testbase
creating build/lib.linux-x86_64-3.5/asyncpg/exceptions
copying asyncpg/exceptions/__init__.py -> build/lib.linux-x86_64-3.5/asyncpg/exceptions
copying asyncpg/exceptions/_base.py -> build/lib.linux-x86_64-3.5/asyncpg/exceptions
creating build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/__init__.py -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/buffer.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/buffer.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/consts.pxi -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/coreproto.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/coreproto.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/debug.h -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/debug.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/encodings.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/hton.h -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/hton.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/pgtypes.pxi -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/prepared_stmt.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/prepared_stmt.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/protocol.c -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/protocol.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/protocol.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/python.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/settings.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol
copying asyncpg/protocol/settings.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol
creating build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/__init__.py -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/array.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/base.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/base.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/bits.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/bytea.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/datetime.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/float.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/geometry.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/hstore.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/int.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/json.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/misc.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/money.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/network.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/numeric.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/range.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/record.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/text.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/textutils.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/tid.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/tsearch.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/txid.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/uuid.pyx -> build/lib.linux-x86_64-3.5/asyncpg/protocol/codecs
creating build/lib.linux-x86_64-3.5/asyncpg/protocol/record
copying asyncpg/protocol/record/__init__.pxd -> build/lib.linux-x86_64-3.5/asyncpg/protocol/record
copying asyncpg/protocol/record/recordobj.c -> build/lib.linux-x86_64-3.5/asyncpg/protocol/record
copying asyncpg/protocol/record/recordobj.h -> build/lib.linux-x86_64-3.5/asyncpg/protocol/record
running build_ext
building 'asyncpg.protocol.protocol' extension
creating build/temp.linux-x86_64-3.5
creating build/temp.linux-x86_64-3.5/asyncpg
creating build/temp.linux-x86_64-3.5/asyncpg/protocol
creating build/temp.linux-x86_64-3.5/asyncpg/protocol/record
cc -pthread -DNDEBUG -O2 -fPIC -I/tmp/tmp.3Bm2olgKoj/include -I/snap/pypy3/2/include -c asyncpg/protocol/record/recordobj.c -o build/temp.linux-x86_64-3.5/asyncpg/protocol/record/recordobj.o -O2 -fsigned-char -Wall -Wsign-compare -Wconversion
In file included from /snap/pypy3/2/include/Python.h:120:0,
from asyncpg/protocol/record/recordobj.h:4,
from asyncpg/protocol/record/recordobj.c:9:
/snap/pypy3/2/include/unicodeobject.h: In function ‘Py_UNICODE_strlen’:
/snap/pypy3/2/include/unicodeobject.h:341:12: warning: conversion to ‘size_t {aka long unsigned int}’ from ‘int’ may change the sign of the result [-Wsign-conversion]
return res;
^~~
asyncpg/protocol/record/recordobj.c: In function ‘record_hash’:
asyncpg/protocol/record/recordobj.c:132:12: error: ‘_PyHASH_MULTIPLIER’ undeclared (first use in this function)
mult = _PyHASH_MULTIPLIER;
^~~~~~~~~~~~~~~~~~
asyncpg/protocol/record/recordobj.c:132:12: note: each undeclared identifier is reported only once for each function it appears in
asyncpg/protocol/record/recordobj.c: In function ‘record_richcompare’:
asyncpg/protocol/record/recordobj.c:165:13: error: ‘Py_RETURN_NOTIMPLEMENTED’ undeclared (first use in this function); did you mean ‘Py_RETURN_NONE’?
Py_RETURN_NOTIMPLEMENTED;
^~~~~~~~~~~~~~~~~~~~~~~~
Py_RETURN_NONE
asyncpg/protocol/record/recordobj.c: In function ‘record_subscript’:
asyncpg/protocol/record/recordobj.c:336:5: warning: implicit declaration of function ‘_PyErr_SetKeyError’; did you mean ‘PyExc_KeyError’? [-Wimplicit-function-declaration]
_PyErr_SetKeyError(item);
^~~~~~~~~~~~~~~~~~
PyExc_KeyError
asyncpg/protocol/record/recordobj.c: In function ‘record_repr’:
asyncpg/protocol/record/recordobj.c:346:5: error: unknown type name ‘_PyUnicodeWriter’; did you mean ‘_PyUnicode_Ready’?
_PyUnicodeWriter writer;
^~~~~~~~~~~~~~~~
_PyUnicode_Ready
asyncpg/protocol/record/recordobj.c:358:9: warning: implicit declaration of function ‘Py_ReprEnter’ [-Wimplicit-function-declaration]
i = Py_ReprEnter((PyObject *)v);
^~~~~~~~~~~~
asyncpg/protocol/record/recordobj.c:364:5: warning: implicit declaration of function ‘_PyUnicodeWriter_Init’; did you mean ‘_PyUnicode_AsString’? [-Wimplicit-function-declaration]
_PyUnicodeWriter_Init(&writer);
^~~~~~~~~~~~~~~~~~~~~
_PyUnicode_AsString
asyncpg/protocol/record/recordobj.c:365:11: error: request for member ‘overallocate’ in something not a structure or union
writer.overallocate = 1;
^
asyncpg/protocol/record/recordobj.c:366:11: error: request for member ‘min_length’ in something not a structure or union
writer.min_length = 12; /* <Record a=1> */
^
asyncpg/protocol/record/recordobj.c:368:9: warning: implicit declaration of function ‘_PyUnicodeWriter_WriteASCIIString’; did you mean ‘PyUnicode_CompareWithASCIIString’? [-Wimplicit-function-declaration]
if (_PyUnicodeWriter_WriteASCIIString(&writer, "<Record ", 8) < 0) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyUnicode_CompareWithASCIIString
asyncpg/protocol/record/recordobj.c:378:17: warning: implicit declaration of function ‘_PyUnicodeWriter_WriteChar’; did you mean ‘PyUnicode_FromWideChar’? [-Wimplicit-function-declaration]
if (_PyUnicodeWriter_WriteChar(&writer, ' ') < 0) {
^~~~~~~~~~~~~~~~~~~~~~~~~~
PyUnicode_FromWideChar
asyncpg/protocol/record/recordobj.c:406:13: warning: implicit declaration of function ‘_PyUnicodeWriter_WriteStr’; did you mean ‘PyUnicode_InternFromString’? [-Wimplicit-function-declaration]
if (_PyUnicodeWriter_WriteStr(&writer, key_repr) < 0) {
^~~~~~~~~~~~~~~~~~~~~~~~~
PyUnicode_InternFromString
asyncpg/protocol/record/recordobj.c:425:11: error: request for member ‘overallocate’ in something not a structure or union
writer.overallocate = 0;
^
asyncpg/protocol/record/recordobj.c:431:5: warning: implicit declaration of function ‘Py_ReprLeave’ [-Wimplicit-function-declaration]
Py_ReprLeave((PyObject *)v);
^~~~~~~~~~~~
asyncpg/protocol/record/recordobj.c:432:12: warning: implicit declaration of function ‘_PyUnicodeWriter_Finish’; did you mean ‘_PyUnicode_AsString’? [-Wimplicit-function-declaration]
return _PyUnicodeWriter_Finish(&writer);
^~~~~~~~~~~~~~~~~~~~~~~
_PyUnicode_AsString
asyncpg/protocol/record/recordobj.c:432:12: warning: return makes pointer from integer without a cast [-Wint-conversion]
return _PyUnicodeWriter_Finish(&writer);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
asyncpg/protocol/record/recordobj.c:436:5: warning: implicit declaration of function ‘_PyUnicodeWriter_Dealloc’; did you mean ‘_PyUnicode_Ready’? [-Wimplicit-function-declaration]
_PyUnicodeWriter_Dealloc(&writer);
^~~~~~~~~~~~~~~~~~~~~~~~
_PyUnicode_Ready
error: command 'cc' failed with exit status 1
----------------------------------------
Command "/tmp/tmp.3Bm2olgKoj/bin/pypy3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-k9_z22sp/asyncpg/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-eonpx9k1-record/install-record.txt --single-version-externally-managed --compile --install-headers /tmp/tmp.3Bm2olgKoj/include/site/python3.5/asyncpg" failed with error code 1 in /tmp/pip-build-k9_z22sp/asyncpg/
You are using pip version 9.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
使用所示的 PyPy virtualenv 和 pip install asyncpg 重现该失败,然后检查 asyncpg/protocol/record/recordobj.c,以及构建日志中引用的 PyPy Python 头文件。在报告的 PyPy 环境下成功构建并安装 asyncpg 包即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- c, python
- 领域
- build-system, databases
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100