# Entorno para compilar los paquetes de Simusol en Fedora actual (siru/distros).
# Las herramientas de Debian (dpkg-dev, debhelper, fakeroot) estan en Fedora:
# se compila con el mismo debian/rules que sale del .summa, y despues se
# arma el .rpm.
FROM docker.io/library/fedora:latest
RUN dnf -y install dpkg-dev debhelper fakeroot rpm-build \
        gcc gcc-c++ gcc-gfortran make autoconf automake libtool pkgconf-pkg-config \
        bison flex perl python3 findutils which file diffutils tar gzip xz man-db rsync \
    && dnf clean all
# Mongoose: el SuiteSparse de Fedora no lo trae. Se compila desde las fuentes
# de SuiteSparse, la misma version que la de Fedora (7.11.0, para que encaje
# con su SuiteSparse_config), como biblioteca estatica: queda adentro de
# calcula, y en las maquinas Fedora no hace falta instalar nada mas
# (07/10/2026; sha256 calculada al bajarla: la etiqueta no publica suma)
RUN dnf -y install cmake suitesparse-devel && dnf clean all && cd /tmp && \
    curl -fsSL -o ss.tar.gz https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/v7.11.0.tar.gz && \
    echo "93ed4c4e546a49fc75884c3a8b807d5af4a91e39d191fbbc60a07380b12a35d1  ss.tar.gz" | sha256sum -c - && \
    tar xzf ss.tar.gz && cd SuiteSparse-7.11.0/Mongoose && \
    cmake -S . -B b -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release \
          -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
          -DSUITESPARSE_DEMOS=OFF -DBUILD_TESTING=OFF && \
    cmake --build b -j"$(nproc)" && cmake --install b && cd /tmp && rm -rf ss.tar.gz SuiteSparse-7.11.0
# debhelper busca config.guess y config.sub donde los deja Debian
RUN mkdir -p /usr/share/misc && for f in config.guess config.sub; do \
        [ -e /usr/share/misc/$f ] || cp "$(ls /usr/share/automake-*/$f | tail -1)" /usr/share/misc/; done
# herramientas de debhelper que no aplican fuera de Debian, como comandos
# que no hacen nada: las dependencias de las bibliotecas no las calcula
# dpkg-shlibdeps (no hay base de dpkg) sino el empaquetado de cada distro
RUN for c in dh_strip_nondeterminism dh_dwz dh_shlibdeps; do \
        printf '#!/bin/sh\nexit 0\n' > /usr/local/bin/$c; chmod +x /usr/local/bin/$c; done
# dpkg-buildpackage lee la base de dpkg (vacia: aca no hay paquetes .deb)
RUN mkdir -p /var/lib/dpkg && touch /var/lib/dpkg/status
ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig
