File asterisk.spec of Package asterisk
%define realname asterisk
%define realver 18.9.0
%define srcext tar.gz
%bcond_without systemd
%if ! 0%{?_fillupdir:1}
%global _fillupdir /var/adm/fillup-templates
%endif
# Common info
Name: %{realname}
Version: %{realver}
Release: wiz%{?extraver:0.}1%{?dist}
License: GPL-2.0
Group: Productivity/Telephony/Servers
URL: http://www.asterisk.org/
Summary: The Asterisk(R) Open Source PBX
# Install-time parameters
Provides: %{name}-opus = %{version}
Provides: %{name}-sqlite = %{version}
Obsoletes: %{name}-opus < %{version}
Obsoletes: %{name}-sqlite < %{version}
Requires: logrotate
%if 0%{?suse_version}
Recommends: asterisk-core-sounds asterisk-moh
Requires: pwdutils
%else
Requires: shadow-utils
%endif
# SD-notify support
%if %{with systemd}
BuildRequires: systemd-devel
Requires: systemd
%endif
# Build-time parameters
BuildRequires: pkg-config gcc-c++ wget
BuildRequires: openssl-devel
BuildRequires: pkgconfig(openssl)
BuildRequires: curl-devel
BuildRequires: pkgconfig(libedit)
BuildRequires: libuuid-devel
BuildRequires: pkgconfig(jansson) >= 2.11
BuildRequires: libxml2-devel
BuildRequires: uriparser-devel
BuildRequires: libcap-devel
BuildRequires: %{?suse_version:lib}gsm-devel
BuildRequires: libical-devel
BuildRequires: iksemel-devel
BuildRequires: openldap2-devel
BuildRequires: mysql-devel
BuildRequires: net-snmp-devel
BuildRequires: unbound-devel
BuildRequires: unixODBC-devel
BuildRequires: libogg-devel
BuildRequires: postgresql-devel
BuildRequires: pkgconfig(libpjproject)
BuildRequires: popt-devel
BuildRequires: spandsp-devel
BuildRequires: libss7-devel
BuildRequires: libopus-devel
BuildRequires: lua-devel
BuildRequires: freeradius-client-devel
BuildRequires: corosync-devel
BuildRequires: speex-devel
BuildRequires: sqlite%{?suse_version:3}-devel
BuildRequires: libsrtp2-devel
BuildRequires: freetds-devel
BuildRequires: libvorbis-devel
BuildRequires: zlib-devel
BuildRequires: ffmpeg-devel
BuildRequires: pkgconfig(libsystemd)
%if 0%{?suse_version}
BuildRequires: postgresql-server-devel
BuildRequires: fdupes
%endif
Source0: http://downloads.asterisk.org/pub/telephony/asterisk/releases/%{realname}-%{realver}%{?extraver}.%{srcext}
Source91: asterisk.sysconfig
Source92: asterisk.init
Source99: asterisk.logrotate
# Fix problem in hangup vith avaya
Patch1: asterisk-ooh323-hangup.patch
%description
Asterisk is a full-featured telephony server which provides Private Branch
eXchange (PBX), Interactive Voice Response (IVR), Automated Call
Distribution(ACD), Voice over IP (VoIP) gatewaying, Conferencing, and a plethora
of other telephony applications to a broad range of telephony devices including
packet voice (SIP, IAX2, MGCP, Skinny, H.323, Unistim) devices (both endpoints
and proxies), as well as traditional TDM hardware including T1, E1, ISDN PRI,
GR-303, RBS, Loopstart, Groundstart, ISDN BRI and many more.
%package devel
Group: Development/Languages/C and C++
Summary: Development files for %{name}
Requires: %{name} = %{version}
%description devel
Development files for %{name}
%package corosync
Group: Productivity/Telephony/Servers
Summary: Corosync cluster support for Asterisk
Requires: %{name} = %{version}
Obsoletes: asterisk-ais < 11
Provides: asterisk-ais = %{version}
%description corosync
Corosync cluster support for Asterisk
%package curl
Group: Productivity/Telephony/Servers
Summary: cURL support for Asterisk
Requires: %{name} = %{version}
%description curl
cURL support for Asterisk
%package fax
Group: Productivity/Telephony/Servers
Summary: Faxes support for Asterisk
Requires: %{name} = %{version}
%description fax
Faxes support for Asterisk
%package gsm
Group: Productivity/Telephony/Servers
Summary: GSM codec for Asterisk
Requires: %{name} = %{version}
%description gsm
GSM codec for Asterisk
%package ldap
Group: Productivity/Telephony/Servers
Summary: LDAP support for Asterisk
Requires: %{name} = %{version}
%description ldap
LDAP support for Asterisk
%package lua
Group: Productivity/Telephony/Servers
Summary: Lua scripting for Asterisk
Requires: %{name} = %{version}
%description lua
Lua scripting for Asterisk
%package mysql
Group: Productivity/Telephony/Servers
Summary: MySQL support for Asterisk
Requires: %{name} = %{version}
%description mysql
MySQL database support for Asterisk
%package odbc
Group: Productivity/Telephony/Servers
Summary: unixODBC support for Asterisk
Requires: %{name} = %{version}
%description odbc
unixODBC support for Asterisk
%package pgsql
Group: Productivity/Telephony/Servers
Summary: PostgreSQL support for Asterisk
Requires: %{name} = %{version}
%description pgsql
PostgreSQL database support for Asterisk
%package radius
Group: Productivity/Telephony/Servers
Summary: Radius (CDR and CEL) support for Asterisk
Requires: %{name} = %{version}
%description radius
Radius (CDR and CEL) support for Asterisk
%package snmp
Group: Productivity/Telephony/Servers
Summary: SNMP support for Asterisk
Requires: %{name} = %{version}
%description snmp
Asterisk monitoring via SNMP
%package speex
Group: Productivity/Telephony/Servers
Summary: Speex codec for Asterisk
Requires: %{name} = %{version}
%description speex
Speex codec for Asterisk
%package srtp
Group: Productivity/Telephony/Servers
Summary: Secure RTP support for Asterisk
Requires: %{name} = %{version}
%description srtp
Secure Real-Time Protocol support for Asterisk
%package tds
Group: Productivity/Telephony/Servers
Summary: Sybase and MSSQL support for Asterisk
Requires: %{name} = %{version}
%description tds
Sybase and MSSQL databases support for Asterisk
%package vorbis
Group: Productivity/Telephony/Servers
Summary: Ogg Vorbis format support for Asterisk
Requires: %{name} = %{version}
%description vorbis
Ogg Vorbis format support for Asterisk
%package xmpp
Group: Productivity/Telephony/Servers
Summary: XMPP/Jabber support for Asterisk
Requires: %{name} = %{version}
Obsoletes: asterisk-gtalk < 11 asterisk-jabber < 11 asterisk-jingle < 11
Provides: asterisk-motif = %{version} asterisk-gtalk = %{version}
Provides: asterisk-jabber = %{version} asterisk-jingle = %{version}
%description xmpp
XMPP/Jabber support for Asterisk with voice (jingle)
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{realver}%{?extraver}
# ooh323-hangup
%patch1 -p1
# DB directory
%{__sed} -ri '/^astdbdir/ s|^(.+)$|\1/db|' configs/samples/asterisk.conf.sample
%{__sed} -ri '/^ASTDBDIR/ s|^(.+)$|\1/db|' makeopts.in
# MIBs
wget -q -O- 'https://wiki.asterisk.org/wiki/display/AST/Asterisk+MIB+Definitions' | %{__sed} -r '1,/div class="preformattedContent/ d; /^<\/div><\/div>$/,$ d; s/<.?pre>//' > ASTERISK-MIB.txt
wget -q -O- 'https://wiki.asterisk.org/wiki/display/AST/Digium+MIB+Definitions' | %{__sed} -r '1,/div class="preformattedContent/ d; /^<\/div><\/div>$/,$ d; s/<.?pre>//' > DIGIUM-MIB.txt
# Fix for new FFMpeg versions
%{__sed} -ri \
-e 's|ffmpeg/avcodec\.h|libavcodec/avcodec.h|' \
-e 's|ffmpeg/swscale\.h|libswscale/swscale.h|' \
\
channels/console_video.h \
configure
%build
_CFLAGS='%{optflags} %{?gcc_lto}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro %{?gcc_lto} -lswscale'
%ifarch %ix86
_CFLAGS+=' -march=i686'
%endif
%configure \
--without-jansson-bundled \
--without-pjproject-bundled \
--disable-asteriskssl \
--with-cap \
--with-cpg \
--with-crypto \
--with-avcodec \
--with-gsm \
--with-iconv \
--with-iksemel \
--with-inotify \
--with-ldap \
--with-libcurl \
--with-libxml2 \
--with-lua \
--with-mysqlclient \
--with-netsnmp \
--with-ogg \
--with-postgres \
--with-popt \
--with-radius \
--with-spandsp \
--with-speex \
--with-speexdsp \
--with-sqlite3 \
--with-srtp \
--with-ssl \
--with-tds \
--with-unixodbc \
--with-vorbis \
CFLAGS="$_CFLAGS" \
CXXFLAGS="$_CFLAGS" \
LDFLAGS="$_LDFLAGS"
%{__rm} -f codecs/codecs.xml
%{__make} menuselect.makeopts
# FIXME: some issue building res_snmp with net-snmp 5.8-rc4
menuselect/menuselect \
--disable chan_mobile \
--enable chan_ooh323 \
--enable format_mp3 \
--enable res_config_mysql \
\
--enable app_saycounted \
\
--disable chan_alsa \
--disable chan_audiosocket \
--disable chan_dahdi \
--disable chan_mgcp \
--disable chan_misdn \
--disable chan_oss \
--disable chan_phone \
\
--disable codec_dahdi \
\
--enable res_corosync \
\
--enable aelparse \
\
--disable BUILD_NATIVE \
--enable G711_NEW_ALGORITHM
%{__make} NOISY_BUILD=1 %{?_smp_mflags}
%install
%{__make} install install-headers DESTDIR=%{buildroot}
%{__install} -d -m755 %{buildroot}%{_initrddir}/
%{__install} -d -m755 %{buildroot}%{_sysconfdir}/sysconfig/
%{__install} -d -m755 %{buildroot}/var/lib/asterisk/db
%{__make} config DESTDIR=%{buildroot}
cd configs/samples
for conf in *; do
%{__install} -m644 ${conf} %{buildroot}%{_sysconfdir}/asterisk/${conf%.sample}
done
cd -
%{__rm} -f %{buildroot}%{_initrddir}/asterisk
%{__rm} -f %{buildroot}%{_sysconfdir}/sysconfig/asterisk
%if %{with systemd}
%{__install} -d -m0755 %{buildroot}%{_unitdir}
%{__install} -m0644 contrib/systemd/*.{service,socket} %{buildroot}%{_unitdir}/
%else
%{__install} -D -m755 %{S:92} %{buildroot}%{_initrddir}/asterisk
%endif
%{__install} -D -m644 %{S:99} %{buildroot}%{_sysconfdir}/logrotate.d/asterisk
%if "%{expand:%_vendor}" == "suse"
%{__install} -D -m644 %{S:91} %{buildroot}%{_fillupdir}/sysconfig.asterisk
%if %{without systemd}
%{__ln_s} -f %{_initrddir}/asterisk %{buildroot}%{_sbindir}/rcasterisk
%endif
%fdupes -s %{buildroot}
%else
%{__install} -D -m644 %{S:91} %{buildroot}%{_sysconfdir}/sysconfig/asterisk
%endif
%clean
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%files
%defattr(-,root,root)
%doc BUGS CHANGES COPYING CREDITS ChangeLog LICENSE
%doc *.txt *.html doc/*.txt contrib/editors
%if 0%{?suse_version}
%{_fillupdir}/sysconfig.asterisk
%else
%config(noreplace) %{_sysconfdir}/sysconfig/asterisk
%endif
%if %{with systemd}
%{_unitdir}/*
%else
%{_initrddir}/asterisk
%endif
%dir %{_sysconfdir}/asterisk
%config(noreplace) %{_sysconfdir}/asterisk/*
%config %{_sysconfdir}/logrotate.d/asterisk
%{_sbindir}/*
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/modules/
%doc %{_mandir}/man8/*
%dir %attr(0755,asterisk,asterisk) /var/lib/asterisk/db
%dir /var/lib/asterisk
/var/lib/asterisk/*
%exclude /var/lib/%{name}/moh/*
%exclude /var/lib/%{name}/sounds/*
%attr(0755,asterisk,asterisk) %dir /var/log/%{name}/cdr-csv
%attr(0755,asterisk,asterisk) %dir /var/log/%{name}/cdr-custom
%attr(0755,asterisk,asterisk) %dir /var/log/%{name}/cel-custom
%attr(0755,asterisk,asterisk) %dir /var/log/%{name}
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}/dictate
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}/meetme
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}/monitor
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}/system
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}/tmp
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}/voicemail
%attr(0755,asterisk,asterisk) %dir /var/spool/%{name}
%exclude %{_sysconfdir}/asterisk/alsa.conf
%exclude %{_sysconfdir}/asterisk/*_mysql.conf
%exclude %{_sysconfdir}/asterisk/*_odbc.conf
%exclude %{_sysconfdir}/asterisk/*_pgsql.conf
%exclude %{_sysconfdir}/asterisk/*_tds.conf
%exclude %{_sysconfdir}/asterisk/*_dahdi.conf
%exclude %{_sysconfdir}/asterisk/*_mobile.conf
%exclude %{_sysconfdir}/asterisk/extensions.lua
%exclude %{_sysconfdir}/asterisk/motif.conf
%exclude %{_sysconfdir}/asterisk/*_curl.conf
%exclude %{_sysconfdir}/asterisk/*_fax.conf
%exclude %{_sysconfdir}/asterisk/*_ldap.conf
%exclude %{_sysconfdir}/asterisk/*_snmp.conf
%exclude %{_sysconfdir}/asterisk/res_corosync.conf
%exclude %{_sysconfdir}/asterisk/xmpp.conf
%exclude %{_libdir}/%{name}/modules/res_corosync.so
%exclude %{_libdir}/%{name}/modules/*_mysql.so
%exclude %{_libdir}/%{name}/modules/*_odbc.so
%exclude %{_libdir}/%{name}/modules/res_odbc_transaction.so
%exclude %{_libdir}/%{name}/modules/*_pgsql.so
%exclude %{_libdir}/%{name}/modules/*_tds.so
%exclude %{_libdir}/%{name}/modules/*_lua.so
%exclude %{_libdir}/%{name}/modules/chan_motif.so
%exclude %{_libdir}/%{name}/modules/res_xmpp.so
%exclude %{_libdir}/%{name}/modules/*_curl.so
%exclude %{_libdir}/%{name}/modules/res_fax*.so
%exclude %{_libdir}/%{name}/modules/*_ldap.so
%exclude %{_libdir}/%{name}/modules/*_gsm.so
%exclude %{_libdir}/%{name}/modules/*_speex.so
%exclude %{_libdir}/%{name}/modules/*_vorbis.so
%exclude %{_libdir}/%{name}/modules/*_radius.so
%exclude %{_libdir}/%{name}/modules/res_srtp.so
# Development stuff
%files devel
%defattr(-,root,root)
%dir %{_includedir}/%{name}/doxygen
%dir %{_includedir}/%{name}
%{_includedir}/%{name}/doxygen/*.h
%{_includedir}/%{name}/*.h
%{_includedir}/asterisk.h
%files corosync
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/res_corosync.conf
%{_libdir}/%{name}/modules/res_corosync.so
%files curl
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_curl.conf
%{_libdir}/%{name}/modules/*_curl.so
%files fax
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_fax.conf
%{_libdir}/%{name}/modules/res_fax*.so
%files gsm
%defattr(-,root,root)
%{_libdir}/%{name}/modules/codec_gsm.so
%files ldap
%defattr(-,root,root)
%doc contrib/scripts/asterisk.ldap-schema contrib/scripts/asterisk.ldif
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_ldap.conf
%{_libdir}/%{name}/modules/*_ldap.so
%files lua
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/extensions.lua
%{_libdir}/%{name}/modules/*_lua.so
%files mysql
%defattr(-,root,root)
%doc contrib/realtime/mysql/*.sql
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_mysql.conf
%{_libdir}/%{name}/modules/*_mysql.so
%files odbc
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_odbc.conf
%{_libdir}/%{name}/modules/*_odbc.so
%{_libdir}/%{name}/modules/res_odbc_transaction.so
%files pgsql
%defattr(-,root,root)
%doc contrib/realtime/postgresql/*.sql
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_pgsql.conf
%{_libdir}/%{name}/modules/*_pgsql.so
%files radius
%defattr(-,root,root)
%doc contrib/dictionary.digium
%{_libdir}/%{name}/modules/cdr_radius.so
%{_libdir}/%{name}/modules/cel_radius.so
%files snmp
%defattr(-,root,root)
%doc ASTERISK-MIB.txt DIGIUM-MIB.txt
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_snmp.conf
%{_libdir}/%{name}/modules/*_snmp.so
%files speex
%defattr(-,root,root)
%{_libdir}/%{name}/modules/*_speex.so
%files srtp
%defattr(-,root,root)
%{_libdir}/%{name}/modules/res_srtp.so
%files tds
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/*_tds.conf
%{_libdir}/%{name}/modules/*_tds.so
%files vorbis
%defattr(-,root,root)
%{_libdir}/%{name}/modules/*_vorbis.so
%files xmpp
%defattr(-,root,root)
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/motif.conf
%attr(0644,asterisk,asterisk) %config(noreplace) %{_sysconfdir}/asterisk/xmpp.conf
%{_libdir}/%{name}/modules/chan_motif.so
%{_libdir}/%{name}/modules/res_xmpp.so
%pre
/usr/sbin/groupadd -r asterisk 2> /dev/null || :
/usr/sbin/useradd -r -s /bin/false -c "User for Asterisk" -d /var/lib/asterisk -g asterisk asterisk 2> /dev/null || :
%post
/sbin/ldconfig
%{__install} -d -m755 -o asterisk -g asterisk /var/run/asterisk
%{?suse_version:%{fillup_and_insserv asterisk}}
%preun
%{?suse_version:%{stop_on_removal asterisk}}
%postun
%{?suse_version:%{restart_on_update asterisk}}
%{?suse_version:%{insserv_cleanup}}
%{__rm} -rf /var/run/asterisk
/sbin/ldconfig
%changelog