xref: /openbmc/qemu/python/Makefile (revision a4ffaecd5726433f01b0ff857054acad9dc9df12)
12c24d52dSJohn SnowQEMU_VENV_DIR=.dev-venv
26f651a6dSWainer dos Santos MoschettaQEMU_TOX_EXTRA_ARGS ?=
32c24d52dSJohn Snow
4205d7219SJohn Snow.PHONY: help
56560379fSJohn Snowhelp:
66560379fSJohn Snow	@echo "python packaging help:"
76560379fSJohn Snow	@echo ""
86f84d726SJohn Snow	@echo "make check-pipenv:"
96f84d726SJohn Snow	@echo "    Run tests in pipenv's virtual environment."
106f84d726SJohn Snow	@echo "    These tests use the oldest dependencies."
116f84d726SJohn Snow	@echo "    Requires: Python 3.6 and pipenv."
126f84d726SJohn Snow	@echo "    Hint (Fedora): 'sudo dnf install python3.6 pipenv'"
136560379fSJohn Snow	@echo ""
148c95d0fcSJohn Snow	@echo "make check-tox:"
158c95d0fcSJohn Snow	@echo "    Run tests against multiple python versions."
168c95d0fcSJohn Snow	@echo "    These tests use the newest dependencies."
178c95d0fcSJohn Snow	@echo "    Requires: Python 3.6 - 3.10, and tox."
188c95d0fcSJohn Snow	@echo "    Hint (Fedora): 'sudo dnf install python3-tox python3.10'"
196f651a6dSWainer dos Santos Moschetta	@echo "    The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
206f651a6dSWainer dos Santos Moschetta	@echo "    arguments to tox".
218c95d0fcSJohn Snow	@echo ""
222c24d52dSJohn Snow	@echo "make check-dev:"
232c24d52dSJohn Snow	@echo "    Run tests in a venv against your default python3 version."
242c24d52dSJohn Snow	@echo "    These tests use the newest dependencies."
252c24d52dSJohn Snow	@echo "    Requires: Python 3.x"
262c24d52dSJohn Snow	@echo ""
2728cd32fbSJohn Snow	@echo "make check:"
2828cd32fbSJohn Snow	@echo "    Run tests in your *current environment*."
2928cd32fbSJohn Snow	@echo "    Performs no environment setup of any kind."
306560379fSJohn Snow	@echo ""
3128cd32fbSJohn Snow	@echo "make develop:"
3228cd32fbSJohn Snow	@echo "    Install deps needed for for 'make check',"
3328cd32fbSJohn Snow	@echo "    and install the qemu package in editable mode."
3428cd32fbSJohn Snow	@echo "    (Can be used in or outside of a venv.)"
356560379fSJohn Snow	@echo ""
366f84d726SJohn Snow	@echo "make pipenv"
376f84d726SJohn Snow	@echo "    Creates pipenv's virtual environment (.venv)"
386f84d726SJohn Snow	@echo ""
392c24d52dSJohn Snow	@echo "make dev-venv"
402c24d52dSJohn Snow	@echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
412c24d52dSJohn Snow	@echo ""
4250d0fba8SJohn Snow	@echo "make clean:"
4350d0fba8SJohn Snow	@echo "    Remove package build output."
446560379fSJohn Snow	@echo ""
4550d0fba8SJohn Snow	@echo "make distclean:"
4650d0fba8SJohn Snow	@echo "    remove pipenv/venv files, qemu package forwarder,"
4750d0fba8SJohn Snow	@echo "    built distribution files, and everything from 'make clean'."
4850d0fba8SJohn Snow	@echo ""
4950d0fba8SJohn Snow	@echo -e "Have a nice day ^_^\n"
506560379fSJohn Snow
51205d7219SJohn Snow.PHONY: pipenv
526f84d726SJohn Snowpipenv: .venv
536560379fSJohn Snow.venv: Pipfile.lock
546560379fSJohn Snow	@PIPENV_VENV_IN_PROJECT=1 pipenv sync --dev --keep-outdated
5519cf0031SJohn Snow	rm -f pyproject.toml
566560379fSJohn Snow	@touch .venv
576560379fSJohn Snow
58205d7219SJohn Snow.PHONY: check-pipenv
596f84d726SJohn Snowcheck-pipenv: pipenv
606560379fSJohn Snow	@pipenv run make check
616560379fSJohn Snow
622c24d52dSJohn Snow.PHONY: dev-venv
632c24d52dSJohn Snowdev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
642c24d52dSJohn Snow$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
652c24d52dSJohn Snow	@echo "VENV $(QEMU_VENV_DIR)"
662c24d52dSJohn Snow	@python3 -m venv $(QEMU_VENV_DIR)
672c24d52dSJohn Snow	@(							\
682c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
692c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
702c24d52dSJohn Snow		echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";	\
712c24d52dSJohn Snow		make develop 1>/dev/null;			\
722c24d52dSJohn Snow	)
732c24d52dSJohn Snow	@touch $(QEMU_VENV_DIR)
742c24d52dSJohn Snow
752c24d52dSJohn Snow.PHONY: check-dev
762c24d52dSJohn Snowcheck-dev: dev-venv
772c24d52dSJohn Snow	@(							\
782c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
792c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
802c24d52dSJohn Snow		make check;					\
812c24d52dSJohn Snow	)
822c24d52dSJohn Snow
83205d7219SJohn Snow.PHONY: develop
846560379fSJohn Snowdevelop:
852c24d52dSJohn Snow	pip3 install --disable-pip-version-check -e .[devel]
866560379fSJohn Snow
87205d7219SJohn Snow.PHONY: check
886560379fSJohn Snowcheck:
896560379fSJohn Snow	@avocado --config avocado.cfg run tests/
906560379fSJohn Snow
91205d7219SJohn Snow.PHONY: check-tox
923c8de38cSJohn Snowcheck-tox:
936f651a6dSWainer dos Santos Moschetta	@tox $(QEMU_TOX_EXTRA_ARGS)
943c8de38cSJohn Snow
95*a4ffaecdSJohn Snow.PHONY: check-coverage
96*a4ffaecdSJohn Snowcheck-coverage:
97*a4ffaecdSJohn Snow	@coverage run -m avocado --config avocado.cfg run tests/*.py
98*a4ffaecdSJohn Snow	@coverage combine
99*a4ffaecdSJohn Snow	@coverage html
100*a4ffaecdSJohn Snow	@coverage report
101*a4ffaecdSJohn Snow
102205d7219SJohn Snow.PHONY: clean
1036560379fSJohn Snowclean:
1046560379fSJohn Snow	python3 setup.py clean --all
10519cf0031SJohn Snow	rm -f pyproject.toml
1066560379fSJohn Snow
107205d7219SJohn Snow.PHONY: distclean
1086560379fSJohn Snowdistclean: clean
1092c24d52dSJohn Snow	rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
110*a4ffaecdSJohn Snow	rm -f .coverage .coverage.*
111*a4ffaecdSJohn Snow	rm -rf htmlcov/
112