On Wed, Sep 04, 2013 at 02:17:29PM +0200, Marcus Denker wrote: > > On Sep 4, 2013, at 2:13 PM, David T. Lewis <le...@mail.msen.com> wrote: > > > 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? > > > I don't think so. > > Marcus >
Thanks Goubier and Marcus, I made the updates to OSProcess and CommandShell to handle system version and subtype in Pharo 3.0. I did not yet update ConfigurationOfOSProcess or ConfigurationOfCommandShell, but the latest versions for Squeak/Pharo are in OSProcess-dtl.83 and CommandShell-dtl.73 in the SqueakSource repositories. Dave