mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
Since 5th November 2014, the master branch of libSRTP changed the prefix of several member names and is not compatible with the source code in Asterisk anymore. Therefore instead, this change checks out the latest version of the libSRTP 1.5.x branch. Furthermore now, libSRTP is compiled with OpenSSL as backend. This makes AES-GCM and AES-IN possible. ASTERISK-22131 #close Change-Id: I2e396cdc01da0ff610686e398ed210ca7408f7d6
259 lines
7.5 KiB
Bash
Executable File
259 lines
7.5 KiB
Bash
Executable File
#! /bin/sh
|
|
#
|
|
# $Id$
|
|
#
|
|
|
|
# install_prereq: a script to install distribution-specific
|
|
# prerequirements
|
|
|
|
set -e
|
|
|
|
usage() {
|
|
echo "$0: a script to install distribution-specific prerequirement"
|
|
echo 'Revision: $Id$'
|
|
echo ""
|
|
echo "Usage: $0: Shows this message."
|
|
echo "Usage: $0 test Prints commands it is about to run."
|
|
echo "Usage: $0 install Really install."
|
|
echo "Usage: $0 install-unpackaged Really install unpackaged requirements."
|
|
}
|
|
|
|
# Basic build system:
|
|
PACKAGES_DEBIAN="build-essential"
|
|
# Asterisk: basic requirements:
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libncurses-dev libz-dev libssl-dev libxml2-dev libsqlite3-dev uuid-dev uuid"
|
|
# Asterisk: for addons:
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libcurl-dev libspeex-dev libspeexdsp-dev libogg-dev libvorbis-dev libasound2-dev portaudio19-dev libcurl4-openssl-dev"
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libpq-dev unixodbc-dev libsqlite0-dev libmysqlclient15-dev libneon27-dev libgmime-dev libusb-dev liblua5.1-0-dev lua5.1"
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libopenh323-dev libvpb-dev libgtk2.0-dev libmysqlclient-dev libbluetooth-dev libradiusclient-ng-dev freetds-dev"
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libsnmp-dev libiksemel-dev libcorosync-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev libjack-dev"
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libresample-dev libc-client-dev binutils-dev libsrtp-dev libgsm1-dev libedit-dev doxygen libjansson-dev libldap-dev"
|
|
PACKAGES_DEBIAN="$PACKAGES_DEBIAN subversion git libxslt1-dev automake libsrtp-dev libncurses5-dev python-dev"
|
|
PACKAGES_RH="automake bzip2 gcc gcc-c++ patch ncurses-devel openssl-devel libxml2-devel unixODBC-devel libcurl-devel libogg-devel libvorbis-devel speex-devel"
|
|
PACKAGES_RH="$PACKAGES_RH spandsp-devel freetds-devel net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libtool-ltdl-devel lua-devel"
|
|
PACKAGES_RH="$PACKAGES_RH sqlite-devel libsqlite3x-devel radiusclient-ng-devel portaudio-devel postgresql-devel libresample-devel neon-devel libical-devel"
|
|
PACKAGES_RH="$PACKAGES_RH openldap-devel gmime22-devel sqlite2-devel mysql-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel libedit-devel libuuid-devel"
|
|
PACKAGES_RH="$PACKAGES_RH jansson-devel libsrtp-devel pjproject-devel subversion git libxslt-devel python-devel"
|
|
|
|
PACKAGES_OBSD="popt gmake wget libxml libogg libvorbis curl iksemel spandsp speex iodbc freetds-0.63p1-msdblib mysql-client gmime sqlite sqlite3 jack libxslt"
|
|
PACKAGES_FBSD="autoconf gcc binutils popt gmake wget libxml2 libogg libvorbis curl iksemel spandsp speex unixODBC freetds-devel mysql55-client gmime2 sqlite"
|
|
PACKAGES_FBSD="$PACKAGES_FBSD sqlite3 libxslt jansson e2fsprogs-libuuid gsm libsrtp libsamplerate"
|
|
|
|
KVERS=`uname -r`
|
|
|
|
JANSSON_VER=2.4
|
|
|
|
case "$1" in
|
|
test)
|
|
testcmd=echo
|
|
;;
|
|
install)
|
|
testcmd=''
|
|
;;
|
|
install-unpackaged)
|
|
unpackaged="yes"
|
|
;;
|
|
'')
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
in_test_mode() {
|
|
test "$testcmd" != ''
|
|
}
|
|
|
|
check_installed_debs() {
|
|
for pack in "$@" ; do
|
|
tocheck="${tocheck} ^${pack}$ ~P^${pack}$"
|
|
done
|
|
pkgs=$(aptitude -F '%c %p' search ${tocheck} 2>/dev/null | awk '/^p/{print $2}')
|
|
if [ ${#pkgs} -ne 0 ]; then
|
|
echo $pkgs | sed -r -e "s/ ?[^ :]+:i386//g"
|
|
fi
|
|
}
|
|
|
|
# parsing the output of yum is close to impossible.
|
|
# We'll use rpm and hope for the best:
|
|
check_installed_rpms() {
|
|
for pack in "$@"
|
|
do
|
|
if ! rpm -q $pack >/dev/null 2>/dev/null
|
|
then echo $pack
|
|
fi
|
|
done
|
|
}
|
|
|
|
check_installed_pkgs() {
|
|
for pack in "$@"
|
|
do
|
|
if [ `pkg_info -a | grep $pack | wc -l` = 0 ]; then
|
|
echo $pack
|
|
fi
|
|
done
|
|
}
|
|
|
|
check_installed_fpkgs() {
|
|
for pack in "$@"
|
|
do
|
|
if [ `pkg info -a | grep $pack | wc -l` = 0 ]; then
|
|
echo $pack
|
|
fi
|
|
done
|
|
}
|
|
|
|
handle_debian() {
|
|
if ! [ -x "$(command -v aptitude)" ]; then
|
|
apt-get install aptitude
|
|
fi
|
|
extra_packs=`check_installed_debs $PACKAGES_DEBIAN`
|
|
$testcmd aptitude update
|
|
if [ x"$extra_packs" != "x" ] ; then
|
|
$testcmd aptitude install -y $extra_packs
|
|
fi
|
|
}
|
|
|
|
handle_rh() {
|
|
extra_packs=`check_installed_rpms $PACKAGES_RH`
|
|
if [ x"$extra_packs" != "x" ] ; then
|
|
$testcmd yum install -y $extra_packs
|
|
fi
|
|
}
|
|
|
|
handle_obsd() {
|
|
extra_packs=`check_installed_pkgs $PACKAGES_OBSD`
|
|
if [ x"$extra_packs" != "x" ] ; then
|
|
$testcmd pkg_add $extra_packs
|
|
fi
|
|
}
|
|
|
|
handle_fbsd() {
|
|
extra_packs=`check_installed_fpkgs $PACKAGES_FBSD`
|
|
if [ x"$extra_packs" != "x" ] ; then
|
|
$testcmd pkg install -y $extra_packs
|
|
fi
|
|
}
|
|
|
|
install_unpackaged() {
|
|
echo "*** Installing NBS (Network Broadcast Sound) ***"
|
|
svn co http://svn.digium.com/svn/nbs/trunk nbs-trunk
|
|
cd nbs-trunk
|
|
make && make install
|
|
cd ..
|
|
|
|
# Only install libresample if it wasn't installed via package
|
|
if ! test -f /usr/include/libresample.h; then
|
|
echo "*** Installing libresample ***"
|
|
svn co http://svn.digium.com/svn/thirdparty/libresample/trunk libresample-trunk
|
|
cd libresample-trunk
|
|
./configure && make && make install
|
|
cd ..
|
|
fi
|
|
|
|
# Only install Jansson if it wasn't installed via package
|
|
if ! test -f /usr/include/jansson.h; then
|
|
echo "*** Installing jansson ***"
|
|
wget -O - http://www.digip.org/jansson/releases/jansson-${JANSSON_VER}.tar.gz | zcat | tar -xf -
|
|
cd jansson-${JANSSON_VER}
|
|
./configure && make all && make install
|
|
cd ..
|
|
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf
|
|
/sbin/ldconfig
|
|
fi
|
|
|
|
# Only install libsrtp if it wasn't installed via package
|
|
if ! test -f /usr/include/srtp/srtp.h; then
|
|
echo "*** Installing libsrtp ***"
|
|
if [ ! -d libsrtp ]; then
|
|
git clone https://github.com/cisco/libsrtp.git
|
|
cd libsrtp
|
|
else
|
|
cd libsrtp
|
|
git pull
|
|
fi
|
|
git checkout "1_5_x_throttle"
|
|
./configure --disable-debug --disable-stdout --enable-openssl
|
|
make shared_library uninstall install
|
|
cd ..
|
|
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf
|
|
/sbin/ldconfig
|
|
fi
|
|
|
|
# Only install pjproject if it wasn't installed via package
|
|
if ! test -f /usr/include/pjlib.h; then
|
|
echo "*** Installing pjproject ***"
|
|
if [ ! -d pjproject ]; then
|
|
git clone https://github.com/asterisk/pjproject.git
|
|
cd pjproject
|
|
else
|
|
cd pjproject
|
|
git pull
|
|
fi
|
|
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --enable-shared --with-external-speex --with-external-gsm --with-external-srtp --disable-sound --disable-resample && make && make install
|
|
cd ..
|
|
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf
|
|
/sbin/ldconfig
|
|
fi
|
|
}
|
|
|
|
if in_test_mode; then
|
|
echo "#############################################"
|
|
echo "## $1: test mode."
|
|
echo "## Use the commands here to install your system."
|
|
echo "#############################################"
|
|
elif test "${unpackaged}" = "yes" ; then
|
|
install_unpackaged
|
|
exit 0
|
|
fi
|
|
|
|
OS=`uname -s`
|
|
unsupported_distro=''
|
|
|
|
# A number of distributions we don't (yet?) support.
|
|
if [ "$OS" != 'Linux' -a "$OS" != 'OpenBSD' -a "$OS" != 'FreeBSD' ]; then
|
|
echo >&2 "$0: Your OS ($OS) is currently not supported. Aborting."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f /etc/gentoo-release ]; then
|
|
unsupported_distro='Gentoo'
|
|
fi
|
|
|
|
if [ -f /etc/mandrake-release ]; then
|
|
unsupported_distro='Mandriva'
|
|
fi
|
|
|
|
if [ -f /etc/SuSE-release ]; then
|
|
unsupported_distro='SUSE'
|
|
fi
|
|
|
|
if [ -f /etc/slackware-version ]; then
|
|
unsupported_distro='Slackware'
|
|
fi
|
|
|
|
if [ "$unsupported_distro" != '' ]; then
|
|
echo >&2 "$0: Your distribution ($unsupported_distro) is currently not supported. Aborting."
|
|
exit 1
|
|
fi
|
|
|
|
# The distributions we do support:
|
|
if [ -r /etc/debian_version ]; then
|
|
handle_debian
|
|
elif [ -r /etc/redhat-release ]; then
|
|
handle_rh
|
|
elif [ "$OS" = 'OpenBSD' ]; then
|
|
handle_obsd
|
|
elif [ "$OS" = 'FreeBSD' ]; then
|
|
handle_fbsd
|
|
fi
|
|
|
|
if ! in_test_mode; then
|
|
echo "#############################################"
|
|
echo "## $1 completed successfully"
|
|
echo "#############################################"
|
|
fi
|