Hi Peter, Specifically, 5.0 breaks the way yocto runqemu starts qemu-system-*. The installation path which is not known at qemu build time, is <arbitrary-prefix>/usr/{bin,share}. In general, though, I think it's a good idea to look in "reasonable" locations relative to the executable, maybe with command line options taking precedence.
Joe -----Original Message----- From: Peter Maydell <peter.mayd...@linaro.org> Sent: Tuesday, June 16, 2020 2:20 AM To: Slater, Joseph <joe.sla...@windriver.com> Cc: QEMU Developers <qemu-devel@nongnu.org>; MacLeod, Randy <randy.macl...@windriver.com>; Marc-André Lureau <marcandre.lur...@redhat.com>; Paolo Bonzini <pbonz...@redhat.com> Subject: Re: [PATCH 1/1] os_find_datadir: search as in version 4.2 On Tue, 16 Jun 2020 at 00:00, Joe Slater <joe.sla...@windriver.com> wrote: > > Always look for ../share/qemu then ../pc-bios when looking for datadir. Could you provide some more context, please? Why is this change useful; presumably we broke some setup in 5.0, but what exactly ? I'm guessing this might be a regression introduced by commit 6dd2dacedd83d12328 so I'm ccing the relevant people. > Signed-off-by: Joe Slater <joe.sla...@windriver.com> > --- > os-posix.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/os-posix.c b/os-posix.c > index 3cd52e1e70..f77da94bf6 100644 > --- a/os-posix.c > +++ b/os-posix.c > @@ -82,8 +82,9 @@ void os_setup_signal_handling(void) > > /* > * Find a likely location for support files using the location of the binary. > + * Typically, this would be "$bindir/../share/qemu". > * When running from the build tree this will be "$bindir/../pc-bios". > - * Otherwise, this is CONFIG_QEMU_DATADIR. > + * Otherwise, this is CONFIG_QEMU_DATADIR as constructed by configure. > */ > char *os_find_datadir(void) > { > @@ -93,6 +94,12 @@ char *os_find_datadir(void) > exec_dir = qemu_get_exec_dir(); > g_return_val_if_fail(exec_dir != NULL, NULL); > > + dir = g_build_filename(exec_dir, "..", "share", "qemu", NULL); > + if (g_file_test(dir, G_FILE_TEST_IS_DIR)) { > + return g_steal_pointer(&dir); > + } > + g_free(dir); /* no autofree this time */ > + > dir = g_build_filename(exec_dir, "..", "pc-bios", NULL); > if (g_file_test(dir, G_FILE_TEST_IS_DIR)) { > return g_steal_pointer(&dir); > -- > 2.17.1