mbox

[PULL,v3,00/18] Rust initial PoC + meson changes for 2024-10-07

Message ID 20241011153227.81770-1-pbonzini@redhat.com
State New
Headers show

Pull-request

https://gitlab.com/bonzini/qemu.git tags/for-upstream

Message

Paolo Bonzini Oct. 11, 2024, 3:32 p.m. UTC
The following changes since commit b5ab62b3c0050612c7f9b0b4baeb44ebab42775a:

  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2024-10-04 19:28:37 +0100)

are available in the Git repository at:

  https://gitlab.com/bonzini/qemu.git tags/for-upstream

for you to fetch changes up to 381d2c36e1242f849a55f4622e50b9a69cb92842:

  docs: use consistent markup for footnotes (2024-10-11 13:08:32 +0200)

v2->v3: new patches
- scripts/archive-source: find directory name for subprojects
- docs: fix invalid footnote syntax
- docs: avoid footnotes consisting of just URLs
- docs: use consistent markup for footnotes

----------------------------------------------------------------
* first commit for Rust support
* add CI job using Fedora + Rust nightly
* fix detection of ATOMIC128 on x86_64
* fix compilation with Sphinx 8.1.0

----------------------------------------------------------------
Manos Pitsidianakis (6):
      build-sys: Add rust feature option
      rust: add bindgen step as a meson dependency
      .gitattributes: add Rust diff and merge attributes
      meson.build: add HAVE_GLIB_WITH_ALIGNED_ALLOC flag
      rust: add crate to expose bindings and interfaces
      rust: add utility procedural macro crate

Paolo Bonzini (11):
      Require meson version 1.5.0
      configure, meson: detect Rust toolchain
      scripts/archive-source: find directory name for subprojects
      rust: add PL011 device model
      meson: define qemu_isa_flags
      meson: ensure -mcx16 is passed when detecting ATOMIC128
      dockerfiles: add a Dockerfile using a nightly Rust toolchain
      gitlab-ci: add Rust-enabled CI job
      docs: fix invalid footnote syntax
      docs: avoid footnotes consisting of just URLs
      docs: use consistent markup for footnotes

Pierrick Bouvier (1):
      meson: fix machine option for x86_version

 MAINTAINERS                                        |  21 +
 docs/devel/atomics.rst                             |   6 +-
 docs/devel/build-system.rst                        |   6 +-
 docs/devel/loads-stores.rst                        |   2 +-
 docs/devel/maintainers.rst                         |   4 +-
 docs/devel/migration/mapped-ram.rst                |   4 +-
 docs/devel/testing/acpi-bits.rst                   |  26 +-
 docs/specs/fw_cfg.rst                              |   4 +-
 docs/specs/rapl-msr.rst                            |  25 +-
 configure                                          | 170 +++++-
 meson.build                                        | 158 +++++-
 rust/wrapper.h                                     |  47 ++
 .gitattributes                                     |   3 +
 .gitlab-ci.d/buildtest.yml                         |  13 +
 .gitlab-ci.d/containers.yml                        |   6 +
 Kconfig                                            |   1 +
 Kconfig.host                                       |   3 +
 hw/arm/Kconfig                                     |  30 +-
 meson_options.txt                                  |   3 +
 python/scripts/vendor.py                           |   4 +-
 python/wheels/meson-1.2.3-py3-none-any.whl         | Bin 964928 -> 0 bytes
 python/wheels/meson-1.5.0-py3-none-any.whl         | Bin 0 -> 959846 bytes
 pythondeps.toml                                    |   2 +-
 rust/.gitignore                                    |   3 +
 rust/Kconfig                                       |   1 +
 rust/hw/Kconfig                                    |   2 +
 rust/hw/char/Kconfig                               |   3 +
 rust/hw/char/meson.build                           |   1 +
 rust/hw/char/pl011/.gitignore                      |   2 +
 rust/hw/char/pl011/Cargo.lock                      | 134 +++++
 rust/hw/char/pl011/Cargo.toml                      |  26 +
 rust/hw/char/pl011/README.md                       |  31 ++
 rust/hw/char/pl011/meson.build                     |  26 +
 rust/hw/char/pl011/src/device.rs                   | 599 +++++++++++++++++++++
 rust/hw/char/pl011/src/device_class.rs             |  70 +++
 rust/hw/char/pl011/src/lib.rs                      | 586 ++++++++++++++++++++
 rust/hw/char/pl011/src/memory_ops.rs               |  59 ++
 rust/hw/meson.build                                |   1 +
 rust/meson.build                                   |   4 +
 rust/qemu-api-macros/Cargo.lock                    |  47 ++
 rust/qemu-api-macros/Cargo.toml                    |  25 +
 rust/qemu-api-macros/README.md                     |   1 +
 rust/qemu-api-macros/meson.build                   |  25 +
 rust/qemu-api-macros/src/lib.rs                    |  43 ++
 rust/qemu-api/.gitignore                           |   2 +
 rust/qemu-api/Cargo.lock                           |   7 +
 rust/qemu-api/Cargo.toml                           |  26 +
 rust/qemu-api/README.md                            |  17 +
 rust/qemu-api/build.rs                             |  14 +
 rust/qemu-api/meson.build                          |  24 +
 rust/qemu-api/src/definitions.rs                   |  97 ++++
 rust/qemu-api/src/device_class.rs                  | 128 +++++
 rust/qemu-api/src/lib.rs                           | 166 ++++++
 rust/qemu-api/src/tests.rs                         |  49 ++
 rust/rustfmt.toml                                  |   7 +
 scripts/archive-source.sh                          |  29 +-
 scripts/make-release                               |   6 +-
 scripts/meson-buildoptions.sh                      |   3 +
 scripts/rust/rust_root_crate.sh                    |  13 +
 scripts/rust/rustc_args.py                         |  84 +++
 subprojects/.gitignore                             |  11 +
 subprojects/arbitrary-int-1-rs.wrap                |   7 +
 subprojects/bilge-0.2-rs.wrap                      |   7 +
 subprojects/bilge-impl-0.2-rs.wrap                 |   7 +
 subprojects/either-1-rs.wrap                       |   7 +
 subprojects/itertools-0.11-rs.wrap                 |   7 +
 .../packagefiles/arbitrary-int-1-rs/meson.build    |  19 +
 subprojects/packagefiles/bilge-0.2-rs/meson.build  |  29 +
 .../packagefiles/bilge-impl-0.2-rs/meson.build     |  45 ++
 subprojects/packagefiles/either-1-rs/meson.build   |  24 +
 .../packagefiles/itertools-0.11-rs/meson.build     |  30 ++
 .../packagefiles/proc-macro-error-1-rs/meson.build |  40 ++
 .../proc-macro-error-attr-1-rs/meson.build         |  32 ++
 .../packagefiles/proc-macro2-1-rs/meson.build      |  31 ++
 subprojects/packagefiles/quote-1-rs/meson.build    |  29 +
 subprojects/packagefiles/syn-2-rs/meson.build      |  40 ++
 .../packagefiles/unicode-ident-1-rs/meson.build    |  20 +
 subprojects/proc-macro-error-1-rs.wrap             |   7 +
 subprojects/proc-macro-error-attr-1-rs.wrap        |   7 +
 subprojects/proc-macro2-1-rs.wrap                  |   7 +
 subprojects/quote-1-rs.wrap                        |   7 +
 subprojects/syn-2-rs.wrap                          |   7 +
 subprojects/unicode-ident-1-rs.wrap                |   7 +
 subprojects/unicode-ident-1-rs/meson.build         |  20 +
 .../docker/dockerfiles/fedora-rust-nightly.docker  | 173 ++++++
 tests/docker/dockerfiles/opensuse-leap.docker      |   2 +-
 tests/lcitool/mappings.yml                         |   2 +-
 tests/lcitool/refresh                              |  26 +
 88 files changed, 3474 insertions(+), 75 deletions(-)
 create mode 100644 rust/wrapper.h
 delete mode 100644 python/wheels/meson-1.2.3-py3-none-any.whl
 create mode 100644 python/wheels/meson-1.5.0-py3-none-any.whl
 create mode 100644 rust/.gitignore
 create mode 100644 rust/Kconfig
 create mode 100644 rust/hw/Kconfig
 create mode 100644 rust/hw/char/Kconfig
 create mode 100644 rust/hw/char/meson.build
 create mode 100644 rust/hw/char/pl011/.gitignore
 create mode 100644 rust/hw/char/pl011/Cargo.lock
 create mode 100644 rust/hw/char/pl011/Cargo.toml
 create mode 100644 rust/hw/char/pl011/README.md
 create mode 100644 rust/hw/char/pl011/meson.build
 create mode 100644 rust/hw/char/pl011/src/device.rs
 create mode 100644 rust/hw/char/pl011/src/device_class.rs
 create mode 100644 rust/hw/char/pl011/src/lib.rs
 create mode 100644 rust/hw/char/pl011/src/memory_ops.rs
 create mode 100644 rust/hw/meson.build
 create mode 100644 rust/meson.build
 create mode 100644 rust/qemu-api-macros/Cargo.lock
 create mode 100644 rust/qemu-api-macros/Cargo.toml
 create mode 100644 rust/qemu-api-macros/README.md
 create mode 100644 rust/qemu-api-macros/meson.build
 create mode 100644 rust/qemu-api-macros/src/lib.rs
 create mode 100644 rust/qemu-api/.gitignore
 create mode 100644 rust/qemu-api/Cargo.lock
 create mode 100644 rust/qemu-api/Cargo.toml
 create mode 100644 rust/qemu-api/README.md
 create mode 100644 rust/qemu-api/build.rs
 create mode 100644 rust/qemu-api/meson.build
 create mode 100644 rust/qemu-api/src/definitions.rs
 create mode 100644 rust/qemu-api/src/device_class.rs
 create mode 100644 rust/qemu-api/src/lib.rs
 create mode 100644 rust/qemu-api/src/tests.rs
 create mode 100644 rust/rustfmt.toml
 create mode 100755 scripts/rust/rust_root_crate.sh
 create mode 100644 scripts/rust/rustc_args.py
 create mode 100644 subprojects/arbitrary-int-1-rs.wrap
 create mode 100644 subprojects/bilge-0.2-rs.wrap
 create mode 100644 subprojects/bilge-impl-0.2-rs.wrap
 create mode 100644 subprojects/either-1-rs.wrap
 create mode 100644 subprojects/itertools-0.11-rs.wrap
 create mode 100644 subprojects/packagefiles/arbitrary-int-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/bilge-0.2-rs/meson.build
 create mode 100644 subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
 create mode 100644 subprojects/packagefiles/either-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/itertools-0.11-rs/meson.build
 create mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/quote-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/syn-2-rs/meson.build
 create mode 100644 subprojects/packagefiles/unicode-ident-1-rs/meson.build
 create mode 100644 subprojects/proc-macro-error-1-rs.wrap
 create mode 100644 subprojects/proc-macro-error-attr-1-rs.wrap
 create mode 100644 subprojects/proc-macro2-1-rs.wrap
 create mode 100644 subprojects/quote-1-rs.wrap
 create mode 100644 subprojects/syn-2-rs.wrap
 create mode 100644 subprojects/unicode-ident-1-rs.wrap
 create mode 100644 subprojects/unicode-ident-1-rs/meson.build
 create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker

Comments

Peter Maydell Oct. 12, 2024, 10:54 a.m. UTC | #1
On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit b5ab62b3c0050612c7f9b0b4baeb44ebab42775a:
>
>   Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2024-10-04 19:28:37 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 381d2c36e1242f849a55f4622e50b9a69cb92842:
>
>   docs: use consistent markup for footnotes (2024-10-11 13:08:32 +0200)
>
> v2->v3: new patches
> - scripts/archive-source: find directory name for subprojects
> - docs: fix invalid footnote syntax
> - docs: avoid footnotes consisting of just URLs
> - docs: use consistent markup for footnotes
>
> ----------------------------------------------------------------
> * first commit for Rust support
> * add CI job using Fedora + Rust nightly
> * fix detection of ATOMIC128 on x86_64
> * fix compilation with Sphinx 8.1.0
>

Hi; 'make vm-build-openbsd' seems to still fail. It looks
like the wrap file subprojects/unicode-ident-1-rs.wrap says
"directory = unicode-ident-1.0.12" and the script correctly
parses that out of the file, but the directory is actually
named "unicode-ident-1-rs" (differently from the other rust ones),
so we don't find it.


make: Entering directory '/home/peter.maydell/qemu-openbsd/build'
/home/peter.maydell/qemu-openbsd/build/pyvenv/bin/meson introspect
--targets --tests --benchmarks |
/home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B
scripts/mtest2make.py > Makefile.mtest
{ \
  echo 'ninja-targets = \'; \
  /usr/bin/ninja -t targets all | sed 's/:.*//; $!s/$/ \\/'; \
  echo 'build-files = \'; \
  /usr/bin/ninja -t query build.ninja | sed -n '1,/^  input:/d; /^
outputs:/q; s/$/ \\/p'; \
} > Makefile.ninja.tmp && mv Makefile.ninja.tmp Makefile.ninja
/home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B
/home/peter.maydell/qemu-openbsd/tests/vm/openbsd  --debug
--genisoimage /usr/bin/genisoimage    --source-path
/home/peter.maydell/qemu-openbsd --image
"/home/peter.maydell/.cache/qemu-vm/images/openbsd.img"  --build-image
/home/peter.maydell/.cache/qemu-vm/images/openbsd.img
Image file exists, skipping build:
/home/peter.maydell/.cache/qemu-vm/images/openbsd.img
Use --force option to overwrite
/home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B
/home/peter.maydell/qemu-openbsd/tests/vm/openbsd  --debug  --jobs 8
--verbose    --image
"/home/peter.maydell/.cache/qemu-vm/images/openbsd.img"  --snapshot
--build-qemu /home/peter.maydell/qemu-openbsd --
DEBUG:root:Creating archive
/home/peter.maydell/qemu-openbsd/build/vm-test-w7gx56ds.tmp/data-993a1.tar
for src_dir dir: /home/peter.maydell/qemu-openbsd
Download keycodemapdb...
  -> Already downloaded
Download libvfio-user...
  -> Already downloaded
Download berkeley-softfloat-3...
  -> Already downloaded
Download berkeley-testfloat-3...
  -> Already downloaded
Download arbitrary-int-1-rs...
  -> Already downloaded
Download bilge-0.2-rs...
  -> Already downloaded
Download bilge-impl-0.2-rs...
  -> Already downloaded
Download either-1-rs...
  -> Already downloaded
Download itertools-0.11-rs...
  -> Already downloaded
Download proc-macro2-1-rs...
  -> Already downloaded
Download proc-macro-error-1-rs...
  -> Already downloaded
Download proc-macro-error-attr-1-rs...
  -> Already downloaded
Download quote-1-rs...
  -> Already downloaded
Download syn-2-rs...
  -> Already downloaded
Download unicode-ident-1-rs...
  -> Already downloaded
tar: subprojects/unicode-ident-1.0.12: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
failed to append subproject unicode-ident-1-rs to
/home/peter.maydell/qemu-openbsd/build/vm-test-w7gx56ds.tmp/data-993a1.tar
Failed to prepare guest environment
Traceback (most recent call last):
  File "/home/peter.maydell/qemu-openbsd/tests/vm/basevm.py", line 654, in main
    vm.add_source_dir(args.build_qemu)
  File "/home/peter.maydell/qemu-openbsd/tests/vm/basevm.py", line
277, in add_source_dir
    subprocess.check_call(["./scripts/archive-source.sh", tarfile],
  File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command
'['./scripts/archive-source.sh',
'/home/peter.maydell/qemu-openbsd/build/vm-test-w7gx56ds.tmp/data-993a1.tar']'
returned non-zero exit status 1.
make: *** [/home/peter.maydell/qemu-openbsd/tests/vm/Makefile.include:110:
vm-build-openbsd] Error 2
make: Leaving directory '/home/peter.maydell/qemu-openbsd/build'

-- PMM
Peter Maydell Oct. 12, 2024, 2:02 p.m. UTC | #2
On Sat, 12 Oct 2024 at 11:54, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
> >
> > The following changes since commit b5ab62b3c0050612c7f9b0b4baeb44ebab42775a:
> >
> >   Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2024-10-04 19:28:37 +0100)
> >
> > are available in the Git repository at:
> >
> >   https://gitlab.com/bonzini/qemu.git tags/for-upstream
> >
> > for you to fetch changes up to 381d2c36e1242f849a55f4622e50b9a69cb92842:
> >
> >   docs: use consistent markup for footnotes (2024-10-11 13:08:32 +0200)
> >
> > v2->v3: new patches
> > - scripts/archive-source: find directory name for subprojects
> > - docs: fix invalid footnote syntax
> > - docs: avoid footnotes consisting of just URLs
> > - docs: use consistent markup for footnotes
> >
> > ----------------------------------------------------------------
> > * first commit for Rust support
> > * add CI job using Fedora + Rust nightly
> > * fix detection of ATOMIC128 on x86_64
> > * fix compilation with Sphinx 8.1.0
> >
>
> Hi; 'make vm-build-openbsd' seems to still fail. It looks
> like the wrap file subprojects/unicode-ident-1-rs.wrap says
> "directory = unicode-ident-1.0.12" and the script correctly
> parses that out of the file, but the directory is actually
> named "unicode-ident-1-rs" (differently from the other rust ones),
> so we don't find it.
>
>
> make: Entering directory '/home/peter.maydell/qemu-openbsd/build'
> /home/peter.maydell/qemu-openbsd/build/pyvenv/bin/meson introspect
> --targets --tests --benchmarks |
> /home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B
> scripts/mtest2make.py > Makefile.mtest
> { \
>   echo 'ninja-targets = \'; \
>   /usr/bin/ninja -t targets all | sed 's/:.*//; $!s/$/ \\/'; \
>   echo 'build-files = \'; \
>   /usr/bin/ninja -t query build.ninja | sed -n '1,/^  input:/d; /^
> outputs:/q; s/$/ \\/p'; \
> } > Makefile.ninja.tmp && mv Makefile.ninja.tmp Makefile.ninja
> /home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B
> /home/peter.maydell/qemu-openbsd/tests/vm/openbsd  --debug
> --genisoimage /usr/bin/genisoimage    --source-path
> /home/peter.maydell/qemu-openbsd --image
> "/home/peter.maydell/.cache/qemu-vm/images/openbsd.img"  --build-image
> /home/peter.maydell/.cache/qemu-vm/images/openbsd.img
> Image file exists, skipping build:
> /home/peter.maydell/.cache/qemu-vm/images/openbsd.img
> Use --force option to overwrite
> /home/peter.maydell/qemu-openbsd/build/pyvenv/bin/python3 -B
> /home/peter.maydell/qemu-openbsd/tests/vm/openbsd  --debug  --jobs 8
> --verbose    --image
> "/home/peter.maydell/.cache/qemu-vm/images/openbsd.img"  --snapshot
> --build-qemu /home/peter.maydell/qemu-openbsd --
> DEBUG:root:Creating archive
> /home/peter.maydell/qemu-openbsd/build/vm-test-w7gx56ds.tmp/data-993a1.tar
> for src_dir dir: /home/peter.maydell/qemu-openbsd
> Download keycodemapdb...
>   -> Already downloaded
> Download libvfio-user...
>   -> Already downloaded
> Download berkeley-softfloat-3...
>   -> Already downloaded
> Download berkeley-testfloat-3...
>   -> Already downloaded
> Download arbitrary-int-1-rs...
>   -> Already downloaded
> Download bilge-0.2-rs...
>   -> Already downloaded
> Download bilge-impl-0.2-rs...
>   -> Already downloaded
> Download either-1-rs...
>   -> Already downloaded
> Download itertools-0.11-rs...
>   -> Already downloaded
> Download proc-macro2-1-rs...
>   -> Already downloaded
> Download proc-macro-error-1-rs...
>   -> Already downloaded
> Download proc-macro-error-attr-1-rs...
>   -> Already downloaded
> Download quote-1-rs...
>   -> Already downloaded
> Download syn-2-rs...
>   -> Already downloaded
> Download unicode-ident-1-rs...
>   -> Already downloaded
> tar: subprojects/unicode-ident-1.0.12: Cannot stat: No such file or directory
> tar: Exiting with failure status due to previous errors
> failed to append subproject unicode-ident-1-rs to
> /home/peter.maydell/qemu-openbsd/build/vm-test-w7gx56ds.tmp/data-993a1.tar
> Failed to prepare guest environment
> Traceback (most recent call last):
>   File "/home/peter.maydell/qemu-openbsd/tests/vm/basevm.py", line 654, in main
>     vm.add_source_dir(args.build_qemu)
>   File "/home/peter.maydell/qemu-openbsd/tests/vm/basevm.py", line
> 277, in add_source_dir
>     subprocess.check_call(["./scripts/archive-source.sh", tarfile],
>   File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
>     raise CalledProcessError(retcode, cmd)
> subprocess.CalledProcessError: Command
> '['./scripts/archive-source.sh',
> '/home/peter.maydell/qemu-openbsd/build/vm-test-w7gx56ds.tmp/data-993a1.tar']'
> returned non-zero exit status 1.
> make: *** [/home/peter.maydell/qemu-openbsd/tests/vm/Makefile.include:110:
> vm-build-openbsd] Error 2
> make: Leaving directory '/home/peter.maydell/qemu-openbsd/build'

Deleting the whole subprojects/unicode-ident-1-rs/ subdirectory
seems to have fixed this -- it then realised it needed to
do the download and put it in the right place. I guess that was a
leftover from trying to build the previous version of the pullreq.
But it suggests that something is missing in the dependencies,
since it thought it had already downloaded it even though
the directory it needed to put it in wasn't on disk...

thanks
-- PMM
Paolo Bonzini Oct. 13, 2024, 5:39 p.m. UTC | #3
Il sab 12 ott 2024, 16:02 Peter Maydell <peter.maydell@linaro.org> ha
scritto:

> Deleting the whole subprojects/unicode-ident-1-rs/ subdirectory
> seems to have fixed this -- it then realised it needed to
> do the download and put it in the right place. I guess that was a
> leftover from trying to build the previous version of the pullreq.
> But it suggests that something is missing in the dependencies,
> since it thought it had already downloaded it even though
> the directory it needed to put it in wasn't on disk...
>

That seems like it would be a meson bug (whether intentional or not); it's
unlikely that it's an issue here since the wrap files are not particularly
special. I can try to reproduce, but in the meanwhile I didn't understand
if you're going to stage and apply this pull request or not.

Thanks,

Paolo


> thanks
> -- PMM
>
>
Peter Maydell Oct. 14, 2024, 10:12 a.m. UTC | #4
On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit b5ab62b3c0050612c7f9b0b4baeb44ebab42775a:
>
>   Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2024-10-04 19:28:37 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 381d2c36e1242f849a55f4622e50b9a69cb92842:
>
>   docs: use consistent markup for footnotes (2024-10-11 13:08:32 +0200)
>
> v2->v3: new patches
> - scripts/archive-source: find directory name for subprojects
> - docs: fix invalid footnote syntax
> - docs: avoid footnotes consisting of just URLs
> - docs: use consistent markup for footnotes
>
> ----------------------------------------------------------------
> * first commit for Rust support
> * add CI job using Fedora + Rust nightly
> * fix detection of ATOMIC128 on x86_64
> * fix compilation with Sphinx 8.1.0
>



Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/9.2
for any user-visible changes. (In particular, for the Rust stuff
we should be clear in the changelog about its status, including
security status, and what we recommend downstream distro
packagers do at this stage.)

-- PMM
Peter Maydell Oct. 14, 2024, 10:40 a.m. UTC | #5
On Mon, 14 Oct 2024 at 11:12, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
> > v2->v3: new patches
> > - scripts/archive-source: find directory name for subprojects
> > - docs: fix invalid footnote syntax
> > - docs: avoid footnotes consisting of just URLs
> > - docs: use consistent markup for footnotes
> >
> > ----------------------------------------------------------------
> > * first commit for Rust support
> > * add CI job using Fedora + Rust nightly
> > * fix detection of ATOMIC128 on x86_64
> > * fix compilation with Sphinx 8.1.0

> Applied, thanks.

With this applied, I find that on one of my personal
local dev branches an incremental rebuild fails, because
meson complains about not finding a new enough bindgen,
even though I did not --enable-rust. Meson also complains
about a bogus coredata.dat and we end up running meson
three times before it eventually decides the error is fatal.

It looks like meson is incorrectly defaulting to "rust
enabled" rather than "rust disabled" here ?

e104462:jammy:qemu$ make -C build/x86 -j8
make: Entering directory '/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86'
config-host.mak is out-of-date, running configure
python determined to be '/usr/bin/python3'
python version: Python 3.10.12
mkvenv: Creating non-isolated virtual environment at 'pyvenv'
mkvenv: checking for meson>=1.5.0
mkvenv: checking for pycotap>=1.1.0
mkvenv: installing meson==1.5.0, pycotap==1.3.1
mkvenv: checking for sphinx>=3.4.3
mkvenv: checking for sphinx_rtd_theme>=0.5
[0/1] Regenerating build files.
WARNING: Regenerating configuration from scratch.
Reason: Coredata file
'/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/meson-private/coredata.dat'
references functions or classes that don't exist. This probably means
that it was generated with an old version of meson.
The Meson build system
Version: 1.5.0
Source dir: /mnt/nvmedisk/linaro/qemu-from-laptop/qemu
Build dir: /mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86
Build type: native build
Project name: qemu
Project version: 9.1.50
C compiler for the host machine: ccache gcc -m64 (gcc 11.4.0 "gcc
(Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C linker for the host machine: gcc -m64 ld.bfd 2.38
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program scripts/symlink-install-tree.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/symlink-install-tree.py)
Program sh found: YES (/usr/bin/sh)
Program python3 found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3)
Rust compiler for the host machine: rustc -C linker=gcc -C
link-arg=-m64 (rustc 1.81.0)
Rust linker for the host machine: rustc -C linker=gcc -C link-arg=-m64
ld.bfd 2.38
Program iasl found: YES (/usr/bin/iasl)
Program bzip2 found: YES (/usr/bin/bzip2)
[trimmed a bunch of uninteresting meson output]
Executing subproject keycodemapdb

keycodemapdb| Project name: keycodemapdb
keycodemapdb| Project version: undefined
keycodemapdb| Program tools/keymap-gen found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/subprojects/keycodemapdb/tools/keymap-gen)
keycodemapdb| Build targets in project: 272
keycodemapdb| Subproject keycodemapdb finished.

Program scripts/decodetree.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/decodetree.py)
Program ../scripts/modules/module_block.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/block/../scripts/modules/module_block.py)
Program ../scripts/block-coroutine-wrapper.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/block/../scripts/block-coroutine-wrapper.py)
Program scripts/modinfo-collect.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/modinfo-collect.py)
Program scripts/modinfo-generate.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/modinfo-generate.py)
Program nm found: YES
Program scripts/undefsym.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/undefsym.py)
Program scripts/rust/rustc_args.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/rust/rustc_args.py)
Program bindgen found: NO found 0.53.1 but need: '>=0.69.4'
(/home/petmay01/.cargo/bin/bindgen)

../../meson.build:3965:31: ERROR: Program 'bindgen' not found or not executable

A full log can be found at
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/meson-logs/meson-log.txt
FAILED: build.ninja
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/meson
--internal regenerate /mnt/nvmedisk/linaro/qemu-from-laptop/qemu .
ninja: error: rebuilding 'build.ninja': subcommand failed
[0/1] Regenerating build files.
WARNING: Regenerating configuration from scratch.
Reason: Coredata file
'/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/meson-private/coredata.dat'
references functions or classes that don't exist. This probably means
that it was generated with an old version of meson.

The Meson build system
Version: 1.5.0
Source dir: /mnt/nvmedisk/linaro/qemu-from-laptop/qemu
Build dir: /mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86
Build type: native build
Project name: qemu
Project version: 9.1.50
[more stuff trimmed]
Program scripts/undefsym.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/undefsym.py)
Program scripts/rust/rustc_args.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/rust/rustc_args.py)
Program bindgen found: NO found 0.53.1 but need: '>=0.69.4'
(/home/petmay01/.cargo/bin/bindgen)

../../meson.build:3965:31: ERROR: Program 'bindgen' not found or not executable

A full log can be found at
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/meson-logs/meson-log.txt
FAILED: build.ninja
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/meson
--internal regenerate /mnt/nvmedisk/linaro/qemu-from-laptop/qemu .
ninja: error: rebuilding 'build.ninja': subcommand failed
[0/1] Regenerating build files.
WARNING: Regenerating configuration from scratch.
Reason: Coredata file
'/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/meson-private/coredata.dat'
references functions or classes that don't exist. This probably means
that it was generated with an old version of meson.
The Meson build system
Version: 1.5.0
Source dir: /mnt/nvmedisk/linaro/qemu-from-laptop/qemu
Build dir: /mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86
Build type: native build
Project name: qemu
Project version: 9.1.50
[more stuff trimmed]

Program scripts/decodetree.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/decodetree.py)
Program ../scripts/modules/module_block.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/block/../scripts/modules/module_block.py)
Program ../scripts/block-coroutine-wrapper.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/block/../scripts/block-coroutine-wrapper.py)
Program scripts/modinfo-collect.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/modinfo-collect.py)
Program scripts/modinfo-generate.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/modinfo-generate.py)
Program nm found: YES
Program scripts/undefsym.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/undefsym.py)
Program scripts/rust/rustc_args.py found: YES
(/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/python3
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/scripts/rust/rustc_args.py)
Program bindgen found: NO found 0.53.1 but need: '>=0.69.4'
(/home/petmay01/.cargo/bin/bindgen)

../../meson.build:3965:31: ERROR: Program 'bindgen' not found or not executable

A full log can be found at
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/meson-logs/meson-log.txt
ninja: error: rebuilding 'build.ninja': subcommand failed
FAILED: build.ninja
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/x86/pyvenv/bin/meson
--internal regenerate /mnt/nvmedisk/linaro/qemu-from-laptop/qemu .
make: *** [Makefile:168: run-ninja] Error 1

(Side note -- for some reason meson generates colourised
markup on its first two runs but not the third...)

-- PMM
Manos Pitsidianakis Oct. 14, 2024, 10:54 a.m. UTC | #6
On Mon, 14 Oct 2024 13:40, Peter Maydell <peter.maydell@linaro.org> wrote:
>On Mon, 14 Oct 2024 at 11:12, Peter Maydell <peter.maydell@linaro.org> wrote:
>>
>> On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> > v2->v3: new patches
>> > - scripts/archive-source: find directory name for subprojects
>> > - docs: fix invalid footnote syntax
>> > - docs: avoid footnotes consisting of just URLs
>> > - docs: use consistent markup for footnotes
>> >
>> > ----------------------------------------------------------------
>> > * first commit for Rust support
>> > * add CI job using Fedora + Rust nightly
>> > * fix detection of ATOMIC128 on x86_64
>> > * fix compilation with Sphinx 8.1.0
>
>> Applied, thanks.
>
>With this applied, I find that on one of my personal
>local dev branches an incremental rebuild fails, because
>meson complains about not finding a new enough bindgen,
>even though I did not --enable-rust. Meson also complains
>about a bogus coredata.dat and we end up running meson
>three times before it eventually decides the error is fatal.
>
>It looks like meson is incorrectly defaulting to "rust
>enabled" rather than "rust disabled" here ?
>
>[trimmed]

In this pull request, meson_options.txt has:

 +option('rust', type: 'feature', value: 'auto',

So it's not disabled by default. It sounds like meson enables the Rust 
feature because it found the rustc binary.
Paolo Bonzini Oct. 14, 2024, 10:54 a.m. UTC | #7
On Mon, Oct 14, 2024 at 12:40 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Mon, 14 Oct 2024 at 11:12, Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> > On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
> > > v2->v3: new patches
> > > - scripts/archive-source: find directory name for subprojects
> > > - docs: fix invalid footnote syntax
> > > - docs: avoid footnotes consisting of just URLs
> > > - docs: use consistent markup for footnotes
> > >
> > > ----------------------------------------------------------------
> > > * first commit for Rust support
> > > * add CI job using Fedora + Rust nightly
> > > * fix detection of ATOMIC128 on x86_64
> > > * fix compilation with Sphinx 8.1.0
>
> > Applied, thanks.
>
> With this applied, I find that on one of my personal
> local dev branches an incremental rebuild fails, because
> meson complains about not finding a new enough bindgen,
> even though I did not --enable-rust. Meson also complains
> about a bogus coredata.dat and we end up running meson
> three times before it eventually decides the error is fatal.

The report of coredata.dat is just a warning that it's not able to use
any cached data, which is expected when bumping the Meson version.

It's definitely going in the "if have_rust and have_system" path. If
you have the meson-logs/meson-log.txt and meson-private/cmd_line.txt
files, they can help debugging. I'd expect a "rust = disabled" line in
the latter... but yes I see what's happening. The

  test "$rust" != "auto" && meson_option_add "-Drust=$rust"

line is only executed when configure runs meson. Here it doesn't, and
Makefile just tells Meson to reconfigure itself. Meson then gets the
command line options from either coredata.dat (which has everything
cached in Python's pickle format) or cmd_line.txt (slow path when
Meson version is upgraded), but neither knows about the rust option;
and the meson_options.txt default is 'auto'.

To sum up:

1) this is specific to incremental builds

2) this is *not* specific to the Meson version change, the
coredata.dat warning is a red herring

3) this (mangled) patch would fix it:

diff --git a/configure b/configure
index 3e38a91616a..8a9a4153310 100755
--- a/configure
+++ b/configure
@@ -1987,7 +1987,7 @@ if test "$skip_meson" = no; then
   fi

   # QEMU options
-  test "$rust" != "auto" && meson_option_add "-Drust=$rust"
+  test "$rust" != "disabled" && meson_option_add "-Drust=$rust"
   test "$cfi" != false && meson_option_add "-Dcfi=$cfi" "-Db_lto=$cfi"
   test "$docs" != auto && meson_option_add "-Ddocs=$docs"
   test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add
"-Dfuzzing_engine=$LIB_FUZZING_ENGINE"
diff --git a/meson_options.txt b/meson_options.txt
index 2211f291b2d..fc6d5526d58 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -372,5 +372,5 @@ option('hexagon_idef_parser', type : 'boolean',
value : true,
 option('x86_version', type : 'combo', choices : ['0', '1', '2', '3',
'4'], value: '1',
        description: 'tweak required x86_64 architecture version
beyond compiler default')

-option('rust', type: 'feature', value: 'auto',
+option('rust', type: 'feature', value: 'disabled',
description: 'Rust support')

and I can send it shortly; fortunately your tree never got a working
coredata.dat, so it hasn't stored anywhere the rust=auto value.

Paolo


Paolo
Daniel P. Berrangé Oct. 14, 2024, 10:57 a.m. UTC | #8
On Mon, Oct 14, 2024 at 11:40:11AM +0100, Peter Maydell wrote:
> On Mon, 14 Oct 2024 at 11:12, Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> > On Fri, 11 Oct 2024 at 18:13, Paolo Bonzini <pbonzini@redhat.com> wrote:
> > > v2->v3: new patches
> > > - scripts/archive-source: find directory name for subprojects
> > > - docs: fix invalid footnote syntax
> > > - docs: avoid footnotes consisting of just URLs
> > > - docs: use consistent markup for footnotes
> > >
> > > ----------------------------------------------------------------
> > > * first commit for Rust support
> > > * add CI job using Fedora + Rust nightly
> > > * fix detection of ATOMIC128 on x86_64
> > > * fix compilation with Sphinx 8.1.0
> 
> > Applied, thanks.
> 
> With this applied, I find that on one of my personal
> local dev branches an incremental rebuild fails, because
> meson complains about not finding a new enough bindgen,
> even though I did not --enable-rust. Meson also complains
> about a bogus coredata.dat and we end up running meson
> three times before it eventually decides the error is fatal.
> 
> It looks like meson is incorrectly defaulting to "rust
> enabled" rather than "rust disabled" here ?

I've just hit a similar problem, except in my case I'm on Fedora 40
and have new enough rust + bindgen present. It downloaded a bunch of
rust stuff and then failed complaining about the target triple being
unknown:

$ make
make[1]: Entering directory '/var/home/berrange/src/virt/qemu/build'
config-host.mak is out-of-date, running configure
python determined to be '/usr/bin/python3'
python version: Python 3.12.5
mkvenv: Creating non-isolated virtual environment at 'pyvenv'
mkvenv: checking for meson>=1.5.0
mkvenv: checking for pycotap>=1.1.0
mkvenv: installing meson==1.5.0
mkvenv: checking for sphinx>=3.4.3
mkvenv: checking for sphinx_rtd_theme>=0.5
[0/1] Regenerating build files.
WARNING: Regenerating configuration from scratch.
Reason: Coredata file '/var/home/berrange/src/virt/qemu/build/meson-private/coredata.dat' references functions or classes that don't exist. This probably means that it was generated with an old version of meson.
The Meson build system
Version: 1.5.0
Source dir: /var/home/berrange/src/virt/qemu
Build dir: /var/home/berrange/src/virt/qemu/build
Build type: native build
Project name: qemu
Project version: 9.1.50
C compiler for the host machine: cc -m64 (gcc 14.2.1 "cc (GCC) 14.2.1 20240801 (Red Hat 14.2.1-1)")
C linker for the host machine: cc -m64 ld.bfd 2.41-37
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program scripts/symlink-install-tree.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/symlink-install-tree.py)
Program sh found: YES (/usr/bin/sh)
Program python3 found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3)
Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
Program iasl found: NO
Program bzip2 found: YES (/usr/bin/bzip2)
Compiler for C supports link arguments -Wl,-z,relro: YES 
Compiler for C supports link arguments -Wl,-z,now: YES 
Checking if "-fzero-call-used-regs=used-gpr" compiles: YES 
Compiler for C supports arguments -ftrivial-auto-var-init=zero: YES 
Compiler for C supports arguments -fzero-call-used-regs=used-gpr: YES 
Compiler for C supports arguments -Wempty-body: YES 
Compiler for C supports arguments -Wendif-labels: YES 
Compiler for C supports arguments -Wexpansion-to-defined: YES 
Compiler for C supports arguments -Wformat-security: YES 
Compiler for C supports arguments -Wformat-y2k: YES 
Compiler for C supports arguments -Wignored-qualifiers: YES 
Compiler for C supports arguments -Wimplicit-fallthrough=2: YES 
Compiler for C supports arguments -Winit-self: YES 
Compiler for C supports arguments -Wmissing-format-attribute: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wnested-externs: YES 
Compiler for C supports arguments -Wold-style-declaration: YES 
Compiler for C supports arguments -Wold-style-definition: YES 
Compiler for C supports arguments -Wredundant-decls: YES 
Compiler for C supports arguments -Wshadow=local: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wtype-limits: YES 
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wvla: YES 
Compiler for C supports arguments -Wwrite-strings: YES 
Compiler for C supports arguments -Wno-gnu-variable-sized-type-not-at-end: NO 
Compiler for C supports arguments -Wno-initializer-overrides: NO 
Compiler for C supports arguments -Wno-missing-include-dirs: YES 
Compiler for C supports arguments -Wno-psabi: YES 
Compiler for C supports arguments -Wno-shift-negative-value: YES 
Compiler for C supports arguments -Wno-string-plus-int: NO 
Compiler for C supports arguments -Wno-tautological-type-limit-compare: NO 
Compiler for C supports arguments -Wno-typedef-redefinition: NO 
Program cgcc found: YES (/usr/bin/cgcc)
Program scripts/check_sparse.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/check_sparse.py)
Library m found: YES
Run-time dependency threads found: YES
Library util found: YES
Run-time dependency appleframeworks found: NO (tried framework)
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.1
Run-time dependency xencontrol found: YES 4.18.0
Run-time dependency xenstore found: YES 4.0
Run-time dependency xenforeignmemory found: YES 1.4
Run-time dependency xengnttab found: YES 1.2
Run-time dependency xenevtchn found: YES 1.2
Run-time dependency xendevicemodel found: YES 1.4
Run-time dependency xentoolcore found: YES 1.0
Run-time dependency glib-2.0 found: YES 2.80.3
Run-time dependency gmodule-no-export-2.0 found: YES 2.80.3
Run-time dependency gio-2.0 found: YES 2.80.3
Program /usr/bin/gdbus-codegen found: YES (/usr/bin/gdbus-codegen)
Run-time dependency gio-unix-2.0 found: YES 2.80.3
Program scripts/xml-preprocess.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/xml-preprocess.py)
Run-time dependency pixman-1 found: YES 0.43.4
Run-time dependency zlib found: YES 1.3.1.zlib-ng
Has header "libaio.h" : YES 
Library aio found: YES
Run-time dependency liburing found: YES 2.5
Run-time dependency libnfs found: YES 5.0.3
Run-time dependency appleframeworks found: NO (tried framework)
Run-time dependency appleframeworks found: NO (tried framework)
Run-time dependency libseccomp found: YES 2.5.5
Header "seccomp.h" has symbol "SCMP_FLTATR_API_SYSRAWRC" with dependency libseccomp: YES 
Has header "cap-ng.h" : YES 
Library cap-ng found: YES
Run-time dependency xkbcommon found: YES 1.6.0
Run-time dependency slirp found: YES 4.7.0
Has header "libvdeplug.h" : NO 
Run-time dependency libpulse found: YES 16.1
Run-time dependency alsa found: YES 1.2.12
Run-time dependency jack found: YES 1.9.17
Run-time dependency libpipewire-0.3 found: YES 1.0.7
Run-time dependency sndio found: NO (tried pkgconfig)
Run-time dependency spice-protocol found: YES 0.14.4
Run-time dependency spice-server found: YES 0.15.1
Library rt found: YES
Run-time dependency libiscsi found: YES 1.19.0
Run-time dependency libzstd found: YES 1.5.6
Run-time dependency qpl found: NO (tried pkgconfig)
Run-time dependency libwd found: NO (tried pkgconfig)
Run-time dependency libwd_comp found: NO (tried pkgconfig)
Run-time dependency qatzip found: NO (tried pkgconfig)
Run-time dependency virglrenderer found: YES 1.0.1
Run-time dependency rutabaga_gfx_ffi found: NO (tried pkgconfig)
Run-time dependency blkio found: YES 1.5.0
Run-time dependency libcurl found: YES 8.6.0
Run-time dependency libudev found: YES 255
Library mpathpersist found: YES
Library multipath found: YES
Run-time dependency ncursesw found: YES 6.4.20240127
Has header "brlapi.h" : YES 
Library brlapi found: YES
Run-time dependency sdl2 found: YES 2.30.3
Run-time dependency sdl2_image found: YES 2.8.2
Library rados found: YES
Has header "rbd/librbd.h" : YES 
Library rbd found: YES
Run-time dependency glusterfs-api found: YES 7.11.1
Run-time dependency libssh found: YES 0.10.6
Has header "bzlib.h" : YES 
Library bz2 found: YES
Has header "lzfse.h" : NO 
Has header "sys/soundcard.h" : YES 
Run-time dependency epoxy found: YES 1.5.10
Has header "epoxy/egl.h" with dependency epoxy: YES 
Run-time dependency gbm found: YES 24.1.7
Run-time dependency gnutls found: YES 3.8.6
Run-time dependency capstone found: YES 5.0.1
Run-time dependency gmp found: YES 6.2.1
Run-time dependency gtk+-3.0 found: YES 3.24.43
Run-time dependency gtk+-x11-3.0 found: YES 3.24.43
Run-time dependency vte-2.91 found: YES 0.76.3
Run-time dependency x11 found: YES 1.8.10
Run-time dependency libpng found: YES 1.6.40
Run-time dependency libjpeg found: YES 3.0.2
Has header "sasl/sasl.h" : YES 
Library sasl2 found: YES
Has header "security/pam_appl.h" : YES 
Library pam found: YES
Has header "snappy-c.h" : YES 
Library snappy found: YES
Has header "lzo/lzo1x.h" : YES 
Library lzo2 found: YES
Has header "numa.h" : YES 
Library numa found: YES
Library fdt found: YES
Has header "rdma/rdma_cma.h" : YES 
Library rdmacm found: YES
Library ibverbs found: YES
Run-time dependency libcacard found: YES 2.8.1
Run-time dependency u2f-emu found: NO (tried pkgconfig)
Run-time dependency canokey-qemu found: NO (tried pkgconfig)
Run-time dependency libusbredirparser-0.5 found: YES 0.13.0
Run-time dependency libusb-1.0 found: YES 1.0.27
Run-time dependency libpmem found: YES 2.0.1
Run-time dependency libdaxctl found: YES 79
Run-time dependency libtasn1 found: YES 4.19.0
Run-time dependency libkeyutils found: YES 1.6.3
Checking for function "gettid" : YES 
Run-time dependency libselinux found: YES 3.6
Checking for function "malloc_trim" : YES 
Header "sys/stat.h" has symbol "STATX_BASIC_STATS" : YES 
Header "sys/stat.h" has symbol "STATX_MNT_ID" : YES 
Run-time dependency fuse3 found: YES 3.16.2
Run-time dependency libbpf found: YES 1.2.3
Run-time dependency libxdp found: YES 1.4.2
Run-time dependency libdw found: YES 0.191
Header "linux/fs.h" has symbol "FIFREEZE" : YES 
Header "linux/fs.h" has symbol "FITRIM" : YES 
Checking for function "numa_has_preferred_many" with dependency -lnuma: YES 
Checking whether type "struct virgl_renderer_resource_info_ext" has member "d3d_tex2d" with dependency virglrenderer: YES 
Has header "sys/epoll.h" : YES 
Has header "linux/magic.h" : YES 
Has header "valgrind/valgrind.h" : NO 
Has header "linux/btrfs.h" : YES 
Has header "libdrm/drm.h" : YES 
Has header "linux/openat2.h" : YES 
Has header "pty.h" : YES 
Has header "sys/disk.h" : NO 
Has header "sys/ioccom.h" : NO 
Has header "sys/kcov.h" : NO 
Checking for function "close_range" : YES 
Checking for function "accept4" : YES 
Checking for function "clock_adjtime" : YES 
Checking for function "dup3" : YES 
Checking for function "fallocate" : YES 
Checking for function "posix_fallocate" : YES 
Checking for function "getcpu" : YES 
Checking for function "sched_getcpu" : NO 
Checking for function "posix_memalign" : YES 
Checking for function "_aligned_malloc" : NO 
Checking for function "valloc" : YES 
Checking for function "memalign" : YES 
Checking for function "ppoll" : YES 
Checking for function "preadv" : YES 
Checking for function "pthread_fchdir_np" : NO 
Checking for function "sendfile" : YES 
Checking for function "setns" : YES 
Checking for function "unshare" : YES 
Checking for function "syncfs" : YES 
Checking for function "sync_file_range" : YES 
Checking for function "timerfd_create" : YES 
Checking for function "copy_file_range" : YES 
Checking for function "getifaddrs" : YES 
Checking for function "openpty" with dependency -lutil: YES 
Checking for function "strchrnul" : YES 
Checking for function "system" : YES 
Checking for function "rbd_namespace_exists" with dependencies -lrbd, -lrados: YES 
Checking for function "ibv_advise_mr" with dependencies -lrdmacm, -libverbs: YES 
Header "sys/inotify.h" has symbol "inotify_init" : YES 
Header "sys/inotify.h" has symbol "inotify_init1" : YES 
Header "linux/blkzoned.h" has symbol "BLKOPENZONE" : YES 
Header "sys/epoll.h" has symbol "epoll_create1" : YES 
Header "linux/falloc.h" has symbol "FALLOC_FL_PUNCH_HOLE" : YES 
Header "linux/falloc.h" has symbol "FALLOC_FL_KEEP_SIZE" : YES 
Header "linux/falloc.h" has symbol "FALLOC_FL_ZERO_RANGE" : YES 
Has header "linux/fiemap.h" : YES 
Header "linux/fs.h" has symbol "FS_IOC_FIEMAP" : YES 
Checking for function "getrandom" : YES 
Header "sys/random.h" has symbol "GRND_NONBLOCK" : YES 
Header "sys/prctl.h" has symbol "PR_SET_TIMERSLACK" : YES 
Header "linux/rtnetlink.h" has symbol "IFLA_PROTO_DOWN" : YES 
Header "sys/sysmacros.h" has symbol "makedev" : YES 
Header "getopt.h" has symbol "optreset" : NO 
Header "netinet/in.h" has symbol "IPPROTO_MPTCP" : YES 
Checking whether type "struct sigevent" has member "sigev_notify_thread_id" : NO 
Checking whether type "struct stat" has member "st_atim" : YES 
Checking whether type "struct blk_zone" has member "capacity" : YES 
Checking for type "struct iovec" : YES 
Checking for type "struct utmpx" : YES 
Checking for type "struct mmsghdr" : YES 
Header "asm/hwprobe.h" has symbol "RISCV_HWPROBE_EXT_ZBA" : NO 
Header "linux/vm_sockets.h" has symbol "AF_VSOCK" : YES 
Program scripts/minikconf.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/minikconf.py)
Configuring x86_64-softmmu-config-target.h using configuration
Configuring x86_64-softmmu-config-devices.mak with command
Reading depfile: /var/home/berrange/src/virt/qemu/build/meson-private/x86_64-softmmu-config-devices.mak.d
Configuring x86_64-softmmu-config-devices.h using configuration
Program scripts/make-config-poison.sh found: YES (/var/home/berrange/src/virt/qemu/scripts/make-config-poison.sh)

Executing subproject libvhost-user 

libvhost-user| Project name: libvhost-user
libvhost-user| Project version: undefined
libvhost-user| C compiler for the host machine: cc -m64 (gcc 14.2.1 "cc (GCC) 14.2.1 20240801 (Red Hat 14.2.1-1)")
libvhost-user| C linker for the host machine: cc -m64 ld.bfd 2.41-37
libvhost-user| Compiler for C supports arguments -Wsign-compare: YES
libvhost-user| Compiler for C supports arguments -Wdeclaration-after-statement: YES
libvhost-user| Compiler for C supports arguments -Wstrict-aliasing: YES
libvhost-user| Dependency threads found: YES unknown (cached)
libvhost-user| Dependency glib-2.0 found: YES 2.80.3 (overridden)
libvhost-user| Build targets in project: 5
libvhost-user| Subproject libvhost-user finished.


Executing subproject libvduse 

libvduse| Project name: libvduse
libvduse| Project version: undefined
libvduse| C compiler for the host machine: cc -m64 (gcc 14.2.1 "cc (GCC) 14.2.1 20240801 (Red Hat 14.2.1-1)")
libvduse| C linker for the host machine: cc -m64 ld.bfd 2.41-37
libvduse| Compiler for C supports arguments -Wsign-compare: YES (cached)
libvduse| Compiler for C supports arguments -Wdeclaration-after-statement: YES (cached)
libvduse| Compiler for C supports arguments -Wstrict-aliasing: YES (cached)
libvduse| Build targets in project: 6
libvduse| Subproject libvduse finished.

Configuring config-host.h using configuration
Program scripts/hxtool found: YES (/var/home/berrange/src/virt/qemu/scripts/hxtool)
Program scripts/shaderinclude.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/shaderinclude.py)
Program scripts/qapi-gen.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/qapi-gen.py)
Program scripts/qemu-version.sh found: YES (/var/home/berrange/src/virt/qemu/scripts/qemu-version.sh)

Executing subproject keycodemapdb 

keycodemapdb| Project name: keycodemapdb
keycodemapdb| Project version: undefined
keycodemapdb| Program tools/keymap-gen found: YES (/var/home/berrange/src/virt/qemu/subprojects/keycodemapdb/tools/keymap-gen)
keycodemapdb| Build targets in project: 269
keycodemapdb| Subproject keycodemapdb finished.

Program scripts/decodetree.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/decodetree.py)
Program ../scripts/modules/module_block.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/block/../scripts/modules/module_block.py)
Program ../scripts/block-coroutine-wrapper.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/block/../scripts/block-coroutine-wrapper.py)
Program scripts/modinfo-collect.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/modinfo-collect.py)
Program scripts/modinfo-generate.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/modinfo-generate.py)
Program nm found: YES
Program scripts/undefsym.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/undefsym.py)
Program scripts/rust/rustc_args.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/rust/rustc_args.py)
Program bindgen found: YES 0.69.4 0.69.4 (/usr/bin/bindgen)
Found CMake: /usr/bin/cmake (3.28.2)
WARNING: CMake Toolchain: Failed to determine CMake compilers state
Build-time dependency quote-1-rs found: NO (tried pkgconfig and cmake)
Looking for a fallback subproject for the dependency quote-1-rs
Downloading quote-1-rs source from https://crates.io/api/v1/crates/quote/1.0.36/download
Download size: 28507
Downloading: ..........

Executing subproject quote-1-rs 

quote-1-rs| Project name: quote-1-rs
quote-1-rs| Project version: 1.12.0
quote-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
quote-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
quote-1-rs| Downloading proc-macro2-1-rs source from https://crates.io/api/v1/crates/proc-macro2/1.0.84/download
Download size: 48922
Downloading: ..........

Executing subproject quote-1-rs:proc-macro2-1-rs

proc-macro2-1-rs| Project name: proc-macro2-1-rs
proc-macro2-1-rs| Project version: 1.0.84
proc-macro2-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
proc-macro2-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
proc-macro2-1-rs| Downloading unicode-ident-1-rs source from https://crates.io/api/v1/crates/unicode-ident/1.0.12/download
Download size: 42168
Downloading: ..........

Executing subproject quote-1-rs:proc-macro2-1-rs:unicode-ident-1-rs

unicode-ident-1-rs| Project name: unicode-ident-1-rs
unicode-ident-1-rs| Project version: 1.0.12
unicode-ident-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
unicode-ident-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
unicode-ident-1-rs| Build targets in project: 342
unicode-ident-1-rs| Subproject unicode-ident-1-rs finished.

proc-macro2-1-rs| Dependency unicode-ident-1-rs found: YES 1.0.12 (overridden)
proc-macro2-1-rs| Build targets in project: 343
proc-macro2-1-rs| Subproject proc-macro2-1-rs finished.

quote-1-rs| Dependency proc-macro2-1-rs found: YES 1.0.84 (overridden)
quote-1-rs| Build targets in project: 344
quote-1-rs| Subproject quote-1-rs finished.

Dependency quote-1-rs found: YES 1.12.0 (overridden)
Build-time dependency syn-2-rs found: NO (tried pkgconfig and cmake)
Looking for a fallback subproject for the dependency syn-2-rs
Downloading syn-2-rs source from https://crates.io/api/v1/crates/syn/2.0.66/download
Download size: 264855
Downloading: ..........

Executing subproject syn-2-rs 

syn-2-rs| Project name: syn-2-rs
syn-2-rs| Project version: 2.0.66
syn-2-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
syn-2-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
syn-2-rs| Dependency proc-macro2-1-rs found: YES 1.0.84 (overridden)
syn-2-rs| Dependency quote-1-rs found: YES 1.12.0 (overridden)
syn-2-rs| Dependency unicode-ident-1-rs found: YES 1.0.12 (overridden)
syn-2-rs| Build targets in project: 345
syn-2-rs| Subproject syn-2-rs finished.

Dependency syn-2-rs found: YES 2.0.66 (overridden)
Dependency proc-macro2-1-rs found: YES 1.0.84 (overridden)
Downloading bilge-0.2-rs source from https://crates.io/api/v1/crates/bilge/0.2.0/download
Download size: 14126
Downloading: ..........

Executing subproject bilge-0.2-rs 

bilge-0.2-rs| Project name: bilge-0.2-rs
bilge-0.2-rs| Project version: 0.2.0
bilge-0.2-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
bilge-0.2-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
bilge-0.2-rs| Downloading arbitrary-int-1-rs source from https://crates.io/api/v1/crates/arbitrary-int/1.2.7/download
Download size: 20829
Downloading: ..........

Executing subproject bilge-0.2-rs:arbitrary-int-1-rs

arbitrary-int-1-rs| Project name: arbitrary-int-1-rs
arbitrary-int-1-rs| Project version: 1.2.7
arbitrary-int-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
arbitrary-int-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
arbitrary-int-1-rs| Build targets in project: 348
arbitrary-int-1-rs| Subproject arbitrary-int-1-rs finished.

bilge-0.2-rs| Downloading bilge-impl-0.2-rs source from https://crates.io/api/v1/crates/bilge-impl/0.2.0/download
Download size: 24524
Downloading: ..........

Executing subproject bilge-0.2-rs:bilge-impl-0.2-rs

bilge-impl-0.2-rs| Project name: bilge-impl-0.2-rs
bilge-impl-0.2-rs| Project version: 0.2.0
bilge-impl-0.2-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
bilge-impl-0.2-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
bilge-impl-0.2-rs| Downloading itertools-0.11-rs source from https://crates.io/api/v1/crates/itertools/0.11.0/download
Download size: 125074
Downloading: ..........

Executing subproject bilge-0.2-rs:bilge-impl-0.2-rs:itertools-0.11-rs

itertools-0.11-rs| Project name: itertools-0.11-rs
itertools-0.11-rs| Project version: 0.11.0
itertools-0.11-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
itertools-0.11-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
itertools-0.11-rs| Downloading either-1-rs source from https://crates.io/api/v1/crates/either/1.12.0/download
Download size: 18974
Downloading: ..........

Executing subproject bilge-0.2-rs:bilge-impl-0.2-rs:itertools-0.11-rs:either-1-rs

either-1-rs| Project name: either-1-rs
either-1-rs| Project version: 1.12.0
either-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
either-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
either-1-rs| Build targets in project: 349
either-1-rs| Subproject either-1-rs finished.

itertools-0.11-rs| Dependency either-1-rs found: YES 1.12.0 (overridden)
itertools-0.11-rs| Build targets in project: 350
itertools-0.11-rs| Subproject itertools-0.11-rs finished.

bilge-impl-0.2-rs| Downloading proc-macro-error-attr-1-rs source from https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4/download
^[[6~Download size: 7971
Downloading: ..........

Executing subproject bilge-0.2-rs:bilge-impl-0.2-rs:proc-macro-error-attr-1-rs

proc-macro-error-attr-1-rs| Project name: proc-macro-error-attr-1-rs
proc-macro-error-attr-1-rs| Project version: 1.12.0
proc-macro-error-attr-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
proc-macro-error-attr-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
proc-macro-error-attr-1-rs| Dependency proc-macro2-1-rs found: YES 1.0.84 (overridden)
proc-macro-error-attr-1-rs| Dependency quote-1-rs found: YES 1.12.0 (overridden)
proc-macro-error-attr-1-rs| Build targets in project: 351
proc-macro-error-attr-1-rs| Subproject proc-macro-error-attr-1-rs finished.

bilge-impl-0.2-rs| Downloading proc-macro-error-1-rs source from https://crates.io/api/v1/crates/proc-macro-error/1.0.4/download
Download size: 25293
Downloading: ..........

Executing subproject bilge-0.2-rs:bilge-impl-0.2-rs:proc-macro-error-1-rs

proc-macro-error-1-rs| Project name: proc-macro-error-1-rs
proc-macro-error-1-rs| Project version: 1.0.4
proc-macro-error-1-rs| Rust compiler for the host machine: rustc -C linker=cc -C link-arg=-m64 (rustc 1.81.0)
proc-macro-error-1-rs| Rust linker for the host machine: rustc -C linker=cc -C link-arg=-m64 ld.bfd 2.41-37
proc-macro-error-1-rs| Dependency proc-macro-error-attr-1-rs found: YES 1.12.0 (overridden)
proc-macro-error-1-rs| Dependency proc-macro2-1-rs found: YES 1.0.84 (overridden)
proc-macro-error-1-rs| Dependency quote-1-rs found: YES 1.12.0 (overridden)
proc-macro-error-1-rs| Dependency syn-2-rs found: YES 2.0.66 (overridden)
proc-macro-error-1-rs| Build targets in project: 352
proc-macro-error-1-rs| Subproject proc-macro-error-1-rs finished.

bilge-impl-0.2-rs| Dependency itertools-0.11-rs found: YES 0.11.0 (overridden)
bilge-impl-0.2-rs| Dependency proc-macro-error-attr-1-rs found: YES 1.12.0 (overridden)
bilge-impl-0.2-rs| Dependency proc-macro-error-1-rs found: YES 1.0.4 (overridden)
bilge-impl-0.2-rs| Dependency quote-1-rs found: YES 1.12.0 (overridden)
bilge-impl-0.2-rs| Dependency syn-2-rs found: YES 2.0.66 (overridden)
bilge-impl-0.2-rs| Dependency proc-macro2-1-rs found: YES 1.0.84 (overridden)
bilge-impl-0.2-rs| Build targets in project: 353
bilge-impl-0.2-rs| Subproject bilge-impl-0.2-rs finished.

bilge-0.2-rs| Dependency arbitrary-int-1-rs found: YES 1.2.7 (overridden)
bilge-0.2-rs| Dependency bilge-impl-0.2-rs found: YES 0.2.0 (overridden)
bilge-0.2-rs| Build targets in project: 354
bilge-0.2-rs| Subproject bilge-0.2-rs finished.

Dependency bilge-0.2-rs found: YES 0.2.0 (overridden)
Dependency bilge-impl-0.2-rs found: YES 0.2.0 (overridden)
Program scripts/feature_to_c.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/feature_to_c.py)
Program scripts/rust/rust_root_crate.sh found: YES (/var/home/berrange/src/virt/qemu/scripts/rust/rust_root_crate.sh)
Configuring 50-qemu-gpu.json using configuration
Program dtc found: NO
Configuring 50-edk2-i386-secure.json using configuration
Configuring 50-edk2-x86_64-secure.json using configuration
Configuring 60-edk2-aarch64.json using configuration
Configuring 60-edk2-arm.json using configuration
Configuring 60-edk2-i386.json using configuration
Configuring 60-edk2-x86_64.json using configuration
Configuring 60-edk2-loongarch64.json using configuration
Program /var/home/berrange/src/virt/qemu/build/pyvenv/bin/sphinx-build found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/sphinx-build)
Program bash found: YES 5.2.26 5.2.26 (/usr/bin/bash)
Program /var/home/berrange/src/virt/qemu/scripts/decodetree.py found: YES (/var/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 /var/home/berrange/src/virt/qemu/scripts/decodetree.py)
WARNING: Subproject berkeley-softfloat-3's revision may be out of date; its wrap file has changed since it was first configured

Executing subproject berkeley-softfloat-3 

berkeley-softfloat-3| Project name: berkeley-softfloat-3
berkeley-softfloat-3| Project version: undefined
berkeley-softfloat-3| C compiler for the host machine: cc -m64 (gcc 14.2.1 "cc (GCC) 14.2.1 20240801 (Red Hat 14.2.1-1)")
berkeley-softfloat-3| C linker for the host machine: cc -m64 ld.bfd 2.41-37
berkeley-softfloat-3| Configuring platform.h using configuration
berkeley-softfloat-3| Build targets in project: 445
berkeley-softfloat-3| Subproject berkeley-softfloat-3 finished.

WARNING: Subproject berkeley-testfloat-3's revision may be out of date; its wrap file has changed since it was first configured

Executing subproject berkeley-testfloat-3 

berkeley-testfloat-3| Project name: berkeley-testfloat-3
berkeley-testfloat-3| Project version: undefined
berkeley-testfloat-3| C compiler for the host machine: cc -m64 (gcc 14.2.1 "cc (GCC) 14.2.1 20240801 (Red Hat 14.2.1-1)")
berkeley-testfloat-3| C linker for the host machine: cc -m64 ld.bfd 2.41-37
berkeley-testfloat-3| Configuring platform.h using configuration
berkeley-testfloat-3| Compiler for C supports arguments -Wno-ignored-pragmas: NO
berkeley-testfloat-3| Build targets in project: 447
berkeley-testfloat-3| Subproject berkeley-testfloat-3 finished.

Program diff found: YES (/usr/bin/diff)
Program dbus-daemon found: YES (/usr/bin/dbus-daemon)
Run-time dependency gvnc-1.0 found: YES 1.3.1
Run-time dependency sysprof-capture-4 found: YES 46.0
Run-time dependency glib-2.0 found: YES 2.80.3
Program initrd-stress.sh found: YES (/var/home/berrange/src/virt/qemu/tests/migration/initrd-stress.sh)
Program xgettext found: YES (/usr/bin/xgettext)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msginit found: YES (/usr/bin/msginit)
Program msgmerge found: YES (/usr/bin/msgmerge)
Program xgettext found: YES (/usr/bin/xgettext)

../meson.build:4435:50: ERROR: Key RUST_TARGET_TRIPLE is not in the dictionary.

A full log can be found at /var/home/berrange/src/virt/qemu/build/meson-logs/meson-log.txt
FAILED: build.ninja 
/var/home/berrange/src/virt/qemu/build/pyvenv/bin/meson --internal regenerate /var/home/berrange/src/virt/qemu .
ninja: error: rebuilding 'build.ninja': subcommand failed
[0/1] Regenerating build files.
...gets itself into a fail + re-run loop here, so I ctrl-c now...


With regards,
Daniel
Marc-André Lureau Oct. 16, 2024, 10:46 a.m. UTC | #9
Hi

On Fri, Oct 11, 2024 at 9:19 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> The following changes since commit
> b5ab62b3c0050612c7f9b0b4baeb44ebab42775a:
>
>   Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into
> staging (2024-10-04 19:28:37 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 381d2c36e1242f849a55f4622e50b9a69cb92842:
>
>   docs: use consistent markup for footnotes (2024-10-11 13:08:32 +0200)
>
> v2->v3: new patches
> - scripts/archive-source: find directory name for subprojects
> - docs: fix invalid footnote syntax
> - docs: avoid footnotes consisting of just URLs
> - docs: use consistent markup for footnotes
>
> ----------------------------------------------------------------
> * first commit for Rust support
> * add CI job using Fedora + Rust nightly
> * fix detection of ATOMIC128 on x86_64
> * fix compilation with Sphinx 8.1.0
>


fwiw, after a rustc update, I got this error:
error[E0514]: found crate `bilge` compiled by an incompatible version of
rustc
... tons of other errors

It is fixed after a ninja clean.

Apparently there is an "old" meson issue:
https://github.com/mesonbuild/meson/issues/10706



> ----------------------------------------------------------------
> Manos Pitsidianakis (6):
>       build-sys: Add rust feature option
>       rust: add bindgen step as a meson dependency
>       .gitattributes: add Rust diff and merge attributes
>       meson.build: add HAVE_GLIB_WITH_ALIGNED_ALLOC flag
>       rust: add crate to expose bindings and interfaces
>       rust: add utility procedural macro crate
>
> Paolo Bonzini (11):
>       Require meson version 1.5.0
>       configure, meson: detect Rust toolchain
>       scripts/archive-source: find directory name for subprojects
>       rust: add PL011 device model
>       meson: define qemu_isa_flags
>       meson: ensure -mcx16 is passed when detecting ATOMIC128
>       dockerfiles: add a Dockerfile using a nightly Rust toolchain
>       gitlab-ci: add Rust-enabled CI job
>       docs: fix invalid footnote syntax
>       docs: avoid footnotes consisting of just URLs
>       docs: use consistent markup for footnotes
>
> Pierrick Bouvier (1):
>       meson: fix machine option for x86_version
>
>  MAINTAINERS                                        |  21 +
>  docs/devel/atomics.rst                             |   6 +-
>  docs/devel/build-system.rst                        |   6 +-
>  docs/devel/loads-stores.rst                        |   2 +-
>  docs/devel/maintainers.rst                         |   4 +-
>  docs/devel/migration/mapped-ram.rst                |   4 +-
>  docs/devel/testing/acpi-bits.rst                   |  26 +-
>  docs/specs/fw_cfg.rst                              |   4 +-
>  docs/specs/rapl-msr.rst                            |  25 +-
>  configure                                          | 170 +++++-
>  meson.build                                        | 158 +++++-
>  rust/wrapper.h                                     |  47 ++
>  .gitattributes                                     |   3 +
>  .gitlab-ci.d/buildtest.yml                         |  13 +
>  .gitlab-ci.d/containers.yml                        |   6 +
>  Kconfig                                            |   1 +
>  Kconfig.host                                       |   3 +
>  hw/arm/Kconfig                                     |  30 +-
>  meson_options.txt                                  |   3 +
>  python/scripts/vendor.py                           |   4 +-
>  python/wheels/meson-1.2.3-py3-none-any.whl         | Bin 964928 -> 0 bytes
>  python/wheels/meson-1.5.0-py3-none-any.whl         | Bin 0 -> 959846 bytes
>  pythondeps.toml                                    |   2 +-
>  rust/.gitignore                                    |   3 +
>  rust/Kconfig                                       |   1 +
>  rust/hw/Kconfig                                    |   2 +
>  rust/hw/char/Kconfig                               |   3 +
>  rust/hw/char/meson.build                           |   1 +
>  rust/hw/char/pl011/.gitignore                      |   2 +
>  rust/hw/char/pl011/Cargo.lock                      | 134 +++++
>  rust/hw/char/pl011/Cargo.toml                      |  26 +
>  rust/hw/char/pl011/README.md                       |  31 ++
>  rust/hw/char/pl011/meson.build                     |  26 +
>  rust/hw/char/pl011/src/device.rs                   | 599
> +++++++++++++++++++++
>  rust/hw/char/pl011/src/device_class.rs             |  70 +++
>  rust/hw/char/pl011/src/lib.rs                      | 586
> ++++++++++++++++++++
>  rust/hw/char/pl011/src/memory_ops.rs               |  59 ++
>  rust/hw/meson.build                                |   1 +
>  rust/meson.build                                   |   4 +
>  rust/qemu-api-macros/Cargo.lock                    |  47 ++
>  rust/qemu-api-macros/Cargo.toml                    |  25 +
>  rust/qemu-api-macros/README.md                     |   1 +
>  rust/qemu-api-macros/meson.build                   |  25 +
>  rust/qemu-api-macros/src/lib.rs                    |  43 ++
>  rust/qemu-api/.gitignore                           |   2 +
>  rust/qemu-api/Cargo.lock                           |   7 +
>  rust/qemu-api/Cargo.toml                           |  26 +
>  rust/qemu-api/README.md                            |  17 +
>  rust/qemu-api/build.rs                             |  14 +
>  rust/qemu-api/meson.build                          |  24 +
>  rust/qemu-api/src/definitions.rs                   |  97 ++++
>  rust/qemu-api/src/device_class.rs                  | 128 +++++
>  rust/qemu-api/src/lib.rs                           | 166 ++++++
>  rust/qemu-api/src/tests.rs                         |  49 ++
>  rust/rustfmt.toml                                  |   7 +
>  scripts/archive-source.sh                          |  29 +-
>  scripts/make-release                               |   6 +-
>  scripts/meson-buildoptions.sh                      |   3 +
>  scripts/rust/rust_root_crate.sh                    |  13 +
>  scripts/rust/rustc_args.py                         |  84 +++
>  subprojects/.gitignore                             |  11 +
>  subprojects/arbitrary-int-1-rs.wrap                |   7 +
>  subprojects/bilge-0.2-rs.wrap                      |   7 +
>  subprojects/bilge-impl-0.2-rs.wrap                 |   7 +
>  subprojects/either-1-rs.wrap                       |   7 +
>  subprojects/itertools-0.11-rs.wrap                 |   7 +
>  .../packagefiles/arbitrary-int-1-rs/meson.build    |  19 +
>  subprojects/packagefiles/bilge-0.2-rs/meson.build  |  29 +
>  .../packagefiles/bilge-impl-0.2-rs/meson.build     |  45 ++
>  subprojects/packagefiles/either-1-rs/meson.build   |  24 +
>  .../packagefiles/itertools-0.11-rs/meson.build     |  30 ++
>  .../packagefiles/proc-macro-error-1-rs/meson.build |  40 ++
>  .../proc-macro-error-attr-1-rs/meson.build         |  32 ++
>  .../packagefiles/proc-macro2-1-rs/meson.build      |  31 ++
>  subprojects/packagefiles/quote-1-rs/meson.build    |  29 +
>  subprojects/packagefiles/syn-2-rs/meson.build      |  40 ++
>  .../packagefiles/unicode-ident-1-rs/meson.build    |  20 +
>  subprojects/proc-macro-error-1-rs.wrap             |   7 +
>  subprojects/proc-macro-error-attr-1-rs.wrap        |   7 +
>  subprojects/proc-macro2-1-rs.wrap                  |   7 +
>  subprojects/quote-1-rs.wrap                        |   7 +
>  subprojects/syn-2-rs.wrap                          |   7 +
>  subprojects/unicode-ident-1-rs.wrap                |   7 +
>  subprojects/unicode-ident-1-rs/meson.build         |  20 +
>  .../docker/dockerfiles/fedora-rust-nightly.docker  | 173 ++++++
>  tests/docker/dockerfiles/opensuse-leap.docker      |   2 +-
>  tests/lcitool/mappings.yml                         |   2 +-
>  tests/lcitool/refresh                              |  26 +
>  88 files changed, 3474 insertions(+), 75 deletions(-)
>  create mode 100644 rust/wrapper.h
>  delete mode 100644 python/wheels/meson-1.2.3-py3-none-any.whl
>  create mode 100644 python/wheels/meson-1.5.0-py3-none-any.whl
>  create mode 100644 rust/.gitignore
>  create mode 100644 rust/Kconfig
>  create mode 100644 rust/hw/Kconfig
>  create mode 100644 rust/hw/char/Kconfig
>  create mode 100644 rust/hw/char/meson.build
>  create mode 100644 rust/hw/char/pl011/.gitignore
>  create mode 100644 rust/hw/char/pl011/Cargo.lock
>  create mode 100644 rust/hw/char/pl011/Cargo.toml
>  create mode 100644 rust/hw/char/pl011/README.md
>  create mode 100644 rust/hw/char/pl011/meson.build
>  create mode 100644 rust/hw/char/pl011/src/device.rs
>  create mode 100644 rust/hw/char/pl011/src/device_class.rs
>  create mode 100644 rust/hw/char/pl011/src/lib.rs
>  create mode 100644 rust/hw/char/pl011/src/memory_ops.rs
>  create mode 100644 rust/hw/meson.build
>  create mode 100644 rust/meson.build
>  create mode 100644 rust/qemu-api-macros/Cargo.lock
>  create mode 100644 rust/qemu-api-macros/Cargo.toml
>  create mode 100644 rust/qemu-api-macros/README.md
>  create mode 100644 rust/qemu-api-macros/meson.build
>  create mode 100644 rust/qemu-api-macros/src/lib.rs
>  create mode 100644 rust/qemu-api/.gitignore
>  create mode 100644 rust/qemu-api/Cargo.lock
>  create mode 100644 rust/qemu-api/Cargo.toml
>  create mode 100644 rust/qemu-api/README.md
>  create mode 100644 rust/qemu-api/build.rs
>  create mode 100644 rust/qemu-api/meson.build
>  create mode 100644 rust/qemu-api/src/definitions.rs
>  create mode 100644 rust/qemu-api/src/device_class.rs
>  create mode 100644 rust/qemu-api/src/lib.rs
>  create mode 100644 rust/qemu-api/src/tests.rs
>  create mode 100644 rust/rustfmt.toml
>  create mode 100755 scripts/rust/rust_root_crate.sh
>  create mode 100644 scripts/rust/rustc_args.py
>  create mode 100644 subprojects/arbitrary-int-1-rs.wrap
>  create mode 100644 subprojects/bilge-0.2-rs.wrap
>  create mode 100644 subprojects/bilge-impl-0.2-rs.wrap
>  create mode 100644 subprojects/either-1-rs.wrap
>  create mode 100644 subprojects/itertools-0.11-rs.wrap
>  create mode 100644 subprojects/packagefiles/arbitrary-int-1-rs/meson.build
>  create mode 100644 subprojects/packagefiles/bilge-0.2-rs/meson.build
>  create mode 100644 subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
>  create mode 100644 subprojects/packagefiles/either-1-rs/meson.build
>  create mode 100644 subprojects/packagefiles/itertools-0.11-rs/meson.build
>  create mode 100644
> subprojects/packagefiles/proc-macro-error-1-rs/meson.build
>  create mode 100644
> subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
>  create mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson.build
>  create mode 100644 subprojects/packagefiles/quote-1-rs/meson.build
>  create mode 100644 subprojects/packagefiles/syn-2-rs/meson.build
>  create mode 100644 subprojects/packagefiles/unicode-ident-1-rs/meson.build
>  create mode 100644 subprojects/proc-macro-error-1-rs.wrap
>  create mode 100644 subprojects/proc-macro-error-attr-1-rs.wrap
>  create mode 100644 subprojects/proc-macro2-1-rs.wrap
>  create mode 100644 subprojects/quote-1-rs.wrap
>  create mode 100644 subprojects/syn-2-rs.wrap
>  create mode 100644 subprojects/unicode-ident-1-rs.wrap
>  create mode 100644 subprojects/unicode-ident-1-rs/meson.build
>  create mode 100644 tests/docker/dockerfiles/fedora-rust-nightly.docker
> --
> 2.46.2
>
>
>