diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/python/aiohttp/Makefile | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | third_party/python/aiohttp/Makefile | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/third_party/python/aiohttp/Makefile b/third_party/python/aiohttp/Makefile new file mode 100644 index 0000000000..5769d2a128 --- /dev/null +++ b/third_party/python/aiohttp/Makefile @@ -0,0 +1,188 @@ +# Some simple testing tasks (sorry, UNIX only). + +to-hash-one = $(dir $1).hash/$(addsuffix .hash,$(notdir $1)) +to-hash = $(foreach fname,$1,$(call to-hash-one,$(fname))) + +CYS := $(wildcard aiohttp/*.pyx) $(wildcard aiohttp/*.pyi) $(wildcard aiohttp/*.pxd) +PYXS := $(wildcard aiohttp/*.pyx) +CS := $(wildcard aiohttp/*.c) +PYS := $(wildcard aiohttp/*.py) +IN := doc-spelling lint cython dev +ALLS := $(sort $(CYS) $(CS) $(PYS) $(REQS)) + + +.PHONY: all +all: test + +tst: + @echo $(call to-hash,requirements/cython.txt) + @echo $(call to-hash,aiohttp/%.pyx) + + +# Recipe from https://www.cmcrossroads.com/article/rebuilding-when-files-checksum-changes +FORCE: + +# check_sum.py works perfectly fine but slow when called for every file from $(ALLS) +# (perhaps even several times for each file). +# That is why much less readable but faster solution exists +ifneq (, $(shell which sha256sum)) +%.hash: FORCE + $(eval $@_ABS := $(abspath $@)) + $(eval $@_NAME := $($@_ABS)) + $(eval $@_HASHDIR := $(dir $($@_ABS))) + $(eval $@_TMP := $($@_HASHDIR)../$(notdir $($@_ABS))) + $(eval $@_ORIG := $(subst /.hash/../,/,$(basename $($@_TMP)))) + @#echo ==== $($@_ABS) $($@_HASHDIR) $($@_NAME) $($@_TMP) $($@_ORIG) + @if ! (sha256sum --check $($@_ABS) 1>/dev/null 2>/dev/null); then \ + mkdir -p $($@_HASHDIR); \ + echo re-hash $($@_ORIG); \ + sha256sum $($@_ORIG) > $($@_ABS); \ + fi +else +%.hash: FORCE + @./tools/check_sum.py $@ # --debug +endif + +# Enumerate intermediate files to don't remove them automatically. +.SECONDARY: $(call to-hash,$(ALLS)) + +.update-pip: + @python -m pip install --upgrade pip + +.install-cython: .update-pip $(call to-hash,requirements/cython.txt) + @python -m pip install -r requirements/cython.txt -c requirements/constraints.txt + @touch .install-cython + +aiohttp/_find_header.c: $(call to-hash,aiohttp/hdrs.py ./tools/gen.py) + ./tools/gen.py + +# _find_headers generator creates _headers.pyi as well +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) + +.install-deps: .install-cython $(PYXS:.pyx=.c) $(call to-hash,$(CYS) $(REQS)) + @python -m pip install -r requirements/dev.txt -c requirements/constraints.txt + @touch .install-deps + +.PHONY: lint +lint: fmt mypy + +.PHONY: fmt format +fmt format: + python -m pre_commit run --all-files --show-diff-on-failure + +.PHONY: mypy +mypy: + mypy + +.develop: .install-deps generate-llhttp $(call to-hash,$(PYS) $(CYS) $(CS)) + python -m pip install -e . -c requirements/constraints.txt + @touch .develop + +.PHONY: test +test: .develop + @pytest -q + +.PHONY: vtest +vtest: .develop + @pytest -s -v + +.PHONY: vvtest +vvtest: .develop + @pytest -vv + + +define run_tests_in_docker + DOCKER_BUILDKIT=1 docker build --build-arg PYTHON_VERSION=$(1) --build-arg AIOHTTP_NO_EXTENSIONS=$(2) -t "aiohttp-test-$(1)-$(2)" -f tools/testing/Dockerfile . + docker run --rm -ti -v `pwd`:/src -w /src "aiohttp-test-$(1)-$(2)" $(TEST_SPEC) +endef + +.PHONY: test-3.7-no-extensions test-3.7 test-3.8-no-extensions test-3.8 test-3.9-no-extensions test-3.9 test-3.10-no-extensions test-3.10 +test-3.7-no-extensions: + $(call run_tests_in_docker,3.7,y) +test-3.7: + $(call run_tests_in_docker,3.7,n) +test-3.8-no-extensions: + $(call run_tests_in_docker,3.8,y) +test-3.8: + $(call run_tests_in_docker,3.8,n) +test-3.9-no-extensions: + $(call run_tests_in_docker,3.9,y) +test-3.9: + $(call run_tests_in_docker,3.9,n) +test-3.10-no-extensions: + $(call run_tests_in_docker,3.10,y) +test-3.10: + $(call run_tests_in_docker,3.10,n) + +.PHONY: clean +clean: + @rm -rf `find . -name __pycache__` + @rm -rf `find . -name .hash` + @rm -rf `find . -name .md5` # old styling + @rm -f `find . -type f -name '*.py[co]' ` + @rm -f `find . -type f -name '*~' ` + @rm -f `find . -type f -name '.*~' ` + @rm -f `find . -type f -name '@*' ` + @rm -f `find . -type f -name '#*#' ` + @rm -f `find . -type f -name '*.orig' ` + @rm -f `find . -type f -name '*.rej' ` + @rm -f `find . -type f -name '*.md5' ` # old styling + @rm -f .coverage + @rm -rf htmlcov + @rm -rf build + @rm -rf cover + @make -C docs clean + @python setup.py clean + @rm -f aiohttp/*.so + @rm -f aiohttp/*.pyd + @rm -f aiohttp/*.html + @rm -f aiohttp/_frozenlist.c + @rm -f aiohttp/_find_header.c + @rm -f aiohttp/_http_parser.c + @rm -f aiohttp/_http_writer.c + @rm -f aiohttp/_websocket.c + @rm -rf .tox + @rm -f .develop + @rm -f .flake + @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: + @make -C docs html SPHINXOPTS="-W --keep-going -n -E" + @echo "open file://`pwd`/docs/_build/html/index.html" + +.PHONY: doc-spelling +doc-spelling: + @make -C docs spelling SPHINXOPTS="-W --keep-going -n -E" + +.PHONY: compile-deps +compile-deps: .update-pip $(REQS) + pip-compile --no-header --allow-unsafe -q --strip-extras \ + -o requirements/constraints.txt \ + requirements/constraints.in + +.PHONY: install +install: .update-pip + @python -m pip install -r requirements/dev.txt -c requirements/constraints.txt + +.PHONY: install-dev +install-dev: .develop |