Hi,

Warner, do you remember what this is about?

(https://cgit.freebsd.org/ports/commit/emulators/qemu-devel/files/patch-util_meson.build?id=2ab482e2c8f51eae7ffd747685b7f181fe1b3809 isn't very verbose).

On 25/1/24 20:48, Ilya Leoshkevich wrote:
make vm-build-freebsd fails with:

     ld: error: undefined symbol: inotify_init1
     >>> referenced by filemonitor-inotify.c:183 
(../src/util/filemonitor-inotify.c:183)
     >>>               util_filemonitor-inotify.c.o:(qemu_file_monitor_new) in 
archive libqemuutil.a

On FreeBSD inotify functions are defined in libinotify.so, so it might
be tempting to add it to the dependencies. Doing so, however, reveals
that this library handles rename events differently from Linux:

     $ FILEMONITOR_DEBUG=1 build/tests/unit/test-util-filemonitor
     Rename /tmp/test-util-filemonitor-K13LI2/fish/one.txt -> 
/tmp/test-util-filemonitor-K13LI2/two.txt
     Event id=200000000 event=2 file=one.txt
     Queue event id 200000000 event 2 file one.txt
     Queue event id 100000000 event 2 file two.txt
     Queue event id 100000002 event 2 file two.txt
     Queue event id 100000000 event 0 file two.txt
     Queue event id 100000002 event 0 file two.txt
     Event id=100000000 event=0 file=two.txt
     Expected event 0 but got 2

Wouldn't it be better to use a runtime check in qemu_file_monitor_new()?

FreeBSD itself disables this functionality in the respective port [1].
So do it upstream too.

[1] 
https://cgit.freebsd.org/ports/tree/emulators/qemu-devel/files/patch-util_meson.build?id=984366c18f1bc54e38751afc29be08c596b83696

Signed-off-by: Ilya Leoshkevich <i...@linux.ibm.com>
---
  meson.build | 1 +
  1 file changed, 1 insertion(+)

diff --git a/meson.build b/meson.build
index d0329966f1b..3d67d78b522 100644
--- a/meson.build
+++ b/meson.build
@@ -2403,6 +2403,7 @@ config_host_data.set('CONFIG_GETRANDOM',
  config_host_data.set('CONFIG_INOTIFY',
                       cc.has_header_symbol('sys/inotify.h', 'inotify_init'))
  config_host_data.set('CONFIG_INOTIFY1',
+                     host_os != 'freebsd' and
                       cc.has_header_symbol('sys/inotify.h', 'inotify_init1'))
  config_host_data.set('CONFIG_PRCTL_PR_SET_TIMERSLACK',
                       cc.has_header_symbol('sys/prctl.h', 'PR_SET_TIMERSLACK'))


Reply via email to