When building a default (top level) build from git, it dies with the following messages: [2357/3285] Compiling source3/lib/system_smbd.c ../source3/lib/events.c:22: fatal error: tevent_internal.h: No such file or directory compilation terminated. [2358/3285] Compiling source3/lib/audit.c Waf: Leaving directory `/home/bradh-devel/openchange.git/samba4/bin' Build failed: -> task failed (err #1): {task: cc events.c -> events_39.o} make: *** [all] Error 1 Error in samba4 make (error code 2) This is the default openchange style build (where we build talloc, tdb, tevent, ldb as separate libs, then link against those). So tevent_private.h isn't available. The problem is deeper than just an incorrect include - there is use of private structures and non-exported functions. So if we just use <tevent.h> instead of <tevent_internal.h>, we get: ../source3/lib/events.c: In function ‘tevent_get_poll_private’: ../source3/lib/events.c:43: error: dereferencing pointer to incomplete type ../source3/lib/events.c:46: error: dereferencing pointer to incomplete type ../source3/lib/events.c: In function ‘count_fds’: ../source3/lib/events.c:61: error: dereferencing pointer to incomplete type ../source3/lib/events.c:61: error: dereferencing pointer to incomplete type ../source3/lib/events.c:62: error: dereferencing pointer to incomplete type ../source3/lib/events.c:64: error: dereferencing pointer to incomplete type ../source3/lib/events.c:65: error: dereferencing pointer to incomplete type ../source3/lib/events.c: In function ‘event_add_to_poll_args’: ../source3/lib/events.c:131: error: dereferencing pointer to incomplete type ../source3/lib/events.c:131: error: dereferencing pointer to incomplete type ../source3/lib/events.c:134: error: dereferencing pointer to incomplete type ../source3/lib/events.c:138: error: dereferencing pointer to incomplete type ../source3/lib/events.c:142: error: dereferencing pointer to incomplete type ../source3/lib/events.c:149: error: dereferencing pointer to incomplete type ../source3/lib/events.c:152: error: dereferencing pointer to incomplete type ../source3/lib/events.c:154: error: dereferencing pointer to incomplete type ../source3/lib/events.c:157: error: dereferencing pointer to incomplete type ../source3/lib/events.c:164: error: dereferencing pointer to incomplete type ../source3/lib/events.c:168: error: dereferencing pointer to incomplete type ../source3/lib/events.c:174: error: dereferencing pointer to incomplete type ../source3/lib/events.c: In function ‘run_events_poll’: ../source3/lib/events.c:192: error: dereferencing pointer to incomplete type ../source3/lib/events.c:193: error: implicit declaration of function ‘tevent_common_check_signal’ ../source3/lib/events.c:197: error: dereferencing pointer to incomplete type ../source3/lib/events.c:198: error: implicit declaration of function ‘tevent_common_loop_immediate’ ../source3/lib/events.c:204: error: dereferencing pointer to incomplete type ../source3/lib/events.c:205: error: dereferencing pointer to incomplete type ../source3/lib/events.c:217: error: dereferencing pointer to incomplete type ../source3/lib/events.c:220: error: dereferencing pointer to incomplete type ../source3/lib/events.c:220: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:223: error: dereferencing pointer to incomplete type ../source3/lib/events.c:226: error: dereferencing pointer to incomplete type ../source3/lib/events.c:226: error: dereferencing pointer to incomplete type ../source3/lib/events.c:239: error: dereferencing pointer to incomplete type ../source3/lib/events.c:242: error: dereferencing pointer to incomplete type ../source3/lib/events.c:242: error: dereferencing pointer to incomplete type ../source3/lib/events.c:246: error: dereferencing pointer to incomplete type ../source3/lib/events.c:247: error: dereferencing pointer to incomplete type ../source3/lib/events.c:252: error: dereferencing pointer to incomplete type ../source3/lib/events.c:254: error: dereferencing pointer to incomplete type ../source3/lib/events.c:255: error: dereferencing pointer to incomplete type ../source3/lib/events.c:267: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:268: error: dereferencing pointer to incomplete type ../source3/lib/events.c:269: error: dereferencing pointer to incomplete type ../source3/lib/events.c:269: error: dereferencing pointer to incomplete type ../source3/lib/events.c: In function ‘get_timed_events_timeout’: ../source3/lib/events.c:282: error: dereferencing pointer to incomplete type ../source3/lib/events.c:282: error: dereferencing pointer to incomplete type ../source3/lib/events.c:285: error: dereferencing pointer to incomplete type ../source3/lib/events.c:291: error: dereferencing pointer to incomplete type ../source3/lib/events.c: In function ‘s3_event_loop_once’: ../source3/lib/events.c:326: error: implicit declaration of function ‘tevent_debug’ ../source3/lib/events.c: In function ‘dump_event_list’: ../source3/lib/events.c:355: error: dereferencing pointer to incomplete type ../source3/lib/events.c:355: error: dereferencing pointer to incomplete type ../source3/lib/events.c:357: error: dereferencing pointer to incomplete type ../source3/lib/events.c:359: error: dereferencing pointer to incomplete type ../source3/lib/events.c:359: error: dereferencing pointer to incomplete type ../source3/lib/events.c:366: error: dereferencing pointer to incomplete type ../source3/lib/events.c:366: error: dereferencing pointer to incomplete type ../source3/lib/events.c:368: error: dereferencing pointer to incomplete type ../source3/lib/events.c:368: error: dereferencing pointer to incomplete type ../source3/lib/events.c: At top level: ../source3/lib/events.c:377: error: ‘tevent_common_add_fd’ undeclared here (not in a function) ../source3/lib/events.c:378: error: ‘tevent_common_fd_set_close_fn’ undeclared here (not in a function) ../source3/lib/events.c:379: error: ‘tevent_common_fd_get_flags’ undeclared here (not in a function) ../source3/lib/events.c:380: error: ‘tevent_common_fd_set_flags’ undeclared here (not in a function) ../source3/lib/events.c:381: error: ‘tevent_common_add_timer’ undeclared here (not in a function) ../source3/lib/events.c:382: error: ‘tevent_common_schedule_immediate’ undeclared here (not in a function) ../source3/lib/events.c:383: error: ‘tevent_common_add_signal’ undeclared here (not in a function) ../source3/lib/events.c:385: error: ‘tevent_common_loop_wait’ undeclared here (not in a function) Waf: Leaving directory `/home/bradh-devel/openchange.git/samba4/bin' Build failed: -> task failed (err #1): {task: cc events.c -> events_39.o}
Brad, have you already tried to inform someone about this bug on the list or the IRC chat? Probably it needs to be discussed with metze, the maintainer of "tevent".
I briefly discussed it with Andrew Bartlett, but not with anyone else. IRC is kind-of difficult at the moment, because I'm traveling. I'm not sure there is a lot to discuss: the samba3 code uses internal headers / structures from tevent. You can change tevent, or you can change samba3, or both. I'm not really in any position to advise on which is the best.
Should be fixed as well.