[svn-commits] tilghman: trunk r151601 - /trunk/contrib/scripts/live_ast

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Oct 22 15:05:16 CDT 2008


Author: tilghman
Date: Wed Oct 22 15:05:15 2008
New Revision: 151601

URL: http://svn.digium.com/view/asterisk?view=rev&rev=151601
Log:
Add a contributed script for running Asterisk without installing it, first.
(closes issue #11680)
 Reported by: tzafrir
 Patches: 
       live_ast_6 uploaded by tzafrir (license 46)

Added:
    trunk/contrib/scripts/live_ast   (with props)

Added: trunk/contrib/scripts/live_ast
URL: http://svn.digium.com/view/asterisk/trunk/contrib/scripts/live_ast?view=auto&rev=151601
==============================================================================
--- trunk/contrib/scripts/live_ast (added)
+++ trunk/contrib/scripts/live_ast Wed Oct 22 15:05:15 2008
@@ -1,0 +1,261 @@
+#!/bin/sh
+
+# live_ast: run asterisk from a newly-built copy with minimal changes.
+
+# Copyright (C) 2007 Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+# USA
+
+# This script allows you to install Asterisk into a subdirectory of 
+# your source distribution and run it from there.
+#
+# Example usage:
+#
+#   contrib/scripts/live_ast conf-file # optionally. and now edit live/live.conf
+#   # edit live/live.conf
+#   contrib/scripts/live_ast configure
+#   make
+#   contrib/scripts/live_ast install
+#   contrib/scripts/live_ast samples
+#   contrib/scripts/live_ast run
+#   contrib/scripts/live_ast run -r
+#   ./live/asterisk -r                 # Same as run -r
+#
+# A standard debugging cycle of a code in a module:
+#
+#   # edit apps/app_skel.c
+#   contrib/scripts/live_ast install
+#   contrib/scripts/live_ast run -r 
+#   # and in the CLI:
+#   module unload app_skel.so
+#   module load app_skel.so
+#
+# If you have external scripts that run asterisk, use the script 
+# live/asterisk that is generated by the 'samples' command. In this case you
+# should probably also rem-out the line 'astvarrundir' and maybe also 
+# 'astetcdir' in live/etc/asterisk.conf .
+#
+####################### Begin Samples
+# optional environment variables. Set those in live/live.conf or in 
+# your envirnment.
+#
+# LIVE_AST_LIBPRI_PATH:
+# To use a libpri SVN directory (without running 'make install': make include
+# a symlink to the current directory:
+#   ln -s . /path/to/checkout/of/libpri/include
+# Be sure to run there 'make'. Then set in live.conf:
+#LIVE_AST_LIBPRI_PATH="/path/to/checkout/of/libpri"
+#
+# LIVE_AST_ZAPTEL_PATH:
+# Likewise, the same trick can be used to build vs. a local copy of zaptel:
+#   ln -s /path/to/checkout/of/zaptel/include .
+#   ln -s /path/to/checkout/of/zaptel/zaptel .
+#LIVE_AST_ZPATEL_PATH="/path/to/checkout/of/zaptel"
+#
+#LIVE_AST_DAHDI_PATH="/path/to/dahdi-linux/dir"
+#LIVE_AST_DAHDITOOLS_PATH="/path/to/dahdi-tools/dir"
+#
+# Another alternative for Zaptel is to use the live_zap script included 
+# with the Zaptel distribution. The following should work after you used 
+# './live_zap install' or even with a copy generated with 
+# './live_zap rsync' . '/apth/to/zaptel' is the directory containing the 
+# live/ subdirectory:
+# 
+#LIVE_AST_ZAPLIVE_PATH="/path/to/zaptel"
+#
+# LIVE_AST_LD_PATH_EXTRA: 
+# space-separated or colon-separated directories to add to 
+# LD_LIBRARY_PATH. It is added before any existing components of 
+# LD_LIBRARY_PATH.
+#LIVE_AST_LD_PATH_EXTRA="$HOME/lib:$HOME/libtest /opt/testapp"
+#
+# LIVE_AST_CONFIGURE_PARAMS:
+# Extra parameters to pass to ./configure.
+#LIVE_AST_CONFIGURE_PARAMS="--enable-dev-mode"
+#
+# LIVE_AST_FORCE_DEF_CONF:
+# If set to a non-empty value, always regenerate menuselect config.
+# This avoids emenselect's nag about "configuration has changed" that 
+# happens occasionally after an svn update.
+#LIVE_AST_FORCE_DEF_CONF=yes
+#
+# LIVE_AST_BRISTUFFED_LIBPRI
+# A hack to use the second, "bristuffed" copy of libpri that exists
+# e.g. in the Debian libpri-dev package. If set to a non-empty value, 
+# live_ast will edit makeopts to use that second copy after ./configure
+# is run.
+#LIVE_AST_BRISTUFFED_LIBPRI=yes
+#
+# LIVE_AST_FOR_SYSTEM
+# When generating asterisk.conf, use most components from the installed 
+# system. Also provide a sane var-run directory for those of us who want 
+# to do the right thing and run asterisk as non-root.
+#LIVE_AST_FOR_SYSTEM=yes
+####################### End Samples
+
+BASE_DIR="$PWD/live"
+AST_CONF_DIR="$BASE_DIR/etc/asterisk"
+AST_CONF="$AST_CONF_DIR/asterisk.conf"
+AST_BIN="$BASE_DIR/usr/sbin/asterisk"
+GDB_INIT="$BASE_DIR/gdbinit"
+LIVE_CONF="$BASE_DIR/live.conf"
+DISABLED_MODS="chan_h323 pbx_dundi"
+DISABLED_MODS_FILE="modules-disabled.conf"
+
+if [ -r "$LIVE_CONF" ]; then . "$LIVE_CONF"; fi
+
+if [ "$LIVE_AST_LIBPRI_PATH" != '' ]; then
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-pri=$LIVE_AST_LIBPRI_PATH"
+  LIVE_AST_LD_PATH_EXTRA="$LIVE_AST_LD_PATH_EXTRA $LIVE_AST_LIBPRI_PATH"
+fi
+
+if [ "$LIVE_AST_ZAPTEL_PATH" != '' ]; then
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-tonezone=$LIVE_AST_ZAPTEL_PATH"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-zaptel=$LIVE_AST_ZAPTEL_PATH"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-zaptel_transcode=$LIVE_AST_ZAPTEL_PATH"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-zaptel_vldtmf=$LIVE_AST_ZAPTEL_PATH"
+  LIVE_AST_LD_PATH_EXTRA="$LIVE_AST_LD_PATH_EXTRA $LIVE_AST_ZAPTEL_PATH"
+fi
+
+if [ "$LIVE_AST_DAHDI_PATH" != '' ]; then
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-dahdi=$LIVE_AST_DAHDI_PATH"
+fi
+
+if [ "$LIVE_AST_DAHDITOOLS_PATH" != '' ]; then
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-tonezone=$LIVE_AST_DAHDITOOLS_PATH"
+  LIVE_AST_LD_PATH_EXTRA="$LIVE_AST_LD_PATH_EXTRA $LIVE_AST_DAHDITOOLS_PATH"
+fi
+
+if [ "$LIVE_AST_ZPALIVE_PATH" != '' ]; then
+  ZAPLIVE_USR_DIR="$LIVE_AST_ZPALIVE_PATH/live/usr"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-tonezone=$ZAPLIVE_USR_DIR"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-zaptel=$ZAPALIVE_USR_DIR"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-zaptel_transcode=$ZAPALIVE_USR_DIR"
+  LIVE_AST_CONFIGURE_PARAMS="$LIVE_AST_CONFIGURE_PARAMS --with-zaptel_vldtmf=$ZAPALIVE_USR_DIR"
+  LIVE_AST_LD_PATH_EXTRA="$LIVE_AST_LD_PATH_EXTRA $ZAPLIVE_USR_DIR/lib"
+fi
+
+# gets rid of excessive spaces. Leves nothing if there were only white spaces:
+LIVE_AST_LD_PATH_EXTRA=`echo $LIVE_AST_LD_PATH_EXTRA | tr ' ' :`
+
+set_ld_env() {
+  if [ "$LIVE_AST_LD_PATH_EXTRA$LD_LIBRARY_PATH" = '' ]; then return; fi
+
+  LD_LIBRARY_PATH=`echo $LIVE_AST_LD_PATH_EXTRA $LD_LIBRARY_PATH | tr ' ' :`
+  export LD_LIBRARY_PATH
+}
+
+# if live.conf does not exist, generate it from the sample
+gen_live_conf() {
+  if [ -r $LIVE_CONF ]; then return; fi
+  # TODO: `dirname $LIVE_CONF` in case someone redefines it?
+  mkdir -p $BASE_DIR
+  sed -n -e '/^#* Begin Samples/,/^#* End Samples/p' "$0" \
+  | sed  -e '/^#* \(Begin\|End\) Samples/d' >"$LIVE_CONF"
+}
+
+case "$1" in
+configure)
+  shift
+  ./configure $LIVE_AST_CONFIGURE_PARAMS "$@"
+  if [ "$LIVE_AST_FORCE_DEF_CONF" != '' ]; then
+    rm -f menuselect.makeopts
+  fi
+  if [ "$LIVE_AST_BRISTUFFED_LIBPRI" != '' ]; then
+    sed -i \
+      -e 's|^\(PRI_INCLUDE=\).*|\1-I/usr/include/bristuffed|' \
+      -e 's|^\(PRI_LIB=\).*|\1-lpri-bristuffed|' \
+      makeopts
+  fi
+  ;;
+install)
+  make install DESTDIR="$BASE_DIR"
+  ;;
+samples)
+  make samples DESTDIR="$BASE_DIR"
+  if [ "$LIVE_AST_FOR_SYSTEM" != '' ]; then
+    cat <<EOF >"$AST_CONF"
+[directories]
+; rem-out any of the following to use Asterisk's defaults:
+;astetcdir    => $BASE_DIR/etc/asterisk
+astmoddir    => $BASE_DIR/usr/lib/asterisk/modules
+;astvarlibdir => $BASE_DIR/var/lib/asterisk
+;astdatadir   => $BASE_DIR/var/lib/asterisk
+;astagidir    => $BASE_DIR/var/lib/asterisk/agi
+;astrundir    => $BASE_DIR/var/run
+astrundir    => /var/run/asterisk
+;astspooldir  => $BASE_DIR/var/spool/asterisk
+;astlogdir    => $BASE_DIR/var/log/asterisk
+EOF
+  else
+    cat <<EOF >"$AST_CONF"
+[directories]
+; rem-out any of the following to use Asterisk's defaults:
+astetcdir    => $BASE_DIR/etc/asterisk
+astmoddir    => $BASE_DIR/usr/lib/asterisk/modules
+astvarlibdir => $BASE_DIR/var/lib/asterisk
+astdatadir   => $BASE_DIR/var/lib/asterisk
+astagidir    => $BASE_DIR/var/lib/asterisk/agi
+astrundir    => $BASE_DIR/var/run
+astspooldir  => $BASE_DIR/var/spool/asterisk
+astlogdir    => $BASE_DIR/var/log/asterisk
+EOF
+  fi
+  # disable some modules that bind on a port that is already in use by a
+  # main Asterisk copy, and would crash asterisk in failing:
+  rm -f "$AST_CONF_DIR/$DISABLED_MODS_FILE"
+  for mod in $DISABLED_MODS; do
+    echo "noload => $mod.so" >> "$AST_CONF_DIR/$DISABLED_MODS_FILE"
+  done
+  echo "#include $DISABLED_MODS_FILE" >> "$AST_CONF_DIR/modules.conf"
+
+  cat <<EOF >"$GDB_INIT"
+set args -C "$AST_CONF" -c
+EOF
+cat <<EOF >"$BASE_DIR/asterisk"
+#!/bin/sh
+# a wrapper to run asterisk from the "live" copy:
+cd "$PWD"
+exec "$0" run "\$@"
+EOF
+  chmod +x "$BASE_DIR/asterisk"
+  # Generate a sample config file for live_ast itself:
+  gen_live_conf
+  ;;
+conf-file)
+  # Just regenerate live.conf from the sample if it does not already exist:
+  gen_live_conf
+  ;;
+run)
+  shift
+  set_ld_env
+  $AST_BIN -C $AST_CONF "$@"
+  ;;
+gdb)
+  set_ld_env
+  gdb -x $GDB_INIT $AST_BIN
+  ;;
+*)
+  echo "$0: Usage:              Equivalent of:"
+  echo "$0 configure [params]   ./configure [params]"
+  echo "$0 install              make install"
+  echo "$0 samples              make samples"
+  echo "$0 run [params]         asterisk [params]"
+  echo "$0 gdb                  gdb asterisk"
+  echo "$0 conf-file            create live.conf if it does exist"
+  exit 1
+  ;;
+esac

Propchange: trunk/contrib/scripts/live_ast
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/contrib/scripts/live_ast
------------------------------------------------------------------------------
    svn:executable = *

Propchange: trunk/contrib/scripts/live_ast
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: trunk/contrib/scripts/live_ast
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the svn-commits mailing list