Makefile 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. QEMU_VENV_DIR=.dev-venv
  2. QEMU_MINVENV_DIR=.min-venv
  3. QEMU_TOX_EXTRA_ARGS ?=
  4. .PHONY: help
  5. help:
  6. @echo "python packaging help:"
  7. @echo ""
  8. @echo "make check-minreqs:"
  9. @echo " Run tests in the minreqs virtual environment."
  10. @echo " These tests use the oldest dependencies."
  11. @echo " Requires: Python 3.8"
  12. @echo " Hint (Fedora): 'sudo dnf install python3.8'"
  13. @echo ""
  14. @echo "make check-tox:"
  15. @echo " Run tests against multiple python versions."
  16. @echo " These tests use the newest dependencies."
  17. @echo " Requires: Python 3.8 - 3.11, and tox."
  18. @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'"
  19. @echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
  20. @echo " arguments to tox".
  21. @echo ""
  22. @echo "make check-dev:"
  23. @echo " Run tests in a venv against your default python3 version."
  24. @echo " These tests use the newest dependencies."
  25. @echo " Requires: Python 3.x"
  26. @echo ""
  27. @echo "make check:"
  28. @echo " Run tests in your *current environment*."
  29. @echo " Performs no environment setup of any kind."
  30. @echo ""
  31. @echo "make develop:"
  32. @echo " Install deps needed for 'make check',"
  33. @echo " and install the qemu package in editable mode."
  34. @echo " (Can be used in or outside of a venv.)"
  35. @echo ""
  36. @echo "make min-venv"
  37. @echo " Creates the minreqs virtual environment ($(QEMU_MINVENV_DIR))"
  38. @echo ""
  39. @echo "make dev-venv"
  40. @echo " Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
  41. @echo ""
  42. @echo "make clean:"
  43. @echo " Remove package build output."
  44. @echo ""
  45. @echo "make distclean:"
  46. @echo " remove venv files, qemu package forwarder,"
  47. @echo " built distribution files, and everything from 'make clean'."
  48. @echo ""
  49. @echo -e "Have a nice day ^_^\n"
  50. .PHONY: pipenv check-pipenv
  51. pipenv check-pipenv:
  52. @echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'"
  53. @exit 1
  54. PIP_INSTALL = pip install --disable-pip-version-check
  55. .PHONY: min-venv
  56. min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate
  57. $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt
  58. @echo "VENV $(QEMU_MINVENV_DIR)"
  59. @python3.8 -m venv $(QEMU_MINVENV_DIR)
  60. @( \
  61. echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
  62. . $(QEMU_MINVENV_DIR)/bin/activate; \
  63. echo "INSTALL wheel $(QEMU_MINVENV_DIR)"; \
  64. $(PIP_INSTALL) wheel 1>/dev/null; \
  65. echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\
  66. $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \
  67. echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \
  68. $(PIP_INSTALL) -e . 1>/dev/null; \
  69. )
  70. @touch $(QEMU_MINVENV_DIR)
  71. .PHONY: check-minreqs
  72. check-minreqs: min-venv
  73. @( \
  74. echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
  75. . $(QEMU_MINVENV_DIR)/bin/activate; \
  76. make check; \
  77. )
  78. .PHONY: dev-venv
  79. dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
  80. $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
  81. @echo "VENV $(QEMU_VENV_DIR)"
  82. @python3 -m venv $(QEMU_VENV_DIR)
  83. @( \
  84. echo "ACTIVATE $(QEMU_VENV_DIR)"; \
  85. . $(QEMU_VENV_DIR)/bin/activate; \
  86. echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \
  87. make develop 1>/dev/null; \
  88. )
  89. @touch $(QEMU_VENV_DIR)
  90. .PHONY: check-dev
  91. check-dev: dev-venv
  92. @( \
  93. echo "ACTIVATE $(QEMU_VENV_DIR)"; \
  94. . $(QEMU_VENV_DIR)/bin/activate; \
  95. make check; \
  96. )
  97. .PHONY: develop
  98. develop:
  99. $(PIP_INSTALL) -e .[devel]
  100. .PHONY: check
  101. check:
  102. @avocado --config avocado.cfg run tests/
  103. .PHONY: check-tox
  104. check-tox:
  105. @tox $(QEMU_TOX_EXTRA_ARGS)
  106. .PHONY: check-coverage
  107. check-coverage:
  108. @coverage run -m avocado --config avocado.cfg run tests/*.py
  109. @coverage combine
  110. @coverage html
  111. @coverage report
  112. .PHONY: clean
  113. clean:
  114. python3 setup.py clean --all
  115. rm -f pyproject.toml
  116. .PHONY: distclean
  117. distclean: clean
  118. rm -rf qemu.egg-info/ .eggs/ dist/
  119. rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/
  120. rm -f .coverage .coverage.*
  121. rm -rf htmlcov/