golang.org/x/build@v0.0.0-20240506185731-218518f32b70/env/linux-arm/aws/prepare_image.sh (about) 1 #!/usr/bin/env bash 2 3 # Copyright 2020 The Go Authors. All rights reserved. 4 # Use of this source code is governed by a BSD-style 5 # license that can be found in the LICENSE file. 6 7 # 8 # Installs all dependencies for a Debian 10 linux arm64 Host which run arm containers. 9 # 10 11 set -euxo pipefail 12 13 TMP_DIR="$(mktemp -d)" 14 GO_PATH="$TMP_DIR/gopath" 15 16 sudo apt-get update && sudo apt-get upgrade -y 17 18 sudo apt-get install -y \ 19 apt-transport-https \ 20 ca-certificates \ 21 curl \ 22 gnupg-agent \ 23 gnupg2 \ 24 jq \ 25 software-properties-common 26 27 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 28 29 sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" 30 31 sudo apt-get update 32 33 sudo apt-get install -y \ 34 docker-ce \ 35 docker-ce-cli \ 36 containerd.io 37 38 sudo usermod -aG docker "$USER" 39 40 # retrieve the latest version of Go 41 GO_VERSION="$(curl -s https://golang.org/dl/?mode=json | jq --raw-output '.[0].version')" 42 GO_PACKAGE="$GO_VERSION.linux-arm64.tar.gz" 43 GO_SHA="$(curl -s https://golang.org/dl/?mode=json | jq --raw-output '.[0].files | map(select(.arch == "arm64")) | .[0].sha256')" 44 45 # download Go package 46 curl -o "$TMP_DIR/$GO_PACKAGE" -L "https://golang.org/dl/$GO_PACKAGE" 47 48 # verify sha256 shasum" 49 echo "$GO_SHA $TMP_DIR/$GO_PACKAGE" | sha256sum --check --status 50 51 # unzip Go package 52 tar -xvf "$TMP_DIR/$GO_PACKAGE" -C "$TMP_DIR" 53 54 # build rundockerbuildlet 55 mkdir -p "$GO_PATH" 56 GOPATH="$GO_PATH" "$TMP_DIR/go/bin/go" get -u golang.org/x/build/cmd/rundockerbuildlet 57 GOPATH="$GO_PATH" "$TMP_DIR/go/bin/go" build -o "$TMP_DIR/rundockerbuildlet" golang.org/x/build/cmd/rundockerbuildlet 58 sudo mv "$TMP_DIR/rundockerbuildlet" /usr/local/bin/rundockerbuildlet 59 60 sudo mkdir -p /etc/systemd/system/containerd.service.d/ 61 sudo mv /tmp/containerd.service /etc/systemd/system/containerd.service.d/override.conf 62 sudo systemctl daemon-reload 63 sudo systemctl restart docker 64 65 sudo mv /tmp/rundockerbuildlet.service /etc/systemd/user/rundockerbuildlet.service 66 sudo systemctl enable /etc/systemd/user/rundockerbuildlet.service 67 sudo systemctl start rundockerbuildlet 68 69 # remove temporary directory 70 rm -fr "$TMP_DIR"