Bueno, he dado un paso atrás y ¿dos? hacia delante.
Comenté en el chat que iba a tirar todo el código y emepzarlo de nuevo en Python.
La razón principal es para evitar los problemas de compilación cruzada(nada me salía)
Pensé partir de Grotesque, pero bueno, partí de cero otra vez, y ya estoy tras 2 días de duro trabajo muy adelantado
Estoy más o menos donde lo había dejado con el C++, con una gran excepción, ya tengo una especie de resolutor de dependencias.
Eso sí, lo siento por Al-K, pero me he cargado todo la especificación ORCO, la he cambiado demasiado(sé que no debería hacerse, sino ceñirse a lo que te dan, pero he hecho al revés y he adaptado la especificación a mi programa)
Quien se quejaba antes (Johan

de lo de hacer makefiles pues ahora va a ser mucho peor, pues son más makefiles aún, algo así como tareas ant.
Está basado en targets que tienen requires y cada require es satisfecho por una serie de depends.
Cuando requerimos un target se comprueban sus requires y los que fallan se lanzan sus depends.
De este modo se hace todo en cadena, ya me funciona todo, sólo necesito datos de verdad, cuantos más mejor, para ir puliéndolo todo.
El problema de la especificación de antes era que perdía el control sobre los ficheros, no un gran problema pues podría haber otra base de datos local... no sé. Lo que hice fue sacar lógica del programa si bien es verdad que en lugar de aligerarlo lo complica y la especificación.
Un ejemplo de cómo se juega un juego ahora, en games.xml tenemos esto:
Código:
<targets>
<target name="play" default="1">
<requires dir="${GAMES}/a" extension=".ape" type="anyfile" >
<depends target="install" type="target"/>
</requires>
<requires name="glulx 2.0" type="format">
<depends name="glulx 2.0" type="format"/>
</requires>
<requires type="unmatchable"> <!-- requerimiento nunca cumplible, así lanza siempre estas órdenes cuando se requiere el target-->
<depends format="glulx 2.0" type="execute">
<arg value=".glulx" bind="FILE"/>
</depends>
</requires>
</target>
<target name="install">
<requires file="${DOWNLOADS}/a.zip" type="zipfile">
<depends to="${DOWNLOADS}/a.zip" type="download">
<mirror url="http://www.vbaccelerator.com/home/vb/code/vbmedia/audio/Lossless_WAV_Compression/Sample_APE_File.zip" />
</depends>
</requires>
<requires type="unmatchable">
<depends file="${DOWNLOADS}/a.zip" to="${GAMES}/a" type="unzip"/>
<depends file="${DOWNLOADS}/a.zip" type="delete"/>
</requires>
</target>
</targets>
Formats no lo he tocado, en platforms.xml algo parecido:
Código:
<targets>
<target name="play" default="1">
<requires type="unmatchable">
<depends target="install" type="target"/>
<depends target="execute" type="target"/>
</requires>
</target>
<target name="install">
<requires file="${PLATFORMS}/garg/sh3.ape" type="file">
<depends to="${DOWNLOADS}/gargoyle.zip" type="download">
<mirror url="http://www.vbaccelerator.com/home/vb/code/vbmedia/audio/Lossless_WAV_Compression/Sample_APE_File.zip"/>
</depends>
<depends file="${DOWNLOADS}/gargoyle.zip" to="${PLATFORMS}/garg" type="unzip"/>
<depends file="${DOWNLOADS}/gargoyle.zip" type="delete"/>
</requires>
</target>
<target name="unzip">
<requires file="${DOWNLOADS}/gargoyle.zip" type="zipfile">
<depends file="${DOWNLOADS}/gargoyle.zip" to="${PLATFORMS}" type="unzip" />
</requires>
</target>
<target name="execute">
<requires type="unmatchable">
<depends command="emacs" type="command">
<arg name="${FILE}"/>
</depends>
</requires>
</target>
</targets>
Todo esto se resume en que si haces doble click en ese juego se abre el emacs.
Me he pasado a wxPython, creí que tendría un visor html pero no va muy bien. De todos modos está bastante separada la interfaz de la aplicación, puedo volver a gtk+
Ahora lo que necesito son datos para probar intensivamente, creo que mañana o cuanto antes haré un programilla que le puedas meter los datos y genere xml's en ORCO y luego les pediré que me echen una mano.
Saludos.