# slex.summa: TODO lo necesario para generar los paquetes de slex
# (deb, rpm, tgz y tar.gz). Se cambia aca; debian/ se genera de esto con
# summa.py debian (hacer-deb lo hace solo). debian/changelog no: es la
# historia, y la version de arriba tiene que ser BASEVERSION.
# Escrito por 'summa.py crear' desde debian/ el 07/10/2026.

# ---- el paquete
BASEVERSION="1.0"
SUMMARY="lexer reentrante sobre PCRE2, con las subcadenas capturadas"
DESCRIPTION=$(cat << 'FIN_SUMMA'
Parte un texto en tokens comparandolo con expresiones regulares de PCRE2 y
quedandose con la que captura mas caracteres. Dos cosas que lex y flex no
dan:

 * la funcion de usuario de cada expresion recibe las subcadenas que la
   expresion capturo, no solo el token entero;
 * con PCRE2_PARTIAL_MATCH sabe si le conviene leer mas antes de decidir un
   token, y asi puede leer un archivo mientras otro programa lo escribe.

Es reentrante y recursivo: cada lexer vive en su hilo y puede tener varias
fuentes abiertas a la vez --cadenas, archivos y otros lexers-- de modo que
un include anidado, o un lexer que toma sus tokens de otro, salen naturales.
Entiende UTF-8 e interopera con bison.

Este paquete trae la biblioteca compartida.
FIN_SUMMA
)
MAINTAINER="Diego Saravia <dsa@unsa.edu.ar>"
HOMEPAGE="https://cssan.simusol.org"
SECTION="libs"
PRIORITY="optional"
STANDARDS="4.6.2"
LICENSE="GPL-3.0+"
DEPENDS="\${shlibs:Depends}, \${misc:Depends}"
SOURCE_EXTRA="Rules-Requires-Root: no"

# ---- como se compila
BUILDDEPENDS="debhelper-compat (= 13), autoconf, automake, libtool, bison, pkg-config, libpcre2-dev, libmem-util-dev, libunidades-dev"
DH=""
CONFIGURE=""
RULES=$(cat << 'FIN_SUMMA'
# DEB_VERSION: la version entera del paquete, con la revision de Debian.
include /usr/share/dpkg/pkg-info.mk


# Se instala en debian/tmp y cada .install elige lo suyo.
override_dh_auto_install:
	dh_auto_install --destdir=debian/tmp

# Lo que se arma contra esta biblioteca pide, como minimo, esta version de
# libslex0. Por omision dh_makeshlibs anota solo la version de origen,
# "libslex0 (>= 1.0)", y esa no cambia cuando la biblioteca gana funciones:
# cambia la revision. Asi d2datdinc 1.0-9, que usa la API por contexto
# (slex_ctx_*), se dejaba instalar con una libslex0 anterior, que no la
# tiene.
override_dh_makeshlibs:
	dh_makeshlibs -V 'libslex0 (>= $(DEB_VERSION))'

# dh_auto_test corre el "make check" del arbol, todo compilado contra la
# biblioteca de este arbol:
#
#   tests/      test_api (la API de siempre, funcion por funcion), badini
#               (config invalida) y las tres de la API por contexto: test_ctx,
#               test_hilos (un contexto por hilo) y test_azar (texto, reglas
#               y llamadas al azar)
#   d2datdinc/  probar; compara-dat y compara-din necesitan la copia de
#               trabajo de siru y en el paquete se saltean solas
#
# Antes esto estaba desactivado porque no habia make check y las pruebas eran
# un script con un prefijo cableado.
#
# Lo que sigue afuera es tests/run_tests.sh, que compila y corre los ejemplos
# 07 y 08: necesitan tabular2, que no es dependencia de slex.
FIN_SUMMA
)

# ---- los paquetes que salen
PACKAGES="libslex0 libslex-dev d2datdinc"

# libslex0
libslex0_ARCH="any"
libslex0_EXTRA=$(cat << 'FIN_SUMMA'
Section: libs
Multi-Arch: same
FIN_SUMMA
)

# libslex-dev
libslex_dev_ARCH="any"
libslex_dev_SUMMARY="lexer reentrante sobre PCRE2 (archivos de desarrollo)"
libslex_dev_DESCRIPTION=$(cat << 'FIN_SUMMA'
Ver libslex0.

Este paquete trae los encabezados, el enlace de desarrollo y el archivo
pkg-config: PKG_CHECK_MODULES([SLEX],[slex]) trae tambien PCRE2 y mem_util,
que son sus dependencias.
FIN_SUMMA
)
libslex_dev_DEPENDS="libslex0 (= \${binary:Version}), libpcre2-dev, libmem-util-dev, \${misc:Depends}"
libslex_dev_EXTRA=$(cat << 'FIN_SUMMA'
Section: libdevel
Multi-Arch: same
FIN_SUMMA
)

# d2datdinc
d2datdinc_ARCH="any"
d2datdinc_SUMMARY="de un circuito de Simul al dato JSON y al sistema de Calcula"
d2datdinc_DESCRIPTION=$(cat << 'FIN_SUMMA'
Lee la descripcion de un circuito en cualquiera de los tres formatos de
Simusol --el .d de SCEPTRE, el .ds de siru y el .ds2 corregido-- en una sola
pasada y con la misma tabla de expresiones regulares, y escribe lo que se le
pida: con --dat el dato JSON que Simul consume, con --din el sistema que
resuelve Calcula, o los dos.

Lo que le da sentido al nombre: con --din el sistema sale del arbol que quedo
en memoria al leer la entrada, sin escribir ni volver a leer ningun .dat. Un
dato da hasta 19 sistemas, uno por metodo de Runge-Kutta, y ademas la
configuracion que lee siru.

Reemplaza a Simulparser, el parser en Perl, que necesitaba dos etapas para
un .d (d2ds y despues ds2dat) y un modulo por seccion. La equivalencia esta
medida sobre el corpus completo de circuitos: el mismo JSON en los 191
archivos que los dos programas pueden leer, ninguno distinto; y el mismo .din
en los 18 circuitos que las dos implementaciones traducen.
FIN_SUMMA
)
d2datdinc_DEPENDS="\${shlibs:Depends}, \${misc:Depends}"
d2datdinc_EXTRA="Section: science"

# ---- los demas archivos de debian/, enteros
SOURCEFORMAT="3.0 (quilt)"
ARCHIVOS="copyright d2datdinc.install docs libslex-dev.install libslex0.install not-installed"
EJECUTABLES=""
ARCHIVO_copyright=$(cat << 'FIN_SUMMA'
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: slex
Source: https://cssan.simusol.org

Files: *
Copyright: 2016-2026 Diego Saravia <dsa@unsa.edu.ar>
License: GPL-3.0+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 On Debian systems, the complete text of the GNU General Public License
 version 3 can be found in /usr/share/common-licenses/GPL-3.
FIN_SUMMA
)
ARCHIVO_d2datdinc_install=$(cat << 'FIN_SUMMA'
usr/bin/d2datdinc
usr/share/slex/d2datdinc.slex
usr/share/slex/biblioteca/libraryori.siru
usr/share/slex/biblioteca/rk.siru
usr/share/slex/biblioteca/glm.json
usr/share/slex/biblioteca/pglm.json
FIN_SUMMA
)
ARCHIVO_docs=$(cat << 'FIN_SUMMA'
README
ANALISIS.md
HACKING
NEWS
FIN_SUMMA
)
ARCHIVO_libslex_dev_install=$(cat << 'FIN_SUMMA'
usr/include/*.h
usr/lib/*/libslex.so
usr/lib/*/libslex.a
usr/lib/*/pkgconfig/slex.pc
FIN_SUMMA
)
ARCHIVO_libslex0_install=$(cat << 'FIN_SUMMA'
usr/lib/*/libslex.so.*
FIN_SUMMA
)
ARCHIVO_not_installed=$(cat << 'FIN_SUMMA'
usr/lib/*/libslex.la
usr/share/doc/slex/README
FIN_SUMMA
)

# ---- otros datos, de summapack (los usan sus herramientas)
KEYWORDS="simusol"
AUTHOR="Dolores Alia <dolores.alia@gmail.com>"
VENDOR="INENCO"
PRIMARYSITE="https://cssan.simusol.org"
SRC_URI="https://cssan.simusol.org/pkgs/Siru-last.s.tgz"
SRC_PKG_TYPE="simusol"
SIMUSOLTYPE="other"
CATEGORY="solar"
SUMMAVERSION="1"
