# Build-time arguments
FROM swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:8.3.rc1-910b-openeuler24.03-py3.11
ARG PYTHON_SITE_PACKAGES=/usr/local/miniconda/lib/python3.11/site-packages
USER root
ENV TZ=Asia/Shanghai
ENV LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/driver:$LD_LIBRARY_PATH
ENV ASCEND_RUNTIME=/usr/local/Ascend/ascend-toolkit/latest
ENV PATH=$ASCEND_RUNTIME/bin:$PATH
ENV ASCEND_CUSTOM_OPP_PATH=${PYTHON_SITE_PACKAGES}/mindiesd/ops/vendors/customize:${PYTHON_SITE_PACKAGES}/mindiesd/ops/vendors/aie_ascendc:${ASCEND_CUSTOM_OPP_PATH}

# License
RUN echo "torch-onnx-inference 1.0" > /agreement.txt && \
    echo "Container image Copyright (c) 2026, Huawei Technologies Co., Ltd. All rights reserved." >> /agreement.txt && \
    echo "" >> /agreement.txt && \
    echo "This container image and its contents are governed by the Huawei Container License Agreement (\"License\")." >> /agreement.txt && \
    echo "By pulling and using the container, you accept the terms and conditions of this License." >> /agreement.txt && \
    echo "A copy of this License is made available in this container at: https://www.hiascend.com/en/legal/ascendhub-download" >> /agreement.txt && \
    echo "Note: You agree and undertake that when using Huawei or third-party software in this image, you will comply" >> /agreement.txt && \
    echo "with the license agreement of the corresponding Huawei or third-party software." >> /agreement.txt

RUN dnf clean all && dnf makecache && \
    dnf install -y \
    ca-certificates wget curl vim git \
    gcc gcc-c++ make numactl-devel \
    mesa-libGL glib2 \
    && dnf clean all

# Install Conda
ENV PATH=/usr/local/miniconda/bin:$PATH
RUN wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O /tmp/miniconda.sh && \
    bash /tmp/miniconda.sh -b -p /usr/local/miniconda && \
    rm -f /tmp/miniconda.sh && \
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main && \
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r && \
    conda install -y python=3.11 numpy=1.26.4 && \
    conda clean -ya && \
    conda config --set auto_activate_base false

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url=https://repo.huaweicloud.com/repository/pypi/simple" >> /root/.pip/pip.conf && \
    echo "trusted-host=repo.huaweicloud.com" >> /root/.pip/pip.conf && \
    echo "timeout=120" >> /root/.pip/pip.conf

# Install PyTorch and torch_npu
RUN mkdir -p /opt/package && \
    wget -q https://download-r2.pytorch.org/whl/cpu/torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -P /opt/package && \
    pip3 install /opt/package/torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl --no-cache-dir && \
    wget -q https://gitcode.com/Ascend/pytorch/releases/download/v7.2.0-pytorch2.1.0/torch_npu-2.1.0.post17-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -P /opt/package && \
    pip3 install /opt/package/torch_npu-2.1.0.post17-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl --no-cache-dir && \
    rm -rf /opt/package/*

# Install mindiesd
RUN pip3 install --no-cache-dir \
    --trusted-host ascend.devcloud.huaweicloud.com \
    -i https://ascend.devcloud.huaweicloud.com/pypi/simple/ \
    mindiesd

# Install ONNX
RUN pip3 install --no-cache-dir --upgrade pip wheel && \
    pip3 install --no-cache-dir setuptools==69.5.1 && \
    pip3 install --no-cache-dir --no-warn-conflicts \
    attrs cloudpickle decorator psutil scipy tornado pandas absl-py ml-dtypes pyyaml&& \
    pip3 install --no-cache-dir --no-warn-conflicts \
    onnx==1.16.1 onnxruntime==1.15.1 onnxslim==0.1.93 opencv-python-headless==4.11.0.86

# Install ais_bench & aclruntime
RUN mkdir -p /opt/package && \
    wget -q https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/aclruntime-0.0.2-cp311-cp311-linux_aarch64.whl -P /opt/package && \
    wget -q https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/ais_bench-0.0.2-py3-none-any.whl -P /opt/package && \
    pip3 install /opt/package/*.whl --no-cache-dir --no-warn-conflicts && \
    rm -rf /opt/package/*

# Install msit
RUN pip3 install --no-cache-dir --no-warn-conflicts msit && \
    msit install surgeon

RUN conda init bash
RUN echo "source /usr/local/miniconda/etc/profile.d/conda.sh && conda activate base" >> /etc/bashrc

CMD ["sh", "-c", "cat /agreement.txt && exec bash"]