4.3.9 build problems.
2011-08-28 by Mart Pirita
Tere.
RedHat 9 based distro, with 2.6.28.10 kernel, yes, it's ancient, but
quite a lot (all important stuff) is manually updated (self made
packages) and so far all works well, as remote upgrade isn't so easy.
4.3.7 builds fine with options:
./configure --with-user=postfix --without-db --without-drac-db
--with-conffile=/etc/greylist/greylist.conf
--with-dumpfile=/var/spool/greylist/greylist.db --bindir=/usr/local/sbin
--disable-dnsrbl --disable-drac --enable-postfix
4.3.9 does not:
gcc -g -O2 -Wall -Ino/include -DHAVE_DATA_CALLBACK -D_XOPEN_SOURCE=500
-DUSE_DNSRBL -DUSE_POSTFIX -DCONFFILE=\"/etc/greylist/greylist.conf\"
-DDUMPFILE=\"/var/spool/greylist/greylist.db\" -DDRACDB=\"no\"
-D_BSD_SOURCE -I. -I. -c -o dnsrbl.o dnsrbl.c
dnsrbl.c: In function `dnsrbl_check_source':
dnsrbl.c:120: error: `ns_msg' undeclared (first use in this function)
dnsrbl.c:120: error: (Each undeclared identifier is reported only once
dnsrbl.c:120: error: for each function it appears in.)
dnsrbl.c:120: error: syntax error before "handle"
dnsrbl.c:121: error: `ns_rr' undeclared (first use in this function)
dnsrbl.c:205: warning: implicit declaration of function `ns_initparse'
dnsrbl.c:205: error: `handle' undeclared (first use in this function)
dnsrbl.c:210: warning: implicit declaration of function `ns_msg_count'
dnsrbl.c:210: error: `ns_s_an' undeclared (first use in this function)
dnsrbl.c:211: warning: implicit declaration of function `ns_parserr'
dnsrbl.c:211: error: `rr' undeclared (first use in this function)
make: *** [dnsrbl.o] Error 1
Removing the --disable-dnsrbl removes errors.
Adding --disable-mx gives new errors:
gcc -g -O2 -Wall -Ino/include -DHAVE_DATA_CALLBACK -D_XOPEN_SOURCE=500
-DUSE_MX -DUSE_POSTFIX -DCONFFILE=\"/etc/greylist/greylist.conf\"
-DDUMPFILE=\"/var/spool/greylist/greylist.db\" -DDRACDB=\"no\"
-D_BSD_SOURCE -I. -I. -c -o mx.o mx.c
mx.c: In function `mx_check':
mx.c:80: error: `ns_msg' undeclared (first use in this function)
mx.c:80: error: (Each undeclared identifier is reported only once
mx.c:80: error: for each function it appears in.)
mx.c:80: error: syntax error before "handle"
mx.c:81: error: `ns_rr' undeclared (first use in this function)
mx.c:167: warning: implicit declaration of function `ns_initparse'
mx.c:167: error: `handle' undeclared (first use in this function)
mx.c:172: warning: implicit declaration of function `ns_msg_count'
mx.c:172: error: `ns_s_an' undeclared (first use in this function)
mx.c:173: warning: implicit declaration of function `ns_parserr'
mx.c:173: error: `rr' undeclared (first use in this function)
mx.c:177: warning: implicit declaration of function `ns_rr_type'
mx.c:182: warning: implicit declaration of function `ns_name_uncompress'
mx.c:182: warning: implicit declaration of function `ns_msg_base'
mx.c:183: warning: implicit declaration of function `ns_msg_end'
mx.c:184: warning: implicit declaration of function `ns_rr_rdata'
mx.c:210: error: `handle2' undeclared (first use in this function)
mx.c:216: error: `rr2' undeclared (first use in this function)
mx.c:223: warning: implicit declaration of function `ns_rr_rdlen'
mx.c:236: warning: passing arg 2 of `memcpy' makes pointer from integer
without a cast
mx.c:253: warning: passing arg 2 of `memcpy' makes pointer from integer
without a cast
make: *** [mx.o] Error 1
Removing the --disable-mxl removes errors.
Normally --disable-xxx disables some functionality in build, but seems
milter-greylist build does in in opposite way?
Is this a bug?
And how to find out what did options build did include? Can't find such
key in milter-greylist?
I did send private email to Emmanuel and he asked:
> do you get something with grep -r ns_msg /usr/include
>
Yes:
grep -r ns_msg /usr/include
/usr/include/arpa_last/nameser.h:typedef struct __ns_msg {
/usr/include/arpa_last/nameser.h:} ns_msg;
/usr/include/arpa_last/nameser.h:#define ns_msg_getflag(handle, flag) ( \
/usr/include/arpa_last/nameser.h:#define ns_msg_id(handle) ((handle)._id
+ 0)
/usr/include/arpa_last/nameser.h:#define ns_msg_base(handle)
((handle)._msg + 0)
/usr/include/arpa_last/nameser.h:#define ns_msg_end(handle)
((handle)._eom + 0)
/usr/include/arpa_last/nameser.h:#define ns_msg_size(handle)
((handle)._eom - (handle)._msg)
/usr/include/arpa_last/nameser.h:#define ns_msg_count(handle, section)
((handle)._counts[section] + 0)
/usr/include/arpa_last/nameser.h:int ns_initparse __P((const
u_char *, int, ns_msg *));
/usr/include/arpa_last/nameser.h:int ns_parserr __P((ns_msg *,
ns_sect, int, ns_rr *));
/usr/include/arpa_last/nameser.h:int ns_sprintrr __P((const
ns_msg *, const ns_rr *,
/usr/include/bind/dns/lib.h:LIBDNS_EXTERNAL_DATA extern isc_msgcat_t
*dns_msgcat;
/usr/include/bind/dns/lib.h: * Initialize the DNS library's message
catalog, dns_msgcat, if it
/usr/include/bind/dns/message.h:typedef struct dns_msgblock dns_msgblock_t;
/usr/include/bind/dns/message.h: ISC_LIST(dns_msgblock_t) rdatas;
/usr/include/bind/dns/message.h: ISC_LIST(dns_msgblock_t) rdatalists;
/usr/include/bind/dns/message.h: ISC_LIST(dns_msgblock_t) offsets;
Emmanuel suggested (haven't tested yet):
> Add #include <arpa_last/nameser.h> in dnsrbl.c
>
And asked post the whole story here. So I did.
--
Mart