<div dir="ltr"><div><div><div><div>Ah, but I see that you use SqueakMap...<br></div>SqueakMap point to ConfigurationOfFuel-MartinDias.197<br></div>Unfortunately, this configuration is obsolete.<br></div>Because it points to <a href="http://ss3.gemstone.com/ss/Fuel">http://ss3.gemstone.com/ss/Fuel</a> which has been drained from every .mcz (IMHO a mistake, it should have been used as a fallback repository...).<br>
<br></div>There is another problem even with more recent configuration: they do not attempt anything for a squeak4.5.x serie, and will thus fail to load the FuelCompatibility layer... Fixing the configuration is not enough, because it is also necessary to fix Metacello which never heard of squeak4.5 either...<br>
<div><br><div class="gmail_extra">That's a few hurdles, but we can make it.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2013/11/1 Frank Shearar <span dir="ltr"><<a href="mailto:frank.shearar@gmail.com" target="_blank">frank.shearar@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Fuel works in 4.4, but not quite yet in 4.5:<br>
<a href="http://build.squeak.org/job/ExternalPackage-Fuel/lastFailedBuild/console" target="_blank">http://build.squeak.org/job/ExternalPackage-Fuel/lastFailedBuild/console</a><br>
Sadly, that output's not particularly useful.<br>
<br>
frank<br>
<br>
On 31 October 2013 23:02, Nicolas Cellier<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>> wrote:<br>
> +1, please include in the update.mcm!<br>
> I also like the Pharo alternative to Fuel out the error context...<br>
> Lighter than full image save. Oh but we don't have Fuel yet :(<br>
> Who wants to make it with a segment?<br>
><br>
><br>
> 2013/10/31 <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>><br>
><br>
>> Frank Shearar uploaded a new version of CommandLine to project The Trunk:<br>
>> <a href="http://source.squeak.org/trunk/CommandLine-fbs.1.mcz" target="_blank">http://source.squeak.org/trunk/CommandLine-fbs.1.mcz</a><br>
>><br>
>> ==================== Summary ====================<br>
>><br>
>> Name: CommandLine-fbs.1<br>
>> Author: fbs<br>
>> Time: 31 October 2013, 10:32:52.821 pm<br>
>> UUID: dc871e85-bd16-d742-acbf-4d2b838113d1<br>
>> Ancestors:<br>
>><br>
>> CommandLineToolSet does little more than dump errors to stderr.<br>
>><br>
>> DummyUIManager comes from Pharo via Pavel Krivanek's minimising script.<br>
>><br>
>> ==================== Snapshot ====================<br>
>><br>
>> SystemOrganization addCategory: #'CommandLine-Tools'!<br>
>> SystemOrganization addCategory: #'CommandLine-UIManager'!<br>
>><br>
>> UIManager subclass: #DummyUIManager<br>
>> instanceVariableNames: ''<br>
>> classVariableNames: ''<br>
>> poolDictionaries: ''<br>
>> category: 'CommandLine-UIManager'!<br>
>><br>
>> !DummyUIManager commentStamp: 'fbs 10/31/2013 07:36' prior: 0!<br>
>> I'm an alternative UIManager used to run an the image without GUI. I<br>
>> redefine methods which require user input as these requests are irrelevant<br>
>> in a headless environment. !<br>
>><br>
>> ----- Method: DummyUIManager>>checkForNewDisplaySize (in category<br>
>> 'display') -----<br>
>> checkForNewDisplaySize<br>
>> Display extent = DisplayScreen actualScreenSize ifTrue: [^ self].<br>
>> DisplayScreen startUp.<br>
>> !<br>
>><br>
>> ----- Method: DummyUIManager>>chooseDirectory:from: (in category 'ui<br>
>> requests') -----<br>
>> chooseDirectory: label from: dir<br>
>> ^ nil!<br>
>><br>
>> ----- Method: DummyUIManager>>chooseFrom:lines:title: (in category 'ui<br>
>> requests') -----<br>
>> chooseFrom: aList lines: linesArray title: aString<br>
>> ^ aList first!<br>
>><br>
>> ----- Method: DummyUIManager>>chooseFrom:values:lines:title: (in category<br>
>> 'ui requests') -----<br>
>> chooseFrom: labelList values: valueList lines: linesArray title: aString<br>
>> ^ valueList first!<br>
>><br>
>> ----- Method: DummyUIManager>>confirm: (in category 'ui requests') -----<br>
>> confirm: queryString<br>
>> (ProvideAnswerNotification signal: queryString)<br>
>> ifNotNil: [:answer|^answer].<br>
>><br>
>> self error: 'No user response possible'!<br>
>><br>
>> ----- Method: DummyUIManager>>confirm:orCancel: (in category 'ui<br>
>> requests') -----<br>
>> confirm: aString orCancel: cancelBlock<br>
>> (ProvideAnswerNotification signal: aString) ifNotNil: [:answer |<br>
>> ^answer == #cancel ifTrue: [cancelBlock value] ifFalse: [answer]].<br>
>><br>
>> self error: 'No user response possible'!<br>
>><br>
>> ----- Method: DummyUIManager>>displayProgress:at:from:to:during: (in<br>
>> category 'ui requests') -----<br>
>> displayProgress: titleString at: aPoint from: minVal to: maxVal during:<br>
>> workBlock<br>
>> ^ workBlock value: Association new!<br>
>><br>
>> ----- Method: DummyUIManager>>edit:label:accept: (in category 'ui<br>
>> requests') -----<br>
>> edit: aText label: labelString accept: anAction<br>
>> ^ nil!<br>
>><br>
>> ----- Method: DummyUIManager>>fontFromUser: (in category 'ui requests')<br>
>> -----<br>
>> fontFromUser: priorFont<br>
>> self error: 'No user response possible'!<br>
>><br>
>> ----- Method: DummyUIManager>>inform: (in category 'ui requests') -----<br>
>> inform: aString<br>
>> "Nothing to be done here"!<br>
>><br>
>> ----- Method: DummyUIManager>>informUserDuring: (in category 'ui<br>
>> requests') -----<br>
>> informUserDuring: aBlock<br>
>> aBlock value: nil!<br>
>><br>
>> ----- Method: DummyUIManager>>newDisplayDepthNoRestore: (in category<br>
>> 'display') -----<br>
>> newDisplayDepthNoRestore: pixelSize<br>
>> "Change depths. Check if there is enough space!! , di"<br>
>> | area need |<br>
>> pixelSize = Display depth ifTrue: [^ self "no change"].<br>
>> pixelSize abs < Display depth ifFalse:<br>
>> ["Make sure there is enough space"<br>
>> area := Display boundingBox area. "pixels"<br>
>><br>
>> need := (area * (pixelSize abs - Display depth) // 8)<br>
>> "new bytes needed"<br>
>> + Smalltalk lowSpaceThreshold.<br>
>> (Smalltalk garbageCollectMost <= need<br>
>> and: [Smalltalk garbageCollect <= need])<br>
>> ifTrue: [self error: 'Insufficient free space']].<br>
>> Display setExtent: Display extent depth: pixelSize.<br>
>><br>
>> DisplayScreen startUp!<br>
>><br>
>> ----- Method: DummyUIManager>>request:initialAnswer: (in category 'ui<br>
>> requests') -----<br>
>> request: queryString initialAnswer: defaultAnswer<br>
>> (ProvideAnswerNotification signal: queryString)<br>
>> ifNotNil: [:answer |<br>
>> ^ answer == #default ifTrue: [defaultAnswer] ifFalse:<br>
>> [answer]].<br>
>><br>
>> self error: 'No user response possible'!<br>
>><br>
>> ----- Method: DummyUIManager>>requestPassword: (in category 'ui requests')<br>
>> -----<br>
>> requestPassword: queryString<br>
>> ^ self request: queryString initialAnswer: ''!<br>
>><br>
>> ----- Method: DummyUIManager>>restoreDisplay (in category 'display') -----<br>
>> restoreDisplay!<br>
>><br>
>> ----- Method: DummyUIManager>>restoreDisplayAfter: (in category 'display')<br>
>> -----<br>
>> restoreDisplayAfter: aBlock<br>
>> aBlock value.<br>
>> Sensor waitButton.!<br>
>><br>
>> StandardToolSet subclass: #CommandLineToolSet<br>
>> instanceVariableNames: ''<br>
>> classVariableNames: 'SaveSnapshotOnError'<br>
>> poolDictionaries: ''<br>
>> category: 'CommandLine-Tools'!<br>
>><br>
>> ----- Method: CommandLineToolSet class>>debugError: (in category<br>
>> 'debugging') -----<br>
>> debugError: anError<br>
>> "Print out a sensible stack trace and bail"<br>
>> | problemPlace s |<br>
>> self saveSnapshotOnError<br>
>> ifTrue: [Smalltalk saveAs: 'Debug-' , (Smalltalk imageName<br>
>> subStrings: '/') last].<br>
>> problemPlace := anError signalerContext.<br>
>> s := FileStream stderr.<br>
>> (anError isKindOf: MessageNotUnderstood) ifTrue: [<br>
>> s<br>
>> nextPutAll: anError messageText; cr;<br>
>> nextPutAll: problemPlace sender methodNode<br>
>> printString; cr].<br>
>> (problemPlace stackOfSize: 20) do: [:ctx | s cr. ctx printOn: s].<br>
>> s flush.<br>
>><br>
>> SmalltalkImage current snapshot: false andQuit: true!<br>
>><br>
>> ----- Method: CommandLineToolSet class>>debugSyntaxError: (in category<br>
>> 'debugging') -----<br>
>> debugSyntaxError: anError<br>
>> | s |<br>
>> s := FileStream stderr.<br>
>> s nextPutAll: '----- Syntax error -----'; cr.<br>
>> s nextPutAll: anError errorCode; cr.<br>
>> s nextPutAll: '----- Syntax error -----'; cr.<br>
>><br>
>> self debugError: anError!<br>
>><br>
>> ----- Method: CommandLineToolSet class>>saveSnapshotOnError (in category<br>
>> 'preferences') -----<br>
>> saveSnapshotOnError<br>
>> <preference: 'Save snapshot of image on failure'<br>
>> category: 'debug'<br>
>> description: 'If true, saves a snapshot of the failing image to<br>
>> the current directory.'<br>
>> type: #Boolean><br>
>> ^ SaveSnapshotOnError ifNil: [SaveSnapshotOnError := false].!<br>
>><br>
>> ----- Method: CommandLineToolSet class>>saveSnapshotOnError: (in category<br>
>> 'preferences') -----<br>
>> saveSnapshotOnError: aBoolean<br>
>> SaveSnapshotOnError := aBoolean.!<br>
>><br>
>> ----- Method: CommandLineToolSet class>>unload (in category 'class<br>
>> initialization') -----<br>
>> unload<br>
>> ToolSet unregister: self.!<br>
>><br>
>><br>
><br>
><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div></div></div>