From 31455dd76f4c7ccd6e43e842b7a59d32db285265 Mon Sep 17 00:00:00 2001 From: Hans Zandbelt Date: Fri, 1 May 2009 15:11:04 +0000 Subject: [PATCH] update asterisk 1.6.x to 1.6.1.0 SVN-Revision: 15539 --- net/asterisk-1.6.x/Makefile | 98 +++++++- net/asterisk-1.6.x/patches/300-bug14930.patch | 234 ++++++++++++++++++ 2 files changed, 328 insertions(+), 4 deletions(-) create mode 100644 net/asterisk-1.6.x/patches/300-bug14930.patch diff --git a/net/asterisk-1.6.x/Makefile b/net/asterisk-1.6.x/Makefile index 1172d677b9..7b05d9a0db 100644 --- a/net/asterisk-1.6.x/Makefile +++ b/net/asterisk-1.6.x/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=asterisk -PKG_VERSION:=1.6.1.0-rc3 -PKG_RELEASE:=2 +PKG_VERSION:=1.6.1.0 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.digium.com/pub/asterisk/releases/ -PKG_MD5SUM:=29c45a36653e15ef8e78f92a1de753b8 +PKG_MD5SUM:=7e4dccc79c504ae497ff42062279905d include $(INCLUDE_DIR)/package.mk @@ -89,6 +89,55 @@ $(call Package/asterisk16/Default/description) Asterisk. endef +define Package/asterisk16-chan-local +$(call Package/asterisk16/Default) + TITLE:=chan_local support + DEPENDS:= +asterisk16 +endef + +define Package/asterisk16-chan-local/description +$(call Package/asterisk16/Default/description) + This package provides chan_local support to + Asterisk. +endef + +define Package/asterisk16-cdr +$(call Package/asterisk16/Default) + TITLE:=CDR support + DEPENDS:= +asterisk16 +endef + +define Package/asterisk16-cdr/description +$(call Package/asterisk16/Default/description) + This package provides Call Detail Record support to + Asterisk. +endef + +define Package/asterisk16-res-musiconhold +$(call Package/asterisk16/Default) + TITLE:=MOH support + DEPENDS:= +asterisk16 +endef + +define Package/asterisk16-res-musiconhold/description +$(call Package/asterisk16/Default/description) + This package provides Music On Hold support to + Asterisk. +endef + +define Package/asterisk16-format-g729 +$(call Package/asterisk16/Default) + TITLE:=G.729 support + DEPENDS:= +asterisk16 +endef + +define Package/asterisk16-format-g729/description +$(call Package/asterisk16/Default/description) + This package provides G.729 support to + Asterisk. +endef + + CONFIGURE_ARGS+= \ --without-curl \ --without-curses \ @@ -141,7 +190,7 @@ define Build/Compile include/asterisk/buildopts.h defaults.h \ makeopts.embed_rules ASTCFLAGS="$(EXTRA_CFLAGS) -DLOW_MEMORY $(TARGET_CFLAGS)" \ - ASTLDFLAGS="$(EXTRA_LDFLAGS)" \ + ASTLDFLAGS="$(EXTRA_LDFLAGS) -lpthread" \ $(MAKE) -C "$(PKG_BUILD_DIR)" \ ASTVARLIBDIR="/usr/lib/asterisk" \ NOISY_BUILD="1" \ @@ -237,6 +286,19 @@ define Package/asterisk16-chan-iax2/conffiles /etc/asterisk/iaxprov.conf endef +define Package/asterisk16-cdr/conffiles +/etc/asterisk/cdr.conf +/etc/asterisk/cdr_custom.conf +/etc/asterisk/cdr_manager.conf +/etc/asterisk/cdr_odbc.conf +/etc/asterisk/cdr_pgsql.conf +/etc/asterisk/cdr_tds.conf +endef + +define Package/asterisk16-res-musiconhold/conffiles +/etc/asterisk/musiconhold.conf +endef + define Package/asterisk16-chan-iax2/install $(INSTALL_DIR) $(1)/etc/asterisk $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/iax.conf $(1)/etc/asterisk/ @@ -245,8 +307,36 @@ define Package/asterisk16-chan-iax2/install $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_iax2.so $(1)/usr/lib/asterisk/modules/ endef +define Package/asterisk16-chan-local/install + $(INSTALL_DIR) $(1)/usr/lib/asterisk/modules + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_local.so $(1)/usr/lib/asterisk/modules/ +endef + +define Package/asterisk16-cdr/install + $(INSTALL_DIR) $(1)/etc/asterisk + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/cdr*.conf $(1)/etc/asterisk/ + $(INSTALL_DIR) $(1)/usr/lib/asterisk/modules + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/*cdr*.so $(1)/usr/lib/asterisk/modules/ +endef + +define Package/asterisk16-res-musiconhold/install + $(INSTALL_DIR) $(1)/etc/asterisk + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/asterisk/musiconhold.conf $(1)/etc/asterisk/ + $(INSTALL_DIR) $(1)/usr/lib/asterisk/modules + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/res_musiconhold.so $(1)/usr/lib/asterisk/modules/ +endef + +define Package/asterisk16-format-g729/install + $(INSTALL_DIR) $(1)/usr/lib/asterisk/modules + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/format_g729.so $(1)/usr/lib/asterisk/modules/ +endef + $(eval $(call BuildPackage,asterisk16)) $(eval $(call BuildPackage,asterisk16-voicemail)) $(eval $(call BuildPackage,asterisk16-sounds)) #$(eval $(call BuildPackage,asterisk16-app-meetme)) $(eval $(call BuildPackage,asterisk16-chan-iax2)) +$(eval $(call BuildPackage,asterisk16-chan-local)) +$(eval $(call BuildPackage,asterisk16-cdr)) +$(eval $(call BuildPackage,asterisk16-res-musiconhold)) +$(eval $(call BuildPackage,asterisk16-format-g729)) diff --git a/net/asterisk-1.6.x/patches/300-bug14930.patch b/net/asterisk-1.6.x/patches/300-bug14930.patch new file mode 100644 index 0000000000..6cf313ca90 --- /dev/null +++ b/net/asterisk-1.6.x/patches/300-bug14930.patch @@ -0,0 +1,234 @@ +diff -Nru asterisk-1.6.1.0.org/configure asterisk-1.6.1.0/configure +--- asterisk-1.6.1.0.org/configure 2009-03-19 19:14:55.000000000 +0100 ++++ asterisk-1.6.1.0/configure 2009-05-01 16:20:40.000000000 +0200 +@@ -16790,6 +16790,70 @@ + rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ++{ echo "$as_me:$LINENO: checking for pthread_rwlock_timedwrlock() in pthread.h" >&5 ++echo $ECHO_N "checking for pthread_rwlock_timedwrlock() in pthread.h... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ #include ++int ++main () ++{ ++pthread_rwlock_t foo; struct timespec bar; pthread_rwlock_timedwrlock(&foo, &bar) ++ ; ++ return 0; ++} ++ ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ ac_cv_pthread_rwlock_timedwrlock="yes" ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ ac_cv_pthread_rwlock_timedwrlock="no" ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test "${ac_cv_pthread_rwlock_timedwrlock}" = "yes"; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK 1 ++_ACEOF ++ ++fi ++ + + if test "x${PBX_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP}" != "x1"; then + { echo "$as_me:$LINENO: checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP in pthread.h" >&5 +diff -Nru asterisk-1.6.1.0.org/configure.ac asterisk-1.6.1.0/configure.ac +--- asterisk-1.6.1.0.org/configure.ac 2009-03-19 19:14:55.000000000 +0100 ++++ asterisk-1.6.1.0/configure.ac 2009-05-01 16:20:40.000000000 +0200 +@@ -437,6 +437,24 @@ + AC_MSG_RESULT(no) + ) + ++AC_MSG_CHECKING(for pthread_rwlock_timedwrlock() in pthread.h) ++AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [#include ++ #include ], ++ [pthread_rwlock_t foo; struct timespec bar; pthread_rwlock_timedwrlock(&foo, &bar)]) ++ ],[ ++ AC_MSG_RESULT(yes) ++ ac_cv_pthread_rwlock_timedwrlock="yes" ++ ],[ ++ AC_MSG_RESULT(no) ++ ac_cv_pthread_rwlock_timedwrlock="no" ++ ] ++) ++if test "${ac_cv_pthread_rwlock_timedwrlock}" = "yes"; then ++ AC_DEFINE([HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK], 1, [Define if your system has pthread_rwlock_timedwrlock()]) ++fi ++ + AST_C_DEFINE_CHECK([PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], [PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], [pthread.h]) + + #if test "${cross_compiling}" = "no"; +diff -Nru asterisk-1.6.1.0.org/include/asterisk/autoconfig.h.in asterisk-1.6.1.0/include/asterisk/autoconfig.h.in +--- asterisk-1.6.1.0.org/include/asterisk/autoconfig.h.in 2009-03-19 19:14:55.000000000 +0100 ++++ asterisk-1.6.1.0/include/asterisk/autoconfig.h.in 2009-05-01 16:20:40.000000000 +0200 +@@ -647,6 +647,9 @@ + pthread.h */ + #undef HAVE_PTHREAD_RWLOCK_PREFER_WRITER_NP + ++/* Define if your system has pthread_rwlock_timedwrlock() */ ++#undef HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK ++ + /* Define to 1 if the system has the type `ptrdiff_t'. */ + #undef HAVE_PTRDIFF_T + +diff -Nru asterisk-1.6.1.0.org/include/asterisk/lock.h asterisk-1.6.1.0/include/asterisk/lock.h +--- asterisk-1.6.1.0.org/include/asterisk/lock.h 2009-04-10 05:56:37.000000000 +0200 ++++ asterisk-1.6.1.0/include/asterisk/lock.h 2009-05-01 16:20:40.000000000 +0200 +@@ -49,10 +49,15 @@ + #define _ASTERISK_LOCK_H + + #include ++#include + #include + #ifdef HAVE_BKTR + #include + #endif ++ ++#ifndef HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK ++#include "asterisk/time.h" ++#endif + #include "asterisk/logger.h" + + /* internal macro to profile mutexes. Only computes the delay on +@@ -1395,7 +1400,23 @@ + ast_store_lock_info(AST_WRLOCK, filename, line, func, name, t); + #endif + } ++#ifdef HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + res = pthread_rwlock_timedrdlock(&t->lock, abs_timeout); ++#else ++ do { ++ struct timeval _start = ast_tvnow(), _diff; ++ for (;;) { ++ if (!(res = pthread_rwlock_tryrdlock(&t->lock))) { ++ break; ++ } ++ _diff = ast_tvsub(ast_tvnow(), _start); ++ if (_diff.tv_sec > abs_timeout->tv_sec || (_diff.tv_sec == abs_timeout->tv_sec && _diff.tv_usec * 1000 > abs_timeout->tv_nsec)) { ++ break; ++ } ++ usleep(1); ++ } ++ } while (0); ++#endif + if (!res) { + ast_reentrancy_lock(lt); + if (lt->reentrancy < AST_MAX_REENTRANCY) { +@@ -1474,7 +1495,23 @@ + ast_store_lock_info(AST_WRLOCK, filename, line, func, name, t); + #endif + } ++#ifdef HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK + res = pthread_rwlock_timedwrlock(&t->lock, abs_timeout); ++#else ++ do { ++ struct timeval _start = ast_tvnow(), _diff; ++ for (;;) { ++ if (!(res = pthread_rwlock_trywrlock(&t->lock))) { ++ break; ++ } ++ _diff = ast_tvsub(ast_tvnow(), _start); ++ if (_diff.tv_sec > abs_timeout->tv_sec || (_diff.tv_sec == abs_timeout->tv_sec && _diff.tv_usec * 1000 > abs_timeout->tv_nsec)) { ++ break; ++ } ++ usleep(1); ++ } ++ } while (0); ++#endif + if (!res) { + ast_reentrancy_lock(lt); + if (lt->reentrancy < AST_MAX_REENTRANCY) { +@@ -1762,7 +1799,23 @@ + + static inline int ast_rwlock_timedrdlock(ast_rwlock_t *prwlock, const struct timespec *abs_timeout) + { +- return pthread_rwlock_timedrdlock(prwlock, abs_timeout); ++ int res; ++#ifdef HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK ++ res = pthread_rwlock_timedrdlock(prwlock, abs_timeout); ++#else ++ struct timeval _start = ast_tvnow(), _diff; ++ for (;;) { ++ if (!(res = pthread_rwlock_tryrdlock(prwlock))) { ++ break; ++ } ++ _diff = ast_tvsub(ast_tvnow(), _start); ++ if (_diff.tv_sec > abs_timeout->tv_sec || (_diff.tv_sec == abs_timeout->tv_sec && _diff.tv_usec * 1000 > abs_timeout->tv_nsec)) { ++ break; ++ } ++ usleep(1); ++ } ++#endif ++ return res; + } + + static inline int ast_rwlock_tryrdlock(ast_rwlock_t *prwlock) +@@ -1777,7 +1830,25 @@ + + static inline int ast_rwlock_timedwrlock(ast_rwlock_t *prwlock, const struct timespec *abs_timeout) + { +- return pthread_rwlock_timedwrlock(prwlock, abs_timeout); ++ int res; ++#ifdef HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK ++ res = pthread_rwlock_timedwrlock(prwlock, abs_timeout); ++#else ++ do { ++ struct timeval _start = ast_tvnow(), _diff; ++ for (;;) { ++ if (!(res = pthread_rwlock_trywrlock(prwlock))) { ++ break; ++ } ++ _diff = ast_tvsub(ast_tvnow(), _start); ++ if (_diff.tv_sec > abs_timeout->tv_sec || (_diff.tv_sec == abs_timeout->tv_sec && _diff.tv_usec * 1000 > abs_timeout->tv_nsec)) { ++ break; ++ } ++ usleep(1); ++ } ++ } while (0); ++#endif ++ return res; + } + + static inline int ast_rwlock_trywrlock(ast_rwlock_t *prwlock) -- 2.30.2