FROM perl:5.38.0-slim AS builder

RUN apt-get update \
 && apt-get dist-upgrade -y \
 && apt-get install -y \
    apt-file \
    build-essential \
    cmake \
    curl \
    git \
    libcairo-dev \
    libexpat-dev \
    libgd-dev \
    libssl-dev \
    openssl \
    zlib1g-dev \
    unzip \
    wget

RUN cpanm --notest --quiet App::cpm Module::CPANfile Carton::Snapshot

WORKDIR /app

COPY Makefile.PL Bugzilla.pm gen-cpanfile.pl /app/
COPY extensions/ /app/extensions/

RUN perl Makefile.PL
RUN make cpanfile GEN_CPANFILE_ARGS="-D better_xff -D jsonrpc -D xmlrpc -D docker"

RUN carton install

# secure mail loop fixes
RUN cpm install http://s3.amazonaws.com/moz-devservices-bmocartons/third-party/Crypt-OpenPGP-1.15.tar.gz

RUN apt-file update
RUN find local -name '*.so' -exec ldd {} \; \
    | egrep -v 'not.found|not.a.dynamic.executable' \
    | awk '$3 {print $3}' \
    | sort -u \
    | xargs -IFILE apt-file search -l FILE \
    | sort -u > PACKAGES

FROM perl:5.38.0-slim

ENV DEBIAN_FRONTEND noninteractive

COPY --from=builder /app/local /app/local
COPY --from=builder /app/PACKAGES /app/PACKAGES

RUN apt-get update \
    && apt-get install -y \
       curl \
       git \
       graphviz \
       libcap2-bin \
       rsync \
       $(cat /app/PACKAGES) \
    && rm -rf /var/cache/apt/* /var/lib/apt/lists/*

RUN useradd -u 10001 -U app -m && setcap 'cap_net_bind_service=+ep' /usr/local/bin/perl
