Skip to content
Snippets Groups Projects
  1. Aug 28, 2023
    • Paolo Bonzini's avatar
      Revert "tests: Use separate virtual environment for avocado" · c03f57fd
      Paolo Bonzini authored
      This reverts commit e8e4298f.
      
      ensuregroup allows to specify both the acceptable versions of avocado,
      and a locked version to be used when avocado is not installed as a system
      pacakge.  This lets us install avocado in pyvenv/ using "mkvenv.py" and
      reuse the distro package on Fedora and CentOS Stream (the only distros
      where it's available).
      
      ensuregroup's usage of "(>=..., <=...)" constraints when evaluating
      the distro package, and "==" constraints when installing it from PyPI,
      makes it possible to avoid conflicts between the known-good version and
      a package plugins included in the distro.
      
      This is because package plugins have "==" constraints on the version
      that is included in the distro, and, using "pip install avocado==88.1"
      on a venv that includes system packages will result in an error:
      
         avocado-framework-plugin-varianter-yaml-to-mux 98.0 requires avocado-framework==98.0, but you have avocado-framework 88.1 which is incompatible.
         avocado-framework-plugin-result-html 98.0 requires avocado-framework==98.0, but you have avocado-framework 88.1 which is incompatible.
      
      But at the same time, if the venv does not include a system distribution
      of avocado then we can install a known-good version and stick to LTS
      releases.
      
      Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1663
      
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c03f57fd
    • Paolo Bonzini's avatar
      configure: switch to ensuregroup · c853c4d0
      Paolo Bonzini authored
      
      Using the new ensuregroup command, the desired versions of meson and
      sphinx can be placed in pythondeps.toml rather than configure.
      
      The meson.install entry in pythondeps.toml matches the version that is
      found in python/wheels.  This ensures that mkvenv.py uses the bundled
      wheel even if PyPI is enabled; thus not introducing warnings or errors
      from versions that are more recent than the one used in CI.
      
      The sphinx entries match what is shipped in Fedora 38.  It's the
      last release that has support for older versions of Python (sphinx 6.0
      requires Python 3.8) and especially docutils (of which sphinx 6.0 requires
      version 0.18).  This is important because Ubuntu 20.04 has docutils 0.14
      and Debian 11 has docutils 0.16.
      
      "mkvenv.py ensure" is only used to bootstrap tomli.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c853c4d0
    • Paolo Bonzini's avatar
      python: mkvenv: add ensuregroup command · 71ed611c
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      71ed611c
Loading