Well, I'll try to explain it. Once Iceberg is loaded, all Pharo packages are initialized with a special MCVersionInfo: IceProxyMCVersionInfo. This MCVersion info is there because the image does not come by default with a pharo repository. So, at runtime, when it is used, it tries to determine if the pharo repository was defined and if so, it does become itself by a normal version. For this, it uses both #doesNotUnderstand: and #become:. I'm not happy with that implementation. It could be simplified by just adding a Pharo repository in iceberg by default... In any case, one way to fix that, is to create a pharo repository. That should "bind" the proxy version infos... On Tue, Mar 13, 2018 at 3:40 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Well it is so magic that I do not understand what is happening ...
On 13 Mar 2018, at 15:32, Guillermo Polito <guillermopolito@gmail.com> wrote:
Ah, that's Iceberg's magic proxies I think :/
On Tue, Mar 13, 2018 at 3:05 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote: For some reason I can no longer open Zinc's old school MC repository in Pharo-7.0+alpha.build.690.sha.ffd58dcc88a0698be21b52b565a86316799cb25d (32 Bit)
MCHttpRepository location: 'http://mc.stfx.eu/ZincHTTPComponents' user: '' password: ''.
Open repository (browser UI)
gives me a DNU see [1]
I just don't see what is wrong, maybe it has to do with the latest commit in the repo, (it took a git version number from the image as ancestor), but this code is hard to look at.
Now I am stuck trying to fix a problem with Zinc.
Any help would be appreciated,
Sven
[1]
UndefinedObject(Object)>>doesNotUnderstand: #< [ :ancestor | (ancestor versionNumber < aVersionArray third or: [ ancestor versionNumber = aVersionArray third and: [ ancestor author ~= aVersionArray second ] ]) ifTrue: [ newer add: ancestor name ] ] in [ :aVersionArray | workingCopy ancestors do: [ :ancestor | (ancestor versionNumber < aVersionArray third or: [ ancestor versionNumber = aVersionArray third and: [ ancestor author ~= aVersionArray second ] ]) ifTrue: [ newer add: ancestor name ] ] ] in [ :workingCopy | | versionsForPackage | workingCopy ancestors do: [ :ancestor | loaded add: ancestor name ]. versionsForPackage := versions select: [ :v | v first = workingCopy package name ]. versionsForPackage do: [ :aVersionArray | workingCopy ancestors do: [ :ancestor | (ancestor versionNumber < aVersionArray third or: [ ancestor versionNumber = aVersionArray third and: [ ancestor author ~= aVersionArray second ] ]) ifTrue: [ newer add: ancestor name ] ] ] ] in MCFileRepositoryInspector>>refresh in Block: [ :ancestor | ... Array(SequenceableCollection)>>do: [ :aVersionArray | workingCopy ancestors do: [ :ancestor | (ancestor versionNumber < aVersionArray third or: [ ancestor versionNumber = aVersionArray third and: [ ancestor author ~= aVersionArray second ] ]) ifTrue: [ newer add: ancestor name ] ] ] in [ :workingCopy | | versionsForPackage | workingCopy ancestors do: [ :ancestor | loaded add: ancestor name ]. versionsForPackage := versions select: [ :v | v first = workingCopy package name ]. versionsForPackage do: [ :aVersionArray | workingCopy ancestors do: [ :ancestor | (ancestor versionNumber < aVersionArray third or: [ ancestor versionNumber = aVersionArray third and: [ ancestor author ~= aVersionArray second ] ]) ifTrue: [ newer add: ancestor name ] ] ] ] in MCFileRepositoryInspector>>refresh in Block: [ :aVersionArray | ... Array(SequenceableCollection)>>do: [ :workingCopy | | versionsForPackage | workingCopy ancestors do: [ :ancestor | loaded add: ancestor name ]. versionsForPackage := versions select: [ :v | v first = workingCopy package name ]. versionsForPackage do: [ :aVersionArray | workingCopy ancestors do: [ :ancestor | (ancestor versionNumber < aVersionArray third or: [ ancestor versionNumber = aVersionArray third and: [ ancestor author ~= aVersionArray second ] ]) ifTrue: [ newer add: ancestor name ] ] ] ] in MCFileRepositoryInspector>>refresh in Block: [ :workingCopy | ... Array(SequenceableCollection)>>do: MCFileRepositoryInspector>>refresh [ self refresh. MCWorkingCopy addDependent: self ] in MCFileRepositoryInspector>>setRepository:workingCopy: in Block: [ self refresh.... [ self value. Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self value....
--
Guille Polito Research Engineer
Centre de Recherche en Informatique, Signal et Automatique de Lille CRIStAL - UMR 9189 French National Center for Scientific Research - http://www.cnrs.fr
Web: http://guillep.github.io Phone: +33 06 52 70 66 13
-- Guille Polito Research Engineer Centre de Recherche en Informatique, Signal et Automatique de Lille CRIStAL - UMR 9189 French National Center for Scientific Research - *http://www.cnrs.fr <http://www.cnrs.fr>* *Web:* *http://guillep.github.io* <http://guillep.github.io> *Phone: *+33 06 52 70 66 13