diff --git a/2.7/alpine3.15/Dockerfile b/2.7/alpine3.15/Dockerfile deleted file mode 100644 index 3857033f20..0000000000 --- a/2.7/alpine3.15/Dockerfile +++ /dev/null @@ -1,150 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM alpine:3.15 - -RUN set -eux; \ - apk add --no-cache \ - bzip2 \ - ca-certificates \ - gmp-dev \ - libffi-dev \ - procps \ - yaml-dev \ - zlib-dev \ - ; - -# skip installing gem documentation -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - { \ - echo 'install: --no-document'; \ - echo 'update: --no-document'; \ - } >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 -ENV RUBY_MAJOR 2.7 -ENV RUBY_VERSION 2.7.7 -ENV RUBY_DOWNLOAD_SHA256 b38dff2e1f8ce6e5b7d433f8758752987a6b2adfd9bc7571dbc42ea5d04e3e4c - -# 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; \ - \ -# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75 - apk add --no-cache --virtual .ruby-builddeps \ - autoconf \ - bison \ - bzip2 \ - bzip2-dev \ - ca-certificates \ - coreutils \ - dpkg-dev dpkg \ - g++ \ - gcc \ - gdbm-dev \ - glib-dev \ - libc-dev \ - libffi-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - ncurses-dev \ - openssl \ - openssl-dev \ - patch \ - procps \ - readline-dev \ - ruby \ - tar \ - xz \ - yaml-dev \ - zlib-dev \ - ; \ - \ - wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"; \ - 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; \ - \ -# the configure script does not detect isnan/isinf as macros - export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \ - \ -# hack in "ENABLE_PATH_CHECK" disabling to suppress: -# warning: Insecure world writable dir - { \ - echo '#define ENABLE_PATH_CHECK 0'; \ - echo; \ - cat file.c; \ - } > file.c.new; \ - mv file.c.new file.c; \ - \ - autoconf; \ - # fix builds on arm32v6/7 and s390x: https://github.com/docker-library/ruby/issues/308 - # and don't break the other arches: https://github.com/docker-library/ruby/issues/365 - apkArch="$(apk --print-arch)"; \ - case "$apkArch" in \ - s390x | armhf | armv7) \ - apk add --no-cache libucontext-dev; \ - export LIBS='-lucontext'; \ - ;; \ - esac; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - 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-rundeps' \ - | 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 -# adjust permissions of a few directories for running "gem install" as an arbitrary user -RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.0/alpine3.15/Dockerfile b/3.0/alpine3.15/Dockerfile deleted file mode 100644 index 9538118c4c..0000000000 --- a/3.0/alpine3.15/Dockerfile +++ /dev/null @@ -1,150 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM alpine:3.15 - -RUN set -eux; \ - apk add --no-cache \ - bzip2 \ - ca-certificates \ - gmp-dev \ - libffi-dev \ - procps \ - yaml-dev \ - zlib-dev \ - ; - -# skip installing gem documentation -RUN set -eux; \ - mkdir -p /usr/local/etc; \ - { \ - echo 'install: --no-document'; \ - echo 'update: --no-document'; \ - } >> /usr/local/etc/gemrc - -ENV LANG C.UTF-8 -ENV RUBY_MAJOR 3.0 -ENV RUBY_VERSION 3.0.5 -ENV RUBY_DOWNLOAD_SHA256 cf7cb5ba2030fe36596a40980cdecfd79a0337d35860876dc2b10a38675bddde - -# 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; \ - \ -# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75 - apk add --no-cache --virtual .ruby-builddeps \ - autoconf \ - bison \ - bzip2 \ - bzip2-dev \ - ca-certificates \ - coreutils \ - dpkg-dev dpkg \ - g++ \ - gcc \ - gdbm-dev \ - glib-dev \ - libc-dev \ - libffi-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - ncurses-dev \ - openssl \ - openssl-dev \ - patch \ - procps \ - readline-dev \ - ruby \ - tar \ - xz \ - yaml-dev \ - zlib-dev \ - ; \ - \ - wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"; \ - 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; \ - \ -# the configure script does not detect isnan/isinf as macros - export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \ - \ -# hack in "ENABLE_PATH_CHECK" disabling to suppress: -# warning: Insecure world writable dir - { \ - echo '#define ENABLE_PATH_CHECK 0'; \ - echo; \ - cat file.c; \ - } > file.c.new; \ - mv file.c.new file.c; \ - \ - autoconf; \ - # fix builds on arm32v6/7 and s390x: https://github.com/docker-library/ruby/issues/308 - # and don't break the other arches: https://github.com/docker-library/ruby/issues/365 - apkArch="$(apk --print-arch)"; \ - case "$apkArch" in \ - s390x | armhf | armv7) \ - apk add --no-cache libucontext-dev; \ - export LIBS='-lucontext'; \ - ;; \ - esac; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --disable-install-doc \ - --enable-shared \ - ; \ - make -j "$(nproc)"; \ - make install; \ - \ - 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-rundeps' \ - | 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 -# adjust permissions of a few directories for running "gem install" as an arbitrary user -RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" - -CMD [ "irb" ] diff --git a/3.1/alpine3.15/Dockerfile b/3.1/alpine3.17/Dockerfile similarity index 99% rename from 3.1/alpine3.15/Dockerfile rename to 3.1/alpine3.17/Dockerfile index f1e66c6d4e..7d20cedb70 100644 --- a/3.1/alpine3.15/Dockerfile +++ b/3.1/alpine3.17/Dockerfile @@ -4,7 +4,7 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM alpine:3.15 +FROM alpine:3.17 RUN set -eux; \ apk add --no-cache \ diff --git a/3.2-rc/alpine3.15/Dockerfile b/3.2-rc/alpine3.17/Dockerfile similarity index 95% rename from 3.2-rc/alpine3.15/Dockerfile rename to 3.2-rc/alpine3.17/Dockerfile index 42d8525072..9686f93238 100644 --- a/3.2-rc/alpine3.15/Dockerfile +++ b/3.2-rc/alpine3.17/Dockerfile @@ -4,7 +4,7 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM alpine:3.15 +FROM alpine:3.17 RUN set -eux; \ apk add --no-cache \ @@ -34,6 +34,11 @@ ENV RUBY_DOWNLOAD_SHA256 d3f5619de544240d92a5d03aa289e71bd1103379622c523a0e80ed0 # we purge system ruby later to make sure our final image uses what we just built RUN set -eux; \ \ + yjit=; \ + apkArch="$(apk --print-arch)"; \ + case "$apkArch" in \ + x86_64 | aarch64) yjit=1 ;; \ + esac; \ # readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75 apk add --no-cache --virtual .ruby-builddeps \ autoconf \ @@ -64,6 +69,7 @@ RUN set -eux; \ xz \ yaml-dev \ zlib-dev \ + ${yjit:+rust} \ ; \ \ wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"; \ @@ -101,6 +107,7 @@ RUN set -eux; \ --build="$gnuArch" \ --disable-install-doc \ --enable-shared \ + ${yjit:+--enable-yjit} \ ; \ make -j "$(nproc)"; \ make install; \ diff --git a/Dockerfile.template b/Dockerfile.template index e610059eca..880accf871 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -8,7 +8,7 @@ def should_yjit: # https://github.com/docker-library/ruby/issues/390 ([ "2.7", "3.0", "3.1" ] | index(env.version) | not) - and is_alpine and ([ "alpine3.15" ] | index(env.variant) | not) + and is_alpine -}} {{ if is_alpine then ( -}} FROM alpine:{{ env.variant | ltrimstr("alpine") }} diff --git a/versions.json b/versions.json index d5ad7032cf..21c4c89575 100644 --- a/versions.json +++ b/versions.json @@ -6,8 +6,7 @@ "slim-bullseye", "buster", "slim-buster", - "alpine3.16", - "alpine3.15" + "alpine3.16" ], "version": "2.7.7" }, @@ -18,8 +17,7 @@ "slim-bullseye", "buster", "slim-buster", - "alpine3.16", - "alpine3.15" + "alpine3.16" ], "version": "3.0.5" }, @@ -30,8 +28,8 @@ "slim-bullseye", "buster", "slim-buster", - "alpine3.16", - "alpine3.15" + "alpine3.17", + "alpine3.16" ], "version": "3.1.3" }, @@ -42,8 +40,8 @@ "slim-bullseye", "buster", "slim-buster", - "alpine3.16", - "alpine3.15" + "alpine3.17", + "alpine3.16" ], "version": "3.2.0-preview3" } diff --git a/versions.sh b/versions.sh index f9acdb8f65..4e9eab52f8 100755 --- a/versions.sh +++ b/versions.sh @@ -69,11 +69,19 @@ for version in "${versions[@]}"; do variants: [ ( "bullseye", - "buster" + "buster", + empty # trailing comma hack | ., "slim-" + .), # https://github.com/docker-library/ruby/pull/142#issuecomment-320012893 ( + # Alpine 3.17 defaults to OpenSSL 3 which is not supported (yet?) by Ruby 2.7 or 3.0 + # https://bugs.ruby-lang.org/issues/18658 + # https://github.com/docker-library/ruby/pull/392#issuecomment-1329896174 + if [ "2.7", "3.0" ] | index(env.version) then empty else + "3.17", + empty # trailing comma hack + end, "3.16", - "3.15" + empty # trailing comma hack | "alpine" + .) ], }