...

Text file src/github.com/opencontainers/runc/tests/integration/bootstrap-get-images.sh

Documentation: github.com/opencontainers/runc/tests/integration

     1#!/usr/bin/env bash
     2set -Eeuo pipefail
     3
     4# This script generates "get-images.sh" using Official Images tooling.
     5#
     6#   ./bootstrap-get-images.sh > get-images.sh
     7#
     8# This script requires "bashbrew". To get the latest version, visit
     9# https://github.com/docker-library/bashbrew/releases
    10
    11images=(
    12	# pinned to an older BusyBox (prior to 1.36 becoming "latest") because 1.36.0 has some unresolved bugs, especially around sha256sum
    13	'https://github.com/docker-library/official-images/raw/eaed422a86b43c885a0f980d48f4bbf346086a4a/library/busybox:glibc'
    14
    15	# pinned to an older Debian Buster which has more architectures than the latest does (Buster transitioned from the Debian Security Team to the LTS Team which supports a smaller set)
    16	'https://github.com/docker-library/official-images/raw/ce10f6b60289c0c0b5de6f785528b8725f225a58/library/debian:buster-slim'
    17)
    18
    19cat <<'EOH'
    20#!/bin/bash
    21
    22# DO NOT EDIT!  Generated by "bootstrap-get-images.sh"
    23
    24# This script checks if container images needed for tests (currently
    25# busybox and Debian 10 "Buster") are available locally, and downloads
    26# them to testdata directory if not.
    27#
    28# The script is self-contained/standalone and is used from a few places
    29# that need to ensure the images are downloaded. Its output is suitable
    30# for consumption by shell via eval (see helpers.bash).
    31
    32set -e -u -o pipefail
    33
    34# Root directory of integration tests.
    35INTEGRATION_ROOT=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
    36# Test data path.
    37TESTDATA="${INTEGRATION_ROOT}/testdata"
    38# Sanity check: $TESTDATA directory must exist.
    39if [ ! -d "$TESTDATA" ]; then
    40	echo "Bad TESTDATA directory: $TESTDATA. Aborting" >&2
    41	exit 1
    42fi
    43
    44function get() {
    45	local dest="$1" url="$2"
    46
    47	[ -e "$dest" ] && return
    48
    49	# Sanity check: $TESTDATA directory must be writable.
    50	if [ ! -w "$TESTDATA" ]; then
    51		echo "TESTDATA directory ($TESTDATA) not writable. Aborting" >&2
    52		exit 1
    53	fi
    54
    55	if ! curl -o "$dest" -fsSL --retry 5 "$url"; then
    56		echo "Failed to get $url" 1>&2
    57		exit 1
    58	fi
    59}
    60
    61arch=$(go env GOARCH)
    62if [ "$arch" = 'arm' ]; then
    63	arm=$(go env GOARM)
    64	: "${arm:=7}"
    65	arch=${arch}v$arm
    66fi
    67EOH
    68
    69# shellcheck disable=SC2016 # this generates shell code intentionally (and many of the '$' in here are intended for "text/template" not the end shell anyhow)
    70bashbrew cat --format '
    71	{{- "\n" -}}
    72	{{- "case $arch in\n" -}}
    73
    74	{{- range .TagEntry.Architectures -}}
    75		{{- $repo := $.TagEntry.ArchGitRepo . | trimSuffixes ".git" -}}
    76		{{- $branch := $.TagEntry.ArchGitFetch . | trimPrefixes "refs/heads/" -}}
    77		{{- $commit := $.TagEntry.ArchGitCommit . -}}
    78		{{- $dir := $.TagEntry.ArchDirectory . -}}
    79		{{- $tarball := eq $.RepoName "debian" | ternary "rootfs.tar.xz" "busybox.tar.xz" -}}
    80
    81		{{ . | replace "arm64v8" "arm64" "arm32" "arm" "i386" "386" }} {{- ")\n" -}}
    82		{{- "\t" -}}# {{ $repo }}/tree/{{ $branch }}{{- "\n" -}}
    83		{{- "\t" -}}# {{ $repo }}/tree/{{ $commit }}/{{ $dir }}{{- "\n" -}}
    84		{{- "\t" -}} url="{{ $repo }}/raw/{{ $commit }}/{{ $dir }}/{{ $tarball }}"{{- "\n" -}}
    85		{{- "\t" -}} ;; {{- "\n" -}}
    86		{{- "\n" -}}
    87	{{- end -}}
    88
    89	*){{- "\n" -}}
    90	{{- "\t" -}}echo >&2 "error: unsupported {{ $.RepoName }} architecture: $arch"{{- "\n" -}}
    91	{{- "\t" -}}exit 1{{- "\n" -}}
    92	{{- "\t" -}};;{{- "\n" -}}
    93
    94	{{- "esac\n" -}}
    95	{{- printf `rootfs="$TESTDATA/%s-${arch}.tar.xz"` $.RepoName -}}{{- "\n" -}}
    96	{{- `get "$rootfs" "$url"` -}}{{- "\n" -}}
    97	{{- printf "var=%s_image\n" $.RepoName -}}
    98	{{- `echo "${var^^}=$rootfs"` -}}
    99' "${images[@]}"

View as plain text