1ARG UBUNTU_VERSION 2 3FROM ubuntu:${UBUNTU_VERSION} 4 5ARG UBUNTU_VERSION 6 7ENV DEBIAN_FRONTEND noninteractive 8 9ARG CLANG_VERSION 10 11# Install common dependencies (so that this step can be cached separately) 12COPY ./common/install_base.sh install_base.sh 13RUN bash ./install_base.sh && rm install_base.sh 14 15# Install clang 16ARG LLVMDEV 17COPY ./common/install_clang.sh install_clang.sh 18RUN bash ./install_clang.sh && rm install_clang.sh 19 20# Install user 21COPY ./common/install_user.sh install_user.sh 22RUN bash ./install_user.sh && rm install_user.sh 23 24# Install katex 25ARG KATEX 26COPY ./common/install_docs_reqs.sh install_docs_reqs.sh 27RUN bash ./install_docs_reqs.sh && rm install_docs_reqs.sh 28 29# Install conda and other packages (e.g., numpy, pytest) 30ARG ANACONDA_PYTHON_VERSION 31ARG CONDA_CMAKE 32ARG DOCS 33ARG BUILD_ENVIRONMENT 34ENV ANACONDA_PYTHON_VERSION=$ANACONDA_PYTHON_VERSION 35ENV PATH /opt/conda/envs/py_$ANACONDA_PYTHON_VERSION/bin:/opt/conda/bin:$PATH 36ENV DOCS=$DOCS 37COPY requirements-ci.txt requirements-docs.txt /opt/conda/ 38COPY ./common/install_conda.sh install_conda.sh 39COPY ./common/common_utils.sh common_utils.sh 40RUN bash ./install_conda.sh && rm install_conda.sh common_utils.sh /opt/conda/requirements-ci.txt /opt/conda/requirements-docs.txt 41 42# Install gcc 43ARG GCC_VERSION 44COPY ./common/install_gcc.sh install_gcc.sh 45RUN bash ./install_gcc.sh && rm install_gcc.sh 46 47# Install lcov for C++ code coverage 48COPY ./common/install_lcov.sh install_lcov.sh 49RUN bash ./install_lcov.sh && rm install_lcov.sh 50 51COPY ./common/install_openssl.sh install_openssl.sh 52RUN bash ./install_openssl.sh 53ENV OPENSSL_ROOT_DIR /opt/openssl 54ENV OPENSSL_DIR /opt/openssl 55RUN rm install_openssl.sh 56 57ARG INDUCTOR_BENCHMARKS 58COPY ./common/install_inductor_benchmark_deps.sh install_inductor_benchmark_deps.sh 59COPY ./common/common_utils.sh common_utils.sh 60COPY ci_commit_pins/huggingface.txt huggingface.txt 61COPY ci_commit_pins/timm.txt timm.txt 62RUN if [ -n "${INDUCTOR_BENCHMARKS}" ]; then bash ./install_inductor_benchmark_deps.sh; fi 63RUN rm install_inductor_benchmark_deps.sh common_utils.sh timm.txt huggingface.txt 64 65# Install XPU Dependencies 66ARG XPU_VERSION 67COPY ./common/install_xpu.sh install_xpu.sh 68RUN bash ./install_xpu.sh && rm install_xpu.sh 69 70ARG TRITON 71# Install triton, this needs to be done before sccache because the latter will 72# try to reach out to S3, which docker build runners don't have access 73COPY ./common/install_triton.sh install_triton.sh 74COPY ./common/common_utils.sh common_utils.sh 75COPY ci_commit_pins/triton-xpu.txt triton-xpu.txt 76COPY triton_version.txt triton_version.txt 77RUN if [ -n "${TRITON}" ]; then bash ./install_triton.sh; fi 78RUN rm install_triton.sh common_utils.sh triton-xpu.txt triton_version.txt 79 80# (optional) Install database packages like LMDB and LevelDB 81ARG DB 82COPY ./common/install_db.sh install_db.sh 83RUN if [ -n "${DB}" ]; then bash ./install_db.sh; fi 84RUN rm install_db.sh 85ENV INSTALLED_DB ${DB} 86 87# (optional) Install vision packages like OpenCV 88ARG VISION 89COPY ./common/install_vision.sh ./common/cache_vision_models.sh ./common/common_utils.sh ./ 90RUN if [ -n "${VISION}" ]; then bash ./install_vision.sh; fi 91RUN rm install_vision.sh cache_vision_models.sh common_utils.sh 92ENV INSTALLED_VISION ${VISION} 93 94# (optional) Install non-default CMake version 95ARG CMAKE_VERSION 96COPY ./common/install_cmake.sh install_cmake.sh 97RUN if [ -n "${CMAKE_VERSION}" ]; then bash ./install_cmake.sh; fi 98RUN rm install_cmake.sh 99 100# (optional) Install non-default Ninja version 101ARG NINJA_VERSION 102COPY ./common/install_ninja.sh install_ninja.sh 103RUN if [ -n "${NINJA_VERSION}" ]; then bash ./install_ninja.sh; fi 104RUN rm install_ninja.sh 105 106# Install ccache/sccache (do this last, so we get priority in PATH) 107COPY ./common/install_cache.sh install_cache.sh 108ENV PATH /opt/cache/bin:$PATH 109RUN bash ./install_cache.sh && rm install_cache.sh 110 111# Include BUILD_ENVIRONMENT environment variable in image 112ARG BUILD_ENVIRONMENT 113ENV BUILD_ENVIRONMENT ${BUILD_ENVIRONMENT} 114 115# Install LLVM dev version (Defined in the pytorch/builder github repository) 116COPY --from=pytorch/llvm:9.0.1 /opt/llvm /opt/llvm 117 118USER jenkins 119CMD ["bash"] 120