Andrei,

1) The old configuration load api is non-deterministic, especially when used with large configurations, Metacello will not downgrade a package, so if (using the old api) Metacello decides that a newer version of a configuration is present, then it will use the newer (and possibly incorrect version). Keep in mind that pre-loaded packages in Pharo can influence this non-deterministic calculation.

I don't know for certain that using the old API is the culprit. The only way for me to understand where the issue might lie is for me to look at the Transcript output of a load.

2) I'm not sure that Moose is loadable in Pharo3.0 ... If things are not actively tested then they are likely to quit working over time and I'd guess this is the case for Pharo3.0 and Moose.

3) using #stable is a very inaccurate way of specifying a symbolic version. The Seaside folks have started using version-based symbolic versions like: #'release3', #'release3.1', #'release3.2' a while ago and I think this is a very good way to leverage symbolic versions ... #stable can be changed and in the mind of the developer #stable is now version 4.0.0, while a number of older configurations will consider #stable to be version 3.0.0 ... it doesn't take long the #stable version universe to be completely confused ...

While I suspect that the current #stable version of Moose does not run on Pharo3.0, if version-based symbolic versions had been used back then the configurations would likely still be usable ...

Again, I am just guessing ... analysis of the Transcript output would give me better clues ...

Using the new Metacello scripting API:

    Metacello new
      configuration: 'Moose';
      version: #stable;
      repository: '???';
      load

does a load without without calculating the #currentVersion and should be deterministic with respect to loaded versions ... this only addresses the first point above. If points 2 or 3 are involved, then it may be more difficult to solve the problem ...

BTW, sorry for taking so long to get back to you ... in the last month I've taken a long overdue vacation (and did not even open my laptop:) and have been working exclusively on GemStone 3.3 ... I'm nearly finished with my main commitments for GemStone 3.3 and as I come up for air, I'm working off my email backlog:)

Dale
On 5/18/15 5:56 AM, Andrei Chis wrote:
Hi,

If I specify a stable version for a platform (spec for: #'pharo3.x' version: '3.0.6'.), shouldn't Metacello load that version?

Concrete use-case: loading ConfigurationOfMoose in Pharo 3
- ConfigurationOfMoose specifies version 5.0 as stable for Pharo 3
- ConfigurationOfMoose version 5.0 loads  ConfigurationOfGlamour #stable
- ConfigurationOfGlamour specifies version 3.0.6 as stable for Pharo 3 (spec for: #'pharo3.x' version: '3.0.6')

Loading ConfigurationOfMoose [1] in Pharo 3 loads version 3.0.9 for ConfigurationOfGlamour.
Updating Monticello leads to the same result.

Did I misunderstood something about how monticello works?
Any idea how to debug this?

Cheers,
Andrei

[1] (ConfigurationOfMoose project version: #'stable') record loadDirective



Reply via email to