<p>Corey Farrell has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/8516">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">install_prereq: Split into multiple scripts and data.<br><br>As the install_prereq script supports more distributions and OS's it<br>becomes more difficult to read.  This splits package lists and macros<br>for each supported platform into separate files that are read and run by<br>the main script.<br><br>Change-Id: I16a26b19047a8b3da3947c7953cd104241b7472d<br>---<br>M contrib/scripts/install_prereq<br>A contrib/scripts/prereqs/debian<br>A contrib/scripts/prereqs/debian.mandatory<br>A contrib/scripts/prereqs/freebsd<br>A contrib/scripts/prereqs/freebsd.mandatory<br>A contrib/scripts/prereqs/openbsd<br>A contrib/scripts/prereqs/openbsd.mandatory<br>A contrib/scripts/prereqs/rh<br>A contrib/scripts/prereqs/rh.mandatory<br>9 files changed, 181 insertions(+), 173 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/16/8516/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/contrib/scripts/install_prereq b/contrib/scripts/install_prereq<br>index 23a247a..7922a99 100755<br>--- a/contrib/scripts/install_prereq<br>+++ b/contrib/scripts/install_prereq<br>@@ -1,7 +1,4 @@<br>-#! /bin/sh<br>-#<br>-# $Id$<br>-#<br>+#!/bin/sh<br> <br> # install_prereq: a script to install distribution-specific<br> # prerequirements<br>@@ -10,7 +7,6 @@<br> <br> usage() {<br>      echo "$0: a script to install distribution-specific prerequirement"<br>-        echo 'Revision: $Id$'<br>         echo ""<br>     echo "Usage: $0:                    Shows this message."<br>    echo "Usage: $0 test                Prints commands it is about to run."<br>@@ -18,69 +14,7 @@<br>        echo "Usage: $0 install-unpackaged  Really install unpackaged requirements."<br> }<br> <br>-# Basic build system:<br>-PACKAGES_DEBIAN="build-essential pkg-config"<br>-# Asterisk: basic requirements:<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libedit-dev libjansson-dev libsqlite3-dev uuid-dev libxml2-dev"<br>-# Asterisk: for addons:<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libspeex-dev libspeexdsp-dev libogg-dev libvorbis-dev libasound2-dev portaudio19-dev libcurl4-openssl-dev xmlstarlet bison flex"<br>-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"<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libvpb-dev libmysqlclient-dev libbluetooth-dev libradcli-dev freetds-dev libosptk-dev libjack-jackd2-dev bash"<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libsnmp-dev libiksemel-dev libcorosync-common-dev libcpg-dev libcfg-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev"<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libresample1-dev libc-client2007e-dev binutils-dev libsrtp0-dev libsrtp2-dev libgsm1-dev doxygen graphviz zlib1g-dev libldap2-dev"<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libcodec2-dev libfftw3-dev libsndfile1-dev libunbound-dev"<br>-# Asterisk: for the unpackaged below:<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN wget subversion"<br>-# Asterisk: for ./configure --with-pjproject-bundled:<br>-PACKAGES_DEBIAN="$PACKAGES_DEBIAN bzip2 patch python-dev"<br>-<br>-# Basic build system:<br>-PACKAGES_RH="make gcc gcc-c++ pkgconfig"<br>-# Asterisk: basic requirements:<br>-PACKAGES_RH="$PACKAGES_RH libedit-devel jansson-devel libuuid-devel sqlite-devel libxml2-devel"<br>-# Asterisk: for addons:<br>-PACKAGES_RH="$PACKAGES_RH speex-devel speexdsp-devel libogg-devel libvorbis-devel alsa-lib-devel portaudio-devel libcurl-devel xmlstarlet bison flex"<br>-PACKAGES_RH="$PACKAGES_RH postgresql-devel unixODBC-devel libtool-ltdl-devel neon-devel gmime-devel lua-devel uriparser-devel libxslt-devel openssl-devel"<br>-PACKAGES_RH="$PACKAGES_RH mysql-devel bluez-libs-devel radcli-devel freetds-devel jack-audio-connection-kit-devel bash"<br>-PACKAGES_RH="$PACKAGES_RH net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libical-devel spandsp-devel"<br>-PACKAGES_RH="$PACKAGES_RH libresample-devel uw-imap-devel binutils-devel libsrtp-devel gsm-devel doxygen graphviz zlib-devel openldap-devel hoard"<br>-PACKAGES_RH="$PACKAGES_RH codec2-devel fftw-devel libsndfile-devel unbound-devel"<br>-# Asterisk: for the unpackaged below:<br>-PACKAGES_RH="$PACKAGES_RH wget subversion"<br>-# Asterisk: for ./configure --with-pjproject-bundled:<br>-PACKAGES_RH="$PACKAGES_RH bzip2 patch python-devel"<br>-<br>-# Basic build system:<br>-PACKAGES_OBSD="gmake"<br>-# Asterisk: basic requirements:<br>-PACKAGES_OBSD="$PACKAGES_OBSD libxml sqlite3 e2fsprogs jansson"<br>-# Asterisk: for addons:<br>-PACKAGES_OBSD="$PACKAGES_OBSD speex speexdsp libogg libvorbis portaudio-svn curl xmlstarlet bison"<br>-PACKAGES_OBSD="$PACKAGES_OBSD postgresql-client iodbc libltdl neon gmime lua%5.2 uriparser libxslt"<br>-PACKAGES_OBSD="$PACKAGES_OBSD mariadb-client radcli freetds"<br>-PACKAGES_OBSD="$PACKAGES_OBSD net-snmp iksemel popt libical spandsp"<br>-PACKAGES_OBSD="$PACKAGES_OBSD c-client libsrtp gsm doxygen graphviz"<br>-PACKAGES_OBSD="$PACKAGES_OBSD fftw3 libsndfile"<br>-# Asterisk: for the unpackaged below:<br>-PACKAGES_OBSD="$PACKAGES_OBSD wget subversion"<br>-# Asterisk: for ./configure --with-pjproject-bundled:<br>-PACKAGES_OBSD="$PACKAGES_OBSD bzip2 python%2"<br>-<br>-# Basic build system:<br>-PACKAGES_FBSD="gmake pkgconf"<br>-# Asterisk: basic requirements:<br>-PACKAGES_FBSD="$PACKAGES_FBSD libedit jansson e2fsprogs-libuuid sqlite3 libxml2"<br>-# Asterisk: for addons:<br>-PACKAGES_FBSD="$PACKAGES_FBSD speex speexdsp libogg libvorbis alsa-lib portaudio curl xmlstarlet bison flex"<br>-PACKAGES_FBSD="$PACKAGES_FBSD postgresql10-client unixODBC libltdl neon gmime26 lua52 uriparser libxslt openssl"<br>-PACKAGES_FBSD="$PACKAGES_FBSD mysql57-client radcli freetds"<br>-PACKAGES_FBSD="$PACKAGES_FBSD net-snmp iksemel corosync newt popt libical spandsp"<br>-PACKAGES_FBSD="$PACKAGES_FBSD cclient libbfd libsrtp gsm libilbc doxygen graphviz libzip openldap-client libhoard"<br>-# Asterisk: for the unpackaged below:<br>-PACKAGES_FBSD="$PACKAGES_FBSD wget subversion"<br>-# Asterisk: for ./configure --with-pjproject-bundled:<br>-PACKAGES_FBSD="$PACKAGES_FBSD bzip2 patch python"<br>-<br>+PREREQDIR=`dirname $0`/prereqs<br> KVERS=`uname -r`<br> <br> JANSSON_VER=2.11<br>@@ -109,75 +43,9 @@<br>  test "$testcmd" != ''<br> }<br> <br>-check_installed_debs() {<br>-    for pack in "$@" ; do<br>-              tocheck="${tocheck} ^${pack}$ ~P^${pack}$"<br>- done<br>- pkgs=$(aptitude -F '%c %p' search ${tocheck} 2>/dev/null | awk '/^p/{print $2}')<br>-  if [ ${#pkgs} -ne 0 ]; then<br>-          echo $pkgs | sed -r -e "s/ ?[^ :]+:i386//g"<br>-        fi<br>-}<br>-<br>-# parsing the output of yum is close to impossible.<br>-# We'll use rpm and hope for the best:<br>-check_installed_rpms() {<br>-      for pack in "$@"<br>-   do<br>-           if ! rpm -q $pack >/dev/null 2>/dev/null<br>-               then echo $pack<br>-              fi<br>-   done<br>-}<br>-<br>-check_installed_pkgs() {<br>-       for pack in "$@"<br>-   do<br>-           if [ `pkg_info -a | grep $pack | wc -l` = 0 ]; then<br>-          echo $pack<br>-           fi<br>-   done<br>-}<br>-<br>-check_installed_fpkgs() {<br>-      for pack in "$@"<br>-   do<br>-           if [ `pkg info -a | grep $pack | wc -l` = 0 ]; then<br>-          echo $pack<br>-           fi<br>-   done<br>-}<br>-<br>-handle_debian() {<br>-      if ! [ -x "$(command -v aptitude)" ]; then<br>-         apt-get install aptitude<br>-     fi<br>-   extra_packs=`check_installed_debs $PACKAGES_DEBIAN`<br>-  $testcmd aptitude update<br>-     if [ x"$extra_packs" != "x" ] ; then<br>-             $testcmd aptitude install -y $extra_packs<br>-    fi<br>-}<br>-<br>-handle_rh() {<br>-    extra_packs=`check_installed_rpms $PACKAGES_RH`<br>-      if [ x"$extra_packs" != "x" ] ; then<br>-             $testcmd yum install --skip-broken --assumeyes $extra_packs<br>-  fi<br>-}<br>-<br>-handle_obsd() {<br>-  extra_packs=`check_installed_pkgs $PACKAGES_OBSD`<br>-    if [ x"$extra_packs" != "x" ] ; then<br>-             $testcmd pkg_add $extra_packs<br>-        fi<br>-}<br>-<br>-handle_fbsd() {<br>-  extra_packs=`check_installed_fpkgs $PACKAGES_FBSD`<br>-   if [ x"$extra_packs" != "x" ] ; then<br>-             $testcmd pkg install -y $extra_packs<br>- fi<br>+unsupported_platform() {<br>+        echo >&2 "$0: Your $1 ($2) is currently not supported. Aborting."<br>+   exit 1<br> }<br> <br> install_unpackaged() {<br>@@ -240,45 +108,58 @@<br> fi<br> <br> OS=`uname -s`<br>-unsupported_distro=''<br> <br>-# A number of distributions we don't (yet?) support.<br>-if [ "$OS" != 'Linux' -a "$OS" != 'OpenBSD' -a "$OS" != 'FreeBSD' ]; then<br>-        echo >&2 "$0: Your OS ($OS) is currently not supported. Aborting."<br>-  exit 1<br>+case "$OS" in<br>+Linux)<br>+    # A number of distributions we don't (yet?) support.<br>+     if [ -f /etc/gentoo-release ]; then<br>+          unsupported_platform 'distribution' 'Gentoo'<br>+ fi<br>+<br>+        if [ -f /etc/mandrake-release ]; then<br>+                unsupported_platform 'distribution' 'Mandriva'<br>+       fi<br>+<br>+        if [ -f /etc/SuSE-release ]; then<br>+            unsupported_platform 'distribution' 'SUSE'<br>+   fi<br>+<br>+        if [ -f /etc/slackware-version ]; then<br>+               unsupported_platform 'distribution' 'Slackware'<br>+      fi<br>+<br>+<br>+     # The distributions we do support:<br>+   if [ -r /etc/debian_version ]; then<br>+          PREREQPLATFORM=debian<br>+        elif [ -r /etc/redhat-release ]; then<br>+                PREREQPLATFORM=rh<br>+    else<br>+         unsupported_platform 'distribution' 'Unknown'<br>+        fi<br>+   ;;<br>+OpenBSD)<br>+        PREREQPLATFORM=openbsd<br>+       ;;<br>+FreeBSD)<br>+        PREREQPLATFORM=freebsd<br>+       ;;<br>+*)<br>+      unsupported_platform "OS" "$OS"<br>+  ;;<br>+esac<br>+<br>+# Initialize PREREQPKGS first so the platform script can modify it if needed.<br>+PREREQPKGS=`grep ${PREREQDIR}/${PREREQPLATFORM}.mandatory -ve '^#'`<br>+<br>+. ${PREREQDIR}/${PREREQPLATFORM}<br>+<br>+if test "x${PREREQ_DISTCHECK}" = "x1"; then<br>+        # Make sure packaging system is available<br>+    prereq_dist_check<br> fi<br> <br>-if [ -f /etc/gentoo-release ]; then<br>-      unsupported_distro='Gentoo'<br>-fi<br>-<br>-if [ -f /etc/mandrake-release ]; then<br>-  unsupported_distro='Mandriva'<br>-fi<br>-<br>-if [ -f /etc/SuSE-release ]; then<br>-    unsupported_distro='SUSE'<br>-fi<br>-<br>-if [ -f /etc/slackware-version ]; then<br>-   unsupported_distro='Slackware'<br>-fi<br>-<br>-if [ "$unsupported_distro" != '' ]; then<br>-  echo >&2 "$0: Your distribution ($unsupported_distro) is currently not supported. Aborting."<br>-        exit 1<br>-fi<br>-<br>-# The distributions we do support:<br>-if [ -r /etc/debian_version ]; then<br>-    handle_debian<br>-elif [ -r /etc/redhat-release ]; then<br>-        handle_rh<br>-elif [ "$OS" = 'OpenBSD' ]; then<br>-       handle_obsd<br>-elif [ "$OS" = 'FreeBSD' ]; then<br>-     handle_fbsd<br>-fi<br>+prereq_install `prereq_check_installed $PREREQPKGS`<br> <br> if ! in_test_mode; then<br>   echo "#############################################"<br>diff --git a/contrib/scripts/prereqs/debian b/contrib/scripts/prereqs/debian<br>new file mode 100644<br>index 0000000..1a98ca6<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/debian<br>@@ -0,0 +1,24 @@<br>+PREREQ_DISTCHECK=1<br>+<br>+prereq_dist_check() {<br>+    if ! [ -x "$(command -v aptitude)" ]; then<br>+         apt-get install aptitude<br>+     fi<br>+}<br>+<br>+prereq_check_installed() {<br>+       for pack in "$@" ; do<br>+              tocheck="${tocheck} ^${pack}$ ~P^${pack}$"<br>+ done<br>+ pkgs=$(aptitude -F '%c %p' search ${tocheck} 2>/dev/null | awk '/^p/{print $2}')<br>+  if [ ${#pkgs} -ne 0 ]; then<br>+          echo $pkgs | sed -r -e "s/ ?[^ :]+:i386//g"<br>+        fi<br>+}<br>+<br>+prereq_install() {<br>+       $testcmd aptitude update<br>+     if test $# -ne 0; then<br>+               $testcmd aptitude install -y "$@"<br>+  fi<br>+}<br>diff --git a/contrib/scripts/prereqs/debian.mandatory b/contrib/scripts/prereqs/debian.mandatory<br>new file mode 100644<br>index 0000000..0992e8a<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/debian.mandatory<br>@@ -0,0 +1,15 @@<br>+# Basic build system:<br>+build-essential pkg-config<br>+# Asterisk: basic requirements:<br>+libedit-dev libjansson-dev libsqlite3-dev uuid-dev libxml2-dev<br>+# Asterisk: for addons:<br>+libspeex-dev libspeexdsp-dev libogg-dev libvorbis-dev libasound2-dev portaudio19-dev libcurl4-openssl-dev xmlstarlet bison flex<br>+libpq-dev unixodbc-dev libltdl-dev libneon27-dev libgmime-2.6-dev liblua5.2-dev liburiparser-dev libxslt1-dev libssl-dev<br>+libvpb-dev libmysqlclient-dev libbluetooth-dev libradcli-dev freetds-dev libosptk-dev libjack-jackd2-dev bash<br>+libsnmp-dev libiksemel-dev libcorosync-common-dev libcpg-dev libcfg-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev<br>+libresample1-dev libc-client2007e-dev binutils-dev libsrtp0-dev libsrtp2-dev libgsm1-dev doxygen graphviz zlib1g-dev libldap2-dev<br>+libcodec2-dev libfftw3-dev libsndfile1-dev libunbound-dev<br>+# Asterisk: for the unpackaged below:<br>+wget subversion<br>+# Asterisk: for ./configure --with-pjproject-bundled:<br>+bzip2 patch python-dev<br>diff --git a/contrib/scripts/prereqs/freebsd b/contrib/scripts/prereqs/freebsd<br>new file mode 100644<br>index 0000000..1fc43de<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/freebsd<br>@@ -0,0 +1,14 @@<br>+prereq_check_installed() {<br>+    for pack in "$@"<br>+   do<br>+           if [ `pkg info -a | grep $pack | wc -l` = 0 ]; then<br>+          echo $pack<br>+           fi<br>+   done<br>+}<br>+<br>+prereq_install() {<br>+     if test $# -ne 0; then<br>+               $testcmd pkg install -y "$@"<br>+       fi<br>+}<br>diff --git a/contrib/scripts/prereqs/freebsd.mandatory b/contrib/scripts/prereqs/freebsd.mandatory<br>new file mode 100644<br>index 0000000..d18ddd4<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/freebsd.mandatory<br>@@ -0,0 +1,14 @@<br>+# Basic build system:<br>+gmake pkgconf<br>+# Asterisk: basic requirements:<br>+libedit jansson e2fsprogs-libuuid sqlite3 libxml2<br>+# Asterisk: for addons:<br>+speex speexdsp libogg libvorbis alsa-lib portaudio curl xmlstarlet bison flex<br>+postgresql10-client unixODBC libltdl neon gmime26 lua52 uriparser libxslt openssl<br>+mysql57-client radcli freetds<br>+net-snmp iksemel corosync newt popt libical spandsp<br>+cclient libbfd libsrtp gsm libilbc doxygen graphviz libzip openldap-client libhoard<br>+# Asterisk: for the unpackaged below:<br>+wget subversion<br>+# Asterisk: for ./configure --with-pjproject-bundled:<br>+bzip2 patch python<br>diff --git a/contrib/scripts/prereqs/openbsd b/contrib/scripts/prereqs/openbsd<br>new file mode 100644<br>index 0000000..4eb9505<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/openbsd<br>@@ -0,0 +1,14 @@<br>+prereq_check_installed() {<br>+ for pack in "$@"<br>+   do<br>+           if [ `pkg_info -a | grep $pack | wc -l` = 0 ]; then<br>+          echo $pack<br>+           fi<br>+   done<br>+}<br>+<br>+prereq_install() {<br>+     if test $# -ne 0; then<br>+               $testcmd pkg_add "$@"<br>+      fi<br>+}<br>diff --git a/contrib/scripts/prereqs/openbsd.mandatory b/contrib/scripts/prereqs/openbsd.mandatory<br>new file mode 100644<br>index 0000000..63993ae<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/openbsd.mandatory<br>@@ -0,0 +1,15 @@<br>+# Basic build system:<br>+gmake<br>+# Asterisk: basic requirements:<br>+libxml sqlite3 e2fsprogs jansson<br>+# Asterisk: for addons:<br>+speex speexdsp libogg libvorbis portaudio-svn curl xmlstarlet bison<br>+postgresql-client iodbc libltdl neon gmime lua%5.2 uriparser libxslt<br>+mariadb-client radcli freetds<br>+net-snmp iksemel popt libical spandsp<br>+c-client libsrtp gsm doxygen graphviz<br>+fftw3 libsndfile<br>+# Asterisk: for the unpackaged below:<br>+wget subversion<br>+# Asterisk: for ./configure --with-pjproject-bundled:<br>+bzip2 python%2<br>diff --git a/contrib/scripts/prereqs/rh b/contrib/scripts/prereqs/rh<br>new file mode 100644<br>index 0000000..a7a27db<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/rh<br>@@ -0,0 +1,16 @@<br>+# parsing the output of yum is close to impossible.<br>+# We'll use rpm and hope for the best:<br>+prereq_check_installed() {<br>+  for pack in "$@"<br>+   do<br>+           if ! rpm -q $pack >/dev/null 2>/dev/null<br>+               then echo $pack<br>+              fi<br>+   done<br>+}<br>+<br>+prereq_install() {<br>+     if test $# -ne 0; then<br>+               $testcmd yum install --skip-broken --assumeyes "$@"<br>+        fi<br>+}<br>diff --git a/contrib/scripts/prereqs/rh.mandatory b/contrib/scripts/prereqs/rh.mandatory<br>new file mode 100644<br>index 0000000..5bffba9<br>--- /dev/null<br>+++ b/contrib/scripts/prereqs/rh.mandatory<br>@@ -0,0 +1,15 @@<br>+# Basic build system:<br>+make gcc gcc-c++ pkgconfig<br>+# Asterisk: basic requirements:<br>+libedit-devel jansson-devel libuuid-devel sqlite-devel libxml2-devel<br>+# Asterisk: for addons:<br>+speex-devel speexdsp-devel libogg-devel libvorbis-devel alsa-lib-devel portaudio-devel libcurl-devel xmlstarlet bison flex<br>+postgresql-devel unixODBC-devel libtool-ltdl-devel neon-devel gmime-devel lua-devel uriparser-devel libxslt-devel openssl-devel<br>+mysql-devel bluez-libs-devel radcli-devel freetds-devel jack-audio-connection-kit-devel bash<br>+net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libical-devel spandsp-devel<br>+libresample-devel uw-imap-devel binutils-devel libsrtp-devel gsm-devel doxygen graphviz zlib-devel openldap-devel hoard<br>+codec2-devel fftw-devel libsndfile-devel unbound-devel<br>+# Asterisk: for the unpackaged below:<br>+wget subversion<br>+# Asterisk: for ./configure --with-pjproject-bundled:<br>+bzip2 patch python-devel<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/8516">change 8516</a>. To unsubscribe, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/8516"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I16a26b19047a8b3da3947c7953cd104241b7472d </div>
<div style="display:none"> Gerrit-Change-Number: 8516 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Corey Farrell <git@cfware.com> </div>