From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4297 invoked by alias); 16 Mar 2012 15:00:18 -0000 Received: (qmail 4277 invoked by uid 22791); 16 Mar 2012 15:00:17 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-we0-f175.google.com (HELO mail-we0-f175.google.com) (74.125.82.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 16 Mar 2012 15:00:03 +0000 Received: by wera1 with SMTP id a1so4586669wer.20 for ; Fri, 16 Mar 2012 08:00:01 -0700 (PDT) Received: by 10.180.95.34 with SMTP id dh2mr7266110wib.15.1331910001387; Fri, 16 Mar 2012 08:00:01 -0700 (PDT) Received: from s42.loc (85-127-93-121.dynamic.xdsl-line.inode.at. [85.127.93.121]) by mx.google.com with ESMTPS id fw5sm14376640wib.0.2012.03.16.07.59.59 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 16 Mar 2012 08:00:00 -0700 (PDT) Received: from cow by s42.loc with local (Exim 4.77) (envelope-from ) id 1S8YdK-00053a-MJ; Fri, 16 Mar 2012 15:59:58 +0100 Date: Fri, 16 Mar 2012 15:00:00 -0000 From: Bernhard Reutner-Fischer To: Jakub Jelinek Cc: Richard Guenther , Mike Stump , Mikael Morin , fortran@gcc.gnu.org, gcc-patches@gcc.gnu.org, ro@cebitec.uni-bielefeld.de Subject: Re: [PATCH] gfortran testsuite: implicitly cleanup-modules Message-ID: <20120316145958.GA19127@mx.loc> References: <20070327170903.GA11737@aon.at> <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> <20120315165632.GC24587@mx.loc> <20120315193547.GC16117@tyan-ft48-01.lab.bos.redhat.com> <20120316100445.GA30354@mx.loc> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="LZvS9be/3tNcYl/X" Content-Disposition: inline In-Reply-To: <20120316100445.GA30354@mx.loc> User-Agent: Mutt/1.5.21 (2010-09-15) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-03/txt/msg01169.txt.bz2 --LZvS9be/3tNcYl/X Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 785 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. --LZvS9be/3tNcYl/X Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="dejagnu-runtest-add-libdirs.00.patch" Content-length: 1910 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 * 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" --LZvS9be/3tNcYl/X Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="gcc-use-dejagnu-libdirs.00.patch" Content-length: 3089 libgomp/ChangeLog 2012-03-16 Bernhard Reutner-Fischer * testsuite/lib/libgomp.exp: Set libdirs. Remove now redundant manual inclusion of gfortran-dg's dependencies. libitm/ChangeLog 2012-03-16 Bernhard Reutner-Fischer * 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 --LZvS9be/3tNcYl/X--