فهرست منبع

added improved and modified onsip.org make_and_install wrapper script to simplify compile and installation. Run ./make_and_install to see docs. NOTE! Currently only tested for bash, patches to improve compatibility are welcome!

Greger V. Teigre 17 سال پیش
والد
کامیت
f3d14753f1
1فایلهای تغییر یافته به همراه153 افزوده شده و 0 حذف شده
  1. 153 0
      make_and_install

+ 153 - 0
make_and_install

@@ -0,0 +1,153 @@
+#!/bin/bash
+
+if [ "$1" == "" ]; then
+  echo "Usage:"
+  echo "$0 [clean|compile|install|nccompile|ncinstall] \"standard|standard-dep|mysql|radius|presence|stable|experimental\" [ignore|stop] [installpath]"
+  echo " "
+  echo "  The first parameter specifies what to do: 'clean' up source tree, 'compile', or compile and 'install'.."
+  echo "  The 'nccompile' and 'ncinstall' do the same as compile and install respectively, but withou"
+  echo "  cleaning the source tree first (this will make make_and_install_output.txt easier to scan for"
+  echo "  errors and takes less time after you have compiled once)."
+  echo " "
+  echo "  The second parameter controls which modules to include. It may list several group names"
+  echo "  separated by space (see INSTALL). If you don't know what to include, use \"standard\" (default) "
+  echo "  or \"standard mysql\" (if you want mysql storage support)."
+  echo " "
+  echo "  ignore|stop(default) specifies whether to stop after found errors or ignore and just install."
+  echo "  If you have errors in a module with dependencies, it will allow you to install the remaining"
+  echo "  modules. This switch is only relevant for install and ncinstall."
+  echo " "
+  echo "  If installpath is not supplied, ser will be installed created in /usr/local and sub-directories."
+  echo " "
+  echo "  Groups and installpath will be stored and reused the next time you use make_and_install unless"
+  echo "  you specify explicitly groups and installpath on the command line."
+  echo " "
+  echo "  Examples:"
+  echo "   $0 compile"
+  echo "     will compile the standard modules without external dependencies."
+  echo "    If the make_and_install_config_* files exist, groups and installpath specified there will be used."
+  echo " "
+  echo "   $0 install \"standard mysql\" stop /tmp/ser"
+  echo "    will compile and install all mysql and standard modules without external dependencies to /tmp/ser"
+  echo "    and stop and not install if there are errors."
+  echo "    make_and_install_config_* files will be created to save the groups and installpath."
+  echo " "
+  echo "   $0 ncinstall \"standard standard-dep\" ignore"
+  echo "    will compile without cleaning first (i.e. skip already made files and modules). All"
+  echo "    modules without (standard) and with (standard-dep) dependencies will be included, but"
+  echo "    if a module won't compile due to lack of installed dependencies, SER will still be installed"
+  echo "    to default directory (/usr/local)."
+  echo "    make_and_install_config_* files will be created to save the groups and installpath."
+  echo " "
+  echo "   $0 clean"
+  echo "    will default clean ALL modules (not only standard). Specify groups to clean only those."
+  echo "    If the make_and_install_config_groups file exists, groups specified there will be used."
+  exit
+fi
+
+action="$1"
+groups="$2"
+whenerrors="$3"
+installpath="$4"
+
+# source the saved config
+if [ "$groups" == "" ]; then
+  echo "Attempting to load groups and install path from files..."
+  echo "  To reset, either specify groups to include and installation path on command line or"
+  echo "  do: rm make_and_install_config_*"
+  echo " "
+  if [ -f ./make_and_install_config_groups ]; then
+    groups="`cat ./make_and_install_config_groups`"
+    echo "    Loaded groups..."
+  fi
+  if [ -f ./make_and_install_config_installpath ]; then
+    installpath="`cat ./make_and_install_config_installpath`"
+    echo "    Loaded installpath..."
+  fi
+fi
+
+if [ "$whenerrors" == "" ]; then
+  whenerrors="stop"
+fi
+if [ "$installpath" == "" ]; then
+  installpath="/usr/local"
+fi
+if [ "$groups" == "" ]; then
+  if [ "$action" == "clean" ]; then
+    groups="standard standard-dep stable experimental"
+  else
+    groups="standard"
+  fi
+fi
+clean="yes"
+if [ "$action" == "clean" ]; then
+  echo "The source tree will be cleaned."
+elif [ "$action" == "compile" ]; then
+  echo "SER core and groups $groups will be compiled."
+elif [ "$action" == "nccompile" ]; then
+  echo "SER core and groups $groups will be compiled without cleaning source tree."
+  clean="no"
+  action="compile"
+elif [ "$action" == "install" ]; then
+  echo "SER core and groups $groups will be compiled and installed to $installpath."
+elif [ "$action" == "ncinstall" ]; then
+  echo "SER core and groups $groups will be compiled and installed to $installpath without cleaning source tree."
+  clean="no"
+  action="install"
+else
+  echo "No such action, please specify clean, compile, or install."
+  exit
+fi
+echo " "
+if [ "$action" == "clean" ]; then
+    echo "----------------------"
+    echo "Cleaning up the SER source tree for $groups... "
+    echo "----------------------"
+    make group_include="$groups" prefix=$installpath proper > /dev/null 2>&1
+    rm -f make_and_install_output.txt
+    rm -f make_and_install_config_*
+    exit
+fi
+
+# save config
+rm -f ./make_and_install_config*
+echo "$groups" > ./make_and_install_config_groups
+echo "$installpath" > ./make_and_install_config_installpath
+
+echo " YOU WILL FIND THE OUTPUT IN make_and_install_output.txt IN THE CURRENT DIRECTORY"
+echo "----------------------"
+if [ "$clean" == "yes" ]; then
+    echo "Cleaning up the source tree... "
+    echo "----------------------"
+    
+    make group_include="$groups" prefix=$installpath proper > /dev/null 2>&1
+    echo "----------------------"
+fi
+echo "Making ser and all modules in the groups \"$groups\". This may take some time..."
+echo "----------------------"
+echo "COMPILING......"
+rm -f ./make_and_install_output.txt
+make group_include="$groups" prefix=$installpath all > ./make_and_install_output.txt  2>&1
+echo "----------------------"
+count=`egrep "error |Error |error:" ./make_and_install_output.txt | wc -l | awk '{print $1}'`
+if [ $count -ne 0 ]; then
+    echo "FOUND ERRORS!"
+    echo "  You may want to run the same $0 command again but use 'nccompile'."
+    echo "  The output file will then be simpler to read."
+    echo "  See make_and_install_output.txt for full output, search for 'error'."
+    if [ "$whenerrors" == "ignore" ]; then
+	echo " "
+	echo "Error ignore switch was specified, moving on despite errors..."
+    else
+	exit
+    fi
+fi
+if [ "$action" == "compile" ]; then
+    echo "'compile' was used; skipping installation."
+    exit
+fi
+
+echo "----------------------"
+echo "Installing SER and all modules to $installpath"
+echo "----------------------"
+make group_include="$groups" prefix=$installpath install >> ./make_and_install_output.txt 2>&1