Skip to content

Commit

Permalink
http-parser -> llhttp (#5364)
Browse files Browse the repository at this point in the history
  • Loading branch information
derlih authored Oct 27, 2021
1 parent 40646d0 commit d379c6b
Show file tree
Hide file tree
Showing 11 changed files with 302 additions and 282 deletions.
40 changes: 39 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,41 @@ jobs:
run: |
LC_ALL=C sort -c CONTRIBUTORS.txt
gen_llhttp:
name: Generate llhttp sources
needs: lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: true
- name: Cache llhttp generated files
uses: actions/cache@v2
id: cache
with:
key: llhttp-${{ hashFiles('vendor/llhttp/package.json', 'vendor/llhttp/src/**/*') }}
path: vendor/llhttp/build
- name: Setup NodeJS
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Generate llhttp sources
if: steps.cache.outputs.cache-hit != 'true'
run: |
make generate-llhttp
- name: Upload llhttp generated files
uses: actions/upload-artifact@v2
with:
name: llhttp
path: vendor/llhttp/build
if-no-files-found: error

test:
name: Test
needs: lint
needs: gen_llhttp
strategy:
matrix:
pyver: [3.7, 3.8, 3.9, '3.10']
Expand Down Expand Up @@ -122,6 +154,12 @@ jobs:
if: ${{ matrix.no-extensions == '' }}
run: |
make cythonize
- name: Restore llhttp generated files
if: ${{ matrix.no-extensions == '' }}
uses: actions/download-artifact@v2
with:
name: llhttp
path: vendor/llhttp/build/
- name: Run unittests
env:
COLOR: 'yes'
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
.idea
.install-cython
.install-deps
.llhttp-gen
.installed.cfg
.mypy_cache
.noseids
Expand Down
8 changes: 4 additions & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "vendor/http-parser"]
path = vendor/http-parser
url = git://github.com/nodejs/http-parser.git
branch = 54f55a2
[submodule "vendor/llhttp"]
path = vendor/llhttp
url = https://github.com/nodejs/llhttp.git
branch = v3.0.0
1 change: 1 addition & 0 deletions CHANGES/3561.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Switch from http-parser to llhttp
14 changes: 13 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ aiohttp/_find_header.c: $(call to-hash,aiohttp/hdrs.py ./tools/gen.py)
aiohttp/%.c: aiohttp/%.pyx $(call to-hash,$(CYS)) aiohttp/_find_header.c
cython -3 -o $@ $< -I aiohttp

vendor/llhttp/node_modules: vendor/llhttp/package.json
cd vendor/llhttp; npm install

.llhttp-gen: vendor/llhttp/node_modules
$(MAKE) -C vendor/llhttp generate
@touch .llhttp-gen

.PHONY: generate-llhttp
generate-llhttp: .llhttp-gen

.PHONY: cythonize
cythonize: .install-cython $(PYXS:.pyx=.c)
Expand All @@ -81,7 +90,7 @@ fmt format:
mypy:
mypy

.develop: .install-deps $(call to-hash,$(PYS) $(CYS) $(CS))
.develop: .install-deps generate-llhttp $(call to-hash,$(PYS) $(CYS) $(CS))
pip install -e .
@touch .develop

Expand Down Expand Up @@ -137,6 +146,9 @@ clean:
@rm -rf aiohttp.egg-info
@rm -f .install-deps
@rm -f .install-cython
@rm -rf vendor/llhttp/node_modules
@rm -f .llhttp-gen
@$(MAKE) -C vendor/llhttp clean

.PHONY: doc
doc:
Expand Down
Loading

0 comments on commit d379c6b

Please sign in to comment.