зеркало из https://github.com/golang/build.git
78 строки
2.3 KiB
Python
78 строки
2.3 KiB
Python
#!/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",
|
|
"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
|