Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Nov 2010 01:41:03 GMT
From:      Alexander <bas@it-core.org>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/152660: [patch] net/asterisk fails to build after update to 1.8.0
Message-ID:  <201011290141.oAT1f3WU089171@red.freebsd.org>
Resent-Message-ID: <201011290150.oAT1o8R6035614@freefall.freebsd.org>

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

>Number:         152660
>Category:       ports
>Synopsis:       [patch] net/asterisk fails to build after update to 1.8.0
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Nov 29 01:50:08 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Alexander
>Release:        8.1-RELEASE
>Organization:
>Environment:
FreeBSD vbox 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010     root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
>Description:
net/asterisk fails to build after update to 1.8.0 because it seems like patch files are left from 1.4.x
>How-To-Repeat:
cd /usr/ports/net/asterisk/
make install clean
>Fix:
patch-channels::chan_sip.c - remove
patch-rtp_timeout - remove
patch-suppress_log_dups.diff - remove
patch-include::asterisk::utils.h - replace with new patch-include::network.h
patch-Makefile.rules - patch :)
---
All changes is in attached .patch file

Patch attached with submission follows:

diff -urN /usr/ports/net/asterisk.orig/files/patch-Makefile.rules /usr/ports/net/asterisk/files/patch-Makefile.rules
--- /usr/ports/net/asterisk.orig/files/patch-Makefile.rules	2010-11-29 00:33:57.000000000 +0500
+++ /usr/ports/net/asterisk/files/patch-Makefile.rules	2010-11-29 04:51:37.000000000 +0500
@@ -1,16 +1,17 @@
---- Makefile.rules.orig	2009-09-28 22:09:25.000000000 +0300
-+++ Makefile.rules	2009-11-23 16:15:23.000000000 +0200
-@@ -37,11 +37,13 @@
+--- Makefile.rules.orig	2010-11-29 04:46:02.000000000 +0500
++++ Makefile.rules	2010-11-29 04:51:10.000000000 +0500
+@@ -36,12 +36,14 @@
+ endif
  
  OPTIMIZE?=-O6
- 
 +ifneq ($(OSARCH),FreeBSD)
- ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
-     _ASTCFLAGS+=$(OPTIMIZE)
- else
-     _ASTCFLAGS+=-O0
+ ifneq ($(findstring darwin,$(OSARCH)),)
+   ifeq ($(shell /usr/bin/sw_vers -productVersion | cut -c1-4),10.6)
+     # Snow Leopard has an issue with this optimization flag on large files (like chan_sip)
+     OPTIMIZE+=-fno-inline-functions
+   endif
  endif
 +endif
  
- # shortcuts for common combinations of flags; these must be recursively expanded so that
- # per-target settings will be applied
+ ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS))$(AST_CODE_COVERAGE),no)
+     _ASTCFLAGS+=$(OPTIMIZE)
diff -urN /usr/ports/net/asterisk.orig/files/patch-channels::chan_sip.c /usr/ports/net/asterisk/files/patch-channels::chan_sip.c
--- /usr/ports/net/asterisk.orig/files/patch-channels::chan_sip.c	2010-11-29 00:33:57.000000000 +0500
+++ /usr/ports/net/asterisk/files/patch-channels::chan_sip.c	1970-01-01 05:00:00.000000000 +0500
@@ -1,11 +0,0 @@
---- channels/chan_sip.c.orig	2008-06-10 00:46:46.000000000 -0700
-+++ channels/chan_sip.c	2008-06-10 00:46:46.000000000 -0700
-@@ -496,7 +496,7 @@
- #define DEFAULT_MOHINTERPRET    "default"
- #define DEFAULT_MOHSUGGEST      ""
- #define DEFAULT_VMEXTEN 	"asterisk"
--#define DEFAULT_CALLERID 	"asterisk"
-+#define DEFAULT_CALLERID 	"Unknown"
- #define DEFAULT_NOTIFYMIME 	"application/simple-message-summary"
- #define DEFAULT_MWITIME 	10
- #define DEFAULT_ALLOWGUEST	TRUE
diff -urN /usr/ports/net/asterisk.orig/files/patch-include::asterisk::utils.h /usr/ports/net/asterisk/files/patch-include::asterisk::utils.h
--- /usr/ports/net/asterisk.orig/files/patch-include::asterisk::utils.h	2010-11-29 00:33:57.000000000 +0500
+++ /usr/ports/net/asterisk/files/patch-include::asterisk::utils.h	1970-01-01 05:00:00.000000000 +0500
@@ -1,13 +0,0 @@
-
-$FreeBSD: ports/net/asterisk/files/patch-include::asterisk::utils.h,v 1.4 2010/11/28 19:33:57 fjoe Exp $
-
---- include/asterisk/utils.h	2004/10/10 12:55:50	1.1
-+++ include/asterisk/utils.h	2004/10/10 12:56:43
-@@ -37,7 +37,6 @@
- #ifdef inet_ntoa
- #undef inet_ntoa
- #endif
--#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__
- 
- #ifdef LINUX
- #define ast_pthread_create pthread_create
diff -urN /usr/ports/net/asterisk.orig/files/patch-include::network.h /usr/ports/net/asterisk/files/patch-include::network.h
--- /usr/ports/net/asterisk.orig/files/patch-include::network.h	1970-01-01 05:00:00.000000000 +0500
+++ /usr/ports/net/asterisk/files/patch-include::network.h	2010-11-29 05:05:50.000000000 +0500
@@ -0,0 +1,10 @@
+--- include/asterisk/network.h.orig	2008-06-12 23:38:27.000000000 +0600
++++ include/asterisk/network.h	2010-11-29 05:05:09.000000000 +0500
+@@ -84,7 +84,6 @@
+ #ifdef inet_ntoa
+ #undef inet_ntoa
+ #endif
+-#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__
+ 
+ /*! \brief Compares the source address and port of two sockaddr_in */
+ static force_inline int inaddrcmp(const struct sockaddr_in *sin1, const struct sockaddr_in *sin2)
diff -urN /usr/ports/net/asterisk.orig/files/patch-rtp_timeout /usr/ports/net/asterisk/files/patch-rtp_timeout
--- /usr/ports/net/asterisk.orig/files/patch-rtp_timeout	2010-11-29 00:33:57.000000000 +0500
+++ /usr/ports/net/asterisk/files/patch-rtp_timeout	1970-01-01 05:00:00.000000000 +0500
@@ -1,25 +0,0 @@
---- channels/chan_sip.c.orig	2009-04-14 08:58:13.000000000 +0100
-+++ channels/chan_sip.c	2009-04-14 09:00:58.000000000 +0100
-@@ -16287,7 +16287,6 @@
- restartsearch:		
- 		/* Check for interfaces needing to be killed */
- 		ast_mutex_lock(&iflock);
--		t = time(NULL);
- 		/* don't scan the interface list if it hasn't been a reasonable period
- 		   of time since the last time we did it (when MWI is being sent, we can
- 		   get back to this point every millisecond or less)
-@@ -16306,12 +16305,14 @@
- 			    (sip->owner->_state == AST_STATE_UP) &&
- 			    !sip->redirip.sin_addr.s_addr &&
- 			    sip->t38.state != T38_ENABLED) {
-+				t = time(NULL);
- 				if (sip->lastrtptx &&
- 				    ast_rtp_get_rtpkeepalive(sip->rtp) &&
- 				    (t > sip->lastrtptx + ast_rtp_get_rtpkeepalive(sip->rtp))) {
- 					/* Need to send an empty RTP packet */
- 					sip->lastrtptx = time(NULL);
- 					ast_rtp_sendcng(sip->rtp, 0);
-+					t = time(NULL);
- 				}
- 				if (sip->lastrtprx &&
- 					(ast_rtp_get_rtptimeout(sip->rtp) || ast_rtp_get_rtpholdtimeout(sip->rtp)) &&
diff -urN /usr/ports/net/asterisk.orig/files/patch-suppress_log_dups.diff /usr/ports/net/asterisk/files/patch-suppress_log_dups.diff
--- /usr/ports/net/asterisk.orig/files/patch-suppress_log_dups.diff	2010-11-29 00:33:57.000000000 +0500
+++ /usr/ports/net/asterisk/files/patch-suppress_log_dups.diff	1970-01-01 05:00:00.000000000 +0500
@@ -1,270 +0,0 @@
-Index: main/logger.c
-===================================================================
---- main/logger.c	(revision 188505)
-+++ main/logger.c	(working copy)
-@@ -140,6 +140,17 @@
- AST_THREADSTORAGE(log_buf, log_buf_init);
- #define LOG_BUF_INIT_SIZE       128
- 
-+/*
-+ * Storage for previous log message to prevent log storms
-+ */
-+static int stored_log_level;
-+static int stored_log_dup_count = 0;
-+static char *stored_log_msg = NULL;
-+static const char *stored_log_file;
-+static int stored_log_line;
-+static const char *stored_log_function;
-+static ast_mutex_t stored_log_msg_lock;
-+
- static int make_components(char *s, int lineno)
- {
- 	char *w;
-@@ -591,6 +602,8 @@
- 	char tmp[256];
- 	int res = 0;
- 
-+        ast_mutex_init(&stored_log_msg_lock);
-+
- 	/* auto rotate if sig SIGXFSZ comes a-knockin */
- 	(void) signal(SIGXFSZ,(void *) handle_SIGXFSZ);
- 
-@@ -655,14 +668,14 @@
- 	return;
- }
- 
--static void __attribute__((format(printf, 5, 0))) ast_log_vsyslog(int level, const char *file, int line, const char *function, const char *fmt, va_list args) 
-+static void ast_log_syslog(int level, const char *file, int line, const char *function, const char *msg) 
- {
- 	char buf[BUFSIZ];
- 	char *s;
- 
- 	if (level >= SYSLOG_NLEVELS) {
- 		/* we are locked here, so cannot ast_log() */
--		fprintf(stderr, "ast_log_vsyslog called with bogus level: %d\n", level);
-+		fprintf(stderr, "ast_log_syslog called with bogus level: %d\n", level);
- 		return;
- 	}
- 	if (level == __LOG_VERBOSE) {
-@@ -676,27 +689,20 @@
- 			 levels[level], (long)GETTID(), file, line, function);
- 	}
- 	s = buf + strlen(buf);
--	vsnprintf(s, sizeof(buf) - strlen(buf), fmt, args);
-+	snprintf(s, sizeof(buf) - strlen(buf), "%s", msg);
- 	term_strip(s, s, strlen(s) + 1);
- 	syslog(syslog_level_map[level], "%s", buf);
- }
- 
--/*!
-- * \brief send log messages to syslog and/or the console
-- */
--void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...)
-+static void __ast_log(int level, const char *file, int line, const char *function, char *msg, int msglen)
- {
- 	struct logchannel *chan;
--	struct ast_dynamic_str *buf;
- 	time_t t;
- 	struct tm tm;
- 	char date[256];
-+        char buf[2048];
-+        int res;
- 
--	va_list ap;
--
--	if (!(buf = ast_dynamic_str_thread_get(&log_buf, LOG_BUF_INIT_SIZE)))
--		return;
--
- 	if (AST_LIST_EMPTY(&logchannels))
- 	{
- 		/*
-@@ -704,35 +710,12 @@
- 		 * so just log to stdout
- 		*/
- 		if (level != __LOG_VERBOSE) {
--			int res;
--			va_start(ap, fmt);
--			res = ast_dynamic_str_thread_set_va(&buf, BUFSIZ, &log_buf, fmt, ap);
--			va_end(ap);
--			if (res != AST_DYNSTR_BUILD_FAILED) {
--				term_filter_escapes(buf->str);
--				fputs(buf->str, stdout);
--			}
-+                        term_filter_escapes(msg);
-+                        fputs(msg, stdout);
- 		}
- 		return;
- 	}
- 
--	/* don't display LOG_DEBUG messages unless option_verbose _or_ option_debug
--	   are non-zero; LOG_DEBUG messages can still be displayed if option_debug
--	   is zero, if option_verbose is non-zero (this allows for 'level zero'
--	   LOG_DEBUG messages to be displayed, if the logmask on any channel
--	   allows it)
--	*/
--	if (!option_verbose && !option_debug && (level == __LOG_DEBUG))
--		return;
--
--	/* Ignore anything that never gets logged anywhere */
--	if (!(global_logmask & (1 << level)))
--		return;
--	
--	/* Ignore anything other than the currently debugged file if there is one */
--	if ((level == __LOG_DEBUG) && !ast_strlen_zero(debug_filename) && strcasecmp(debug_filename, file))
--		return;
--
- 	time(&t);
- 	ast_localtime(&t, &tm, NULL);
- 	strftime(date, sizeof(date), dateformat, &tm);
-@@ -740,13 +723,8 @@
- 	AST_LIST_LOCK(&logchannels);
- 
- 	if (logfiles.event_log && level == __LOG_EVENT) {
--		va_start(ap, fmt);
--
--		fprintf(eventlog, "%s asterisk[%ld]: ", date, (long)getpid());
--		vfprintf(eventlog, fmt, ap);
-+		fprintf(eventlog, "%s asterisk[%ld]: %s", date, (long)getpid(), msg);
- 		fflush(eventlog);
--
--		va_end(ap);
- 		AST_LIST_UNLOCK(&logchannels);
- 		return;
- 	}
-@@ -756,18 +734,15 @@
- 			break;
- 		/* Check syslog channels */
- 		if (chan->type == LOGTYPE_SYSLOG && (chan->logmask & (1 << level))) {
--			va_start(ap, fmt);
--			ast_log_vsyslog(level, file, line, function, fmt, ap);
--			va_end(ap);
-+			ast_log_syslog(level, file, line, function, msg);
- 		/* Console channels */
- 		} else if ((chan->logmask & (1 << level)) && (chan->type == LOGTYPE_CONSOLE)) {
- 			char linestr[128];
- 			char tmp1[80], tmp2[80], tmp3[80], tmp4[80];
- 
- 			if (level != __LOG_VERBOSE) {
--				int res;
- 				sprintf(linestr, "%d", line);
--				ast_dynamic_str_thread_set(&buf, BUFSIZ, &log_buf,
-+				snprintf(buf, sizeof(buf),
- 					"[%s] %s[%ld]: %s:%s %s: ",
- 					date,
- 					term_color(tmp1, levels[level], colors[level], 0, sizeof(tmp1)),
-@@ -776,23 +751,17 @@
- 					term_color(tmp3, linestr, COLOR_BRWHITE, 0, sizeof(tmp3)),
- 					term_color(tmp4, function, COLOR_BRWHITE, 0, sizeof(tmp4)));
- 				/*filter to the console!*/
--				term_filter_escapes(buf->str);
--				ast_console_puts_mutable(buf->str);
--				
--				va_start(ap, fmt);
--				res = ast_dynamic_str_thread_set_va(&buf, BUFSIZ, &log_buf, fmt, ap);
--				va_end(ap);
--				if (res != AST_DYNSTR_BUILD_FAILED)
--					ast_console_puts_mutable(buf->str);
-+				term_filter_escapes(buf);
-+				ast_console_puts_mutable(buf);
-+				ast_console_puts_mutable(msg);
- 			}
- 		/* File channels */
- 		} else if ((chan->logmask & (1 << level)) && (chan->fileptr)) {
--			int res;
--			ast_dynamic_str_thread_set(&buf, BUFSIZ, &log_buf, 
-+			snprintf(buf, sizeof(buf), 
- 				"[%s] %s[%ld] %s: ",
- 				date, levels[level], (long)GETTID(), file);
--			res = fprintf(chan->fileptr, "%s", buf->str);
--			if (res <= 0 && !ast_strlen_zero(buf->str)) {	/* Error, no characters printed */
-+			res = fprintf(chan->fileptr, "%s", buf);
-+			if (res <= 0 && !ast_strlen_zero(buf)) {	/* Error, no characters printed */
- 				fprintf(stderr,"**** Asterisk Logging Error: ***********\n");
- 				if (errno == ENOMEM || errno == ENOSPC) {
- 					fprintf(stderr, "Asterisk logging error: Out of disk space, can't log to log file %s\n", chan->filename);
-@@ -801,16 +770,10 @@
- 				manager_event(EVENT_FLAG_SYSTEM, "LogChannel", "Channel: %s\r\nEnabled: No\r\nReason: %d - %s\r\n", chan->filename, errno, strerror(errno));
- 				chan->disabled = 1;	
- 			} else {
--				int res;
- 				/* No error message, continue printing */
--				va_start(ap, fmt);
--				res = ast_dynamic_str_thread_set_va(&buf, BUFSIZ, &log_buf, fmt, ap);
--				va_end(ap);
--				if (res != AST_DYNSTR_BUILD_FAILED) {
--					term_strip(buf->str, buf->str, buf->len);
--					fputs(buf->str, chan->fileptr);
--					fflush(chan->fileptr);
--				}
-+                                term_strip(msg, msg, msglen);
-+                                fputs(msg, chan->fileptr);
-+                                fflush(chan->fileptr);
- 			}
- 		}
- 	}
-@@ -825,6 +788,65 @@
- 	}
- }
- 
-+/*!
-+ * \brief send log messages to syslog and/or the console
-+ */
-+void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...)
-+{
-+	struct ast_dynamic_str *buf;
-+        int res;
-+	va_list ap;
-+
-+	if (!(buf = ast_dynamic_str_thread_get(&log_buf, LOG_BUF_INIT_SIZE)))
-+		return;
-+
-+        va_start(ap, fmt);
-+        res = ast_dynamic_str_thread_set_va(&buf, BUFSIZ, &log_buf, fmt, ap);
-+        va_end(ap);
-+        if (res == AST_DYNSTR_BUILD_FAILED)
-+                return;
-+
-+	/* don't display LOG_DEBUG messages unless option_verbose _or_ option_debug
-+	   are non-zero; LOG_DEBUG messages can still be displayed if option_debug
-+	   is zero, if option_verbose is non-zero (this allows for 'level zero'
-+	   LOG_DEBUG messages to be displayed, if the logmask on any channel
-+	   allows it)
-+	*/
-+	if (!option_verbose && !option_debug && (level == __LOG_DEBUG))
-+		return;
-+
-+	/* Ignore anything that never gets logged anywhere */
-+	if (!(global_logmask & (1 << level)))
-+		return;
-+	
-+	/* Ignore anything other than the currently debugged file if there is one */
-+	if ((level == __LOG_DEBUG) && !ast_strlen_zero(debug_filename) && strcasecmp(debug_filename, file))
-+		return;
-+
-+        ast_mutex_lock(&stored_log_msg_lock);
-+        if (stored_log_msg == NULL || stored_log_level != level || strcmp(buf->str, stored_log_msg) != 0) {
-+                if (stored_log_dup_count > 0) {
-+                        char buf2[1024];
-+
-+                        snprintf(buf2, sizeof(buf2), "Last message repeated %d times\n", stored_log_dup_count);
-+                        __ast_log(stored_log_level, stored_log_file, stored_log_line, stored_log_function, buf2, strlen(buf2));
-+                }
-+                if (stored_log_msg != NULL)
-+                        ast_free(stored_log_msg);
-+                stored_log_msg = ast_strdup(buf->str);
-+                stored_log_level = level;
-+                stored_log_dup_count = 0;
-+                stored_log_file = file;
-+                stored_log_line = line;
-+                stored_log_function = function;
-+                __ast_log(level, file, line, function, buf->str, buf->len);
-+        }
-+        else
-+                ++stored_log_dup_count;
-+
-+        ast_mutex_unlock(&stored_log_msg_lock);
-+}
-+
- void ast_backtrace(void)
- {
- #ifdef linux


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



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