[squeak-dev] Re: [Vm-dev] OSProcess in Cog

Rob Withers reefedjib at yahoo.com
Tue Jul 27 07:47:02 UTC 2010


Thanks, David, I was able to generate unix plugins on Windows and build them 
on unix.

I am still having problems outputting to stdOut on both unix and Windows.  I 
cannot tell the issue on unix since I am headless.  On Windows it complains 
that stdOut accessor is closed.   Here is the script I am using in both 
cases:

ThisOSProcess thisOSProcess stdOut
        nextPutAll: 'hello world';
        flush.

Is the something I need to be doing to open the accessors before using them?

Thanks,
Rob

--------------------------------------------------
From: "David T. Lewis" <lewis at mail.msen.com>
Sent: Monday, July 26, 2010 11:31 PM
To: "The general-purpose Squeak developers list" 
<squeak-dev at lists.squeakfoundation.org>
Subject: Re: [squeak-dev] Re: [Vm-dev] OSProcess in Cog

> On Mon, Jul 26, 2010 at 11:21:10AM -0700, Eliot Miranda wrote:
>>
>> On Mon, Jul 26, 2010 at 7:13 AM, David T. Lewis <lewis at mail.msen.com> 
>> wrote:
>>
>> > On Sun, Jul 25, 2010 at 11:01:12PM -0400, Rob Withers wrote:
>
> <snip>
>
>> > > Third, I set self halts in UnixOSProcessPlugin 
>> > > class>>#shouldBeTranslated
>> > > and Win32OSProcessPlugin class>>#shouldBeTranslated.   The unix side
>> > > eventually calls:
>> > >
>> > > UnixOSProcessPlugin class>>#isResponsibleForThisPlatform
>> > >       "Answer true is this is an instance of the class which is
>> > >       responsible for representing
>> > >       the OS process for the Squeak VM running on the current 
>> > > platform. A
>> > >       false answer is
>> > >       usually the result of running the image on a different platform 
>> > > and
>> > >       VM.
>> > >       Note: Keep this method is sync with OSProcess>>isUnix."
>> > >
>> > >       | numericOsVersion |
>> > >
>> > >       ^ (self platformName = 'unix') or:
>> > >               [numericOsVersion := self osVersion asInteger ifNil: 
>> > > [0].
>> > >               (self platformName = 'Mac OS') and: [numericOsVersion 
>> > >  >=
>> > >               1000]]
>> > >
>> > > and this calls:
>> > >
>> > > OSProcessPlugin class>>#platformName
>> > >       "After Squeak version 3.6, #platformName was moved to
>> > SmalltalkImage
>> > >       "
>> > >
>> > >       ^ ((Smalltalk classNamed: 'SmalltalkImage')
>> > >               ifNil: [^ Smalltalk platformName]) current platformName
>> > >
>> > > which kills any hope of being a cross-compiled source.
>> >
>> > No worries there. The C source is not supposed to be cross-compiled. 
>> > The
>> > implementations in Slang/Smalltalk are completely different for Unix 
>> > and
>> > Windows, and the resulting generated code (UnixOSProcessPlugin.c and
>> > Win32OSProcessPlugin.c respectively) are completely different as well.
>> > When building a VM to run on Unix/Linux/OSX you would be compiling the
>> > UnixOSProcessPlugin.c, and when compiling a VM for Windows you would
>> > compile Win32OSProcessPlugin.c.
>> >
>> >
>> Cross-compilation is quite separate from generation.  Cog is 
>> intentionally
>> modified to spit out exactly the same source tree irrespective of 
>> platform.
>
> Understood.
>
>>  Needing a different VMMaker generation step for each platform is IMO an
>> absurdity.  Whether a plugin is compiled or not then depends on the
>> plugins.int and plugins.ext files in each build directory.  So the intent 
>> is
>> to always spit out the UnixOSProcessPlugin source but only compile it on
>> Unix platforms, as selected by plugins.int & plugins.ext.
>>
>> I notice I've not included my version of Win32OSProcessPlugin in Cog. 
>> I'll
>> rectify that this evening.
>
> I updated OSProcessPlugin, AioPlugin, and XDisplayControlPlugin to work
> properly with CrossPlatformVMMaker, and to continue working as before
> with the traditional VMMakerTool. This lets CrossPlatformVMMaker produce
> the expected sources for Win32OSProcessPlugin and UnixOSProcessPlugin,
> and should result in all of these being generated when running Squeak
> on Windows.
>
> 
> www.squeaksource.com/OSProcessPlugin/VMConstruction-Plugins-OSProcessPlugin-dtl.23
>  www.squeaksource.com/AioPlugin/VMConstruction-Plugins-AioPlugin-dtl.10
> 
> www.squeaksource.com/XDCP/VMConstruction-Plugins-XDisplayControlPlugin-dtl.8
>
> Dave
>
> 



More information about the Squeak-dev mailing list