Compilar Tecgraf Debian Bullseye (Debian 11)

nota: el objetivo es NO instalar los archivos en el sistema!

Pre-requisitos

sudo apt install subversion
sudo apt install build-essential

sudo mkdir /opt/src
sudo mkdir /opt/src/tecgraf
sudo chown <user>:<user> /opt/src/tecgraf

Tecgraf IM

Instalar dependencias

Instalar el lenguaje de programación LUA y su librería para desarrollo https://www.lua.org/

sudo apt-get install liblua5.1-0-dev

(instala autoconf automake autotools-dev libltdl-dev liblua5.1-0-dev libncurses-dev libreadline-dev libtool libtool-bin m4)

sudo apt-get install lua5.1

(no instala dependencias)

Instalar la librería libpng http://www.libpng.org/pub/png/libpng.html (referencia oficial del formato PNG)

sudo apt install libpng-dev

(instala libpng-dev libpng-tools)

Instalar la librería FFTW (Faster Fourier Transformation in the West) https://www.fftw.org/ (recurso para realizar la transformada de fourier discreta)

sudo apt install libfftw3-dev

(instala libfftw3-bin libfftw3-dev libfftw3-long3 libfftw3-quad3)

Obtener el código fuente

cd /opt/src/tecgraf
svn checkout svn://svn.code.sf.net/p/imtoolkit/im/trunk/im im

Revisión obtenida: 820

Compilar

Compilar IM

cd im

export LUA_SUFFIX=
export LUA_INC=/usr/include/lua5.1
export LUA_BIN=/usr/bin

make

Linkear librerias

cd lib/Linu510_64/Lua51
ln -s libimlua51.so imlua.so
ln -s libimlua_process51.so imlua_process.so
ln -s libimlua_jp251.so imlua_jp2.so
ln -s libimlua_fftw351.so imlua_fftw3.so

en una línea:

cd lib/Linu510_64/Lua51; ln -s libimlua51.so imlua.so; ln -s libimlua_process51.so imlua_process.so; ln -s libimlua_jp251.so imlua_jp2.so; ln -s libimlua_fftw351.so imlua_fftw3.so

Testear

Variables de entorno que hay que establecer para poder incluir esta libreria:

export LUA_CPATH="/opt/src/tecgraf/im/lib/Linux510_64/Lua51/?.so;;"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/src/tecgraf/im/lib/Linux510_64:/opt/src/tecgraf/im/lib/Linux510_64/Lua51

testear

cd ~
lua5.1
> require "imlua"

(no debe responder nada, si no se carga la libreria mostrará un mensaje de error)

Tecgraf CD

https://www.tecgraf.puc-rio.br/cd/en/building.html

Instalar dependencias

Instalar la libreria de desarrollo de FreeType http://freetype.org/ (para renderizar fuentes tipograficas).

sudo apt install libfreetype6-dev

(instala libbrotli-dev libfreetype-dev libfreetype6-dev)

Nota: usamos FreeType del sistema sin problemas, pero también podemos obtener el código desde el repositorio de Tecgraf y compilarla (svn checkout https://svn.code.sf.net/p/canvasdraw/cd/trunk/freetype freetype, luego cd freetype; make)

Instalar librería y utilidades de desarrollo para GLX (Extensión OpenGL para X Window) https://mesa3d.org/

sudo apt install libgl1-mesa-dev libglu1-mesa-dev

(instala libegl-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libglu1-mesa-dev libglvnd-dev libglx-dev libopengl-dev libpthread-stubs0-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev x11proto-dev xorg-sgml-doctools xtrans-dev)

Instalar la librería de desarrollo para la librería GTK+ https://www.gtk.org/

sudo apt install libgtk-3-dev

(instala icu-devtools libatk-bridge2.0-dev libatk1.0-dev libatspi2.0-dev libblkid-dev libcairo-script-interpreter2 libcairo2-dev libdatrie-dev libdbus-1-dev libegl1-mesa-dev libepoxy-dev libffi-dev libfontconfig-dev libfontconfig1-dev libfribidi-dev libgdk-pixbuf-2.0-dev libglib2.0-dev libglib2.0-dev-bin libgraphite2-dev libgtk-3-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev libicu-dev libmount-dev libpango1.0-dev libpcre16-3 libpcre2-32-0 libpcre2-dev libpcre2-posix2 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpixman-1-dev libselinux1-dev libsepol1-dev libsm-dev libthai-dev libwayland-bin libwayland-dev libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxrender-dev libxtst-dev pango1.0-tools uuid-dev wayland-protocols x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-xext-dev x11proto-xinerama-dev)

Nota: sobre libftgl-dev, usamos la versión del repositorio de Tecgraf y por lo tanto no hace falta instalarla del sistema. Instalar la librería FTGL (uso de FreeType enm OpenGL) https://github.com/frankheckenbach/ftgl sudo apt install libftgl-dev instala libftgl2 libftgl-dev

Obtener el código fuente

Obtener el código de PDFlib Lite (https://www.pdflib.com/) del repositorio de Tecgraf (tiene licencia sólo para uso personal, por eso no está en los repositorios)

cd /opt/src/tecgraf
svn checkout https://svn.code.sf.net/p/canvasdraw/cd/trunk/pdflib7 pdflib7

(Revisión obtenida: 901)

Obtener el código de la librería FTGL (uso de FreeType enm OpenGL) del repositorio de Tecgraf. Nota: CD compila con la versión del sistema (libftgl-dev), pero IUP no! la versión de Tecgraf tiene modificaciones según informa el archivo VERSION. Para mayor consistencia usamos la misma librería para compilar tanto CD como IUP, ojo resta ver si es estable con la versión binaria, sino hay que reemplazarla en el sistema

svn checkout https://svn.code.sf.net/p/canvasdraw/cd/trunk/ftgl ftgl

(Revisión obtenida: 901)

Obtener el codigo de Tecgraf CD

svn checkout https://svn.code.sf.net/p/canvasdraw/cd/trunk/cd cd

(Revisión obtenida: 901)

Compilar

Compilar PDFlib:

cd pdflib7
make

Compilar FTGL:

cd ..
cd ftgl
make

Compilar Tecgraf CD:

cd ..
cd cd

export LUA_SUFFIX=
export LUA_INC=/usr/include/lua5.1
export LUA_BIN=/usr/bin

make

Linkear librerias para Lua

cd lib/Linux510_64/Lua51/
ln -s libcdlua51.so cdlua.so
ln -s libcdluacontextplus51.so cdluacontextplus.so
ln -s libcdluagl51.so cdluagl.so
ln -s libcdluaim51.so cdluaim.so
ln -s libcdluapdf51.so cdluapdf.so

en una línea:

cd lib/Linu510_64/Lua51; ln -s libcdlua51.so cdlua.so; ln -s libcdluacontextplus51.so cdluacontextplus.so; ln -s libcdluagl51.so cdluagl.so; ln -s libcdluaim51.so cdluaim.so; ln -s libcdluapdf51.so cdluapdf.so

Testear

Variables de entorno que hay que establecer para poder incluir esta librería:

cd ~/
export LUA_CPATH="/opt/src/tecgraf/cd/lib/Linux510_64/Lua51/?.so;;"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/src/tecgraf/cd/lib/Linux510_64:/opt/src/tecgraf/cd/lib/Linux510_64/Lua51

testear

cd ~/
lua5.1
> require "cdlua"

Tecgraf IUP

https://www.tecgraf.puc-rio.br/iup/en/building.html

Instalar dependencias

Necesita las librerías de desarrollo para GTK+ (libgtk-3-dev) y para GLX (libgl1-mesa-dev y libglu1-mesa-dev), que ya fueron instaladas como dependencias para Tecgraf CD.

Instalar la librería de desarrollo de WebKitGTK https://webkitgtk.org/ (implementación de la plataforma Webkit para GTK)

sudo apt install libwebkit2gtk-4.0-dev

(instala gir1.2-javascriptcoregtk-4.0 gir1.2-webkit2-4.0 libjavascriptcoregtk-4.0-18 libjavascriptcoregtk-4.0-dev libpsl-dev libsoup2.4-dev libsqlite3-dev libwebkit2gtk-4.0-37 libxml2-dev)

Obtener el código fuente

Librería FTGL (uso de FreeType enm OpenGL) del repositorio de Tecgraf. Importante: IUP NO COMPILA con la versión del sistema (libftgl-dev), la versión de Tecgraf tiene modificaciones según informa el archivo VERSION. Ya compilamos FTGL junto con CD, ver "Tecgraf CD"

Obtener el código de Tecgraf IUP

cd /opt/src/tecgraf

svn checkout https://svn.code.sf.net/p/iup/iup/trunk/iup iup

(Revisión obtenida: 5943)

Compilar

Importante: La librería FTGL ya debe estar compilada (fue compilada al compilar CD, ver "Tecgraf CD")

Compilar Tecgraf IUP atención: g++ si necesita la variable de entorno LUA_LIB para acceder a las librerías del sistema de Lua5.1. IM y CD compilan sin problema sin esta variable (porque gcc no la necesita?)

cd iup

export LUA_SUFFIX=
export LUA_INC=/usr/include/lua5.1
export LUA_LIB=/usr/lib/x86_64-linux-gnu
export LUA_BIN=/usr/bin   

make

Linkear librerías para Lua

cd lib/Linu510_64/Lua51
ln -s libiuplua51.so iuplua.so
ln -s libiupluagl51.so iupluagl.so
ln -s libiupluaimglib51.so iupluaimglib.so
ln -s libiuplua_scintilla51.so iuplua_scintilla.so
ln -s libiupluaweb51.so iupluaweb.so
ln -s libiupluacd51.so iupluacd.so
ln -s libiupluaglcontrols51.so iupluaglcontrols.so
ln -s libiuplua_mglplot51.so iuplua_mglplot.so
ln -s libiupluascripterdlg51.so iupluascripterdlg.so
ln -s libiupluacontrols51.so iupluacontrols.so
ln -s libiupluaim51.so iupluaim.so 
ln -s libiuplua_plot51.so iuplua_plot.so
ln -s libiupluatuio51.so iupluatuio.so

(en una linea)

cd lib/Linu510_64/Lua51; ln -s libiuplua51.so iuplua.so; ln -s libiupluagl51.so iupluagl.so; ln -s libiupluaimglib51.so iupluaimglib.so; ln -s libiuplua_scintilla51.so iuplua_scintilla.so; ln -s libiupluaweb51.so iupluaweb.so; ln -s libiupluacd51.so iupluacd.so; ln -s libiupluaglcontrols51.so iupluaglcontrols.so; ln -s libiuplua_mglplot51.so iuplua_mglplot.so; ln -s libiupluascripterdlg51.so iupluascripterdlg.so; ln -s libiupluacontrols51.so iupluacontrols.so; ln -s libiupluaim51.so iupluaim.so; ln -s libiuplua_plot51.so iuplua_plot.so; ln -s libiupluatuio51.so iupluatuio.so;

Testear

Variables de entorno que hay que establecer para poder incluir esta libreria:

cd ~/
export LUA_CPATH="/opt/src/tecgraf/iup/lib/Linux510_64/Lua51/?.so;;"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/src/tecgraf/iup/lib/Linux510_64:/opt/src/tecgraf/iup/lib/Linux510_64/Lua51

testear

cd ~/
lua5.1
> require "iuplua"