# Build img2simg
FROM docker.io/debian:stable AS img2simg-builder

RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
        sed -i 's/https/http/' /etc/apt/sources.list.d/debian.sources

RUN apt-get update && apt-get install -y \
        gcc g++ \
        git \
        zlib1g-dev

RUN git clone -b platform-tools-34.0.5 https://mirrors.ustc.edu.cn/aosp/platform/system/core.git /root/core
RUN git clone -b platform-tools-34.0.5 https://mirrors.ustc.edu.cn/aosp/platform/system/libbase.git /root/libbase

RUN cd /root && gcc -I libbase/include -I core/libsparse/include libbase/stringprintf.cpp libbase/mapped_file.cpp core/libsparse/backed_block.cpp core/libsparse/output_file.cpp core/libsparse/sparse.cpp core/libsparse/sparse_crc32.cpp core/libsparse/sparse_err.cpp core/libsparse/sparse_read.cpp core/libsparse/img2simg.cpp -lstdc++ -lz -o img2simg

# Build pseudo
FROM docker.io/debian:stable AS pseudo-builder

RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
        sed -i 's/https/http/' /etc/apt/sources.list.d/debian.sources

RUN apt-get update && apt-get install -y \
        attr \
        gcc \
        git \
        libsqlite3-dev \
        make \
        python3 \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/*

RUN git clone --depth 1 https://git.yoctoproject.org/pseudo /root/pseudo && \
        cd /root/pseudo && \
        ./configure --prefix=/usr --libdir=/usr/lib --bits=64 && \
        make && \
        make DESTDIR=/root/pseudo-install install

# Build final image
FROM docker.io/debian:stable

RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
        sed -i 's/https/http/' /etc/apt/sources.list.d/debian.sources

RUN apt-get update && apt-get install -y \
        attr \
        bsdextrautils \
        coreutils \
        dosfstools \
        e2fsprogs \
        fdisk \
        findutils \
        libsqlite3-0 \
        mtools \
        tar \
        util-linux \
        uuid-runtime \
        zstd \
        zlib1g \
        policycoreutils \
        rpm dnf \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/*
RUN ln -s /usr/bin/dnf /usr/bin/yum

COPY --from=img2simg-builder /root/img2simg /usr/bin/img2simg
COPY --from=pseudo-builder /root/pseudo-install/usr/bin/pseudo /usr/bin/pseudo
COPY --from=pseudo-builder /root/pseudo-install/usr/bin/pseudodb /usr/bin/pseudodb
COPY --from=pseudo-builder /root/pseudo-install/usr/bin/pseudolog /usr/bin/pseudolog
COPY --from=pseudo-builder /root/pseudo-install/usr/lib/libpseudo.so /usr/lib/libpseudo.so
RUN mkdir -p /var/pseudo
# TODO: make it configurable
RUN mkdir -p /etc/rpm/ && echo "%_db_backend ndb" > /etc/rpm/macros.db
