Bug 8113 - Compilation problem with top level build with external tevent
Summary: Compilation problem with top level build with external tevent
Status: RESOLVED FIXED
Alias: None
Product: Samba 4.0
Classification: Unclassified
Component: Build (show other bugs)
Version: unspecified
Hardware: All All
: P5 normal (vote)
Target Milestone: ---
Assignee: Stefan Metzmacher
QA Contact: samba4-qa@samba.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-01 01:25 UTC by Brad Hards
Modified: 2011-05-25 07:12 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brad Hards 2011-05-01 01:25:56 UTC
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}
Comment 1 Matthias Dieter Wallnöfer 2011-05-06 06:28:46 UTC
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".
Comment 2 Brad Hards 2011-05-06 09:41:54 UTC
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.
Comment 3 Matthias Dieter Wallnöfer 2011-05-25 07:12:00 UTC
Should be fixed as well.