env/linux-arm64/linaro: update for new builder

Change-Id: I272831718d04885ddb0d9a0198691c4cedd9b3dc
Reviewed-on: https://go-review.googlesource.com/40690
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/dashboard/builders.go b/dashboard/builders.go
index b9ff2c4..7a37dae 100644
--- a/dashboard/builders.go
+++ b/dashboard/builders.go
@@ -224,7 +224,7 @@
 		ReverseAliases: []string{"linux-ppc64le-buildlet"},
 	},
 	"host-linux-arm64-linaro": &HostConfig{
-		Notes:          "Ubuntu wily; run by Go team, from linaro",
+		Notes:          "Ubuntu xenial; run by Go team, from linaro",
 		IsReverse:      true,
 		ExpectNum:      5,
 		env:            []string{"GOROOT_BOOTSTRAP=/usr/local/go-bootstrap"},
diff --git a/env/linux-arm64/Dockerfile b/env/linux-arm64/Dockerfile
new file mode 100644
index 0000000..fe6e18a
--- /dev/null
+++ b/env/linux-arm64/Dockerfile
@@ -0,0 +1,29 @@
+# Copyright 2017 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+FROM mickaelguene/arm64-debian:jessie
+
+ENV DEBIAN_FRONTEND noninteractive
+
+RUN apt-get update && \
+    apt-get install --yes \
+          curl gcc strace ca-certificates \
+          procps lsof psmisc
+
+RUN mkdir /usr/local/go-bootstrap && \
+    curl --silent https://storage.googleapis.com/go-builder-data/gobootstrap-linux-arm64.tar.gz | \
+    tar -C /usr/local/go-bootstrap -zxv
+
+ENV GOROOT_BOOTSTRAP /usr/local/go-bootstrap
+RUN curl -o  /usr/local/bin/stage0 https://storage.googleapis.com/go-builder-data/buildlet-stage0.linux-arm64 && \
+    chmod +x /usr/local/bin/stage0
+
+ENV GO_BUILD_KEY_DELETE_AFTER_READ true
+ENV GO_BUILD_KEY_PATH /buildkey/gobuildkey
+
+# Not really, but we're in a container like Kubernetes, and this makes the syscall
+# package happy:
+ENV IN_KUBERNETES 1
+
+
diff --git a/env/linux-arm64/build.sh b/env/linux-arm64/build.sh
new file mode 100755
index 0000000..80b0532
--- /dev/null
+++ b/env/linux-arm64/build.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+#
+# This is run on the arm64 host, with the Dockerfile in the same directory,
+# by the build scripts in linaro and packet subdirectories.
+
+docker build -t golang.org/linux-arm64 .
\ No newline at end of file
diff --git a/env/linux-arm64/linaro/Dockerfile b/env/linux-arm64/linaro/Dockerfile
new file mode 100644
index 0000000..8229537
--- /dev/null
+++ b/env/linux-arm64/linaro/Dockerfile
@@ -0,0 +1,9 @@
+# Copyright 2017 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+FROM golang.org/linux-arm64
+
+ENV GO_BUILDER_ENV host-linux-arm64-linaro
+
+CMD ["/usr/local/bin/stage0"]
\ No newline at end of file
diff --git a/env/linux-arm64/linaro/NOTES b/env/linux-arm64/linaro/NOTES
deleted file mode 100644
index 08992f8..0000000
--- a/env/linux-arm64/linaro/NOTES
+++ /dev/null
@@ -1,44 +0,0 @@
-Installing one of the linaro machines,
-
-Currently:
-
-Host arm64-go-1
-    User brad.fitzpatrick
-    StrictHostKeyChecking no
-    UserKnownHostsFile /dev/null
-    ProxyCommand ssh -A brad.fitzpatrick@aus-colo.linaro.org nc -q0 r2-a25-go1 %p
-Host arm64-go-2
-    User brad.fitzpatrick
-    StrictHostKeyChecking no
-    UserKnownHostsFile /dev/null
-    ProxyCommand ssh -A brad.fitzpatrick@aus-colo.linaro.org nc -q0 r2-a25-go2 %p
-Host arm64-go-3
-    User brad.fitzpatrick
-    StrictHostKeyChecking no
-    UserKnownHostsFile /dev/null
-    ProxyCommand ssh -A brad.fitzpatrick@aus-colo.linaro.org nc -q0 r2-a25-go3 %p
-Host arm64-go-4
-    User brad.fitzpatrick
-    StrictHostKeyChecking no
-    UserKnownHostsFile /dev/null
-    ProxyCommand ssh -A brad.fitzpatrick@aus-colo.linaro.org nc -q0 r2-a25-go4 %p
-Host arm64-go-5
-    User brad.fitzpatrick
-    StrictHostKeyChecking no
-    UserKnownHostsFile /dev/null
-    ProxyCommand ssh -A brad.fitzpatrick@aus-colo.linaro.org nc -q0 r1-a4-go5 %p
-
-... which permit ssh public key:
-
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnW173QBalrgEiAf6NTEkB+Mi/jO1g+y6p0irn1KJ81gNaMAgbRIbNSARBGDLm0TcNCGRwmKCIQZLSPgXdIRf7wHr9vZWLUvSYTExTU839XxlazhV8LW4jj8qLd78JA4oEnsTVFgMnSbQ1wqk4CMU8/PGK+wEJr9aZ3LUoATCfgJJfqOMq51zzcvLWN9H3QDwVwL9kECgqFnfetwZ+Ie0dLo8oUsLUei0+ajWPwjMFBm8jcuEd3X+CCKkTWe9z7UaKqQWtYkaNFjUs5cQG8ycLcYrgdSAUEiw8PKvf8CDOpSmONOAr/boY8V2V9iCBZiHVKl05bdkl+KRB9B85fVA7 bradfitz@laptop
-
-For each node above: (sadly, not automated)
-
-- cp sources.list to /etc/apt/sources.list
-# apt-get update
-
-- Put builder key for "linux-arm64-buildlet" at /root/.gobuildkey
-- Put buildlet.service at /etc/systemd/system/
-# systemctl enable buildlet.service
-# systemctl start buildlet.service
-
diff --git a/env/linux-arm64/linaro/README b/env/linux-arm64/linaro/README
new file mode 100644
index 0000000..8f9dc54
--- /dev/null
+++ b/env/linux-arm64/linaro/README
@@ -0,0 +1,41 @@
+Machines:
+
+r2-a25:
+
+     $ ssh -i ~/keys/id_ed25519_golang1 linaro@64.28.99.28
+     (key: http://go/golang-ssh-key)
+
+Machine details:
+
+  linaro@r2-a25:~# cat /proc/cpuinfo | grep process | wc -l
+  8
+ 
+  linaro@r2-a25:~# free
+                total        used        free      shared  buff/cache   available
+  Mem:       32942028      850048    30117168      619288     1974812    31097620
+  Swap:      32165884           0    32165884
+
+
+  linaro@r2-a25:~# lsb_release  -a
+  No LSB modules are available.
+  Distributor ID:    Ubuntu
+  Description:       Ubuntu 16.04.2 LTS
+  Release:           16.04
+  Codename:          xenial
+
+
+But each machine is setup like:
+
+   $ apt-get install docker.io
+   
+   $ build.sh (with Dockerfile in same directory)
+
+   $ echo "<BUILDER KEY>" > /etc/gobuild.key # or custom path, see rundockerbuildlet.go
+   
+   $ GOARCH=arm64 GOOS=linux go install golang.org/x/build/cmd/rundockerbuildlet && \
+     scp -i ~/keys/id_ed25519_golang1 ~/bin/linux_arm64/rundockerbuildlet linaro@64.28.99.28:/usr/local/bin
+
+   $ scp -i ~/keys/id_ed25519_golang1 rundockerbuildlet.service linaro@64.28.99.28:/etc/systemd/user/
+
+   $ systemctl enable /etc/systemd/user/rundockerbuildlet.service
+   $ systemctl start rundockerbuildlet.service
diff --git a/env/linux-arm64/linaro/build.sh b/env/linux-arm64/linaro/build.sh
new file mode 100755
index 0000000..391ecee
--- /dev/null
+++ b/env/linux-arm64/linaro/build.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# This is run on the arm64 host with the Dockerfile in the same directory. 
+# The parent Dockerfile and build.sh (linux-arm64/*) must be in parent directory.
+
+
+(cd ../ && ./build.sh) && docker build -t gobuilder-arm64-linaro:1 .
\ No newline at end of file
diff --git a/env/linux-arm64/linaro/buildlet.service b/env/linux-arm64/linaro/buildlet.service
deleted file mode 100644
index e7c8e2d..0000000
--- a/env/linux-arm64/linaro/buildlet.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=Go builder buildlet
-After=network.target
-
-[Install]
-WantedBy=network-online.target
-
-[Service]
-Type=simple
-ExecStartPre=/bin/sh -c 'cd /usr/local/bin; /usr/bin/curl -R -f -z buildlet-stage0 -o buildlet-stage0 https://storage.googleapis.com/go-builder-data/buildlet-stage0.linux-arm64 && chmod +x buildlet-stage0'
-ExecStart=/usr/local/bin/buildlet-stage0
-Restart=always
-RestartSec=2
-StartLimitInterval=0
diff --git a/env/linux-arm64/linaro/rundockerbuildlet.service b/env/linux-arm64/linaro/rundockerbuildlet.service
new file mode 100644
index 0000000..c9d5d77
--- /dev/null
+++ b/env/linux-arm64/linaro/rundockerbuildlet.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Run Buildlets in Docker
+After=network.target
+
+[Install]
+WantedBy=network-online.target
+
+[Service]
+Type=simple
+ExecStart=/usr/local/bin/rundockerbuildlet -basename=linaro -image=gobuilder-arm64-linaro:1 -n=4
+Restart=always
+RestartSec=2
+StartLimitInterval=0
diff --git a/env/linux-arm64/linaro/sources.list b/env/linux-arm64/linaro/sources.list
deleted file mode 100644
index 2939038..0000000
--- a/env/linux-arm64/linaro/sources.list
+++ /dev/null
@@ -1,25 +0,0 @@
-deb http://ports.ubuntu.com/ubuntu-ports wily main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports wily main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports wily-updates main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-updates main restricted
-
-deb http://ports.ubuntu.com/ubuntu-ports wily universe
-deb-src http://ports.ubuntu.com/ubuntu-ports wily universe
-deb http://ports.ubuntu.com/ubuntu-ports wily-updates universe
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-updates universe
-
-deb http://ports.ubuntu.com/ubuntu-ports wily multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports wily multiverse
-deb http://ports.ubuntu.com/ubuntu-ports wily-updates multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-updates multiverse
-
-deb http://ports.ubuntu.com/ubuntu-ports wily-backports main restricted universe multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-backports main restricted universe multiverse
-
-deb http://ports.ubuntu.com/ubuntu-ports wily-security main restricted
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-security main restricted
-deb http://ports.ubuntu.com/ubuntu-ports wily-security universe
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-security universe
-deb http://ports.ubuntu.com/ubuntu-ports wily-security multiverse
-deb-src http://ports.ubuntu.com/ubuntu-ports wily-security multiverse
diff --git a/env/linux-arm64/packet/Dockerfile b/env/linux-arm64/packet/Dockerfile
index 207430a..44bf709 100644
--- a/env/linux-arm64/packet/Dockerfile
+++ b/env/linux-arm64/packet/Dockerfile
@@ -2,29 +2,8 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-FROM mickaelguene/arm64-debian:jessie
-
-ENV DEBIAN_FRONTEND noninteractive
-
-RUN apt-get update && \
-    apt-get install --yes \
-          curl gcc strace ca-certificates \
-          procps lsof psmisc
-
-RUN mkdir /usr/local/go-bootstrap && \
-    curl --silent https://storage.googleapis.com/go-builder-data/gobootstrap-linux-arm64.tar.gz | \
-    tar -C /usr/local/go-bootstrap -zxv
-
-ENV GOROOT_BOOTSTRAP /usr/local/go-bootstrap
-RUN curl -o  /usr/local/bin/stage0 https://storage.googleapis.com/go-builder-data/buildlet-stage0.linux-arm64 && \
-    chmod +x /usr/local/bin/stage0
+FROM golang.org/linux-arm64
 
 ENV GO_BUILDER_ENV host-linux-arm64-packet
-ENV GO_BUILD_KEY_DELETE_AFTER_READ true
-ENV GO_BUILD_KEY_PATH /buildkey/gobuildkey
-
-# Not really, but we're in a container like Kubernetes, and this makes the syscall
-# package happy:
-ENV IN_KUBERNETES 1
 
 CMD ["/usr/local/bin/stage0"]
diff --git a/env/linux-arm64/packet/README b/env/linux-arm64/packet/README
index 42e6783..933a9d5 100644
--- a/env/linux-arm64/packet/README
+++ b/env/linux-arm64/packet/README
@@ -34,11 +34,13 @@
    $ apt-get install docker.io
    
    $ build.sh (with Dockerfile in same directory)
+
+   $ echo "<BUILDER KEY>" > /etc/gobuild.key
    
    $ GOARCH=arm64 GOOS=linux go install golang.org/x/build/cmd/rundockerbuildlet && \
-     scp -i ~/keys/id_ed25519_golang1 ~/bin/linux_arm64/rundockerbuildlet  root@147.75.109.230:/usr/local/bin
+     scp -i ~/keys/id_ed25519_golang1 ~/bin/linux_arm64/rundockerbuildlet root@147.75.109.230:/usr/local/bin
 
-   $ scp -i ~/keys/id_ed25519_golang1 rundockerbuildlet.service root@147.75.109.230:/etc/systemd/user/
+   $ scp -i ~/keys/id_ed25519_golang1 rundockerbuildlet.service root@147.75.109.230:/usr/local/bin:/etc/systemd/user/
 
    $ systemctl enable /etc/systemd/user/rundockerbuildlet.service
-   $ systemctl start rundockerbuildlet.service
+   $ systemctl start rundockerbuildlet.service
\ No newline at end of file
diff --git a/env/linux-arm64/packet/build.sh b/env/linux-arm64/packet/build.sh
index 9e45052..78f16fe 100755
--- a/env/linux-arm64/packet/build.sh
+++ b/env/linux-arm64/packet/build.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 #
-# This is run on the arm64 host, with the Dockerfile in the same directory.
+# This is run on the arm64 host with the Dockerfile in the same directory. 
+# The parent Dockerfile and build.sh (linux-arm64/*) must be in parent directory.
 
-exec docker build -t gobuilder-arm64:1 .
+(cd ../ && ./build.sh) && docker build -t gobuilder-arm64-packet:1 .
diff --git a/env/linux-arm64/packet/rundockerbuildlet.service b/env/linux-arm64/packet/rundockerbuildlet.service
index a5e91a3..8925c4e 100644
--- a/env/linux-arm64/packet/rundockerbuildlet.service
+++ b/env/linux-arm64/packet/rundockerbuildlet.service
@@ -7,7 +7,7 @@
 
 [Service]
 Type=simple
-ExecStart=/usr/local/bin/rundockerbuildlet -basename=packet -image=gobuilder-arm64:1 -n=20
+ExecStart=/usr/local/bin/rundockerbuildlet -basename=packet -image=gobuilder-arm64-packet:1 -n=20
 Restart=always
 RestartSec=2
 StartLimitInterval=0