File PKGBUILD of Package asterisk

# Maintainer: Oleksandr Natalenko <oleksandr@natalenko.name>

pkgname=asterisk
pkgver=23.1.0
pkgrel=2
pkgdesc="Software implementation of private branch exchange"
_pjver=2.15.1
_janssonver=2.14.1
_libjwtver=1.15.3
arch=(x86_64)
url=https://www.asterisk.org
license=(GPL-2.0-only)
depends=(codec2 gsm libasound.so libcurl.so libedit.so libodbc.so libopus.so libspeex.so libsrtp2.so libsystemd.so libvorbis.so libxml2.so libxslt.so lua popt)
makedepends=(libsqlite3.so)
backup=(etc/asterisk/acl.conf
		etc/asterisk/adsi.conf
		etc/asterisk/aeap.conf
		etc/asterisk/agents.conf
		etc/asterisk/alarmreceiver.conf
		etc/asterisk/amd.conf
		etc/asterisk/app_skel.conf
		etc/asterisk/ari.conf
		etc/asterisk/ast_debug_tools.conf
		etc/asterisk/asterisk.adsi
		etc/asterisk/asterisk.conf
		etc/asterisk/calendar.conf
		etc/asterisk/ccss.conf
		etc/asterisk/cdr.conf
		etc/asterisk/cdr_adaptive_odbc.conf
		etc/asterisk/cdr_beanstalkd.conf
		etc/asterisk/cdr_custom.conf
		etc/asterisk/cdr_manager.conf
		etc/asterisk/cdr_odbc.conf
		etc/asterisk/cdr_pgsql.conf
		etc/asterisk/cdr_sqlite3_custom.conf
		etc/asterisk/cdr_tds.conf
		etc/asterisk/cel.conf
		etc/asterisk/cel_beanstalkd.conf
		etc/asterisk/cel_custom.conf
		etc/asterisk/cel_odbc.conf
		etc/asterisk/cel_pgsql.conf
		etc/asterisk/cel_sqlite3_custom.conf
		etc/asterisk/cel_tds.conf
		etc/asterisk/chan_dahdi.conf
		etc/asterisk/chan_mobile.conf
		etc/asterisk/cli.conf
		etc/asterisk/cli_aliases.conf
		etc/asterisk/cli_permissions.conf
		etc/asterisk/codecs.conf
		etc/asterisk/confbridge.conf
		etc/asterisk/config_test.conf
		etc/asterisk/console.conf
		etc/asterisk/dbsep.conf
		etc/asterisk/dnsmgr.conf
		etc/asterisk/dsp.conf
		etc/asterisk/dundi.conf
		etc/asterisk/enum.conf
		etc/asterisk/extconfig.conf
		etc/asterisk/extensions.ael
		etc/asterisk/extensions.conf
		etc/asterisk/extensions.lua
		etc/asterisk/extensions_minivm.conf
		etc/asterisk/features.conf
		etc/asterisk/festival.conf
		etc/asterisk/followme.conf
		etc/asterisk/func_odbc.conf
		etc/asterisk/geolocation.conf
		etc/asterisk/hep.conf
		etc/asterisk/http.conf
		etc/asterisk/iax.conf
		etc/asterisk/iaxprov.conf
		etc/asterisk/indications.conf
		etc/asterisk/logger.conf
		etc/asterisk/manager.conf
		etc/asterisk/meetme.conf
		etc/asterisk/minivm.conf
		etc/asterisk/modules.conf
		etc/asterisk/motif.conf
		etc/asterisk/musiconhold.conf
		etc/asterisk/ooh323.conf
		etc/asterisk/phoneprov.conf
		etc/asterisk/pjproject.conf
		etc/asterisk/pjsip.conf
		etc/asterisk/pjsip_notify.conf
		etc/asterisk/pjsip_wizard.conf
		etc/asterisk/prometheus.conf
		etc/asterisk/queuerules.conf
		etc/asterisk/queues.conf
		etc/asterisk/res_config_mysql.conf
		etc/asterisk/res_config_odbc.conf
		etc/asterisk/res_config_sqlite3.conf
		etc/asterisk/res_corosync.conf
		etc/asterisk/res_curl.conf
		etc/asterisk/res_fax.conf
		etc/asterisk/res_http_media_cache.conf
		etc/asterisk/res_ldap.conf
		etc/asterisk/res_odbc.conf
		etc/asterisk/res_parking.conf
		etc/asterisk/res_pgsql.conf
		etc/asterisk/res_snmp.conf
		etc/asterisk/res_stun_monitor.conf
		etc/asterisk/resolver_unbound.conf
		etc/asterisk/rtp.conf
		etc/asterisk/say.conf
		etc/asterisk/sla.conf
		etc/asterisk/smdi.conf
		etc/asterisk/sorcery.conf
		etc/asterisk/ss7.timers
		etc/asterisk/stasis.conf
		etc/asterisk/statsd.conf
		etc/asterisk/stir_shaken.conf
		etc/asterisk/telcordia-1.adsi
		etc/asterisk/test_sorcery.conf
		etc/asterisk/udptl.conf
		etc/asterisk/unistim.conf
		etc/asterisk/voicemail.conf
		etc/asterisk/websocket_client.conf
		etc/asterisk/xmpp.conf)

source=(https://downloads.asterisk.org/pub/telephony/${pkgname}/releases/${pkgname}-${pkgver}.tar.gz
		https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/${_pjver}/pjproject-${_pjver}.tar.bz2
		https://github.com/akheron/jansson/releases/download/v${_janssonver}/jansson-${_janssonver}.tar.bz2
		https://raw.githubusercontent.com/asterisk/third-party/master/libjwt/${_libjwtver}/libjwt-${_libjwtver}.tar.gz
		paths.diff
		${pkgname}.service
		${pkgname}.sysusers
		${pkgname}.tmpfiles)
noextract=(pjproject-${_pjver}.tar.bz2
		jansson-${_janssonver}.tar.bz2
		libjwt-${_libjwtver}.tar.gz)
sha256sums=('04a05b555b27a7f5cc4f86d301190d7ee2cd4621490d262aed8613495b44316a'
            '58bb83cec4d431f48d006e455d821668450f8cf6b6c95f090def47062fa3a60c'
            '6bd82d3043dadbcd58daaf903d974891128d22aab7dada5d399cb39094af49ce'
            '6775095bcd417d375faddc1f17cdd7706ad8aa9b9b02404990c4b0ee218ee379'
            '4e13a0b09a5816ba77fe2de2995d67909fb2b76e91a8ad555ed6c288ba29f3dd'
            '2c6267e0f7c2ea2a3e2d44c36b3a20d60041df5f0658ad68ad7b50131aabf471'
            'f638d63eb822cf6792171487d2cebe99e1360f4e5ffd3e7a6790c52db02a2944'
            '2c626fdd510e9d3ee395d743ccec94ab2cd9b81766b99a866a94086cd84180bb')

prepare() {
	cd ${pkgname}-${pkgver}

	patch -Np1 -i ../paths.diff

	autoreconf -fiv

	cd menuselect
	autoreconf -fiv
}

build() {
	cd ${pkgname}-${pkgver}

	export CFLAGS=${CFLAGS//-Wp,-D_FORTIFY_SOURCE=3/}
	export CXXFLAGS=${CFLAGS//-Wp,-D_FORTIFY_SOURCE=3/}

	./configure \
		--prefix=/usr \
		--sysconfdir=/etc \
		--localstatedir=/var \
		--sbindir=/usr/bin \
		--with-externals-cache="${srcdir}" \
		--with-jansson-bundled

	make menuselect.makeopts
	./menuselect/menuselect --disable BUILD_NATIVE --enable APP_VOICEMAIL_ODBC
	make
}

package(){
	depends+=(mariadb-connector-odbc)

	cd ${pkgname}-${pkgver}

	make DESTDIR="${pkgdir}" install
	make DESTDIR="${pkgdir}" install-headers
	make DESTDIR="${pkgdir}" samples

	install -Ddm0755 "${pkgdir}"/etc/credstore/asterisk
	chmod 700 "${pkgdir}"/etc/credstore

	find "${pkgdir}"/etc/asterisk -type f -exec chmod 640 {} +
	find "${pkgdir}"/etc/asterisk -type d -exec chmod 750 {} +

	find "${pkgdir}"/var/lib/asterisk -type f -exec chmod 640 {} +
	find "${pkgdir}"/var/lib/asterisk -type d -exec chmod 750 {} +

	find "${pkgdir}"/var/log/asterisk -type f -exec chmod 640 {} +
	find "${pkgdir}"/var/log/asterisk -type d -exec chmod 750 {} +

	find "${pkgdir}"/var/spool/asterisk -type f -exec chmod 640 {} +
	find "${pkgdir}"/var/spool/asterisk -type d -exec chmod 750 {} +

	rmdir "${pkgdir}"/run/asterisk
	rmdir "${pkgdir}"/run
	rmdir "${pkgdir}"/var/cache/asterisk
	rmdir "${pkgdir}"/var/cache

	install -Dm0644 -t "${pkgdir}"/usr/lib/systemd/system ../${pkgname}.service
	install -Dm0644 ../${pkgname}.sysusers "${pkgdir}"/usr/lib/sysusers.d/${pkgname}.conf
	install -Dm0644 ../${pkgname}.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/${pkgname}.conf
}
openSUSE Build Service is sponsored by