Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 57 additions & 76 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
# Check for latest version here: https://hub.docker.com/_/buildpack-deps?tab=tags&page=1&name=buster&ordering=last_updated
# This is just a snapshot of buildpack-deps:buster that was last updated on 2019-12-28.
FROM judge0/buildpack-deps:buster-2019-12-28
FROM buildpack-deps:bullseye

# Check for latest version here: https://gcc.gnu.org/releases.html, https://ftpmirror.gnu.org/gcc
ENV GCC_VERSIONS \
7.4.0 \
8.3.0 \
9.2.0
ENV GCC_VERSIONS="7.4.0 8.3.0 9.2.0"
RUN set -xe && \
for VERSION in $GCC_VERSIONS; do \
curl -fSsL "https://ftpmirror.gnu.org/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz" -o /tmp/gcc-$VERSION.tar.gz && \
Expand All @@ -23,8 +18,10 @@ RUN set -xe && \
else \
ENABLE_FORTRAN=""; \
fi; \
# libsanitizer fails to build against newer glibc shipped with Bullseye, so keep the core compiler build lean.
/tmp/gcc-$VERSION/configure \
--disable-multilib \
--disable-libsanitizer \
--enable-languages=c,c++$ENABLE_FORTRAN \
--prefix=/usr/local/gcc-$VERSION && \
make -j$(nproc) && \
Expand All @@ -33,8 +30,7 @@ RUN set -xe && \
done

# Check for latest version here: https://www.ruby-lang.org/en/downloads
ENV RUBY_VERSIONS \
2.7.0
ENV RUBY_VERSIONS="2.7.0"
RUN set -xe && \
for VERSION in $RUBY_VERSIONS; do \
curl -fSsL "https://cache.ruby-lang.org/pub/ruby/${VERSION%.*}/ruby-$VERSION.tar.gz" -o /tmp/ruby-$VERSION.tar.gz && \
Expand All @@ -51,9 +47,7 @@ RUN set -xe && \
done

# Check for latest version here: https://www.python.org/downloads
ENV PYTHON_VERSIONS \
3.8.1 \
2.7.17
ENV PYTHON_VERSIONS="3.8.1 2.7.17"
RUN set -xe && \
for VERSION in $PYTHON_VERSIONS; do \
curl -fSsL "https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz" -o /tmp/python-$VERSION.tar.xz && \
Expand All @@ -69,8 +63,7 @@ RUN set -xe && \
done

# Check for latest version here: https://ftp.gnu.org/gnu/octave
ENV OCTAVE_VERSIONS \
5.1.0
ENV OCTAVE_VERSIONS="5.1.0"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends gfortran libblas-dev liblapack-dev libpcre3-dev && \
Expand Down Expand Up @@ -99,8 +92,7 @@ RUN set -xe && \
ln -s /usr/local/openjdk13/bin/jar /usr/local/bin/jar

# Check for latest version here: https://ftpmirror.gnu.org/bash
ENV BASH_VERSIONS \
5.0
ENV BASH_VERSIONS="5.0"
RUN set -xe && \
for VERSION in $BASH_VERSIONS; do \
curl -fSsL "https://ftpmirror.gnu.org/bash/bash-$VERSION.tar.gz" -o /tmp/bash-$VERSION.tar.gz && \
Expand All @@ -116,11 +108,10 @@ RUN set -xe && \
done

# Check for latest version here: https://www.freepascal.org/download.html
ENV FPC_VERSIONS \
3.0.4
ENV FPC_VERSIONS="3.0.4"
RUN set -xe && \
for VERSION in $FPC_VERSIONS; do \
curl -fSsL "ftp://ftp.freepascal.org/fpc/dist/$VERSION/x86_64-linux/fpc-$VERSION.x86_64-linux.tar" -o /tmp/fpc-$VERSION.tar && \
curl -fSsL "https://master.dl.sourceforge.net/project/freepascal/Linux/$VERSION/fpc-$VERSION.x86_64-linux.tar?viasf=1" -o /tmp/fpc-$VERSION.tar && \
mkdir /tmp/fpc-$VERSION && \
tar -xf /tmp/fpc-$VERSION.tar -C /tmp/fpc-$VERSION --strip-components=1 && \
rm /tmp/fpc-$VERSION.tar && \
Expand All @@ -130,8 +121,7 @@ RUN set -xe && \
done

# Check for latest version here: https://www.haskell.org/ghc/download.html
ENV HASKELL_VERSIONS \
8.8.1
ENV HASKELL_VERSIONS="8.8.1"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends libgmp-dev libtinfo5 && \
Expand All @@ -144,13 +134,13 @@ RUN set -xe && \
cd /tmp/ghc-$VERSION && \
./configure \
--prefix=/usr/local/ghc-$VERSION && \
mkdir -p /usr/local/ghc-$VERSION/lib/ghc-$VERSION/latex && \
make -j$(nproc) install && \
rm -rf /tmp/*; \
done

# Check for latest version here: https://www.mono-project.com/download/stable
ENV MONO_VERSIONS \
6.6.0.161
ENV MONO_VERSIONS="6.6.0.161"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends cmake && \
Expand All @@ -161,6 +151,8 @@ RUN set -xe && \
tar -xf /tmp/mono-$VERSION.tar.xz -C /tmp/mono-$VERSION --strip-components=1 && \
rm /tmp/mono-$VERSION.tar.xz && \
cd /tmp/mono-$VERSION && \
export PYTHON=/usr/local/python-2.7.17/bin/python2.7 && \
export PATH="/usr/local/python-2.7.17/bin:$PATH" && \
./configure \
--prefix=/usr/local/mono-$VERSION && \
make -j$(nproc) && \
Expand All @@ -169,25 +161,24 @@ RUN set -xe && \
done

# Check for latest version here: https://nodejs.org/en
ENV NODE_VERSIONS \
12.14.0
ENV NODE_VERSIONS="12.14.0"
RUN set -xe && \
for VERSION in $NODE_VERSIONS; do \
curl -fSsL "https://nodejs.org/dist/v$VERSION/node-v$VERSION.tar.gz" -o /tmp/node-$VERSION.tar.gz && \
mkdir /tmp/node-$VERSION && \
tar -xf /tmp/node-$VERSION.tar.gz -C /tmp/node-$VERSION --strip-components=1 && \
rm /tmp/node-$VERSION.tar.gz && \
cd /tmp/node-$VERSION && \
export PYTHON=/usr/local/python-2.7.17/bin/python2.7 && \
export PATH="/usr/local/python-2.7.17/bin:$PATH" && \
./configure \
--prefix=/usr/local/node-$VERSION && \
make -j$(nproc) && \
make -j$(nproc) install && \
rm -rf /tmp/*; \
done

# Check for latest version here: https://github.com/erlang/otp/releases
ENV ERLANG_VERSIONS \
22.2
ENV ERLANG_VERSIONS="22.2"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends unzip && \
Expand All @@ -198,6 +189,8 @@ RUN set -xe && \
tar -xf /tmp/erlang-$VERSION.tar.gz -C /tmp/erlang-$VERSION --strip-components=1 && \
rm /tmp/erlang-$VERSION.tar.gz && \
cd /tmp/erlang-$VERSION && \
export CC="gcc -fcommon" && \
export CFLAGS="${CFLAGS:--O2 -g} -fcommon" && \
./otp_build autoconf && \
./configure \
--prefix=/usr/local/erlang-$VERSION && \
Expand All @@ -207,9 +200,8 @@ RUN set -xe && \
done; \
ln -s /usr/local/erlang-22.2/bin/erl /usr/local/bin/erl

# Check for latest version here: https://github.com/elixir-lang/elixir/releases
ENV ELIXIR_VERSIONS \
1.9.4
# # Check for latest version here: https://github.com/elixir-lang/elixir/releases
ENV ELIXIR_VERSIONS="1.9.4"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends unzip && \
Expand All @@ -221,8 +213,7 @@ RUN set -xe && \
done

# Check for latest version here: https://www.rust-lang.org
ENV RUST_VERSIONS \
1.40.0
ENV RUST_VERSIONS="1.40.0"
RUN set -xe && \
for VERSION in $RUST_VERSIONS; do \
curl -fSsL "https://static.rust-lang.org/dist/rust-$VERSION-x86_64-unknown-linux-gnu.tar.gz" -o /tmp/rust-$VERSION.tar.gz && \
Expand All @@ -237,8 +228,7 @@ RUN set -xe && \
done

# Check for latest version here: https://golang.org/dl
ENV GO_VERSIONS \
1.13.5
ENV GO_VERSIONS="1.13.5"
RUN set -xe && \
for VERSION in $GO_VERSIONS; do \
curl -fSsL "https://storage.googleapis.com/golang/go$VERSION.linux-amd64.tar.gz" -o /tmp/go-$VERSION.tar.gz && \
Expand All @@ -248,26 +238,26 @@ RUN set -xe && \
done

# Check for latest version here: https://sourceforge.net/projects/fbc/files/Binaries%20-%20Linux
ENV FBC_VERSIONS \
1.07.1
ENV FBC_VERSIONS="1.07.3"
RUN set -xe && \
for VERSION in $FBC_VERSIONS; do \
curl -fSsL "https://downloads.sourceforge.net/project/fbc/Binaries%20-%20Linux/FreeBASIC-$VERSION-linux-x86_64.tar.gz" -o /tmp/fbc-$VERSION.tar.gz && \
curl -fSsL "https://sourceforge.net/projects/fbc/files/FreeBASIC-$VERSION/Binaries-Linux/FreeBASIC-$VERSION-linux-x86_64.tar.xz/download" -o /tmp/fbc-$VERSION.tar.gz && \
mkdir /usr/local/fbc-$VERSION && \
tar -xf /tmp/fbc-$VERSION.tar.gz -C /usr/local/fbc-$VERSION --strip-components=1 && \
rm -rf /tmp/*; \
done

# Check for latest version here: https://github.com/ocaml/ocaml/releases
ENV OCAML_VERSIONS \
4.09.0
ENV OCAML_VERSIONS="4.09.0"
RUN set -xe && \
for VERSION in $OCAML_VERSIONS; do \
curl -fSsL "https://github.com/ocaml/ocaml/archive/$VERSION.tar.gz" -o /tmp/ocaml-$VERSION.tar.gz && \
mkdir /tmp/ocaml-$VERSION && \
tar -xf /tmp/ocaml-$VERSION.tar.gz -C /tmp/ocaml-$VERSION --strip-components=1 && \
rm /tmp/ocaml-$VERSION.tar.gz && \
cd /tmp/ocaml-$VERSION && \
export CC="gcc -fcommon" && \
export CFLAGS="$CFLAGS -fcommon" && \
./configure \
-prefix /usr/local/ocaml-$VERSION \
--disable-ocamldoc --disable-debugger && \
Expand All @@ -277,8 +267,7 @@ RUN set -xe && \
done

# Check for latest version here: https://www.php.net/downloads
ENV PHP_VERSIONS \
7.4.1
ENV PHP_VERSIONS="7.4.1"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends bison re2c && \
Expand All @@ -298,8 +287,7 @@ RUN set -xe && \
done

# Check for latest version here: https://dlang.org/download.html#dmd
ENV D_VERSIONS \
2.089.1
ENV D_VERSIONS="2.089.1"
RUN set -xe && \
for VERSION in $D_VERSIONS; do \
curl -fSsL "http://downloads.dlang.org/releases/2.x/$VERSION/dmd.$VERSION.linux.tar.xz" -o /tmp/d-$VERSION.tar.gz && \
Expand All @@ -310,20 +298,21 @@ RUN set -xe && \
done

# Check for latest version here: https://www.lua.org/download.html
ENV LUA_VERSIONS \
5.3.5
ENV LUA_VERSIONS="5.3.5"
RUN set -xe && \
for VERSION in $LUA_VERSIONS; do \
curl -fSsL "https://downloads.sourceforge.net/project/luabinaries/$VERSION/Tools%20Executables/lua-${VERSION}_Linux44_64_bin.tar.gz" -o /tmp/lua-$VERSION.tar.gz && \
mkdir /usr/local/lua-$VERSION && \
tar -xf /tmp/lua-$VERSION.tar.gz -C /usr/local/lua-$VERSION && \
curl -fSsL "https://www.lua.org/ftp/lua-$VERSION.tar.gz" -o /tmp/lua-$VERSION.tar.gz && \
mkdir /tmp/lua-$VERSION && \
tar -xf /tmp/lua-$VERSION.tar.gz -C /tmp/lua-$VERSION --strip-components=1 && \
rm /tmp/lua-$VERSION.tar.gz && \
cd /tmp/lua-$VERSION && \
make linux && \
make INSTALL_TOP=/usr/local/lua-$VERSION install && \
rm -rf /tmp/*; \
done; \
ln -s /lib/x86_64-linux-gnu/libreadline.so.7 /lib/x86_64-linux-gnu/libreadline.so.6
done

# Check for latest version here: https://github.com/microsoft/TypeScript/releases
ENV TYPESCRIPT_VERSIONS \
3.7.4
ENV TYPESCRIPT_VERSIONS="3.7.4"
RUN set -xe && \
curl -fSsL "https://deb.nodesource.com/setup_12.x" | bash - && \
apt-get update && \
Expand All @@ -334,8 +323,7 @@ RUN set -xe && \
done

# Check for latest version here: https://nasm.us
ENV NASM_VERSIONS \
2.14.02
ENV NASM_VERSIONS="2.14.02"
RUN set -xe && \
for VERSION in $NASM_VERSIONS; do \
curl -fSsL "https://www.nasm.us/pub/nasm/releasebuilds/$VERSION/nasm-$VERSION.tar.gz" -o /tmp/nasm-$VERSION.tar.gz && \
Expand All @@ -354,11 +342,10 @@ RUN set -xe && \
done

# Check for latest version here: http://gprolog.org/#download
ENV GPROLOG_VERSIONS \
1.4.5
ENV GPROLOG_VERSIONS="1.5.0"
RUN set -xe && \
for VERSION in $GPROLOG_VERSIONS; do \
curl -fSsL "http://gprolog.org/gprolog-$VERSION.tar.gz" -o /tmp/gprolog-$VERSION.tar.gz && \
curl -fSsL "https://ftp.gnu.org/gnu/gprolog/gprolog-$VERSION.tar.gz" -o /tmp/gprolog-$VERSION.tar.gz && \
mkdir /tmp/gprolog-$VERSION && \
tar -xf /tmp/gprolog-$VERSION.tar.gz -C /tmp/gprolog-$VERSION --strip-components=1 && \
rm /tmp/gprolog-$VERSION.tar.gz && \
Expand All @@ -371,8 +358,7 @@ RUN set -xe && \
done

# Check for latest version here: http://www.sbcl.org/platform-table.html
ENV SBCL_VERSIONS \
2.0.0
ENV SBCL_VERSIONS="2.0.0"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends bison re2c && \
Expand All @@ -388,8 +374,7 @@ RUN set -xe && \
done

# Check for latest version here: https://ftp.gnu.org/gnu/gnucobol
ENV COBOL_VERSIONS \
2.2
ENV COBOL_VERSIONS="2.2"
RUN set -xe && \
for VERSION in $COBOL_VERSIONS; do \
curl -fSsL "https://ftp.gnu.org/gnu/gnucobol/gnucobol-$VERSION.tar.xz" -o /tmp/gnucobol-$VERSION.tar.xz && \
Expand All @@ -405,8 +390,7 @@ RUN set -xe && \
done

# Check for latest version here: https://swift.org/download
ENV SWIFT_VERSIONS \
5.2.3
ENV SWIFT_VERSIONS="5.2.3"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends libncurses5 && \
Expand All @@ -419,8 +403,7 @@ RUN set -xe && \
done

# Check for latest version here: https://kotlinlang.org
ENV KOTLIN_VERSIONS \
1.3.70
ENV KOTLIN_VERSIONS="1.3.70"
RUN set -xe && \
for VERSION in $KOTLIN_VERSIONS; do \
curl -fSsL "https://github.com/JetBrains/kotlin/releases/download/v$VERSION/kotlin-compiler-$VERSION.zip" -o /tmp/kotlin-$VERSION.zip && \
Expand All @@ -434,7 +417,7 @@ RUN set -xe && \
# I currently use this to add support for Visual Basic.Net but this can be also
# used to support C# language which has been already supported but with manual
# installation of Mono (see above).
ENV MONO_VERSION 6.6.0.161
ENV MONO_VERSION=6.6.0.161
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends gnupg dirmngr && \
Expand All @@ -455,12 +438,11 @@ RUN set -xe && \
# Used for additional compilers for C, C++ and used for Objective-C.
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends clang-7 gnustep-devel && \
apt-get install -y --no-install-recommends clang-11 gnustep-devel && \
rm -rf /var/lib/apt/lists/*

# Check for latest version here: https://cloud.r-project.org/src/base
ENV R_VERSIONS \
4.0.0
ENV R_VERSIONS="4.0.0"
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends libpcre2-dev && \
Expand All @@ -486,8 +468,7 @@ RUN set -xe && \
rm -rf /var/lib/apt/lists/*

# Check for latest version here: https://scala-lang.org
ENV SCALA_VERSIONS \
2.13.2
ENV SCALA_VERSIONS="2.13.2"
RUN set -xe && \
for VERSION in $SCALA_VERSIONS; do \
curl -fSsL "https://downloads.lightbend.com/scala/$VERSION/scala-$VERSION.tgz" -o /tmp/scala-$VERSION.tgz && \
Expand All @@ -499,7 +480,7 @@ RUN set -xe && \
# Support for Perl came "for free" since it is already installed.

# Check for latest version here: https://github.com/clojure/clojure/releases
ENV CLOJURE_VERSION 1.10.1
ENV CLOJURE_VERSION=1.10.1
RUN set -xe && \
apt-get update && \
apt-get install -y --no-install-recommends maven && \
Expand All @@ -522,7 +503,7 @@ RUN set -xe && \

# Check for latest version here: https://groovy.apache.org/download.html
RUN set -xe && \
curl -fSsL "https://dl.bintray.com/groovy/maven/apache-groovy-binary-3.0.3.zip" -o /tmp/groovy.zip && \
curl -fSsL "https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-3.0.3.zip" -o /tmp/groovy.zip && \
unzip /tmp/groovy.zip -d /usr/local && \
rm -rf /tmp/*

Expand All @@ -543,7 +524,7 @@ RUN set -xe && \
git checkout ad39cc4d0fbb577fb545910095c9da5ef8fc9a1a && \
make -j$(nproc) install && \
rm -rf /tmp/*
ENV BOX_ROOT /var/local/lib/isolate
ENV BOX_ROOT=/var/local/lib/isolate

LABEL maintainer="Herman Zvonimir Došilović <hermanz.dosilovic@gmail.com>"
LABEL version="1.4.0"
LABEL version="1.4.1"
Loading