<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">Hey Dale,<div><br></div><div>Good point about using the `Metacello record` to figure out an unload order. This helps.<br><div><div><br></div><div>I originally thought it would have been the easiest strategy to unload the old version and load the new version, just like in a fresh load.</div><div>However, I did encounter a couple of other issues with subclasses and persistent instances, making that strategy more complicated.</div><div>It also takes a considerable amount of time unloading the packages.</div><div><br></div><div>So, I am now first selectively removing the packages I don’t want Metacello to reload, or which no longer exist in the latest version.</div><div>Then I load the latest version. This seems to work easier than I thought. It just requires me to look at the differences and find out where I missed some. Still doing that now.</div><div><br></div><div>Something that surprised me is that Metacello will reload a package that is in the image, even though a clean load of the same baseline will not load that same package.</div><div>For example, I have Seaside-Swazoo and friends loaded in our existing repositories but I no longer load those packages when using the latest Seaside version. </div><div>Loading into a fresh repository does not load the Swazoo packages but loading in an existing repository does. So, I now remove them before loading.</div><div><br></div><div>Johan</div><div><div><div><br><blockquote type="cite"><div>On 14 Jun 2023, at 19:00, Dale Henrichs <dale.henrichs@gemtalksystems.com> wrote:</div><br class="Apple-interchange-newline"><div><div dir="ltr"><div>I never added the unload method to Metacello, so I've never tried to seriously support unload (until Rowan) ... and relied upon the reload working ...</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>I suppose you could derive the unload order by reversing the package load order for the project <br></div> | packageNames |<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">  packageNames := {}.<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">  (Metacello image project: 'Ston') record<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">    packageDirectivesDo: [ :each | packageNames add: each spec name ].<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">  packageNames<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">  anArray( 'STON-Core', 'STON-GemStone-Core', 'STON-UTF8-Core')</blockquote><div><br></div><div>The script might get more complicated with required projects ... let me know if you need more help unwinding the load directive ... <br></div><div><br></div><div>Dale</div></div><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 14, 2023 at 5:38 AM Johan Brichau via Glass <<a href="mailto:glass@lists.gemtalksystems.com" target="_blank">glass@lists.gemtalksystems.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I am preparing an upgrade of the Seaside version in existing GemStone repositories where it is more practical to unload the current (old) Seaside version and load the current one afterwards rather than loading the new one over the old one.<br>
However, the code snippet below I currently came up with is terribly slow and does not work because not everything got remove. Probably because the unload requires a certain order… <br>
<br>
So, has anyone done this in a GemStone Glass/GsDevKit setup? What is the best way to do this?<br>
<br>
Johan<br>
<br>
| packages gofer |<br>
packages := (MetacelloProjectRegistration registrationForClassNamed: 'ConfigurationOfSeaside3' ifAbsent: [ nil ])<br>
 configurationProjectSpec loadPackageList.<br>
<br>
packages do:[:p |<br>
        Transcript show: 'Unload ', p; cr.<br>
        gofer := Gofer new package: p; unload].<br>
<br>
<br>
_______________________________________________<br>
Glass mailing list<br>
<a href="mailto:Glass@lists.gemtalksystems.com" target="_blank">Glass@lists.gemtalksystems.com</a><br>
<a href="https://lists.gemtalksystems.com/mailman/listinfo/glass" rel="noreferrer" target="_blank">https://lists.gemtalksystems.com/mailman/listinfo/glass</a><br>
</blockquote></div>
</div></blockquote></div><br></div></div></div></div></body></html>