qemu/python/Makefile
<<
>>
Prefs
   1QEMU_VENV_DIR=.dev-venv
   2QEMU_TOX_EXTRA_ARGS ?=
   3
   4.PHONY: help
   5help:
   6        @echo "python packaging help:"
   7        @echo ""
   8        @echo "make check-pipenv:"
   9        @echo "    Run tests in pipenv's virtual environment."
  10        @echo "    These tests use the oldest dependencies."
  11        @echo "    Requires: Python 3.6 and pipenv."
  12        @echo "    Hint (Fedora): 'sudo dnf install python3.6 pipenv'"
  13        @echo ""
  14        @echo "make check-tox:"
  15        @echo "    Run tests against multiple python versions."
  16        @echo "    These tests use the newest dependencies."
  17        @echo "    Requires: Python 3.6 - 3.10, and tox."
  18        @echo "    Hint (Fedora): 'sudo dnf install python3-tox python3.10'"
  19        @echo "    The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
  20        @echo "    arguments to tox".
  21        @echo ""
  22        @echo "make check-dev:"
  23        @echo "    Run tests in a venv against your default python3 version."
  24        @echo "    These tests use the newest dependencies."
  25        @echo "    Requires: Python 3.x"
  26        @echo ""
  27        @echo "make check:"
  28        @echo "    Run tests in your *current environment*."
  29        @echo "    Performs no environment setup of any kind."
  30        @echo ""
  31        @echo "make develop:"
  32        @echo "    Install deps needed for for 'make check',"
  33        @echo "    and install the qemu package in editable mode."
  34        @echo "    (Can be used in or outside of a venv.)"
  35        @echo ""
  36        @echo "make pipenv"
  37        @echo "    Creates pipenv's virtual environment (.venv)"
  38        @echo ""
  39        @echo "make dev-venv"
  40        @echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
  41        @echo ""
  42        @echo "make clean:"
  43        @echo "    Remove package build output."
  44        @echo ""
  45        @echo "make distclean:"
  46        @echo "    remove pipenv/venv files, qemu package forwarder,"
  47        @echo "    built distribution files, and everything from 'make clean'."
  48        @echo ""
  49        @echo -e "Have a nice day ^_^\n"
  50
  51.PHONY: pipenv
  52pipenv: .venv
  53.venv: Pipfile.lock
  54        @PIPENV_VENV_IN_PROJECT=1 pipenv sync --dev --keep-outdated
  55        rm -f pyproject.toml
  56        @touch .venv
  57
  58.PHONY: check-pipenv
  59check-pipenv: pipenv
  60        @pipenv run make check
  61
  62.PHONY: dev-venv
  63dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
  64$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
  65        @echo "VENV $(QEMU_VENV_DIR)"
  66        @python3 -m venv $(QEMU_VENV_DIR)
  67        @(                                                      \
  68                echo "ACTIVATE $(QEMU_VENV_DIR)";               \
  69                . $(QEMU_VENV_DIR)/bin/activate;                \
  70                echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";    \
  71                make develop 1>/dev/null;                       \
  72        )
  73        @touch $(QEMU_VENV_DIR)
  74
  75.PHONY: check-dev
  76check-dev: dev-venv
  77        @(                                                      \
  78                echo "ACTIVATE $(QEMU_VENV_DIR)";               \
  79                . $(QEMU_VENV_DIR)/bin/activate;                \
  80                make check;                                     \
  81        )
  82
  83.PHONY: develop
  84develop:
  85        pip3 install --disable-pip-version-check -e .[devel]
  86
  87.PHONY: check
  88check:
  89        @avocado --config avocado.cfg run tests/
  90
  91.PHONY: check-tox
  92check-tox:
  93        @tox $(QEMU_TOX_EXTRA_ARGS)
  94
  95.PHONY: check-coverage
  96check-coverage:
  97        @coverage run -m avocado --config avocado.cfg run tests/*.py
  98        @coverage combine
  99        @coverage html
 100        @coverage report
 101
 102.PHONY: clean
 103clean:
 104        python3 setup.py clean --all
 105        rm -f pyproject.toml
 106
 107.PHONY: distclean
 108distclean: clean
 109        rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
 110        rm -f .coverage .coverage.*
 111        rm -rf htmlcov/
 112