Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

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

Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

alistairgrant
Hi All,

I'm attempting to load Roassal2 in to Pharo7 and am getting:

UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition


It can be reproduced in a clean Pharo7 image, e.g.
Pharo7.0-32bit-d1b0e3e.image (downloaded 16 Oct 2017), and executing:

Gofer it
    smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
    configurationOf: 'Roassal2';
    loadStable.


OS: Ubuntu 16.04.

I last rebuilt my image on 3 October without any problems.

Any suggestions?  I suspect the combination of Monticello and Traits
will take me quite a while to figure out.

Thanks,
Alistair



Stack Trace:

UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition
MCClassDefinition>>traitCompositionCompiled
[ :builder |
builder
        superclass: superClass;
        name: name;
        layoutClass: (ObjectLayout layoutForType: type);
        slots: self instanceVariables;
        sharedVariables: self classVariables;
        sharedPools: self sharedPoolsString;
        classSlots: self classInstanceVariables;
        traitComposition: self traitCompositionCompiled;
        classTraitComposition: self classTraitCompositionCompiled;
        comment: comment stamp: commentStamp;
        category: category;
        environment: superClass environment ] in [ PharoClassInstaller
        make: [ :builder |
                builder
                        superclass: superClass;
                        name: name;
                        layoutClass: (ObjectLayout layoutForType: type);
                        slots: self instanceVariables;
                        sharedVariables: self classVariables;
                        sharedPools: self sharedPoolsString;
                        classSlots: self classInstanceVariables;
                        traitComposition: self traitCompositionCompiled;
                        classTraitComposition: self classTraitCompositionCompiled;
                        comment: comment stamp: commentStamp;
                        category: category;
                        environment: superClass environment ] ] in MCClassDefinition>>createClass in Block: [ :builder | ...
PharoClassInstaller class(AbstractClassInstaller class)>>make:
[ PharoClassInstaller
        make: [ :builder |
                builder
                        superclass: superClass;
                        name: name;
                        layoutClass: (ObjectLayout layoutForType: type);
                        slots: self instanceVariables;
                        sharedVariables: self classVariables;
                        sharedPools: self sharedPoolsString;
                        classSlots: self classInstanceVariables;
                        traitComposition: self traitCompositionCompiled;
                        classTraitComposition: self classTraitCompositionCompiled;
                        comment: comment stamp: commentStamp;
                        category: category;
                        environment: superClass environment ] ] in MCClassDefinition>>createClass in Block: [ PharoClassInstaller...
BlockClosure>>on:do:
MCClassDefinition>>createClass
MCClassDefinition>>load
MCClassDefinition(MCDefinition)>>addMethodAdditionTo:
[ :each | each addMethodAdditionTo: methodAdditions ] in MCPackageLoader>>basicLoadDefinitions in Block: [ :each | each addMethodAdditionTo: methodAddition...etc...
[ :each |
| newLabel |
"Special handling for first and last element"
(count = 0
        or: [ count + 1 = size
                        or: [ (Time millisecondsSince: lastUpdate) >= msecs ] ])
        ifTrue: [ bar current: count.
                oldLabel = (newLabel := (labelBlock cull: each) ifNil: [ oldLabel ])
                        ifFalse: [ bar label: newLabel.
                                oldLabel := newLabel ].
                lastUpdate := Time millisecondClockValue ].
aBlock value: each.
count := count + 1 ] in [ :bar |
labelBlock := aStringOrBlock isString
        ifTrue: [ bar label: aStringOrBlock.
                [ :dummyItem | aStringOrBlock ] ]
        ifFalse: [ aStringOrBlock ].
self
        do: [ :each |
                | newLabel |
                "Special handling for first and last element"
                (count = 0
                        or: [ count + 1 = size
                                        or: [ (Time millisecondsSince: lastUpdate) >= msecs ] ])
                        ifTrue: [ bar current: count.
                                oldLabel
                                        = (newLabel := (labelBlock cull: each) ifNil: [ oldLabel ])
                                        ifFalse: [ bar label: newLabel.
                                                oldLabel := newLabel ].
                                lastUpdate := Time millisecondClockValue ].
                aBlock value: each.
                count := count + 1 ] ] in OrderedCollection(Collection)>>do:displayingProgress:every: in Block: [ :each | ...
OrderedCollection>>do:
[ :bar |
labelBlock := aStringOrBlock isString
        ifTrue: [ bar label: aStringOrBlock.
                [ :dummyItem | aStringOrBlock ] ]
        ifFalse: [ aStringOrBlock ].
self
        do: [ :each |
                | newLabel |
                "Special handling for first and last element"
                (count = 0
                        or: [ count + 1 = size
                                        or: [ (Time millisecondsSince: lastUpdate) >= msecs ] ])
                        ifTrue: [ bar current: count.
                                oldLabel
                                        = (newLabel := (labelBlock cull: each) ifNil: [ oldLabel ])
                                        ifFalse: [ bar label: newLabel.
                                                oldLabel := newLabel ].
                                lastUpdate := Time millisecondClockValue ].
                aBlock value: each.
                count := count + 1 ] ] in OrderedCollection(Collection)>>do:displayingProgress:every: in Block: [ :bar | ...
BlockClosure>>cull:
[ ^ block cull: self ] in [ self prepareForRunning.
CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ ^ block cull: self ]
[ activeProcess psValueAt: index put: anObject.
aBlock value ] in CurrentJob(DynamicVariable)>>value:during: in Block: [ activeProcess psValueAt: index put: anObject....
BlockClosure>>ensure:
CurrentJob(DynamicVariable)>>value:during:
CurrentJob class(DynamicVariable class)>>value:during:
[ self prepareForRunning.
CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ self prepareForRunning....
BlockClosure>>ensure:
Job>>run
MorphicUIManager(UIManager)>>displayProgress:from:to:during:
ByteString(String)>>displayProgressFrom:to:during:
OrderedCollection(Collection)>>do:displayingProgress:every:
OrderedCollection(Collection)>>do:displayingProgress:
MCPackageLoader>>basicLoadDefinitions
[ self basicLoadDefinitions ] in MCPackageLoader>>basicLoad in Block: [ self basicLoadDefinitions ]
[ aBlock value ] in SourceFileArray>>deferFlushDuring: in Block: [ aBlock value ]
BlockClosure>>ensure:

--

Reply | Threaded
Open this post in threaded view
|

Re: Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

alistairgrant
On Tue, Oct 17, 2017 at 06:28:05AM +0000, Alistair Grant wrote:

> Hi All,
>
> I'm attempting to load Roassal2 in to Pharo7 and am getting:
>
> UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition
>
>
> It can be reproduced in a clean Pharo7 image, e.g.
> Pharo7.0-32bit-d1b0e3e.image (downloaded 16 Oct 2017), and executing:
>
> Gofer it
>     smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
>     configurationOf: 'Roassal2';
>     loadStable.
>
>
> OS: Ubuntu 16.04.
>
> I last rebuilt my image on 3 October without any problems.
>
> Any suggestions?  I suspect the combination of Monticello and Traits
> will take me quite a while to figure out.

This could simply be an ordering issue, i.e. maybe Monticello /
Metacello needs to ensure that the traits are loaded before the classes.

Presumably at some point during the load there is a list of classes that
are going to be loaded.  If someone can point me to the correct location
it will save some time tracking it down.


Thanks!
Alistair



> Stack Trace:
>
> UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition
> MCClassDefinition>>traitCompositionCompiled
> [ :builder |
> builder
> superclass: superClass;
> name: name;
> layoutClass: (ObjectLayout layoutForType: type);
> slots: self instanceVariables;
> sharedVariables: self classVariables;
> sharedPools: self sharedPoolsString;
> classSlots: self classInstanceVariables;
> traitComposition: self traitCompositionCompiled;
> classTraitComposition: self classTraitCompositionCompiled;
> comment: comment stamp: commentStamp;
> category: category;
> environment: superClass environment ] in [ PharoClassInstaller
> make: [ :builder |
> builder
> superclass: superClass;
> name: name;
> layoutClass: (ObjectLayout layoutForType: type);
> slots: self instanceVariables;
> sharedVariables: self classVariables;
> sharedPools: self sharedPoolsString;
> classSlots: self classInstanceVariables;
> traitComposition: self traitCompositionCompiled;
> classTraitComposition: self classTraitCompositionCompiled;
> comment: comment stamp: commentStamp;
> category: category;
> environment: superClass environment ] ] in MCClassDefinition>>createClass in Block: [ :builder | ...
> PharoClassInstaller class(AbstractClassInstaller class)>>make:
> [ PharoClassInstaller
> make: [ :builder |
> builder
> superclass: superClass;
> name: name;
> layoutClass: (ObjectLayout layoutForType: type);
> slots: self instanceVariables;
> sharedVariables: self classVariables;
> sharedPools: self sharedPoolsString;
> classSlots: self classInstanceVariables;
> traitComposition: self traitCompositionCompiled;
> classTraitComposition: self classTraitCompositionCompiled;
> comment: comment stamp: commentStamp;
> category: category;
> environment: superClass environment ] ] in MCClassDefinition>>createClass in Block: [ PharoClassInstaller...
> BlockClosure>>on:do:
> MCClassDefinition>>createClass
> MCClassDefinition>>load
> MCClassDefinition(MCDefinition)>>addMethodAdditionTo:
> [ :each | each addMethodAdditionTo: methodAdditions ] in MCPackageLoader>>basicLoadDefinitions in Block: [ :each | each addMethodAdditionTo: methodAddition...etc...
> [ :each |
> | newLabel |
> "Special handling for first and last element"
> (count = 0
> or: [ count + 1 = size
> or: [ (Time millisecondsSince: lastUpdate) >= msecs ] ])
> ifTrue: [ bar current: count.
> oldLabel = (newLabel := (labelBlock cull: each) ifNil: [ oldLabel ])
> ifFalse: [ bar label: newLabel.
> oldLabel := newLabel ].
> lastUpdate := Time millisecondClockValue ].
> aBlock value: each.
> count := count + 1 ] in [ :bar |
> labelBlock := aStringOrBlock isString
> ifTrue: [ bar label: aStringOrBlock.
> [ :dummyItem | aStringOrBlock ] ]
> ifFalse: [ aStringOrBlock ].
> self
> do: [ :each |
> | newLabel |
> "Special handling for first and last element"
> (count = 0
> or: [ count + 1 = size
> or: [ (Time millisecondsSince: lastUpdate) >= msecs ] ])
> ifTrue: [ bar current: count.
> oldLabel
> = (newLabel := (labelBlock cull: each) ifNil: [ oldLabel ])
> ifFalse: [ bar label: newLabel.
> oldLabel := newLabel ].
> lastUpdate := Time millisecondClockValue ].
> aBlock value: each.
> count := count + 1 ] ] in OrderedCollection(Collection)>>do:displayingProgress:every: in Block: [ :each | ...
> OrderedCollection>>do:
> [ :bar |
> labelBlock := aStringOrBlock isString
> ifTrue: [ bar label: aStringOrBlock.
> [ :dummyItem | aStringOrBlock ] ]
> ifFalse: [ aStringOrBlock ].
> self
> do: [ :each |
> | newLabel |
> "Special handling for first and last element"
> (count = 0
> or: [ count + 1 = size
> or: [ (Time millisecondsSince: lastUpdate) >= msecs ] ])
> ifTrue: [ bar current: count.
> oldLabel
> = (newLabel := (labelBlock cull: each) ifNil: [ oldLabel ])
> ifFalse: [ bar label: newLabel.
> oldLabel := newLabel ].
> lastUpdate := Time millisecondClockValue ].
> aBlock value: each.
> count := count + 1 ] ] in OrderedCollection(Collection)>>do:displayingProgress:every: in Block: [ :bar | ...
> BlockClosure>>cull:
> [ ^ block cull: self ] in [ self prepareForRunning.
> CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ ^ block cull: self ]
> [ activeProcess psValueAt: index put: anObject.
> aBlock value ] in CurrentJob(DynamicVariable)>>value:during: in Block: [ activeProcess psValueAt: index put: anObject....
> BlockClosure>>ensure:
> CurrentJob(DynamicVariable)>>value:during:
> CurrentJob class(DynamicVariable class)>>value:during:
> [ self prepareForRunning.
> CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ self prepareForRunning....
> BlockClosure>>ensure:
> Job>>run
> MorphicUIManager(UIManager)>>displayProgress:from:to:during:
> ByteString(String)>>displayProgressFrom:to:during:
> OrderedCollection(Collection)>>do:displayingProgress:every:
> OrderedCollection(Collection)>>do:displayingProgress:
> MCPackageLoader>>basicLoadDefinitions
> [ self basicLoadDefinitions ] in MCPackageLoader>>basicLoad in Block: [ self basicLoadDefinitions ]
> [ aBlock value ] in SourceFileArray>>deferFlushDuring: in Block: [ aBlock value ]
> BlockClosure>>ensure:
>
> --

Reply | Threaded
Open this post in threaded view
|

Re: Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

alistairgrant
On Tue, Oct 17, 2017 at 09:33:39AM +0000, Alistair Grant wrote:

> On Tue, Oct 17, 2017 at 06:28:05AM +0000, Alistair Grant wrote:
> > Hi All,
> >
> > I'm attempting to load Roassal2 in to Pharo7 and am getting:
> >
> > UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition
> >
> >
> > It can be reproduced in a clean Pharo7 image, e.g.
> > Pharo7.0-32bit-d1b0e3e.image (downloaded 16 Oct 2017), and executing:
> >
> > Gofer it
> >     smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
> >     configurationOf: 'Roassal2';
> >     loadStable.
> >
> >
> > OS: Ubuntu 16.04.
> >
> > I last rebuilt my image on 3 October without any problems.
> >
> > Any suggestions?  I suspect the combination of Monticello and Traits
> > will take me quite a while to figure out.
>
> This could simply be an ordering issue, i.e. maybe Monticello /
> Metacello needs to ensure that the traits are loaded before the classes.
>
> Presumably at some point during the load there is a list of classes that
> are going to be loaded.  If someone can point me to the correct location
> it will save some time tracking it down.

OK, it looks like Roassal has gone through quite a bit of development in
the last couple of months, and that TGTExampleIcon is simply missing
from the repository
(https://github.com/feenkcom/gtoolkit-examples/tree/master/src/GToolkit-Examples.package,
I hope) but is still referenced somewhere.

Using ConfigurationOfRoassal2-AlexandreBergel.111 (the version I loaded
on 3 Oct) loads successfully, while
ConfigurationOfRoassal2-AlexandreBergel.114 fails as described above.

Cheers,
Alistair


Reply | Threaded
Open this post in threaded view
|

Re: Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

Andrei Chis


On Tue, Oct 17, 2017 at 1:04 PM, Alistair Grant <[hidden email]> wrote:
On Tue, Oct 17, 2017 at 09:33:39AM +0000, Alistair Grant wrote:
> On Tue, Oct 17, 2017 at 06:28:05AM +0000, Alistair Grant wrote:
> > Hi All,
> >
> > I'm attempting to load Roassal2 in to Pharo7 and am getting:
> >
> > UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition
> >
> >
> > It can be reproduced in a clean Pharo7 image, e.g.
> > Pharo7.0-32bit-d1b0e3e.image (downloaded 16 Oct 2017), and executing:
> >
> > Gofer it
> >     smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
> >     configurationOf: 'Roassal2';
> >     loadStable.
> >
> >
> > OS: Ubuntu 16.04.
> >
> > I last rebuilt my image on 3 October without any problems.
> >
> > Any suggestions?  I suspect the combination of Monticello and Traits
> > will take me quite a while to figure out.
>
> This could simply be an ordering issue, i.e. maybe Monticello /
> Metacello needs to ensure that the traits are loaded before the classes.
>
> Presumably at some point during the load there is a list of classes that
> are going to be loaded.  If someone can point me to the correct location
> it will save some time tracking it down.

OK, it looks like Roassal has gone through quite a bit of development in
the last couple of months, and that TGTExampleIcon is simply missing
from the repository
(https://github.com/feenkcom/gtoolkit-examples/tree/master/src/GToolkit-Examples.package,
I hope) but is still referenced somewhere.

Using ConfigurationOfRoassal2-AlexandreBergel.111 (the version I loaded
on 3 Oct) loads successfully, while
ConfigurationOfRoassal2-AlexandreBergel.114 fails as described above.

I added for now the trait back. Can you check that the loading works?

But better would be to release a new stable version of roassal that links with the new version of gtexamples, or update the current version of roassal to load the gtexample version before the change.

@Alexandre I can make a new stable version with the current version of roassal + gt examples

Cheers,
Andrei

 

Cheers,
Alistair



Reply | Threaded
Open this post in threaded view
|

Re: Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

alistairgrant
Hi Andrei,

On Tue, Oct 17, 2017 at 01:58:22PM +0200, Andrei Chis wrote:

>
>
> On Tue, Oct 17, 2017 at 1:04 PM, Alistair Grant <[hidden email]> wrote:
>
>     On Tue, Oct 17, 2017 at 09:33:39AM +0000, Alistair Grant wrote:
>     > On Tue, Oct 17, 2017 at 06:28:05AM +0000, Alistair Grant wrote:
>     > > Hi All,
>     > >
>     > > I'm attempting to load Roassal2 in to Pharo7 and am getting:
>     > >
>     > > UndefinedObject(Object)>>doesNotUnderstand: #asTraitComposition
>     > >
>     > >
>     > > It can be reproduced in a clean Pharo7 image, e.g.
>     > > Pharo7.0-32bit-d1b0e3e.image (downloaded 16 Oct 2017), and executing:
>     > >
>     > > Gofer it
>     > >     smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
>     > >     configurationOf: 'Roassal2';
>     > >     loadStable.
>     > >
>     > >
>     > > OS: Ubuntu 16.04.
>     > >
>     > > I last rebuilt my image on 3 October without any problems.
>     > >
>     > > Any suggestions?  I suspect the combination of Monticello and Traits
>     > > will take me quite a while to figure out.
>     >
>     > This could simply be an ordering issue, i.e. maybe Monticello /
>     > Metacello needs to ensure that the traits are loaded before the classes.
>     >
>     > Presumably at some point during the load there is a list of classes that
>     > are going to be loaded.  If someone can point me to the correct location
>     > it will save some time tracking it down.
>
>     OK, it looks like Roassal has gone through quite a bit of development in
>     the last couple of months, and that TGTExampleIcon is simply missing
>     from the repository
>     (https://github.com/feenkcom/gtoolkit-examples/tree/master/src/
>     GToolkit-Examples.package,
>     I hope) but is still referenced somewhere.
>
>     Using ConfigurationOfRoassal2-AlexandreBergel.111 (the version I loaded
>     on 3 Oct) loads successfully, while
>     ConfigurationOfRoassal2-AlexandreBergel.114 fails as described above.
>
>
> I added for now the trait back. Can you check that the loading works?
>
> But better would be to release a new stable version of roassal that links with
> the new version of gtexamples, or update the current version of roassal to load
> the gtexample version before the change.
>
> @Alexandre I can make a new stable version with the current version of roassal
> + gt examples
>
> Cheers,
> Andrei

Yes, that loads successfully now, thanks!

Cheers,
Alistair


Reply | Threaded
Open this post in threaded view
|

Re: Roassal2 in recent Pharo 7 causes DNU #asTraitComposition

abergel
In reply to this post by Andrei Chis
Hi!

How can I update GT Example?
I have produced a new version of the configuration ConfigurationOfRoassal2-AlexandreBergel.115
It loads the latest version of Roassal2GT.

Does this solve the problem?

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Oct 17, 2017, at 8:58 AM, Andrei Chis <[hidden email]> wrote:

@Alexandre I can make a new stable version with the current version of roassal + gt examples