Cees de Groot wrote:
And as it seems to work, I'll stop using obsolete stuff like SqueakSource and Apache HTTP dirs for now ;). Next update is available on the network (very minor, but I wanted to go into dogfood mode just for the heck of it).
Very cool, Cees! I've just found the "+Repository" Tric P2P option. I've had a TPMCRepository running overnight from a Workspace, and wondered how to actually install things from it this morning.
After adding the Tric P2P repo to my browser, and clicking Open, I got a nice summary with a few packages and quite some (.mcz)s against each package. Clicking on the latest Tric-P2P package (Tric-P2P-CdG.12.mcz) paused the whole image for about a minute before resulting in an error, "sorry, couldn't find anything on the p2p net" (walkback pasted below).
Perhaps the timeout is too short? (Alternatively, from a user-feedback POV, it's already too long :-) ) Looking at the value of "hits" in "readStreamForFileNamed:do:", there are two separate entries.
Regards, Tony
28 February 2005 8:39:09 am
VM: Win32 - a SmalltalkImage Image: Squeak3.7 [latest update: #5989]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir J:\Squeak\Squeak3.7u1 Trusted Dir J:\Squeak\Squeak3.7u1\tonyg Untrusted Dir C:\My Squeak\tonyg
TPMCRepository(Object)>>error: Receiver: a TPMCRepository(Tric P2P) Arguments and temporary variables: aString: 'sorry, couldn''t find anything on the p2p net' Receiver's instance variables: creationTemplate: nil cache: a Dictionary() peer: an AWGPeer
TPMCRepository>>readStreamForFileNamed:do: Receiver: a TPMCRepository(Tric P2P) Arguments and temporary variables: aString: 'Tric-P2P-CdG.12.mcz' aBlock: [] in TPMCRepository(MCFileBasedRepository)>>versionReaderForFileNamed:...etc... presence: an AWGPresence hits: a Set(an AWGPresenceEntry(Tric-P2P-CdG.12.mcz@2e76ca5f-a5e9-4b90-8f14-7f5...etc... found: false each: an AWGPresenceEntry(Tric-P2P-CdG.12.mcz@b9883907-bbf4-b74b-8795-6c4188889...etc... Receiver's instance variables: creationTemplate: nil cache: a Dictionary() peer: an AWGPeer
TPMCRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do: Receiver: a TPMCRepository(Tric P2P) Arguments and temporary variables: aString: 'Tric-P2P-CdG.12.mcz' aBlock: [] in TPMCRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: ...etc... s: nil class: nil Receiver's instance variables: creationTemplate: nil cache: a Dictionary() peer: an AWGPeer
TPMCRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: Receiver: a TPMCRepository(Tric P2P) Arguments and temporary variables: aString: 'Tric-P2P-CdG.12.mcz' r: nil Receiver's instance variables: creationTemplate: nil cache: a Dictionary() peer: an AWGPeer
--- The full stack --- TPMCRepository(Object)>>error: TPMCRepository>>readStreamForFileNamed:do: TPMCRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do: TPMCRepository(MCFileBasedRepository)>>loadVersionFromFileNamed: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] in TPMCRepository(MCFileBasedRepository)>>versionFromFileNamed: {[self loadVersionFromFileNamed: aString]} [] in Dictionary>>at:ifAbsentPut: {[self at: key put: aBlock value]} Dictionary>>at:ifAbsent: Dictionary>>at:ifAbsentPut: TPMCRepository(MCFileBasedRepository)>>versionFromFileNamed: MCFileRepositoryInspector>>versionSelection: PluggableListMorph>>changeModelSelection: PluggableListMorph>>mouseUp: PluggableListMorph(Morph)>>handleMouseUp: MouseButtonEvent>>sentTo: PluggableListMorph(Morph)>>handleEvent: PluggableListMorph(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]}