qemu-e2k/python/Makefile
John Snow 2c24d52d06 python: add 'make check-dev' invocation
This is a *third* way to run the Python tests. Unlike the first two
(check-pipenv, check-tox), this version does not require any specific
interpreter version -- making it a lot easier to tell people to run it
as a quick smoketest prior to submission to GitLab CI.

Summary:

  Checked via GitLab CI:
    - check-pipenv: tests our oldest python & dependencies
    - check-tox: tests newest dependencies on all non-EOL python versions
  Executed only incidentally:
    - check-dev: tests newest dependencies on whichever python version

('make check' does not set up any environment at all, it just runs the
tests in your current environment. All four invocations perform the
exact same tests, just in different execution environments.)

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Willian Rampazzo <willianr@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Tested-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Message-id: 20210629214323.1329806-12-jsnow@redhat.com
[Maintainer edit: added .dev-venv/ to .gitignore. --js]
Acked-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Acked-by: Willian Rampazzo <willianr@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
2021-06-30 21:55:43 -04:00

91 lines
2.5 KiB
Makefile

QEMU_VENV_DIR=.dev-venv
.PHONY: help
help:
@echo "python packaging help:"
@echo ""
@echo "make check-pipenv:"
@echo " Run tests in pipenv's virtual environment."
@echo " These tests use the oldest dependencies."
@echo " Requires: Python 3.6 and pipenv."
@echo " Hint (Fedora): 'sudo dnf install python3.6 pipenv'"
@echo ""
@echo "make check-tox:"
@echo " Run tests against multiple python versions."
@echo " These tests use the newest dependencies."
@echo " Requires: Python 3.6 - 3.10, and tox."
@echo " Hint (Fedora): 'sudo dnf install python3-tox python3.10'"
@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 develop: Install deps for 'make check', and"
@echo " the qemu libs in editable/development mode."
@echo ""
@echo "make check: run linters using the current environment."
@echo ""
@echo "make pipenv"
@echo " Creates pipenv's virtual environment (.venv)"
@echo ""
@echo "make dev-venv"
@echo " Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
@echo ""
@echo "make clean: remove package build output."
@echo ""
@echo "make distclean: remove venv files, qemu package forwarder,"
@echo " built distribution files, and everything"
@echo " from 'make clean'."
.PHONY: pipenv
pipenv: .venv
.venv: Pipfile.lock
@PIPENV_VENV_IN_PROJECT=1 pipenv sync --dev --keep-outdated
@touch .venv
.PHONY: check-pipenv
check-pipenv: pipenv
@pipenv run 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:
pip3 install --disable-pip-version-check -e .[devel]
.PHONY: check
check:
@avocado --config avocado.cfg run tests/
.PHONY: check-tox
check-tox:
@tox
.PHONY: clean
clean:
python3 setup.py clean --all
.PHONY: distclean
distclean: clean
rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/