From b4c056464783e55351d306ce4d9a647371fe68b3 Mon Sep 17 00:00:00 2001 From: Jiri Slachta Date: Tue, 7 Nov 2017 09:29:45 +0100 Subject: [PATCH] asterisk-15.x: introduce new package I introduce asterisk 15.x as a replacement for asterisk 11.x. Currently without support for chan-lantiq and sccp-b. Those features are going to be added soon after this introduction. Signed-off-by: Jiri Slachta --- net/asterisk-15.x/Config.in | 11 + net/asterisk-15.x/Makefile | 447 ++++++++++++++++++ net/asterisk-15.x/files/asterisk.default | 4 + net/asterisk-15.x/files/asterisk.init | 33 ++ .../001-disable-semaphores-check.patch | 22 + .../patches/002-undef-res-ninit.patch | 10 + .../patches/003-disable-ast-xml-docs.patch | 13 + .../patches/004-disable-check-for-hrirs.patch | 11 + .../030-GNU-GLOB-exts-only-on-glibc.patch | 22 + 9 files changed, 573 insertions(+) create mode 100644 net/asterisk-15.x/Config.in create mode 100644 net/asterisk-15.x/Makefile create mode 100644 net/asterisk-15.x/files/asterisk.default create mode 100644 net/asterisk-15.x/files/asterisk.init create mode 100644 net/asterisk-15.x/patches/001-disable-semaphores-check.patch create mode 100644 net/asterisk-15.x/patches/002-undef-res-ninit.patch create mode 100644 net/asterisk-15.x/patches/003-disable-ast-xml-docs.patch create mode 100644 net/asterisk-15.x/patches/004-disable-check-for-hrirs.patch create mode 100644 net/asterisk-15.x/patches/030-GNU-GLOB-exts-only-on-glibc.patch diff --git a/net/asterisk-15.x/Config.in b/net/asterisk-15.x/Config.in new file mode 100644 index 0000000..f0d069d --- /dev/null +++ b/net/asterisk-15.x/Config.in @@ -0,0 +1,11 @@ +menu "Advanced configuration" + depends on PACKAGE_asterisk15 + +config ASTERISK15_LOW_MEMORY + bool "Optimize Asterisk 15 for low memory usage" + default n + help + Warning: this feature is known to cause problems with some modules. + Disable it if you experience problems like segmentation faults. + +endmenu diff --git a/net/asterisk-15.x/Makefile b/net/asterisk-15.x/Makefile new file mode 100644 index 0000000..5a370e1 --- /dev/null +++ b/net/asterisk-15.x/Makefile @@ -0,0 +1,447 @@ +# +# Copyright (C) 2017 Jiri Slachta +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=asterisk15 +PKG_VERSION:=15.1.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=asterisk-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://downloads.asterisk.org/pub/telephony/asterisk/releases +PKG_HASH:=23a34342c410009ab35566bf85ca2a1a0573f1848dc0ac74f65f5e0bca51f898 + +PKG_BUILD_DIR:=$(BUILD_DIR)/asterisk-$(PKG_VERSION) +PKG_BUILD_DEPENDS:=libxml2/host + +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=COPYING LICENSE +PKG_MAINTAINER:=Jiri Slachta + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/host-build.mk +include $(INCLUDE_DIR)/version.mk + +define Package/asterisk15/install/module + $(INSTALL_DIR) $(1)/usr/lib/asterisk/modules + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/*$(2).so* $(1)/usr/lib/asterisk/modules/ +endef + +define Package/asterisk15/install/conffile + $(INSTALL_DIR) $(1)/etc/asterisk + $(CP) $(PKG_INSTALL_DIR)/etc/asterisk/$(2) $(1)/etc/asterisk/ +endef + +define Package/asterisk15/install/lib + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/$(2).so* $(1)/usr/lib/ +endef + +define Package/asterisk15/install/sbin + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/$(2) $(1)/usr/sbin/ +endef + +define Package/asterisk15/install/sounds + $(INSTALL_DIR) $(1)/usr/share/asterisk/sounds/ + $(CP) $(PKG_INSTALL_DIR)/usr/share/asterisk/sounds/en/$(2) $(1)/usr/share/asterisk/sounds/ +endef + +define Package/$(PKG_NAME)/config + source "$(SOURCE)/Config.in" +endef + +define BuildAsterisk15Module + define Package/asterisk15-$(1) + $$(call Package/asterisk15/Default) + TITLE:=$(2) support + DEPENDS:= asterisk15 $(patsubst +%,+PACKAGE_asterisk15-$(1):%,$(4)) + endef + + define Package/asterisk15-$(1)/conffiles +$(subst $(space),$(newline),$(foreach c,$(5),/etc/asterisk/$(c))) + endef + + define Package/asterisk15-$(1)/description +This package provides support for '$(3)' in Asterisk. + endef + + define Package/asterisk15-$(1)/install +$(foreach c,$(5),$(call Package/asterisk15/install/conffile,$$(1),$(c));) +$(foreach m,$(6),$(call Package/asterisk15/install/module,$$(1),$(m));) +$(foreach s,$(7),$(call Package/asterisk15/install/sounds,$$(1),$(s));) +$(foreach b,$(8),$(call Package/asterisk15/install/sbin,$$(1),$(b));) + endef + + $$(eval $$(call BuildPackage,asterisk15-$(1))) +endef + +define Package/asterisk15/Default + SUBMENU:=Telephony + SECTION:=net + CATEGORY:=Network + URL:=http://www.asterisk.org/ +endef + +define Package/asterisk15/Default/description + Asterisk is a complete PBX in software. It provides all of the features + you would expect from a PBX and more. Asterisk does voice over IP in three + protocols, and can interoperate with almost all standards-based telephony + equipment using relatively inexpensive hardware. +endef + +define Package/asterisk15 +$(call Package/asterisk15/Default) + TITLE:=Complete open source PBX, v$(PKG_VERSION) + MENU:=1 + DEPENDS:=+jansson +libedit +libncurses +libopenssl +libpopt +libsqlite3 +libstdcpp +libuuid +libxml2 +libxslt +zlib +endef + +define Package/asterisk15/description +$(call Package/asterisk15/Default/description) +endef + +define Package/asterisk15/conffiles +/etc/asterisk/asterisk.conf +/etc/asterisk/acl.conf +/etc/asterisk/cel.conf +/etc/asterisk/ccss.conf +/etc/asterisk/extconfig.conf +/etc/asterisk/extensions.conf +/etc/asterisk/features.conf +/etc/asterisk/http.conf +/etc/asterisk/indications.conf +/etc/asterisk/logger.conf +/etc/asterisk/manager.conf +/etc/asterisk/modules.conf +/etc/asterisk/res_config_sqlite3.conf +/etc/asterisk/stasis.conf +/etc/asterisk/udptl.conf +/etc/asterisk/users.conf +/etc/default/asterisk +/etc/init.d/asterisk +endef + +AST_CFG_FILES:= \ + asterisk.conf acl.conf cel.conf ccss.conf extconfig.conf \ + extensions.conf features.conf http.conf indications.conf \ + logger.conf manager.conf modules.conf stasis.conf udptl.conf \ + users.conf res_config_sqlite3.conf + +AST_EMB_MODULES:=\ + app_dial app_echo app_macro app_playback \ + func_callerid func_logic func_strings func_timeout \ + pbx_config res_crypto + +define Package/asterisk15/install +$(call Package/asterisk15/install/lib,$(1),libasteriskssl) +$(call Package/asterisk15/install/sbin,$(1),asterisk) +$(call Package/asterisk15/install/sbin,$(1),safe_asterisk) +$(call Package/asterisk15/install/sbin,$(1),astgenkey) +$(foreach m,$(AST_CFG_FILES),$(call Package/asterisk15/install/conffile,$(1),$(m));) +$(foreach m,$(AST_EMB_MODULES),$(call Package/asterisk15/install/module,$(1),$(m));) + $(INSTALL_DIR) $(1)/usr/share/asterisk/sounds/ + $(INSTALL_DIR) $(1)/etc/default + $(INSTALL_DATA) ./files/asterisk.default $(1)/etc/default/asterisk + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk +endef + +define Package/asterisk15-sounds +$(call Package/asterisk15/Default) + TITLE:=Sounds support + DEPENDS:=asterisk15 +endef + +define Package/asterisk15-sounds/description +This package provides the sound-files for Asterisk-13. +endef + +define Package/asterisk15-sounds/install + $(INSTALL_DIR) $(1)/usr/share/asterisk/sounds/ + $(CP) $(PKG_INSTALL_DIR)/usr/share/asterisk/sounds/en/* $(1)/usr/share/asterisk/sounds/ + rm -f $(1)/usr/share/asterisk/sounds/vm-* +endef + +ifneq ($(CONFIG_PACKAGE_asterisk15-chan-dahdi),) + CONFIGURE_ARGS+= \ + --with-dahdi="$(STAGING_DIR)/usr" \ + --with-pri="$(STAGING_DIR)/usr" \ + --with-tonezone="$(STAGING_DIR)/usr" +else + CONFIGURE_ARGS+= \ + --without-dahdi \ + --without-pri \ + --without-tonezone +endif + +# Pass CPPFLAGS in the CFLAGS as otherwise the build system will +# ignore them. +TARGET_CFLAGS+=$(TARGET_CPPFLAGS) + +CONFIGURE_ARGS+= \ + --without-execinfo \ + --without-bluetooth \ + --without-cap \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-curl),--with-libcurl="$(STAGING_DIR)/usr") \ + --without-curses \ + --with-gsm=internal \ + --without-gtk2 \ + --with-ilbc=internal \ + --without-isdnnet \ + --without-misdn \ + --without-nbs \ + --without-neon \ + --without-neon29 \ + --with-pjproject="$(STAGING_DIR)/usr" \ + --without-pjproject-bundled \ + --with-libedit="$(STAGING_DIR)/usr" \ + --with-libxml2 \ + --with-ncurses="$(STAGING_DIR)/usr" \ + --without-netsnmp \ + --without-newt \ + --without-ogg \ + --without-osptk \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-pbx-lua),--with-lua="$(STAGING_DIR)/usr",--without-lua) \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgres="$(STAGING_DIR)/usr",--without-postgres) \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-pjsip),--with-pjproject="$(STAGING_DIR)/usr",--without-pjproject) \ + --with-popt="$(STAGING_DIR)/usr" \ + --without-pwlib \ + --without-radius \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-fax-spandsp),--with-spandsp="$(STAGING_DIR)/usr",--without-spandsp) \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-xmpp),--with-iksemel="$(STAGING_DIR)/usr",--without-iksemel) \ + --without-sdl \ + --without-sqlite \ + --with-sqlite3="$(STAGING_DIR)/usr" \ + $(if $(CONFIG_PACKAGE_$(PKG_NAME)-res-srtp),--with-srtp="$(STAGING_DIR)/usr",--without-srtp) \ + --without-suppserv \ + --without-tds \ + --without-termcap \ + --without-tinfo \ + --without-vorbis \ + --without-vpb \ + --with-z="$(STAGING_DIR)/usr" \ + --with-sounds-cache="$(DL_DIR)" \ + --enable-xmldoc + +CONFIGURE_VARS += \ + ac_cv_lib_srtp2_srtp_init=no \ + ac_cv_path_ac_pt_CONFIG_LIBXML2=$(STAGING_DIR)/host/bin/xml2-config + +MAKE_FLAGS+= \ + ASTDATADIR="/usr/share/asterisk" \ + DESTDIR="$(PKG_INSTALL_DIR)" + +# show full gcc arguments instead of [CC] and [LD] +MAKE_FLAGS+= \ + NOISY_BUILD="yes" + +# don't let asterisk mess with build flags +MAKE_FLAGS+= \ + AST_FORTIFY_SOURCE="" \ + DEBUG="" \ + OPTIMIZE="" + +AST_MENUSELECT_OPTS = \ + --without-newt \ + --without-curses \ + --with-libxml2="$(STAGING_DIR_HOSTPKG)/usr" + +define Build/Configure + cd $(PKG_BUILD_DIR); \ + ./bootstrap.sh + $(call Build/Configure/Default) + cd $(PKG_BUILD_DIR)/menuselect; \ + ./bootstrap.sh; \ + CC="$(HOSTCC)" \ + CFLAGS="$(HOST_CFLAGS) -I$(STAGING_DIR_HOSTPKG)/include/libxml2" \ + CONFIG_SITE= \ + LDFLAGS="$(HOST_LDFLAGS) -Wl,-rpath,$(STAGING_DIR_HOSTPKG)/lib" \ + ac_cv_path_ac_pt_CONFIG_LIBXML2=$(STAGING_DIR_HOSTPKG)/bin/xml2-config \ + ./configure \ + $(HOST_CONFIGURE_ARGS) \ + $(AST_MENUSELECT_OPTS) +endef + +define Build/Compile + CC="$(HOSTCC)" \ + CFLAGS="$(HOST_CFLAGS) -I$(STAGING_DIR_HOSTPKG)/include/libxml2" \ + LDFLAGS="$(HOST_LDFLAGS) -Wl,-rpath,$(STAGING_DIR_HOSTPKG)/lib" \ + $(MAKE) -C "$(PKG_BUILD_DIR)/menuselect" + $(MAKE) -C "$(PKG_BUILD_DIR)" menuselect-tree + cd "$(PKG_BUILD_DIR)" && \ + ./menuselect/menuselect \ + --disable BUILD_NATIVE \ + $(if $(CONFIG_ASTERISK15_LOW_MEMORY),--enable LOW_MEMORY) \ + menuselect.makeopts + $(call Build/Compile/Default,all install samples) +endef + +# Tar up the headers for chan-lantiq and store them in $(DL_DIR). This is a +# workaround for a hen and egg problem: chan-lantiq is a nonshared (target +# specific) package. It depends on both kernel module and asterisk headers. But +# the build bots will not build shared packages (e.g. asterisk) when building +# the target specific packages because the shared packages are not selected by +# CONFIG_ALL_NONSHARED=y. + +# The workaround stores the asterisk headers in $(DL_DIR) where chan-lantiq can +# access them. + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include/asterisk-15/include/asterisk/ + $(CP) $(PKG_INSTALL_DIR)/usr/include/asterisk/*.h $(1)/usr/include/asterisk-15/include/asterisk/ + $(CP) $(PKG_INSTALL_DIR)/usr/include/asterisk.h $(1)/usr/include/asterisk-15/include/ +ifeq ($(CONFIG_TARGET_ARCH_PACKAGES),"mips_24kc") + $(TAR) --create --xz \ + --file=$(DL_DIR)/$(PKG_NAME)-$(call qstrip,$(CONFIG_TARGET_ARCH_PACKAGES))-headers-for-chan-lantiq-$(VERSION_NUMBER).tar.xz \ + --directory=$(PKG_INSTALL_DIR)/usr include +endif +endef + +$(eval $(call BuildPackage,asterisk15)) +$(eval $(call BuildPackage,asterisk15-sounds)) + +################################ +# AST modules +# Params: +# 1 - Package subname +# 2 - Package title +# 3 - Module description +# 4 - Module dependencies +# 5 - conf files +# 6 - module files +# 7 - sound files +# 8 - binary files +################################ +#$(eval $(call BuildAsterisk15Module,subname,title,module description,module dependencies,conf files,module files,sound files,binary files)) + +$(eval $(call BuildAsterisk15Module,app-alarmreceiver,Alarm receiver,Central Station Alarm receiver for Ademco Contact ID,,,app_alarmreceiver,,)) +$(eval $(call BuildAsterisk15Module,app-authenticate,Authenticate commands,Execute arbitrary authenticate commands,,,app_authenticate,,)) +$(eval $(call BuildAsterisk15Module,app-chanisavail,Channel availability check,support for checking if a channel is available,,,app_chanisavail,,)) +$(eval $(call BuildAsterisk15Module,app-chanspy,Channel listen in,support for listening in on any channel,,,app_chanspy,,)) +$(eval $(call BuildAsterisk15Module,app-confbridge,ConfBridge,Software bridge for multi-party audio conferencing,+asterisk15-bridge-builtin-features +asterisk15-bridge-simple +asterisk15-bridge-softmix,confbridge.conf,app_confbridge,,)) +$(eval $(call BuildAsterisk15Module,app-dahdiras,Execute an ISDN RAS,support for executing an ISDN RAS using DAHDI,+asterisk15-chan-dahdi,,app_dahdiras,,)) +$(eval $(call BuildAsterisk15Module,app-directed_pickup,Directed call pickup,support for directed call pickup,,,app_directed_pickup,,)) +$(eval $(call BuildAsterisk15Module,app-disa,Direct Inward System Access,Direct Inward System Access,,,app_disa,,)) +$(eval $(call BuildAsterisk15Module,app-exec,Exec application,support for application execution,,,app_exec,,)) +$(eval $(call BuildAsterisk15Module,app-minivm,Minimal voicemail system,a voicemail system in small building blocks working together based on the Comedian Mail voicemail,,extensions_minivm.conf minivm.conf,app_minivm,,)) +$(eval $(call BuildAsterisk15Module,app-mixmonitor,Record a call and mix the audio,record a call and mix the audio during the recording,,,app_mixmonitor,,)) +$(eval $(call BuildAsterisk15Module,app-originate,Originate a call,originating an outbound call and connecting it to a specified extension or application,,,app_originate,,)) +$(eval $(call BuildAsterisk15Module,app-playtones,Playtones application,play a tone list,,,app_playtones,,)) +$(eval $(call BuildAsterisk15Module,app-queue,True Call Queueing,support for ACD,,queues.conf queuerules.conf,app_queue,,)) +$(eval $(call BuildAsterisk15Module,app-read,Variable read,a trivial application to read a variable,,,app_read,,)) +$(eval $(call BuildAsterisk15Module,app-readexten,Extension to variable,a trivial application to read an extension into a variable,,,app_readexten,,)) +$(eval $(call BuildAsterisk15Module,app-record,Record sound file,to record a sound file,,,app_record,,)) +$(eval $(call BuildAsterisk15Module,app-sayunixtime,Say Unix time,an application to say Unix time,,,app_sayunixtime,,)) +$(eval $(call BuildAsterisk15Module,app-senddtmf,Send DTMF digits,Sends arbitrary DTMF digits,,,app_senddtmf,,)) +$(eval $(call BuildAsterisk15Module,app-sms,SMS,SMS support (ETSI ES 201 912 protocol 1),+libpopt +libstdcpp,,app_sms,,)) +$(eval $(call BuildAsterisk15Module,app-speech,Dialplan Speech,Dialplan Speech Applications,+asterisk15-res-speech,,app_speech_utils,,)) +$(eval $(call BuildAsterisk15Module,app-stack,Stack applications,Stack applications Gosub Return etc.,+asterisk15-res-agi,,app_stack,,)) +$(eval $(call BuildAsterisk15Module,app-system,System exec,support for executing system commands,,,app_system,,)) +$(eval $(call BuildAsterisk15Module,app-talkdetect,File playback with audio detect,for file playback with audio detect,,,app_talkdetect,,)) +$(eval $(call BuildAsterisk15Module,app-verbose,Verbose logging,Verbose logging application,,,app_verbose,,)) +$(eval $(call BuildAsterisk15Module,app-waituntil,Sleep,support sleeping until the given epoch,,,app_waituntil,,)) +$(eval $(call BuildAsterisk15Module,app-while,While loop,a while loop implementation,,,app_while,,)) +$(eval $(call BuildAsterisk15Module,bridge-builtin-features,Bridging features,built in bridging features,,,bridge_builtin_features,,)) +$(eval $(call BuildAsterisk15Module,bridge-builtin-interval-features,Built in bridging interval features,built in bridging interval features,,,bridge_builtin_interval_features,,)) +$(eval $(call BuildAsterisk15Module,bridge-holding,Bridging for storing channels in a bridge,bridging technology for storing channels in a bridge,,,bridge_holding,,)) +$(eval $(call BuildAsterisk15Module,bridge-native-rtp,Native RTP bridging technology module,native RTP bridging technology module,,,bridge_native_rtp,,)) +$(eval $(call BuildAsterisk15Module,bridge-simple,Simple two channel bridging module,simple two channel bridging module,,,bridge_simple,,)) +$(eval $(call BuildAsterisk15Module,bridge-softmix,Multi-party software based channel mixing,multi-party software based channel mixing,,,bridge_softmix,,)) +$(eval $(call BuildAsterisk15Module,cdr,Provides CDR,Call Detail Record,,cdr.conf cdr_custom.conf cdr_manager.conf cdr_syslog.conf,app_cdr app_forkcdr cdr_custom cdr_manager cdr_syslog func_cdr,,)) +$(eval $(call BuildAsterisk15Module,cdr-csv,Provides CDR CSV,Call Detail Record with CSV support,,,cdr_csv,,)) +$(eval $(call BuildAsterisk15Module,cdr-sqlite3,Provides CDR SQLITE3,Call Detail Record with SQLITE3 support,libsqlite3,,cdr_sqlite3_custom,,)) +$(eval $(call BuildAsterisk15Module,chan-alsa,ALSA channel,the channel chan_alsa,+alsa-lib,alsa.conf,chan_alsa,,)) +$(eval $(call BuildAsterisk15Module,chan-dahdi,DAHDI channel,DAHDI channel support,+dahdi-tools-libtonezone +kmod-dahdi +libpri @!aarch64,chan_dahdi.conf,chan_dahdi,,)) +$(eval $(call BuildAsterisk15Module,chan-iax2,IAX2 channel,IAX support,+asterisk15-res-timing-timerfd,iax.conf iaxprov.conf,chan_iax2,,)) +$(eval $(call BuildAsterisk15Module,chan-motif,Jingle channel,Motif Jingle Channel Driver,+asterisk15-res-xmpp,motif.conf,chan_motif,,)) +$(eval $(call BuildAsterisk15Module,chan-oss,OSS channel,the channel chan_oss,,oss.conf,chan_oss,,)) +$(eval $(call BuildAsterisk15Module,chan-sip,SIP channel,the channel chan_sip,+asterisk15-app-confbridge,sip.conf sip_notify.conf,chan_sip,,)) +$(eval $(call BuildAsterisk15Module,chan-skinny,Skinny channel,the channel chan_skinny,,skinny.conf,chan_skinny,,)) +$(eval $(call BuildAsterisk15Module,chan-unistim,Unistim channel,channel driver for the UNISTIM (Unified Networks IP Stimulus) protocol,,unistim.conf,chan_unistim,,)) +$(eval $(call BuildAsterisk15Module,codec-a-mu,Alaw to ulaw translation,translation between alaw and ulaw codecs,,,codec_a_mu,,)) +$(eval $(call BuildAsterisk15Module,codec-adpcm,ADPCM text,ADPCM text ,,,codec_adpcm,,)) +$(eval $(call BuildAsterisk15Module,codec-alaw,Signed linear to alaw translation,translation between signed linear and alaw codecs,,,codec_alaw,,)) +$(eval $(call BuildAsterisk15Module,codec-dahdi,DAHDI codec,DAHDI native transcoding support,+asterisk15-chan-dahdi,,codec_dahdi,,)) +$(eval $(call BuildAsterisk15Module,codec-g722,G.722,a high bit rate 48/56/64Kbps ITU standard codec,,,codec_g722,,)) +$(eval $(call BuildAsterisk15Module,codec-g726,Signed linear to G.726 translation,translation between signed linear and ITU G.726-32kbps codecs,,,codec_g726,,)) +$(eval $(call BuildAsterisk15Module,codec-gsm,linear to GSM translation,translate between signed linear and GSM,,,codec_gsm,,)) +$(eval $(call BuildAsterisk15Module,codec-ilbc,linear to ILBC translation,translate between signed linear and ILBC,,,codec_ilbc,,)) +$(eval $(call BuildAsterisk15Module,codec-lpc10,Linear to LPC10 translation,translate between signed linear and LPC10,,,codec_lpc10,,)) +$(eval $(call BuildAsterisk15Module,codec-resample,resample sLinear audio,resample sLinear audio,,,codec_resample,,)) +$(eval $(call BuildAsterisk15Module,codec-ulaw,Signed linear to ulaw translation,translation between signed linear and ulaw codecs,,,codec_ulaw,,)) +$(eval $(call BuildAsterisk15Module,curl,CURL,CURL support,+libcurl,,func_curl res_config_curl res_curl,,)) +$(eval $(call BuildAsterisk15Module,format-g726,G.726,support for headerless G.726 16/24/32/40kbps data format,,,format_g726,,)) +$(eval $(call BuildAsterisk15Module,format-g729,G.729,support for raw headerless G729 data,,,format_g729,,)) +$(eval $(call BuildAsterisk15Module,format-gsm,GSM format,support for GSM format,,,format_gsm,,)) +$(eval $(call BuildAsterisk15Module,format-h263,H263 format,support for H264 format,,,format_h263,,)) +$(eval $(call BuildAsterisk15Module,format-h264,H264 format,support for H264 format,,,format_h264,,)) +$(eval $(call BuildAsterisk15Module,format-ilbc,ILBC format,support for ILBC format,,,format_ilbc,,)) +$(eval $(call BuildAsterisk15Module,format-pcm,PCM format,support for PCM format,,,format_pcm,,)) +$(eval $(call BuildAsterisk15Module,format-sln,Raw slinear format,support for raw slinear format,,,format_sln,,)) +$(eval $(call BuildAsterisk15Module,format-vox,VOX format,support for ADPCM vox format,,,format_vox,,)) +$(eval $(call BuildAsterisk15Module,format-wav,WAV format (8000hz Signed Linear),support for proprietary Microsoft WAV format (8000hz Signed Linear),,,format_wav,,)) +$(eval $(call BuildAsterisk15Module,format-wav-gsm,WAV format (Proprietary GSM),support for proprietary Microsoft WAV format (Proprietary GSM),,,format_wav_gsm,,)) +$(eval $(call BuildAsterisk15Module,func-base64,base64 support,support of base64 function,,,func_base64,,)) +$(eval $(call BuildAsterisk15Module,func-blacklist,Blacklist on callerid,looking up the callerid number and see if it is blacklisted,,,func_blacklist,,)) +$(eval $(call BuildAsterisk15Module,func-channel,Channel info,Channel info dialplan function,,,func_channel,,)) +$(eval $(call BuildAsterisk15Module,func-cut,CUT function,CUT function,,,func_cut,,)) +$(eval $(call BuildAsterisk15Module,func-db,Database interaction,functions for interaction with the database,,,func_db app_db,,)) +$(eval $(call BuildAsterisk15Module,func-devstate,Blinky lights control,functions for manually controlled blinky lights,,,func_devstate,,)) +$(eval $(call BuildAsterisk15Module,func-enum,ENUM,ENUM,,enum.conf,func_enum,,)) +$(eval $(call BuildAsterisk15Module,func-env,Environment functions,Environment dialplan functions,,,func_env,,)) +$(eval $(call BuildAsterisk15Module,func-extstate,Hinted extension state,retrieving the state of a hinted extension for dialplan control,,,func_extstate,,)) +$(eval $(call BuildAsterisk15Module,func-global,Global variable,global variable dialplan functions,,,func_global,,)) +$(eval $(call BuildAsterisk15Module,func-groupcount,Group count,for counting number of channels in the specified group,,,func_groupcount,,)) +$(eval $(call BuildAsterisk15Module,func-iconv,Charset conversion,charset conversion,@!USE_UCLIBC,,func_iconv,,)) +$(eval $(call BuildAsterisk15Module,func-math,Math functions,Math functions,,,func_math,,)) +$(eval $(call BuildAsterisk15Module,func-module,Simple module check function,Simple module check function,,,func_module,,)) +$(eval $(call BuildAsterisk15Module,func-periodic-hook,Periodic dialplan hooks,Execute a periodic dialplan hook into the audio of a call,,,func_periodic_hook,,)) +$(eval $(call BuildAsterisk15Module,func-presencestate,Hinted presence state,Gets or sets a presence state in the dialplan,,,func_presencestate,,)) +$(eval $(call BuildAsterisk15Module,func-rand,RAND dialplan function,RAND dialplan function,,,func_rand,,)) +$(eval $(call BuildAsterisk15Module,func-realtime,REALTIME dialplan function,REALTIME dialplan function,,,func_realtime,,)) +$(eval $(call BuildAsterisk15Module,func-shell,Shell,support for shell execution,,,func_shell,,)) +$(eval $(call BuildAsterisk15Module,func-uri,URI encoding and decoding,Encodes and decodes URI-safe strings,,,func_uri,,)) +$(eval $(call BuildAsterisk15Module,func-vmcount,vmcount dialplan,a vmcount dialplan function,,,func_vmcount,,)) +$(eval $(call BuildAsterisk15Module,odbc,ODBC,ODBC support,+libpthread +libc +unixodbc,cdr_adaptive_odbc.conf cdr_odbc.conf cel_odbc.conf func_odbc.conf res_odbc.conf,cdr_adaptive_odbc cdr_odbc cel_odbc func_odbc res_config_odbc res_odbc res_odbc_transaction,,)) +$(eval $(call BuildAsterisk15Module,pbx-ael,Asterisk Extension Logic,support for symbolic Asterisk Extension Logic,,extensions.ael,pbx_ael,,)) +$(eval $(call BuildAsterisk15Module,pbx-dundi,Dundi,provides Dundi Lookup service for Asterisk,,dundi.conf,pbx_dundi,,)) +$(eval $(call BuildAsterisk15Module,pbx-lua,Lua,provides Lua resources for Asterisk,+liblua,extensions.lua,pbx_lua,,)) +$(eval $(call BuildAsterisk15Module,pbx-realtime,Realtime Switch,realtime switch support,,,pbx_realtime,,)) +$(eval $(call BuildAsterisk15Module,pbx-spool,Call Spool,outgoing call spool support,,,pbx_spool,,)) +$(eval $(call BuildAsterisk15Module,pgsql,PostgreSQL,PostgreSQL support,+libpq @!arc,cel_pgsql.conf cdr_pgsql.conf res_pgsql.conf,cel_pgsql cdr_pgsql res_config_pgsql,,)) +$(eval $(call BuildAsterisk15Module,pjsip,pjsip channel,the channel pjsip,+asterisk15-res-sorcery +asterisk15-res-pjproject +libpjsip +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsua +libpjsua2,pjsip.conf pjsip_notify.conf pjsip_wizard.conf,chan_pjsip func_pjsip_aor func_pjsip_contact func_pjsip_endpoint res_pjsip res_pjsip_acl res_pjsip_authenticator_digest res_pjsip_caller_id res_pjsip_config_wizard res_pjsip_dialog_info_body_generator res_pjsip_diversion res_pjsip_dlg_options res_pjsip_dtmf_info res_pjsip_empty_info res_pjsip_endpoint_identifier_anonymous res_pjsip_endpoint_identifier_ip res_pjsip_endpoint_identifier_user res_pjsip_exten_state res_pjsip_header_funcs res_pjsip_history res_pjsip_logger res_pjsip_messaging res_pjsip_mwi res_pjsip_mwi_body_generator res_pjsip_nat res_pjsip_notify res_pjsip_one_touch_record_info res_pjsip_outbound_authenticator_digest res_pjsip_outbound_publish res_pjsip_outbound_registration res_pjsip_path res_pjsip_pidf_body_generator res_pjsip_pidf_digium_body_supplement res_pjsip_pidf_eyebeam_body_supplement res_pjsip_publish_asterisk res_pjsip_pubsub res_pjsip_refer res_pjsip_registrar res_pjsip_registrar_expire res_pjsip_rfc3326 res_pjsip_sdp_rtp res_pjsip_send_to_voicemail res_pjsip_session res_pjsip_sips_contact res_pjsip_t38 res_pjsip_transport_management res_pjsip_transport_websocket res_pjsip_xpidf_body_generator,,)) +$(eval $(call BuildAsterisk15Module,res-adsi,Provide ADSI,Analog Display Services Interface capability,,,res_adsi,,)) +$(eval $(call BuildAsterisk15Module,res-ael-share,Shareable AEL code,support for shareable AEL code mainly between internal and external modules,,,res_ael_share,,)) +$(eval $(call BuildAsterisk15Module,res-agi,Asterisk Gateway Interface,Support for the Asterisk Gateway Interface extension,+asterisk15-res-speech,,res_agi,,)) +$(eval $(call BuildAsterisk15Module,res-calendar,Calendaring API,Calendaring support (ICal and Google Calendar),,calendar.conf,res_calendar,,)) +$(eval $(call BuildAsterisk15Module,res-clioriginate,Calls via CLI,Originate calls via the CLI,,,res_clioriginate,,)) +$(eval $(call BuildAsterisk15Module,res-hep,HEPv3 API,Routines for integration with Homer using HEPv3,,,res_hep,,)) +$(eval $(call BuildAsterisk15Module,res-hep-pjsip,PJSIP HEPv3 Logger,PJSIP logging with Homer,+asterisk15-res-hep +asterisk15-pjsip,,res_hep_pjsip,,)) +$(eval $(call BuildAsterisk15Module,res-hep-rtcp,RTCP HEPv3 Logger,RTCP logging with Homer,+asterisk15-res-hep,,res_hep_rtcp,,)) +$(eval $(call BuildAsterisk15Module,res-fax-spandsp,Spandsp T.38 and G.711,Spandsp T.38 and G.711 FAX Resource,+asterisk15-res-fax +libspandsp +libtiff,,res_fax_spandsp,,)) +$(eval $(call BuildAsterisk15Module,res-fax,FAX modules,Generic FAX resource for FAX technology resource modules,+asterisk15-res-timing-pthread,res_fax.conf,res_fax,,)) +$(eval $(call BuildAsterisk15Module,res-http-websocket,HTTP websocket support,WebSocket support for the Asterisk internal HTTP server,,,res_http_websocket,,)) +$(eval $(call BuildAsterisk15Module,res-monitor,Provide Monitor,Cryptographic Signature capability,,,res_monitor,,)) +$(eval $(call BuildAsterisk15Module,res-musiconhold,MOH,Music On Hold support,,musiconhold.conf,res_musiconhold,,)) +$(eval $(call BuildAsterisk15Module,res-parking,Phone Parking,Phone Parking application,,res_parking.conf,res_parking,,)) +$(eval $(call BuildAsterisk15Module,res-phoneprov,Phone Provisioning,Phone provisioning application for the asterisk internal http server,,phoneprov.conf,res_phoneprov,,)) +$(eval $(call BuildAsterisk15Module,res-pjsip-phoneprov,PJSIP Phone Provisioning,PJSIP Phone Provisioning,+asterisk15-pjsip +asterisk15-res-phoneprov,,res_pjsip_phoneprov_provider,,)) +$(eval $(call BuildAsterisk15Module,res-pjproject,Bridge PJPROJECT to Asterisk logging,,+libpj +libpjlib-util +libpjmedia +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsip +libpjsua +libpjsua2 +libsrtp,pjproject.conf,res_pjproject,,)) +$(eval $(call BuildAsterisk15Module,res-realtime,RealTime CLI,RealTime CLI,,,res_realtime,,)) +$(eval $(call BuildAsterisk15Module,res-rtp-asterisk,RTP stack,Supports RTP and RTCP with Symmetric RTP support for NAT traversal,+libpjsip +libpjmedia +libpjnath +libpjsip-simple +libpjsip-ua +libpjsua +libpjsua2,rtp.conf,res_rtp_asterisk,,)) +$(eval $(call BuildAsterisk15Module,res-rtp-multicast,RTP multicast engine,Multicast RTP Engine,,,res_rtp_multicast,,)) +$(eval $(call BuildAsterisk15Module,res-smdi,Provide SMDI,Simple Message Desk Interface capability,,smdi.conf,res_smdi,,)) +$(eval $(call BuildAsterisk15Module,res-sorcery,Sorcery data layer,Sorcery backend modules for data access intended for using realtime as backend ,,,res_sorcery_astdb res_sorcery_config res_sorcery_memory res_sorcery_realtime,,)) +$(eval $(call BuildAsterisk15Module,res-speech,Speech Recognition API,Support for the Asterisk Generic Speech Recognition API,,,res_speech,,)) +$(eval $(call BuildAsterisk15Module,res-srtp,SRTP Support,Secure RTP connection,+libsrtp,,res_srtp,,)) +$(eval $(call BuildAsterisk15Module,res-stun-monitor,STUN monitoring,resource STUN Monitor,,res_stun_monitor.conf,res_stun_monitor,,)) +$(eval $(call BuildAsterisk15Module,res-timing-dahdi,DAHDI Timing Interface,DAHDI timing interface,+asterisk15-chan-dahdi,,res_timing_dahdi,,)) +$(eval $(call BuildAsterisk15Module,res-timing-pthread,pthread Timing Interface,POSIX pthreads Timing Interface,,,res_timing_pthread,,)) +$(eval $(call BuildAsterisk15Module,res-timing-timerfd,Timerfd Timing Interface,Timing interface provided by Linux kernel,,,res_timing_timerfd,,)) +$(eval $(call BuildAsterisk15Module,res-xmpp,XMPP client and component module,reference module for interfacting Asterisk directly as a client or component with XMPP server,+libiksemel +libopenssl,xmpp.conf,res_xmpp,,)) +$(eval $(call BuildAsterisk15Module,voicemail,Voicemail,voicemail related modules,+asterisk15-res-adsi +asterisk15-res-smdi,voicemail.conf,app_voicemail,vm-*,)) diff --git a/net/asterisk-15.x/files/asterisk.default b/net/asterisk-15.x/files/asterisk.default new file mode 100644 index 0000000..9d046c4 --- /dev/null +++ b/net/asterisk-15.x/files/asterisk.default @@ -0,0 +1,4 @@ +## startup options for /etc/init.d/asterisk + +ENABLE_ASTERISK="yes" +OPTIONS="" diff --git a/net/asterisk-15.x/files/asterisk.init b/net/asterisk-15.x/files/asterisk.init new file mode 100644 index 0000000..aa413fc --- /dev/null +++ b/net/asterisk-15.x/files/asterisk.init @@ -0,0 +1,33 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2014 OpenWrt.org + +START=99 +APP=asterisk +OPTIONS= +DEST= +DEFAULT=$DEST/etc/default/$APP +BIN_FILE=$DEST/usr/sbin/$APP +PID_FILE=$DEST/var/run/$APP/$APP.pid + +start() { + [ -f $DEFAULT ] && . $DEFAULT + [ -d $DEST/var/run/asterisk ] || mkdir -p $DEST/var/run/asterisk + [ -d $DEST/var/log/asterisk ] || mkdir -p $DEST/var/log/asterisk + [ -d $DEST/var/spool/asterisk ] || mkdir -p $DEST/var/spool/asterisk + [ -d $DEST/var/lib/asterisk ] || mkdir -p $DEST/var/lib/asterisk + [ -d $DEST/var/lib/asterisk/keys ] || mkdir -p $DEST/var/lib/asterisk/keys + [ -d $DEST/var/log/asterisk/cdr-csv ] || mkdir -p $DEST/var/log/asterisk/cdr-csv + + SERVICE_PID_FILE="/var/run/asterisk/asterisk.pid" \ + service_start $BIN_FILE $OPTIONS +} + +stop() { + SERVICE_PID_FILE="/var/run/asterisk/asterisk.pid" \ + service_stop $BIN_FILE +} + +reload() { + SERVICE_PID_FILE="/var/run/asterisk/asterisk.pid" \ + service_reload $BIN_FILE +} diff --git a/net/asterisk-15.x/patches/001-disable-semaphores-check.patch b/net/asterisk-15.x/patches/001-disable-semaphores-check.patch new file mode 100644 index 0000000..e73f48e --- /dev/null +++ b/net/asterisk-15.x/patches/001-disable-semaphores-check.patch @@ -0,0 +1,22 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -990,19 +990,6 @@ AC_LINK_IFELSE( + ] + ) + +-# Some platforms define sem_init(), but only support sem_open(). joyous. +-AC_MSG_CHECKING(for working unnamed semaphores) +-AC_RUN_IFELSE( +- [AC_LANG_PROGRAM([#include ], +- [sem_t sem; return sem_init(&sem, 0, 0);])], +- AC_MSG_RESULT(yes) +- AC_DEFINE([HAS_WORKING_SEMAPHORE], 1, [Define to 1 if anonymous semaphores work.]), +- AC_MSG_RESULT(no), +- AC_MSG_RESULT(cross-compile) +- AC_MSG_NOTICE([WARNING: result yes guessed because of cross compilation]) +- AC_DEFINE([HAS_WORKING_SEMAPHORE], 1, [Define to 1 if anonymous semaphores work.]) +-) +- + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + if test "${ac_cv_pthread_rwlock_timedwrlock}" = "yes"; then diff --git a/net/asterisk-15.x/patches/002-undef-res-ninit.patch b/net/asterisk-15.x/patches/002-undef-res-ninit.patch new file mode 100644 index 0000000..c999803 --- /dev/null +++ b/net/asterisk-15.x/patches/002-undef-res-ninit.patch @@ -0,0 +1,10 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -1317,7 +1317,6 @@ AC_LINK_IFELSE( + #include ], + [int foo = res_ninit(NULL);])], + AC_MSG_RESULT(yes) +- AC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.]) + AC_SEARCH_LIBS(res_9_ndestroy, resolv) + AC_MSG_CHECKING(for res_ndestroy) + AC_LINK_IFELSE( diff --git a/net/asterisk-15.x/patches/003-disable-ast-xml-docs.patch b/net/asterisk-15.x/patches/003-disable-ast-xml-docs.patch new file mode 100644 index 0000000..12b3f73 --- /dev/null +++ b/net/asterisk-15.x/patches/003-disable-ast-xml-docs.patch @@ -0,0 +1,13 @@ +--- a/include/asterisk/xml.h ++++ b/include/asterisk/xml.h +@@ -246,10 +246,5 @@ struct ast_xml_node *ast_xml_xpath_get_f + */ + struct ast_xml_xpath_results *ast_xml_query(struct ast_xml_doc *doc, const char *xpath_str); + +-/* Features using ast_xml_ */ +-#ifdef HAVE_LIBXML2 +-#define AST_XML_DOCS +-#endif +- + #endif /* _ASTERISK_XML_H */ + diff --git a/net/asterisk-15.x/patches/004-disable-check-for-hrirs.patch b/net/asterisk-15.x/patches/004-disable-check-for-hrirs.patch new file mode 100644 index 0000000..5e3f6f6 --- /dev/null +++ b/net/asterisk-15.x/patches/004-disable-check-for-hrirs.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -2722,7 +2722,7 @@ else + fi + + # conf_bridge (binaural rendering): check if HRIRs are available +-AC_CHECK_FILES([bridges/bridge_softmix/include/hrirs.h]) ++# AC_CHECK_FILES([bridges/bridge_softmix/include/hrirs.h]) + + AC_CONFIG_FILES([build_tools/menuselect-deps makeopts]) + AST_CHECK_MANDATORY diff --git a/net/asterisk-15.x/patches/030-GNU-GLOB-exts-only-on-glibc.patch b/net/asterisk-15.x/patches/030-GNU-GLOB-exts-only-on-glibc.patch new file mode 100644 index 0000000..f6289a6 --- /dev/null +++ b/net/asterisk-15.x/patches/030-GNU-GLOB-exts-only-on-glibc.patch @@ -0,0 +1,22 @@ +--- a/res/ael/ael.flex ++++ b/res/ael/ael.flex +@@ -601,7 +601,7 @@ includes { STORE_POS; return KW_INCLUDES + snprintf(fnamebuf2,sizeof(fnamebuf2), "%s/%s", (char *)ast_config_AST_CONFIG_DIR, fnamebuf); + ast_copy_string(fnamebuf,fnamebuf2,sizeof(fnamebuf)); + } +-#ifdef SOLARIS ++#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU) + glob_ret = glob(fnamebuf, GLOB_NOCHECK, NULL, &globbuf); + #else + glob_ret = glob(fnamebuf, GLOB_NOMAGIC|GLOB_BRACE, NULL, &globbuf); +--- a/res/ael/ael_lex.c ++++ b/res/ael/ael_lex.c +@@ -1982,7 +1982,7 @@ YY_RULE_SETUP + snprintf(fnamebuf2,sizeof(fnamebuf2), "%s/%s", (char *)ast_config_AST_CONFIG_DIR, fnamebuf); + ast_copy_string(fnamebuf,fnamebuf2,sizeof(fnamebuf)); + } +-#ifdef SOLARIS ++#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU) + glob_ret = glob(fnamebuf, GLOB_NOCHECK, NULL, &globbuf); + #else + glob_ret = glob(fnamebuf, GLOB_NOMAGIC|GLOB_BRACE, NULL, &globbuf); -- 2.30.2