101 lines
2.3 KiB
Bash
Executable File
101 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
|
|
|
versions=( "$@" )
|
|
if [ "${#versions[@]}" -eq 0 ]; then
|
|
versions=( */ )
|
|
json='{}'
|
|
else
|
|
json="$(< versions.json)"
|
|
fi
|
|
versions=( "${versions[@]%/}" )
|
|
|
|
busyboxVersions="$(
|
|
wget -qO- 'https://busybox.net' \
|
|
| grep -oE '[0-9a-zA-Z ]+ -- BusyBox [0-9.]+ [(](un)?stable[)]' \
|
|
| jq -csR '
|
|
rtrimstr("\n")
|
|
| split("\n")
|
|
| map(
|
|
split(" -- BusyBox ")
|
|
| {
|
|
version: .[1],
|
|
date: .[0],
|
|
}
|
|
| .stability = (.version | gsub(".* [(]|[)]"; ""))
|
|
| .version |= split(" ")[0]
|
|
)
|
|
| sort_by(.version | split(".") | map(tonumber))
|
|
| reverse
|
|
'
|
|
)"
|
|
# [
|
|
# {
|
|
# "version": "1.36.0",
|
|
# "date": "3 January 2023",
|
|
# "stability": "unstable"
|
|
# },
|
|
# ...
|
|
# ]
|
|
|
|
buildrootVersion="$(
|
|
git ls-remote --tags https://gitlab.com/buildroot.org/buildroot.git \
|
|
| cut -d/ -f3 \
|
|
| cut -d^ -f1 \
|
|
| grep -E '^[0-9]+' \
|
|
| grep -vE -- '[-_]rc' \
|
|
| sort -uV \
|
|
| tail -1
|
|
)"
|
|
export buildrootVersion
|
|
|
|
for version in "${versions[@]}"; do
|
|
export version
|
|
|
|
minus="${version#latest}"
|
|
minus="${minus#-}"
|
|
: "${minus:=0}"
|
|
majorMinor="$(jq <<<"$busyboxVersions" -cr --argjson minus "$minus" '
|
|
map(.version | split(".")[0:2] | join("."))
|
|
| unique
|
|
| reverse[$minus]
|
|
')"
|
|
if [ -z "$majorMinor" ]; then
|
|
echo >&2 "error: failed to find '$version' release"
|
|
exit 1
|
|
fi
|
|
doc="$(jq <<<"$busyboxVersions" -c --arg majorMinor "$majorMinor" '
|
|
map(select(
|
|
.version
|
|
| startswith($majorMinor + ".")
|
|
))[0]
|
|
')"
|
|
|
|
fullVersion="$(jq <<<"$doc" -r '.version')"
|
|
export fullVersion
|
|
|
|
echo "$version: $fullVersion (buildroot $buildrootVersion)"
|
|
|
|
sha256="$(wget -qO- "https://busybox.net/downloads/busybox-$fullVersion.tar.bz2.sha256" | cut -d' ' -f1)"
|
|
export sha256
|
|
|
|
json="$(
|
|
jq <<<"$json" -c --argjson doc "$doc" '
|
|
.[env.version] = $doc + {
|
|
sha256: env.sha256,
|
|
buildroot: {
|
|
version: env.buildrootVersion,
|
|
},
|
|
# as of buildroot 2022.11, glibc is the default, so we follow suit (https://github.com/buildroot/buildroot/commit/4057e36ca9665edd5248512e4edba2c243b8f4be)
|
|
# https://busybox.net/FAQ.html#libc
|
|
variants: [ "glibc", "uclibc", "musl" ],
|
|
# (order here determines "preference" for representing "latest")
|
|
}
|
|
'
|
|
)"
|
|
done
|
|
|
|
jq <<<"$json" -S . > versions.json
|