Loading Seaside results in a number of Grease related code issues

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Loading Seaside results in a number of Grease related code issues

timrowledge
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.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
The next generation of computers will have a "Warranty Expired" interrupt.



Reply | Threaded
Open this post in threaded view
|

Re: Loading Seaside results in a number of Grease related code issues

David T. Lewis
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.

Dave


Reply | Threaded
Open this post in threaded view
|

Re: Loading Seaside results in a number of Grease related code issues

Tim Johnson-2

> On May 28, 2020, at 1:08 PM, David T. Lewis <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: Loading Seaside results in a number of Grease related code issues

Jakob Reschke
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 <[hidden email]>:

>
>
> > On May 28, 2020, at 1:08 PM, David T. Lewis <[hidden email]> 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
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Loading Seaside results in a number of Grease related code issues

Tim Johnson-2
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:

https://github.com/dalehenrich/filetree/issues/228

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,
Tim


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 <[hidden email]
> >:
>>
>>
>>> On May 28, 2020, at 1:08 PM, David T. Lewis <[hidden email]>  
>>> 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
>>
>>
>
>
>