mirror of git://gcc.gnu.org/git/gcc.git
gotest: multiple +build lines must all be true
The code that handled +build lines did not correctly require them to all
be true. While looking into this I discovered that multiple +build
lines were mishandled in a different way, because the shell does not
preseve line breaks in backquoted data. Look for the +build token to
tell us when we are switching from one +build line to another.
Reviewed-on: https://go-review.googlesource.com/25460
From-SVN: r239100
This commit is contained in:
parent
ac2c96ab12
commit
9c26dfd08a
|
|
@ -1,4 +1,4 @@
|
||||||
0fb416a7bed076bdfef168480789bb2994a58de3
|
3096ac81185edacbf800783f0f803d1c419dccdd
|
||||||
|
|
||||||
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.
|
||||||
|
|
|
||||||
|
|
@ -313,56 +313,60 @@ x)
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test x$tag1 != xnonmatchingtag -a x$tag2 != xnonmatchingtag; then
|
if test x$tag1 != xnonmatchingtag -a x$tag2 != xnonmatchingtag; then
|
||||||
taglines=`sed '/^package /q' < $f | fgrep '// +build '`
|
tags=`sed '/^package /q' < $f | fgrep '// +build '`
|
||||||
if test "$taglines" = ""; then
|
omatch=true
|
||||||
omatch=true
|
first=true
|
||||||
else
|
match=false
|
||||||
omatch=false
|
for tag in $tags; do
|
||||||
fi
|
reverse=false
|
||||||
for tags in $taglines; do
|
case $tag in
|
||||||
match=false
|
"!"*)
|
||||||
for tag in $tags; do
|
reverse=true
|
||||||
reverse=false
|
tag=`echo $tag | sed -e 's/^!//'`
|
||||||
case $tag in
|
;;
|
||||||
"!"*)
|
esac
|
||||||
reverse=true
|
|
||||||
tag=`echo $tag | sed -e 's/^!//'`
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case $tag in
|
case $tag in
|
||||||
"//" | "+build")
|
"//")
|
||||||
;;
|
;;
|
||||||
$goos | $goarch | cgo)
|
"+build")
|
||||||
match=true
|
if test "$first" = "true"; then
|
||||||
;;
|
first=false
|
||||||
*,*)
|
elif test "$match" = "false"; then
|
||||||
match=true
|
omatch=false
|
||||||
for ctag in `echo $tag | sed -e 's/,/ /g'`; do
|
fi
|
||||||
case $ctag in
|
match=false
|
||||||
$goos | $goarch | cgo)
|
;;
|
||||||
;;
|
$goos | $goarch | cgo)
|
||||||
*)
|
match=true
|
||||||
match=false
|
;;
|
||||||
;;
|
*,*)
|
||||||
esac
|
match=true
|
||||||
done
|
for ctag in `echo $tag | sed -e 's/,/ /g'`; do
|
||||||
;;
|
case $ctag in
|
||||||
esac
|
$goos | $goarch | cgo)
|
||||||
|
;;
|
||||||
if test "$reverse" = true; then
|
*)
|
||||||
if test "$match" = true; then
|
match=false
|
||||||
match=false
|
;;
|
||||||
else
|
esac
|
||||||
match=true
|
done
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test "$reverse" = true; then
|
||||||
|
if test "$match" = true; then
|
||||||
|
match=false
|
||||||
|
else
|
||||||
|
match=true
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
if test "$match" = "true"; then
|
|
||||||
omatch=true
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if test "$match" = "false" -a "$first" = "false"; then
|
||||||
|
omatch=false
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$omatch" = "true"; then
|
if test "$omatch" = "true"; then
|
||||||
gofiles="$gofiles $f"
|
gofiles="$gofiles $f"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue