Bug 75564

Summary: ports dns/djbdns WITH_IPV6 compilation problem
Product: Ports & Packages Reporter: Matthieu Michaud <ohmer>
Component: Individual Port(s)Assignee: Peter Pentchev <roam>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Matthieu Michaud 2004-12-28 04:20:20 UTC
when compiling djbdns with ipv6 support :
( ( ./compile trylsock.c &&  ./load trylsock -lsocket -lnsl ) >/dev/null 2>&1  && echo -lsocket -lnsl || exit 0 ) > socket.lib
./compile socket_accept.c
./compile socket_accept6.c
rm -f trylsock.o trylsock
./compile socket_bind.c
In file included from socket_accept.c:6:
socket.h:5:20: uint32.h: No such file or directory
..
and other bringing to fatal error.

Fix: 

looks like it comes from non existent headers which are copied from one or another if it pass compilation test. its invoked like this :

./choose c tryip6 haveip6.h1 haveip6.h2 > haveip6.h

for a unknown reason to me, it isnt done when using WITH_IPV6 option.
How-To-Repeat: cd /usr/ports/dns/djbdns ; make WITH_IPV6=yes
Comment 1 Kirill Ponomarev freebsd_committer freebsd_triage 2004-12-28 22:05:17 UTC
Responsible Changed
From-To: freebsd-ports-bugs->roam

Over to maintainer.
Comment 2 marcus 2004-12-29 02:28:19 UTC
For me works ok.

# uname -vm
FreeBSD 5.3-STABLE #10: Tue Dec 28 21:59:24 BRST 2004 
root@orca.grupos.com.br:/usr/obj/usr/src/sys/ORCA  i386

Regards

--compile--
/usr/ports/dns/djbdns# WITH_IPV6=yes make all
...skip...
./compile socket_accept.c
./compile socket_bind.c
./compile socket_conn.c
./compile socket_listen.c
./compile socket_recv.c
./compile socket_send.c
./compile socket_tcp.c
./compile socket_udp.c
./choose c tryip6 haveip6.h1 haveip6.h2 > haveip6.h
./compile socket_udp6.c
( ( ./compile trylsock.c &&  ./load trylsock -lsocket -lnsl ) >/dev/null 
2>&1  && echo -lsocket -lnsl || exit 0 ) > socket.lib
rm -f trylsock.o trylsock
cp /dev/null haven2i.h
./choose cL tryn2i haven2i.h1 haven2i.h2 socket > haven2i.h
./compile socket_getifidx.c
./choose c trysa6 sockaddr_in6.h1 sockaddr_in6.h2 > sockaddr_in6.h
./compile socket_recv6.c
./compile socket_send6.c
./compile socket_bind6.c
./compile socket_noipv6.c
./compile socket_tcp6.c
./compile socket_connect6.c
./compile socket_accept6.c
./makelib unix.a buffer_read.o buffer_write.o error.o  error_str.o 
ndelay_off.o ndelay_on.o open_read.o  open_trunc.o openreadclose.o 
readclose.o seek_set.o  socket_accept.o socket_bind.o socket_conn.o 
socket_listen.o  socket_recv.o socket_send.o socket_tcp.o socket_udp.o 
socket_udp6.o socket_getifidx.o socket_recv6.o socket_send6.o 
socket_bind6.o socket_noipv6.o socket_tcp6.o socket_connect6.o 
socket_accept6.o
./compile byte_chr.c
...skip...
--

-- 
Marcus Grando
marcus(at)sbh.eng.br
Comment 3 Peter Pentchev freebsd_committer freebsd_triage 2004-12-29 08:06:46 UTC
State Changed
From-To: open->feedback

I just committed a change to the dns/djbdns port, which adds a new patch 
file, ports/dns/djbdns/uint32.patch, in the IPv6 case. 
Can you update your ports tree (maybe get ports/dns/djbdns from CVS, if 
it has not shown up on the CVS mirrors yet) until a file named 
ports/dns/djbdns/uint32.patch appears and 'make -V PKGNAME' says 
something like 'djbdns-1.05_9' or 'djbdns-ipv6-1.05.b14_9', and then try 
to build it again? 

I am guessing that you have a MAKEFLAGS variable defined in your 
environment or your /etc/make.conf file, and that there is a -j2 or -j4 
or similar option in there - I could reproduce the same error when 
building the IPv6 version with -j2 or more.  The IPv6 patch was missing 
several dependencies on the uint32.h header, so make(1) simply did not 
know that it had to genereate uint32.h before trying to compile e.g. 
socket_accept.c.
Comment 4 Peter Pentchev freebsd_committer freebsd_triage 2005-01-03 09:55:53 UTC
State Changed
From-To: feedback->closed

The originator confirmed in private mail that the port update fixed 
the -j2 build issue. 
Thanks for submitting this problem report!