Problem loading magritte and/or seaside rest

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

Problem loading magritte and/or seaside rest

NorbertHartl
I have a problem I cannot figure out. I attach a configuration to this mail that has grease magritte and seaside-rest configured. If I do

ConfigurationOfProblem project lastVersion load: 'Magritte3 Core'

I get magritte core only loaded. If I do

ConfigurationOfProblem project lastVersion load: 'Seaside Rest'

I get seaside-rest only loaded. But if I do

ConfigurationOfProblem project lastVersion load

it loads whole of seaside. I can even load first magritte and then seaside-rest and again it loads the whole seaside stuff.

Somehow my abilities to debug metacello are limited. As soon as some packages are loaded loadDirective shows that magritte3 pulls in seaside fully. I tested this with a fresh pharo 1.4 image

Any help is appreciated,

Norbert





MCProblem-NorbertHartl.1.mcz (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Problem loading magritte and/or seaside rest

Dale Henrichs
This smells a lot like Mariano's recent WTF post ...

So I'll need to see the contents of your Transcript to provide more of an explanation...

Dale

----- Original Message -----
| From: "Norbert Hartl" <[hidden email]>
| To: [hidden email]
| Sent: Friday, April 27, 2012 12:28:33 PM
| Subject: [Metacello] Problem loading magritte and/or seaside rest
|
| I have a problem I cannot figure out. I attach a configuration to
| this mail that has grease magritte and seaside-rest configured. If I
| do
|
| ConfigurationOfProblem project lastVersion load: 'Magritte3 Core'
|
| I get magritte core only loaded. If I do
|
| ConfigurationOfProblem project lastVersion load: 'Seaside Rest'
|
| I get seaside-rest only loaded. But if I do
|
| ConfigurationOfProblem project lastVersion load
|
| it loads whole of seaside. I can even load first magritte and then
| seaside-rest and again it loads the whole seaside stuff.
|
| Somehow my abilities to debug metacello are limited. As soon as some
| packages are loaded loadDirective shows that magritte3 pulls in
| seaside fully. I tested this with a fresh pharo 1.4 image
|
| Any help is appreciated,
|
| Norbert
|
|
|
|
|
Reply | Threaded
Open this post in threaded view
|

Re: Problem loading magritte and/or seaside rest

NorbertHartl

Am 27.04.2012 um 22:34 schrieb Dale Henrichs:

> This smells a lot like Mariano's recent WTF post ...
>
> So I'll need to see the contents of your Transcript to provide more of an explanation...
OOps,

last time I didn't send the right version of the configuration. I'll attach the right on. My problem description only needs to configured things in metacell. I have magritte3 core defined and seaside rest. I do

ConfigurationOfProject project lastVersion load

and I get the right thing (first-tranlog.txt). Invoking the same thing a second time gives mit (second-tranlog.txt). Please find the configuration and the two tranlog copies attached to this mail.

thanks,

Norbert






 

> ----- Original Message -----
> | From: "Norbert Hartl" <[hidden email]>
> | To: [hidden email]
> | Sent: Friday, April 27, 2012 12:28:33 PM
> | Subject: [Metacello] Problem loading magritte and/or seaside rest
> |
> | I have a problem I cannot figure out. I attach a configuration to
> | this mail that has grease magritte and seaside-rest configured. If I
> | do
> |
> | ConfigurationOfProblem project lastVersion load: 'Magritte3 Core'
> |
> | I get magritte core only loaded. If I do
> |
> | ConfigurationOfProblem project lastVersion load: 'Seaside Rest'
> |
> | I get seaside-rest only loaded. But if I do
> |
> | ConfigurationOfProblem project lastVersion load
> |
> | it loads whole of seaside. I can even load first magritte and then
> | seaside-rest and again it loads the whole seaside stuff.
> |
> | Somehow my abilities to debug metacello are limited. As soon as some
> | packages are loaded loadDirective shows that magritte3 pulls in
> | seaside fully. I tested this with a fresh pharo 1.4 image
> |
> | Any help is appreciated,
> |
> | Norbert
> |
> |
> |
> |
> |


MCTest-NorbertHartl.2.mcz (5K) Download Attachment
first-tranlog.txt (5K) Download Attachment
second-tranlog.txt (18K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Problem loading magritte and/or seaside rest

NorbertHartl
Oops,

I was a bit sleepy :)
Am 29.04.2012 um 15:11 schrieb Norbert Hartl:

>
> Am 27.04.2012 um 22:34 schrieb Dale Henrichs:
>
>> This smells a lot like Mariano's recent WTF post ...
>>
>> So I'll need to see the contents of your Transcript to provide more of an explanation...
> OOps,
>
> last time I didn't send the right version of the configuration. I'll attach the right on. My problem description only needs to configured things in metacell. I have magritte3 core defined and seaside rest. I do
>
I wanted to say I only need to configure two things to cause the effect.

> ConfigurationOfProject project lastVersion load
>
> and I get the right thing (first-tranlog.txt). Invoking the same thing a second time gives mit (second-tranlog.txt). Please find the configuration and the two tranlog copies attached to this mail.
>
..invoking it the second time causes a lot of stuff to be loaded including whole seaside.

Norbert

> thanks,
>
> Norbert
>
>
> <MCTest-NorbertHartl.2.mcz><first-tranlog.txt>
> <second-tranlog.txt>
>> ----- Original Message -----
>> | From: "Norbert Hartl" <[hidden email]>
>> | To: [hidden email]
>> | Sent: Friday, April 27, 2012 12:28:33 PM
>> | Subject: [Metacello] Problem loading magritte and/or seaside rest
>> |
>> | I have a problem I cannot figure out. I attach a configuration to
>> | this mail that has grease magritte and seaside-rest configured. If I
>> | do
>> |
>> | ConfigurationOfProblem project lastVersion load: 'Magritte3 Core'
>> |
>> | I get magritte core only loaded. If I do
>> |
>> | ConfigurationOfProblem project lastVersion load: 'Seaside Rest'
>> |
>> | I get seaside-rest only loaded. But if I do
>> |
>> | ConfigurationOfProblem project lastVersion load
>> |
>> | it loads whole of seaside. I can even load first magritte and then
>> | seaside-rest and again it loads the whole seaside stuff.
>> |
>> | Somehow my abilities to debug metacello are limited. As soon as some
>> | packages are loaded loadDirective shows that magritte3 pulls in
>> | seaside fully. I tested this with a fresh pharo 1.4 image
>> |
>> | Any help is appreciated,
>> |
>> | Norbert
>> |
>> |
>> |
>> |
>> |
>

Reply | Threaded
Open this post in threaded view
|

Re: Problem loading magritte and/or seaside rest

Dale Henrichs
Norbert,

I think it's a combination of things that's happening. The fact that you are loading SeasideRest implies that you don't object to Seaside being loaded, but you _are_ objecting to having the whole kit and kaboodle of Seaside loaded.

All of Seaside is being loaded because Magritte3 loads the 'Core' group which is virtually all of Seaside:

  project: 'Seaside30' with: [
  spec
  className: 'ConfigurationOfSeaside30';
  versionString: #'stable';
  loads: #('Core');
  repository: 'http://www.squeaksource.com/MetacelloRepository' ].

Contrast that with the spec for Magritte2, whihc only requires the 'Base' (which is not much more than you get with Seaside-Rest, in fact the 'Base' is basically the minimal functioning subset of Seaside:

  project: 'Seaside30' with: [
  spec
  className: 'ConfigurationOfSeaside30';
  versionString: #'stable';
  loads: #('Base' 'Seaside-HTML5' );
  repository: 'http://www.squeaksource.com/MetacelloRepository' ].

So I think that the configuration of Magritte needs to be changed.

Of course the fact that any of Seaside is being loaded when you try to load Magritte3 is due to the "automatic upgrade" feature described in response to Mariano's WTF post:

  - you know that you aren't asking to have seaside
    brought up to date when you load Magritte3
  - but Metacello looks at Magritte and sees the
    dependency on seaside and recognizes that loaded
    seaside does not match spec from Magritte3, so it
    brings seaside up-to-date

In response to these kinds of issues with automatic upgrading, the next release of Metacello will give you more control.

In the mean time, I think that adjusting the configuration of Magritte3 to require the minimal set of Seaside will be an adequate workaround.

Dale
----- Original Message -----
| From: "Norbert Hartl" <[hidden email]>
| To: [hidden email]
| Sent: Monday, April 30, 2012 12:46:03 AM
| Subject: Re: [Metacello] Problem loading magritte and/or seaside rest
|
| Oops,
|
| I was a bit sleepy :)
| Am 29.04.2012 um 15:11 schrieb Norbert Hartl:
|
| >
| > Am 27.04.2012 um 22:34 schrieb Dale Henrichs:
| >
| >> This smells a lot like Mariano's recent WTF post ...
| >>
| >> So I'll need to see the contents of your Transcript to provide
| >> more of an explanation...
| > OOps,
| >
| > last time I didn't send the right version of the configuration.
| > I'll attach the right on. My problem description only needs to
| > configured things in metacell. I have magritte3 core defined and
| > seaside rest. I do
| >
| I wanted to say I only need to configure two things to cause the
| effect.
|
| > ConfigurationOfProject project lastVersion load
| >
| > and I get the right thing (first-tranlog.txt). Invoking the same
| > thing a second time gives mit (second-tranlog.txt). Please find
| > the configuration and the two tranlog copies attached to this
| > mail.
| >
| ..invoking it the second time causes a lot of stuff to be loaded
| including whole seaside.
|
| Norbert
| > thanks,
| >
| > Norbert
| >
| >
| > <MCTest-NorbertHartl.2.mcz><first-tranlog.txt>
| > <second-tranlog.txt>
| >> ----- Original Message -----
| >> | From: "Norbert Hartl" <[hidden email]>
| >> | To: [hidden email]
| >> | Sent: Friday, April 27, 2012 12:28:33 PM
| >> | Subject: [Metacello] Problem loading magritte and/or seaside
| >> | rest
| >> |
| >> | I have a problem I cannot figure out. I attach a configuration
| >> | to
| >> | this mail that has grease magritte and seaside-rest configured.
| >> | If I
| >> | do
| >> |
| >> | ConfigurationOfProblem project lastVersion load: 'Magritte3
| >> | Core'
| >> |
| >> | I get magritte core only loaded. If I do
| >> |
| >> | ConfigurationOfProblem project lastVersion load: 'Seaside Rest'
| >> |
| >> | I get seaside-rest only loaded. But if I do
| >> |
| >> | ConfigurationOfProblem project lastVersion load
| >> |
| >> | it loads whole of seaside. I can even load first magritte and
| >> | then
| >> | seaside-rest and again it loads the whole seaside stuff.
| >> |
| >> | Somehow my abilities to debug metacello are limited. As soon as
| >> | some
| >> | packages are loaded loadDirective shows that magritte3 pulls in
| >> | seaside fully. I tested this with a fresh pharo 1.4 image
| >> |
| >> | Any help is appreciated,
| >> |
| >> | Norbert
| >> |
| >> |
| >> |
| >> |
| >> |
| >
|
|
Reply | Threaded
Open this post in threaded view
|

Re: Problem loading magritte and/or seaside rest

NorbertHartl
Dale,

then I don't understand how metacello works here. Core is a group in the ConfigurationOfMagritte3

   group: 'Core' with: #('Magritte-Model' );

which is supposed only to load the Magritte-Model package. Why should it load stuff that is in the baseline without a direct dependency?

Norbert

Am 30.04.2012 um 19:06 schrieb Dale Henrichs:

> Norbert,
>
> I think it's a combination of things that's happening. The fact that you are loading SeasideRest implies that you don't object to Seaside being loaded, but you _are_ objecting to having the whole kit and kaboodle of Seaside loaded.
>
> All of Seaside is being loaded because Magritte3 loads the 'Core' group which is virtually all of Seaside:
>
>  project: 'Seaside30' with: [
>   spec
>   className: 'ConfigurationOfSeaside30';
>   versionString: #'stable';
>   loads: #('Core');
>   repository: 'http://www.squeaksource.com/MetacelloRepository' ].
>
> Contrast that with the spec for Magritte2, whihc only requires the 'Base' (which is not much more than you get with Seaside-Rest, in fact the 'Base' is basically the minimal functioning subset of Seaside:
>
>  project: 'Seaside30' with: [
>   spec
>   className: 'ConfigurationOfSeaside30';
>   versionString: #'stable';
>   loads: #('Base' 'Seaside-HTML5' );
>   repository: 'http://www.squeaksource.com/MetacelloRepository' ].
>
> So I think that the configuration of Magritte needs to be changed.
>
> Of course the fact that any of Seaside is being loaded when you try to load Magritte3 is due to the "automatic upgrade" feature described in response to Mariano's WTF post:
>
>  - you know that you aren't asking to have seaside
>    brought up to date when you load Magritte3
>  - but Metacello looks at Magritte and sees the
>    dependency on seaside and recognizes that loaded
>    seaside does not match spec from Magritte3, so it
>    brings seaside up-to-date
>
> In response to these kinds of issues with automatic upgrading, the next release of Metacello will give you more control.
>
> In the mean time, I think that adjusting the configuration of Magritte3 to require the minimal set of Seaside will be an adequate workaround.
>
> Dale
> ----- Original Message -----
> | From: "Norbert Hartl" <[hidden email]>
> | To: [hidden email]
> | Sent: Monday, April 30, 2012 12:46:03 AM
> | Subject: Re: [Metacello] Problem loading magritte and/or seaside rest
> |
> | Oops,
> |
> | I was a bit sleepy :)
> | Am 29.04.2012 um 15:11 schrieb Norbert Hartl:
> |
> | >
> | > Am 27.04.2012 um 22:34 schrieb Dale Henrichs:
> | >
> | >> This smells a lot like Mariano's recent WTF post ...
> | >>
> | >> So I'll need to see the contents of your Transcript to provide
> | >> more of an explanation...
> | > OOps,
> | >
> | > last time I didn't send the right version of the configuration.
> | > I'll attach the right on. My problem description only needs to
> | > configured things in metacell. I have magritte3 core defined and
> | > seaside rest. I do
> | >
> | I wanted to say I only need to configure two things to cause the
> | effect.
> |
> | > ConfigurationOfProject project lastVersion load
> | >
> | > and I get the right thing (first-tranlog.txt). Invoking the same
> | > thing a second time gives mit (second-tranlog.txt). Please find
> | > the configuration and the two tranlog copies attached to this
> | > mail.
> | >
> | ..invoking it the second time causes a lot of stuff to be loaded
> | including whole seaside.
> |
> | Norbert
> | > thanks,
> | >
> | > Norbert
> | >
> | >
> | > <MCTest-NorbertHartl.2.mcz><first-tranlog.txt>
> | > <second-tranlog.txt>
> | >> ----- Original Message -----
> | >> | From: "Norbert Hartl" <[hidden email]>
> | >> | To: [hidden email]
> | >> | Sent: Friday, April 27, 2012 12:28:33 PM
> | >> | Subject: [Metacello] Problem loading magritte and/or seaside
> | >> | rest
> | >> |
> | >> | I have a problem I cannot figure out. I attach a configuration
> | >> | to
> | >> | this mail that has grease magritte and seaside-rest configured.
> | >> | If I
> | >> | do
> | >> |
> | >> | ConfigurationOfProblem project lastVersion load: 'Magritte3
> | >> | Core'
> | >> |
> | >> | I get magritte core only loaded. If I do
> | >> |
> | >> | ConfigurationOfProblem project lastVersion load: 'Seaside Rest'
> | >> |
> | >> | I get seaside-rest only loaded. But if I do
> | >> |
> | >> | ConfigurationOfProblem project lastVersion load
> | >> |
> | >> | it loads whole of seaside. I can even load first magritte and
> | >> | then
> | >> | seaside-rest and again it loads the whole seaside stuff.
> | >> |
> | >> | Somehow my abilities to debug metacello are limited. As soon as
> | >> | some
> | >> | packages are loaded loadDirective shows that magritte3 pulls in
> | >> | seaside fully. I tested this with a fresh pharo 1.4 image
> | >> |
> | >> | Any help is appreciated,
> | >> |
> | >> | Norbert
> | >> |
> | >> |
> | >> |
> | >> |
> | >> |
> | >
> |
> |

Reply | Threaded
Open this post in threaded view
|

Re: Problem loading magritte and/or seaside rest

Dale Henrichs
Norbert,

It's a "bug/feature".

The "automatic upgrade" feature is "incorrectly" thinking that it needs to upgrade Seaside30 to match the specification of Magritte30.

Seaside30 is specified as part of Magritte3. Seaside30 is "partially loaded" with respect to the Magritte3 specification.

The "automatic upgrade" feature assumes that if you are loading part of project, that it needs to make the currently loaded bits of the project match the specification ... and it does this without strictly following the dependencies ... it does not strictly follow the dependencies because often it is more correct to upgrade the dependent project than to not upgrade the dependent project ...

If I were to fix this bug, I would only upgrade projects that are dependents of already loaded packages, adding more complexity to an already complex algorithm.

As part of this whole process Metacello figures out the "current version" of the project which also introduces subtle problems like the above (if it weren't so obvious and annoying that "all of seaside" was being loaded in this case, you'd never probably notice what was going on) and is a complex algorithm to get right.

When I introduce the Metacello scripting api. Metacello will start keeping track of the loaded versions of projects and will stop doing automatic upgrades ... nuking two areas that introduce "unnecessary complexity" ... Of course I will have to deal with the complexity introduced by caching, but the scripting api will provide an environment for manipulating the cache...

Dale

----- Original Message -----
| From: "Norbert Hartl" <[hidden email]>
| To: [hidden email]
| Sent: Monday, April 30, 2012 10:11:40 AM
| Subject: Re: [Metacello] Problem loading magritte and/or seaside rest
|
| Dale,
|
| then I don't understand how metacello works here. Core is a group in
| the ConfigurationOfMagritte3
|
|    group: 'Core' with: #('Magritte-Model' );
|
| which is supposed only to load the Magritte-Model package. Why should
| it load stuff that is in the baseline without a direct dependency?
|
| Norbert
|
| Am 30.04.2012 um 19:06 schrieb Dale Henrichs:
|
| > Norbert,
| >
| > I think it's a combination of things that's happening. The fact
| > that you are loading SeasideRest implies that you don't object to
| > Seaside being loaded, but you _are_ objecting to having the whole
| > kit and kaboodle of Seaside loaded.
| >
| > All of Seaside is being loaded because Magritte3 loads the 'Core'
| > group which is virtually all of Seaside:
| >
| >  project: 'Seaside30' with: [
| >   spec
| >   className: 'ConfigurationOfSeaside30';
| >   versionString: #'stable';
| >   loads: #('Core');
| >   repository: 'http://www.squeaksource.com/MetacelloRepository' ].
| >
| > Contrast that with the spec for Magritte2, whihc only requires the
| > 'Base' (which is not much more than you get with Seaside-Rest, in
| > fact the 'Base' is basically the minimal functioning subset of
| > Seaside:
| >
| >  project: 'Seaside30' with: [
| >   spec
| >   className: 'ConfigurationOfSeaside30';
| >   versionString: #'stable';
| >   loads: #('Base' 'Seaside-HTML5' );
| >   repository: 'http://www.squeaksource.com/MetacelloRepository' ].
| >
| > So I think that the configuration of Magritte needs to be changed.
| >
| > Of course the fact that any of Seaside is being loaded when you try
| > to load Magritte3 is due to the "automatic upgrade" feature
| > described in response to Mariano's WTF post:
| >
| >  - you know that you aren't asking to have seaside
| >    brought up to date when you load Magritte3
| >  - but Metacello looks at Magritte and sees the
| >    dependency on seaside and recognizes that loaded
| >    seaside does not match spec from Magritte3, so it
| >    brings seaside up-to-date
| >
| > In response to these kinds of issues with automatic upgrading, the
| > next release of Metacello will give you more control.
| >
| > In the mean time, I think that adjusting the configuration of
| > Magritte3 to require the minimal set of Seaside will be an
| > adequate workaround.
| >
| > Dale
| > ----- Original Message -----
| > | From: "Norbert Hartl" <[hidden email]>
| > | To: [hidden email]
| > | Sent: Monday, April 30, 2012 12:46:03 AM
| > | Subject: Re: [Metacello] Problem loading magritte and/or seaside
| > | rest
| > |
| > | Oops,
| > |
| > | I was a bit sleepy :)
| > | Am 29.04.2012 um 15:11 schrieb Norbert Hartl:
| > |
| > | >
| > | > Am 27.04.2012 um 22:34 schrieb Dale Henrichs:
| > | >
| > | >> This smells a lot like Mariano's recent WTF post ...
| > | >>
| > | >> So I'll need to see the contents of your Transcript to provide
| > | >> more of an explanation...
| > | > OOps,
| > | >
| > | > last time I didn't send the right version of the configuration.
| > | > I'll attach the right on. My problem description only needs to
| > | > configured things in metacell. I have magritte3 core defined
| > | > and
| > | > seaside rest. I do
| > | >
| > | I wanted to say I only need to configure two things to cause the
| > | effect.
| > |
| > | > ConfigurationOfProject project lastVersion load
| > | >
| > | > and I get the right thing (first-tranlog.txt). Invoking the
| > | > same
| > | > thing a second time gives mit (second-tranlog.txt). Please find
| > | > the configuration and the two tranlog copies attached to this
| > | > mail.
| > | >
| > | ..invoking it the second time causes a lot of stuff to be loaded
| > | including whole seaside.
| > |
| > | Norbert
| > | > thanks,
| > | >
| > | > Norbert
| > | >
| > | >
| > | > <MCTest-NorbertHartl.2.mcz><first-tranlog.txt>
| > | > <second-tranlog.txt>
| > | >> ----- Original Message -----
| > | >> | From: "Norbert Hartl" <[hidden email]>
| > | >> | To: [hidden email]
| > | >> | Sent: Friday, April 27, 2012 12:28:33 PM
| > | >> | Subject: [Metacello] Problem loading magritte and/or seaside
| > | >> | rest
| > | >> |
| > | >> | I have a problem I cannot figure out. I attach a
| > | >> | configuration
| > | >> | to
| > | >> | this mail that has grease magritte and seaside-rest
| > | >> | configured.
| > | >> | If I
| > | >> | do
| > | >> |
| > | >> | ConfigurationOfProblem project lastVersion load: 'Magritte3
| > | >> | Core'
| > | >> |
| > | >> | I get magritte core only loaded. If I do
| > | >> |
| > | >> | ConfigurationOfProblem project lastVersion load: 'Seaside
| > | >> | Rest'
| > | >> |
| > | >> | I get seaside-rest only loaded. But if I do
| > | >> |
| > | >> | ConfigurationOfProblem project lastVersion load
| > | >> |
| > | >> | it loads whole of seaside. I can even load first magritte
| > | >> | and
| > | >> | then
| > | >> | seaside-rest and again it loads the whole seaside stuff.
| > | >> |
| > | >> | Somehow my abilities to debug metacello are limited. As soon
| > | >> | as
| > | >> | some
| > | >> | packages are loaded loadDirective shows that magritte3 pulls
| > | >> | in
| > | >> | seaside fully. I tested this with a fresh pharo 1.4 image
| > | >> |
| > | >> | Any help is appreciated,
| > | >> |
| > | >> | Norbert
| > | >> |
| > | >> |
| > | >> |
| > | >> |
| > | >> |
| > | >
| > |
| > |
|
|