aboutsummaryrefslogtreecommitdiffstats
path: root/python/Makefile
diff options
context:
space:
mode:
authorTimos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>2023-10-10 11:40:56 +0000
committerTimos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>2023-10-10 11:40:56 +0000
commite02cda008591317b1625707ff8e115a4841aa889 (patch)
treeaee302e3cf8b59ec2d32ec481be3d1afddfc8968 /python/Makefile
parentcc668e6b7e0ffd8c9d130513d12053cf5eda1d3b (diff)
Introduce Virtio-loopback epsilon release:
Epsilon release introduces a new compatibility layer which make virtio-loopback design to work with QEMU and rust-vmm vhost-user backend without require any changes. Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com> Change-Id: I52e57563e08a7d0bdc002f8e928ee61ba0c53dd9
Diffstat (limited to 'python/Makefile')
-rw-r--r--python/Makefile111
1 files changed, 111 insertions, 0 deletions
diff --git a/python/Makefile b/python/Makefile
new file mode 100644
index 000000000..333431136
--- /dev/null
+++ b/python/Makefile
@@ -0,0 +1,111 @@
+QEMU_VENV_DIR=.dev-venv
+QEMU_TOX_EXTRA_ARGS ?=
+
+.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 " 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 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 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:"
+ @echo " Remove package build output."
+ @echo ""
+ @echo "make distclean:"
+ @echo " remove pipenv/venv files, qemu package forwarder,"
+ @echo " built distribution files, and everything from 'make clean'."
+ @echo ""
+ @echo -e "Have a nice day ^_^\n"
+
+.PHONY: pipenv
+pipenv: .venv
+.venv: Pipfile.lock
+ @PIPENV_VENV_IN_PROJECT=1 pipenv sync --dev --keep-outdated
+ rm -f pyproject.toml
+ @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 $(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/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
+ rm -f .coverage .coverage.*
+ rm -rf htmlcov/