miércoles, septiembre 06, 2006

Compilando Blender: No todo es color de rosa

Después de clases en la universidad, llegue dispuesto a cumplir con algunas tareas pendientes, como enviar algunos e-mails y en fin muchas más cosas. Pero dentro de las tareas principales se encontraba la compilación de Blender 2.42a, pues el fin de semana junto con Luis Andrés, estuvimos renderizando algunas partes del video promocional de SLUD 5, pero al momento de sincronizar la pista de audio con el video, no fue posible reproducir la pista musical, dado que Blender presentaba un error de acceso al dispositivo de sonido. Tras varias pruebas, no fue posible arreglar el inconveniente y optamos por compilar el software y mirar que pasaba. Así es que hoy, inicie la compilación del programa en cuestión sin muchos tropiezos y tras uno que otro error, los paquetes que en Debian se deben instalar son los siguientes:
  • python2.3 o python 2.4 (yo use el 2.3)
  • libopenal-dev
  • libalut-dev
  • libopenexr-dev
  • libopenexr2c2a
  • openexr
  • libsdl1.2-dev
y otros paquetes un poco más estandares, que pueden encontrar en el archivo INSTALL y README que viene con el código fuente. Después de instalar dichos paquetes, como lo dije después de varios errores de compilación, fue cuestión de teclear make en la terminal de comandos, estando en el nivel superior de la carpeta que se crea al descomprimir el archivo tar.gz. Sin embargo, se presentaron algunos problemas, dado que los scripts de compilación buscan algunas cabezeras en /usr/local/include y no en /usr/include, lo cual debi solucionar de una forma que no me pareció la más adecuada:

ln -s /usr/include/OpenEXR/ /usr/local/include/OpenEXR

Pues al momento de compilar uno de los módulos, make decia que no encontraba el archivo IMathVec.h. Con el enlace simbólico anterior, se solucionó el incoveniente. Finalmente, cuando el paso final estaba en proceso, surgió un problema que pensé me iba a impedir disfrutar de Blender:

====> make all in source/gameengine/Physics/Bullet
====> make all in source/gameengine/GamePlayer====> make all in source/gameengine/GamePlayer/common
====> make all in source/gameengine/GamePlayer/common/unix
====> make all in source/gameengine/GamePlayer/ghost
make[1]: *** No rule to make target `/usr/local/lib/libIlmImf.a', needed by `/home/jpromerobx/Software/blender-2.42a/obj/linux-glibc2.3.6-x86_64/bin/blender'. Stop.
make: *** [all] Error 1
obiwan:/home/jpromerobx/Software/blender-2.42a#

Llegue a pensar (erróneamente) que habia un problema con el archivo nan_compile.mk y buscando por google, me encontré que debia desactivar algunos parámetros, pero de nada funcionó. El problema radicaba en que no encontraba ciertos archivos (librerias) (Fíjensen en el "needed by .....", yo no lo vi !.). Entonces de igual manera, toco enlazar:

ln -s /usr/lib/libIlmImf.a /usr/local/lib/libIlmImf.a

ln -s /usr/lib/libHalf.a /usr/local/lib/libHalf.a

ln -s /usr/lib/libIex.a /usr/local/lib/libIlex.a

y santo remedio, Terminó la compilación de forma satisfactoria. Lo único que me pareció un poco extraño es que el ejecutable de blender no haya quedado en bin/ sino en obj/linux-glibc2.3.6-x86_64/bin/, pero no fue problema encontrarlo. Al ejecutarlo funcionó perfectamente, pero el problema del sonido siguió apareciendo. El mismo mensaje en la terminal al momento de utilizar el sequencer de Blender:

Couldn't open audio: No available audio device

Consulté varios foros en internet, estuve hablando con algunas personas en los canales #blender y #blendercoders, pero sin ninguna solución. De hecho había alguien que estaba consultando el mismo problema que yo, pero bajo Suse. Después de una charla en donde tratabamos de hallar una solución, definitivamente decidimos escribirles a los desarrolladores de Blender explicándoles el problema, pues bastante gente lo ha reportado, pero aún no se cuenta con una solución. Espero poder sobrepasar este inconveniente y poder darle una solución a este problema.

4 comentarios:

Espartano dijo...

Pues que tarjeta de sonido tienes ?

jpromerobx dijo...

Tengo una tarjeta de Sonido Realtek ALC880, que viene integrada en la Board (MSI). Sin embargo, aún sigo investigando cómo resolver el problema. Espero en un post no muy lejando escribir la solución.

krs dijo...

El problema de /usr/local/lib que comentas supongo que se puede solucionar pasandole algun parametro al ./config antes de compilar, que no has comentado que lo hayas tenido que hacer.

Normalmente en la mayoría de software para *nix, primero va el ./config [opciones] y despues ya podemos hacer el make.

En tu caso, seguramente la opcion que te falta pasar es PREFIX=/usr , seguramente por defecto el PREFIX tendrá el valor /usr/local

De todas formas, yo no he tenido que compilar blender a mano, uso gentoo y portage se encarga de ello, pero lo que te comento es el procedimiento habitual, de todas formas, podrás salir de dudas o leyendo la documentacion (de la instalacion) o con ./config --help en el directorio de los sources.

Un saludo

jpromerobx dijo...

krs, gracias por el comentario. Quizás omití pasar el parámetro PREFIX al configure de Blender, con lo cual seguramente el proceso de compilación se hubiera llevado sin problemas. Sin embargo, probaré con dicha opción, para salir de dudas.