pkg/kamailio/alpine: Removed unnecessary patches
[sip-router] / pkg / kamailio / alpine / APKBUILD
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>
5 pkgname=kamailio
6 pkgver=5.1.0
7 pkgrel=0
8
9 # If building from a git snapshot, specify the gitcommit
10 # If building a proper release, leave gitcommit blank
11 _gitcommit=1fe5970917f21e9d69127635e04ba8ae585e2da4
12
13 [ ! -z "${_gitcommit}" ] && pkgver="${pkgver}.$(date +%Y%m%d)"
14 [ ! -z "${_gitcommit}" ] && _suffix="-${_gitcommit:0:7}"
15 [ ! -z "${_gitcommit}" ] && builddir="$srcdir/$pkgname-$_gitcommit" || builddir="$srcdir/$pkgname-$pkgver"
16 [ -z "${_gitcommit}" ] && _gitcommit="${pkgver}"
17
18 pkgdesc="Open Source SIP Server"
19 url="http://www.kamailio.org/"
20 arch="all"
21 pkgusers="kamailio"
22 pkggroups="kamailio"
23 arch="all"
24 license="GPL2+"
25 depends=""
26 makedepends="bison flex expat-dev postgresql-dev pcre-dev mariadb-dev
27         libxml2-dev curl-dev unixodbc-dev confuse-dev ncurses-dev sqlite-dev
28         lua-dev openldap-dev libressl-dev net-snmp-dev libuuid libev-dev
29         jansson-dev json-c-dev libevent-dev linux-headers libmemcached-dev
30         rabbitmq-c-dev hiredis-dev libmaxminddb-dev libunistring-dev"
31 install="$pkgname.pre-install $pkgname.pre-upgrade"
32
33 # See Makefile.groups for the list of recommended modules for
34 # each package.  What follows is a simplified version of Makefile.groups
35 #
36 # Alpine specific changes:
37 #
38 # _mod_list_debugger is not defined in the orginal
39 #
40 # Move avp from _mod_list_extras to _mod_list_basic, so that we can create
41 # a kamailio-extras package
42 #
43 # Remove db_text from _mod_list_db because we create a separate dbtext package
44 #
45 # - basic used modules, with no extra dependency (widespread usage)
46 _mod_list_basic="avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
47                 ctl debugger diversion enum exec gzcompress ipops kex mangler \
48                 maxfwd mediaproxy mqueue \
49                 nat_traversal nathelper path pike pv ratelimit rr rtimer \
50                 rtpproxy sanity sdpops siputils sl smsops statsc statistics \
51                 textops textopsx tm tmx topoh topos xlog rtpengine stun sipt"
52
53 # - extra used modules, with no extra dependency
54 _mod_list_extras="auth_diameter call_control cnxcc dmq domainpolicy log_custom \
55                 msrp pdb qos sca seas sms sst timer tmrec tsilo uac_redirect \
56                 xhttp xhttp_rpc xprint nosip dmq_usrloc statsd rtjson tcpops \
57                 auth_xkeys"
58
59 # - common modules depending on database
60 _mod_list_db="acc alias_db auth_db avpops cfg_db db_flatstore \
61                 db_cluster dialog dispatcher domain drouting group \
62                 htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
63                 pipelimit prefix_route registrar sipcapture siptrace speeddial \
64                 sqlops uac uri_db userblacklist usrloc"
65
66 # - common modules depending on database, using UID db schema
67 _mod_list_dbuid="db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
68                 uid_uri_db"
69
70 # - modules for devel purposes
71 _mod_list_devel="malloc_test print print_lib"
72
73 # - modules depending on pcre3 library
74 _mod_list_pcre="dialplan lcr regex"
75
76 # - modules depending on radius client library
77 _mod_list_radius="acc_radius auth_radius misc_radius peering"
78
79 # - modules depending on ldap client library
80 _mod_list_ldap="db2_ldap h350 ldap"
81
82 # - modules depending on mysql client library
83 _mod_list_mysql="db_mysql"
84
85 # - modules depending on postgres client library
86 _mod_list_postgres="db_postgres"
87
88 # - modules depending on unixodbc library
89 _mod_list_unixodbc="db_unixodbc"
90
91 # - modules depending on mysql cassandra library
92 _mod_list_cassandra="db_cassandra ndb_cassandra"
93
94 # - modules depending on xml2 library
95 _mod_list_cpl="cplc"
96
97 # - modules depending on xml2 library
98 _mod_list_xml="xhttp_pi xmlrpc xmlops"
99
100 # - modules depending on net-snmp library
101 _mod_list_snmpstats="snmpstats"
102
103 # - modules depending on expat library
104 _mod_list_xmpp="xmpp"
105
106 # - modules depending on confuse library
107 _mod_list_carrierroute="carrierroute"
108
109 # - modules depending on bdb (db4) library
110 _mod_list_berkeley="db_berkeley"
111
112 # - modules depending on curl library
113 _mod_list_utils="utils http_client"
114
115 # - async http_async_client
116 _mod_list_http_async="http_async_client"
117
118 # - modules depending on purple library
119 _mod_list_purple="purple"
120
121 # - modules depending on memcache library
122 _mod_list_memcached="memcached"
123
124 # - modules depending on openssl library
125 _mod_list_tls="auth_identity crypto tls"
126
127 # - modules depending on openssl library
128 _mod_list_outbound="outbound"
129
130 # - modules depending on unistring library
131 _mod_list_websocket="websocket"
132
133 # - modules depending on libval-threads libcrypto libsres libpthread
134 _mod_list_dnssec="dnssec"
135
136 # - modules depending on libsctp
137 _mod_list_sctp="sctp"
138
139 # - modules depending on openssl library
140 _mod_list_authephemeral="auth_ephemeral"
141
142 # - modules related to SIMPLE presence extensions
143 _mod_list_presence="presence presence_conference presence_dialoginfo \
144                         presence_mwi presence_profile presence_reginfo \
145                         presence_xml \
146                         pua pua_bla pua_dialoginfo pua_reginfo \
147                         pua_rpc pua_usrloc pua_xmpp \
148                         rls xcap_client xcap_server"
149
150 # - modules depending on lua library
151 _mod_list_lua="app_lua"
152
153 # - modules depending on perl library
154 _mod_list_perl="app_perl db_perlvdb"
155
156 # - modules depending on python library
157 _mod_list_python="app_python"
158
159 # - modules depending on rabbitmq
160 _mod_list_rabbitmq="rabbitmq"
161
162 # - modules depending on geoip2 library
163 _mod_list_geoip2="geoip2"
164
165 # - modules depending on sqlite library
166 _mod_list_sqlite="db_sqlite"
167
168 # - modules depending on oracle library
169 _mod_list_oracle="db_oracle"
170
171 # - modules depending on json library
172 _mod_list_json="json jsonrpcc jsonrpcs"
173
174 # - modules depending on redis library
175 _mod_list_redis="ndb_redis"
176
177 # - modules depending on mono library
178 _mod_list_mono="app_mono"
179
180 # - modules related to IMS extensions
181 _mod_list_ims="cdp cdp_avp ims_dialog ims_auth ims_isc ims_icscf ims_qos \
182                 ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
183                 ims_usrloc_scscf ims_charging"
184
185 # - modules depending on osp toolkit library
186 _mod_list_osp="osp"
187
188 # - modules depending on java library
189 _mod_list_java="app_java"
190
191 # - modules depending on iptables library
192 _mod_list_iptrtpproxy="iptrtpproxy"
193
194 # - modules depending on gzip library
195 _mod_list_gzcompress="gzcompress"
196
197 # - modules depending on uuid library
198 _mod_list_uuid="uuid"
199
200 # - modules depending on ev library
201 _mod_list_ev="evapi"
202
203 # - modules depending on kazoo/rabbitmq
204 _mod_list_kazoo="kazoo"
205
206 # - modules depending on mongodb
207 _mod_list_mongodb="db_mongodb ndb_mongodb"
208
209 # - modules depending on jansson library
210 _mod_list_jansson="jansson janssonrpcc"
211
212 # - modules depending on libm
213 _mod_list_jsdt="app_jsdt"
214
215
216 # Alpine Specific
217 _mod_list_debugger="$_mod_list_devel benchmark debugger"
218
219 # Standard modules in main pkg
220 _module_group_kstandard="$_mod_list_basic $_mod_list_dbuid $_mod_list_pcre"
221
222 # END Makefile.groups #############################################################
223
224 subpackages="$pkgname-doc $pkgname-dbg"
225 _modules="$_module_group_kstandard"
226 for _i in db postgres sqlite dbtext mysql \
227         cpl xml unixodbc snmpstats xmpp carrierroute \
228         ldap utils tls presence lua ims outbound debugger \
229         extras json websocket authephemeral \
230         uuid ev memcached redis geoip2 jansson \
231         jsdt http_async kazoo; do
232
233    subpackages="$subpackages $pkgname-$_i"
234    eval "_modules=\"\$_modules \$_mod_list_$_i\""
235 done
236
237 source="${pkgname}-${pkgver}${_suffix}.tar.gz::https://github.com/kamailio/$pkgname/archive/$_gitcommit.tar.gz
238         0001-kamdbctl.base.patch
239         0004-src_core_tcp_read_c.patch
240         kamailio.cfg
241         kamailio.initd
242         "
243
244 snapshot() {
245         if [ ! -f "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz ]; then
246             wget -O "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz https://github.com/kamailio/$pkgname/archive/$_gitcommit.tar.gz
247         fi
248         SHA512SUM=$(sha512sum "$SRCDEST"/${pkgname}-${pkgver}${_suffix}.tar.gz | sed -e "s:$SRCDEST/::")
249         sed -i -e "s/^\(sha512sums=.\).*/\1$SHA512SUM/" APKBUILD
250 }
251
252 prepare() {
253         default_prepare
254         cd "$builddir"
255
256         cd utils/kamctl/
257         sed -i -e 's:/var/run/kamailio.pid:/var/run/kamailio/kamailio.pid:g' \
258                 kamctl.base kamctlrc || return 1
259         # we actually dont need bash
260         sed -i -e 's:/bin/bash:/bin/sh:' kamctl kamdbctl \
261                 || return 1
262 }
263
264 build() {
265         cd "$builddir"
266         make FLAVOUR=kamailio STUN=1 \
267                 PREFIX=/usr \
268                 CC_EXTRA_OPTS="$CFLAGS -D_GNU_SOURCE" \
269                 cfg_target=/etc/kamailio/ \
270                 run_prefix="" \
271                 include_modules="$_modules" \
272                 LIBDIR=lib \
273                 DESTDIR="$pkgdir" \
274                 cfg_prefix="$pkgdir" \
275                 cfg
276         make EMBEDDED_UTF8_DECODE=1 STUN=1 \
277                 all || return 1
278 }
279
280 package() {
281         cd "$builddir"
282         make -j1 install || return 1
283
284         # move default config to -doc package and use our own default config
285
286         mv "$pkgdir"/etc/kamailio/kamailio.cfg \
287                 "$pkgdir"/usr/share/doc/kamailio/
288         install -m644 -D "$srcdir"/kamailio.cfg \
289                 "$pkgdir"/etc/kamailio/kamailio.cfg
290
291         install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
292         install -d -o kamailio "$pkgdir"/var/run/kamailio
293 }
294
295 _mv_mod() {
296         local moddir=usr/lib/kamailio/modules i=
297         mkdir -p "$subpkgdir"/$moddir
298         for i in $@; do
299                 mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1
300         done
301 }
302
303 _generic_pkg() {
304         pkgdesc="Kamailio $1"
305         depends="$pkgname"
306         _mv_mod $2
307 }
308
309
310 _db_driver() {
311         pkgdesc="Database drivers for $1"
312         depends="$pkgname $pkgname-db"
313         _mv_mod db_$2 || return 1
314         mkdir -p "$subpkgdir"/usr/share/kamailio \
315                 "$subpkgdir"/usr/lib/kamailio/kamctl
316         mv "$pkgdir"/usr/share/kamailio/$3 \
317                 "$subpkgdir"/usr/share/kamailio/ || return 1
318         mv "$pkgdir"/usr/lib/kamailio/kamctl/*.$4 \
319                 "$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
320 }
321
322
323 db() {
324         _generic_pkg "modules using a database backend" "$_mod_list_db"
325 }
326
327 postgres() {
328         _db_driver Postgres postgres postgres pgsql
329 }
330
331 mysql() {
332         _db_driver Mysql mysql mysql mysql
333 }
334
335 sqlite() {
336         _db_driver SQlite sqlite db_sqlite sqlite
337 }
338
339 dbtext() {
340         _db_driver DBText text dbtext dbtext || return 1
341         # kamdbctl.dbtext is a python script - but we will not make python
342         # a dependency because kamdbctl is not normaly used
343         depends="$depends"
344         mkdir -p "$subpkgdir"/usr/lib/kamailio/kamctl || return 1
345         mv "$pkgdir"/usr/lib/kamailio/kamctl/dbtextdb \
346                 "$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
347 }
348
349 cpl() {
350         _generic_pkg "CPL (Call Processing Language) interpreter" \
351                 "$_mod_list_cpl"
352 }
353
354 xml() {
355         _generic_pkg "XML related modules: $_mod_list_xml" \
356                 "$_mod_list_xml" || return 1
357         mkdir -p "$subpkgdir"/usr/share/kamailio
358         mv "$pkgdir"/usr/share/kamailio/xhttp_pi \
359                 "$subpkgdir"/usr/share/kamailio || return 1
360         mkdir -p "$subpkgdir"/etc/kamailio/
361         mv "$pkgdir"/etc/kamailio/pi_framework.xml \
362                 "$subpkgdir"/etc/kamailio || return 1
363 }
364
365 unixodbc() {
366         _generic_pkg "Database drivers for unixodbc" \
367                 "$_mod_list_unixodbc"
368 }
369
370 snmpstats() {
371         _generic_pkg "SNMP statistics support" \
372                 "$_mod_list_snmpstats" || return 1
373         mkdir -p "$subpkgdir"/usr/share/snmp
374         mv "$builddir"/src/modules/snmpstats/mibs \
375                 "$subpkgdir"/usr/share/snmp/ || return 1
376 }
377
378 xmpp() {
379         _generic_pkg "XMPP (Jabber) gateway" \
380                 "$_mod_list_xmpp"
381 }
382
383 carrierroute() {
384         _generic_pkg "carrier grade routing functions" \
385                 "$_mod_list_carrierroute"
386 }
387
388 ldap() {
389         _generic_pkg "LDAP search functions" \
390                 "$_mod_list_ldap"
391 }
392
393 utils() {
394         _generic_pkg "miscelaneous utility functions" \
395                 "$_mod_list_utils"
396 }
397
398 tls() {
399         _generic_pkg "TLS support" \
400                 "$_mod_list_tls"
401 }
402
403 presence() {
404         _generic_pkg "SIP Notify (Presence) support" \
405                 "$_mod_list_presence"
406 }
407
408 lua() {
409         _generic_pkg "Lua script support" \
410                 "$_mod_list_lua"
411 }
412
413 ims() {
414         _generic_pkg "IP Multimedia Subsystem (IMS) support" \
415                 "$_mod_list_ims"
416 }
417
418 outbound() {
419         _generic_pkg "RFC 5626 section 5 Outbound support" \
420                 "$_mod_list_outbound"
421 }
422
423 debugger() {
424         _generic_pkg "debugging modules" \
425                 "$_mod_list_debugger"
426 }
427
428 extras() {
429         _generic_pkg "extra modules" \
430                 "$_mod_list_extras"
431 }
432
433 websocket() {
434         _generic_pkg "websocket support" \
435                 "$_mod_list_websocket"
436 }
437
438 authephemeral() {
439         _generic_pkg "auth ephemeral (webrtc)" \
440                 "$_mod_list_authephemeral"
441 }
442
443 json() {
444         _generic_pkg "Operations on json strings" \
445                 "$_mod_list_json"
446 }
447
448 jansson() {
449         _generic_pkg "Operations on json strings using jansson library" \
450                 "$_mod_list_jansson"
451 }
452
453 geoip2() {
454         _generic_pkg "MaxMind GeoIP lookup support" \
455                 "$_mod_list_geoip2"
456 }
457
458 ev() {
459         _generic_pkg "Network event broadcast API" \
460                 "$_mod_list_ev"
461 }
462
463 uuid() {
464         _generic_pkg "UUID generator using libuuid" \
465                 "$_mod_list_uuid"
466 }
467
468 memcached() {
469         _generic_pkg "memcached support" \
470                 "$_mod_list_memcached"
471 }
472
473 rabbitmq() {
474         _generic_pkg "RabbitMQ client for configuration file" \
475                 "$_mod_list_rabbitmq"
476 }
477
478 jsdt() {
479         _generic_pkg "Support for executing JavaScript" \
480                 "$_mod_list_jsdt"
481 }
482
483
484 redis() {
485         _generic_pkg "Redis NoSQL support" \
486                 "$_mod_list_redis"
487 }
488
489 http_async() {
490         _generic_pkg "Asynchronous HTTP queries support" \
491                 "$_mod_list_http_async"
492 }
493
494 kazoo() {
495         _generic_pkg "Kazoo VoIP platform support" \
496                 "$_mod_list_kazoo"
497 }
498
499
500 sha512sums="6b4c58fe628270f8927721813607ce080b5e257cca8ace8c7b286c77c7880be258c07f1c7fb5711449cfc1f8841468e6ca647cf2e28be7a8d3dbb316527b7198  kamailio-5.1.0.20170922-1fe5970.tar.gz
501 6badfb611c02ffcb4c2e9937731162ea1a4b737f042ed52120e2f96ebb80b5b7d240b5612c9ca565e693eec9b8c52c1ee5db04dfc47d204501021f984b4b11db  0001-kamdbctl.base.patch
502 af8362201957eae6b66baf7368c9ca884024209a396d77c5c52180c9aabe13772e9c6513e59721d39503e5bb7a8c1030f5c10301ea9055bddafb7f01ee2f3076  0004-src_core_tcp_read_c.patch
503 c1abf69b48847dc8c7ab0d11ef9adb531aa4635f9d44db6933981edc5a47df374664fb24867b19aa64abbcc9777bf1cd0360d9aea54e27b081065928c61e0f0b  kamailio.cfg
504 cd6e3b677d803cd78561ad14d9b2589fd35ad0096f48047fdcb4ddc7d9103871357efba3b350946844cb53dbb081210746421fc420c22ac845b90251168a628e  kamailio.initd"