Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Aug 2012 00:24:20 -0500
From:      Mark Felder <feld@feld.me>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/170644: [PATCH] irc/inspircd: update to 2.0.8
Message-ID:  <E1T1W5c-000JUo-BB@feld.me>
Resent-Message-ID: <201208150530.q7F5UAuf066116@freefall.freebsd.org>

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

>Number:         170644
>Category:       ports
>Synopsis:       [PATCH] irc/inspircd: update to 2.0.8
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Aug 15 05:30:10 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     feld
>Release:        FreeBSD 9.0-STABLE amd64
>Organization:
>Environment:
System: FreeBSD mwi1.coffeenet.org 9.0-STABLE FreeBSD 9.0-STABLE #3 r234963: Thu May  3 13:12:01
>Description:
- Update to 2.0.8
- Made the knobs actually work
- Added regex modules as new knobs
- Added ldapoper module knob
- regex_posix and sqlite enabled by default (following upstream)

Added file(s):
- files/patch-make_template_main.mk

Removed file(s):
- files/patch-src_dns.cpp

https://redports.org/buildarchive/20120815052212-46196/

Generated with FreeBSD Port Tools 0.99_6 (mode: update, diff: suffix)
>How-To-Repeat:
>Fix:

--- inspircd-2.0.8.patch begins here ---
diff -ruN --exclude=CVS ../inspircd.orig/Makefile ./Makefile
--- ../inspircd.orig/Makefile	2012-06-14 14:28:02.000000000 -0500
+++ ./Makefile	2012-08-15 00:21:05.821274446 -0500
@@ -6,8 +6,7 @@
 #
 
 PORTNAME=	inspircd
-PORTVERSION=	2.0.5
-PORTREVISION=	2
+PORTVERSION=	2.0.8
 CATEGORIES=	irc
 MASTER_SITES=	http://cloud.github.com/downloads/inspircd/inspircd/
 DISTNAME=	InspIRCd-${PORTVERSION}
@@ -36,34 +35,44 @@
 
 HAS_CONFIGURE=	yes
 CONFIGURE_ARGS=	--with-cc=${CXX} --config-dir=${ETCDIR} \
-		--module-dir=${PREFIX}/lib/${PORTNAME}/modules            \
-		--library-dir=${PREFIX}/lib/${PORTNAME}                   \
+		--module-dir=${PREFIX}/lib/${PORTNAME}/modules \
 		--prefix=${PREFIX}/lib/${PORTNAME} --binary-dir=${PREFIX}/bin \
-		--enable-kqueue --enable-ipv6 --disable-interactive \
+		--enable-kqueue --disable-interactive \
 		--uid=${INSPIRCD_UID}
-
 PORTDOCS=	docs/* extras/*
 
-OPTIONS_DEFINE=	MYSQL PGSQL SQLITE LDAP GNUTLS OPENSSL
+OPTIONS_DEFINE=	MYSQL PGSQL SQLITE LDAPAUTH LDAPOPER GNUTLS OPENSSL PCRE POSIX
+OPTIONS_DEFAULT=	POSIX SQLITE
 
 GNUTLS_DESC=	Build m_ssl_gnutls module
-LDAP_DESC=	Build m_ldapauth module
+LDAPAUTH_DESC=	Build m_ldapauth module
+LDAPOPER_DESC=	Build m_ldapoper module
 MYSQL_DESC=	Build m_mysql module
 OPENSSL_DESC=	Build m_ssl_openssl module
 PGSQL_DESC=	Build m_pgsql module
 SQLITE_DESC=	Build m_sqlite3 module
+PCRE_DESC=	Build m_regex_pcre module
+POSIX_DESC=	Build m_regex_posix module
 
 .include <bsd.port.options.mk>
 
 post-extract:
 	@(cd ${WRKDIR} && ${MV} ${PORTNAME} ${DISTNAME})
 
-.if ${PORT_OPTIONS:MLDAP}
+.if ${PORT_OPTIONS:MLDAPAUTH}
 USE_OPENLDAP=	yes
 EXTRAS:=${EXTRAS},m_ldapauth.cpp
-PLIST_SUB+=	LDAP=""
+PLIST_SUB+=	LDAPAUTH=""
+.else
+PLIST_SUB+=	LDAPAUTH="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MLDAPOPER}
+USE_OPENLDAP=	yes
+EXTRAS:=${EXTRAS},m_ldapoper.cpp
+PLIST_SUB+=	LDAPOPER=""
 .else
-PLIST_SUB+=	LDAP="@comment "
+PLIST_SUB+=	LDAPOPER="@comment "
 .endif
 
 .if ${PORT_OPTIONS:MMYSQL}
@@ -94,6 +103,7 @@
 LIB_DEPENDS+=	gnutls.47:${PORTSDIR}/security/gnutls \
 		gcrypt.18:${PORTSDIR}/security/libgcrypt
 CONFIGURE_ARGS+=	--enable-gnutls
+EXTRAS:=${EXTRAS},m_ssl_gnutls.cpp
 PLIST_SUB+=	GNUTLS=""
 .else
 PLIST_SUB+=	GNUTLS="@comment "
@@ -102,12 +112,31 @@
 .if ${PORT_OPTIONS:MOPENSSL}
 USE_OPENSSL=yes
 CONFIGURE_ARGS+=	--enable-openssl
+EXTRAS:=${EXTRAS},m_ssl_openssl.cpp
 PLIST_SUB+=	OPENSSL=""
 .else
 PLIST_SUB+=	OPENSSL="@comment "
 .endif
 
-CONFIGURE_ARGS+=	--enable-extras=${EXTRAS}
+.if ${PORT_OPTIONS:MPCRE}
+LIB_DEPENDS+=	pcre:${PORTSDIR}/devel/pcre
+EXTRAS:=${EXTRAS},m_regex_pcre.cpp
+PLIST_SUB+=	PCRE=""
+.else
+PLIST_SUB+=	PCRE="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MPOSIX}
+EXTRAS:=${EXTRAS},m_regex_posix.cpp
+PLIST_SUB+=	POSIX=""
+.else
+PLIST_SUB+=	POSIX="@comment "
+.endif
+
+pre-configure:
+	@if [ ${EXTRAS} ]; then \
+		cd ${WRKSRC} && ./${CONFIGURE_SCRIPT} --enable-extras=${EXTRAS} ; \
+	fi
 
 post-install:
 	@${STRIP_CMD} ${PREFIX}/lib/${PORTNAME}/modules/*.so
diff -ruN --exclude=CVS ../inspircd.orig/distinfo ./distinfo
--- ../inspircd.orig/distinfo	2012-05-15 21:45:17.000000000 -0500
+++ ./distinfo	2012-08-14 17:04:27.000000000 -0500
@@ -1,2 +1,2 @@
-SHA256 (InspIRCd-2.0.5.tar.bz2) = 425bf79ae1348b398ce6d2348f6cc8baeebe8125f62337e98c136942223f4fc6
-SIZE (InspIRCd-2.0.5.tar.bz2) = 575852
+SHA256 (InspIRCd-2.0.8.tar.bz2) = 5fd57df1a2a10f480aefc61272f22fdd8addb5ab3a544582235377b8fa8b9296
+SIZE (InspIRCd-2.0.8.tar.bz2) = 591761
diff -ruN --exclude=CVS ../inspircd.orig/files/patch-make_template_main.mk ./files/patch-make_template_main.mk
--- ../inspircd.orig/files/patch-make_template_main.mk	1969-12-31 18:00:00.000000000 -0600
+++ ./files/patch-make_template_main.mk	2012-08-14 23:58:15.000000000 -0500
@@ -0,0 +1,22 @@
+--- make/template/main.mk.orig	2012-07-13 10:38:01.000000000 -0500
++++ make/template/main.mk	2012-08-14 23:58:06.816315279 -0500
+@@ -58,6 +58,10 @@
+ @IFEQ $(SYSTEM) linux
+   LDLIBS += -ldl -lrt
+ @ENDIF
++@IFEQ $(SYSTEM) freebsd
++  CXXFLAGS += -I/usr/local/include
++  LDFLAGS += -L/usr/local/lib
++@ENDIF
+ @IFEQ $(SYSTEM) gnukfreebsd
+   LDLIBS += -ldl -lrt
+ @ENDIF
+@@ -124,7 +128,7 @@
+   CXXFLAGS += -DPURE_STATIC
+ @ENDIF
+ 
+-@DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS
++@DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS LDFLAGS
+ @DO_EXPORT SOURCEPATH BUILDPATH PURE_STATIC SPLIT_CC
+ 
+ # Default target
diff -ruN --exclude=CVS ../inspircd.orig/files/patch-src_dns.cpp ./files/patch-src_dns.cpp
--- ../inspircd.orig/files/patch-src_dns.cpp	2012-05-16 08:29:59.000000000 -0500
+++ ./files/patch-src_dns.cpp	1969-12-31 18:00:00.000000000 -0600
@@ -1,135 +0,0 @@
---- src/dns.cpp.orig	2012-05-15 21:45:31.840274636 -0500
-+++ src/dns.cpp	2012-05-15 21:45:58.653278686 -0500
-@@ -38,6 +49,8 @@
- #include "configreader.h"
- #include "socket.h"
- 
-+#define DN_COMP_BITMASK	0xC000		/* highest 6 bits in a DN label header */
-+
- /** Masks to mask off the responses we get from the DNSRequest methods
-  */
- enum QueryInfo
-@@ -98,7 +111,7 @@
- 
- 	DNSRequest(DNS* dns, int id, const std::string &original);
- 	~DNSRequest();
--	DNSInfo ResultIsReady(DNSHeader &h, int length);
-+	DNSInfo ResultIsReady(DNSHeader &h, unsigned length);
- 	int SendRequests(const DNSHeader *header, const int length, QueryType qt);
- };
- 
-@@ -161,7 +174,10 @@
- /* Allocate the processing buffer */
- DNSRequest::DNSRequest(DNS* dns, int rid, const std::string &original) : dnsobj(dns)
- {
--	res = new unsigned char[512];
-+	/* hardening against overflow here:  make our work buffer twice the theoretical
-+	 * maximum size so that hostile input doesn't screw us over.
-+	 */
-+	res = new unsigned char[sizeof(DNSHeader) * 2];
- 	*res = 0;
- 	orig = original;
- 	RequestTimeout* RT = new RequestTimeout(ServerInstance->Config->dns_timeout ? ServerInstance->Config->dns_timeout : 5, this, rid);
-@@ -688,11 +704,11 @@
- }
- 
- /** A result is ready, process it */
--DNSInfo DNSRequest::ResultIsReady(DNSHeader &header, int length)
-+DNSInfo DNSRequest::ResultIsReady(DNSHeader &header, unsigned length)
- {
--	int i = 0;
-+	unsigned i = 0, o;
- 	int q = 0;
--	int curanswer, o;
-+	int curanswer;
- 	ResourceRecord rr;
-  	unsigned short ptr;
- 
-@@ -755,7 +771,7 @@
- 				else i += header.payload[i] + 1; /* skip length and label */
- 			}
- 		}
--		if (length - i < 10)
-+		if (static_cast<int>(length - i) < 10)
- 			return std::make_pair((unsigned char*)NULL,"Incorrectly sized DNS reply");
- 
- 		/* XXX: We actually initialise 'rr' here including its ttl field */
-@@ -790,17 +806,37 @@
- 
- 	switch (rr.type)
- 	{
-+		/*
-+		 * CNAME and PTR are compressed.  We need to decompress them.
-+		 */
- 		case DNS_QUERY_CNAME:
--			/* CNAME and PTR have the same processing code */
- 		case DNS_QUERY_PTR:
-+		{
-+			unsigned short lowest_pos = length;
- 			o = 0;
- 			q = 0;
- 			while (q == 0 && i < length && o + 256 < 1023)
- 			{
-+				/* DN label found (byte over 63) */
- 				if (header.payload[i] > 63)
- 				{
- 					memcpy(&ptr,&header.payload[i],2);
--					i = ntohs(ptr) - 0xC000 - 12;
-+
-+					i = ntohs(ptr);
-+
-+					/* check that highest two bits are set. if not, we've been had */
-+					if ((i & DN_COMP_BITMASK) != DN_COMP_BITMASK)
-+						return std::make_pair((unsigned char *) NULL, "DN label decompression header is bogus");
-+
-+					/* mask away the two highest bits. */
-+					i &= ~DN_COMP_BITMASK;
-+
-+					/* and decrease length by 12 bytes. */
-+					i -= 12;
-+
-+					if (i >= lowest_pos)
-+						return std::make_pair((unsigned char *) NULL, "Invalid decompression pointer");
-+					lowest_pos = i;
- 				}
- 				else
- 				{
-@@ -813,25 +849,35 @@
- 						res[o] = 0;
- 						if (o != 0)
- 							res[o++] = '.';
--						memcpy(&res[o],&header.payload[i + 1],header.payload[i]);
-+
-+						if (o + header.payload[i] > sizeof(DNSHeader))
-+							return std::make_pair((unsigned char *) NULL, "DN label decompression is impossible -- malformed/hostile packet?");
-+
-+						memcpy(&res[o], &header.payload[i + 1], header.payload[i]);
- 						o += header.payload[i];
- 						i += header.payload[i] + 1;
- 					}
- 				}
- 			}
- 			res[o] = 0;
-+		}
- 		break;
- 		case DNS_QUERY_AAAA:
-+			if (rr.rdlength != sizeof(struct in6_addr))
-+				return std::make_pair((unsigned char *) NULL, "rr.rdlength is larger than 16 bytes for an ipv6 entry -- malformed/hostile packet?");
-+
- 			memcpy(res,&header.payload[i],rr.rdlength);
- 			res[rr.rdlength] = 0;
- 		break;
- 		case DNS_QUERY_A:
-+			if (rr.rdlength != sizeof(struct in_addr))
-+				return std::make_pair((unsigned char *) NULL, "rr.rdlength is larger than 4 bytes for an ipv4 entry -- malformed/hostile packet?");
-+
- 			memcpy(res,&header.payload[i],rr.rdlength);
- 			res[rr.rdlength] = 0;
- 		break;
- 		default:
--			memcpy(res,&header.payload[i],rr.rdlength);
--			res[rr.rdlength] = 0;
-+			return std::make_pair((unsigned char *) NULL, "don't know how to handle undefined type (" + ConvToStr(rr.type) + ") -- rejecting");
- 		break;
- 	}
- 	return std::make_pair(res,"No error");
diff -ruN --exclude=CVS ../inspircd.orig/pkg-plist ./pkg-plist
--- ../inspircd.orig/pkg-plist	2012-06-14 14:28:02.000000000 -0500
+++ ./pkg-plist	2012-08-15 00:06:28.000000000 -0500
@@ -182,12 +182,15 @@
 lib/inspircd/modules/m_spanningtree.so
 lib/inspircd/modules/m_sqlauth.so
 lib/inspircd/modules/m_sqloper.so
-%%LDAP%%lib/inspircd/modules/m_ldapauth.so
+%%LDAPAUTH%%lib/inspircd/modules/m_ldapauth.so
+%%LDAPOPER%%lib/inspircd/modules/m_ldapoper.so
 %%MYSQL%%lib/inspircd/modules/m_mysql.so
 %%PGSQL%%lib/inspircd/modules/m_pgsql.so
 %%SQLITE%%lib/inspircd/modules/m_sqlite3.so
 %%GNUTLS%%lib/inspircd/modules/m_ssl_gnutls.so
 %%OPENSSL%%lib/inspircd/modules/m_ssl_openssl.so
+%%PCRE%%lib/inspircd/modules/m_regex_pcre.so
+%%POSIX%%lib/inspircd/modules/m_regex_posix.so
 lib/inspircd/modules/m_sslinfo.so
 lib/inspircd/modules/m_sslmodes.so
 lib/inspircd/modules/m_stripcolor.so
--- inspircd-2.0.8.patch ends here ---

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



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