12c24d52dSJohn SnowQEMU_VENV_DIR=.dev-venv 26832189fSJohn SnowQEMU_MINVENV_DIR=.min-venv 36f651a6dSWainer dos Santos MoschettaQEMU_TOX_EXTRA_ARGS ?= 42c24d52dSJohn Snow 5205d7219SJohn Snow.PHONY: help 66560379fSJohn Snowhelp: 76560379fSJohn Snow @echo "python packaging help:" 86560379fSJohn Snow @echo "" 96832189fSJohn Snow @echo "make check-minreqs:" 106832189fSJohn Snow @echo " Run tests in the minreqs virtual environment." 116f84d726SJohn Snow @echo " These tests use the oldest dependencies." 12*ca056f44SPaolo Bonzini @echo " Requires: Python 3.8" 13*ca056f44SPaolo Bonzini @echo " Hint (Fedora): 'sudo dnf install python3.8'" 146560379fSJohn Snow @echo "" 158c95d0fcSJohn Snow @echo "make check-tox:" 168c95d0fcSJohn Snow @echo " Run tests against multiple python versions." 178c95d0fcSJohn Snow @echo " These tests use the newest dependencies." 18*ca056f44SPaolo Bonzini @echo " Requires: Python 3.8 - 3.11, and tox." 195591b745SPaolo Bonzini @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'" 206f651a6dSWainer dos Santos Moschetta @echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra" 216f651a6dSWainer dos Santos Moschetta @echo " arguments to tox". 228c95d0fcSJohn Snow @echo "" 232c24d52dSJohn Snow @echo "make check-dev:" 242c24d52dSJohn Snow @echo " Run tests in a venv against your default python3 version." 252c24d52dSJohn Snow @echo " These tests use the newest dependencies." 262c24d52dSJohn Snow @echo " Requires: Python 3.x" 272c24d52dSJohn Snow @echo "" 2828cd32fbSJohn Snow @echo "make check:" 2928cd32fbSJohn Snow @echo " Run tests in your *current environment*." 3028cd32fbSJohn Snow @echo " Performs no environment setup of any kind." 316560379fSJohn Snow @echo "" 3228cd32fbSJohn Snow @echo "make develop:" 337a21bee2SDaniel P. Berrangé @echo " Install deps needed for 'make check'," 3428cd32fbSJohn Snow @echo " and install the qemu package in editable mode." 3528cd32fbSJohn Snow @echo " (Can be used in or outside of a venv.)" 366560379fSJohn Snow @echo "" 376832189fSJohn Snow @echo "make min-venv" 386832189fSJohn Snow @echo " Creates the minreqs virtual environment ($(QEMU_MINVENV_DIR))" 396f84d726SJohn Snow @echo "" 402c24d52dSJohn Snow @echo "make dev-venv" 412c24d52dSJohn Snow @echo " Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))" 422c24d52dSJohn Snow @echo "" 4350d0fba8SJohn Snow @echo "make clean:" 4450d0fba8SJohn Snow @echo " Remove package build output." 456560379fSJohn Snow @echo "" 4650d0fba8SJohn Snow @echo "make distclean:" 476832189fSJohn Snow @echo " remove venv files, qemu package forwarder," 4850d0fba8SJohn Snow @echo " built distribution files, and everything from 'make clean'." 4950d0fba8SJohn Snow @echo "" 5050d0fba8SJohn Snow @echo -e "Have a nice day ^_^\n" 516560379fSJohn Snow 526832189fSJohn Snow.PHONY: pipenv check-pipenv 536832189fSJohn Snowpipenv check-pipenv: 546832189fSJohn Snow @echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'" 556832189fSJohn Snow @exit 1 566560379fSJohn Snow 570b15c42bSPaolo BonziniPIP_INSTALL = pip install --disable-pip-version-check 586832189fSJohn Snow.PHONY: min-venv 596832189fSJohn Snowmin-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate 606832189fSJohn Snow$(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt 616832189fSJohn Snow @echo "VENV $(QEMU_MINVENV_DIR)" 62*ca056f44SPaolo Bonzini @python3.8 -m venv $(QEMU_MINVENV_DIR) 636832189fSJohn Snow @( \ 646832189fSJohn Snow echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ 656832189fSJohn Snow . $(QEMU_MINVENV_DIR)/bin/activate; \ 660b15c42bSPaolo Bonzini echo "INSTALL wheel $(QEMU_MINVENV_DIR)"; \ 670b15c42bSPaolo Bonzini $(PIP_INSTALL) wheel 1>/dev/null; \ 686832189fSJohn Snow echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\ 690b15c42bSPaolo Bonzini $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \ 706832189fSJohn Snow echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \ 710b15c42bSPaolo Bonzini $(PIP_INSTALL) -e . 1>/dev/null; \ 726832189fSJohn Snow ) 736832189fSJohn Snow @touch $(QEMU_MINVENV_DIR) 746832189fSJohn Snow 756832189fSJohn Snow.PHONY: check-minreqs 766832189fSJohn Snowcheck-minreqs: min-venv 776832189fSJohn Snow @( \ 786832189fSJohn Snow echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ 796832189fSJohn Snow . $(QEMU_MINVENV_DIR)/bin/activate; \ 806832189fSJohn Snow make check; \ 816832189fSJohn Snow ) 826560379fSJohn Snow 832c24d52dSJohn Snow.PHONY: dev-venv 842c24d52dSJohn Snowdev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate 852c24d52dSJohn Snow$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg 862c24d52dSJohn Snow @echo "VENV $(QEMU_VENV_DIR)" 872c24d52dSJohn Snow @python3 -m venv $(QEMU_VENV_DIR) 882c24d52dSJohn Snow @( \ 892c24d52dSJohn Snow echo "ACTIVATE $(QEMU_VENV_DIR)"; \ 902c24d52dSJohn Snow . $(QEMU_VENV_DIR)/bin/activate; \ 912c24d52dSJohn Snow echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \ 922c24d52dSJohn Snow make develop 1>/dev/null; \ 932c24d52dSJohn Snow ) 942c24d52dSJohn Snow @touch $(QEMU_VENV_DIR) 952c24d52dSJohn Snow 962c24d52dSJohn Snow.PHONY: check-dev 972c24d52dSJohn Snowcheck-dev: dev-venv 982c24d52dSJohn Snow @( \ 992c24d52dSJohn Snow echo "ACTIVATE $(QEMU_VENV_DIR)"; \ 1002c24d52dSJohn Snow . $(QEMU_VENV_DIR)/bin/activate; \ 1012c24d52dSJohn Snow make check; \ 1022c24d52dSJohn Snow ) 1032c24d52dSJohn Snow 104205d7219SJohn Snow.PHONY: develop 1056560379fSJohn Snowdevelop: 1060b15c42bSPaolo Bonzini $(PIP_INSTALL) -e .[devel] 1076560379fSJohn Snow 108205d7219SJohn Snow.PHONY: check 1096560379fSJohn Snowcheck: 1106560379fSJohn Snow @avocado --config avocado.cfg run tests/ 1116560379fSJohn Snow 112205d7219SJohn Snow.PHONY: check-tox 1133c8de38cSJohn Snowcheck-tox: 1146f651a6dSWainer dos Santos Moschetta @tox $(QEMU_TOX_EXTRA_ARGS) 1153c8de38cSJohn Snow 116a4ffaecdSJohn Snow.PHONY: check-coverage 117a4ffaecdSJohn Snowcheck-coverage: 118a4ffaecdSJohn Snow @coverage run -m avocado --config avocado.cfg run tests/*.py 119a4ffaecdSJohn Snow @coverage combine 120a4ffaecdSJohn Snow @coverage html 121a4ffaecdSJohn Snow @coverage report 122a4ffaecdSJohn Snow 123205d7219SJohn Snow.PHONY: clean 1246560379fSJohn Snowclean: 1256560379fSJohn Snow python3 setup.py clean --all 12619cf0031SJohn Snow rm -f pyproject.toml 1276560379fSJohn Snow 128205d7219SJohn Snow.PHONY: distclean 1296560379fSJohn Snowdistclean: clean 1306832189fSJohn Snow rm -rf qemu.egg-info/ .eggs/ dist/ 1316832189fSJohn Snow rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/ 132a4ffaecdSJohn Snow rm -f .coverage .coverage.* 133a4ffaecdSJohn Snow rm -rf htmlcov/ 134