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

Tim Johnson digit at sonic.net
Fri Jul 31 16:47:16 UTC 2020

Hi Jakob,

Thanks for the help, pointers, and ideas.

I was having trouble last night using Squeak's native Monticello  
tooling to access the FileTree/Cypress repo.  That is why I tried Git  
Browser (and I will continue to experiment with it).  This morning,  
with some fresh coffee, a fresh image, and a fresh "Installer  
ensureRecentMetacello", those troubles have gone away.

I have filed ... erm, not really a bug or issue, but inquiry, hoping  
Dale and/or someone else might be generous enough with their time to  
help direct/guide w/r/t to timeStamps and diffs:


I'd also like to learn how to load packages (programmatically) via  
Metacello from a local repo or working copy on disk, rather than  
cloning fresh from an URL-based GitHub repo.  Not sure where to start,  
there, or if you have any pointers.

I will come up with a (hopefully) replicable test case for the  
extension methods and file a bug with Squot as you suggest.

Thanks again,

On Jul 31, 2020, at 7:24 AM, Jakob Reschke wrote:

> Hi Tim,
> The repository has method metadata disabled:
> https://github.com/SeasideSt/Grease/blob/master/repository/.filetree
> 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
> dialog.
> 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.
> https://github.com/hpi-swa/Squot/issues/
> Kind regards,
> Jakob
> 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