# syntax=docker/dockerfile:1
FROM fedora:37

ENV BSP_VERSION=bsp43.0
# PARTNER TODO
# TODO adapt names to the names of your folders. They are assumed to be in the same folder as this Dockerfile.
# if other archive types are used, adapt the extraction below
ENV S32_FW_BINS=s32_firmware_bins-microsys-${BSP_VERSION}.zip
ENV MICROSYS_META_LAYER=meta-microsys-auto-microsys-${BSP_VERSION}.zip
# TODO change the 1000 to your user ID, usually 1000 on a VM, different for multi-user systems (linux: id -u)
ENV USER_ID=1000
# TODO revisit EULA
ENV EULA=True
# TODO change to your git login
ENV GIT_EMAIL="git@localhost.de"
ENV GIT_NAME="Git Username"
# PARTNER TODO END

RUN dnf upgrade -y
RUN dnf install -y unzip ca-certificates python3 git curl sudo nano vim make automake cpp gcc gcc-c++ kernel-devel \
    hostname rpcgen glibc-langpack-en wget e2fsprogs @development-tools bzip2 gawk xterm zstd texinfo diffutils \
    perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue socat vim-common redhat-lsb
RUN curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > /bin/repo
RUN chmod +x /bin/repo
RUN echo "dev ALL = NOPASSWD: /usr/bin/dnf" >> /etc/sudoers
RUN echo "dev ALL = NOPASSWD: /bin/bash" >> /etc/sudoers

RUN useradd -u ${USER_ID} -ms /bin/bash dev
USER dev:dev
RUN id

RUN git config --global user.email ${GIT_EMAIL}
RUN git config --global user.name ${GIT_NAME}

COPY bash_history /home/dev/.bash_history

RUN mkdir /home/dev/fsl-auto-yocto-bsp; \
    cd /home/dev/fsl-auto-yocto-bsp; \
    repo init -u https://github.com/nxp-auto-linux/auto_yocto_bsp -b release/${BSP_VERSION}; \
    repo sync

# pass e.g. "--build-arg REBUILD_SOURCES=$(date +%s)" to ensure fresh sources
ARG REBUILDSRC=1

COPY ${S32_FW_BINS} /home/dev/
COPY ${MICROSYS_META_LAYER} /home/dev/

RUN cd /home/dev/; unzip ${S32_FW_BINS};
RUN cd /home/dev/; unzip ${MICROSYS_META_LAYER} -d /home/dev/fsl-auto-yocto-bsp/sources/meta-microsys-auto;
# RUN tar xfv /home/dev/${MICROSYS_META_LAYER} && mv meta-microsys-auto /home/dev/fsl-auto-yocto-bsp/sources/meta-microsys-auto

WORKDIR /home/dev/fsl-auto-yocto-bsp/
RUN cat /home/dev/fsl-auto-yocto-bsp/sources/meta-microsys-auto/patches/meta-alb/*.diff | \
        patch -p1 -d /home/dev/fsl-auto-yocto-bsp/sources/meta-alb &&  \
    cat /home/dev/fsl-auto-yocto-bsp/sources/meta-microsys-auto/patches/poky/kirkstone/*.diff | \
        patch -p1 -d /home/dev/fsl-auto-yocto-bsp/sources/poky
RUN sed -i 's#$force_update#true#' sources/meta-alb/scripts/host-prepare-ubuntu-mint-debian.sh && \
    sed -i 's+sudo dnf $UPDATE_FLAG install epel-release+#sudo dnf $UPDATE_FLAG install epel-release+' \
        /home/dev/fsl-auto-yocto-bsp/sources/meta-alb/scripts/host-prepare-rhel-centos-fedora.sh && \
    sed -i 's+$UPDATE_FLAG+$UPDATE_FLAG -y+g' \
        /home/dev/fsl-auto-yocto-bsp/sources/meta-alb/scripts/host-prepare-rhel-centos-fedora.sh && \
    sed -i "s+URI_NXPFWGITREPO.*$+URI_NXPFWGITREPO ?= 'file:///home/dev/s32_firmware_bins-microsys-${BSP_VERSION}.zip;name=NXPFWGITREPO;subdir=NXPFWGITREPO'+" \
        /home/dev/fsl-auto-yocto-bsp/sources/meta-microsys-auto/conf/distro/microsys-distro-common.conf
RUN ./sources/meta-alb/scripts/host-prepare.sh