~alpine/devel

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch
2

[alpine-devel] [PATCH] main/kamailio:

Nathan Angelacos <nangel@alpinelinux.org>
Details
Message ID
<1366906389-30635-1-git-send-email-nangel@alpinelinux.org>
Sender timestamp
1366906389
DKIM signature
missing
Download raw message
Patch: +423 -97
- upgrade to 4.0.1
- add kamailio.groups file to build packages similar to other distros
- add additional packages to the Alpine set (e.g. ldap, snmpstats)
---
 main/kamailio/APKBUILD        | 215 +++++++++++++++--------------
 main/kamailio/kamailio.groups | 305 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 423 insertions(+), 97 deletions(-)
 create mode 100644 main/kamailio/kamailio.groups

diff --git a/main/kamailio/APKBUILD b/main/kamailio/APKBUILD
index 797240c..13b03c6 100644
--- a/main/kamailio/APKBUILD
+++ b/main/kamailio/APKBUILD
@@ -1,9 +1,9 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: Nathan Angelacos <nangel@alpinelinux.org>
pkgname=kamailio
pkgver=3.3.3
pkgver=4.0.1
pkgrel=0
pkgdesc="Open Source SIP Proxy"
pkgdesc="Open Source SIP Server"
url="http://www.kamailio.org/"
pkgusers="kamailio"
pkggroups="kamailio"
@@ -13,36 +13,33 @@ depends=
arch=all
makedepends="bison flex expat-dev postgresql-dev pcre-dev mysql-dev
	libxml2-dev curl-dev unixodbc-dev confuse-dev ncurses-dev sqlite-dev
	lua-dev openldap-dev openssl-dev"
	lua-dev openldap-dev openssl-dev net-snmp-dev"
install="$pkgname.pre-install $pkgname.pre-upgrade"
subpackages="$pkgname-doc $pkgname-postgres $pkgname-presence $pkgname-pcre
	$pkgname-mediaproxy $pkgname-unixodbc $pkgname-mysql $pkgname-sqlite
	$pkgname-lua $pkgname-ldap $pkgname-sipcapture $pkgname-tls"

# Source the kamailio.groups file for the definition of all the various modules
. ./kamailio.groups

subpackages="$pkgname-doc"
_modules="$module_group_kstandard"
for i in db postgres sqlite dbtext mysql \
    cpl xml unixodbc snmpstats xmpp carrierroute \
    ldap utils tls presence lua ims outbound dbg \
    extra; do
   
   subpackages="$subpackages $pkgname-$i"
   _modules="$_modules `eval echo $\module_group_k$i`"
done

source="http://www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-${pkgver}_src.tar.gz
	fix-sql-module-loading-order.patch
	kamailio-3.2-backslash.patch
	kamailio.cfg
	kamailio.initd
    kamailio.groups
	"

_builddir="$srcdir"/$pkgname-$pkgver


_default="carrierroute xmlrpc tm"
_presence="presence presence_xml presence_mwi pua pua_bla pua_mi pua_usrloc pua_xmpp rls xcap_server xcap_client presence_dialoginfo pua_dialoginfo presence_reginfo pua_reginfo"
_sipcapture="sipcapture"
_pcre="dialplan lcr regex"
_postgres="db_postgres"
_mysql="db_mysql"
_mediaproxy="mediaproxy"
_odbc="db_unixodbc"
_sqlite="db_sqlite"
_lua="app_lua"
_ldap="ldap"
_tls="tls"

# Makefile does not handle newline
_modules="$_default $_postgres $_mediaproxy $_odbc $_presence $_mysql $_pcre $_lua $_sqlite $_ldap $_sipcapture async $_tls"


prepare() {
@@ -79,7 +76,7 @@ prepare() {

build() {
	cd "$_builddir"
	make FLAVOUR=kamailio \
	make FLAVOUR=kamailio STUN=1 \
		PREFIX=/usr \
		cfg_target=/etc/kamailio/ \
		include_modules="$_modules" \
@@ -87,7 +84,7 @@ build() {
		DESTDIR="$pkgdir" \
		cfg_prefix="$pkgdir" \
		cfg
	make -j1 all || return 1
	make all || return 1
}

package() {
@@ -113,113 +110,137 @@ _mv_mod() {
	done
}

_mv_mod_k() {
	local moddir=usr/lib/kamailio/modules_k i=
	mkdir -p "$subpkgdir"/$moddir
	for i in $@; do
		mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1
	done
_generic_pkg() {
	pkgdesc="Kamailio $1"
	depends="$pkgname"
	_mv_mod $2
}

_mv_mod_s() {
	local moddir=usr/lib/kamailio/modules_s i=
	mkdir -p "$subpkgdir"/$moddir
	for i in $@; do
		mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1
	done
}

lua() {
	pkgdesc="Lua script support for kamailio"
	_mv_mod app_lua
}

mysql() {
	pkgdesc="MySQL support for kamailio"
	depends="kamailio mysql-client"
	replaces="kamailio"
	_mv_mod db_mysql
_db_driver() {
	pkgdesc="Database drivers for $1"
	depends="$pkgname $pkgname-db"
	_mv_mod db_$2 || return 1
	mkdir -p "$subpkgdir"/usr/share/kamailio \
		"$subpkgdir"/usr/lib/kamailio/kamctl
	mv "$pkgdir"/usr/share/kamailio/mysql \
	mv "$pkgdir"/usr/share/kamailio/$3 \
		"$subpkgdir"/usr/share/kamailio/ || return 1
	mv "$pkgdir"/usr/lib/kamailio/kamctl/*.mysql \
	mv "$pkgdir"/usr/lib/kamailio/kamctl/*.$4 \
		"$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
}

db() {
    _generic_pkg "modules using a database backend" "$module_group_db"
}

postgres() {
	pkgdesc="PostgreSQL support for kamailio"
	depends="kamailio postgresql-client"
	replaces="kamailio"
	_mv_mod db_postgres
	mkdir -p "$subpkgdir"/usr/share/kamailio \
		"$subpkgdir"/usr/lib/kamailio/kamctl
	mv "$pkgdir"/usr/share/kamailio/postgres \
		"$subpkgdir"/usr/share/kamailio/
	mv "$pkgdir"/usr/lib/kamailio/kamctl/*.pgsql \
		"$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
    _db_driver Postgres postgres postgres pgsql
}

mysql() {
    _db_driver Mysql mysql mysql mysql
}

sqlite() {
	pkgdesc="Sqlite support for kamailio"
	depends="kamailio sqlite"
	replaces="kamailio"
	_mv_mod_k db_sqlite || return 1
	mkdir -p "$subpkgdir"/usr/share/kamailio \
		"$subpkgdir"/usr/lib/kamailio/kamctl
	mv "$pkgdir"/usr/share/kamailio/db_sqlite \
		"$subpkgdir"/usr/share/kamailio/ || return 1
	mv "$pkgdir"/usr/lib/kamailio/kamctl/*.sqlite \
		"$subpkgdir"/usr/lib/kamailio/kamctl/ || return 1
    _db_driver SQlite sqlite db_sqlite sqlite
}

pcre() {
	pkgdesc="Regular expressions support for kamailio"
	_mv_mod dialplan lcr
	_mv_mod_k regex
dbtext() {
    _db_driver DBText text dbtext dbtext || return 1
    depends="$depends python"
    mkdir -p "$subpkgdir"/usr/lib/kamailio/kamctl
    mv "$pkgdir"/usr/lib/kamailio/kamctl/dbtextdb \
        "$subpkgdir"/usr/lib/kamailio/kamctl/
}

presence() {
	pkgdesc="Presence support for kamailio"
	_mv_mod_k $_presence

cpl() {
    _generic_pkg "CPL (Call Processing Language) interpreter" \
        "$module_group_kcpl"
}

mediaproxy() {
	pkgdesc="Mediaproxy support for kamailio"
	depends="kamailio"
	_mv_mod $_mediaproxy
xml() {
    _generic_pkg "XML related modules: $module_group_kxml" \
        "$module_group_kxml" || return 1
    mkdir -p "$subpkgdir"/usr/share/kamailio
    mv "$pkgdir"/usr/share/kamailio/xhttp_pi \
        "$subpkgdir"/usr/share/kamailio || return 1
    mkdir -p "$subpkgdir"/etc/kamailio/
    mv "$pkgdir"/etc/kamailio/pi_framework.xml \
        "$subpkgdir"/etc/kamailio || return 1
}

unixodbc() {
	pkgdesc="UnixODBC support for kamailio"
	depends="kamailio"
	_mv_mod_k $_odbc
    _generic_pkg "Database drivers for unixodbc" \
        "$module_group_kunixodbc"
}

snmpstats() {
    _generic_pkg "SNMP statistics support" \
        "$module_group_ksnmpstats" || return 1
    mkdir -p "$subpkgdir"/usr/share/snmp
    mv "$_builddir"/modules/snmpstats/mibs \
       "$subpkgdir"/usr/share/snmp/ || return 1
}

xmpp() {
    _generic_pkg "XMPP (Jabber) gateway" \
        "$module_group_kxmpp"
}

carrierroute() {
    _generic_pkg "carrier grade routing functions" \
        "$module_group_kcarrierroute"
}

ldap() {
	pkgdesc="LDAP support for kamailio"
	depends="kamailio"
	_mv_mod_k ldap
	_mv_mod_s ldap
    _generic_pkg "LDAP search functions" \
        "$module_group_kldap"
}

utils() {
    _generic_pkg "miscelaneous utility functions" \
        "$module_group_kutils"
}

tls() {
	pkgdesc="TLS support for kamailio"
	depends="kamailio"
	_mv_mod tls
    _generic_pkg "TLS support" \
        "$module_group_ktls"
}

presence() {
    _generic_pkg "SIP Notify (Presence) support" \
        "$module_group_kpresence"
}

lua() {
	_generic_pkg "Lua script support" \
        "$module_group_klua"
}

ims() {
    _generic_pkg "IP Multimedia Subsystem (IMS) support" \
        "$module_group_kims"
}

outbound() {
    _generic_pkg "RFC 5626 section 5 Outbound suppport" \
        "$module_group_koutbound"
}

dbg() {
    _generic_pkg "debugging modules" \
        "$module_group_kdbg"
}

sipcapture() {
	pkgdesc="HOMER sipcapture support for kamailio"
	depends="kamailio"
	_mv_mod $_sipcapture
extra() {
    _generic_pkg "extra modules" \
        "$mod_list_extra"
}


md5sums="98c082b70048d2e9a9c4acfaa6cf556d  kamailio-3.3.3_src.tar.gz
md5sums="ab57fcb1eb1195fa45f5c0935810e42a  kamailio-4.0.1_src.tar.gz
53cca39c47399eb2df20a1044d1e29eb  fix-sql-module-loading-order.patch
b0100ca0ad52b725b92e3b409e036d47  kamailio-3.2-backslash.patch
a3c959ec568c43a905710e7d25cd8c25  kamailio.cfg
9c190575e28772a784c4172216d85333  kamailio.initd"
9c190575e28772a784c4172216d85333  kamailio.initd
56a85be6c8e1b2c30d72a9b4acbdb5da  kamailio.groups"
diff --git a/main/kamailio/kamailio.groups b/main/kamailio/kamailio.groups
new file mode 100644
index 0000000..f91a475
--- /dev/null
+++ b/main/kamailio/kamailio.groups
@@ -0,0 +1,305 @@
# This is taken from sip-router/Makefile.groups


# Alpine specific changes:

# module_groug_kdbg (at the end of this file) is not defined in the orginale

# Move avp from mod_list_extra to mod_list_basic, so that we can create
# a kamailio-extra package

# Remove db_text from mod_list_db because we create a separate dbtext package

# - basic used modules, with no extra dependency (widespread usage)
mod_list_basic="avp async auth benchmark blst cfg_rpc cfgutils corex counters \
                ctl debugger diversion enum exec ipops kex mangler maxfwd \
                mediaproxy mi_datagram mi_fifo mi_rpc mqueue \
                nat_traversal nathelper path pike pv ratelimit rr rtimer \
                rtpproxy sanity sdpops siputils sl statistics textops \
                textopsx tm tmx topoh xlog"

# - extra used modules, with no extra dependency
mod_list_extra="auth_diameter call_control dmq domainpolicy msrp pdb \
                qos sca seas sms sst timer tmrec uac_redirect xhttp \
		        xhttp_rpc xprint"

# - common modules depending on database
mod_list_db="acc alias_db auth_db avpops cfg_db db_flatstore \
                db_cluster dialog dispatcher domain drouting group \
                htable imc matrix msilo mtree p_usrloc pdt permissions \
                pipelimit prefix_route registrar sipcapture siptrace speeddial \
                sqlops uac uri_db userblacklist usrloc"


# - common modules depending on database, using UID db schema
mod_list_dbuid="db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
                uid_uri_db"

# - modules for devel purposes
mod_list_devel="malloc_test print print_lib"

# - modules depending on pcre3 library
mod_list_pcre="dialplan lcr regex"

# - modules depending on radius client library
mod_list_radius="acc_radius auth_radius misc_radius peering"

# - modules depending on ldap client library
mod_list_ldap="db2_ldap h350 ldap"

# - modules depending on mysql client library
mod_list_mysql="db_mysql"

# - modules depending on postgres client library
mod_list_postgres="db_postgres"

# - modules depending on unixodbc library
mod_list_unixodbc="db_unixodbc"

# - modules depending on mysql cassandra library
mod_list_cassandra="db_cassandra"

# - modules depending on xml2 library
mod_list_cpl="cpl-c"

# - modules depending on xml2 library
mod_list_xmldeps="xhttp_pi xmlrpc xmlops"

# - modules depending on xml c rpc library
mod_list_mi_xmlrpc="mi_xmlrpc"

# - modules depending on net-snmp library
mod_list_snmpstats="snmpstats"

# - modules depending on expat library
mod_list_xmpp="xmpp"

# - modules depending on confuse library
mod_list_carrierroute="carrierroute"

# - modules depending on bdb (db4) library
mod_list_berkeley="db_berkeley"

# - modules depending on curl library
mod_list_utils="utils"

# - modules depending on purple library
mod_list_purple="purple"

# - modules depending on memcache library
mod_list_memcached="memcached"

# - modules depending on openssl library
mod_list_tlsdeps="auth_identity tls"

# - modules depending on openssl library
mod_list_outbound="outbound"

# - modules depending on unistring library
mod_list_websocket="websocket"

# - modules depending on openssl library
mod_list_stun="stun"

# - modules depending on libval-threads libcrypto libsres libpthread
mod_list_dnssec="dnssec"

# - modules related to SIMPLE presence extensions
mod_list_presence="presence presence_conference presence_dialoginfo \
                    presence_mwi presence_profile presence_reginfo \
                    presence_xml \
                    pua pua_bla pua_dialoginfo pua_mi pua_reginfo \
                    pua_usrloc pua_xmpp \
                    rls xcap_client xcap_server"

# - modules depending on lua library
mod_list_lua="app_lua"

# - modules depending on perl library
mod_list_perldeps="app_perl db_perlvdb"

# - modules depending on python library
mod_list_python="app_python"

# - modules depending on geoip library
mod_list_geoip="geoip"

# - modules depending on sqlite library
mod_list_sqlite="db_sqlite"

# - modules depending on oracle library
mod_list_oracle="db_oracle"

# - modules depending on json library
mod_list_json="json jsonrpc-c"

# - modules depending on redis library
mod_list_redis="ndb_redis"

# - modules depending on mono library
mod_list_mono="app_mono"

# - modules related to IMS extensions
mod_list_ims="cdp cdp_avp dialog_ng ims_auth ims_isc ims_icscf ims_qos \
                ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
                ims_usrloc_scscf"

# - modules depending on osp toolkit library
mod_list_osp="osp"

# - modules depending on java library
mod_list_java="app_java"

# - modules depending on iptables library
mod_list_iptrtpproxy="iptrtpproxy"

### --- Groups defined for source code compilation ###

# groups are sets of modules selected by compile target interest (should be
# built by combining lists)

# Modules in this group are the default compiled modules due to
# no external compile or link dependencies
module_group_default="$mod_list_basic $mod_list_extra \
                        $mod_list_db $mod_list_dbuid \
                        $mod_list_devel"

# Modules in this group are the default compiled modules due to
# no internal/external compile or link dependencies
module_group_standard="$mod_list_basic $mod_list_extra \
                        $mod_list_devel"

# Modules in this group are considered a standard part due to
# widespread usage, but they have dependencies that must be satisfied for 
# compilation (e.g., lcr, radius, presence, tls, ...).
module_group_common="$mod_list_db $mod_list_dbuid \
					$mod_list_pcre $mod_list_radius \
                    $mod_list_xmldeps $mod_list_presence \
                    $mod_list_tlsdeps"

# For db use (db modules, excluding drivers)
module_group_db=$mod_list_db

# For mysql
module_group_mysql_driver=db_mysql
module_group_mysql="$module_group_mysql_driver $module_group_db"

# For postgress
module_group_postgres_driver=db_postgres
module_group_postgres="$module_group_postgres_driver $module_group_db"

# For radius
module_group_radius=$mod_list_radius

# For presence
# kamailio modules
module_group_presence=$mod_list_presence

# For cassandra
#module_group_cassandra_driver=$(mod_list_cassandra)
#module_group_cassandra=$(module_group_cassandra_driver) $(module_group_db)


### --- Groups defined for pacKaging ###

# Standard modules in main pkg
module_group_kstandard="$mod_list_basic $mod_list_extra \
                        $mod_list_db $mod_list_dbuid \
                        $mod_list_pcre"

# pkg mysql module
module_group_kmysql=$mod_list_mysql

# pkg postgress module
module_group_kpostgres=$mod_list_postgres

# pkg cpl module
module_group_kcpl=$mod_list_cpl

# pkg xml modules
module_group_kxml=$mod_list_xmldeps

# pkg mi_xmlrpc modules
module_group_kmi_xmlrpc=$mod_list_mi_xmlrpc

# pkg radius modules
module_group_kradius=$mod_list_radius

# pkg unixodbc module
module_group_kunixodbc=$mod_list_unixodbc

# pkg perl module
module_group_kperl=$mod_list_perldeps

# pkg snmpstats module
module_group_ksnmpstats=$mod_list_snmpstats

# pkg xmpp module
module_group_kxmpp=$mod_list_xmpp

# pkg carrierroute module
module_group_kcarrierroute=$mod_list_carrierroute

# pkg berkeley module
module_group_kberkeley=$mod_list_berkeley

# pkg ldap modules
module_group_kldap=$mod_list_ldap

# pkg utils module
module_group_kutils=$mod_list_utils

# pkg purple module
module_group_kpurple=$mod_list_purple

# pkg memcached module
module_group_kmemcached=$mod_list_memcached

# pkg tls module
module_group_ktls=$mod_list_tlsdeps

# pkg websocket module
module_group_kwebsocket=$mod_list_websocket

# pkg presence modules
module_group_kpresence=$mod_list_presence

# pkg lua module
module_group_klua=$mod_list_lua

# pkg python module
module_group_kpython=$mod_list_python

# pkg geoip module
module_group_kgeoip=$mod_list_geoip

# pkg sqlite module
module_group_ksqlite=$mod_list_sqlite

# K json modules
module_group_kjson=$mod_list_json

# pkg redis module
module_group_kredis=$mod_list_redis

# pkg mono module
module_group_kmono=$mod_list_mono

# pkg IMS modules
module_group_kims=$mod_list_ims

# pkg outbound module
module_group_koutbound=$mod_list_outbound

# pkg java module
module_group_kjava=$mod_list_java

# pkg stun module
module_group_kstun=$mod_list_stun

# pkg dnssec module
module_group_kdnssec=$mod_list_dnssec

# Alpine Specific
module_group_kdbg="$mod_list_devel benchmark debugger"

-- 
1.8.0



---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---
Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20130429082855.3c5cb4e4@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1366906389-30635-1-git-send-email-nangel@alpinelinux.org> (view parent)
Sender timestamp
1367216935
DKIM signature
missing
Download raw message
On Thu, 25 Apr 2013 16:13:09 +0000
Nathan Angelacos <nangel@alpinelinux.org> wrote:

> - upgrade to 4.0.1
> - add kamailio.groups file to build packages similar to other distros
> - add additional packages to the Alpine set (e.g. ldap, snmpstats)
> ---
>  main/kamailio/APKBUILD        | 215 +++++++++++++++--------------
>  main/kamailio/kamailio.groups | 305 ++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 423 insertions(+), 97 deletions(-)
>  create mode 100644 main/kamailio/kamailio.groups

Pushed. Thanks!

-nc


---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---
Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20130429105745.259b2b78@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1366906389-30635-1-git-send-email-nangel@alpinelinux.org> (view parent)
Sender timestamp
1367225865
DKIM signature
missing
Download raw message
I should have reviewed this earlier...

On Thu, 25 Apr 2013 16:13:09 +0000
Nathan Angelacos <nangel@alpinelinux.org> wrote:

> - upgrade to 4.0.1
> - add kamailio.groups file to build packages similar to other distros
> - add additional packages to the Alpine set (e.g. ldap, snmpstats)
> ---
>  main/kamailio/APKBUILD        | 215 +++++++++++++++--------------
>  main/kamailio/kamailio.groups | 305 ++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 423 insertions(+), 97 deletions(-)
>  create mode 100644 main/kamailio/kamailio.groups
> 
> diff --git a/main/kamailio/APKBUILD b/main/kamailio/APKBUILD
> index 797240c..13b03c6 100644
> --- a/main/kamailio/APKBUILD
> +++ b/main/kamailio/APKBUILD
> @@ -1,9 +1,9 @@

....

> +# Source the kamailio.groups file for the definition of all the various modules
> +. ./kamailio.groups

I wonder if we could maintain this list inlined in the APKBUILD? eg, in vim, do
 
  :r kamailio.groups

There are some scripts (like abuild -R) that does things like:

# list all build .apk files
for i in */APKBUILD; do
	# source the apkbuild
	. ./$i
	for pkg in $pkgname $subpackages; do
		echo "${pkg}-${pkgver}-r${pkgrel}.apk"
	done
done

This will fail now because the APKBUILD currently requires that the working directory is same as the dir where the kamailio.groups is in.

You could do:

if [ -f ./kamailio.groups ]; then
	. ./kamailio.groups
fi

but then again, the above code snippet will break as the $subpackages will not be complete.

> +subpackages="$pkgname-doc"
> +_modules="$module_group_kstandard"
> +for i in db postgres sqlite dbtext mysql \

I will change this to "for _i ...". We need prefix variables in global scope with _. The above code snippet will break if it uses $i after sourcing the APKBUILD.

> +    cpl xml unixodbc snmpstats xmpp carrierroute \
> +    ldap utils tls presence lua ims outbound dbg \
> +    extra; do
> +   
> +   subpackages="$subpackages $pkgname-$i"
> +   _modules="$_modules `eval echo $\module_group_k$i`"

This I will change to:

  eval "_modules=\"\$_modules \$module_group_k$_i\""

For the simple reason to avoid forks in global scope. When there are many enough forks in the APKBUILDs, sourcing them all as in the loop example above will become significantly slower.

-nc


---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---
Reply to thread Export thread (mbox)