.DEFAULT_GOAL := help .PHONY: clean clean: python3 setup.py clean rm src/PIL/*.so || true rm -r build || true find . -name __pycache__ | xargs rm -r || true .PHONY: coverage coverage: pytest -qq rm -r htmlcov || true coverage report .PHONY: doc doc: $(MAKE) -C docs html .PHONY: doccheck doccheck: $(MAKE) -C docs html # Don't make our tests rely on the links in the docs being up every single build. # We don't control them. But do check, and update them to the target of their redirects. $(MAKE) -C docs linkcheck || true .PHONY: docserve docserve: cd docs/_build/html && python3 -m http.server 2> /dev/null& .PHONY: help help: @echo "Welcome to Pillow development. Please use \`make \` where is one of" @echo " clean remove build products" @echo " coverage run coverage test (in progress)" @echo " doc make html docs" @echo " docserve run an http server on the docs directory" @echo " html to make standalone HTML files" @echo " inplace make inplace extension" @echo " install make and install" @echo " install-coverage make and install with C coverage" @echo " install-req install documentation and test dependencies" @echo " install-venv (deprecated) install in virtualenv" @echo " lint run the lint checks" @echo " lint-fix run black and isort to (mostly) fix lint issues." @echo " release-test run code and package tests before release" @echo " test run tests on installed pillow" @echo " upload build and upload sdists to PyPI" @echo " upload-test build and upload sdists to test.pythonpackages.com" .PHONY: inplace inplace: clean python3 setup.py develop build_ext --inplace .PHONY: install install: python3 setup.py install python3 selftest.py .PHONY: install-coverage install-coverage: CFLAGS="-coverage -Werror=implicit-function-declaration" python3 setup.py build_ext install python3 selftest.py .PHONY: debug debug: # make a debug version if we don't have a -dbg python. Leaves in symbols # for our stuff, kills optimization, and redirects to dev null so we # see any build failures. make clean > /dev/null CFLAGS='-g -O0' python3 setup.py build_ext install > /dev/null .PHONY: install-req install-req: python3 -m pip install -r requirements.txt .PHONY: install-venv install-venv: echo "'install-venv' is deprecated and will be removed in a future Pillow release" virtualenv . bin/pip install -r requirements.txt .PHONY: release-test release-test: $(MAKE) install-req python3 setup.py develop python3 selftest.py python3 -m pytest Tests python3 setup.py install -rm dist/*.egg -rmdir dist python3 -m pytest -qq check-manifest pyroma . $(MAKE) readme .PHONY: sdist sdist: python3 setup.py sdist --format=gztar .PHONY: test test: pytest -qq .PHONY: valgrind valgrind: python3 -c "import pytest_valgrind" || pip3 install pytest-valgrind PYTHONMALLOC=malloc valgrind --suppressions=Tests/oss-fuzz/python.supp --leak-check=no \ --log-file=/tmp/valgrind-output \ python3 -m pytest --no-memcheck -vv --valgrind --valgrind-log=/tmp/valgrind-output .PHONY: readme readme: python3 setup.py --long-description | markdown2 > .long-description.html && open .long-description.html .PHONY: lint lint: tox --help > /dev/null || python3 -m pip install tox tox -e lint .PHONY: lint-fix lint-fix: black --target-version py36 . isort .