Skip to content

Commit 2ac8338

Browse files
committed
Add Bookworm builder and update Ruby/system libs
1 parent 67c72c5 commit 2ac8338

2 files changed

Lines changed: 61 additions & 21 deletions

File tree

Dockerfile

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
ARG os=debian
2-
ARG version=bullseye
2+
ARG version=bookworm
33
ARG variant=-slim
44
ARG mirror=http://deb.debian.org/debian
5-
ARG system_ruby=ruby2.7
5+
ARG system_ruby=ruby3.1
66

77
# rake -j interpret non-numeric argument as number of CPUs plus 3.
88
ARG j=numcpu_plus_alpha
@@ -56,16 +56,14 @@ RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
5656
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
5757

5858
# =============================================================================
59-
# Base build environment: Debian Bullseye (for modern Ruby versions)
59+
# Base build environment: Debian Bullseye (for Ruby 1.2-3.0)
6060
# =============================================================================
61-
FROM ${os}:${version}${variant} AS builder-bullseye
61+
FROM debian:bullseye-slim AS builder-bullseye
6262
ENV DEBIAN_FRONTEND=noninteractive
6363
ARG mirror
64-
ARG version
65-
ARG system_ruby
6664

6765
RUN dpkg --add-architecture i386 \
68-
&& echo "deb-src ${mirror} ${version} main" > /etc/apt/sources.list.d/deb-src.list \
66+
&& echo "deb-src ${mirror} bullseye main" > /etc/apt/sources.list.d/deb-src.list \
6967
&& echo 'Dpkg::Use-Pty "0";\nquiet "2";\nAPT::Install-Recommends "0";' > /etc/apt/apt.conf.d/99autopilot \
7068
&& echo 'Acquire::HTTP::No-Cache "True";' > /etc/apt/apt.conf.d/99no-cache \
7169
&& apt-get update \
@@ -75,9 +73,9 @@ RUN dpkg --add-architecture i386 \
7573
bison \
7674
rdfind \
7775
file \
78-
lib${system_ruby}:amd64 \
79-
lib${system_ruby}:i386 \
80-
&& apt-get build-dep ${system_ruby} \
76+
libruby2.7:amd64 \
77+
libruby2.7:i386 \
78+
&& apt-get build-dep ruby2.7 \
8179
&& rm -rf /var/lib/apt/lists/*
8280

8381
WORKDIR /all-ruby
@@ -228,10 +226,42 @@ RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
228226
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
229227
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
230228

229+
# =============================================================================
230+
# Base build environment: Debian Bookworm (for Ruby 3.1+)
231+
# =============================================================================
232+
FROM ${os}:${version}${variant} AS builder-bookworm
233+
ENV DEBIAN_FRONTEND=noninteractive
234+
ARG mirror
235+
ARG version
236+
ARG system_ruby
237+
238+
RUN dpkg --add-architecture i386 \
239+
&& echo "deb-src ${mirror} ${version} main" > /etc/apt/sources.list.d/deb-src.list \
240+
&& echo 'Dpkg::Use-Pty "0";\nquiet "2";\nAPT::Install-Recommends "0";' > /etc/apt/apt.conf.d/99autopilot \
241+
&& echo 'Acquire::HTTP::No-Cache "True";' > /etc/apt/apt.conf.d/99no-cache \
242+
&& apt-get update \
243+
&& apt-get install \
244+
build-essential \
245+
gcc-multilib \
246+
bison \
247+
rdfind \
248+
file \
249+
lib${system_ruby}:amd64 \
250+
lib${system_ruby}:i386 \
251+
&& apt-get build-dep ${system_ruby} \
252+
&& rm -rf /var/lib/apt/lists/*
253+
254+
WORKDIR /all-ruby
255+
256+
COPY Rakefile /all-ruby/
257+
COPY lib/ruby_version.rb /all-ruby/lib/
258+
COPY patch /all-ruby/patch/
259+
RUN rake setup_build
260+
231261
# =============================================================================
232262
# Ruby 3.1
233263
# =============================================================================
234-
FROM builder-bullseye AS ruby-3.1
264+
FROM builder-bookworm AS ruby-3.1
235265
ARG j=numcpu_plus_alpha
236266

237267
COPY versions/3.1* /all-ruby/versions/
@@ -245,7 +275,7 @@ RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'f
245275
# =============================================================================
246276
# Ruby 3.2
247277
# =============================================================================
248-
FROM builder-bullseye AS ruby-3.2
278+
FROM builder-bookworm AS ruby-3.2
249279
ARG j=numcpu_plus_alpha
250280

251281
COPY versions/3.2* /all-ruby/versions/
@@ -259,7 +289,7 @@ RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'f
259289
# =============================================================================
260290
# Ruby 3.3
261291
# =============================================================================
262-
FROM builder-bullseye AS ruby-3.3
292+
FROM builder-bookworm AS ruby-3.3
263293
ARG j=numcpu_plus_alpha
264294

265295
COPY versions/3.3* /all-ruby/versions/
@@ -273,7 +303,7 @@ RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'f
273303
# =============================================================================
274304
# Ruby 3.4
275305
# =============================================================================
276-
FROM builder-bullseye AS ruby-3.4
306+
FROM builder-bookworm AS ruby-3.4
277307
ARG j=numcpu_plus_alpha
278308

279309
COPY versions/3.4* /all-ruby/versions/
@@ -287,7 +317,7 @@ RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'f
287317
# =============================================================================
288318
# Ruby 3.5-4.0
289319
# =============================================================================
290-
FROM builder-bullseye AS ruby-3.5-4.0
320+
FROM builder-bookworm AS ruby-3.5-4.0
291321
ARG j=numcpu_plus_alpha
292322

293323
COPY versions/3.5* versions/4.0* /all-ruby/versions/

Dockerfile.final

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
ARG os=debian
2-
ARG version=bullseye
2+
ARG version=bookworm
33
ARG variant=-slim
44
ARG mirror=http://deb.debian.org/debian
5-
ARG system_ruby=ruby2.7
5+
ARG system_ruby=ruby3.1
66

77
# =============================================================================
88
# Merge: ruby-0.x-2.0 through ruby-2.4
@@ -89,18 +89,18 @@ RUN dpkg --add-architecture i386 \
8989
&& apt-get update \
9090
&& apt-get install \
9191
libc6:i386 \
92-
libffi7:i386 \
92+
libffi8:i386 \
9393
libgcc1:i386 \
9494
libgdbm6:i386 \
9595
libncurses5:i386 \
9696
libreadline8:i386 \
97-
libssl1.1:i386 \
97+
libssl3:i386 \
9898
zlib1g:i386 \
99-
libffi7:amd64 \
99+
libffi8:amd64 \
100100
libgdbm6:amd64 \
101101
libncurses5:amd64 \
102102
libreadline8:amd64 \
103-
libssl1.1:amd64 \
103+
libssl3:amd64 \
104104
zlib1g:amd64 \
105105
gcc \
106106
${system_ruby} \
@@ -111,6 +111,16 @@ COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-2.4 /all-ruby/ /all-ruby/
111111
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5-3.1 /all-ruby/bin/ /all-ruby/bin/
112112
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2-4.0 /all-ruby/bin/ /all-ruby/bin/
113113

114+
# for Ruby 0.x and 1.1x (built on buster, need libcrypt.so.1)
115+
COPY --from=docker.io/rubylang/all-ruby:ruby-1.2-1.8.7 /lib/i386-linux-gnu/libcrypt.so.1.1.0 /lib/i386-linux-gnu/libcrypt.so.1.1.0
116+
RUN cd /lib/i386-linux-gnu && ln -s libcrypt.so.1.1.0 libcrypt.so.1
117+
118+
# for Ruby 2.4-3.0 (built on bullseye, need libssl1.1/libcrypto1.1)
119+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
120+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
121+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /usr/lib/i386-linux-gnu/libssl.so.1.1 /usr/lib/i386-linux-gnu/libssl.so.1.1
122+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /usr/lib/i386-linux-gnu/libcrypto.so.1.1 /usr/lib/i386-linux-gnu/libcrypto.so.1.1
123+
114124
COPY lib/* /all-ruby/lib/
115125
COPY all-ruby /all-ruby/
116126

0 commit comments

Comments
 (0)