@@ -142,7 +142,10 @@ RUN curl -O https://download.oracle.com/java/24/latest/jdk-24_linux-x64_bin.deb
142142 && rm jdk-24_linux-x64_bin.deb
143143
144144# ## Julia
145- RUN curl -fsSL https://install.julialang.org | sh -s -- -y
145+ RUN curl -fsSL https://install.julialang.org | sh -s -- -y \
146+ && echo 'export PATH="$PATH:/root/.juliaup/bin"' >> /etc/profile \
147+ && echo 'export PATH="$PATH:/root/.juliaup/bin"' >> /root/.bashrc \
148+ && ln -s /root/.juliaup/bin/julia /usr/local/bin/julia
146149
147150# ## Zig
148151RUN curl -fLO https://ziglang.org/download/0.14.0/zig-linux-x86_64-0.14.0.tar.xz \
@@ -214,6 +217,24 @@ RUN npm install --global solc
214217# Q# (Quantum)
215218RUN dotnet tool install -g Microsoft.Quantum.IQSharp
216219
220+ # SelectScript
221+ RUN curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein \
222+ -o /usr/local/bin/lein \
223+ && chmod +x /usr/local/bin/lein \
224+ && git clone --recursive https://github.com/andre-dietrich/SelectScriptC.git \
225+ && cd SelectScriptC \
226+ && make \
227+ && make install
228+
229+ RUN apt-get update && \
230+ apt-get install -y --no-install-recommends \
231+ libobjc-12-dev \
232+ gnustep \
233+ gnustep-devel \
234+ libgnustep-base-dev \
235+ libblocksruntime-dev \
236+ clang
237+
217238# ############################################################################################
218239COPY . /coderunner
219240WORKDIR "/coderunner"
@@ -235,6 +256,32 @@ RUN firejail || true
235256RUN firejail || true
236257RUN firejail || true
237258
259+ # Modula 2 requirement
260+ ENV GM2PATH=/usr/share/gm2
261+
262+ RUN mv /usr/bin/gm2 /usr/bin/gm2.real && \
263+ printf '#!/bin/sh\n exec /usr/bin/gm2.real -g -I. -flibs=pim,iso,cor "$@"\n ' > /usr/bin/gm2 && \
264+ chmod +x /usr/bin/gm2
265+
266+ # Create Objective-C compiler script with GNUstep configuration
267+ RUN printf '#!/bin/bash\n \
268+ if [ $# -lt 1 ]; then\n \
269+ echo "Usage: gobjc source_file [output_name]"\n \
270+ exit 1\n \
271+ fi\n \
272+ \n \
273+ SOURCEFILE="$1"\n \
274+ FILENAME=$(basename -- "$SOURCEFILE")\n \
275+ BASENAME="${FILENAME%%.*}"\n \
276+ \n \
277+ # Use second argument as output name if provided, otherwise use source basename\n \
278+ OUTPUT="${2:-$BASENAME}"\n \
279+ \n \
280+ . /usr/share/GNUstep/Makefiles/GNUstep.sh\n \
281+ gcc -std=gnu11 -x objective-c $(gnustep-config --objc-flags) -o "$OUTPUT" "$SOURCEFILE" $(gnustep-config --base-libs)\n \
282+ ' > /usr/local/bin/gobjc && \
283+ chmod +x /usr/local/bin/gobjc
284+
238285EXPOSE 4000
239286
240- CMD python3 -m server --host 0.0.0.0 --port $PORT
287+ ENTRYPOINT [ " python3" , "-m" , " server" , " --host" , " 0.0.0.0" , " --port" , "4000" ]
0 commit comments