###############################################################################
# Dockerfile used to make gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-rocky8:20230914_gdb_toolset_12_sdk
###############################################################################

FROM rockylinux:8

MAINTAINER Mickaël Turnel <mickael.turnel@belledonne-communications.com>

# Install common general tools
RUN dnf install -y sudo vim

# Configure additional repositories
RUN dnf install -y epel-release && \
        dnf install -y dnf-plugins-core && \
        dnf config-manager -y --set-enabled powertools && \
        dnf install -y http://repo.okay.com.mx/centos/8/x86_64/release/okay-release-1-5.el8.noarch.rpm

# Update
RUN dnf makecache --refresh && dnf -y update

# Install development tools
RUN dnf -y install at bison ccache clang doxygen gettext-devel git graphviz libtool make meson nasm ninja-build patch perl redhat-lsb-core rpm-build yasm && \
    dnf -y clean all

# Install gcc toolset 12
RUN dnf -y install gcc-toolset-12 gcc-toolset-12-libasan-devel gcc-toolset-12-libubsan-devel gcc-toolset-12-gdb

# Install linphone & flexisip dependencies development packages
RUN dnf -y install alsa-lib-devel glew-devel gsm-devel jansson-devel libbsd-devel libsrtp-devel libv4l-devel libvpx-devel libXv-devel libxml2-devel mariadb-devel mbedtls-devel mesa-libEGL-devel net-snmp-devel openssh openssh-clients opus-devel postgresql-devel protobuf-devel pulseaudio-libs-devel speex-devel sqlite-devel xerces-c-devel xsd && \
    dnf -y clean all

# Install CMake from the tar.gz as we need a newer version than the one being packaged
ENV CMAKE3_HOME /opt/cmake3
RUN mkdir $CMAKE3_HOME && \
    curl --fail --silent --show-error --location https://cmake.org/files/v3.22/cmake-3.22.6-linux-x86_64.tar.gz | tar --extract --gzip --no-same-owner --file - --strip-components=1 --directory $CMAKE3_HOME

# Configure user bc
RUN useradd -ms /bin/bash bc && \
    echo 'bc:cotcot' | chpasswd && \
    echo 'bc ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# Load gcc-toolset-12 environment on starting
RUN echo 'source /opt/rh/gcc-toolset-12/enable' >> /home/bc/.bashrc && \
    echo 'source /opt/rh/gcc-toolset-12/enable' >> /home/bc/.shrc

# This tells /bin/sh to load '~/.shrc' on starting
ENV ENV=~/.shrc

# Switch to 'bc' user
USER bc
WORKDIR /home/bc

# Install python3 modules.
# This must be done as user 'bc' because python modules are installed in /usr/local/lib when pip is invoked
# as root, and rpmbuild prevents python from searching its modules in this prefix. Installing with user 'bc' puts
# the modules in /home/bc/.local/bin.
RUN python3 -m pip install --user pystache six

ENV PATH=$PATH:$CMAKE3_HOME/bin:/home/bc/.local/bin

ENV PS1='\[\e[34m\]\u@bc-dev-rocky8>\[\e[0m\] '

# CVE-2022-24765, from git 2.35.2 onward
RUN git config --global --add safe.directory *
