[squeak-dev] Re: [Pharo-project] External web browser
Hilaire Fernandes
hilaire.fernandes at edu.ge.ch
Thu Dec 22 14:36:11 UTC 2011
Alex,
Thanks for the info
Hilaire
Le 22/12/2011 11:59, Alexander Lazarević a écrit :
> Hilaire,
>
> on Linux the ExternalWebBrowser package, as it is, depends on a helper
> program (e.g. xdg-open) to open a url in the default browser.
>
> The helper program is executed using the system() function of the
> standard C library. This is defined in
>
> ExternalWebBrowser>>*system:* string
> "system() executes a command specified in string by calling /bin/sh -c
> string, and returns after the command has been completed."
> <*apicall:* short 'system' (char*) *module:* 'c'>
> ^self externalCallFailed
>
> The problem is, that the VM is unable to find that 'c' module/library as
> you can see when you evaluate
>
> ExternalWebBrowserUnix isCLibAvailable
>
> The VM is actively looking for a library file before it will use the
> dynamic linker to actually load it. The VM uses permutations of well
> known library locations (e.g. /lib) with library pre- (e.g. lib) and
> postfixes (e.g. .so) to find the file.
> So for example it will look for /lib/libc.so(among many others see [1]
> on a related matter)
>
> But even back at the time I started the ExternalWebBrowser package, the
> Linux distributions that I used (Debian, Ubuntu) didn't provide such a
> file, but /lib/libc.so.6. And the VM would not look for such a file.
> So to make it work I used a hack that Andreas Raab used with his OpenGL
> package to change the module name of the FFI definitions on the fly.
> In isCLibAvailable I try to use the generic module name 'c' and if that
> fails I try it again with the specific module name 'libc.so.6'.
>
> This (hack) worked as long as there was such a file. Now it seems that
> on newer Linux distributions even this file disappeared and it all
> depends on the dynamic linker to find the right shared library file.
> One could extend the list of module names to try by
> '/lib/i386-linux-gnu/libc.so.6' as on my system, but that would most
> probably not work with 64bit systems and so on.
>
> A better solution would be to adapt the way tries to find/load shared
> libraries.
> In the special case of handling URLs by external programs, I think Bert
> Freudenberg suggested that the/a VM/VM-Module should provide such a
> functionality.
>
> Alex
>
> [1] http://forum.world.st/OpenGL-in-4-1-or-later-td3794639.html#a4214041
>
> 2011/12/21 Hilaire Fernandes <hilaire.fernandes at edu.ge.ch
> <mailto:hilaire.fernandes at edu.ge.ch>>:
>> Hello,
>>
>> What is the status of external web browser use.
>> Last time I checked several months ago I can't use it with Linux.
>> Anyone using it successfully recently?
>>
>> Thanks
>>
>> Hilaire
>>
>> --
>> Dr. Geo -- http://www.drgeo.eu
>>
>>
>
>
>
>
--
Dr. Geo -- http://www.drgeo.eu
More information about the Squeak-dev
mailing list
|