MagicStack / MagicStack/httptools

pip install failing for pypy3.11

Open
#122 0 comments 3 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.3k
Forks
107
PR merge metrics
No merged PRs in 30d

Description

`pip install httptools==0.6.4` fails under pypy3.11 with the log output below.

The issue is the Cython generated C files bundled with the release in pypi, similar to this [one for lxml](https://bugs.launchpad.net/lxml/+bug/2098055). In fact installing directly from the 0.6.4 commit works fine: `pip install git+https://github.com/MagicStack/httptools@e265ae0`.

The suggested fix there is to build a release with the 3.1 release of Cython which has this fix: https://github.com/cython/cython/pull/6482

# how to reproduce

if you have docker, this is probably the easiest way to reproduce:

```bash
docker run -it --entrypoint=/bin/bash pypy:3.11-7.3.19 -c 'pip install httptools==0.6.4'
```

# logs from unsuccessful install

```
Collecting httptools
Using cached httptools-0.6.4.tar.gz (240 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: httptools
Building wheel for httptools (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [39 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-pypy311
creating build/lib.linux-x86_64-pypy311/httptools
copying httptools/_version.py -> build/lib.linux-x86_64-pypy311/httptools
copying httptools/__init__.py -> build/lib.linux-x86_64-pypy311/httptools
creating build/lib.linux-x86_64-pypy311/httptools/parser
copying httptools/parser/__init__.py -> build/lib.linux-x86_64-pypy311/httptools/parser
copying httptools/parser/errors.py -> build/lib.linux-x86_64-pypy311/httptools/parser
running egg_info
writing httptools.egg-info/PKG-INFO
writing dependency_links to httptools.egg-info/dependency_links.txt
writing requirements to httptools.egg-info/requires.txt
writing top-level names to httptools.egg-info/top_level.txt
reading manifest file 'httptools.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'httptools.egg-info/SOURCES.txt'
copying httptools/parser/cparser.pxd -> build/lib.linux-x86_64-pypy311/httptools/parser
copying httptools/parser/parser.pyx -> build/lib.linux-x86_64-pypy311/httptools/parser
copying httptools/parser/python.pxd -> build/lib.linux-x86_64-pypy311/httptools/parser
copying httptools/parser/url_cparser.pxd -> build/lib.linux-x86_64-pypy311/httptools/parser
copying httptools/parser/url_parser.pyx -> build/lib.linux-x86_64-pypy311/httptools/parser
running build_ext
building 'httptools.parser.parser' extension
creating build/temp.linux-x86_64-pypy311
creating build/temp.linux-x86_64-pypy311/httptools
creating build/temp.linux-x86_64-pypy311/httptools/parser
creating build/temp.linux-x86_64-pypy311/vendor
creating build/temp.linux-x86_64-pypy311/vendor/llhttp
creating build/temp.linux-x86_64-pypy311/vendor/llhttp/src
gcc -pthread -DNDEBUG -O2 -fPIC -I/tmp/pip-install-9p4wcs3b/httptools_a1fc635d910f47dfbfa0906126b6038e/vendor/llhttp/include -I/tmp/pip-install-9p4wcs3b/httptools_a1fc635d910f47dfbfa0906126b6038e/vendor/llhttp/src -I/home/oliver/Projects/lxml/venv/include -I/usr/include/pypy3.11 -c httptools/parser/parser.c -o build/temp.linux-x86_64-pypy311/httptools/parser/parser.o -O2
httptools/parser/parser.c:15388:12: fatal error: internal/pycore_frame.h: No such file or directory
15388 | #include "internal/pycore_frame.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the failure with the provided Docker command and compare it with installing from commit e265ae0. Inspect how the 0.6.4 release bundles the generated C files and verify the release uses Cython 3.1. Done means `pip install httptools==0.6.4` succeeds under the specified PyPy 3.11 image.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.