On Sat, Jan 10, 2015 at 5:22 PM, Dale Henrichs < dale.henri...@gemtalksystems.com> wrote:
> Usman, > > Thanks for supplying the image ... with that I could diagnose the problem. > In the final analysis, the onDowngrade: feature just does not work[1]. I > haven't had a `downgrade` use case in my own work flow, so I did not notice > that it wasn't working and the test cases that I do have are obviously > faulty. > > Along the way, I discovered that in the Moose image, there is a custom > MetacelloPlatform class installed (GTMetacelloPlatform) that is not > compatible with the Scripting API. With that class installed, the scripting > API will not work. I was able to install the proper platform class myself, > but it requires manual intervention ... > I do not know the use case for GTMetacelloPlatform. > > Also, it turns out the PetitParser 1.10 is the version that is installed > and your new version 1.51 is not technically a downgrade ... I think that > the version needs to be named 1.5.1 to be a downgrade ... I changed that as > well and that's when I was able determine that onDowngrade: wasn't > functioning correctly. > Yes, this is something I remarked as well. Thanks for working on this problem. regards, > > Basically, the code said "go ahead and downgrade" but when it came time to > actually load the packages, Metacello went ahead with it's standard > algorithm of only loading newer versions of each package. > > I plan to take a crack at fixing this bug this weekend ... and will let > you when I have a fix. > > Dale > > [1] https://github.com/dalehenrich/metacello-work/issues/317 > > > On 1/8/15 12:32 AM, Usman Bhatti wrote: > > > > On Wed, Jan 7, 2015 at 8:25 PM, Dale Henrichs < > dale.henri...@gemtalksystems.com> wrote: > >> Usman, >> >> No, I appreciate your patience:) If creating your own configuration works >> for you then that is a good route to go... >> > >> Sharing your image will make it much easier for me to get the bottom of >> this (on my own schedule:), so please send me a link for accessing your >> image and I'll dig into this in more detail when I have time ... >> > > Here is the image. > https://dl.dropboxusercontent.com/u/11804892/downgrade-with-metacello.zip > > You just need to execute the script in the workspace/playground to > reproduce the problem (i.e. launching the directive to load PP 1.51 and > that not happening). > > >> If you find yourself stuck and needing the `downgrade directive` again, >> I'll bump up the priority ... >> > > I can still wait till next week. If you could have a look by then, it'll > be great. > tx. > Usman > > >> >> >> Dale >> >> >> On 01/07/2015 09:19 AM, Usman Bhatti wrote: >> >> >> >> On Tue, Jan 6, 2015 at 6:56 PM, Dale Henrichs < >> dale.henri...@gemtalksystems.com> wrote: >> >>> >>> On 1/6/15 7:16 AM, Usman Bhatti wrote: >>> >>> 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? >>> >>> Good question, I don't have a lot of time today to spend time trying to >>> reproduce your problem, but if you send me a copy of the Transcript >>> produced while doing the load I might be able to spot the problem ... >>> >> >> It looks to me that the downgrade command is not working. Whenever I >> point to the version preceding the one loaded, the packages are not fetched. >> >> I am attaching here two files. >> >> The first (Transcript-PP151) is the output of the transcript as you >> asked. You can see that PetitParser packages as defined by the version 1.51 >> are not fetched. All that is loaded is Glamour because the version 1.51 of >> PetitParser loads the latest packages of Glamour. The load works because it >> is an upgrade from the current version of Glamour which is a stable. >> >> When I saw that only Glamour packages are loaded, I thought of testing >> Glamour downgrade too to see if the problem is specific to PetitParser. You >> can see the result in the second file (Transcript-downgrade-glamour). No >> packages of Glamour are fetched because the configuration tries to >> downgrade it (stable is more recent than 3.0.0 which I try to load). >> >> In my opinion, downgrade is not working as required. If you want I can >> share my image thru dropbox so that you can have a look to see what might >> be wrong. >> >> >>> >>> >>> 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? >>> >>> I've noticed the same thing:) >>> >>> My "elevator pitch" for the script api goes like this: >>> 1. The scripting api maintains a registry of the actual project >>> versions loaded into the image, >>> making #currentVersion obsolete. #currentVersion is bad because it >>> does a calculation of >>> the current version that can be very slow and sometimes completely >>> incorrect. >>> 2. The old api has rules that it follows when loading projects (i.e., >>> newer projects always win) and >>> there is no mechanism for altering those rules. The scripting api >>> provides mechanisms for >>> for bending those rules to fit your needs ... like allowing a >>> downgrade of a project. >>> >>> Part of the reason that people haven't changed has to do with how >>> incredibly difficult it is to change the existing inertia. Another part of >>> it is that I continue to support the old way of doing things, so there is >>> no explicit motivation to change. >>> >>> If you look back 2-3 years in the archives of the Metacello mailing >>> list[1] you should be able to find a number of posts where I make a more >>> detailed cases for the scripting api:) >>> >>> At the end of the day, it isn't important to me to "get people to use >>> the scripting api," as I said, I continue to support using the old api. I >>> figure that when enough people start asking questions about how to "bend >>> the Metacello rules" that folks will begin to use the "new" scripting api:) >>> >> >> So, what I learn is that I am trying to bend the rules of Metacello >> which is a rare use case :). I am thinking of avoiding this downgrading >> altogether by forking to create my own ConfigOf that loads the correct >> versions. Downgrading might be an anti-pattern. >> >> Thank you for your patient so far :) >> >> regards. >> >> >> >>> >>> Dale >>> [1] https://groups.google.com/forum/#!forum/metacello >>> >> >> >> > >