Re: [PATCHv3] Build tests in a separate directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux