[Glass] Another metacello loading puzzle: xml

Iwan Vosloo via Glass glass at lists.gemtalksystems.com
Wed Dec 27 10:43:28 PST 2017

Hi Dale,

On 27/12/2017 19:13, Dale Henrichs via Glass wrote:
> Not sure what you mean by "scripting API"?

I mean as per the heading of [1]. I thought that referred to working 
with via a Metacello instance as explained on that page instead of via 
projects or versions of a configuration.

 > Perhaps you could be more specific about exactly what you are trying
 > to achieve

Thats complicated (by details). But, I have inherited the job of 
upgrading our systems. They, and the scripts that manage them are 
dependent on Metacello for loading things and for expressing 
dependencies between things....and have evolved over time which means I 
need to understand Metacello and our intricate context and make things 
work again on Gs3.4. (Expect lots more strange questions.)

What the home-grown scripts do is basically: build a CI extent, starting 
from the seaside extent, using pretty much only a local BaselineOf that 
pulls a bunch of 3rd party projects in. Some of these are 
ConfigurationOfs with mcz files, some are just mcz projects with no 
Metacello, some are cloned repositories etc. There are a fair number of 
packages being pulled in, and we won't live in a git-repo-only world any 
time soon.

The same scripts also upgrade production systems.

The CI extents can be built using an option that fetches things via the 
network, but once that is done they typically just use what we fetched 
before. Also, the CI builds run continuously so we dont want them to hit 
the network all the time.

It is handy to be able to say "go fetch all you need and save it on 
disk"... it is more cumbersome to clone several git repos... you have to 
know which ones, which branches and you have to distribute these to the 
build machines too. (We use git submodules for that.) If I can just say 
Metacello fetch, and save the resultant cache repository I dont need to 
even know which dependencies are all pulled in.

We also depend on exact versions of things and use that info to make 
decisions when there is a conflict.

I am still trying to figure Metacello out, but what would be nice is if 
I can, in my BaselineOf point the various bits to github repos, and 
still fetch and save the fetched result in a cacheRepository inside my 
own project's git repository. Then I can handle all the different kinds 
of packages the same way.




More information about the Glass mailing list