[squeak-dev] [Seaside] About loading Seaside into Squeak6.0a-17082 ....

Tobias Pape Das.Linux at gmx.de
Wed Apr 26 21:46:29 UTC 2017


Hi 
> On 26.04.2017, at 23:38, Dale Henrichs <dale.henrichs at gemtalksystems.com> wrote:
> 
> 
> 
> On 04/26/2017 02:26 PM, Tobias Pape wrote:
>> Hi
>>> On 26.04.2017, at 22:31, Dale Henrichs <dale.henrichs at gemtalksystems.com> wrote:
>>> 
>>> 
>>> On 04/26/2017 11:08 AM, Tobias Pape wrote:
>>>> Hi,
>>>> (cc squeak-dev)
>>>> 
>>>>> On 26.04.2017, at 19:52, Esteban A. Maringolo <emaringolo at gmail.com> wrote:
>>>>> 
>>>>> You should have a GRSqueakPlatform as subclass, and then evaluate
>>>>> "GRSqueakPlatform select", this will create and assign the new
>>>>> instance as GRPlatform singleton.
>>>>> 
>>>> Sadly, in his image won't be a GRSqueakPlatform.
>>>> Why? because (SystemVersion current version asString) returns 'Squeak6.0alpha', but
>>>> MetacelloSqueakPlatform>>defaultPlatformAttributes does not know about that.
>>>> And ConfigurationOfGrease>>baseline117: only has an idea of #'squeak4.x' and #'squeak5.x'.
>>>> 
>>>> I've no good idea how to fix that yet.
>>> submit a pull request for the Metacello project on github[1] and update the method MetacelloSqueakPlatform>>defaultPlatformAttributes[2] with your new Squeak versions added to the list ...
>>> 
>>> If you want to avoid having to update Metacello for each new Squeak release, add something along the lines of what pharo has been doing for a few years[3] ... then you only need to remember to update that method ... but at least it will be part of the base image ...
>>> 
>>> For GemStone I've included code to generate the default attributes for GemStone based on the GemStone version number ...
>>> 
>> Hey Dale, those are good ideas and I've thought about that, too.
>> However, that does not help on its own. because even if this brought us, eg, #'squeak6.x' or #'squeak6alpha', Grease would pick none of them.
> Hey Tobias, when a new version of Squeak is nearing release, you presumably need to validate that Seaside and all of it's dependent projects load/run in the new version, at which time you'd update the configuration/baseline as part of the validation ... and also run tests, etc.

True. The case here is that someone took a Trunk mid-cycle.
But yes, generally we should do that.

>  Both Grease[1] and Seaside[2] are up on github and use smalltalkCI and travis-ci to run tests, so for that, you could fork Grease and Seaside, edit the .travis.yml file to include the new squeak version; edit the baseline to include the new Squeak version (all of which could be done from your web browser) and when you commit, travis builds are kicked off automatically -- if the tests pass on travis-ci, you issue a pull request for Grease and Seaside and Bob's you uncle ...

1. ask
2. dale answers
3. ???
4. profit!

\o/ 
no seriously, that process is fine.
I was bikeshedding implementation details...

long story short: there's no seaside at squeaktrunk at the moment without at least a tiny bit of hand-tuing.

Hannes, since I have not much time atm for Seaside, can you try out a bit yourself?
You should get things loaded at least if you make `MetacelloSqueakPlatform>>defaultPlatformAttributes` return #'squeak5.0'

best regards
	-Tobias

> 
> [1] https://github.com/SeasideSt/Grease/
> [2] https://github.com/SeasideSt/Seaside
>> 
>> So, this could work:
>> 1. have an extraction like gemstone below, but
>> 2. ALSO identify as #'squeakTrunk' if version string ends in 'alpha', and
>> 3. Change grease baseline 117 (or push number here?) the specific line from #'squeak5.x' to
>>   a. either #( 'squeak5.x' 'squeak6.x')
>>   b. or #( 'squeak5.x' 'squeakTrunk')
>>   c. or have #'squeak6.x' separate.
>> 
>> @squeak-dev: hoping you are ok with (1), are you ok with (2)?
>> @seaside-dev: would you rather like (3a), (3b), or (3c)?
>> 
>> Best regards
>> 	-Tobias
>>   
>> 
>>> Dale
>>> 
>>> [1] https://github.com/dalehenrich/metacello-work
>>> [2] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metacello-Platform.squeak.package/MetacelloSqueakPlatform.class/instance/defaultPlatformAttributes.st#L11-L19
>>> [3] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metacello-PharoCommonPlatform.package/MetacelloPharoCommonPlatform.class/instance/defaultPlatformAttributes.st#L4-L5
>>> [4] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metacello-Platform.gemstone.package/MetacelloGemStonePlatform.class/instance/extractAtrributesFrom..st
>>>> Any takers?
>>>> 
>>>> best regards
>>>> 	-Tobias
>>>> 
>>>> 
>>>>> Regards.
>>>>> Esteban A. Maringolo
>>>>> 
>>>>> 
>>>>> 2017-04-26 14:27 GMT-03:00 H. Hirzel <hannes.hirzel at gmail.com>:
>>>>>> The issue is that
>>>>>> 
>>>>>>     GRPlatform current
>>>>>> 
>>>>>> 
>>>>>> returns nil.
>>>>>> 
>>>>>> On 4/26/17, H. Hirzel <hannes.hirzel at gmail.com> wrote:
>>>>>>> After replacing
>>>>>>> 
>>>>>>>      #greaseInteger
>>>>>>> 
>>>>>>> with
>>>>>>> 
>>>>>>>     #asInteger
>>>>>>> 
>>>>>>> I get an error in
>>>>>>> 
>>>>>>> 
>>>>>>> WAKeyGenerator>>initialize
>>>>>>> 
>>>>>>> initialize
>>>>>>>      super initialize.
>>>>>>>      self generator: GRPlatform current newRandom.
>>>>>>>      self space:
>>>>>>> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> So there are issues with the Grease compatibility layer.
>>>>>>> 
>>>>>>> Maybe the configuration map loads the wrong version?
>>>>>>> 
>>>>>>> 
>>>>>>> Suggestions?
>>>>>>> 
>>>>>>> 
>>>>>>> On 4/26/17, H. Hirzel <hannes.hirzel at gmail.com> wrote:
>>>>>>>> Hello
>>>>>>>> 
>>>>>>>> Loading Seaside into Squeak6.0a-17082 .... gives the following error
>>>>>>>> 
>>>>>>>> Character(Object)>>doesNotUnderstand: #greaseInteger
>>>>>>>> 
>>>>>>>> Details [1]
>>>>>>>> 
>>>>>>>> Is there a particular Squeak6.0a version where Seaside loads fine?
>>>>>>>> http://files.squeak.org/6.0alpha/
>>>>>>>> 
>>>>>>>> Any suggestions how a fix to Grease should look like?
>>>>>>>> 
>>>>>>>> Regards
>>>>>>>> --Hannes
>>>>>>>> 
>>>>>>>> ---------------------------------------------------------------------------------------------
>>>>>>>> Character(Object)>>doesNotUnderstand: #greaseInteger
>>>>>>>>        Receiver: Character null
>>>>>>>>        Arguments and temporary variables:
>>>>>>>>                aMessage:       greaseInteger
>>>>>>>>                exception:      MessageNotUnderstood:
>>>>>>>> Character>>greaseInteger
>>>>>>>>                resumeValue:    nil
>>>>>>>>        Receiver's instance variables:
>>>>>>>> Character null
>>>>>>>> 
>>>>>>>> WAUrlEncoder class>>encode:on:
>>>>>>>>        Receiver: WAUrlEncoder
>>>>>>>>        Arguments and temporary variables:
>>>>>>>>                aCharacter:     Character null
>>>>>>>>                aStream:        a WriteStream
>>>>>>>>                printer:        a GRNumberPrinter
>>>>>>>>        Receiver's instance variables:
>>>>>>>>                superclass:     WATableBasedEncoder
>>>>>>>>                methodDict:     a MethodDictionary()
>>>>>>>>                format:         65538
>>>>>>>>                instanceVariables:      nil
>>>>>>>>                organization:   ('as yet unclassified')
>>>>>>>> 
>>>>>>>>                subclasses:     nil
>>>>>>>>                name:   #WAUrlEncoder
>>>>>>>>                classPool:      nil
>>>>>>>>                sharedPools:    nil
>>>>>>>>                environment:    Smalltalk
>>>>>>>>                category:       #'Seaside-Core-Document'
>>>>>>>>                table:  #(nil nil nil nil nil nil nil nil nil nil nil
>>>>>>>> nil nil nil
>>>>>>>> nil nil nil ni...etc...
>>>>>>>> 
>>>>>>>> WAUrlEncoder class>>initializeTable
>>>>>>>>        Receiver: WAUrlEncoder
>>>>>>>>        Arguments and temporary variables:
>>>>>>>>                stream:         a WriteStream
>>>>>>>>                characterLimit:         255
>>>>>>>>                index:  0
>>>>>>>>                character:      Character null
>>>>>>>>                value:  nil
>>>>>>>>        Receiver's instance variables:
>>>>>>>>                superclass:     WATableBasedEncoder
>>>>>>>>                methodDict:     a MethodDictionary()
>>>>>>>>                format:         65538
>>>>>>>>                instanceVariables:      nil
>>>>>>>>                organization:   ('as yet unclassified')
>>>>>>>> 
>>>>>>>>                subclasses:     nil
>>>>>>>>                name:   #WAUrlEncoder
>>>>>>>>                classPool:      nil
>>>>>>>>                sharedPools:    nil
>>>>>>>>                environment:    Smalltalk
>>>>>>>>                category:       #'Seaside-Core-Document'
>>>>>>>>                table:  #(nil nil nil nil nil nil nil nil nil nil nil
>>>>>>>> nil nil nil
>>>>>>>> nil nil nil ni...etc...
>>>>>>>> 
>>>>>> _______________________________________________
>>>>>> seaside mailing list
>>>>>> seaside at lists.squeakfoundation.org
>>>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>>>> _______________________________________________
>>>>> seaside mailing list
>>>>> seaside at lists.squeakfoundation.org
>>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>>> _______________________________________________
>>>> seaside mailing list
>>>> seaside at lists.squeakfoundation.org
>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>> _______________________________________________
>>> seaside mailing list
>>> seaside at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> 
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside



More information about the Squeak-dev mailing list