| 1 | QEMU_VENV_DIR=.dev-venv |
| 2 | QEMU_MINVENV_DIR=.min-venv |
| 3 | QEMU_TOX_EXTRA_ARGS ?= |
| 4 | |
| 5 | .PHONY: help |
| 6 | help: |
| 7 | @echo "python packaging help:" |
| 8 | @echo "" |
| 9 | @echo "make check-minreqs:" |
| 10 | @echo " Run tests in the minreqs virtual environment." |
| 11 | @echo " These tests use the oldest dependencies." |
| 12 | @echo " Requires: Python 3.9" |
| 13 | @echo " Hint (Fedora): 'sudo dnf install python3.9'" |
| 14 | @echo "" |
| 15 | @echo "make check-tox:" |
| 16 | @echo " Run tests against multiple python versions." |
| 17 | @echo " These tests use the newest dependencies." |
| 18 | @echo " Requires: Python 3.9 - 3.11, and tox." |
| 19 | @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'" |
| 20 | @echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra" |
| 21 | @echo " arguments to tox". |
| 22 | @echo "" |
| 23 | @echo "make check-dev:" |
| 24 | @echo " Run tests in a venv against your default python3 version." |
| 25 | @echo " These tests use the newest dependencies." |
| 26 | @echo " Requires: Python 3.x" |
| 27 | @echo "" |
| 28 | @echo "make check:" |
| 29 | @echo " Run tests in your *current environment*." |
| 30 | @echo " Performs no environment setup of any kind." |
| 31 | @echo "" |
| 32 | @echo "make develop:" |
| 33 | @echo " Install deps needed for 'make check'," |
| 34 | @echo " and install the qemu package in editable mode." |
| 35 | @echo " (Can be used in or outside of a venv.)" |
| 36 | @echo "" |
| 37 | @echo "make min-venv" |
| 38 | @echo " Creates the minreqs virtual environment ($(QEMU_MINVENV_DIR))" |
| 39 | @echo "" |
| 40 | @echo "make dev-venv" |
| 41 | @echo " Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))" |
| 42 | @echo "" |
| 43 | @echo "make clean:" |
| 44 | @echo " Remove package build output." |
| 45 | @echo "" |
| 46 | @echo "make distclean:" |
| 47 | @echo " remove venv files, qemu package forwarder," |
| 48 | @echo " built distribution files, and everything from 'make clean'." |
| 49 | @echo "" |
| 50 | @echo -e "Have a nice day ^_^\n" |
| 51 | |
| 52 | .PHONY: pipenv check-pipenv |
| 53 | pipenv check-pipenv: |
| 54 | @echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'" |
| 55 | @exit 1 |
| 56 | |
| 57 | PIP_INSTALL = pip install --disable-pip-version-check |
| 58 | .PHONY: min-venv |
| 59 | min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate |
| 60 | $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt |
| 61 | @echo "VENV $(QEMU_MINVENV_DIR)" |
| 62 | @python3.9 -m venv $(QEMU_MINVENV_DIR) |
| 63 | @( \ |
| 64 | echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ |
| 65 | . $(QEMU_MINVENV_DIR)/bin/activate; \ |
| 66 | echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\ |
| 67 | $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \ |
| 68 | echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \ |
| 69 | PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e . 1>/dev/null; \ |
| 70 | ) |
| 71 | @touch $(QEMU_MINVENV_DIR) |
| 72 | |
| 73 | .PHONY: check-minreqs |
| 74 | check-minreqs: min-venv |
| 75 | @( \ |
| 76 | echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ |
| 77 | . $(QEMU_MINVENV_DIR)/bin/activate; \ |
| 78 | make check; \ |
| 79 | ) |
| 80 | |
| 81 | .PHONY: dev-venv |
| 82 | dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate |
| 83 | $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg |
| 84 | @echo "VENV $(QEMU_VENV_DIR)" |
| 85 | @python3 -m venv $(QEMU_VENV_DIR) |
| 86 | @( \ |
| 87 | echo "ACTIVATE $(QEMU_VENV_DIR)"; \ |
| 88 | . $(QEMU_VENV_DIR)/bin/activate; \ |
| 89 | echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \ |
| 90 | make develop 1>/dev/null; \ |
| 91 | ) |
| 92 | @touch $(QEMU_VENV_DIR) |
| 93 | |
| 94 | .PHONY: check-dev |
| 95 | check-dev: dev-venv |
| 96 | @( \ |
| 97 | echo "ACTIVATE $(QEMU_VENV_DIR)"; \ |
| 98 | . $(QEMU_VENV_DIR)/bin/activate; \ |
| 99 | make check; \ |
| 100 | ) |
| 101 | |
| 102 | .PHONY: develop |
| 103 | develop: |
| 104 | PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e .[devel] |
| 105 | |
| 106 | .PHONY: check |
| 107 | check: |
| 108 | @pytest -v tests/*.py |
| 109 | |
| 110 | .PHONY: check-tox |
| 111 | check-tox: |
| 112 | @tox $(QEMU_TOX_EXTRA_ARGS) |
| 113 | |
| 114 | .PHONY: check-coverage |
| 115 | check-coverage: |
| 116 | @coverage run -m pytest -v tests/*.py |
| 117 | @coverage combine |
| 118 | @coverage html |
| 119 | @coverage report |
| 120 | |
| 121 | .PHONY: clean |
| 122 | clean: |
| 123 | python3 setup.py clean --all |
| 124 | rm -f pyproject.toml |
| 125 | |
| 126 | .PHONY: distclean |
| 127 | distclean: clean |
| 128 | rm -rf qemu.egg-info/ .eggs/ dist/ |
| 129 | rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/ |
| 130 | rm -f .coverage .coverage.* |
| 131 | rm -rf htmlcov/ |