QEMU_VENV_DIR=.dev-venv QEMU_MINVENV_DIR=.min-venv QEMU_TOX_EXTRA_ARGS ?= .PHONY: help help: @echo "python packaging help:" @echo "" @echo "make check-minreqs:" @echo " Run tests in the minreqs virtual environment." @echo " These tests use the oldest dependencies." @echo " Requires: Python 3.8" @echo " Hint (Fedora): 'sudo dnf install python3.8'" @echo "" @echo "make check-tox:" @echo " Run tests against multiple python versions." @echo " These tests use the newest dependencies." @echo " Requires: Python 3.8 - 3.11, and tox." @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'" @echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra" @echo " arguments to tox". @echo "" @echo "make check-dev:" @echo " Run tests in a venv against your default python3 version." @echo " These tests use the newest dependencies." @echo " Requires: Python 3.x" @echo "" @echo "make check:" @echo " Run tests in your *current environment*." @echo " Performs no environment setup of any kind." @echo "" @echo "make develop:" @echo " Install deps needed for 'make check'," @echo " and install the qemu package in editable mode." @echo " (Can be used in or outside of a venv.)" @echo "" @echo "make min-venv" @echo " Creates the minreqs virtual environment ($(QEMU_MINVENV_DIR))" @echo "" @echo "make dev-venv" @echo " Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))" @echo "" @echo "make clean:" @echo " Remove package build output." @echo "" @echo "make distclean:" @echo " remove venv files, qemu package forwarder," @echo " built distribution files, and everything from 'make clean'." @echo "" @echo -e "Have a nice day ^_^\n" .PHONY: pipenv check-pipenv pipenv check-pipenv: @echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'" @exit 1 PIP_INSTALL = pip install --disable-pip-version-check .PHONY: min-venv min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt @echo "VENV $(QEMU_MINVENV_DIR)" @python3.8 -m venv $(QEMU_MINVENV_DIR) @( \ echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ . $(QEMU_MINVENV_DIR)/bin/activate; \ echo "INSTALL wheel $(QEMU_MINVENV_DIR)"; \ $(PIP_INSTALL) wheel 1>/dev/null; \ echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\ $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \ echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \ $(PIP_INSTALL) -e . 1>/dev/null; \ ) @touch $(QEMU_MINVENV_DIR) .PHONY: check-minreqs check-minreqs: min-venv @( \ echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ . $(QEMU_MINVENV_DIR)/bin/activate; \ make check; \ ) .PHONY: dev-venv dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg @echo "VENV $(QEMU_VENV_DIR)" @python3 -m venv $(QEMU_VENV_DIR) @( \ echo "ACTIVATE $(QEMU_VENV_DIR)"; \ . $(QEMU_VENV_DIR)/bin/activate; \ echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \ make develop 1>/dev/null; \ ) @touch $(QEMU_VENV_DIR) .PHONY: check-dev check-dev: dev-venv @( \ echo "ACTIVATE $(QEMU_VENV_DIR)"; \ . $(QEMU_VENV_DIR)/bin/activate; \ make check; \ ) .PHONY: develop develop: $(PIP_INSTALL) -e .[devel] .PHONY: check check: @avocado --config avocado.cfg run tests/ .PHONY: check-tox check-tox: @tox $(QEMU_TOX_EXTRA_ARGS) .PHONY: check-coverage check-coverage: @coverage run -m avocado --config avocado.cfg run tests/*.py @coverage combine @coverage html @coverage report .PHONY: clean clean: python3 setup.py clean --all rm -f pyproject.toml .PHONY: distclean distclean: clean rm -rf qemu.egg-info/ .eggs/ dist/ rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/ rm -f .coverage .coverage.* rm -rf htmlcov/