This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] gfortran testsuite: implicitly cleanup-modules
- From: Bernhard Reutner-Fischer <rep dot dot dot nop at gmail dot com>
- To: Janis Johnson <janis_johnson at mentor dot com>
- Cc: Mike Stump <mikestump at comcast dot net>, gcc-patches at gcc dot gnu dot org, ro at cebitec dot uni-bielefeld dot de
- Date: Fri, 29 Jun 2012 00:27:13 +0200
- Subject: Re: [PATCH] gfortran testsuite: implicitly cleanup-modules
- References: <1330636193-25099-1-git-send-email-rep.dot.nop@gmail.com> <4F594879.7080203@sfr.fr> <20120313163858.GB29875@mx.loc> <3D0569AE-048B-40F9-B916-523B32670B6B@comcast.net> <20120315123954.GA27018@mx.loc> <CAFiYyc31bzxVtHdwtEGWL-VatXu8o=fLX9FLkbtnci_ObRrAzg@mail.gmail.com> <20120315165632.GC24587@mx.loc> <20120315193547.GC16117@tyan-ft48-01.lab.bos.redhat.com> <20120316100445.GA30354@mx.loc> <20120316145958.GA19127@mx.loc>
Rehi Janis,
Good to see you active again :)
Perhaps you want to pursue this? We'd need to suggest this to dejagnu,
have it in a release and bump the minimum required deja version of gcc.
So it may take time but IMO would be a worthwhile cleanup.
Or do you see a better way to handle this properly?
The first patch below is the dejagnu part, the other patch is the
corresponding follow-up for gcc.
cheers,
Bernhard
On Fri, Mar 16, 2012 at 03:59:58PM +0100, Bernhard Reutner-Fischer wrote:
>On Fri, Mar 16, 2012 at 11:04:45AM +0100, Bernhard Reutner-Fischer wrote:
>
>>The underlying problem is that dejagnu's runtest.exp only allows for a
>>single "libdir" where it searches for includes -- see comment in
>>libgomp.exp and libitm.exp
>>
>>While just adding more and more load_gcc_lib calls to users outside of
>>gcc/ is the easy way out, it is (IMHO) error prone (i ran make check
>>just in gcc and not in toplevel, fixed my script now).
>>
>>It would be desirable if dejagnu would just find all the currently
>>load_gcc_lib'ed files on its own, via load_lib.
>>One could
>>- teach dejagnu to treat libdir as a list of paths
>
>The attached works for me for a toplevel make -k check (double-checked
>with individual make check in lib{gomp,itm}). I do not intend to pursue
>this any further.
>runtest.exp: add libdirs list for load_lib()
>
>libgomp wants to load .exp files from ../gcc/testsuite/lib.
>Instrument load_lib to be able to find the files.
>Previously we used to have a helper proc that had to first load all
>dependent .exp manually and then, again manually, the desired .exp.
>
>2012-03-16 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
>
> * runtest.exp (libdirs): New global list.
> (load_lib): Append libdirs to search_and_load_files directories.
>
>diff --git a/runtest.exp b/runtest.exp
>index 4bfed83..8e6a7de 100644
>--- a/runtest.exp
>+++ b/runtest.exp
>@@ -589,7 +589,7 @@ proc lookfor_file { dir name } {
> # source tree, (up one or two levels), then in the current dir.
> #
> proc load_lib { file } {
>- global verbose libdir srcdir base_dir execpath tool
>+ global verbose libdir libdirs srcdir base_dir execpath tool
> global loaded_libs
>
> if {[info exists loaded_libs($file)]} {
>@@ -597,8 +597,11 @@ proc load_lib { file } {
> }
>
> set loaded_libs($file) ""
>-
>- if { [search_and_load_file "library file" $file [list ../lib $libdir $libdir/lib [file dirname [file dirname $srcdir]]/dejagnu/lib $srcdir/lib $execpath/lib . [file dirname [file dirname [file dirname $srcdir]]]/dejagnu/lib]] == 0 } {
>+ set search_dirs [list ../lib $libdir $libdir/lib [file dirname [file dirname $srcdir]]/dejagnu/lib $srcdir/lib $execpath/lib . [file dirname [file dirname [file dirname $srcdir]]]/dejagnu/lib]
>+ if {[info exists libdirs]} {
>+ lappend search_dirs $libdirs
>+ }
>+ if { [search_and_load_file "library file" $file $search_dirs ] == 0 } {
> send_error "ERROR: Couldn't find library file $file.\n"
> exit 1
> }
>@@ -652,6 +655,8 @@ set libdir [file dirname $execpath]/dejagnu
> if {[info exists env(DEJAGNULIBS)]} {
> set libdir $env(DEJAGNULIBS)
> }
>+# list of extra directories for load_lib
>+set libdirs {}
>
> verbose "Using $libdir to find libraries"
>
>libgomp/ChangeLog
>
>2012-03-16 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
>
> * testsuite/lib/libgomp.exp: Set libdirs. Remove now redundant
> manual inclusion of gfortran-dg's dependencies.
>
>libitm/ChangeLog
>
>2012-03-16 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
>
> * testsuite/lib/libitm.exp: Set libdirs. Remove now redundant
> manual inclusion of gcc-dg's dependencies.
>
>
>diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
>index 02909f8..54e1e652 100644
>--- a/libgomp/testsuite/lib/libgomp.exp
>+++ b/libgomp/testsuite/lib/libgomp.exp
>@@ -1,32 +1,12 @@
>-# Damn dejagnu for not having proper library search paths for load_lib.
>-# We have to explicitly load everything that gcc-dg.exp wants to load.
>+global libdirs
>+lappend libdirs $srcdir/../../gcc/testsuite/lib
>
>-proc load_gcc_lib { filename } {
>- global srcdir loaded_libs
>+load_lib dg.exp
>
>- load_file $srcdir/../../gcc/testsuite/lib/$filename
>- set loaded_libs($filename) ""
>-}
>+# BUG: gcc-dg calls gcc-set-multilib-library-path but does not load gcc-defs!
>+load_lib gcc-defs.exp
>
>-load_lib dg.exp
>-load_gcc_lib file-format.exp
>-load_gcc_lib target-supports.exp
>-load_gcc_lib target-supports-dg.exp
>-load_gcc_lib scanasm.exp
>-load_gcc_lib scandump.exp
>-load_gcc_lib scanrtl.exp
>-load_gcc_lib scantree.exp
>-load_gcc_lib scanipa.exp
>-load_gcc_lib prune.exp
>-load_gcc_lib target-libpath.exp
>-load_gcc_lib wrapper.exp
>-load_gcc_lib gcc-defs.exp
>-load_gcc_lib torture-options.exp
>-load_gcc_lib timeout.exp
>-load_gcc_lib timeout-dg.exp
>-load_gcc_lib fortran-modules.exp
>-load_gcc_lib gcc-dg.exp
>-load_gcc_lib gfortran-dg.exp
>+load_lib gfortran-dg.exp
>
> set dg-do-what-default run
>
>diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp
>index f322ed5..1ac8f31 100644
>--- a/libitm/testsuite/lib/libitm.exp
>+++ b/libitm/testsuite/lib/libitm.exp
>@@ -12,34 +12,15 @@
> # along with this program; if not, write to the Free Software
> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
>
>-# Damn dejagnu for not having proper library search paths for load_lib.
>-# We have to explicitly load everything that gcc-dg.exp wants to load.
>+global libdirs
>+lappend libdirs $srcdir/../../gcc/testsuite/lib
>
>-proc load_gcc_lib { filename } {
>- global srcdir loaded_libs
>+load_lib dg.exp
>
>- load_file $srcdir/../../gcc/testsuite/lib/$filename
>- set loaded_libs($filename) ""
>-}
>+# BUG: gcc-dg calls gcc-set-multilib-library-path but does not load gcc-defs!
>+load_lib gcc-defs.exp
>
>-load_lib dg.exp
>-load_gcc_lib file-format.exp
>-load_gcc_lib target-supports.exp
>-load_gcc_lib target-supports-dg.exp
>-load_gcc_lib scanasm.exp
>-load_gcc_lib scandump.exp
>-load_gcc_lib scanrtl.exp
>-load_gcc_lib scantree.exp
>-load_gcc_lib scanipa.exp
>-load_gcc_lib prune.exp
>-load_gcc_lib target-libpath.exp
>-load_gcc_lib wrapper.exp
>-load_gcc_lib gcc-defs.exp
>-load_gcc_lib torture-options.exp
>-load_gcc_lib timeout.exp
>-load_gcc_lib timeout-dg.exp
>-load_gcc_lib fortran-modules.exp
>-load_gcc_lib gcc-dg.exp
>+load_lib gcc-dg.exp
>
> set dg-do-what-default run
>