has anyone besides Matt Fulmer attempted to get OpenGL working with 4.1,
4.2, or 4.3? Lawson |
On 9/6/2011 23:24, Lawson English wrote:
> has anyone besides Matt Fulmer attempted to get OpenGL working with 4.1, > 4.2, or 4.3? This should work (from http://www.squeaksource.com/CroquetGL.html): (Installer repository: 'http://source.squeak.org/FFI') install: 'FFI-Pools'; install: 'FFI-Kernel'; install: 'FFI-Tests'. (Installer repository: 'http://www.squeaksource.com/CroquetGL') install: '3DTransform'; install: 'OpenGL-Pools'; install: 'OpenGL-Core'. Cheers, - Andreas |
Thanks. I have no idea why what I was trying didn't work. "Brain fart"
as some would say. L. On 9/7/11 9:47 AM, Andreas Raab wrote: > On 9/6/2011 23:24, Lawson English wrote: >> has anyone besides Matt Fulmer attempted to get OpenGL working with 4.1, >> 4.2, or 4.3? > > This should work (from http://www.squeaksource.com/CroquetGL.html): |
In reply to this post by Andreas.Raab
When I do that with a later version of Cog, the class example "OpenGL
example" works. When I do that with the Squeak all-in-one 4.2 download from squeak.org, it doesn't. I get error: External function is invalid. it is objecting to ogl beginFrame... Lawson On 9/7/11 9:47 AM, Andreas Raab wrote: > On 9/6/2011 23:24, Lawson English wrote: >> has anyone besides Matt Fulmer attempted to get OpenGL working with 4.1, >> 4.2, or 4.3? > > This should work (from http://www.squeaksource.com/CroquetGL.html): > > (Installer repository: 'http://source.squeak.org/FFI') > install: 'FFI-Pools'; > install: 'FFI-Kernel'; > install: 'FFI-Tests'. > > (Installer repository: 'http://www.squeaksource.com/CroquetGL') > install: '3DTransform'; > install: 'OpenGL-Pools'; > install: 'OpenGL-Core'. > > > Cheers, > - Andreas > > |
On a Mac, download the latest 4.2 all-in-one squeak.
Put the following into a workspace and "do it". I get Error: External function failed. The offending method is #beginFrame. I'm using an Intel Mac, Mac OS X 10.6.8. Doing the same code with Cog doesn't seem to show the errors. L (Installer repository: 'http://source.squeak.org/FFI') install: 'FFI-Pools'; install: 'FFI-Kernel'; install: 'FFI-Tests'. (Installer repository: 'http://www.squeaksource.com/CroquetGL') install: '3DTransform'; install: 'OpenGL-Pools'; install: 'OpenGL-Core'. OpenGL example. |
Has anyone tested this with 4.3?
It still doesn't work out of the box with 4.2 all-in-one, which means I can't do a "look how easy it is to do this in 3D" tutorial yet. L. On 9/11/11 6:09 PM, Lawson English wrote: > On a Mac, download the latest 4.2 all-in-one squeak. > > Put the following into a workspace and "do it". > > I get Error: External function failed. The offending method is > #beginFrame. > > I'm using an Intel Mac, Mac OS X 10.6.8. > Doing the same code with Cog doesn't seem to show the errors. > > L > > (Installer repository: 'http://source.squeak.org/FFI') > install: 'FFI-Pools'; > install: 'FFI-Kernel'; > install: 'FFI-Tests'. > > (Installer repository: 'http://www.squeaksource.com/CroquetGL') > install: '3DTransform'; > install: 'OpenGL-Pools'; > install: 'OpenGL-Core'. > > OpenGL example. > > > > > |
Just tested this in an up to date image and it worked. As always I had
to manually adapt the library path, but that was all. Alex 2011/12/17 Lawson English <[hidden email]>: > Has anyone tested this with 4.3? > > It still doesn't work out of the box with 4.2 all-in-one, which means I > can't do a "look how easy it is to do this in 3D" tutorial yet. > > L. > > On 9/11/11 6:09 PM, Lawson English wrote: >> >> On a Mac, download the latest 4.2 all-in-one squeak. >> >> Put the following into a workspace and "do it". >> >> I get Error: External function failed. The offending method is >> #beginFrame. >> >> I'm using an Intel Mac, Mac OS X 10.6.8. >> Doing the same code with Cog doesn't seem to show the errors. >> >> L >> >> (Installer repository: 'http://source.squeak.org/FFI') >> install: 'FFI-Pools'; >> install: 'FFI-Kernel'; >> install: 'FFI-Tests'. >> >> (Installer repository: 'http://www.squeaksource.com/CroquetGL') >> install: '3DTransform'; >> install: 'OpenGL-Pools'; >> install: 'OpenGL-Core'. >> >> OpenGL example. >> >> >> >> >> > > Bildschirmfoto am 2011-12-19 10:04:13.jpg (25K) Download Attachment |
Great. Can you tell me how to do that in a very simple way? The
advantage of the "all-in-one" is that people (including myself, all to often) don't have to know too much about the lower level stuff in order to get something working. Thanks L. On 12/19/11 2:08 AM, Alexander Lazarević wrote: > Just tested this in an up to date image and it worked. As always I had > to manually adapt the library path, but that was all. > > Alex > |
In reply to this post by laza
On 12/19/2011 10:08, Alexander Lazarević wrote:
> Just tested this in an up to date image and it worked. As always I had > to manually adapt the library path, but that was all. Which, according to http://www.opengl.org/registry/ABI/ should not be necessary: 3.1. There are two link-level libraries. libGL includes the OpenGL and GLX entry points and in general depends on underlying hardware and/or X server dependent code that may or may not be incorporated into this library. libGLU includes the GLU utility routines and should be hardware independent, using only the OpenGL API. Each library has two names: the link name used on the ld command line, and the DT_SONAME within that library (specified by the -soname switch when linking the library), defining where it's looked up at runtime. Both forms must exist so that both linking and running will operate properly. The library names are: Link name Runtime name (DT_SONAME) libGL.so libGL.so.1 libGLU.so libGLU.so.1 libGL.so and libGLU.so should be symbolic links pointing to the runtime names, so that future versions of the standard can be implemented transparently to applications by changing the link. 3.2. These libraries must be located in /usr/lib. The X-specific library direction (/usr/lib/X11) was also considered, but existing practice on Linux and other platforms indicates that /usr/lib is preferable. Cheers, - Andreas > > Alex > > 2011/12/17 Lawson English<[hidden email]>: >> Has anyone tested this with 4.3? >> >> It still doesn't work out of the box with 4.2 all-in-one, which means I >> can't do a "look how easy it is to do this in 3D" tutorial yet. >> >> L. >> >> On 9/11/11 6:09 PM, Lawson English wrote: >>> >>> On a Mac, download the latest 4.2 all-in-one squeak. >>> >>> Put the following into a workspace and "do it". >>> >>> I get Error: External function failed. The offending method is >>> #beginFrame. >>> >>> I'm using an Intel Mac, Mac OS X 10.6.8. >>> Doing the same code with Cog doesn't seem to show the errors. >>> >>> L >>> >>> (Installer repository: 'http://source.squeak.org/FFI') >>> install: 'FFI-Pools'; >>> install: 'FFI-Kernel'; >>> install: 'FFI-Tests'. >>> >>> (Installer repository: 'http://www.squeaksource.com/CroquetGL') >>> install: '3DTransform'; >>> install: 'OpenGL-Pools'; >>> install: 'OpenGL-Core'. >>> >>> OpenGL example. >>> >>> >>> >>> >>> >> >> >> >> >> |
To answer my own question: with the latest Cog VMs and 4.3gamma image,
the OpenGL example works fine. It appears to be an issue with Squeak 4.2 (4.1?) all-in-one distributions which don't have Cog as the default. Since I am no longer using a PowerPC Mac, moving to Cog for everything won't be an issue for me, but I think this is a political decision that needs to be made: does the squeak community standardize on Intel-only/Cog-only, or will legacy PowerPC systems still be supported? I believe that Pharo has gone all-Cog for the past few releases. I know plenty of people/schools that are still using PowerMacs however, so the issue is not not as cut and dried as it might be for Pharo. L. On 12/19/11 3:25 AM, Andreas Raab wrote: > On 12/19/2011 10:08, Alexander Lazarević wrote: >> Just tested this in an up to date image and it worked. As always I had >> to manually adapt the library path, but that was all. > > Which, according to http://www.opengl.org/registry/ABI/ should not be > necessary: > > 3.1. There are two link-level libraries. libGL includes the OpenGL and > GLX entry points and in general depends on underlying hardware and/or > X server dependent code that may or may not be incorporated into this > library. libGLU includes the GLU utility routines and should be > hardware independent, using only the OpenGL API. > > Each library has two names: the link name used on the ld command line, > and the DT_SONAME within that library (specified by the -soname switch > when linking the library), defining where it's looked up at runtime. > Both forms must exist so that both linking and running will operate > properly. The library names are: > Link name Runtime name (DT_SONAME) > libGL.so libGL.so.1 > libGLU.so libGLU.so.1 > > libGL.so and libGLU.so should be symbolic links pointing to the > runtime names, so that future versions of the standard can be > implemented transparently to applications by changing the link. > > 3.2. These libraries must be located in /usr/lib. The X-specific > library direction (/usr/lib/X11) was also considered, but existing > practice on Linux and other platforms indicates that /usr/lib is > preferable. > > Cheers, > - Andreas > >> >> Alex >> >> 2011/12/17 Lawson English<[hidden email]>: >>> Has anyone tested this with 4.3? >>> >>> It still doesn't work out of the box with 4.2 all-in-one, which means I >>> can't do a "look how easy it is to do this in 3D" tutorial yet. >>> >>> L. >>> >>> On 9/11/11 6:09 PM, Lawson English wrote: >>>> >>>> On a Mac, download the latest 4.2 all-in-one squeak. >>>> >>>> Put the following into a workspace and "do it". >>>> >>>> I get Error: External function failed. The offending method is >>>> #beginFrame. >>>> >>>> I'm using an Intel Mac, Mac OS X 10.6.8. >>>> Doing the same code with Cog doesn't seem to show the errors. >>>> >>>> L >>>> >>>> (Installer repository: 'http://source.squeak.org/FFI') >>>> install: 'FFI-Pools'; >>>> install: 'FFI-Kernel'; >>>> install: 'FFI-Tests'. >>>> >>>> (Installer repository: 'http://www.squeaksource.com/CroquetGL') >>>> install: '3DTransform'; >>>> install: 'OpenGL-Pools'; >>>> install: 'OpenGL-Core'. >>>> >>>> OpenGL example. >>>> >>>> >>>> >>>> >>>> >>> >>> >>> >>> >>> > > > |
In reply to this post by Andreas.Raab
On 19.12.2011, at 11:25, Andreas Raab wrote: > On 12/19/2011 10:08, Alexander Lazarević wrote: >> Just tested this in an up to date image and it worked. As always I had >> to manually adapt the library path, but that was all. > > Which, according to http://www.opengl.org/registry/ABI/ should not be necessary: > > 3.1. There are two link-level libraries. libGL includes the OpenGL and GLX entry points and in general depends on underlying hardware and/or X server dependent code that may or may not be incorporated into this library. libGLU includes the GLU utility routines and should be hardware independent, using only the OpenGL API. > > Each library has two names: the link name used on the ld command line, and the DT_SONAME within that library (specified by the -soname switch when linking the library), defining where it's looked up at runtime. Both forms must exist so that both linking and running will operate properly. The library names are: > Link name Runtime name (DT_SONAME) > libGL.so libGL.so.1 > libGLU.so libGLU.so.1 > > libGL.so and libGLU.so should be symbolic links pointing to the runtime names, so that future versions of the standard can be implemented transparently to applications by changing the link. > > 3.2. These libraries must be located in /usr/lib. The X-specific library direction (/usr/lib/X11) was also considered, but existing practice on Linux and other platforms indicates that /usr/lib is preferable. > > Cheers, > - Andreas So the name that must be used for FFI under linux would be 'libGL.so.1'. Maybe this would make it work in general: openGLLibraryName ^ Smalltalk os osVersion = 'linux' ifTrue: ['libGL.so.1'] ifFalse: ['GL'] - Bert - >> >> Alex >> >> 2011/12/17 Lawson English<[hidden email]>: >>> Has anyone tested this with 4.3? >>> >>> It still doesn't work out of the box with 4.2 all-in-one, which means I >>> can't do a "look how easy it is to do this in 3D" tutorial yet. >>> >>> L. >>> >>> On 9/11/11 6:09 PM, Lawson English wrote: >>>> >>>> On a Mac, download the latest 4.2 all-in-one squeak. >>>> >>>> Put the following into a workspace and "do it". >>>> >>>> I get Error: External function failed. The offending method is >>>> #beginFrame. >>>> >>>> I'm using an Intel Mac, Mac OS X 10.6.8. >>>> Doing the same code with Cog doesn't seem to show the errors. >>>> >>>> L >>>> >>>> (Installer repository: 'http://source.squeak.org/FFI') >>>> install: 'FFI-Pools'; >>>> install: 'FFI-Kernel'; >>>> install: 'FFI-Tests'. >>>> >>>> (Installer repository: 'http://www.squeaksource.com/CroquetGL') >>>> install: '3DTransform'; >>>> install: 'OpenGL-Pools'; >>>> install: 'OpenGL-Core'. >>>> >>>> OpenGL example. >>>> >>>> >>>> >>>> >>>> >>> >>> >>> >>> >>> > > |
In reply to this post by Andreas.Raab
2011/12/19 Andreas Raab <[hidden email]>:
> On 12/19/2011 10:08, Alexander Lazarević wrote: > Which, according to http://www.opengl.org/registry/ABI/ should not be > necessary: And I even remember, that it used to work that way. I can't say why that was changed, but there aren't any libGL* files or links in /usr/lib anymore (on my Ubuntu system and I guess that is also true for debian systems). If I look at any other executable that is using OpenGL, I can see that it requires libGL.so.1 and that the dynamic linker resolves this to the correct library (mesa, nvidia, ati, whatever). ldd $( which structure-synth ) libGLU.so.1 => /usr/lib/i386-linux-gnu/libGLU.so.1 (0xb766e000) libGL.so.1 => /usr/lib/nvidia-current/libGL.so.1 (0xb759c000) [...] Now the Squeak VM handles shared libraries the same as VM modules. It uses some relative (to the location of the VM executable) and absolute paths to actually check if a library file exists, before it actually tries to load the shared library. The following is the mambo-jambo that the VM pulls to find the OpenGL library on my installation (and fails): stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/B3DAcceleratorPlugin", {st_mode=S_IFREG|0755, st_size=144994, ...}) = 0 stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9bacb0) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9bacb0) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", 0xbf9bacb0) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9bacb0) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9bacb0) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SqueakFFIPrims", {st_mode=S_IFREG|0755, st_size=78318, ...}) = 0 stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libSurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libSurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libSurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("./SurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("./SurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("./SurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("./libSurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("./libSurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("./libSurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SurfacePlugin", 0xbf9b8c10) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SurfacePlugin.so", 0xbf9b8c10) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/SurfacePlugin.dylib", 0xbf9b8c10) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libSurfacePlugin", 0xbf9b8c10) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libSurfacePlugin.so", 0xbf9b8c10) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libSurfacePlugin.dylib", 0xbf9b8c10) = -1 ENOENT (No such file or directory) stat64("SurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("SurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("SurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("libSurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("libSurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("libSurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/SurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/SurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/SurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/libSurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/libSurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/libSurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/SurfacePlugin/.libs/SurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/SurfacePlugin/.libs/SurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/SurfacePlugin/.libs/SurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/SurfacePlugin/.libs/libSurfacePlugin", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/SurfacePlugin/.libs/libSurfacePlugin.so", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/SurfacePlugin/.libs/libSurfacePlugin.dylib", 0xbf9bac30) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("lib/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/GL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/GL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/GL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libGL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libGL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libGL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("./GL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("./GL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("./GL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("./libGL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("./libGL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("./libGL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/GL", 0xbf9b8a60) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/GL.so", 0xbf9b8a60) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/GL.dylib", 0xbf9b8a60) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libGL", 0xbf9b8a60) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libGL.so", 0xbf9b8a60) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/bin/../lib/squeak/4.0-2502/libGL.dylib", 0xbf9b8a60) = -1 ENOENT (No such file or directory) stat64("GL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("GL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("GL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("libGL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("libGL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("libGL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/GL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/GL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/GL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/libGL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/libGL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/libGL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/GL/.libs/GL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/GL/.libs/GL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/GL/.libs/GL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/GL/.libs/libGL", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/GL/.libs/libGL.so", 0xbf9baa80) = -1 ENOENT (No such file or directory) stat64("/home/laza/Projects/remos/compost/coglinux/lib/squeak/4.0-2502/GL/.libs/libGL.dylib", 0xbf9baa80) = -1 ENOENT (No such file or directory) |
In reply to this post by Bert Freudenberg
2011/12/19 Bert Freudenberg <[hidden email]>:
> ifTrue: ['libGL.so.1'] Yes and no. I guess it would work if the VM would just try to load that shared library. But instead it tries to see if there is actually a file like that in some known locations and will fail, because there is none. Alex |
On 19.12.2011, at 14:25, Alexander Lazarević wrote: > 2011/12/19 Bert Freudenberg <[hidden email]>: >> ifTrue: ['libGL.so.1'] > > Yes and no. I guess it would work if the VM would just try to load > that shared library. But instead it tries to see if there is actually > a file like that in some known locations and will fail, because there > is none. That file should be in /usr/lib - did you try? It cannot work just with saying 'GL' because that requires a libGL.so symlink, which typically is only installed by the dev package. - Bert - |
2011/12/19 Bert Freudenberg <[hidden email]>:
> That file should be in /usr/lib - did you try? Sure (not only once). There is no such file. And other GL applications don't depend on it and do work. > It cannot work just with saying 'GL' because that requires a libGL.so symlink, which typically is only installed by the dev package. This won't work even if there is a file 'libGL.so.1' in /usr/lib, because the VM will not look in that directory (see previous mail) unless you explicitly ask for '/usr/lib/libGL.so.1' Alex |
On 19.12.2011, at 16:05, Alexander Lazarević wrote: > 2011/12/19 Bert Freudenberg <[hidden email]>: >> That file should be in /usr/lib - did you try? > > Sure (not only once). There is no such file. And other GL applications > don't depend on it and do work. > >> It cannot work just with saying 'GL' because that requires a libGL.so symlink, which typically is only installed by the dev package. > > This won't work even if there is a file 'libGL.so.1' in /usr/lib, > because the VM will not look in that directory (see previous mail) > unless you explicitly ask for '/usr/lib/libGL.so.1' > > Alex Okay, so the bug is that the VM tries to find "libGL.so.1" on its own, rather than simply calling dlopen() directly. I'm sure there was a reason for stat()ing first, but I thought that after trying the places, it would at least fall back to the obvious dlopen() call? - Bert - |
2011/12/19 Bert Freudenberg <[hidden email]>:
> Okay, so the bug is that the VM tries to find "libGL.so.1" on its own, rather than simply calling dlopen() directly. I'm sure there was a reason for stat()ing first, but I thought that after trying the places, it would at least fall back to the obvious dlopen() call? I think this makes perfectly sense for looking up the location of external VM modules (since the dynamic linker does not know a thing about these modules), but does not work as well for shared libraries that are meant to be used by FFI. But the same mechanics is used for modules and shared libraries/FFI (as far as I can remember it). Alex |
Free forum by Nabble | Edit this page |