# ==================================================================================
#       Copyright (c) 2020 HCL Technologies Limited.
#
#   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 frolvlad/alpine-miniconda3:python3.7
# FROM python:3.8-alpine

# RMR setup
RUN mkdir -p /opt/route/

# sdl uses hiredis which needs gcc
RUN apk update && apk add gcc musl-dev

# copy rmr libraries from builder image in lieu of an Alpine package
COPY --from=nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-alpine3-rmr:4.0.5 /usr/local/lib64/librmr* /usr/local/lib64/

# Upgrade pip, install tox
RUN pip install --upgrade pip && pip install tox
RUN apk update && apk add gcc musl-dev

# copies
COPY setup.py tox.ini LICENSE.txt /tmp/
RUN pip install /tmp
COPY src/ /tmp/src
COPY tests/ /tmp/tests
# Run the unit tests
WORKDIR /tmp 
RUN PYTHONPATH=/tmp/src:/usr/lib/python3.7/site-packages/:$PYTHONPATH tox -e code,flake8
