#
# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
# SPDX-License-Identifier: MIT
#

# Default build type is 'production'. Use 'dev' if supplying custom Arm NN / ACL repos from host
ARG BUILD_TYPE=production

ARG UBUNTU_VERSION=20.04
FROM ubuntu:${UBUNTU_VERSION} AS build-production

ENV DEBIAN_FRONTEND noninteractive

# Install basic packages for Docker container (not specific to Arm NN)
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        locales \
        vim \
        && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Set locale for Docker container
RUN locale-gen en_GB.UTF-8 && \
    update-locale LC_ALL=en_GB.UTF-8 LANG=en_GB.UTF-8
ENV LANG en_GB.UTF-8
ENV LC_ALL en_GB.UTF-8

WORKDIR /root

# Install system-wide packages specific to Arm NN
COPY ./scripts/install-packages.sh .
RUN ./install-packages.sh

# Define user for non-root processes (overwriteable during 'docker build' with --build-arg)
ARG USER_ID=1000
ARG GROUP_ID=1000

# Create non-root user 'arm-user' based on $USER_ID and $GROUP_ID above
RUN addgroup --gid $GROUP_ID arm-user
RUN useradd --create-home --shell /bin/bash --uid $USER_ID --gid $GROUP_ID arm-user

# Switch to non-root user
USER arm-user
WORKDIR /home/arm-user

# Copy scripts required by Setup into WORKDIR
COPY --chown=arm-user:arm-user ./scripts/validation.sh .
COPY --chown=arm-user:arm-user ./scripts/common.sh .
COPY --chown=arm-user:arm-user ./scripts/setup-armnn.sh .

# Run setup-armnn.sh: download and install Arm NN dependencies
ARG SETUP_ARGS=""
RUN echo "SETUP_ARGS: $SETUP_ARGS"
RUN ./setup-armnn.sh $SETUP_ARGS

# This build-dev stage (inherits 'build-production' stage) is only used in final image if $BUILD_TYPE is 'dev'
FROM build-production as build-dev

# Create directory for source repos in WORKDIR
RUN mkdir -p source/armnn source/acl

# Copy custom armnn/acl source repos from the build-tool directory on the host, if they exist (optional)
# The 'acl' repo must be provided if --neon-backend or --cl-backend is given in the BUILD_ARGS, otherwise only custom "armnn" is required
# If custom repos not provided, the build-armnn.sh script will automatically download the latest release branches of Arm NN and ACL
# Copies Dockerfile to ensure COPY works - at least one file must exist for COPY to work
COPY --chown=arm-user:arm-user ./docker/Dockerfile ./armnn* ./source/armnn/
COPY --chown=arm-user:arm-user ./docker/Dockerfile ./acl* ./source/acl/

# Final stage which inherits either 'build-production' or 'build-dev' stage
FROM build-${BUILD_TYPE} as final

# Copy build script into WORKDIR
COPY --chown=arm-user:arm-user ./scripts/build-armnn.sh .

# Run build-armnn.sh: build Arm NN and ACL
ARG BUILD_ARGS=""
RUN echo "BUILD_ARGS: $BUILD_ARGS"
RUN ./build-armnn.sh $BUILD_ARGS