From 201ba2b0e35799cfbd5ba043d187e499549613ea Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Thu, 26 Nov 2020 14:27:55 +0900 Subject: [PATCH] hack: install buildx in util Signed-off-by: Akihiro Suda --- hack/bootstrap-buildx | 19 +++++++++++++++++ hack/install-buildx | 48 +++++++++++++++++++++++++++++++++++++++++++ hack/util | 11 ++++++++-- 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100755 hack/bootstrap-buildx create mode 100755 hack/install-buildx diff --git a/hack/bootstrap-buildx b/hack/bootstrap-buildx new file mode 100755 index 00000000..c254719d --- /dev/null +++ b/hack/bootstrap-buildx @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -eu -o pipefail +if [ "$#" -ne 1 ]; then + echo >&2 "usage: $0 " + exit 1 +fi +NAME="$1" +echo "Bootstrapping buildx builder \"${NAME}\"" + +topdir="$(realpath "$(dirname "$0")/..")" +cd "${topdir}" +buildx="./bin/buildx" +if ! "${buildx}" inspect "${NAME}" >/dev/null 2>&1; then + set -x + "${buildx}" create --driver docker-container --name "${NAME}" +fi + +set -x +"${buildx}" inspect --bootstrap "${NAME}" diff --git a/hack/install-buildx b/hack/install-buildx new file mode 100755 index 00000000..4838c62d --- /dev/null +++ b/hack/install-buildx @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -eu -o pipefail +topdir="$(realpath $(dirname "$0")/..)" +cd "${topdir}" + +VERSION="v0.5.1" +BINDIR="$(pwd)/bin" +DEST="${BINDIR}/buildx" + +os="" +case "$(uname)" in + Linux) + os="linux" + ;; + Darwin) + os="darwin" + ;; + *) + echo >&2 "unknown OS" + exit 1 + ;; +esac + +arch="$(uname -m)" +case "${arch}" in + x86_64) + arch="amd64" + ;; + aarch64) + arch="arm64" + ;; + armv7l) + arch="arm-v7" + ;; + armv6l) + arch="arm-v6" + ;; +esac + +url="https://github.com/docker/buildx/releases/download/${VERSION}/buildx-${VERSION}.${os}-${arch}" + +echo "Installing buildx ${VERSION} as ${DEST}" +set -x +mkdir -p "${BINDIR}" +rm -f "${DEST}.download" +curl -f -L -o "${DEST}.download" "${url}" +chmod +x "${DEST}.download" +mv "${DEST}.download" "${DEST}" diff --git a/hack/util b/hack/util index d24610c4..60e85264 100755 --- a/hack/util +++ b/hack/util @@ -29,8 +29,15 @@ buildxCmd() { set -x buildx "$@" $progressFlag else - echo >&2 "ERROR: Please install buildx" - exit 1 + topdir="$(realpath $(dirname "$0")/..)" + if [ ! -x "${topdir}/bin/buildx" ]; then + set -x + "${topdir}/hack/install-buildx" + fi + set -x + bootstrapName="moby-buildkit" + "${topdir}/hack/bootstrap-buildx" "${bootstrapName}" + BUILDX_BUILDER="${bootstrapName}" "${topdir}/bin/buildx" "$@" $progressFlag fi }