I reflected a bit more on your requirements. How about the following? Put a separate reference for the project in each platform-specific section. I combine this with a #file: declaration because otherwise your package cache will play dirty tricks on you if it has a newer version of the ConfigurationOfB in it. This is really important.
spec for: #common do:[ spec project: 'B' "empty def to allow dependency reference inside the #common secion" ] spec for: #pharo2.x do:[ spec project: 'B' with: [ spec className:'ConfigurationOfB'; versionString: #stable; file: 'ConfigurationOfB-johndoe.1.mcz'; repository: '<meta repo for pharo 2.0>' ] ] spec for: #pharo3.x do:[ spec project: 'B' with: [ spec className:'ConfigurationOfB'; versionString: #stable; file: 'ConfigurationOfB-johndoe.2.mcz'; repository: '<meta repo for pharo 3.0>' ] ] On 22 Mar 2014, at 23:06, Pharo4Stef <pharo4s...@free.fr> wrote: > We were discussing about that. > My point is that the system should work if the catalog fall apart. > Now others told me that in other community this is the inverse. People only > refer to the catalog. > > Since we did not get last year and this year the engineer I requested to work > on the validation of distirbution we did not make progress > on that front because we are busy. > > For me I do not use SqueakSource not because it is written Squeak but because > I think that squeaksource is over and too old. > > Stef > >> I'm currently browsing the various ConfigurationOf in MetaRepoForPharo30 >> catalog hoping to find a pattern to serve as guidelines, but what I see is a >> messy variety of solutions: >> >> - direct reference to specific source repositories of package B as Johan >> suggested (and the successive baselines are effectively tracking motions of >> B) >> IMO the worst thing, I don't manage B and don't want to update my >> ConfigurationOfA each time B moves. >> >> - references to ConfigurationOfB thru squeaksource MetacelloRepository. >> My preferred solution. I don't care if the catalog is centralized on >> squeaksource, Smalltalkhub or whatever, but I want a centralized catalog > > Me too. > Now the question is the following one. > Ideally I would like to have one inbox and that configuration move to the > catalog for their version. > (Because I do not see the point of having around old versions of projects > that do not load in the given version). > I explained that in the Pharo vision document. > Now may be other solutions are better. > > Stef > > >> >> - refrences thru MetaRepo catalog du jour (tracking motions of MetaRepo >> across baselines) >> My original question, using secondary catalogs is not a problem if they are >> just a duplicata, but I prefer to ask, because it sounds strange to have >> multiple catalogs just to implement a filter (the filter being select those >> packages that are tested and approved in pharo x.y)... Certainly a >> workaround for a missing feature of Metacello. >> >> - a mixture of the 3 solutions above for some packages! >> That appears as randomness from my POV, or like of guidance >> >> So again, what are the best practices currently, and could we think of it in >> a bit longer term? >> >> >> 2014-03-22 21:51 GMT+01:00 Nicolas Cellier >> <nicolas.cellier.aka.n...@gmail.com>: >> >> 2014-03-22 21:27 GMT+01:00 Johan Brichau <jo...@inceptive.be>: >> >> I don't understand what squeaksource has to do with that. >> With main repository, I mean the repository of the project itself. >> >> Almost all ConfigurationOfXXX are hosted together with the project itself. >> They are also referenced in that repo. The MetacelloRepo or MetaRepos are >> almost always secondary copies (if not, they should be) >> >> Johan >> >> >> Arghh NOOOO, so that is really going to be a problem for me ! >> With MetacelloRepository I absolutely don't care where to find a specific >> package, I have some kind of centralized catalog. >> >> Now, if I must track each and every motion of package B from squeaksource to >> ss3 to SmalltalkHub to github to (what's next ?), the idea of catalog is >> completely broken then... >> >> Nicolas >> >> >> On 22 Mar 2014, at 21:10, Nicolas Cellier >> <nicolas.cellier.aka.n...@gmail.com> wrote: >> >>> OK, if the MetacelloRepository on squeaksource can still serve as >>> reference, I'm perfectly OK with it, I don't know why I had this impression >>> that anything beginning with those 6 letters was going to be seen as a >>> problem ;) >>> >>> >>> 2014-03-22 18:53 GMT+01:00 Johan Brichau <jo...@inceptive.be>: >>> Why can you not reference the main repository? The meta repository is just >>> a place where the configuration loader tool fetches them. >>> >>> Platform-specific elements go in the separate 'sections' of a baseline or >>> version method. >>> >>> Don't make separate branches of the same ConfigurationOf class. You will >>> not only make your life hard but also confuse all users! >>> >>> Maybe you can explain why you think you need those? >>> >>> Johan >>> >>> On 22 Mar 2014, at 18:20, Nicolas Cellier >>> <nicolas.cellier.aka.n...@gmail.com> wrote: >>> >>>> I have some packages A that depend on another package B. >>>> In Metacello, I can easily declare the dependency >>>> spec >>>> className: 'ConfigurationOfB'; >>>> versionString: #'stable'; >>>> repository: ' >>>> http://www.squeaksource.com/MetacelloRepository' ]. >>>> But the repository is hardcoded here. >>>> >>>> My problem is that I'd like to edit a ConfigurationOfA valid for pharo >>>> 1.x, 2.0.x and 3.0.x (so far so good) and put a copy in MetaRepoForPharo20 >>>> and another copy in MetaRepoForPharo30. >>>> >>>> Since the repository is hardcoded, this is going to be a problem because >>>> the MetaRepo will then cross-ref other repositories and weaken robustness >>>> or miss uptodate ConfigurationOfB... >>>> >>>> I'd like to avoid maintaining many branches of ConfigurationOfA. >>>> >>>> How do others resolve this? >>> >> >> >