master
text 131 lines 3.75 KB
Raw
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.9"
13 @echo " Hint (Fedora): 'sudo dnf install python3.9'"
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.9 - 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.9 -m venv $(QEMU_MINVENV_DIR)
63 @( \
64 echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
65 . $(QEMU_MINVENV_DIR)/bin/activate; \
66 echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\
67 $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \
68 echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \
69 PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e . 1>/dev/null; \
70 )
71 @touch $(QEMU_MINVENV_DIR)
72
73 .PHONY: check-minreqs
74 check-minreqs: min-venv
75 @( \
76 echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
77 . $(QEMU_MINVENV_DIR)/bin/activate; \
78 make check; \
79 )
80
81 .PHONY: dev-venv
82 dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
83 $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
84 @echo "VENV $(QEMU_VENV_DIR)"
85 @python3 -m venv $(QEMU_VENV_DIR)
86 @( \
87 echo "ACTIVATE $(QEMU_VENV_DIR)"; \
88 . $(QEMU_VENV_DIR)/bin/activate; \
89 echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \
90 make develop 1>/dev/null; \
91 )
92 @touch $(QEMU_VENV_DIR)
93
94 .PHONY: check-dev
95 check-dev: dev-venv
96 @( \
97 echo "ACTIVATE $(QEMU_VENV_DIR)"; \
98 . $(QEMU_VENV_DIR)/bin/activate; \
99 make check; \
100 )
101
102 .PHONY: develop
103 develop:
104 PIP_CONFIG_SETTINGS="editable_mode=compat" $(PIP_INSTALL) -e .[devel]
105
106 .PHONY: check
107 check:
108 @pytest -v tests/*.py
109
110 .PHONY: check-tox
111 check-tox:
112 @tox $(QEMU_TOX_EXTRA_ARGS)
113
114 .PHONY: check-coverage
115 check-coverage:
116 @coverage run -m pytest -v tests/*.py
117 @coverage combine
118 @coverage html
119 @coverage report
120
121 .PHONY: clean
122 clean:
123 python3 setup.py clean --all
124 rm -f pyproject.toml
125
126 .PHONY: distclean
127 distclean: clean
128 rm -rf qemu.egg-info/ .eggs/ dist/
129 rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/
130 rm -f .coverage .coverage.*
131 rm -rf htmlcov/