1 # Contributor: Ćukasz Jendrysik <scadu@yandex.com>
2 # Contributor: Michael Mason <ms13sp@gmail.com>
3 # Contributor: Leonardo Arena <rnalrd@gmail.com>
4 # Maintainer: Nathan Angelacos <nangel@alpinelinux.org>
10 # If building from a git snapshot, specify the gitcommit
11 # If building a proper release, leave gitcommit blank or commented
12 _gitcommit=991fe9b28e0e201309048f3b38a135037e40357a
14 [ ! -z "${_gitcommit}" ] && pkgver="${pkgver}.$(date +%Y%m%d)"
15 [ ! -z "${_gitcommit}" ] && _suffix="-${_gitcommit:0:7}"
16 [ ! -z "${_gitcommit}" ] && builddir="$srcdir/$pkgname-$_gitcommit" || builddir="$srcdir/$pkgname-$pkgver"
17 [ -z "${_gitcommit}" ] && _gitcommit="${pkgver}"
19 pkgdesc="Open Source SIP Server"
20 url="http://www.kamailio.org/"
28 makedepends="bison db-dev flex freeradius-client-dev expat-dev
29 lksctp-tools-dev perl-dev postgresql-dev python2-dev python3-dev
30 pcre-dev mariadb-dev libxml2-dev curl-dev unixodbc-dev
31 confuse-dev ncurses-dev sqlite-dev lua-dev openldap-dev openssl-dev
32 net-snmp-dev libuuid libev-dev jansson-dev json-c-dev libevent-dev
33 linux-headers libmemcached-dev rabbitmq-c-dev hiredis-dev
34 ruby-dev libmaxminddb-dev libunistring-dev mongo-c-driver-dev"
36 install="$pkgname.pre-install $pkgname.pre-upgrade"
42 # See Makefile.groups for the list of recommended modules for
43 # each package. What follows is a simplified version of Makefile.groups
45 # Alpine specific changes:
47 # _mod_list_debugger is not defined in the orginal
49 # Move avp from _mod_list_extras to _mod_list_basic, so that we can create
50 # a kamailio-extras package
52 # Remove db_text from _mod_list_db because we create a separate dbtext package
54 # - basic used modules, with no extra dependency (widespread usage)
55 _mod_list_basic="avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
56 ctl debugger diversion enum exec gzcompress ipops kex mangler \
57 maxfwd mediaproxy mqueue \
58 nat_traversal nathelper path pike pv ratelimit rr rtimer \
59 rtpproxy sanity sdpops siputils sl smsops statsc statistics \
60 textops textopsx tm tmx topoh topos xlog rtpengine stun sipt"
62 # - extra used modules, with no extra dependency
63 _mod_list_extras="auth_diameter call_control cnxcc dmq domainpolicy log_custom \
64 msrp pdb qos sca seas sms sst timer tmrec tsilo uac_redirect \
65 xhttp xhttp_rpc xprint nosip dmq_usrloc statsd rtjson tcpops \
68 # - common modules depending on database
69 _mod_list_db="acc alias_db auth_db avpops cfg_db db_berkeley db_flatstore \
70 db_cluster dialog dispatcher domain drouting group \
71 htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
72 pipelimit prefix_route registrar sipcapture siptrace speeddial \
73 sqlops uac uri_db userblacklist usrloc"
75 # - common modules depending on database, using UID db schema
76 _mod_list_dbuid="db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
79 # - modules for devel purposes
80 _mod_list_devel="malloc_test print print_lib"
82 # - modules depending on pcre3 library
83 _mod_list_pcre="dialplan lcr regex"
85 # - modules depending on radius client library
86 _mod_list_radius="acc_radius auth_radius misc_radius peering"
88 # - modules depending on ldap client library
89 _mod_list_ldap="db2_ldap h350 ldap"
91 # - modules depending on mysql client library
92 _mod_list_mysql="db_mysql"
94 # - modules depending on postgres client library
95 _mod_list_postgres="db_postgres"
97 # - modules depending on unixodbc library
98 _mod_list_unixodbc="db_unixodbc"
100 # - modules depending on mysql cassandra library
101 _mod_list_cassandra="db_cassandra ndb_cassandra"
103 # - modules depending on xml2 library
106 # - modules depending on xml2 library
107 _mod_list_xml="xhttp_pi xmlrpc xmlops"
109 # - modules depending on net-snmp library
110 _mod_list_snmpstats="snmpstats"
112 # - modules depending on expat library
113 _mod_list_xmpp="xmpp"
115 # - modules depending on confuse library
116 _mod_list_carrierroute="carrierroute"
118 # - modules depending on bdb (db4) library
119 _mod_list_berkeley="db_berkeley"
121 # - modules depending on curl library
122 _mod_list_utils="utils http_client"
124 # - async http_async_client
125 _mod_list_http_async="http_async_client"
127 # - modules depending on purple library
128 _mod_list_purple="purple"
130 # - modules depending on memcache library
131 _mod_list_memcached="memcached"
133 # - modules depending on openssl library
134 _mod_list_tls="auth_identity crypto tls"
136 # - modules depending on openssl library
137 _mod_list_outbound="outbound"
139 # - modules depending on unistring library
140 _mod_list_websocket="websocket"
142 # - modules depending on libval-threads libcrypto libsres libpthread
143 _mod_list_dnssec="dnssec"
145 # - modules depending on libsctp
146 _mod_list_sctp="sctp"
148 # - modules depending on openssl library
149 _mod_list_authephemeral="auth_ephemeral"
151 # - modules related to SIMPLE presence extensions
152 _mod_list_presence="presence presence_conference presence_dialoginfo \
153 presence_mwi presence_profile presence_reginfo \
155 pua pua_bla pua_dialoginfo pua_reginfo \
156 pua_rpc pua_usrloc pua_xmpp \
157 rls xcap_client xcap_server"
159 # - modules depending on lua library
160 _mod_list_lua="app_lua"
162 # - modules depending on perl library
163 _mod_list_perl="app_perl db_perlvdb"
165 # - modules depending on python2 library
166 _mod_list_python="app_python"
168 # - modules depending on ruby library
169 _mod_list_ruby="app_ruby"
171 # - modules depending on python3 libarary
172 _mod_list_python3="app_python3"
174 # - modules depending on ruby library
175 _mod_list_ruby="app_ruby"
177 # - modules depending on rabbitmq
178 _mod_list_rabbitmq="rabbitmq"
180 # - modules depending on geoip2 library
181 _mod_list_geoip2="geoip2"
183 # - modules depending on sqlite library
184 _mod_list_sqlite="db_sqlite"
186 # - modules depending on oracle library
187 _mod_list_oracle="db_oracle"
189 # - modules depending on json library
190 _mod_list_json="json jsonrpcc jsonrpcs pua_json"
192 # - modules depending on redis library
193 _mod_list_redis="db_redis ndb_redis topos_redis"
195 # - modules depending on mono library
196 _mod_list_mono="app_mono"
198 # - modules related to IMS extensions
199 _mod_list_ims="cdp cdp_avp ims_dialog ims_diameter_server ims_auth ims_isc ims_icscf ims_qos \
200 ims_ocs ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
201 ims_usrloc_scscf ims_charging"
203 # - modules depending on osp toolkit library
206 # - modules depending on java library
207 _mod_list_java="app_java"
209 # - modules depending on iptables library
210 _mod_list_iptrtpproxy="iptrtpproxy"
212 # - modules depending on gzip library
213 _mod_list_gzcompress="gzcompress"
215 # - modules depending on uuid library
216 _mod_list_uuid="uuid"
218 # - modules depending on ev library
221 # - modules depending on kazoo/rabbitmq
222 _mod_list_kazoo="kazoo"
224 # - modules depending on mongodb
225 _mod_list_mongodb="db_mongodb ndb_mongodb"
227 # - modules depending on jansson library
228 _mod_list_jansson="acc_json jansson janssonrpcc"
230 # - modules depending on libm
231 _mod_list_jsdt="app_jsdt"
233 # - modules depending on sqlang
234 _mod_list_sqlang="app_sqlang"
236 # - modules depending on rabbitmq
237 _mod_list_rabbitmq="rabbitmq"
239 # - modules depending on sipdump
240 _mod_list_sipdump="sipdump"
244 _mod_list_debugger="$_mod_list_devel benchmark debugger"
246 # Standard modules in main pkg
247 _module_group_kstandard="$_mod_list_basic $_mod_list_dbuid $_mod_list_pcre"
249 # END Makefile.groups #############################################################
251 subpackages="$pkgname-doc $pkgname-dbg $pkgname-openrc"
252 _modules="$_module_group_kstandard"
253 for _i in db postgres sqlite dbtext mysql \
254 cpl xml unixodbc snmpstats xmpp carrierroute \
255 ldap utils tls presence lua ims outbound debugger \
256 extras json websocket authephemeral mongodb\
257 uuid ev memcached redis geoip2 jansson sqlang sipdump \
258 jsdt http_async kazoo rabbitmq sctp radius perl python \
261 subpackages="$subpackages $pkgname-$_i"
262 eval "_modules=\"\$_modules \$_mod_list_$_i\""
265 source="${pkgname}-${pkgver}${_suffix}.tar.gz::https://github.com/kamailio/$pkgname/archive/$_gitcommit.tar.gz
269 get_source_from_local_git(){
270 cd ../../.. && git archive --format=tar.gz --prefix=${pkgname}-${_gitcommit}/ -o "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz ${_gitcommit} && cd pkg/kamailio/alpine || return 1
271 echo Created dist archive "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz
274 get_source_from_github(){
275 echo Cannot create archive using local git repo. Trying create source from GutHub.
276 wget -O "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz https://github.com/kamailio/$pkgname/archive/${_gitcommit}.tar.gz || return 1
277 echo Created dist archive "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz
281 if [ ! -f "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz ]; then
282 get_source_from_local_git || get_source_from_github
284 SHA512SUM=$(sha512sum "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz | sed -e "s:${SRCDEST}/::")
285 sed -i -e "s/^\(sha512sums=.\).*/\1$SHA512SUM/" APKBUILD
293 sed -i -e 's:/run/kamailio.pid:/run/kamailio/kamailio.pid:g' \
294 kamctl.base kamctlrc || return 1
295 # we actually dont need bash
296 sed -i -e 's:/bin/bash:/bin/sh:' kamctl kamdbctl \
302 make FLAVOUR=kamailio STUN=1 \
304 CC_EXTRA_OPTS="$CFLAGS -D_GNU_SOURCE" \
305 cfg_target=/etc/kamailio/ \
307 include_modules="$_modules" \
310 cfg_prefix="$pkgdir" \
312 make EMBEDDED_UTF8_DECODE=1 STUN=1 FREERADIUS=1 \
318 make FREERADIUS=1 -j1 install || return 1
320 install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
321 install -d -o kamailio "$pkgdir"/run/kamailio
325 local moddir=usr/lib/kamailio/modules i=
326 mkdir -p "$subpkgdir"/$moddir
328 mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1
333 pkgdesc="Kamailio $1"
340 pkgdesc="Database drivers for $1"
341 depends="$pkgname $pkgname-db"
342 _mv_mod db_$2 || return 1
343 mkdir -p "$subpkgdir"/usr/share/kamailio \
344 "$subpkgdir"/usr/lib/kamailio/kamctl
345 mv "$pkgdir"/usr/share/kamailio/$3 \
346 "$subpkgdir"/usr/share/kamailio/ || return 1
347 mv "$pkgdir"/usr/lib/kamailio/kamctl/*.$4 \
348 "$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
353 _generic_pkg "modules using a database backend" "$_mod_list_db"
357 _db_driver Postgres postgres postgres pgsql
361 _db_driver Mysql mysql mysql mysql
365 _db_driver SQlite sqlite db_sqlite sqlite
369 _db_driver DBText text dbtext dbtext || return 1
370 # kamdbctl.dbtext is a python script - but we will not make python
371 # a dependency because kamdbctl is not normaly used
373 mkdir -p "$subpkgdir"/usr/lib/kamailio/kamctl || return 1
374 mv "$pkgdir"/usr/lib/kamailio/kamctl/dbtextdb \
375 "$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
379 _generic_pkg "CPL (Call Processing Language) interpreter" \
384 _generic_pkg "XML related modules: $_mod_list_xml" \
385 "$_mod_list_xml" || return 1
386 mkdir -p "$subpkgdir"/usr/share/kamailio
387 mv "$pkgdir"/usr/share/kamailio/xhttp_pi \
388 "$subpkgdir"/usr/share/kamailio || return 1
389 mkdir -p "$subpkgdir"/etc/kamailio/
390 mv "$pkgdir"/etc/kamailio/pi_framework.xml \
391 "$subpkgdir"/etc/kamailio || return 1
395 _generic_pkg "Database drivers for unixodbc" \
396 "$_mod_list_unixodbc"
400 _generic_pkg "SNMP statistics support" \
401 "$_mod_list_snmpstats" || return 1
402 mkdir -p "$subpkgdir"/usr/share/snmp
403 mv "$builddir"/src/modules/snmpstats/mibs \
404 "$subpkgdir"/usr/share/snmp/ || return 1
408 _generic_pkg "XMPP (Jabber) gateway" \
413 _generic_pkg "carrier grade routing functions" \
414 "$_mod_list_carrierroute"
418 _generic_pkg "LDAP search functions" \
423 _generic_pkg "miscelaneous utility functions" \
428 _generic_pkg "TLS support" \
433 _generic_pkg "SIP Notify (Presence) support" \
434 "$_mod_list_presence"
438 _generic_pkg "Lua script support" \
443 _generic_pkg "IP Multimedia Subsystem (IMS) support" \
448 _generic_pkg "RFC 5626 section 5 Outbound support" \
449 "$_mod_list_outbound"
453 _generic_pkg "debugging modules" \
454 "$_mod_list_debugger"
458 _generic_pkg "extra modules" \
463 _generic_pkg "websocket support" \
464 "$_mod_list_websocket"
468 _generic_pkg "auth ephemeral (webrtc)" \
469 "$_mod_list_authephemeral"
473 _generic_pkg "Operations on json strings" \
478 _generic_pkg "Operations on json strings using jansson library" \
483 _generic_pkg "MaxMind GeoIP lookup support" \
488 _generic_pkg "Network event broadcast API" \
493 _generic_pkg "UUID generator using libuuid" \
498 _generic_pkg "memcached support" \
499 "$_mod_list_memcached"
503 _generic_pkg "MongoDB database connectivity" \
508 _generic_pkg "RabbitMQ client for configuration file" \
509 "$_mod_list_rabbitmq"
513 _generic_pkg "Support for executing JavaScript" \
519 _generic_pkg "Redis NoSQL support" \
524 _generic_pkg "Asynchronous HTTP queries support" \
525 "$_mod_list_http_async"
529 _generic_pkg "Kazoo VoIP platform support" \
534 _generic_pkg "RADIUS modules for Kamailio" \
539 _generic_pkg "SCTP transport for Kamailio" \
544 _generic_pkg "Perl extensions and database driver for Kamailio" \
549 _generic_pkg "Execute embedded Python2 scripts" \
554 _generic_pkg "Ruby extensions for Kamailio" \
559 _generic_pkg "Execute embedded Python3 scripts" \
564 _generic_pkg "Execute embedded Ruby scripts" \
569 _generic_pkg "Squirrel Language (SQLang) for Kamailio" \
574 _generic_pkg "RabbitMQ related modules for Kamailio" \
575 "$_mod_list_rabbitmq"
579 _generic_pkg "This module writes SIP traffic and some associated details into local files" \
583 sha512sums="51ea5fccd27a9d3d1783cfc5596eb28ab27e34faeec3268600363f43c48a3634c3c584c479ba874fdb53b85766a0ce8fe7df0e20954c9c6514b1d9d41d9237e6 kamailio-5.1.0.20171125-991fe9b.tar.gz
584 a777338f1a60b95aa2bf3e38314a0cfa77a3397ccad342955409eb95f66ad9c38a3a64d2974d353d50f2aced3936b209063a0f0a7127851b1c278d8384f4cc45 kamailio.initd"