2021-06-30 05:43:19 +08:00
|
|
|
QEMU_VENV_DIR=.dev-venv
|
2023-02-10 08:31:42 +08:00
|
|
|
QEMU_MINVENV_DIR=.min-venv
|
2021-07-01 02:45:46 +08:00
|
|
|
QEMU_TOX_EXTRA_ARGS ?=
|
2021-06-30 05:43:19 +08:00
|
|
|
|
2021-06-30 05:43:17 +08:00
|
|
|
.PHONY: help
|
2021-05-28 05:17:12 +08:00
|
|
|
help:
|
|
|
|
@echo "python packaging help:"
|
|
|
|
@echo ""
|
2023-02-10 08:31:42 +08:00
|
|
|
@echo "make check-minreqs:"
|
|
|
|
@echo " Run tests in the minreqs virtual environment."
|
2021-06-30 05:43:15 +08:00
|
|
|
@echo " These tests use the oldest dependencies."
|
Python: Drop support for Python 3.7
Debian 10 is not anymore a supported distro, since Debian 12 was
released on June 10, 2023. Our supported build platforms as of today
all support at least 3.8 (and all of them except for Ubuntu 20.04
support 3.9):
openSUSE Leap 15.5: 3.6.15 (3.11.2)
CentOS Stream 8: 3.6.8 (3.8.13, 3.9.16, 3.11.4)
CentOS Stream 9: 3.9.17 (3.11.4)
Fedora 37: 3.11.4
Fedora 38: 3.11.4
Debian 11: 3.9.2
Debian 12: 3.11.2
Alpine 3.14, 3.15: 3.9.16
Alpine 3.16, 3.17: 3.10.10
Ubuntu 20.04 LTS: 3.8.10
Ubuntu 22.04 LTS: 3.10.12
NetBSD 9.3: 3.9.13*
FreeBSD 12.4: 3.9.16
FreeBSD 13.1: 3.9.18
OpenBSD 7.2: 3.9.17
Note: NetBSD does not appear to have a default meta-package, but offers
several options, the lowest of which is 3.7.15. However, "python39"
appears to be a pre-requisite to one of the other packages we request
in tests/vm/netbsd.
Since it is safe under our supported platform policy, bump our
minimum supported version of Python to 3.8. The two most interesting
features to have by default include:
- the importlib.metadata module, whose lack is responsible for over 100
lines of code in mkvenv.py
- improvements to asyncio, for example asyncio.CancelledError
inherits from BaseException rather than Exception
In addition, code can now use the assignment operator ':='
Because mypy now learns about importlib.metadata, a small change to
mkvenv.py is needed to pass type checking.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-05-03 18:48:02 +08:00
|
|
|
@echo " Requires: Python 3.8"
|
|
|
|
@echo " Hint (Fedora): 'sudo dnf install python3.8'"
|
2021-05-28 05:17:12 +08:00
|
|
|
@echo ""
|
2021-06-30 05:43:16 +08:00
|
|
|
@echo "make check-tox:"
|
|
|
|
@echo " Run tests against multiple python versions."
|
|
|
|
@echo " These tests use the newest dependencies."
|
Python: Drop support for Python 3.7
Debian 10 is not anymore a supported distro, since Debian 12 was
released on June 10, 2023. Our supported build platforms as of today
all support at least 3.8 (and all of them except for Ubuntu 20.04
support 3.9):
openSUSE Leap 15.5: 3.6.15 (3.11.2)
CentOS Stream 8: 3.6.8 (3.8.13, 3.9.16, 3.11.4)
CentOS Stream 9: 3.9.17 (3.11.4)
Fedora 37: 3.11.4
Fedora 38: 3.11.4
Debian 11: 3.9.2
Debian 12: 3.11.2
Alpine 3.14, 3.15: 3.9.16
Alpine 3.16, 3.17: 3.10.10
Ubuntu 20.04 LTS: 3.8.10
Ubuntu 22.04 LTS: 3.10.12
NetBSD 9.3: 3.9.13*
FreeBSD 12.4: 3.9.16
FreeBSD 13.1: 3.9.18
OpenBSD 7.2: 3.9.17
Note: NetBSD does not appear to have a default meta-package, but offers
several options, the lowest of which is 3.7.15. However, "python39"
appears to be a pre-requisite to one of the other packages we request
in tests/vm/netbsd.
Since it is safe under our supported platform policy, bump our
minimum supported version of Python to 3.8. The two most interesting
features to have by default include:
- the importlib.metadata module, whose lack is responsible for over 100
lines of code in mkvenv.py
- improvements to asyncio, for example asyncio.CancelledError
inherits from BaseException rather than Exception
In addition, code can now use the assignment operator ':='
Because mypy now learns about importlib.metadata, a small change to
mkvenv.py is needed to pass type checking.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-05-03 18:48:02 +08:00
|
|
|
@echo " Requires: Python 3.8 - 3.11, and tox."
|
Python: Drop support for Python 3.6
Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have
begun dropping support for this version and it is becoming more
cumbersome to support. Avocado-framework and qemu.qmp each have their
own reasons for wanting to drop Python 3.6, but won't until QEMU does.
Versions of Python available in our supported build platforms as of today,
with optional versions available in parentheses:
openSUSE Leap 15.4: 3.6.15 (3.9.10, 3.10.2)
CentOS Stream 8: 3.6.8 (3.8.13, 3.9.16)
CentOS Stream 9: 3.9.13
Fedora 36: 3.10
Fedora 37: 3.11
Debian 11: 3.9.2
Alpine 3.14, 3.15: 3.9.16
Alpine 3.16, 3.17: 3.10.10
Ubuntu 20.04 LTS: 3.8.10
Ubuntu 22.04 LTS: 3.10.4
NetBSD 9.3: 3.9.13*
FreeBSD 12.4: 3.9.16
FreeBSD 13.1: 3.9.16
OpenBSD 7.2: 3.9.16
Note: Our VM tests install 3.9 explicitly for FreeBSD and 3.10 for
NetBSD; the default for "python" or "python3" in FreeBSD is
3.9.16. NetBSD does not appear to have a default meta-package, but
offers several options, the lowest of which is 3.7.15. "python39"
appears to be a pre-requisite to one of the other packages we request in
tests/vm/netbsd. pip, ensurepip and other Python essentials are
currently only available for Python 3.10 for NetBSD.
CentOS and OpenSUSE support parallel installation of multiple Python
interpreters, and binaries in /usr/bin will always use Python 3.6. However,
the newly introduced support for virtual environments ensures that all build
steps that execute QEMU Python code use a single interpreter.
Since it is safe to under our supported platform policy, bump our
minimum supported version of Python to 3.7.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20230511035435.734312-24-jsnow@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-05-11 11:54:31 +08:00
|
|
|
@echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'"
|
2021-07-01 02:45:46 +08:00
|
|
|
@echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra"
|
|
|
|
@echo " arguments to tox".
|
2021-06-30 05:43:16 +08:00
|
|
|
@echo ""
|
2021-06-30 05:43:19 +08:00
|
|
|
@echo "make check-dev:"
|
|
|
|
@echo " Run tests in a venv against your default python3 version."
|
|
|
|
@echo " These tests use the newest dependencies."
|
|
|
|
@echo " Requires: Python 3.x"
|
|
|
|
@echo ""
|
2021-06-30 05:43:20 +08:00
|
|
|
@echo "make check:"
|
|
|
|
@echo " Run tests in your *current environment*."
|
|
|
|
@echo " Performs no environment setup of any kind."
|
|
|
|
@echo ""
|
|
|
|
@echo "make develop:"
|
2022-07-08 00:37:15 +08:00
|
|
|
@echo " Install deps needed for 'make check',"
|
2021-06-30 05:43:20 +08:00
|
|
|
@echo " and install the qemu package in editable mode."
|
|
|
|
@echo " (Can be used in or outside of a venv.)"
|
2021-05-28 05:17:12 +08:00
|
|
|
@echo ""
|
2023-02-10 08:31:42 +08:00
|
|
|
@echo "make min-venv"
|
|
|
|
@echo " Creates the minreqs virtual environment ($(QEMU_MINVENV_DIR))"
|
2021-06-30 05:43:15 +08:00
|
|
|
@echo ""
|
2021-06-30 05:43:19 +08:00
|
|
|
@echo "make dev-venv"
|
|
|
|
@echo " Creates a simple venv for check-dev. ($(QEMU_VENV_DIR))"
|
|
|
|
@echo ""
|
2021-06-30 05:43:21 +08:00
|
|
|
@echo "make clean:"
|
|
|
|
@echo " Remove package build output."
|
2021-05-28 05:17:12 +08:00
|
|
|
@echo ""
|
2021-06-30 05:43:21 +08:00
|
|
|
@echo "make distclean:"
|
2023-02-10 08:31:42 +08:00
|
|
|
@echo " remove venv files, qemu package forwarder,"
|
2021-06-30 05:43:21 +08:00
|
|
|
@echo " built distribution files, and everything from 'make clean'."
|
|
|
|
@echo ""
|
|
|
|
@echo -e "Have a nice day ^_^\n"
|
2021-05-28 05:17:12 +08:00
|
|
|
|
2023-02-10 08:31:42 +08:00
|
|
|
.PHONY: pipenv check-pipenv
|
|
|
|
pipenv check-pipenv:
|
|
|
|
@echo "pipenv was dropped; try 'make check-minreqs' or 'make min-venv'"
|
|
|
|
@exit 1
|
|
|
|
|
2023-05-11 11:54:09 +08:00
|
|
|
PIP_INSTALL = pip install --disable-pip-version-check
|
2023-02-10 08:31:42 +08:00
|
|
|
.PHONY: min-venv
|
|
|
|
min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate
|
|
|
|
$(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt
|
|
|
|
@echo "VENV $(QEMU_MINVENV_DIR)"
|
Python: Drop support for Python 3.7
Debian 10 is not anymore a supported distro, since Debian 12 was
released on June 10, 2023. Our supported build platforms as of today
all support at least 3.8 (and all of them except for Ubuntu 20.04
support 3.9):
openSUSE Leap 15.5: 3.6.15 (3.11.2)
CentOS Stream 8: 3.6.8 (3.8.13, 3.9.16, 3.11.4)
CentOS Stream 9: 3.9.17 (3.11.4)
Fedora 37: 3.11.4
Fedora 38: 3.11.4
Debian 11: 3.9.2
Debian 12: 3.11.2
Alpine 3.14, 3.15: 3.9.16
Alpine 3.16, 3.17: 3.10.10
Ubuntu 20.04 LTS: 3.8.10
Ubuntu 22.04 LTS: 3.10.12
NetBSD 9.3: 3.9.13*
FreeBSD 12.4: 3.9.16
FreeBSD 13.1: 3.9.18
OpenBSD 7.2: 3.9.17
Note: NetBSD does not appear to have a default meta-package, but offers
several options, the lowest of which is 3.7.15. However, "python39"
appears to be a pre-requisite to one of the other packages we request
in tests/vm/netbsd.
Since it is safe under our supported platform policy, bump our
minimum supported version of Python to 3.8. The two most interesting
features to have by default include:
- the importlib.metadata module, whose lack is responsible for over 100
lines of code in mkvenv.py
- improvements to asyncio, for example asyncio.CancelledError
inherits from BaseException rather than Exception
In addition, code can now use the assignment operator ':='
Because mypy now learns about importlib.metadata, a small change to
mkvenv.py is needed to pass type checking.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-05-03 18:48:02 +08:00
|
|
|
@python3.8 -m venv $(QEMU_MINVENV_DIR)
|
2023-02-10 08:31:42 +08:00
|
|
|
@( \
|
|
|
|
echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
|
|
|
|
. $(QEMU_MINVENV_DIR)/bin/activate; \
|
2023-05-11 11:54:09 +08:00
|
|
|
echo "INSTALL wheel $(QEMU_MINVENV_DIR)"; \
|
|
|
|
$(PIP_INSTALL) wheel 1>/dev/null; \
|
2023-02-10 08:31:42 +08:00
|
|
|
echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\
|
2023-05-11 11:54:09 +08:00
|
|
|
$(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \
|
2023-02-10 08:31:42 +08:00
|
|
|
echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \
|
2023-05-11 11:54:09 +08:00
|
|
|
$(PIP_INSTALL) -e . 1>/dev/null; \
|
2023-02-10 08:31:42 +08:00
|
|
|
)
|
|
|
|
@touch $(QEMU_MINVENV_DIR)
|
2021-05-28 05:17:12 +08:00
|
|
|
|
2023-02-10 08:31:42 +08:00
|
|
|
.PHONY: check-minreqs
|
|
|
|
check-minreqs: min-venv
|
|
|
|
@( \
|
|
|
|
echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \
|
|
|
|
. $(QEMU_MINVENV_DIR)/bin/activate; \
|
|
|
|
make check; \
|
|
|
|
)
|
2021-05-28 05:17:12 +08:00
|
|
|
|
2021-06-30 05:43:19 +08:00
|
|
|
.PHONY: dev-venv
|
|
|
|
dev-venv: $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate
|
|
|
|
$(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
|
|
|
|
@echo "VENV $(QEMU_VENV_DIR)"
|
|
|
|
@python3 -m venv $(QEMU_VENV_DIR)
|
|
|
|
@( \
|
|
|
|
echo "ACTIVATE $(QEMU_VENV_DIR)"; \
|
|
|
|
. $(QEMU_VENV_DIR)/bin/activate; \
|
|
|
|
echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)"; \
|
|
|
|
make develop 1>/dev/null; \
|
|
|
|
)
|
|
|
|
@touch $(QEMU_VENV_DIR)
|
|
|
|
|
|
|
|
.PHONY: check-dev
|
|
|
|
check-dev: dev-venv
|
|
|
|
@( \
|
|
|
|
echo "ACTIVATE $(QEMU_VENV_DIR)"; \
|
|
|
|
. $(QEMU_VENV_DIR)/bin/activate; \
|
|
|
|
make check; \
|
|
|
|
)
|
|
|
|
|
2021-06-30 05:43:17 +08:00
|
|
|
.PHONY: develop
|
2021-05-28 05:17:12 +08:00
|
|
|
develop:
|
2023-05-11 11:54:09 +08:00
|
|
|
$(PIP_INSTALL) -e .[devel]
|
2021-05-28 05:17:12 +08:00
|
|
|
|
2021-06-30 05:43:17 +08:00
|
|
|
.PHONY: check
|
2021-05-28 05:17:12 +08:00
|
|
|
check:
|
|
|
|
@avocado --config avocado.cfg run tests/
|
|
|
|
|
2021-06-30 05:43:17 +08:00
|
|
|
.PHONY: check-tox
|
2021-05-28 05:17:14 +08:00
|
|
|
check-tox:
|
2021-07-01 02:45:46 +08:00
|
|
|
@tox $(QEMU_TOX_EXTRA_ARGS)
|
2021-05-28 05:17:14 +08:00
|
|
|
|
2021-09-16 00:29:55 +08:00
|
|
|
.PHONY: check-coverage
|
|
|
|
check-coverage:
|
|
|
|
@coverage run -m avocado --config avocado.cfg run tests/*.py
|
|
|
|
@coverage combine
|
|
|
|
@coverage html
|
|
|
|
@coverage report
|
|
|
|
|
2021-06-30 05:43:17 +08:00
|
|
|
.PHONY: clean
|
2021-05-28 05:17:12 +08:00
|
|
|
clean:
|
|
|
|
python3 setup.py clean --all
|
2021-06-30 05:43:22 +08:00
|
|
|
rm -f pyproject.toml
|
2021-05-28 05:17:12 +08:00
|
|
|
|
2021-06-30 05:43:17 +08:00
|
|
|
.PHONY: distclean
|
2021-05-28 05:17:12 +08:00
|
|
|
distclean: clean
|
2023-02-10 08:31:42 +08:00
|
|
|
rm -rf qemu.egg-info/ .eggs/ dist/
|
|
|
|
rm -rf $(QEMU_VENV_DIR) $(QEMU_MINVENV_DIR) .tox/
|
2021-09-16 00:29:55 +08:00
|
|
|
rm -f .coverage .coverage.*
|
|
|
|
rm -rf htmlcov/
|