aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/api
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2012-03-17 11:20:46 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2012-03-17 11:20:46 -0700
commitf69132d7ad89c6507af6079bd75d2fe50f7f7fe8 (patch)
tree9c90f1dfec3a57871f123faf835ff86451b9b0c8 /src/cmd/api
parent883a96d9509c62fddc03fedf4b711c738dc7ac9e (diff)
downloadgo-f69132d7ad89c6507af6079bd75d2fe50f7f7fe8.tar.xz
build: catch API changes during build
Adds new file api/go1.txt, locking down the current API. Any changes to the API will need to update that file. run.bash (but not make.bash, or Windows) will check for accidental API changes. R=golang-dev, dsymonds, rsc CC=golang-dev https://golang.org/cl/5820070
Diffstat (limited to 'src/cmd/api')
-rw-r--r--src/cmd/api/goapi.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go
index 1782b73ceb..7363f6d824 100644
--- a/src/cmd/api/goapi.go
+++ b/src/cmd/api/goapi.go
@@ -131,7 +131,7 @@ func main() {
if err != nil {
log.Fatalf("Error reading file %s: %v", *checkFile, err)
}
- v1 := strings.Split(string(bs), "\n")
+ v1 := strings.Split(strings.TrimSpace(string(bs)), "\n")
sort.Strings(v1)
v2 := features
take := func(sl *[]string) string {
@@ -139,17 +139,24 @@ func main() {
*sl = (*sl)[1:]
return s
}
+ changes := false
for len(v1) > 0 || len(v2) > 0 {
switch {
case len(v2) == 0 || v1[0] < v2[0]:
fmt.Fprintf(bw, "-%s\n", take(&v1))
+ changes = true
case len(v1) == 0 || v1[0] > v2[0]:
fmt.Fprintf(bw, "+%s\n", take(&v2))
+ changes = true
default:
take(&v1)
take(&v2)
}
}
+ if changes {
+ bw.Flush()
+ os.Exit(1)
+ }
} else {
for _, f := range features {
fmt.Fprintf(bw, "%s\n", f)
@@ -284,7 +291,9 @@ func (w *Walker) WalkPackage(name string) {
}
}
- log.Printf("package %s", name)
+ if *verbose {
+ log.Printf("package %s", name)
+ }
pop := w.pushScope("pkg " + name)
defer pop()