mirror of
https://github.com/docker-library/ruby.git
synced 2022-11-09 11:41:34 -05:00
Add initial jq-based templating engine
This commit is contained in:
parent
5fccac58c3
commit
761ae37f67
25 changed files with 602 additions and 508 deletions
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/*/**/Dockerfile linguist-generated
|
||||||
|
/Dockerfile*.template linguist-language=Dockerfile
|
22
.github/workflows/verify-templating.yml
vendored
Normal file
22
.github/workflows/verify-templating.yml
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
name: Verify Templating
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: 'bash -Eeuo pipefail -x {0}'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
apply-templates:
|
||||||
|
name: Check For Uncomitted Changes
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Apply Templates
|
||||||
|
run: ./apply-templates.sh
|
||||||
|
- name: Check Git Status
|
||||||
|
run: |
|
||||||
|
status="$(git status --short)"
|
||||||
|
[ -z "$status" ]
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.jq-template.awk
|
46
2.6/alpine3.12/Dockerfile
generated
46
2.6/alpine3.12/Dockerfile
generated
|
@ -1,7 +1,21 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM alpine:3.12
|
FROM alpine:3.12
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN set -eux; \
|
||||||
gmp-dev
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -18,9 +32,9 @@ ENV RUBY_DOWNLOAD_SHA256 8262e4663169c85787fdc9bfbd04d9eb86eb2a4b56d7f98373a8fca
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -68,6 +82,9 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -79,8 +96,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -95,24 +110,19 @@ RUN set -eux; \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
if \
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
apk --no-network list --installed \
|
||||||
| grep -i ruby \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
; \
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
46
2.6/alpine3.13/Dockerfile
generated
46
2.6/alpine3.13/Dockerfile
generated
|
@ -1,7 +1,21 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM alpine:3.13
|
FROM alpine:3.13
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN set -eux; \
|
||||||
gmp-dev
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -18,9 +32,9 @@ ENV RUBY_DOWNLOAD_SHA256 8262e4663169c85787fdc9bfbd04d9eb86eb2a4b56d7f98373a8fca
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -68,6 +82,9 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -79,8 +96,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -95,24 +110,19 @@ RUN set -eux; \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
if \
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
apk --no-network list --installed \
|
||||||
| grep -i ruby \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
; \
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
9
2.6/buster/Dockerfile
generated
9
2.6/buster/Dockerfile
generated
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM buildpack-deps:buster
|
FROM buildpack-deps:buster
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
|
@ -60,6 +66,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -70,7 +77,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM debian:buster-slim
|
FROM debian:buster-slim
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -34,22 +40,23 @@ RUN set -eux; \
|
||||||
savedAptMark="$(apt-mark showmanual)"; \
|
savedAptMark="$(apt-mark showmanual)"; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
autoconf \
|
|
||||||
bison \
|
bison \
|
||||||
dpkg-dev \
|
dpkg-dev \
|
||||||
|
libgdbm-dev \
|
||||||
|
ruby \
|
||||||
|
autoconf \
|
||||||
gcc \
|
gcc \
|
||||||
libbz2-dev \
|
libbz2-dev \
|
||||||
libgdbm-compat-dev \
|
|
||||||
libgdbm-dev \
|
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libncurses-dev \
|
libncurses-dev \
|
||||||
libreadline-dev \
|
libreadline-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
make \
|
make \
|
||||||
ruby \
|
|
||||||
wget \
|
wget \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
|
# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+)
|
||||||
|
libgdbm-compat-dev \
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
\
|
\
|
||||||
|
@ -86,6 +93,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -96,7 +104,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM debian:stretch-slim
|
FROM debian:stretch-slim
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -34,19 +40,19 @@ RUN set -eux; \
|
||||||
savedAptMark="$(apt-mark showmanual)"; \
|
savedAptMark="$(apt-mark showmanual)"; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
autoconf \
|
|
||||||
bison \
|
bison \
|
||||||
dpkg-dev \
|
dpkg-dev \
|
||||||
|
libgdbm-dev \
|
||||||
|
ruby \
|
||||||
|
autoconf \
|
||||||
gcc \
|
gcc \
|
||||||
libbz2-dev \
|
libbz2-dev \
|
||||||
libgdbm-dev \
|
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libncurses-dev \
|
libncurses-dev \
|
||||||
libreadline-dev \
|
libreadline-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
make \
|
make \
|
||||||
ruby \
|
|
||||||
wget \
|
wget \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
; \
|
; \
|
||||||
|
@ -85,6 +91,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -95,7 +102,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
9
2.6/stretch/Dockerfile
generated
9
2.6/stretch/Dockerfile
generated
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM buildpack-deps:stretch
|
FROM buildpack-deps:stretch
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
|
@ -60,6 +66,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -70,7 +77,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
46
2.7/alpine3.12/Dockerfile
generated
46
2.7/alpine3.12/Dockerfile
generated
|
@ -1,7 +1,21 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM alpine:3.12
|
FROM alpine:3.12
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN set -eux; \
|
||||||
gmp-dev
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -18,9 +32,9 @@ ENV RUBY_DOWNLOAD_SHA256 2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -68,6 +82,9 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -79,8 +96,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -95,24 +110,19 @@ RUN set -eux; \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
if \
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
apk --no-network list --installed \
|
||||||
| grep -i ruby \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
; \
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
46
2.7/alpine3.13/Dockerfile
generated
46
2.7/alpine3.13/Dockerfile
generated
|
@ -1,7 +1,21 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM alpine:3.13
|
FROM alpine:3.13
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN set -eux; \
|
||||||
gmp-dev
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -18,9 +32,9 @@ ENV RUBY_DOWNLOAD_SHA256 2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -68,6 +82,9 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -79,8 +96,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -95,24 +110,19 @@ RUN set -eux; \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
if \
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
apk --no-network list --installed \
|
||||||
| grep -i ruby \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
; \
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
9
2.7/buster/Dockerfile
generated
9
2.7/buster/Dockerfile
generated
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM buildpack-deps:buster
|
FROM buildpack-deps:buster
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
|
@ -60,6 +66,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -70,7 +77,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM debian:buster-slim
|
FROM debian:buster-slim
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -34,22 +40,23 @@ RUN set -eux; \
|
||||||
savedAptMark="$(apt-mark showmanual)"; \
|
savedAptMark="$(apt-mark showmanual)"; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
autoconf \
|
|
||||||
bison \
|
bison \
|
||||||
dpkg-dev \
|
dpkg-dev \
|
||||||
|
libgdbm-dev \
|
||||||
|
ruby \
|
||||||
|
autoconf \
|
||||||
gcc \
|
gcc \
|
||||||
libbz2-dev \
|
libbz2-dev \
|
||||||
libgdbm-compat-dev \
|
|
||||||
libgdbm-dev \
|
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libncurses-dev \
|
libncurses-dev \
|
||||||
libreadline-dev \
|
libreadline-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
make \
|
make \
|
||||||
ruby \
|
|
||||||
wget \
|
wget \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
|
# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+)
|
||||||
|
libgdbm-compat-dev \
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
\
|
\
|
||||||
|
@ -86,6 +93,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -96,7 +104,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
46
3.0/alpine3.12/Dockerfile
generated
46
3.0/alpine3.12/Dockerfile
generated
|
@ -1,7 +1,21 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM alpine:3.12
|
FROM alpine:3.12
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN set -eux; \
|
||||||
gmp-dev
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -18,9 +32,9 @@ ENV RUBY_DOWNLOAD_SHA256 570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -68,6 +82,9 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -79,8 +96,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -95,24 +110,19 @@ RUN set -eux; \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
if \
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
apk --no-network list --installed \
|
||||||
| grep -i ruby \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
; \
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
46
3.0/alpine3.13/Dockerfile
generated
46
3.0/alpine3.13/Dockerfile
generated
|
@ -1,7 +1,21 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM alpine:3.13
|
FROM alpine:3.13
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN set -eux; \
|
||||||
gmp-dev
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -18,9 +32,9 @@ ENV RUBY_DOWNLOAD_SHA256 570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -68,6 +82,9 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -79,8 +96,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -95,24 +110,19 @@ RUN set -eux; \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
if \
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
apk --no-network list --installed \
|
||||||
| grep -i ruby \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
; \
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
9
3.0/buster/Dockerfile
generated
9
3.0/buster/Dockerfile
generated
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM buildpack-deps:buster
|
FROM buildpack-deps:buster
|
||||||
|
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
|
@ -60,6 +66,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -70,7 +77,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
FROM debian:buster-slim
|
FROM debian:buster-slim
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
|
@ -34,22 +40,23 @@ RUN set -eux; \
|
||||||
savedAptMark="$(apt-mark showmanual)"; \
|
savedAptMark="$(apt-mark showmanual)"; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
autoconf \
|
|
||||||
bison \
|
bison \
|
||||||
dpkg-dev \
|
dpkg-dev \
|
||||||
|
libgdbm-dev \
|
||||||
|
ruby \
|
||||||
|
autoconf \
|
||||||
gcc \
|
gcc \
|
||||||
libbz2-dev \
|
libbz2-dev \
|
||||||
libgdbm-compat-dev \
|
|
||||||
libgdbm-dev \
|
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libncurses-dev \
|
libncurses-dev \
|
||||||
libreadline-dev \
|
libreadline-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
make \
|
make \
|
||||||
ruby \
|
|
||||||
wget \
|
wget \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
|
# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+)
|
||||||
|
libgdbm-compat-dev \
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
\
|
\
|
||||||
|
@ -86,6 +93,7 @@ RUN set -eux; \
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
| xargs -r dpkg-query --search \
|
| xargs -r dpkg-query --search \
|
||||||
| cut -d: -f1 \
|
| cut -d: -f1 \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
|
@ -96,7 +104,7 @@ RUN set -eux; \
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! dpkg -l | grep -i ruby; \
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
|
@ -1,92 +0,0 @@
|
||||||
FROM buildpack-deps:%%PLACEHOLDER%%
|
|
||||||
|
|
||||||
# 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 %%VERSION%%
|
|
||||||
ENV RUBY_VERSION %%FULL_VERSION%%
|
|
||||||
ENV RUBY_DOWNLOAD_SHA256 %%SHA256%%
|
|
||||||
ENV RUBYGEMS_VERSION %%RUBYGEMS%%
|
|
||||||
|
|
||||||
# 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 \
|
|
||||||
; \
|
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
|
||||||
\
|
|
||||||
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; \
|
|
||||||
\
|
|
||||||
# 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; \
|
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
|
||||||
./configure \
|
|
||||||
--build="$gnuArch" \
|
|
||||||
--disable-install-doc \
|
|
||||||
--enable-shared \
|
|
||||||
; \
|
|
||||||
make -j "$(nproc)"; \
|
|
||||||
make install; \
|
|
||||||
\
|
|
||||||
apt-mark auto '.*' > /dev/null; \
|
|
||||||
apt-mark manual $savedAptMark > /dev/null; \
|
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
|
||||||
| sort -u \
|
|
||||||
| xargs -r dpkg-query --search \
|
|
||||||
| cut -d: -f1 \
|
|
||||||
| sort -u \
|
|
||||||
| xargs -r apt-mark manual \
|
|
||||||
; \
|
|
||||||
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
|
|
||||||
\
|
|
||||||
cd /; \
|
|
||||||
rm -r /usr/src/ruby; \
|
|
||||||
# make sure bundled "rubygems" is older than RUBYGEMS_VERSION (https://github.com/docker-library/ruby/issues/246)
|
|
||||||
ruby -e 'exit(Gem::Version.create(ENV["RUBYGEMS_VERSION"]) > Gem::Version.create(Gem::VERSION))'; \
|
|
||||||
gem update --system "$RUBYGEMS_VERSION" && rm -r /root/.gem/; \
|
|
||||||
# verify we have no "ruby" packages installed
|
|
||||||
! dpkg -l | grep -i ruby; \
|
|
||||||
[ "$(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" ]
|
|
|
@ -1,118 +0,0 @@
|
||||||
FROM debian:%%PLACEHOLDER%%
|
|
||||||
|
|
||||||
RUN set -eux; \
|
|
||||||
apt-get update; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
libgmp-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libyaml-dev \
|
|
||||||
procps \
|
|
||||||
zlib1g-dev \
|
|
||||||
; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# 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 %%VERSION%%
|
|
||||||
ENV RUBY_VERSION %%FULL_VERSION%%
|
|
||||||
ENV RUBY_DOWNLOAD_SHA256 %%SHA256%%
|
|
||||||
ENV RUBYGEMS_VERSION %%RUBYGEMS%%
|
|
||||||
|
|
||||||
# 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 \
|
|
||||||
autoconf \
|
|
||||||
bison \
|
|
||||||
dpkg-dev \
|
|
||||||
gcc \
|
|
||||||
libbz2-dev \
|
|
||||||
libgdbm-compat-dev \
|
|
||||||
libgdbm-dev \
|
|
||||||
libglib2.0-dev \
|
|
||||||
libncurses-dev \
|
|
||||||
libreadline-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxslt-dev \
|
|
||||||
make \
|
|
||||||
ruby \
|
|
||||||
wget \
|
|
||||||
xz-utils \
|
|
||||||
; \
|
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
|
||||||
\
|
|
||||||
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; \
|
|
||||||
\
|
|
||||||
# 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; \
|
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
|
||||||
./configure \
|
|
||||||
--build="$gnuArch" \
|
|
||||||
--disable-install-doc \
|
|
||||||
--enable-shared \
|
|
||||||
; \
|
|
||||||
make -j "$(nproc)"; \
|
|
||||||
make install; \
|
|
||||||
\
|
|
||||||
apt-mark auto '.*' > /dev/null; \
|
|
||||||
apt-mark manual $savedAptMark > /dev/null; \
|
|
||||||
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
|
||||||
| awk '/=>/ { print $(NF-1) }' \
|
|
||||||
| sort -u \
|
|
||||||
| xargs -r dpkg-query --search \
|
|
||||||
| cut -d: -f1 \
|
|
||||||
| sort -u \
|
|
||||||
| xargs -r apt-mark manual \
|
|
||||||
; \
|
|
||||||
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
|
|
||||||
\
|
|
||||||
cd /; \
|
|
||||||
rm -r /usr/src/ruby; \
|
|
||||||
# make sure bundled "rubygems" is older than RUBYGEMS_VERSION (https://github.com/docker-library/ruby/issues/246)
|
|
||||||
ruby -e 'exit(Gem::Version.create(ENV["RUBYGEMS_VERSION"]) > Gem::Version.create(Gem::VERSION))'; \
|
|
||||||
gem update --system "$RUBYGEMS_VERSION" && rm -r /root/.gem/; \
|
|
||||||
# verify we have no "ruby" packages installed
|
|
||||||
! dpkg -l | grep -i ruby; \
|
|
||||||
[ "$(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" ]
|
|
|
@ -1,8 +1,46 @@
|
||||||
FROM alpine:%%PLACEHOLDER%%
|
{{
|
||||||
|
def is_alpine:
|
||||||
|
env.variant | startswith("alpine")
|
||||||
|
;
|
||||||
|
def is_slim:
|
||||||
|
env.variant | startswith("slim-")
|
||||||
|
-}}
|
||||||
|
{{ if is_alpine then ( -}}
|
||||||
|
FROM alpine:{{ env.variant | ltrimstr("alpine") }}
|
||||||
|
{{ ) elif is_slim then ( -}}
|
||||||
|
FROM debian:{{ env.variant | ltrimstr("slim-") }}-slim
|
||||||
|
{{ ) else ( -}}
|
||||||
|
FROM buildpack-deps:{{ env.variant }}
|
||||||
|
{{ ) end -}}
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
{{ if is_alpine then ( -}}
|
||||||
gmp-dev
|
RUN set -eux; \
|
||||||
|
apk add --no-cache \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
gmp-dev \
|
||||||
|
libffi-dev \
|
||||||
|
procps \
|
||||||
|
yaml-dev \
|
||||||
|
zlib-dev \
|
||||||
|
;
|
||||||
|
|
||||||
|
{{ ) elif is_slim then ( -}}
|
||||||
|
RUN set -eux; \
|
||||||
|
apt-get update; \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
libffi-dev \
|
||||||
|
libgmp-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libyaml-dev \
|
||||||
|
procps \
|
||||||
|
zlib1g-dev \
|
||||||
|
; \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
{{ ) else "" end -}}
|
||||||
# skip installing gem documentation
|
# skip installing gem documentation
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
mkdir -p /usr/local/etc; \
|
mkdir -p /usr/local/etc; \
|
||||||
|
@ -12,16 +50,16 @@ RUN set -eux; \
|
||||||
} >> /usr/local/etc/gemrc
|
} >> /usr/local/etc/gemrc
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
ENV LANG C.UTF-8
|
||||||
ENV RUBY_MAJOR %%VERSION%%
|
ENV RUBY_MAJOR {{ env.version }}
|
||||||
ENV RUBY_VERSION %%FULL_VERSION%%
|
ENV RUBY_VERSION {{ .version }}
|
||||||
ENV RUBY_DOWNLOAD_SHA256 %%SHA256%%
|
ENV RUBY_DOWNLOAD_SHA256 {{ .sha256 }}
|
||||||
ENV RUBYGEMS_VERSION %%RUBYGEMS%%
|
|
||||||
|
|
||||||
# some of ruby's build scripts are written in ruby
|
# 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
|
# we purge system ruby later to make sure our final image uses what we just built
|
||||||
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
\
|
\
|
||||||
|
{{ if is_alpine then ( -}}
|
||||||
|
# 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 \
|
apk add --no-cache --virtual .ruby-builddeps \
|
||||||
autoconf \
|
autoconf \
|
||||||
bison \
|
bison \
|
||||||
|
@ -51,6 +89,34 @@ RUN set -eux; \
|
||||||
yaml-dev \
|
yaml-dev \
|
||||||
zlib-dev \
|
zlib-dev \
|
||||||
; \
|
; \
|
||||||
|
{{ ) else ( -}}
|
||||||
|
savedAptMark="$(apt-mark showmanual)"; \
|
||||||
|
apt-get update; \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
bison \
|
||||||
|
dpkg-dev \
|
||||||
|
libgdbm-dev \
|
||||||
|
ruby \
|
||||||
|
{{ if is_slim then ( -}}
|
||||||
|
autoconf \
|
||||||
|
gcc \
|
||||||
|
libbz2-dev \
|
||||||
|
libglib2.0-dev \
|
||||||
|
libncurses-dev \
|
||||||
|
libreadline-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt-dev \
|
||||||
|
make \
|
||||||
|
wget \
|
||||||
|
xz-utils \
|
||||||
|
{{ if env.variant | endswith("stretch") then "" else ( -}}
|
||||||
|
# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+)
|
||||||
|
libgdbm-compat-dev \
|
||||||
|
{{ ) end -}}
|
||||||
|
{{ ) else "" end -}}
|
||||||
|
; \
|
||||||
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
|
{{ ) end -}}
|
||||||
\
|
\
|
||||||
wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"; \
|
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; \
|
echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \
|
||||||
|
@ -61,6 +127,7 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
cd /usr/src/ruby; \
|
cd /usr/src/ruby; \
|
||||||
\
|
\
|
||||||
|
{{ if is_alpine then ( -}}
|
||||||
# https://github.com/docker-library/ruby/issues/196
|
# 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-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)
|
# 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)
|
||||||
|
@ -69,6 +136,10 @@ RUN set -eux; \
|
||||||
patch -p1 -i thread-stack-fix.patch; \
|
patch -p1 -i thread-stack-fix.patch; \
|
||||||
rm 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; \
|
||||||
|
\
|
||||||
|
{{ ) else "" end -}}
|
||||||
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
|
||||||
# warning: Insecure world writable dir
|
# warning: Insecure world writable dir
|
||||||
{ \
|
{ \
|
||||||
|
@ -80,8 +151,6 @@ RUN set -eux; \
|
||||||
\
|
\
|
||||||
autoconf; \
|
autoconf; \
|
||||||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
|
||||||
# the configure script does not detect isnan/isinf as macros
|
|
||||||
export ac_cv_func_isnan=yes ac_cv_func_isinf=yes; \
|
|
||||||
./configure \
|
./configure \
|
||||||
--build="$gnuArch" \
|
--build="$gnuArch" \
|
||||||
--disable-install-doc \
|
--disable-install-doc \
|
||||||
|
@ -90,33 +159,44 @@ RUN set -eux; \
|
||||||
make -j "$(nproc)"; \
|
make -j "$(nproc)"; \
|
||||||
make install; \
|
make install; \
|
||||||
\
|
\
|
||||||
|
{{ if is_alpine then ( -}}
|
||||||
runDeps="$( \
|
runDeps="$( \
|
||||||
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
|
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
|
||||||
| tr ',' '\n' \
|
| tr ',' '\n' \
|
||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --no-network --virtual .ruby-rundeps \
|
apk add --no-network --virtual .ruby-rundeps $runDeps; \
|
||||||
$runDeps \
|
|
||||||
bzip2 \
|
|
||||||
ca-certificates \
|
|
||||||
libffi-dev \
|
|
||||||
procps \
|
|
||||||
yaml-dev \
|
|
||||||
zlib-dev \
|
|
||||||
; \
|
|
||||||
apk del --no-network .ruby-builddeps; \
|
apk del --no-network .ruby-builddeps; \
|
||||||
|
{{ ) else ( -}}
|
||||||
|
apt-mark auto '.*' > /dev/null; \
|
||||||
|
apt-mark manual $savedAptMark > /dev/null; \
|
||||||
|
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
|
||||||
|
| awk '/=>/ { print $(NF-1) }' \
|
||||||
|
| sort -u \
|
||||||
|
| grep -vE '^/usr/local/lib/' \
|
||||||
|
| xargs -r dpkg-query --search \
|
||||||
|
| cut -d: -f1 \
|
||||||
|
| sort -u \
|
||||||
|
| xargs -r apt-mark manual \
|
||||||
|
; \
|
||||||
|
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
|
||||||
|
{{ ) end -}}
|
||||||
\
|
\
|
||||||
cd /; \
|
cd /; \
|
||||||
rm -r /usr/src/ruby; \
|
rm -r /usr/src/ruby; \
|
||||||
# make sure bundled "rubygems" is older than RUBYGEMS_VERSION (https://github.com/docker-library/ruby/issues/246)
|
|
||||||
ruby -e 'exit(Gem::Version.create(ENV["RUBYGEMS_VERSION"]) > Gem::Version.create(Gem::VERSION))'; \
|
|
||||||
gem update --system "$RUBYGEMS_VERSION" && rm -r /root/.gem/; \
|
|
||||||
# verify we have no "ruby" packages installed
|
# verify we have no "ruby" packages installed
|
||||||
! apk --no-network list --installed \
|
{{ if is_alpine then ( -}}
|
||||||
| grep -v '^[.]ruby-rundeps' \
|
if \
|
||||||
| grep -i ruby \
|
apk --no-network list --installed \
|
||||||
; \
|
| grep -v '^[.]ruby-rundeps' \
|
||||||
|
| grep -i ruby \
|
||||||
|
; then \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
{{ ) else ( -}}
|
||||||
|
if dpkg -l | grep -i ruby; then exit 1; fi; \
|
||||||
|
{{ ) end -}}
|
||||||
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
[ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \
|
||||||
# rough smoke test
|
# rough smoke test
|
||||||
ruby --version; \
|
ruby --version; \
|
51
apply-templates.sh
Executable file
51
apply-templates.sh
Executable file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
[ -f versions.json ] # run "versions.sh" first
|
||||||
|
|
||||||
|
jqt='.jq-template.awk'
|
||||||
|
if [ -n "${BASHBREW_SCRIPTS:-}" ]; then
|
||||||
|
jqt="$BASHBREW_SCRIPTS/jq-template.awk"
|
||||||
|
elif [ "$BASH_SOURCE" -nt "$jqt" ]; then
|
||||||
|
# # https://github.com/docker-library/bashbrew/blob/master/scripts/jq-template.awk
|
||||||
|
wget -qO "$jqt" 'https://github.com/docker-library/bashbrew/raw/00e281f36edd19f52541a6ba2f215cc3c4645128/scripts/jq-template.awk'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$#" -eq 0 ]; then
|
||||||
|
versions="$(jq -r 'keys | map(@sh) | join(" ")' versions.json)"
|
||||||
|
eval "set -- $versions"
|
||||||
|
fi
|
||||||
|
|
||||||
|
generated_warning() {
|
||||||
|
cat <<-EOH
|
||||||
|
#
|
||||||
|
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
|
||||||
|
#
|
||||||
|
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||||
|
#
|
||||||
|
|
||||||
|
EOH
|
||||||
|
}
|
||||||
|
|
||||||
|
for version; do
|
||||||
|
export version
|
||||||
|
|
||||||
|
rm -rf "$version/"
|
||||||
|
|
||||||
|
variants="$(jq -r '.[env.version].variants | map(@sh) | join(" ")' versions.json)"
|
||||||
|
eval "variants=( $variants )"
|
||||||
|
|
||||||
|
for variant in "${variants[@]}"; do
|
||||||
|
export variant
|
||||||
|
|
||||||
|
dir="$version/$variant"
|
||||||
|
mkdir -p "$dir"
|
||||||
|
|
||||||
|
echo "processing $dir ..."
|
||||||
|
|
||||||
|
{
|
||||||
|
generated_warning
|
||||||
|
gawk -f "$jqt" Dockerfile.template
|
||||||
|
} > "$dir/Dockerfile"
|
||||||
|
done
|
||||||
|
done
|
|
@ -6,23 +6,16 @@ declare -A aliases=(
|
||||||
[2.7]='2'
|
[2.7]='2'
|
||||||
)
|
)
|
||||||
|
|
||||||
defaultDebianSuite='buster'
|
|
||||||
declare -A debianSuites=(
|
|
||||||
#[2.7]='buster'
|
|
||||||
)
|
|
||||||
defaultAlpineVersion='3.13'
|
|
||||||
declare -A alpineVersion=(
|
|
||||||
#[2.3]='3.8'
|
|
||||||
)
|
|
||||||
|
|
||||||
self="$(basename "$BASH_SOURCE")"
|
self="$(basename "$BASH_SOURCE")"
|
||||||
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
||||||
|
|
||||||
versions=( */ )
|
if [ "$#" -eq 0 ]; then
|
||||||
versions=( "${versions[@]%/}" )
|
versions="$(jq -r 'keys | map(@sh) | join(" ")' versions.json)"
|
||||||
|
eval "set -- $versions"
|
||||||
|
fi
|
||||||
|
|
||||||
# sort version numbers with highest first
|
# sort version numbers with highest first
|
||||||
IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS
|
IFS=$'\n'; set -- $(sort -rV <<<"$*"); unset IFS
|
||||||
|
|
||||||
# get the most recent commit which modified any of "$@"
|
# get the most recent commit which modified any of "$@"
|
||||||
fileCommit() {
|
fileCommit() {
|
||||||
|
@ -34,15 +27,19 @@ dirCommit() {
|
||||||
local dir="$1"; shift
|
local dir="$1"; shift
|
||||||
(
|
(
|
||||||
cd "$dir"
|
cd "$dir"
|
||||||
fileCommit \
|
files="$(
|
||||||
Dockerfile \
|
git show HEAD:./Dockerfile | awk '
|
||||||
$(git show HEAD:./Dockerfile | awk '
|
|
||||||
toupper($1) == "COPY" {
|
toupper($1) == "COPY" {
|
||||||
for (i = 2; i < NF; i++) {
|
for (i = 2; i < NF; i++) {
|
||||||
|
if ($i ~ /^--from=/) {
|
||||||
|
next
|
||||||
|
}
|
||||||
print $i
|
print $i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
')
|
'
|
||||||
|
)"
|
||||||
|
fileCommit Dockerfile $files
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,42 +74,52 @@ join() {
|
||||||
echo "${out#$sep}"
|
echo "${out#$sep}"
|
||||||
}
|
}
|
||||||
|
|
||||||
for version in "${versions[@]}"; do
|
for version; do
|
||||||
for v in \
|
export version
|
||||||
{buster,stretch}{,/slim} \
|
variants="$(jq -r '.[env.version].variants | map(@sh) | join(" ")' versions.json)"
|
||||||
alpine{3.13,3.12} \
|
eval "variants=( $variants )"
|
||||||
; do
|
|
||||||
|
fullVersion="$(jq -r '.[env.version].version' versions.json)"
|
||||||
|
|
||||||
|
versionAliases=(
|
||||||
|
$fullVersion
|
||||||
|
$version
|
||||||
|
${aliases[$version]:-}
|
||||||
|
)
|
||||||
|
|
||||||
|
defaultDebianVariant="$(jq -r '
|
||||||
|
.[env.version].variants
|
||||||
|
| map(select(
|
||||||
|
startswith("alpine")
|
||||||
|
or startswith("slim-")
|
||||||
|
| not
|
||||||
|
))
|
||||||
|
| .[0]
|
||||||
|
' versions.json)"
|
||||||
|
defaultAlpineVariant="$(jq -r '
|
||||||
|
.[env.version].variants
|
||||||
|
| map(select(
|
||||||
|
startswith("alpine")
|
||||||
|
))
|
||||||
|
| .[0]
|
||||||
|
' versions.json)"
|
||||||
|
|
||||||
|
for v in "${variants[@]}"; do
|
||||||
dir="$version/$v"
|
dir="$version/$v"
|
||||||
variant="$(basename "$v")"
|
|
||||||
|
|
||||||
if [ "$variant" = 'slim' ]; then
|
|
||||||
# convert "slim" into "slim-buster"
|
|
||||||
# https://github.com/docker-library/ruby/pull/142#issuecomment-320012893
|
|
||||||
variant="$variant-$(basename "$(dirname "$v")")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -f "$dir/Dockerfile" ] || continue
|
[ -f "$dir/Dockerfile" ] || continue
|
||||||
|
variant="$(basename "$v")"
|
||||||
|
|
||||||
commit="$(dirCommit "$dir")"
|
commit="$(dirCommit "$dir")"
|
||||||
|
|
||||||
fullVersion="$(git show "$commit":"$dir/Dockerfile" | awk '$1 == "ENV" && $2 == "RUBY_VERSION" { print $3; exit }')"
|
|
||||||
|
|
||||||
versionAliases=(
|
|
||||||
$fullVersion
|
|
||||||
$version
|
|
||||||
${aliases[$version]:-}
|
|
||||||
)
|
|
||||||
|
|
||||||
variantAliases=( "${versionAliases[@]/%/-$variant}" )
|
variantAliases=( "${versionAliases[@]/%/-$variant}" )
|
||||||
debianSuite="${debianSuites[$version]:-$defaultDebianSuite}"
|
|
||||||
case "$variant" in
|
case "$variant" in
|
||||||
"$debianSuite")
|
"$defaultDebianVariant")
|
||||||
variantAliases+=( "${versionAliases[@]}" )
|
variantAliases+=( "${versionAliases[@]}" )
|
||||||
;;
|
;;
|
||||||
*-"$debianSuite")
|
*-"$defaultDebianVariant")
|
||||||
variantAliases+=( "${versionAliases[@]/%/-${variant%-$debianSuite}}" )
|
variantAliases+=( "${versionAliases[@]/%/-${variant%-$defaultDebianVariant}}" )
|
||||||
;;
|
;;
|
||||||
"alpine${alpineVersion[$version]:-$defaultAlpineVersion}")
|
"$defaultAlpineVariant")
|
||||||
variantAliases+=( "${versionAliases[@]/%/-alpine}" )
|
variantAliases+=( "${versionAliases[@]/%/-alpine}" )
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
101
update.sh
101
update.sh
|
@ -3,102 +3,5 @@ set -Eeuo pipefail
|
||||||
|
|
||||||
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
||||||
|
|
||||||
versions=( "$@" )
|
./versions.sh "$@"
|
||||||
if [ ${#versions[@]} -eq 0 ]; then
|
./apply-templates.sh "$@"
|
||||||
versions=( */ )
|
|
||||||
fi
|
|
||||||
versions=( "${versions[@]%/}" )
|
|
||||||
|
|
||||||
releasesPage="$(curl -fsSL 'https://www.ruby-lang.org/en/downloads/releases/')"
|
|
||||||
newsPage="$(curl -fsSL 'https://www.ruby-lang.org/en/news/')" # occasionally, releases don't show up on the Releases page (see https://github.com/ruby/www.ruby-lang.org/blob/master/_data/releases.yml)
|
|
||||||
# TODO consider parsing https://github.com/ruby/www.ruby-lang.org/blob/master/_data/downloads.yml as well
|
|
||||||
|
|
||||||
for version in "${versions[@]}"; do
|
|
||||||
rcGrepV='-v'
|
|
||||||
rcVersion="${version%-rc}"
|
|
||||||
if [ "$rcVersion" != "$version" ]; then
|
|
||||||
rcGrepV=
|
|
||||||
fi
|
|
||||||
|
|
||||||
IFS=$'\n'; allVersions=( $(
|
|
||||||
curl -fsSL --compressed "https://cache.ruby-lang.org/pub/ruby/$rcVersion/" \
|
|
||||||
| grep -oE '["/]ruby-'"$rcVersion"'.[^"]+\.tar\.xz' \
|
|
||||||
| sed -r 's!^["/]ruby-([^"]+)[.]tar[.]xz!\1!' \
|
|
||||||
| grep $rcGrepV -E 'preview|rc' \
|
|
||||||
| sort -ruV
|
|
||||||
) ); unset IFS
|
|
||||||
|
|
||||||
fullVersion=
|
|
||||||
shaVal=
|
|
||||||
for tryVersion in "${allVersions[@]}"; do
|
|
||||||
if \
|
|
||||||
{
|
|
||||||
versionReleasePage="$(grep "<td>Ruby $tryVersion</td>" -A 2 <<<"$releasesPage" | awk -F '"' '$1 == "<td><a href=" { print $2; exit }')" \
|
|
||||||
&& [ "$versionReleasePage" ] \
|
|
||||||
&& shaVal="$(curl -fsSL "https://www.ruby-lang.org/$versionReleasePage" |tac|tac| grep "ruby-$tryVersion.tar.xz" -A 5 | awk '$1 == "SHA256:" { print $2; exit }')" \
|
|
||||||
&& [ "$shaVal" ]
|
|
||||||
} \
|
|
||||||
|| {
|
|
||||||
versionReleasePage="$(echo "$newsPage" | grep -oE '<a href="[^"]+">Ruby '"$tryVersion"' Released</a>' | cut -d'"' -f2)" \
|
|
||||||
&& [ "$versionReleasePage" ] \
|
|
||||||
&& shaVal="$(curl -fsSL "https://www.ruby-lang.org/$versionReleasePage" |tac|tac| grep "ruby-$tryVersion.tar.xz" -A 5 | awk '$1 == "SHA256:" { print $2; exit }')" \
|
|
||||||
&& [ "$shaVal" ]
|
|
||||||
} \
|
|
||||||
; then
|
|
||||||
fullVersion="$tryVersion"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "$fullVersion" ]; then
|
|
||||||
echo >&2 "warning: cannot determine sha for $version (tried all of ${allVersions[*]}); skipping"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$version: $fullVersion; $shaVal"
|
|
||||||
|
|
||||||
for v in \
|
|
||||||
alpine{3.13,3.12} \
|
|
||||||
{stretch,buster}{/slim,} \
|
|
||||||
; do
|
|
||||||
dir="$version/$v"
|
|
||||||
variant="$(basename "$v")"
|
|
||||||
|
|
||||||
[ -d "$dir" ] || continue
|
|
||||||
|
|
||||||
case "$variant" in
|
|
||||||
slim|windowsservercore) template="$variant"; tag="$(basename "$(dirname "$dir")")" ;;
|
|
||||||
alpine*) template='alpine'; tag="${variant#alpine}" ;;
|
|
||||||
*) template='debian'; tag="$variant" ;;
|
|
||||||
esac
|
|
||||||
template="Dockerfile-${template}.template"
|
|
||||||
|
|
||||||
if [ "$variant" = 'slim' ]; then
|
|
||||||
tag+='-slim'
|
|
||||||
fi
|
|
||||||
|
|
||||||
sed -r \
|
|
||||||
-e 's!%%VERSION%%!'"$version"'!g' \
|
|
||||||
-e 's!%%FULL_VERSION%%!'"$fullVersion"'!g' \
|
|
||||||
-e 's!%%SHA256%%!'"$shaVal"'!g' \
|
|
||||||
-e 's/^(FROM (debian|buildpack-deps|alpine)):.*/\1:'"$tag"'/' \
|
|
||||||
"$template" > "$dir/Dockerfile"
|
|
||||||
|
|
||||||
case "$v" in
|
|
||||||
# https://packages.debian.org/sid/libgdbm-compat-dev (needed for "dbm" core module, but only in Buster+)
|
|
||||||
stretch/slim)
|
|
||||||
sed -i -e '/libgdbm-compat-dev/d' "$dir/Dockerfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# https://github.com/docker-library/ruby/issues/246
|
|
||||||
if [ "$rcVersion" = '2.5' ]; then
|
|
||||||
rubygems='3.0.3'
|
|
||||||
sed -ri \
|
|
||||||
-e 's!%%RUBYGEMS%%!'"$rubygems"'!g' \
|
|
||||||
"$dir/Dockerfile"
|
|
||||||
else
|
|
||||||
sed -ri -e '/RUBYGEMS_VERSION/d' "$dir/Dockerfile"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
34
versions.json
Normal file
34
versions.json
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"2.6": {
|
||||||
|
"sha256": "8262e4663169c85787fdc9bfbd04d9eb86eb2a4b56d7f98373a8fcaa18e593eb",
|
||||||
|
"variants": [
|
||||||
|
"buster",
|
||||||
|
"slim-buster",
|
||||||
|
"stretch",
|
||||||
|
"slim-stretch",
|
||||||
|
"alpine3.13",
|
||||||
|
"alpine3.12"
|
||||||
|
],
|
||||||
|
"version": "2.6.8"
|
||||||
|
},
|
||||||
|
"2.7": {
|
||||||
|
"sha256": "2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30c46cef8d7",
|
||||||
|
"variants": [
|
||||||
|
"buster",
|
||||||
|
"slim-buster",
|
||||||
|
"alpine3.13",
|
||||||
|
"alpine3.12"
|
||||||
|
],
|
||||||
|
"version": "2.7.4"
|
||||||
|
},
|
||||||
|
"3.0": {
|
||||||
|
"sha256": "570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40",
|
||||||
|
"variants": [
|
||||||
|
"buster",
|
||||||
|
"slim-buster",
|
||||||
|
"alpine3.13",
|
||||||
|
"alpine3.12"
|
||||||
|
],
|
||||||
|
"version": "3.0.2"
|
||||||
|
}
|
||||||
|
}
|
85
versions.sh
Executable file
85
versions.sh
Executable file
|
@ -0,0 +1,85 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
||||||
|
|
||||||
|
versions=( "$@" )
|
||||||
|
if [ ${#versions[@]} -eq 0 ]; then
|
||||||
|
versions=( */ )
|
||||||
|
json='{}'
|
||||||
|
else
|
||||||
|
json="$(< versions.json)"
|
||||||
|
fi
|
||||||
|
versions=( "${versions[@]%/}" )
|
||||||
|
|
||||||
|
releasesPage="$(curl -fsSL 'https://www.ruby-lang.org/en/downloads/releases/')"
|
||||||
|
newsPage="$(curl -fsSL 'https://www.ruby-lang.org/en/news/')" # occasionally, releases don't show up on the Releases page (see https://github.com/ruby/www.ruby-lang.org/blob/master/_data/releases.yml)
|
||||||
|
# TODO consider parsing https://github.com/ruby/www.ruby-lang.org/blob/master/_data/downloads.yml as well
|
||||||
|
|
||||||
|
for version in "${versions[@]}"; do
|
||||||
|
rcGrepV='-v'
|
||||||
|
rcVersion="${version%-rc}"
|
||||||
|
if [ "$rcVersion" != "$version" ]; then
|
||||||
|
rcGrepV=
|
||||||
|
fi
|
||||||
|
export version rcVersion
|
||||||
|
|
||||||
|
IFS=$'\n'; allVersions=( $(
|
||||||
|
curl -fsSL --compressed "https://cache.ruby-lang.org/pub/ruby/$rcVersion/" \
|
||||||
|
| grep -oE '["/]ruby-'"$rcVersion"'.[^"]+\.tar\.xz' \
|
||||||
|
| sed -r 's!^["/]ruby-([^"]+)[.]tar[.]xz!\1!' \
|
||||||
|
| grep $rcGrepV -E 'preview|rc' \
|
||||||
|
| sort -ruV
|
||||||
|
) ); unset IFS
|
||||||
|
|
||||||
|
fullVersion=
|
||||||
|
shaVal=
|
||||||
|
for tryVersion in "${allVersions[@]}"; do
|
||||||
|
if \
|
||||||
|
{
|
||||||
|
versionReleasePage="$(grep "<td>Ruby $tryVersion</td>" -A 2 <<<"$releasesPage" | awk -F '"' '$1 == "<td><a href=" { print $2; exit }')" \
|
||||||
|
&& [ "$versionReleasePage" ] \
|
||||||
|
&& shaVal="$(curl -fsSL "https://www.ruby-lang.org/$versionReleasePage" |tac|tac| grep "ruby-$tryVersion.tar.xz" -A 5 | awk '$1 == "SHA256:" { print $2; exit }')" \
|
||||||
|
&& [ "$shaVal" ]
|
||||||
|
} \
|
||||||
|
|| {
|
||||||
|
versionReleasePage="$(echo "$newsPage" | grep -oE '<a href="[^"]+">Ruby '"$tryVersion"' Released</a>' | cut -d'"' -f2)" \
|
||||||
|
&& [ "$versionReleasePage" ] \
|
||||||
|
&& shaVal="$(curl -fsSL "https://www.ruby-lang.org/$versionReleasePage" |tac|tac| grep "ruby-$tryVersion.tar.xz" -A 5 | awk '$1 == "SHA256:" { print $2; exit }')" \
|
||||||
|
&& [ "$shaVal" ]
|
||||||
|
} \
|
||||||
|
; then
|
||||||
|
fullVersion="$tryVersion"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$fullVersion" ]; then
|
||||||
|
echo >&2 "error: cannot determine sha for $version (tried all of ${allVersions[*]})"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$version: $fullVersion; $shaVal"
|
||||||
|
|
||||||
|
export fullVersion shaVal
|
||||||
|
json="$(jq <<<"$json" -c '
|
||||||
|
.[env.version] = {
|
||||||
|
version: env.fullVersion,
|
||||||
|
sha256: env.shaVal,
|
||||||
|
variants: [
|
||||||
|
(
|
||||||
|
"buster",
|
||||||
|
if env.rcVersion == "2.6" then
|
||||||
|
"stretch"
|
||||||
|
else empty end
|
||||||
|
| ., "slim-" + .), # https://github.com/docker-library/ruby/pull/142#issuecomment-320012893
|
||||||
|
(
|
||||||
|
"3.13",
|
||||||
|
"3.12"
|
||||||
|
| "alpine" + .)
|
||||||
|
],
|
||||||
|
}
|
||||||
|
')"
|
||||||
|
done
|
||||||
|
|
||||||
|
jq <<<"$json" -S . > versions.json
|
Loading…
Reference in a new issue