MagicStack / MagicStack/httptools

Guide/Troubleshooting for vendor/build?

Aperta
#120 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Python
Stelle
1.3k
Fork
107
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

After digging through the source for a while and trying to see if httptools might meet my needs I decided it was time to add a test case to `tests/test_parser.py`

I was attempting to follow the Development instructions https://github.com/MagicStack/httptools?tab=readme-ov-file#development and got an error during `pip install -e .[test]`.

```
httptools/parser/parser.c:1260:10: fatal error: llhttp.h: No such file or directory
1260 | #include "llhttp.h"
| ^~~~~~~~~~
compilation terminated.
```

Ubuntu doesn't have a `node-llhttp-dev` package and `node-llhttp` doesn't help; that's about where my C build knowledge ends sadly.

I was so confused until I found the `vendor` directory with some anemic submodules; apparently the `--recursive` in the `git clone` step is kind of important 😉 In my case the alternative solution was `git submodule update --init` after the fact; whoops!

Then I remembered how desperately modern python's are trying to get rid of setuptools:

```
(.venv) clayg@ThinkStation:~/Workspace/scratch/httptools$ make
python3 setup.py build_ext --inplace
Traceback (most recent call last):
File "/mnt/c/Users/cgerrard/Workspace/scratch/httptools/setup.py", line 10, in
from setuptools import setup, Extension
ModuleNotFoundError: No module named 'setuptools'
make: *** [Makefile:9: compile] Error 1
```

... but I eventually got to write my test (surprise: llhttp does NOT allow for non-ascii bytes in header names or values: https://gist.github.com/clayg/174d8e427c4263230b3cdf6591f3365f)

Anyway; would you find it helpful to include some expanded notes/guide/troubleshooting on the build requirements/process (or how to update the vendored submodules?) added to the existing README development section or would it be better to keep that as simple as possible and make a new/different file?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dalla sezione sullo sviluppo di README e confrontala con i comandi in setup.py e Makefile. Verifica i percorsi segnalati `pip install -e .[test]` e `make`, quindi documenta i passaggi di build necessari, i sottomoduli vendor ricorsivi e il requisito setuptools. Il lavoro è completato quando un nuovo collaboratore può seguire la configurazione dell'ambiente di sviluppo senza incontrare gli errori segnalati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
c, python
Ambito
build-system, documentation
Tipo di issue
Documentazione
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.