env/netbsd-amd64: update build VM to 10.1 This updates the amd64 machine image to NetBSD 10.1 and LUCI (bootstrapswarm). For golang/go#57997. Change-Id: I0727cdd97d9efca53fb4235f5d770d3aa780e4b0 Reviewed-on: https://go-review.googlesource.com/c/build/+/536155 Commit-Queue: Benny Siegert <bsiegert@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Auto-Submit: Benny Siegert <bsiegert@gmail.com>
diff --git a/env/netbsd-386/make.bash b/env/netbsd-386/make.bash index 625a098..db7fbd8 100755 --- a/env/netbsd-386/make.bash +++ b/env/netbsd-386/make.bash
@@ -47,7 +47,7 @@ python3 setup.py build cd .. -env PYTHONPATH=${PWD}/anita-${ANITA_VERSION} python3 ../netbsd-amd64/mkvm.py ${ARCH} ${RELEASE} ${PKG_RELEASE} +env PYTHONPATH=${PWD}/anita-${ANITA_VERSION} python3 mkvm.py ${ARCH} ${RELEASE} ${PKG_RELEASE} echo "Archiving wd0.img (this may take a while)" ${TAR} -Szcf ${VM_IMAGE} --transform s,${WORKDIR}/wd0.img,disk.raw, ${WORKDIR}/wd0.img
diff --git a/env/netbsd-386/mkvm.py b/env/netbsd-386/mkvm.py new file mode 100644 index 0000000..7adda46 --- /dev/null +++ b/env/netbsd-386/mkvm.py
@@ -0,0 +1,77 @@ +#!/usr/bin/env python +# Copyright 2016 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. + +import anita +import sys + +arch = sys.argv[1] +release = sys.argv[2] +pkg_release = sys.argv[3] + +commands = [ + """cat >> /etc/rc.local <<EOF +( + export PATH=/usr/pkg/bin:/usr/pkg/sbin:${PATH} + export GOROOT_BOOTSTRAP=/usr/pkg/go14 + set -x + echo 'starting buildlet script' + netstat -rn + cat /etc/resolv.conf + dig metadata.google.internal + ( + set -e + curl -o /buildlet \$(curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/attributes/buildlet-binary-url) + chmod +x /buildlet + exec /buildlet + ) + echo 'giving up' + sleep 10 + halt -p +) +EOF""", + """cat > /etc/ifconfig.vioif0 << EOF +!dhcpcd +mtu 1460 +EOF""", + "dhcpcd -w", + "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add bash curl" % (arch, pkg_release), + "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add git-base" % (arch, pkg_release), + "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add mozilla-rootcerts mozilla-rootcerts-openssl go14" % (arch, pkg_release), + # Interactive debugging tools for users using gomote ssh: + "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add emacs25-nox11 vim screen" % (arch, pkg_release), + # For https://golang.org/issue/24354 + "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add clang cmake" % (arch, pkg_release), + + # Remove the /tmp entry, because it's mounted as tmpfs -s=ram%25 by default, which isn't enough disk space. + """ed /etc/fstab << EOF +H +/\\/tmp/d +wq +EOF""", + + "echo sshd=yes >> /etc/rc.conf", + "echo PermitRootLogin without-password >> /etc/ssh/sshd_config", + "/etc/rc.d/sshd restart", + "sync; shutdown -hp now", +] + +a = anita.Anita( + anita.URL('https://nycdn.netbsd.org/pub/NetBSD-daily/NetBSD-9/latest/%s/' % arch), + workdir="work-NetBSD-%s" % arch, + disk_size="16G", + memory_size="2G", + persist=True) +child = a.boot() +anita.login(child) + +for cmd in commands: + anita.shell_cmd(child, cmd, 3600) + +# Sometimes, the halt command times out, even though it has completed +# successfully. +try: + a.halt() +except: + pass
diff --git a/env/netbsd-amd64/anita-2.10.tar.gz.sha1 b/env/netbsd-amd64/anita-2.10.tar.gz.sha1 deleted file mode 100644 index c884994..0000000 --- a/env/netbsd-amd64/anita-2.10.tar.gz.sha1 +++ /dev/null
@@ -1 +0,0 @@ -042deb4c820091bc5a55560ec65ec50c997b2bd3 anita-2.10.tar.gz
diff --git a/env/netbsd-amd64/anita-2.15.tar.gz.sha1 b/env/netbsd-amd64/anita-2.15.tar.gz.sha1 new file mode 100644 index 0000000..fa9553a --- /dev/null +++ b/env/netbsd-amd64/anita-2.15.tar.gz.sha1
@@ -0,0 +1 @@ +20a7b3df21e6d455b71acb994d81b27df8b6f473 anita-2.15.tar.gz
diff --git a/env/netbsd-amd64/make.bash b/env/netbsd-amd64/make.bash index dbae1ab..75dd30b 100755 --- a/env/netbsd-amd64/make.bash +++ b/env/netbsd-amd64/make.bash
@@ -14,11 +14,9 @@ set -e -x -ANITA_VERSION=2.10 +ANITA_VERSION=2.15 ARCH=amd64 -RELEASE=9.3 -# The release that the packages have been built for. -PKG_RELEASE=9.0_2022Q2 +RELEASE=10.1 # Must use GNU tar. On NetBSD, tar is BSD tar and gtar is GNU. TAR=tar @@ -26,10 +24,8 @@ TAR=gtar fi -LATEST_BUILD=`curl -Ls -w '%{url_effective}' -o /dev/null https://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-9/latest/ | xargs basename` - WORKDIR=work-NetBSD-${ARCH} -VM_IMAGE=vm-image-netbsd-${ARCH}-${LATEST_BUILD}.tar.gz +VM_IMAGE=vm-image-netbsd-${ARCH}-${RELEASE}.tar.gz # Remove WORKDIR unless -k (keep) is given. if [ "$1" != "-k" ]; then @@ -47,7 +43,7 @@ python3 setup.py build cd .. -env PYTHONPATH=${PWD}/anita-${ANITA_VERSION} python3 mkvm.py ${ARCH} ${RELEASE} ${PKG_RELEASE} +env PYTHONPATH=${PWD}/anita-${ANITA_VERSION} python3 mkvm.py ${ARCH} ${RELEASE} echo "Archiving wd0.img (this may take a while)"
diff --git a/env/netbsd-amd64/mkvm.py b/env/netbsd-amd64/mkvm.py index 8ec5c51..84fa7a7 100644 --- a/env/netbsd-amd64/mkvm.py +++ b/env/netbsd-amd64/mkvm.py
@@ -8,23 +8,45 @@ arch = sys.argv[1] release = sys.argv[2] -pkg_release = sys.argv[3] + +pkg_path = "https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/{arch}/{release}/All".format(arch=arch, release=release) +install_packages = [ + "pkg_alternatives", + "bash", + "curl", + "git-base", + "go123", + "doas", + # Interactive debugging tools for users using gomote ssh + "emacs29-nox11", + "vim", + "screen", + # For https://golang.org/issue/24354 + "clang", + "cmake", +] commands = [ """cat >> /etc/rc.local <<EOF ( - export PATH=/usr/pkg/bin:/usr/pkg/sbin:${PATH} - export GOROOT_BOOTSTRAP=/usr/pkg/go14 + export PATH=/usr/pkg/bin:/usr/pkg/sbin:\${PATH} + export GOROOT_BOOTSTRAP=/usr/pkg/go123 set -x - echo 'starting buildlet script' + echo 'starting bootstrapswarm' netstat -rn cat /etc/resolv.conf dig metadata.google.internal + + gcehost=\$(curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/hostname | cut -d . -f 1) + echo "Found GCE host ${gcehost}." + swarming=\$(curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/swarming | cut -d . -f 1) + swarming="\${swarming}.appspot.com" + echo "Found Swarming host \${swarming}." ( set -e - curl -o /buildlet \$(curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/attributes/buildlet-binary-url) - chmod +x /buildlet - exec /buildlet + go install -o /bootstrapswarm golang.org/x/build/cmd/bootstrapswarm@latest + chmod +x /bootstrapswarm + exec su -l swarming -c /bootstrapswarm -hostname \$gcehost -swarming \$swarming ) echo 'giving up' sleep 10 @@ -35,14 +57,20 @@ !dhcpcd mtu 1460 EOF""", - "dhcpcd", - "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add bash curl" % (arch, pkg_release), - "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add git-base" % (arch, pkg_release), - "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add mozilla-rootcerts mozilla-rootcerts-openssl go14" % (arch, pkg_release), - # Interactive debugging tools for users using gomote ssh: - "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add emacs25-nox11 vim screen" % (arch, pkg_release), - # For https://golang.org/issue/24354 - "env PKG_PATH=http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All/ pkg_add clang cmake" % (arch, pkg_release), + "useradd -m -p '*' swarming", + # Prefer IPv4 over v6 + "echo ip6addrctl=YES >> /etc/rc.conf", + "echo ip6addrctl_policy=ipv4_prefer >> /etc/rc.conf", + "service ip6addrctl start", + "dhcpcd -w", + "env PKG_PATH={} pkg_add -v sqlite3".format(pkg_path), + "env PKG_PATH={} pkg_add -v pkgin".format(pkg_path), + "echo {} > /usr/pkg/etc/pkgin/repositories.conf".format(pkg_path), + "pkgin update", +] +commands.extend(["pkgin -y install {}".format(x) for x in install_packages]) +commands.extend([ + "pkgin clean", # Remove the /tmp entry, because it's mounted as tmpfs -s=ram%25 by default, which isn't enough disk space. """ed /etc/fstab << EOF @@ -53,13 +81,14 @@ "echo sshd=yes >> /etc/rc.conf", "echo PermitRootLogin without-password >> /etc/ssh/sshd_config", + "echo 'permit nopass swarming as root' > /usr/pkg/etc/doas.conf", "/etc/rc.d/sshd restart", "sync; shutdown -hp now", -] +]) a = anita.Anita( - anita.URL('https://nycdn.netbsd.org/pub/NetBSD-daily/NetBSD-9/latest/%s/' % arch), - workdir="work-NetBSD-%s" % arch, + anita.URL('https://cdn.netbsd.org/pub/NetBSD/NetBSD-{}/{}/'.format(release, arch)), + workdir="work-NetBSD-{}-{}".format(release, arch), disk_size="16G", memory_size="2G", persist=True)