OSDN Git Service

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