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


Web: http://guillep.github.io

Phone: +33 06 52 70 66 13