build: make all.bash run on Ubuntu ARM

Sent from my phone.

R=adg
CC=golang-dev
https://golang.org/cl/2192049
diff --git a/doc/install.html b/doc/install.html
index d184a72..2591de9 100644
--- a/doc/install.html
+++ b/doc/install.html
@@ -44,10 +44,10 @@
 	<code>arm</code> (a.k.a. <code>ARM</code>); <code>5g,5l,5c,5a</code>
 </dt>
 <dd>
-	Still a work in progress.
-	It only supports Linux binaries, floating point is weak, and the
-	optimizer is not enabled.
-	Tested against QEMU and an android phone.
+	Incomplete.
+	It only supports Linux binaries, floating point is weak,
+	it has code generation bugs, and the optimizer is not enabled.
+	Tested against a Nexus One.
 </dd>
 </dl>
 
diff --git a/src/pkg/Makefile b/src/pkg/Makefile
index da44167..78bb4b8 100644
--- a/src/pkg/Makefile
+++ b/src/pkg/Makefile
@@ -9,6 +9,8 @@
 #
 # to rebuild the dependency information in Make.deps.
 
+include ../Make.inc
+
 all: install
 
 DIRS=\
@@ -197,6 +199,69 @@
 NOTEST+=websocket    # no network
 endif
 
+ifeq ($(GOARCH),arm)
+# Tests that fail, probably 5g bugs.
+# Disable so that dashboard all.bash can catch regressions.
+NOTEST+=archive/tar
+NOTEST+=asn1
+NOTEST+=big
+NOTEST+=bytes
+NOTEST+=cmath
+NOTEST+=compress/gzip
+NOTEST+=compress/zlib
+NOTEST+=crypto/aes
+NOTEST+=crypto/block
+NOTEST+=crypto/blowfish
+NOTEST+=crypto/ocsp
+NOTEST+=crypto/rc4
+NOTEST+=crypto/rsa
+NOTEST+=crypto/subtle
+NOTEST+=crypto/tls
+NOTEST+=crypto/x509
+NOTEST+=debug/dwarf
+NOTEST+=debug/elf
+NOTEST+=debug/macho
+NOTEST+=encoding/base64
+NOTEST+=encoding/binary
+NOTEST+=encoding/pem
+NOTEST+=exp/datafmt
+NOTEST+=exp/eval
+NOTEST+=expvar
+NOTEST+=flag
+NOTEST+=fmt
+NOTEST+=go/printer
+NOTEST+=gob
+NOTEST+=http
+NOTEST+=image/png
+NOTEST+=io
+NOTEST+=json
+NOTEST+=log
+NOTEST+=math
+NOTEST+=mime
+NOTEST+=mime/multipart
+NOTEST+=net
+NOTEST+=netchan
+NOTEST+=os
+NOTEST+=os/signal
+NOTEST+=patch
+NOTEST+=reflect
+NOTEST+=regexp
+NOTEST+=rpc
+NOTEST+=rpc/jsonrpc
+NOTEST+=scanner
+NOTEST+=strconv
+NOTEST+=strings
+NOTEST+=syslog
+NOTEST+=tabwriter
+NOTEST+=template
+NOTEST+=testing/quick
+NOTEST+=time
+NOTEST+=utf16
+NOTEST+=utf8
+NOTEST+=websocket
+NOTEST+=xml
+endif
+
 TEST=\
 	$(filter-out $(NOTEST),$(DIRS))
 
diff --git a/src/run.bash b/src/run.bash
index 304b3e9..4341d9d 100755
--- a/src/run.bash
+++ b/src/run.bash
@@ -59,6 +59,7 @@
 GOMAXPROCS=10 gomake test
 ) || exit $?
 
+[ "$GOARCH" == arm ] ||
 (xcd cmd/gofmt
 if $rebuild; then
 	gomake clean;
@@ -75,6 +76,7 @@
 time gomake test
 ) || exit $?
 
+[ "$GOARCH" == arm ] ||
 (xcd ../misc/cgo/stdio
 if [[ $(uname | tr A-Z a-z | sed 's/mingw/windows/') != *windows* ]]; then
 	gomake clean
@@ -93,6 +95,7 @@
 fi
 ) || exit $?
 
+[ "$GOARCH" == arm ] ||
 (xcd ../test/bench
 if [[ $(uname | tr A-Z a-z | sed 's/mingw/windows/') != *windows* ]]; then
 	./timing.sh -test
diff --git a/test/run b/test/run
index 016094c..bb709cc 100755
--- a/test/run
+++ b/test/run
@@ -49,12 +49,32 @@
 
 true >pass.out >times.out
 
+exclude=false	# exclude nothing
+golden=golden.out
+
+filterout() {
+	grep '^'"$2"'$' $1 >/dev/null
+}
+
+if [ "$GOARCH" = "arm" ]; then
+	if [ "$GORUN" = "" ]; then
+		exclude="filterout fail-arm-native.txt"
+		golden=golden-arm-native.out
+	else
+		exclude="filterout fail-arm.txt"
+		golden=golden-arm.out
+	fi
+fi
+
 for dir in . ken chan interface nilptr syntax fixedbugs bugs
 do
 	echo
 	echo '==' $dir'/'
 	for i in $(ls $dir/*.go 2>/dev/null)
-	do
+	do (
+		if $exclude $i; then
+			exit 0  # continues for loop
+		fi
 		export F=$(basename $i .go)
 		export D=$dir
 		sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|g' >$RUNFILE
@@ -87,7 +107,7 @@
 			echo $i >>pass.out
 		fi
 		echo $(awk 'NR==1{print $2}' $TMP2FILE) $D/$F >>times.out
-	done
+	) done
 done | # clean up some stack noise
 	egrep -v '^(r[0-9a-z]+|[cfg]s)  +0x'  |
 	sed '/tmp.*Bus error/s/.*Bus/Bus/; /tmp.*Trace.BPT/s/.*Trace/Trace/
@@ -103,9 +123,9 @@
 		/Segmentation fault/d
 		/^qemu: uncaught target signal 11 (Segmentation fault) - exiting/d' > run.out
 
-rm  -f $RUNFILE $TMP1FILE $TMP2FILE *.$A *.a $A.out
+rm -f $RUNFILE $TMP1FILE $TMP2FILE *.$A *.a $A.out
 diffmsg=""
-if ! diff golden.out run.out
+if ! diff $golden run.out
 then
 	diffmsg="; test output differs"
 	failed=1