Bug 22834

Summary: Bind source doesn't compile under Redhat 7.0, Make is not stop on errors as it should.
Product: [Retired] Red Hat Linux Reporter: Need Real Name <mwtoy>
Component: bindAssignee: Bernhard Rosenkraenzer <bero>
Status: CLOSED NOTABUG QA Contact:
Severity: high Docs Contact:
Priority: medium    
Version: 7.0CC: dr
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2000-12-27 10:56:09 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Need Real Name 2000-12-26 06:50:19 UTC
Apply the following patch.

                Save this email as 'message'.
                Then in the directory where you untared the src tree
                run 'patch < message'.

        You should also complain to Redhat as the make they are
        shipping does not always stop on errors as it should.  If
        it did you would have seen the original error, not the
        later one as it attemped to link the executable.

        Mark

Index: src/lib/irs/irpmarshall.c
===================================================================
RCS file: /proj/cvs/isc/bind8/src/lib/irs/irpmarshall.c,v
retrieving revision 8.5
retrieving revision 8.5.2.1
diff -u -r8.5 -r8.5.2.1
--- irpmarshall.c       1999/10/13 17:11:19     8.5
+++ irpmarshall.c       2000/12/11 19:17:28     8.5.2.1
@@ -90,7 +90,10 @@
 #include "port_after.h"
 
 
+#ifndef HAVE_STRNDUP
 static char    *strndup(const char *str, size_t len);
+#endif
+
 static char   **splitarray(const char *buffer, const char *buffend, char delim);
 static int     joinarray(char * const * argv, char *buffer, char delim);
 static char    *getfield(char **res, size_t reslen, char **buffer, char delim);
@@ -1862,6 +1865,7 @@
 
 
 
+#ifndef HAVE_STRNDUP
 /*
  * static char * strndup(const char *str, size_t len)
  *
@@ -1886,6 +1890,7 @@
        p[len] = 0x0;
        return (p);
 }
+#endif
 
 #if WANT_MAIN
 
Index: src/port/linux/include/port_after.h
===================================================================
RCS file: /proj/cvs/isc/bind8/src/port/linux/include/port_after.h,v
retrieving revision 1.22
retrieving revision 1.22.4.1
diff -u -r1.22 -r1.22.4.1
--- port_after.h        1999/05/14 17:28:55     1.22
+++ port_after.h        2000/12/11 19:17:29     1.22.4.1
@@ -85,4 +85,12 @@
        u_int32_t       sin6_scope_id;  /* set of interfaces for a scope */
 };
 #endif /* HAS_INET6_STRUCTS */
+
+/*
+ * glibc 2.2 #defines strndup to __strndup, which allows this to work.
+ */
+#ifdef strndup
+#define HAVE_STRNDUP
+#endif
+
 #endif /* ! PORT_AFTER_H */
> Hi-
> 
> I thinks I got a bug to report.  I was following the steps in the howto
> for chroot and bind.
> 
> http://www.redhat.com/mirrors/LDP/HOWTO/Chroot-BIND-HOWTO.html
> 
> I got it working w/ Redhat 6.2 but with Redhat 7.0, I'm getting the
> following compiling errors w/ the lastest 8.2.2 from your site...
> 
> 
> /usr/local/src/bin/nslookup
> make[2]: Entering directory `/usr/local/src/bin/nslookup'
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c main.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c getinfo.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c debug.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c send.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c skip.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c list.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c subr.c
> gcc -D_GNU_SOURCE  -O -g -I../../port/linux/include -I../../include
> -D_PATH_HELPFILE=\"/usr/local/lib/nslookup.help\"  -c commands.c
> gcc -D_GNU_SOURCE -O -g   -o nslookup main.o getinfo.o debug.o send.o
> skip.o list.o subr.o commands.o \
>         ../../lib/libbind.a -lfl
> ../../lib/libbind.a(herror.o): In function `herror':
> /usr/local/src/lib/resolv/herror.c:102: undefined reference to
> `__h_errno'
> ../../lib/libbind.a(res_data.o): In function `__res_mkquery':
> /usr/local/src/lib/resolv/res_data.c:154: undefined reference to
> `__h_errno_set'../../lib/libbind.a(res_data.o): In function
> `__res_mkupdate':
> /usr/local/src/lib/resolv/res_data.c:165: undefined reference to
> `__h_errno_set'../../lib/libbind.a(res_data.o): In function
> `__res_query':
> /usr/local/src/lib/resolv/res_data.c:179: undefined reference to
> `__h_errno_set'../../lib/libbind.a(res_data.o): In function
> `__res_update':
> /usr/local/src/lib/resolv/res_data.c:230: undefined reference to
> `__h_errno_set'../../lib/libbind.a(res_data.o): In function
> `__res_search':
> /usr/local/src/lib/resolv/res_data.c:244: undefined reference to
> `__h_errno_set'../../lib/libbind.a(res_data.o):/usr/local/src/lib/resolv/res_
> data.c:259:
> more undefined references to `__h_errno_set' follow
> collect2: ld returned 1 exit status
> make[2]: *** [nslookup] Error 1
> make[2]: Leaving directory `/usr/local/src/bin/nslookup'
> make[1]: *** [nslookup] Error 2
> make[1]: Leaving directory `/usr/local/src/bin'
> make: *** [all] Error 2
> 
> 
> Anyone else report this problem?
> 
> Melvin
> 
--

Comment 1 Bernhard Rosenkraenzer 2001-01-04 14:27:24 UTC
The version of bind we're shipping does not have this problem.