File opensips.spec of Package opensips
#
# spec file for package opensisps
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define EXCLUDED_MODULES db_oracle osp httpd cachedb_cassandra event_rabbitmq cachedb_redis cachedb_couchbase cachedb_mongodb sngtc
Name: opensips
Summary: A very fast and flexible SIP Proxy
Version: 1.11.6
%define pname %{name}-%{version}-tls
Release: 0
License: GPL
Group: Productivity/Telephony/SIP/Servers
URL: http://opensips.org/
Source0: %{name}-%{version}.tar.gz
Source1: %{name}.init.suse
Patch0: opensips-1.6.3-sst_handlers.patch
Patch1: opensips-1.11-memory-increase.patch
Patch2: opensips-1.11.5-mysql-collate-latin1.patch
#Patch3: opensips-1.9.0-curses.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: tcpd-devel
BuildRequires: libexpat-devel
BuildRequires: bison
BuildRequires: curl-devel
BuildRequires: db-devel
BuildRequires: expat
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: freeradius-client-devel
BuildRequires: libGeoIP-devel
BuildRequires: libconfuse-devel
BuildRequires: libjson-devel
BuildRequires: libmemcached-devel
BuildRequires: libxml2-devel
BuildRequires: libxmlrpc-c-devel
BuildRequires: libxslt-tools
BuildRequires: lynx
BuildRequires: mysql-devel
BuildRequires: net-snmp-devel
BuildRequires: openldap2-devel
BuildRequires: openssl-devel
#BuildRequires: osp-toolkit
BuildRequires: pcre-devel
BuildRequires: perl
BuildRequires: pkg-config
BuildRequires: postgresql-devel
BuildRequires: subversion
BuildRequires: unixODBC-devel
BuildRequires: zlib-devel
BuildRequires: python python-devel
BuildRequires: gcc-c++
BuildRequires: libmemcache-devel
BuildRequires: ncurses-devel libncurses5 libncurses6
BuildRequires: termcap
%if 0%{?suse_version} < 1220
BuildRequires: lua-devel
%else
BuildRequires: lua51-devel
%endif
%description
OpenSIPS is a very fast and flexible SIP (RFC3621) proxy server.
Written entirely in C, OpenSIPS can handle thousands of calls
per second even on low-budget hardware. A C Shell like scripting language
provides full control over the server's behaviour. It's modular
architecture allows only required functionality to be loaded.
The following modules are available:
* digest authentication
* CPL scripts
* instant messaging
* MySQL, PostgreSQL and unixODBC support
* presence agent
* radius authentication
* record routing
* SMS gateway
* jabber gateway
* transaction and dialog module
* OSP module
* statistics support
* registrar and user location
Authors:
--------
Anca Vamanu <anca@voice-system.ro>
Dan Pascu <dan@ag-projects.com>
The following modules are disabled since the pre-req's are not
available from the network:telephony inherited repositories:
db_oracle osp httpd cachedb_cassandra event_rabbitmq
cachedb_redis cachedb_couchbase cachedb_mondodb sngtc
%package bdb
Summary: Berkeley DB connectivity for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: db
Requires: %{name} = %{version}
%description bdb
The %{name}-bdb package contains Berkeley database connectivity that you
need to use digest authentication module or persistent user location
entries.
%package cpl
Summary: CPL interpreter engine for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: opensips = %{version}
%description cpl
The opensips-cpl package contains a SIP CPL interpreter engine.
%package dbtext
Summary: DBText connectivity for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: %{name} = %{version}
%description dbtext
The %{name}-dbtext package contains dbtext database connectivity that you
need to use digest authentication module or persistent user location
entries.
%package jabber
Summary: SIP jabber message translation support for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: expat
Requires: opensips = %{version}
%description jabber
The %{name}-jabber package contains a sip to jabber message translator.
%package lua
Summary: LUA interface for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: %{name} = %{version}
%description lua
The %{name}-lua package contains lua connectivity module for OpenSIPS.
%package mysql
Summary: MySQL connectivity for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: mysql
Requires: opensips = %{version}
%description mysql
The %{name}-mysql package contains MySQL database connectivity that you
need to use digest authentication module or persistent user location
entries.
%package odbc
Summary: UnixODBC connectivity for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: unixODBC
Requires: %{name} = %{version}
%description odbc
The %{name}-pgsql package contains ODBC database connectivity that you
need to use digest authentication module or persistent user location
entries.
%package cachedb
Summary: CacheDB connectivity for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: %{name} = %{version}
%description cachedb
The %{name}-cachedb package will expose the same front db api, however
it will run on top of a NoSQL back-end, emulating the SQL calls to the
back-end specific queries. Thus, any OpenSIPS module that would
regularily need a regular SQL-based database, will now be able to run
over a NoSQL back-end, allowing for a much easier distribution and
integration of the currently existing OpenSIPS modules in a distributed
environment.
%package perl
Summary: Perl modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: perl
Requires: opensips = %{version}
%description perl
The %{name}-perl package contains perl modules for OpenSIPS.
%package pgsql
Summary: PostgreSQL connectivity for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: postgresql
Requires: %{name} = %{version}
%description pgsql
The %{name}-pgsql package contains PostgreSQL database connectivity that you
need to use digest authentication module or persistent user location
entries.
%package python
Summary: Python modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: python
Requires: opensips = %{version}
%description python
The %{name}-python package contains python modules for OpenSIPS.
%package radius
Summary: RADIUS authentication, group and uri check modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: freeradius-client
Requires: %{name} = %{version}
%description radius
The %{name}-radius package contains modules for radius authentication, group
membership and uri checking.
%package rest
Summary: Rest modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: opensips = %{version}
%description rest
The %{name}-perl package provides a means of interacting with an HTTP server
by doing RESTful queries, such as GET and POST.
%package rtpproxy
Summary: Rtpproxy modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: rtpproxy
Requires: opensips = %{version}
%description rtpproxy
The %{name}-rtpproxy package contains rtpproxy modules for OpenSIPS.
%package http
Summary: pi_http modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: opensips = %{version}
%description http
The %{name}-http package contains pi_http modules for OpenSIPS.
%package event
Summary: event_route modules for OpenSIPS
Group: Productivity/Telephony/SIP/Servers
Requires: opensips = %{version}
%description event
The %{name}-event package contains event_route modules for OpenSIPS.
%prep
%setup -q -n %{pname}
%patch0 -p1
%patch1 -p0
%patch2 -p1
#%patch3 -p1
%build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -I/usr/include/pgsql"
export TLS=1
export FREERADIUS=1
make all exclude_modules="%EXCLUDED_MODULES" \
prefix=%{_prefix} \
basedir=/ \
cfg-prefix=/ \
cfg-dir=%{_sysconfdir}/%{name}/ \
doc-prefix=/ \
doc-dir=%{_docdir}/%{name}/ \
modules-dir=%_lib/%{name}/modules/
# cfg-target=/%{_sysconfdir}/%{name}
%install
export TLS=1
export FREERADIUS=1
make install exclude_modules="%EXCLUDED_MODULES" \
prefix=%{_prefix} \
basedir=%{buildroot} \
cfg-prefix=%{buildroot} \
cfg-dir=%{_sysconfdir}/%{name}/ \
doc-prefix=%{buildroot} \
doc-dir=%{_docdir}/%{name}/ \
modules-dir=%_lib/%{name}/modules/
install -m755 -D %{S:1} %{buildroot}/%{_initrddir}/%{name}
%if 0%{?suse_version}
ln -s /etc/init.d/%{name} %{buildroot}/usr/sbin/rc%{name}
%endif
#rpmlint
%if 0%{?suse_version} >= 1100
%fdupes -s %{buildroot}
%endif
%preun
%stop_on_removal %{name}
%postun
%restart_on_update %{name}
%{insserv_cleanup}
%clean
%{__rm} -rf %{buildroot}
%files
%defattr(-,root,root)
%dir %{_docdir}/%{name}
%doc %{_docdir}/%{name}/*
%exclude %doc %{_docdir}/%{name}/README.*_radius
%exclude %doc %{_docdir}/%{name}/README.cpl-c
%exclude %doc %{_docdir}/%{name}/README.db_berkeley
%exclude %doc %{_docdir}/%{name}/README.db_mysql
%exclude %doc %{_docdir}/%{name}/README.db_postgres
%exclude %doc %{_docdir}/%{name}/README.db_text
%exclude %doc %{_docdir}/%{name}/README.db_unixodbc
%exclude %doc %{_docdir}/%{name}/README.jabber
%exclude %doc %{_docdir}/%{name}/README.perl*
%exclude %doc %{_docdir}/%{name}/README.lua*
%exclude %doc %{_docdir}/%{name}/README.rtpproxy*
%dir /usr/share/%{name}
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/opensips.cfg
%config(noreplace) %{_sysconfdir}/%{name}/opensipsctlrc
%exclude %{_sysconfdir}/%{name}/dictionary.opensips
%dir %{_sysconfdir}/%{name}/tls
%config(noreplace) %{_sysconfdir}/%{name}/tls/*
%{_initrddir}/%{name}
%{_sbindir}/rc%{name}
%{_sbindir}/opensips
%{_sbindir}/opensipsctl
%{_sbindir}/opensipsdbctl
%{_sbindir}/opensipsunix
%{_sbindir}/osipsconfig
/usr/share/snmp/mibs/*
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/modules
%dir %{_libdir}/%{name}/opensipsctl
%{_mandir}/man5/*
%{_mandir}/man8/*
%config(noreplace) %{_sysconfdir}/%{name}/osipsconsolerc
%{_sbindir}/osipsconsole
%{_libdir}/%{name}/modules/acc.so
%{_libdir}/%{name}/modules/alias_db.so
%{_libdir}/%{name}/modules/auth.so
%{_libdir}/%{name}/modules/auth_aaa.so
%{_libdir}/%{name}/modules/auth_db.so
%{_libdir}/%{name}/modules/auth_diameter.so
%{_libdir}/%{name}/modules/avpops.so
%{_libdir}/%{name}/modules/b2b_entities.so
%{_libdir}/%{name}/modules/b2b_logic.so
%{_libdir}/%{name}/modules/b2b_sca.so
%{_libdir}/%{name}/modules/benchmark.so
%{_libdir}/%{name}/modules/call_center.so
%{_libdir}/%{name}/modules/call_control.so
%{_libdir}/%{name}/modules/carrierroute.so
%{_libdir}/%{name}/modules/cachedb_local.so
%{_libdir}/%{name}/modules/cachedb_memcached.so
%{_libdir}/%{name}/modules/cachedb_sql.so
%{_libdir}/%{name}/modules/cfgutils.so
%{_libdir}/%{name}/modules/closeddial.so
%{_libdir}/%{name}/modules/db_flatstore.so
%{_libdir}/%{name}/modules/db_http.so
%{_libdir}/%{name}/modules/db_virtual.so
%{_libdir}/%{name}/modules/dialog.so
%{_libdir}/%{name}/modules/dialplan.so
%{_libdir}/%{name}/modules/dispatcher.so
%{_libdir}/%{name}/modules/diversion.so
%{_libdir}/%{name}/modules/dns_cache.so
%{_libdir}/%{name}/modules/domain.so
%{_libdir}/%{name}/modules/domainpolicy.so
%{_libdir}/%{name}/modules/drouting.so
%{_libdir}/%{name}/modules/enum.so
%{_libdir}/%{name}/modules/event_datagram.so
%{_libdir}/%{name}/modules/exec.so
%{_libdir}/%{name}/modules/gflags.so
%{_libdir}/%{name}/modules/group.so
%{_libdir}/%{name}/modules/h350.so
%{_libdir}/%{name}/modules/identity.so
%{_libdir}/%{name}/modules/imc.so
%{_libdir}/%{name}/modules/json.so
#%{_libdir}/%{name}/modules/lcr.so
%{_libdir}/%{name}/modules/ldap.so
%{_libdir}/%{name}/modules/load_balancer.so
%{_libdir}/%{name}/modules/mangler.so
%{_libdir}/%{name}/modules/mathops.so
%{_libdir}/%{name}/modules/maxfwd.so
%{_libdir}/%{name}/modules/mediaproxy.so
%{_libdir}/%{name}/modules/mi_datagram.so
%{_libdir}/%{name}/modules/mi_fifo.so
%{_libdir}/%{name}/modules/mi_http.so
%{_libdir}/%{name}/modules/mi_json.so
%{_libdir}/%{name}/modules/mi_xmlrpc.so
%{_libdir}/%{name}/modules/mi_xmlrpc_ng.so
%{_libdir}/%{name}/modules/mmgeoip.so
%{_libdir}/%{name}/modules/msilo.so
%{_libdir}/%{name}/modules/nat_traversal.so
%{_libdir}/%{name}/modules/nathelper.so
%{_libdir}/%{name}/modules/options.so
%{_libdir}/%{name}/modules/path.so
%{_libdir}/%{name}/modules/presence_callinfo.so
%{_libdir}/%{name}/modules/pdt.so
%{_libdir}/%{name}/modules/peering.so
%{_libdir}/%{name}/modules/permissions.so
%{_libdir}/%{name}/modules/pike.so
%{_libdir}/%{name}/modules/presence.so
%{_libdir}/%{name}/modules/presence_dialoginfo.so
%{_libdir}/%{name}/modules/presence_mwi.so
%{_libdir}/%{name}/modules/presence_xcapdiff.so
%{_libdir}/%{name}/modules/presence_xml.so
%{_libdir}/%{name}/modules/pua.so
%{_libdir}/%{name}/modules/pua_bla.so
%{_libdir}/%{name}/modules/pua_dialoginfo.so
%{_libdir}/%{name}/modules/pua_mi.so
%{_libdir}/%{name}/modules/pua_usrloc.so
%{_libdir}/%{name}/modules/pua_xmpp.so
%exclude %{_libdir}/%{name}/modules/python.so
%{_libdir}/%{name}/modules/qos.so
%{_libdir}/%{name}/modules/ratelimit.so
%{_libdir}/%{name}/modules/regex.so
%{_libdir}/%{name}/modules/registrar.so
%{_libdir}/%{name}/modules/rls.so
%{_libdir}/%{name}/modules/rr.so
%exclude %{_libdir}/%{name}/modules/rtpproxy.so
%{_libdir}/%{name}/modules/script_helper.so
%{_libdir}/%{name}/modules/seas.so
%{_libdir}/%{name}/modules/signaling.so
%{_libdir}/%{name}/modules/sipcapture.so
%{_libdir}/%{name}/modules/sipmsgops.so
%{_libdir}/%{name}/modules/siptrace.so
%{_libdir}/%{name}/modules/sl.so
%{_libdir}/%{name}/modules/sms.so
%{_libdir}/%{name}/modules/snmpstats.so
%{_libdir}/%{name}/modules/speeddial.so
%{_libdir}/%{name}/modules/sst.so
%{_libdir}/%{name}/modules/statistics.so
%{_libdir}/%{name}/modules/stun.so
%{_libdir}/%{name}/modules/textops.so
%{_libdir}/%{name}/modules/tlsops.so
%{_libdir}/%{name}/modules/tm.so
%{_libdir}/%{name}/modules/uac.so
%{_libdir}/%{name}/modules/uac_auth.so
%{_libdir}/%{name}/modules/uac_redirect.so
%{_libdir}/%{name}/modules/uac_registrant.so
%{_libdir}/%{name}/modules/uri.so
#%{_libdir}/%{name}/modules/uri_db.so
%{_libdir}/%{name}/modules/userblacklist.so
%{_libdir}/%{name}/modules/usrloc.so
%{_libdir}/%{name}/modules/xcap_client.so
%{_libdir}/%{name}/modules/xcap.so
#%{_libdir}/%{name}/modules/xlog.so
%{_libdir}/%{name}/modules/xmpp.so
%dir %{_libdir}/%{name}/opensipsctl/dbtextdb
%{_libdir}/%{name}/opensipsctl/dbtextdb/dbtextdb.py
%{_libdir}/%{name}/opensipsctl/opensipsctl.base
%{_libdir}/%{name}/opensipsctl/opensipsctl.ctlbase
%{_libdir}/%{name}/opensipsctl/opensipsctl.db_berkeley
%{_libdir}/%{name}/opensipsctl/opensipsctl.dbtext
%{_libdir}/%{name}/opensipsctl/opensipsctl.fifo
%{_libdir}/%{name}/opensipsctl/opensipsctl.sqlbase
%{_libdir}/%{name}/opensipsctl/opensipsctl.unixsock
%{_libdir}/%{name}/opensipsctl/opensipsctl.mysql
%{_libdir}/%{name}/opensipsctl/opensipsctl.pgsql
%{_libdir}/%{name}/opensipsctl/opensipsdbctl.base
%{_libdir}/%{name}/opensipsctl/opensipsdbctl.mysql
%{_libdir}/%{name}/opensipsctl/opensipsdbctl.pgsql
%{_libdir}/%{name}/opensipsctl/opensipsdbctl.dbtext
%exclude %{_libdir}/%{name}/opensipsctl/opensipsctl.pgsql
%exclude %{_libdir}/%{name}/opensipsctl/opensipsdbctl.dbtext
%exclude %{_libdir}/%{name}/opensipsctl/opensipsctl.mysql
%dir /usr/share/opensips/menuconfig_templates
/usr/share/opensips/menuconfig_templates/opensips_loadbalancer.m4
/usr/share/opensips/menuconfig_templates/opensips_loadbalancer_def.m4
/usr/share/opensips/menuconfig_templates/opensips_residential.m4
/usr/share/opensips/menuconfig_templates/opensips_residential_def.m4
/usr/share/opensips/menuconfig_templates/opensips_trunking.m4
/usr/share/opensips/menuconfig_templates/opensips_trunking_def.m4
%exclude %{_sbindir}/bdb_recover
%exclude %{_libdir}/%{name}/modules/aaa_radius.so
%exclude %{_libdir}/%{name}/modules/cpl-c.so
%exclude %{_libdir}/%{name}/modules/db_berkeley.so
%exclude %{_libdir}/%{name}/modules/db_mysql.so
%exclude %{_libdir}/%{name}/modules/db_postgres.so
%exclude %{_libdir}/%{name}/modules/db_text.so
%exclude %{_libdir}/%{name}/modules/db_unixodbc.so
%exclude %{_libdir}/%{name}/modules/jabber.so
%exclude %{_libdir}/%{name}/modules/perl.so
%exclude %{_libdir}/%{name}/modules/lua.so
%exclude %{_libdir}/%{name}/opensipsctl/opensipsdbctl.db_berkeley
%exclude /usr/share/%{name}/mysql/
%exclude /usr/share/%{name}/dbtext/
%exclude /usr/share/%{name}/db_berkeley/
%exclude %{_libdir}/%{name}/perl/
%exclude /usr/share/%{name}/postgres
%files bdb
%defattr(-,root,root)
%{_sbindir}/bdb_recover
%{_libdir}/%{name}/modules/db_berkeley.so
%{_libdir}/%{name}/opensipsctl/opensipsdbctl.db_berkeley
%doc %{_docdir}/%{name}/README.db_berkeley
%dir /usr/share/%{name}/db_berkeley
/usr/share/%{name}/db_berkeley/*
%files cpl
%defattr(-,root,root)
%{_libdir}/%{name}/modules/cpl-c.so
%doc %{_docdir}/%{name}/README.cpl-c
%files dbtext
%defattr(-,root,root)
%{_libdir}/%{name}/modules/db_text.so
%{_libdir}/%{name}/opensipsctl/opensipsdbctl.dbtext
%doc %{_docdir}/%{name}/README.db_text
%dir /usr/share/%{name}/dbtext
/usr/share/%{name}/dbtext/*
%files jabber
%defattr(-,root,root)
%{_libdir}/%{name}/modules/jabber.so
%doc %{_docdir}/%{name}/README.jabber
%files lua
%defattr(-,root,root)
%{_libdir}/%{name}/modules/lua.so
%doc %{_docdir}/%{name}/README.lua
%files mysql
%defattr(-,root,root)
%{_libdir}/%{name}/modules/db_mysql.so
%{_libdir}/%{name}/opensipsctl/opensipsctl.mysql
%doc %{_docdir}/%{name}/README.db_mysql
%dir /usr/share/%{name}/mysql
/usr/share/%{name}/mysql/*
%files python
%defattr(-,root,root)
%{_libdir}/%{name}/modules/python.so
#%doc %{_docdir}/%{name}/README.python
%files rtpproxy
%defattr(-,root,root)
%{_libdir}/%{name}/modules/rtpproxy.so
%doc %{_docdir}/%{name}/README.rtpproxy
%files cachedb
%defattr(-,root,root)
%{_libdir}/%{name}/modules/db_cachedb.so
%files odbc
%defattr(-,root,root)
%{_libdir}/%{name}/modules/db_unixodbc.so
%doc %{_docdir}/%{name}/README.db_unixodbc
%files perl
%defattr(-,root,root)
%{_libdir}/%{name}/modules/perl.so
%{_libdir}/%{name}/modules/db_perlvdb.so
%dir %{_libdir}/%{name}/perl
%{_libdir}/%{name}/perl/*
%doc %{_docdir}/%{name}/README.perl
%files pgsql
%defattr(-,root,root)
%{_libdir}/%{name}/modules/db_postgres.so
%{_libdir}/%{name}/opensipsctl/opensipsctl.pgsql
%doc %{_docdir}/%{name}/README.db_postgres
%dir /usr/share/%{name}/postgres
/usr/share/%{name}/postgres/*
%files radius
%defattr(-,root,root)
%{_libdir}/%{name}/modules/*_radius.so
%doc %{_docdir}/%{name}/README.*_radius
%config %{_sysconfdir}/%{name}/dictionary.opensips
%files http
%defattr(-,root,root)
%{_libdir}/%{name}/modules/pi_http.so
%dir /usr/share/%{name}/pi_http
/usr/share/%{name}/pi_http/*
%files event
%defattr(-,root,root)
%{_libdir}/%{name}/modules/event_route.so
%{_libdir}/%{name}/modules/event_xmlrpc.so
%files rest
%defattr(-,root,root)
%{_libdir}/%{name}/modules/rest_client.so
%changelog