diff --git a/1.23-rc/alpine3.19/Dockerfile b/1.23-rc/alpine3.19/Dockerfile new file mode 100644 index 00000000..8898af38 --- /dev/null +++ b/1.23-rc/alpine3.19/Dockerfile @@ -0,0 +1,128 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM alpine:3.19 AS build + +ENV PATH /usr/local/go/bin:$PATH + +ENV GOLANG_VERSION 1.23rc1 + +RUN set -eux; \ + now="$(date '+%s')"; \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ +# busybox's "tar" doesn't handle directory mtime correctly, so our SOURCE_DATE_EPOCH lookup doesn't work (the mtime of "/usr/local/go" always ends up being the extraction timestamp) + tar \ + ; \ + arch="$(apk --print-arch)"; \ + url=; \ + case "$arch" in \ + 'x86_64') \ + url='https://dl.google.com/go/go1.23rc1.linux-amd64.tar.gz'; \ + sha256='0d8543abb8f4d566b3c8ef25b38e578ae2cb357bba2db8f0c0481531d8e1c939'; \ + ;; \ + 'armhf') \ + url='https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz'; \ + sha256='6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a'; \ + ;; \ + 'armv7') \ + url='https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz'; \ + sha256='6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a'; \ + ;; \ + 'aarch64') \ + url='https://dl.google.com/go/go1.23rc1.linux-arm64.tar.gz'; \ + sha256='1208d96e6535ccf32ceee2f876dbbec588bf0921861d2224b809cbfe797f2319'; \ + ;; \ + 'x86') \ + url='https://dl.google.com/go/go1.23rc1.linux-386.tar.gz'; \ + sha256='770f682ad2b7b2305915fbf2918acf67ef5a06654cdcac1f859d195b2e7d9861'; \ + ;; \ + 'ppc64le') \ + url='https://dl.google.com/go/go1.23rc1.linux-ppc64le.tar.gz'; \ + sha256='bbb5f0f6895f25173e436ef2549342db050b6c2d3e094a0db306a4fa27c231bf'; \ + ;; \ + 'riscv64') \ + url='https://dl.google.com/go/go1.23rc1.linux-riscv64.tar.gz'; \ + sha256='8cb299c73325de4bf59a9788e9851afdead7ab45d8da1eec8bb5f774c4014f8e'; \ + ;; \ + 's390x') \ + url='https://dl.google.com/go/go1.23rc1.linux-s390x.tar.gz'; \ + sha256='7d35beef23925061b0a219a8338a1525f74647fc22aeecab97b983a9d6114054'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ + wget -O go.tgz.asc "$url.asc"; \ + wget -O go.tgz "$url"; \ + echo "$sha256 *go.tgz" | sha256sum -c -; \ + \ +# https://github.com/golang/go/issues/14739#issuecomment-324767697 + GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ +# https://www.google.com/linuxrepositories/ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ +# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ + gpg --batch --verify go.tgz.asc go.tgz; \ + gpgconf --kill all; \ + rm -rf "$GNUPGHOME" go.tgz.asc; \ + \ + tar -C /usr/local -xzf go.tgz; \ + rm go.tgz; \ + \ +# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) + SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + if [ "$arch" = 'armv7' ]; then \ + [ -s /usr/local/go/go.env ]; \ + before="$(go env GOARM)"; [ "$before" != '7' ]; \ + { \ + echo; \ + echo '# https://github.com/docker-library/golang/issues/494'; \ + echo 'GOARM=7'; \ + } >> /usr/local/go/go.env; \ + after="$(go env GOARM)"; [ "$after" = '7' ]; \ +# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ + fi; \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ + apk del --no-network .fetch-deps; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM alpine:3.19 + +RUN apk add --no-cache ca-certificates + +ENV GOLANG_VERSION 1.23rc1 + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/1.23-rc/alpine3.20/Dockerfile b/1.23-rc/alpine3.20/Dockerfile new file mode 100644 index 00000000..c064a925 --- /dev/null +++ b/1.23-rc/alpine3.20/Dockerfile @@ -0,0 +1,128 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM alpine:3.20 AS build + +ENV PATH /usr/local/go/bin:$PATH + +ENV GOLANG_VERSION 1.23rc1 + +RUN set -eux; \ + now="$(date '+%s')"; \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ +# busybox's "tar" doesn't handle directory mtime correctly, so our SOURCE_DATE_EPOCH lookup doesn't work (the mtime of "/usr/local/go" always ends up being the extraction timestamp) + tar \ + ; \ + arch="$(apk --print-arch)"; \ + url=; \ + case "$arch" in \ + 'x86_64') \ + url='https://dl.google.com/go/go1.23rc1.linux-amd64.tar.gz'; \ + sha256='0d8543abb8f4d566b3c8ef25b38e578ae2cb357bba2db8f0c0481531d8e1c939'; \ + ;; \ + 'armhf') \ + url='https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz'; \ + sha256='6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a'; \ + ;; \ + 'armv7') \ + url='https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz'; \ + sha256='6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a'; \ + ;; \ + 'aarch64') \ + url='https://dl.google.com/go/go1.23rc1.linux-arm64.tar.gz'; \ + sha256='1208d96e6535ccf32ceee2f876dbbec588bf0921861d2224b809cbfe797f2319'; \ + ;; \ + 'x86') \ + url='https://dl.google.com/go/go1.23rc1.linux-386.tar.gz'; \ + sha256='770f682ad2b7b2305915fbf2918acf67ef5a06654cdcac1f859d195b2e7d9861'; \ + ;; \ + 'ppc64le') \ + url='https://dl.google.com/go/go1.23rc1.linux-ppc64le.tar.gz'; \ + sha256='bbb5f0f6895f25173e436ef2549342db050b6c2d3e094a0db306a4fa27c231bf'; \ + ;; \ + 'riscv64') \ + url='https://dl.google.com/go/go1.23rc1.linux-riscv64.tar.gz'; \ + sha256='8cb299c73325de4bf59a9788e9851afdead7ab45d8da1eec8bb5f774c4014f8e'; \ + ;; \ + 's390x') \ + url='https://dl.google.com/go/go1.23rc1.linux-s390x.tar.gz'; \ + sha256='7d35beef23925061b0a219a8338a1525f74647fc22aeecab97b983a9d6114054'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ + wget -O go.tgz.asc "$url.asc"; \ + wget -O go.tgz "$url"; \ + echo "$sha256 *go.tgz" | sha256sum -c -; \ + \ +# https://github.com/golang/go/issues/14739#issuecomment-324767697 + GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ +# https://www.google.com/linuxrepositories/ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ +# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ + gpg --batch --verify go.tgz.asc go.tgz; \ + gpgconf --kill all; \ + rm -rf "$GNUPGHOME" go.tgz.asc; \ + \ + tar -C /usr/local -xzf go.tgz; \ + rm go.tgz; \ + \ +# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) + SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + if [ "$arch" = 'armv7' ]; then \ + [ -s /usr/local/go/go.env ]; \ + before="$(go env GOARM)"; [ "$before" != '7' ]; \ + { \ + echo; \ + echo '# https://github.com/docker-library/golang/issues/494'; \ + echo 'GOARM=7'; \ + } >> /usr/local/go/go.env; \ + after="$(go env GOARM)"; [ "$after" = '7' ]; \ +# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ + fi; \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ + apk del --no-network .fetch-deps; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM alpine:3.20 + +RUN apk add --no-cache ca-certificates + +ENV GOLANG_VERSION 1.23rc1 + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/1.23-rc/bookworm/Dockerfile b/1.23-rc/bookworm/Dockerfile new file mode 100644 index 00000000..157bc579 --- /dev/null +++ b/1.23-rc/bookworm/Dockerfile @@ -0,0 +1,130 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM buildpack-deps:bookworm-scm AS build + +ENV PATH /usr/local/go/bin:$PATH + +ENV GOLANG_VERSION 1.23rc1 + +RUN set -eux; \ + now="$(date '+%s')"; \ + arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ + url=; \ + case "$arch" in \ + 'amd64') \ + url='https://dl.google.com/go/go1.23rc1.linux-amd64.tar.gz'; \ + sha256='0d8543abb8f4d566b3c8ef25b38e578ae2cb357bba2db8f0c0481531d8e1c939'; \ + ;; \ + 'armhf') \ + url='https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz'; \ + sha256='6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a'; \ + ;; \ + 'arm64') \ + url='https://dl.google.com/go/go1.23rc1.linux-arm64.tar.gz'; \ + sha256='1208d96e6535ccf32ceee2f876dbbec588bf0921861d2224b809cbfe797f2319'; \ + ;; \ + 'i386') \ + url='https://dl.google.com/go/go1.23rc1.linux-386.tar.gz'; \ + sha256='770f682ad2b7b2305915fbf2918acf67ef5a06654cdcac1f859d195b2e7d9861'; \ + ;; \ + 'mips64el') \ + url='https://dl.google.com/go/go1.23rc1.linux-mips64le.tar.gz'; \ + sha256='adf0f903b8ad46d6aa946677d13ba6ce76d9b597ebda54ace9c15f2e88febc3c'; \ + ;; \ + 'ppc64el') \ + url='https://dl.google.com/go/go1.23rc1.linux-ppc64le.tar.gz'; \ + sha256='bbb5f0f6895f25173e436ef2549342db050b6c2d3e094a0db306a4fa27c231bf'; \ + ;; \ + 'riscv64') \ + url='https://dl.google.com/go/go1.23rc1.linux-riscv64.tar.gz'; \ + sha256='8cb299c73325de4bf59a9788e9851afdead7ab45d8da1eec8bb5f774c4014f8e'; \ + ;; \ + 's390x') \ + url='https://dl.google.com/go/go1.23rc1.linux-s390x.tar.gz'; \ + sha256='7d35beef23925061b0a219a8338a1525f74647fc22aeecab97b983a9d6114054'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ + wget -O go.tgz.asc "$url.asc"; \ + wget -O go.tgz "$url" --progress=dot:giga; \ + echo "$sha256 *go.tgz" | sha256sum -c -; \ + \ +# https://github.com/golang/go/issues/14739#issuecomment-324767697 + GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ +# https://www.google.com/linuxrepositories/ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ +# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ + gpg --batch --verify go.tgz.asc go.tgz; \ + gpgconf --kill all; \ + rm -rf "$GNUPGHOME" go.tgz.asc; \ + \ + tar -C /usr/local -xzf go.tgz; \ + rm go.tgz; \ + \ +# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) + SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + if [ "$arch" = 'armhf' ]; then \ + [ -s /usr/local/go/go.env ]; \ + before="$(go env GOARM)"; [ "$before" != '7' ]; \ + { \ + echo; \ + echo '# https://github.com/docker-library/golang/issues/494'; \ + echo 'GOARM=7'; \ + } >> /usr/local/go/go.env; \ + after="$(go env GOARM)"; [ "$after" = '7' ]; \ +# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ + fi; \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM buildpack-deps:bookworm-scm + +# install cgo-related dependencies +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + g++ \ + gcc \ + libc6-dev \ + make \ + pkg-config \ + ; \ + rm -rf /var/lib/apt/lists/* + +ENV GOLANG_VERSION 1.23rc1 + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/1.23-rc/bullseye/Dockerfile b/1.23-rc/bullseye/Dockerfile new file mode 100644 index 00000000..4dae2010 --- /dev/null +++ b/1.23-rc/bullseye/Dockerfile @@ -0,0 +1,130 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM buildpack-deps:bullseye-scm AS build + +ENV PATH /usr/local/go/bin:$PATH + +ENV GOLANG_VERSION 1.23rc1 + +RUN set -eux; \ + now="$(date '+%s')"; \ + arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ + url=; \ + case "$arch" in \ + 'amd64') \ + url='https://dl.google.com/go/go1.23rc1.linux-amd64.tar.gz'; \ + sha256='0d8543abb8f4d566b3c8ef25b38e578ae2cb357bba2db8f0c0481531d8e1c939'; \ + ;; \ + 'armhf') \ + url='https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz'; \ + sha256='6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a'; \ + ;; \ + 'arm64') \ + url='https://dl.google.com/go/go1.23rc1.linux-arm64.tar.gz'; \ + sha256='1208d96e6535ccf32ceee2f876dbbec588bf0921861d2224b809cbfe797f2319'; \ + ;; \ + 'i386') \ + url='https://dl.google.com/go/go1.23rc1.linux-386.tar.gz'; \ + sha256='770f682ad2b7b2305915fbf2918acf67ef5a06654cdcac1f859d195b2e7d9861'; \ + ;; \ + 'mips64el') \ + url='https://dl.google.com/go/go1.23rc1.linux-mips64le.tar.gz'; \ + sha256='adf0f903b8ad46d6aa946677d13ba6ce76d9b597ebda54ace9c15f2e88febc3c'; \ + ;; \ + 'ppc64el') \ + url='https://dl.google.com/go/go1.23rc1.linux-ppc64le.tar.gz'; \ + sha256='bbb5f0f6895f25173e436ef2549342db050b6c2d3e094a0db306a4fa27c231bf'; \ + ;; \ + 'riscv64') \ + url='https://dl.google.com/go/go1.23rc1.linux-riscv64.tar.gz'; \ + sha256='8cb299c73325de4bf59a9788e9851afdead7ab45d8da1eec8bb5f774c4014f8e'; \ + ;; \ + 's390x') \ + url='https://dl.google.com/go/go1.23rc1.linux-s390x.tar.gz'; \ + sha256='7d35beef23925061b0a219a8338a1525f74647fc22aeecab97b983a9d6114054'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ + wget -O go.tgz.asc "$url.asc"; \ + wget -O go.tgz "$url" --progress=dot:giga; \ + echo "$sha256 *go.tgz" | sha256sum -c -; \ + \ +# https://github.com/golang/go/issues/14739#issuecomment-324767697 + GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ +# https://www.google.com/linuxrepositories/ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ +# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ + gpg --batch --verify go.tgz.asc go.tgz; \ + gpgconf --kill all; \ + rm -rf "$GNUPGHOME" go.tgz.asc; \ + \ + tar -C /usr/local -xzf go.tgz; \ + rm go.tgz; \ + \ +# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) + SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + if [ "$arch" = 'armhf' ]; then \ + [ -s /usr/local/go/go.env ]; \ + before="$(go env GOARM)"; [ "$before" != '7' ]; \ + { \ + echo; \ + echo '# https://github.com/docker-library/golang/issues/494'; \ + echo 'GOARM=7'; \ + } >> /usr/local/go/go.env; \ + after="$(go env GOARM)"; [ "$after" = '7' ]; \ +# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ + fi; \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM buildpack-deps:bullseye-scm + +# install cgo-related dependencies +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + g++ \ + gcc \ + libc6-dev \ + make \ + pkg-config \ + ; \ + rm -rf /var/lib/apt/lists/* + +ENV GOLANG_VERSION 1.23rc1 + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/1.23-rc/windows/nanoserver-1809/Dockerfile b/1.23-rc/windows/nanoserver-1809/Dockerfile new file mode 100644 index 00000000..5f2f2969 --- /dev/null +++ b/1.23-rc/windows/nanoserver-1809/Dockerfile @@ -0,0 +1,30 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM mcr.microsoft.com/windows/nanoserver:1809 + +SHELL ["cmd", "/S", "/C"] + +# no Git installed (intentionally) +# -- Nano Server is "Windows Slim" + +# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) +ENV GOPATH C:\\go +# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes + +# PATH isn't actually set in the Docker image, so we have to set it from within the container +USER ContainerAdministrator +RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" +USER ContainerUser +# doing this first to share cache across versions more aggressively + +ENV GOLANG_VERSION 1.23rc1 + +# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon +COPY --from=golang:1.23rc1-windowsservercore-1809 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] +RUN go version + +WORKDIR $GOPATH diff --git a/1.23-rc/windows/nanoserver-ltsc2022/Dockerfile b/1.23-rc/windows/nanoserver-ltsc2022/Dockerfile new file mode 100644 index 00000000..d769b7b0 --- /dev/null +++ b/1.23-rc/windows/nanoserver-ltsc2022/Dockerfile @@ -0,0 +1,30 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022 + +SHELL ["cmd", "/S", "/C"] + +# no Git installed (intentionally) +# -- Nano Server is "Windows Slim" + +# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) +ENV GOPATH C:\\go +# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes + +# PATH isn't actually set in the Docker image, so we have to set it from within the container +USER ContainerAdministrator +RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" +USER ContainerUser +# doing this first to share cache across versions more aggressively + +ENV GOLANG_VERSION 1.23rc1 + +# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon +COPY --from=golang:1.23rc1-windowsservercore-ltsc2022 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] +RUN go version + +WORKDIR $GOPATH diff --git a/1.23-rc/windows/windowsservercore-1809/Dockerfile b/1.23-rc/windows/windowsservercore-1809/Dockerfile new file mode 100644 index 00000000..d689949a --- /dev/null +++ b/1.23-rc/windows/windowsservercore-1809/Dockerfile @@ -0,0 +1,84 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM mcr.microsoft.com/windows/servercore:1809 + +# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +# install MinGit (especially for "go get") +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." +ENV GIT_VERSION 2.23.0 +ENV GIT_TAG v${GIT_VERSION}.windows.1 +ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip +ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) +RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ + \ + Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ + if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + \ + Write-Host 'Expanding ...'; \ + Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ + \ + Write-Host 'Removing ...'; \ + Remove-Item git.zip -Force; \ + \ + Write-Host 'Updating PATH ...'; \ + $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ + [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ + \ + Write-Host 'Verifying install ("git version") ...'; \ + git version; \ + \ + Write-Host 'Complete.'; + +# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) +ENV GOPATH C:\\go +# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes + +# PATH isn't actually set in the Docker image, so we have to set it from within the container +RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ + Write-Host ('Updating PATH: {0}' -f $newPath); \ + [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); +# doing this first to share cache across versions more aggressively + +ENV GOLANG_VERSION 1.23rc1 + +RUN $url = 'https://dl.google.com/go/go1.23rc1.windows-amd64.zip'; \ + Write-Host ('Downloading {0} ...' -f $url); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ + \ + $sha256 = '270d339ab3876fd6f0a73e6338d6fbe0b2521f8b68adc3e04487e9476be6d611'; \ + Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ + if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + \ + Write-Host 'Expanding ...'; \ + Expand-Archive go.zip -DestinationPath C:\; \ + \ + Write-Host 'Moving ...'; \ + Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ + \ + Write-Host 'Removing ...'; \ + Remove-Item go.zip -Force; \ + \ + Write-Host 'Verifying install ("go version") ...'; \ + go version; \ + \ + Write-Host 'Complete.'; + +WORKDIR $GOPATH diff --git a/1.23-rc/windows/windowsservercore-ltsc2022/Dockerfile b/1.23-rc/windows/windowsservercore-ltsc2022/Dockerfile new file mode 100644 index 00000000..c19e9428 --- /dev/null +++ b/1.23-rc/windows/windowsservercore-ltsc2022/Dockerfile @@ -0,0 +1,84 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM mcr.microsoft.com/windows/servercore:ltsc2022 + +# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +# install MinGit (especially for "go get") +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." +ENV GIT_VERSION 2.23.0 +ENV GIT_TAG v${GIT_VERSION}.windows.1 +ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip +ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) +RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ + \ + Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ + if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + \ + Write-Host 'Expanding ...'; \ + Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ + \ + Write-Host 'Removing ...'; \ + Remove-Item git.zip -Force; \ + \ + Write-Host 'Updating PATH ...'; \ + $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ + [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ + \ + Write-Host 'Verifying install ("git version") ...'; \ + git version; \ + \ + Write-Host 'Complete.'; + +# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) +ENV GOPATH C:\\go +# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes + +# PATH isn't actually set in the Docker image, so we have to set it from within the container +RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ + Write-Host ('Updating PATH: {0}' -f $newPath); \ + [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); +# doing this first to share cache across versions more aggressively + +ENV GOLANG_VERSION 1.23rc1 + +RUN $url = 'https://dl.google.com/go/go1.23rc1.windows-amd64.zip'; \ + Write-Host ('Downloading {0} ...' -f $url); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ + \ + $sha256 = '270d339ab3876fd6f0a73e6338d6fbe0b2521f8b68adc3e04487e9476be6d611'; \ + Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ + if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + \ + Write-Host 'Expanding ...'; \ + Expand-Archive go.zip -DestinationPath C:\; \ + \ + Write-Host 'Moving ...'; \ + Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ + \ + Write-Host 'Removing ...'; \ + Remove-Item go.zip -Force; \ + \ + Write-Host 'Verifying install ("go version") ...'; \ + go version; \ + \ + Write-Host 'Complete.'; + +WORKDIR $GOPATH diff --git a/versions.json b/versions.json index 19b37044..f520f2e1 100644 --- a/versions.json +++ b/versions.json @@ -791,5 +791,415 @@ "windows/nanoserver-ltsc2022", "windows/nanoserver-1809" ] + }, + "1.23-rc": { + "version": "1.23rc1", + "arches": { + "aix-ppc64": { + "url": "https://dl.google.com/go/go1.23rc1.aix-ppc64.tar.gz", + "sha256": "d0cfbc6fda8a6fa993e24b42ebe77cd1109fb7200cb315a90ce72d75c78075fc", + "env": { + "GOOS": "aix", + "GOARCH": "ppc64" + }, + "supported": false + }, + "amd64": { + "url": "https://dl.google.com/go/go1.23rc1.linux-amd64.tar.gz", + "sha256": "0d8543abb8f4d566b3c8ef25b38e578ae2cb357bba2db8f0c0481531d8e1c939", + "env": { + "GOOS": "linux", + "GOARCH": "amd64", + "GOAMD64": "v1" + }, + "supported": true + }, + "arm32v5": { + "env": { + "GOOS": "linux", + "GOARCH": "arm", + "GOARM": "5" + }, + "supported": false + }, + "arm32v6": { + "url": "https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz", + "sha256": "6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a", + "env": { + "GOOS": "linux", + "GOARCH": "arm", + "GOARM": "6" + }, + "supported": true + }, + "arm32v7": { + "url": "https://dl.google.com/go/go1.23rc1.linux-armv6l.tar.gz", + "sha256": "6aaf0968817cadb372aff885cfd2c5b6c3a121f1cb890c0ad54106cbc5317c8a", + "env": { + "GOOS": "linux", + "GOARCH": "arm", + "GOARM": "7" + }, + "supported": true + }, + "arm64v8": { + "url": "https://dl.google.com/go/go1.23rc1.linux-arm64.tar.gz", + "sha256": "1208d96e6535ccf32ceee2f876dbbec588bf0921861d2224b809cbfe797f2319", + "env": { + "GOOS": "linux", + "GOARCH": "arm64" + }, + "supported": true + }, + "darwin-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.darwin-amd64.tar.gz", + "sha256": "4006228f4a28ac70a6ddaa4ac083dccb1d0e510d642a7c599a21ba4f00499ba5", + "env": { + "GOOS": "darwin", + "GOARCH": "amd64" + }, + "supported": false + }, + "darwin-arm64v8": { + "url": "https://dl.google.com/go/go1.23rc1.darwin-arm64.tar.gz", + "sha256": "afd500bd5a1cc41f424aadfe9f09fb7db2a7eaa9065de3875a9b9a75f5611042", + "env": { + "GOOS": "darwin", + "GOARCH": "arm64" + }, + "supported": false + }, + "dragonfly-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.dragonfly-amd64.tar.gz", + "sha256": "b857676ac0765d1ef9d4fbc84a82f75a604b12a97a0b44ff6fd770b6cc3b5f65", + "env": { + "GOOS": "dragonfly", + "GOARCH": "amd64" + }, + "supported": false + }, + "freebsd-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.freebsd-amd64.tar.gz", + "sha256": "0ddf396214e97a4417be143929c2cb419076f9d7641f03df8f89c8af51698621", + "env": { + "GOOS": "freebsd", + "GOARCH": "amd64" + }, + "supported": false + }, + "freebsd-arm": { + "url": "https://dl.google.com/go/go1.23rc1.freebsd-arm.tar.gz", + "sha256": "788ae6740b9294bb193e63fd529cb3722e7065d64feb82f4f84688697ea9e364", + "env": { + "GOOS": "freebsd", + "GOARCH": "arm" + }, + "supported": false + }, + "freebsd-arm64v8": { + "url": "https://dl.google.com/go/go1.23rc1.freebsd-arm64.tar.gz", + "sha256": "92b63e4f62826677a3877a425625dd3a4ae1806bc33c0bd5064d0da96dd7a616", + "env": { + "GOOS": "freebsd", + "GOARCH": "arm64" + }, + "supported": false + }, + "freebsd-i386": { + "url": "https://dl.google.com/go/go1.23rc1.freebsd-386.tar.gz", + "sha256": "932460e728b50429a825fca9d983351007afaca459eed4a9ab0bbaa3b07aaf2e", + "env": { + "GOOS": "freebsd", + "GOARCH": "386" + }, + "supported": false + }, + "freebsd-riscv64": { + "url": "https://dl.google.com/go/go1.23rc1.freebsd-riscv64.tar.gz", + "sha256": "7536374682d373927402cdbf72342099c9bfb6bc3bab73a697f226b3765154c4", + "env": { + "GOOS": "freebsd", + "GOARCH": "riscv64" + }, + "supported": false + }, + "i386": { + "url": "https://dl.google.com/go/go1.23rc1.linux-386.tar.gz", + "sha256": "770f682ad2b7b2305915fbf2918acf67ef5a06654cdcac1f859d195b2e7d9861", + "env": { + "GOOS": "linux", + "GOARCH": "386", + "GO386": "softfloat" + }, + "supported": true + }, + "illumos-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.illumos-amd64.tar.gz", + "sha256": "192fb6f4ce82fdf0d1161b1cb759171f8ebf9e800431b110846948f414e04110", + "env": { + "GOOS": "illumos", + "GOARCH": "amd64" + }, + "supported": false + }, + "loong64": { + "url": "https://dl.google.com/go/go1.23rc1.linux-loong64.tar.gz", + "sha256": "abc4603171988f95f1872385946b334e92191ce79e3831f9447f350ca6216928", + "env": { + "GOOS": "linux", + "GOARCH": "loong64" + }, + "supported": false + }, + "mips": { + "url": "https://dl.google.com/go/go1.23rc1.linux-mips.tar.gz", + "sha256": "cff502ac5228ef71db94b71cd9cadd038d381433a2722103977f10daf4980040", + "env": { + "GOOS": "linux", + "GOARCH": "mips" + }, + "supported": false + }, + "mips64": { + "url": "https://dl.google.com/go/go1.23rc1.linux-mips64.tar.gz", + "sha256": "7d631b8e33cf97b27ba63b926d2a2ad32ed486c42afbc65b526c32241d89781f", + "env": { + "GOOS": "linux", + "GOARCH": "mips64" + }, + "supported": false + }, + "mips64le": { + "url": "https://dl.google.com/go/go1.23rc1.linux-mips64le.tar.gz", + "sha256": "adf0f903b8ad46d6aa946677d13ba6ce76d9b597ebda54ace9c15f2e88febc3c", + "env": { + "GOOS": "linux", + "GOARCH": "mips64le" + }, + "supported": true + }, + "mipsle": { + "url": "https://dl.google.com/go/go1.23rc1.linux-mipsle.tar.gz", + "sha256": "1cebef76d33d0485365a60c97964caef219b4d9663535bcdd1b95606c16e89e8", + "env": { + "GOOS": "linux", + "GOARCH": "mipsle" + }, + "supported": false + }, + "netbsd-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.netbsd-amd64.tar.gz", + "sha256": "053bc01f43b6ef3665386accc901a34d27b524e25f3dd6767d11e605d29def1e", + "env": { + "GOOS": "netbsd", + "GOARCH": "amd64" + }, + "supported": false + }, + "netbsd-arm": { + "url": "https://dl.google.com/go/go1.23rc1.netbsd-arm.tar.gz", + "sha256": "35b9f44b7a3e0868ec244505953c240d4716f909c8f486c0f40d80772159e492", + "env": { + "GOOS": "netbsd", + "GOARCH": "arm" + }, + "supported": false + }, + "netbsd-arm64v8": { + "url": "https://dl.google.com/go/go1.23rc1.netbsd-arm64.tar.gz", + "sha256": "02adffe9e71e3cad386177c2febce6e4ab00e6f877902ad57208590609201d22", + "env": { + "GOOS": "netbsd", + "GOARCH": "arm64" + }, + "supported": false + }, + "netbsd-i386": { + "url": "https://dl.google.com/go/go1.23rc1.netbsd-386.tar.gz", + "sha256": "b10709f2e17ae8ab8a9775b3c11634c24216d185ff910740179a14e401f3d8d0", + "env": { + "GOOS": "netbsd", + "GOARCH": "386" + }, + "supported": false + }, + "openbsd-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.openbsd-amd64.tar.gz", + "sha256": "35a3f540a1d329570f39a861fbd748d09eb6c946d104548cf85bf2d8bb690188", + "env": { + "GOOS": "openbsd", + "GOARCH": "amd64" + }, + "supported": false + }, + "openbsd-arm": { + "url": "https://dl.google.com/go/go1.23rc1.openbsd-arm.tar.gz", + "sha256": "7ca20c5f3250893a253dbfce97785a69bcecb176f9faec36750774d4978d5d3b", + "env": { + "GOOS": "openbsd", + "GOARCH": "arm" + }, + "supported": false + }, + "openbsd-arm64v8": { + "url": "https://dl.google.com/go/go1.23rc1.openbsd-arm64.tar.gz", + "sha256": "ddb051896b93b2258e687ad06829f85aaa0771499db24d33261773e3f76812cf", + "env": { + "GOOS": "openbsd", + "GOARCH": "arm64" + }, + "supported": false + }, + "openbsd-i386": { + "url": "https://dl.google.com/go/go1.23rc1.openbsd-386.tar.gz", + "sha256": "d2d8eba2a3e155bc297a1737ed60adc0b25d986a50cbf72635ab3838dea67732", + "env": { + "GOOS": "openbsd", + "GOARCH": "386" + }, + "supported": false + }, + "openbsd-ppc64": { + "url": "https://dl.google.com/go/go1.23rc1.openbsd-ppc64.tar.gz", + "sha256": "f359ef29bf831b331d55ae430a2e3da4a3ff816779a89268f415794ed6ebc850", + "env": { + "GOOS": "openbsd", + "GOARCH": "ppc64" + }, + "supported": false + }, + "openbsd-riscv64": { + "url": "https://dl.google.com/go/go1.23rc1.openbsd-riscv64.tar.gz", + "sha256": "371e93f6be9c191728f54926d2a4ec7cd2dabca00c97b498e5885a14532b8546", + "env": { + "GOOS": "openbsd", + "GOARCH": "riscv64" + }, + "supported": false + }, + "plan9-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.plan9-amd64.tar.gz", + "sha256": "aafe3fd6bdcefeba9b6ab0a35ad32247c3314a72a0f3cb22e184cd2483c904dd", + "env": { + "GOOS": "plan9", + "GOARCH": "amd64" + }, + "supported": false + }, + "plan9-arm": { + "url": "https://dl.google.com/go/go1.23rc1.plan9-arm.tar.gz", + "sha256": "7a7e174919b3752e2afbd76258b7bd353ea3b70a6e271bb3c2ab9f045bb15529", + "env": { + "GOOS": "plan9", + "GOARCH": "arm" + }, + "supported": false + }, + "plan9-i386": { + "url": "https://dl.google.com/go/go1.23rc1.plan9-386.tar.gz", + "sha256": "b56457fce9be53635dc9892297c66e7df956a098224e5936ddee01b1dc200e7a", + "env": { + "GOOS": "plan9", + "GOARCH": "386" + }, + "supported": false + }, + "ppc64": { + "url": "https://dl.google.com/go/go1.23rc1.linux-ppc64.tar.gz", + "sha256": "cf6815ea2f4dc3f0e0c67539384cce5fe45eaa9eba83e044980496c207519194", + "env": { + "GOOS": "linux", + "GOARCH": "ppc64" + }, + "supported": false + }, + "ppc64le": { + "url": "https://dl.google.com/go/go1.23rc1.linux-ppc64le.tar.gz", + "sha256": "bbb5f0f6895f25173e436ef2549342db050b6c2d3e094a0db306a4fa27c231bf", + "env": { + "GOOS": "linux", + "GOARCH": "ppc64le" + }, + "supported": true + }, + "riscv64": { + "url": "https://dl.google.com/go/go1.23rc1.linux-riscv64.tar.gz", + "sha256": "8cb299c73325de4bf59a9788e9851afdead7ab45d8da1eec8bb5f774c4014f8e", + "env": { + "GOOS": "linux", + "GOARCH": "riscv64" + }, + "supported": true + }, + "s390x": { + "url": "https://dl.google.com/go/go1.23rc1.linux-s390x.tar.gz", + "sha256": "7d35beef23925061b0a219a8338a1525f74647fc22aeecab97b983a9d6114054", + "env": { + "GOOS": "linux", + "GOARCH": "s390x" + }, + "supported": true + }, + "solaris-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.solaris-amd64.tar.gz", + "sha256": "0623a134ae48513c7df90f3c42ea99af5b5bf03231113dac959a56181c1f1009", + "env": { + "GOOS": "solaris", + "GOARCH": "amd64" + }, + "supported": false + }, + "src": { + "url": "https://dl.google.com/go/go1.23rc1.src.tar.gz", + "sha256": "6e9c4765872808663ccf0b937e5637c7df67146943fa6e8909a81a0d129c8045", + "supported": true + }, + "windows-amd64": { + "url": "https://dl.google.com/go/go1.23rc1.windows-amd64.zip", + "sha256": "270d339ab3876fd6f0a73e6338d6fbe0b2521f8b68adc3e04487e9476be6d611", + "env": { + "GOOS": "windows", + "GOARCH": "amd64" + }, + "supported": true + }, + "windows-arm": { + "url": "https://dl.google.com/go/go1.23rc1.windows-arm.zip", + "sha256": "bf4c8ae68b66fa6c4de1dc788527201bb01014a101dd6605da4c05672af263f4", + "env": { + "GOOS": "windows", + "GOARCH": "arm" + }, + "supported": false + }, + "windows-arm64v8": { + "url": "https://dl.google.com/go/go1.23rc1.windows-arm64.zip", + "sha256": "fc765dcdc39a88b521e94ea68a3c7ff7bfc2c9d160303c8c2eadc5ce43a766ca", + "env": { + "GOOS": "windows", + "GOARCH": "arm64" + }, + "supported": false + }, + "windows-i386": { + "url": "https://dl.google.com/go/go1.23rc1.windows-386.zip", + "sha256": "2f53597ec35b06e78c57df310a3b63c2e59069e964342ba402e9a98dd783ca03", + "env": { + "GOOS": "windows", + "GOARCH": "386" + }, + "supported": false + } + }, + "variants": [ + "bookworm", + "bullseye", + "alpine3.20", + "alpine3.19", + "windows/windowsservercore-ltsc2022", + "windows/windowsservercore-1809", + "windows/nanoserver-ltsc2022", + "windows/nanoserver-1809" + ] } }