A BUGNOTE has been added to this bug. ====================================================================== http://www.dbmail.org/mantis/bug_view_advanced_page.php?bug_id=0000177 ====================================================================== Reported By: mobrien Assigned To: ====================================================================== Project: DBMail Bug ID: 177 Category: Authentication layer Reproducibility: always Severity: major Priority: normal Status: new ====================================================================== Date Submitted: 26-Feb-05 23:50 CET Last Modified: 02-Mar-05 02:33 CET ====================================================================== Summary: Compile Fails - FBSD users Unable to build Dbmail latest Description: compile fails on [snip] gcc -DHAVE_CONFIG_H -I. -I. -I. -fomit-frame-pointer -g -O2 -W -Wall -Wpointer-arith -Wstrict-prototypes -c pop3d.c In file included from misc.h:32, from pop3d.c:41: /usr/include/unistd.h:376: error: conflicting types for 'dm_getopt' dm_getopt.h:62: error: previous declaration of 'dm_getopt' was here /usr/include/unistd.h:376: error: conflicting types for 'dm_getopt' dm_getopt.h:62: error: previous declaration of 'dm_getopt' was here [snip] ======================================================================
---------------------------------------------------------------------- mobrien - 26-Feb-05 23:53 CET ---------------------------------------------------------------------- Category "GENERAL" (sri) ---------------------------------------------------------------------- mobrien - 01-Mar-05 15:44 CET ---------------------------------------------------------------------- FBSD 5.3 Line 374-376 re:getopt Offending line is 376 374 | #ifndef _GETOPT_DECLARED 375 | #define _GETOPT_DECLARED 376 | int getopt(int, char * const [], const char *); Also: FBSD 4.10 error message = [snip] In file included from misc.h:32, from pop3d.c:41: /usr/include/unistd.h:112: conflicting types for `dm_getopt' [snip] where /usr/include/unistd.h is like this: 110 |extern char *optarg; /* getopt(3) external variables */ 111 |extern int optind, opterr, optopt; 112 | int getopt __P((int, char * const [], const char *)); ---------------------------------------------------------------------- aaron - 01-Mar-05 18:32 CET ---------------------------------------------------------------------- I don't have access to a FreeBSD 5.x machine, so if you can figure this out, please send a patch. Basically you need to take a look into db_getopt.h, configure.in, acincludes.m4 to see if the tests for GNU-style getopt are correct for FreeBSD 5.3. This has all been tested on FreeBSD 4.7 and OpenBSD 3.6, but apparently FreeBSD 5.x is doing something differently! ---------------------------------------------------------------------- mobrien - 02-Mar-05 02:33 CET ---------------------------------------------------------------------- Very sage advice. Thanks, Aaron. NOTE: I didn't think FBSD 4.7 had native GNU-like getopt -- not until 5.0 branch for native getopt. Anyway, so Aaron you may have a magic-bullet solution in the contrib getopt on your 4.7 host. Anyway... for FBSD 4.8 /4.9 /4.10 and 4.11 (don't have 4.7) build fails for 2_0_Branch since about 01/15/2005 TO FIX THIS ... For FBSD 4.x Versions only: I link /usr/local/include/getopt.h to ./dm_getopt.h to build dm_getopt.o after installing getopt-1.1.3_1 from /usr/ports/misc/getopt. (I tried forcing with configure.in to use contrib getopt in /usr/local but no luck.) so, to dbmail install directory after installing getopt-1.1.3_1 mv dm_getopt.h dm_getopt.h.ORIG ln -s /usr/local/include/getopt.h ./dm_getopt.h ./configure --with-XXsql gmake gmake install /* everything happy but I guess that's a wierd way to do this */ More to do on FBSD 5.3 but it is building OK by altering configure.in or config.in to remove dm_getopt and use native getopt (/usr/include/ not /usr/local/include. That's wierd. Configure should have decided that on its own (?) I wonder if dm_getopt is a nicely intended convenience but a cross-platform breaker. Perhaps a require OS-specific getopt is safer. The latter might be more 'future proof'. I will try and finalize something. Bug History Date Modified Username Field Change ====================================================================== 26-Feb-05 23:50mobrien New Bug 26-Feb-05 23:53mobrien Bugnote Added: 0000591 01-Mar-05 15:44mobrien Bugnote Added: 0000592 01-Mar-05 18:32aaron Bugnote Added: 0000593 02-Mar-05 02:33mobrien Bugnote Added: 0000594 ======================================================================