On Tue, Sep 03, 2013 at 10:51:33PM -0400, David T. Lewis wrote:
> On Tue, Sep 03, 2013 at 01:48:46PM +0200, Goubier Thierry wrote:
> > 
> > Le 03/09/2013 13:36, David T. Lewis a ?crit :
> > >
> > >Can you post the method here first? I'd like to check it on some Squeak 
> > >images
> > >before it goes into the repository.
> > 
> > Here it is (at least an example):
> > 
> > in OSProcess class
> > 
> > isPharo3AndLater
> >     "Test if we are on Pharo 3.0"
> > 
> >     ^ (Smalltalk classNamed: 'SystemVersion')
> >             ifNil: [ false ]
> >             ifNotNil: [ :v | v current type = 'Pharo' and: [ v current 
> >             major >= 3 ] ]
> 
> The idea is right, but the details can be a PITA ;-)
> 
> - In Squeak trunk, class SystemVersion exists. But it does not understand 
> #type, so this fails at runtime. 
> 
> - There are no implementors of #major in Squeak (but this can be rewritten 
> using #perform:).
> 
> - In Squeak 3.8, #ifNil:ifNotNil: requires a block with no arguments.
> 
> I did not check the other Pharo versions.
> 
> Something like this might work:
> 
> isPharo3AndLater
>       Smalltalk
>               at: #SystemVersion
>               ifPresent: [:cls | ((cls canUnderstand: #type) and: [ cls 
> canUnderstand: #major ])
>                       ifTrue: [^ cls current type = 'Pharo' and: [ cls 
> current major >= 3 ]]].
>       ^false
> 


I am also checking the platform subtype implementation (OSProcess 
platformSubtype).

In Pharo:

Smalltalk os subtype ==> 'i686'

This reflects the processor type, not the os subtype (it should be 'x86_64' on 
my PC).

Is this intentional?

Dave


Reply via email to