diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 00f76bdd..c0f1f0c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,7 @@ jobs: run: | strategy="$(GENERATE_STACKBREW_LIBRARY='.github/workflows/fake-gsl.sh' "$BASHBREW_SCRIPTS/github-actions/generate.sh")" strategy="$(.github/workflows/munge-build.sh -c <<<"$strategy")" - strategy="$(.github/workflows/munge-debian-unstable.sh -c <<<"$strategy")" + strategy="$(.github/workflows/munge-unstable.sh -c <<<"$strategy")" EOF="EOF-$RANDOM-$RANDOM-$RANDOM" echo "strategy<<$EOF" >> "$GITHUB_OUTPUT" @@ -47,8 +47,11 @@ jobs: strategy: ${{ fromJson(needs.generate-jobs.outputs.strategy) }} name: ${{ matrix.name }} runs-on: ${{ matrix.os }} + env: + BASHBREW_ARCH: amd64 # TODO consider using "$BASHBREW_SCRIPTS/bashbrew-host-arch.sh" ? (would make it harder to force i386 in our matrix too, so explicit is probably better) steps: - uses: actions/checkout@v3 + - uses: docker-library/bashbrew@HEAD # build.sh needs bashbrew - name: Prepare Environment run: ${{ matrix.runs.prepare }} - name: Pull Dependencies @@ -61,3 +64,5 @@ jobs: run: ${{ matrix.runs.test }} - name: '"docker images"' run: ${{ matrix.runs.images }} + - name: Git Diff # see "munge-build.sh" + run: 'git diff --exit-code' diff --git a/.github/workflows/munge-build.sh b/.github/workflows/munge-build.sh index 768cafe5..ba799a5b 100755 --- a/.github/workflows/munge-build.sh +++ b/.github/workflows/munge-build.sh @@ -3,6 +3,14 @@ set -Eeuo pipefail jq ' .matrix.include |= map( - .runs.build = "./build.sh " + (.meta.entries[].directory | @sh) + "\n" + (.runs.build | sub(" --file [^ ]+ "; " ")) + .runs.build = ( + [ + "dir=" + (.meta.entries[].directory | @sh), + "rm -rf \"$dir/$BASHBREW_ARCH\"", # make sure our OCI directory is clean so we can "git diff --exit-code" later + "./build.sh \"$dir\"", + (.runs.build | sub(" --file [^ ]+ "; " ")), + empty + ] | join("\n") + ) ) ' "$@" diff --git a/.github/workflows/munge-debian-unstable.sh b/.github/workflows/munge-debian-unstable.sh deleted file mode 100755 index cb91e6e8..00000000 --- a/.github/workflows/munge-debian-unstable.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail - -jq ' - .matrix.include += [ - .matrix.include[] - | select(.name | test(" [(].+[)]") | not) # ignore any existing munged builds - | select(.os | startswith("windows-") | not) - | select(.meta.froms | any(startswith("debian:"))) - | .name += " (debian:unstable)" - | .runs.pull = ([ - "# pull debian:unstable variants of base images for Debian Ports architectures", - "# https://github.com/docker-library/oi-janky-groovy/blob/0f8796a8aeedca90aba0a7e102f35ea172a23bb3/tianon/busybox/arch-pipeline.groovy#L68-L71", - ( - .meta.froms[] - | (sub(":[^-]+"; ":unstable") | @sh) as $img - | ( - "docker pull " + $img, - "docker tag " + $img + " " + @sh - ) - ) - ] | join("\n")) - ] -' "$@" diff --git a/.github/workflows/munge-unstable.sh b/.github/workflows/munge-unstable.sh new file mode 100755 index 00000000..0a0e8097 --- /dev/null +++ b/.github/workflows/munge-unstable.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +# much easier to get correct quoting/escaping if we define "sedExpr" outside the jq expression +jq --arg sedExpr 's/(FROM debian:)[^ -]+/\1unstable/g; s/(FROM alpine:)[^ -]+/\1edge/g' ' + .matrix.include += [ + .matrix.include[] + | select(.name | test(" [(].+[)]") | not) # ignore any existing munged builds + | select(.os | startswith("windows-") | not) + | select(.meta.froms | any(startswith("debian:") or startswith("alpine:"))) + | .name += " (unstable)" + | .runs.prepare += ([ + "", + "# pull debian:unstable / alpine:edge variants of base images for non-Debian Stable architectures (riscv64)", + "# https://github.com/docker-library/oi-janky-groovy/blob/0f8796a8aeedca90aba0a7e102f35ea172a23bb3/tianon/busybox/arch-pipeline.groovy#L68-L71", + "sed -ri -e \($sedExpr | @sh) */*/Dockerfile.builder", + "git diff */*/Dockerfile.builder", + "git add */*/Dockerfile.builder", # to make sure "git diff --exit-code" ignores this (expected) change + empty + ] | join("\n")) + ] +' "$@" diff --git a/Dockerfile.template b/Dockerfile.template index 4c1acc7d..eb1261de 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/apply-templates.sh b/apply-templates.sh index d2c517c3..52eba3b3 100755 --- a/apply-templates.sh +++ b/apply-templates.sh @@ -35,16 +35,21 @@ for version; do variants="$(jq -r '.[env.version].variants | map(@sh) | join(" ")' versions.json)" eval "variants=( $variants )" + # TODO somehow make sure this deletes any content we're not generating (without accidentally deleting potentialy generated tarballs for the things we *do* care about) + for variant in "${variants[@]}"; do export variant echo "processing $version/$variant ..." + mkdir -p "$version/$variant" + { generated_warning gawk -f "$jqt" Dockerfile-builder.template } > "$version/$variant/Dockerfile.builder" cp Dockerfile.template "$version/$variant/Dockerfile" + ln -svfT amd64/rootfs.tar.gz "$version/$variant/busybox.tar.gz" done done diff --git a/build.sh b/build.sh index 003d7627..50319eee 100755 --- a/build.sh +++ b/build.sh @@ -8,11 +8,39 @@ if [ "$#" -eq 0 ]; then eval "set -- $dirs" fi +[ -n "$BASHBREW_ARCH" ] +platformString="$(bashbrew cat --format '{{ ociPlatform arch }}' <(echo 'Maintainers: empty hack (@example)'))" +platform="$(bashbrew cat --format '{{ ociPlatform arch | json }}' <(echo 'Maintainers: empty hack (@example)'))" + for dir; do - base="busybox:${dir////-}" + variant="$(basename "$dir")" + base="busybox:${dir////-}-$BASHBREW_ARCH" + + froms="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile.builder")" + for from in "$froms"; do + if ! bashbrew remote arches --json "$from" | jq -e '.arches | has(env.BASHBREW_ARCH)' > /dev/null; then + echo >&2 "warning: '$base' is 'FROM $from' which does not support '$BASHBREW_ARCH'; skipping" + continue 2 + fi + done + ( set -x - docker build -t "$base-builder" -f "$dir/Dockerfile.builder" "$dir" + + # TODO save the output of "bashbrew remote arches" above so we can "--build-context" here? + docker buildx build \ + --progress=plain \ + --platform "$platformString" \ + --pull \ + --load \ + --tag "$base-builder" \ + --file "$dir/Dockerfile.builder" \ + "$dir" + + oci="$dir/$BASHBREW_ARCH" + rm -rf "$oci" + mkdir "$oci" "$oci/blobs" "$oci/blobs/sha256" + docker run --rm "$base-builder" \ tar \ --create \ @@ -22,8 +50,89 @@ for dir; do --sort name \ --mtime /usr/src/busybox.SOURCE_DATE_EPOCH --clamp-mtime \ . \ - | xz -T0 -z9 > "$dir/busybox.tar.xz" - sha256sum "$dir/busybox.tar.xz" + > "$oci/rootfs.tar" + + # if we gzip separately, we can calculate the diffid without decompressing + diffId="$(sha256sum "$oci/rootfs.tar" | cut -d' ' -f1)" + diffId="sha256:$diffId" + + # we need to use the container's gzip so it's more likely reproducible over time (and using busybox's own gzip is a cute touch 😀) + docker run -i --rm "$base-builder" chroot rootfs gzip -c < "$oci/rootfs.tar" > "$oci/rootfs.tar.gz" + rm "$oci/rootfs.tar" + rootfs="$(sha256sum "$oci/rootfs.tar.gz" | cut -d' ' -f1)" + ln -svfT --relative "$oci/rootfs.tar.gz" "$oci/blobs/sha256/$rootfs" + rootfsSize="$(stat --format '%s' --dereference "$oci/blobs/sha256/$rootfs")" + rootfs="sha256:$rootfs" + + SOURCE_DATE_EPOCH="$(docker run --rm "$base-builder" cat /usr/src/busybox.SOURCE_DATE_EPOCH)" + createdBy="$(docker run --rm --env variant="$variant" "$base-builder" sh -euc '. /etc/os-release && echo "BusyBox $BUSYBOX_VERSION ($variant)${BUILDROOT_VERSION:+, Buildroot $BUILDROOT_VERSION}, ${NAME%% *} $VERSION_ID"')" + jq -n --tab --arg SOURCE_DATE_EPOCH "$SOURCE_DATE_EPOCH" --arg diffId "$diffId" --arg createdBy "$createdBy" --argjson platform "$platform" ' + ($SOURCE_DATE_EPOCH | tonumber | strftime("%Y-%m-%dT%H:%M:%SZ")) as $created + | { + config: { + Cmd: [ "sh" ], + }, + created: $created, + history: [ { + created: $created, + created_by: $createdBy, + } ], + rootfs: { + type: "layers", + diff_ids: [ $diffId ], + }, + } + $platform + ' > "$oci/image-config.json" + config="$(sha256sum "$oci/image-config.json" | cut -d' ' -f1)" + ln -svfT --relative "$oci/image-config.json" "$oci/blobs/sha256/$config" + configSize="$(stat --format '%s' --dereference "$oci/blobs/sha256/$config")" + config="sha256:$config" + + version="$(cut <<<"$createdBy" -d' ' -f2)" # a better way to scrape the BusyBox version? maybe this is fine (want to avoid yet another container run) + jq -n --tab --arg version "$version" --arg variant "$variant" --arg config "$config" --arg configSize "$configSize" --arg rootfs "$rootfs" --arg rootfsSize "$rootfsSize" ' + { + schemaVersion: 2, + mediaType: "application/vnd.oci.image.manifest.v1+json", + config: { + mediaType: "application/vnd.oci.image.config.v1+json", + digest: $config, + size: ($configSize | tonumber), + }, + layers: [ { + mediaType: "application/vnd.oci.image.layer.v1.tar+gzip", + digest: $rootfs, + size: ($rootfsSize | tonumber), + } ], + annotations: { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": ($version + "-" + $variant), + }, + } + ' > "$oci/image-manifest.json" + manifest="$(sha256sum "$oci/image-manifest.json" | cut -d' ' -f1)" + ln -svfT --relative "$oci/image-manifest.json" "$oci/blobs/sha256/$manifest" + manifestSize="$(stat --format '%s' --dereference "$oci/blobs/sha256/$manifest")" + manifest="sha256:$manifest" + + jq -nc '{ imageLayoutVersion:"1.0.0" }' > "$oci/oci-layout" + jq -n --tab --arg version "$version" --arg variant "$variant" --arg manifest "$manifest" --arg manifestSize "$manifestSize" --argjson platform "$platform" ' + { + schemaVersion: 2, + mediaType: "application/vnd.oci.image.index.v1+json", + manifests: [ { + mediaType: "application/vnd.oci.image.manifest.v1+json", + digest: $manifest, + size: ($manifestSize | tonumber), + platform: $platform, + annotations: { + "org.opencontainers.image.ref.name": ("busybox:" + $version + "-" + $variant), + "io.containerd.image.name": ("busybox:" + $version + "-" + $variant), + }, + } ], + } + ' > "$oci/index.json" + + ln -svfT --relative "$oci/rootfs.tar.gz" "$dir/busybox.tar.gz" docker build -t "$base-test" "$dir" docker run --rm "$base-test" sh -xec 'true' diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 49efad0d..9b8801da 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -34,6 +34,8 @@ Maintainers: Tianon Gravi (@tianon), Joseph Ferguson (@yosifkit) GitRepo: $gitHubUrl.git GitCommit: $selfCommit +Builder: oci-import +File: index.json EOH for arch in "${arches[@]}"; do commit="${archCommits[$arch]}" @@ -97,6 +99,7 @@ for version; do fi versionAliases+=( latest ) + actualArches=() declare -A archLatestDir=() for variant in "${variants[@]}"; do dir="$version/$variant" @@ -107,25 +110,31 @@ for version; do variantArches=() for arch in "${arches[@]}"; do archCommit="${archCommits[$arch]}" - if wget --quiet --spider -O /dev/null -o /dev/null "$rawGitUrl/$archCommit/$dir/busybox.tar.xz"; then + if wget --quiet --spider -O /dev/null -o /dev/null "$rawGitUrl/$archCommit/$dir/$arch/rootfs.tar.gz"; then variantArches+=( "$arch" ) - : "${archLatestDir[$arch]:=$dir}" # record the first supported directory per architecture for "latest" and friends + if [ -z "${archLatestDir[$arch]:-}" ]; then + # record the first supported directory per architecture for "latest" and friends + archLatestDir["$arch"]="$dir/$arch" + actualArches+=( "$arch" ) + fi fi done - if _tags "${variantAliases[@]}"; then + if [ "${#variantArches[@]}" -gt 0 ] && _tags "${variantAliases[@]}"; then cat <<-EOE Architectures: $(join ', ' "${variantArches[@]}") - Directory: $dir EOE + for arch in "${variantArches[@]}"; do + echo "$arch-Directory: $dir/$arch" + done fi done - if _tags "${versionAliases[@]}"; then + if [ "${#actualArches[@]}" -gt 0 ] && _tags "${versionAliases[@]}"; then cat <<-EOE - Architectures: $(join ', ' "${arches[@]}") + Architectures: $(join ', ' "${actualArches[@]}") EOE - for arch in "${arches[@]}"; do + for arch in "${actualArches[@]}"; do archDir="${archLatestDir[$arch]}" cat <<-EOA ${arch}-Directory: $archDir diff --git a/latest-1/glibc/Dockerfile b/latest-1/glibc/Dockerfile index 4c1acc7d..eb1261de 100644 --- a/latest-1/glibc/Dockerfile +++ b/latest-1/glibc/Dockerfile @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/latest-1/glibc/amd64/blobs/sha256/1c10e93757391bd459976f6382e0c0e03a0af3f239cd745424b06d3b4737f60e b/latest-1/glibc/amd64/blobs/sha256/1c10e93757391bd459976f6382e0c0e03a0af3f239cd745424b06d3b4737f60e new file mode 120000 index 00000000..c8bac38c --- /dev/null +++ b/latest-1/glibc/amd64/blobs/sha256/1c10e93757391bd459976f6382e0c0e03a0af3f239cd745424b06d3b4737f60e @@ -0,0 +1 @@ +../../image-config.json \ No newline at end of file diff --git a/latest-1/glibc/amd64/blobs/sha256/be454047891e51dc9c733f98c5fdeae2e1e82b1f12a2bd052b4c22e1161f1bc0 b/latest-1/glibc/amd64/blobs/sha256/be454047891e51dc9c733f98c5fdeae2e1e82b1f12a2bd052b4c22e1161f1bc0 new file mode 120000 index 00000000..980db356 --- /dev/null +++ b/latest-1/glibc/amd64/blobs/sha256/be454047891e51dc9c733f98c5fdeae2e1e82b1f12a2bd052b4c22e1161f1bc0 @@ -0,0 +1 @@ +../../rootfs.tar.gz \ No newline at end of file diff --git a/latest-1/glibc/amd64/blobs/sha256/da78e77ef445a26ffe297167a7e1e046766a57d2ebcf9b19723894e2a636aee1 b/latest-1/glibc/amd64/blobs/sha256/da78e77ef445a26ffe297167a7e1e046766a57d2ebcf9b19723894e2a636aee1 new file mode 120000 index 00000000..9530c85b --- /dev/null +++ b/latest-1/glibc/amd64/blobs/sha256/da78e77ef445a26ffe297167a7e1e046766a57d2ebcf9b19723894e2a636aee1 @@ -0,0 +1 @@ +../../image-manifest.json \ No newline at end of file diff --git a/latest-1/glibc/amd64/image-config.json b/latest-1/glibc/amd64/image-config.json new file mode 100644 index 00000000..c2d9ea35 --- /dev/null +++ b/latest-1/glibc/amd64/image-config.json @@ -0,0 +1,22 @@ +{ + "config": { + "Cmd": [ + "sh" + ] + }, + "created": "2021-12-26T16:56:57Z", + "history": [ + { + "created": "2021-12-26T16:56:57Z", + "created_by": "BusyBox 1.35.0 (glibc), Debian 12" + } + ], + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:be94c013eea8cbd66c1fc201cd544144cf5befd123bececbe4ca2453e29314b6" + ] + }, + "architecture": "amd64", + "os": "linux" +} diff --git a/latest-1/glibc/amd64/image-manifest.json b/latest-1/glibc/amd64/image-manifest.json new file mode 100644 index 00000000..9fe95272 --- /dev/null +++ b/latest-1/glibc/amd64/image-manifest.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:1c10e93757391bd459976f6382e0c0e03a0af3f239cd745424b06d3b4737f60e", + "size": 372 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:be454047891e51dc9c733f98c5fdeae2e1e82b1f12a2bd052b4c22e1161f1bc0", + "size": 2148915 + } + ], + "annotations": { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": "1.35.0-glibc" + } +} diff --git a/latest-1/glibc/amd64/index.json b/latest-1/glibc/amd64/index.json new file mode 100644 index 00000000..5c78d247 --- /dev/null +++ b/latest-1/glibc/amd64/index.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.index.v1+json", + "manifests": [ + { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:da78e77ef445a26ffe297167a7e1e046766a57d2ebcf9b19723894e2a636aee1", + "size": 610, + "platform": { + "architecture": "amd64", + "os": "linux" + }, + "annotations": { + "org.opencontainers.image.ref.name": "busybox:1.35.0-glibc", + "io.containerd.image.name": "busybox:1.35.0-glibc" + } + } + ] +} diff --git a/latest-1/glibc/amd64/oci-layout b/latest-1/glibc/amd64/oci-layout new file mode 100644 index 00000000..d5e10fd6 --- /dev/null +++ b/latest-1/glibc/amd64/oci-layout @@ -0,0 +1 @@ +{"imageLayoutVersion":"1.0.0"} diff --git a/latest-1/glibc/busybox.tar.gz b/latest-1/glibc/busybox.tar.gz new file mode 120000 index 00000000..93408f51 --- /dev/null +++ b/latest-1/glibc/busybox.tar.gz @@ -0,0 +1 @@ +amd64/rootfs.tar.gz \ No newline at end of file diff --git a/latest-1/musl/Dockerfile b/latest-1/musl/Dockerfile index 4c1acc7d..eb1261de 100644 --- a/latest-1/musl/Dockerfile +++ b/latest-1/musl/Dockerfile @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/latest-1/musl/amd64/blobs/sha256/7e3712170429f1cb4fc838e6ec80548d6af2778301f3c88a57e4178d7aa16818 b/latest-1/musl/amd64/blobs/sha256/7e3712170429f1cb4fc838e6ec80548d6af2778301f3c88a57e4178d7aa16818 new file mode 120000 index 00000000..980db356 --- /dev/null +++ b/latest-1/musl/amd64/blobs/sha256/7e3712170429f1cb4fc838e6ec80548d6af2778301f3c88a57e4178d7aa16818 @@ -0,0 +1 @@ +../../rootfs.tar.gz \ No newline at end of file diff --git a/latest-1/musl/amd64/blobs/sha256/ab169714e570fc081439d21c6fefccdc40841c722a5ced84af57da7ccacce8e3 b/latest-1/musl/amd64/blobs/sha256/ab169714e570fc081439d21c6fefccdc40841c722a5ced84af57da7ccacce8e3 new file mode 120000 index 00000000..9530c85b --- /dev/null +++ b/latest-1/musl/amd64/blobs/sha256/ab169714e570fc081439d21c6fefccdc40841c722a5ced84af57da7ccacce8e3 @@ -0,0 +1 @@ +../../image-manifest.json \ No newline at end of file diff --git a/latest-1/musl/amd64/blobs/sha256/f36b741eb9675622ca20443a43b42d5dae106e346115faf4b4604a51e63bd421 b/latest-1/musl/amd64/blobs/sha256/f36b741eb9675622ca20443a43b42d5dae106e346115faf4b4604a51e63bd421 new file mode 120000 index 00000000..c8bac38c --- /dev/null +++ b/latest-1/musl/amd64/blobs/sha256/f36b741eb9675622ca20443a43b42d5dae106e346115faf4b4604a51e63bd421 @@ -0,0 +1 @@ +../../image-config.json \ No newline at end of file diff --git a/latest-1/musl/amd64/image-config.json b/latest-1/musl/amd64/image-config.json new file mode 100644 index 00000000..efc89caa --- /dev/null +++ b/latest-1/musl/amd64/image-config.json @@ -0,0 +1,22 @@ +{ + "config": { + "Cmd": [ + "sh" + ] + }, + "created": "2021-12-26T16:56:57Z", + "history": [ + { + "created": "2021-12-26T16:56:57Z", + "created_by": "BusyBox 1.35.0 (musl), Alpine 3.19.1" + } + ], + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:e81af897a6ed42bf107335af397aee8b165cb545b01ebdda4cbd9fff72c51fdb" + ] + }, + "architecture": "amd64", + "os": "linux" +} diff --git a/latest-1/musl/amd64/image-manifest.json b/latest-1/musl/amd64/image-manifest.json new file mode 100644 index 00000000..c241cad5 --- /dev/null +++ b/latest-1/musl/amd64/image-manifest.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:f36b741eb9675622ca20443a43b42d5dae106e346115faf4b4604a51e63bd421", + "size": 375 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:7e3712170429f1cb4fc838e6ec80548d6af2778301f3c88a57e4178d7aa16818", + "size": 849546 + } + ], + "annotations": { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": "1.35.0-musl" + } +} diff --git a/latest-1/musl/amd64/index.json b/latest-1/musl/amd64/index.json new file mode 100644 index 00000000..2121aee3 --- /dev/null +++ b/latest-1/musl/amd64/index.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.index.v1+json", + "manifests": [ + { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:ab169714e570fc081439d21c6fefccdc40841c722a5ced84af57da7ccacce8e3", + "size": 608, + "platform": { + "architecture": "amd64", + "os": "linux" + }, + "annotations": { + "org.opencontainers.image.ref.name": "busybox:1.35.0-musl", + "io.containerd.image.name": "busybox:1.35.0-musl" + } + } + ] +} diff --git a/latest-1/musl/amd64/oci-layout b/latest-1/musl/amd64/oci-layout new file mode 100644 index 00000000..d5e10fd6 --- /dev/null +++ b/latest-1/musl/amd64/oci-layout @@ -0,0 +1 @@ +{"imageLayoutVersion":"1.0.0"} diff --git a/latest-1/musl/busybox.tar.gz b/latest-1/musl/busybox.tar.gz new file mode 120000 index 00000000..93408f51 --- /dev/null +++ b/latest-1/musl/busybox.tar.gz @@ -0,0 +1 @@ +amd64/rootfs.tar.gz \ No newline at end of file diff --git a/latest-1/uclibc/Dockerfile b/latest-1/uclibc/Dockerfile index 4c1acc7d..eb1261de 100644 --- a/latest-1/uclibc/Dockerfile +++ b/latest-1/uclibc/Dockerfile @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/latest-1/uclibc/amd64/blobs/sha256/73845083f9a000342cd00a4211c7487091e110875f6d08fa59b23837e88392f4 b/latest-1/uclibc/amd64/blobs/sha256/73845083f9a000342cd00a4211c7487091e110875f6d08fa59b23837e88392f4 new file mode 120000 index 00000000..c8bac38c --- /dev/null +++ b/latest-1/uclibc/amd64/blobs/sha256/73845083f9a000342cd00a4211c7487091e110875f6d08fa59b23837e88392f4 @@ -0,0 +1 @@ +../../image-config.json \ No newline at end of file diff --git a/latest-1/uclibc/amd64/blobs/sha256/9bd3480f69f87f9c0c8ad221ef54de4c7d93cf4b8844b5ea42d98d52fe736dda b/latest-1/uclibc/amd64/blobs/sha256/9bd3480f69f87f9c0c8ad221ef54de4c7d93cf4b8844b5ea42d98d52fe736dda new file mode 120000 index 00000000..9530c85b --- /dev/null +++ b/latest-1/uclibc/amd64/blobs/sha256/9bd3480f69f87f9c0c8ad221ef54de4c7d93cf4b8844b5ea42d98d52fe736dda @@ -0,0 +1 @@ +../../image-manifest.json \ No newline at end of file diff --git a/latest-1/uclibc/amd64/blobs/sha256/bc5a47da295fe344f245fda95b6e0df4bb783dbea338a47ccc296686e12751b6 b/latest-1/uclibc/amd64/blobs/sha256/bc5a47da295fe344f245fda95b6e0df4bb783dbea338a47ccc296686e12751b6 new file mode 120000 index 00000000..980db356 --- /dev/null +++ b/latest-1/uclibc/amd64/blobs/sha256/bc5a47da295fe344f245fda95b6e0df4bb783dbea338a47ccc296686e12751b6 @@ -0,0 +1 @@ +../../rootfs.tar.gz \ No newline at end of file diff --git a/latest-1/uclibc/amd64/image-config.json b/latest-1/uclibc/amd64/image-config.json new file mode 100644 index 00000000..b9c7fea0 --- /dev/null +++ b/latest-1/uclibc/amd64/image-config.json @@ -0,0 +1,22 @@ +{ + "config": { + "Cmd": [ + "sh" + ] + }, + "created": "2021-12-26T16:56:57Z", + "history": [ + { + "created": "2021-12-26T16:56:57Z", + "created_by": "BusyBox 1.35.0 (uclibc), Buildroot 2023.11.1, Debian 12" + } + ], + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:091fda9c6234d04b8dad2a58ab716d819a8ed19d9d967681d8c84f38a8a5ec9a" + ] + }, + "architecture": "amd64", + "os": "linux" +} diff --git a/latest-1/uclibc/amd64/image-manifest.json b/latest-1/uclibc/amd64/image-manifest.json new file mode 100644 index 00000000..cecc4b49 --- /dev/null +++ b/latest-1/uclibc/amd64/image-manifest.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:73845083f9a000342cd00a4211c7487091e110875f6d08fa59b23837e88392f4", + "size": 394 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:bc5a47da295fe344f245fda95b6e0df4bb783dbea338a47ccc296686e12751b6", + "size": 754106 + } + ], + "annotations": { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": "1.35.0-uclibc" + } +} diff --git a/latest-1/uclibc/amd64/index.json b/latest-1/uclibc/amd64/index.json new file mode 100644 index 00000000..ce0fce0f --- /dev/null +++ b/latest-1/uclibc/amd64/index.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.index.v1+json", + "manifests": [ + { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:9bd3480f69f87f9c0c8ad221ef54de4c7d93cf4b8844b5ea42d98d52fe736dda", + "size": 610, + "platform": { + "architecture": "amd64", + "os": "linux" + }, + "annotations": { + "org.opencontainers.image.ref.name": "busybox:1.35.0-uclibc", + "io.containerd.image.name": "busybox:1.35.0-uclibc" + } + } + ] +} diff --git a/latest-1/uclibc/amd64/oci-layout b/latest-1/uclibc/amd64/oci-layout new file mode 100644 index 00000000..d5e10fd6 --- /dev/null +++ b/latest-1/uclibc/amd64/oci-layout @@ -0,0 +1 @@ +{"imageLayoutVersion":"1.0.0"} diff --git a/latest-1/uclibc/busybox.tar.gz b/latest-1/uclibc/busybox.tar.gz new file mode 120000 index 00000000..93408f51 --- /dev/null +++ b/latest-1/uclibc/busybox.tar.gz @@ -0,0 +1 @@ +amd64/rootfs.tar.gz \ No newline at end of file diff --git a/latest/glibc/Dockerfile b/latest/glibc/Dockerfile index 4c1acc7d..eb1261de 100644 --- a/latest/glibc/Dockerfile +++ b/latest/glibc/Dockerfile @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/latest/glibc/amd64/blobs/sha256/4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0 b/latest/glibc/amd64/blobs/sha256/4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0 new file mode 120000 index 00000000..9530c85b --- /dev/null +++ b/latest/glibc/amd64/blobs/sha256/4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0 @@ -0,0 +1 @@ +../../image-manifest.json \ No newline at end of file diff --git a/latest/glibc/amd64/blobs/sha256/7b2699543f22d5b8dc8d66a5873eb246767bca37232dee1e7a3b8c9956bceb0c b/latest/glibc/amd64/blobs/sha256/7b2699543f22d5b8dc8d66a5873eb246767bca37232dee1e7a3b8c9956bceb0c new file mode 120000 index 00000000..980db356 --- /dev/null +++ b/latest/glibc/amd64/blobs/sha256/7b2699543f22d5b8dc8d66a5873eb246767bca37232dee1e7a3b8c9956bceb0c @@ -0,0 +1 @@ +../../rootfs.tar.gz \ No newline at end of file diff --git a/latest/glibc/amd64/blobs/sha256/ba5dc23f65d4cc4a4535bce55cf9e63b068eb02946e3422d3587e8ce803b6aab b/latest/glibc/amd64/blobs/sha256/ba5dc23f65d4cc4a4535bce55cf9e63b068eb02946e3422d3587e8ce803b6aab new file mode 120000 index 00000000..c8bac38c --- /dev/null +++ b/latest/glibc/amd64/blobs/sha256/ba5dc23f65d4cc4a4535bce55cf9e63b068eb02946e3422d3587e8ce803b6aab @@ -0,0 +1 @@ +../../image-config.json \ No newline at end of file diff --git a/latest/glibc/amd64/image-config.json b/latest/glibc/amd64/image-config.json new file mode 100644 index 00000000..2a022c04 --- /dev/null +++ b/latest/glibc/amd64/image-config.json @@ -0,0 +1,22 @@ +{ + "config": { + "Cmd": [ + "sh" + ] + }, + "created": "2023-05-18T22:34:17Z", + "history": [ + { + "created": "2023-05-18T22:34:17Z", + "created_by": "BusyBox 1.36.1 (glibc), Debian 12" + } + ], + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:95c4a60383f7b6eb6f7b8e153a07cd6e896de0476763bef39d0f6cf3400624bd" + ] + }, + "architecture": "amd64", + "os": "linux" +} diff --git a/latest/glibc/amd64/image-manifest.json b/latest/glibc/amd64/image-manifest.json new file mode 100644 index 00000000..daf43039 --- /dev/null +++ b/latest/glibc/amd64/image-manifest.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:ba5dc23f65d4cc4a4535bce55cf9e63b068eb02946e3422d3587e8ce803b6aab", + "size": 372 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:7b2699543f22d5b8dc8d66a5873eb246767bca37232dee1e7a3b8c9956bceb0c", + "size": 2152262 + } + ], + "annotations": { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": "1.36.1-glibc" + } +} diff --git a/latest/glibc/amd64/index.json b/latest/glibc/amd64/index.json new file mode 100644 index 00000000..b5e2e51d --- /dev/null +++ b/latest/glibc/amd64/index.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.index.v1+json", + "manifests": [ + { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:4be429a5fbb2e71ae7958bfa558bc637cf3a61baf40a708cb8fff532b39e52d0", + "size": 610, + "platform": { + "architecture": "amd64", + "os": "linux" + }, + "annotations": { + "org.opencontainers.image.ref.name": "busybox:1.36.1-glibc", + "io.containerd.image.name": "busybox:1.36.1-glibc" + } + } + ] +} diff --git a/latest/glibc/amd64/oci-layout b/latest/glibc/amd64/oci-layout new file mode 100644 index 00000000..d5e10fd6 --- /dev/null +++ b/latest/glibc/amd64/oci-layout @@ -0,0 +1 @@ +{"imageLayoutVersion":"1.0.0"} diff --git a/latest/glibc/busybox.tar.gz b/latest/glibc/busybox.tar.gz new file mode 120000 index 00000000..93408f51 --- /dev/null +++ b/latest/glibc/busybox.tar.gz @@ -0,0 +1 @@ +amd64/rootfs.tar.gz \ No newline at end of file diff --git a/latest/musl/Dockerfile b/latest/musl/Dockerfile index 4c1acc7d..eb1261de 100644 --- a/latest/musl/Dockerfile +++ b/latest/musl/Dockerfile @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/latest/musl/amd64/blobs/sha256/6e5e0f90c009d12db9478afe5656920e7bdd548e9fd8f50eab2be694102ae318 b/latest/musl/amd64/blobs/sha256/6e5e0f90c009d12db9478afe5656920e7bdd548e9fd8f50eab2be694102ae318 new file mode 120000 index 00000000..c8bac38c --- /dev/null +++ b/latest/musl/amd64/blobs/sha256/6e5e0f90c009d12db9478afe5656920e7bdd548e9fd8f50eab2be694102ae318 @@ -0,0 +1 @@ +../../image-config.json \ No newline at end of file diff --git a/latest/musl/amd64/blobs/sha256/b9d056b83bb6446fee29e89a7fcf10203c562c1f59586a6e2f39c903597bda34 b/latest/musl/amd64/blobs/sha256/b9d056b83bb6446fee29e89a7fcf10203c562c1f59586a6e2f39c903597bda34 new file mode 120000 index 00000000..9530c85b --- /dev/null +++ b/latest/musl/amd64/blobs/sha256/b9d056b83bb6446fee29e89a7fcf10203c562c1f59586a6e2f39c903597bda34 @@ -0,0 +1 @@ +../../image-manifest.json \ No newline at end of file diff --git a/latest/musl/amd64/blobs/sha256/d6e6e2f0bb218b28aaad3f646fd30a36549d61bfbbdd7ad5d1d75b9d9e671297 b/latest/musl/amd64/blobs/sha256/d6e6e2f0bb218b28aaad3f646fd30a36549d61bfbbdd7ad5d1d75b9d9e671297 new file mode 120000 index 00000000..980db356 --- /dev/null +++ b/latest/musl/amd64/blobs/sha256/d6e6e2f0bb218b28aaad3f646fd30a36549d61bfbbdd7ad5d1d75b9d9e671297 @@ -0,0 +1 @@ +../../rootfs.tar.gz \ No newline at end of file diff --git a/latest/musl/amd64/image-config.json b/latest/musl/amd64/image-config.json new file mode 100644 index 00000000..12387f84 --- /dev/null +++ b/latest/musl/amd64/image-config.json @@ -0,0 +1,22 @@ +{ + "config": { + "Cmd": [ + "sh" + ] + }, + "created": "2023-05-18T22:34:17Z", + "history": [ + { + "created": "2023-05-18T22:34:17Z", + "created_by": "BusyBox 1.36.1 (musl), Alpine 3.19.1" + } + ], + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:994bf8f4adc78c5c1e4a6b5e3b59ad57902b301e0e79255a3e95ea4b213a76bd" + ] + }, + "architecture": "amd64", + "os": "linux" +} diff --git a/latest/musl/amd64/image-manifest.json b/latest/musl/amd64/image-manifest.json new file mode 100644 index 00000000..d0ca8549 --- /dev/null +++ b/latest/musl/amd64/image-manifest.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:6e5e0f90c009d12db9478afe5656920e7bdd548e9fd8f50eab2be694102ae318", + "size": 375 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:d6e6e2f0bb218b28aaad3f646fd30a36549d61bfbbdd7ad5d1d75b9d9e671297", + "size": 852587 + } + ], + "annotations": { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": "1.36.1-musl" + } +} diff --git a/latest/musl/amd64/index.json b/latest/musl/amd64/index.json new file mode 100644 index 00000000..ac647649 --- /dev/null +++ b/latest/musl/amd64/index.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.index.v1+json", + "manifests": [ + { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:b9d056b83bb6446fee29e89a7fcf10203c562c1f59586a6e2f39c903597bda34", + "size": 608, + "platform": { + "architecture": "amd64", + "os": "linux" + }, + "annotations": { + "org.opencontainers.image.ref.name": "busybox:1.36.1-musl", + "io.containerd.image.name": "busybox:1.36.1-musl" + } + } + ] +} diff --git a/latest/musl/amd64/oci-layout b/latest/musl/amd64/oci-layout new file mode 100644 index 00000000..d5e10fd6 --- /dev/null +++ b/latest/musl/amd64/oci-layout @@ -0,0 +1 @@ +{"imageLayoutVersion":"1.0.0"} diff --git a/latest/musl/busybox.tar.gz b/latest/musl/busybox.tar.gz new file mode 120000 index 00000000..93408f51 --- /dev/null +++ b/latest/musl/busybox.tar.gz @@ -0,0 +1 @@ +amd64/rootfs.tar.gz \ No newline at end of file diff --git a/latest/uclibc/Dockerfile b/latest/uclibc/Dockerfile index 4c1acc7d..eb1261de 100644 --- a/latest/uclibc/Dockerfile +++ b/latest/uclibc/Dockerfile @@ -1,3 +1,5 @@ +# this isn't used for the official published images anymore, but is included for backwards compatibility +# see https://github.com/docker-library/bashbrew/issues/51 FROM scratch -ADD busybox.tar.xz / +ADD busybox.tar.gz / CMD ["sh"] diff --git a/latest/uclibc/amd64/blobs/sha256/23c25518807a447b99381ac33548b6a813ce904b613f11f5e19e1ea70e9c49e8 b/latest/uclibc/amd64/blobs/sha256/23c25518807a447b99381ac33548b6a813ce904b613f11f5e19e1ea70e9c49e8 new file mode 120000 index 00000000..c8bac38c --- /dev/null +++ b/latest/uclibc/amd64/blobs/sha256/23c25518807a447b99381ac33548b6a813ce904b613f11f5e19e1ea70e9c49e8 @@ -0,0 +1 @@ +../../image-config.json \ No newline at end of file diff --git a/latest/uclibc/amd64/blobs/sha256/478851d8396007d974a545c934638e208c2e83f20c413323d373ff87f2a4bce0 b/latest/uclibc/amd64/blobs/sha256/478851d8396007d974a545c934638e208c2e83f20c413323d373ff87f2a4bce0 new file mode 120000 index 00000000..9530c85b --- /dev/null +++ b/latest/uclibc/amd64/blobs/sha256/478851d8396007d974a545c934638e208c2e83f20c413323d373ff87f2a4bce0 @@ -0,0 +1 @@ +../../image-manifest.json \ No newline at end of file diff --git a/latest/uclibc/amd64/blobs/sha256/cd82127e91e4b4656e681824cb3687b64060f91d9b44a695055a3475ac0dcd89 b/latest/uclibc/amd64/blobs/sha256/cd82127e91e4b4656e681824cb3687b64060f91d9b44a695055a3475ac0dcd89 new file mode 120000 index 00000000..980db356 --- /dev/null +++ b/latest/uclibc/amd64/blobs/sha256/cd82127e91e4b4656e681824cb3687b64060f91d9b44a695055a3475ac0dcd89 @@ -0,0 +1 @@ +../../rootfs.tar.gz \ No newline at end of file diff --git a/latest/uclibc/amd64/image-config.json b/latest/uclibc/amd64/image-config.json new file mode 100644 index 00000000..01a1075c --- /dev/null +++ b/latest/uclibc/amd64/image-config.json @@ -0,0 +1,22 @@ +{ + "config": { + "Cmd": [ + "sh" + ] + }, + "created": "2023-05-18T22:34:17Z", + "history": [ + { + "created": "2023-05-18T22:34:17Z", + "created_by": "BusyBox 1.36.1 (uclibc), Buildroot 2023.11.1, Debian 12" + } + ], + "rootfs": { + "type": "layers", + "diff_ids": [ + "sha256:70d875e518ac9d2a6cda536a5422ba616fafcb661d71888ba29e5a031a248a3e" + ] + }, + "architecture": "amd64", + "os": "linux" +} diff --git a/latest/uclibc/amd64/image-manifest.json b/latest/uclibc/amd64/image-manifest.json new file mode 100644 index 00000000..98d4bae9 --- /dev/null +++ b/latest/uclibc/amd64/image-manifest.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:23c25518807a447b99381ac33548b6a813ce904b613f11f5e19e1ea70e9c49e8", + "size": 394 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:cd82127e91e4b4656e681824cb3687b64060f91d9b44a695055a3475ac0dcd89", + "size": 757887 + } + ], + "annotations": { + "org.opencontainers.image.url": "https://github.com/docker-library/busybox", + "org.opencontainers.image.version": "1.36.1-uclibc" + } +} diff --git a/latest/uclibc/amd64/index.json b/latest/uclibc/amd64/index.json new file mode 100644 index 00000000..90a625a3 --- /dev/null +++ b/latest/uclibc/amd64/index.json @@ -0,0 +1,19 @@ +{ + "schemaVersion": 2, + "mediaType": "application/vnd.oci.image.index.v1+json", + "manifests": [ + { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:478851d8396007d974a545c934638e208c2e83f20c413323d373ff87f2a4bce0", + "size": 610, + "platform": { + "architecture": "amd64", + "os": "linux" + }, + "annotations": { + "org.opencontainers.image.ref.name": "busybox:1.36.1-uclibc", + "io.containerd.image.name": "busybox:1.36.1-uclibc" + } + } + ] +} diff --git a/latest/uclibc/amd64/oci-layout b/latest/uclibc/amd64/oci-layout new file mode 100644 index 00000000..d5e10fd6 --- /dev/null +++ b/latest/uclibc/amd64/oci-layout @@ -0,0 +1 @@ +{"imageLayoutVersion":"1.0.0"} diff --git a/latest/uclibc/busybox.tar.gz b/latest/uclibc/busybox.tar.gz new file mode 120000 index 00000000..93408f51 --- /dev/null +++ b/latest/uclibc/busybox.tar.gz @@ -0,0 +1 @@ +amd64/rootfs.tar.gz \ No newline at end of file