xref: /openbmc/qemu/python/Makefile (revision 2c24d52d06af855a9b2a69c38cd4b747c848b1e1)
1*2c24d52dSJohn SnowQEMU_VENV_DIR=.dev-venv
2*2c24d52dSJohn Snow
3205d7219SJohn Snow.PHONY: help
46560379fSJohn Snowhelp:
56560379fSJohn Snow	@echo "python packaging help:"
66560379fSJohn Snow	@echo ""
76f84d726SJohn Snow	@echo "make check-pipenv:"
86f84d726SJohn Snow	@echo "    Run tests in pipenv's virtual environment."
96f84d726SJohn Snow	@echo "    These tests use the oldest dependencies."
106f84d726SJohn Snow	@echo "    Requires: Python 3.6 and pipenv."
116f84d726SJohn Snow	@echo "    Hint (Fedora): 'sudo dnf install python3.6 pipenv'"
126560379fSJohn Snow	@echo ""
138c95d0fcSJohn Snow	@echo "make check-tox:"
148c95d0fcSJohn Snow	@echo "    Run tests against multiple python versions."
158c95d0fcSJohn Snow	@echo "    These tests use the newest dependencies."
168c95d0fcSJohn Snow	@echo "    Requires: Python 3.6 - 3.10, and tox."
178c95d0fcSJohn Snow	@echo "    Hint (Fedora): 'sudo dnf install python3-tox python3.10'"
188c95d0fcSJohn Snow	@echo ""
19*2c24d52dSJohn Snow	@echo "make check-dev:"
20*2c24d52dSJohn Snow	@echo "    Run tests in a venv against your default python3 version."
21*2c24d52dSJohn Snow	@echo "    These tests use the newest dependencies."
22*2c24d52dSJohn Snow	@echo "    Requires: Python 3.x"
23*2c24d52dSJohn Snow	@echo ""
246560379fSJohn Snow	@echo "make develop:    Install deps for 'make check', and"
256560379fSJohn Snow	@echo "                 the qemu libs in editable/development mode."
266560379fSJohn Snow	@echo ""
276560379fSJohn Snow	@echo "make check:      run linters using the current environment."
286560379fSJohn Snow	@echo ""
296f84d726SJohn Snow	@echo "make pipenv"
306f84d726SJohn Snow	@echo "    Creates pipenv's virtual environment (.venv)"
316f84d726SJohn Snow	@echo ""
32*2c24d52dSJohn Snow	@echo "make dev-venv"
33*2c24d52dSJohn Snow	@echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
34*2c24d52dSJohn Snow	@echo ""
356560379fSJohn Snow	@echo "make clean:      remove package build output."
366560379fSJohn Snow	@echo ""
376560379fSJohn Snow	@echo "make distclean:  remove venv files, qemu package forwarder,"
386560379fSJohn Snow	@echo "                 built distribution files, and everything"
396560379fSJohn Snow	@echo "                 from 'make clean'."
406560379fSJohn Snow
41205d7219SJohn Snow.PHONY: pipenv
426f84d726SJohn Snowpipenv: .venv
436560379fSJohn Snow.venv: Pipfile.lock
446560379fSJohn Snow	@PIPENV_VENV_IN_PROJECT=1 pipenv sync --dev --keep-outdated
456560379fSJohn Snow	@touch .venv
466560379fSJohn Snow
47205d7219SJohn Snow.PHONY: check-pipenv
486f84d726SJohn Snowcheck-pipenv: pipenv
496560379fSJohn Snow	@pipenv run make check
506560379fSJohn Snow
51*2c24d52dSJohn Snow.PHONY: dev-venv
52*2c24d52dSJohn Snowdev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
53*2c24d52dSJohn Snow$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
54*2c24d52dSJohn Snow	@echo "VENV $(QEMU_VENV_DIR)"
55*2c24d52dSJohn Snow	@python3 -m venv $(QEMU_VENV_DIR)
56*2c24d52dSJohn Snow	@(							\
57*2c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
58*2c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
59*2c24d52dSJohn Snow		echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";	\
60*2c24d52dSJohn Snow		make develop 1>/dev/null;			\
61*2c24d52dSJohn Snow	)
62*2c24d52dSJohn Snow	@touch $(QEMU_VENV_DIR)
63*2c24d52dSJohn Snow
64*2c24d52dSJohn Snow.PHONY: check-dev
65*2c24d52dSJohn Snowcheck-dev: dev-venv
66*2c24d52dSJohn Snow	@(							\
67*2c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
68*2c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
69*2c24d52dSJohn Snow		make check;					\
70*2c24d52dSJohn Snow	)
71*2c24d52dSJohn Snow
72205d7219SJohn Snow.PHONY: develop
736560379fSJohn Snowdevelop:
74*2c24d52dSJohn Snow	pip3 install --disable-pip-version-check -e .[devel]
756560379fSJohn Snow
76205d7219SJohn Snow.PHONY: check
776560379fSJohn Snowcheck:
786560379fSJohn Snow	@avocado --config avocado.cfg run tests/
796560379fSJohn Snow
80205d7219SJohn Snow.PHONY: check-tox
813c8de38cSJohn Snowcheck-tox:
823c8de38cSJohn Snow	@tox
833c8de38cSJohn Snow
84205d7219SJohn Snow.PHONY: clean
856560379fSJohn Snowclean:
866560379fSJohn Snow	python3 setup.py clean --all
876560379fSJohn Snow
88205d7219SJohn Snow.PHONY: distclean
896560379fSJohn Snowdistclean: clean
90*2c24d52dSJohn Snow	rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
91