22ARG RELEASE=24.04
33
44# Build stage
5- FROM ubuntu:${RELEASE} as builder
5+ FROM ubuntu:${RELEASE} AS builder
66
77
88# Build-time variables
@@ -18,25 +18,25 @@ RUN apt update && \
1818 curl
1919
2020
21- # Install Java 23 .x
22- # http://jdk.java.net/23 /
21+ # Install Java 24 .x
22+ # http://jdk.java.net/24 /
2323RUN cd /tmp && \
2424 if [ "$BUILDARCH" = "arm64" ]; then ARCH="aarch64" ; else ARCH="x64" ; fi && \
25- curl --remote-name https://download.java.net/java/GA/jdk23.0.1/c28985cbf10d4e648e4004050f8781aa/11 /GPL/openjdk-23.0.1_linux -${ARCH}_bin.tar.gz && \
26- tar xzf openjdk-23.0.1_linux -${ARCH}_bin.tar.gz && \
27- rm --force openjdk-23.0.1_linux -${ARCH}_bin.tar.gz && \
28- mv jdk-23.0.1 /opt/jdk && \
25+ curl --remote-name https://download.java.net/java/GA/jdk24/1f9ff9062db4449d8ca828c504ffae90/36 /GPL/openjdk-24_linux -${ARCH}_bin.tar.gz && \
26+ tar xzf openjdk-24_linux -${ARCH}_bin.tar.gz && \
27+ rm --force openjdk-24_linux -${ARCH}_bin.tar.gz && \
28+ mv jdk-24 /opt/jdk && \
2929 mkdir --parent /opt/bin && \
3030 ln --symbolic /opt/jdk/bin/* /opt/bin/ && \
3131 chmod a+rx /opt/bin/*
3232
3333
34- # Install Node.js 22 .x
34+ # Install Node.js 23 .x
3535# https://nodejs.dev/en/download/
3636# https://github.com/tj/n#installation
3737RUN curl --location https://raw.githubusercontent.com/tj/n/master/bin/n --output /usr/local/bin/n && \
3838 chmod a+x /usr/local/bin/n && \
39- n 22.12 .0
39+ n 23.11 .0
4040
4141
4242# Install Node.js packages
@@ -61,25 +61,25 @@ RUN apt update && \
6161 make tk-dev unzip wget xz-utils zlib1g-dev
6262
6363
64- # Install Python 3.12 .x
64+ # Install Python 3.13 .x
6565# https://www.python.org/downloads/
6666RUN cd /tmp && \
67- curl --remote-name https://www.python.org/ftp/python/3.12.8 /Python-3.12.8 .tgz && \
68- tar xzf Python-3.12.8 .tgz && \
69- rm --force Python-3.12.8 .tgz && \
70- cd Python-3.12.8 && \
67+ curl --remote-name https://www.python.org/ftp/python/3.13.2 /Python-3.13.2 .tgz && \
68+ tar xzf Python-3.13.2 .tgz && \
69+ rm --force Python-3.13.2 .tgz && \
70+ cd Python-3.13.2 && \
7171 CFLAGS="-Os" ./configure --disable-static --enable-optimizations --enable-shared --with-lto --without-tests && \
7272 ./configure && \
7373 make && \
7474 make install && \
7575 cd .. && \
76- rm --force --recursive Python-3.12.8 && \
76+ rm --force --recursive Python-3.13.2 && \
7777 ln --relative --symbolic /usr/local/bin/pip3 /usr/local/bin/pip && \
7878 ln --relative --symbolic /usr/local/bin/python3 /usr/local/bin/python && \
7979 pip3 install --no-cache-dir --upgrade pip
8080
8181
82- # Install Ruby 3.3 .x
82+ # Install Ruby 3.4 .x
8383# https://www.ruby-lang.org/en/downloads/
8484# https://bugs.ruby-lang.org/issues/20085#note-5
8585RUN apt update && \
@@ -89,16 +89,16 @@ RUN apt update && \
8989 apt clean && \
9090 rm --force --recursive /var/lib/apt/lists/* && \
9191 cd /tmp && \
92- curl https://cache.ruby-lang.org/pub/ruby/3.3 /ruby-3.3.6 .tar.gz --output ruby-3.3.6 .tar.gz && \
93- tar xzf ruby-3.3.6 .tar.gz && \
94- rm --force ruby-3.3.6 .tar.gz && \
95- cd ruby-3.3.6 && \
92+ curl https://cache.ruby-lang.org/pub/ruby/3.4 /ruby-3.4.2 .tar.gz --output ruby-3.4.2 .tar.gz && \
93+ tar xzf ruby-3.4.2 .tar.gz && \
94+ rm --force ruby-3.4.2 .tar.gz && \
95+ cd ruby-3.4.2 && \
9696 if [ "$BUILDARCH" = "arm64" ]; then ASFLAGS=-mbranch-protection=pac-ret; else ASFLAGS=; fi && \
9797 ASFLAGS=${ASFLAGS} CFLAGS=-Os ./configure --disable-install-doc --enable-load-relative && \
9898 make && \
9999 make install && \
100100 cd .. && \
101- rm --force --recursive ruby-3.3.6
101+ rm --force --recursive ruby-3.4.2
102102
103103
104104# Install Ruby packages
@@ -117,14 +117,14 @@ RUN echo "gem: --no-document" > /etc/gemrc && \
117117# https://www.sqlite.org/howtocompile.html#compiling_the_command_line_interface
118118COPY shell.c.patch /tmp
119119RUN cd /tmp && \
120- curl --remote-name https://www.sqlite.org/2024 /sqlite-amalgamation-3470200 .zip && \
121- unzip sqlite-amalgamation-3470200 .zip && \
122- rm --force sqlite-amalgamation-3470200 .zip && \
123- cd sqlite-amalgamation-3470200 && \
120+ curl --remote-name https://www.sqlite.org/2025 /sqlite-amalgamation-3490100 .zip && \
121+ unzip sqlite-amalgamation-3490100 .zip && \
122+ rm --force sqlite-amalgamation-3490100 .zip && \
123+ cd sqlite-amalgamation-3490100 && \
124124 patch shell.c < /tmp/shell.c.patch && \
125125 gcc -D HAVE_READLINE -D SQLITE_DEFAULT_FOREIGN_KEYS=1 -D SQLITE_OMIT_DYNAPROMPT=1 shell.c sqlite3.c -lpthread -ldl -lm -lreadline -lncurses -o /usr/local/bin/sqlite3 && \
126126 cd .. && \
127- rm --force --recursive sqlite-amalgamation-3470200 && \
127+ rm --force --recursive sqlite-amalgamation-3490100 && \
128128 rm --force /tmp/shell.c.patch
129129
130130
@@ -176,7 +176,7 @@ RUN apt update && \
176176 apt install --no-install-recommends --no-install-suggests --yes \
177177 astyle \
178178 bash-completion \
179- build-essential `# dpkg-dev, libc, gcc, g++, make, etc.`\
179+ build-essential `# dpkg-dev, libc, gcc, g++, make, etc.` \
180180 ca-certificates \
181181 clang \
182182 clang-format \
@@ -244,7 +244,8 @@ RUN apt update && \
244244
245245
246246# Install Python packages
247- RUN pip3 install --no-cache-dir \
247+ RUN apt install --yes cargo `# For jellyfish, via lib50` && \
248+ pip3 install --no-cache-dir \
248249 autopep8 \
249250 cachelib \
250251 "check50<4" \
0 commit comments