On 5/8/2026 8:24 AM, Peter Maydell wrote:
> We have a set of binaries that we call "tools": they're built based on
> the --enable-tools/--disable-tools configure setting, they're
> documented in docs/tools, and they're standalone executables of one
> form or another.
>
> Currently the sources for these are a bit scattered: many still in the
> top level source directory, some in contrib, one or two actually in
> the tools directory.
>
> As an initial attempt at cleanup, this patchset moves the sources for
> qemu-bridge-helper, qemu-edid, qemu-img, qemu-io, qemu-nbd,
> qemu-keymap, qemu-vmsr-helper and elf2dmp into the tools/ directory.
>
> The patchseries also moves the ebfp skeleton sources from tools/ebpf/
> to ebpf/bpf-src/, because this isn't a tool by the above definition.
>
> As per my thread from a while back, I would ultimately like us to
> clean up contrib/:
> https://lore.kernel.org/qemu-devel/CAFEAcA_5HvGriDsWnb1ALuA_dgG320eKv7yuM2kThv=rfos...@mail.gmail.com/
> But parts of that clearly need more discussion. So this is just doing
> some parts that I hope are not controversial.
>
> Annoyingly, meson doesn't seem to provide any way for a subdirectory
> meson.build to say "the foo.c in this subdir builds into a foo
> executable that lives at the top level of the builddir". And we have a
> lot of test harness stuff plus user muscle memory that assumes that
> qemu-img and qemu-io live there. So the build runes for these tools
> have to stay in the top level meson.build (and tools/meson.build
> remains an empty file). The exception is that contrib/elf2dmp/elf2dmp
> is now tools/elf2dmp/elf2dmp, but I think the set of people who were
> running that from the build directory will be small.
>
It's a deliberate design more than an annoyance. It pushes users to make
things explicit at top level, which is good to understand what is built
and how, and hide details in subdirs in variables. QEMU's top level
meson.build is over complex, so it may appear more as a burden than a
benefit though.
> thanks
> -- PMM
>
>
> Peter Maydell (9):
> ebpf: move ebpf skeleton source to ebpf/ directory
> tools: Move qemu-bridge-helper sources to tools/ directory
> tools: Move qemu-edid sources to tools/ directory
> tools: Move qemu-img sources to tools/ directory
> tools: Move qemu-io sources to tools/ directory
> tools: Move qemu-nbd sources to tools/ directory
> tools: Move qemu-keymap sources to tools/ directory
> tools: Move qemu-vmsr-helper up a directory level
> tools: Move elf2dmp from contrib/ to tools/
>
> MAINTAINERS | 15 +++++++-------
> docs/tools/qemu-img.rst | 2 +-
> {tools/ebpf => ebpf/bpf-src}/Makefile.ebpf | 2 +-
> {tools/ebpf => ebpf/bpf-src}/rss.bpf.c | 0
> meson.build | 20 +++++++++----------
> {contrib => tools}/elf2dmp/addrspace.c | 0
> {contrib => tools}/elf2dmp/addrspace.h | 0
> {contrib => tools}/elf2dmp/download.c | 0
> {contrib => tools}/elf2dmp/download.h | 0
> {contrib => tools}/elf2dmp/err.h | 0
> {contrib => tools}/elf2dmp/kdbg.h | 0
> {contrib => tools}/elf2dmp/main.c | 0
> {contrib => tools}/elf2dmp/meson.build | 0
> {contrib => tools}/elf2dmp/pdb.c | 0
> {contrib => tools}/elf2dmp/pdb.h | 0
> {contrib => tools}/elf2dmp/pe.h | 0
> {contrib => tools}/elf2dmp/qemu_elf.c | 0
> {contrib => tools}/elf2dmp/qemu_elf.h | 0
> .../qemu-bridge-helper.c | 0
> qemu-edid.c => tools/qemu-edid.c | 0
> qemu-img-cmds.hx => tools/qemu-img-cmds.hx | 0
> qemu-img.c => tools/qemu-img.c | 0
> qemu-io-cmds.c => tools/qemu-io-cmds.c | 0
> qemu-io.c => tools/qemu-io.c | 0
> qemu-keymap.c => tools/qemu-keymap.c | 0
> qemu-nbd.c => tools/qemu-nbd.c | 0
> tools/{i386 => }/qemu-vmsr-helper.c | 0
> tools/{i386 => }/rapl-msr-index.h | 0
> 28 files changed, 20 insertions(+), 19 deletions(-)
> rename {tools/ebpf => ebpf/bpf-src}/Makefile.ebpf (96%)
> rename {tools/ebpf => ebpf/bpf-src}/rss.bpf.c (100%)
> rename {contrib => tools}/elf2dmp/addrspace.c (100%)
> rename {contrib => tools}/elf2dmp/addrspace.h (100%)
> rename {contrib => tools}/elf2dmp/download.c (100%)
> rename {contrib => tools}/elf2dmp/download.h (100%)
> rename {contrib => tools}/elf2dmp/err.h (100%)
> rename {contrib => tools}/elf2dmp/kdbg.h (100%)
> rename {contrib => tools}/elf2dmp/main.c (100%)
> rename {contrib => tools}/elf2dmp/meson.build (100%)
> rename {contrib => tools}/elf2dmp/pdb.c (100%)
> rename {contrib => tools}/elf2dmp/pdb.h (100%)
> rename {contrib => tools}/elf2dmp/pe.h (100%)
> rename {contrib => tools}/elf2dmp/qemu_elf.c (100%)
> rename {contrib => tools}/elf2dmp/qemu_elf.h (100%)
> rename qemu-bridge-helper.c => tools/qemu-bridge-helper.c (100%)
> rename qemu-edid.c => tools/qemu-edid.c (100%)
> rename qemu-img-cmds.hx => tools/qemu-img-cmds.hx (100%)
> rename qemu-img.c => tools/qemu-img.c (100%)
> rename qemu-io-cmds.c => tools/qemu-io-cmds.c (100%)
> rename qemu-io.c => tools/qemu-io.c (100%)
> rename qemu-keymap.c => tools/qemu-keymap.c (100%)
> rename qemu-nbd.c => tools/qemu-nbd.c (100%)
> rename tools/{i386 => }/qemu-vmsr-helper.c (100%)
> rename tools/{i386 => }/rapl-msr-index.h (100%)
>
For series:
Reviewed-by: Pierrick Bouvier <[email protected]>