gotest: force test package to be imported first
When compiling the x_test package, force the test package to be imported first. That ensures that we will see the types defined in the test package before the types defined in the non-test version of the package. This matters if the types differ in some way, such as by adding a new method. This avoids a failure in internal/poll on Solaris, in which the test package adds a method to a type (FD.EOFError). I think it was Solaris- specific because files are sorted in a different order by default. The go tool handles this kind of thing correctly, by rebuilding dependent packages. This is just a hack sufficient to run the libgo testsuite without using the go tool. Fixes https://gcc.gnu.org/PR91712 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194637 From-SVN: r275648
This commit is contained in:
parent
c5748fdbf4
commit
d694576e17
|
@ -1,4 +1,4 @@
|
||||||
bf4832d604e7522dee78fca76de220b62a131d54
|
1f4ce28409a2d9d4045b1085de55c46de8759d1c
|
||||||
|
|
||||||
The first line of this file holds the git revision number of the last
|
The first line of this file holds the git revision number of the last
|
||||||
merge done from the gofrontend repository.
|
merge done from the gofrontend repository.
|
||||||
|
|
|
@ -419,10 +419,12 @@ esac
|
||||||
# Split $gofiles into external gofiles (those in *_test packages)
|
# Split $gofiles into external gofiles (those in *_test packages)
|
||||||
# and internal ones (those in the main package).
|
# and internal ones (those in the main package).
|
||||||
xgofiles=
|
xgofiles=
|
||||||
|
xpackage=
|
||||||
for f in $gofiles; do
|
for f in $gofiles; do
|
||||||
package=`grep '^package[ ]' $f | sed 1q`
|
package=`grep '^package[ ]' $f | sed 1q`
|
||||||
case "$package" in
|
case "$package" in
|
||||||
*_test)
|
*_test)
|
||||||
|
xpackage=`echo $package | sed -e 's/package[ ]//' -e 's/[ ]*$//'`
|
||||||
xgofiles="$xgofiles $f"
|
xgofiles="$xgofiles $f"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -471,10 +473,17 @@ $GC -g $pkgpatharg $prefixarg -c -I . -fno-toplevel-reorder -o _gotest_.o $gofil
|
||||||
if $havex; then
|
if $havex; then
|
||||||
mkdir -p `dirname $package`
|
mkdir -p `dirname $package`
|
||||||
cp _gotest_.o `dirname $package`/lib`basename $package`.a
|
cp _gotest_.o `dirname $package`/lib`basename $package`.a
|
||||||
|
|
||||||
|
# Force the test version of the package to be imported first,
|
||||||
|
# so that it's type definitions will be used, in case any new
|
||||||
|
# methods appear in export_test.go files.
|
||||||
|
echo "package $xpackage" > _first_test.go
|
||||||
|
echo 'import _ "'$package'"' >> _first_test.go
|
||||||
|
|
||||||
if test "$trace" = "true"; then
|
if test "$trace" = "true"; then
|
||||||
echo $GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile $xgofiles
|
echo $GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile _first_test.go $xgofiles
|
||||||
fi
|
fi
|
||||||
$GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile $xgofiles
|
$GC -g $xpkgpatharg -c -I . -fno-toplevel-reorder -o $xofile _first_test.go $xgofiles
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# They all compile; now generate the code to call them.
|
# They all compile; now generate the code to call them.
|
||||||
|
|
Loading…
Reference in New Issue