# Paquetes coordinados de Simplot

## Estado actual de las fuentes y los paquetes

Resumen actualizado el 09/10/2026: **Simplot 2017.0.2.R1017-3 publicado como inestable**, desde las fuentes hasta r2717. Los documentos que registran esta publicación se añaden después; no se reconstruyen los archivos publicados con el mismo número de versión.

## Publicación -3 verificada

Destino: [Simplot, canal inestable](https://www.simusol.org/downloads/simplot/otros/). Se usó `make subir`, sin promover a estable ni modificar CMSimple.

| Archivo | Resultado |
|---|---|
| `simplot_2017.0.2.R1017-3_all.deb` | Construido e instalado en contenedor Ubuntu 22.04; cuatro PNG y API instalada comprobados. |
| `simplot-2017.0.2.R1017-3.noarch.rpm` | Generado desde ese DEB; no se ensayó instalación nativa RPM. |
| `simplot_2017.0.2.R1017-3_all.tgz` | Generado desde ese DEB; no se ensayó instalación nativa TGZ. |
| `simplot_2017.0.2.R1017-3.tar.gz` | Fuentes exportadas con `hacer-pkg`, incluyendo el empaquetado generado. |
| `simplot_2017.0.2.R1017-3.summa` | Manifiesto correspondiente a la entrega. |

Los cinco archivos, sus MD5 y los enlaces UNSTABLE quedaron publicados. Se descargaron nuevamente mediante SummaPack por HTTPS y se compararon byte a byte con los locales: los cinco coinciden. La construcción ejecutó la batería de 567 comprobaciones en 21 archivos, PASS (siete comparaciones con proyectos vecinos omitidas en la exportación aislada). El DEB se instaló y ejecutó sin PERL5LIB dentro del contenedor; no se instaló nada en el anfitrión.

**Dependencias pendientes en el servidor:** el paquete necesita `d2datdinc >= 1.0-25` y `tabular >= 2.0-16`. Al publicar, las versiones estables eran 1.0-24 y 2.0-15, y los DEB mínimos nuevos tampoco estaban en sus canales inestables. La instalación desde cero usando solo las descargas públicas todavía no está completa. No se publicaron ni promovieron slex ni Tabular2 en esta operación.

Esta primera entrega no tiene todavía ficha estable `simplot.summa` en la raíz del servidor. Para descargar solo el DEB inestable, sin instalarlo ni resolver dependencias, se verificó la selección explícita proyecto/paquete:

```sh
bajar-paquetes --para deb --inestable --sin-dependencias simplot/simplot
```

La selección genérica `make bajar PARA=deb CANAL=inestable` usa la ficha del proyecto que SummaPack publica al promover una entrega a estable; hasta entonces, usar la orden explícita anterior. No promover una entrega únicamente para habilitar ese atajo.

Los binarios definitivos están en `summapack/distros/salida/ubuntu2204/` y también en `simplot/`, con los mismos MD5; `subir.lista` apunta a la salida Ubuntu 22.04 y a las fuentes/manifiesto del proyecto. Se preservaron los paquetes -2 y las entradas de otros proyectos. El entorno común tenía dependencias anteriores, por lo que esta construcción usó un contenedor temporal con los DEB ya verificados de slex 1.0-25 y Tabular2 2.0-16, sin cambiar las dependencias de la carpeta compartida. Registros auxiliares: `/tmp/simplot-publicacion.PqAyAp/construccion.log` y `/tmp/simplot-descarga.D0XoM2/`; pueden desaparecer.

## Estado y antecedentes de las fuentes

| Estado | Contenido y verificación |
|---|---|
| Fuentes de la entrega `-3` | Instalador común con manifiesto y `uninstall` (PREFIX/DESTDIR), subida/bajada delegadas a SummaPack, limpieza de código sin uso, API `SimPlot::Contexto`, motor v2 reentrante y motor histórico aislado por proceso; documentación integrada en `doc/`. Última regresión: 21 archivos, 567 comprobaciones PASS; `distcheck` PASS. Antecedentes: uninstall pasó 542 comprobaciones en 20 archivos; integración documental, 506 en 19. |
| DEB `-3` temporal anterior | Construido durante la etapa del instalador, con 383 pruebas. No contiene la limpieza, la API por contexto ni la integración documental posteriores. |
| Distribución completa `-2` | DEB/RPM/TGZ/fuentes ya construidos; resultados históricos detallados debajo. No contiene los cambios posteriores. |
| Pendiente | Publicar las dependencias mínimas nuevas y verificar la instalación completa desde el servidor antes de decidir una promoción a estable. |

La reentrancia corresponde a la API por contexto y al motor v2: el motor histórico conserva globales internas y se ejecuta aislado en procesos. Véanse [REENTRANCIA.md](REENTRANCIA.md), [PRUEBAS.md](PRUEBAS.md) y [GUIA-USO.md](GUIA-USO.md).

`make uninstall` usa el registro generado por el nuevo instalador y conserva archivos modificados o ajenos; las instalaciones antiguas sin ese registro se rechazan, sin borrar. Para un DEB corresponde el gestor de paquetes (`apt remove simplot`), no `make uninstall`. `distcheck` verifica fuentes e instalación temporal, no construye ni certifica un DEB/RPM/TGZ nuevo.

## Subir y bajar paquetes con SummaPack

Simplot reutiliza `subir-paquetes` y `bajar-paquetes`, no implementa otro protocolo. Se buscan en `../summapack/bin`, después en PATH; `SUMMAPACK_BIN=/ruta/bin` selecciona explícitamente una instalación. Son herramientas de mantenimiento, no dependencias para dibujar. Requieren Bash y las utilidades de SummaPack: SSH/scp para publicar, curl y md5sum para descargar; las comprobaciones locales usan Perl y Digest::MD5 del sistema.

### Configuración del servidor

En `~/.config/simusol/subir`, archivo shell de confianza compartido con SummaPack, configurar lo siguiente sin guardar claves privadas ni contraseñas en el proyecto:

```sh
SUBIR_SERVIDOR=simusol.org
SUBIR_USUARIO=publicador
SUBIR_DIR=/var/www/simusol.org/public_html/downloads
BAJAR_URL=https://www.simusol.org/downloads
# Opcional: BAJAR_DIR=/ruta/de/descargas
```

La publicación requiere una clave SSH autorizada para `publicador`, la identidad del servidor comprobada y permisos de escritura en el directorio de descargas, que debe existir. El publicador crea `simplot/otros/` si falta. No usar `www-data` para entrar por SSH. La descarga pública por HTTPS no requiere cuenta ni clave. Las variables del entorno prevalecen sobre la configuración. Ningún objetivo configura el servidor, publica el bootstrap ni modifica CMSimple.

### Objetivos del Makefile

Desde `siru/simplot`:

| Orden | Efecto |
|---|---|
| `make subir PRUEBA=1` | Valida artefactos locales y muestra la orden; no conecta ni modifica archivos. |
| `make subir` | Publica solo Simplot de la VERSION actual como inestable, junto con sus MD5. |
| `make bajar PRUEBA=1 PARA=deb` | Muestra la descarga prevista sin conectar ni crear caché. |
| `make bajar PARA=deb` | Descarga la versión estable y las dependencias propias que determine SummaPack; no instala. |
| `make bajar PARA=deb CANAL=inestable` | Descarga la última inestable, o la estable si no hay una más nueva. |
| `make bajar PARA=fuentes DESCARGAS=/ruta/destino` | Descarga fuentes sin compilarlas ni instalarlas. |

`PARA` admite fuentes (predeterminado), deb, rpm, tgz, tar.gz, summa, fedora, suse y arch. `CANAL` admite estable (predeterminado) e inestable. Sin `DESCARGAS`, se usa BAJAR_DIR o la caché de SummaPack (`~/.cache/summapack`). Los canales y formatos disponibles dependen de lo efectivamente publicado: esta documentación no certifica que ya exista una entrega actual en el servidor.

La subida lee `../subir.lista` o `LISTA_PAQUETES=/ruta/lista`. Filtra por el nombre Simplot y la VERSION literal de `simplot.summa`; ignora otros proyectos y versiones anteriores, elimina rutas duplicadas y verifica todos los MD5 antes de contactar al servidor. Las rutas relativas de la lista se resuelven respecto del directorio de esa lista. Exige el `.summa` versionado, el `.tar.gz` de fuentes y al menos un binario DEB/RPM/TGZ; no busca comodines entre paquetes antiguos ni sustituye la versión actual por una anterior. Una huella MD5 comprueba integridad, no autentica al autor: debe confiarse en los metadatos y el servidor.

`PRUEBA=1` es una comprobación estrictamente local de estos objetivos. No es lo mismo que invocar directamente `subir-paquetes --prueba` o `bajar-paquetes --prueba`, cuyo flujo puede consultar el servidor o preparar metadatos. No sirve para comprobar credenciales SSH ni disponibilidad remota.

### Preparar la entrega y promoverla

1. Mantener VERSION y `debian/changelog` coordinados y comitear las fuentes que se van a exportar.
2. Ejecutar `./hacer-pkg`: construye y prueba; registra fuentes y manifiesto en `subir.lista`. Los binarios locales no se anotan para publicación general.
3. Para la base común, ejecutar `../summapack/distros/compilar ubuntu2204 simplot`: requiere Podman, el entorno y las dependencias propias construidas. Registra sus binarios en la lista compartida. No publica.
4. Revisar `make subir PRUEBA=1` y después ejecutar `make subir` cuando se decida publicar.
5. Descargar y probar la inestable. Promoverla es una acción separada y explícita: `subir-paquetes --estable simplot` (o `../summapack/bin/subir-paquetes --estable simplot`).

`make subir` no compila, no instala, no promueve a estable y no borra versiones remotas. Tampoco sube las dependencias slex/Tabular2: deben estar publicadas por sus propios proyectos. Para instalar lo descargado, usar por separado `bajar-paquetes --para deb --instalar simplot`. Si falta SummaPack, su bootstrap es `installsumma.sh` en la raíz de descargas; esa instalación es independiente y no se ejecuta desde estos objetivos.

Al incorporar estos objetivos no se publicó ni descargó del servidor real. Las pruebas de transferencia usan un servidor de archivos temporal (`SUBIR_SERVIDOR=local`, `BAJAR_URL=file://...`) y artefactos sintéticos que no se instalan. La publicación posterior y su descarga real se registran al comienzo de este documento.

Verificación previa a construir la entrega: las 25 comprobaciones de transferencia pasaron, incluida la ida y vuelta real sobre archivos locales. Entonces `make subir PRUEBA=1` rechazaba la entrega porque faltaba el `.summa` construido de la versión -3 en `subir.lista`. Después se construyeron y registraron los artefactos actuales: no se sustituyeron por los -2 existentes.

## Antecedente: instalador desde fuentes posterior a los paquetes -2

El árbol actual incorpora `make`, `make check` y `make install`, con `PREFIX` (predeterminado `/usr/local`) y `DESTDIR`. Las recetas FUENTES_CONSTRUIR/FUENTES_INSTALAR del manifiesto conectan este recorrido con SummaPack; las reglas DEB utilizan el mismo instalador. Véanse el README y INSTALL.txt. El manifiesto pasa a 2017.0.2.R1017-3 para no sobrescribir artefactos -2: la tabla siguiente registra los paquetes anteriores, no anuncia que -3 se haya generado o publicado.

Verificación local posterior: 383 pruebas PASS en el árbol y en exportación limpia; receta FUENTES_INSTALAR ejecutada correctamente en prefijo temporal. `dpkg-buildpackage -us -uc -b` produjo un DEB -3 de prueba en `/tmp/simplot-fuentes.lZnj84/` usando el nuevo `make install`. Ese artefacto temporal no se instaló ni se publicó y no sustituye los paquetes -2 de la tabla. No se generó una nueva distribución completa DEB/RPM/TGZ/fuentes.

## Paquetes -2 ya construidos

Versiones preparadas el 9 de octubre de 2026:

| Proyecto | Paquetes | Versión |
|---|---|---|
| slex | libslex0, libslex-dev, d2datdinc | 1.0-25 |
| Tabular2 | libtabular2-0, libtabular2-dev, tabular | 2.0-16 |
| Simplot | simplot | 2017.0.2.R1017-2 |

El manifiesto `.summa` es la fuente de las dependencias y reglas; `hacer-pkg` genera debian/ en una copia exportada, ejecuta las pruebas y construye DEB, TGZ, RPM (con rpmbuild) y tar.gz de fuentes. Los archivos viejos de debian/ de Simplot no son la especificación vigente: se regeneran en la copia. No se usa Makefile.PL ni los instaladores antiguos para empaquetar.

Simplot requiere `d2datdinc >= 1.0-25` y `tabular >= 2.0-16`, además de Perl, Path::Class, Capture::Tiny y Gnuplot. Los paquetes de bibliotecas tienen sus propias dependencias. `tempC`/`tempF` se convierten en Tabular2 mediante libunidades, no mediante otro motor Perl.

La construcción coordinada usa el contenedor existente `siru-ubuntu2204`, los scripts de `summapack/distros` y dependencias propias ya compiladas para esa base. Las fuentes provienen de exportaciones SVN y los resultados quedan primero en un directorio temporal aislado. No se instalan paquetes en el host, no se borran versiones anteriores y no se publica en el servidor.

## Resultado histórico comprobado de los paquetes -2

| Verificación | Resultado |
|---|---|
| Árbol Simplot | 15 archivos, 359 pruebas, PASS |
| Lector slex | 117 pruebas y 5 de reentrancia, PASS |
| Tabular2 | 12 suites, PASS |
| Construcción aislada | Los tres proyectos terminaron con estado 0, sin desactivar sus pruebas |
| Instalación DEB limpia | 14 comprobaciones, PASS, Ubuntu 22.04 y Gnuplot 5.4.2 |
| Independencia del árbol | Prueba con `/usr/bin/simplot` y módulos en `/usr/share/perl5`, sin fuentes montadas ni PERL5LIB/LD_LIBRARY_PATH |
| Enlace | d2datdinc e interpola usan `/usr/lib/simusol/lib`; sin RUNPATH hacia directorios de compilación |

La prueba instalada verifica 15 proyecciones y un panel PNG a partir del estado de referencia de Psicro, RESULTADOS, la conversión de 20 tempC a 293,15 K, OUTPUTS sin PARAPLOT, DAT sin descripción gráfica conservado intacto y el error preciso ante una tabla faltante. No vuelve a resolver el modelo psicrométrico: el origen de los datos está documentado en el corpus.

Se retiraron del empaquetado el compat=9 duplicado y el configurador debconf heredado de SCEPTRE. Se corrigió la lista ARCHIVOS del manifiesto para incluir módulos, corpus y documentación. No hay búsqueda ni propuesta de mover archivos de SCEPTRE durante la instalación.

## Archivos entregados y alcance

- En `slex/`: libslex0, libslex-dev y d2datdinc 1.0-25.
- En `tabular2/`: libtabular2-0, libtabular2-dev y tabular 2.0-16.
- En `simplot/`: simplot 2017.0.2.R1017-2.
- Cada paquete tiene DEB, RPM, TGZ y sus MD5. Cada proyecto tiene tar.gz de fuentes y manifiesto `.summa` versionado con sus MD5. Se conservaron versiones anteriores; no se modificó subir.lista.
- Los DEB son los comprobados en instalación limpia. Los RPM y TGZ contienen los mismos archivos, pero no se verificó su instalación nativa en Fedora/SUSE/Arch. Los binarios C se construyeron para amd64 sobre Ubuntu 22.04; Simplot es Perl independiente de arquitectura.
- Para ejecutar también hacen falta las dependencias declaradas: bibliotecas mem-util/unidades, simusol-pcre2/readline y paquetes de la distribución. Los siete paquetes nuevos no constituyen por sí solos un instalador sin dependencias externas.
- No se instalaron en el sistema anfitrión ni se publicaron en el servidor. Esas acciones quedan fuera de esta verificación.

Las fuentes de slex/Tabular2 se exportaron al cerrar r2682; las de Simplot incluyen las correcciones hasta r2686. Este informe final se añade después de construir y probar: los archivos publicados localmente conservan las fuentes exactas usadas para construirlos, no una exportación posterior con el mismo nombre.

Evidencias temporales de esta corrida: `/tmp/simplot-paquetes.JNdsl1/prueba-instalado.log`, `instalacion.log` y `simplot-build-final.log`; los dibujos quedaron en `instalado-xAuQBK/`. Estas rutas son auxiliares y pueden desaparecer: los resultados duraderos son este informe, el corpus y los paquetes de cada proyecto.
