From ait at p2ee.org Tue Aug 16 08:03:33 2011 From: ait at p2ee.org (Alejandro Imass) Date: Tue, 16 Aug 2011 11:03:33 -0400 Subject: [caracas-pm] =?iso-8859-1?q?Obteniendo_=5F=5Ferrno=5Flocation_al_?= =?iso-8859-1?q?cargar_m=F3dulo_Perl_XS_en_FreeBSD?= Message-ID: Buenos d?as. Estoy compilando una librer?a propietaria en FreeBSD que ofrece un API en Perl mediante XS. El paquete viene con un ar archive para Linux 64 pero necesito compilar y correr este m?dulo en FreeBSD. El proceso de make no se queja en lo absoluto sobre los object files en el ar, y todo se compila sin error alguno. La librer?a se compila perfecto pero cuando dynaloader va a cargar el shared object me da el error: /libexec/ld-elf.so.1: (undisclosed).so: Undefined symbol "__errno_location" Me pregunto si esto es ld-el quej?ndose que no consigue el s?mbolo en (undisclosed), o es (undisclosed) que no consigue el s?mbolo en una de sus dependencias? He investigado acerca de __errno_location pero algunos dicen que est? relacionado a pthreads, y otros que es de libm y que est? definido en errno.h pero este s?mbolo no lo encuentro en ning?n .h ni en Linux ni en FreeBSD Como se puede ver, al librer?a se construye bien y satisface todas sus dependencias, Mi pregunta es... el error de undefined symbol no deber?a manifestarse durante la compilaci?n en vez que en el linkeo din?mico? ldd blib/arch/auto/.so blib/arch/auto/Gateway/Gateway.so: libcurl.so.6 => /usr/local/lib/libcurl.so.6 (0x800c00000) libssl.so.6 => /usr/lib/libssl.so.6 (0x800d54000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x800ea7000) libm.so.5 => /lib/libm.so.5 (0x8010b7000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x8011d7000) libc.so.7 => /lib/libc.so.7 (0x800647000) libcrypto.so.6 => /lib/libcrypto.so.6 (0x8012e5000) libz.so.5 => /lib/libz.so.5 (0x801585000) Gracias anticipadas por cualquier ayuda! -- Alejandro Imass From ait at p2ee.org Tue Aug 16 09:11:13 2011 From: ait at p2ee.org (Alejandro Imass) Date: Tue, 16 Aug 2011 12:11:13 -0400 Subject: [caracas-pm] =?iso-8859-1?q?Usando_funciones_SQL_multipar=E1metro?= =?iso-8859-1?q?_desde_DBIx=3A=3AClass?= In-Reply-To: <1301404258.3537.174.camel@deepthought.ius.cc> References: <1301404258.3537.174.camel@deepthought.ius.cc> Message-ID: 2011/3/29 Ernesto Hern?ndez-Novich : > Si bien est? documentado entre DBIx::Class::ResultSet y SQL::Abstract, > no hay ejemplos suficientes para las cosas complejas que uno tiene que > lograr cuando quiere utilizar funciones SQL como columnas o como > filtros. No me refiero a las est?ndar (SUM, AVG, MAX, MIN, etc.); me > refiero a funciones arbitrarias que uno escribe en manejadores de bases > de datos que ofrecen esa posibilidad, e incluso en presencia de > operadores binarios arbitrarios (por ejemplo, el >> ?que pongo m?s > abajo). > El ejemplo es excelente! En mi caso prefiero crear las consultas en la BD mediante el uso de vistas, funciones (y/o select rules en el caso de Pg) y no hacer queries complejos en el ORM. Principalmente por (a) flojera de ponerme a experimentar con DBIC, (b) porque tengo control de la BD, y (c) porque deber?a ser m?s eficiente. Sin embargo, el poder de DBIC es sorprendente y coincido plenamente contigo en que al POD le faltan muchos ejemplos. Shadowcat deber?a hospedar una Wiki de DBIC o quiz?s no lo hacen pa que los contrates ;-) -- Alejandro Imass From emhnemhn at gmail.com Thu Aug 18 08:10:11 2011 From: emhnemhn at gmail.com (Ernesto =?ISO-8859-1?Q?Hern=E1ndez-Novich?=) Date: Thu, 18 Aug 2011 10:40:11 -0430 Subject: [caracas-pm] =?iso-8859-1?q?Obteniendo_=5F=5Ferrno=5Flocation_al_?= =?iso-8859-1?q?cargar_m=F3dulo_Perl_XS_en_FreeBSD?= In-Reply-To: References: Message-ID: <1313680211.5864.40.camel@deepthought.ius.cc> On Tue, 2011-08-16 at 11:03 -0400, Alejandro Imass wrote: > Estoy compilando una librer?a propietaria en FreeBSD que ofrece un API > en Perl mediante XS. El paquete viene con un ar archive para Linux 64 > pero necesito compilar y correr este m?dulo en FreeBSD. El proceso de > make no se queja en lo absoluto sobre los object files en el ar, y > todo se compila sin error alguno. > > La librer?a se compila perfecto pero cuando dynaloader va a cargar el > shared object me da el error: > > /libexec/ld-elf.so.1: (undisclosed).so: Undefined symbol "__errno_location" > > Me pregunto si esto es ld-el quej?ndose que no consigue el s?mbolo en > (undisclosed), o es (undisclosed) que no consigue el s?mbolo en una de > sus dependencias? Ambos. ld-elf.so tiene que resolver todas las referencias entre los componentes participantes. En la librer?a (undisclosed).so se hace referencia al s?mbolo "__errno_location" que no est? disponible en ninguno de los componentes que participaron en el enlace din?mico. > He investigado acerca de __errno_location pero algunos dicen que est? > relacionado a pthreads, y otros que es de libm y que est? definido en > errno.h pero este s?mbolo no lo encuentro en ning?n .h ni en Linux ni > en FreeBSD __errno_location est? definida en el LSB, es un apuntador a la ubicaci?n en memoria donde est? contenido errno para el hilo actual, y la provee libc en Linux. No existe en BSD. > Como se puede ver, al librer?a se construye bien y satisface todas sus > dependencias, Mi pregunta es... el error de undefined symbol no > deber?a manifestarse durante la compilaci?n en vez que en el linkeo > din?mico? No necesariamente. Es perfectamente posible escribir un programa que solicite el enlazado a tiempo de *corrida* y no a tiempo de compilaci?n (man dlopen). Si mi memoria sirve para algo, __errno_location en Linux es lo mismo que __error en BSD. Capaz que con un #define apropiado te basta. -- Ernesto Hern?ndez-Novich - @iamemhn - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't aptitude it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 From ait at p2ee.org Thu Aug 18 08:29:59 2011 From: ait at p2ee.org (Alejandro Imass) Date: Thu, 18 Aug 2011 11:29:59 -0400 Subject: [caracas-pm] =?iso-8859-1?q?Obteniendo_=5F=5Ferrno=5Flocation_al_?= =?iso-8859-1?q?cargar_m=F3dulo_Perl_XS_en_FreeBSD?= In-Reply-To: <1313680211.5864.40.camel@deepthought.ius.cc> References: <1313680211.5864.40.camel@deepthought.ius.cc> Message-ID: 2011/8/18 Ernesto Hern?ndez-Novich : > On Tue, 2011-08-16 at 11:03 -0400, Alejandro Imass wrote: >> Estoy compilando una librer?a propietaria en FreeBSD que ofrece un API >> en Perl mediante XS. El paquete viene con un ar archive para Linux 64 [...] > No necesariamente. Es perfectamente posible escribir un programa que > solicite el enlazado a tiempo de *corrida* y no a tiempo de compilaci?n > (man dlopen). > Gracias por la detallada respuesta, Ernesto. Ja! sabes m?s que Google my friend! y los amigos en la listas de BSD. Yo pensaba que linkear contra un so revisaba todos los s?mbolos que yo fuese a usar al igual que compilar contra un object file/ statci lib cualquiera. > Si mi memoria sirve para algo, __errno_location en Linux es lo mismo que > __error en BSD. Capaz que con un #define apropiado te basta. Si, por supuesto. Si tuviese el fuente de la lib no estar?a en este aprieto. Bueno de todas formas result? m?s sencillo escribir un correo, y el soporte de la gente que provee la lib fue extraordinario y ellos me solicitaron solo un ambiente para compilar y voil?, me dieron mi lib para BSD y ya. No hubo que seguir hackeando Uno de los _raros_ casos donde el soporte de la empresa de software propietario responde con tanta dedicaci?n. Por supuesto, su negocio no es software sino el servicio de gateway de pagos que proveen con ese software ;-) De hecho te digo que en este caso en particular prefiero que el software sea cerrado y sea _su_ problema en vez de WebServices para los payment gateways. Al final me di cuenta que los tipos usan cURL por debajo pero ofrecen un API de alto nivel que enlaza directamente con tu lenguaje, lo cual me parece mejor que otras cosas que he visto en esta ?rea. En la desesperaci?n estuve a punto de sniffear el tr?fico http, y bueno te imaginas lo que iba a hacer, pero afortunadamente los tipos respondieron en menos de 3 d?as con una nueva lib. Gracias de nuevo, y saludes! -- Alejandro > -- > Ernesto Hern?ndez-Novich - @iamemhn - Unix: Live free or die! > Geek by nature, Linux by choice, Debian of course. > If you can't aptitude it, it isn't useful or doesn't exist. > GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 > > _______________________________________________ > caracas-pm mailing list > caracas-pm at pm.org > http://mail.pm.org/mailman/listinfo/caracas-pm