Skip to content
Snippets Groups Projects
  1. Oct 30, 2023
  2. Sep 07, 2023
  3. Jul 03, 2023
  4. Jun 26, 2023
    • Paolo Bonzini's avatar
      build: further refine build.ninja rules · 6c5f893d
      Paolo Bonzini authored
      
      In commit b0fcc6fc ("build: rebuild build.ninja using
      "meson setup --reconfigure"", 2023-05-19) I changed the build.ninja
      rule in the Makefile to use "meson setup" so that the Makefile would
      pick up a changed path to the meson binary.
      
      However, there was a reason why build.ninja was rebuilt using $(NINJA)
      itself.  Namely, ninja has its own cache of file modification times,
      and if it does not know about the modification that was done outside
      its control, it will *also* try to regenerate build.ninja.  This can be
      simply by running "make" on a fresh tree immediately after "configure";
      that will trigger an unnecessary meson run.
      
      So, apply a refinement to the rule in order to cover both cases:
      
      - track the meson binary that was used (and that is embedded in
        build.ninja's reconfigure rules); to do this, write build.ninja.stamp
        right after executing meson successfully
      
      - if it changed, force usage of "$(MESON) setup --reconfigure" to
        update the path in the reconfigure rule
      
      - if it didn't change, use "$(NINJA) build.ninja" just like before
        commit b0fcc6fc.
      
      Reported-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Tested-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      6c5f893d
  5. Jun 06, 2023
  6. May 19, 2023
  7. May 18, 2023
    • Steve Sistare's avatar
      make: clean after distclean deletes source files · 6fd87e74
      Steve Sistare authored
      
      Run 'make distclean' in a tree, and GNUmakefile is removed.
      But, GNUmakefile is where we change directory to build.
      Run 'make distclean' or 'make clean' again, and Makefile applies
      the clean actions, such as this one, at the top level of the tree.
      For example, it removes the .d source files in 'meson/test cases/d/*/*.d'.
      
          find . \( -name '*.so' -o -name '*.dll' -o \
                -name '*.[oda]' -o -name '*.gcno' \) -type f \
              ! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-aarch64.a \
              ! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
              -exec rm {} +
      
      To fix, remove clean and distclean from UNCHECKED_GOALS, so those targets
      are "checked", meaning that configure must be run before make.  However,
      the check action does not trigger, because clean does not depend on
      config-host.mak, so change the action to simply throw an error.
      
      Signed-off-by: default avatarSteve Sistare <steven.sistare@oracle.com>
      Message-Id: <1681909700-94095-1-git-send-email-steven.sistare@oracle.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      6fd87e74
  8. Mar 01, 2023
  9. Jan 18, 2023
    • Peter Maydell's avatar
      Makefile: allow 'make uninstall' · 6e6761d8
      Peter Maydell authored
      
      Meson supports an "uninstall", so we can easily allow it to work by
      not suppressing the forwarding of it from Make to meson.
      
      We originally suppressed this because Meson's 'uninstall' has a hole
      in it: it will remove everything that is installed by a mechanism
      meson knows about, but not things installed by "custom install
      scripts", and there is no "custom uninstall script" mechanism.
      
      For QEMU, though, the only thing that was being installed by a custom
      install script was the LC_MESSAGES files handled by Meson's i18n
      module, and that code was fixed in Meson commit 487d45c1e5bfff0fbdb4,
      which is present in Meson 0.60.0 and later.  Since we already require
      a Meson version newer than that, we're now safe to enable
      'uninstall', as it will now correctly uninstall everything that was
      installed.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Resolves: https://gitlab.com/qemu-project/qemu/-/issues/109
      
      
      Message-Id: <20230110151250.24434-1-peter.maydell@linaro.org>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      6e6761d8
  10. Oct 06, 2022
  11. Sep 19, 2022
  12. Jul 13, 2022
    • Akihiko Odaki's avatar
      cutils: Introduce bundle mechanism · cf60ccc3
      Akihiko Odaki authored
      
      Developers often run QEMU without installing. The bundle mechanism
      allows to look up files which should be present in installation even in
      such a situation.
      
      It is a general mechanism and can find any files in the installation
      tree. The build tree will have a new directory, qemu-bundle, to
      represent what files the installation tree would have for reference by
      the executables.
      
      Note that it abandons compatibility with Windows older than 8. The
      extended support for the prior version, 7 ended more than 2 years ago,
      and it is unlikely that someone would like to run the latest QEMU on
      such an old system.
      
      Signed-off-by: default avatarAkihiko Odaki <akihiko.odaki@gmail.com>
      Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20220624145039.49929-3-akihiko.odaki@gmail.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      cf60ccc3
  13. Jul 08, 2022
  14. Jun 15, 2022
  15. Jun 01, 2022
  16. May 14, 2022
  17. Feb 09, 2022
  18. Jan 18, 2022
    • Daniel P. Berrangé's avatar
      tests: integrate lcitool for generating build env manifests · 4ebb040f
      Daniel P. Berrangé authored
      This introduces
      
        https://gitlab.com/libvirt/libvirt-ci
      
      
      
      as a git submodule at tests/lcitool/libvirt-ci
      
      The 'lcitool' program within this submodule will be used to
      automatically generate build environment manifests from a definition
      of requirements in tests/lcitool/projects/qemu.yml
      
      It will ultimately be capable of generating
      
       - Dockerfiles
       - Package lists for installation in VMs
       - Variables for configuring Cirrus CI environments
      
      When a new build pre-requisite is needed for QEMU, if this package
      is not currently known to libvirt-ci, it must first be added to the
      'mappings.yml' file in the above git repo.
      
      Then the submodule can be updated and the build pre-requisite added
      to the tests/lcitool/projects/qemu.yml file. Now all the build env
      manifests can be re-generated using  'make lcitool-refresh'
      
      This ensures that when a new build pre-requisite is introduced, it
      is added to all the different OS containers, VMs and Cirrus CI
      environments consistently.
      
      It also facilitates the addition of containers targetting new distros
      or updating existing containers to new versions of the same distro,
      where packages might have been renamed.
      
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <20211215141949.3512719-8-berrange@redhat.com>
      Message-Id: <20220105135009.1584676-8-alex.bennee@linaro.org>
      4ebb040f
  19. Jan 12, 2022
  20. Dec 23, 2021
    • Paolo Bonzini's avatar
      build: use "meson test" as the test harness · 3d2f73ef
      Paolo Bonzini authored
      
      "meson test" starting with version 0.57 is just as capable and easy to
      use as QEMU's own TAP driver.  All existing options for "make check"
      work.  The only required code change involves how to mark "slow" tests;
      they need to belong to an additional "slow" suite.
      
      The rules for .tap output are replaced by JUnit XML; GitLab is able
      to parse that output and present it in the CI pipeline report.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      3d2f73ef
  21. Nov 02, 2021
    • Peter Xu's avatar
      Makefile: Fix cscope issues on MacOS and soft links · af7d106e
      Peter Xu authored
      
      This patch fixes actually two issues with 'make cscope'.
      
      Firstly, it fixes the command for MacOS "find" command as MacOS will append the
      full path of "$(SRC_PATH)/" before each found entry, then after the final "./"
      replacement trick it'll look like (e.g., "qapi/qmp-dispatch.c"):
      
        /qapi/qmp-dispatch.c
      
      Which will point to the root directory instead.
      
      Fix it by simply remove the "/" in "$(SRC_PATH)/" of "find-src-path", then
      it'll work for at least both Linux and MacOS.
      
      The other OS-independent issue is to start proactively ignoring soft links when
      generating tags, otherwise by default on master branch we'll see this error
      when "make cscope":
      
      cscope: cannot find file subprojects/libvhost-user/include/atomic.h
      
      This patch should fix the two issues altogether.
      
      Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
      Message-Id: <20210804132328.41353-3-peterx@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      af7d106e
    • Peter Xu's avatar
      Makefile: Fix gtags generation · b8c9ed15
      Peter Xu authored
      
      We should use "-print" or otherwise all "-prone" is ignored.
      
      Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
      Message-Id: <20210804132328.41353-2-peterx@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b8c9ed15
  22. Oct 14, 2021
    • Paolo Bonzini's avatar
      configure: prepare for auto-generated option parsing · 61d63097
      Paolo Bonzini authored
      
      Prepare the configure script and Makefile for automatically generated
      help and parsing.
      
      Because we need to run the script to generate the full help, we
      cannot rely on the user supplying the path to a Python interpreter
      with --python; therefore, the introspection output is parsed into
      shell functions and stored in scripts/.  The converter is written
      in Python as standard for QEMU, and this commit contains a stub.
      
      Tested-by: default avatarThomas Huth <thuth@redhat.com>
      Message-Id: <20211007130829.632254-18-pbonzini@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      61d63097
  23. Jul 29, 2021
    • Alexey Neyman's avatar
      Makefile: ignore long options · 14833e24
      Alexey Neyman authored
      
      When searching for options like -n in MAKEFLAGS, current code may result
      in a false positive match when make is invoked with long options like
      --no-print-directory. This has been observed with certain versions of
      host make (e.g. 3.82) while building the Qemu package in buildroot.
      
      Filter out such long options before searching for one-character options.
      
      Signed-off-by: default avatarAlexey Neyman <stilor@att.net>
      Message-Id: <20210722020846.3678817-1-stilor@att.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      14833e24
  24. Jul 05, 2021
  25. May 26, 2021
  26. May 14, 2021
    • Thomas Huth's avatar
      configure: Poison all current target-specific #defines · e0447a83
      Thomas Huth authored
      
      We are generating a lot of target-specific defines in the *-config-devices.h
      and *-config-target.h files. Using them in common code is wrong and leads
      to very subtle bugs since a "#ifdef CONFIG_SOMETHING" is not working there
      as expected. To avoid these issues, we are already poisoning many of the
      macros in include/exec/poison.h - but it's cumbersome to maintain this
      list manually. Thus let's generate an additional list of poisoned macros
      automatically from the current config switches - this should give us a
      much better test coverage via the different CI configurations.
      
      Note that CONFIG_TCG (which is also defined in config-host.h) and
      CONFIG_USER_ONLY are special, so we have to filter these out.
      
      Message-Id: <20210414112004.943383-5-thuth@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      e0447a83
  27. Mar 06, 2021
  28. Feb 08, 2021
  29. Jan 29, 2021
    • Dan Streetman's avatar
      configure: replace --enable/disable-git-update with --with-git-submodules · 7d7dbf9d
      Dan Streetman authored
      
      Replace the --enable-git-update and --disable-git-update configure params
      with the param --with-git-submodules=(update|validate|ignore) to
      allow 3 options for building from a git repo.
      
      This is needed because downstream packagers, e.g. Debian, Ubuntu, etc,
      also keep the source code in git, but do not want to enable the
      'git_update' mode; with the current code, that's not possible even
      if the downstream package specifies --disable-git-update.
      
      The previous parameters are deprecated but still available; the
      --enable-git-update parameter maps to --with-git-submodules=update and
      --disable-git-update parameter maps to --with-git-submodules=validate.
      
      The configure script behavior is slightly modified, where previously
      the dtc, capstone, and slirp submodules were not validated when
      --disable-git-update was specified (but were updated with git-update
      enabled), now they are validated when using --with-git-submodules=validate
      and are only ignored when using --with-git-submodules=ignore.
      
      Signed-off-by: default avatarDan Streetman <ddstreet@canonical.com>
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      7d7dbf9d
  30. Jan 27, 2021
    • Vladimir Sementsov-Ogievskiy's avatar
      iotests: rewrite check into python · f203080b
      Vladimir Sementsov-Ogievskiy authored
      
      Just use classes introduced in previous three commits. Behavior
      difference is described in these three commits.
      
      Drop group file, as it becomes unused.
      
      Drop common.env: now check is in python, and for tests we use same
      python interpreter that runs the check itself. Use build environment
      PYTHON in check-block instead, to keep "make check" use the same
      python.
      
      Checking for virtio-blk moved to iotests.py, as it actually iotests.py
      dependency. Actually not all python iotests depend on it, so in future
      it may be refactored to checked only when really needed.
      
      Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20210125185056.129513-6-vsementsov@virtuozzo.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      f203080b
  31. Jan 23, 2021
  32. Jan 18, 2021
Loading