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