[asterisk-commits] pabelanger: branch pabelanger/non-root r676 - /asterisk/team/pabelanger/non-r...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Aug 1 19:15:57 CDT 2010


Author: pabelanger
Date: Sun Aug  1 19:15:53 2010
New Revision: 676

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=676
Log:
Bring back configure script.  New __check_suid function in runtest.py, clean up files. 

Added:
    asterisk/team/pabelanger/non-root/bootstrap.sh   (with props)
    asterisk/team/pabelanger/non-root/configure   (with props)
    asterisk/team/pabelanger/non-root/configure.ac   (with props)
    asterisk/team/pabelanger/non-root/install-sh   (with props)
Modified:
    asterisk/team/pabelanger/non-root/runtests.py

Added: asterisk/team/pabelanger/non-root/bootstrap.sh
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/pabelanger/non-root/bootstrap.sh?view=auto&rev=676
==============================================================================
--- asterisk/team/pabelanger/non-root/bootstrap.sh (added)
+++ asterisk/team/pabelanger/non-root/bootstrap.sh Sun Aug  1 19:15:53 2010
@@ -1,0 +1,50 @@
+#!/bin/sh
+
+check_for_app() {
+	$1 --version 2>&1 >/dev/null
+	if [ $? != 0 ]
+	then
+		echo "Please install $1 and run bootstrap.sh again!"
+		exit 1
+	fi
+}
+
+# On FreeBSD and OpenBSD, multiple autoconf/automake versions have different names.
+# On Linux, environment variables tell which one to use.
+
+case `uname -sr` in
+	'FreeBSD 4'*)	# FreeBSD 4.x has a different naming
+		MY_AC_VER=259
+		MY_AM_VER=19
+		;;
+	*'BSD'*)
+		MY_AC_VER=-2.62
+		MY_AM_VER=-1.9
+		;;
+	*'SunOS '*)
+		MY_AC_VER=
+		MY_AM_VER=-1.9
+		;;
+	*)
+		MY_AC_VER=
+		MY_AM_VER=
+		AUTOCONF_VERSION=2.60
+		AUTOMAKE_VERSION=1.9
+		export AUTOCONF_VERSION
+		export AUTOMAKE_VERSION
+		;;
+esac
+
+check_for_app autoconf${MY_AC_VER}
+check_for_app autoheader${MY_AC_VER}
+check_for_app automake${MY_AM_VER}
+check_for_app aclocal${MY_AM_VER}
+
+echo "Generating the configure script ..."
+
+aclocal${MY_AM_VER} -I autoconf
+autoconf${MY_AC_VER}
+autoheader${MY_AC_VER}
+automake${MY_AM_VER} --add-missing --copy 2>/dev/null
+
+exit 0

Propchange: asterisk/team/pabelanger/non-root/bootstrap.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/pabelanger/non-root/bootstrap.sh
------------------------------------------------------------------------------
    svn:executable = *

Propchange: asterisk/team/pabelanger/non-root/bootstrap.sh
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/pabelanger/non-root/bootstrap.sh
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Propchange: asterisk/team/pabelanger/non-root/configure
------------------------------------------------------------------------------
    svn:executable = *

Propchange: asterisk/team/pabelanger/non-root/configure
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: asterisk/team/pabelanger/non-root/configure.ac
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/pabelanger/non-root/configure.ac?view=auto&rev=676
==============================================================================
--- asterisk/team/pabelanger/non-root/configure.ac (added)
+++ asterisk/team/pabelanger/non-root/configure.ac Sun Aug  1 19:15:53 2010
@@ -1,0 +1,18 @@
+AC_PREREQ(2.60)
+
+AC_INIT([asterisk], [trunk], [https://issues.asterisk.org])
+
+# cross-compile macros
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+
+# check existence of the package
+AC_CONFIG_SRCDIR([main/asterisk.c])
+
+AC_CONFIG_AUX_DIR(`pwd`)
+
+AC_COPYRIGHT("Asterisk")
+AC_REVISION($Revision$)
+
+
+AC_PROG_CC

Propchange: asterisk/team/pabelanger/non-root/configure.ac
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/pabelanger/non-root/configure.ac
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/pabelanger/non-root/configure.ac
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/pabelanger/non-root/install-sh
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/pabelanger/non-root/install-sh?view=auto&rev=676
==============================================================================
--- asterisk/team/pabelanger/non-root/install-sh (added)
+++ asterisk/team/pabelanger/non-root/install-sh Sun Aug  1 19:15:53 2010
@@ -1,0 +1,269 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS=' 	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0

Propchange: asterisk/team/pabelanger/non-root/install-sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/pabelanger/non-root/install-sh
------------------------------------------------------------------------------
    svn:executable = *

Propchange: asterisk/team/pabelanger/non-root/install-sh
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/pabelanger/non-root/install-sh
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: asterisk/team/pabelanger/non-root/runtests.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/pabelanger/non-root/runtests.py?view=diff&rev=676&r1=675&r2=676
==============================================================================
--- asterisk/team/pabelanger/non-root/runtests.py (original)
+++ asterisk/team/pabelanger/non-root/runtests.py Sun Aug  1 19:15:53 2010
@@ -15,6 +15,7 @@
 import time
 import yaml
 import socket
+import stat
 
 sys.path.append("lib/python")
 
@@ -38,9 +39,15 @@
     def __init__(self, dep):
         self.name = ""
         self.met = False
+        self.reason = None 
         if "app" in dep:
             self.name = dep["app"]
-            self.met = self.__which(self.name) is not None
+            if self.name == "sipp":
+                self.met = self.__check_suid(self.name)
+                if self.met is False:
+                    self.reason = "SUID issue"
+            else:
+                self.met = self.__which(self.name) is not None
         elif "python" in dep:
             self.name = dep["python"]
             try:
@@ -80,6 +87,18 @@
 
         return None
 
+    def __check_suid(self, app):
+        res = self.__which(app)
+        if res is None:
+            return False
+        if os.geteuid() != 0:
+            st = os.stat(res)
+            # Check for suid bit
+            result = (bool(st.st_mode & stat.S_ISUID))
+            return result
+        else:
+            return True
+
     def depend_ipv6(self):
         try:
             s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
@@ -254,20 +273,26 @@
             TestConfig(t["test"], ast_version) for t in self.config["tests"]
         ]
 
+    def __display_dependency(self, t):
+        print "    --> Minimum Version: %s (%s)" % \
+            (str(t.minversion), str(t.minversion_check))
+        if t.maxversion is not None:
+            print "    --> Maximum Version: %s (%s)" % \
+               (str(t.maxversion), str(t.maxversion_check))
+        for d in t.deps:
+            print "    --> Dependency: %s -- Met: %s" % (d.name,
+               str(d.met))
+            if d.met is False:
+                if d.reason is not None:
+                    print "        --> Reason: %s" % d.reason 
+
     def list_tests(self):
         print "Configured tests:"
         i = 1
         for t in self.tests:
             print "%.3d) %s" % (i, t.test_name)
-            print "      --> Summary: %s" % t.summary
-            print "      --> Minimum Version: %s (%s)" % \
-                         (str(t.minversion), str(t.minversion_check))
-            if t.maxversion is not None:
-                print "      --> Maximum Version: %s (%s)" % \
-                             (str(t.maxversion), str(t.maxversion_check))
-            for d in t.deps:
-                print "      --> Dependency: %s -- Met: %s" % (d.name,
-                             str(d.met))
+            print "--> Summary: %s" % t.summary
+            self.__display_dependency(t)
             i += 1
 
     def run(self):
@@ -278,14 +303,7 @@
                 continue
             if t.can_run is False:
                 print "--> Cannot run test '%s'" % t.test_name
-                print "--- --> Minimum Version: %s (%s)" % \
-                    (str(t.minversion), str(t.minversion_check))
-                if t.maxversion is not None:
-                    print "--- --> Maximum Version: %s (%s)" % \
-                        (str(t.maxversion), str(t.maxversion_check))
-                for d in t.deps:
-                    print "--- --> Dependency: %s - %s" % (d.name, str(d.met))
-                print
+                self.__display_dependency(t)
                 continue
 
             print "--> Running test '%s' ...\n" % t.test_name
@@ -373,6 +391,13 @@
             help="Run a single specified test instead of all tests.")
     (options, args) = parser.parse_args(argv)
 
+    if os.path.exists("makeopts") is False:
+        print "****"
+        print "**** The configure script must be executed before running 'runtests.py'."
+        print "****               Please run \"./configure\"."
+        print "****"
+        return 1
+
     # Check to see if this has been executed within a sub directory of an
     # Asterisk source tree.  This is required so that we can execute
     # install and uninstall targets of the Asterisk Makefile in between




More information about the asterisk-commits mailing list