GwML: - Escrito en Ocaml (Objective Caml). - Se distribuía junto con otro software en un paquete llamado Efuns. - Todo esto es obsoleto, el código data de principios de la década de 2000. http://web.archive.org/web/20040326173006/http://pauillac.inria.fr/para/cdrom/prog/unix/efuns/eng.htm (Réplica en Github): - https://github.com/korya/efuns ---------------------------------------------------------------- Efuns y GwML, al menos la copia disponible en Github, REQUIEREN Ocaml 2.04. Otras versiones causan errores de compilación: Ocaml 1.07, 2.02, 2.99, 3.x y 4.x NO FUNCIONAN. Ocaml 2.04 data de 1999 pero probablemente puede instalarse en un sistema moderno. Sí, puede hacerse: lo he llegado a compilar con éxito con GCC 8.4.0. Ahora, el subdirectorio "otherlibs/unix" es complicado: deben añadirse a las opciones de compilación de GCC "-std=c99" y "-D_POSIX_SOURCE", y algunos archivos --como mínimo stat.c-- requieren también "-D_BSD_SOURCE". Todo esto debería ser automático, pero el sistema de compilación de Ocaml 2.04 resulta muy rudimentario. En un sistema actual, que ya tenga una edición reciente de Ocaml, la que nos ocupa ahora debe dejarse en un lugar apartado en el que no interfiera. Yo elegí /opt/programas/ocaml-2.04. ---------------------------------------------------------------- GwML requiere: - Ocaml 2.04 (http://caml.inria.fr/pub/distrib/) - Imlib (opcional: y NO es Imlib2, sino su predecesora). - ESD (opcional: antiguo demonio de sonido de Gnome, hoy muy obsoleto). - Otras partes del paquete Efuns: enlaces con Xlib, etc. Para compilar GwML hay que tener en cuenta un par de cosas: Asegurarse de usar Ocaml 2.04, y no cualquier otra versión que pueda estar presente en el sistema. Por ejemplo poniendo la ruta hacia ella al principio de la variable de entorno $PATH: export PATH=/opt/programas/ocaml-2.04/bin:$PATH Hay varios archivos .depend ocultos por el árbol de código. En ellos se hace referencia a rutas que sólo existían en el ordenador del autor (/home/cremant/lefessan), y esto lógicamente causará errores en cualquier otro sistema. He preparado un sencillo script, cambiar_refs.sh, que corrige esto de forma automática. Sustituye estas referencias erróneas por las rutas correctas en cada instalación. El archivo dynlink/interp.ml puede causar errores --"Unbound constructor OpBEQ"-- al ejecutar "make opt". Preparé una versión "corregida" a base de eliminar las líneas problemáticas. ¿Será eso correcto? De modo que, en resumen: $ export PATH=/bin:$PATH $ ./configure $ sh cambiar_refs.sh $ make byte && make install (bytecode) $ cp interp.ml.corregido dynlink/interp.ml $ make opt && make installopt (código nativo, ¿más eficiente?) $ cd gwml; make install-themes $ /bin/gwml_install Casi todo el código de GwML y Efuns está en Ocaml, por lo que GCC apenas tiene relevancia aquí. Hay unos poquitos archivos escritos en C, y sólo uno en C++. Y tampoco se presentan problemas con las versiones: GCC 3.3 funciona, pero el mucho más actual GCC 8.4.0 también. (Paso adicional: tras la compilación, hay que copiar también todos los archivos .cmo de los subdirectorios xlib, common y tookit a la carpeta $prefix/lib/xlib/2.04-/, para obtener una funcionalidad más completa).