[RFC v3 00/32] Rust binding for QAPI and qemu-ga QMP handler examples

marcandre.lureau@redhat.com posted 32 patches 2 years, 7 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210907121943.3498701-1-marcandre.lureau@redhat.com
docs/about/build-platforms.rst |  28 +
configure                      |  32 +-
meson.build                    |  49 +-
qapi/sockets.json              |   2 +-
include/glib-compat.h          |   7 +
include/qemu/osdep.h           |  10 -
io/dns-resolver.c              |   2 +-
qga/commands-posix.c           | 152 ------
qga/commands-win32.c           |  71 ---
qga/commands.c                 |  34 +-
qga/qapi-cabi.c                |   9 +
tests/qapi-cabi.c              |   9 +
tests/unit/test-qga.c          |   4 +
util/oslib-posix.c             |  35 --
util/oslib-win32.c             |  13 -
util/qemu-sockets.c            |   6 +-
.cargo/config.toml.in          |   5 +
.cargo/meson.build             |   5 +
.gitignore                     |   1 +
.gitmodules                    |   4 +
Cargo.lock                     | 119 ++++
Cargo.toml                     |   6 +
meson_options.txt              |   5 +
qga/Cargo.toml                 |  24 +
qga/lib.rs                     |   5 +
qga/meson.build                |  64 ++-
qga/qapi-cabi.rs               |   6 +
qga/qapi.rs                    |   6 +
qga/qapi_ffi.rs                |   8 +
qga/qmp/hostname.rs            |   9 +
qga/qmp/mod.rs                 |  28 +
qga/qmp/vcpus.rs               | 161 ++++++
rust/common/Cargo.toml         |  11 +
rust/common/src/error.rs       | 113 ++++
rust/common/src/ffi.rs         |  93 ++++
rust/common/src/lib.rs         |  21 +
rust/common/src/qemu.rs        | 101 ++++
rust/common/src/qmp.rs         |   0
rust/common/src/translate.rs   | 482 ++++++++++++++++
rust/vendored                  |   1 +
scripts/archive-source.sh      |   2 +-
scripts/cargo_wrapper.py       | 183 +++++++
scripts/configh_to_cfg.py      |  44 ++
scripts/diff_commands.py       |  40 ++
scripts/qapi/cabi.py           | 187 +++++++
scripts/qapi/common.py         |  16 +
scripts/qapi/gen.py            |   6 +-
scripts/qapi/main.py           |  25 +-
scripts/qapi/rs.py             | 262 +++++++++
scripts/qapi/rs_ffi.py         | 446 +++++++++++++++
scripts/qapi/rs_types.py       | 966 +++++++++++++++++++++++++++++++++
scripts/qapi/schema.py         |  23 +-
scripts/qapi/types.py          |  58 +-
tests/Cargo.toml               |  17 +
tests/lib.rs                   |   2 +
tests/meson.build              |  72 ++-
tests/qapi-cabi.rs             |   5 +
tests/qapi.rs                  |  11 +
tests/qapi_ffi.rs              |   8 +
tests/vm/fedora                |  12 +-
tests/vm/freebsd               |   1 +
61 files changed, 3794 insertions(+), 333 deletions(-)
create mode 100644 qga/qapi-cabi.c
create mode 100644 tests/qapi-cabi.c
create mode 100644 .cargo/config.toml.in
create mode 100644 .cargo/meson.build
create mode 100644 Cargo.lock
create mode 100644 Cargo.toml
create mode 100644 qga/Cargo.toml
create mode 100644 qga/lib.rs
create mode 100644 qga/qapi-cabi.rs
create mode 100644 qga/qapi.rs
create mode 100644 qga/qapi_ffi.rs
create mode 100644 qga/qmp/hostname.rs
create mode 100644 qga/qmp/mod.rs
create mode 100644 qga/qmp/vcpus.rs
create mode 100644 rust/common/Cargo.toml
create mode 100644 rust/common/src/error.rs
create mode 100644 rust/common/src/ffi.rs
create mode 100644 rust/common/src/lib.rs
create mode 100644 rust/common/src/qemu.rs
create mode 100644 rust/common/src/qmp.rs
create mode 100644 rust/common/src/translate.rs
create mode 160000 rust/vendored
create mode 100644 scripts/cargo_wrapper.py
create mode 100644 scripts/configh_to_cfg.py
create mode 100644 scripts/diff_commands.py
create mode 100644 scripts/qapi/cabi.py
create mode 100644 scripts/qapi/rs.py
create mode 100644 scripts/qapi/rs_ffi.py
create mode 100644 scripts/qapi/rs_types.py
create mode 100644 tests/Cargo.toml
create mode 100644 tests/lib.rs
create mode 100644 tests/qapi-cabi.rs
create mode 100644 tests/qapi.rs
create mode 100644 tests/qapi_ffi.rs
[RFC v3 00/32] Rust binding for QAPI and qemu-ga QMP handler examples
Posted by marcandre.lureau@redhat.com 2 years, 7 months ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

Among the QEMU developers, there is a desire to use Rust. (see previous
thread from Stefan "Why QEMU should move from C to Rust", the rust-vmm
related projects and other experiments).

Thanks to our QAPI type system and the associate code generator, it is possible
to create Rust bindings for the generated C types (also called FFI binding) and
functions (rust-bindgen could probably do a similar job, but it is unnecessary
given the FFI generator is quite straightforward).

More interesting (but more complicated) is to expose a Rust API, and provide
convenient conversions FFI<->Rust. Taking inspiration from glib-rs binding, I
implemented a simplified version of the FromGlib/ToGlib traits, with simpler
ownership model, sufficient for QAPI needs.

The usage is as such:

- from_qemu_none(ptr: *const sys::P) -> T
  Return a Rust type T for a const ffi pointer P.

- from_qemu_full(ptr: *mut sys::P) -> T
  Return a Rust type T for a ffi pointer P, taking ownership.

- T::to_qemu_none() -> Stash<P>
  Returns a borrowed ffi pointer P (using a Stash to destroy "glue"
  storage data, if any).

- T::to_qemu_full() -> P
  Returns a ffi pointer P. (P resources are leaked/passed to C/ffi)

With the Rust QAPI bindings, we can implement QMP callbacks in idiomatic Rust.
With the translation traits, we can also bind manually more types and implement
other functions (QOM is my next target).

Since Rust doesn't cover all the platforms QEMU supports (see first patch and
https://doc.rust-lang.org/nightly/rustc/platform-support.html), the Rust code
should be optional. Nevertheless, it is desirable to write sensitive code in
Rust first, and a C version if the code/feature is not optional and not specific
to a platform where Rust is Tier-1 or 2.

v3 (RFC):
 - rebased (was waiting for qapi 'if' conditions to be merged)
 - now covers the various QEMU QAPI schemas (QEMU schema is left out of this
   series, but test schema is the complete)
 - numerous improvements, patch reorgnisation, cleanups etc

v2 (PoC):
 - split the original patch in smaller patches and more digestable form
 - dropped the DBus interface experiment from this series
 - various build-sys improvements, new configure options --with-rust(-target)
 - various attempts at better meson integration, finally satisfied enough with the
   current solution, which handles getting link flags from Rust sanely.
   (more meson stuff to come to handle config-host/features mapping etc).
 - rebased, QGA QMP now uses unions, added support for it.
 - start a common crate (which re-surfaced issues with foreign types and traits,
   worked around with a NewPtr wrapper)
 - explicit errors when ifcond are presents (after various unsucessful attempts,
   I will try to tackle it in v3)
 - mingw cross compilation support
 - some attempts to add it to CI
 - actually implement {get,set}-vcpus
 - vendor the external crates

Marc-André Lureau (32):
  RFC: docs: add supported host CPUs section
  build-sys: add HAVE_IPPROTO_MPTCP
  scripts/qapi: teach c_param_type() to return const argument type
  glib-compat: add G_SIZEOF_MEMBER
  scripts/qapi: add QAPISchemaVisitor.visit_module_end
  scripts/qapi: add a CABI module
  scripts/qapi: generate CABI dump for C types
  tests: build qapi-cabi (C ABI dump)
  build-sys: add i686 cpu target
  build-sys: add --with-rust{-target} & basic build infrastructure
  build-sys: add a cargo-wrapper script
  rust: provide a common crate for QEMU
  rust: use vendored-sources
  scripts/qapi: add QAPISchemaIfCond.rsgen()
  scripts/qapi: strip trailing whitespaces
  scripts/qapi: add Rust FFI bindings generation
  scripts/qapi: learn to generate ABI dump for Rust FFI
  tests: generate Rust bindings
  tests: check Rust and C CABI diffs
  scripts/qapi: generate high-level Rust bindings
  tests/rust: build a common library, checking bindings compile
  qga: build qapi-cabi binary (ABI from C)
  qga/rust: build and link an empty static library
  qga/rust: generate QGA QAPI types FFI bindings
  qga/rust: build a qga-cabi-rs executable (ABI from Rust)
  qga/rust: check the Rust C binding
  qga/rust: build high-level Rust QAPI types
  qga/rust: implement get-host-name in Rust (example)
  qga/rust: implement {get,set}-vcpus in Rust (example)
  tests/vm: add Rust to FreeBSD VM
  tests/vm: bump fedora VM to f32
  tests/vm: add Rust to Fedora

 docs/about/build-platforms.rst |  28 +
 configure                      |  32 +-
 meson.build                    |  49 +-
 qapi/sockets.json              |   2 +-
 include/glib-compat.h          |   7 +
 include/qemu/osdep.h           |  10 -
 io/dns-resolver.c              |   2 +-
 qga/commands-posix.c           | 152 ------
 qga/commands-win32.c           |  71 ---
 qga/commands.c                 |  34 +-
 qga/qapi-cabi.c                |   9 +
 tests/qapi-cabi.c              |   9 +
 tests/unit/test-qga.c          |   4 +
 util/oslib-posix.c             |  35 --
 util/oslib-win32.c             |  13 -
 util/qemu-sockets.c            |   6 +-
 .cargo/config.toml.in          |   5 +
 .cargo/meson.build             |   5 +
 .gitignore                     |   1 +
 .gitmodules                    |   4 +
 Cargo.lock                     | 119 ++++
 Cargo.toml                     |   6 +
 meson_options.txt              |   5 +
 qga/Cargo.toml                 |  24 +
 qga/lib.rs                     |   5 +
 qga/meson.build                |  64 ++-
 qga/qapi-cabi.rs               |   6 +
 qga/qapi.rs                    |   6 +
 qga/qapi_ffi.rs                |   8 +
 qga/qmp/hostname.rs            |   9 +
 qga/qmp/mod.rs                 |  28 +
 qga/qmp/vcpus.rs               | 161 ++++++
 rust/common/Cargo.toml         |  11 +
 rust/common/src/error.rs       | 113 ++++
 rust/common/src/ffi.rs         |  93 ++++
 rust/common/src/lib.rs         |  21 +
 rust/common/src/qemu.rs        | 101 ++++
 rust/common/src/qmp.rs         |   0
 rust/common/src/translate.rs   | 482 ++++++++++++++++
 rust/vendored                  |   1 +
 scripts/archive-source.sh      |   2 +-
 scripts/cargo_wrapper.py       | 183 +++++++
 scripts/configh_to_cfg.py      |  44 ++
 scripts/diff_commands.py       |  40 ++
 scripts/qapi/cabi.py           | 187 +++++++
 scripts/qapi/common.py         |  16 +
 scripts/qapi/gen.py            |   6 +-
 scripts/qapi/main.py           |  25 +-
 scripts/qapi/rs.py             | 262 +++++++++
 scripts/qapi/rs_ffi.py         | 446 +++++++++++++++
 scripts/qapi/rs_types.py       | 966 +++++++++++++++++++++++++++++++++
 scripts/qapi/schema.py         |  23 +-
 scripts/qapi/types.py          |  58 +-
 tests/Cargo.toml               |  17 +
 tests/lib.rs                   |   2 +
 tests/meson.build              |  72 ++-
 tests/qapi-cabi.rs             |   5 +
 tests/qapi.rs                  |  11 +
 tests/qapi_ffi.rs              |   8 +
 tests/vm/fedora                |  12 +-
 tests/vm/freebsd               |   1 +
 61 files changed, 3794 insertions(+), 333 deletions(-)
 create mode 100644 qga/qapi-cabi.c
 create mode 100644 tests/qapi-cabi.c
 create mode 100644 .cargo/config.toml.in
 create mode 100644 .cargo/meson.build
 create mode 100644 Cargo.lock
 create mode 100644 Cargo.toml
 create mode 100644 qga/Cargo.toml
 create mode 100644 qga/lib.rs
 create mode 100644 qga/qapi-cabi.rs
 create mode 100644 qga/qapi.rs
 create mode 100644 qga/qapi_ffi.rs
 create mode 100644 qga/qmp/hostname.rs
 create mode 100644 qga/qmp/mod.rs
 create mode 100644 qga/qmp/vcpus.rs
 create mode 100644 rust/common/Cargo.toml
 create mode 100644 rust/common/src/error.rs
 create mode 100644 rust/common/src/ffi.rs
 create mode 100644 rust/common/src/lib.rs
 create mode 100644 rust/common/src/qemu.rs
 create mode 100644 rust/common/src/qmp.rs
 create mode 100644 rust/common/src/translate.rs
 create mode 160000 rust/vendored
 create mode 100644 scripts/cargo_wrapper.py
 create mode 100644 scripts/configh_to_cfg.py
 create mode 100644 scripts/diff_commands.py
 create mode 100644 scripts/qapi/cabi.py
 create mode 100644 scripts/qapi/rs.py
 create mode 100644 scripts/qapi/rs_ffi.py
 create mode 100644 scripts/qapi/rs_types.py
 create mode 100644 tests/Cargo.toml
 create mode 100644 tests/lib.rs
 create mode 100644 tests/qapi-cabi.rs
 create mode 100644 tests/qapi.rs
 create mode 100644 tests/qapi_ffi.rs

-- 
2.33.0.113.g6c40894d24



Re: [RFC v3 00/32] Rust binding for QAPI and qemu-ga QMP handler examples
Posted by Markus Armbruster 2 years, 7 months ago
Build fails for me:

make: Entering directory '/work/armbru/qemu/bld'
config-host.mak is out-of-date, running configure
  GIT     ui/keycodemapdb meson tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone slirp
fatal: remote error: upload-pack: not our ref 7077bbbd11a67d60062a9483f996113a349a4ca1
Fetched in submodule path 'rust/vendored', but it did not contain 7077bbbd11a67d60062a9483f996113a349a4ca1. Direct fetching of that commit failed.
/work/armbru/qemu/scripts/git-submodule.sh: failed to update modules

Unable to automatically checkout GIT submodules ' ui/keycodemapdb meson rust/vendored tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone slirp'.
If you require use of an alternative GIT binary (for example to
enable use of a transparent proxy), then please specify it by
running configure by with the '--with-git' argument. e.g.

 $ ./configure --with-git='tsocks git'

Alternatively you may disable automatic GIT submodule checkout
with:

 $ ./configure --with-git-submodules=validate

and then manually update submodules prior to running make, with:

 $ scripts/git-submodule.sh update  ui/keycodemapdb meson rust/vendored tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone slirp

make: *** No rule to make target 'config-host.mak', needed by 'meson.stamp'.
make: Failed to remake makefile 'config-host.mak'.
make: Failed to remake makefile 'Makefile'.
make: Target 'all' not remade because of errors.
make: Leaving directory '/work/armbru/qemu/bld'


Re: [RFC v3 00/32] Rust binding for QAPI and qemu-ga QMP handler examples
Posted by Marc-André Lureau 2 years, 7 months ago
Hi

On Wed, Sep 8, 2021 at 5:23 PM Markus Armbruster <armbru@redhat.com> wrote:

> Build fails for me:
>
> make: Entering directory '/work/armbru/qemu/bld'
> config-host.mak is out-of-date, running configure
>   GIT     ui/keycodemapdb meson tests/fp/berkeley-testfloat-3
> tests/fp/berkeley-softfloat-3 dtc capstone slirp
> fatal: remote error: upload-pack: not our ref
> 7077bbbd11a67d60062a9483f996113a349a4ca1
>

Looks like I didn't update the repository on github. done

I will update .gitmodule to use the repo on gitlab instead (gitlab.com:
marcandre.lureau/qemu-rust-vendored.git)

-- 
Marc-André Lureau
Re: [RFC v3 00/32] Rust binding for QAPI and qemu-ga QMP handler examples
Posted by Markus Armbruster 2 years, 7 months ago
Marc-André Lureau <marcandre.lureau@gmail.com> writes:

> Hi
>
> On Wed, Sep 8, 2021 at 5:23 PM Markus Armbruster <armbru@redhat.com> wrote:
>
>> Build fails for me:
>>
>> make: Entering directory '/work/armbru/qemu/bld'
>> config-host.mak is out-of-date, running configure
>>   GIT     ui/keycodemapdb meson tests/fp/berkeley-testfloat-3
>> tests/fp/berkeley-softfloat-3 dtc capstone slirp
>> fatal: remote error: upload-pack: not our ref
>> 7077bbbd11a67d60062a9483f996113a349a4ca1
>>
>
> Looks like I didn't update the repository on github. done
>
> I will update .gitmodule to use the repo on gitlab instead (gitlab.com:
> marcandre.lureau/qemu-rust-vendored.git)

Next error:

make -k -C ~/work/qemu/bld-x86 
make: Entering directory '/work/armbru/qemu/bld-x86'
  GIT     ui/keycodemapdb rust/vendored tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone slirp
[1/71] Generating qemu-version.h with a custom command (wrapped by meson to capture output)
[2/55] Generating cargo-qga with a custom command
FAILED: qga/libqga.args qga/libqga.a 
/usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/qga /work/armbru/qemu/qga /work/armbru/qemu/bld-x86 debug '' build-lib
Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/qga MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
Command: cargo rustc --target-dir /work/armbru/qemu/bld-x86/qga/rs-target --manifest-path /work/armbru/qemu/qga/Cargo.toml --offline --lib -- --cfg CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1 --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1 --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION --cfg HAVE_UTMPX --print native-static-libs
error: failed to select a version for the requirement `cc = "=1.0.70"`
candidate versions found which didn't match: 1.0.69
location searched: directory source `/work/armbru/qemu/rust/vendored` (which is replacing registry `https://github.com/rust-lang/crates.io-index`)
required by package `nix v0.20.1`
    ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
perhaps a crate was updated and forgotten to be re-vendored?
As a reminder, you're using offline mode (--offline) which can sometimes cause surprising resolution failures, if this error is too confusing you may wish to retry without the offline flag.

[3/55] Generating qga-qapi-cabi-rs with a custom command
FAILED: qga/qapi-cabi-rs 
/usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/qga /work/armbru/qemu/qga /work/armbru/qemu/bld-x86 debug '' build-bin qapi-cabi-rs -- --cfg QAPI_CABI
error: the option `Z` is only accepted on the nightly compiler

Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/qga MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
Command: cargo rustc --target-dir /work/armbru/qemu/bld-x86/qga/rs-target --manifest-path /work/armbru/qemu/qga/Cargo.toml --offline --bin qapi-cabi-rs -- --cfg CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1 --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1 --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION --cfg HAVE_UTMPX --cfg QAPI_CABI
error: failed to select a version for the requirement `cc = "=1.0.70"`
candidate versions found which didn't match: 1.0.69
location searched: directory source `/work/armbru/qemu/rust/vendored` (which is replacing registry `https://github.com/rust-lang/crates.io-index`)
required by package `nix v0.20.1`
    ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
perhaps a crate was updated and forgotten to be re-vendored?
As a reminder, you're using offline mode (--offline) which can sometimes cause surprising resolution failures, if this error is too confusing you may wish to retry without the offline flag.

[4/55] Generating Test Rust library with a custom command
FAILED: tests/libqemu_tests.args tests/libqemu_tests.a 
/usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/tests /work/armbru/qemu/tests /work/armbru/qemu/bld-x86 debug '' build-lib
Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/tests MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
Command: cargo rustc --target-dir /work/armbru/qemu/bld-x86/tests/rs-target --manifest-path /work/armbru/qemu/tests/Cargo.toml --offline --lib -- --cfg CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1 --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1 --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION --cfg HAVE_UTMPX --print native-static-libs
error: failed to select a version for the requirement `cc = "=1.0.70"`
candidate versions found which didn't match: 1.0.69
location searched: directory source `/work/armbru/qemu/rust/vendored` (which is replacing registry `https://github.com/rust-lang/crates.io-index`)
required by package `nix v0.20.1`
    ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
perhaps a crate was updated and forgotten to be re-vendored?
As a reminder, you're using offline mode (--offline) which can sometimes cause surprising resolution failures, if this error is too confusing you may wish to retry without the offline flag.

[5/55] Generating QAPI test (include) with a custom command
[6/20] Generating qapi-cabi-rs with a custom command
FAILED: tests/qapi-cabi-rs 
/usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/tests /work/armbru/qemu/tests /work/armbru/qemu/bld-x86 debug '' build-bin qapi-cabi-rs -- --cfg QAPI_CABI
error: the option `Z` is only accepted on the nightly compiler

Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/tests MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
Command: cargo rustc --target-dir /work/armbru/qemu/bld-x86/tests/rs-target --manifest-path /work/armbru/qemu/tests/Cargo.toml --offline --bin qapi-cabi-rs -- --cfg CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1 --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1 --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION --cfg HAVE_UTMPX --cfg QAPI_CABI
error: failed to select a version for the requirement `cc = "=1.0.70"`
candidate versions found which didn't match: 1.0.69
location searched: directory source `/work/armbru/qemu/rust/vendored` (which is replacing registry `https://github.com/rust-lang/crates.io-index`)
required by package `nix v0.20.1`
    ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
perhaps a crate was updated and forgotten to be re-vendored?
As a reminder, you're using offline mode (--offline) which can sometimes cause surprising resolution failures, if this error is too confusing you may wish to retry without the offline flag.

ninja: build stopped: cannot make progress due to previous errors.
make: *** [Makefile:156: run-ninja] Error 1
make: Target 'all' not remade because of errors.
make: Leaving directory '/work/armbru/qemu/bld-x86'


Re: [RFC v3 00/32] Rust binding for QAPI and qemu-ga QMP handler examples
Posted by Marc-André Lureau 2 years, 7 months ago
Hi

On Thu, Sep 9, 2021 at 2:31 PM Markus Armbruster <armbru@redhat.com> wrote:

> Marc-André Lureau <marcandre.lureau@gmail.com> writes:
>
> > Hi
> >
> > On Wed, Sep 8, 2021 at 5:23 PM Markus Armbruster <armbru@redhat.com>
> wrote:
> >
> >> Build fails for me:
> >>
> >> make: Entering directory '/work/armbru/qemu/bld'
> >> config-host.mak is out-of-date, running configure
> >>   GIT     ui/keycodemapdb meson tests/fp/berkeley-testfloat-3
> >> tests/fp/berkeley-softfloat-3 dtc capstone slirp
> >> fatal: remote error: upload-pack: not our ref
> >> 7077bbbd11a67d60062a9483f996113a349a4ca1
> >>
> >
> > Looks like I didn't update the repository on github. done
> >
> > I will update .gitmodule to use the repo on gitlab instead (gitlab.com:
> > marcandre.lureau/qemu-rust-vendored.git)
>
> Next error:
>
> make -k -C ~/work/qemu/bld-x86
> make: Entering directory '/work/armbru/qemu/bld-x86'
>   GIT     ui/keycodemapdb rust/vendored tests/fp/berkeley-testfloat-3
> tests/fp/berkeley-softfloat-3 dtc capstone slirp
> [1/71] Generating qemu-version.h with a custom command (wrapped by meson
> to capture output)
> [2/55] Generating cargo-qga with a custom command
> FAILED: qga/libqga.args qga/libqga.a
> /usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh
> /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/qga
> /work/armbru/qemu/qga /work/armbru/qemu/bld-x86 debug '' build-lib
> Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/qga
> MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
> Command: cargo rustc --target-dir /work/armbru/qemu/bld-x86/qga/rs-target
> --manifest-path /work/armbru/qemu/qga/Cargo.toml --offline --lib -- --cfg
> CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg
> CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg
> CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg
> CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg
> CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg
> CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg
> CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg
> CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg
> CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1
> --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg
> CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg
> CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM
> --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg
> CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg
> CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg
> CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg
> CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO
> --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg
> CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC
> --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg
> CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg
> CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg
> CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg
> CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg
> CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg
> CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg
> CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg
> CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg
> CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg
> CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg
> CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1
> --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg
> CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg
> CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg
> CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE
> --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg
> CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg
> CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg
> CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg
> CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg
> CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS
> --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg
> CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg
> CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI
> --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg
> CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA
> --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg
> CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg
> CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg
> CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg
> CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H
> --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP
> --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg
> HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION
> --cfg HAVE_UTMPX --print native-static-libs
> error: failed to select a version for the requirement `cc = "=1.0.70"`
> candidate versions found which didn't match: 1.0.69
> location searched: directory source `/work/armbru/qemu/rust/vendored`
> (which is replacing registry `
> https://github.com/rust-lang/crates.io-index`
> <https://github.com/rust-lang/crates.io-index>)
> required by package `nix v0.20.1`
>     ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
> perhaps a crate was updated and forgotten to be re-vendored?
> As a reminder, you're using offline mode (--offline) which can sometimes
> cause surprising resolution failures, if this error is too confusing you
> may wish to retry without the offline flag.
>
>
Yes, my bad. See discussion in "[RFC v3 13/32] rust: use vendored-sources".
If you reset rust/vendored to origin/master (and commit that to avoid sync
back), it should work.


> [3/55] Generating qga-qapi-cabi-rs with a custom command
> FAILED: qga/qapi-cabi-rs
> /usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh
> /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/qga
> /work/armbru/qemu/qga /work/armbru/qemu/bld-x86 debug '' build-bin
> qapi-cabi-rs -- --cfg QAPI_CABI
> error: the option `Z` is only accepted on the nightly compiler
>
> Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/qga
> MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
> Command: cargo rustc --target-dir /work/armbru/qemu/bld-x86/qga/rs-target
> --manifest-path /work/armbru/qemu/qga/Cargo.toml --offline --bin
> qapi-cabi-rs -- --cfg CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg
> CONFIG_ATOMIC64 --cfg CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg
> CONFIG_AUDIO_PA --cfg CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg
> CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg
> CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg
> CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg
> CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg
> CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg
> CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1
> --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg
> CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg
> CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM
> --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg
> CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg
> CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg
> CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg
> CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO
> --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg
> CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC
> --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg
> CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg
> CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg
> CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg
> CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg
> CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg
> CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg
> CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg
> CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg
> CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg
> CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg
> CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1
> --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg
> CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg
> CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg
> CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE
> --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg
> CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg
> CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg
> CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg
> CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg
> CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS
> --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg
> CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg
> CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI
> --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg
> CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA
> --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg
> CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg
> CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg
> CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg
> CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H
> --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP
> --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg
> HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION
> --cfg HAVE_UTMPX --cfg QAPI_CABI
> error: failed to select a version for the requirement `cc = "=1.0.70"`
> candidate versions found which didn't match: 1.0.69
> location searched: directory source `/work/armbru/qemu/rust/vendored`
> (which is replacing registry `
> https://github.com/rust-lang/crates.io-index`
> <https://github.com/rust-lang/crates.io-index>)
> required by package `nix v0.20.1`
>     ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
> perhaps a crate was updated and forgotten to be re-vendored?
> As a reminder, you're using offline mode (--offline) which can sometimes
> cause surprising resolution failures, if this error is too confusing you
> may wish to retry without the offline flag.
>
> [4/55] Generating Test Rust library with a custom command
> FAILED: tests/libqemu_tests.args tests/libqemu_tests.a
> /usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh
> /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/tests
> /work/armbru/qemu/tests /work/armbru/qemu/bld-x86 debug '' build-lib
> Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/tests
> MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
> Command: cargo rustc --target-dir
> /work/armbru/qemu/bld-x86/tests/rs-target --manifest-path
> /work/armbru/qemu/tests/Cargo.toml --offline --lib -- --cfg CONFIG_ACCEPT4
> --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg CONFIG_ATTR --cfg
> CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg CONFIG_AVX2_OPT --cfg
> CONFIG_BDRV_RO_WHITELIST --cfg CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS
> --cfg CONFIG_BRLAPI --cfg CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg
> CONFIG_CLOCK_ADJTIME --cfg CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg
> CONFIG_COROUTINE_POOL --cfg CONFIG_CPUID_H --cfg CONFIG_CURL --cfg
> CONFIG_CURSES --cfg CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg
> CONFIG_DMG --cfg CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg
> CONFIG_EPOLL_CREATE1 --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg
> CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg
> CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM
> --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg
> CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg
> CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg
> CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg
> CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO
> --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg
> CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC
> --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg
> CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg
> CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg
> CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg
> CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg
> CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg
> CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg
> CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg
> CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg
> CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg
> CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg
> CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1
> --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg
> CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg
> CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg
> CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE
> --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg
> CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg
> CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg
> CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg
> CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg
> CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS
> --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg
> CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg
> CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI
> --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg
> CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA
> --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg
> CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg
> CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg
> CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg
> CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H
> --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP
> --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg
> HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION
> --cfg HAVE_UTMPX --print native-static-libs
> error: failed to select a version for the requirement `cc = "=1.0.70"`
> candidate versions found which didn't match: 1.0.69
> location searched: directory source `/work/armbru/qemu/rust/vendored`
> (which is replacing registry `
> https://github.com/rust-lang/crates.io-index`
> <https://github.com/rust-lang/crates.io-index>)
> required by package `nix v0.20.1`
>     ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
> perhaps a crate was updated and forgotten to be re-vendored?
> As a reminder, you're using offline mode (--offline) which can sometimes
> cause surprising resolution failures, if this error is too confusing you
> may wish to retry without the offline flag.
>
> [5/55] Generating QAPI test (include) with a custom command
> [6/20] Generating qapi-cabi-rs with a custom command
> FAILED: tests/qapi-cabi-rs
> /usr/bin/python3 /work/armbru/qemu/scripts/cargo_wrapper.py --configh
> /work/armbru/qemu/bld-x86/config-host.h /work/armbru/qemu/bld-x86/tests
> /work/armbru/qemu/tests /work/armbru/qemu/bld-x86 debug '' build-bin
> qapi-cabi-rs -- --cfg QAPI_CABI
> error: the option `Z` is only accepted on the nightly compiler
>
> Environment: MESON_CURRENT_BUILD_DIR=/work/armbru/qemu/bld-x86/tests
> MESON_BUILD_ROOT=/work/armbru/qemu/bld-x86 WINAPI_NO_BUNDLED_LIBRARIES=1
> Command: cargo rustc --target-dir
> /work/armbru/qemu/bld-x86/tests/rs-target --manifest-path
> /work/armbru/qemu/tests/Cargo.toml --offline --bin qapi-cabi-rs -- --cfg
> CONFIG_ACCEPT4 --cfg CONFIG_AF_VSOCK --cfg CONFIG_ATOMIC64 --cfg
> CONFIG_ATTR --cfg CONFIG_AUDIO_OSS --cfg CONFIG_AUDIO_PA --cfg
> CONFIG_AVX2_OPT --cfg CONFIG_BDRV_RO_WHITELIST --cfg
> CONFIG_BDRV_RW_WHITELIST --cfg CONFIG_BOCHS --cfg CONFIG_BRLAPI --cfg
> CONFIG_BYTESWAP_H --cfg CONFIG_CAPSTONE --cfg CONFIG_CLOCK_ADJTIME --cfg
> CONFIG_CLOOP --cfg CONFIG_CMPXCHG128 --cfg CONFIG_COROUTINE_POOL --cfg
> CONFIG_CPUID_H --cfg CONFIG_CURL --cfg CONFIG_CURSES --cfg
> CONFIG_DEBUG_MUTEX --cfg CONFIG_DEBUG_TCG --cfg CONFIG_DMG --cfg
> CONFIG_DUP3 --cfg CONFIG_EBPF --cfg CONFIG_EPOLL --cfg CONFIG_EPOLL_CREATE1
> --cfg CONFIG_EVENTFD --cfg CONFIG_FALLOCATE --cfg
> CONFIG_FALLOCATE_PUNCH_HOLE --cfg CONFIG_FALLOCATE_ZERO_RANGE --cfg
> CONFIG_FDATASYNC --cfg CONFIG_FDT --cfg CONFIG_FIEMAP --cfg CONFIG_GBM
> --cfg CONFIG_GETAUXVAL --cfg CONFIG_GETRANDOM --cfg CONFIG_GETTID --cfg
> CONFIG_GIO --cfg CONFIG_GLUSTERFS --cfg CONFIG_GLUSTERFS_DISCARD --cfg
> CONFIG_GLUSTERFS_FALLOCATE --cfg CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT --cfg
> CONFIG_GLUSTERFS_IOCB_HAS_STAT --cfg CONFIG_GLUSTERFS_XLATOR_OPT --cfg
> CONFIG_GLUSTERFS_ZEROFILL --cfg CONFIG_GNUTLS --cfg CONFIG_GNUTLS_CRYPTO
> --cfg CONFIG_GTK --cfg CONFIG_GUEST_AGENT --cfg CONFIG_HAS_ENVIRON --cfg
> CONFIG_INOTIFY --cfg CONFIG_INOTIFY1 --cfg CONFIG_INT128 --cfg CONFIG_IOVEC
> --cfg CONFIG_L2TPV3 --cfg CONFIG_LIBCAP_NG --cfg CONFIG_LIBISCSI --cfg
> CONFIG_LIBNFS --cfg CONFIG_LIBPMEM --cfg CONFIG_LIBPULSE --cfg
> CONFIG_LIBSSH --cfg CONFIG_LIBUDEV --cfg CONFIG_LINUX --cfg
> CONFIG_LINUX_AIO --cfg CONFIG_LINUX_MAGIC_H --cfg
> CONFIG_LIVE_BLOCK_MIGRATION --cfg CONFIG_LZO --cfg CONFIG_MADVISE --cfg
> CONFIG_MALLOC_TRIM --cfg CONFIG_MEMFD --cfg CONFIG_MPATH --cfg
> CONFIG_MPATH_NEW_API --cfg CONFIG_NUMA --cfg CONFIG_OPENGL --cfg
> CONFIG_OPEN_BY_HANDLE --cfg CONFIG_PARALLELS --cfg CONFIG_PIPE2 --cfg
> CONFIG_PLUGIN --cfg CONFIG_POSIX --cfg CONFIG_POSIX_FALLOCATE --cfg
> CONFIG_POSIX_MADVISE --cfg CONFIG_POSIX_MEMALIGN --cfg CONFIG_PPOLL --cfg
> CONFIG_PRCTL_PR_SET_TIMERSLACK --cfg CONFIG_PREADV --cfg
> CONFIG_PTHREAD_SETNAME_NP_W_TID --cfg CONFIG_PVRDMA --cfg CONFIG_QCOW1
> --cfg CONFIG_QED --cfg CONFIG_QOM_CAST_DEBUG --cfg CONFIG_RBD --cfg
> CONFIG_RDMA --cfg CONFIG_REPLICATION --cfg CONFIG_RTNETLINK --cfg
> CONFIG_SDL --cfg CONFIG_SDL_IMAGE --cfg CONFIG_SECCOMP --cfg
> CONFIG_SECRET_KEYRING --cfg CONFIG_SEM_TIMEDWAIT --cfg CONFIG_SENDFILE
> --cfg CONFIG_SETNS --cfg CONFIG_SIGNALFD --cfg CONFIG_SLIRP --cfg
> CONFIG_SLIRP_SMBD --cfg CONFIG_SNAPPY --cfg CONFIG_SPICE --cfg
> CONFIG_SPICE_PROTOCOL --cfg CONFIG_SPLICE --cfg CONFIG_STATX --cfg
> CONFIG_SYNCFS --cfg CONFIG_SYNC_FILE_RANGE --cfg CONFIG_SYSMACROS --cfg
> CONFIG_TCG --cfg CONFIG_THREAD_SETNAME_BYTHREAD --cfg CONFIG_TIMERFD --cfg
> CONFIG_TOOLS --cfg CONFIG_TPM --cfg CONFIG_TRACE_LOG --cfg CONFIG_USBFS
> --cfg CONFIG_USB_LIBUSB --cfg CONFIG_VALGRIND_H --cfg CONFIG_VDI --cfg
> CONFIG_VHOST_CRYPTO --cfg CONFIG_VHOST_KERNEL --cfg CONFIG_VHOST_NET --cfg
> CONFIG_VHOST_NET_USER --cfg CONFIG_VHOST_NET_VDPA --cfg CONFIG_VHOST_SCSI
> --cfg CONFIG_VHOST_USER --cfg CONFIG_VHOST_USER_BLK_SERVER --cfg
> CONFIG_VHOST_USER_FS --cfg CONFIG_VHOST_USER_VSOCK --cfg CONFIG_VHOST_VDPA
> --cfg CONFIG_VHOST_VSOCK --cfg CONFIG_VIRTFS --cfg CONFIG_VNC --cfg
> CONFIG_VNC_JPEG --cfg CONFIG_VNC_PNG --cfg CONFIG_VNC_SASL --cfg
> CONFIG_VVFAT --cfg CONFIG_WITH_RUST --cfg CONFIG_X11 --cfg
> CONFIG_XEN_BACKEND --cfg CONFIG_XFS --cfg CONFIG_XKBCOMMON --cfg
> CONFIG_ZSTD --cfg HAVE_BTRFS_H --cfg HAVE_COPY_FILE_RANGE --cfg HAVE_DRM_H
> --cfg HAVE_FSXATTR --cfg HAVE_HOST_BLOCK_DEVICE --cfg HAVE_IPPROTO_MPTCP
> --cfg HAVE_MLOCKALL --cfg HAVE_OPENPTY --cfg HAVE_PTY_H --cfg
> HAVE_STRCHRNUL --cfg HAVE_STRUCT_STAT_ST_ATIM --cfg HAVE_SYSTEM_FUNCTION
> --cfg HAVE_UTMPX --cfg QAPI_CABI
> error: failed to select a version for the requirement `cc = "=1.0.70"`
> candidate versions found which didn't match: 1.0.69
> location searched: directory source `/work/armbru/qemu/rust/vendored`
> (which is replacing registry `
> https://github.com/rust-lang/crates.io-index`
> <https://github.com/rust-lang/crates.io-index>)
> required by package `nix v0.20.1`
>     ... which is depended on by `qga v0.1.0 (/work/armbru/qemu/qga)`
> perhaps a crate was updated and forgotten to be re-vendored?
> As a reminder, you're using offline mode (--offline) which can sometimes
> cause surprising resolution failures, if this error is too confusing you
> may wish to retry without the offline flag.
>
> ninja: build stopped: cannot make progress due to previous errors.
> make: *** [Makefile:156: run-ninja] Error 1
> make: Target 'all' not remade because of errors.
> make: Leaving directory '/work/armbru/qemu/bld-x86'
>
>

-- 
Marc-André Lureau