MagicStack / MagicStack/httptools

Guide/Troubleshooting for vendor/build?

Ouverte
#120 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
1.3k
Forks
107
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la section de développement de README et comparez-la aux commandes de setup.py et Makefile. Vérifiez les chemins signalés `pip install -e .[test]` et `make`, puis documentez les étapes de build requises, les sous-modules vendor récursifs et la dépendance à setuptools. Le travail est terminé lorsqu’un nouveau contributeur peut suivre la configuration de développement sans rencontrer les erreurs signalées.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
c, python
Domaine
build-system, documentation
Type d'issue
Documentation
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.