[squeak-dev] Loading Seaside results in a number of Grease related code issues
digit at sonic.net
Fri Jul 31 16:47:16 UTC 2020
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.
On Jul 31, 2020, at 7:24 AM, Jakob Reschke wrote:
> 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>
>>> 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
>>> need to take more responsibility for. If anyone is looking for a
>>> 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
>> 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
>> I'm having three or four issues.
>> 1) if I load Grease into my image using , then I also clone the
>> Grease repo from  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 , 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 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
>> 3) load Grease via 
>> 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.
>>  Metacello new
>> baseline: 'Grease';
>> githubUser: 'SeasideSt' project: 'Grease' commitish: 'master'
>> path: 'repository';
More information about the Squeak-dev