freebsd-ports/net/asterisk13/Makefile
Guido Falsi 5047b7d692 - Add security fixes to net/asterisk port (PORTVERSION bumped)
- Update net/asterisk11 to 11.21.1
- Update net/asterisk13 to 13.7.1

The security update included in these commits introduces an unexpected
incompatibility with FreeBSD 9.3 bundled OpenSSL.
Unluckily simply forcing this port to use ports provided openssl
on 9.x isn't viable, since ftp/curl  by default links with base
openssl. A default binary package would just crash on startup
when loading the asterisk curl module, due to conflicting openssl
implementations being used.

This commit adds a check in the Makefile, copied from the ftp/curl
port, which removes the offending (and unsupported on that openssl
version) code from the source file when linking against base OpenSSL
on 9.x.

Security:	559f3d1b-cb1d-11e5-80a4-001999f8d30b
MFH:		2016Q1
2016-02-04 11:43:38 +00:00

291 lines
9 KiB
Makefile

# $FreeBSD$
PORTNAME= asterisk
PORTVERSION= 13.7.1
CATEGORIES= net
MASTER_SITES= http://downloads.asterisk.org/pub/telephony/%SUBDIR%/:main,g729
MASTER_SITE_SUBDIR= asterisk/:main \
asterisk/old-releases/:main \
sounds/releases/:g729
PKGNAMESUFFIX= 13
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:main
MAINTAINER= madpilot@FreeBSD.org
COMMENT= Open Source PBX and telephony toolkit
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libuuid.so:${PORTSDIR}/misc/e2fsprogs-libuuid \
libjansson.so:${PORTSDIR}/devel/jansson
EXTRACT_ONLY:= ${DISTNAME}${EXTRACT_SUFX}
ONLY_FOR_ARCHS= i386 amd64 powerpc sparc64
USES= bison cpe gmake iconv localbase ncurses shebangfix sqlite
USE_CSTD= gnu89
USE_GNOME= libxml2
USE_LDCONFIG= yes
USE_OPENSSL= yes
USE_RC_SUBR= asterisk
GNU_CONFIGURE= yes
CONFIGURE_ARGS+= --datarootdir=${DATADIR} \
--with-crypto=${OPENSSLBASE} \
--with-ssl=${OPENSSLBASE}
CPE_VENDOR= digium
SHEBANG_FILES= agi/agi-test.agi \
agi/jukebox.agi \
contrib/scripts/astversion
MAKE_ENV= PTHREAD_LIBS="-lpthread" \
MKDIR="${MKDIR}" \
PWLIBDIR=${LOCALBASE}/share/pwlib \
OSVERSION=${OSVERSION} \
DOCSDIR=${DOCSDIR} \
ASTCFLAGS="${CFLAGS}" \
ASTLDFLAGS="${LDFLAGS}"
MAKE_ARGS+= NOISY_BUILD=yes \
ASTDATADIR=${DATADIR}
CONFLICTS= ossp-uuid-[0-9]*
CONFLICTS_BUILD= linuxthreads-*
CONFLICTS_INSTALL= asterisk*-1.8* asterisk*-11*
OPTIONS_DEFINE= ASTVERSION BACKTRACE CURL EXCHANGE FREETDS LDAP LUA \
MP3PLAYER OOH323 PJSIP PORTAUDIO RADIUS SNMP \
SPANDSP SRTP SYSINFO XMPP
OPTIONS_DEFAULT= CURL FREETDS GCC GSM LUA MP3PLAYER NEWT ODBC PGSQL PJSIP \
PORTAUDIO RADIUS SNMP SPANDSP SPEEX SQLITE2 VORBIS \
XMPP
OPTIONS_DEFINE_i386= DAHDI
OPTIONS_DEFINE_amd64= DAHDI
OPTIONS_DEFINE_sparc64= DAHDI
OPTIONS_DEFAULT_i386= DAHDI
OPTIONS_DEFAULT_amd64= DAHDI
OPTIONS_DEFAULT_sparc64= DAHDI
OPTIONS_GROUP= CODECS
OPTIONS_GROUP_CODECS= GSM NEWG711 SPEEX VORBIS
CODECS_DESC= Encoder/Decoder (Codec) Support
OPTIONS_SINGLE= COMPILER
OPTIONS_SINGLE_COMPILER= BASE GCC
COMPILER_DESC= Compiler to use
OPTIONS_GROUP+= DATABASE
OPTIONS_GROUP_DATABASE= MYSQL ODBC PGSQL SQLITE2
DATABASE_DESC= Database Support
OPTIONS_MULTI= MENU
OPTIONS_MULTI_MENU= NCURSES NEWT
MENU_DESC= Menuselect Interface Backend
NEWT_DESC= Newt User Interface
OPTIONS_GROUP+= SOUNDS
OPTIONS_GROUP_SOUNDS= G729
SOUNDS_DESC= Core and Music-on-Hold (MoH) Sound Files
ASTERISK_CORE_G729_SOUNDS= asterisk-core-sounds-en-g729-1.4.27.tar.gz
ASTERISK_MOH_G729_SOUNDS= asterisk-moh-opsound-g729-2.03.tar.gz
G729_DISTFILES= ${ASTERISK_CORE_G729_SOUNDS}:g729 \
${ASTERISK_MOH_G729_SOUNDS}:g729
ASTVERSION_DESC?= Install astversion (requires bash)
BACKTRACE_DESC?= Stack backtrace support via (lib)execinfo
BASE_DESC= Use base compiler (experimental)
DAHDI_DESC?= DAHDI support
EXCHANGE_DESC?= Exchange calendar support
MP3PLAYER_DESC= Install MP3 Player for Music-On-Hold (mpg123)
NEWG711_DESC?= New G711 Codec
OOH323_DESC?= ooh323 support
PJSIP_DESC?= Build the PJSIP based SIP channel
SRTP_DESC?= SecureRTP support
SYSINFO_DESC?= Use devel/libsysinfo to get system information
XMPP_DESC?= XMPP/GTALK support
OPTIONS_SUB= yes
ASTVERSION_RUN_DEPENDS= bash:${PORTSDIR}/shells/bash
BACKTRACE_CONFIGURE_WITH= execinfo
BACKTRACE_USES= execinfo
CURL_CONFIGURE_ON= --with-libcurl
CURL_CONFIGURE_OFF= --with-libcurl=no
CURL_LIB_DEPENDS= libcurl.so:${PORTSDIR}/ftp/curl
DAHDI_CONFIGURE_ON= --with-dahdi --with-openr2
DAHDI_CONFIGURE_OFF= --without-dahdi --without-openr2
DAHDI_BUILD_DEPENDS= libpri>=1.4.10:${PORTSDIR}/misc/libpri \
${LOCALBASE}/include/dahdi/user.h:${PORTSDIR}/misc/dahdi
DAHDI_LIB_DEPENDS= libpri.so:${PORTSDIR}/misc/libpri \
libopenr2.so:${PORTSDIR}/misc/openr2
EXCHANGE_CONFIGURE_OFF= --without-neon --without-neon29
EXCHANGE_LIB_DEPENDS= libneon.so:${PORTSDIR}/www/neon
FREETDS_CONFIGURE_ON= --with-tds=${LOCALBASE}
FREETDS_CONFIGURE_OFF= --without-tds
FREETDS_LIB_DEPENDS= libsybdb.so:${PORTSDIR}/databases/freetds
GCC_USE= GCC=yes
GSM_CONFIGURE_WITH= gsm
GSM_LIB_DEPENDS= libgsm.so:${PORTSDIR}/audio/gsm
LDAP_CONFIGURE_WITH= ldap
LDAP_USE= OPENLDAP=yes
LUA_CONFIGURE_WITH= lua
LUA_USES= lua:51
LUA_CFLAGS= -I${LUA_INCDIR}
LUA_LDFLAGS= -L${LUA_LIBDIR}
MYSQL_CONFIGURE_WITH= mysqlclient
MYSQL_USE= MYSQL=yes
MP3PLAYER_RUN_DEPENDS= mpg123:${PORTSDIR}/audio/mpg123
NCURSES_USES= ncurses
NEWT_LIB_DEPENDS= libnewt.so:${PORTSDIR}/devel/newt
ODBC_CONFIGURE_WITH= unixodbc
ODBC_CONFIGURE_ON= --with-ltdl
ODBC_LIB_DEPENDS= libodbc.so:${PORTSDIR}/databases/unixODBC \
libltdl.so:${PORTSDIR}/devel/libltdl
OOH323_CPPFLAGS= -I${LOCALBASE}/include/openh323
OOH323_LIB_DEPENDS= libpt_r.so:${PORTSDIR}/devel/pwlib \
libh323_r.so:${PORTSDIR}/net/openh323
OOH323_MAKE_ENV= OPENH323DIR=${LOCALBASE}/share/openh323
PGSQL_CONFIGURE_WITH= postgres
PGSQL_USES= pgsql
PJSIP_CONFIGURE_WITH= pjproject
PJSIP_USES= pkgconfig
PORTAUDIO_CONFIGURE_WITH= portaudio
PORTAUDIO_LIB_DEPENDS= libportaudio.so:${PORTSDIR}/audio/portaudio
RADIUS_CONFIGURE_WITH= radius
RADIUS_LIB_DEPENDS= libradiusclient-ng.so:${PORTSDIR}/net/radiusclient
SNMP_CONFIGURE_WITH= netsnmp
SNMP_LIB_DEPENDS= libnetsnmp.so:${PORTSDIR}/net-mgmt/net-snmp
SPANDSP_CONFIGURE_WITH= spandsp
SPANDSP_LIB_DEPENDS= libspandsp.so:${PORTSDIR}/comms/spandsp
SPEEX_CONFIGURE_WITH= speex
SPEEX_LIB_DEPENDS= libspeex.so:${PORTSDIR}/audio/speex
SQLITE2_CONFIGURE_WITH= sqlite
SQLITE2_LIB_DEPENDS= libsqlite.so:${PORTSDIR}/databases/sqlite2
SRTP_CONFIGURE_WITH= srtp
SYSINFO_LIB_DEPENDS= libsysinfo.so:${PORTSDIR}/devel/libsysinfo
VORBIS_CONFIGURE_WITH= ogg
VORBIS_LIB_DEPENDS= libvorbis.so:${PORTSDIR}/audio/libvorbis
XMPP_CONFIGURE_WITH= iksemel
XMPP_LIB_DEPENDS= libiksemel.so:${PORTSDIR}/textproc/iksemel
ASTERISK_USER?= asterisk
ASTERISK_GROUP?= asterisk
USERS= ${ASTERISK_USER}
GROUPS= ${ASTERISK_GROUP} dahdi
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MPJSIP} && ${PORT_OPTIONS:MSRTP}
LIB_DEPENDS+= libpj.so:${PORTSDIR}/net/pjsip-extsrtp
.elif ${PORT_OPTIONS:MPJSIP} && ! ${PORT_OPTIONS:MSRTP}
LIB_DEPENDS+= libpj.so:${PORTSDIR}/net/pjsip
.elif ! ${PORT_OPTIONS:MPJSIP} && ${PORT_OPTIONS:MSRTP}
LIB_DEPENDS+= libsrtp.so:${PORTSDIR}/net/libsrtp
.endif
.include <bsd.port.pre.mk>
.if empty(ICONV_LIB)
CONFIGURE_ARGS+=ac_cv_lib_iconv_iconv_open=no \
ac_cv_lib_iconv_libiconv_open=no
.endif
.if ${PREFIX} == ${LOCALBASE}
VARDIR=/var
.else
VARDIR=${PREFIX}/var
.endif
SUB_LIST+= ASTERISK_USER=${ASTERISK_USER}
PLIST_SUB+= ASTERISK_USER=${ASTERISK_USER} \
ASTERISK_GROUP=${ASTERISK_GROUP} \
VARDIR=${VARDIR}
post-extract:
@${FIND} ${WRKSRC} -name '*.d' -delete
.if ${PORT_OPTIONS:MG729}
${CP} ${DISTDIR}/${ASTERISK_CORE_G729_SOUNDS} ${WRKSRC}/sounds
${CP} ${DISTDIR}/${ASTERISK_MOH_G729_SOUNDS} ${WRKSRC}/sounds
.endif
post-patch:
@${REINPLACE_CMD} -e 's|/var/lib|${PREFIX}/share|g' ${WRKSRC}/configs/samples/musiconhold.conf.sample
.if ${PORT_OPTIONS:MSYSINFO}
@${REINPLACE_CMD} -e 's/%%LIBSYSINFO%%/-lsysinfo/' ${WRKSRC}/main/Makefile
.else
@${REINPLACE_CMD} -e '/#define HAVE_SYSINFO 1/d' ${WRKSRC}/configure
@${REINPLACE_CMD} -e '/%%LIBSYSINFO%%/d' ${WRKSRC}/main/Makefile
.endif
.if ${OPSYS} == FreeBSD && (${OSVERSION} < 1000015 && !(defined(WITH_OPENSSL_PORT) || (!defined(WITH_OPENSSL_BASE) && exists(${LOCALBASE}/lib/libcrypto.so))))
@${REINPLACE_CMD} -e 's/SSL_OP_NO_TLSv1[_12]*;/0;/' ${WRKSRC}/main/tcptls.c
.endif
.if exists(${FILESDIR}/.asterisk.makeopts)
USER_MAKEOPTS_FILE=${FILESDIR}/.asterisk.makeopts
.else
USER_MAKEOPTS_FILE=
.endif
post-configure:
@cd ${WRKSRC} && ${MAKE_CMD} menuselect.makeopts USER_MAKEOPTS="${USER_MAKEOPTS_FILE}"
@cd ${WRKSRC} && ./menuselect/menuselect --disable res_timing_kqueue menuselect.makeopts
@cd ${WRKSRC} && ./menuselect/menuselect --enable chan_mgcp menuselect.makeopts
@cd ${WRKSRC} && ./menuselect/menuselect --enable res_pktccops menuselect.makeopts
.if ${PORT_OPTIONS:MMYSQL}
@cd ${WRKSRC} && ./menuselect/menuselect --enable res_config_mysql menuselect.makeopts
@cd ${WRKSRC} && ./menuselect/menuselect --enable app_mysql menuselect.makeopts
@cd ${WRKSRC} && ./menuselect/menuselect --enable cdr_mysql menuselect.makeopts
.endif
.if ${PORT_OPTIONS:MOOH323}
@cd ${WRKSRC} && ./menuselect/menuselect --enable chan_ooh323 menuselect.makeopts
.endif
.if ${PORT_OPTIONS:MNEWG711}
@cd ${WRKSRC} && ./menuselect/menuselect --enable G711_NEW_ALGORITHM menuselect.makeopts
.endif
post-install:
@${RM} ${STAGEDIR}${ETCDIR}/*.conf ${STAGEDIR}${ETCDIR}/extensions.ael ${STAGEDIR}${ETCDIR}/extensions.lua
.if ! ${PORT_OPTIONS:MASTVERSION}
@${RM} ${STAGEDIR}${PREFIX}/sbin/astversion
.endif
${FIND} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/modules -type f -name '*.so' | ${SED} "s,^${STAGEDIR}${PREFIX}/,," >> ${TMPPLIST}
${FIND} ${STAGEDIR}${DATADIR}/sounds -type f | ${SED} "s,^${STAGEDIR}${DATADIR},${DATADIR}," >> ${TMPPLIST}
${FIND} ${STAGEDIR}${DATADIR}/moh -type f | ${SED} "s,^${STAGEDIR}${DATADIR},${DATADIR}," >> ${TMPPLIST}
(cd ${STAGEDIR} && \
${FIND} var/spool/${PORTNAME}/voicemail/default -type f | ${SED} "s,^,/," >> ${TMPPLIST} && \
${FIND} var/spool/${PORTNAME}/voicemail/ -type d | ${SED} "s,^,@dir /," >> ${TMPPLIST});
.include <bsd.port.post.mk>