Files
asterisk/contrib/scripts/install_prereq
Alexander Traud ea3b8bb080 install_prereq: Update FreeBSD libraries.
Because the code review system Gerrit creates merge conflicts even when one line
apart another change happened, the previous update to the FreeBSD libraries had
to be rebased via Git. Because of a break for training of the original
contributor, this rebase was done by another contributor and the variant for
Asterisk 13 was cherry-picked to all branches. By this, dependencies for new
features added in newer Asterisk version got lost. This can be seen, when not
the original path set but a previous patch set is compared.

This change here fixes this by adding those (optional) dependencies for
Asterisk 15 and newer (again).

ASTERISK-27686

Change-Id: I6638a3d0dc37ad4ff5f94be15463e3dd8a2bfe74
2018-03-12 12:40:11 +01:00

289 lines
9.0 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 pkg-config"
# Asterisk: basic requirements:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libedit-dev libjansson-dev libsqlite3-dev uuid-dev libxml2-dev"
# Asterisk: for addons:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libspeex-dev libspeexdsp-dev libogg-dev libvorbis-dev libasound2-dev portaudio19-dev libcurl4-openssl-dev xmlstarlet bison flex"
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libpq-dev unixodbc-dev libltdl-dev libneon27-dev libgmime-2.6-dev liblua5.2-dev liburiparser-dev libxslt1-dev libssl-dev"
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libvpb-dev libmysqlclient-dev libbluetooth-dev libradcli-dev freetds-dev libosptk-dev libjack-jackd2-dev bash"
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libsnmp-dev libiksemel-dev libcorosync-common-dev libcpg-dev libcfg-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev"
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libresample1-dev libc-client2007e-dev binutils-dev libsrtp0-dev libsrtp2-dev libgsm1-dev doxygen graphviz zlib1g-dev libldap2-dev"
PACKAGES_DEBIAN="$PACKAGES_DEBIAN libcodec2-dev libfftw3-dev libsndfile1-dev libunbound-dev"
# Asterisk: for the unpackaged below:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN wget subversion"
# Asterisk: for ./configure --with-pjproject-bundled:
PACKAGES_DEBIAN="$PACKAGES_DEBIAN bzip2 patch python-dev"
# Basic build system:
PACKAGES_RH="make gcc gcc-c++ pkgconfig"
# Asterisk: basic requirements:
PACKAGES_RH="$PACKAGES_RH libedit-devel jansson-devel libuuid-devel sqlite-devel libxml2-devel"
# Asterisk: for addons:
PACKAGES_RH="$PACKAGES_RH speex-devel speexdsp-devel libogg-devel libvorbis-devel alsa-lib-devel portaudio-devel libcurl-devel xmlstarlet bison flex"
PACKAGES_RH="$PACKAGES_RH postgresql-devel unixODBC-devel libtool-ltdl-devel neon-devel gmime-devel lua-devel uriparser-devel libxslt-devel openssl-devel"
PACKAGES_RH="$PACKAGES_RH mysql-devel bluez-libs-devel radcli-devel freetds-devel jack-audio-connection-kit-devel bash"
PACKAGES_RH="$PACKAGES_RH net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libical-devel spandsp-devel"
PACKAGES_RH="$PACKAGES_RH libresample-devel uw-imap-devel binutils-devel libsrtp-devel gsm-devel doxygen graphviz zlib-devel openldap-devel hoard"
PACKAGES_RH="$PACKAGES_RH codec2-devel fftw-devel libsndfile-devel unbound-devel"
# Asterisk: for the unpackaged below:
PACKAGES_RH="$PACKAGES_RH wget subversion"
# Asterisk: for ./configure --with-pjproject-bundled:
PACKAGES_RH="$PACKAGES_RH bzip2 patch python-devel"
# Basic build system:
PACKAGES_OBSD="gmake"
# Asterisk: basic requirements:
PACKAGES_OBSD="$PACKAGES_OBSD libxml sqlite3 e2fsprogs jansson"
# Asterisk: for addons:
PACKAGES_OBSD="$PACKAGES_OBSD speex speexdsp libogg libvorbis portaudio-svn curl xmlstarlet bison"
PACKAGES_OBSD="$PACKAGES_OBSD postgresql-client iodbc libltdl neon gmime lua%5.2 uriparser libxslt"
PACKAGES_OBSD="$PACKAGES_OBSD mariadb-client radcli freetds"
PACKAGES_OBSD="$PACKAGES_OBSD net-snmp iksemel popt libical spandsp"
PACKAGES_OBSD="$PACKAGES_OBSD c-client libsrtp gsm doxygen graphviz"
PACKAGES_OBSD="$PACKAGES_OBSD fftw3 libsndfile"
# Asterisk: for the unpackaged below:
PACKAGES_OBSD="$PACKAGES_OBSD wget subversion"
# Asterisk: for ./configure --with-pjproject-bundled:
PACKAGES_OBSD="$PACKAGES_OBSD bzip2 python%2"
# Basic build system:
PACKAGES_FBSD="gmake pkgconf"
# Asterisk: basic requirements:
PACKAGES_FBSD="$PACKAGES_FBSD libedit jansson e2fsprogs-libuuid sqlite3 libxml2"
# Asterisk: for addons:
PACKAGES_FBSD="$PACKAGES_FBSD speex speexdsp libogg libvorbis alsa-lib portaudio curl xmlstarlet bison flex"
PACKAGES_FBSD="$PACKAGES_FBSD postgresql10-client unixODBC libltdl neon gmime26 lua52 uriparser libxslt openssl"
PACKAGES_FBSD="$PACKAGES_FBSD mysql57-client radcli freetds"
PACKAGES_FBSD="$PACKAGES_FBSD net-snmp iksemel corosync newt popt libical spandsp"
PACKAGES_FBSD="$PACKAGES_FBSD cclient libbfd libsrtp gsm libilbc doxygen graphviz libzip openldap-client libhoard"
PACKAGES_FBSD="$PACKAGES_FBSD codec2 fftw3 libsndfile unbound"
# Asterisk: for the unpackaged below:
PACKAGES_FBSD="$PACKAGES_FBSD wget subversion"
# Asterisk: for ./configure --with-pjproject-bundled:
PACKAGES_FBSD="$PACKAGES_FBSD bzip2 patch python"
KVERS=`uname -r`
JANSSON_VER=2.11
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 --skip-broken --assumeyes $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 all 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 all 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 install
cd ..
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf
/sbin/ldconfig
fi
# Only install libsrtp2 if it wasn't installed via package
if ! test -f /usr/include/srtp/srtp.h; then
if ! test -f /usr/include/srtp2/srtp.h; then
echo "*** Installing libsrtp2 ***"
wget -O - http://github.com/cisco/libsrtp/archive/v2.tar.gz | zcat | tar -xf -
cd libsrtp-2
./configure --enable-openssl
make shared_library install
cd ..
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf
/sbin/ldconfig
fi
fi
if ! test -f /usr/include/pjlib.h; then
echo "PJProject not installed, yet. Therefore, please, run"
echo "./configure --with-pjproject-bundled"
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