thanks hernan.
We want to script the BNF (bibliotheque Nationale de France :)). which has a 
Z3950 server

Stef

On Dec 23, 2010, at 1:57 AM, Hernán Morales Durand wrote:

> Hi Laurent,
> 
> Thanks for the feedback, I've uploaded the repository with the missing
> method but I cannot reproduce the crash in Windows. Have you unmangled
> every function name tested? Are you running just the
> Z3950FFILibraryTest? Notice the Z3950FFIServerLibraryTest tests are
> performed against a Z39.50 server running in local host, otherwise
> will fail (however that shouldn't crash the VM), so you may want to
> run only the Z3950FFILibraryTest suite. If you or anyone want a local
> Zebra server for Win32 - although most configuration files should work
> with other platforms - for testing purposes please let me know.
> 
> Does the Kant test crash the VM too?
> 
> Z3950Client new
>  server: #Acadia;
>  query: ( Z3950Query new author: 'Kant' ).
> 
> (see http://67.222.12.200:8889/WebOpus/52 for sample successful results)
> 
> I will set up a Linux box tomorrow and try to reproduce there.
> Cheers,
> 
> 2010/12/22 laurent laffont <[email protected]>:
>> Hi Hernan,
>> finally I switch back to Linux to make it work, OSX gives me headaches.
>> So on linux the yaz module is found. I get the "Unable to find function
>> address" but I found that writing:
>> <cdecl: ZOOMOptions 'ZOOM_options_create' (void) module: 'yaz'>
>> instead of
>> <cdecl: ZOOMOptions '_zoom_options_cre...@0' (void) module: 'yaz3'>
>> works. If I understand, function names are not mangled when compiling with
>> gcc on Linux.
>> 
>> Trying to run tests I've also had a "could not coerce arguments" in
>> Z3950FFILibrary>>createConnectionTo:port because Z3950TestCase>>portNumber
>> answers a String and
>> <cdecl: ZOOMConnection 'ZOOM_connection_new' (char* short) module: 'yaz'>
>> so it's waiting for a short. I've replaced portNumber to answer a
>> SmallInteger.
>> And now the image crashes on connectionIsIdle call:
>> write(1, "\ncreateConnectionTo:port:", 25) = 25
>> write(1, "\nconnectionIsIdle:", 18)     = 18
>> rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
>> write(1, "\n", 1)                       = 1
>> tgkill(25830, 25830, SIGABRT)           = 0
>> --- SIGABRT (Aborted) @ 0 (0) ---
>> 
>> Any idea ?
>> 
>> Laurent Laffont
>> 
>> On Tue, Dec 21, 2010 at 7:58 AM, laurent laffont <[email protected]>
>> wrote:
>>> 
>>> The module is found ! How:
>>> - Using VM Squeak 5.8b12 2  (instead of Cog or the VM provided in Seaside
>>> One-Click image)
>>> - go in Squeak\ 5.8b12\ 2.app/Contents/Resources/, then ln -s
>>> /usr/local/lib/libyaz.3.dylib .
>>> Now I have the "Unable to find function address" you have talked earlier
>>> :) I will look at the mangled function names.
>>> 
>>> Laurent  --- on the road to the FFI mountain.
>>> 
>>> On Tue, Dec 21, 2010 at 6:59 AM, Hernán Morales Durand
>>> <[email protected]> wrote:
>>>> 
>>>> Laurent,
>>>> I forward this e-mail to the squeak mailing list, may be someone there
>>>> have a better idea how the OSX VM works. BTW there are more
>>>> commentaries here
>>>> 
>>>> http://forum.world.st/squeak-dev-Alien-amp-Squeak-FFI-issues-on-Snow-Leopard-td85608.html
>>>> Cheers,
>>>> 
>>>> Hernán
>>>> 
>>>> 2010/12/20 laurent laffont <[email protected]>:
>>>>> Hi Hernan,
>>>>> the strace equivalent on OSX seems to be dtruss (yes I'm learning OSX
>>>>> too :)
>>>>> sudo dtruss -p [pid of process]
>>>>> in the trace I have this:
>>>>> 
>>>>> stat("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3.bundle/Contents/MacOS/yaz3\0",
>>>>> 0xBFF59440, 0xBFF5AB28) = -1 Err#2
>>>>> 
>>>>> stat64("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3.bundle/Contents/MacOS/yaz3\0",
>>>>> 0xBFF5892C, 0xBFF5AB28) = -1 Err#2
>>>>> 
>>>>> stat("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0",
>>>>> 0xBFF59440, 0xBFF5AB28) = 0 0
>>>>> 
>>>>> stat64("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0",
>>>>> 0xBFF5892C, 0xBFF5AB28) = 0 0
>>>>> 
>>>>> open("/Users/laurentlaffont/Downloads/Seaside.app/Contents/Resources/yaz3\0",
>>>>> 0x0, 0x0) = 12 0
>>>>> pread(0xC, "\317\372\355\376\a\0", 0x1000, 0x0) = 4096 0
>>>>> close(0xC) = 0 0
>>>>> 
>>>>> stat("/Users/laurentlaffont/Downloads/Plugins/yaz3.bundle/Contents/MacOS/yaz3\0",
>>>>> 0xBFF59440, 0x1000) = -1 Err#2
>>>>> 
>>>>> stat64("/Users/laurentlaffont/Downloads/Plugins/yaz3.bundle/Contents/MacOS/yaz3\0",
>>>>> 0xBFF5892C, 0x1000) = -1 Err#2
>>>>> stat("/Users/laurentlaffont/Downloads/Plugins/yaz3\0", 0xBFF59440,
>>>>> 0x1000) =
>>>>> -1 Err#2
>>>>> stat64("/Users/laurentlaffont/Downloads/Plugins/yaz3\0", 0xBFF5892C,
>>>>> 0x1000)
>>>>> = -1 Err#2
>>>>> 
>>>>> so it looks like the VM is trying to find yaz3 at non standard Unix
>>>>> places
>>>>> (I don't know if it's SqueakVM or OSX related).
>>>>> I've created Contents/Resources/yaz3.bundle/Contents/MacOS/, put yaz
>>>>> lib
>>>>> there, ln -s libyaz.3.dylib yaz3 but no success.
>>>>> 
>>>>> I've read good
>>>>> post http://forum.world.st/FFI-Documentation-td2225150.html :
>>>>> 
>>>>> Module Location - where the external library file lives
>>>>>       - depends on the platform
>>>>>               - Mac
>>>>>                       - pre Snow Leopard
>>>>>                               - checks VM path and common library paths
>>>>>                       - Snow Leopard
>>>>>                               - only looks in VM bundle's Resources
>>>>> file, you must either [5]:
>>>>>                                       - store all external libraries
>>>>> there
>>>>>                                       - ln -s path/to/library
>>>>> path/to/VM/Resources/library_name
>>>>>                                       - Change the VM's Info.plist
>>>>> "SqueakPluginsBuiltInOrLocalOnly" key from
>>>>> "true" to "false."
>>>>> 
>>>>> For this SqueakPluginsBuiltInOrLocalOnly I suppose I need to compile a
>>>>> VM ?
>>>>> Cheers,
>>>>> Laurent Laffont
>>>>> 
>>>>> 
>>>>> On Mon, Dec 20, 2010 at 4:12 PM, Hernán Morales Durand
>>>>> <[email protected]> wrote:
>>>>>> 
>>>>>> Hi Laurent
>>>>>> 
>>>>>> I've read there is a couple of system calll monitors in MacOS, ktrace
>>>>>> and dtrace (http://en.wikipedia.org/wiki/Ktrace ,
>>>>>> http://en.wikipedia.org/wiki/DTrace) so you may attach to the VM and
>>>>>> see what's missing?
>>>>>> Cheers,
>>>>>> 
>>>>>> Hernán
>>>>>> 
>>>>>> 2010/12/20 laurent laffont <[email protected]>:
>>>>>>> Thanks Hernan.
>>>>>>> It still doesn't work. I've also tried to play with LD_LOAD_PATH /
>>>>>>> LD_LIBRARY_PATH no success.... I want to make it work so I need to
>>>>>>> learn
>>>>>>> :)
>>>>>>> 
>>>>>>> For the mangled function names, on Linux and OSX there's nm.
>>>>>>> Here's what I get:
>>>>>>> $ nm -g libyaz.3.dylib | grep ZOOM_connection_create
>>>>>>> 0000000000046a30 T _ZOOM_connection_create
>>>>>>> Cheers,
>>>>>>> Laurent
>>>>>>> 
>>>>>>> On Sun, Dec 19, 2010 at 6:23 PM, Hernán Morales Durand
>>>>>>> <[email protected]> wrote:
>>>>>>>> 
>>>>>>>> Hi Laurent,
>>>>>>>> 
>>>>>>>> Thanks for reporting. The correct #moduleName for MacOS was
>>>>>>>> missing,
>>>>>>>> I've uploaded a new version answering 'libyaz.3.dylib' which I
>>>>>>>> guess
>>>>>>>> is the corresponding for 'yaz3.dll' (according to
>>>>>>>> http://en.wikipedia.org/wiki/Dynamic_library#Naming ).
>>>>>>>> 
>>>>>>>> I haven't access to a MacOS, but in Windows I've had to find the
>>>>>>>> mangled function names (i.e. _zoom_connection_cre...@4) so FFI can
>>>>>>>> find the function addresses and you don't get the classic "Error:
>>>>>>>> Unable to find function address". I don't know if it's related
>>>>>>>> since
>>>>>>>> talks about C++, but you may want to check
>>>>>>>> http://wiki.squeak.org/squeak/3735
>>>>>>>> 
>>>>>>>> The tool I've used to find the mangled function names in Windows is
>>>>>>>> the Steve Miller's Dependency Walker
>>>>>>>> http://www.dependencywalker.com/
>>>>>>>> 
>>>>>>>> 2010/12/19 laurent laffont <[email protected]>:
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> I want to use http://www.squeaksource.com/Z3950
>>>>>>>>> Following install instructions, I've dowloaded yaz sources (I've
>>>>>>>>> tried
>>>>>>>>> 4.1.2
>>>>>>>>> and 3.0.52) as it seems there's no binary for OSX, ./configure
>>>>>>>>> && make
>>>>>>>>> &&
>>>>>>>>> make install.
>>>>>>>>> Then using latest Seaside One Click image I've copied
>>>>>>>>> /usr/local/lib/*yaz*
>>>>>>>>>  in Seaside.app/Contents/MacOS
>>>>>>>>> $ ls ~/Downloads/Seaside.app/Contents/MacOS/
>>>>>>>>> Squeak VM Opt         libyaz.a              libyaz.la
>>>>>>>>> libyaz_icu.a          libyaz_icu.la         libyaz_server.a
>>>>>>>>> libyaz_server.la libyaz.3.dylib        libyaz.dylib
>>>>>>>>>  libyaz_icu.3.dylib    libyaz_icu.dylib
>>>>>>>>>  libyaz_server.3.dylib
>>>>>>>>> libyaz_server.dylib
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> But then I have a External Module Not Found on
>>>>>>>>> YAZPQFFFILibrary>>createParser
>>>>>>>>> " YAZPQDFFILibrary default createParser "
>>>>>>>>> <cdecl: YAZPQFParser 'yaz_pqf_create' (void) module: 'yaz3'>
>>>>>>>>> ^ self externalCallFailed
>>>>>>>>> 
>>>>>>>>> Any hint ?
>>>>>>>>> Cheers,
>>>>>>>>> Laurent Laffont -- FFI newbie
>>>>>>>>> 
>>>>>>>>> Pharo Smalltalk Screencasts: http://www.pharocasts.com/
>>>>>>>>> Blog: http://magaloma.blogspot.com/
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> Hernán Morales
>>>>>>>> Information Technology Manager,
>>>>>>>> Institute of Veterinary Genetics.
>>>>>>>> National Scientific and Technical Research Council (CONICET).
>>>>>>>> La Plata (1900), Buenos Aires, Argentina.
>>>>>>>> Telephone: +54 (0221) 421-1799.
>>>>>>>> Internal: 422
>>>>>>>> Fax: 425-7980 or 421-1799.
>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> 
>>> 
>> 
>> 
> 
> 
> 
> -- 
> Hernán Morales
> Information Technology Manager,
> Institute of Veterinary Genetics.
> National Scientific and Technical Research Council (CONICET).
> La Plata (1900), Buenos Aires, Argentina.
> Telephone: +54 (0221) 421-1799.
> Internal: 422
> Fax: 425-7980 or 421-1799.
> 


Reply via email to