mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-17 13:25:31 -07:00
This command is to be used to add various packages (or ensure they're
already present) into the configure-provided venv in a modular fashion.
Examples:
mkvenv ensure --online --dir "${source_dir}/python/wheels/" "meson>=0.61.5"
mkvenv ensure --online "sphinx>=1.6.0"
mkvenv ensure "qemu.qmp==0.0.2"
It's designed to look for packages in three places, in order:
(1) In system packages, if the version installed is already good
enough. This way your distribution-provided meson, sphinx, etc are
always used as first preference.
(2) In a vendored packages directory. Here I am suggesting
qemu.git/python/wheels/ as that directory. This is intended to serve as
a replacement for vendoring the meson source for QEMU tarballs. It is
also highly likely to be extremely useful for packaging the "qemu.qmp"
package in source distributions for platforms that do not yet package
qemu.qmp separately.
(3) Online, via PyPI, ***only when "--online" is passed***. This is only
ever used as a fallback if the first two sources do not have an
appropriate package that meets the requirement. The ability to build
QEMU and run tests *completely offline* is not impinged.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20230511035435.734312-7-jsnow@redhat.com>
[Use distlib to lookup distributions. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
201 lines
5.6 KiB
INI
201 lines
5.6 KiB
INI
[metadata]
|
|
name = qemu
|
|
version = file:VERSION
|
|
maintainer = QEMU Developer Team
|
|
maintainer_email = qemu-devel@nongnu.org
|
|
url = https://www.qemu.org/
|
|
download_url = https://www.qemu.org/download/
|
|
description = QEMU Python Build, Debug and SDK tooling.
|
|
long_description = file:PACKAGE.rst
|
|
long_description_content_type = text/x-rst
|
|
classifiers =
|
|
Development Status :: 3 - Alpha
|
|
License :: OSI Approved :: GNU General Public License v2 (GPLv2)
|
|
Natural Language :: English
|
|
Operating System :: OS Independent
|
|
Programming Language :: Python :: 3 :: Only
|
|
Programming Language :: Python :: 3.6
|
|
Programming Language :: Python :: 3.7
|
|
Programming Language :: Python :: 3.8
|
|
Programming Language :: Python :: 3.9
|
|
Programming Language :: Python :: 3.10
|
|
Programming Language :: Python :: 3.11
|
|
Typing :: Typed
|
|
|
|
[options]
|
|
python_requires = >= 3.6
|
|
packages =
|
|
qemu.qmp
|
|
qemu.machine
|
|
qemu.utils
|
|
|
|
[options.package_data]
|
|
* = py.typed
|
|
|
|
[options.extras_require]
|
|
# Remember to update tests/minreqs.txt if changing anything below:
|
|
devel =
|
|
avocado-framework >= 90.0
|
|
distlib >= 0.3.6
|
|
flake8 >= 3.6.0
|
|
fusepy >= 2.0.4
|
|
isort >= 5.1.2
|
|
mypy >= 0.780
|
|
pylint >= 2.8.0
|
|
tox >= 3.18.0
|
|
urwid >= 2.1.2
|
|
urwid-readline >= 0.13
|
|
Pygments >= 2.9.0
|
|
|
|
# Provides qom-fuse functionality
|
|
fuse =
|
|
fusepy >= 2.0.4
|
|
|
|
# QMP TUI dependencies
|
|
tui =
|
|
urwid >= 2.1.2
|
|
urwid-readline >= 0.13
|
|
Pygments >= 2.9.0
|
|
|
|
[options.entry_points]
|
|
console_scripts =
|
|
qom = qemu.utils.qom:main
|
|
qom-set = qemu.utils.qom:QOMSet.entry_point
|
|
qom-get = qemu.utils.qom:QOMGet.entry_point
|
|
qom-list = qemu.utils.qom:QOMList.entry_point
|
|
qom-tree = qemu.utils.qom:QOMTree.entry_point
|
|
qom-fuse = qemu.utils.qom_fuse:QOMFuse.entry_point [fuse]
|
|
qemu-ga-client = qemu.utils.qemu_ga_client:main
|
|
qmp-shell = qemu.qmp.qmp_shell:main
|
|
qmp-shell-wrap = qemu.qmp.qmp_shell:main_wrap
|
|
qmp-tui = qemu.qmp.qmp_tui:main [tui]
|
|
|
|
[flake8]
|
|
# Prefer pylint's bare-except checks to flake8's
|
|
extend-ignore = E722
|
|
exclude = __pycache__,
|
|
|
|
[mypy]
|
|
strict = True
|
|
python_version = 3.6
|
|
warn_unused_configs = True
|
|
namespace_packages = True
|
|
warn_unused_ignores = False
|
|
|
|
[mypy-qemu.utils.qom_fuse]
|
|
# fusepy has no type stubs:
|
|
allow_subclassing_any = True
|
|
|
|
[mypy-qemu.qmp.qmp_tui]
|
|
# urwid and urwid_readline have no type stubs:
|
|
allow_subclassing_any = True
|
|
|
|
# The following missing import directives are because these libraries do not
|
|
# provide type stubs. Allow them on an as-needed basis for mypy.
|
|
[mypy-fuse]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-urwid]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-urwid_readline]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-pygments]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-importlib.metadata]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-importlib_metadata]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-pkg_resources]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-distlib]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-distlib.database]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-distlib.version]
|
|
ignore_missing_imports = True
|
|
|
|
[pylint.messages control]
|
|
# Disable the message, report, category or checker with the given id(s). You
|
|
# can either give multiple identifiers separated by comma (,) or put this
|
|
# option multiple times (only on the command line, not in the configuration
|
|
# file where it should appear only once). You can also use "--disable=all" to
|
|
# disable everything first and then reenable specific checks. For example, if
|
|
# you want to run only the similarities checker, you can use "--disable=all
|
|
# --enable=similarities". If you want to run only the classes checker, but have
|
|
# no Warning level messages displayed, use "--disable=all --enable=classes
|
|
# --disable=W".
|
|
disable=consider-using-f-string,
|
|
consider-using-with,
|
|
too-many-arguments,
|
|
too-many-function-args, # mypy handles this with less false positives.
|
|
too-many-instance-attributes,
|
|
no-member, # mypy also handles this better.
|
|
|
|
[pylint.basic]
|
|
# Good variable names which should always be accepted, separated by a comma.
|
|
good-names=i,
|
|
j,
|
|
k,
|
|
ex,
|
|
Run,
|
|
_, # By convention: Unused variable
|
|
fh, # fh = open(...)
|
|
fd, # fd = os.open(...)
|
|
c, # for c in string: ...
|
|
T, # for TypeVars. See pylint#3401
|
|
SocketAddrT, # Not sure why this is invalid.
|
|
|
|
[pylint.similarities]
|
|
# Ignore imports when computing similarities.
|
|
ignore-imports=yes
|
|
ignore-signatures=yes
|
|
|
|
# Minimum lines number of a similarity.
|
|
# TODO: Remove after we opt in to Pylint 2.8.3. See commit msg.
|
|
min-similarity-lines=6
|
|
|
|
|
|
[isort]
|
|
force_grid_wrap=4
|
|
force_sort_within_sections=True
|
|
include_trailing_comma=True
|
|
line_length=72
|
|
lines_after_imports=2
|
|
multi_line_output=3
|
|
|
|
# tox (https://tox.readthedocs.io/) is a tool for running tests in
|
|
# multiple virtualenvs. This configuration file will run the test suite
|
|
# on all supported python versions. To use it, "pip install tox" and
|
|
# then run "tox" from this directory. You will need all of these versions
|
|
# of python available on your system to run this test.
|
|
|
|
[tox:tox]
|
|
envlist = py36, py37, py38, py39, py310, py311
|
|
skip_missing_interpreters = true
|
|
|
|
[testenv]
|
|
allowlist_externals = make
|
|
deps =
|
|
.[devel]
|
|
.[fuse] # Workaround to trigger tox venv rebuild
|
|
.[tui] # Workaround to trigger tox venv rebuild
|
|
commands =
|
|
make check
|
|
|
|
# Coverage.py [https://coverage.readthedocs.io/en/latest/] is a tool for
|
|
# measuring code coverage of Python programs. It monitors your program,
|
|
# noting which parts of the code have been executed, then analyzes the
|
|
# source to identify code that could have been executed but was not.
|
|
|
|
[coverage:run]
|
|
concurrency = multiprocessing
|
|
source = qemu/
|
|
parallel = true
|