Re: [PATCH 00/19] rust: QObject and QAPI bindings
Paolo Bonzini <[email protected]>
| Newsgroups | org.nongnu.qemu-rust,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 12/9/25 07:01, Markus Armbruster wrote: > Markus Armbruster <[email protected]> writes: > >> I applied, ran make, and it didn't create qapi-types.rs and >> test-qapi-types.rs for me. What am I missing? > > Looks like I have to run with -B qapi.backend.QAPIRsBackend. > > -B is meant for out-of-tree backends. Commit dde279925c9 explains: > > qapi: pluggable backend code generators > > The 'qapi.backend.QAPIBackend' class defines an API contract for code > generators. The current generator is put into a new class > 'qapi.backend.QAPICBackend' and made to be the default impl. > > A custom generator can be requested using the '-k' arg which takes a > fully qualified python class name > > qapi-gen.py -B the.python.module.QAPIMyBackend > > This allows out of tree code to use the QAPI generator infrastructure > to create new language bindings for QAPI schemas. This has the caveat > that the QAPI generator APIs are not guaranteed stable, so consumers > of this feature may have to update their code to be compatible with > future QEMU releases. > > Using it for the in-tree Rust backend is fine for a prototype. > Mentioning it in a commit message or the cover letter would've saved me > some digging. Well, it wasn't intentional - right now it does this: test_qapi_rs_files = custom_target('QAPI Rust', output: 'test-qapi-types.rs', input: [ files(meson.project_source_root() + '/tests/qapi-schema/qapi-schema-test.json') ], command: [ qapi_gen, '-o', meson.current_build_dir(), '-b', '@INPUT0@', '-B', 'qapi.backend.QAPIRsBackend', '-p', 'test-' ], depend_files: [ qapi_inputs, qapi_gen_depends ]) so "make rust/tests/test-qapi-types.rs" will work, and so will "make" if you have --enable-rust. Let us know what you'd prefer and we'll switch. Alternatively, retconning -B's meaning so that it applies to Rust will work too. :) Paolo