Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Guide/Troubleshooting for vendor/build? #120

Open
clayg opened this issue Feb 6, 2025 · 0 comments
Open

Guide/Troubleshooting for vendor/build? #120

clayg opened this issue Feb 6, 2025 · 0 comments

Comments

@clayg
Copy link

clayg commented Feb 6, 2025

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 <module>
    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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant