Avances, Diario de...

Started by SplinterGU, April 17, 2008, 03:00:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

No sé si estamos haciendo lo mismo. Siento ser tan pesado, pero entiendo que estás dejando las librerías mod* como tal y estás creando los enlaces a ellas como libmod*, ¿verdad?. Y en mi código bennu, lo he dejado como estaba cuando hacía lo de LD_LIBRARY_PATH: import "mod_video";
Sólo por si tiene alguna trascendencia, he puesto todas las lib* (las que vienen con el paquete) y las mod* en el mismo directorio, y he creado los enlaces en ese también.

SplinterGU

no, esta bien... no hay problema...

que directorio? el de tu proyecto? el que usas con LD_LIBRARY_PATH? como haces el import?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#437
A ver, lo que yo he hecho es copiar las librerías mod* y lib* a /opt/bennugd/lib. Además, he copiado los binarios bgdc y bgdi a /opt/bennugd/bin.
Luego he creado el fichero /etc/ld.so.conf.d/bennugd-i386.conf con el siguiente contenido:/opt/bennugd/libLuego he hecho los enlaces de las librerías mod* a libmod* del directorio /opt/bennugd/lib de la siguiente forma:[code language="bash"]for i in mod*; do ln -s $i lib$i; done[/code]De forma que ahora tengo en ese directorio las lib* originales, las mod* originales y un montón de libmod* enlazando con éstas últimas.
Ahora hago un /sbin/ldconfig para que actualice la base de datos de librerías.
Al consultar esa base de datos obtengo:[code language="bash"][root@localhost ~]# /sbin/ldconfig -p | grep '/opt'
        mod_wm.so (libc6) => /opt/bennugd/lib/mod_wm.so
        mod_video.so (libc6) => /opt/bennugd/lib/mod_video.so
        mod_timers.so (libc6) => /opt/bennugd/lib/mod_timers.so
        mod_time.so (libc6) => /opt/bennugd/lib/mod_time.so
        mod_text.so (libc6) => /opt/bennugd/lib/mod_text.so
        mod_sys.so (libc6) => /opt/bennugd/lib/mod_sys.so
        mod_string.so (libc6) => /opt/bennugd/lib/mod_string.so
        mod_sound.so (libc6) => /opt/bennugd/lib/mod_sound.so
        mod_sort.so (libc6) => /opt/bennugd/lib/mod_sort.so
        mod_scroll.so (libc6) => /opt/bennugd/lib/mod_scroll.so
        mod_screen.so (libc6) => /opt/bennugd/lib/mod_screen.so
        mod_say.so (libc6) => /opt/bennugd/lib/mod_say.so
        mod_regex.so (libc6) => /opt/bennugd/lib/mod_regex.so
        mod_rand.so (libc6) => /opt/bennugd/lib/mod_rand.so
        mod_proc.so (libc6) => /opt/bennugd/lib/mod_proc.so
        mod_path.so (libc6) => /opt/bennugd/lib/mod_path.so
        mod_m7.so (libc6) => /opt/bennugd/lib/mod_m7.so
        mod_mouse.so (libc6) => /opt/bennugd/lib/mod_mouse.so
        mod_mem.so (libc6) => /opt/bennugd/lib/mod_mem.so
        mod_math.so (libc6) => /opt/bennugd/lib/mod_math.so
        mod_map.so (libc6) => /opt/bennugd/lib/mod_map.so
        mod_key.so (libc6) => /opt/bennugd/lib/mod_key.so
        mod_joy.so (libc6) => /opt/bennugd/lib/mod_joy.so
        mod_grproc.so (libc6) => /opt/bennugd/lib/mod_grproc.so
        mod_flic.so (libc6) => /opt/bennugd/lib/mod_flic.so
        mod_file.so (libc6) => /opt/bennugd/lib/mod_file.so
        mod_ffi.so (libc6) => /opt/bennugd/lib/mod_ffi.so
        mod_effects.so (libc6) => /opt/bennugd/lib/mod_effects.so
        mod_draw.so (libc6) => /opt/bennugd/lib/mod_draw.so
        mod_dir.so (libc6) => /opt/bennugd/lib/mod_dir.so
        mod_debug.so (libc6) => /opt/bennugd/lib/mod_debug.so
        mod_cd.so (libc6) => /opt/bennugd/lib/mod_cd.so
        mod_blendop.so (libc6) => /opt/bennugd/lib/mod_blendop.so
        libwm.so (libc6) => /opt/bennugd/lib/libwm.so
        libvideo.so (libc6) => /opt/bennugd/lib/libvideo.so
        libtext.so (libc6) => /opt/bennugd/lib/libtext.so
        libsdlhandler.so (libc6) => /opt/bennugd/lib/libsdlhandler.so
        libscroll.so (libc6) => /opt/bennugd/lib/libscroll.so
        librender.so (libc6) => /opt/bennugd/lib/librender.so
        libmouse.so (libc6) => /opt/bennugd/lib/libmouse.so
        libkey.so (libc6) => /opt/bennugd/lib/libkey.so
        libgrbase.so (libc6) => /opt/bennugd/lib/libgrbase.so
        libfont.so (libc6) => /opt/bennugd/lib/libfont.so
        libdraw.so (libc6) => /opt/bennugd/lib/libdraw.so
        libblit.so (libc6) => /opt/bennugd/lib/libblit.so
        libbgdrtm.so (libc6) => /opt/bennugd/lib/libbgdrtm.so
[/code]Y como digo, las librerías que mete en la base de datos son las mod*, no las libmod*·
Por lo que tengo entendido, la razón de que busque las lib* pero luego meta en la base de datos las librerías reales (en caso de que las lib* sean enlaces) es porque así, con linkar contra (p. ej.) /usr/lib/libamarok.so y en cada sistema se puedan utilizar versiones de librerías distintas, mientras sean compatibles a nivel de símbolos. Es decir, en mi ordenador /usr/lib/libamarok.so es en realidad un enlace a /usr/lib/libamarok.so.0.0.0 y en otro sistema puede ser un enlace a /usr/lib/libamarok.so.0.1.2. Eso te permite linkar contra librerías de forma genérica o contra versiones en particular (linkando contra el enlace o contra el fichero en sí).

En cuanto a lo del LD_LIBRARY_PATH me refería a que mi código lo tengo igual que cuando hacía falta lo del LD_LIBRARY_PATH, es decir, para importar mod_video hago un simple:[code language="bennu"]import "mod_video";[/code] y no [code language="bennu"]import "libmod_video";[/code] En realidad mi variable de entorno LD_LIBRARY_PATH no está ni siquiera definida... Y bueno, mi proyecto está en /home/user/Programas/karaoke en un ordenador y en /home/joseba/cvs/karaoke en otro, pero podría estar en cualquier lado.

¡Vaya rollo que te acabo de meter!. Espero haberme explicado :)

SplinterGU

no, no hay rollo...
exactamente eso mismo hice yo, pero el ldconfig de mi debian 64, no me incorporo los mod... si las libs, pero no los mods... y ademas de eso, haciendo luego import "mod_video", no lo tomo... no se si sera un bug de la version 64 bits, pero no me extraña... que version tenes vos?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Estoy con una fedora 8 de 32 bits y con una Ubuntu 8.10 de 32 también.
Si me das un minuto, voy a probar con una redhat ws 4 de 64 bits.

SplinterGU

dale... gracias...
igualmente para quitarnos de la duda, luego vuelvo a probar, pero tene por seguro que el asunto de los links fue una de las primeras cosas que hice y no funciono... quizas me olvide el ldconfig, pero es raro porque lo tengo en el script install, pero quien sabe... ahora no puedo, pero luego vuelvo a probar y te comento.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#441
Bueno, entramos en el campo de lo extraño. Lo acabo de comprobar en el ordenador de 64 bits con la redhat (un poquito antigua, todo hay que decirlo) y funciona igual...
Yo qué se... son chorradas, pero intenta hacerlo a mano y comprueba los permisos y esas cosas que a veces se nos pasan.

SplinterGU

lo hice a mano, por eso quizas me falto algo, volver a hacerlo nuevamente
incluso hice tambien un for para los link... volvere a probar... gracias por la preocupacion...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Funciono, me faltaba incluir un directorio mas en el bgd.conf, pero bueno, ya que estamos lo mejore un poco...
Con respecto a debian y los archivos que no empiezan con lib en el lib32, temo decir que tengo en la instalacion de debian paquetes que no cumplen con eso... asi que no veo motivos por no incluir a bennu...

El script quedo asi:


#!/bin/sh

MACHINE=$(uname -m)
if [ "$MACHINE" == "x86_64" ];
then
    TARGET_LIB=/usr/lib32
else
    TARGET_LIB=/usr/lib
fi

if [ "x$1" == "xhelp" ];
then
    echo "Bennu Game Development Installer"
    echo "(C) 2008 - SplinterGU"
    echo
    echo "usage: $0 [options]"
    echo "options:"
    echo "    help   - show this text"
    echo "    remove - uninstall Bennu Game Development"
    echo

elif [ "x$1" == "xremove" ];
then
    echo "Uninstalling Bennu Game Development..."
    rm -f /usr/bin/bgdc
    rm -f /usr/bin/bgdi
    rm -Rf $TARGET_LIB/bgd
    rm /etc/ld.so.conf.d/bgd.conf
    ldconfig
    echo "done!"

else
    CPWD=$PWD
    echo "Installing Bennu Game Development..."
    mkdir -p /tmp/bgd>/dev/null 2>/dev/null
    cd /tmp/bgd
    tar -zxvf $CPWD/bgd.pkg
    cp -Rf bin/* /usr/bin
    cp -Rf bgd $TARGET_LIB
    echo $TARGET_LIB/bgd>/etc/ld.so.conf.d/bgd.conf
    echo $TARGET_LIB/bgd/lib>>/etc/ld.so.conf.d/bgd.conf
    echo $TARGET_LIB/bgd/module>>/etc/ld.so.conf.d/bgd.conf
    ldconfig
    cd $CPWD
    rm -Rf /tmp/bgd
    echo "done!"

fi


Con la siguiente release, saldra con ese script...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

josebita, te ganaste un karma!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on December 02, 2008, 07:14:43 PM
Funciono, me faltaba incluir un directorio mas en el bgd.conf, pero bueno, ya que estamos lo mejore un poco...
¡Genial!, me alegro mucho.
Quote from: SplinterGU on December 02, 2008, 07:14:43 PM
Con respecto a debian y los archivos que no empiezan con lib en el lib32, temo decir que tengo en la instalacion de debian paquetes que no cumplen con eso... asi que no veo motivos por no incluir a bennu...
Tendré que revisar eso, porque pensaba que era así :).

En fin, gracias por mirarlo...

SplinterGU

#446
por ejemplo, mira el paquete bonobo

/usr/lib/bonobo/servers/*.server (xml que no empiezan con lib)

(lib o lib32, segun el caso)

/usr/lib/bonobo-activation/* (hay ejecutables, que no empiezan con lib)

/usr/lib/dri/*.so (no empiezan con lib)

y hay un monton...

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

No puedo más que darte la razón :). El tema es que dejarlos en /usr/lib directamente me da cosita.... ¿Quizás /usr/lib/bgd?

Bueno, que no te quiero liar más, concéntrate en lo importante que es sacar la 1.0, que ya hay ganitas :)

SplinterGU

si, ahi van ahora, en /usr/bin/bgd... nada en el /usr/lib... igual deberia no darte cosita, todos los productos meten sus libs en /usr/lib... no solo los del sistema...

y ahora mejore la version del instalador, ahora es un solo script... no hay mas 2 archivos... es un .sh, que se ejecuta e instala...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2