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"