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