commit d1407746ff21803d7c24c1c50d38069472b370b0 Author: Ralf Zerres Date: Sat Jan 30 21:20:36 2021 +0100 v3.1.1: initial commit - archlinux: PKGBUILD - systemd: services - systemd: tmpfiles.d Signed-off-by: Ralf Zerres diff --git a/INSTALL.archlinux b/INSTALL.archlinux new file mode 100644 index 0000000..2e806f0 --- /dev/null +++ b/INSTALL.archlinux @@ -0,0 +1,35 @@ +archlinux specific +------------------- + + +Structure +--------- + +OpenSIPS suite is build as a modular system. +This packages just includes the core functionality and the parser. + +All sophisticated SIP packet handling is provided through dedicated modules and its usage will vary +in every installation. Please select and install from the supported 'opensips-modules' packages and adapt +the configuration to your individual needs. +You are encouraged to make use of your prefered database. Interaction will be provided via the corresponding +opensip-module- package. This package will in turn pull in the dependend base packages. + +The complete documentation is provided via the 'opensips-documentation' package. +Beside html-, and text files you will find example configurations explaining the integration of available modules. + +Since version 3.0 OpenSIPS is managed either via a python commandline tool 'opensips-cli' +or via the web-frontend 'opensips-cp'. Both packages may be installed side by side. + + +Database preparation +-------------------- + +To create a the table structure for an 'opensips' database, following actions need to be performed: + +1) install the prefered database backend + eg for MySQL: 'pacman -S opensips-module-mysql' + eg for PostgreSQL: 'pacman -S opensips-module-postgresql' + eg for SQlite: 'pacman -S opensips-module-sqlite' +2) adapt the default configruation file (/etc/opensip/opensip-cli.conf) +3) create database 'opensips' + 'opensips-cli -x database create' diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..0d3b5b1 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,641 @@ +# vim:set ts=8 sw=8 et: +# Maintainer: Sergej Pupykin +# Contributor: Ralf Zerres + +pkgbase=opensips +pkgname=('opensips' 'opensips-modules' + 'opensips-module-b2bua' 'opensips-module-cpl' 'opensips-module-presence' + 'opensips-module-berkeley' 'opensips-module-http' 'opensips-module-mysql' + 'opensips-module-perlvdb' 'opensips-module-postgresql' + 'opensips-module-sqlite' 'opensips-module-unixodbc' 'opensips-module-text' + 'opensips-module-virtual' 'opensips-module-cachedb' + 'opensips-documentation') + +pkgver=3.1.1 +pkgrel=1 +pkgdesc="An Open Source SIP Server able to act as a SIP proxy, registrar, location server, redirect server ..." +url="https://www.opensips.org" +depends=('attr' 'db' 'gcc-libs' 'libxml2' 'openssl') +makedepends=( + 'bison' + 'confuse' + 'doxygen' 'docbook-sgml' 'docbook-utils' 'docbook-xml' + 'expat' + 'flex' + 'hiredis' + 'geoip' + 'json-c' + 'freeradius' + 'libldap>=2.4.18' 'libmariadbclient' 'libmemcached' 'libmicrohttpd' + 'librabbitmq-c' 'libtap-git' 'libutf8proc' 'libuv' 'libxslt' + 'lksctp-tools' + 'lua>=5.1' + 'lynx' + 'mongo-c-driver' + 'net-snmp' + 'osptoolkit' + 'postgresql-libs>=8.4.1' + 'radcli' + 'thrift' 'unixodbc' 'xmlrpc-c' 'zlib' + ) +checkdepends=('expat' 'libtap-git') +arch=('x86_64' 'armv7') +license=('GPL') +options=('!emptydirs' 'zipman' '!makeflags' 'docs') +source=("${pkgbase%%-*}-${pkgver}::https://github.com/OpenSIPS/opensips/archive/${pkgver}.tar.gz" + usr_lib_systemd_system_opensips.service + usr_lib_tmpfiles.d_opensips.conf) +sha256sums=('a4bc1f144af12e6e0984c5886a54b96ef203ea2a4b58df3701f8eadc795d083a' + 'c2fec4be085b108db10834fa9832e98d696c2de6408f85f96cf89c13bf6be819' + 'ee2baa9bc7b7fb1612b3eeffb9f8d23abdde20b2154d0756f3351344e4e75b7d') +changelog="$pkgname.changelog" +validpgpkeys=( # Ralf Zerres (Package Signing) + '1EC4BE4FF2A6C9F4DDDF30F33C5F485DBD250D66' + ) + +# Database modules +modules_http=('modules/db_http') +modules_oracle=('modules/db_oracle') +modules_mysql=('modules/db_mysql') +modules_perlvdb=('modules/db_perlvdb') +modules_postgresql=('modules/db_postgres') +modules_sqlite=('modules/db_sqlite') +modules_text=('modules/db_text') +modules_unixodbc=('modules/db_unixodbc') +modules_virtual=('modules/db_virtual') + +modules_cachedb=('cachedb_cassandra' + #'cachedb_couchbase' + 'cachedb_local' 'cachedb_memcached' + 'cachedb_mongodb' 'cachedb_redis' 'cachedb_sql') + +# Commandline parser modules +modules_cpl=('cpl_c') + +# Application specific modules +modules_b2bua=('b2b_entities' 'b2b_logic' 'b2b_sca') +modules_presence=('presence' 'presence_callinfo' 'presence_dfks' + 'presence_dialoginfo' 'presence_mwi' + 'presence_xcapdiff' 'presence_xml' + 'pua' 'pua_bla' 'pua_dialoginfo' 'pua_mi' + 'pua_usrloc' 'pua_xmpp') + +# General purpose modules +modules_base=('aaa_radius' + 'acc' + 'alias_db' + 'auth' 'auth_aaa' 'auth_db' 'auth_jwt' + 'avpops' + 'benchmark' + 'call_center' 'call_control' 'callops' + 'carrierroute' + 'cfgutils' + 'cgrates' + 'cluster' + 'compression' + 'dialog' + 'dialplan' + 'dispatcher' + 'diversion' + 'dns_cache' + 'domain' + 'domainpolicy' + 'drouting' + 'emergency' + 'enum' + 'event_datagram' 'event_flatstore' 'event_rabbitmq' 'event_route' + 'event_routing' 'event_stream' 'event_virtual' 'event_xmlrpc' + 'exec' + 'fraud_detection' + 'freeswitch' 'freeswitch_scripting' + 'gflags' + 'group' + 'h350' + 'identity' + 'imc' + 'jabber' + 'json' 'jsonrpc' + 'ldap' + 'load_balancer' + 'lua' + 'mangler' + 'mahops' + 'maxfwd' + 'media_exchange' + 'mediaproxy' + 'mid_registrar' + 'mi_datagram' 'mi_fifo' 'mi_html' 'mi_http' ' mi_xmlrpc_ng' + 'mmgeoip' + 'msilo' + 'nathelper' + 'nat_traversal' + 'options' + 'path' + 'peering' + 'perl' + 'permissions' + 'pi_http' + 'pike' + 'proto_bin' 'proto_hep' 'proto_sctp' 'proto_smpp' 'proto_tls' 'proto_ws' 'proto_wss' + 'python' + 'qos' 'qrouting' + 'rabbitmq' 'rabbitmq_consumer' + 'rate_cacher' 'ratelimit' + 'regex' + 'registrar' + 'rest_client' + 'rls' + 'rr' + 'rtpengine' 'rtpproxy' + 'script_helper' + 'signaling' + 'sipcapture' + 'sip_i' 'sipmsgops' 'siprec' + 'sl' + #'sngtc' + 'snmpstats' + 'speeddial' + 'sql_cacher' + 'sst' + 'statistics' + 'stir_shaken' + 'stun' + 'textops' + 'tls_mgm' + 'tm' + 'topology_hiding' + 'tracer' + 'uac' 'uac_auth' 'uac_redirect' 'uac_registrant' + 'userblacklist' 'usrloc' + 'uuid' + 'xcap' 'xcap_client' + 'xml' + 'xmpp') + +prepare() { + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + if [ -h "$srcdir"/Makefile.conf.template ]; then + msg2 "preset Makefile.conf template" + test ! -f Makefile.conf.template.orig && + mv Makefile.conf.template Makefile.conf.template.orig + cp "$srcdir"/Makefile.conf.template Makefile.conf.template + fi + + # since 3.0 use upstream file + #cp "$srcdir"/Makefile.defs Makefile.defs + + if [ ! -f .makepkg-patched ]; then + if [ ! -d ./.git ]; then + msg2 "patching: create orphan git repository" + git init -b opensips-${pkgver} + git checkout --orphan ${pkgbase%%-*}-${pkgver} + msg2 "patching: create commits corresponding to version ${pkgver}" + git add -A + git commit -m "opensips ${pkgver}" + + fi + cp ../../rabbitmq_consumer.xml modules/rabbitmq_consumer/doc/rabbitmq_consumer.xml + git add modules/rabbitmq_consumer/doc/rabbitmq_consumer.xml + git commit -am "rabbitmq_consumer.xml" + #git add Makefile.defs + #git commit -am "opensips-${pkgver}: Makefile.defs" + if [ -d ../../patches-git-${pkgver} ]; then + git am --signoff ../../patches-git-${pkgver}/0001-packaging-Arch-Linux-update-search-path-for-docbook.patch + fi + msg2 " patching [done]" + touch .makepkg-patched + #echo " -> no patches for branch '${_branch}' needed" + fi + + if [ ! -f "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" ]; then + cp ../../INSTALL.archlinux "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" + fi + + #msg2 "ensure python2 usage (<=v3.0)" + #for file in $(find . -name '*.py' -print); do + # sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' $file + # sed -i 's_^#!.*/usr/bin/env.*python_#!/usr/bin/env python2_' $file + #done + + msg2 "ensure binaries live in /bin and /usr/bin" + sed -i 's|sbin|bin|g' Makefile + sed -i 's|bin-dir = sbin/|bin-dir = bin/|' Makefile.defs +} + +build() { + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + #FASTER=1 + make -j$(nproc) \ + #include_modules="${_modules}" \ + LIBDIR=lib \ + PREFIX=/usr \ + skip_modules="cachedb_couchbase db_oracle sngtc" +} + +package_opensips() { + pkgdesc="A very fast and flexible SIP Server (RFC3261, stable version)" + + depends=( + 'confuse' 'geoip' 'json-c' + 'libtap-git' 'libuv' 'libxslt' + 'lksctp-tools') + optdepends=( + 'cassandra-cpp-driver: cassandra C++ support' + 'curl: curl support' + 'confuse: confuse support' + 'lksctp-tools: sctp support' + 'lynx: text browser support' + 'hiredis: HiRedis support' + 'libldap: LDAP support' + 'libmariadbclient: Maria DB support' + 'libmaxminddb: MaxMin DB support' + 'libmemcached: Memory caching support' + 'libmicrohttpd: Inline HTTPD support' + 'librabbitmq-c: Rabbitmq C support' + 'libsasl: SASL authentication support' + 'libutf8proc: UTF8 processing support' + 'lua: LUA scripting support' + 'mariadb-libs: Maria-DB support' + 'mongo-c-driver: C-Interface for Mongo-DB support' + 'net-snmp: SNMP support' + 'osptoolkit: OSP Toolkit support' + 'pcre: Perl Regular-Expression support' + 'perl: Perl support' + 'postgresql-libs: PostgreSQL-DB support' + 'python2: Python v2 support' + 'radcli: RAD commandline support' + 'rabbitmq: Rabbit CacheMemory support' + 'thrift: Thrift support' + 'unixodbc: UNIX ODBC support') + install=opensips.install + + provides=("opensips=${pkgver}") + conflicts=('opensips-git') + + _components=('opensips') + backup=( + "etc/opensips/opensips.cfg" + "etc/opensips/regex_groups.cfg" + ) + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + # install app only, excluding console, modules and modules docs + for _cmp in ${_components[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-app + + # Conforms to the arch packaging standards (https://wiki.archlinux.org/index.php/Arch_Packaging_Standards) + mkdir -p "$pkgdir"/etc/ + mv "$pkgdir"/usr/etc/opensips/ "$pkgdir"/etc/ + sed -i 's#mpath=".*lib/opensips/modules/"#mpath="/usr/lib/opensips/modules/"#' "$pkgdir"/etc/opensips/opensips.cfg + + # fix bad paths + cd "$pkgdir"/usr/share + find -type f -exec sed -i "s#"$pkgdir"##" {} \; + + mv "$pkgdir"/usr/sbin "$pkgdir"/usr/bin + + cd "$pkgdir"/etc + find -type f -exec sed -i "s#"$pkgdir"##" {} \; + + # python2 is being used + #cd "$pkgdir" + #grep -lR '#!.*python' * | while read file; do sed -s 's/\(#!.*python\)/\12/g' -i "$file"; done + + # Systemd files + install -Dm0644 "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/${pkgname}.service" "$pkgdir"/usr/lib/systemd/system/${pkgname}.service + install -Dm0644 "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/${pkgname}.tmpfiles.conf" "$pkgdir"/usr/lib/tmpfiles.d/${pkgname}.conf + if [ -f "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" ]; then + install -Dm0644 "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" "$pkgdir"/usr/share/doc/${pkgname}/INSTALL.archlinux + fi + done +} + +# base modules +package_opensips-modules() { + pkgdesc="A fast and flexible SIP Server - base modules (stable version)" + depends=('opensips') + provides=("opensips-modules=${pkgver}") + conflicts=('opensips-modules-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + # install app only, excluding console, modules and modules docs + for _module in ${modules_base[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + done +} + +# Application specific modules +package_opensips-module-b2bua() { + pkgdesc="A fast and flexible SIP Server - B2B User-Agent modules (stable version)" + depends=('opensips') + provides=("opensips-modules-b2bua=${pkgver}") + conflicts=('opensips-modules-b2bua-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + for _module in ${modules_b2bua[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + done +} + +package_opensips-module-cpl() { + pkgdesc="A fast and flexible SIP Server - Call Processing Language module (stable version)" + depends=('opensips') + provides=("opensips-modules-cpl=${pkgver}") + conflicts=('opensips-modules-cpl-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/$modules_cpl \ + install-modules +} + +package_opensips-module-presence() { + pkgdesc="A fast and flexible SIP Server - Presence handling modules (stable version)" + depends=('opensips') + provides=("opensips-modules-presence=${pkgver}") + conflicts=('opensips-modules-presence-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + for _module in ${modules_presence[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + done +} + +# Database modules +package_opensips-module-berkeley() { + pkgdesc="A fast and flexible SIP Server - database module Berkeley (stable version)" + depends=('opensips') + provides=("opensips-modules-berkeley=${pkgver}") + conflicts=('opensips-modules-berkeley-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_berkeley" \ + install-modules +} + +package_opensips-module-flatstore() { + pkgdesc="A fast and flexible SIP Server - database module Flatstore (stable version)" + depends=('opensips') + provides=("opensips-modules-flatstore=${pkgver}") + conflicts=('opensips-modules-flatstore-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_flatstore" \ + install-modules +} + +package_opensips-module-http() { + pkgdesc="A fast and flexible SIP Server - database module HTTP (stable version)" + depends=('opensips') + provides=("opensips-modules-http=${pkgver}") + conflicts=('opensips-modules-http-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_http" \ + install-modules +} + +package_opensips-module-mysql() { + pkgdesc="A fast and flexible SIP Server - database module MySQL (stable version)" + depends=('opensips' 'mariadb') + provides=("opensips-modules-mysql=${pkgver}") + conflicts=('opensips-modules-mysql-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_mysql" \ + install-modules +} + +package_opensips-module-oracle() { + pkgdesc="A fast and flexible SIP Server - database module Oracle (stable version)" + depends=('opensips' 'oracle') + provides=("opensips-modules-oracle=${pkgver}") + conflicts=('opensips-modules-oracle-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_oracle" \ + install-modules +} + +package_opensips-module-perlvdb() { + pkgdesc="A fast and flexible SIP Server - database module Perl virtual DB (stable version)" + depends=('opensips') + provides=("opensips-modules-perlvdb=${pkgver}") + conflicts=('opensips-modules-perlvdb-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_perlvdb" \ + install-modules +} + +package_opensips-module-postgresql() { + pkgdesc="A fast and flexible SIP Server - database module PostgreSQL (stable version)" + depends=('opensips' 'postgresql') + provides=("opensips-modules-postgresql=${pkgver}") + conflicts=('opensips-modules-postgresql-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_postgresql" \ + install-modules +} + +package_opensips-module-sqlite() { + pkgdesc="A fast and flexible SIP Server - database module SQlite (stable version)" + depends=('opensips' 'sqlite') + provides=("opensips-modules-sqlite=${pkgver}") + conflicts=('opensips-modules-sqlite-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_sqlite" \ + install-modules +} + +package_opensips-module-unixodbc() { + pkgdesc="A fast and flexible SIP Server - database module UnixODBC (stable version)" + depends=('opensips' 'unixodbc') + provides=("opensips-modules-mysql=${pkgver}") + conflicts=('opensips-modules-mysql-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_unixodbc" \ + install-modules +} + +package_opensips-module-text() { + pkgdesc="A fast and flexible SIP Server - database module text (stable version)" + depends=('opensips') + provides=("opensips-modules-text=${pkgver}") + conflicts=('opensips-modules-text-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_text" \ + install-modules +} + +package_opensips-module-virtual() { + pkgdesc="A fast and flexible SIP Server - virtual database module (stable version)" + depends=('opensips') + provides=("opensips-modules-virtual=${pkgver}") + conflicts=('opensips-modules-virtual-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_virtual" \ + install-modules +} + +package_opensips-module-cachedb() { + pkgdesc="A fast and flexible SIP Server - database modules for caching (stable version)" + depends=('opensips') + provides=("opensips-modules-cachedb=${pkgver}") + conflicts=('opensips-modules-cachedb-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + for _module in ${modules_cachedb[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + #skip_modules="cachedb_couchbase" + done +} + +# Offline documentation +package_opensips-documentation() { + pkgdesc="A fast and flexible SIP Server - documentation (stable version)" + suggests=('opensips') + provides=("opensips-documentation=${pkgver}") + conflicts=('opensips-documentation-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + msg2 "create documentation targets" + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + doxygen modules-docbook-html + # modules-docbook-pdf \ + #dbschema-docbook-html dbschema-docbook-pdf \ + #modules-readme + + msg2 "install documentation targets" + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-doc \ + install-modules-docbook + + msg2 " ... text files" + DOC_DIR="$pkgdir/usr/share/doc/${pkgbase%%-*}" + if [ -d "$DOC_DIR/txt" ]; then + mkdir -p "$DOC_DIR/txt" + chmod 0755 "$DOC_DIR/txt" + mv --recursive $DOC_DIR/README.* "$DOC_DIR/txt" + chmod --recursive 0644 "$DOC_DIR/txt" + fi + + msg2 " ... html documents" + DOC_DIR="$pkgdir/usr/share/doc/${pkgbase%%-*}" + if [ -d "$DOC_DIR/html" ]; then + mkdir -p "$DOC_DIR/html" + chmod 0755 "$DOC_DIR/html" + mv --recursive $DOC_DIR/*.html "$DOC_DIR/html" + chmod --recursive 0644 "$DOC_DIR/html" + fi + + msg2 " ... examples" + DOC_DIR="$pkgdir/usr/share/doc/${pkgbase%%-*}" + if [ -d ./examples ]; then + mkdir -p "$DOC_DIR" + cp --recursive ./examples "$DOC_DIR" + chmod --recursive 0644 "$DOC_DIR" + fi +} diff --git a/PKGBUILD-3.1.1 b/PKGBUILD-3.1.1 new file mode 100644 index 0000000..0d3b5b1 --- /dev/null +++ b/PKGBUILD-3.1.1 @@ -0,0 +1,641 @@ +# vim:set ts=8 sw=8 et: +# Maintainer: Sergej Pupykin +# Contributor: Ralf Zerres + +pkgbase=opensips +pkgname=('opensips' 'opensips-modules' + 'opensips-module-b2bua' 'opensips-module-cpl' 'opensips-module-presence' + 'opensips-module-berkeley' 'opensips-module-http' 'opensips-module-mysql' + 'opensips-module-perlvdb' 'opensips-module-postgresql' + 'opensips-module-sqlite' 'opensips-module-unixodbc' 'opensips-module-text' + 'opensips-module-virtual' 'opensips-module-cachedb' + 'opensips-documentation') + +pkgver=3.1.1 +pkgrel=1 +pkgdesc="An Open Source SIP Server able to act as a SIP proxy, registrar, location server, redirect server ..." +url="https://www.opensips.org" +depends=('attr' 'db' 'gcc-libs' 'libxml2' 'openssl') +makedepends=( + 'bison' + 'confuse' + 'doxygen' 'docbook-sgml' 'docbook-utils' 'docbook-xml' + 'expat' + 'flex' + 'hiredis' + 'geoip' + 'json-c' + 'freeradius' + 'libldap>=2.4.18' 'libmariadbclient' 'libmemcached' 'libmicrohttpd' + 'librabbitmq-c' 'libtap-git' 'libutf8proc' 'libuv' 'libxslt' + 'lksctp-tools' + 'lua>=5.1' + 'lynx' + 'mongo-c-driver' + 'net-snmp' + 'osptoolkit' + 'postgresql-libs>=8.4.1' + 'radcli' + 'thrift' 'unixodbc' 'xmlrpc-c' 'zlib' + ) +checkdepends=('expat' 'libtap-git') +arch=('x86_64' 'armv7') +license=('GPL') +options=('!emptydirs' 'zipman' '!makeflags' 'docs') +source=("${pkgbase%%-*}-${pkgver}::https://github.com/OpenSIPS/opensips/archive/${pkgver}.tar.gz" + usr_lib_systemd_system_opensips.service + usr_lib_tmpfiles.d_opensips.conf) +sha256sums=('a4bc1f144af12e6e0984c5886a54b96ef203ea2a4b58df3701f8eadc795d083a' + 'c2fec4be085b108db10834fa9832e98d696c2de6408f85f96cf89c13bf6be819' + 'ee2baa9bc7b7fb1612b3eeffb9f8d23abdde20b2154d0756f3351344e4e75b7d') +changelog="$pkgname.changelog" +validpgpkeys=( # Ralf Zerres (Package Signing) + '1EC4BE4FF2A6C9F4DDDF30F33C5F485DBD250D66' + ) + +# Database modules +modules_http=('modules/db_http') +modules_oracle=('modules/db_oracle') +modules_mysql=('modules/db_mysql') +modules_perlvdb=('modules/db_perlvdb') +modules_postgresql=('modules/db_postgres') +modules_sqlite=('modules/db_sqlite') +modules_text=('modules/db_text') +modules_unixodbc=('modules/db_unixodbc') +modules_virtual=('modules/db_virtual') + +modules_cachedb=('cachedb_cassandra' + #'cachedb_couchbase' + 'cachedb_local' 'cachedb_memcached' + 'cachedb_mongodb' 'cachedb_redis' 'cachedb_sql') + +# Commandline parser modules +modules_cpl=('cpl_c') + +# Application specific modules +modules_b2bua=('b2b_entities' 'b2b_logic' 'b2b_sca') +modules_presence=('presence' 'presence_callinfo' 'presence_dfks' + 'presence_dialoginfo' 'presence_mwi' + 'presence_xcapdiff' 'presence_xml' + 'pua' 'pua_bla' 'pua_dialoginfo' 'pua_mi' + 'pua_usrloc' 'pua_xmpp') + +# General purpose modules +modules_base=('aaa_radius' + 'acc' + 'alias_db' + 'auth' 'auth_aaa' 'auth_db' 'auth_jwt' + 'avpops' + 'benchmark' + 'call_center' 'call_control' 'callops' + 'carrierroute' + 'cfgutils' + 'cgrates' + 'cluster' + 'compression' + 'dialog' + 'dialplan' + 'dispatcher' + 'diversion' + 'dns_cache' + 'domain' + 'domainpolicy' + 'drouting' + 'emergency' + 'enum' + 'event_datagram' 'event_flatstore' 'event_rabbitmq' 'event_route' + 'event_routing' 'event_stream' 'event_virtual' 'event_xmlrpc' + 'exec' + 'fraud_detection' + 'freeswitch' 'freeswitch_scripting' + 'gflags' + 'group' + 'h350' + 'identity' + 'imc' + 'jabber' + 'json' 'jsonrpc' + 'ldap' + 'load_balancer' + 'lua' + 'mangler' + 'mahops' + 'maxfwd' + 'media_exchange' + 'mediaproxy' + 'mid_registrar' + 'mi_datagram' 'mi_fifo' 'mi_html' 'mi_http' ' mi_xmlrpc_ng' + 'mmgeoip' + 'msilo' + 'nathelper' + 'nat_traversal' + 'options' + 'path' + 'peering' + 'perl' + 'permissions' + 'pi_http' + 'pike' + 'proto_bin' 'proto_hep' 'proto_sctp' 'proto_smpp' 'proto_tls' 'proto_ws' 'proto_wss' + 'python' + 'qos' 'qrouting' + 'rabbitmq' 'rabbitmq_consumer' + 'rate_cacher' 'ratelimit' + 'regex' + 'registrar' + 'rest_client' + 'rls' + 'rr' + 'rtpengine' 'rtpproxy' + 'script_helper' + 'signaling' + 'sipcapture' + 'sip_i' 'sipmsgops' 'siprec' + 'sl' + #'sngtc' + 'snmpstats' + 'speeddial' + 'sql_cacher' + 'sst' + 'statistics' + 'stir_shaken' + 'stun' + 'textops' + 'tls_mgm' + 'tm' + 'topology_hiding' + 'tracer' + 'uac' 'uac_auth' 'uac_redirect' 'uac_registrant' + 'userblacklist' 'usrloc' + 'uuid' + 'xcap' 'xcap_client' + 'xml' + 'xmpp') + +prepare() { + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + if [ -h "$srcdir"/Makefile.conf.template ]; then + msg2 "preset Makefile.conf template" + test ! -f Makefile.conf.template.orig && + mv Makefile.conf.template Makefile.conf.template.orig + cp "$srcdir"/Makefile.conf.template Makefile.conf.template + fi + + # since 3.0 use upstream file + #cp "$srcdir"/Makefile.defs Makefile.defs + + if [ ! -f .makepkg-patched ]; then + if [ ! -d ./.git ]; then + msg2 "patching: create orphan git repository" + git init -b opensips-${pkgver} + git checkout --orphan ${pkgbase%%-*}-${pkgver} + msg2 "patching: create commits corresponding to version ${pkgver}" + git add -A + git commit -m "opensips ${pkgver}" + + fi + cp ../../rabbitmq_consumer.xml modules/rabbitmq_consumer/doc/rabbitmq_consumer.xml + git add modules/rabbitmq_consumer/doc/rabbitmq_consumer.xml + git commit -am "rabbitmq_consumer.xml" + #git add Makefile.defs + #git commit -am "opensips-${pkgver}: Makefile.defs" + if [ -d ../../patches-git-${pkgver} ]; then + git am --signoff ../../patches-git-${pkgver}/0001-packaging-Arch-Linux-update-search-path-for-docbook.patch + fi + msg2 " patching [done]" + touch .makepkg-patched + #echo " -> no patches for branch '${_branch}' needed" + fi + + if [ ! -f "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" ]; then + cp ../../INSTALL.archlinux "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" + fi + + #msg2 "ensure python2 usage (<=v3.0)" + #for file in $(find . -name '*.py' -print); do + # sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' $file + # sed -i 's_^#!.*/usr/bin/env.*python_#!/usr/bin/env python2_' $file + #done + + msg2 "ensure binaries live in /bin and /usr/bin" + sed -i 's|sbin|bin|g' Makefile + sed -i 's|bin-dir = sbin/|bin-dir = bin/|' Makefile.defs +} + +build() { + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + #FASTER=1 + make -j$(nproc) \ + #include_modules="${_modules}" \ + LIBDIR=lib \ + PREFIX=/usr \ + skip_modules="cachedb_couchbase db_oracle sngtc" +} + +package_opensips() { + pkgdesc="A very fast and flexible SIP Server (RFC3261, stable version)" + + depends=( + 'confuse' 'geoip' 'json-c' + 'libtap-git' 'libuv' 'libxslt' + 'lksctp-tools') + optdepends=( + 'cassandra-cpp-driver: cassandra C++ support' + 'curl: curl support' + 'confuse: confuse support' + 'lksctp-tools: sctp support' + 'lynx: text browser support' + 'hiredis: HiRedis support' + 'libldap: LDAP support' + 'libmariadbclient: Maria DB support' + 'libmaxminddb: MaxMin DB support' + 'libmemcached: Memory caching support' + 'libmicrohttpd: Inline HTTPD support' + 'librabbitmq-c: Rabbitmq C support' + 'libsasl: SASL authentication support' + 'libutf8proc: UTF8 processing support' + 'lua: LUA scripting support' + 'mariadb-libs: Maria-DB support' + 'mongo-c-driver: C-Interface for Mongo-DB support' + 'net-snmp: SNMP support' + 'osptoolkit: OSP Toolkit support' + 'pcre: Perl Regular-Expression support' + 'perl: Perl support' + 'postgresql-libs: PostgreSQL-DB support' + 'python2: Python v2 support' + 'radcli: RAD commandline support' + 'rabbitmq: Rabbit CacheMemory support' + 'thrift: Thrift support' + 'unixodbc: UNIX ODBC support') + install=opensips.install + + provides=("opensips=${pkgver}") + conflicts=('opensips-git') + + _components=('opensips') + backup=( + "etc/opensips/opensips.cfg" + "etc/opensips/regex_groups.cfg" + ) + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + # install app only, excluding console, modules and modules docs + for _cmp in ${_components[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-app + + # Conforms to the arch packaging standards (https://wiki.archlinux.org/index.php/Arch_Packaging_Standards) + mkdir -p "$pkgdir"/etc/ + mv "$pkgdir"/usr/etc/opensips/ "$pkgdir"/etc/ + sed -i 's#mpath=".*lib/opensips/modules/"#mpath="/usr/lib/opensips/modules/"#' "$pkgdir"/etc/opensips/opensips.cfg + + # fix bad paths + cd "$pkgdir"/usr/share + find -type f -exec sed -i "s#"$pkgdir"##" {} \; + + mv "$pkgdir"/usr/sbin "$pkgdir"/usr/bin + + cd "$pkgdir"/etc + find -type f -exec sed -i "s#"$pkgdir"##" {} \; + + # python2 is being used + #cd "$pkgdir" + #grep -lR '#!.*python' * | while read file; do sed -s 's/\(#!.*python\)/\12/g' -i "$file"; done + + # Systemd files + install -Dm0644 "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/${pkgname}.service" "$pkgdir"/usr/lib/systemd/system/${pkgname}.service + install -Dm0644 "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/${pkgname}.tmpfiles.conf" "$pkgdir"/usr/lib/tmpfiles.d/${pkgname}.conf + if [ -f "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" ]; then + install -Dm0644 "${srcdir}/${pkgbase%%-*}-${pkgver}/packaging/arch/INSTALL.archlinux" "$pkgdir"/usr/share/doc/${pkgname}/INSTALL.archlinux + fi + done +} + +# base modules +package_opensips-modules() { + pkgdesc="A fast and flexible SIP Server - base modules (stable version)" + depends=('opensips') + provides=("opensips-modules=${pkgver}") + conflicts=('opensips-modules-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + # install app only, excluding console, modules and modules docs + for _module in ${modules_base[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + done +} + +# Application specific modules +package_opensips-module-b2bua() { + pkgdesc="A fast and flexible SIP Server - B2B User-Agent modules (stable version)" + depends=('opensips') + provides=("opensips-modules-b2bua=${pkgver}") + conflicts=('opensips-modules-b2bua-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + for _module in ${modules_b2bua[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + done +} + +package_opensips-module-cpl() { + pkgdesc="A fast and flexible SIP Server - Call Processing Language module (stable version)" + depends=('opensips') + provides=("opensips-modules-cpl=${pkgver}") + conflicts=('opensips-modules-cpl-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/$modules_cpl \ + install-modules +} + +package_opensips-module-presence() { + pkgdesc="A fast and flexible SIP Server - Presence handling modules (stable version)" + depends=('opensips') + provides=("opensips-modules-presence=${pkgver}") + conflicts=('opensips-modules-presence-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + for _module in ${modules_presence[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + done +} + +# Database modules +package_opensips-module-berkeley() { + pkgdesc="A fast and flexible SIP Server - database module Berkeley (stable version)" + depends=('opensips') + provides=("opensips-modules-berkeley=${pkgver}") + conflicts=('opensips-modules-berkeley-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_berkeley" \ + install-modules +} + +package_opensips-module-flatstore() { + pkgdesc="A fast and flexible SIP Server - database module Flatstore (stable version)" + depends=('opensips') + provides=("opensips-modules-flatstore=${pkgver}") + conflicts=('opensips-modules-flatstore-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_flatstore" \ + install-modules +} + +package_opensips-module-http() { + pkgdesc="A fast and flexible SIP Server - database module HTTP (stable version)" + depends=('opensips') + provides=("opensips-modules-http=${pkgver}") + conflicts=('opensips-modules-http-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_http" \ + install-modules +} + +package_opensips-module-mysql() { + pkgdesc="A fast and flexible SIP Server - database module MySQL (stable version)" + depends=('opensips' 'mariadb') + provides=("opensips-modules-mysql=${pkgver}") + conflicts=('opensips-modules-mysql-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_mysql" \ + install-modules +} + +package_opensips-module-oracle() { + pkgdesc="A fast and flexible SIP Server - database module Oracle (stable version)" + depends=('opensips' 'oracle') + provides=("opensips-modules-oracle=${pkgver}") + conflicts=('opensips-modules-oracle-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_oracle" \ + install-modules +} + +package_opensips-module-perlvdb() { + pkgdesc="A fast and flexible SIP Server - database module Perl virtual DB (stable version)" + depends=('opensips') + provides=("opensips-modules-perlvdb=${pkgver}") + conflicts=('opensips-modules-perlvdb-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_perlvdb" \ + install-modules +} + +package_opensips-module-postgresql() { + pkgdesc="A fast and flexible SIP Server - database module PostgreSQL (stable version)" + depends=('opensips' 'postgresql') + provides=("opensips-modules-postgresql=${pkgver}") + conflicts=('opensips-modules-postgresql-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_postgresql" \ + install-modules +} + +package_opensips-module-sqlite() { + pkgdesc="A fast and flexible SIP Server - database module SQlite (stable version)" + depends=('opensips' 'sqlite') + provides=("opensips-modules-sqlite=${pkgver}") + conflicts=('opensips-modules-sqlite-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_sqlite" \ + install-modules +} + +package_opensips-module-unixodbc() { + pkgdesc="A fast and flexible SIP Server - database module UnixODBC (stable version)" + depends=('opensips' 'unixodbc') + provides=("opensips-modules-mysql=${pkgver}") + conflicts=('opensips-modules-mysql-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_unixodbc" \ + install-modules +} + +package_opensips-module-text() { + pkgdesc="A fast and flexible SIP Server - database module text (stable version)" + depends=('opensips') + provides=("opensips-modules-text=${pkgver}") + conflicts=('opensips-modules-text-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_text" \ + install-modules +} + +package_opensips-module-virtual() { + pkgdesc="A fast and flexible SIP Server - virtual database module (stable version)" + depends=('opensips') + provides=("opensips-modules-virtual=${pkgver}") + conflicts=('opensips-modules-virtual-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules="$modules_virtual" \ + install-modules +} + +package_opensips-module-cachedb() { + pkgdesc="A fast and flexible SIP Server - database modules for caching (stable version)" + depends=('opensips') + provides=("opensips-modules-cachedb=${pkgver}") + conflicts=('opensips-modules-cachedb-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + for _module in ${modules_cachedb[@]}; do + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + modules=modules/${_module} \ + install-modules + #skip_modules="cachedb_couchbase" + done +} + +# Offline documentation +package_opensips-documentation() { + pkgdesc="A fast and flexible SIP Server - documentation (stable version)" + suggests=('opensips') + provides=("opensips-documentation=${pkgver}") + conflicts=('opensips-documentation-git') + + cd "$srcdir"/${pkgbase%%-*}-${pkgver} + + msg2 "create documentation targets" + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + doxygen modules-docbook-html + # modules-docbook-pdf \ + #dbschema-docbook-html dbschema-docbook-pdf \ + #modules-readme + + msg2 "install documentation targets" + make \ + BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-doc \ + install-modules-docbook + + msg2 " ... text files" + DOC_DIR="$pkgdir/usr/share/doc/${pkgbase%%-*}" + if [ -d "$DOC_DIR/txt" ]; then + mkdir -p "$DOC_DIR/txt" + chmod 0755 "$DOC_DIR/txt" + mv --recursive $DOC_DIR/README.* "$DOC_DIR/txt" + chmod --recursive 0644 "$DOC_DIR/txt" + fi + + msg2 " ... html documents" + DOC_DIR="$pkgdir/usr/share/doc/${pkgbase%%-*}" + if [ -d "$DOC_DIR/html" ]; then + mkdir -p "$DOC_DIR/html" + chmod 0755 "$DOC_DIR/html" + mv --recursive $DOC_DIR/*.html "$DOC_DIR/html" + chmod --recursive 0644 "$DOC_DIR/html" + fi + + msg2 " ... examples" + DOC_DIR="$pkgdir/usr/share/doc/${pkgbase%%-*}" + if [ -d ./examples ]; then + mkdir -p "$DOC_DIR" + cp --recursive ./examples "$DOC_DIR" + chmod --recursive 0644 "$DOC_DIR" + fi +} diff --git a/PKGBUILD.git b/PKGBUILD.git new file mode 100644 index 0000000..1ee9dbb --- /dev/null +++ b/PKGBUILD.git @@ -0,0 +1,254 @@ +# vim:set ts=8 sw=8 et: +# Maintainer: Sergej Pupykin +# Supporter: Ralf Zerres + +pkgbase=opensips-git +_pkgname=opensips +_branch=master +pkgname=('opensips-git' 'opensips-git-modules' 'opensips-git-documentation') +pkgver=0.r15296.g38778a4d3 +pkgrel=1 +pkgdesc="An Open Source SIP Server able to act as a SIP proxy, registrar, location server, redirect server ..." +url="https://www.opensips.org" +depends=('attr' 'db' 'gcc-libs' 'libxml2' 'openssl') +makedepends=( + 'bison' + 'confuse' 'cassandra-cpp-driver' + 'doxygen' 'docbook-sgml' 'docbook-utils' 'docbook-xsl' + 'expat' + 'flex' + 'geoip' 'git' + 'hiredis' + 'json-c' + 'freeradius' + 'libjwt' 'libldap>=2.4.18' 'libmariadbclient' 'libmemcached' 'libmicrohttpd' + 'librabbitmq-c' 'libtap-git' 'libutf8proc' 'libuv' 'libxslt' + 'lksctp-tools' + 'lua>=5.1' + 'lynx' + 'mongo-c-driver' + 'net-snmp' + 'osptoolkit' + 'postgresql-libs>=8.4.1' + 'radcli' + 'thrift' 'unixodbc' 'xmlrpc-c' 'zlib' + ) +checkdepends=('expat' 'libtap-git') +backup=("etc/opensips/opensips.cfg" + "etc/opensips/regex_groups.cfg" + "etc/opensips/osipsconsolerc" + "etc/opensips/opensipsctlrc") +arch=('x86_64' 'armv7') +license=('GPL') +options=('!emptydirs' 'zipman' '!makeflags' 'docs') +source=("${pkgname}::git+https://github.com/OpenSIPS/$_pkgname.git#branch=$_branch" + Makefile.conf.template) +sha256sums=('SKIP' + '2d6114c21a9bd59bfaac755ec21568fefa4f64f356dc2d1bc8610476f7cc6ca8') +validpgpkeys=( + '1EC4BE4FF2A6C9F4DDDF30F33C5F485DBD250D66' # Ralf Zerres (Package Signing) + ) + +prepare() { + cd "$srcdir"/${pkgbase} + + # check out given branch and update to head + git checkout $_branch + echo "prepare: pull $_branch" + git pull --rebase + + if [ -h "$srcdir"/Makefile.conf.template ]; then + msg2 "preset Makefile.conf template" + test ! -f Makefile.conf.template.orig && + mv Makefile.conf.template Makefile.conf.template.orig + cp "$srcdir"/Makefile.conf.template Makefile.conf.template + fi + + # patching + if [ ! -f .makepkg-patched ]; then + msg2 "patching:" + git am --signoff ../../patches-git/0001-packaging-Arch-Linux-update-search-path-for-docbook.patch + #git am --signoff ../../patches-git/0002-packaging-Arch-Linux-update-PKGBUILD.git.patch + touch .makepkg-patched + #msg2 "no patches for branch '${_branch}' needed" + fi + + msg2 "ensure python2 usage" + for file in $(find . -name '*.py' -print); do + sed -i 's_^#!.*/usr/bin/python$_#!/usr/bin/python2_' $file + sed -i 's_^#!.*/usr/bin/env.*python$_#!/usr/bin/env python2_' $file + done + + msg2 "ensure binaries live in /bin and /usr/bin" + sed -i 's|sbin|bin|g' Makefile + sed -i 's|bin-dir = sbin/|bin-dir = bin/|' Makefile.defs +} + +pkgver() { + cd "${srcdir}/${pkgname}" + echo "0.r$(git rev-list --count $_branch).g$(git log -1 --format="%h")" +} + +build() { + cd "$srcdir"/${pkgbase} + + # create binary targets + #FASTER=1 + #make -j$(nproc) \ + make LIBDIR=lib \ + PREFIX=/usr \ + skip_modules="cachedb_couchbase db_oracle sngtc" + + # create documentation targets + make BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + doxygen \ + modules-docbook-html \ + modules-readme + # dbschema-docbook-html + # dbschema-docbook-pdf \ + # modules-docbook-pdf \ +} + +package_opensips-git() { + pkgdesc="OpenSIPS an open source SIP Server (git version)" + + depends=( + 'confuse' 'geoip' 'json-c' + 'libtap-git' 'libuv' 'libxslt' + 'lksctp-tools') + optdepends=( + 'cassandra-cpp-driver: cassandra C++ support' + 'curl: curl support' + 'confuse: confuse support' + 'lksctp-tools: sctp support' + 'lynx: text browser support' + 'hiredis: HiRedis support' + 'libldap: LDAP support' + 'libmariadbclient: Maria DB support' + 'libmaxminddb: MaxMin DB support' + 'libmemcached: Memory caching support' + 'libmicrohttpd: Inline HTTPD support' + 'librabbitmq-c: Rabbitmq C support' + 'libsasl: SASL authentication support' + 'libutf8proc: UTF8 processing support' + 'lua: LUA scripting support' + 'mariadb-libs: Maria-DB support' + 'mongo-c-driver: C-Interface for Mongo-DB support' + 'net-snmp: SNMP support' + 'osptoolkit: OSP Toolkit support' + 'pcre: Perl Regular-Expression support' + 'perl: Perl support' + 'postgresql-libs: PostgreSQL-DB support' + 'python2: Python v2 support' + 'radcli: RAD commandline support' + 'rabbitmq: Rabbit CacheMemory support' + 'thrift: Thrift support' + 'unixodbc: UNIX ODBC support') + install=opensips.install + + provides=("opensips=${pkgver}") + conflicts=('opensips') + + _components=('opensips') + + cd "$srcdir"/${pkgbase} + + # install app only, excluding console, modules and modules docs + for _cmp in ${_components[@]}; do + make BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-app + + # Conforms to the arch packaging standards (https://wiki.archlinux.org/index.php/Arch_Packaging_Standards) + mkdir -p "$pkgdir"/etc/ + mv "$pkgdir"/usr/etc/opensips/ "$pkgdir"/etc/ + sed -i 's#mpath=".*lib/opensips/modules/"#mpath="/usr/lib/opensips/modules/"#' "$pkgdir"/etc/opensips/opensips.cfg + + # fix bad paths + cd "$pkgdir"/usr/share + find -type f -exec sed -i "s#"$pkgdir"##" {} \; + + mv "$pkgdir"/usr/sbin "$pkgdir"/usr/bin + + cd "$pkgdir"/etc + find -type f -exec sed -i "s#"$pkgdir"##" {} \; + + # python2 is being used + cd "$pkgdir" + grep -lR '#!.*python' * | while read file; do sed -s 's/\(#!.*python\)/\12/g' -i "$file"; done + + # Systemd files + install -Dm0644 "${srcdir}/${pkgbase}/packaging/arch/${_pkgname}.service" "$pkgdir"/usr/lib/systemd/system/${_pkgname}.service + install -Dm0644 "${srcdir}/${pkgbase}/packaging/arch/${_pkgname}.tmpfiles.conf" "$pkgdir"/usr/lib/tmpfiles.d/${_pkgname}.conf + + done +} + +package_opensips-git-modules() { + pkgdesc="OpenSIPS modules (git version)" + depends=('opensips-git') + provides=("opensips-modules=${pkgver}") + conflicts=('opensips-modules') + + cd "$srcdir"/${pkgbase} + + make BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-modules + + msg2 "ensure binaries live in /bin and /usr/bin" + mv "$pkgdir"/usr/sbin "$pkgdir"/usr/bin +} + +package_opensips-git-documentation() { + pkgdesc="OpenSIPS modules (git version)" + suggests=('opensips-git') + provides=("opensips-documentation=${pkgver}") + conflicts=('opensips-documentation') + + cd "$srcdir"/${pkgbase} + + msg2 "install documentation targets" + make BASEDIR="$pkgdir" \ + PREFIX=/usr \ + LIBDIR=lib \ + install-doc \ + install-modules-docbook + + DOC_DIR="$pkgdir/usr/share/doc/${_pkgname}" + + msg2 "install README documentation" + if [ ! -d "$DOC_DIR/txt" ]; then + mkdir -p "$DOC_DIR/txt" + chmod 0755 "$DOC_DIR/txt" + fi + mv $DOC_DIR/README.* "$DOC_DIR/txt" + chmod --recursive 0644 "$DOC_DIR/txt" + + msg2 "install doxygen documentation" + if [ ! -d "$DOC_DIR/doxygen" ]; then + mkdir -p "$DOC_DIR/doxygen" + chmod 0755 "$DOC_DIR/doxygen" + fi + + if [ -d "$srcdir/${pkgbase}/doc/html" ]; then + cd "$srcdir/${pkgbase}/doc/html" + find . -print0 | xargs -0 -I {} cp -a {} "$DOC_DIR/doxygen/" + chmod --recursive 0644 "$DOC_DIR/doxygen" + fi + + msg2 "install example configurations" + if [ ! -d $DOC_DIR/examples ]; then + mkdir -p "$DOC_DIR/examples" + chmod 0755 "$DOC_DIR/examples" + fi + + if [ -d ./examples ]; then + mv ./examples "$DOC_DIR" + chmod --recursive 0644 "$DOC_DIR/examples" + fi +} diff --git a/TODO b/TODO new file mode 100644 index 0000000..3e866dc --- /dev/null +++ b/TODO @@ -0,0 +1,2 @@ +not compiling yet: +- cachedb_couchbase \ No newline at end of file diff --git a/usr_lib_systemd_system_opensips.service b/usr_lib_systemd_system_opensips.service new file mode 100644 index 0000000..220a5d4 --- /dev/null +++ b/usr_lib_systemd_system_opensips.service @@ -0,0 +1,11 @@ +[Unit] +Description=OpenSIPS daemon +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=forking +PIDFile=/run/opensips.pid +ExecStart=/usr/bin/opensips -f /etc/opensips/opensips.cfg -w /var/tmp -P /run/opensips.pid + +[Install] +WantedBy=multi-user.target diff --git a/usr_lib_tmpfiles.d_opensips.conf b/usr_lib_tmpfiles.d_opensips.conf new file mode 100644 index 0000000..fc2d4a5 --- /dev/null +++ b/usr_lib_tmpfiles.d_opensips.conf @@ -0,0 +1 @@ +d /run/opensips 0755 opensips opensips -