Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Dec 2007 21:42:06 +0100
From:      "Pietro Cerutti" <gahr@gahr.ch>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org>
Subject:   ports/118791: [patch] dns/sqldjbdns unbreak fix build with GCC 4.2
Message-ID:  <1197924126.72933@gahrtop.localhost>
Resent-Message-ID: <200712172050.lBHKo1xq054079@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         118791
>Category:       ports
>Synopsis:       [patch] dns/sqldjbdns unbreak fix build with GCC 4.2
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Dec 17 20:50:01 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Pietro Cerutti
>Release:        FreeBSD 8.0-CURRENT i386
>Organization:
>Environment:


System: FreeBSD 8.0-CURRENT #17: Thu Dec 13 11:23:40 CET 2007
    root@gahrtop.localhost:/usr/obj/usr/src/sys/MSI1034



>Description:


Unbreak with GCC 4.2


>How-To-Repeat:





>Fix:


--- _sqldjbdns.diff begins here ---
--- Makefile.orig	2007-12-17 21:02:09.000000000 +0100
+++ Makefile	2007-12-17 21:38:39.000000000 +0100
@@ -27,7 +27,7 @@
 		share/examples/${PORTNAME}/create.sql
 PLIST_DIRS=	share/examples/${PORTNAME}
 
-pre-build:
+post-patch:
 		${CP} -R ${DJ_SRC} ${WRKSRC}/djbdns-1.05
 		${PATCH} < ${WRKSRC}/djbdns-1.05.patch -d ${WRKSRC}/djbdns-1.05
 		${MV} ${WRKSRC}/sqldns-schema.html ${WRKSRC}/pgsqldns-schema.html
@@ -42,10 +42,4 @@
 .endfor
 .endif
 
-.include <bsd.port.pre.mk>
-
-.if ${OSVERSION} >= 700042
-BROKEN=		Does not compile with GCC 4.2
-.endif
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
--- /dev/null	2007-12-17 21:37:53.000000000 +0100
+++ files/patch-djbdns-1.05.patch	2007-12-17 21:35:12.000000000 +0100
@@ -0,0 +1,240 @@
+--- djbdns-1.05.patch.orig	2007-08-26 15:08:50.000000000 +0200
++++ djbdns-1.05.patch	2007-12-17 21:34:49.000000000 +0100
+@@ -1757,8 +1757,8 @@
+  {
+ 
+ === modified file 'query.c'
+---- query.c	2004-07-08 11:45:45 +0000
+-+++ query.c	2007-08-23 21:11:49 +0000
++--- query.c.orig	2007-12-17 21:14:09.000000000 +0100
+++++ query.c	2007-12-17 21:33:24.000000000 +0100
+ @@ -12,6 +12,15 @@
+  #include "alloc.h"
+  #include "response.h"
+@@ -1775,7 +1775,7 @@
+  
+  static int flagforwardonly = 0;
+  
+-@@ -20,10 +29,32 @@
++@@ -20,10 +29,31 @@
+    flagforwardonly = 1;
+  }
+  
+@@ -1790,12 +1790,11 @@
+ +#ifdef SQLCACHE
+ +unsigned int db_reinsert_interval = 1*60*60;
+ +unsigned int db_insert_minttl = 10*60;
+-+extern unsigned int save_ok;
+ +#endif
+++static unsigned int save_ok;
+ +
+ +char save_buf[8192];
+ +unsigned int save_len;
+-+static unsigned int save_ok;
+ +
+  static void cachegeneric(const char type[2],const char *d,const char *data,unsigned int datalen,uint32 ttl)
+  {
+@@ -1808,7 +1807,7 @@
+  
+    len = dns_domain_length(d);
+    if (len > 255) return;
+-@@ -32,13 +63,26 @@
++@@ -32,13 +62,26 @@
+    byte_copy(key + 2,len,d);
+    case_lowerb(key + 2,len);
+  
+@@ -1839,7 +1838,7 @@
+  static void save_start(void)
+  {
+    save_len = 0;
+-@@ -193,6 +237,7 @@
++@@ -193,6 +236,7 @@
+    int k;
+    int p;
+    int q;
+@@ -1847,7 +1846,7 @@
+  
+    errno = error_io;
+    if (state == 1) goto HAVEPACKET;
+-@@ -236,7 +281,9 @@
++@@ -236,7 +280,9 @@
+        response_rfinish(RESPONSE_ANSWER);
+      }
+      cleanup(z);
+@@ -1857,7 +1856,7 @@
+      return 1;
+    }
+  
+-@@ -246,7 +293,10 @@
++@@ -246,7 +292,10 @@
+      case_lowerb(key + 2,dlen);
+      cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+      if (cached) {
+@@ -1868,7 +1867,7 @@
+        goto NXDOMAIN;
+      }
+  
+-@@ -254,13 +304,17 @@
++@@ -254,13 +303,17 @@
+      cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+      if (cached) {
+        if (typematch(DNS_T_CNAME,dtype)) {
+@@ -1886,7 +1885,7 @@
+        if (!dns_domain_copy(&cname,cached)) goto DIE;
+        goto CNAME;
+      }
+-@@ -269,7 +323,9 @@
++@@ -269,7 +322,9 @@
+        byte_copy(key,2,DNS_T_NS);
+        cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+        if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
+@@ -1896,7 +1895,7 @@
+  	if (!rqa(z)) goto DIE;
+  	pos = 0;
+  	while (pos = dns_packet_getname(cached,cachedlen,pos,&t2)) {
+-@@ -286,7 +342,9 @@
++@@ -286,7 +341,9 @@
+        byte_copy(key,2,DNS_T_PTR);
+        cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+        if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
+@@ -1906,7 +1905,7 @@
+  	if (!rqa(z)) goto DIE;
+  	pos = 0;
+  	while (pos = dns_packet_getname(cached,cachedlen,pos,&t2)) {
+-@@ -303,7 +361,9 @@
++@@ -303,7 +360,9 @@
+        byte_copy(key,2,DNS_T_MX);
+        cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+        if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
+@@ -1916,7 +1915,7 @@
+  	if (!rqa(z)) goto DIE;
+  	pos = 0;
+  	while (pos = dns_packet_copy(cached,cachedlen,pos,misc,2)) {
+-@@ -324,7 +384,9 @@
++@@ -324,7 +383,9 @@
+        cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+        if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
+  	if (z->level) {
+@@ -1926,7 +1925,7 @@
+  	  while (cachedlen >= 4) {
+  	    for (k = 0;k < 64;k += 4)
+  	      if (byte_equal(z->servers[z->level - 1] + k,4,"\0\0\0\0")) {
+-@@ -337,7 +399,9 @@
++@@ -337,7 +398,9 @@
+  	  goto LOWERLEVEL;
+  	}
+  
+@@ -1936,7 +1935,7 @@
+  	if (!rqa(z)) goto DIE;
+  	while (cachedlen >= 4) {
+  	  if (!response_rstart(d,DNS_T_A,ttl)) goto DIE;
+-@@ -355,7 +419,9 @@
++@@ -355,7 +418,9 @@
+        byte_copy(key,2,dtype);
+        cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
+        if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
+@@ -1946,7 +1945,7 @@
+  	if (!rqa(z)) goto DIE;
+  	while (cachedlen >= 2) {
+  	  uint16_unpack_big(cached,&datalen);
+-@@ -396,7 +462,9 @@
++@@ -396,7 +461,9 @@
+            pos = 0;
+            j = 0;
+            while (pos = dns_packet_getname(cached,cachedlen,pos,&t1)) {
+@@ -1956,7 +1955,7 @@
+              if (j < QUERY_MAXNS)
+                if (!dns_domain_copy(&z->ns[z->level][j++],t1)) goto DIE;
+  	  }
+-@@ -430,12 +498,16 @@
++@@ -430,12 +497,16 @@
+  
+    dns_sortip(z->servers[z->level],64);
+    if (z->level) {
+@@ -1975,7 +1974,7 @@
+    }
+    return 0;
+  
+-@@ -590,15 +662,19 @@
++@@ -590,15 +661,19 @@
+          pos = dns_packet_getname(buf,len,pos + 10,&t2); if (!pos) goto DIE;
+          pos = dns_packet_getname(buf,len,pos,&t3); if (!pos) goto DIE;
+          pos = dns_packet_copy(buf,len,pos,misc,20); if (!pos) goto DIE;
+@@ -1995,7 +1994,7 @@
+        cachegeneric(DNS_T_CNAME,t1,t2,dns_domain_length(t2),ttl);
+      }
+      else if (byte_equal(type,2,DNS_T_PTR)) {
+-@@ -606,7 +682,9 @@
++@@ -606,7 +681,9 @@
+        while (i < j) {
+          pos = dns_packet_skipname(buf,len,records[i]); if (!pos) goto DIE;
+          pos = dns_packet_getname(buf,len,pos + 10,&t2); if (!pos) goto DIE;
+@@ -2005,7 +2004,7 @@
+          save_data(t2,dns_domain_length(t2));
+          ++i;
+        }
+-@@ -617,7 +695,9 @@
++@@ -617,7 +694,9 @@
+        while (i < j) {
+          pos = dns_packet_skipname(buf,len,records[i]); if (!pos) goto DIE;
+          pos = dns_packet_getname(buf,len,pos + 10,&t2); if (!pos) goto DIE;
+@@ -2015,7 +2014,7 @@
+          save_data(t2,dns_domain_length(t2));
+          ++i;
+        }
+-@@ -629,7 +709,9 @@
++@@ -629,7 +708,9 @@
+          pos = dns_packet_skipname(buf,len,records[i]); if (!pos) goto DIE;
+          pos = dns_packet_copy(buf,len,pos + 10,misc,2); if (!pos) goto DIE;
+          pos = dns_packet_getname(buf,len,pos,&t2); if (!pos) goto DIE;
+@@ -2025,7 +2024,7 @@
+          save_data(misc,2);
+          save_data(t2,dns_domain_length(t2));
+          ++i;
+-@@ -643,8 +725,13 @@
++@@ -643,8 +724,13 @@
+          pos = dns_packet_copy(buf,len,pos,header,10); if (!pos) goto DIE;
+          if (byte_equal(header + 8,2,"\0\4")) {
+            pos = dns_packet_copy(buf,len,pos,header,4); if (!pos) goto DIE;
+@@ -2039,7 +2038,7 @@
+          }
+          ++i;
+        }
+-@@ -659,7 +746,9 @@
++@@ -659,7 +745,9 @@
+          if (datalen > len - pos) goto DIE;
+          save_data(header + 8,2);
+          save_data(buf + pos,datalen);
+@@ -2049,7 +2048,7 @@
+          ++i;
+        }
+        save_finish(type,t1,ttl);
+-@@ -689,13 +778,21 @@
++@@ -689,13 +777,21 @@
+    }
+  
+    if (rcode == 3) {
+@@ -2072,7 +2071,7 @@
+      cleanup(z);
+      return 1;
+    }
+-@@ -706,10 +803,13 @@
++@@ -706,10 +802,13 @@
+          if (byte_diff(DNS_T_CNAME,2,dtype)) {
+            save_start();
+            save_finish(dtype,d,soattl);
+@@ -2087,8 +2086,6 @@
+  
+  
+    if (flagout || flagsoa || !flagreferral) {
+-
+-=== modified file 'query.h'
+ --- query.h	2004-07-08 11:45:45 +0000
+ +++ query.h	2007-08-23 20:36:07 +0000
+ @@ -28,5 +28,6 @@
+@@ -2446,3 +2443,5 @@
+    if (cdb_make_finish(&cdb) == -1) die_datatmp();
+    if (fsync(fdcdb) == -1) die_datatmp();
+ 
++
++
--- _sqldjbdns.diff ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1197924126.72933>