GNOME Bugzilla – Bug 333497
gamin 0.17 does not build on SUSE 10.0 (kernel 2.6.13)
Last modified: 2018-07-01 08:46:56 UTC
Please describe the problem: gamin 0.17 does not build unless --disable-inotify is used on SUSE Linux 10.0 (kernel 2.6.13): Making all in server gam_inotify.c: In function 'mask_to_gam_event': gam_inotify.c:259: error: 'IN_MOVE_SELF' undeclared (first use in this function) gam_inotify.c:259: error: (Each undeclared identifier is reported only once gam_inotify.c:259: error: for each function it appears in.) gam_inotify.c: In function 'gam_inotify_mask_to_gam_file_event': gam_inotify.c:295: error: 'IN_MOVE_SELF' undeclared (first use in this function) gam_inotify.c: In function 'gam_inotify_mask_to_gam_dir_event': gam_inotify.c:325: error: 'IN_MOVE_SELF' undeclared (first use in this function) gam_inotify.c: In function 'gam_inotify_process_event': gam_inotify.c:551: error: 'IN_MOVE_SELF' undeclared (first use in this function) gam_inotify.c: In function 'gam_inotify_add_subscription': gam_inotify.c:824: error: 'IN_MOVE_SELF' undeclared (first use in this function) gam_inotify.c: In function 'gam_inotify_nolonger_missing': gam_inotify.c:1193: error: 'IN_MOVE_SELF' undeclared (first use in this function) gam_inotify.c: In function 'gam_inotify_nolonger_link': gam_inotify.c:1299: error: 'IN_MOVE_SELF' undeclared (first use in this function) Steps to reproduce: 1. grab gamin 0.17 2. unpack 3. ./configure && make Actual results: the build aborts Expected results: a proper gamin build (OK, given the many bugs I've seen in gamin's short life, I don't actually expect anything, only that this insanity of dropping nonstable unusable software into GNOME stops) Does this happen every time? yes Other information:
"dropping nonstable unusable software into GNOME stops" gamin is not part of GNOME releases. Use FAM if you don't like it. And if your kernel headers are broken or not the same as the one shipped in upstream, go blame your distro, thank you. Daniel
The kernel headers /usr/src/linux/include/linux/inotify.h are fine, but gamin isn't using them, but is using the glibc headers /usr/include/linux/inotify.h instead, which appear to be older than kernel headers. This is standard and canonical behavior for up-to-date Linux distributions though, according to frequent linux-kernel@vger.kernel.org replies/recommendations. Either gamin needs to check if IN_MOVE_SELF is actually present or make efforts to grab the kernel headers rather than the glibc-headers. You can see here glibc-headers lacks the macro, but kernel headers define it: $ for i in $(locate linux/inotify.h) ; do echo $i: ; grep IN_MOVE_SELF $i ; done /usr/include/linux/inotify.h: /usr/src/linux-2.6.13-15.8/include/linux/inotify.h: #define IN_MOVE_SELF 0x00000800 /* Self was moved */ IN_MOVE_SELF) $ rpm -qf /usr/include/linux/inotify.h glibc-devel-2.3.5-40 WRT stability and usability: 1. Gamin isn't stable. May I ask you to help making this quite clear in the documentation and requesting that GNOME and other distributors stop using Gamin until it's feature-complete, debugged and stable? Thank you. 2. Gamin isn't solid either. I stopped using it when gamin 0.1.5 plus SUSE patches either hung, or crashed applications, or went into 100% CPU loops. I don't know which interface it was using at the time, and I doubt you're interested in details for an obsolete version. (kernel-space UDP-based NFSv3 and autofs were involved) Good speed with future gamin development.
apparently -I/usr/src/linux/include early on the compiler command for server/gam_inotify.c helps to get the stuff compiled, the flood tests ("make check") however fail: dnotify8.py -- dnotify8.py Error: monitor got 2 events insteads of 3 ... flood.py -- flood.py Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 8 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 9 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 1 Got callback: /tmp/gamin-0.1.7/python/tests/temp_dir/a, 7 Error: event flow didn't worked properly, gor 29 events flood2.py -- flood2.py Error: event flow didn't worked properly, gor 30 events flood3.py -- flood3.py Error: event flow didn't worked properly, got 28 events flood4.py -- flood4.py Error: event flow didn't worked properly, gor 152 events I'm not sure if this is related to the problem at hand.
No. The people (from Novell) who worked on the inotify part of the code broke the regression tests. They say it work fine anyway. Daniel
Re comment #4: if they say so -- I'm not using gamin in production here. I'd thought I'd report the problems I'd seen nonetheless.
*** Bug 333533 has been marked as a duplicate of this bug. ***
Does this issue still persist with gamin 0.1.8? There have been some fixes re inotify.
gamin is not under active development anymore and has not seen code changes for many years. Its codebase has been archived: https://gitlab.gnome.org/Archive/gamin/commits/master Closing this report as WONTFIX as part of Bugzilla Housekeeping to reflect reality. Please feel free to reopen this ticket (or rather transfer the project to GNOME Gitlab, as GNOME Bugzilla is deprecated) if anyone takes the responsibility for active development again.