diff --git a/Dockerfile b/Dockerfile index fbf8add..624994b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,4 +34,4 @@ COPY --from=build /opt/myriad . EXPOSE 8081 -ENTRYPOINT ["./myriad"] \ No newline at end of file +CMD ["./myriad"] \ No newline at end of file diff --git a/Dockerfile.release b/Dockerfile.release index e5e0c43..95b951b 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -16,4 +16,4 @@ COPY --from=build /tmp/myriad . EXPOSE 8081 -ENTRYPOINT ["./myriad"] \ No newline at end of file +CMD ["./myriad"] \ No newline at end of file diff --git a/languages/brainfuck/Dockerfile b/languages/brainfuck/Dockerfile index 34b74b3..067f601 100644 --- a/languages/brainfuck/Dockerfile +++ b/languages/brainfuck/Dockerfile @@ -1,12 +1,12 @@ FROM alpine AS build +RUN apk update && apk add g++ COPY bf.cpp . -RUN apk add --no-cache g++ && \ - g++ bf.cpp -o bf +RUN g++ bf.cpp -o bf FROM alpine LABEL author="1Computer1" -RUN apk add --no-cache libstdc++ +RUN apk update && apk add libstdc++ COPY --from=build bf /usr/local/bin/ COPY run.sh /var/run/ diff --git a/languages/c/Dockerfile b/languages/c/Dockerfile index 862b281..1324766 100644 --- a/languages/c/Dockerfile +++ b/languages/c/Dockerfile @@ -1,6 +1,7 @@ FROM alpine LABEL author="1Computer1" -RUN apk add --no-cache gcc libc-dev +RUN apk update +RUN apk add gcc libc-dev COPY run.sh /var/run/ diff --git a/languages/cpp/Dockerfile b/languages/cpp/Dockerfile index 2242843..37bc37b 100644 --- a/languages/cpp/Dockerfile +++ b/languages/cpp/Dockerfile @@ -1,6 +1,7 @@ FROM alpine LABEL author="1Computer1" -RUN apk add --no-cache g++ +RUN apk update +RUN apk add g++ COPY run.sh /var/run/ diff --git a/languages/d/Dockerfile b/languages/d/Dockerfile new file mode 100644 index 0000000..4bb50e1 --- /dev/null +++ b/languages/d/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine +LABEL author="SunRed" + +RUN apk add --no-cache musl-dev gcc ldc + +COPY run.sh /var/run/ diff --git a/languages/d/run.sh b/languages/d/run.sh new file mode 100644 index 0000000..ae18bab --- /dev/null +++ b/languages/d/run.sh @@ -0,0 +1,2 @@ +cat > program.d +ldc2 program.d -of program && ./program diff --git a/languages/haskell/Dockerfile b/languages/haskell/Dockerfile index 6039727..ad6b169 100644 --- a/languages/haskell/Dockerfile +++ b/languages/haskell/Dockerfile @@ -1,17 +1,14 @@ -FROM debian:stable-slim +FROM debian:stretch LABEL author="1Computer1" ENV LANG C.UTF-8 RUN apt-get update && \ - apt-get install -y --no-install-recommends gnupg dirmngr ca-certificates && \ - echo 'deb https://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \ + apt-get install -y --no-install-recommends gnupg dirmngr && \ + echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574 && \ apt-get update && \ - apt-get install -y --no-install-recommends ghc-9.0.1 && \ - apt-get purge -y gnupg dirmngr ca-certificates && \ - apt-get autoremove -y && \ - apt-get autoclean -y + apt-get install -y --no-install-recommends ghc-8.6.5 -ENV PATH /opt/ghc/9.0.1/bin:$PATH +ENV PATH /opt/ghc/8.6.5/bin:$PATH COPY run.sh /var/run/ diff --git a/languages/idris/Dockerfile b/languages/idris/Dockerfile index 418b58f..04b8d8f 100644 --- a/languages/idris/Dockerfile +++ b/languages/idris/Dockerfile @@ -2,7 +2,6 @@ FROM alpine:latest RUN echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ apk update && \ - apk add idris@testing && \ - rm -rf /var/cache/apk/* + apk add idris@testing COPY run.sh /var/run/ diff --git a/languages/java/Dockerfile b/languages/java/Dockerfile index e78541e..dcc0975 100644 --- a/languages/java/Dockerfile +++ b/languages/java/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:17-alpine +FROM openjdk:13-alpine LABEL author="1Computer1" COPY run.sh /var/run/ diff --git a/languages/javascript/run.sh b/languages/javascript/run.sh index faceee1..6e087ee 100644 --- a/languages/javascript/run.sh +++ b/languages/javascript/run.sh @@ -1 +1 @@ -cat | node +cat | node -p diff --git a/languages/lua/Dockerfile b/languages/lua/Dockerfile index c15ec01..0835675 100644 --- a/languages/lua/Dockerfile +++ b/languages/lua/Dockerfile @@ -1,5 +1,6 @@ FROM alpine -RUN apk add --no-cache lua5.3 +RUN apk update +RUN apk add lua5.3 COPY run.sh /var/run/ diff --git a/languages/setlx/Dockerfile b/languages/setlx/Dockerfile new file mode 100644 index 0000000..ff541cd --- /dev/null +++ b/languages/setlx/Dockerfile @@ -0,0 +1,17 @@ +FROM openjdk:17-alpine +LABEL author="SunRed" + +COPY setlX /usr/local/bin/ +COPY run.sh /var/run/ + +RUN apk add --no-cache curl unzip bash && \ + curl -O https://download.randoom.org/setlX/pc/setlX_v2-7-2.binary_only.zip && \ + unzip -d setlx setlX_v2-7-2.binary_only.zip && \ + rm -f setlX_v2-7-2.binary_only.zip && \ + mkdir -p /usr/local/setlX && \ + mv setlx/setlX*.jar /usr/local/setlX && \ + mkdir -p /usr/local/setlXlibrary && \ + mv setlx/setlXlibrary/* /usr/local/setlXlibrary && \ + chmod +x /usr/local/bin/setlX && \ + rm -rf setlx && \ + apk del --no-cache curl unzip diff --git a/languages/setlx/run.sh b/languages/setlx/run.sh new file mode 100644 index 0000000..b8c4ec3 --- /dev/null +++ b/languages/setlx/run.sh @@ -0,0 +1,2 @@ +cat > program.stlx +bash /usr/local/bin/setlX ./program.stlx diff --git a/languages/setlx/setlX b/languages/setlx/setlX new file mode 100644 index 0000000..67a8e00 --- /dev/null +++ b/languages/setlx/setlX @@ -0,0 +1,65 @@ +#!/bin/bash +# +# +# launcher script for the setlX interpreter on Unix-like systems +# +# + +# insert path to the folder where you copied the jar files here +setlXJarDirectory="/usr/local/setlX/" + +# insert full path to library location here +setlXlibraryPath="/usr/local/setlXlibrary/" + +############################## additional options ############################## +javaParameters="" + +# uncomment to force execution in 64 bit mode +#javaParameters="$javaParameters -d64" + +# uncomment to execute with increased memory size (6GB) (>2GB needs 64 Bit mode!) +#javaParameters="$javaParameters -Xmx6144m" + +# uncomment to execute with increased stack size +#javaParameters="$javaParameters -Xss48m" + +################################################################################ + +if [ -n "$OVERRIDE_setlXJarDirectory" ] + then + setlXJarDirectory="$OVERRIDE_setlXJarDirectory" +fi +if [ -n "$OVERRIDE_setlXjavaParameters" ] + then + javaParameters="$OVERRIDE_setlXjavaParameters" +fi +if [ -z "$SETLX_LIBRARY_PATH" ] + then + export SETLX_LIBRARY_PATH="$setlXlibraryPath" +fi + +java_call="java" + +if [[ -z "$INSIDE_EMACS" && $(which rlwrap > /dev/null 2>&1; echo $?) -eq 0 ]] + then + java_call="rlwrap -C $(basename $0) $java_call" +fi + +jarFiles="" +while read -r -d $'\0' jarname + do + if [ -n "$jarFiles" ] + then + jarFiles="$jarFiles:" + fi + jarFiles="$jarFiles${jarname#./}" +done < <( find "$setlXJarDirectory" -maxdepth 1 -name "*.jar" -print0 ) + +if [ -n "$jarFiles" ] + then + $java_call -cp "$jarFiles:$CLASSPATH" $javaParameters org.randoom.setlx.pc.ui.SetlX "$@" + exit $? +else + echo "The setlX jar files cannot be found!" + exit 1 +fi diff --git a/languages/typescript/run.sh b/languages/typescript/run.sh index 4fccb05..4d12a04 100644 --- a/languages/typescript/run.sh +++ b/languages/typescript/run.sh @@ -1,4 +1,4 @@ cat > program.ts tsc --lib DOM,ESNext --target ES2019 --strict \ --skipLibCheck --types /usr/local/share/.config/yarn/global/node_modules/@types/node program.ts \ - && cat program.js | node + && cat program.js | node -p diff --git a/src/Myriad/Docker.hs b/src/Myriad/Docker.hs index 3e67655..e94b809 100644 --- a/src/Myriad/Docker.hs +++ b/src/Myriad/Docker.hs @@ -40,19 +40,13 @@ data EvalResult buildImage :: Language -> Myriad () buildImage lang = do env <- ask - logInfo ["Checking for image ", cs $ imageName lang] - res <- try $ exec ["docker images -q ", imageName lang] - case res of - Left (SomeException err) -> logError ["An exception occured when checking for image ", cs $ imageName lang, ":\n", cs $ show err] - Right s -> do - when (BL.null s) . void $ do -- If string is empty that means the image does not yet exist - logInfo ["Building image ", cs $ imageName lang] - exec_ ["docker build -t ", imageName lang, " ", cs (env ^. #languagesDir) cs (lang ^. #name)] - logInfo ["Built image ", cs $ imageName lang] - setupQSems - when (env ^. #config % #prepareContainers) . void $ setupContainer lang + logInfo ["Building image ", cs $ imageName lang] + exec_ ["docker build -t ", imageName lang, " ", cs (env ^. #languagesDir) cs (lang ^. #name)] + setupQSems + logInfo ["Built image ", cs $ imageName lang] + when (env ^. #config % #prepareContainers) . void $ setupContainer lang where - setupQSems :: Myriad () + setupQSems :: Myriad () setupQSems = do env <- ask csem <- newQSem 1 -- We only want one container to be set up at a time