Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
On 12/30/12, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
Hello Pavel and others
Thank you for your first attempt.
I assume I have to file in first patch001.st
as it contains various dummy classes and fixes to existing classes. (DummyProject, DummyUIManager, ,.... ClassOrganizer, PointerFinder, ScriptLauncher, ...)
However the attached error comes up and a debugger in method primWrite: id from: stringOrByteArray startingAt: startIndex count: count
of MultiByteFileStream
This is on a Windows 7 machine with a recent VM.
Could anybody else check the file-in of Pavel's patch001.st as well?
The the info.st file is copied in below [1].
It refers to the class FileSystem, a class which is not (yet) in Squeak. The Squeak equivalent would be FSFileSystem.
A minimal installation for the Filesystem in Squeak is
(Installer wiresong project: 'mc') addPackage: 'FS-Core'; addPackage: 'FS-Disk'; addPackage: 'FS-Tests-Core'; addPackage: 'FS-Tests-Disk'; install.
So we need to adapt info.st and patch001.st
and besides FSFilesystem maybe other artefacts have to be loaded into
http://www.squeakci.org/job/SqueakTrunk/
Regards
Hannes
Note: In Squeak we have for example
root := FSFilesystem onDisk root.
whereas in Pharo it is
root := FileSystem disk root.
besides this I have not found any other differences yet.
[1] Pavel's info.st file
[
| info lines dict unimplemented sends unsent o printWithReferences printedObjects |
info := "(((Smalltalk vm getSystemAttribute: 3) ifNil: [FileSystem disk workingDirectory] ifNotNilDo: [:path | FileSystem disk workingDirectory resolve: path])" FileStream forceNewFileNamed: 'info.txt'.
Undeclared removeUnreferencedKeys.
info nextPutAll: 'Project: ', Project current ; cr; cr.
info nextPutAll: 'Processes: ' ; cr; cr. Process allInstances do: [:p | info nextPutAll: ' - ', p asString; cr].
info nextPutAll: Project uiProcess asString; cr.
" TextConstants associationsDo: [:a | info nextPutAll: a key, ' -> ', ([a value asString] ifError: ['ERROR']); cr.]. "
info cr.
info nextPutAll: 'globals:', ((Smalltalk globals associations select: [:a | a value isBehavior not]) collect: [:a | a key ] )asString; cr.
info nextPutAll: 'Obsolete:'; cr. info nextPutAll: SystemNavigation default obsoleteClasses asString; cr; cr.
printedObjects := IdentitySet new.
printWithReferences := [:object :depth | depth <= 3 ifTrue: [ depth timesRepeat: [info tab]. (printedObjects includes: object) ifTrue: ["info nextPutAll: '*****'; cr"] ifFalse: [ printedObjects add: object. [info nextPutAll: object asString; cr.] ifError: [info nextPutAll: '--- PRINT ERRROR ---'; cr]. (PointerFinder pointersTo: object) do: [:ref | printWithReferences value: ref value: depth+1].] ]].
o := SystemNavigation default obsoleteClasses select: [:oc | oc allInstances size > 0]. info nextPutAll: o asString; cr. o := nil.
Smalltalk garbageCollect.
info cr.
"printWithReferences value: (SystemNavigation default obsoleteClasses at: 1) value: 1."
info cr.
info nextPutAll: 'Behaviors count:'; cr. info nextPutAll: Smalltalk allClassesAndTraits size asString; cr; cr.
info nextPutAll: 'Undeclared:'; cr. info nextPutAll: Undeclared asString; cr; cr.
info nextPutAll: 'Undeclared sorted by name:'; cr.
dict := IdentityDictionary new. Smalltalk allClassesAndTraits do: [:c | c localSelectors do: [:sel | dict at: (c compiledMethodAt: sel) put: (c -> sel)]. c isTrait ifFalse: [ c class localSelectors do: [:sel | dict at: (c class compiledMethodAt: sel) put: (c class -> sel)]]].
lines := SortedCollection new.
Undeclared associations do: [:assoc | info nextPutAll: assoc key; cr. [ ((PointerFinder pointersTo: assoc) select: [:ref | ref class = CompiledMethod]) do: [:cm | info nextPutAll: ' - ', (dict at: cm ifAbsent: ['method not found']) asString; cr. lines add: (dict at: cm) key asString, ' >> ', (dict at: cm) value asString, ' (', assoc key asString, ')'. ] ] ifError: [:e | info nextPutAll: '--error-- ', e asString; cr.]].
info cr; nextPutAll: 'Undeclared sorted by class:'; cr. lines do: [:l | info nextPutAll: l asString; cr.].
info cr.
info nextPutAll: 'Unimplemented calls size:'; space. info nextPutAll: SystemNavigation default allUnimplementedCalls size asString. info cr; cr. info nextPutAll: 'Unimplemented calls:'; cr; cr. unimplemented := SystemNavigation default allUnimplementedCalls asSortedCollection. sends := OrderedCollection new. unimplemented do: [:call | | pos | pos := (call findString: ' calls: '). ((call allButFirst: (pos + 7)) findTokens: ' ') do: [:send | sends add: (send asString, ' calledBy: ', (call first: pos))]. info nextPutAll: call asString; cr.]. info cr. sends asSortedCollection do: [:call | info nextPutAll: call asString; cr.].
" unsent := SystemNavigation default allUnsentMessages.
info cr; nextPutAll: 'Unsent messages size: '; nextPutAll: unsent size asString; cr; cr. info cr; nextPutAll: 'Unsent messages:'; cr. unsent asSortedCollection do: [:message | info nextPutAll: message; cr. ]. "
info cr; nextPutAll: 'allClassesAndTraits:'. Smalltalk allClassesAndTraits do: [:c | info nextPutAll: c name asString; space]. info cr.
info cr; nextPutAll: 'finished...'.
info close.
SmalltalkImage current snapshot: false andQuit: true.
] ifError: [:e | | rep | rep := FileStream forceNewFileNamed: 'PharoDebug.log'. rep nextPutAll: 'info.st'; cr. rep nextPutAll: 'Error:'; cr. rep nextPutAll: e asString; cr. rep nextPutAll: thisContext stack size asString. thisContext stack copy withIndexDo: [:stck :i | [rep nextPutAll: i asString; space; nextPutAll: stck asString; cr] ifError: []]. rep close. Smalltalk exitFailure]
On Sun, Dec 30, 2012 at 2:35 PM, H. Hirzel hannes.hirzel@gmail.com wrote:
On 12/30/12, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
Hello Pavel and others
Thank you for your first attempt.
I assume I have to file in first patch001.st
this file makes it all, the name is a little bit confusing. Tt should be passed as command line argument to a fresh image. It was tested only on Linux.
as it contains various dummy classes and fixes to existing classes. (DummyProject, DummyUIManager, ,.... ClassOrganizer, PointerFinder, ScriptLauncher, ...)
this is the list of rewrites:
AutoStart class>>startUp: - this method must be rewriten to make network and plugin usage optional ReadOnlyVariableBinding>>value: - ad hoc patch for writes of Undelclared, I guess it can be solved with propper exception handling without modifying of this method SmalltalkImage>>snapshot:andQuit:embedded: - some minor things like "Project current wakeUpTopWindow." should be delegated to UIManager SmalltalkImage>>send:toClassesNamedIn:with: - only logging to stdout added, can be removed SmalltalkImage>>setPlatformPreferences - SoundPlayer direct usage must be removed Encoder>>undeclared: - only logging to stdout added, can be removed Behavior>>compileAllFrom: - only logging to stdout added, can be removed DisplayScreen>>newDepthNoRestore: - delegation to UIManager, MorphicUIManager implementation should be added String>>translated - need some nice refactoring to make GetText package dependency optional
However the attached error comes up and a debugger in method primWrite: id from: stringOrByteArray startingAt: startIndex count: count
of MultiByteFileStream
This is on a Windows 7 machine with a recent VM.
Could anybody else check the file-in of Pavel's patch001.st as well?
The the info.st file is copied in below [1].
It refers to the class FileSystem, a class which is not (yet) in Squeak. The Squeak equivalent would be FSFileSystem.
This part of the script can be removed or rewriten for Squeak, it was used by CI server in the past.
A minimal installation for the Filesystem in Squeak is
(Installer wiresong project: 'mc')
addPackage: 'FS-Core'; addPackage: 'FS-Disk'; addPackage: 'FS-Tests-Core'; addPackage: 'FS-Tests-Disk'; install.
So we need to adapt info.st and patch001.st
and besides FSFilesystem maybe other artefacts have to be loaded into
http://www.squeakci.org/job/SqueakTrunk/
Regards
Hannes
Note: In Squeak we have for example
root := FSFilesystem onDisk root.
whereas in Pharo it is
root := FileSystem disk root.
besides this I have not found any other differences yet.
[1] Pavel's info.st file
[
| info lines dict unimplemented sends unsent o printWithReferences printedObjects |
info := "(((Smalltalk vm getSystemAttribute: 3) ifNil: [FileSystem disk workingDirectory] ifNotNilDo: [:path | FileSystem disk workingDirectory resolve: path])" FileStream forceNewFileNamed: 'info.txt'.
Undeclared removeUnreferencedKeys.
info nextPutAll: 'Project: ', Project current ; cr; cr.
info nextPutAll: 'Processes: ' ; cr; cr. Process allInstances do: [:p | info nextPutAll: ' - ', p asString; cr].
info nextPutAll: Project uiProcess asString; cr.
" TextConstants associationsDo: [:a | info nextPutAll: a key, ' -> ', ([a value asString] ifError: ['ERROR']); cr.]. "
info cr.
info nextPutAll: 'globals:', ((Smalltalk globals associations select: [:a | a value isBehavior not]) collect: [:a | a key ] )asString; cr.
info nextPutAll: 'Obsolete:'; cr. info nextPutAll: SystemNavigation default obsoleteClasses asString; cr; cr.
printedObjects := IdentitySet new.
printWithReferences := [:object :depth | depth <= 3 ifTrue: [ depth timesRepeat: [info tab]. (printedObjects includes: object) ifTrue: ["info nextPutAll: '*****'; cr"] ifFalse: [ printedObjects add: object. [info nextPutAll: object asString; cr.] ifError: [info nextPutAll: '--- PRINT ERRROR ---'; cr]. (PointerFinder pointersTo: object) do: [:ref | printWithReferences value: ref value: depth+1].] ]].
o := SystemNavigation default obsoleteClasses select: [:oc | oc allInstances size > 0]. info nextPutAll: o asString; cr. o := nil.
Smalltalk garbageCollect.
info cr.
"printWithReferences value: (SystemNavigation default obsoleteClasses at: 1) value: 1."
info cr.
info nextPutAll: 'Behaviors count:'; cr. info nextPutAll: Smalltalk allClassesAndTraits size asString; cr; cr.
info nextPutAll: 'Undeclared:'; cr. info nextPutAll: Undeclared asString; cr; cr.
info nextPutAll: 'Undeclared sorted by name:'; cr.
dict := IdentityDictionary new. Smalltalk allClassesAndTraits do: [:c | c localSelectors do: [:sel | dict at: (c compiledMethodAt: sel) put: (c -> sel)]. c isTrait ifFalse: [ c class localSelectors do: [:sel | dict at: (c class compiledMethodAt: sel) put: (c class -> sel)]]].
lines := SortedCollection new.
Undeclared associations do: [:assoc | info nextPutAll: assoc key; cr. [ ((PointerFinder pointersTo: assoc) select: [:ref | ref class = CompiledMethod]) do: [:cm | info nextPutAll: ' - ', (dict at: cm ifAbsent: ['method not found']) asString; cr. lines add: (dict at: cm) key asString, ' >> ', (dict at: cm) value asString, ' (', assoc key asString, ')'. ] ] ifError: [:e | info nextPutAll: '--error-- ', e asString; cr.]].
info cr; nextPutAll: 'Undeclared sorted by class:'; cr. lines do: [:l | info nextPutAll: l asString; cr.].
info cr.
info nextPutAll: 'Unimplemented calls size:'; space. info nextPutAll: SystemNavigation default allUnimplementedCalls size asString. info cr; cr. info nextPutAll: 'Unimplemented calls:'; cr; cr. unimplemented := SystemNavigation default allUnimplementedCalls asSortedCollection. sends := OrderedCollection new. unimplemented do: [:call | | pos | pos := (call findString: ' calls: '). ((call allButFirst: (pos + 7)) findTokens: ' ') do: [:send | sends add: (send asString, ' calledBy: ', (call first: pos))]. info nextPutAll: call asString; cr.]. info cr. sends asSortedCollection do: [:call | info nextPutAll: call asString; cr.].
" unsent := SystemNavigation default allUnsentMessages.
info cr; nextPutAll: 'Unsent messages size: '; nextPutAll: unsent size asString; cr; cr. info cr; nextPutAll: 'Unsent messages:'; cr. unsent asSortedCollection do: [:message | info nextPutAll: message; cr. ]. "
info cr; nextPutAll: 'allClassesAndTraits:'. Smalltalk allClassesAndTraits do: [:c | info nextPutAll: c name asString; space]. info cr.
info cr; nextPutAll: 'finished...'.
info close.
SmalltalkImage current snapshot: false andQuit: true.
] ifError: [:e | | rep | rep := FileStream forceNewFileNamed: 'PharoDebug.log'. rep nextPutAll: 'info.st'; cr. rep nextPutAll: 'Error:'; cr. rep nextPutAll: e asString; cr. rep nextPutAll: thisContext stack size asString. thisContext stack copy withIndexDo: [:stck :i | [rep nextPutAll: i asString; space; nextPutAll: stck asString; cr] ifError: []]. rep close. Smalltalk exitFailure]
On 12/30/12 10:35 AM, "H. Hirzel" hannes.hirzel@gmail.com wrote:
On 12/30/12, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
Hello Pavel and others
Thank you for your first attempt.
I assume I have to file in first patch001.st
as it contains various dummy classes and fixes to existing classes. (DummyProject, DummyUIManager, ,.... ClassOrganizer, PointerFinder, ScriptLauncher, ...)
However the attached error comes up and a debugger in method primWrite: id from: stringOrByteArray startingAt: startIndex count: count
of MultiByteFileStream
This is on a Windows 7 machine with a recent VM.
Could anybody else check the file-in of Pavel's patch001.st as well?
Sorry by the late answer, but only now have time to this. With older Squeak 4.2.5beta1U do not run in Terminal, but if you change
stdout ^Stdout ifNil: [ Stdout := self newFileNamed: 'stdout']
See here:
And run with UI, finish with a 3.3 Mb .image
If as in my case you do:
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ /Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st 2013-01-20 09:07:48.604 Croquet[789:903] Incompatible applications: app=com.squeak.Cog, targetApp=com.apple.Safari undeclared: DummyUIManager put: DummyUIManager undeclared: ScriptLauncher put: ScriptLauncher undeclared: ScriptLauncher put: ScriptLauncher undeclared: DummySystemProgressItem put: DummySystemProgressItem undeclared: DummySystemProgressItem put: DummySystemProgressItem 1 2 3 4
Stops with Enviroments DNU removeKey:
But if you not use the last update
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12327\ copy.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st
Happily gives you a 3.1 Mb image.
So we start to have a very valuable thing.
I try to made Pavel suggested changes and invite to all wishing a SqueakKernel to share experiences and push our Board to have some.
I have plenty of confidence in Spoon, but life is short and fragile as we learn the hard way.
In the time we wait for a Perfect Solution, we could have a Good Solution
Edgar
Hi Edgar--
Sorry by the late answer, but only now have time to this.
...
I have plenty of confidence in Spoon, but life is short and fragile as we learn the hard way.
It certainly is! We are all extremely fortunate to be here; every moment is precious. From grief I draw strength to honor those no longer with us, by living as fully as I can, in community with others.
Like you, and all of us, I give time as I am able, and I'm grateful for the time that others spend with me. I've been working with others on Spoon, and I encourage everyone who has time to give to participate.
In the time we wait for a Perfect Solution, we could have a Good Solution
I agree what's happening now is good. I envision something better, I've gotten much of the way there with the help of many, and perfection is not a goal.
While I do have a desired design in mind, I don't think perfection is necessary, or even a healthy pursuit. My design came from a large amount of first-hand experience, reflection on practical tradeoffs, and discussions with actual and potential users. Regardless, one need not wait: I would love to see more Spoon issues recorded on Mantis, more use cases discussed on #squeak and #spoon on IRC, more comments on Spoon-related blog postings, etc.
For the entire time I've been working with Smalltalk, I've viewed anything which clarifies the structural boundaries between bodies of code as a good thing. That includes every module system and shrinking approach applied to every Smalltalk system I've used. We can use the knowledge gained from each of them to make every one of them better.
In the case of Squeak, I would like to use what we've learned from SqueakMap, Universes, and other artifacts from Squeak 1 through 4 to compose modules with Naiad, Spoon's module system. I maintain my intention to coordinate the creation of Squeak 5 this way. I like what's happening in Squeak 4 in the meantime.
thanks again,
-C
-- Craig Latta www.netjam.org/resume +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS)
p.s.
blog: http://thiscontext.wordpress.com website: http://netjam.org/spoon
-- Craig Latta www.netjam.org/resume +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS)
On 1/21/13 10:08 PM, "Craig Latta" craig@netjam.org wrote:
Hi Edgar--
Sorry by the late answer, but only now have time to this.
...
I have plenty of confidence in Spoon, but life is short and fragile as we learn the hard way.
It certainly is! We are all extremely fortunate to be here; every
moment is precious. From grief I draw strength to honor those no longer with us, by living as fully as I can, in community with others.
Like you, and all of us, I give time as I am able, and I'm grateful
for the time that others spend with me. I've been working with others on Spoon, and I encourage everyone who has time to give to participate.
In the time we wait for a Perfect Solution, we could have a Good Solution
I agree what's happening now is good. I envision something better,
I've gotten much of the way there with the help of many, and perfection is not a goal.
While I do have a desired design in mind, I don't think perfection
is necessary, or even a healthy pursuit. My design came from a large amount of first-hand experience, reflection on practical tradeoffs, and discussions with actual and potential users. Regardless, one need not wait: I would love to see more Spoon issues recorded on Mantis, more use cases discussed on #squeak and #spoon on IRC, more comments on Spoon-related blog postings, etc.
For the entire time I've been working with Smalltalk, I've viewed
anything which clarifies the structural boundaries between bodies of code as a good thing. That includes every module system and shrinking approach applied to every Smalltalk system I've used. We can use the knowledge gained from each of them to make every one of them better.
In the case of Squeak, I would like to use what we've learned from
SqueakMap, Universes, and other artifacts from Squeak 1 through 4 to compose modules with Naiad, Spoon's module system. I maintain my intention to coordinate the creation of Squeak 5 this way. I like what's happening in Squeak 4 in the meantime.
thanks again,
You know I try Spoon each time you give us something, don't you? And like the way Spoon show progress.
But like Cuis, the wonder made by Juan, I see this as long way of work to the day we have some we take Squeak or Pharo 1.4 packages and feed without too much trouble.
I'm 62 and don't know as long as my lifetime is, but chances is against the medium Squeaker (around 40 years)
So choose by now follow the Pavel Krivanek way, try any you do and learn from Cuis
Edgar
Pavel
I assume your recommendation you wrote today in the other thread http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-February/168741....
means to continue with the work in this thread?
Right?
--Hannes
On 1/20/13, Edgar J. De Cleene edgardec2005@gmail.com wrote:
On 12/30/12 10:35 AM, "H. Hirzel" hannes.hirzel@gmail.com wrote:
On 12/30/12, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
Hello Pavel and others
Thank you for your first attempt.
I assume I have to file in first patch001.st
as it contains various dummy classes and fixes to existing classes. (DummyProject, DummyUIManager, ,.... ClassOrganizer, PointerFinder, ScriptLauncher, ...)
However the attached error comes up and a debugger in method primWrite: id from: stringOrByteArray startingAt: startIndex count: count
of MultiByteFileStream
This is on a Windows 7 machine with a recent VM.
Could anybody else check the file-in of Pavel's patch001.st as well?
Sorry by the late answer, but only now have time to this. With older Squeak 4.2.5beta1U do not run in Terminal, but if you change
stdout ^Stdout ifNil: [ Stdout := self newFileNamed: 'stdout']
See here:
And run with UI, finish with a 3.3 Mb .image
If as in my case you do:
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ /Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st 2013-01-20 09:07:48.604 Croquet[789:903] Incompatible applications: app=com.squeak.Cog, targetApp=com.apple.Safari undeclared: DummyUIManager put: DummyUIManager undeclared: ScriptLauncher put: ScriptLauncher undeclared: ScriptLauncher put: ScriptLauncher undeclared: DummySystemProgressItem put: DummySystemProgressItem undeclared: DummySystemProgressItem put: DummySystemProgressItem 1 2 3 4
Stops with Enviroments DNU removeKey:
But if you not use the last update
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12327\ copy.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st
Happily gives you a 3.1 Mb image.
So we start to have a very valuable thing.
I try to made Pavel suggested changes and invite to all wishing a SqueakKernel to share experiences and push our Board to have some.
I have plenty of confidence in Spoon, but life is short and fragile as we learn the hard way.
In the time we wait for a Perfect Solution, we could have a Good Solution
Edgar
No matter where :-) But it would be nice is someone will start to review the changes and integrate them.
Cheers -- Pavel
On Mon, Feb 11, 2013 at 1:12 PM, H. Hirzel hannes.hirzel@gmail.com wrote:
Pavel
I assume your recommendation you wrote today in the other thread http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-February/168741....
means to continue with the work in this thread?
Right?
--Hannes
On 1/20/13, Edgar J. De Cleene edgardec2005@gmail.com wrote:
On 12/30/12 10:35 AM, "H. Hirzel" hannes.hirzel@gmail.com wrote:
On 12/30/12, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
Hello Pavel and others
Thank you for your first attempt.
I assume I have to file in first patch001.st
as it contains various dummy classes and fixes to existing classes. (DummyProject, DummyUIManager, ,.... ClassOrganizer, PointerFinder, ScriptLauncher, ...)
However the attached error comes up and a debugger in method primWrite: id from: stringOrByteArray startingAt: startIndex count: count
of MultiByteFileStream
This is on a Windows 7 machine with a recent VM.
Could anybody else check the file-in of Pavel's patch001.st as well?
Sorry by the late answer, but only now have time to this. With older Squeak 4.2.5beta1U do not run in Terminal, but if you change
stdout ^Stdout ifNil: [ Stdout := self newFileNamed: 'stdout']
See here:
And run with UI, finish with a 3.3 Mb .image
If as in my case you do:
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ /Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st 2013-01-20 09:07:48.604 Croquet[789:903] Incompatible applications: app=com.squeak.Cog, targetApp=com.apple.Safari undeclared: DummyUIManager put: DummyUIManager undeclared: ScriptLauncher put: ScriptLauncher undeclared: ScriptLauncher put: ScriptLauncher undeclared: DummySystemProgressItem put: DummySystemProgressItem undeclared: DummySystemProgressItem put: DummySystemProgressItem 1 2 3 4
Stops with Enviroments DNU removeKey:
But if you not use the last update
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12327\ copy.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st
Happily gives you a 3.1 Mb image.
So we start to have a very valuable thing.
I try to made Pavel suggested changes and invite to all wishing a SqueakKernel to share experiences and push our Board to have some.
I have plenty of confidence in Spoon, but life is short and fragile as we learn the hard way.
In the time we wait for a Perfect Solution, we could have a Good Solution
Edgar
OK, this just serves as a reminder that this thread contains the original script file by Pavel to create a 3 MB dirty image.
This is the initial post http://lists.squeakfoundation.org/pipermail/squeak-dev/2012-December/167367....
I did not manage to execute the script file, but Edgar did. Maybe I should try again. In any case we need more detailed instructions how to do it or even better just a Jenkins job to do it with an informative log file.
As I understand the purpose of it is to find out where the modularity problems are.
--Hannes
On 2/11/13, Pavel Krivanek squeak1@continentalbrno.cz wrote:
No matter where :-) But it would be nice is someone will start to review the changes and integrate them.
Cheers -- Pavel
On Mon, Feb 11, 2013 at 1:12 PM, H. Hirzel hannes.hirzel@gmail.com wrote:
Pavel
I assume your recommendation you wrote today in the other thread
http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-February/168741....
means to continue with the work in this thread?
Right?
--Hannes
On 1/20/13, Edgar J. De Cleene edgardec2005@gmail.com wrote:
On 12/30/12 10:35 AM, "H. Hirzel" hannes.hirzel@gmail.com wrote:
On 12/30/12, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi,
this is the first unkempt attempt to produce SqueakCore image from Squeak4.4-12324. It generates 3 MB dirty image (3.2 with Unicode tables). Some overrides have only logging purpose.
Cheers, -- Pavel
Hello Pavel and others
Thank you for your first attempt.
I assume I have to file in first patch001.st
as it contains various dummy classes and fixes to existing classes. (DummyProject, DummyUIManager, ,.... ClassOrganizer, PointerFinder, ScriptLauncher, ...)
However the attached error comes up and a debugger in method primWrite: id from: stringOrByteArray startingAt: startIndex count: count
of MultiByteFileStream
This is on a Windows 7 machine with a recent VM.
Could anybody else check the file-in of Pavel's patch001.st as well?
Sorry by the late answer, but only now have time to this. With older Squeak 4.2.5beta1U do not run in Terminal, but if you change
stdout ^Stdout ifNil: [ Stdout := self newFileNamed: 'stdout']
See here:
And run with UI, finish with a 3.3 Mb .image
If as in my case you do:
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ Atlantis:~ edgar$ /Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12386.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st 2013-01-20 09:07:48.604 Croquet[789:903] Incompatible applications: app=com.squeak.Cog, targetApp=com.apple.Safari undeclared: DummyUIManager put: DummyUIManager undeclared: ScriptLauncher put: ScriptLauncher undeclared: ScriptLauncher put: ScriptLauncher undeclared: DummySystemProgressItem put: DummySystemProgressItem undeclared: DummySystemProgressItem put: DummySystemProgressItem 1 2 3 4
Stops with Enviroments DNU removeKey:
But if you not use the last update
/Applications/Cog.app/Contents/MacOS/Croquet -headless /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/Squeak4.4-12327\ copy.image /Users/edgar/AtlantisSqueak/imagesZip/Squeak4.4/patch001.st
Happily gives you a 3.1 Mb image.
So we start to have a very valuable thing.
I try to made Pavel suggested changes and invite to all wishing a SqueakKernel to share experiences and push our Board to have some.
I have plenty of confidence in Spoon, but life is short and fragile as we learn the hard way.
In the time we wait for a Perfect Solution, we could have a Good Solution
Edgar
Required refactorings to be able to reload Monticello to SqueakCore:
PackageInfo and Network package cannot have preambule. Because preambule definition in .st files is dependent on PackageInfo
MailComposition class>>initialize - MailSender dependency must be removed.
HTTPSocket class >> initialize - ExternalSettings dependency must be removed.
ServerDirectory class >> initialize - ExternalSettings dependency must be removed.
UUIDGenerator class >> initialize - bad startup list placement - Smalltalk addToStartUpList: self
PackageList class >> initialize - TheWorldMenu dependency must be removed.
System category "Monticello-UI" must be in own package
Monticello extension methods to classes in System-FilePackage category must be removed
MCVersionReader class >> initialize - FileList dependencies must be removed.
MCRepository class >> initialize - ExternalSettings dependency must be removed.
squeak-dev@lists.squeakfoundation.org