PATCH: Fix file copy in gcc testsuite

H. J. Lu hjl@lucon.org
Sat Apr 26 04:58:00 GMT 2003


Gcc testsuite has the same problem I fixed in this thread:

http://gcc.gnu.org/ml/gcc-patches/2001-08/msg00778.html

I recycled my last patch here. Tested on Linux/x86.


H.J.
-------------- next part --------------
2003-04-25  H.J. Lu  (hjl@gnu.org)

	* lib/copy-file.exp: New. Implement gcc_copy_files.

	* g++.dg/pch/pch.exp: Load copy-file.exp
	(main loop): Use gcc_copy_files instead of "file copy".
	* gcc.dg/pch/pch.exp: Likewise.

--- gcc/testsuite/g++.dg/pch/pch.exp.symlink	2003-04-10 16:25:14.000000000 -0700
+++ gcc/testsuite/g++.dg/pch/pch.exp	2003-04-25 17:12:10.000000000 -0700
@@ -19,6 +19,7 @@
 
 # Load support procs.
 load_lib "g++-dg.exp"
+load_lib "copy-file.exp"
 
 # Initialize `dg'.
 dg-init
@@ -48,7 +49,7 @@ foreach test [lsort [glob -nocomplain $s
 	# For the header files, the default is to precompile.
 	set dg-do-what-default precompile
 	catch { file delete "$bname.H" }
-	file copy "[file rootname $test].Hs" "$bname.H"
+	gcc_copy_files "[file rootname $test].Hs" "$bname.H"
 	dg-test -keep-output "$bname.H" $flags ""
 
 	# For the rest, the default is to compile to .s.
@@ -62,7 +63,7 @@ foreach test [lsort [glob -nocomplain $s
 	    file delete "$bname.H.gch"
 	    if { [ file exists "$bname.s" ] } {
 		file rename "$bname.s" "$bname.s-gch"
-		file copy "[file rootname $test].Hs" "$bname.H"
+		gcc_copy_files "[file rootname $test].Hs" "$bname.H"
 		dg-test -keep-output $test $flags "-I."
 		set tmp [ diff "$bname.s" "$bname.s-gch" ]
 		if { $tmp == 0 } {
--- gcc/testsuite/gcc.dg/pch/pch.exp.symlink	2003-04-10 16:25:15.000000000 -0700
+++ gcc/testsuite/gcc.dg/pch/pch.exp	2003-04-25 17:11:02.000000000 -0700
@@ -19,6 +19,7 @@
 
 # Load support procs.
 load_lib gcc-dg.exp
+load_lib copy-file.exp
 
 # Initialize `dg'.
 dg-init
@@ -51,7 +52,7 @@ foreach test [lsort [glob -nocomplain $s
 	# For the header files, the default is to precompile.
 	set dg-do-what-default precompile
 	catch { file delete "$bname.h" }
-	file copy "[file rootname $test].hs" "$bname.h"
+	gcc_copy_files "[file rootname $test].hs" "$bname.h"
 	dg-test -keep-output "$bname.h" $flags ""
 
 	# For the rest, the default is to compile to .s.
@@ -65,7 +66,7 @@ foreach test [lsort [glob -nocomplain $s
 	    file delete "$bname.h.gch"
 	    if { [ file exists "$bname.s" ] } {
 		file rename "$bname.s" "$bname.s-gch"
-		file copy "[file rootname $test].hs" "$bname.h"
+		gcc_copy_files "[file rootname $test].hs" "$bname.h"
 		dg-test -keep-output $test $flags "-I."
 		set tmp [ diff "$bname.s" "$bname.s-gch" ]
 		if { $tmp == 0 } {
--- gcc/testsuite/lib/copy-file.exp.symlink	2003-04-25 17:14:41.000000000 -0700
+++ gcc/testsuite/lib/copy-file.exp	2003-04-25 17:09:50.000000000 -0700
@@ -0,0 +1,33 @@
+#   Copyright (C) 2003 Free Software Foundation, Inc.
+
+# 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# This file defines a proc for copying regular files as well as
+# symlinks.
+
+proc gcc_copy_files {srcfiles dstdir} {
+    foreach f $srcfiles {
+	if { [catch { set symlink [file readlink $f] } x] } then {
+	    file copy -force $f $dstdir
+	} else {
+	    if { [regexp "^/" "$symlink"] } then {
+		file copy -force $symlink $dstdir
+	    } else {
+		set dirname [file dirname $f]
+		file copy -force $dirname/$symlink $dstdir
+	    }
+	}
+    }
+}


More information about the Gcc-patches mailing list