# Copyright (C) 2025 ASTRON (Netherlands Institute for Radio Astronomy)
# SPDX-License-Identifier: GPL-3.0-or-later

# base
FROM ubuntu:24.04
RUN export DEBIAN_FRONTEND=noninteractive \
    && apt-get update && apt-get upgrade -y \
# install astronomy packages
    && apt-get -y install libcfitsio-dev wcslib-dev libfftw3-dev libgsl-dev \
# install misc packages
    wget git make cmake g++ doxygen \
# install dependencies
    libboost-filesystem-dev \
    libboost-test-dev \
    libhdf5-dev \
    libpython3-dev \
    python3-pip \
    python3-venv \
    clang-format-15 \
    clang-tidy-15 \
# For casacore
    bison \
    flex \
    gfortran \
    python3-dev \
    python3-numpy \
    libboost-python-dev \
    libblas-dev \
    liblapack-dev \
    libreadline-dev \
    && rm -rf /var/lib/apt/lists/* \
# The formatter needs a binary named 'clang-format', not 'clang-format-15'.
# Same for clang-tidy-15.
    && ln -sf clang-format-15 /usr/bin/clang-format \
    && ln -sf clang-tidy-15 /usr/bin/clang-tidy \
    && python3 -m venv /format_env \
    && . /format_env/bin/activate \
    && python3 -m pip install gcovr black cmake-format isort

# Install WSRT Measures (extra casacore data, for integration tests)
# Note: The file on the ftp site is updated daily. When warnings regarding leap
# seconds appear, ignore them or regenerate the docker image.
RUN wget -nv -O /WSRT_Measures.ztar https://www.astron.nl/iers/WSRT_Measures.ztar \
  && mkdir -p /var/lib/casacore/data \
	&& cd /var/lib/casacore/data \
	&& tar xfz /WSRT_Measures.ztar \
	&& rm /WSRT_Measures.ztar
# Casacore
RUN mkdir /external && \
  cd /external && \
  git clone https://github.com/casacore/casacore.git && \
  cd /external/casacore && \
  git checkout 4c661342faf74c56ea15ecdfc6f2ff4a58072e76 && \
  mkdir build && \
  cd build && \
  cmake .. -DBUILD_PYTHON=OFF -DBUILD_TESTING=OFF -DDATA_DIR=/var/lib/casacore/data && \
  make -j`nproc` && \
  make install -j`nproc` && \
  cd /external && \
  rm -rf /external/casacore
