FROM harbor.cta-observatory.org/proxy_cache/almalinux:9

ARG CTADIRAC_VERSION="3.2.3"
# strictly speaking not needed, but if not correct, will result in larger image due to the
# conda package being the latest and then being downgraded by pip to the one required by CTADIRAC
ARG DIRAC_VERSION="9.1.19"
ARG RUCIO_VERSION="41.2.2"
ARG RUCIO_POLICY_VERSION="0.6.0"

ENV CTADIRAC_VERSION="${CTADIRAC_VERSION}"
ENV CTADIRAC_ROOT="/opt/ctadirac"
ENV DIRACOS="${CTADIRAC_ROOT}/pro"

RUN dnf install -y bzip2 git \
  && dnf clean all -y \
  && curl --proto "=https" -sSfL https://micro.mamba.pm/api/micromamba/$(uname)-$(uname -m)/latest \
    | tar -xvj -C "/usr/local/bin" --strip-components=1 bin/micromamba

RUN \
  CTADIRAC_PLATFORM="$(uname -s)-$(uname -m)" \
  && CTADIRAC_PREFIX="${CTADIRAC_ROOT}/${CTADIRAC_VERSION}/${CTADIRAC_PLATFORM}" \
  && mkdir -p "${CTADIRAC_ROOT}" \
  && micromamba create -y \
    -p "${CTADIRAC_PREFIX}" \
    -c conda-forge -c diracgrid \
    python=3.12 \
    "dirac-grid=${DIRAC_VERSION}" "m2crypto>=0.50.0" 'diracx-api<0.2.0' 'diracx-core<0.2.0' \
    "rucio-clients=${RUCIO_VERSION}" \
  && "${CTADIRAC_PREFIX}/bin/pip" install --no-cache-dir \
    "CTADIRAC==${CTADIRAC_VERSION}" \
    "ctao-bdms-rucio-policy==${RUCIO_POLICY_VERSION}" \
  && mkdir -p "${CTADIRAC_PREFIX}/etc/grid-security/certificates" \
  && { \
  echo "export DIRACOS=${CTADIRAC_PREFIX}"; \
  echo "export MAMBA_ROOT_PREFIX=${CTADIRAC_PREFIX}"; \
  echo "eval \"\$(micromamba shell hook --shell bash)\""; \
  echo "micromamba activate ${CTADIRAC_PREFIX}"; \
  echo "export X509_CERT_DIR=/etc/grid-security/certificates"; \
  echo "export X509_VOMSES=/etc/grid-security/vomses"; \
  echo "export X509_VOMS_DIR=/etc/grid-security/vomsdir"; \
  } > "${CTADIRAC_PREFIX}/diracosrc" \
  && chmod 755 "${CTADIRAC_PREFIX}/diracosrc" \
  && ln -s "${CTADIRAC_PREFIX}" "${DIRACOS}" \
  && micromamba clean -a -y

ENV PATH="${DIRACOS}/bin:${DIRACOS}/condabin:/usr/local/bin:$PATH" \
  DIRAC="${DIRACOS}" \
  CONDA_PREFIX="${DIRACOS}" \
  CONDOR_CONFIG="${DIRACOS}/etc/condor/condor_config" \
  DAVIX_DISABLE_REDIRECT_CACHING=1 \
  DAVIX_USE_LIBCURL=1 \
  GSETTINGS_SCHEMA_DIR="${DIRACOS}/share/glib-2.0/schemas" \
  MAMBA_ROOT_PREFIX="${DIRACOS}" \
  X509_CERT_DIR="/etc/grid-security/certificates" \
  X509_VOMSES="/etc/grid-security/vomses" \
  X509_VOMS_DIR="/etc/grid-security/vomsdir" \
  XML_CATALOG_FILES="file://${DIRACOS}/etc/xml/catalog file:///etc/xml/catalog"
