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

Jakob Reschke forums.jakob at resfarm.de
Fri Jul 31 14:24:41 UTC 2020

Hi Tim,

The repository has method metadata disabled:

Hence there is no timestamp information with the source and the Squeak
implementation currently seems to fall back to use the load timestamp.
Under these circumstances I think it would also be of no advantage to
clone and load with the Git Browser directly instead of first loading
via Metacello (which at least also pulls the dependencies, if any).

The Git Browser uses Monticello under the hood to read and write
packages, so the hunt for the variable amount of spaces needs to be
sought there, or rather in the FileTree and Cypress classes.

Cypress is slightly different from FileTree, but so far I did not have
problems treating them basically like the same thing. If I am not
mistaken, first Dale created FileTree, later at some conference or so
several people decided on a common format for inter-Smalltalk exchange
based on FileTree and called the result Cypress. Today we have Tonel
in the game, so I guess not many people will call for Cypress anymore.

TBehavior is a Pharo trait. Pharo refactored some parts of the basic
class library to use traits. My guess is that there are packages in
the repository that are not supposed to be loaded in Squeak (not a
surprise for something like Grease), but Squot does not know about
that and tries to load all the packages. You would currently have to
exclude the additions of the non-Squeak packages in the load/merge

For the issue that you excluded the extension methods in the commit
dialog (with cmd-x), but some of them were committed nevertheless,
please file a bug report in for Squot on GitHub with the details and a
reference to the published commit (if it is public). Even if this
should be a peculiarity of the underlying Monticello, it is at least
unexpected to me.


Kind regards,

Am Fr., 31. Juli 2020 um 07:59 Uhr schrieb Tim Johnson <digit at sonic.net>:
> > 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?
> MCModification
>         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:
> MCModification
>         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:
>   TBehavior
> You must resolve these dependencies before you will be able to load these definitions:
>   TBehavior>>fullName
> 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.
> Thanks,
> Tim
> [1] Metacello new
>     baseline: 'Grease';
>     githubUser: 'SeasideSt' project: 'Grease' commitish: 'master' path: 'repository';
>     load

More information about the Squeak-dev mailing list