# ==================================================================================
#       Copyright (c) 2019-2020 Nokia
#       Copyright (c) 2018-2020 AT&T Intellectual Property.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
# ==================================================================================
FROM python:3.8-slim as stretch

# sdl uses hiredis which needs gcc
RUN apt-get update && \
    apt-get install -y \
        wget gcc musl-dev

ARG rmr_version=4.8.0
ARG e2ap_version=1.1.0

# download rmr and e2ap libraries from package cloud
RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_${rmr_version}_amd64.deb/download.deb
RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_${rmr_version}_amd64.deb/download.deb

RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/riclibe2ap_${e2ap_version}_amd64.deb/download.deb
RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/riclibe2ap-dev_${e2ap_version}_amd64.deb/download.deb

RUN dpkg -i rmr_${rmr_version}_amd64.deb
RUN dpkg -i rmr-dev_${rmr_version}_amd64.deb

RUN dpkg -i riclibe2ap_${e2ap_version}_amd64.deb
RUN dpkg -i riclibe2ap-dev_${e2ap_version}_amd64.deb

RUN ls /usr/local/lib/

FROM python:3.8-slim

ARG rmr_version=4.8.0
ARG e2ap_version=1.1.0

COPY --from=stretch /usr/local/lib/librmr_si.so.${rmr_version} /usr/local/lib/librmr_si.so
COPY --from=stretch /usr/local/lib/libriclibe2ap.so.${e2ap_version} /usr/local/lib/libriclibe2ap.so

# Upgrade pip, install tox
RUN pip install --upgrade pip && pip install tox

# copies
COPY ricxappframe/ /tmp/ricxappframe
COPY tests/ /tmp/tests
COPY setup.py tox.ini LICENSE.txt .coveragerc /tmp/
WORKDIR /tmp

# Run the unit tests
RUN tox -e code,flake8
