aboutsummaryrefslogtreecommitdiff
path: root/pythondeps.toml
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-08-08 10:03:42 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2023-08-28 09:55:36 +0200
commit71ed611cd47d961e1897721d7d002ffb498221d4 (patch)
treea38c6821c99269bf242059c30d9ed33cc77bbb5d /pythondeps.toml
parent0f1ec0705b92b79e5e5f69bed236639dae67d312 (diff)
python: mkvenv: add ensuregroup command
Introduce a new subcommand that retrieves the packages to be installed from a TOML file. This allows being more flexible in using the system version of a package, while at the same time using a known-good version when installing the package. This is important for packages that sometimes have backwards-incompatible changes or that depend on specific versions of their dependencies. Compared to JSON, TOML is more human readable and easier to edit. A parser is available in 3.11 but also available as a small (12k) package for older versions, tomli. While tomli is bundled with pip, this is only true of recent versions of pip. Of all the supported OSes pretty much only FreeBSD has a recent enough version of pip while staying on Python <3.11. So we cannot use the same trick that is in place for distlib. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'pythondeps.toml')
-rw-r--r--pythondeps.toml17
1 files changed, 17 insertions, 0 deletions
diff --git a/pythondeps.toml b/pythondeps.toml
new file mode 100644
index 0000000000..362f63ff2c
--- /dev/null
+++ b/pythondeps.toml
@@ -0,0 +1,17 @@
+# This file describes Python package requirements to be
+# installed in the pyvenv Python virtual environment.
+#
+# Packages are placed in groups, which are installed using
+# the ensuregroup subcommand of python/scripts/mkvenv.py.
+# Each group forms a TOML section and each entry in the
+# section is a TOML key-value list describing a package.
+# All fields are optional; valid fields are:
+#
+# - accepted: accepted versions when using a system package
+# - installed: fixed version to install in the virtual environment
+# if a system package is not found; if not specified,
+# the minimum and maximum
+# - canary: if specified, use this program name to present more
+# precise error diagnostics to the user. For example,
+# 'sphinx-build' can be used as a bellwether for the
+# presence of 'sphinx' in the system.