105 lines
2.6 KiB
Docker
105 lines
2.6 KiB
Docker
# ref: https://hub.docker.com/_/debian
|
|
FROM debian:sid AS env
|
|
|
|
#############
|
|
## SETUP ##
|
|
#############
|
|
RUN apt update -qq \
|
|
&& apt install -yq \
|
|
git pkg-config wget cmake build-essential zlib1g-dev \
|
|
swig libicu-dev \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
ENTRYPOINT ["/bin/bash", "-c"]
|
|
CMD ["/bin/bash"]
|
|
|
|
# Install .Net
|
|
# see: https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#scripted-install
|
|
RUN wget -q "https://dot.net/v1/dotnet-install.sh" \
|
|
&& chmod a+x dotnet-install.sh \
|
|
&& ./dotnet-install.sh -c 8.0 -i /usr/local/bin
|
|
# Trigger first run experience by running arbitrary cmd
|
|
RUN dotnet --info
|
|
|
|
# Java Install
|
|
RUN apt-get update -qq \
|
|
&& apt-get install -qq default-jdk maven \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
ENV JAVA_HOME=/usr/lib/jvm/default-java
|
|
|
|
# Install Python
|
|
RUN apt-get update -qq \
|
|
&& apt-get install -qq python3 python3-dev python3-pip \
|
|
python3-venv python3-virtualenv \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
RUN python3 -m pip install --break-system-package \
|
|
absl-py mypy mypy-protobuf
|
|
|
|
ENV TZ=America/Los_Angeles
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
|
################
|
|
## OR-TOOLS ##
|
|
################
|
|
FROM env AS devel
|
|
ENV DISTRIBUTION=debian-sid
|
|
|
|
WORKDIR /root
|
|
# Copy the snk key
|
|
COPY or-tools.snk /root/or-tools.snk
|
|
ENV DOTNET_SNK=/root/or-tools.snk
|
|
|
|
ARG SRC_GIT_BRANCH
|
|
ENV SRC_GIT_BRANCH=${SRC_GIT_BRANCH:-main}
|
|
ARG SRC_GIT_SHA1
|
|
ENV SRC_GIT_SHA1 ${SRC_GIT_SHA1:-unknown}
|
|
|
|
ARG OR_TOOLS_PATCH
|
|
ENV OR_TOOLS_PATCH=${OR_TOOLS_PATCH:-9999}
|
|
|
|
# Download sources
|
|
# use SRC_GIT_SHA1 to modify the command
|
|
# i.e. avoid docker reusing the cache when new commit is pushed
|
|
SHELL ["/bin/bash", "-c"]
|
|
RUN git clone -b "${SRC_GIT_BRANCH}" --single-branch --depth=1 https://github.com/google/or-tools \
|
|
&& [[ $(cd or-tools && git rev-parse --verify HEAD) == ${SRC_GIT_SHA1} ]]
|
|
WORKDIR /root/or-tools
|
|
|
|
# C++
|
|
## build
|
|
FROM devel AS cpp_build
|
|
RUN make detect_cpp \
|
|
&& make cpp JOBS=8
|
|
## archive
|
|
FROM cpp_build AS cpp_archive
|
|
RUN make archive_cpp
|
|
|
|
# .Net
|
|
## build
|
|
FROM cpp_build AS dotnet_build
|
|
RUN make detect_dotnet \
|
|
&& make dotnet JOBS=8
|
|
## archive
|
|
FROM dotnet_build AS dotnet_archive
|
|
RUN make archive_dotnet
|
|
|
|
# Java
|
|
## build
|
|
FROM cpp_build AS java_build
|
|
RUN make detect_java \
|
|
&& make java JOBS=8
|
|
## archive
|
|
FROM java_build AS java_archive
|
|
RUN make archive_java
|
|
|
|
# Python
|
|
## build
|
|
FROM cpp_build AS python_build
|
|
RUN make detect_python \
|
|
&& make python JOBS=8
|
|
## archive
|
|
FROM python_build AS python_archive
|
|
RUN make archive_python
|