After a long time working solely in Linux, I seem to be confused about
how to configure an image on Windows with OSProcess. I'm running a recent Cog VM (2382, April 26 2011) and have Win32OSProcessPlugin.dll is in my VM directory, but I don't have any of the Plugin classes in my image. When I try to load OSProcessPlugin from SqueakMap, it halts saying it wants InterpreterPlugin to be able to install OSProcessPlugin and subclasses.. What is the proper way to install OSProcess on Windows? Thanks, Chris |
On Wed, Jun 8, 2011 at 4:05 PM, Chris Muller <[hidden email]> wrote:
> What is the proper way to install OSProcess on Windows? Dave can give a definitive answer, but AFAIK, OSProcess doesn't work on Windows. Take a look at ProcessWrapper. Colin |
In reply to this post by Chris Muller-4
Hi Chris,
On Wed, Jun 8, 2011 at 4:05 PM, Chris Muller <[hidden email]> wrote: After a long time working solely in Linux, I seem to be confused about I don't know about a proper way. But if you look at <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/image/{VMMaker-Squeak4.1.image,VMMaker-Squeak4.1.changes}">http://www.squeakvm.org/svn/squeak/branches/Cog/image/{VMMaker-Squeak4.1.image,VMMaker-Squeak4.1.changes} you'll find an OSProcessPlugin there-in which at least compiles on Windows. It is derived from code I wrote for Newspeak at Cadence and we use it to run subversion and mercurial from Windows. It most definitely does work there.
HTH Eliot
|
On Wed, Jun 8, 2011 at 5:04 PM, Eliot Miranda <[hidden email]> wrote:
> I don't know about a proper way. But if you look > at http://www.squeakvm.org/svn/squeak/branches/Cog/image/{VMMaker-Squeak4.1.image,VMMaker-Squeak4.1.changes} > you'll find an OSProcessPlugin there-in which at least compiles on Windows. > It is derived from code I wrote for Newspeak at Cadence and we use it to > run subversion and mercurial from Windows. It most definitely does work > there. Oh, that's great news! Thanks. Colin |
In reply to this post by Chris Muller-4
On Wed, Jun 08, 2011 at 06:05:27PM -0500, Chris Muller wrote:
> After a long time working solely in Linux, I seem to be confused about > how to configure an image on Windows with OSProcess. I'm running a > recent Cog VM (2382, April 26 2011) and have Win32OSProcessPlugin.dll > is in my VM directory, but I don't have any of the Plugin classes in > my image. > > When I try to load OSProcessPlugin from SqueakMap, it halts saying it > wants InterpreterPlugin to be able to install OSProcessPlugin and > subclasses.. > > What is the proper way to install OSProcess on Windows? Hi Chris, Just load OSProcess and CommandShell from SqueakMap. The plugins are separate packages that you can load if you are building your own VM, in which case you would load VMMaker first, which contains the InterpreterPlugin class. Dave |
On Thu, Jun 9, 2011 at 6:14 AM, David T. Lewis <[hidden email]> wrote:
> Just load OSProcess and CommandShell from SqueakMap. The plugins are > separate packages that you can load if you are building your own VM, > in which case you would load VMMaker first, which contains the > InterpreterPlugin class. Oh right, that was the issue I ran into. The official Windows VM doesn't ship with OSProcessPlugin, so if you want to use OSProcess on Windows, you have to build your own VM. Does the Cog VM for Windows ship with OSProcessPlugin, then? If so, we'll finally have a cross-platform API for launching other processes. Colin |
On Thu, Jun 9, 2011 at 9:07 AM, Colin Putney <[hidden email]> wrote:
Yes it does :) McStalker.oscogvm$ unzip -l cogwin.zip Archive: cogwin.zip
Length Date Time Name -------- ---- ---- ---- 0 06-07-11 17:46 cogwin/ 1403381 06-07-11 17:38 cogwin/Croquet.exe 211 04-01-11 12:06 cogwin/Croquet.ini
297521 06-07-11 17:38 cogwin/Croquet.map 99565 06-07-11 17:38 cogwin/SqueakFFIPrims.dll 65835 06-07-11 17:38 cogwin/Win32OSProcessPlugin.dll -------- -------
1866513 6 files
|
On Thu, Jun 9, 2011 at 10:28 AM, Eliot Miranda <[hidden email]> wrote:
> Yes it does :) > McStalker.oscogvm$ unzip -l cogwin.zip > Archive: cogwin.zip > Length Date Time Name > -------- ---- ---- ---- > 0 06-07-11 17:46 cogwin/ > 1403381 06-07-11 17:38 cogwin/Croquet.exe > 211 04-01-11 12:06 cogwin/Croquet.ini > 297521 06-07-11 17:38 cogwin/Croquet.map > 99565 06-07-11 17:38 cogwin/SqueakFFIPrims.dll > 65835 06-07-11 17:38 cogwin/Win32OSProcessPlugin.dll > -------- ------- > 1866513 6 files Awesome! You made my day. Colin |
In reply to this post by David T. Lewis
Thanks for the replies. I am, indeed, able to load OSProcess, but I
can't seem to get OSProcess command: to work. I've have this app which has always worked in the past - it generates 'mybatchfile.bat' in the image directory, and then simply uses OSProcess command: to execute it. But there seems to be some problem with my configuration - I've pasted my system information below. Cog ships with Win32OSProcessPlugin.dll (which unzipped to only 3564 bytes), but could it does not appear in my "Loaded VM Modules", below. Is that an indication of what might be wrong? Sorry I'm so dumb about this - very thanks for your help. - Chris PS - I also tried with the old 3.10.4 Interpreter VM, but then realized I would need to use a corresponding old version of Wind32OSProcessPlugin.dll.. Image ----- C:\Chris\development\Squeak\_testosprocess.image Squeak4.2 latest update: #11451 Current Change Set: Unnamed1 Virtual Machine --------------- C:\squeak\Croquet.exe Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.56] Win32 built on Apr 26 2011 18:23:49 Compiler: 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) CoInterpreter VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 Apr 26 2011 StackToRegisterMappingCogit VMMaker-oscog.51 uuid: d213bf61-5898-475b-8a5c-e4a9bdad2415 Apr 26 2011 Loaded VM Modules ----------------- B2DPlugin VMMaker-oscog.40 (i) BitBltPlugin VMMaker-oscog.40 (i) FilePlugin VMMaker-oscog.40 (i) FloatArrayPlugin VMMaker-oscog.40 (i) LargeIntegers v1.5 VMMaker-oscog.40 (i) LocalePlugin VMMaker-oscog.40 (i) Matrix2x3Plugin VMMaker-oscog.40 (i) MiscPrimitivePlugin VMMaker-oscog.40 (i) SecurityPlugin VMMaker-oscog.40 (i) SocketPlugin VMMaker-oscog.40 (i) Debug Logfile ------------- C:\Chris\development\Squeak\SqueakDebug.log MessageNotUnderstood: UndefinedObject>>nextPutAll: 9 June 2011 3:01:52.785 pm VM: Win32 - Smalltalk Image: Squeak4.2 [latest update: #11451] SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir C:\Chris\development\Squeak Trusted Dir C:\Chris\development\Squeak\cmm Untrusted Dir C:\Documents and Settings\cmm\My Documents\My Squeak UndefinedObject(Object)>>doesNotUnderstand: #nextPutAll: Receiver: nil Arguments and temporary variables: aMessage: nextPutAll: 'cannot execute dir' exception: MessageNotUnderstood: UndefinedObject>>nextPutAll: resumeValue: nil Receiver's instance variables: nil ExternalWindowsOSProcess>>value Receiver: a ExternalWindowsOSProcess with pid nil handle nil on 'dir' (notYetRunning) Arguments and temporary variables: procInfo: nil mainThread: nil Receiver's instance variables: pid: nil runState: #notYetRunning initialStdIn: nil initialStdOut: nil initialStdErr: nil ppid: nil exitStatus: nil handle: nil threads: nil commandLine: 'dir' pwd: nil ExternalWindowsOSProcess class>>command: Receiver: ExternalWindowsOSProcess Arguments and temporary variables: aCommandString: 'dir' Receiver's instance variables: superclass: ExternalOSProcess methodDict: a MethodDictionary(#=->(ExternalWindowsOSProcess>>#= "a CompiledMet...etc... format: 152 instanceVariables: #('ppid' 'exitStatus' 'handle' 'threads' 'commandLine' 'pwd'...etc... organization: ('comparing' = hash) ('initialize - release' closeHandles) ('acce...etc... subclasses: nil name: #ExternalWindowsOSProcess classPool: nil sharedPools: nil environment: Smalltalk globals "a SystemDictionary with lots of globals" category: #'OSProcess-Win32' WindowsProcess>>command: Receiver: a WindowsProcess with pid nil Arguments and temporary variables: aCommandString: 'dir' Receiver's instance variables: pid: nil sessionID: #[180 0 0 0] stdIn: nil stdOut: nil stdErr: nil processAccessor: a WindowsOSProcessAccessor allMyChildren: an OrderedCollection() accessProtect: a Semaphore() processHandle: nil environment: nil mainThread: a WindowsThread (nil, running) threads: an OrderedCollection() OSProcess class>>command: Receiver: OSProcess Arguments and temporary variables: aCommandString: 'dir' Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#initialize->(OSProcess>>#initialize "a Compiled...etc... format: 132 instanceVariables: #('pid') organization: ('initialize - release' initialize) ('testing' isExternalProcess)...etc... subclasses: {ExternalOSProcess . ThisOSProcess} name: #OSProcess classPool: a Dictionary(#UseIOHandle->false ) sharedPools: nil environment: Smalltalk globals "a SystemDictionary with lots of globals" category: #'OSProcess-Base' UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil Compiler>>evaluate:in:to:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadWriteStream '- Did senders slow down? OSProcess command: '...etc... aContext: nil receiver: nil aRequestor: a SmalltalkEditor failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAnd...etc... logFlag: true methodNode: DoIt ^ OSProcess command: 'dir' method: (UndefinedObject>>#DoIt "a CompiledMethod(1178)") value: nil toLog: nil itsSelection: nil itsSelectionString: nil Receiver's instance variables: sourceStream: a ReadWriteStream '- Did senders slow down? OSProcess command: '...etc... requestor: a SmalltalkEditor class: UndefinedObject category: nil context: nil parser: a Parser [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: <<error during printing> Receiver's instance variables: sensor: a KeyboardBuffer morph: a TextMorphForEditView(3005) selectionShowing: false model: a Workspace paragraph: a MultiNewParagraph pointBlock: a CharacterBlock with index 51 and rectangle 158@32 corner: 158@48 ...etc... markBlock: a CharacterBlock with index 27 and character $O and rectangle 0@32 c...etc... beginTypeInBlock: nil emphasisHere: #() otherInterval: (27 to: 50) lastParenLocation: nil oldInterval: (27 to: 50) styler: nil BlockClosure>>on:do: Receiver: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Arguments and temporary variables: exception: OutOfScopeNotification handlerAction: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo...etc... handlerActive: true Receiver's instance variables: outerContext: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: startpc: 97 numArgs: 0 SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [closure] in SmalltalkEditor(TextEditor)>>printIt result: nil rcvr: nil ctxt: nil Receiver's instance variables: sensor: a KeyboardBuffer morph: a TextMorphForEditView(3005) selectionShowing: false model: a Workspace paragraph: a MultiNewParagraph pointBlock: a CharacterBlock with index 51 and rectangle 158@32 corner: 158@48 ...etc... markBlock: a CharacterBlock with index 27 and character $O and rectangle 0@32 c...etc... beginTypeInBlock: nil emphasisHere: #() otherInterval: (27 to: 50) lastParenLocation: nil oldInterval: (27 to: 50) styler: nil SmalltalkEditor(TextEditor)>>printIt Receiver: a SmalltalkEditor Arguments and temporary variables: Receiver's instance variables: sensor: a KeyboardBuffer morph: a TextMorphForEditView(3005) selectionShowing: false model: a Workspace paragraph: a MultiNewParagraph pointBlock: a CharacterBlock with index 51 and rectangle 158@32 corner: 158@48 ...etc... markBlock: a CharacterBlock with index 27 and character $O and rectangle 0@32 c...etc... beginTypeInBlock: nil emphasisHere: #() otherInterval: (27 to: 50) lastParenLocation: nil oldInterval: (27 to: 50) styler: nil SmalltalkEditor(TextEditor)>>printIt: Receiver: a SmalltalkEditor Arguments and temporary variables: characterStream: a WriteStream '' Receiver's instance variables: sensor: a KeyboardBuffer morph: a TextMorphForEditView(3005) selectionShowing: false model: a Workspace paragraph: a MultiNewParagraph pointBlock: a CharacterBlock with index 51 and rectangle 158@32 corner: 158@48 ...etc... markBlock: a CharacterBlock with index 27 and character $O and rectangle 0@32 c...etc... beginTypeInBlock: nil emphasisHere: #() otherInterval: (27 to: 50) lastParenLocation: nil oldInterval: (27 to: 50) styler: nil SmalltalkEditor(TextEditor)>>dispatchOnCharacter:with: Receiver: a SmalltalkEditor Arguments and temporary variables: char: $p typeAheadStream: a WriteStream '' honorCommandKeys: true openers: nil closers: nil result: nil Receiver's instance variables: sensor: a KeyboardBuffer morph: a TextMorphForEditView(3005) selectionShowing: false model: a Workspace paragraph: a MultiNewParagraph pointBlock: a CharacterBlock with index 51 and rectangle 158@32 corner: 158@48 ...etc... markBlock: a CharacterBlock with index 27 and character $O and rectangle 0@32 c...etc... beginTypeInBlock: nil emphasisHere: #() otherInterval: (27 to: 50) lastParenLocation: nil oldInterval: (27 to: 50) styler: nil SmalltalkEditor(TextEditor)>>readKeyboard Receiver: a SmalltalkEditor Arguments and temporary variables: typeAhead: a WriteStream '' char: $p Receiver's instance variables: sensor: a KeyboardBuffer morph: a TextMorphForEditView(3005) selectionShowing: false model: a Workspace paragraph: a MultiNewParagraph pointBlock: a CharacterBlock with index 51 and rectangle 158@32 corner: 158@48 ...etc... markBlock: a CharacterBlock with index 27 and character $O and rectangle 0@32 c...etc... beginTypeInBlock: nil emphasisHere: #() otherInterval: (27 to: 50) lastParenLocation: nil oldInterval: (27 to: 50) styler: nil [] in [] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(3005) Arguments and temporary variables: <<error during printing> Receiver's instance variables: bounds: 0@0 corner: 429@50 owner: a TransformMorph(1998) submorphs: #() fullBounds: 0@0 corner: 429@50 color: Color black extension: a MorphExtension (3074) [other: (blinkStart -> 5689)] borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for '- Did senders slow down? OSProcess command: ''dir''' wrapFlag: true paragraph: a MultiNewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editHistory: nil editView: a PluggableTextMorphPlus(1841) acceptOnCR: false TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent: Receiver: a TextMorphForEditView(3005) Arguments and temporary variables: interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc... evt: [keystroke '<Cmd-p>'] oldEditor: a SmalltalkEditor oldParagraph: a MultiNewParagraph oldText: a Text for '- Did senders slow down? OSProcess command: ''dir''' Receiver's instance variables: bounds: 0@0 corner: 429@50 owner: a TransformMorph(1998) submorphs: #() fullBounds: 0@0 corner: 429@50 color: Color black extension: a MorphExtension (3074) [other: (blinkStart -> 5689)] borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for '- Did senders slow down? OSProcess command: ''dir''' wrapFlag: true paragraph: a MultiNewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editHistory: nil editView: a PluggableTextMorphPlus(1841) acceptOnCR: false TextMorphForEditView>>handleInteraction:fromEvent: Receiver: a TextMorphForEditView(3005) Arguments and temporary variables: interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke...etc... evt: [keystroke '<Cmd-p>'] Receiver's instance variables: bounds: 0@0 corner: 429@50 owner: a TransformMorph(1998) submorphs: #() fullBounds: 0@0 corner: 429@50 color: Color black extension: a MorphExtension (3074) [other: (blinkStart -> 5689)] borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for '- Did senders slow down? OSProcess command: ''dir''' wrapFlag: true paragraph: a MultiNewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editHistory: nil editView: a PluggableTextMorphPlus(1841) acceptOnCR: false [] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(3005) Arguments and temporary variables: evt: [keystroke '<Cmd-p>'] action: nil Receiver's instance variables: bounds: 0@0 corner: 429@50 owner: a TransformMorph(1998) submorphs: #() fullBounds: 0@0 corner: 429@50 color: Color black extension: a MorphExtension (3074) [other: (blinkStart -> 5689)] borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for '- Did senders slow down? OSProcess command: ''dir''' wrapFlag: true paragraph: a MultiNewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil editHistory: nil editView: a PluggableTextMorphPlus(1841) acceptOnCR: false StandardToolSet class>>codeCompletionAround:textMorph:keyStroke: Receiver: StandardToolSet Arguments and temporary variables: aBlock: [closure] in TextMorphForEditView(TextMorph)>>keyStroke: aTextMorph: a TextMorphForEditView(3005) evt: [keystroke '<Cmd-p>'] Receiver's instance variables: superclass: Object methodDict: a MethodDictionary() format: 2 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #StandardToolSet classPool: nil sharedPools: nil environment: Smalltalk globals "a SystemDictionary with lots of globals" category: #'Tools-Base' --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #nextPutAll: ExternalWindowsOSProcess>>value ExternalWindowsOSProcess class>>command: WindowsProcess>>command: OSProcess class>>command: UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: BlockClosure>>on:do: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: SmalltalkEditor(TextEditor)>>printIt SmalltalkEditor(TextEditor)>>printIt: SmalltalkEditor(TextEditor)>>dispatchOnCharacter:with: SmalltalkEditor(TextEditor)>>readKeyboard [] in [] in TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent: TextMorphForEditView>>handleInteraction:fromEvent: [] in TextMorphForEditView(TextMorph)>>keyStroke: StandardToolSet class>>codeCompletionAround:textMorph:keyStroke: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ToolSet class>>codeCompletionAround:textMorph:keyStroke: TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView>>keyStroke: TextMorphForEditView(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: TextMorphForEditView(Morph)>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: [] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess On Thu, Jun 9, 2011 at 8:14 AM, David T. Lewis <[hidden email]> wrote: > On Wed, Jun 08, 2011 at 06:05:27PM -0500, Chris Muller wrote: >> After a long time working solely in Linux, I seem to be confused about >> how to configure an image on Windows with OSProcess. I'm running a >> recent Cog VM (2382, April 26 2011) and have Win32OSProcessPlugin.dll >> is in my VM directory, but I don't have any of the Plugin classes in >> my image. >> >> When I try to load OSProcessPlugin from SqueakMap, it halts saying it >> wants InterpreterPlugin to be able to install OSProcessPlugin and >> subclasses.. >> >> What is the proper way to install OSProcess on Windows? > > Hi Chris, > > Just load OSProcess and CommandShell from SqueakMap. The plugins are > separate packages that you can load if you are building your own VM, > in which case you would load VMMaker first, which contains the > InterpreterPlugin class. > > Dave > > > |
Free forum by Nabble | Edit this page |