xref: /openbmc/qemu/python/Makefile (revision 28cd32fb7bcd4ff3f987e9cd59186b18e810d73d)
12c24d52dSJohn SnowQEMU_VENV_DIR=.dev-venv
22c24d52dSJohn 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 ""
192c24d52dSJohn Snow	@echo "make check-dev:"
202c24d52dSJohn Snow	@echo "    Run tests in a venv against your default python3 version."
212c24d52dSJohn Snow	@echo "    These tests use the newest dependencies."
222c24d52dSJohn Snow	@echo "    Requires: Python 3.x"
232c24d52dSJohn Snow	@echo ""
24*28cd32fbSJohn Snow	@echo "make check:"
25*28cd32fbSJohn Snow	@echo "    Run tests in your *current environment*."
26*28cd32fbSJohn Snow	@echo "    Performs no environment setup of any kind."
276560379fSJohn Snow	@echo ""
28*28cd32fbSJohn Snow	@echo "make develop:"
29*28cd32fbSJohn Snow	@echo "    Install deps needed for for 'make check',"
30*28cd32fbSJohn Snow	@echo "    and install the qemu package in editable mode."
31*28cd32fbSJohn Snow	@echo "    (Can be used in or outside of a venv.)"
326560379fSJohn Snow	@echo ""
336f84d726SJohn Snow	@echo "make pipenv"
346f84d726SJohn Snow	@echo "    Creates pipenv's virtual environment (.venv)"
356f84d726SJohn Snow	@echo ""
362c24d52dSJohn Snow	@echo "make dev-venv"
372c24d52dSJohn Snow	@echo "    Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
382c24d52dSJohn Snow	@echo ""
396560379fSJohn Snow	@echo "make clean:      remove package build output."
406560379fSJohn Snow	@echo ""
416560379fSJohn Snow	@echo "make distclean:  remove venv files, qemu package forwarder,"
426560379fSJohn Snow	@echo "                 built distribution files, and everything"
436560379fSJohn Snow	@echo "                 from 'make clean'."
446560379fSJohn Snow
45205d7219SJohn Snow.PHONY: pipenv
466f84d726SJohn Snowpipenv: .venv
476560379fSJohn Snow.venv: Pipfile.lock
486560379fSJohn Snow	@PIPENV_VENV_IN_PROJECT=1 pipenv sync --dev --keep-outdated
496560379fSJohn Snow	@touch .venv
506560379fSJohn Snow
51205d7219SJohn Snow.PHONY: check-pipenv
526f84d726SJohn Snowcheck-pipenv: pipenv
536560379fSJohn Snow	@pipenv run make check
546560379fSJohn Snow
552c24d52dSJohn Snow.PHONY: dev-venv
562c24d52dSJohn Snowdev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
572c24d52dSJohn Snow$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
582c24d52dSJohn Snow	@echo "VENV $(QEMU_VENV_DIR)"
592c24d52dSJohn Snow	@python3 -m venv $(QEMU_VENV_DIR)
602c24d52dSJohn Snow	@(							\
612c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
622c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
632c24d52dSJohn Snow		echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";	\
642c24d52dSJohn Snow		make develop 1>/dev/null;			\
652c24d52dSJohn Snow	)
662c24d52dSJohn Snow	@touch $(QEMU_VENV_DIR)
672c24d52dSJohn Snow
682c24d52dSJohn Snow.PHONY: check-dev
692c24d52dSJohn Snowcheck-dev: dev-venv
702c24d52dSJohn Snow	@(							\
712c24d52dSJohn Snow		echo "ACTIVATE $(QEMU_VENV_DIR)";		\
722c24d52dSJohn Snow		. $(QEMU_VENV_DIR)/bin/activate;		\
732c24d52dSJohn Snow		make check;					\
742c24d52dSJohn Snow	)
752c24d52dSJohn Snow
76205d7219SJohn Snow.PHONY: develop
776560379fSJohn Snowdevelop:
782c24d52dSJohn Snow	pip3 install --disable-pip-version-check -e .[devel]
796560379fSJohn Snow
80205d7219SJohn Snow.PHONY: check
816560379fSJohn Snowcheck:
826560379fSJohn Snow	@avocado --config avocado.cfg run tests/
836560379fSJohn Snow
84205d7219SJohn Snow.PHONY: check-tox
853c8de38cSJohn Snowcheck-tox:
863c8de38cSJohn Snow	@tox
873c8de38cSJohn Snow
88205d7219SJohn Snow.PHONY: clean
896560379fSJohn Snowclean:
906560379fSJohn Snow	python3 setup.py clean --all
916560379fSJohn Snow
92205d7219SJohn Snow.PHONY: distclean
936560379fSJohn Snowdistclean: clean
942c24d52dSJohn Snow	rm -rf qemu.egg-info/ .venv/ .tox/ $(QEMU_VENV_DIR) dist/
95