|
| 1 | +# ref: https://hub.docker.com/_/fedora |
| 2 | +FROM fedora:42 AS env |
| 3 | + |
| 4 | +############# |
| 5 | +## SETUP ## |
| 6 | +############# |
| 7 | +RUN dnf -y update \ |
| 8 | +&& dnf -y install git \ |
| 9 | + wget which redhat-lsb-core pkgconfig autoconf libtool zlib-devel \ |
| 10 | +&& dnf -y install @development-tools \ |
| 11 | +&& dnf -y install gcc-c++ cmake \ |
| 12 | +&& dnf clean all |
| 13 | +ENTRYPOINT ["/usr/bin/bash", "-c"] |
| 14 | +CMD ["/usr/bin/bash"] |
| 15 | + |
| 16 | +# Install SWIG |
| 17 | +RUN dnf -y update \ |
| 18 | +&& dnf -y install swig \ |
| 19 | +&& dnf clean all |
| 20 | + |
| 21 | +# Install .Net |
| 22 | +# see: https://docs.microsoft.com/en-us/dotnet/core/install/linux-fedora |
| 23 | +RUN dnf -y update \ |
| 24 | +&& dnf -y install dotnet-sdk-8.0 crypto-policies-scripts \ |
| 25 | +&& dnf clean all |
| 26 | +# https://docs.redhat.com/en/documentation/net/6.0/html/release_notes_for_.net_6.0_rpm_packages/known-issues_release-notes-for-dotnet-rpms |
| 27 | +RUN update-crypto-policies --set DEFAULT:SHA1 |
| 28 | +# Trigger first run experience by running arbitrary cmd |
| 29 | +RUN dotnet --info |
| 30 | + |
| 31 | +# Install Java |
| 32 | +RUN dnf -y update \ |
| 33 | +&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \ |
| 34 | +&& dnf clean all |
| 35 | +ENV JAVA_HOME=/usr/lib/jvm/java-openjdk |
| 36 | + |
| 37 | +# Install Python |
| 38 | +RUN dnf -y update \ |
| 39 | +&& dnf -y install python3 python3-devel python3-pip \ |
| 40 | +&& dnf clean all |
| 41 | +RUN python3 -m pip install absl-py mypy mypy-protobuf |
| 42 | + |
| 43 | +################ |
| 44 | +## OR-TOOLS ## |
| 45 | +################ |
| 46 | +FROM env AS devel |
| 47 | +WORKDIR /root |
| 48 | +# Copy the snk key |
| 49 | +COPY or-tools.snk /root/or-tools.snk |
| 50 | +ENV DOTNET_SNK=/root/or-tools.snk |
| 51 | + |
| 52 | +ARG SRC_GIT_BRANCH |
| 53 | +ENV SRC_GIT_BRANCH ${SRC_GIT_BRANCH:-main} |
| 54 | +ARG SRC_GIT_SHA1 |
| 55 | +ENV SRC_GIT_SHA1 ${SRC_GIT_SHA1:-unknown} |
| 56 | + |
| 57 | +ARG OR_TOOLS_PATCH |
| 58 | +ENV OR_TOOLS_PATCH ${OR_TOOLS_PATCH:-9999} |
| 59 | + |
| 60 | +# Download sources |
| 61 | +# use SRC_GIT_SHA1 to modify the command |
| 62 | +# i.e. avoid docker reusing the cache when new commit is pushed |
| 63 | +RUN git clone -b "${SRC_GIT_BRANCH}" --single-branch --depth=1 https://github.com/google/or-tools \ |
| 64 | +&& [[ $(cd or-tools && git rev-parse --verify HEAD) == ${SRC_GIT_SHA1} ]] |
| 65 | +WORKDIR /root/or-tools |
| 66 | + |
| 67 | +# C++ |
| 68 | +## build |
| 69 | +FROM devel AS cpp_build |
| 70 | +RUN make detect_cpp \ |
| 71 | +&& make cpp JOBS=8 |
| 72 | +## archive |
| 73 | +FROM cpp_build AS cpp_archive |
| 74 | +RUN make archive_cpp |
| 75 | + |
| 76 | +# .Net |
| 77 | +## build |
| 78 | +FROM cpp_build AS dotnet_build |
| 79 | +ENV USE_DOTNET_CORE_31=ON |
| 80 | +RUN make detect_dotnet \ |
| 81 | +&& make dotnet JOBS=8 |
| 82 | +## archive |
| 83 | +FROM dotnet_build AS dotnet_archive |
| 84 | +RUN make archive_dotnet |
| 85 | + |
| 86 | +# Java |
| 87 | +## build |
| 88 | +FROM cpp_build AS java_build |
| 89 | +RUN make detect_java \ |
| 90 | +&& make java JOBS=8 |
| 91 | +## archive |
| 92 | +FROM java_build AS java_archive |
| 93 | +RUN make archive_java |
| 94 | + |
| 95 | +# Python |
| 96 | +## build |
| 97 | +FROM cpp_build AS python_build |
| 98 | +RUN make detect_python \ |
| 99 | +&& make python JOBS=8 |
| 100 | +## archive |
| 101 | +FROM python_build AS python_archive |
| 102 | +RUN make archive_python |
0 commit comments