diff --git a/tools/docker/Makefile b/tools/docker/Makefile index dbc2101ee9..58a946d600 100644 --- a/tools/docker/Makefile +++ b/tools/docker/Makefile @@ -96,6 +96,7 @@ help: # @echo -e "\t\t${BOLD}debian-13${RESET} (Trixie)" @echo -e "\t\t${BOLD}debian-12${RESET} (Bookworm)" @echo -e "\t\t${BOLD}debian-11${RESET} (Bullseye)" + @echo -e "\t\t${BOLD}fedora-42${RESET}" @echo -e "\t\t${BOLD}fedora-41${RESET}" @echo -e "\t\t${BOLD}fedora-40${RESET}" @echo -e "\t\t${BOLD}opensuse-leap${RESET} (latest)" @@ -431,7 +432,7 @@ DISTROS := \ alpine-edge \ archlinux \ debian-11 debian-12 debian-sid \ - fedora-40 fedora-41 \ + fedora-40 fedora-41 fedora-42 \ opensuse-leap \ rockylinux-9 \ ubuntu-20.04 ubuntu-22.04 ubuntu-24.04 ubuntu-24.10 diff --git a/tools/docker/images/fedora-42.Dockerfile b/tools/docker/images/fedora-42.Dockerfile new file mode 100644 index 0000000000..33a8524552 --- /dev/null +++ b/tools/docker/images/fedora-42.Dockerfile @@ -0,0 +1,102 @@ +# ref: https://hub.docker.com/_/fedora +FROM fedora:42 AS env + +############# +## SETUP ## +############# +RUN dnf -y update \ +&& dnf -y install git \ + wget which redhat-lsb-core pkgconfig autoconf libtool zlib-devel \ +&& dnf -y install @development-tools \ +&& dnf -y install gcc-c++ cmake \ +&& dnf clean all +ENTRYPOINT ["/usr/bin/bash", "-c"] +CMD ["/usr/bin/bash"] + +# Install SWIG +RUN dnf -y update \ +&& dnf -y install swig \ +&& dnf clean all + +# Install .Net +# see: https://docs.microsoft.com/en-us/dotnet/core/install/linux-fedora +RUN dnf -y update \ +&& dnf -y install dotnet-sdk-8.0 crypto-policies-scripts \ +&& dnf clean all +# 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 +RUN update-crypto-policies --set DEFAULT:SHA1 +# Trigger first run experience by running arbitrary cmd +RUN dotnet --info + +# Install Java +RUN dnf -y update \ +&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \ +&& dnf clean all +ENV JAVA_HOME=/usr/lib/jvm/java-openjdk + +# Install Python +RUN dnf -y update \ +&& dnf -y install python3 python3-devel python3-pip \ +&& dnf clean all +RUN python3 -m pip install absl-py mypy mypy-protobuf + +################ +## OR-TOOLS ## +################ +FROM env AS devel +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 +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 +ENV USE_DOTNET_CORE_31=ON +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 diff --git a/tools/docker/test/fedora-42/cpp.Dockerfile b/tools/docker/test/fedora-42/cpp.Dockerfile new file mode 100644 index 0000000000..80356489bd --- /dev/null +++ b/tools/docker/test/fedora-42/cpp.Dockerfile @@ -0,0 +1,14 @@ +# ref: https://hub.docker.com/_/fedora +FROM fedora:42 + +RUN dnf -y update \ +&& dnf -y install git \ + wget which redhat-lsb-core pkgconfig autoconf libtool zlib-devel \ +&& dnf -y install @development-tools \ +&& dnf -y install gcc-c++ cmake \ +&& dnf clean all + +WORKDIR /root +ADD or-tools_amd64_fedora-42_cpp_v*.tar.gz . + +RUN cd or-tools_*_v* && make test diff --git a/tools/docker/test/fedora-42/dotnet.Dockerfile b/tools/docker/test/fedora-42/dotnet.Dockerfile new file mode 100644 index 0000000000..118af294a8 --- /dev/null +++ b/tools/docker/test/fedora-42/dotnet.Dockerfile @@ -0,0 +1,22 @@ +# ref: https://hub.docker.com/_/fedora +FROM fedora:42 + +RUN dnf -y update \ +&& dnf -y install git \ + wget which redhat-lsb-core pkgconfig autoconf libtool zlib-devel \ +&& dnf -y install @development-tools \ +&& dnf -y install gcc-c++ cmake \ +&& dnf clean all + +# Install .Net +# see: https://docs.microsoft.com/en-us/dotnet/core/install/linux-fedora +RUN dnf -y update \ +&& dnf -y install dotnet-sdk-8.0 \ +&& dnf clean all +# Trigger first run experience by running arbitrary cmd +RUN dotnet --info + +WORKDIR /root +ADD or-tools_amd64_fedora-42_dotnet_v*.tar.gz . + +RUN cd or-tools_*_v* && make test diff --git a/tools/docker/test/fedora-42/java.Dockerfile b/tools/docker/test/fedora-42/java.Dockerfile new file mode 100644 index 0000000000..95666161de --- /dev/null +++ b/tools/docker/test/fedora-42/java.Dockerfile @@ -0,0 +1,20 @@ +# ref: https://hub.docker.com/_/fedora +FROM fedora:42 + +RUN dnf -y update \ +&& dnf -y install git \ + wget which redhat-lsb-core pkgconfig autoconf libtool zlib-devel \ +&& dnf -y install @development-tools \ +&& dnf -y install gcc-c++ cmake \ +&& dnf clean all + +# Java Install +RUN dnf -y update \ +&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \ +&& dnf clean all +ENV JAVA_HOME=/usr/lib/jvm/java-openjdk + +WORKDIR /root +ADD or-tools_amd64_fedora-42_java_v*.tar.gz . + +RUN cd or-tools_*_v* && make test diff --git a/tools/docker/test/fedora-42/python.Dockerfile b/tools/docker/test/fedora-42/python.Dockerfile new file mode 100644 index 0000000000..a5d0bf0ba7 --- /dev/null +++ b/tools/docker/test/fedora-42/python.Dockerfile @@ -0,0 +1,14 @@ +# ref: https://hub.docker.com/_/fedora +FROM fedora:42 + +RUN dnf -y update \ +&& dnf -y install git \ + wget which redhat-lsb-core pkgconfig autoconf libtool zlib-devel \ +&& dnf -y install @development-tools \ +&& dnf -y install gcc-c++ cmake \ +&& dnf clean all + +WORKDIR /root +ADD or-tools_amd64_fedora-42_python_v*.tar.gz . + +RUN cd or-tools_*_v* && make test