On Jan 4, 2011, at 4:25 AM, David T. Lewis wrote:
On Mon, Jan 03, 2011 at 06:55:45PM -0800, Stef T wrote:
Hello Everyone, So, long time squeaker, first time pharo(er ?). Please don't hold this against me ;)
I am trying to get CommandShell loaded into Pharo (using the Seaside Image) via Monticello. I have tried this on Pharo 1.1/1.1.1/1.2 for the record (same thing). I skip past the MVC/Morphic errors about PluggableList etc, and I can get the command shell to pop-up, however, two things happen;
The CommandShell package on SqueakSource is also now broken down into sub-packages, so you can load the individual parts if you want. But just proceding through the MVC warnings as you did is harmless.
1) CommandShell complains about AioPlugin not being present and that it will use the 'old slow' way. That's fine, it's merely a warning
AFAIK, noone has tried building the AioPlugin for Mac, so you will get this warning when running on a Mac. But as you say, it's just a warning.
I imagine that we will see that with igor and the automatic build too.
but 2) None of the commands get executed. If I try the stuff which will eval inside squeak/pharo, then that's fine (Eg; stdout nextPutAll: 'hello world'; cr.). However, if I try a command such as 'ls' or 'who', all hell breaks lose. stack trace follows :)
If I am doing anything obviously wrong, please feel free to hit me over the head :)
Nope, it's not you, it's the plugin included with your VM. Some of the Mac VMs in circulation were accidentally built with a very out of date version of the OSProcessPlugin. Apparently you have one of them, and it will definitely not work. But I think there is a newer version (4.2.5 IIRC) that has the up to date plugin that works properly on Mac.
Dave
Regards S.
3 January 2011 6:49:43 pm
VM: Mac OS - intel - 1065 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.2.4b1 Image: Pharo-1.1-11406-rc3 [Latest update: #11406]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/stef/squeak/SeaSide-3.0 Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/stef/Library/Preferences/Squeak/Internet/My Squeak
UndefinedObject(Object)>>mustBeBooleanIn: Receiver: nil Arguments and temporary variables: context: BufferedAsyncFileReadStream>>moveAvailableDataFrom: proceedValue: nil Receiver's instance variables: nil
UndefinedObject(Object)>>mustBeBoolean Receiver: nil Arguments and temporary variables:
Receiver's instance variables: nil
BufferedAsyncFileReadStream>>moveAvailableDataFrom: Receiver: BufferedAsyncFileReadStream: 'pipeReader' Arguments and temporary variables: sqFile: #[48 205 236 155 72 91 120 160 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0] bufferSize: 1000 buffer: '...etc... count: #(0) Receiver's instance variables:
BufferedAsyncFileReadStream>>moveAvailableDataToBuffer Receiver: BufferedAsyncFileReadStream: 'pipeReader' Arguments and temporary variables:
Receiver's instance variables:
BufferedAsyncFileReadStream>>update: Receiver: BufferedAsyncFileReadStream: 'pipeReader' Arguments and temporary variables: aParameter: a PseudoAioEventHandler Receiver's instance variables:
[] in PseudoAioEventHandler(Object)>>changed: Receiver: a PseudoAioEventHandler Arguments and temporary variables: aParameter: BufferedAsyncFileReadStream: 'pipeReader' aDependent: a PseudoAioEventHandler Receiver's instance variables: dependents: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader') eventGenerator: a Process in Debugger class>>openOn:context:label:contents:full...etc...
DependentsArray>>do: Receiver: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader') Arguments and temporary variables: aBlock: [:aDependent | aDependent update: aParameter] dep: BufferedAsyncFileReadStream: 'pipeReader' i: 1 iLimiT: 1 Receiver's instance variables: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader')
PseudoAioEventHandler(Object)>>changed: Receiver: a PseudoAioEventHandler Arguments and temporary variables: aParameter: a PseudoAioEventHandler Receiver's instance variables: dependents: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader') eventGenerator: a Process in Debugger class>>openOn:context:label:contents:full...etc...
PseudoAioEventHandler(Object)>>changed Receiver: a PseudoAioEventHandler Arguments and temporary variables:
Receiver's instance variables: dependents: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader') eventGenerator: a Process in Debugger class>>openOn:context:label:contents:full...etc...
[] in [] in PseudoAioEventHandler>>eventGeneratorProcess Receiver: a PseudoAioEventHandler Arguments and temporary variables: d: a Delay(125 msecs) Receiver's instance variables: dependents: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader') eventGenerator: a Process in Debugger class>>openOn:context:label:contents:full...etc...
BlockClosure>>repeat Receiver: [self changed. d wait] Arguments and temporary variables:
Receiver's instance variables: outerContext: [] in PseudoAioEventHandler>>eventGeneratorProcess startpc: 59 numArgs: 0
[] in PseudoAioEventHandler>>eventGeneratorProcess Receiver: a PseudoAioEventHandler Arguments and temporary variables: d: a Delay(125 msecs) Receiver's instance variables: dependents: a DependentsArray(BufferedAsyncFileReadStream: 'pipeReader') eventGenerator: a Process in Debugger class>>openOn:context:label:contents:full...etc...
[] in BlockClosure>>newProcess Receiver: [[self changed. d wait] repeat] Arguments and temporary variables:
Receiver's instance variables: outerContext: PseudoAioEventHandler>>eventGeneratorProcess startpc: 54 numArgs: 0
--- The full stack --- UndefinedObject(Object)>>mustBeBooleanIn: UndefinedObject(Object)>>mustBeBoolean BufferedAsyncFileReadStream>>moveAvailableDataFrom: BufferedAsyncFileReadStream>>moveAvailableDataToBuffer BufferedAsyncFileReadStream>>update: [] in PseudoAioEventHandler(Object)>>changed: DependentsArray>>do: PseudoAioEventHandler(Object)>>changed: PseudoAioEventHandler(Object)>>changed [] in [] in PseudoAioEventHandler>>eventGeneratorProcess BlockClosure>>repeat [] in PseudoAioEventHandler>>eventGeneratorProcess [] in BlockClosure>>newProcess