Skip to content
Snippets Groups Projects
  1. Oct 12, 2023
  2. Oct 11, 2023
  3. Sep 20, 2023
  4. Aug 30, 2023
    • Thomas Huth's avatar
      .gitlab-ci.d/cirrus.yml: Update FreeBSD to v13.2 · e05a4bea
      Thomas Huth authored
      
      The FreeBSD CI job started to fail due to linking problems ... time
      to update to the latest version to get this fixed.
      
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Message-Id: <20230823144533.230477-1-thuth@redhat.com>
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <20230829161528.2707696-6-alex.bennee@linaro.org>
      e05a4bea
    • Daniel P. Berrangé's avatar
      gitlab: enable ccache for many build jobs · 2f7350cd
      Daniel P. Berrangé authored
      
      The `ccache` tool can be very effective at reducing compilation times
      when re-running pipelines with only minor changes each time. For example
      a fresh 'build-system-fedora' job will typically take 20 minutes on the
      gitlab.com shared runners. With ccache this is reduced to as little as
      6 minutes.
      
      Normally meson would auto-detect existance of ccache in $PATH and use
      it automatically, but the way we wrap meson from configure breaks this,
      as we're passing in an config file with explicitly set compiler paths.
      Thus we need to add $CCACHE_WRAPPERSPATH to the front of $PATH. For
      unknown reasons if doing this in msys though, gcc becomes unable to
      invoke 'cc1' when run from meson. For msys we thus set CC='ccache gcc'
      before invoking 'configure' instead.
      
      A second problem with msys is that cache misses are incredibly
      expensive, so enabling ccache massively slows down the build when
      the cache isn't well populated. This is suspected to be a result of
      the cost of spawning processes under the msys architecture. To deal
      with this we set CCACHE_DEPEND=1 which enables ccache's 'depend_only'
      strategy. This avoids extra spawning of the pre-processor during
      cache misses, with the downside that is it less likely ccache will
      find a cache hit after semantically benign compiler flag changes.
      This is the lesser of two evils, as otherwise we can't use ccache
      at all under msys and remain inside the job time limit.
      
      If people are finding ccache to hurt their pipelines, it can be
      disabled by setting the 'CCACHE_DISABLE=1' env variable against
      their gitlab fork CI settings.
      
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Message-Id: <20230804111054.281802-2-berrange@redhat.com>
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <20230829161528.2707696-2-alex.bennee@linaro.org>
      2f7350cd
  5. Aug 28, 2023
    • Paolo Bonzini's avatar
      tests/docker: add python3-tomli dependency to containers · 7ace2193
      Paolo Bonzini authored
      
      Instead of having CI pick tomli from the vendored wheel at configure
      time, place it in the containers.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7ace2193
    • 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
  6. Aug 04, 2023
  7. Aug 03, 2023
  8. Jul 03, 2023
  9. Jun 29, 2023
  10. Jun 26, 2023
  11. Jun 07, 2023
  12. Jun 06, 2023
    • Paolo Bonzini's avatar
      build: remove git submodule handling from main makefile · 1f468152
      Paolo Bonzini authored
      
      The only remaining user of submodules at build time is roms/SLOF,
      which is handled in pc-bios/s390-ccw/Makefile.  Remove the relevant
      code from the main makefile.
      
      Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1f468152
    • Paolo Bonzini's avatar
      configure: move SLOF submodule handling to pc-bios/s390-ccw · b11f9bd9
      Paolo Bonzini authored
      
      Move the handling of the roms/SLOF submodule out of the main Makefile,
      since we are going to remove submodules from the build process of QEMU.
      
      Acked-by: default avatarThomas Huth <thuth@redhat.com>
      Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b11f9bd9
    • Paolo Bonzini's avatar
      meson: subprojects: replace submodules with wrap files · 2019cabf
      Paolo Bonzini authored
      
      Compared to submodules, .wrap files have several advantages:
      
      * option parsing and downloading is delegated to meson
      
      * the commit is stored in a text file instead of a magic entry in the
        git tree object
      
      * we could stop shipping external dependencies that are only used as a
        fallback, but not break compilation on platforms that lack them.
        For example it may make sense to download dtc at build time, controlled
        by --enable-download, even when building from a tarball.  Right now,
        this patch does the opposite: make-release treats dtc like libvfio-user
        (which is not stable API and therefore hasn't found its way into any
        distros) and keycodemap (which is a copylib, for better or worse).
      
      dependency() can fall back to a wrap automatically.  However, this
      is only possible for libraries that come with a .pc file, and this
      is not very common for libfdt even though the upstream project in
      principle provides it; it also removes the control that we provide with
      --enable-fdt={system,internal}.  Therefore, the logic to pick system
      vs. internal libfdt is left untouched.
      
      --enable-fdt=git is removed; it was already a synonym for
      --enable-fdt=internal.
      
      Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      2019cabf
    • Paolo Bonzini's avatar
      tests: Use separate virtual environment for avocado · e8e4298f
      Paolo Bonzini authored
      
      This reverts commits eea2d141 ("Makefile: remove $(TESTS_PYTHON)",
      2023-05-26) and 9c6692db ("tests: Use configure-provided pyvenv for
      tests", 2023-05-18).
      
      Right now, there is a conflict between wanting a ">=" constraint when
      using a distro-provided package and wanting a "==" constraint when
      installing Avocado from PyPI; this would provide the best of both worlds
      in terms of resiliency for both distros that have required packages and
      distros that don't.
      
      The conflict is visible also for meson, where we would like to install
      the latest 0.63.x version but also accept a distro 1.1.x version.
      But it is worse for avocado, for two reasons:
      
      1) we cannot use an "==" constraint to install avocado if the venv
      includes a system avocado.  The distro will package plugins that 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 this error:
      
         ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
         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.
         make[1]: Leaving directory '/home/berrange/src/virt/qemu/build'
      
      2) we cannot use ">=" either if the venv does _not_ include a system
      avocado, because that would result in the installation of v101.0 which
      is the one we've just reverted.
      
      So the idea is to encode the dependencies as an (acceptable, locked)
      tuple, like this hypothetical TOML that would be committed inside
      python/ and used by mkvenv.py:
      
        [meson]
        meson = { minimum = "0.63.0", install = "0.63.3", canary = "meson" }
      
        [docs]
        # 6.0 drops support for Python 3.7
        sphinx = { minimum = "1.6", install = "<6.0", canary = "sphinx-build" }
        sphinx_rtd_theme = { minimum = "0.5" }
      
        [avocado]
        avocado-framework = { minimum = "88.1", install = "88.1", canary = "avocado" }
      
      Once this is implemented, it would also be possible to install avocado in
      pyvenv/ using "mkvenv.py ensure", thus using the distro package on Fedora
      and CentOS Stream (the only distros where it's available).  But until
      this is implemented, keep avocado in a separate venv.  There is still the
      benefit of using a single python for meson custom_targets and for sphinx.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      e8e4298f
  13. Jun 05, 2023
  14. May 31, 2023
  15. May 24, 2023
Loading