[Pharo-project] Trying to build alien plugin in linux
elpochodelagente at gmail.com
Tue Feb 23 14:39:59 EST 2010
On Tue, Feb 23, 2010 at 12:19 AM, John M McIntosh <
johnmci at smalltalkconsulting.com> wrote:
> On 2010-02-22, at 6:48 PM, Javier Pimás wrote:
> Nice!!!!!!!! It's compiling now. Now, I loaded tests, and here are the
> 37 run, 17 passed, 0 failures, 20 errors.
> Oh look SUnits, great stuff (*cough* well I wrote most of them).
Cool, this is really really useful (although I sometimes find wrting tests
boring ;) ).
> It is failing in places where it does primLoadLibrary: 'IA32ABI'. Why
> should it try to load itself, if it's compiled as an internal plugin? I
> compiled it as external too but didn't work either.
> Well it compiled, but that doesn't mean it works. In fact the error means
> the plugin code is never loaded, or is callable.
> Now one thing to consider is that the plugin load fails, because it can't
> find it. (external usage).
> Or because (internal and external plugin) the VM Version and the plugin
> version don't match.
> Look for your definition of
> #define VM_PROXY_MINOR 8
> It should be 8 or higher for compiling BOTH the VM and the Plugin.
> Since the sqVirtualMachine.h is in the IA32ABI folder maybe there is mass
> confusion about which header is being used?
> If for example your VM say it's a VM_PROXY_MINOR of 7, then it won't work
> with a plugin compiled with VM_PROXY_MINOR = 8.
> It silently fails... Well actually it gives the primLoadLibrary failure,
> but good luck in guessing why...
Well, I just overwrote sqVirtualMachine.c/h in Cross/vm, shouldn't have I?
It wouldn't compile if I didn't and its sets it to 8. Is it defined in any
> Other question, can classic FFI and Alien live nicely together (I mean have
> x plugin use classic FFI while y uses Alien)?
> One more: should I use IA32ABIPlugin or IA32ABIPluginAttic? You can't have
> both in, right?
> One is a subclass of the other. I use the IA32ABIPluginAttic one.
Ok, what is the difference between them? a performance issue? everything
works the same I choose one or the other?
> Syntax highligthing is broken for Alien primitive methods like these:
> <primitive: 'primUnsignedShortAtPut' error: errorCode module: 'IA32ABI'>
> Lastly, as I said when I loaded Alien Core the first time, I got this error
> while loading it:
> Alien class>>#ensureInSpecialObjectsArray: "Index probably wrong".
> What should I do about that? ignore it?
> Well it seems to be related to
> ((Smalltalk includesKey: #ObjectMemory)
> and: [((Smalltalk at: #ObjectMemory) classPool at: #ClassAlien ifAbsent:
> ) ~~ (index - 1)]) ifTrue:
> [self error: 'index probably wrong'].
> Usually people don't have ObjectMemory loaded in their image, and I"m not
> sure what it is check for.
> Why don't you try it in a regular Pharo image versus your VMMaker image.
In Pharo 1.0RC2 without any change, ObjectMemory doesn't exist. When I load
VMMaker it's downloaded from monticello, but obviously, #ClassAlien isn't
(Smalltalk at: #ObjectMemory) classPool
Interestingly, after load alien, #ClassAlien gets added as a key, but all
values of (Smalltalk at: #ObjectMemory) classPool are set to nil, like this:
(Smalltalk at: #ObjectMemory) classPool inspect:
- size : 119
[#AllButHashBits] : nil
[#AllButMarkBit] : nil
[#AllButMarkBitAndTypeMask] : nil
[#AllButRootBit] : nil
[#AllButTypeMask] : nil
[#ClassAlien] : nil
Ciudad de Buenos Aires
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Pharo-dev