[squeak-dev] Loading Seaside results in a number of Grease related code issues

Tim Johnson digit at sonic.net
Fri Jul 31 05:59:29 UTC 2020

> On May 28, 2020, at 1:08 PM, David T. Lewis <lewis at mail.msen.com> wrote:
> On Thu, May 28, 2020 at 01:01:55PM -0700, tim Rowledge wrote:
>> Whilst checking things after installing Seaside and Cryptography I noticed that there are a couple of dangling Undeclareds that lead into some faulty loaded code.
>> 'home' and 'startpc' are referenced in BlockContext>>#tempVarRefs. This is not too much of a problem since there are no senders but since there are also a bunch of methods loaded into the no longer used Context/BlockContext/MethodContext classes it might be an indicator of some updating needed in the Grease package, specifically *grease-squeak5-core. I don't know who looks after this, so if anyone does, please pass it on.
> The grease package is one of those things that we, the Squeak community,
> need to take more responsibility for. If anyone is looking for a worthwhile
> Sunday Squeaker project, this would be a good one.

I agree.  So here I am trying to do this, and running into obstacles.  :( 

The Grease repo is in Cypress format, which I have no experience with.  I have some experience with FileTree, but Cypress seems different.

So, I thought I would try out Squot and the Git Browser, because they support Cypress.

But now I'm having trouble with the Git Browser, and I don't know if this list is the place to talk about it.  Am I doing something wrong?  Or are these bugs I should file issues at Squot's GitHub repo?

I'm having three or four issues.

1) if I load Grease into my image using [1], then I also clone the Grease repo from [2] in Git Browser as a new project, then the timestamps on the methods are different between what Squot is looking at and what is in the image.  So I don't get a clean record of what has actually changed in my image.  Do I need to load Grease from what Squot knows/handles, instead of [1], so I don't get different timestamps in methods?  If so, how?  (Actually this begs the question, why are method timestamps being changed to the moment the method is being loaded into my image, instead of retaining their original timestamp?  Is this a Cypress thing?)  I don't remember this being an issue with Monticello;  in MC, method timestamps come in with the method, and don't change to the time the method was loaded, right?

	obsoletion timeStamp = ' 7/30/2020 22:03:37'
	modification timeStamp = ' 7/30/2020 22:01:38'

2) When I delete the *extension method category "*grease-squeak5-core" from BlockContext and create my commit, 
carefully Cmd-X'ing the methods that only have a different timestamp, there becomes two issues with my actual commit:
2a) All the *Extensions methods are still part of my commit, even though I Cmd-X'd all but one of them (do I recall right that this this a Monticello bug/feature?  It's all *Extensions or none?)
2b) When I menu-click my commit in Git Browser and "compare with parent commit," my commit now shows the method timestamps as being different in a different way:  the /time/ is the same, but now one method has a leading space in its string and one doesn't:

	obsoletion timeStamp = ' 7/30/2020 20:27:03'
	modification timeStamp = '7/30/2020 20:27:03'

3) If I try to checkout a new branch off the top commit, or off a package, I eventually end up with a Warning dialog that contains this:

This package depends on the following classes:
You must resolve these dependencies before you will be able to load these definitions: 

I can click Proceed a dozen times, but eventually I get to a DNU.

So, I don't really know what to do.  What am I doing wrong?  Should I file a bug report or two with Squot?  Learn Cypress?  Hmm.

A basic way to set up a test case is (not sure if order matters?):

1) Fresh 5.3 image, load Git Browser
2) In Git Browser, tell it not to "add my first project now";  I will menu-click, clone project, enter https://github.com/SeasideSt/Grease.git, create a new folder, watch in awe as it gets checked out (this is cool!)
3) load Grease via [1]
4) Try something like: 
4a) menu-click 'repository/Grease-Squeak5-Core.package' and then Checkout, and inspect the diffs to see the different timestamps
4b) "Create new branch at this commit" (I just tried this, got "Key not found: repository/Grease-Core.package") 
4c) remove (Cmd-X) BlockContext's "*grease-squeak5-core" method category, then (wow, I just did this, and it actually resulted in a EXC_CRASH in copyToOldSpacebytesformat + 90 (gcc3x-cointerp.c:40614), old VM 5.0.201811061137)

Hmm.  I'm no stranger to Git, nor a stranger to Monticello, but this is all new.


[1] Metacello new
    baseline: 'Grease';
    githubUser: 'SeasideSt' project: 'Grease' commitish: 'master' path: 'repository';

More information about the Squeak-dev mailing list