From fadc25cc57b2b0fee7f2a5024aad4178f9ca167a Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Thu, 16 Apr 2026 12:11:24 +0200 Subject: [PATCH] Drop Ruby 3.2 It is EOL since end of may --- 3.2/alpine3.22/Dockerfile | 145 ----------------------------------- 3.2/alpine3.23/Dockerfile | 145 ----------------------------------- 3.2/bookworm/Dockerfile | 111 --------------------------- 3.2/slim-bookworm/Dockerfile | 137 --------------------------------- 3.2/slim-trixie/Dockerfile | 137 --------------------------------- 3.2/trixie/Dockerfile | 111 --------------------------- Dockerfile.template | 16 +--- versions.json | 70 ----------------- 8 files changed, 1 insertion(+), 871 deletions(-) delete mode 100644 3.2/alpine3.22/Dockerfile delete mode 100644 3.2/alpine3.23/Dockerfile delete mode 100644 3.2/bookworm/Dockerfile delete mode 100644 3.2/slim-bookworm/Dockerfile delete mode 100644 3.2/slim-trixie/Dockerfile delete mode 100644 3.2/trixie/Dockerfile diff --git a/3.2/alpine3.22/Dockerfile b/3.2/alpine3.22/Dockerfile deleted file mode 100644 index 3febc0239..000000000 --- a/3.2/alpine3.22/Dockerfile +++ /dev/null @@ -1,145 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM alpine:3.22 - -# skip installing gem documentation with `gem install`/`gem update` -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - echo 'gem: --no-document' >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 - -# https://www.ruby-lang.org/en/news/2026/03/27/ruby-3-2-11-released/ -ENV RUBY_VERSION 3.2.11 -ENV RUBY_DOWNLOAD_URL https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz -ENV RUBY_DOWNLOAD_SHA256 c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2 - -# some of ruby's build scripts are written in ruby -# we purge system ruby later to make sure our final image uses what we just built -RUN set -eux; \ - \ - apk add --no-cache --virtual .ruby-builddeps \ - autoconf \ - bison \ - bzip2 \ - bzip2-dev \ - ca-certificates \ - coreutils \ - dpkg-dev dpkg \ - g++ \ - gcc \ - gdbm-dev \ - glib-dev \ - gmp-dev \ - libc-dev \ - libffi-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - ncurses-dev \ - openssl \ - openssl-dev \ - patch \ - procps \ - yaml-dev \ - zlib-dev \ - readline-dev \ - ruby \ - tar \ - xz \ - yaml-dev \ - zlib-dev \ - ; \ - \ - rustArch=; \ - apkArch="$(apk --print-arch)"; \ - case "$apkArch" in \ - 'x86_64') rustArch='x86_64-unknown-linux-musl'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-musl/rustup-init'; rustupSha256='e6599a1c7be58a2d8eaca66a80e0dc006d87bbcf780a58b7343d6e14c1605cb2' ;; \ - 'aarch64') rustArch='aarch64-unknown-linux-musl'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-musl/rustup-init'; rustupSha256='a97c8f56d7462908695348dd8c71ea6740c138ce303715793a690503a94fc9a9' ;; \ - esac; \ - \ - if [ -n "$rustArch" ]; then \ - mkdir -p /tmp/rust; \ - \ - wget -O /tmp/rust/rustup-init "$rustupUrl"; \ - echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; \ - chmod +x /tmp/rust/rustup-init; \ - \ - export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; \ - export PATH="$CARGO_HOME/bin:$PATH"; \ - /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; \ - \ - rustc --version; \ - cargo --version; \ - fi; \ - \ - wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ - \ - mkdir -p /usr/src/ruby; \ - tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ - rm ruby.tar.xz; \ - \ - cd /usr/src/ruby; \ - \ -# https://github.com/docker-library/ruby/issues/196 -# https://bugs.ruby-lang.org/issues/14387#note-13 (patch source) -# https://bugs.ruby-lang.org/issues/14387#note-16 ("Therefore ncopa's patch looks good for me in general." -- only breaks glibc which doesn't matter here) - wget -O 'thread-stack-fix.patch' 'https://bugs.ruby-lang.org/attachments/download/7081/0001-thread_pthread.c-make-get_main_stack-portable-on-lin.patch'; \ - echo '3ab628a51d92fdf0d2b5835e93564857aea73e0c1de00313864a94a6255cb645 *thread-stack-fix.patch' | sha256sum --check --strict; \ - patch -p1 -i thread-stack-fix.patch; \ - rm thread-stack-fix.patch; \ - \ - autoconf; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ${rustArch:+--enable-yjit} \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - rm -rf /tmp/rust; \ - runDeps="$( \ - scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \ - | tr ',' '\n' \ - | sort -u \ - | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ - )"; \ - apk add --no-network --virtual .ruby-rundeps $runDeps; \ - apk del --no-network .ruby-builddeps; \ - \ - cd /; \ - rm -r /usr/src/ruby; \ -# verify we have no "ruby" packages installed - if \ - apk --no-network list --installed \ - | grep -v '^[.]ruby-' \ - | grep -i ruby \ - ; then \ - exit 1; \ - fi; \ - [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ -# rough smoke test - ruby --version; \ - gem --version; \ - bundle --version - -# don't create ".bundle" in all our apps -ENV GEM_HOME /usr/local/bundle -ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ - BUNDLE_APP_CONFIG="$GEM_HOME" -ENV PATH $GEM_HOME/bin:$PATH -RUN set -eux; \ - mkdir "$GEM_HOME"; \ -# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user - chmod 1777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.2/alpine3.23/Dockerfile b/3.2/alpine3.23/Dockerfile deleted file mode 100644 index c72915bf6..000000000 --- a/3.2/alpine3.23/Dockerfile +++ /dev/null @@ -1,145 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM alpine:3.23 - -# skip installing gem documentation with `gem install`/`gem update` -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - echo 'gem: --no-document' >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 - -# https://www.ruby-lang.org/en/news/2026/03/27/ruby-3-2-11-released/ -ENV RUBY_VERSION 3.2.11 -ENV RUBY_DOWNLOAD_URL https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz -ENV RUBY_DOWNLOAD_SHA256 c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2 - -# some of ruby's build scripts are written in ruby -# we purge system ruby later to make sure our final image uses what we just built -RUN set -eux; \ - \ - apk add --no-cache --virtual .ruby-builddeps \ - autoconf \ - bison \ - bzip2 \ - bzip2-dev \ - ca-certificates \ - coreutils \ - dpkg-dev dpkg \ - g++ \ - gcc \ - gdbm-dev \ - glib-dev \ - gmp-dev \ - libc-dev \ - libffi-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - ncurses-dev \ - openssl \ - openssl-dev \ - patch \ - procps \ - yaml-dev \ - zlib-dev \ - readline-dev \ - ruby \ - tar \ - xz \ - yaml-dev \ - zlib-dev \ - ; \ - \ - rustArch=; \ - apkArch="$(apk --print-arch)"; \ - case "$apkArch" in \ - 'x86_64') rustArch='x86_64-unknown-linux-musl'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-musl/rustup-init'; rustupSha256='e6599a1c7be58a2d8eaca66a80e0dc006d87bbcf780a58b7343d6e14c1605cb2' ;; \ - 'aarch64') rustArch='aarch64-unknown-linux-musl'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-musl/rustup-init'; rustupSha256='a97c8f56d7462908695348dd8c71ea6740c138ce303715793a690503a94fc9a9' ;; \ - esac; \ - \ - if [ -n "$rustArch" ]; then \ - mkdir -p /tmp/rust; \ - \ - wget -O /tmp/rust/rustup-init "$rustupUrl"; \ - echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; \ - chmod +x /tmp/rust/rustup-init; \ - \ - export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; \ - export PATH="$CARGO_HOME/bin:$PATH"; \ - /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; \ - \ - rustc --version; \ - cargo --version; \ - fi; \ - \ - wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ - \ - mkdir -p /usr/src/ruby; \ - tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ - rm ruby.tar.xz; \ - \ - cd /usr/src/ruby; \ - \ -# https://github.com/docker-library/ruby/issues/196 -# https://bugs.ruby-lang.org/issues/14387#note-13 (patch source) -# https://bugs.ruby-lang.org/issues/14387#note-16 ("Therefore ncopa's patch looks good for me in general." -- only breaks glibc which doesn't matter here) - wget -O 'thread-stack-fix.patch' 'https://bugs.ruby-lang.org/attachments/download/7081/0001-thread_pthread.c-make-get_main_stack-portable-on-lin.patch'; \ - echo '3ab628a51d92fdf0d2b5835e93564857aea73e0c1de00313864a94a6255cb645 *thread-stack-fix.patch' | sha256sum --check --strict; \ - patch -p1 -i thread-stack-fix.patch; \ - rm thread-stack-fix.patch; \ - \ - autoconf; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ${rustArch:+--enable-yjit} \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - rm -rf /tmp/rust; \ - runDeps="$( \ - scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \ - | tr ',' '\n' \ - | sort -u \ - | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ - )"; \ - apk add --no-network --virtual .ruby-rundeps $runDeps; \ - apk del --no-network .ruby-builddeps; \ - \ - cd /; \ - rm -r /usr/src/ruby; \ -# verify we have no "ruby" packages installed - if \ - apk --no-network list --installed \ - | grep -v '^[.]ruby-' \ - | grep -i ruby \ - ; then \ - exit 1; \ - fi; \ - [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ -# rough smoke test - ruby --version; \ - gem --version; \ - bundle --version - -# don't create ".bundle" in all our apps -ENV GEM_HOME /usr/local/bundle -ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ - BUNDLE_APP_CONFIG="$GEM_HOME" -ENV PATH $GEM_HOME/bin:$PATH -RUN set -eux; \ - mkdir "$GEM_HOME"; \ -# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user - chmod 1777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.2/bookworm/Dockerfile b/3.2/bookworm/Dockerfile deleted file mode 100644 index edf0baaa9..000000000 --- a/3.2/bookworm/Dockerfile +++ /dev/null @@ -1,111 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM buildpack-deps:bookworm - -# skip installing gem documentation with `gem install`/`gem update` -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - echo 'gem: --no-document' >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 - -# https://www.ruby-lang.org/en/news/2026/03/27/ruby-3-2-11-released/ -ENV RUBY_VERSION 3.2.11 -ENV RUBY_DOWNLOAD_URL https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz -ENV RUBY_DOWNLOAD_SHA256 c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2 - -# some of ruby's build scripts are written in ruby -# we purge system ruby later to make sure our final image uses what we just built -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - bison \ - dpkg-dev \ - libgdbm-dev \ - ruby \ - ; \ - \ - rustArch=; \ - dpkgArch="$(dpkg --print-architecture)"; \ - case "$dpkgArch" in \ - 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init'; rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c' ;; \ - 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-gnu/rustup-init'; rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c' ;; \ - esac; \ - \ - if [ -n "$rustArch" ]; then \ - mkdir -p /tmp/rust; \ - \ - wget -O /tmp/rust/rustup-init "$rustupUrl"; \ - echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; \ - chmod +x /tmp/rust/rustup-init; \ - \ - export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; \ - export PATH="$CARGO_HOME/bin:$PATH"; \ - /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; \ - \ - rustc --version; \ - cargo --version; \ - fi; \ - \ - wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ - \ - mkdir -p /usr/src/ruby; \ - tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ - rm ruby.tar.xz; \ - \ - cd /usr/src/ruby; \ - \ - autoconf; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ${rustArch:+--enable-yjit} \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - rm -rf /tmp/rust; \ - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark > /dev/null; \ - find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \ - | sort -u \ - | xargs -r dpkg-query --search \ -# https://manpages.debian.org/bookworm/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file) - | awk 'sub(":$", "", $1) { print $1 }' \ - | sort -u \ - | xargs -r apt-mark manual \ - ; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - rm -rf /var/lib/apt/lists/*; \ - \ - cd /; \ - rm -r /usr/src/ruby; \ -# verify we have no "ruby" packages installed - if dpkg -l | grep -i ruby; then exit 1; fi; \ - [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ -# rough smoke test - ruby --version; \ - gem --version; \ - bundle --version - -# don't create ".bundle" in all our apps -ENV GEM_HOME /usr/local/bundle -ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ - BUNDLE_APP_CONFIG="$GEM_HOME" -ENV PATH $GEM_HOME/bin:$PATH -RUN set -eux; \ - mkdir "$GEM_HOME"; \ -# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user - chmod 1777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.2/slim-bookworm/Dockerfile b/3.2/slim-bookworm/Dockerfile deleted file mode 100644 index f5f020438..000000000 --- a/3.2/slim-bookworm/Dockerfile +++ /dev/null @@ -1,137 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM debian:bookworm-slim - -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - ; \ - rm -rf /var/lib/apt/lists/* - -# skip installing gem documentation with `gem install`/`gem update` -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - echo 'gem: --no-document' >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 - -# https://www.ruby-lang.org/en/news/2026/03/27/ruby-3-2-11-released/ -ENV RUBY_VERSION 3.2.11 -ENV RUBY_DOWNLOAD_URL https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz -ENV RUBY_DOWNLOAD_SHA256 c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2 - -# some of ruby's build scripts are written in ruby -# we purge system ruby later to make sure our final image uses what we just built -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - bison \ - dpkg-dev \ - libgdbm-dev \ - ruby \ - autoconf \ - bzip2 \ - g++ \ - gcc \ - libbz2-dev \ - libffi-dev \ - libgdbm-compat-dev \ - libglib2.0-dev \ - libgmp-dev \ - libncurses-dev \ - libreadline-dev \ - libssl-dev \ - libxml2-dev \ - libxslt-dev \ - libyaml-dev \ - make \ - wget \ - xz-utils \ - zlib1g-dev \ - ; \ - \ - rustArch=; \ - dpkgArch="$(dpkg --print-architecture)"; \ - case "$dpkgArch" in \ - 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init'; rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c' ;; \ - 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-gnu/rustup-init'; rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c' ;; \ - esac; \ - \ - if [ -n "$rustArch" ]; then \ - mkdir -p /tmp/rust; \ - \ - wget -O /tmp/rust/rustup-init "$rustupUrl"; \ - echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; \ - chmod +x /tmp/rust/rustup-init; \ - \ - export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; \ - export PATH="$CARGO_HOME/bin:$PATH"; \ - /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; \ - \ - rustc --version; \ - cargo --version; \ - fi; \ - \ - wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ - \ - mkdir -p /usr/src/ruby; \ - tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ - rm ruby.tar.xz; \ - \ - cd /usr/src/ruby; \ - \ - autoconf; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ${rustArch:+--enable-yjit} \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - rm -rf /tmp/rust; \ - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark > /dev/null; \ - find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \ - | sort -u \ - | xargs -r dpkg-query --search \ -# https://manpages.debian.org/bookworm/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file) - | awk 'sub(":$", "", $1) { print $1 }' \ - | sort -u \ - | xargs -r apt-mark manual \ - ; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - rm -rf /var/lib/apt/lists/*; \ - \ - cd /; \ - rm -r /usr/src/ruby; \ -# verify we have no "ruby" packages installed - if dpkg -l | grep -i ruby; then exit 1; fi; \ - [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ -# rough smoke test - ruby --version; \ - gem --version; \ - bundle --version - -# don't create ".bundle" in all our apps -ENV GEM_HOME /usr/local/bundle -ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ - BUNDLE_APP_CONFIG="$GEM_HOME" -ENV PATH $GEM_HOME/bin:$PATH -RUN set -eux; \ - mkdir "$GEM_HOME"; \ -# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user - chmod 1777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.2/slim-trixie/Dockerfile b/3.2/slim-trixie/Dockerfile deleted file mode 100644 index 9e1b5ad68..000000000 --- a/3.2/slim-trixie/Dockerfile +++ /dev/null @@ -1,137 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM debian:trixie-slim - -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - ; \ - apt-get dist-clean - -# skip installing gem documentation with `gem install`/`gem update` -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - echo 'gem: --no-document' >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 - -# https://www.ruby-lang.org/en/news/2026/03/27/ruby-3-2-11-released/ -ENV RUBY_VERSION 3.2.11 -ENV RUBY_DOWNLOAD_URL https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz -ENV RUBY_DOWNLOAD_SHA256 c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2 - -# some of ruby's build scripts are written in ruby -# we purge system ruby later to make sure our final image uses what we just built -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - bison \ - dpkg-dev \ - libgdbm-dev \ - ruby \ - autoconf \ - bzip2 \ - g++ \ - gcc \ - libbz2-dev \ - libffi-dev \ - libgdbm-compat-dev \ - libglib2.0-dev \ - libgmp-dev \ - libncurses-dev \ - libreadline-dev \ - libssl-dev \ - libxml2-dev \ - libxslt-dev \ - libyaml-dev \ - make \ - wget \ - xz-utils \ - zlib1g-dev \ - ; \ - \ - rustArch=; \ - dpkgArch="$(dpkg --print-architecture)"; \ - case "$dpkgArch" in \ - 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init'; rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c' ;; \ - 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-gnu/rustup-init'; rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c' ;; \ - esac; \ - \ - if [ -n "$rustArch" ]; then \ - mkdir -p /tmp/rust; \ - \ - wget -O /tmp/rust/rustup-init "$rustupUrl"; \ - echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; \ - chmod +x /tmp/rust/rustup-init; \ - \ - export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; \ - export PATH="$CARGO_HOME/bin:$PATH"; \ - /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; \ - \ - rustc --version; \ - cargo --version; \ - fi; \ - \ - wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ - \ - mkdir -p /usr/src/ruby; \ - tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ - rm ruby.tar.xz; \ - \ - cd /usr/src/ruby; \ - \ - autoconf; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ${rustArch:+--enable-yjit} \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - rm -rf /tmp/rust; \ - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark > /dev/null; \ - find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \ - | sort -u \ - | xargs -r dpkg-query --search \ -# https://manpages.debian.org/bookworm/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file) - | awk 'sub(":$", "", $1) { print $1 }' \ - | sort -u \ - | xargs -r apt-mark manual \ - ; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - apt-get dist-clean; \ - \ - cd /; \ - rm -r /usr/src/ruby; \ -# verify we have no "ruby" packages installed - if dpkg -l | grep -i ruby; then exit 1; fi; \ - [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ -# rough smoke test - ruby --version; \ - gem --version; \ - bundle --version - -# don't create ".bundle" in all our apps -ENV GEM_HOME /usr/local/bundle -ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ - BUNDLE_APP_CONFIG="$GEM_HOME" -ENV PATH $GEM_HOME/bin:$PATH -RUN set -eux; \ - mkdir "$GEM_HOME"; \ -# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user - chmod 1777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.2/trixie/Dockerfile b/3.2/trixie/Dockerfile deleted file mode 100644 index f6c2a86be..000000000 --- a/3.2/trixie/Dockerfile +++ /dev/null @@ -1,111 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM buildpack-deps:trixie - -# skip installing gem documentation with `gem install`/`gem update` -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - echo 'gem: --no-document' >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 - -# https://www.ruby-lang.org/en/news/2026/03/27/ruby-3-2-11-released/ -ENV RUBY_VERSION 3.2.11 -ENV RUBY_DOWNLOAD_URL https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz -ENV RUBY_DOWNLOAD_SHA256 c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2 - -# some of ruby's build scripts are written in ruby -# we purge system ruby later to make sure our final image uses what we just built -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - bison \ - dpkg-dev \ - libgdbm-dev \ - ruby \ - ; \ - \ - rustArch=; \ - dpkgArch="$(dpkg --print-architecture)"; \ - case "$dpkgArch" in \ - 'amd64') rustArch='x86_64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init'; rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c' ;; \ - 'arm64') rustArch='aarch64-unknown-linux-gnu'; rustupUrl='https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-gnu/rustup-init'; rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c' ;; \ - esac; \ - \ - if [ -n "$rustArch" ]; then \ - mkdir -p /tmp/rust; \ - \ - wget -O /tmp/rust/rustup-init "$rustupUrl"; \ - echo "$rustupSha256 */tmp/rust/rustup-init" | sha256sum --check --strict; \ - chmod +x /tmp/rust/rustup-init; \ - \ - export RUSTUP_HOME='/tmp/rust/rustup' CARGO_HOME='/tmp/rust/cargo'; \ - export PATH="$CARGO_HOME/bin:$PATH"; \ - /tmp/rust/rustup-init -y --no-modify-path --profile minimal --default-toolchain '1.91.1' --default-host "$rustArch"; \ - \ - rustc --version; \ - cargo --version; \ - fi; \ - \ - wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \ - echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ - \ - mkdir -p /usr/src/ruby; \ - tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ - rm ruby.tar.xz; \ - \ - cd /usr/src/ruby; \ - \ - autoconf; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ${rustArch:+--enable-yjit} \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - rm -rf /tmp/rust; \ - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark > /dev/null; \ - find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \ - | sort -u \ - | xargs -r dpkg-query --search \ -# https://manpages.debian.org/bookworm/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file) - | awk 'sub(":$", "", $1) { print $1 }' \ - | sort -u \ - | xargs -r apt-mark manual \ - ; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - apt-get dist-clean; \ - \ - cd /; \ - rm -r /usr/src/ruby; \ -# verify we have no "ruby" packages installed - if dpkg -l | grep -i ruby; then exit 1; fi; \ - [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ -# rough smoke test - ruby --version; \ - gem --version; \ - bundle --version - -# don't create ".bundle" in all our apps -ENV GEM_HOME /usr/local/bundle -ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ - BUNDLE_APP_CONFIG="$GEM_HOME" -ENV PATH $GEM_HOME/bin:$PATH -RUN set -eux; \ - mkdir "$GEM_HOME"; \ -# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user - chmod 1777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/Dockerfile.template b/Dockerfile.template index 27b9d22d9..5fdb9cce7 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -47,10 +47,6 @@ RUN set -eux; \ {{ if is_alpine then ( -}} apk add --no-cache --virtual .ruby-builddeps \ autoconf \ -{{ if env.version | rtrimstr("-rc") | IN("3.2") then ( -}} -{{ # https://github.com/docker-library/ruby/pull/438 -}} - bison \ -{{ ) else "" end -}} bzip2 \ bzip2-dev \ ca-certificates \ @@ -74,9 +70,6 @@ RUN set -eux; \ procps \ yaml-dev \ zlib-dev \ -{{ if env.version | rtrimstr("-rc") | IN("3.2") then ( -}} - readline-dev \ -{{ ) else "" end -}} ruby \ tar \ xz \ @@ -87,10 +80,6 @@ RUN set -eux; \ savedAptMark="$(apt-mark showmanual)"; \ apt-get update; \ apt-get install -y --no-install-recommends \ -{{ if env.version | rtrimstr("-rc") | IN("3.2") then ( -}} -{{ # https://github.com/docker-library/ruby/pull/438 -}} - bison \ -{{ ) else "" end -}} dpkg-dev \ libgdbm-dev \ ruby \ @@ -105,9 +94,6 @@ RUN set -eux; \ libglib2.0-dev \ libgmp-dev \ libncurses-dev \ -{{ if env.version | rtrimstr("-rc") | IN("3.2") then ( -}} - libreadline-dev \ -{{ ) else "" end -}} libssl-dev \ libxml2-dev \ libxslt-dev \ @@ -213,7 +199,7 @@ RUN set -eux; \ --disable-install-doc \ --enable-shared \ ${rustArch:+--enable-yjit} \ -{{ if env.version | IN("3.2", "3.3", "3.4") then "" else ( -}} +{{ if env.version | IN("3.3", "3.4") then "" else ( -}} ${rustArch:+--enable-zjit} \ {{ ) end -}} ; \ diff --git a/versions.json b/versions.json index f3c9eff93..2ba643f1b 100644 --- a/versions.json +++ b/versions.json @@ -1,74 +1,4 @@ { - "3.2": { - "version": "3.2.11", - "date": "2026-03-27", - "post": "/en/news/2026/03/27/ruby-3-2-11-released/", - "url": { - "gz": "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.gz", - "zip": "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.zip", - "xz": "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.11.tar.xz" - }, - "size": { - "gz": 19984344, - "zip": 24594356, - "xz": 14695828 - }, - "sha1": { - "gz": "9534a3aa08d2ccb4d3c50b1301b2da9a9b91c4ab", - "zip": "7e84c9433f32a758da123d3b5532cc632d19d503", - "xz": "501cecc15ba079087967888ae455d62e5886fbc1" - }, - "sha256": { - "gz": "b3eeabd6636f334531db3ffdc3229eb05e524740e6c84fdc043720573cf2f8b2", - "zip": "08ab90aa4ada9268e96aa47fb6c3a77fdb3b2f792f2671053e3b55a6141618ce", - "xz": "c13aec0c206725d5d356acbae6e5fd8bffd92dc325aec14fd5dd7795d4b763d2" - }, - "sha512": { - "gz": "95896bbf519604da0dc3d82066ac92c3f661b2ee9ffd8e2c9effce4773677445f1dcc43b05539050024b57f4f94f43984a734a03015ac6e29679e79d5a093a67", - "zip": "133d63cd9bb7c9fe38eecd18c996013de0a56fef09c89c42f4fc9c383f09ab4ab3b0b31edbadd1fd1aaa797fbb9c86128ded51c6e5263cd3225754e714b3d195", - "xz": "418739d476d34e2467e7f1ee60ff63a1969a362b49871bdc488676c1ac7d28b198deee85e2bd951a23f5b0e8425bc89ca59d5c8cb8415fa5ed835555e3d3af8d" - }, - "variants": [ - "trixie", - "slim-trixie", - "bookworm", - "slim-bookworm", - "alpine3.23", - "alpine3.22" - ], - "rust": { - "version": "1.91.1" - }, - "rustup": { - "arches": { - "amd64": { - "glibc": { - "arch": "x86_64-unknown-linux-gnu", - "sha256": "20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c", - "url": "https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init" - }, - "musl": { - "arch": "x86_64-unknown-linux-musl", - "sha256": "e6599a1c7be58a2d8eaca66a80e0dc006d87bbcf780a58b7343d6e14c1605cb2", - "url": "https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-musl/rustup-init" - } - }, - "arm64v8": { - "glibc": { - "arch": "aarch64-unknown-linux-gnu", - "sha256": "e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c", - "url": "https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-gnu/rustup-init" - }, - "musl": { - "arch": "aarch64-unknown-linux-musl", - "sha256": "a97c8f56d7462908695348dd8c71ea6740c138ce303715793a690503a94fc9a9", - "url": "https://static.rust-lang.org/rustup/archive/1.28.2/aarch64-unknown-linux-musl/rustup-init" - } - } - }, - "version": "1.28.2" - } - }, "3.3": { "version": "3.3.11", "date": "2026-03-26",