FROM ubuntu:bionic AS base

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update

# Common apt packages
RUN apt-get install -yq --no-install-suggests --no-install-recommends \
    software-properties-common build-essential libcap-dev libssl-dev \
    python-all-dev python-setuptools wget xvfb

###############################################################################

FROM base AS appimage

RUN apt-get install -yq --no-install-suggests --no-install-recommends \
    debhelper dh-apparmor dh-python python-stdeb fakeroot

COPY . /home/builder/src

WORKDIR /home/builder/src

CMD python setup.py sdist \
   && python setup.py --command-packages=stdeb.command bdist_deb \
   && dpkg-deb -I deb_dist/*.deb \
   && cp deb_dist/*.deb /dist/ \
   && ln -s /dist out \
   && buildscripts/appimage.sh

###############################################################################

FROM base AS tox

RUN apt-get install -yq --no-install-suggests --no-install-recommends \
    language-pack-en \
    libffi-dev python3-dev python3-pip python3.8 python3.8-dev python3.8-venv \
    python-msgpack python-pip python-qt4 python-six qt5dxcb-plugin tor

RUN python3.8 -m pip install setuptools wheel
RUN python3.8 -m pip install --upgrade pip tox virtualenv

RUN useradd -m -U builder

# copy sources
COPY . /home/builder/src
RUN chown -R builder.builder /home/builder/src

USER builder

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

WORKDIR /home/builder/src

ENTRYPOINT ["tox"]

###############################################################################

FROM base AS snap

RUN apt-get install -yq --no-install-suggests --no-install-recommends snapcraft

COPY . /home/builder/src

WORKDIR /home/builder/src

CMD cd packages && snapcraft && cp *.snap /dist/

###############################################################################

FROM base AS winebuild

RUN dpkg --add-architecture i386
RUN apt-get update

RUN apt-get install -yq --no-install-suggests --no-install-recommends \
    mingw-w64 wine-stable winetricks wine32 wine64

COPY . /home/builder/src

WORKDIR /home/builder/src

# xvfb-run -a buildscripts/winbuild.sh
CMD xvfb-run -a i386 buildscripts/winbuild.sh \
    && cp packages/pyinstaller/dist/*.exe /dist/

###############################################################################

FROM base AS buildbot 

# cleanup
RUN rm -rf /var/lib/apt/lists/*

# travis2bash
RUN wget -O /usr/local/bin/travis2bash.sh https://git.bitmessage.org/Bitmessage/buildbot-scripts/raw/branch/master/travis2bash.sh
RUN chmod +x /usr/local/bin/travis2bash.sh

# copy entrypoint
COPY packages/docker/buildbot-entrypoint.sh entrypoint.sh
RUN chmod +x entrypoint.sh

RUN useradd -m -U buildbot
RUN echo 'buildbot ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

USER buildbot

ENTRYPOINT /entrypoint.sh "$BUILDMASTER" "$WORKERNAME" "$WORKERPASS"

###############################################################################

FROM base AS appandroid

COPY . /home/builder/src

WORKDIR /home/builder/src

RUN chmod +x buildscripts/androiddev.sh

RUN buildscripts/androiddev.sh