# ==================================================================================
#       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
# 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/
COPY ad/ /tmp/ad
COPY tests/ /tmp/tests
RUN pip install /tmp

# Run the unit tests
WORKDIR /tmp 
RUN PYTHONPATH=/tmp/ad:/usr/lib/python3.7/site-packages/:$PYTHONPATH tox -e code,flake8
