FROM ubuntu:20.04 as build

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get -qq update \
    && apt-get -qq install -y \
    python3 \
    python3-dev \
    wget \
    # opencv dependencies
    build-essential cmake git pkg-config libgtk-3-dev \
    libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
    libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
    gfortran openexr libatlas-base-dev libssl-dev\
    libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \
    libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \
    # scipy dependencies
    gcc gfortran libopenblas-dev liblapack-dev cython

RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
    && python3 get-pip.py "pip==20.2.4"

RUN pip3 install scikit-build

RUN pip3 wheel --wheel-dir=/wheels \
    opencv-python-headless \
    # pinning due to issue in 1.19.5 https://github.com/numpy/numpy/issues/18131
    numpy==1.19.4 \
    imutils \
    scipy \
    psutil \
    Flask \
    paho-mqtt \
    PyYAML \
    matplotlib \
    click \
    setproctitle \
    peewee

FROM scratch

COPY --from=build /wheels /wheels
