From c8d2019877813b219ac30945283617f68098c4f4 Mon Sep 17 00:00:00 2001 From: Sebastian Kemper Date: Sun, 20 Jan 2019 10:27:33 +0100 Subject: [PATCH] kamailio-5.x: bump to 5.2.1 - bump to 5.2.1 - drops sources.openwrt.org from PKG_SOURCE_URL because this mirror is meant as last resort - adds six new modules (app_python3 marked @BROKEN - doesn't compile yet) - 050-fix-kamailio-utils.patch refreshed. Alpine pushed a fix upstream that fixes the quoting issue, so this part could be dropped. I found some other issue with kamctl, where the prompt (for password) wasn't shown because OpenWrt doesn't have /dev/stderr. So I fixed that and added it to this patch as well. Sent upstream. - hiredis handling was changed upstream. They changed the default include from "hiredis/hiredis.h" (which worked for us) to "hiredis.h". And the only way to get "hiredis/hiredis.h" is via pkg-config, which upstream doesn't allow during cross-compile, probably because hiredis pkg-config is rubbish. Patch added to forces pkg-config detection. Also includes a fix for a logical error in the Makefile regarding header setup. Sent upstream. Patch to fix hiredis pkg-config file sent upstream (also to OpenWrt package maintainer). Even without hiredis patch we can get away with forcing pkg-config detection of hiredis. - dropped two patches that were upstreamed Signed-off-by: Sebastian Kemper --- net/kamailio-5.x/Makefile | 22 ++-- .../patches/050-fix-kamailio-utils.patch | 100 ++++++++---------- .../patches/140-redis_use_pkg-config.patch | 87 +++++++++++++++ .../patches/150-posix-awk-filter.patch | 30 ------ ...ix_dp_replace_in_cmd_export_t_struct.patch | 30 ------ 5 files changed, 147 insertions(+), 122 deletions(-) create mode 100644 net/kamailio-5.x/patches/140-redis_use_pkg-config.patch delete mode 100644 net/kamailio-5.x/patches/150-posix-awk-filter.patch delete mode 100644 net/kamailio-5.x/patches/160-dialplan-fix_dp_replace_in_cmd_export_t_struct.patch diff --git a/net/kamailio-5.x/Makefile b/net/kamailio-5.x/Makefile index 16fd376..0387cf4 100644 --- a/net/kamailio-5.x/Makefile +++ b/net/kamailio-5.x/Makefile @@ -9,14 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kamailio5 -PKG_VERSION:=5.1.6 -PKG_RELEASE:=2 +PKG_VERSION:=5.2.1 +PKG_RELEASE:=1 -PKG_SOURCE_URL := \ - https://sources.openwrt.org \ - https://www.kamailio.org/pub/kamailio/$(PKG_VERSION)/src +PKG_SOURCE_URL:=https://www.kamailio.org/pub/kamailio/$(PKG_VERSION)/src PKG_SOURCE:=kamailio-$(PKG_VERSION)$(PKG_VARIANT)_src.tar.gz -PKG_HASH:=99880df20dd836e4d9ec03fe863f7a5fc77bb29e3d56f59ea92b8b986deb5186 +PKG_HASH:=95d2158f97c76124a381364d99de1420f193275c5a1c9f88489c6409702f2c8f PKG_USE_MIPS16:=0 PKG_LICENSE:=GPL-2.0+ @@ -29,10 +27,13 @@ PKG_MAINTAINER:=Jiri Slachta MODULES_AVAILABLE:= \ acc \ acc_diameter \ + acc_json \ alias_db \ app_jsdt \ app_lua \ app_python \ + app_python3 \ + app_ruby \ app_sqlang \ async \ auth \ @@ -67,6 +68,7 @@ MODULES_AVAILABLE:= \ db_flatstore \ db_mysql \ db_postgres \ + db_redis \ db_sqlite \ db_text \ db_unixodbc \ @@ -96,6 +98,7 @@ MODULES_AVAILABLE:= \ ims_dialog \ ims_diameter_server \ ims_icscf \ + ims_ipsec_pcscf \ ims_isc \ ims_ocs \ ims_qos \ @@ -145,6 +148,7 @@ MODULES_AVAILABLE:= \ pua \ pua_bla \ pua_dialoginfo \ + pua_json \ pua_reginfo \ pua_rpc \ pua_usrloc \ @@ -453,10 +457,13 @@ $(eval $(call BuildPackage,kamailio5-util-kambdb-recover)) $(eval $(call BuildKamailio5Module,acc,Accounting,,+kamailio5-mod-tm)) $(eval $(call BuildKamailio5Module,acc_diameter,Accounting for DIAMETER backend,,+kamailio5-mod-acc)) +$(eval $(call BuildKamailio5Module,acc_json,Accounting with records exported in JSON format,,+jansson +kamailio5-mod-acc)) $(eval $(call BuildKamailio5Module,alias_db,Database-backend aliases,,)) $(eval $(call BuildKamailio5Module,app_jsdt,Execute JavaScript scripts,,)) $(eval $(call BuildKamailio5Module,app_lua,Execute embedded Lua scripts,,+liblua)) $(eval $(call BuildKamailio5Module,app_python,Execute Python scripts,,+python-light)) +$(eval $(call BuildKamailio5Module,app_python3,Python3 scripting interpreter,,@BROKEN +python3-light)) +$(eval $(call BuildKamailio5Module,app_ruby,Ruby scripting interpreter,,+libruby)) $(eval $(call BuildKamailio5Module,app_sqlang,Execute Squirrel language scripts,,+libstdcpp)) $(eval $(call BuildKamailio5Module,async,Asynchronous SIP handling functions,,+kamailio5-mod-tm +kamailio5-mod-tmx)) $(eval $(call BuildKamailio5Module,auth,Authentication Framework,,)) @@ -491,6 +498,7 @@ $(eval $(call BuildKamailio5Module,db_cluster,Database clustering system,,)) $(eval $(call BuildKamailio5Module,db_flatstore,fast write-only text DB-backend,,)) $(eval $(call BuildKamailio5Module,db_mysql,MySQL DB-backend,,+libmysqlclient,mysql)) $(eval $(call BuildKamailio5Module,db_postgres,PostgreSQL DB-backend,,+libpq,postgres)) +$(eval $(call BuildKamailio5Module,db_redis,Database backend with Redis server,,+libhiredis,db_redis)) $(eval $(call BuildKamailio5Module,db_sqlite,SQLite DB-backend,,+libsqlite3,db_sqlite)) $(eval $(call BuildKamailio5Module,db_text,Text DB-backend,,,dbtext/kamailio)) $(eval $(call BuildKamailio5Module,db_unixodbc,UnixODBC DB-backend,,+unixodbc)) @@ -520,6 +528,7 @@ $(eval $(call BuildKamailio5Module,ims_charging,IMS charging component module,,+ $(eval $(call BuildKamailio5Module,ims_dialog,IMS dialog tracking module,,+kamailio5-mod-rr +kamailio5-mod-tm)) $(eval $(call BuildKamailio5Module,ims_diameter_server,IMS DIAMETER server module,,+kamailio5-lib-libkamailio-ims +kamailio5-mod-cdp +kamailio5-mod-cdp-avp)) $(eval $(call BuildKamailio5Module,ims_icscf,IMS ICSCF component module,,+kamailio5-lib-libkamailio-ims +kamailio5-mod-cdp +kamailio5-mod-cdp-avp +kamailio5-mod-sl +kamailio5-mod-tm)) +$(eval $(call BuildKamailio5Module,ims_ipsec_pcscf,Diameter server implementation,,+kamailio5-lib-libkamailio-ims +kamailio5-mod-ims-usrloc-pcscf +kamailio5-mod-tm +libmnl)) $(eval $(call BuildKamailio5Module,ims_isc,IMS ISC component module,,+kamailio5-lib-libkamailio-ims +kamailio5-mod-ims-usrloc-scscf +kamailio5-mod-tm)) $(eval $(call BuildKamailio5Module,ims_ocs,MS OCS component module,,+kamailio5-lib-libkamailio-ims +kamailio5-mod-cdp +kamailio5-mod-cdp-avp)) $(eval $(call BuildKamailio5Module,ims_qos,IMS Diameter Rx interface between PCSCF and PCRF functions,,+kamailio5-lib-libkamailio-ims +kamailio5-mod-cdp +kamailio5-mod-cdp-avp +kamailio5-mod-ims-dialog +kamailio5-mod-ims-usrloc-pcscf +kamailio5-mod-tm)) @@ -569,6 +578,7 @@ $(eval $(call BuildKamailio5Module,presence_xml,XCAP presence,,+kamailio5-mod-pr $(eval $(call BuildKamailio5Module,pua,Presence User Agent,,+kamailio5-mod-tm +libxml2)) $(eval $(call BuildKamailio5Module,pua_bla,Bridged Line Appearence PUA,,+kamailio5-mod-presence +kamailio5-mod-pua +kamailio5-mod-usrloc)) $(eval $(call BuildKamailio5Module,pua_dialoginfo,Dialog Event PUA,,+kamailio5-mod-dialog +kamailio5-mod-pua)) +$(eval $(call BuildKamailio5Module,pua_json,Presence user agent implementation with JSON messages,,+libjson-c)) $(eval $(call BuildKamailio5Module,pua_reginfo,PUA registration info,,+kamailio5-mod-pua +kamailio5-mod-usrloc)) $(eval $(call BuildKamailio5Module,pua_rpc,RPC extensions for PUA,,+kamailio5-mod-pua)) $(eval $(call BuildKamailio5Module,pua_usrloc,PUA User Location,,+kamailio5-mod-pua +kamailio5-mod-usrloc)) diff --git a/net/kamailio-5.x/patches/050-fix-kamailio-utils.patch b/net/kamailio-5.x/patches/050-fix-kamailio-utils.patch index afd1733..e52da41 100644 --- a/net/kamailio-5.x/patches/050-fix-kamailio-utils.patch +++ b/net/kamailio-5.x/patches/050-fix-kamailio-utils.patch @@ -18,63 +18,51 @@ --- a/utils/kamctl/kamdbctl +++ b/utils/kamctl/kamdbctl @@ -1,4 +1,4 @@ --#!/bin/bash +-#!/bin/bash +#!/bin/sh # # control tool for maintaining Kamailio databases # ---- a/utils/kamctl/kamdbctl.base -+++ b/utils/kamctl/kamdbctl.base -@@ -33,19 +33,19 @@ INSTALL_DBUID_TABLES=${INSTALL_DBUID_TAB - - # Used by dbtext and db_berkeley to define tables to be created, used by - # postgres to do the grants --STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases domain domain_attrs -- grp uri speed_dial lcr_gw lcr_rule lcr_rule_target pdt subscriber -- location location_attrs re_grp trusted address missed_calls -- usr_preferences aliases silo dialog dialog_vars dispatcher dialplan -+STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases domain domain_attrs \ -+ grp uri speed_dial lcr_gw lcr_rule lcr_rule_target pdt subscriber \ -+ location location_attrs re_grp trusted address missed_calls \ -+ usr_preferences aliases silo dialog dialog_vars dispatcher dialplan \ - acc_cdrs topos_d topos_t} --EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy -- carrierroute carrier_name domain_name carrierfailureroute userblacklist -- globalblacklist htable purplemap uacreg pl_pipes mtree mtrees -- sca_subscriptions mohqcalls mohqueues rtpproxy rtpengine -+EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy \ -+ carrierroute carrier_name domain_name carrierfailureroute userblacklist \ -+ globalblacklist htable purplemap uacreg pl_pipes mtree mtrees \ -+ sca_subscriptions mohqcalls mohqueues rtpproxy rtpengine \ - dr_gateways dr_rules dr_gw_lists dr_groups} --PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap -+PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap \ - pua rls_presentity rls_watchers} --DBUID_TABLES=${UID_TABLES:-uid_credentials uid_domain uid_domain_attrs -+DBUID_TABLES=${UID_TABLES:-uid_credentials uid_domain uid_domain_attrs \ - uid_global_attrs uid_uri uid_uri_attrs uid_user_attrs} - - # SQL definitions -@@ -69,17 +69,17 @@ GREP=${GREP:-grep} - SED=${SED:-sed} - - # define what modules should be installed --STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group -- permissions registrar usrloc msilo alias_db uri_db speeddial -+STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group \ -+ permissions registrar usrloc msilo alias_db uri_db speeddial \ - avpops auth_db pdt dialog dispatcher dialplan topos} - - PRESENCE_MODULES=${PRESENCE_MODULES:-presence rls} - --EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute -- drouting userblacklist htable purple uac pipelimit mtree sca mohqueue -+EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute \ -+ drouting userblacklist htable purple uac pipelimit mtree sca mohqueue \ - rtpproxy rtpengine} - --DBUID_MODULES=${UID_MODULES:-uid_auth_db uid_avp_db uid_domain uid_gflags -+DBUID_MODULES=${UID_MODULES:-uid_auth_db uid_avp_db uid_domain uid_gflags \ - uid_uri_db} - - ############################################################ +--- a/utils/kamctl/kamctl.base ++++ b/utils/kamctl/kamctl.base +@@ -651,7 +651,7 @@ in SIP_DOMAIN" + check_aor() { + echo "$1" | $EGREP "^$USERNAME_RE@.*\..*" >/dev/null + if [ $? -ne 0 ] ; then +- echo "error: invalid AoR: $1" > /dev/stderr ++ echo "error: invalid AoR: $1" >&2 + exit 1 + fi + } +@@ -670,7 +670,7 @@ is_aor() { + check_sipaor() { + echo "$1" | $EGREP "^sip(s)?:$USERNAME_RE@.*\..*" >/dev/null + if [ $? -ne 0 ] ; then +- echo "error: invalid SIP AoR: $1" > /dev/stderr ++ echo "error: invalid SIP AoR: $1" >&2 + exit 1 + fi + } +@@ -681,7 +681,7 @@ check_sipaor() { + check_uri() { + echo "$1" | $EGREP "^sip(s)?:($USERNAME_RE@)?.*\..*" > /dev/null + if [ $? -ne 0 ] ; then +- echo "error: invalid SIP URI: $1" > /dev/stderr ++ echo "error: invalid SIP URI: $1" >&2 + exit 1 + fi + } +--- a/utils/kamctl/kamctl.sqlbase ++++ b/utils/kamctl/kamctl.sqlbase +@@ -38,9 +38,9 @@ prompt_pw() { + if [ -z "$DBRWPW" ] ; then + savetty=`stty -g` + if [ -z "$1" ] ; then +- printf "Password: " > /dev/stderr ++ printf "Password: " >&2 + else +- printf "$1: " > /dev/stderr ++ printf "$1: " >&2 + fi + stty -echo + read DBRWPW diff --git a/net/kamailio-5.x/patches/140-redis_use_pkg-config.patch b/net/kamailio-5.x/patches/140-redis_use_pkg-config.patch new file mode 100644 index 0000000..a7922e7 --- /dev/null +++ b/net/kamailio-5.x/patches/140-redis_use_pkg-config.patch @@ -0,0 +1,87 @@ +--- a/src/modules/cnxcc/Makefile ++++ b/src/modules/cnxcc/Makefile +@@ -8,12 +8,10 @@ include ../../Makefile.defs + auto_gen= + NAME=cnxcc.so + +-ifeq ($(CROSS_COMPILE),) + HIREDIS_BUILDER = $(shell \ + if pkg-config --exists hiredis; then \ + echo 'pkg-config hiredis'; \ + fi) +-endif + + ifeq ($(HIREDIS_BUILDER),) + HIREDISDEFS=-I$(LOCALBASE)/include +--- a/src/modules/db_redis/Makefile ++++ b/src/modules/db_redis/Makefile +@@ -5,12 +5,10 @@ include ../../Makefile.defs + auto_gen= + NAME=db_redis.so + +-ifeq ($(CROSS_COMPILE),) + HIREDIS_BUILDER = $(shell \ + if pkg-config --exists hiredis; then \ + echo 'pkg-config hiredis'; \ + fi) +-endif + + ifeq ($(HIREDIS_BUILDER),) + HIREDISDEFS=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/hiredis -I/usr/include/hiredis +@@ -19,7 +17,7 @@ else + HIREDISDEFS = $(shell $(HIREDIS_BUILDER) --cflags) + HIREDISLIBS = $(shell $(HIREDIS_BUILDER) --libs) + +-ifeq (,$(findstring hiredis,$(HIREDISDEFS))) ++ifneq (,$(findstring hiredis,$(HIREDISDEFS))) + DEFS+=-DWITH_HIREDIS_PATH + endif + +--- a/src/modules/ndb_redis/Makefile ++++ b/src/modules/ndb_redis/Makefile +@@ -5,12 +5,10 @@ include ../../Makefile.defs + auto_gen= + NAME=ndb_redis.so + +-ifeq ($(CROSS_COMPILE),) + HIREDIS_BUILDER = $(shell \ + if pkg-config --exists hiredis; then \ + echo 'pkg-config hiredis'; \ + fi) +-endif + + ifeq ($(HIREDIS_BUILDER),) + HIREDISDEFS=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/hiredis -I/usr/include/hiredis +@@ -19,7 +17,7 @@ else + HIREDISDEFS = $(shell $(HIREDIS_BUILDER) --cflags) + HIREDISLIBS = $(shell $(HIREDIS_BUILDER) --libs) + +-ifeq (,$(findstring hiredis,$(HIREDISDEFS))) ++ifneq (,$(findstring hiredis,$(HIREDISDEFS))) + DEFS+=-DWITH_HIREDIS_PATH + endif + +--- a/src/modules/topos_redis/Makefile ++++ b/src/modules/topos_redis/Makefile +@@ -5,12 +5,10 @@ include ../../Makefile.defs + auto_gen= + NAME=topos_redis.so + +-ifeq ($(CROSS_COMPILE),) + HIREDIS_BUILDER = $(shell \ + if pkg-config --exists hiredis; then \ + echo 'pkg-config hiredis'; \ + fi) +-endif + + ifeq ($(HIREDIS_BUILDER),) + HIREDISDEFS=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/hiredis -I/usr/include/hiredis +@@ -19,7 +17,7 @@ else + HIREDISDEFS = $(shell $(HIREDIS_BUILDER) --cflags) + HIREDISLIBS = $(shell $(HIREDIS_BUILDER) --libs) + +-ifeq (,$(findstring hiredis,$(HIREDISDEFS))) ++ifneq (,$(findstring hiredis,$(HIREDISDEFS))) + DEFS+=-DWITH_HIREDIS_PATH + endif + diff --git a/net/kamailio-5.x/patches/150-posix-awk-filter.patch b/net/kamailio-5.x/patches/150-posix-awk-filter.patch deleted file mode 100644 index e569191..0000000 --- a/net/kamailio-5.x/patches/150-posix-awk-filter.patch +++ /dev/null @@ -1,30 +0,0 @@ -commit 59d287586f502a8df71c2e91899fde49594e072e -Author: Sebastian Kemper -Date: Sun Oct 7 18:54:39 2018 +0200 - - kamctl: make jsonrpc filter portable - - The filter has a regex looking for a literal '{' in the beginning of a - line. Some awk implementations interpret this as a meta character, so - the regex is deemed broken. Example with busybox awk (POSIX): - - root@hank2:~# kamctl ps - awk: bad regex '^{.+"id"[ ]*:[ ]*[0-9]+[ ]*}$': Invalid contents of {} - root@hank2:~# - - To fix this enclose the character in square brackets. This always - matches for a literal '{' and is portable. - - Signed-off-by: Sebastian Kemper - ---- a/utils/kamctl/kamctl.base -+++ b/utils/kamctl/kamctl.base -@@ -699,7 +699,7 @@ filter_json() - $AWK 'function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s } - BEGIN { line=0; IGNORECASE=1; } - { line++; } -- NR == 1 && /^{.+"id"[ \t]*:[ \t]*[0-9]+[ \t]*}$/ { print; next; } -+ NR == 1 && /^[{].+"id"[ \t]*:[ \t]*[0-9]+[ \t]*}$/ { print; next; } - NR == 1 && /^200 OK/ { next; } - /^[ \t]*"jsonrpc":[ \t]*"2.0"/ { print; next; } - /^[ \t]*"result":[ \t]*\[.+/ { diff --git a/net/kamailio-5.x/patches/160-dialplan-fix_dp_replace_in_cmd_export_t_struct.patch b/net/kamailio-5.x/patches/160-dialplan-fix_dp_replace_in_cmd_export_t_struct.patch deleted file mode 100644 index 304b9c4..0000000 --- a/net/kamailio-5.x/patches/160-dialplan-fix_dp_replace_in_cmd_export_t_struct.patch +++ /dev/null @@ -1,30 +0,0 @@ -commit cbff35909edccffe778d04f3871d880195d82b7a -Author: Sebastian Kemper -Date: Fri Nov 2 10:10:38 2018 +0100 - - dialplan: fix dp_replace() in cmd_export_t struct - - In the struct 'int param_no' is set to '2'. But dp_replace() has actually three - parameters (dpid, inval, outvar), so kamailio's cfg parser fails when - dp_replace() is called: - - yyparse(): cfg. parser: failed to find command dp_replace (params 3) - yyerror_at(): parse error in config file /etc/kamailio/kamailio.cfg, line 366, column 45: unknown command, missing loadmodule? - - This commit fixes 'int param_no' to address this. - - Signed-off-by: Sebastian Kemper - -diff --git a/src/modules/dialplan/dialplan.c b/src/modules/dialplan/dialplan.c -index 39ba1ceef..a96b246b7 100644 ---- a/src/modules/dialplan/dialplan.c -+++ b/src/modules/dialplan/dialplan.c -@@ -115,7 +115,7 @@ static cmd_export_t cmds[]={ - ANY_ROUTE}, - {"dp_match",(cmd_function)w_dp_match, 2, fixup_igp_spve, - fixup_free_igp_spve, ANY_ROUTE}, -- {"dp_replace",(cmd_function)w_dp_replace, 2, dp_replace_fixup, -+ {"dp_replace",(cmd_function)w_dp_replace, 3, dp_replace_fixup, - dp_replace_fixup_free, ANY_ROUTE}, - {0,0,0,0,0,0} - }; -- 2.30.2