dashboard: add some "exp" trybots back, clean up some config

Fixes golang/go#30781

Change-Id: I2672ca2949837c3cfe8fa6bd8011d1b9b43cca03
Reviewed-on: https://go-review.googlesource.com/c/build/+/167640
Reviewed-by: Bryan C. Mills <bcmills@google.com>
diff --git a/dashboard/builders.go b/dashboard/builders.go
index 6953460..87e0abc 100644
--- a/dashboard/builders.go
+++ b/dashboard/builders.go
@@ -993,21 +993,6 @@
 		}
 	}
 
-	if repo == "exp" {
-		if !strings.HasPrefix(c.Name, "android-") && c.Name != "linux-amd64" {
-			return false
-		}
-	}
-	if repo == "term" {
-		// no code yet in repo
-		return false
-	}
-	if repo == "perf" && c.Name == "linux-amd64-nocgo" {
-		// The "perf" repo requires sqlite, which
-		// requires cgo. Skip the no-cgo builder.
-		return false
-	}
-
 	if p := c.buildsRepo; p != nil {
 		return p(repo, branch, goBranch)
 	}
@@ -1017,7 +1002,13 @@
 	if !c.SplitMakeRun() {
 		return false
 	}
-	if repo == "mobile" {
+	switch repo {
+	case "go":
+		return true
+	case "term":
+		// no code yet in repo
+		return false
+	case "mobile":
 		// Mobile is opt-in.
 		return false
 	}
@@ -1161,9 +1152,8 @@
 				return true
 			}
 		}
-		// TODO: remove items from this set once these repos have go.mod files:
 		switch proj {
-		case "grpc-review", "exp", "mobile", "term":
+		case "grpc-review":
 			return false
 		}
 		return true
@@ -1386,6 +1376,16 @@
 		HostType:  "host-linux-jessie",
 		MaxAtOnce: 1,
 		Notes:     "cgo disabled",
+		buildsRepo: func(repo, branch, goBranch string) bool {
+			switch repo {
+			case "perf":
+				// Requires sqlite, which requires cgo.
+				return false
+			case "mobile":
+				return false
+			}
+			return true
+		},
 		env: []string{
 			"CGO_ENABLED=0",
 			"GO_DISABLE_OUTBOUND_NETWORK=1",
diff --git a/dashboard/builders_test.go b/dashboard/builders_test.go
index 130e4dd..45c8c6e 100644
--- a/dashboard/builders_test.go
+++ b/dashboard/builders_test.go
@@ -155,6 +155,19 @@
 				"windows-amd64-2016",
 			},
 		},
+		{
+			repo:   "exp",
+			branch: "master",
+			want: []string{
+				"freebsd-amd64-12_0",
+				"linux-386",
+				"linux-amd64",
+				"linux-amd64-race",
+				"openbsd-amd64-64",
+				"windows-386-2008",
+				"windows-amd64-2016",
+			},
+		},
 	}
 	for i, tt := range tests {
 		if tt.branch == "" || tt.repo == "" {
@@ -398,6 +411,10 @@
 		{b("linux-amd64-longtest", "net"), onlyPost},
 		{b("linux-amd64-longtest@go1.12", "go"), onlyPost},
 		{b("linux-amd64-longtest@go1.12", "net"), none},
+
+		// Experimental exp repo.
+		{b("linux-amd64", "exp"), both},
+		{b("windows-386-2008", "exp"), both},
 	}
 	for _, tt := range tests {
 		t.Run(tt.br.testName, func(t *testing.T) {