[Glass] Upgrade GS 2.4 -> GS 3.1 when GLASS, Seaside etc. versions have already diverged

pieter at nagel.co.za pieter at nagel.co.za
Mon Feb 24 06:59:04 PST 2014


I'm struggling to upgrade a repository to I suspect the
root problem is that the loaded metacello packages
have massively diverged from the "blessed" versions that shipped with in extent0.seaside.dbf, and that just breaks
too many hard-wired assumptions in upgradeSeasideImage. For example, we're
using recent versions of Metacello, Seaside30,
GLASS and Zinc as published on github, we're using filetree, and that
implies a lot of changes in lower-level dependencies
such as Sport and SoXML etc.

To my thinking, we don't need to run upgradeSeasideImage since we've
already upgraded Seaside; we just need to run upgradeImage
to deal with changes in kernel classes and the GemStone product itself.
However, when I inpect upgradeSeasideImage.topaz, it
seems to contain code that relates to the upgrade from 2.4 -> 3.1
itself (for example, making ControlInterrupt, Halt, Pause, Random,
TransientRandom and BreakpointNotification obsolete).

So it seems we do need to run upgradeSeasideImage, but ensure that it
does not trip over our different version numbers. But then
bootstrapMaster30.topaz becomes an issue: it forcibly loads a bunch of
hard-wired version numbers of MCZs for Metacello, Monticello and so
on, and surely those version numbers are totally wrong for our

The most common problem I have is that the image just ends up with
crucial methods and classmethods totally gone on classes that are
subscribed to SystemLoginNotification, causing login errors that trips
up topaz, stopstone, gemtools.

It seems that the culprit is #BootstrapApplicationLoadSpecs - it
seems it should list enough ConfigurationOf packages to reverse the
effect of upgradeSeasideImage that deleted all methods in
UserGlobals. But we're way past using ConfigurationOfGLASS now, we're
using BaselineOfGLASS1 as published on github.

So I tried something like

  at: #BootstrapApplicationLoadSpecs
  put: {
    { 'BaselineOfGLASS1'. 'baseline'. #('default').

but that doesn't work, since its Gofer doing the loading and Gofer
does not seem to be able to resolve BaselineOfGLASS1 from a filetree

Should I just hack at upgradeSeasideImage.topaz to load
BaselineOfGLASS1? Has anyone else ever been in a similar situation?

More information about the Glass mailing list