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