|  | # Copyright 2020 The IREE Authors | 
|  | # | 
|  | # Licensed under the Apache License v2.0 with LLVM Exceptions. | 
|  | # See https://llvm.org/LICENSE.txt for license information. | 
|  | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  |  | 
|  | # 20.04 | 
|  | FROM ubuntu@sha256:b795f8e0caaaacad9859a9a38fe1c78154f8301fdaf0872eaf1520d66d9c0b98 | 
|  |  | 
|  | SHELL ["/bin/bash", "-e", "-u", "-o", "pipefail", "-c"] | 
|  |  | 
|  | # Disable apt-key parse waring. If someone knows how to do whatever the "proper" | 
|  | # thing is then feel free. The warning complains about parsing apt-key output, | 
|  | # which we're not even doing. | 
|  | ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 | 
|  |  | 
|  | ######## Basic stuff ######## | 
|  | WORKDIR /install-basics | 
|  | COPY build_tools/docker/context/install_basics.sh ./ | 
|  | RUN ./install_basics.sh && rm -rf /install-basics | 
|  |  | 
|  | # Install the oldest supported compiler tools | 
|  | ARG LLVM_VERSION=9 | 
|  | ENV CC /usr/bin/clang-${LLVM_VERSION} | 
|  | ENV CXX /usr/bin/clang++-${LLVM_VERSION} | 
|  |  | 
|  | COPY build_tools/docker/context/install_iree_deps.sh ./ | 
|  | # We need DEBIAN_FRONTEND and TZ for the tzdata package needed by some IREE dependencies. | 
|  | RUN  DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC ./install_iree_deps.sh "${LLVM_VERSION}" \ | 
|  | && rm -rf /install-basics | 
|  |  | 
|  | ######## ccache ######## | 
|  |  | 
|  | WORKDIR /install-ccache | 
|  |  | 
|  | COPY build_tools/docker/context/install_ccache.sh ./ | 
|  | RUN ./install_ccache.sh && rm -rf /install-ccache | 
|  |  | 
|  | ######## CMake ######## | 
|  | WORKDIR /install-cmake | 
|  |  | 
|  | # Install our minimum supported CMake version, which may be ahead of apt-get's version. | 
|  | ENV CMAKE_VERSION="3.21.6" | 
|  |  | 
|  | COPY build_tools/docker/context/install_cmake.sh ./ | 
|  | RUN ./install_cmake.sh "${CMAKE_VERSION}" && rm -rf /install-cmake | 
|  |  | 
|  | ############## | 
|  |  | 
|  | ######## Bazel ######## | 
|  | WORKDIR /install-bazel | 
|  | COPY build_tools/docker/context/install_bazel.sh .bazelversion ./ | 
|  | RUN ./install_bazel.sh && rm -rf /install-bazel | 
|  |  | 
|  | ############## | 
|  |  | 
|  | ######## Python ######## | 
|  |  | 
|  | WORKDIR /install-python | 
|  |  | 
|  | # Minimum supported Python version | 
|  | ARG PYTHON_VERSION=3.9 | 
|  |  | 
|  | # Versions for things required to build IREE should match the minimum | 
|  | # supported versions in the requirements file. There doesn't appear to be a | 
|  | # pip-native way to get the minimum versions, but this hack works for simple | 
|  | # files, at least. | 
|  | COPY runtime/bindings/python/iree/runtime/build_requirements.txt build_tools/docker/context/install_python_deps.sh ./ | 
|  | RUN sed -i 's/>=/==/' build_requirements.txt \ | 
|  | && ./install_python_deps.sh "${PYTHON_VERSION}" \ | 
|  | && rm -rf /install-python | 
|  |  | 
|  | ENV PYTHON_BIN /usr/bin/python3 | 
|  |  | 
|  | ############## | 
|  |  | 
|  | ######## IREE ROCM DEPS ######## | 
|  | WORKDIR /install-rocm | 
|  | ARG ROCM_VERSION=5.2.1 | 
|  | ARG AMDGPU_VERSION=22.20.1 | 
|  | COPY build_tools/docker/context/install_rocm.sh ./ | 
|  | RUN ./install_rocm.sh "${ROCM_VERSION}" "${AMDGPU_VERSION}" && rm -rf /install-rocm | 
|  | WORKDIR / | 
|  | ############## | 
|  |  | 
|  | ######## IREE CUDA DEPS ######## | 
|  | ENV IREE_CUDA_DEPS_DIR="/usr/local/iree_cuda_deps" | 
|  | COPY build_tools/docker/context/fetch_cuda_deps.sh /usr/local/bin | 
|  | RUN /usr/local/bin/fetch_cuda_deps.sh "${IREE_CUDA_DEPS_DIR}" | 
|  | ############## | 
|  |  | 
|  | ######## Vulkan ######## | 
|  | WORKDIR /install-vulkan | 
|  | ARG VULKAN_SDK_VERSION=1.3.250 | 
|  | COPY build_tools/docker/context/install_vulkan.sh ./ | 
|  | RUN ./install_vulkan.sh "${VULKAN_SDK_VERSION}" && rm -rf /install-vulkan | 
|  | WORKDIR / | 
|  | ############## | 
|  |  | 
|  | ### Clean up | 
|  | RUN apt-get clean \ | 
|  | && rm -rf /var/lib/apt/lists/* | 
|  |  | 
|  | WORKDIR / |