Hi,

We fixed this but we are not sure if the behaviour that we got was a result
of a bug or a feature in Metacello.

Again our setup is that we have three configurations with linear
dependencies between them:
-- ConfigurationOfGTInspectorCore (2.0-baseline)
     -- ConfigurationOfGlamourCore (3.1-baseline)
         -- ConfigurationOfRubric (0.2-baseline)

In ConfigurationOfRubric we had version "1.2.8" that uses '0.2-baseline'.

The development version is '0.2-baseline' and the stable version '1.2.8'

[1] (ConfigurationOfGlamourCore  project version: #development) record
loadDirective
[2] (ConfigurationOfGTInspectorCore  project version: #development) record
loadDirective.

When performing [1] Metacello  decides to load Rubric.
This because "MetacelloNullRecordingMCSpecLoader" uses the operator "=" (since
none was specified before) to figure out whether something should be
loaded. At a certain point this is executed:

  compareCurrentVersion:targetVersionStatus:using: (from above)
    ...
       ...
         ...
           ...
              #allLoadedToSpec = #allLoadedToSpec ===> TRUE
                "1.2.8 [ConfigurationOfRubric]" = "<>0.2-baseline
[ConfigurationOfRubric] (MetacelloMCVersion)" ===> FALSE
                ===> Rubric is not removed from the loader list

When performing [2] Metacello decides not to load Rubric.
In this case Metacello deals first with #ConfigurationOfGlamourCore. But
after "GlamorCore" has been processed, the operator in the global mcLoader
is set to ">=". All further specs-to-load (MetacelloNullRecordingMCSpecLoader)
will be compared using "=>". So now rubric get's removed:

  compareCurrentVersion:targetVersionStatus:using: (from above)
    ...
       ...
         ...
           ...
              #allLoadedToSpec >= #allLoadedToSpec ===> TRUE
                "1.2.8 [ConfigurationOfRubric]" >= "<>0.2-baseline
[ConfigurationOfRubric] (MetacelloMCVersion)" ===> TRUE
                ===> Rubric is removed from the loader list

That's why "Rubric" doesn't show up in the final loader list. The second
(inner/nested) spec-to-load will remove it (after it has been successfully
resolved by the previous nested configuration ConfigurationOfGlamourCore)
because of the operator.

So there is a difference between #ConfigurationOfGlamourCore and
#ConfigurationOfGTInspectorCore
in how "Rubric" is resolved and loaded.

Anybody else encountered this?

Cheers,
GT team




On Tue, Mar 3, 2015 at 9:44 PM, Andrei Chis <[email protected]>
wrote:

> Hi,
>
> We are having the following problem when trying to update GTolols to their
> latest version in the latest Pharo 4 image: Rubric does not get updated.
> We have:
>
> -- ConfigurationOfGTInspectorCore (2.0-baseline)
>      -- ConfigurationOfGlamourCore (3.1-baseline)
>          -- ConfigurationOfRubric (0.2-baseline)
>
> Performing [1] shows that rubric gets updated (atomic load : 0.2-baseline
> [ConfigurationOfRubric])
> Performing [2] contains no trace of rubric.
>
> [1] (ConfigurationOfGlamourCore  project version: #development) record
> loadDirective
> [2] (ConfigurationOfGTInspectorCore  project version: #development) record
> loadDirective.
>
> Loading then the inspector [3] does not update Rubric.
> Loading just Glamour [4] updates it.
>
> [3] (ConfigurationOfGTInspectorCore project version: #development) load.
> [4] (ConfigurationOfGlamourCore  project version: #development) load
>
> Any ideas or sugestions? Maybe we are missing something trivial.
> This updates the previous configurations to their latest versions:
>
> Gofer new smalltalkhubUser: 'Moose' project: 'GToolkit';
>  package: 'ConfigurationOfGTInspectorCore'; load.
> Gofer new smalltalkhubUser: 'Moose' project: 'Glamour';
>  package: 'ConfigurationOfGlamourCore'; load.
> Gofer new smalltalkhubUser: 'AlainPlantec' project: 'Rubric';
>  package: 'ConfigurationOfRubric'; load.
>
>
> Cheers,
> Andrei
>

Reply via email to