Dale,

I couldn't make it work with the upgraded Metacello and the script you provided.

Steps I did:

1. Download moose image:��
https://ci.inria.fr/moose/job/moose-5.0/

2. Update my Metacello to the 'full' version:
Metacello new
�� baseline: 'Metacello';
�� repository: 'github://dalehenrich/metacello-work:master/repository';
�� get.
Metacello new
�� baseline: 'Metacello';
�� repository: 'github://dalehenrich/metacello-work:master/repository';
�� onConflict: [:ex | ex allow];
�� load

3. File in the ConfigurationOfDummyParser (see the first message in the thread).

4.����Run this script to downgrade to PetitParser version 1.51

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

The desired version is still not loaded, am I missing something here?

regards,

A question: I always use Metacello with ConfigOf and have never used the scripting API myself or saw it being used elsewhere.
Can you provide a link that describes the use cases for both: ConfigOf vs. Scripting API?��

On Fri, Jan 2, 2015 at 6:47 PM, Dale Henrichs <dale.henrichs@gemtalksystems.com> wrote:
Usman,

It is likely that Pharo3.0 is not using the latest version of Metacello. You should be able to upgrade to the latest versions following the install instructions for Pharo3.0[1].

Dale

[1] https://github.com/dalehenrich/metacello-work#pharo30


On 1/2/15 6:23 AM, Usman Bhatti wrote:
Dale,

Thanks for your detailed explanations.��

Metacello class in my image does not seem to define the messages described in the documentation for handling downgrading and upgrading conflicts:

I am using Pharo 3.0 with Moose.

Inline image 1

Did I miss something?

regards,
Usman

On Fri, Dec 19, 2014 at 7:00 PM, Dale Henrichs <dale.henrichs@gemtalksystems.com> wrote:
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';

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

��