rig dep update
This commit is contained in:
@@ -341,7 +341,12 @@ CORE_TOOLS="kubectl jq"
|
|||||||
# because it is what wires a cluster to a local registry — without one, an
|
# because it is what wires a cluster to a local registry — without one, an
|
||||||
# unqualified image name resolves to docker.io/library/<name> and there is
|
# unqualified image name resolves to docker.io/library/<name> and there is
|
||||||
# nothing structural stopping a push there.
|
# nothing structural stopping a push there.
|
||||||
DEV_TOOLS="kind tilt ctlptl"
|
#
|
||||||
|
# docker-compose is 'dev' for the same reason, and is here because the distro
|
||||||
|
# docker packages ship the daemon and CLI but frequently not the compose
|
||||||
|
# plugin — so `docker compose up` fails with "unknown command" on an otherwise
|
||||||
|
# working Docker, and nothing about that message names the missing piece.
|
||||||
|
DEV_TOOLS="kind tilt ctlptl docker-compose"
|
||||||
|
|
||||||
# ── what is already on this machine ───────────────────────────────────────
|
# ── what is already on this machine ───────────────────────────────────────
|
||||||
#
|
#
|
||||||
@@ -358,6 +363,7 @@ pin_of() {
|
|||||||
kind) echo "$KIND_VERSION" ;;
|
kind) echo "$KIND_VERSION" ;;
|
||||||
tilt) echo "$TILT_VERSION" ;;
|
tilt) echo "$TILT_VERSION" ;;
|
||||||
ctlptl) echo "$CTLPTL_VERSION" ;;
|
ctlptl) echo "$CTLPTL_VERSION" ;;
|
||||||
|
docker-compose) echo "$COMPOSE_VERSION" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,6 +412,23 @@ detect_toolchain() {
|
|||||||
for b in $(tier_tools "$tier"); do
|
for b in $(tier_tools "$tier"); do
|
||||||
pin=$(pin_of "$b")
|
pin=$(pin_of "$b")
|
||||||
path=$(command -v "$b" 2>/dev/null || true)
|
path=$(command -v "$b" 2>/dev/null || true)
|
||||||
|
# compose is the one tool that is normally NOT a binary on PATH. It is a
|
||||||
|
# docker CLI plugin, so a machine where `docker compose` works perfectly
|
||||||
|
# has no `docker-compose` to find — and probing only PATH would report it
|
||||||
|
# missing and re-download a copy that is already there. That is the exact
|
||||||
|
# noise the version-aware skip exists to prevent, so ask docker instead.
|
||||||
|
if [ "$b" = docker-compose ] && [ -z "$path" ]; then
|
||||||
|
if found=$(docker compose version --short 2>/dev/null) && [ -n "$found" ]; then
|
||||||
|
if [ "${found#v}" = "${pin#v}" ]; then
|
||||||
|
printf " %-8s %-9s %s\n" "$b" "$pin" "docker cli plugin"
|
||||||
|
else
|
||||||
|
printf " ! %-8s wants %s, the docker cli plugin reports '%s'\n" \
|
||||||
|
"$b" "$pin" "$found"
|
||||||
|
TOOLCHAIN_NEED+="$b "
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if [ -z "$path" ]; then
|
if [ -z "$path" ]; then
|
||||||
printf " - %-8s %-9s not found\n" "$b" "$pin"
|
printf " - %-8s %-9s not found\n" "$b" "$pin"
|
||||||
TOOLCHAIN_NEED+="$b "
|
TOOLCHAIN_NEED+="$b "
|
||||||
@@ -455,6 +478,9 @@ fetch() {
|
|||||||
if want kind; then fetch_bin kind "$KIND_URL" "$KIND_SHA256" "$dest"; fi
|
if want kind; then fetch_bin kind "$KIND_URL" "$KIND_SHA256" "$dest"; fi
|
||||||
if want tilt; then fetch_tgz tilt "$TILT_URL" "$TILT_SHA256" "$dest" tilt 0; fi
|
if want tilt; then fetch_tgz tilt "$TILT_URL" "$TILT_SHA256" "$dest" tilt 0; fi
|
||||||
if want ctlptl; then fetch_tgz ctlptl "$CTLPTL_URL" "$CTLPTL_SHA256" "$dest" ctlptl 0; fi
|
if want ctlptl; then fetch_tgz ctlptl "$CTLPTL_URL" "$CTLPTL_SHA256" "$dest" ctlptl 0; fi
|
||||||
|
if want docker-compose; then
|
||||||
|
fetch_bin docker-compose "$COMPOSE_URL" "$COMPOSE_SHA256" "$dest"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fix_ownership "$dest"
|
fix_ownership "$dest"
|
||||||
@@ -520,6 +546,30 @@ warn_shadowing() {
|
|||||||
OUT_BIN=\$PWD/def/bin make deps # then put that dir first in PATH")
|
OUT_BIN=\$PWD/def/bin make deps # then put that dir first in PATH")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# A copy in OUT_BIN only gives you `docker-compose`. That hyphenated form is the
|
||||||
|
# retired v1 spelling; every compose file written in the last few years assumes
|
||||||
|
# `docker compose`, which resolves plugins BY NAME out of a plugin directory.
|
||||||
|
# So the binary is fetched like any other and then linked, in your own home —
|
||||||
|
# no root, and nothing outside it.
|
||||||
|
install_compose_plugin() {
|
||||||
|
local src="$OUT_BIN/docker-compose" dir="$HOME/.docker/cli-plugins"
|
||||||
|
[ -x "$src" ] || return 0
|
||||||
|
mkdir -p "$dir"
|
||||||
|
# Something else already owns that name — docker-desktop and some distro
|
||||||
|
# packages install a real file there. Overwriting it would take the plugin
|
||||||
|
# away from whatever put it there, so say so and let the user decide.
|
||||||
|
if [ -e "$dir/docker-compose" ] && [ ! -L "$dir/docker-compose" ]; then
|
||||||
|
MANUAL+=("Something already installs the compose plugin at
|
||||||
|
$dir/docker-compose
|
||||||
|
To use rig's pinned build instead:
|
||||||
|
ln -sf $src $dir/docker-compose")
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
ln -sfn "$src" "$dir/docker-compose"
|
||||||
|
echo " compose plugin -> $dir/docker-compose"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
local tier="${1:-dev}" b
|
local tier="${1:-dev}" b
|
||||||
TIER="$tier"
|
TIER="$tier"
|
||||||
@@ -538,6 +588,12 @@ install() {
|
|||||||
if [ "$tier" = "core" ]; then
|
if [ "$tier" = "core" ]; then
|
||||||
echo " (no kind/tilt — 'make deps dev' adds them)"
|
echo " (no kind/tilt — 'make deps dev' adds them)"
|
||||||
fi
|
fi
|
||||||
|
# Only when compose was one of the things fetched: linking a binary
|
||||||
|
# that is already satisfied elsewhere on PATH would point the plugin at
|
||||||
|
# a copy rig did not install.
|
||||||
|
case " $TOOLCHAIN_NEED " in
|
||||||
|
*" docker-compose "*) install_compose_plugin ;;
|
||||||
|
esac
|
||||||
|
|
||||||
# Only worth saying when something actually landed in OUT_BIN. When every
|
# Only worth saying when something actually landed in OUT_BIN. When every
|
||||||
# tool was satisfied elsewhere, OUT_BIN may reasonably be off PATH, and
|
# tool was satisfied elsewhere, OUT_BIN may reasonably be off PATH, and
|
||||||
|
|||||||
@@ -44,6 +44,15 @@ JQ_VERSION=1.8.2
|
|||||||
JQ_SHA256=b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f
|
JQ_SHA256=b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f
|
||||||
JQ_URL=https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/jq-linux-amd64
|
JQ_URL=https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/jq-linux-amd64
|
||||||
|
|
||||||
|
# docker compose — the distro docker packages ship the daemon and the CLI but
|
||||||
|
# frequently not this, so `docker compose up` fails with "unknown command" on an
|
||||||
|
# otherwise working Docker. It is a CLI plugin, found by NAME in a plugin
|
||||||
|
# directory, so a copy in the bin dir alone only gives you the retired
|
||||||
|
# `docker-compose` v1 spelling; deps.sh links it into ~/.docker/cli-plugins.
|
||||||
|
COMPOSE_VERSION=5.5.1
|
||||||
|
COMPOSE_SHA256=db1889184726840f75c4f9c001048430d4f25b3be3cb084d3ddd762bc0aed576
|
||||||
|
COMPOSE_URL=https://github.com/docker/compose/releases/download/v${COMPOSE_VERSION}/docker-compose-linux-x86_64
|
||||||
|
|
||||||
# Node images shipped with KIND_VERSION above, pinned by digest so a kind upgrade
|
# Node images shipped with KIND_VERSION above, pinned by digest so a kind upgrade
|
||||||
# can never silently move the k8s version. Profiles select one via K8S_VERSION.
|
# can never silently move the k8s version. Profiles select one via K8S_VERSION.
|
||||||
# Older entries are kept deliberately: running a trailing-edge control plane is
|
# Older entries are kept deliberately: running a trailing-edge control plane is
|
||||||
|
|||||||
@@ -7,8 +7,9 @@
|
|||||||
#
|
#
|
||||||
# What it will not do, deliberately:
|
# What it will not do, deliberately:
|
||||||
#
|
#
|
||||||
# * no sudo, no apt, no yum. It writes ONLY into $OUT_BIN (default
|
# * no sudo, no apt, no yum. It writes into $OUT_BIN (default ~/.local/bin)
|
||||||
# ~/.local/bin). Everything needing root — installing Docker, joining the
|
# and, for compose only, a symlink under ~/.docker/cli-plugins — both in
|
||||||
|
# your own home. Everything needing root — installing Docker, joining the
|
||||||
# docker group, raising inotify limits — is REPORTED for you to decide on.
|
# docker group, raising inotify limits — is REPORTED for you to decide on.
|
||||||
# That is what makes it safe to run on a machine that already works.
|
# That is what makes it safe to run on a machine that already works.
|
||||||
# * no unverified download. Every artifact is checked against a SHA256 taken
|
# * no unverified download. Every artifact is checked against a SHA256 taken
|
||||||
@@ -72,8 +73,16 @@ JQ_VERSION=1.8.2
|
|||||||
JQ_SHA256=b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f
|
JQ_SHA256=b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f
|
||||||
JQ_URL="https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/jq-linux-amd64"
|
JQ_URL="https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/jq-linux-amd64"
|
||||||
|
|
||||||
|
# Distro docker packages ship the daemon and CLI but frequently not this, so
|
||||||
|
# `docker compose up` fails with "unknown command" on an otherwise working
|
||||||
|
# Docker. It is a CLI plugin: the binary is found by name in a plugin directory,
|
||||||
|
# which is why install_compose_plugin links it into ~/.docker/cli-plugins.
|
||||||
|
COMPOSE_VERSION=5.5.1
|
||||||
|
COMPOSE_SHA256=db1889184726840f75c4f9c001048430d4f25b3be3cb084d3ddd762bc0aed576
|
||||||
|
COMPOSE_URL="https://github.com/docker/compose/releases/download/v${COMPOSE_VERSION}/docker-compose-linux-x86_64"
|
||||||
|
|
||||||
CORE_TOOLS="kubectl jq"
|
CORE_TOOLS="kubectl jq"
|
||||||
DEV_TOOLS="kind tilt ctlptl"
|
DEV_TOOLS="kind tilt ctlptl docker-compose"
|
||||||
|
|
||||||
# No helm: every rig addon installs with `kubectl apply -f`, so nothing has ever
|
# No helm: every rig addon installs with `kubectl apply -f`, so nothing has ever
|
||||||
# invoked it. Add it the day something actually needs a chart.
|
# invoked it. Add it the day something actually needs a chart.
|
||||||
@@ -305,6 +314,14 @@ detect_docker() {
|
|||||||
fi
|
fi
|
||||||
if docker info >/dev/null 2>&1; then
|
if docker info >/dev/null 2>&1; then
|
||||||
echo " docker $(docker version --format '{{.Server.Version}}' 2>/dev/null)"
|
echo " docker $(docker version --format '{{.Server.Version}}' 2>/dev/null)"
|
||||||
|
# Distro packages routinely omit the compose plugin, so a working
|
||||||
|
# daemon says nothing about whether `docker compose up` will run.
|
||||||
|
if docker compose version >/dev/null 2>&1; then
|
||||||
|
echo " compose $(docker compose version --short 2>/dev/null)"
|
||||||
|
else
|
||||||
|
echo " ! no 'docker compose' plugin — compose files will not start."
|
||||||
|
echo " The dev tier installs one; no root needed."
|
||||||
|
fi
|
||||||
local n
|
local n
|
||||||
n=$(docker ps --filter "label=io.x-k8s.kind.cluster" --format '{{.Names}}' 2>/dev/null | wc -l)
|
n=$(docker ps --filter "label=io.x-k8s.kind.cluster" --format '{{.Names}}' 2>/dev/null | wc -l)
|
||||||
# Must be an `if`, not `[ ] && echo`: as the last statement here the
|
# Must be an `if`, not `[ ] && echo`: as the last statement here the
|
||||||
@@ -411,7 +428,30 @@ fetch() {
|
|||||||
fetch_bin kind "$KIND_URL" "$KIND_SHA256" "$dest"
|
fetch_bin kind "$KIND_URL" "$KIND_SHA256" "$dest"
|
||||||
fetch_tgz tilt "$TILT_URL" "$TILT_SHA256" "$dest" tilt 0
|
fetch_tgz tilt "$TILT_URL" "$TILT_SHA256" "$dest" tilt 0
|
||||||
fetch_tgz ctlptl "$CTLPTL_URL" "$CTLPTL_SHA256" "$dest" ctlptl 0
|
fetch_tgz ctlptl "$CTLPTL_URL" "$CTLPTL_SHA256" "$dest" ctlptl 0
|
||||||
|
fetch_bin docker-compose "$COMPOSE_URL" "$COMPOSE_SHA256" "$dest"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# A copy in OUT_BIN only gives you `docker-compose`. The hyphenated form is the
|
||||||
|
# retired v1 spelling; every compose file written in the last few years assumes
|
||||||
|
# `docker compose`, and that resolves plugins by name from this directory.
|
||||||
|
install_compose_plugin() {
|
||||||
|
local src="$OUT_BIN/docker-compose" dir="$HOME/.docker/cli-plugins"
|
||||||
|
[ -x "$src" ] || return 0
|
||||||
|
mkdir -p "$dir"
|
||||||
|
if [ -e "$dir/docker-compose" ] && [ ! -L "$dir/docker-compose" ]; then
|
||||||
|
echo
|
||||||
|
echo " ! $dir/docker-compose exists and is not a symlink — left alone"
|
||||||
|
MANUAL+=("Something already installs the compose plugin at
|
||||||
|
$dir/docker-compose
|
||||||
|
To use the pinned build instead:
|
||||||
|
ln -sf $src $dir/docker-compose")
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
|
ln -sfn "$src" "$dir/docker-compose"
|
||||||
|
echo
|
||||||
|
echo " compose plugin linked into $dir"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -509,13 +549,18 @@ install() {
|
|||||||
detect
|
detect
|
||||||
echo
|
echo
|
||||||
fetch "$tier"
|
fetch "$tier"
|
||||||
|
# An `if`, not `[ ] && ...`: on the core tier the test fails, and under
|
||||||
|
# `set -e` a bare failing test here would end the run silently.
|
||||||
|
if [ "$tier" = "dev" ]; then
|
||||||
|
install_compose_plugin
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
verify_tools "$tier"
|
verify_tools "$tier"
|
||||||
warn_shadowing "$tier"
|
warn_shadowing "$tier"
|
||||||
|
|
||||||
if [ "$tier" = "core" ]; then
|
if [ "$tier" = "core" ]; then
|
||||||
echo
|
echo
|
||||||
echo " core tier: no kind, tilt or ctlptl. '$0 install dev' adds them."
|
echo " core tier: no kind, tilt, ctlptl or compose. '$0 install dev' adds them."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case ":${PATH}:" in
|
case ":${PATH}:" in
|
||||||
@@ -541,11 +586,12 @@ install() {
|
|||||||
|
|
||||||
list() {
|
list() {
|
||||||
echo "pinned, linux/amd64 only:"
|
echo "pinned, linux/amd64 only:"
|
||||||
printf ' %-8s %s\n' kubectl "$KUBECTL_VERSION"
|
printf ' %-14s %s\n' kubectl "$KUBECTL_VERSION"
|
||||||
printf ' %-8s %s\n' jq "$JQ_VERSION"
|
printf ' %-14s %s\n' jq "$JQ_VERSION"
|
||||||
printf ' %-8s %s\n' kind "$KIND_VERSION"
|
printf ' %-14s %s\n' kind "$KIND_VERSION"
|
||||||
printf ' %-8s %s\n' tilt "$TILT_VERSION"
|
printf ' %-14s %s\n' tilt "$TILT_VERSION"
|
||||||
printf ' %-8s %s\n' ctlptl "$CTLPTL_VERSION"
|
printf ' %-14s %s\n' ctlptl "$CTLPTL_VERSION"
|
||||||
|
printf ' %-14s %s\n' docker-compose "$COMPOSE_VERSION"
|
||||||
echo
|
echo
|
||||||
echo " core = $CORE_TOOLS"
|
echo " core = $CORE_TOOLS"
|
||||||
echo " dev = $CORE_TOOLS $DEV_TOOLS"
|
echo " dev = $CORE_TOOLS $DEV_TOOLS"
|
||||||
|
|||||||
Reference in New Issue
Block a user