content: # Copyright (C) 2019-2024 Intel Corporation
  # SPDX-License-Identifier: Apache-2.0
  FROM ubuntu:20.04 AS base
  
  # hadolint ignore=DL3002
  USER root
  WORKDIR /
  
  SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
  
  ENV DEBIAN_FRONTEND=noninteractive
  
  # hadolint ignore=DL3008
  RUN apt-get update && \
      apt-get install -y --no-install-recommends curl tzdata ca-certificates && \
      rm -rf /var/lib/apt/lists/*
  
  
  # get product from URL
  ARG package_url
  ARG TEMP_DIR=/tmp/openvino_installer
  
  WORKDIR ${TEMP_DIR}
  # hadolint ignore=DL3020
  ADD ${package_url} ${TEMP_DIR}
  
  # install product by copying archive content
  ARG TEMP_DIR=/tmp/openvino_installer
  ENV INTEL_OPENVINO_DIR=/opt/intel/openvino
  
  # Creating user openvino and adding it to groups"users"
  RUN useradd -ms /bin/bash -G users openvino
  
  RUN find "${TEMP_DIR}" \( -name "*.tgz" -o -name "*.tar.gz" \) -exec tar -xzf {} \; && \
      OV_BUILD="$(find . -maxdepth 1 -type d -name "*openvino*" | grep -oP '(?<=_)\d+.\d+.\d.\d+')" && \
      OV_YEAR="$(echo "$OV_BUILD" | grep -oP '^[^\d]*(\d+)')" && \
      OV_FOLDER="$(find . -maxdepth 1 -type d -name "*openvino*")" && \
      mkdir -p /opt/intel/openvino_"$OV_BUILD"/ && \
      cp -rf "$OV_FOLDER"/*  /opt/intel/openvino_"$OV_BUILD"/ && \
      rm -rf "${TEMP_DIR:?}"/"$OV_FOLDER" && \
      ln --symbolic /opt/intel/openvino_"$OV_BUILD"/ /opt/intel/openvino && \
      ln --symbolic /opt/intel/openvino_"$OV_BUILD"/ /opt/intel/openvino_"$OV_YEAR" && \
      rm -rf "${TEMP_DIR}" && \
      chown -R openvino /opt/intel/openvino_"$OV_BUILD"
  
  
  ENV HDDL_INSTALL_DIR=/opt/intel/openvino/runtime/3rdparty/hddl
  ENV InferenceEngine_DIR=/opt/intel/openvino/runtime/cmake
  ENV LD_LIBRARY_PATH=/opt/intel/openvino/runtime/3rdparty/hddl/lib:/opt/intel/openvino/runtime/3rdparty/tbb/lib:/opt/intel/openvino/runtime/lib/intel64:/opt/intel/openvino/tools/compile_tool
  ENV OpenCV_DIR=/opt/intel/openvino/extras/opencv/cmake
  ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  ENV PYTHONPATH=/opt/intel/openvino/python:/opt/intel/openvino/python/python3:/opt/intel/openvino/extras/opencv/python
  ENV TBB_DIR=/opt/intel/openvino/runtime/3rdparty/tbb/cmake
  ENV ngraph_DIR=/opt/intel/openvino/runtime/cmake
  ENV OpenVINO_DIR=/opt/intel/openvino/runtime/cmake
  ENV INTEL_OPENVINO_DIR=/opt/intel/openvino
  ENV OV_TOKENIZER_PREBUILD_EXTENSION_PATH=/opt/intel/openvino/runtime/lib/intel64/libopenvino_tokenizers.so
  ENV PKG_CONFIG_PATH=/opt/intel/openvino/runtime/lib/intel64/pkgconfig
  
  RUN rm -rf ${INTEL_OPENVINO_DIR}/.distribution && mkdir ${INTEL_OPENVINO_DIR}/.distribution && \
      touch ${INTEL_OPENVINO_DIR}/.distribution/docker
  # -----------------
  
  
  
  FROM ubuntu:20.04 AS ov_base
  
  LABEL description="This is the runtime image for Intel(R) Distribution of OpenVINO(TM) toolkit on Ubuntu 20.04 LTS"
  LABEL vendor="Intel Corporation"
  
  USER root
  WORKDIR /
  
  SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
  
  ENV DEBIAN_FRONTEND=noninteractive
  
  # Creating user openvino and adding it to groups "video" and "users" to use GPU and VPU
  RUN sed -ri -e 's@^UMASK[[:space:]]+[[:digit:]]+@UMASK 000@g' /etc/login.defs && \
  	grep -E "^UMASK" /etc/login.defs && useradd -ms /bin/bash -G video,users openvino && \
      chown openvino -R /home/openvino
  
  RUN mkdir /opt/intel
  
  ENV INTEL_OPENVINO_DIR /opt/intel/openvino
  
  COPY --from=base /opt/intel/ /opt/intel/
  
  WORKDIR /thirdparty
  
  ARG INSTALL_SOURCES="no"
  
  ARG DEPS="tzdata \
            curl"
  
  ARG LGPL_DEPS="python3.9-venv python3-pip"
  ARG INSTALL_PACKAGES="-c=python -c=core"
  
  
  # hadolint ignore=DL3008
  RUN apt-get update && apt-get upgrade -y && \
      dpkg --get-selections | grep -v deinstall | awk '{print $1}' > base_packages.txt  && \
      apt-get install -y --no-install-recommends ${DEPS} && \
      rm -rf /var/lib/apt/lists/*
  
  RUN apt-get update && apt-get reinstall -y ca-certificates && rm -rf /var/lib/apt/lists/* && update-ca-certificates
  
  # hadolint ignore=DL3008, SC2012
  RUN apt-get update && \
      apt-get install -y --no-install-recommends ${LGPL_DEPS} && \
      ${INTEL_OPENVINO_DIR}/install_dependencies/install_openvino_dependencies.sh -y ${INSTALL_PACKAGES} && \
      if [ "$INSTALL_SOURCES" = "yes" ]; then \
        sed -Ei 's/# deb-src /deb-src /' /etc/apt/sources.list && \
        apt-get update && \
  	  dpkg --get-selections | grep -v deinstall | awk '{print $1}' > all_packages.txt && \
  	  grep -v -f base_packages.txt all_packages.txt | while read line; do \
  	  package=$(echo $line); \
  	  name=(${package//:/ }); \
        grep -l GPL /usr/share/doc/${name[0]}/copyright; \
        exit_status=$?; \
  	  if [ $exit_status -eq 0 ]; then \
  	    apt-get source -q --download-only $package;  \
  	  fi \
        done && \
        echo "Download source for $(ls | wc -l) third-party packages: $(du -sh)"; fi && \
      rm /usr/lib/python3.*/lib-dynload/readline.cpython-3*-gnu.so && rm -rf /var/lib/apt/lists/*
  
  WORKDIR ${INTEL_OPENVINO_DIR}/licensing
  RUN if [ "$INSTALL_SOURCES" = "no" ]; then \
          echo "This image doesn't contain source for 3d party components under LGPL/GPL licenses. They are stored in https://storage.openvinotoolkit.org/repositories/openvino/ci_dependencies/container_gpl_sources/." > DockerImage_readme.txt ; \
      fi
  
  
  ENV HDDL_INSTALL_DIR=/opt/intel/openvino/runtime/3rdparty/hddl
  ENV InferenceEngine_DIR=/opt/intel/openvino/runtime/cmake
  ENV LD_LIBRARY_PATH=/opt/intel/openvino/runtime/3rdparty/hddl/lib:/opt/intel/openvino/runtime/3rdparty/tbb/lib:/opt/intel/openvino/runtime/lib/intel64:/opt/intel/openvino/tools/compile_tool
  ENV OpenCV_DIR=/opt/intel/openvino/extras/opencv/cmake
  ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  ENV PYTHONPATH=/opt/intel/openvino/python:/opt/intel/openvino/python/python3:/opt/intel/openvino/extras/opencv/python
  ENV TBB_DIR=/opt/intel/openvino/runtime/3rdparty/tbb/cmake
  ENV ngraph_DIR=/opt/intel/openvino/runtime/cmake
  ENV OpenVINO_DIR=/opt/intel/openvino/runtime/cmake
  ENV INTEL_OPENVINO_DIR=/opt/intel/openvino
  ENV OV_TOKENIZER_PREBUILD_EXTENSION_PATH=/opt/intel/openvino/runtime/lib/intel64/libopenvino_tokenizers.so
  ENV PKG_CONFIG_PATH=/opt/intel/openvino/runtime/lib/intel64/pkgconfig
  
  # setup Python
  ENV VIRTUAL_ENV=/opt/venv
  RUN python3.9 -m venv $VIRTUAL_ENV
  ENV PATH=$VIRTUAL_ENV/bin:$PATH
  # hadolint ignore=DL3013
  RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools
  
  # Install OpenVINO python API dependency
  RUN python3 -m pip install --no-cache-dir numpy==1.24.4
  
  WORKDIR ${INTEL_OPENVINO_DIR}/licensing
  # Please use `third-party-programs-docker-runtime.txt` short path to 3d party file if you use the Dockerfile directly from docker_ci/dockerfiles repo folder
  COPY dockerfiles/ubuntu20/third-party-programs-docker-runtime.txt ${INTEL_OPENVINO_DIR}/licensing
  
  # for CPU
  
  # for GPU
  
  RUN apt-get update && apt-get install -y --no-install-recommends gpg gpg-agent && \
      curl https://repositories.intel.com/graphics/intel-graphics.key | gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg && \
      echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu focal-legacy main' | tee  /etc/apt/sources.list.d/intel.gpu.focal.list && \
      apt-get update && \
      apt-get install -y --no-install-recommends \
         intel-opencl-icd=22.43.24595.35+i538~20.04 \
         intel-level-zero-gpu=1.3.24595.35+i538~20.04 \
         level-zero=1.8.8+i524~u20.04 \
         ocl-icd-libopencl1 && \
         apt-get purge gpg gpg-agent --yes && apt-get --yes autoremove && \
         apt-get clean ; \
         rm -rf /var/lib/apt/lists/* && rm -rf /tmp/* 
  
  
  # Post-installation cleanup and setting up OpenVINO environment variables
  ENV LIBVA_DRIVER_NAME=iHD
  ENV GST_VAAPI_ALL_DRIVERS=1
  ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri
  
  RUN apt-get update && \
      apt-get autoremove -y gfortran && \
      rm -rf /var/lib/apt/lists/*
  
  USER openvino
  WORKDIR ${INTEL_OPENVINO_DIR}
  ENV DEBIAN_FRONTEND=noninteractive
  
  CMD ["/bin/bash"]
  
  # Setup custom layers below
  