AbanQ: Antes de seguir… cómo se compila

Bueno, antes de seguir con los artículos de cómo integrar JasperServer, u OpenKM, o introducir alguno de los cambios que propongo… creo que es mejor proporcionaros las herramientas para compilar estas versiones de AbanQ tanto en windows como en linux, para crear así los clientes con las opciones de debug, o quick.

He creado un .zip con mi versión actual de AbanQ, y digo “mi” versión, porque incluye los múltiples cambios que he ido publicando en este blog, y que enumero

  • Formateado automático de los FLFieldDB que contienen números, de tal forma, que las cantidades tales como 100000 se representan como 100.000,00 Esto hace mucho más legible las cantidades. Aquí
  • Desde QSA (el lenguaje de scripting) pueden accederse al manejo de los QComboBox (así, por ejemplo, he podido meter en algunos formularios objetos QComboBox y utilizarlos directamente sin necesidad de tener que estar asociados a columnas de bases de datos. Esto es especialmente útil para realizar filtrados de campos estáticos o no guardados en bases de datos).
  • Los FLTableDB pueden presentar el resultado de Querys complejas, al agregarse una propiedad: qryVisualizacion. De esta forma, la riqueza visual de lo que pueden representar es mayor. La diferencia con la versión oficial de AbanQ, es que ese FLTableDB no es readonly, sino que se utiliza en la edición, creación y eliminación de registros. Aquí
  • Cambios estéticos que afectan principalmente a la versión para Windows, ya que la original, no me gustaba (dejo el tema de windows por defecto, sin modificarlo). Aquí
  • Los tamaños y posiciones de los formularios utilizados se almacenan, permitiendo una mejor experiencia del usuario. Aquí.
  • Posibilidad de utilizar vistas cuando se utilice un motor PostgreSQL. Esto, entre otras cosas, permite una mejor integración de los datos de otros programas con AbanQ. Aquí
  • Corrección de un bug por el que no se filtraban adecuadamente campos con valores int, uint o double. Aquí.
  • Incorporación del estilo Windows XP (esto no lo incluye la versión original de AbanQ).
  • El código de la integración con JasperServer que se verá en siguientes artículos.

Sólo tenéis que descomprimir el archivo .zip que os adjunto. Una vez hecho esto, si utilizáis Windows, debéis ajustar las variables señaladas en los archivos setenv.bat y build-config.bat. Si utilizáis Linux, debéis hacer lo mismo en el archivo setenv.h

Para compilar en Linux, necesitáis gcc, g++ y demás herramientas que seguro tendréis instaladas. Para compilar en Windows, necesitáis descargaros, MinGW. Además, es conveniente instalar el MinGW API for MS-Windows  de aquí.

Compilación bajo Windows. Ubicados en el directorio donde habéis descomprimido las fuentes, ejecutar en este orden (por si no me explico bien haced un Inicio->Ejecutar-> cmd y cd al directorio en el que tengáis las fuentes ;-):

setenv.bat
build-config.bat
build-pthreads.bat
build-qt.bat
build-qsa.bat
build-abanq.bat

Para los que estéis en Linux, es tan sencillo, como desde una consola, y en el directorio de las fuentes, ejecutar

setenv.sh
compilar-qt.sh
compilar-qsa.sh
compilar-abanq.sh

Por defecto, la versión Windows viene preparada para compilar una versión final con un cliente quick, y la versión de Linux, para compilar una versión debug y con cliente “pesado” o completo.

Tened en cuenta que hay dependencias cruzadas, que no están muy bien resueltas: Por ejemplo, flbase depende de kugar, y kugar depende de flbase… así que al construir por primera vez, puede que os de error (la librería de flbase quiere enlazar a la de kugar, pero la de kugar no está construida porque faltan archivos objetos de flbase que no pueden construirse sin hacer previamente un moc de flbase…). Solución si os perdéis un poco en estos temas: entrad directamente en los directorios (src/flbase o src/kugar) y haced ahí el make.

Espero que con estas herramientas muchos os animéis a compilar y a introducir modificaciones, y corregir los muchos fallos que seguro he cometido. Cuanto más crezca la comunidad, mejor para todos.

Aquí teneís el archivo

Nota: Muchas de las modificaciones necesarias para compilar bajo Windows, las proporcionó juancrobles, a través del foro de AbanQ en Google, a  través de diversos hilos y del fichero Modificaciones_abanq2.3-v1.1.zip disponible aqui.




You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

27 Responses to “AbanQ: Antes de seguir… cómo se compila”

  1. chencho Says:

    Buenas tardes.

    Lo primero, gracias por facilitar estos tutoriales acerca de abanq.

    Estoy intentando compilar abanq en ubuntu x64, pero me da problema el hoard. Parece que no se entiende con el qt.

    Voy a ver si descargando aparte el hoard y compilando se soluciona, aunque esto de dependencias de versiones en abanq es complicado.

    Un saludo.

  2. chencho Says:

    No hay forma, se queda parado en el qsa y de ahí no sale :’(

  3. David Pinelo Says:

    ¿Qué problemas te da hoard? Pon una traza, a ver si puedo echarte una mano…

  4. David Pinelo Says:

    Dame algún dato más… alguna traza para ver en qué punto se te queda.

    Saludos

  5. chencho Says:

    Buenas de nuevo.

    Bajo el código.

    Ejecuto sh setevn.sh
    Ejecuto sh compilar-qt.sh

    Este es el error:

    QMAKESPEC has not been set, so configuration cannot be deduced.
    Error processing project file: /home/sbellver/Descargas/abanq/src/hoard/hoard.pro
    make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

  6. chencho Says:

    Copiando libhoard.so descargado desde la web de hoard y puesto en src/qt/lib parece que tira, pero se queda en:

    Building 2nd stage configure
    main.cpp: In function ‘void dumpMessages()’:
    main.cpp:46: warning: format not a string literal and no format arguments
    configutils.cpp: In function ‘bool checkLicense()’:
    configutils.cpp:340: warning: suggest parentheses around ‘&&’ within ‘||’
    configutils.cpp:378: warning: suggest parentheses around ‘&&’ within ‘||’

    Con el libhoard.so compilado por mi me fallaba antes de este paso, aunque el qsa se quedaba allí.

    Voy a darle el boto de confianza a ver lo que tarda en compilar si hace algo.

  7. chencho Says:

    Joder, voto con “b”…

    Lleva 10 minutos sin dar ningún mensaje en absoluto.

  8. chencho Says:

    Sigue enganchado en el mismo sitio.

    Además, si intento hacer un sh compilar-abanq.sh:

    Qmake version: 1.07a (Qt 3.3.8)
    Qmake is free software from Trolltech ASA.
    -e OK : qmake encontrado

    -e Creando Makefiles con qmake…

    QMAKESPEC has not been set, so configuration cannot be deduced.
    Error processing project file: /home/sbellver/Descargas/abanq/src/advance/advance.pro
    make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.
    make: *** No hay ninguna regla para construir el objetivo `install’. Alto.

    Entre otros fallos similares

  9. David Pinelo Says:

    Umm… Es evidente que por alguna razón QMAKESPEC no está bien puesto. Si te fijas, en setenv.sh hay una línea
    OPT_QMAKESPEC=”linux-g++”

    que prepara una variable para establecer esa variable. De hecho, en el ./compilar-qt.sh se debe ejecutar

    ./configure -platform $OPT_QMAKESPEC -prefix $PREFIX -R$PREFIX/lib -L$PREFIX/lib $QT_DEBUG -thread -no-pch -no-exceptions -buildkey $
    BUILD_KEY -stl -no-cups -disable-opengl -xft -xrender -no-nas-sound -no-nis -qt-libjpeg -qt-gif -qt-libmng -qt-libpng -qt-imgfmt-png
    -qt-imgfmt-jpeg -qt-imgfmt-mng

    y ese configure, creará una serie de ficheros .qmake.cache que deberán ser copiados a todos y cada uno de los directorios que serán compilados utilizando las librerías Qt como soporte.
    Es decir, copia al directorio de hoard el archivo .qmake.cache de qt

    cp ./qt/.qmake.cache ./hoard

    y a ver si te compila…

  10. David Pinelo Says:

    Definitivamente, creo que te falta copiar el fichero .qmake.cache que encontrarás en el directorio src/qt a los directorios src/hoard src/advance…

  11. chencho Says:

    Aún así el problema con el hoard estaba solucionado comentando la línea de compilación y copiando el libhoard.so a su sitio.

    Sin embargo, sigue fallando en la compilación de qsa :(

  12. David Pinelo Says:

    Bueno, a ver, por partes. Vamos a olvidarnos de scripts…

    1.- Doy por hecho que has compilado Qt 3.3
    2.- Doy por hecho que has compilado hoard.
    3.- Entras en src/qsa y aquí es donde tienes problemas.

    Yo también tuve a veces problemas al intentar compilar aquí. Si entraba en src/qsa, hacía un configure y un make, se quedaba colgado para siempre en algunas ocasiones… La solución fue:

    Entrar en src/qsa/src y aquí hacer un

    qmake
    make
    make install

    y así conseguí compilar e instalar qsa…

  13. chencho Says:

    No hay forma:

    Compilando QSA…
    «../qt/.qmake.cache» -> «.qmake.cache»
    «../qt/.qmake.cache» -> «src/qsa/.qmake.cache»
    «../qt/.qmake.cache» -> «src/plugin/.qmake.cache»
    Using Qt library in /home/sbellver/Descargas/abanq/build.
    Building 2nd stage configure
    configutils.cpp: In function ‘bool checkLicense()’:
    configutils.cpp:340: warning: suggest parentheses around ‘&&’ within ‘||’
    configutils.cpp:378: warning: suggest parentheses around ‘&&’ within ‘||’

    Y ahí se queda el jodío.

    ¿Alguna idea mágica? Estoy como loco por probar las mejoras que has introducido :)

  14. David Pinelo Says:

    A mí me pasa eso mismo si hago lo que te decía en el comentario anterior. Es decir, si intento hacer el configure. Vamos a suponer que qsa está en ./src/qsa.

    Haz un cd ./src/qsa/src

    asegúrate de tener definidas en el entorno las variables QTDIR=$DIRECTORIO_DE_ABANQ/src/qt y en tu PATH=$DIRECTORIO_DE_ABANQ/src/qt/bin:$PATH y con eso haz un

    qmake src.pro
    make
    make install

    y sáltate el hacerlo desde el raíz de ./src/qsa

    La razón está en los ficheros del directorio del configure2 en los que hay algo raro (se mete en un bucle infinito por alguna razón rara que estuve mirando en su tiempo). Pero como encontré este atajo, lo olvidé.

    De todas formas, este error que te da a tí, no daba siempre, daba de vez en cuando (no sé muy bien porqué). Dime si te funciona.

    Por cierto, las mejoras que ha introducido seguro que tienen mil bugs, así que todos los fallitos que encuentres, dímelos para ir puliéndolos ;-)

  15. chencho Says:

    Aún así me tira varios errores.

    El qmake lo hace bien, pero el make…

    qseditor.cpp:318: error: ‘class QSAEditor’ has no member named ‘copy’
    qseditor.cpp: In member function ‘void QSEditor::selectAll()’:
    qseditor.cpp:336: error: ‘class QSAEditor’ has no member named ‘selectAll’
    qseditor.cpp: In member function ‘QTextEdit* QSEditor::textEdit() const’:
    qseditor.cpp:508: error: cannot convert ‘QSAEditor*’ to ‘QTextEdit*’ in return
    make[1]: *** [.obj/debug-shared-mt/qseditor.o] Error 1
    make[1]: se sale del directorio `/home/sbellver/Descargas/abanq/src/qsa/src/qsa’
    make: *** [sub-qsa] Error 2
    sbellver@rosita:~/Descargas/abanq/src/qsa/src$

    estas son las últimas líneas.

  16. David Pinelo Says:

    Juraría que te faltan includes o algo así… ¿El directorio abanq/src/qsa/src/editor tiene archivos? ¿Tiene el archivo qsaeditor?
    Qué cosa más rara…

  17. chencho Says:

    Sip, tiene archivos y en concreto el que mencionas (cpp y h)

  18. David Pinelo Says:

    Jarl… reconozco que me estás pillando… ahora mismo, no caigo en qué puede estar pasando. ¿Te importa si recopilamos? Enumérame todos los pasos que has seguido, a ver si falta algo…

  19. chencho Says:

    Ok, sin problemas.

    1- Descargar código

    2- Descomprimir código

    3- Ejecutar sh setenv.sh

    4- Ejecutar sh compilar-qt.sh

    Fallo en hoard
    Descargar libhoard.so para x64 desde la página
    Copiar libhoard.so en src/qt/lib (si mal no recuerdo)
    Comentar la compilación de hoard y su copia a la carpeta antes mencionada

    5- Ejecutar compilar-qt.sh

    Se queda en la compilación de QSA, bucle infinito al parecer (más de una hora sin hacer nada)

    6- Definir variables QT y PATH como indicabas

    7- qmake y make en el directorio src/qsa/src

    Fallo al hacer el make.

    Y hasta aquí podemos leer :(

  20. David Pinelo Says:

    Ummm!!! Así que estamos compilando para 64 bits!! jeje. Reconozco que no he probado haber compilado para 64 bits. (No me había dado cuenta). Claro, ahora me explico porqué no te compilaba hoard, y porqué te lo tuviste que bajar de la web. (Es que la versión distribuida, evidentemente es la de 32 bits).

    Vale. A ver. El paso 5, hasta cierto punto es “normal”, es decir, lo del bucle infinito, no me preocupa, ya que es en una herramienta configure, que (creo) no aporta gran cosa. El asunto es el paso 7, que nos devuelve a la situación justo antes de hacerte escribir este post. Vamos, que te he hecho perder el tiempo, aunque al menos me ha servido para saber que trabajamos en 64 bits.

    Comprobemos una cosa: Mira, la clase que te está dando problemas QSEditor, internamente define una clase QSEditorPrivate, que utiliza a su vez a la clase QSAEditor. QSAEditor está definida en el directorio src/qsa/editor. Esta clase a la vez extiende a la clase Editor (e incluye a editor.h). Si te fijas, en src/qsa/editor hay un archivo, editor.pri que define lo siguiente:

    HEADERS += $$EDITORDIR/qsaeditor.h \
    $$EDITORDIR/qsacompletion.h \
    $$EDITORDIR/qsabrowser.h \
    $$EDITORDIR/qsasyntaxhighlighter.h \
    $$EDITORDIR/qsaeditorinterface.h
    # $(QTDIR)/tools/designer/editor/editor.h \
    # $(QTDIR)/tools/designer/editor/parenmatcher.h \
    # $(QTDIR)/tools/designer/editor/completion.h \
    # $(QTDIR)/tools/designer/editor/viewmanager.h \
    # $(QTDIR)/tools/designer/editor/markerwidget.h \
    # $(QTDIR)/tools/designer/editor/conf.h \
    # $(QTDIR)/tools/designer/editor/browser.h \
    # $(QTDIR)/tools/designer/editor/arghintwidget.h \
    # $(QTDIR)/tools/designer/editor/cindent.h

    Como ves, ahí se define de dónde debe coger esos archivos que te faltan. Al tener problemas con ese bucle infinito del paso 5, y saltárnoslo, no estamos fijando adecuadamente la variable $EDITORDIR… (Ese fichero está modificado por Infosial). Solución parcial. Descomenta las líneas que contienen $QTDIR y comenta las que tienen $EDITORDIR y vuelve a hacer el make a ver qué ocurre.

    Repite este procedimiento en todos aquellos archivos en los que pudieras tener errores similares.

  21. chencho Says:

    Bueno, he tenido que reinstalar porque el nautilus me estaba matando el PC.

    Además de lo que tengo pendiente por hacer, ¿podrías subir una versión compilada del ejecutable en windows y linux? Por cierto, tengo pendiente también hacer la compilación en windows.

    Si lo que me está dando problemas es el x64, meto una máquina virtual con x32 y a correr :P

  22. chencho Says:

    La compilación en Windows también “revienta” con el Qt :( en qbitarray.cpp, nada más empezar.

  23. David Pinelo Says:

    Y el error es….

  24. chencho Says:

    lo siento, no tengo la máquina delante, pero algo así como que qbitarray.o es necesario para qbitaray.cpp en el directorio /qt/src/tools

    Disculpa si insisto, pero ¿podrías subir alguna versión compilada? cada vez lo veo más negro ;)

  25. David Pinelo Says:

    Subo una versión compilada. Voy a preparar una y la pongo disponible.

  26. chencho Says:

    GRAAAACIAS, si puedes ponerlo tanto en windows (quick) como en linux (dev) sería perfecto.

    De todas formas no desisto de compilarlo.

  27. chencho Says:

    Como va la cosa? :)

    Supongo (y sé) que el principio de año no es como para tener demasiado tiempo libre XD

Leave a Reply

Debe estar logado para añadir un comentario.