[squeak-dev] Loading FFI is broken

Frank Shearar frank.shearar at gmail.com
Thu Nov 14 09:59:19 UTC 2013


That's the source of the problem: FFI-Kernel uses FFIConstants, which
is declared/defined in FFI-Pools.

Insert standard Frank rant of something called "Kernel" depending on
other stuff. (Possibly insert standard Chris rant of a package
containing a single class? :) )

frank

On 12 November 2013 23:20, Chris Muller <ma.chris.m at gmail.com> wrote:
> I didn't see you loading FFI-Pools in advance.  The issue you encountered
> may not have had anything to do with -eem.24.
>
> FYI -- FFI also has a "head" release on SqueakMap which documents how to
> load it.
>
>
> On Tue, Nov 12, 2013 at 4:50 PM, Frank Shearar <frank.shearar at gmail.com>
> wrote:
>>
>> That pulls in the latest packages, right?
>>
>> So that does work. But why does the reported version fail to load?
>> That's a problem still.
>>
>> (While this lets me get on with what I wanted to do - add
>> #interleaving: to Xtreams - this is still a problem. But thanks for
>> the workaround, Chris!)
>>
>> frank
>>
>> On 12 November 2013 20:55, Chris Muller <asqueaker at gmail.com> wrote:
>> > Installer new merge: #ffi.
>> >
>> > Worked for me..
>> >
>> > On Tue, Nov 12, 2013 at 2:45 PM, Frank Shearar <frank.shearar at gmail.com>
>> > wrote:
>> >> On 26 February 2013 18:36, Eliot Miranda <eliot.miranda at gmail.com>
>> >> wrote:
>> >>>
>> >>>
>> >>> On Tue, Feb 26, 2013 at 1:51 AM, Frank Shearar
>> >>> <frank.shearar at gmail.com>
>> >>> wrote:
>> >>>>
>> >>>> (Installer monticello mc: (MCHttpRepository new location:
>> >>>> 'http://source.squeak.org/FFI'))
>> >>>>     install: 'FFI-Kernel-eem.24.mcz'. "There's a -tbn.25, but that's
>> >>>> not important to this post"
>> >>>>
>> >>>> fails with an MNU: ExternalFunction class >> callingConventionFor:.
>> >>>>
>> >>>> As far as I can see what's happening is this:
>> >>>> * during the loading of the mcz ExternalFunction is defined,
>> >>>> * a method is parsed (#XOpenDisplay, which has a pragma <cdecl:
>> >>>> X11Display* ''XOpenDisplay'' (char*) module:''X11''>)
>> >>>> * Parser >> externalFunctionDeclaration checks whether
>> >>>> ExternalFunction is defined.
>> >>>> * It is, so tries to evaluate `descriptorClass callingConvention:
>> >>>> here` and boom, because ExternalFunction class >>
>> >>>> callingConventionFor: _has not been loaded yet_.
>> >>>
>> >>>
>> >>> I thought we'd modified Monticello to load new methods first.  Did
>> >>> this not
>> >>> get added to trunk?
>> >>
>> >> Apparently not. It still happens with an up-to-date Squeak 4.5.
>> >>
>> >> frank
>> >>
>> >>>> I've seen this kind of issue with Helvetia code: sometimes you simply
>> >>>> have to load class-side methods first.
>> >>>>
>> >>>> Thoughts? Lukas worked around the issue with his Helvetia code by
>> >>>> directly patching Monticello, and ripping out its "try to do atomic
>> >>>> loading" mechanism.
>> >>>>
>> >>>> frank
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> best,
>> >>> Eliot
>> >>>
>> >>>
>> >>>
>> >>
>> >
>
>


More information about the Squeak-dev mailing list