1QEMU_VENV_DIR=.dev-venv 2QEMU_MINVENV_DIR=.min-venv 3QEMU_TOX_EXTRA_ARGS ?= 4 5.PHONY: help 6help: 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.7" 13 @echo " Hint (Fedora): 'sudo dnf install python3.7'" 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.7 - 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 53pipenv check-pipenv: 54 @echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'" 55 @exit 1 56 57PIP_INSTALL = pip install --disable-pip-version-check 58.PHONY: min-venv 59min-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.7 -m venv $(QEMU_MINVENV_DIR) 63 @( \ 64 echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ 65 . $(QEMU_MINVENV_DIR)/bin/activate; \ 66 echo "INSTALL wheel $(QEMU_MINVENV_DIR)"; \ 67 $(PIP_INSTALL) wheel 1>/dev/null; \ 68 echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\ 69 $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \ 70 echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \ 71 $(PIP_INSTALL) -e . 1>/dev/null; \ 72 ) 73 @touch $(QEMU_MINVENV_DIR) 74 75.PHONY: check-minreqs 76check-minreqs: min-venv 77 @( \ 78 echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ 79 . $(QEMU_MINVENV_DIR)/bin/activate; \ 80 make check; \ 81 ) 82 83.PHONY: dev-venv 84dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate 85$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg 86 @echo "VENV $(QEMU_VENV_DIR)" 87 @python3 -m venv $(QEMU_VENV_DIR) 88 @( \ 89 echo "ACTIVATE $(QEMU_VENV_DIR)"; \ 90 . $(QEMU_VENV_DIR)/bin/activate; \ 91 echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \ 92 make develop 1>/dev/null; \ 93 ) 94 @touch $(QEMU_VENV_DIR) 95 96.PHONY: check-dev 97check-dev: dev-venv 98 @( \ 99 echo "ACTIVATE $(QEMU_VENV_DIR)"; \ 100 . $(QEMU_VENV_DIR)/bin/activate; \ 101 make check; \ 102 ) 103 104.PHONY: develop 105develop: 106 $(PIP_INSTALL) -e .[devel] 107 108.PHONY: check 109check: 110 @avocado --config avocado.cfg run tests/ 111 112.PHONY: check-tox 113check-tox: 114 @tox $(QEMU_TOX_EXTRA_ARGS) 115 116.PHONY: check-coverage 117check-coverage: 118 @coverage run -m avocado --config avocado.cfg run tests/*.py 119 @coverage combine 120 @coverage html 121 @coverage report 122 123.PHONY: clean 124clean: 125 python3 setup.py clean --all 126 rm -f pyproject.toml 127 128.PHONY: distclean 129distclean: clean 130 rm -rf qemu.egg-info/ .eggs/ dist/ 131 rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/ 132 rm -f .coverage .coverage.* 133 rm -rf htmlcov/ 134