MagicStack / MagicStack/httptools

pip install failing for pypy3.11

Abierto
#122 0 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
1.3k
Forks
107
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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. 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:

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]

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el fallo con el comando de Docker proporcionado y compáralo con la instalación a partir del commit e265ae0. Inspecciona cómo el lanzamiento 0.6.4 incluye los archivos C generados y verifica que el lanzamiento usa Cython 3.1. Se considera completado cuando pip install httptools==0.6.4 se ejecuta correctamente en la imagen de PyPy 3.11 especificada.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
build-system
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.