yate: bump to 6.3.0 and enable speex codec

New yate modules in this release:
yate-mod-ilbcwebrtc
yate-mod-speexcodec
yate-mod-wiresniff

Some patches were removed:
110-no-libnsl.patch - not needed
120-create-thread-key-on-access.patch - not needed
150-video-codecs-mapping.patch - already applied upstream

Some additional changes:
* An upstream fix (r6470) is cherry-picked to avoid crashing when YATE
  receives an invalid SIP message.

* Build directory changed to include package version.

* Set PKG_BUILD_PARALLEL to allow parallelized build of yate.

* Speed up build if yate-mod-ilbccodec or yate-mod-sqlitedb is
  disabled (disable ilbc and sqlite in configure step).

* Removing umbrella package yate-collection-basic. It isn't built and
  hasn't been built for years and I think the modules it wants to
  install are a bit strange and probably not useful to most
  users. From the name yate-collection-basic I would expect to get
  some basic functionality, but why would I then need
  yate-mod-dumbchan, yate-mod-rmanager and yate-mod-tonegen? What is
  the use case? I think it's better that users themselves install the
  packages needed for their use case, especially in OpenWrt where
  flash space usually is limited and you don't want to install more
  packages than what you really need.

Signed-off-by: Robert Högberg <robert.hogberg@gmail.com>
This commit is contained in:
Robert Högberg 2021-06-04 00:01:59 +02:00
parent 04e1378baf
commit 87fd562617
5 changed files with 57 additions and 142 deletions

View file

@ -9,41 +9,46 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=yate
PKG_VERSION:=6.1.0-1
PKG_RELEASE:=2
PKG_VERSION:=6.3.0-1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://yate.null.ro/tarballs/yate6/
PKG_HASH:=ed88519c8e2f63eec0d699bc6ed8831854af9b32b654b3d7e7c2697b528aa377
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_HASH:=cbd3afc417da7b26b4d7f57146c815a667db2bf1ff4d1ea9dae986954cbcd62f
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
PKG_FIXUP:=autoreconf
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
# Yate currently does not compile with FORTIFY_SOURCE enabled
PKG_FORTIFY_SOURCE:=0
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)-mod-zapcard \
CONFIG_PACKAGE_$(PKG_NAME)-mod-faxchan \
CONFIG_PACKAGE_$(PKG_NAME)-mod-g722webrtc \
CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbccodec \
CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbcwebrtc \
CONFIG_PACKAGE_$(PKG_NAME)-mod-isaccodec \
CONFIG_PACKAGE_$(PKG_NAME)-mod-pgsqldb \
CONFIG_PACKAGE_$(PKG_NAME)-mod-mysqldb \
CONFIG_PACKAGE_$(PKG_NAME)-mod-faxchan \
CONFIG_PACKAGE_$(PKG_NAME)-mod-openssl \
CONFIG_PACKAGE_$(PKG_NAME)-mod-pgsqldb \
CONFIG_PACKAGE_$(PKG_NAME)-mod-speexcodec \
CONFIG_PACKAGE_$(PKG_NAME)-mod-sqlitedb \
CONFIG_PACKAGE_$(PKG_NAME)-mod-zapcard \
CONFIG_PACKAGE_$(PKG_NAME)-mod-zlibcompress \
CONFIG_SOFT_FLOAT
include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
# Needed for yate-mod-mysqldb to find iconv
include $(INCLUDE_DIR)/nls.mk
TAR_OPTIONS+= --strip-components 1
TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS)
define Package/$(PKG_NAME)/Default
SUBMENU:=Telephony
SECTION:=net
@ -83,49 +88,38 @@ define Package/$(PKG_NAME)-sounds
TITLE := Sounds for Yate
endef
define Package/$(PKG_NAME)-collection-basic
$(call Package/yate/Default)
DEPENDS += $(PKG_NAME) \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-sounds \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-dumbchan \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-regfile \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-regexroute \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-rmanager \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-tonegen \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-yrtpchan \
+PACKAGE_$(PKG_NAME)-collection-basic:$(PKG_NAME)-mod-ysipchan
TITLE := Basic Yate Server
endef
# Otherwise yate ignores CPPFLAGS
TARGET_CFLAGS += $(TARGET_CPPFLAGS)
CONFIGURE_ARGS+= \
$(if $(CONFIG_x86_64),--enable-sse2) \
--disable-sctp \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-zapcard),,--disable-dahdi --disable-zaptel) \
--disable-wpcard \
--disable-tdmcard \
--disable-wanpipe \
--enable-ilbc \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbcwebrtc),--enable-ilbc-webrtc,--disable-ilbc-webrtc) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-pgsqldb),--with-libpq="$(STAGING_DIR)/usr",--without-libpq) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-mysqldb),--with-mysql=yes,--with-mysql=no) \
--without-wphwec \
--without-libgsm \
--disable-wpcard \
--without-amrnb \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-faxchan),--with-spandsp="$(STAGING_DIR)/usr/include",--without-spandsp) \
--without-pwlib \
--without-openh323 \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-openssl),--with-openssl,--without-openssl) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-zlibcompress),--with-zlib="$(STAGING_DIR)/usr",--without-zlib) \
--without-libqt4 \
--without-qtstatic \
--without-coredumper \
--without-doxygen \
--without-kdoc
--without-kdoc \
--without-libgsm \
--without-libqt4 \
--without-openh323 \
--without-pwlib \
--without-qtstatic \
--without-wphwec \
$(if $(CONFIG_x86_64),--enable-sse2) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-faxchan),--with-spandsp="$(STAGING_DIR)/usr/include",--without-spandsp) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-g722webrtc),--enable-g722-webrtc,--disable-g722-webrtc) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbccodec),--enable-ilbc,--disable-ilbc) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-ilbcwebrtc),--enable-ilbc-webrtc,--disable-ilbc-webrtc) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-mysqldb),--with-mysql=yes,--without-mysql) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-openssl),--with-openssl,--without-openssl) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-pgsqldb),--with-libpq="$(STAGING_DIR)/usr",--without-libpq) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-speexcodec),--with-libspeex="$(STAGING_DIR)/usr/include",--without-libspeex) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-sqlitedb),--with-sqlite,--without-sqlite) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-zapcard),,--disable-dahdi --disable-zaptel) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mod-zlibcompress),--with-zlib="$(STAGING_DIR)/usr",--without-zlib)
# The regexp implementation of musl 1.1.19 is not fully compatible with yate
# The regexp implementation of musl 1.1.24 is not fully compatible with yate
CONFIGURE_ARGS+= \
--enable-internalregex
@ -139,11 +133,11 @@ endif
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/lib
for yatelib in "" asn sig mgcp jabber script; do \
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libyate$$$${yatelib}.so* $(1)/usr/lib ;\
done
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/yate $(1)/usr/bin/
$(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
@ -163,9 +157,6 @@ define Package/$(PKG_NAME)-sounds/install
$(CP) $(PKG_INSTALL_DIR)/usr/share/yate/sounds/ $(1)/usr/share/yate/
endef
define Package/$(PKG_NAME)-collection-basic/install
endef
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(STAGING_DIR)/usr/include/
@ -183,11 +174,11 @@ define BuildPlugin
define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))/conffiles
$(if $(6),/etc/yate/$(1).conf)
endef
define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))/description
$(3) module for $(PKG_NAME)
endef
define Package/$(PKG_NAME)-mod-$(subst _,-,$(1))/install
$$(INSTALL_DIR) $$(1)/usr/lib/yate/$(2)
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/lib/yate/$(2)/$(1).yate $$(1)/usr/lib/yate/$(2)/$(1).yate
@ -205,7 +196,6 @@ $(if $(6),/etc/yate/$(1).conf)
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
$(eval $(call BuildPackage,$(PKG_NAME)-collection-basic))
$(eval $(call BuildPackage,$(PKG_NAME)-scripts-perl))
$(eval $(call BuildPackage,$(PKG_NAME)-sounds))
@ -245,6 +235,7 @@ $(eval $(call BuildPlugin,extmodule,,External Module Handler,,/usr/share/yate/sc
$(eval $(call BuildPlugin,faxchan,,Spandsp Fax Channel,+libspandsp))
$(eval $(call BuildPlugin,fileinfo,,File Info Holder,,,y))
$(eval $(call BuildPlugin,filetransfer,,File Transfer Driver,,,y))
$(eval $(call BuildPlugin,g722webrtc,,G.722 codec using library based on WebRTC project,))
$(eval $(call BuildPlugin,gvoice,,Google Voice support,,,y))
$(eval $(call BuildPlugin,heartbeat,server,Linux-HA compatible heartbeat,,,y))
$(eval $(call BuildPlugin,ilbccodec,,iLBC Codec,))
@ -280,6 +271,7 @@ $(eval $(call BuildPlugin,rmanager,,Yate Remote Management,,,y))
$(eval $(call BuildPlugin,sigtransport,server,SIGTRAN (SS7 over IP) connection provider,,,y))
$(eval $(call BuildPlugin,sip_cnam_lnp,sip,Query CNAM and LNP databases using SIP INVITE,,,y))
$(eval $(call BuildPlugin,sipfeatures,server,SIP Features (SUBSCRIBE/NOTIFY),,,y))
$(eval $(call BuildPlugin,speexcodec,,Speex codec module written by Olaf Conradi,+libspeex))
$(eval $(call BuildPlugin,sqlitedb,server,SQLite Support,+libsqlite3,,y))
$(eval $(call BuildPlugin,ss7_lnp_ansi,sig,Query LNP Databases,,,y))
$(eval $(call BuildPlugin,subscription,server,Subcription handler and presence notifier,,,y))
@ -288,6 +280,7 @@ $(eval $(call BuildPlugin,tonedetect,,Detectors for Various Tones,))
$(eval $(call BuildPlugin,tonegen,,Tones Generator,,,y))
$(eval $(call BuildPlugin,users,server,Users,,,y))
$(eval $(call BuildPlugin,wavefile,,Wav file Record and Playback,))
$(eval $(call BuildPlugin,wiresniff,,Capture interface for YATE messages,,,y))
$(eval $(call BuildPlugin,wpcard,server,Wanpipe PRI cards Signalling and Data Driver,@BROKEN)) # Mising wanpipe and PRI libraries
$(eval $(call BuildPlugin,yiaxchan,,IAX Channel,,,y))
$(eval $(call BuildPlugin,yjinglechan,,Jingle Channel,,,y))
@ -300,4 +293,3 @@ $(eval $(call BuildPlugin,ysockschan,,SOCKS Channel,,,y))
$(eval $(call BuildPlugin,ystunchan,,STUN Support,,,y))
$(eval $(call BuildPlugin,zapcard,server,Zaptel PRI/TDM/FXS/FXO cards,@!aarch64 +kmod-dahdi,,y))
$(eval $(call BuildPlugin,zlibcompress,,Zlib Compression,+zlib,,y))

View file

@ -1,11 +0,0 @@
--- a/configure.ac
+++ b/configure.ac
@@ -713,7 +713,7 @@ if [[ "x$local_lib" != "xlib" -a ! -d "$
fi
if [[ -f "$ac_cv_use_mysql/include/mysql/mysql.h" -a -d "$ac_cv_use_mysql/$local_lib/mysql" ]]; then
MYSQL_INC="-I$ac_cv_use_mysql/include/mysql"
-MYSQL_LIB="-L$ac_cv_use_mysql/$local_lib/mysql -lmysqlclient_r -lpthread -lz -lcrypt -lnsl -lm"
+MYSQL_LIB="-L$ac_cv_use_mysql/$local_lib/mysql -lmysqlclient_r -lpthread -lz -lcrypt -lm"
MYSQL_VER=`sed -n 's/^.*MYSQL_SERVER_VERSION[[^"]]*"\([[^"]]*\).*$/\1/p' "$ac_cv_use_mysql/include/mysql/mysql_version.h"`
HAVE_MYSQL=yes
fi

View file

@ -0,0 +1,15 @@
--- a/modules/ysipchan.cpp
+++ b/modules/ysipchan.cpp
@@ -3415,8 +3415,10 @@ int YateSIPUDPTransport::process()
}
SIPMessage* msg = SIPMessage::fromParsing(0,b,res);
- msg->msgPrint = print;
- receiveMsg(msg);
+ if (msg) {
+ msg->msgPrint = print;
+ receiveMsg(msg);
+ }
return 0;
}

View file

@ -1,49 +0,0 @@
--- a/engine/Thread.cpp
+++ b/engine/Thread.cpp
@@ -106,21 +106,18 @@ static DWORD getTls()
return tls_index;
}
#else /* _WINDOWS */
-static pthread_key_t current_key;
-
-class ThreadPrivateKeyAlloc
+static pthread_key_t& current_key()
{
-public:
- ThreadPrivateKeyAlloc()
- {
- if (::pthread_key_create(&current_key,ThreadPrivate::destroyFunc)) {
+ static pthread_key_t* current_key = NULL;
+ if (!current_key) {
+ current_key = new pthread_key_t;
+ if (::pthread_key_create(current_key, ThreadPrivate::destroyFunc)) {
abortOnBug(true);
Debug(DebugFail,"Failed to create current thread key!");
}
}
-};
-
-static ThreadPrivateKeyAlloc keyAllocator;
+ return *current_key;
+}
#endif /* _WINDOWS */
static TokenDict s_prio[] = {
@@ -309,7 +306,7 @@ void ThreadPrivate::run()
#ifdef _WINDOWS
::TlsSetValue(getTls(),this);
#else
- ::pthread_setspecific(current_key,this);
+ ::pthread_setspecific(current_key(),this);
pthread_cleanup_push(cleanupFunc,this);
#ifdef PTHREAD_CANCEL_ASYNCHRONOUS
::pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,0);
@@ -421,7 +418,7 @@ ThreadPrivate* ThreadPrivate::current()
#ifdef _WINDOWS
return reinterpret_cast<ThreadPrivate *>(::TlsGetValue(getTls()));
#else
- return reinterpret_cast<ThreadPrivate *>(::pthread_getspecific(current_key));
+ return reinterpret_cast<ThreadPrivate *>(::pthread_getspecific(current_key()));
#endif
}

View file

@ -1,32 +0,0 @@
--- a/libs/ysdp/parser.cpp
+++ b/libs/ysdp/parser.cpp
@@ -59,6 +59,7 @@ const TokenDict SDPParser::s_payloads[]
{ "h263-2000", 112 },
{ "h264", 114 },
{ "vp8", 113 },
+ { "vp9", 115 },
{ "mpv", 32 },
{ "mp2t", 33 },
{ "mp4v", 110 },
@@ -95,6 +96,7 @@ const TokenDict SDPParser::s_rtpmap[] =
{ "H263-2000/90000", 112 },
{ "H264/90000", 114 },
{ "VP8/90000", 113 },
+ { "VP9/90000", 115 },
{ "MPV/90000", 32 },
{ "MP2T/90000", 33 },
{ "MP4V-ES/90000", 110 },
--- a/modules/yrtpchan.cpp
+++ b/modules/yrtpchan.cpp
@@ -63,6 +63,11 @@ static TokenDict dict_payloads[] = {
{ "mjpeg", 26 },
{ "h261", 31 },
{ "h263", 34 },
+ { "h263-1998", 111 },
+ { "h263-2000", 112 },
+ { "h264", 114 },
+ { "vp8", 113 },
+ { "vp9", 115 },
{ "mpv", 32 },
{ "mp2t", 33 },
{ "mp4v", 98 },