100DaysOfCode: día 6 – empaquetando otros programas

Antes de nada voy a hacer un cambio en estas entradas porque no me entero de nada de lo que he escrito. Y mira, así no se puede vivir. Voy a poner un titular pequeño en cada tema y luego lo etiqueto para el futuro.

ttt

Pues andaba yo tan contento con mi formato cuando Ángel me vuelve a descubrir otra cosa relacionada con ésto. Se trata del formato fountain diseñado expresamente para guiones y textos de este tipo. Y me ha alegrado saber de que hemos llegado a soluciones similares como el empleo de un texto plano (con similitudes a markdown) para la entrada de textos.

Es muy interesante. Me lo he guardado para ver si en el futuro hago algo un poco más complejo o incluso termino adoptando alguno de los programas que ya lo usan.

html2epub

El programa que me descubrió también Ángel del muchacho groña-groña (o muchacha, o muchache) me ha parecido lo bastante útil como para empaquetarlo en formato Debian. No, no tengo intención de llevarlo a los repositorios oficiales porque eso me lleva demasiado trabajo y no estoy ahora para florituras.

He estado pensando y como no tengo confianza ni roce con el autor/a/e no puedo pedirle que acepte mis cambios en su repositorio. La mejor forma de empaquetarlo para que sea instalable y referenciable (esto es muy importante para el empaquetado de programascomo ttt) es clonarlo en un directorio temporal, efectuar cambios si son necesarios, añadir los archivos imprescindibles (como páginas de manual o licencias de uso) y pasar al empaquetado propiamente dicho en otro directorio temporal.

El archivo Makefile que he empleado en este caso está a continuación. Y sí, he creado un repositorio privado para realizar estos cambios. La idea es repetir el proceso cuando el autor/a/e lo haga y automatizarlo todo lo posible. Estoy usando ésto como prueba de concepto. El programa es un script en bash y tampoco tiene mucha miga.

#
#   Nombres, archivos, ...
PACKAGE=html2epub

REPO=https://codeberg.org/grunfink/html2epub.git
TMP_CLONE=.tmp-clone
TMP_BUILD=.tmp-build

#
#   Objetivos 

all:

deb:    build build-docs install-docs 
        myequivs $(PACKAGE).equivs

install-docs:
        build_repo_manpages -i -s man -t $(TMP_BUILD)/usr/share/man

clean:  rmdir-tmp clean-docs 
        clean-repo

clean-docs:
        build_repo_manpages -c -s man

clean-clone: 
        -rm -rf $(TMP_CLONE)

rmdir-tmp:
        -rm -rf $(TMP_BUILD) 

build-docs:
        build_repo_manpages -b -s man

build:  mkdir-tmp 
        mkdir -p $(TMP_BUILD)/usr/bin/
        cd $(TMP_CLONE); make install PREFIX=../$(TMP_BUILD)/usr/bin; cd ..

clone-repo: mkdir-tmp
        git clone $(REPO) $(TMP_CLONE)

mkdir-tmp: $(TMP_CLONE) $(TMP_BUILD)

$(TMP_CLONE):
        -mkdir $@

$(TMP_BUILD):
        -mkdir $@

Hace referencia a varios programas que tengo empaquetados bajo el nombre de mydevtools y que mantengo y empleo para estos casos. myequivs, por ejemplo, es una ampliación de equivs-build con mejoras para instalar desde un árbol directamente. Siempre modificando los archivos estándar que emplea el programa original, sin más artefactos.