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
- https://www.tecgraf.puc-rio.br/im/
- https://www.tecgraf.puc-rio.br/iup/en/download_tips.html
- https://www.tecgraf.puc-rio.br/im/en/building.html
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"