Hi Ross, please use the Magma installation instructions found on the Swiki:
http://wiki.squeak.org/squeak/2657
You are not the first get confused by Magma's installation process. I may have "tried too hard" to make it easy, and ended up confusing people instead in many cases..
I have just updated that documentation page, made clarifications and placed emphasis on the important aspect of the installation which is regularly missed. Please give it another try!
Regards, Chris
On Mon, Mar 23, 2009 at 4:49 PM, Ross Boylan ross@biostat.ucsf.edu wrote:
On Mon, 2009-03-23 at 11:53 -0500, Chris Muller wrote:
I'm thinking of using Damien's squeak-dev 3.10 image. Should that
work?
Please run the Magma test suite on that image. It's really the best and only way to know.
1) Load Magma tester from SqueakMap 2) MagmaTestCase fullSuite maDebug "do it"
It didn't get too far. In TestSuite self tests doesn't understand the message #addAllFirst:. The stack trace appears below.
Perhaps this is related to a glitch during installation:
From squeakmap I loaded the r42beta2 versions of Magma Server and then
Magma Client. During the latter I got: "You are about to load new versions of the following packages that have unsaved changes in the image. If you continue, you will lose these changes.
Ma base additions
Select Proceed to continue, or close this window to cancel the operation."
Of course, I also got messages that the packages were not known to be compatible with 3.10.
------------------------------------ stack trace-------------------- 23 March 2009 2:46:31 pm
VM: unix - a SmalltalkImage Image: Squeak3.10.2 [latest update: #7179]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /usr/local/src/insurance Trusted Dir /usr/local/src/insurance/secure Untrusted Dir /usr/local/src/insurance/My Squeak
Set(Object)>>doesNotUnderstand: #addAllFirst: Receiver: a Set(MagmaCollectionTester>>#testPersistentEmpty {test querys - persistent empty} MagmaCo...etc... Arguments and temporary variables: aMessage: addAllFirst: a Set(MagmaTestCase>>#testUpdateByteObjects {other small...etc... Receiver's instance variables: tally: 18 array: an Array(nil nil nil MagmaCollectionTester>>#testPersistentEmpty {test q...etc...
TestSuite>>addTestsFirst: Receiver: a TestSuite Arguments and temporary variables: aCollection: a Set(MagmaTestCase>>#testUpdateByteObjects {other small tests} Ma...etc... Receiver's instance variables: tests: a Set(MagmaCollectionTester>>#testPersistentEmpty {test querys
- persist...etc...
resources: nil name: nil
MagmaTestCase class>>fullSuite Receiver: MagmaTestCase Arguments and temporary variables:
Receiver's instance variables: superclass: MaNetworkTestCase methodDict: a MethodDictionary(size 188) format: 162 instanceVariables: #('magmaConsole' 'peerConsole' 'clientSession' 'localRoot' '...etc... organization: ('initialize-release' abort abortClients assertForwardRecoverySig...etc... subclasses: {MagmaCollectionTester} name: #MagmaTestCase classPool: a Dictionary(#InitiateBackupPrereqsCompleted->nil #MagmaServerAddres...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Magma tester-SUnit tests' traitComposition: nil localSelectors: nil
UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:
Receiver's instance variables: nil
--- The full stack --- Set(Object)>>doesNotUnderstand: #addAllFirst: TestSuite>>addTestsFirst: MagmaTestCase class>>fullSuite UndefinedObject>>DoIt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compiler>>evaluate:in:to:notifying:ifFail:logged: [] in TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection {[rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt...]} BlockContext>>on:do: TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection TextMorphForShoutEditor(ParagraphEditor)>>doIt [] in TextMorphForShoutEditor(ParagraphEditor)>>doIt: {[self doIt]} TextMorphForShoutEditor(Controller)>>terminateAndInitializeAround: TextMorphForShoutEditor(ParagraphEditor)>>doIt: TextMorphForShoutEditor(ParagraphEditor)>>dispatchOnCharacter:with: TextMorphForShoutEditor(TextMorphEditor)>>dispatchOnCharacter:with: TextMorphForShoutEditor(ParagraphEditor)>>readKeyboard TextMorphForShoutEditor(TextMorphEditor)>>readKeyboard [] in TextMorphForShout(TextMorph)>>keyStroke: {[editor readKeyboard]} TextMorphForShout(TextMorph)>>handleInteraction:fromEvent: TextMorphForShout(TextMorphForEditView)>>handleInteraction:fromEvent: TextMorphForShout(TextMorph)>>keyStroke: TextMorphForShout(TextMorphForEditView)>>keyStroke: TextMorphForShout(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForShout(Morph)>>handleEvent: TextMorphForShout(Morph)>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self. ActiveEvent := anEvent. e := anEvent transformedB...]} [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]} BlockContext>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: [] in HandMorph>>sendKeyboardEvent: {[:focusHolder | anEvent wasHandled ifFalse: [self sendEvent: anEvent ...]} OrderedCollection>>do: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h processEvents. capturingGesture := capturingGest...]} Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]}
2009/3/24 Chris Muller ma.chris.m@gmail.com:
Hi Ross, please use the Magma installation instructions found on the Swiki:
http://wiki.squeak.org/squeak/2657
You are not the first get confused by Magma's installation process. I may have "tried too hard" to make it easy, and ended up confusing people instead in many cases..
I have just updated that documentation page, made clarifications and placed emphasis on the important aspect of the installation which is regularly missed. Please give it another try!
Cris, write an Installer scripts :) Its easy and fast.
Regards, Chris
On Mon, Mar 23, 2009 at 4:49 PM, Ross Boylan ross@biostat.ucsf.edu wrote:
On Mon, 2009-03-23 at 11:53 -0500, Chris Muller wrote:
I'm thinking of using Damien's squeak-dev 3.10 image. Should that
work?
Please run the Magma test suite on that image. It's really the best and only way to know.
1) Load Magma tester from SqueakMap 2) MagmaTestCase fullSuite maDebug "do it"
It didn't get too far. In TestSuite self tests doesn't understand the message #addAllFirst:. The stack trace appears below.
Perhaps this is related to a glitch during installation:
From squeakmap I loaded the r42beta2 versions of Magma Server and then
Magma Client. During the latter I got: "You are about to load new versions of the following packages that have unsaved changes in the image. If you continue, you will lose these changes.
Ma base additions
Select Proceed to continue, or close this window to cancel the operation."
Of course, I also got messages that the packages were not known to be compatible with 3.10.
------------------------------------ stack trace-------------------- 23 March 2009 2:46:31 pm
VM: unix - a SmalltalkImage Image: Squeak3.10.2 [latest update: #7179]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /usr/local/src/insurance Trusted Dir /usr/local/src/insurance/secure Untrusted Dir /usr/local/src/insurance/My Squeak
Set(Object)>>doesNotUnderstand: #addAllFirst: Receiver: a Set(MagmaCollectionTester>>#testPersistentEmpty {test querys - persistent empty} MagmaCo...etc... Arguments and temporary variables: aMessage: addAllFirst: a Set(MagmaTestCase>>#testUpdateByteObjects {other small...etc... Receiver's instance variables: tally: 18 array: an Array(nil nil nil MagmaCollectionTester>>#testPersistentEmpty {test q...etc...
TestSuite>>addTestsFirst: Receiver: a TestSuite Arguments and temporary variables: aCollection: a Set(MagmaTestCase>>#testUpdateByteObjects {other small tests} Ma...etc... Receiver's instance variables: tests: a Set(MagmaCollectionTester>>#testPersistentEmpty {test querys
- persist...etc...
resources: nil name: nil
MagmaTestCase class>>fullSuite Receiver: MagmaTestCase Arguments and temporary variables:
Receiver's instance variables: superclass: MaNetworkTestCase methodDict: a MethodDictionary(size 188) format: 162 instanceVariables: #('magmaConsole' 'peerConsole' 'clientSession' 'localRoot' '...etc... organization: ('initialize-release' abort abortClients assertForwardRecoverySig...etc... subclasses: {MagmaCollectionTester} name: #MagmaTestCase classPool: a Dictionary(#InitiateBackupPrereqsCompleted->nil #MagmaServerAddres...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Magma tester-SUnit tests' traitComposition: nil localSelectors: nil
UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:
Receiver's instance variables: nil
--- The full stack --- Set(Object)>>doesNotUnderstand: #addAllFirst: TestSuite>>addTestsFirst: MagmaTestCase class>>fullSuite UndefinedObject>>DoIt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compiler>>evaluate:in:to:notifying:ifFail:logged: [] in TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection {[rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt...]} BlockContext>>on:do: TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection TextMorphForShoutEditor(ParagraphEditor)>>doIt [] in TextMorphForShoutEditor(ParagraphEditor)>>doIt: {[self doIt]} TextMorphForShoutEditor(Controller)>>terminateAndInitializeAround: TextMorphForShoutEditor(ParagraphEditor)>>doIt: TextMorphForShoutEditor(ParagraphEditor)>>dispatchOnCharacter:with: TextMorphForShoutEditor(TextMorphEditor)>>dispatchOnCharacter:with: TextMorphForShoutEditor(ParagraphEditor)>>readKeyboard TextMorphForShoutEditor(TextMorphEditor)>>readKeyboard [] in TextMorphForShout(TextMorph)>>keyStroke: {[editor readKeyboard]} TextMorphForShout(TextMorph)>>handleInteraction:fromEvent: TextMorphForShout(TextMorphForEditView)>>handleInteraction:fromEvent: TextMorphForShout(TextMorph)>>keyStroke: TextMorphForShout(TextMorphForEditView)>>keyStroke: TextMorphForShout(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForShout(Morph)>>handleEvent: TextMorphForShout(Morph)>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self. ActiveEvent := anEvent. e := anEvent transformedB...]} [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]} BlockContext>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: [] in HandMorph>>sendKeyboardEvent: {[:focusHolder | anEvent wasHandled ifFalse: [self sendEvent: anEvent ...]} OrderedCollection>>do: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h processEvents. capturingGesture := capturingGest...]} Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]}
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
Hi Igor, I think you may be right. But can you elaborate a little?
Over the last week or so, I developed a "SarBuilder2" which does all the hard work of making the complex object that is a SAR. It calculates prereqs and determines the correct load order, and creates the load script and writes out the ZipArchive to a .sar file of your choosing. Absolutely wonderful.
One reason I like using "SAR" as my "Installer" because I sometimes need *objects*, not just code, to be brought into the object system.
Still, I have had some positive exposure to "Installer" which, unfortunately, is not included with 3.9 :(. I see it can load Monticellos, change-sets, SqueakMap packages, etc. That's all great, but I guess SARInstaller can do that too, and its included with 3.9.
Regards, Chris
On Tue, Mar 24, 2009 at 3:48 PM, Igor Stasenko siguctua@gmail.com wrote:
2009/3/24 Chris Muller ma.chris.m@gmail.com:
Hi Ross, please use the Magma installation instructions found on the Swiki:
http://wiki.squeak.org/squeak/2657
You are not the first get confused by Magma's installation process. I may have "tried too hard" to make it easy, and ended up confusing people instead in many cases..
I have just updated that documentation page, made clarifications and placed emphasis on the important aspect of the installation which is regularly missed. Please give it another try!
Cris, write an Installer scripts :) Its easy and fast.
Regards, Chris
On Mon, Mar 23, 2009 at 4:49 PM, Ross Boylan ross@biostat.ucsf.edu wrote:
On Mon, 2009-03-23 at 11:53 -0500, Chris Muller wrote:
I'm thinking of using Damien's squeak-dev 3.10 image. Should that
work?
Please run the Magma test suite on that image. It's really the best and only way to know.
1) Load Magma tester from SqueakMap 2) MagmaTestCase fullSuite maDebug "do it"
It didn't get too far. In TestSuite self tests doesn't understand the message #addAllFirst:. The stack trace appears below.
Perhaps this is related to a glitch during installation:
From squeakmap I loaded the r42beta2 versions of Magma Server and then
Magma Client. During the latter I got: "You are about to load new versions of the following packages that have unsaved changes in the image. If you continue, you will lose these changes.
Ma base additions
Select Proceed to continue, or close this window to cancel the operation."
Of course, I also got messages that the packages were not known to be compatible with 3.10.
------------------------------------ stack trace-------------------- 23 March 2009 2:46:31 pm
VM: unix - a SmalltalkImage Image: Squeak3.10.2 [latest update: #7179]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /usr/local/src/insurance Trusted Dir /usr/local/src/insurance/secure Untrusted Dir /usr/local/src/insurance/My Squeak
Set(Object)>>doesNotUnderstand: #addAllFirst: Receiver: a Set(MagmaCollectionTester>>#testPersistentEmpty {test querys - persistent empty} MagmaCo...etc... Arguments and temporary variables: aMessage: addAllFirst: a Set(MagmaTestCase>>#testUpdateByteObjects {other small...etc... Receiver's instance variables: tally: 18 array: an Array(nil nil nil MagmaCollectionTester>>#testPersistentEmpty {test q...etc...
TestSuite>>addTestsFirst: Receiver: a TestSuite Arguments and temporary variables: aCollection: a Set(MagmaTestCase>>#testUpdateByteObjects {other small tests} Ma...etc... Receiver's instance variables: tests: a Set(MagmaCollectionTester>>#testPersistentEmpty {test querys
- persist...etc...
resources: nil name: nil
MagmaTestCase class>>fullSuite Receiver: MagmaTestCase Arguments and temporary variables:
Receiver's instance variables: superclass: MaNetworkTestCase methodDict: a MethodDictionary(size 188) format: 162 instanceVariables: #('magmaConsole' 'peerConsole' 'clientSession' 'localRoot' '...etc... organization: ('initialize-release' abort abortClients assertForwardRecoverySig...etc... subclasses: {MagmaCollectionTester} name: #MagmaTestCase classPool: a Dictionary(#InitiateBackupPrereqsCompleted->nil #MagmaServerAddres...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Magma tester-SUnit tests' traitComposition: nil localSelectors: nil
UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:
Receiver's instance variables: nil
--- The full stack --- Set(Object)>>doesNotUnderstand: #addAllFirst: TestSuite>>addTestsFirst: MagmaTestCase class>>fullSuite UndefinedObject>>DoIt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compiler>>evaluate:in:to:notifying:ifFail:logged: [] in TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection {[rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt...]} BlockContext>>on:do: TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection TextMorphForShoutEditor(ParagraphEditor)>>doIt [] in TextMorphForShoutEditor(ParagraphEditor)>>doIt: {[self doIt]} TextMorphForShoutEditor(Controller)>>terminateAndInitializeAround: TextMorphForShoutEditor(ParagraphEditor)>>doIt: TextMorphForShoutEditor(ParagraphEditor)>>dispatchOnCharacter:with: TextMorphForShoutEditor(TextMorphEditor)>>dispatchOnCharacter:with: TextMorphForShoutEditor(ParagraphEditor)>>readKeyboard TextMorphForShoutEditor(TextMorphEditor)>>readKeyboard [] in TextMorphForShout(TextMorph)>>keyStroke: {[editor readKeyboard]} TextMorphForShout(TextMorph)>>handleInteraction:fromEvent: TextMorphForShout(TextMorphForEditView)>>handleInteraction:fromEvent: TextMorphForShout(TextMorph)>>keyStroke: TextMorphForShout(TextMorphForEditView)>>keyStroke: TextMorphForShout(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForShout(Morph)>>handleEvent: TextMorphForShout(Morph)>>handleFocusEvent: [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self. ActiveEvent := anEvent. e := anEvent transformedB...]} [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]} BlockContext>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: [] in HandMorph>>sendKeyboardEvent: {[:focusHolder | anEvent wasHandled ifFalse: [self sendEvent: anEvent ...]} OrderedCollection>>do: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h processEvents. capturingGesture := capturingGest...]} Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]}
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
-- Best regards, Igor Stasenko AKA sig.
2009/3/24 Chris Muller ma.chris.m@gmail.com:
Hi Igor, I think you may be right. But can you elaborate a little?
Over the last week or so, I developed a "SarBuilder2" which does all the hard work of making the complex object that is a SAR. It calculates prereqs and determines the correct load order, and creates the load script and writes out the ZipArchive to a .sar file of your choosing. Absolutely wonderful.
One reason I like using "SAR" as my "Installer" because I sometimes need *objects*, not just code, to be brought into the object system.
Still, I have had some positive exposure to "Installer" which, unfortunately, is not included with 3.9 :(. I see it can load Monticellos, change-sets, SqueakMap packages, etc. That's all great, but I guess SARInstaller can do that too, and its included with 3.9.
Well, the problem with SAR, that its a monolithinc file which contains everything you need to install. While with Installer you could provide a scripts, which can be easily customized by user(s) for their own preference.
Suppose you write it in style like:
Installer magma install: 'MaClient'.
"This one is optional, comment it if you don't want it" Installer magma install: 'MaTests'.
"This one is experimental, comment it if you don't want it" Installer magma install: 'MaTrickyExperiment'.
and so on..
Regards, Chris
Igor Stasenko wrote:
2009/3/24 Chris Muller ma.chris.m@gmail.com:
Hi Igor, I think you may be right. But can you elaborate a little?
Over the last week or so, I developed a "SarBuilder2" which does all the hard work of making the complex object that is a SAR. It calculates prereqs and determines the correct load order, and creates the load script and writes out the ZipArchive to a .sar file of your choosing. Absolutely wonderful.
One reason I like using "SAR" as my "Installer" because I sometimes need *objects*, not just code, to be brought into the object system.
Still, I have had some positive exposure to "Installer" which, unfortunately, is not included with 3.9 :(. I see it can load Monticellos, change-sets, SqueakMap packages, etc. That's all great, but I guess SARInstaller can do that too, and its included with 3.9.
Well, the problem with SAR, that its a monolithinc file which contains everything you need to install. While with Installer you could provide a scripts, which can be easily customized by user(s) for their own preference.
Suppose you write it in style. Installer magma install: 'MaClient'.
There is no need to define a new class for this, Installer magma should really be implemented (if at all) as a shortcut to..
Installer-c-#magma
^ Installer ss project: 'Magma'.
see #lukas #keith goran squeaksource etc.
Installation of predefined options is performed by a line such as:
Installer install: 'MagmaClient'.
You can implement/publish scripts in...
InstallerScripts>>#MagmaClient or InstallerScripts>>#MagmaClientSqueak310 or InstallerScripts>>#MagmaClientPharo01
e.g.
Installer ss project: 'Magma' install: '...a...'; install: '...b...'; yourself
If a user wants to customise the script he can simply copy and paste it from there, into his personal image building script.
InstallerScripts is really only intended for the first load, whereas Sake/Packages knows about what is loaded, and can perform upgrades, and knows about loading #beta (the latest packages available)
gtg Keith
magma@lists.squeakfoundation.org