Subject: pkg/36083: net/bind8 breaks on Linux
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <uli@habel.name>
List: pkgsrc-bugs
Date: 03/25/2007 01:35:00
>Number:         36083
>Category:       pkg
>Synopsis:       net/bind8 breaks on Linux
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Mar 25 01:35:00 +0000 2007
>Originator:     Ulrich Habel
>Release:        Debian Sarge 2.4
>Organization:
http://habel.name
>Environment:
Linux newton 2.4.27-3-386 #1 Wed Dec 6 00:38:33 UTC 2006 i686 GNU/Linux
>Description:
The following issue seems to be a Linux specific problem with the glibc2. It breaks the build due to missing members in a struct:

gcc -I../../port/linux/include -I../../include -O -g  -c ctl_srvr.c
ld -x -r ctl_srvr.o -o ctl_srvr.out &&   mv ctl_srvr.out ctl_srvr.o
mkdir threaded 2> /dev/null || test -d threaded -a -w threaded
gcc -I../../port/linux/include -I../../include -O -g  -D_REENTRANT -c ctl_clnt.c  -o threaded/ctl_clnt.o
ld -x -r threaded/ctl_clnt.o  -o threaded/ctl_clnt.out &&   mv threaded/ctl_clnt.out threaded/ctl_clnt.o
gcc -I../../port/linux/include -I../../include -O -g  -c ctl_clnt.c
ld -x -r ctl_clnt.o -o ctl_clnt.out &&   mv ctl_clnt.out ctl_clnt.o
mkdir threaded 2> /dev/null || test -d threaded -a -w threaded
gcc -I../../port/linux/include -I../../include -O -g  -D_REENTRANT -c eventlib.c  -o threaded/eventlib.o
eventlib.c: In function '__evGetNext':
eventlib.c:296: error: 'fd_set' has no member named 'fds_bits'
eventlib.c:297: error: 'fd_set' has no member named 'fds_bits'
eventlib.c:298: error: 'fd_set' has no member named 'fds_bits'

[wrapper.sh] note: The real command line, after the pkgsrc wrapper, was:
/usr/pkgsrc/net/bind8/work/.gcc/bin/gcc -I../../port/linux/include -I../../include -O -g -D_REENTRANT -c eventlib.c -o threaded/eventlib.o -I/usr/pkgsrc/net/bind8/work/.buildlink/include -L/usr/pkgsrc/net/bind8/work/.buildlink/lib 
*** Error code 1

Stop.
bmake: stopped in /usr/pkgsrc/net/bind8/work/src/lib/isc
*** Error code 1
>How-To-Repeat:
build net/bind8 on Linux 2.4
>Fix:
There are several issues with this package:
o the glibc problem with the missing members (in 2 files)
o Flex is needed for building (at least on Linux) - is Flex in the NetBSD base?
o the PLIST is incorrect specified for ../include/bind/net <- missing

here is a patch to the pkgsrc net/bind8 directory. I am not quite sure if this breaks on other platforms as I can't test ist. Maybe testing the glibc using defines might be a much better option. It fixes the problem on Linux - not quite sure how to work it out in a smart way.

Sorry.
Uli



--- net/bind8.orig/distinfo     2006-03-22 19:33:57.000000000 +0100
+++ net/bind8/distinfo  2007-03-25 01:36:57.000000000 +0100
@@ -1,11 +1,11 @@
 $NetBSD: distinfo,v 1.20 2006/03/22 18:33:57 joerg Exp $
 
-SHA1 (bind/8.4.6/bind-src.tar.gz) = 8ecf19aa013f548ecb79ff14ccdbc8ec530e4d8b
-RMD160 (bind/8.4.6/bind-src.tar.gz) = a91e3f6adbb57141e0764dd65651c0a8172a8c6d
-Size (bind/8.4.6/bind-src.tar.gz) = 1461022 bytes
 SHA1 (bind/8.4.6/bind-doc.tar.gz) = c8a030527d809dbefd7aa45f7836fb4eb2f51195
 RMD160 (bind/8.4.6/bind-doc.tar.gz) = 0269b0135767893d45649c2d63b542ff89adf4e4
 Size (bind/8.4.6/bind-doc.tar.gz) = 1492047 bytes
+SHA1 (bind/8.4.6/bind-src.tar.gz) = 8ecf19aa013f548ecb79ff14ccdbc8ec530e4d8b
+RMD160 (bind/8.4.6/bind-src.tar.gz) = a91e3f6adbb57141e0764dd65651c0a8172a8c6d
+Size (bind/8.4.6/bind-src.tar.gz) = 1461022 bytes
 SHA1 (patch-aa) = c94c78cb904e713be25da748d3ecfed51b2ed010
 SHA1 (patch-ab) = 41c03679a97d24302f4eb4bec67fda0b8d4cd9bf
 SHA1 (patch-ad) = 8b7071e89179af3de5c7645b88d175bb9143a9da
@@ -19,3 +19,5 @@
 SHA1 (patch-al) = f03b3b5480d9294673cdb86cf0f45f48ce9ea895
 SHA1 (patch-am) = 7acd974e10388dba0dcb44c28f2f03e18b7a1c28
 SHA1 (patch-an) = 41b63a50756d9f73152fc8a48dbf93657064e90f
+SHA1 (patch-ao) = ee972b035ff14ea12cc4df0ab63263c639aa6b02
+SHA1 (patch-ap) = 665b6f4d8ad4fd1903fcf54eb5dd88f09cad415d
diff -Naur net/bind8.orig/Makefile net/bind8/Makefile
--- net/bind8.orig/Makefile     2006-10-04 23:53:15.000000000 +0200
+++ net/bind8/Makefile  2007-03-25 01:15:12.000000000 +0100
@@ -20,6 +20,7 @@
 
 BUILD_DIRS=    src doc/man
 
+.include "../../devel/flex/buildlink3.mk"
 .include "../../mk/bsd.prefs.mk"
 
 .if ${OPSYS} == "SunOS"
diff -Naur net/bind8.orig/patches/patch-ao net/bind8/patches/patch-ao
--- net/bind8.orig/patches/patch-ao     1970-01-01 01:00:00.000000000 +0100
+++ net/bind8/patches/patch-ao  2007-03-25 01:36:30.000000000 +0100
@@ -0,0 +1,15 @@
+--- src/lib/isc/eventlib.c.orig        2007-03-25 01:32:49.000000000 +0100
++++ src/lib/isc/eventlib.c     2007-03-25 01:33:48.000000000 +0100
+@@ -293,9 +293,9 @@
+                       evPrintf(ctx, 4,
+                               "pselect(%d, 0x%lx, 0x%lx, 0x%lx, %ld.%09ld)\n",
+                                ctx->fdMax+1,
+-                               (u_long)ctx->rdLast.fds_bits[0],
+-                               (u_long)ctx->wrLast.fds_bits[0],
+-                               (u_long)ctx->exLast.fds_bits[0],
++                               (u_long)ctx->rdLast.__fds_bits[0],
++                               (u_long)ctx->wrLast.__fds_bits[0],
++                               (u_long)ctx->exLast.__fds_bits[0],
+                                tp ? (long)tp->tv_sec : -1L,
+                                tp ? tp->tv_nsec : -1);
+ 
diff -Naur net/bind8.orig/patches/patch-ap net/bind8/patches/patch-ap
--- net/bind8.orig/patches/patch-ap     1970-01-01 01:00:00.000000000 +0100
+++ net/bind8/patches/patch-ap  2007-03-25 01:05:36.000000000 +0100
@@ -0,0 +1,28 @@
+--- src/lib/isc/ev_files.c.orig        2007-03-25 01:03:05.000000000 +0100
++++ src/lib/isc/ev_files.c     2007-03-25 01:04:36.000000000 +0100
+@@ -146,9 +146,9 @@
+       evPrintf(ctx, 5,
+               "evSelectFD(fd %d, mask 0x%x): new masks: 0x%lx 0x%lx 0x%lx\n",
+                fd, eventmask,
+-               (u_long)ctx->rdNext.fds_bits[0],
+-               (u_long)ctx->wrNext.fds_bits[0],
+-               (u_long)ctx->exNext.fds_bits[0]);
++               (u_long)ctx->rdLast.__fds_bits[0],
++               (u_long)ctx->wrLast.__fds_bits[0],
++               (u_long)ctx->exLast.__fds_bits[0]);
+ 
+       return (0);
+ }
+@@ -262,9 +262,9 @@
+       evPrintf(ctx, 5,
+             "evDeselectFD(fd %d, mask 0x%x): new masks: 0x%lx 0x%lx 0x%lx\n",
+                del->fd, eventmask,
+-               (u_long)ctx->rdNext.fds_bits[0],
+-               (u_long)ctx->wrNext.fds_bits[0],
+-               (u_long)ctx->exNext.fds_bits[0]);
++               (u_long)ctx->rdLast.__fds_bits[0],
++               (u_long)ctx->wrLast.__fds_bits[0],
++               (u_long)ctx->exLast.__fds_bits[0]);
+ 
+       /* Couldn't free it before now since we were using fields out of it. */
+       FREE(del);
diff -Naur net/bind8.orig/PLIST.common_end net/bind8/PLIST.common_end
--- net/bind8.orig/PLIST.common_end     2003-08-01 01:58:48.000000000 +0200
+++ net/bind8/PLIST.common_end  2007-03-25 01:44:41.000000000 +0100
@@ -4,4 +4,5 @@
 @dirrm include/bind/sys
 @dirrm include/bind/isc
 @dirrm include/bind/arpa
+@dirrm include/bind/net
 @dirrm include/bind