Mike, These seems to be testing the module management tools. Is there any feasibility of these tests being made part of ltp/testcases/commands directory ? Regards-- Subrata On Mon, 2009-03-09 at 21:35 +0000, Alan Jenkins wrote: > Use tests/build for the -DJUST_TESTING versions of modprobe and friends. > That way we can run the tests without screwing up the normal build > directory. > > This requires that the normal build directory be kept separate from > the source directory. The default build directory is now "build". > This dirty work is done by a heavily fixed-up version of > AC_ENABLE_BUILDDIR from the autoconf macro archive. > > The macro creates a toplevel Makefile, which should handle the > requirements of most users without requiring them to enter the build > directory. > > Signed-off-by: Alan Jenkins <alan-jenkins@xxxxxxxxxxxxxx> > > --- > Changes since version 2: > > 1. Move autoconf extensions to m4 directory, as suggested by Mike > Frysinger. > > 2. Remove sinclude from configure.ac. sinclude is an obsolete alias for > m4_include. aclocal generates m4_include's automatically. > > 3. Make it clear that ax_enable_builddir.m4 has been modified, i.e. it > is out of sync with the autoconf archive. I've sent the patches > to the maintainer now, so hopefully this is a temporary situation. > > diff --git a/.gitignore b/.gitignore > index d447bb3..b71ac35 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -38,6 +38,7 @@ patches > series > > # test output > +tests/build > tests/tmp > tests/data/32 > tests/data/64 > diff --git a/Makefile.am b/Makefile.am > index 3670653..556e21f 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -1,3 +1,5 @@ > +ACLOCAL_AMFLAGS = -I m4 > + > insmod_SOURCES = insmod.c testing.h > lsmod_SOURCES = lsmod.c testing.h > modprobe_SOURCES = modprobe.c logging.c index.c zlibsupport.c config_filter.c logging.h index.h testing.h zlibsupport.h config_filter.h > @@ -26,7 +28,7 @@ dist_man_MANS = $(MAN5) $(MAN8) > # If they haven't overridden mandir, fix it (never /man!) > mandir =$(shell if [ @mandir@ = $(prefix)/man ]; then if [ $(prefix) = / ]; then echo /usr/share/man; else echo $(prefix)/share/man; fi; else echo @mandir@; fi) > > -TESTSUITE := $(shell find tests -type f ! -name '*~') tests/vg-suppressions > +TESTSUITE := $(shell test -e @srcdir@/tests && find @srcdir@/tests -type f ! -name '*~') > > EXTRA_DIST = generate-modprobe.conf modprobe.devfs FAQ CODING stress_modules.sh install-with-care $(SGML) $(man_MANS) $(TESTSUITE) > > diff --git a/configure.ac b/configure.ac > index e6e1a34..f36a1c3 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2,6 +2,8 @@ AC_INIT(module-init-tools,3.7-pre7) > > AC_CANONICAL_SYSTEM > > +AX_ENABLE_BUILDDIR([build]) > + > # Use -no-portability since we're never going to use module-init-tools on > # non-Linux systems and it's reasonable to expect GNU-compatibility here. > AM_INIT_AUTOMAKE([-Wno-portability]) > diff --git a/m4/ax_configure_args.m4 b/m4/ax_configure_args.m4 > new file mode 100644 > index 0000000..2099cf9 > --- /dev/null > +++ b/m4/ax_configure_args.m4 > @@ -0,0 +1,72 @@ > +# =========================================================================== > +# http://autoconf-archive.cryp.to/ax_configure_args.html > +# =========================================================================== > +# > +# SYNOPSIS > +# > +# AX_CONFIGURE_ARGS > +# > +# DESCRIPTION > +# > +# Helper macro for AX_ENABLE_BUILDDIR. > +# > +# The traditional way of starting a subdir-configure is running the script > +# with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have > +# to rely on eval'ing $ac_configure_args however some old autoconf > +# versions do not provide that. To ensure maximum portability of autoconf > +# extension macros this helper can be AC_REQUIRE'd so that > +# $ac_configure_args will alsways be present. > +# > +# Sadly, the traditional "exec $SHELL" of the enable_builddir macros is > +# spoiled now and must be replaced by "eval + exit $?". > +# > +# Example: > +# > +# AC_DEFUN([AX_ENABLE_SUBDIR],[dnl > +# AC_REQUIRE([AX_CONFIGURE_ARGS])dnl > +# eval $SHELL $ac_configure_args || exit $? > +# ...]) > +# > +# LAST MODIFICATION > +# > +# 2008-04-12 > +# > +# COPYLEFT > +# > +# Copyright (c) 2008 Guido U. Draheim <guidod@xxxxxx> > +# > +# 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, see <http://www.gnu.org/licenses/>. > +# > +# As a special exception, the respective Autoconf Macro's copyright owner > +# gives unlimited permission to copy, distribute and modify the configure > +# scripts that are the output of Autoconf when processing the Macro. You > +# need not follow the terms of the GNU General Public License when using > +# or distributing such scripts, even though portions of the text of the > +# Macro appear in them. The GNU General Public License (GPL) does govern > +# all other use of the material that constitutes the Autoconf Macro. > +# > +# This special exception to the GPL applies to versions of the Autoconf > +# Macro released by the Autoconf Macro Archive. When you make and > +# distribute a modified version of the Autoconf Macro, you may extend this > +# special exception to the GPL to apply to your modified version as well. > + > +AC_DEFUN([AX_CONFIGURE_ARGS],[ > + # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args > + if test "${ac_configure_args+set}" != "set" ; then > + ac_configure_args= > + for ac_arg in ${1+"[$]@"}; do > + ac_configure_args="$ac_configure_args '$ac_arg'" > + done > + fi > +]) > diff --git a/m4/ax_enable_builddir.m4 b/m4/ax_enable_builddir.m4 > new file mode 100644 > index 0000000..5fa5722 > --- /dev/null > +++ b/m4/ax_enable_builddir.m4 > @@ -0,0 +1,297 @@ > +# Heavily modified to work for module-init-tools > +# - Alan Jenkins <alan-jenkins@xxxxxxxxxxxxxx> > + > +# =========================================================================== > +# http://autoconf-archive.cryp.to/ax_enable_builddir.html > +# =========================================================================== > +# > +# SYNOPSIS > +# > +# AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])] > +# > +# DESCRIPTION > +# > +# If the current configure was run within the srcdir then we move all > +# configure-files into a subdir and let the configure steps continue > +# there. We provide an option --disable-builddir to suppress the move into > +# a separate builddir. > +# > +# Defaults: > +# > +# $1 = $host (overridden with $HOST) > +# $2 = Makefile.mk > +# $3 = -all > +# > +# This macro must be called before AM_INIT_AUTOMAKE. It creates a default > +# toplevel srcdir Makefile from the information found in the created > +# toplevel builddir Makefile. It just copies the variables and > +# rule-targets, each extended with a default rule-execution that recurses > +# into the build directory of the current "HOST". You can override the > +# auto-dection through `config.guess` and build-time of course, as in > +# > +# make HOST=i386-mingw-cross > +# > +# which can of course set at configure time as well using > +# > +# configure --host=i386-mingw-cross > +# > +# After the default has been created, additional rules can be appended > +# that will not just recurse into the subdirectories and only ever exist > +# in the srcdir toplevel makefile - these parts are read from the $2 = > +# Makefile.mk file > +# > +# The automatic rules are usually scanning the toplevel Makefile for lines > +# like '#### $host |$builddir' to recognize the place where to recurse > +# into. Usually, the last one is the only one used. However, almost all > +# targets have an additional "*-all" rule which makes the script to > +# recurse into _all_ variants of the current HOST (!!) setting. The "-all" > +# suffix can be overriden for the macro as well. > +# > +# a special rule is only given for things like "dist" that will copy the > +# tarball from the builddir to the sourcedir (or $(PUB)) for reason of > +# convenience. > +# > +# LAST MODIFICATION > +# > +# 2008-04-12 > +# > +# COPYLEFT > +# > +# Copyright (c) 2008 Guido U. Draheim <guidod@xxxxxx> > +# > +# 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, see <http://www.gnu.org/licenses/>. > +# > +# As a special exception, the respective Autoconf Macro's copyright owner > +# gives unlimited permission to copy, distribute and modify the configure > +# scripts that are the output of Autoconf when processing the Macro. You > +# need not follow the terms of the GNU General Public License when using > +# or distributing such scripts, even though portions of the text of the > +# Macro appear in them. The GNU General Public License (GPL) does govern > +# all other use of the material that constitutes the Autoconf Macro. > +# > +# This special exception to the GPL applies to versions of the Autoconf > +# Macro released by the Autoconf Macro Archive. When you make and > +# distribute a modified version of the Autoconf Macro, you may extend this > +# special exception to the GPL to apply to your modified version as well. > + > +AC_DEFUN([AX_ENABLE_BUILDDIR],[ > +AC_REQUIRE([AC_CANONICAL_HOST])[]dnl > +AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl > +AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl > +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl > +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl > +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl > +SUB="." > +AC_ARG_ENABLE([builddir], AC_HELP_STRING( > + [--disable-builddir],[disable automatic build in subdir of sources]) > + ,[SUB="$enableval"], [SUB="auto"]) > +if test ".$ac_srcdir_defaulted" != ".no" ; then > +if test ".$srcdir" = ".." ; then > + if test -f config.status ; then > + AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build) > + else > + test ".$SUB" = "." && SUB="." > + test ".$SUB" = ".no" && SUB="." > + test ".$TARGET" = "." && TARGET="$target" > + test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])" > + if test ".$SUB" != ".." ; then # we know where to go and > + AS_MKDIR_P([$SUB]) > + echo __.$SUB.__ > $SUB/conftest.tmp > + cd $SUB > + if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then > + rm conftest.tmp > + AC_MSG_RESULT([continue configure in default builddir "./$SUB"]) > + else > + AC_MSG_ERROR([could not change to default builddir "./$SUB"]) > + fi > + srcdir=`echo "$SUB" | > + sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'` > + # going to restart from subdirectory location > + test -f $srcdir/config.log && mv $srcdir/config.log . > + test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . > + test -f $srcdir/conftest.log && mv $srcdir/conftest.log . > + test -f $srcdir/$cache_file && mv $srcdir/$cache_file . > + AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"}) > + case "[$]0" in # restart > + [/\\]*) eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; > + *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; > + esac ; exit $? > + fi > + fi > +fi fi > +test ".$SUB" = ".auto" && SUB="." > +dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec" > +AC_PATH_PROG(SED,gsed sed, sed) > +AS_VAR_POPDEF([SED])dnl > +AS_VAR_POPDEF([SUB])dnl > +AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status .............. > +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl > +AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl > +AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl > +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl > +pushdef([END],[Makefile.mk])dnl > +pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl > + SRC="$ax_enable_builddir_srcdir" > + if test ".$SUB" = ".." ; then > + if test -f "$TOP/Makefile" ; then > + AC_MSG_NOTICE([skipping TOP/Makefile - left untouched]) > + else > + AC_MSG_NOTICE([skipping TOP/Makefile - not created]) > + fi > + else > + if test -f "$SRC/Makefile" ; then > + a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile` > + test "$a" != "$b" && rm "$SRC/Makefile" > + fi > + if test -f "$SRC/Makefile" ; then > + echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk > + echo " []@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk > + eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" > + if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null > + then rm $SRC/Makefile ; fi > + cp $tmp/conftemp.mk $SRC/makefiles.mk~ ## DEBUGGING > + fi > + if test ! -f "$SRC/Makefile" ; then > + AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile]) > + x='`' ; cat >$tmp/conftemp.sed <<_EOF > +/^\$/n > +x > +/^\$/bS > +x > +/\\\\\$/{H;d;} > +{H;s/.*//;x;} > +bM > +:S > +x > +/\\\\\$/{h;d;} > +{h;s/.*//;x;} > +:M > +s/\\(\\n\\) /\\1 /g > +/^ /d > +/^[[ ]]*[[\\#]]/d > +/^VPATH *=/d > +s/^srcdir *=.*/srcdir = ./ > +s/^top_srcdir *=.*/top_srcdir = ./ > +/[[:=]]/!d > +/^\\./d > +dnl Now handle rules (i.e. lines containing /:/ but not /:=/). > +/:=/b > +/:/!b > +s/:.*/:/ > +s/ / /g > +s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g > +s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/ > +s/ / /g > +/^all all[]_ALL[[ :]]/i\\ > +all-configured : all[]_ALL > +dnl dist-all exists... and would make for dist-all-all > +s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g > +/[]_ALL[]_ALL/d > +a\\ > + @ HOST="\$(HOST)\" \\\\\\ > + ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ > + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ > + ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ > + ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" = "0" ; then : \\\\\\ > + ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ > + ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ > + ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ > + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ > + ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done > +dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree) > +/dist[]_ALL *:/a\\ > + @ HOST="\$(HOST)\" \\\\\\ > + ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ > + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ > + ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ > + ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ > + ; if test "\$\$found" = "0" ; then : \\\\\\ > + ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ > + ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ > + ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ > + ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done > +dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree) > +/dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\ > + @ HOST="\$(HOST)\" \\\\\\ > + ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ > + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ > + ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ > + ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ > + ; if test "\$\$found" = "0" ; then : \\\\\\ > + ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ > + ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ > + ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ > + ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done > +dnl special rule add-on: "distclean" removes all local builddirs completely > +/distclean[]_ALL *:/a\\ > + @ HOST="\$(HOST)\" \\\\\\ > + ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ > + ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ > + ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ > + ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ > + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ > + ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ > + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ > + ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ > + ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ > + ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile > +_EOF > + cp "$tmp/conftemp.sed" "$SRC/makefile.sed~" ## DEBUGGING > + $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile > + if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then > + AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])]) > + cat $SRC/END >>$SRC/Makefile > + fi ; xxxx="####" > + echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile > + # sanity check > + if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then > + AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts]) > + $SED -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $SRC/Makefile \ > + >$SRC/Makefile~ > + (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null > + fi > + else > + xxxx="\\#\\#\\#\\#" > + # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed > + echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed > + $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp > + cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~" ## DEBUGGING > + cp "$tmp/mkfile.tmp" "$SRC/makefiles.out~" ## DEBUGGING > + if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then > + AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure]) > + rm "$tmp/mkfile.tmp" > + else > + AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure]) > + mv "$tmp/mkfile.tmp" "$SRC/Makefile" > + fi > + fi > + AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)]) > + xxxx="####" > + echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile > + fi > +popdef([END])dnl > +AS_VAR_POPDEF([SED])dnl > +AS_VAR_POPDEF([AUX])dnl > +AS_VAR_POPDEF([SRC])dnl > +AS_VAR_POPDEF([TOP])dnl > +AS_VAR_POPDEF([SUB])dnl > +],[dnl > +ax_enable_builddir_srcdir="$srcdir" # $srcdir > +ax_enable_builddir_host="$HOST" # $HOST / $host > +ax_enable_builddir_version="$VERSION" # $VERSION > +ax_enable_builddir_package="$PACKAGE" # $PACKAGE > +ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED > +ax_enable_builddir="$ax_enable_builddir" # $SUB > +])dnl > +]) > diff --git a/tests/runtests b/tests/runtests > index 7de23a3..cbc02f2 100755 > --- a/tests/runtests > +++ b/tests/runtests > @@ -6,6 +6,9 @@ set -e > if [ x"$1" = x"-v" ]; then VERBOSE=1; shift; fi > if [ x"$1" = x"-v" -o x"$1" = x"-vv" ]; then VERBOSE=1; EXTRA_ARGS=-x; shift; fi > > +# Run by "make check" from build directory > +if [ -n "$srcdir" ]; then cd "$srcdir"; fi > + > # Creates a temporary file and exports the name of the file to > # the provided argument. Exits on error. > # > @@ -41,16 +44,28 @@ create_tempfile() > } > export -f create_tempfile > > +if [ ! -e "tests/build" ]; then > + echo Making build directory for tests > + mkdir tests/build > +fi > +if [ ! -e "tests/tmp" ]; then > + echo Making temporary directory for tests > + mkdir tests/tmp > +fi > + > for config in --enable-zlib --disable-zlib; do > echo Building with $config... > - ./configure $config CFLAGS="-DJUST_TESTING -g -Wall" >/dev/null > + > + cd tests/build > + ../../configure $config CFLAGS="-DJUST_TESTING -g -Wall" >/dev/null > make clean >/dev/null > # ismod.static doesn't build with -DJUST_TESTING and --enable-zlib > make insmod.static >/dev/null 2>&1 || touch insmod.static > make all >/dev/null > + cd ../.. > > echo Testing with $config... > - if grep -q CONFIG_USE_ZLIB=1 Makefile; then > + if grep -q CONFIG_USE_ZLIB=1 tests/build/Makefile; then > CONFIG_HAVE_ZLIB=1 > export CONFIG_HAVE_ZLIB > else > @@ -58,7 +73,7 @@ for config in --enable-zlib --disable-zlib; do > fi > > # Create endianness links > - case `file modprobe` in > + case `file tests/build/modprobe` in > *MSB*) ENDIAN=be;; > *LSB*) ENDIAN=le;; > *) echo Unknown endian! >&2; exit 1;; > @@ -66,7 +81,7 @@ for config in --enable-zlib --disable-zlib; do > ln -sfn 64-$ENDIAN tests/data/64 > ln -sfn 32-$ENDIAN tests/data/32 > > - PATH=`pwd`:$PATH > + PATH=`pwd`/tests/build:$PATH > > # By default, we want to look like a new kernel. > MODTEST_UNAME=2.6.27 > @@ -77,16 +92,14 @@ for config in --enable-zlib --disable-zlib; do > > if [ $# -eq 1 ]; then DOING=0; else DOING=1; fi > > - if [ ! -e "tests/tmp" ]; then > - echo Making temporary directory for tests > - mkdir tests/tmp > - fi > - > - > for dir in `find tests/* -type d | sort` > do > - # data and tmp dirs don't contain tests. > - case "$dir" in tests/data*) continue;; tests/tmp*) continue;; esac > + # data, build and tmp dirs don't contain tests. > + case "$dir" in > + tests/data*) continue;; > + tests/build*) continue;; > + tests/tmp*) continue;; > + esac > > if [ -z "$VERBOSE" ]; then > echo -n Running tests for $dir. > @@ -111,8 +124,6 @@ for config in --enable-zlib --disable-zlib; do > fi > else > echo Test for $f failed. > - # Dangerous to leave these lying around > - make distclean >/dev/null > exit 1 > fi > done > diff --git a/tests/test-insmod/03options.sh b/tests/test-insmod/03options.sh > index 321e113..b120564 100755 > --- a/tests/test-insmod/03options.sh > +++ b/tests/test-insmod/03options.sh > @@ -8,7 +8,7 @@ SIZE=`wc -c < tests/test-insmod/02simple.sh` > [ "`insmod -p -f -s tests/test-insmod/02simple.sh`" = "INIT_MODULE: $SIZE " ] > > # --version and -v > -VERSION=`grep ^VERSION Makefile | sed 's/.*=[ ]*//'` > +VERSION=`grep ^VERSION tests/build/Makefile | sed 's/.*=[ ]*//'` > [ "`insmod -V`" = "module-init-tools version $VERSION" ] > [ "`insmod --version`" = "module-init-tools version $VERSION" ] > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-modules" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-modules" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html