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
openSUSE Build Service is sponsored by