[squeak-dev] MonticelloConfiguration and Installer questions

C. David Shaffer cdshaffer at acm.org
Tue Sep 16 12:38:10 UTC 2008


I'm trying to move myself into the 21st century here by using Installer 
and MonticelloConfigurations.  Great tools for image building, I think , 
but  I'm having a couple of small problems.

Version info:

Squeak-3.9.1-7075
Insaller-Core-kph.222
Monticello-md.308
MonticelloConfigurations-stephaneducasse.38

1) I'm confused about how MC ".mcm" files are supposed to be published.  
It seems that that configuration browser always asks me for a repo and a 
file name.  I've tried using the same name as an existing configuration 
(assuming I'd get a new version of that configuration) but, at least in 
a HTTP repo, and I just get an error (refuses to overwrite the existing 
file...doesn't seem like the correct behavior anyway).  Are 
configurations not versioned like other MC entities?  How do people work 
with changing configs?

2) Once I have a configuration published in a repo, opening the MC repo 
browser and clicking on the configuration file (select the configuration 
"package" then click on the .mcm file) gives me a walkback as per the 
attached file ClickOnMcmDebug.log.  I've patched it but should I be 
working with a newer version of Monticello?  If so, which one (I've 
tried a few but they have all caused me one problem or another with 
things that are working fine in my existing setup)?

3) Trying to install a configuration using Installer doesn't seem to 
work.  The offending code is in Installer>>mcThing which tries to add 
the MCConfiguration to the loader thus:

loader addVersion: version.

This eventually results in an error (the configuration is added after 
all of its "dependencies").  I've patched Installer but I'm not sure if 
this is the right thing to do.  See attached InstallerPatches-cds.3.cs.


David

-------------- next part --------------
Error: My subclass should have overridden #loadVersionInfo
16 September 2008 8:30:55 am

VM: unix - a SmalltalkImage
Image: Squeak3.9.1 [latest update: #7075]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/shaffer/Source/Squeak/ProfitPortal/ImageBuilder
Trusted Dir /home/shaffer/Source/Squeak/ProfitPortal/ImageBuilder/secure
Untrusted Dir /home/shaffer/Source/Squeak/ProfitPortal/ImageBuilder/My Squeak

MCMcmReader(Object)>>error:
	Receiver: a MCMcmReader
	Arguments and temporary variables: 
		aString: 	'My subclass should have overridden #loadVersionInfo'
	Receiver's instance variables: 
		stream: 	a RWBinaryOrTextStream '(
repository (''http://www.cdshaffer.com/housto...etc...
		package: 	nil
		info: 	nil
		definitions: 	nil
		dependencies: 	nil
		stepChildren: 	nil
		fileName: 	'HitMysticR4Config7.mcm'

MCMcmReader(Object)>>subclassResponsibility
	Receiver: a MCMcmReader
	Arguments and temporary variables: 

	Receiver's instance variables: 
		stream: 	a RWBinaryOrTextStream '(
repository (''http://www.cdshaffer.com/housto...etc...
		package: 	nil
		info: 	nil
		definitions: 	nil
		dependencies: 	nil
		stepChildren: 	nil
		fileName: 	'HitMysticR4Config7.mcm'

MCMcmReader(MCVersionReader)>>loadVersionInfo
	Receiver: a MCMcmReader
	Arguments and temporary variables: 

	Receiver's instance variables: 
		stream: 	a RWBinaryOrTextStream '(
repository (''http://www.cdshaffer.com/housto...etc...
		package: 	nil
		info: 	nil
		definitions: 	nil
		dependencies: 	nil
		stepChildren: 	nil
		fileName: 	'HitMysticR4Config7.mcm'

MCMcmReader(MCVersionReader)>>info
	Receiver: a MCMcmReader
	Arguments and temporary variables: 

	Receiver's instance variables: 
		stream: 	a RWBinaryOrTextStream '(
repository (''http://www.cdshaffer.com/housto...etc...
		package: 	nil
		info: 	nil
		definitions: 	nil
		dependencies: 	nil
		stepChildren: 	nil
		fileName: 	'HitMysticR4Config7.mcm'


--- The full stack ---
MCMcmReader(Object)>>error:
MCMcmReader(Object)>>subclassResponsibility
MCMcmReader(MCVersionReader)>>loadVersionInfo
MCMcmReader(MCVersionReader)>>info
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[] in MCHttpRepository(MCFileBasedRepository)>>loadVersionInfoFromFileNamed: {[:r | r info]}
MCMcmReader(Object)>>ifNotNilDo:
MCHttpRepository>>versionReaderForFileNamed:do:
MCHttpRepository(MCFileBasedRepository)>>loadVersionInfoFromFileNamed:
MCHttpRepository(MCFileBasedRepository)>>versionInfoFromFileNamed:
MCFileRepositoryInspector>>versionInfo
MCFileRepositoryInspector>>versionSummary
MCFileRepositoryInspector(MCVersionInspector)>>summary
PluggableTextMorphPlus(PluggableTextMorph)>>getText
PluggableTextMorphPlus(PluggableTextMorph)>>update:
PluggableTextMorphPlus>>update:
[] in MCFileRepositoryInspector(Object)>>changed: {[:aDependent | aDependent update: aParameter]}
DependentsArray>>do:
MCFileRepositoryInspector(Object)>>changed:
MCFileRepositoryInspector>>versionSelection:
PluggableListMorphPlus(PluggableListMorph)>>changeModelSelection:
PluggableListMorphPlus(PluggableListMorph)>>mouseUp:
PluggableListMorphPlus(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
PluggableListMorphPlus(Morph)>>handleEvent:
PluggableListMorphPlus(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.  ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
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]}
-------------- next part --------------
'From Squeak3.9.1 of 2 March 2008 [latest update: #7075] on 15 September 2008 at 8:34:32 pm'!

!Installer methodsFor: 'monticello' stamp: 'cds 9/15/2008 20:15'!
mcThing

	| loader files fileToLoad  version  count |

	loader := self classMCVersionLoader new.
	
	1 to: self packages size do: [ :n |

		self logCR: 'finding ', self package asString, '...'.
		"several attempts to read files - repository readableFileNames sometimes fails"
		count := 0. fileToLoad := nil.
	
		[count := count + 1.
		 (fileToLoad = nil) and:[ count < 5 ] ] 
			whileTrue: [
							files := mc readableFileNames asSortedCollection: self mcSortFileBlock.
							fileToLoad := files detect: self mcDetectFileBlock ifNone: [ nil ].
		].

		version := mc versionFromFileNamed: fileToLoad.
		(version isKindOf: MCConfiguration) 
			ifTrue: [^version]
			ifFalse:[version workingCopy repositoryGroup addRepository: mc].
		self log: ' found ', version fileName, '...'.

  		loader addVersion: version.

		packages removeFirst.
	].

	^ loader
! !



More information about the Squeak-dev mailing list