Right now, the installation of QEMU is not relocatable; there is a local hack in os_find_datadir() so that Windows binaries look for ROMs in the executable directory, but that has several limitations:
- it does not extend to configuration files, icons, etc. - it does not allow changing the data directory in any way - it does not apply to POSIX platforms This series fixes that by making all paths within the installation prefix relative to the executable. This in practice means all paths will be relocatable, except for /etc and /var if they're moved outside the prefix. Here is an example of relocatability; before: $ make DESTDIR=$PWD/test install $ cd test/usr/local/bin $ ./qemu-system-ppc -L help /usr/local/share/qemu-firmware /usr/local/share/qemu After: $ make DESTDIR=$PWD/test install $ cd test/usr/local/bin $ ./qemu-system-ppc -L help /home/pbonzini/work/upstream/qemu/+build/test/usr/local/bin/../share/qemu-firmware /home/pbonzini/work/upstream/qemu/+build/test/usr/local/bin/../share/qemu The main benefit of this is on Windows, as mentioned above; but it also makes behavior more consistent across platforms and allows the removal of the hack that hides the "c:/Program Files/QEMU" prefix from Meson during cross compilation. Paolo Paolo Bonzini (13): fuzz: use qemu_get_exec_dir oslib: do not call g_strdup from qemu_get_exec_dir oslib-posix: default exec_dir to bindir cutils: introduce get_relocated_path oslib-posix: relocate path to /var module: relocate path to modules net: relocate paths to helpers and scripts vl: relocate paths to data directories vl: relocate path to configuration file qemu-bridge-helper: relocate path to default ACL qga: relocate path to default configuration and hook ui: relocate paths to icons and translations configure: use a platform-neutral prefix configure | 30 ++++++++------------ include/net/net.h | 4 +-- include/qemu-common.h | 1 - include/qemu/cutils.h | 12 ++++++++ include/qemu/osdep.h | 8 ++---- include/sysemu/sysemu.h | 2 +- meson.build | 4 +-- net/tap.c | 28 ++++++++++++++----- os-posix.c | 24 ---------------- os-win32.c | 11 -------- qemu-bridge-helper.c | 9 ++++-- qga/main.c | 8 ++++-- softmmu/vl.c | 43 ++++++++++++++++++++--------- tests/qtest/fuzz/fuzz.c | 12 ++++---- ui/gtk.c | 10 +++++-- ui/sdl2.c | 9 ++++-- util/cutils.c | 61 +++++++++++++++++++++++++++++++++++++++++ util/module.c | 10 ++----- util/oslib-posix.c | 35 +++++++++++------------ util/oslib-win32.c | 14 +++++++--- 20 files changed, 205 insertions(+), 130 deletions(-) -- 2.26.2