Skip to content

Commit b06b65a

Browse files
committed
Merge branch 'main' into help50
2 parents 930f8c6 + 7653c04 commit b06b65a

4 files changed

Lines changed: 84 additions & 62 deletions

File tree

‎.github/workflows/main.yml‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@ jobs:
55
runs-on: ubuntu-2404-64-cores-amd
66
steps:
77
- name: Set up Docker Buildx
8-
uses: docker/setup-buildx-action@v3
8+
uses: docker/setup-buildx-action@v4
99

1010
- name: Log into Docker Hub
11-
uses: docker/login-action@v3
11+
uses: docker/login-action@v4
1212
with:
1313
username: ${{ secrets.DOCKERHUB_USERNAME }}
1414
password: ${{ secrets.DOCKERHUB_TOKEN }}
1515

1616
- name: Setup Python
17-
uses: actions/setup-python@v6
17+
uses: actions/setup-python@v7
1818
with:
1919
python-version: "3.14"
2020

2121
- name: Build for linux/amd64
22-
uses: docker/build-push-action@v6
22+
uses: docker/build-push-action@v7
2323
with:
2424
build-args: |
2525
VCS_REF=${{ github.sha }}
@@ -43,21 +43,21 @@ jobs:
4343
runs-on: ubuntu-2404-64-cores-arm
4444
steps:
4545
- name: Set up Docker Buildx
46-
uses: docker/setup-buildx-action@v3
46+
uses: docker/setup-buildx-action@v4
4747

4848
- name: Log into Docker Hub
49-
uses: docker/login-action@v3
49+
uses: docker/login-action@v4
5050
with:
5151
username: ${{ secrets.DOCKERHUB_USERNAME }}
5252
password: ${{ secrets.DOCKERHUB_TOKEN }}
5353

5454
- name: Setup Python
55-
uses: actions/setup-python@v6
55+
uses: actions/setup-python@v7
5656
with:
5757
python-version: "3.14"
5858

5959
- name: Build for linux/arm64
60-
uses: docker/build-push-action@v6
60+
uses: docker/build-push-action@v7
6161
with:
6262
build-args: |
6363
VCS_REF=${{ github.sha }}
@@ -82,7 +82,7 @@ jobs:
8282
runs-on: ubuntu-latest
8383
steps:
8484
- name: Log into Docker Hub
85-
uses: docker/login-action@v3
85+
uses: docker/login-action@v4
8686
with:
8787
username: ${{ secrets.DOCKERHUB_USERNAME }}
8888
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -104,7 +104,7 @@ jobs:
104104
105105
- name: Re-deploy depdendents
106106
if: ${{ github.ref == 'refs/heads/main' }}
107-
uses: actions/github-script@v8
107+
uses: actions/github-script@v9
108108
with:
109109
github-token: ${{ secrets.DEPLOY50_PAT }}
110110
script: |

‎Dockerfile‎

Lines changed: 71 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,37 @@ RUN apt update && \
1818
curl
1919

2020

21-
# Install Java 24.x
22-
# http://jdk.java.net/24/
21+
# Install Go 1.26.x
22+
# https://go.dev/dl/
23+
RUN cd /tmp && \
24+
curl --remote-name --location https://go.dev/dl/go1.26.8.linux-${BUILDARCH}.tar.gz && \
25+
tar xzf go1.26.8.linux-${BUILDARCH}.tar.gz && \
26+
rm --force go1.26.8.linux-${BUILDARCH}.tar.gz && \
27+
mv go /opt/ && \
28+
mkdir --parent /opt/bin && \
29+
ln --symbolic /opt/go/bin/* /opt/bin/ && \
30+
chmod a+rx /opt/bin/*
31+
32+
33+
# Install Java 25.x
34+
# https://jdk.java.net/25/
2335
RUN cd /tmp && \
2436
if [ "$BUILDARCH" = "arm64" ]; then ARCH="aarch64"; else ARCH="x64"; fi && \
25-
curl --remote-name https://download.java.net/java/GA/jdk24.0.2/fdc5d0102fe0414db21410ad5834341f/12/GPL/openjdk-24.0.2_linux-${ARCH}_bin.tar.gz && \
26-
tar xzf openjdk-24.0.2_linux-${ARCH}_bin.tar.gz && \
27-
rm --force openjdk-24.0.2_linux-${ARCH}_bin.tar.gz && \
28-
mv jdk-24.0.2 /opt/jdk && \
37+
curl --remote-name https://download.java.net/java/GA/jdk25.0.2/b1e0dfa218384cb9959bdcb897162d4e/10/GPL/openjdk-25.0.2_linux-${ARCH}_bin.tar.gz && \
38+
tar xzf openjdk-25.0.2_linux-${ARCH}_bin.tar.gz && \
39+
rm --force openjdk-25.0.2_linux-${ARCH}_bin.tar.gz && \
40+
mv jdk-25.0.2 /opt/jdk && \
2941
mkdir --parent /opt/bin && \
3042
ln --symbolic /opt/jdk/bin/* /opt/bin/ && \
3143
chmod a+rx /opt/bin/*
3244

3345

34-
# Install Node.js 22.x
46+
# Install Node.js 24.x
3547
# https://nodejs.dev/en/download/
3648
# https://github.com/tj/n#installation
3749
RUN curl --location https://raw.githubusercontent.com/tj/n/master/bin/n --output /usr/local/bin/n && \
3850
chmod a+x /usr/local/bin/n && \
39-
n 22.21.1
51+
n 24.20.0
4052

4153

4254
# Install Node.js packages
@@ -64,22 +76,22 @@ RUN apt update && \
6476
# Install Python 3.13.x
6577
# https://www.python.org/downloads/
6678
RUN cd /tmp && \
67-
curl --remote-name https://www.python.org/ftp/python/3.13.11/Python-3.13.11.tgz && \
68-
tar xzf Python-3.13.11.tgz && \
69-
rm --force Python-3.13.11.tgz && \
70-
cd Python-3.13.11 && \
79+
curl --remote-name https://www.python.org/ftp/python/3.13.15/Python-3.13.15.tgz && \
80+
tar xzf Python-3.13.15.tgz && \
81+
rm --force Python-3.13.15.tgz && \
82+
cd Python-3.13.15 && \
7183
CFLAGS="-Os" ./configure --disable-static --enable-optimizations --enable-shared --with-lto --without-tests && \
7284
./configure && \
7385
make && \
7486
make install && \
7587
cd .. && \
76-
rm --force --recursive Python-3.13.11 && \
88+
rm --force --recursive Python-3.13.15 && \
7789
ln --relative --symbolic /usr/local/bin/pip3 /usr/local/bin/pip && \
7890
ln --relative --symbolic /usr/local/bin/python3 /usr/local/bin/python && \
7991
pip3 install --no-cache-dir --upgrade pip
8092

8193

82-
# Install Ruby 3.4.x
94+
# Install Ruby 4.0.x
8395
# https://www.ruby-lang.org/en/downloads/
8496
# https://bugs.ruby-lang.org/issues/20085#note-5
8597
RUN apt update && \
@@ -89,42 +101,42 @@ RUN apt update && \
89101
apt clean && \
90102
rm --force --recursive /var/lib/apt/lists/* && \
91103
cd /tmp && \
92-
curl https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.8.tar.gz --output ruby-3.4.8.tar.gz && \
93-
tar xzf ruby-3.4.8.tar.gz && \
94-
rm --force ruby-3.4.8.tar.gz && \
95-
cd ruby-3.4.8 && \
104+
curl https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.6.tar.gz --output ruby-4.0.6.tar.gz && \
105+
tar xzf ruby-4.0.6.tar.gz && \
106+
rm --force ruby-4.0.6.tar.gz && \
107+
cd ruby-4.0.6 && \
96108
if [ "$BUILDARCH" = "arm64" ]; then ASFLAGS=-mbranch-protection=pac-ret; else ASFLAGS=; fi && \
97109
ASFLAGS=${ASFLAGS} CFLAGS=-Os ./configure --disable-install-doc --enable-load-relative && \
98110
make && \
99111
make install && \
100112
cd .. && \
101-
rm --force --recursive ruby-3.4.8
113+
rm --force --recursive ruby-4.0.6
102114

103115

104116
# Install Ruby packages
105117
RUN echo "gem: --no-document" > /etc/gemrc && \
106-
gem install \
118+
gem update --system 4.0.20 && \
119+
gem install --force \
107120
jekyll \
108-
minitest `# So that Bundler needn't install` \
109121
pygments.rb \
110122
specific_install && \
111123
gem specific_install https://github.com/cs50/jekyll-theme-cs50 develop && \
112124
gem cleanup
113125

114126

115-
# Install SQLite 3.4x
127+
# Install SQLite 3.5x
116128
# https://www.sqlite.org/download.html
117129
# https://www.sqlite.org/howtocompile.html#compiling_the_command_line_interface
118130
COPY shell.c.patch /tmp
119131
RUN cd /tmp && \
120-
curl --remote-name https://www.sqlite.org/2025/sqlite-amalgamation-3510100.zip && \
121-
unzip sqlite-amalgamation-3510100.zip && \
122-
rm --force sqlite-amalgamation-3510100.zip && \
123-
cd sqlite-amalgamation-3510100 && \
132+
curl --remote-name https://www.sqlite.org/2026/sqlite-amalgamation-3530400.zip && \
133+
unzip sqlite-amalgamation-3530400.zip && \
134+
rm --force sqlite-amalgamation-3530400.zip && \
135+
cd sqlite-amalgamation-3530400 && \
124136
patch shell.c < /tmp/shell.c.patch && \
125137
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 && \
126138
cd .. && \
127-
rm --force --recursive sqlite-amalgamation-3510100 && \
139+
rm --force --recursive sqlite-amalgamation-3530400 && \
128140
rm --force /tmp/shell.c.patch
129141

130142

@@ -229,6 +241,30 @@ RUN curl https://packagecloud.io/install/repositories/cs50/repo/script.deb.sh |
229241
libcs50
230242

231243

244+
# Install Python packages
245+
RUN pip3 install --no-cache-dir \
246+
autopep8 \
247+
cachelib \
248+
"check50<4" \
249+
cli50 \
250+
compare50 \
251+
cs50==9.5.0 \
252+
Flask \
253+
Flask-Session \
254+
pytest \
255+
render50 \
256+
setuptools \
257+
"style50>=3.0.0" \
258+
"submit50<4" \
259+
lib50
260+
261+
262+
# Install BFG
263+
# https://rtyley.github.io/bfg-repo-cleaner/
264+
RUN mkdir --parents /opt/share && \
265+
curl --location https://repo1.maven.org/maven2/com/madgag/bfg/1.15.0/bfg-1.15.0.jar --output /opt/share/bfg.jar
266+
267+
232268
# Install Docker CLI
233269
# https://docs.docker.com/engine/install/ubuntu/
234270
# https://docs.docker.com/engine/install/linux-postinstall/
@@ -247,29 +283,15 @@ RUN apt update && \
247283
groupadd docker
248284

249285

250-
# Install BFG
251-
# https://rtyley.github.io/bfg-repo-cleaner/
252-
RUN mkdir --parents /opt/share && \
253-
curl --location https://repo1.maven.org/maven2/com/madgag/bfg/1.15.0/bfg-1.15.0.jar --output /opt/share/bfg.jar
254-
286+
# Install GitHub CLI
287+
# https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian
288+
RUN cd /tmp && \
289+
curl --remote-name https://cli.github.com/packages/githubcli-archive-keyring.gpg && \
290+
mv githubcli-archive-keyring.gpg /etc/apt/keyrings/ && \
291+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null && \
292+
apt update && \
293+
apt install gh --no-install-recommends --no-install-suggests --yes
255294

256-
# Install Python packages
257-
RUN pip3 install --no-cache-dir \
258-
autopep8 \
259-
cachelib \
260-
"check50<4" \
261-
cli50 \
262-
compare50 \
263-
cs50==9.4.0 \
264-
Flask \
265-
Flask-Session \
266-
pytest \
267-
render50 \
268-
setuptools \
269-
"style50>2.10.0" \
270-
"submit50<4" \
271-
lib50
272-
273295

274296
# Copy files to image
275297
COPY ./etc /etc

‎etc/profile.d/cli.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ if [ `id -u` -ne 0 ]; then
4545

4646
# Make
4747
export CC="clang"
48-
export CFLAGS="-ferror-limit=1 -gdwarf-4 -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-gnu-folding-constant -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-but-set-variable -Wshadow"
48+
export CFLAGS="-ferror-limit=1 -gdwarf-4 -ggdb3 -O0 -std=c23 -Wall -Werror -Wextra -Wno-gnu-folding-constant -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-but-set-variable -Wshadow"
4949
export LDLIBS="-lcrypt -lcs50 -lm"
5050

5151
# Node.js

‎shell.c.patch‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
@@ -33659,10 +33659,6 @@
1+
@@ -37167,10 +37167,6 @@
22
if( stdin_is_interactive ){
33
char *zHome;
44
char *zHistory;
5-
- sqlite3_fprintf(stdout,
5+
- cli_printf(stdout,
66
- "SQLite version %s %.19s\n" /*extra-version-info*/
77
- "Enter \".help\" for usage hints.\n",
88
- sqlite3_libversion(), sqlite3_sourceid());

0 commit comments

Comments
 (0)