Usman,

With classic Metacello (using the `(ConfigurationOfxxx project version: 'xxx') load` pattern) you can only downgrade via an explicit load of a particular version of the project. When loading projects indirectly via a project reference from another project Metacello is biased towards upgrade.

With the Metacello Scripting API[1], you may include an #onDowngradeUseIncoming: clause to selectively permit downgrades:

  Metacello new
    configuration: 'DummyParser';
    version: '1.0';
    repository: '???';
    onDowngradeUseIncoming: #('PetitParser');
    load.

For additional downgrade options see[2].

Since you are interested in using a specific version of a project you may also be interested in locking the project[3][4]. With a `lock` Metacello will not upgrade or downgrade the project but always `honor` the lock unless an #onLock: clause is used ...

Note that for `locking` to work, you must use the Metacello Scripting API to do all of your project loads ...

Dale

[1] https://github.com/dalehenrich/metacello-work/blob/master/docs/MetacelloUserGuide.md#metacello-user-guide [2] https://github.com/dalehenrich/metacello-work/blob/master/docs/MetacelloUserGuide.md#downgrade [3] https://github.com/dalehenrich/metacello-work/blob/master/docs/MetacelloUserGuide.md#locking [4] https://github.com/dalehenrich/metacello-work/blob/master/docs/LockCommandReference.md#lock-command-reference

On 12/19/2014 07:44 AM, Usman Bhatti wrote:
Hi all,

I am trying to load a specific version of PetitParser in a Moose image. A Moose image comes with the latest development version of PetitParser. So, I am trying to downgrade to an older version. So, when I load the version manually, older versions of the packages are loaded:
(ConfigurationOfPetitParser project version: '1.51') load

But when I try to load the same version within my ConfigOf the expected packages are not loaded and list of the PetitParser packages loaded remains unchanged. Here is how my baseline looks like:

ConfigurationOfDummyParser>>baseline01: spec
<version: '0.1-baseline'>

spec for: #'common' do: [
spec blessing: #'baseline'.
spec project: 'PetitParser' with: [
spec
className: #ConfigurationOfPetitParser;
versionString: '1.51';
repository: 'http://smalltalkhub.com/mc/Moose/PetitParser/main/' ]. ].

I also tried creating a version but it didn't help.

ConfigurationOfDummyParser>>version10: spec
<version: '1.0' imports: #('0.1-baseline' )>

spec for: #'common' do: [
spec blessing: #'stable'.
spec description: 'version 1.0'.
spec author: 'usmanbhatti'.
spec timestamp: '12/19/2014 16:35'.
spec project: 'PetitParser' with: '1.51'. ].

I also had a look at the package the configuration tries to load and the list shows correct packages to be loaded (see screenshot).

Does anyone have an idea what may be problematic in my code or that of Metacello? I am attaching the code of my ConfigOf for a Moose image.

Thanks in advance.

UsmanInline image 1



Reply via email to