xref: /openbmc/qemu/python/Makefile (revision 03a3a62fbd0aa5227e978eef3c67d3978aec9e5f)
12c24d52dSJohn SnowQEMU_VENV_DIR=.dev-venv
26832189fSJohn SnowQEMU_MINVENV_DIR=.min-venv
36f651a6dSWainer dos Santos MoschettaQEMU_TOX_EXTRA_ARGS ?=
42c24d52dSJohn Snow
5205d7219SJohn Snow.PHONY: help
66560379fSJohn Snowhelp:
76560379fSJohn Snow	@echo "python packaging help:"
86560379fSJohn Snow	@echo ""
96832189fSJohn Snow	@echo "make check-minreqs:"
106832189fSJohn Snow	@echo "    Run tests in the minreqs virtual environment."
116f84d726SJohn Snow	@echo "    These tests use the oldest dependencies."
12*ca056f44SPaolo Bonzini	@echo "    Requires: Python 3.8"
13*ca056f44SPaolo Bonzini	@echo "    Hint (Fedora): 'sudo dnf install python3.8'"
146560379fSJohn Snow	@echo ""
158c95d0fcSJohn Snow	@echo "make check-tox:"
168c95d0fcSJohn Snow	@echo "    Run tests against multiple python versions."
178c95d0fcSJohn Snow	@echo "    These tests use the newest dependencies."
18*ca056f44SPaolo Bonzini	@echo "    Requires: Python 3.8 - 3.11, and tox."
195591b745SPaolo Bonzini	@echo "    Hint (Fedora): 'sudo dnf install python3-tox python3.11'"
206f651a6dSWainer dos Santos Moschetta	@echo "    The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
216f651a6dSWainer dos Santos Moschetta	@echo "    arguments to tox".
228c95d0fcSJohn Snow	@echo ""
232c24d52dSJohn Snow	@echo "make check-dev:"
242c24d52dSJohn Snow	@echo "    Run tests in a venv against your default python3 version."
252c24d52dSJohn Snow	@echo "    These tests use the newest dependencies."
262c24d52dSJohn Snow	@echo "    Requires: Python 3.x"
272c24d52dSJohn Snow	@echo ""
2828cd32fbSJohn Snow	@echo "make check:"
2928cd32fbSJohn Snow	@echo "    Run tests in your *current environment*."
3028cd32fbSJohn Snow	@echo "    Performs no environment setup of any kind."
316560379fSJohn Snow	@echo ""
3228cd32fbSJohn Snow	@echo "make develop:"
337a21bee2SDaniel P. Berrangé	@echo "    Install deps needed for 'make check',"
3428cd32fbSJohn Snow	@echo "    and install the qemu package in editable mode."
3528cd32fbSJohn Snow	@echo "    (Can be used in or outside of a venv.)"
366560379fSJohn Snow	@echo ""
376832189fSJohn Snow	@echo "make min-venv"
386832189fSJohn Snow	@echo "    Creates the minreqs virtual environment ($(QEMU_MINVENV_DIR))"
396f84d726SJohn Snow	@echo ""
402c24d52dSJohn Snow	@echo "make dev-venv"
412c24d52dSJohn Snow	@echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
422c24d52dSJohn Snow	@echo ""
4350d0fba8SJohn Snow	@echo "make clean:"
4450d0fba8SJohn Snow	@echo "    Remove package build output."
456560379fSJohn Snow	@echo ""
4650d0fba8SJohn Snow	@echo "make distclean:"
476832189fSJohn Snow	@echo "    remove venv files, qemu package forwarder,"
4850d0fba8SJohn Snow	@echo "    built distribution files, and everything from 'make clean'."
4950d0fba8SJohn Snow	@echo ""
5050d0fba8SJohn Snow	@echo -e "Have a nice day ^_^\n"
516560379fSJohn Snow
526832189fSJohn Snow.PHONY: pipenv check-pipenv
536832189fSJohn Snowpipenv check-pipenv:
546832189fSJohn Snow	@echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'"
556832189fSJohn Snow	@exit 1
566560379fSJohn Snow
570b15c42bSPaolo BonziniPIP_INSTALL = pip install --disable-pip-version-check
586832189fSJohn Snow.PHONY: min-venv
596832189fSJohn Snowmin-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate
606832189fSJohn Snow$(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt
616832189fSJohn Snow	@echo "VENV $(QEMU_MINVENV_DIR)"
62*ca056f44SPaolo Bonzini	@python3.8 -m venv $(QEMU_MINVENV_DIR)
636832189fSJohn Snow	@(								\
646832189fSJohn Snow		echo "ACTIVATE $(QEMU_MINVENV_DIR)";			\
656832189fSJohn Snow		. $(QEMU_MINVENV_DIR)/bin/activate;			\
660b15c42bSPaolo Bonzini		echo "INSTALL wheel $(QEMU_MINVENV_DIR)";               \
670b15c42bSPaolo Bonzini		$(PIP_INSTALL) wheel 1>/dev/null;		               \
686832189fSJohn Snow		echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\
690b15c42bSPaolo Bonzini		$(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null;	\
706832189fSJohn Snow		echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)";		\
710b15c42bSPaolo Bonzini		$(PIP_INSTALL) -e . 1>/dev/null;			\
726832189fSJohn Snow	)
736832189fSJohn Snow	@touch $(QEMU_MINVENV_DIR)
746832189fSJohn Snow
756832189fSJohn Snow.PHONY: check-minreqs
766832189fSJohn Snowcheck-minreqs: min-venv
776832189fSJohn Snow	@(							\
786832189fSJohn Snow		echo "ACTIVATE $(QEMU_MINVENV_DIR)";		\
796832189fSJohn Snow		. $(QEMU_MINVENV_DIR)/bin/activate;		\
806832189fSJohn Snow		make check;					\
816832189fSJohn Snow	)
826560379fSJohn Snow
832c24d52dSJohn Snow.PHONY: dev-venv
842c24d52dSJohn Snowdev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
852c24d52dSJohn Snow$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
862c24d52dSJohn Snow	@echo "VENV $(QEMU_VENV_DIR)"
872c24d52dSJohn Snow	@python3 -m venv $(QEMU_VENV_DIR)
882c24d52dSJohn Snow	@(							\
892c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
902c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
912c24d52dSJohn Snow		echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";	\
922c24d52dSJohn Snow		make develop 1>/dev/null;			\
932c24d52dSJohn Snow	)
942c24d52dSJohn Snow	@touch $(QEMU_VENV_DIR)
952c24d52dSJohn Snow
962c24d52dSJohn Snow.PHONY: check-dev
972c24d52dSJohn Snowcheck-dev: dev-venv
982c24d52dSJohn Snow	@(							\
992c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
1002c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
1012c24d52dSJohn Snow		make check;					\
1022c24d52dSJohn Snow	)
1032c24d52dSJohn Snow
104205d7219SJohn Snow.PHONY: develop
1056560379fSJohn Snowdevelop:
1060b15c42bSPaolo Bonzini	$(PIP_INSTALL) -e .[devel]
1076560379fSJohn Snow
108205d7219SJohn Snow.PHONY: check
1096560379fSJohn Snowcheck:
1106560379fSJohn Snow	@avocado --config avocado.cfg run tests/
1116560379fSJohn Snow
112205d7219SJohn Snow.PHONY: check-tox
1133c8de38cSJohn Snowcheck-tox:
1146f651a6dSWainer dos Santos Moschetta	@tox $(QEMU_TOX_EXTRA_ARGS)
1153c8de38cSJohn Snow
116a4ffaecdSJohn Snow.PHONY: check-coverage
117a4ffaecdSJohn Snowcheck-coverage:
118a4ffaecdSJohn Snow	@coverage run -m avocado --config avocado.cfg run tests/*.py
119a4ffaecdSJohn Snow	@coverage combine
120a4ffaecdSJohn Snow	@coverage html
121a4ffaecdSJohn Snow	@coverage report
122a4ffaecdSJohn Snow
123205d7219SJohn Snow.PHONY: clean
1246560379fSJohn Snowclean:
1256560379fSJohn Snow	python3 setup.py clean --all
12619cf0031SJohn Snow	rm -f pyproject.toml
1276560379fSJohn Snow
128205d7219SJohn Snow.PHONY: distclean
1296560379fSJohn Snowdistclean: clean
1306832189fSJohn Snow	rm -rf qemu.egg-info/ .eggs/ dist/
1316832189fSJohn Snow	rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/
132a4ffaecdSJohn Snow	rm -f .coverage .coverage.*
133a4ffaecdSJohn Snow	rm -rf htmlcov/
134