From b7cb844ac814f8c7730a345fdf4d1f0a9b13da40 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 22 Sep 2010 15:30:42 +1000 Subject: [PATCH] build: make all.bash run on Ubuntu ARM Sent from my phone. R=adg CC=golang-dev https://golang.org/cl/2192049 --- doc/install.html | 8 +++--- src/pkg/Makefile | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ src/run.bash | 3 +++ test/run | 28 ++++++++++++++++++--- 4 files changed, 96 insertions(+), 8 deletions(-) diff --git a/doc/install.html b/doc/install.html index d184a7209b..2591de9415 100644 --- a/doc/install.html +++ b/doc/install.html @@ -44,10 +44,10 @@ architectures. arm (a.k.a. ARM); 5g,5l,5c,5a
- 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.
diff --git a/src/pkg/Makefile b/src/pkg/Makefile index da44167c34..78bb4b8df8 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+=time # no syscall.Kill, syscall.SIGCHLD for sleep tests 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 304b3e9f5a..4341d9da6e 100755 --- a/src/run.bash +++ b/src/run.bash @@ -59,6 +59,7 @@ fi GOMAXPROCS=10 gomake test ) || exit $? +[ "$GOARCH" == arm ] || (xcd cmd/gofmt if $rebuild; then gomake clean; @@ -75,6 +76,7 @@ fi 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 @@ if [[ $(uname | tr A-Z a-z | sed 's/mingw/windows/') != *windows* ]]; then 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 016094c90a..bb709cc9f9 100755 --- a/test/run +++ b/test/run @@ -49,12 +49,32 @@ ulimit -c 0 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 @@ do 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 @@ done | # clean up some stack noise /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