[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