# syntax=docker/dockerfile:1
FROM jayfield/debian-baseimage AS build_base

# ----------------------------------------------------------------------------------------------------------------------------------------
RUN apt-get update && \
    apt-get -y install --no-install-recommends \
    autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
    g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
    libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
    python3-ruamel.yaml \
    && rm -rf /var/lib/apt/lists/*

# ----------------------------------------------------------------------------------------------------------------------------------------
# Build from sources
# ----------------------------------------------------------------------------------------------------------------------------------------
FROM build_base AS build
RUN apt-get update && \
    apt-get -y install --no-install-recommends openssh-server udev libavahi-common-dev libavahi-core-dev libavahi-client-dev \
    && rm -rf /var/lib/apt/lists/*

# SoapySDR
ADD https://github.com/pothosware/SoapySDR.git /tmp/sources/SoapySDR
WORKDIR /tmp/sources/SoapySDR/build
RUN cmake ../
RUN make -j$(nproc)
RUN make install -j$(nproc)
RUN ldconfig
RUN SoapySDRUtil --info

# SoapyRemote
ADD https://github.com/pothosware/SoapyRemote.git /tmp/sources/SoapyRemote
WORKDIR /tmp/sources/SoapyRemote/build
RUN cmake -DENABLE_AVAHI=ON ..
RUN make -j$(nproc)
RUN make install -j$(nproc)
RUN ldconfig

# UHD
ADD https://github.com/EttusResearch/uhd.git /tmp/sources/uhd
WORKDIR /tmp/sources/uhd/host/build
RUN cmake \
    -DENABLE_PYTHON_API=OFF \
    -DENABLE_EXAMPLES=OFF \
    -DENABLE_TESTS=OFF \
    -DENABLE_E320=OFF \
    -DENABLE_E300=OFF \
    -DINSTALL_UDEV_RULES=OFF \
    ..
RUN make -j$(nproc)
RUN make test
RUN make install
RUN ldconfig
RUN /usr/local/bin/uhd_images_downloader -t usrp1
RUN /usr/local/bin/uhd_images_downloader -t b2xx

# SoapyUHD
ADD https://github.com/pothosware/SoapyUHD.git /tmp/sources/SoapyUHD
WORKDIR /tmp/sources/SoapyUHD/build
RUN cmake ../
RUN make -j$(nproc)
RUN make install -j$(nproc)
RUN ldconfig
ENV UHD_MODULE_PATH=/usr/local/lib/uhd/modules

# SDRPlay API
WORKDIR /tmp/sources
COPY bin/SDRplay_RSP_API-Linux-3.15.2.run /tmp/sources/
RUN chmod +x SDRplay_RSP_API-Linux-3.15.2.run
RUN ./SDRplay_RSP_API-Linux-3.15.2.run --noexec --target sdrplay_api
WORKDIR ./sdrplay_api
COPY bin/install_lib.patch .
RUN patch install_lib.sh install_lib.patch
RUN ./install_lib.sh

# SoapySDRPlay
ADD https://github.com/pothosware/SoapySDRPlay.git /tmp/sources/SoapySDRPlay
WORKDIR /tmp/sources/SoapySDRPlay/build
RUN cmake ../
RUN make -j$(nproc)
RUN make install -j$(nproc)
RUN ldconfig

# ----------------------------------------------------------------------------------------------------------------------------------------
# Add user
RUN useradd -m jens -p jens -s /usr/bin/bash
RUN echo jens:change_me | chpasswd
RUN echo root:root4me | chpasswd


WORKDIR /home/jens
RUN touch .Xauthority

# Copy scripts and configs
ENV SCRIPTS_HOME=/opt/scripts
ENV PATH=${PATH}:${SCRIPTS_HOME}
ADD scripts ${SCRIPTS_HOME}
COPY config/sshd_config /etc/ssh/

# Ports
EXPOSE 55132
EXPOSE 10022
EXPOSE 10022

# Start server
ENTRYPOINT ["/opt/scripts/server_start.sh", "/opt/scripts/server.sh"]
